Contra Bank 3 0xC000 - 0xFFFF Mapper 1 (21 00) (0010 0001 0000 0000) -------- C000: 03 Bank Number ---- C001: Blocks Tile Mappings - Level 1 (3B * 10 = 3B0 bytes) 10 bytes per block Offset is equivalent to code used in Level Data * 10 ---- C3B1: Extra Tile Mappings - Level 1 (2C * 10 = 2C0 bytes) 00 Weapon Box - Frame 1 01 Weapon Box - Frame 2 02 Weapon Box - Frame 3 Etc... ---- C671: Palette Mapping Data - Level 1 (70 bytes) 1 byte per block xx.. .... Color for Lower-Right corner ..xx .... Color for Lower-Left corner .... xx.. Color for Upper-Right corner .... ..xx Color for Upper-Left corner ---- C6E1: Extra Tile Mappings - Level 2/4 (B * 5 = 37 bytes) First Byte ? 00 E2 E3 E4 E5 80 Core Plating 00 E6 E7 E8 E9 81 Core Plating - Cracked 00 EA EB EC ED 82 Core Plating - More Cracks 00 DE DF E0 E1 83 Core - Destroyed 00 EE EF F0 F1 84 Wall Cannon / Core - Closed 00 F2 F3 F4 F5 85 Wall Cannon / Core - Opening Frame 1 00 F6 F7 F8 F9 86 Core - Opening Frame 2 00 CA CB CC CD 87 Core - Open 00 FA FB 53 54 88 Wall Cannon - Opening Frame 2 00 CE CF D0 D1 89 Wall Cannon - Open 00 D2 D3 D4 D5 8A Big Core ---- C718: Blocks Tile Mappings - Level 2/4 (76 * 10 = 760 bytes) ---- CE78: Palette Mapping Data - Level 2/4 (76 bytes) ---- CEEE -------- 8EF8 -------- ... -------- DDD8: Extra Tile Mappings - Level 6 (E * 5 = 46 bytes) 01 00 00 00 00 80 Beam - Nothing (black tiles) 01 1A 0C 1B 1C 81 Beam Right - Beam Origin 01 0E 0C 1E 1C 82 Beam Right - Beam Middle 01 0C 00 1C 00 83 Beam Right - Beam End 01 0D 0F 1D 1F 84 Beam Left - Beam Origin 01 0D 0E 1D 1E 85 Beam Left - Beam Middle 01 00 0D 00 1D 86 Beam Left - Beam End 01 18 19 14 15 87 Beam Down - Beam Origin 01 16 17 14 15 88 Beam Down - Beam Middle 01 14 15 00 00 89 Beam Down - Beam End 01 01 A8 76 77 8A 01 C9 F8 C9 A9 8B 01 C9 A9 C9 00 8C 01 C9 00 C9 00 8D ---- DE1E: Blocks Tile Mappings - Level 6 -------- E56E: Extra Tile Mappings - Level 7 (C * 5 = 3C bytes) 83 DE DF EE EF 80 Mechanical Claw 00 00 00 00 00 81 Mechanical Claw - Nothing (black tiles) 83 DE DF EE EF 82 Mechanical Claw 47 48 00 00 00 83 Safety Rail - Top 83 DE DF EE EF 84 Mechanical Claw 57 58 00 00 00 85 Safety Rail - Bottom 83 CE CF DE DF 86 Mechanical Claw - Top EE EF 00 00 00 87 Mechanical Claw - Bottom 00 30 31 30 31 88 Mortar Launcher - Frame 0 00 C5 C6 C7 C8 89 Mortar Launcher - Frame 1 00 EA EB EC ED 8A Mortar Launcher - Frame 2 00 4A 4F 4A 52 8B Mortar Launcher - Destroyed ---- E5AA: Blocks Tile Mappings - Level 7 -------- Level 8 Last Tile Number is 72 at 0xF4F9 -------- F4FA: Palette Mapping Data - Level 8 (73 bytes) -------- ... -------- F57A: Blocks Tile Mappings - Level 2/4 Boss Room ---- FD7A: Color Mapping Data for Level 2 Boss Room (80 bytes) ---- FDFA: A9 00 LDA #$00 ; A = 00FDFC: 85 F1 STA $F1FDFE: 85 F2 STA $F2FE00: 85 F5 STA $F5FE02: 85 F6 STA $F6FE04: A5 2D LDA $2D FE06: 20 57C8 JSR $C857 ---- FE09: Pointer table for ? (3 * 2 = 6 bytes) 0FBE -> FE0F 3CBE -> FE3C 78BF -> FF78 ---- FE0F: A9 00 LDA #$00 ; A = 00FE11: 85 08 STA $08FE13: A2 01 LDX #$01 ; X = 01 FE15: A9 00 LDA #$00 ; A = 00FE17: B4 38 LDY $38,XFE19: D0 08 BNE $FE23 FE1B: B5 A0 LDA $A0,XFE1D: 05 08 ORA $08FE1F: 85 08 STA $08FE21: A9 01 LDA #$01 ; A = 01FE23: 9D 9201 STA $0192,XFE26: CA DEXFE27: 10 EC BPL $FE15 FE29: A5 08 LDA $08FE2B: F0 01 BEQ $FE2E FE2D: 60 RTS ---- FE2E: A9 81 LDA #$81 ; A = 81FE30: 85 3B STA $3BFE32: A9 F0 LDA #$F0 ; A = F0FE34: 8D 9101 STA $0191FE37: A9 20 LDA #$20 ; A = 20 FE39: 4C 6FBE JMP $BE6F ---- FE3C: AD 9001 LDA $0190FE3F: F0 04 BEQ $FE45 FE41: CE 9001 DEC $0190 FE44: 60 RTS ---- FE45: A2 01 LDX #$01 ; X = 01 FE47: BC 9201 LDY $0192,XFE4A: F0 09 BEQ $FE55 FE4C: 88 DEYFE4D: 84 08 STY $08 FE4F: 20 7DBE JSR $BE7DFE52: 20 8ABF JSR $BF8A FE55: CA DEXFE56: 10 EF BPL $FE47 FE58: A5 1A LDA $1AFE5A: 4A LSRFE5B: 90 05 BCC $FE62 FE5D: CE 9101 DEC $0191FE60: F0 08 BEQ $FE6A FE62: AD 9201 LDA $0192FE65: 0D 9301 ORA $0193FE68: D0 0A BNE $FE74 FE6A: A4 30 LDY $30 ; Current LevelFE6C: B9 75BE LDA $BE75,Y FE6F: 8D 9001 STA $0190FE72: E6 2D INC $2D FE74: 60 RTS ---- FE75: A0 A0 E0 A0 A0 A0 A0 A0 Table for ? (8 bytes) ---- FE7D: A5 30 LDA $30 ; Current LevelFE7F: 20 57C8 JSR $C857 ---- FE82: End of Level routines (8 * 2 = 10 bytes) 92BE -> FE92 Level 1 C4BE -> FEC4 Level 2 13BF -> FF13 Level 3 C4BE -> FEC4 Level 4 4CBF -> FF4C Level 5 63BF -> FF63 Level 6 67BF -> FF67 Level 7 6BBF -> FF6B Level 8 ---- End of Level 1 FE92: BD 3403 LDA $0334,X ; Player X Position on ScreenFE95: C9 98 CMP #$98FE97: A9 00 LDA #$00 ; A = 00FE99: 90 02 BCC $FE9D FE9B: A9 80 LDA #$80 ; A = 80 FE9D: 95 DA STA $DA,XFE9F: A4 08 LDY $08FEA1: D0 0E BNE $FEB1 FEA3: 20 BFBE JSR $BEBF FEA6: BD 3403 LDA $0334,X ; Player X Position on ScreenFEA9: C9 90 CMP #$90FEAB: 90 03 BCC $FEB0 FEAD: FE 9201 INC $0192,X FEB0: 60 RTS ---- FEB1: 88 DEYFEB2: D0 0B BNE $FEBF FEB4: B5 A0 LDA $A0,XFEB6: D0 F5 BNE $FEAD FEB8: A9 81 LDA #$81 ; A = 81FEBA: 95 F1 STA $F1,X ; Controller Buttons HeldFEBC: 95 F5 STA $F5,X ; Controller Buttons Pressed FEBE: 60 RTS ---- FEBF: A9 01 LDA #$01 ; A = 01FEC1: 95 F1 STA $F1,X ; Controller Buttons Held FEC3: 60 RTS ---- End of Level 2/4 FEC4: A4 08 LDY $08FEC6: D0 1A BNE $FEE2 FEC8: BD A9BF LDA $BFA9,XFECB: 95 F1 STA $F1,X ; Controller Buttons HeldFECD: BD 3403 LDA $0334,X ; Player X Position on ScreenFED0: 38 SECFED1: FD ABBF SBC $BFAB,XFED4: B0 04 BCS $FEDA FED6: 49 FF EOR #$FFFED8: 69 01 ADC #$01FEDA: C9 02 CMP #$02FEDC: B0 03 BCS $FEE1 FEDE: FE 9201 INC $0192,X FEE1: 60 RTS ---- FEE2: 88 DEYFEE3: D0 0F BNE $FEF4 FEE5: A9 03 LDA #$03 ; A = 03FEE7: 95 90 STA $90,XFEE9: BD ADBF LDA $BFAD,XFEEC: 9D 4E03 STA $034E,X FEEF: 20 0DBF JSR $BF0DFEF2: D0 EA BNE $FEDE FEF4: 88 DEYFEF5: D0 13 BNE $FF0A FEF7: 86 10 STX $10FEF9: 8A TXAFEFA: 49 01 EOR #$01 ; flip bits .... ...xFEFC: AA TAXFEFD: BD 9201 LDA $0192,XFF00: A6 10 LDX $10FF02: A8 TAYFF03: F0 D9 BEQ $FEDE FF05: C9 03 CMP #$03FF07: B0 D5 BCS $FEDE FF09: 60 RTS ---- FF0A: DE 1A03 DEC $031A,XFF0D: A9 91 LDA #$91 ; A = 91FF0F: 9D 0003 STA $0300,X FF12: 60 RTS ---- End of Level 3 FF13: A4 08 LDY $08FF15: D0 1F BNE $FF36 FF17: A9 01 LDA #$01 ; A = 01FF19: BC 3403 LDY $0334,XFF1C: C0 80 CPY #$80FF1E: 90 02 BCC $FF22 FF20: A9 02 LDA #$02 ; A = 02 FF22: 95 F1 STA $F1,XFF24: 98 TYAFF25: 38 SECFF26: E9 80 SBC #$80FF28: B0 04 BCS $FF2E FF2A: 49 FF EOR #$FF ; flip all bitsFF2C: 69 01 ADC #$01 FF2E: C9 08 CMP #$08FF30: B0 03 BCS $FF35 FF32: FE 9201 INC $0192,X FF35: 60 RTS ---- FF36: A9 80 LDA #$80 ; A = 80FF38: 95 F5 STA $F5,XFF3A: B5 A0 LDA $A0,XFF3C: F0 F7 BEQ $FF35 FF3E: B5 C6 LDA $C6,XFF40: 30 F3 BMI $FF35 FF42: BD 1A03 LDA $031A,XFF45: C9 B0 CMP #$B0FF47: 90 EC BCC $FF35 FF49: 4C 9CBF JMP $BF9C ---- End of Level 5 FF4C: A0 00 LDY #$00 ; Y = 00 FF4E: 20 BFBE JSR $BEBF FF51: BD 3403 LDA $0334,XFF54: D9 60BF CMP $BF60,YFF57: A9 01 LDA #$01 ; A = 01FF59: 90 02 BCC $FF5D FF5B: 09 80 ORA #$80 ; set bits x... ....FF5D: 95 DA STA $DA,X FF5F: 60 RTS ---- FF60: B8 D0 D0 Table for ? (3 bytes) ---- End of Level 6 FF63: A0 01 LDY #$01 ; Y = 01FF65: D0 E7 BNE $FF4E End of Level 7 FF67: A0 02 LDY #$02 ; Y = 02FF69: D0 E3 BNE $FF4E End of Level 8 FF6B: A4 08 LDY $08FF6D: D0 08 BNE $FF77 FF6F: A9 40 LDA #$40 ; A = 40FF71: 8D 9101 STA $0191FF74: FE 9201 INC $0192,X FF77: 60 RTS ---- FF78: A9 02 LDA #$02 ; A = 02FF7A: 85 3B STA $3BFF7C: CE 9001 DEC $0190FF7F: D0 08 BNE $FF89 FF81: 20 1BCF JSR $CF1B FF84: A9 05 LDA #$05 ; A = 05 FF86: 4C 27CF JMP $CF27 ---- FF89: 60 RTS ---- FF8A: BD 1A03 LDA $031A,XFF8D: C9 08 CMP #$08FF8F: 90 0B BCC $FF9C FF91: BD 3403 LDA $0334,XFF94: C9 F8 CMP #$F8FF96: B0 04 BCS $FF9C FF98: C9 04 CMP #$04FF9A: B0 0C BCS $FFA8 FF9C: A9 FF LDA #$FF ; A = FFFF9E: 95 BA STA $BA,XFFA0: A9 00 LDA #$00 ; A = 00FFA2: 9D 9201 STA $0192,XFFA5: 9D 0003 STA $0300,X FFA8: 60 RTS ---- Tables for End of Level 2/4 FFA9: 02 01 Controller Input - Player 1/2 (2 bytes) FFAB: 0C F4 X Position for Elevator (2 bytes) FFAD: 00 45 Table for ? (2 bytes) ---- FFAF: Unused Space (51 bytes) -------- // End of Bank // --------