; DISASSEMBLY OF SPACE PANIC BY CAPTAIN COSMOS ; 100 PERCENT ALL LINKS RESOLVED. ; I SPENT A LOT OF TIME WORKING ON THIS AND IT WOULD SUCK 100% IF SOMEONE USED MY WORK TO MAKE MONEY. ; THIS WAS DONE FOR EDUCATIONAL PURPOSES ONLY AND ALL CREDIT GOES TO ME AND ME ONLY. ; STARTED NOVEMBER 20, 2023 ; COMPLETED ON NOVEMBER 24RD, 2023 (TECHNICALLY NOT COMPLETED...COMPLETED) THERE CAN ALWAYS BE MORE DONE. ; FOR SOME REASON IF AA55 IS NOT SET THEN THIS WILL NOT WORK ON MARRAT'S COLEM 5.6. ; AS FAR AS GEAR COLECO, THERE ARE GRAPHICAL BUGS WITH THE LOWER BORDER AFTER LEVEL 1, MAYBE OTHERS. THIS SEEMS TO BE AN ISSUE WITH GEAR COLECO. ; I COULD PROBABLY FIX THESE BUT WHY SHOULD I WHEN IT WORKS ON EVERY OTHER SYSTEM. ALSO, ASIDE FROM REMOVING USLESS DATA, THIS IS 100% THE SAME CODE FROM WHEN THE GAME WAS RELEASED. ; IT WORKED THEN, WHY SHOULD IT NOT WORK NOW ; BIOS DEFINITIONS ************************** ASCII_TABLE: EQU $006A NUMBER_TABLE: EQU $006C PLAY_SONGS: EQU $1F61 GAME_OPT: EQU $1F7C FILL_VRAM: EQU $1F82 INIT_TABLE: EQU $1FB8 PUT_VRAM: EQU $1FBE INIT_SPR_NM_TBL: EQU $1FC1 WR_SPR_NM_TBL: EQU $1FC4 INIT_TIMER: EQU $1FC7 REQUEST_SIGNAL: EQU $1FCD TEST_SIGNAL: EQU $1FD0 TIME_MGR: EQU $1FD3 WRITE_REGISTER: EQU $1FD9 WRITE_VRAM: EQU $1FDF READ_VRAM: EQU $1FE2 INIT_WRITER: EQU $1FE5 WRITER: EQU $1FE8 POLLER: EQU $1FEB SOUND_INIT: EQU $1FEE PLAY_IT: EQU $1FF1 SOUND_MAN: EQU $1FF4 PUTOBJ: EQU $1FFA RAND_GEN: EQU $1FFD COLECO_TITLE_ON: EQU $55AA COLECO_TITLE_OFF: EQU $AA55 ; SOUND DEFINITIONS ************************* THIS GAME HAS ONE SOUND AT A TIME SO IT ADDRESSES THROUGH A VARIABLE AT $7135 ; OPENING_TUNE: EQU $01 ; LEVEL_COMPLETE_TUNE: EQU $02 ; GAME_OVER_TUNE: EQU $03 ; FALL_THROUGH_HOLE_SOUND: EQU $04 ; CLIMB_LADDER: EQU $05 ; SPACE_MAN_RUNNING_SOUND: EQU $06 ; ALIEN_TRAPPED_BUZZ_SOUND: EQU $07 ; SPACE_MAN_CAUGHT_SOUND: EQU $08 ; USE_SHOVEL_SOUND: EQU $09 ; OXYGEN_LOW_TUNE: EQU $0A ; PLACE_ALIEN_SOUND: EQU $0B ; ALIEN_ESCAPING_HOLE: EQU $0C ; LOOSE_LIFE_TUNE: EQU $0D ; LIGHT_FART_SOUND: EQU $0E ; UNIDENTIFIED TRAILING SOUND ; NO_SHOVEL_HERE_SOUND: EQU $0F ; ALIEN_LAUGHING_SOUND: EQU $10 ; SPACE_MAN_GET_READY_TUNE: EQU $11 ; SPACE_MAN_LAND_SOUND: EQU $12 ; SOUND_13: EQU $13 *** SILENCE OR ERROR ; SOUND_14: EQU $14 "" ; SOUND_15: EQU $15 "" ; SOUND_16: EQU $16 "" ; SOUND_17: EQU $17 "" ; SOUND_18: EQU $18 "" ; SOUND_19: EQU $19 "" ; SOUND_1A: EQU $1A "" ; SOUND_1B: EQU $1B "" ; SOUND_1C: EQU $1C "" ; SOUND_1D: EQU $1D "" ; SOUND_1E: EQU $1E "" ; SOUND_1F: EQU $1F "" ; SOUND_20: EQU $20 "" ; SOUND_21: EQU $21 "" ; SOUND_22: EQU $22 "" ; SOUND_23: EQU $23 "" ; RAM DEFINITIONS *************************** SPRITE_ORDER_TABLE: EQU $7000 ; EVERYTHING UP UNTIL THE CONTROLLER BUFFER SEEMS TO BE USED CONTROLLER_BUFFER: EQU $702B ; 12 BYTES FIRE_LEFT_P1: EQU $702C JOY_P1: EQU $702D FIRE_RIGHT_P1: EQU $7030 KEYBOARD_P1: EQU $7031 FIRE_LEFT_P2: EQU $7032 JOY_P2: EQU $7033 FIRE_RIGHT_P2: EQU $7035 KEYBOARD_P2: EQU $7036 SPRITE_NAME_TABLE: EQU $7037 ; 76 BYTES WORK_BUFFER: EQU $70B7 SKILL_LEVEL_RAM: EQU $70E7 ; 01 BYTE NUMB_OF_PLAYERS_RAM: EQU $7106 ; 01 BYTE SKILL_LEVEL_CPY_RAM: EQU $7123 ; 01 BYTE CURRENT_LVL_P1_RAM: EQU $7124 ; 01 BYTE CURRENT_LVL_P2_RAM: EQU $7125 ; 01 BYTE LIVES_P1_RAM: EQU $7127 ; 01 BYTE LIVES_P2_RAM: EQU $7128 ; 01 BYTE AUDIO_SELECT: EQU $7135 ; 01 BYTE. THIS GAME ONLY NEEDS ONE SOUND AT A TIME SO THERE IS ONLY ONE CALL. LD A, ($7135) A = SOUND # IN TABLE OXYGEN_RED_LVL_RAM: EQU $7143 OXYGEN_YEL_LVL_RAM: EQU $714B SPCE_MAN_SPRT_NUM_RAM: EQU $7151 FLOOR_DIG_01_RAM: EQU $71B5 ; 30 BYTES FLOOR_DIG_02_RAM: EQU $71D3 ; 30 BYTES FLOOR_DIG_03_RAM: EQU $71F1 ; 30 BYTES FLOOR_DIG_04_RAM: EQU $720F ; 03 BYTES BUT DOESN'T SEEM TO USE, MAYBE NECESSARY FOR THE SUBROUTINE BONUS_TIMER_SIG_RAM: EQU $7212 BONUS_DIGIT_01_RAM: EQU $7214 ; 01 BYTE BONUS_DIGIT_02_RAM: EQU $7215 ; 01 BYTE BONUS_DIGIT_03_RAM: EQU $7216 ; 01 BYTE BONUS_DIGIT_04_RAM: EQU $7217 ; 01 BYTE TIMER_TABLE: EQU $7222 TIMER_DATA_BLOCK: EQU $7249 ; 16 BYTES SOUND_BANK_01_RAM: EQU $7259 ; 10 BYTES SOUND_BANK_02_RAM: EQU $7263 ; 10 BYTES SOUND_BANK_03_RAM: EQU $726D ; 10 BYTES SOUND_BANK_04_RAM: EQU $7277 ; 10 BYTES SOUND_BANK_05_RAM: EQU $7281 ; 10 BYTES SOUND_BANK_06_RAM: EQU $728B ; 10 BYTES SOUND_BANK_07_RAM: EQU $7295 ; 10 BYTES SPACE_MAN_HORIZ_01: EQU $72CB ; 01 BYTE SPACE_MAN_HORIZ_02: EQU $72CC ; 01 BYTE SPACE_MAN_VERTICAL_01: EQU $72CD ; 01 BYTE SPACE_MAN_VERTICAL_02: EQU $72CE ; 01 BYTE DEFER_WRITES_RAM: EQU $73C6 ; (BIOS) CANNOT CHANGE FNAME "SPACE PANIC V1.ROM" CPU Z80 ORG $8000 DW COLECO_TITLE_OFF ; FOR SOME REASON IF THIS IS NOT AA55 (TITLE SCREEN ON) THEN THIS WILL NOT WORK ON MARRATS COLEM 5.6 WORD_8002: DW SPRITE_NAME_TABLE WORD_8004: DW SPRITE_ORDER_TABLE DW WORK_BUFFER WORD_8008: DW CONTROLLER_BUFFER DW START RET NOP NOP RET NOP NOP RET NOP NOP RET NOP NOP RET NOP NOP RET NOP NOP RETI NOP JP NMI DB "SPACE PANIC",1EH,1FH DB "/PRESENTS UNIVERSAL'S/1983" START: LD HL, 3B0H LD IX, SPRITE_ORDER_TABLE LOC_8052: LD (IX+0), 0 INC IX DEC HL LD A, H OR L JR NZ, LOC_8052 CALL GAME_OPT CALL SUB_807B CALL SUB_80D8 LD HL, $73C7 LD (HL), 1 LD HL, $7108 LD B, 0AH LD A, 0 CALL SUB_80D1 CALL LOAD_TILES_AND_COLORS_TO_VRAM JP INIT_SYSTEM SUB_807B: LD HL, (WORD_8008) LD A, 90H LD (HL), A INC HL LD (HL), A INC HL LD B, 0AH SUB A CALL SUB_80D1 CALL SUB_80C1 LD (HL), 0FH CALL SUB_80C6 LD (HL), 0FH LOC_8094: CALL POLLER CALL SUB_80C1 JR NZ, LOC_80A3 CALL SUB_80C6 JR NZ, LOC_80A3 JR LOC_8094 LOC_80A3: OR A JR Z, SUB_807B CP 9 JR NC, SUB_807B LD HL, NUMB_OF_PLAYERS_RAM LD (HL), 1 DEC A BIT 2, A JR Z, LOC_80B5 INC (HL) LOC_80B5: INC A AND 0F3H JR NZ, LOC_80BC LD A, 4 LOC_80BC: LD HL, SKILL_LEVEL_RAM LD (HL), A RET SUB_80C1: LD DE, 6 JR LOC_80C9 SUB_80C6: LD DE, 0BH LOC_80C9: LD HL, (WORD_8008) ADD HL, DE LD A, (HL) CP 0FH RET SUB_80D1: PUSH HL LOOP_80D2: LD (HL), A INC HL DJNZ LOOP_80D2 POP HL RET SUB_80D8: LD A, 0 LD B, 20H LD HL, (WORD_8004) CALL SUB_80D1 LD A, 0 LD B, 80H LD HL, (WORD_8002) CALL SUB_80D1 LD A, 0 LD DE, 0 LD IY, 20H CALL PUT_VRAM LD A, 0AH LD HL, $70E8 CALL INIT_WRITER LD A, 1FH CALL INIT_SPR_NM_TBL LD BC, 0 CALL WRITE_REGISTER LD BC, 700H CALL WRITE_REGISTER LD A, 0 LD HL, 1900H CALL INIT_TABLE LD A, 1 LD HL, 2000H CALL INIT_TABLE LD A, 2 LD HL, 1000H CALL INIT_TABLE LD A, 3 LD HL, 0 CALL INIT_TABLE LD A, 4 LD HL, 1800H CALL INIT_TABLE LD BC, 1C2H JP WRITE_REGISTER SUB_813F: IN A, (0BFH) AND 80H JR NZ, SUB_813F RET LOAD_TILES_AND_COLORS_TO_VRAM: CALL LOAD_TILE_PATTERNS_TO_VRAM CALL LOAD_NUMBERS_TO_VRAM_01 CALL LOAD_ASCII_TO_VRAM CALL LOAD_NUMBERS_TO_VRAM_02 CALL LOAD_COLOR_TABLE_TO_VRAM CALL LOAD_SPRITES_TO_VRAM RET LOAD_TILE_PATTERNS_TO_VRAM: LD IX, PLAYFIELD_TABLE LOOP_TILL_DONE: LD A, (IX+0) CP 0 JP Z, LOCRET_8187 LD B, 0 LD C, A PUSH BC POP IY LD D, 0 LD E, (IX+1) LD H, (IX+3) LD L, (IX+2) LD A, 3 PUSH IX CALL PUT_VRAM POP IX LD BC, 4 ADD IX, BC JP LOOP_TILL_DONE LOCRET_8187: RET LOAD_NUMBERS_TO_VRAM_01: LD HL, (NUMBER_TABLE) LD DE, 0D8H LD IY, 0AH JP SEND_PATTERNS_TO_VRAM LOAD_ASCII_TO_VRAM: LD HL, (ASCII_TABLE) LD DE, 0E2H LD IY, 1AH JP SEND_PATTERNS_TO_VRAM LOAD_NUMBERS_TO_VRAM_02: LD HL, (NUMBER_TABLE) LD BC, 0FFE0H ADD HL, BC LD DE, 0FCH LD IY, 3 CALL SEND_PATTERNS_TO_VRAM LD HL, (NUMBER_TABLE) LD BC, 4EH ADD HL, BC LD DE, 0FFH LD IY, 1 SEND_PATTERNS_TO_VRAM: LD A, 3 CALL PUT_VRAM RET LOAD_COLOR_TABLE_TO_VRAM: LD HL, COLOR_TABLE LD DE, 0 LD IY, 20H LD A, 4 CALL PUT_VRAM RET LOAD_SPRITES_TO_VRAM: LD HL, BUG_SPRITE_PATTERNS LD DE, 0 LD IY, 0D8H LD A, 1 CALL PUT_VRAM RET PLAYFIELD_TABLE: DB 01H DB 0 DW BLANK_PATTERN DB 0DH DB 8 DW BORDER_PATTERNS DB 2 DB 18H DW LIVES_ICON_PATTERN DB 2 DB 20H DW PLAYFIELD_PATTERNS DB 0AH DB 28H DW OXYGEN_BAR_RED_PATTERNS DB 2 DB 38H DW TOP_OF_LADDER_PATTERNS_01 DB 2 DB 40H DW TOP_OF_LADDER_PATTERNS_02 DB 1BH DB 48H DW LADDER_PLAYFIELD_PATTERNS DB 8 DB 70H DW OXYGEN_BAR_YELLOW_PATTERNS DB 0 COLOR_TABLE: DB 000,080,080,176,033,096,096,208 DB 208,018,018,018,018,018,176,176 DB 033,033,033,033,033,033,033,033 DB 033,033,033,241,241,241,241,241 SUB_822C: CP 0 JR Z, LOCRET_8291 DEC A LD B, A ADD A, A ADD A, B LD B, 0 LD C, A LD IX, SPACE_MAN_SPRITE_TABLE ADD IX, BC LD A, (IX+0) CP 0FFH JR Z, LOCRET_8291 LD L, (IX+1) LD H, (IX+2) PUSH DE LD A, (IX+0) CP 0 JR Z, LOC_8287 LD IY, $70C7 LD B, 10H LOC_8258: LD D, (HL) LD C, 8 LOC_825B: SRL D RL E DEC C JR NZ, LOC_825B LD (IY+0), E INC IY INC HL DEC B JR NZ, LOC_8258 LD IY, WORK_BUFFER LD B, 10H LOC_8271: LD D, (HL) LD C, 8 LOC_8274: SRL D RL E DEC C JR NZ, LOC_8274 LD (IY+0), E INC IY INC HL DEC B JR NZ, LOC_8271 LD HL, WORK_BUFFER LOC_8287: LD IY, 4 POP DE LD A, 1 CALL PUT_VRAM LOCRET_8291: RET SPACE_MAN_SPRITE_TABLE: DB 00H DW SPACE_MAN_BODY_PAT DB 1 DW SPACE_MAN_BODY_PAT DB 0 DW SPACE_MAN_HEAD_PAT DB 1 DW SPACE_MAN_HEAD_PAT DB 0 DW SPACE_MAN_HELMET_PAT DB 0 DW SPACE_MAN_RUN_01_PAT DB 1 DW SPACE_MAN_RUN_01_PAT DB 0 DW SPACE_MAN_RUN_02_PAT DB 1 DW SPACE_MAN_RUN_02_PAT DB 0 DW SPACE_MAN_RUN_03_PAT DB 1 DW SPACE_MAN_RUN_03_PAT DB 0 DW SPACE_MAN_CLIMB_BODY_PAT DB 1 DW SPACE_MAN_CLIMB_BODY_PAT DB 0 DW SPACE_MAN_DIG_LOW_PAT DB 1 DW SPACE_MAN_DIG_LOW_PAT DB 0 DW SHOVEL_PART_LOW_PAT DB 1 DW SHOVEL_PART_LOW_PAT DB 0 DW SPACE_MAN_DIG_HIGH_PAT DB 1 DW SPACE_MAN_DIG_HIGH_PAT DB 0 DW SHOVEL_PART_HIGH_PAT DB 1 DW SHOVEL_PART_HIGH_PAT DB 0 DW NO_OXYGEN_WOBBLE_01_PAT DB 1 DW NO_OXYGEN_WOBBLE_01_PAT DB 0 DW NO_OXYGEN_WOBBLE_02_PAT DB 1 DW NO_OXYGEN_WOBBLE_02_PAT DB 0 DW SPACE_MAN_DEAD_BODY_PAT DB 0 DW SPACE_MAN_DEAD_HELMET_PAT DB 0 DW BUG_GRAB_HEAD_PAT DB 1 DW BUG_GRAB_HEAD_PAT DB 0 DW BUG_GRAB_BODY_PAT DB 1 DW BUG_GRAB_BODY_PAT DB 0 DW SPACE_MAN_FALL_BODY_PAT DB 1 DW SPACE_MAN_FALL_BODY_PAT DB 0 DW SPACE_MAN_CLIMB_HEAD_PAT DB 0FFH BLANK_PATTERN: DB 000,000,000,000,000,000,000,000 BORDER_PATTERNS: DB 000,000,000,007,015,031,031,063 DB 000,000,000,255,255,255,255,255 DB 063,127,126,254,252,252,252,252 DB 000,000,000,224,240,248,248,252 DB 252,254,126,127,063,063,063,063 DB 255,255,255,127,127,127,127,063 DB 063,031,031,015,003,000,000,000 DB 255,255,255,255,255,255,063,015 DB 255,255,255,255,255,255,255,255 DB 255,255,255,254,254,254,254,252 DB 252,248,248,240,192,000,000,000 DB 255,255,255,255,255,255,252,240 DB 252,252,252,252,252,252,252,252 LIVES_ICON_PATTERN: DB 000,000,255,255,255,255,255,255 DB 060,060,024,060,090,090,036,036 PLAYFIELD_PATTERNS: DB 247,247,247,000,255,255,255,255 DB 255,255,255,000,247,247,247,247 OXYGEN_BAR_RED_PATTERNS: DB 000,000,255,255,255,255,255,255 DB 000,000,255,255,255,255,255,255 DB 000,000,127,127,127,127,127,127 DB 000,000,063,063,063,063,063,063 DB 000,000,031,031,031,031,031,031 DB 000,000,015,015,015,015,015,015 DB 000,000,007,007,007,007,007,007 DB 000,000,003,003,003,003,003,003 DB 000,000,001,001,001,001,001,001 DB 000,000,000,000,000,000,000,000 TOP_OF_LADDER_PATTERNS_01: DB 063,048,048,048,063,048,048,048 DB 252,012,012,012,252,012,012,012 TOP_OF_LADDER_PATTERNS_02: DB 063,048,048,048,063,048,048,048 DB 252,012,012,012,252,012,012,012 LADDER_PLAYFIELD_PATTERNS: DB 011,009,008,255,000,000,000,000 DB 255,255,255,255,008,008,008,008 DB 200,136,008,255,000,000,000,000 DB 011,011,011,255,000,000,000,000 DB 255,255,255,255,255,008,008,008 DB 200,200,200,255,000,000,000,000 DB 011,011,011,255,003,003,003,003 DB 255,255,255,255,255,255,255,255 DB 200,200,200,255,192,192,192,192 DB 063,031,015,255,008,008,008,008 DB 252,248,248,255,000,000,000,000 DB 063,063,063,255,015,008,008,008 DB 252,252,252,255,240,000,000,000 DB 063,063,063,255,063,063,063,063 DB 252,252,252,255,252,252,252,252 DB 003,001,000,255,008,008,008,008 DB 255,255,255,255,000,000,000,000 DB 192,128,000,255,008,008,008,008 DB 003,003,003,255,008,008,008,008 DB 255,255,255,255,255,000,000,000 DB 192,192,192,255,008,008,008,008 DB 003,003,003,255,011,011,011,011 DB 192,192,192,255,200,200,200,200 DB 063,031,015,255,000,000,000,000 DB 252,248,240,255,008,008,008,008 DB 063,063,063,255,015,000,000,000 DB 252,252,252,255,248,008,008,008 OXYGEN_BAR_YELLOW_PATTERNS: DB 000,000,127,127,127,127,127,127 DB 000,000,063,063,063,063,063,063 DB 000,000,031,031,031,031,031,031 DB 000,000,015,015,015,015,015,015 DB 000,000,007,007,007,007,007,007 DB 000,000,003,003,003,003,003,003 DB 000,000,001,001,001,001,001,001 DB 000,000,000,000,000,000,000,000 DB 000 BUG_SPRITE_PATTERNS: DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,120,124,014,007 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,030,062,112,224 DB 007,031,019,051,059,063,063,045 DB 000,000,000,000,000,000,000,000 DB 224,240,056,060,188,252,252,180 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,012,030,054,051 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,048,120,108,204 DB 007,015,028,060,061,063,031,018 DB 000,000,000,000,000,000,000,000 DB 224,248,200,204,220,252,248,072 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,056,012,006,003 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,028,048,096,192 DB 000,000,000,000,000,000,000,000 DB 200,008,028,062,051,053,029,015 DB 000,000,000,000,000,000,000,000 DB 028,016,056,124,204,172,184,240 DB 006,028,016,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 096,056,008,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,056 DB 008,008,028,062,051,053,029,015 DB 000,000,000,000,000,000,000,028 DB 016,016,056,124,204,172,184,240 DB 006,028,016,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 096,056,008,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 004,012,028,062,051,053,029,015 DB 000,000,000,000,000,000,000,000 DB 032,048,056,124,204,172,184,240 DB 006,028,048,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 096,056,012,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 008,008,028,062,051,053,029,015 DB 000,000,000,000,000,000,000,000 DB 016,016,056,124,204,172,184,240 DB 008,012,006,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 016,048,096,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 006,012,016,018,017,031,012,006 DB 000,000,000,000,000,000,000,000 DB 096,048,024,072,136,248,048,096 DB 015,024,048,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 240,024,012,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 032,016,008,010,025,031,012,006 DB 000,000,000,000,000,000,000,000 DB 004,008,016,080,152,248,048,096 DB 015,012,006,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 240,048,096,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 056,008,010,009,031,031,012,006 DB 000,000,000,000,000,000,000,000 DB 028,016,080,144,248,248,048,096 DB 015,012,004,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 240,048,032,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,056,010,009,031,031,012,006 DB 000,000,000,000,000,000,000,000 DB 000,028,080,144,248,248,048,096 DB 015,012,024,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 240,048,024,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,012,003,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,192,000,224 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 001,003,006,014,015,015,015,011 DB 000,000,000,000,000,000,000,000 DB 240,048,224,128,128,224,192,064 DB 000,000,000,000,000,000,001,003 DB 006,006,014,015,007,003,000,000 DB 000,000,000,000,000,000,224,240 DB 120,176,224,128,128,224,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,001,014 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,128,112 DB 000,000,000,000,000,004,028,016 DB 020,019,019,031,015,003,000,000 DB 000,000,000,000,000,000,048,024 DB 176,096,192,000,000,192,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,006,028 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,192,096 SPACE_MAN_BODY_PAT: DB 015,007,003,007,015,015,015,007 DB 003,001,001,001,001,001,007,015 DB 240,224,192,192,192,224,224,224 DB 192,192,192,192,192,192,192,192 SPACE_MAN_HEAD_PAT: DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,001,002,007,001 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,192,192,192,192 SPACE_MAN_HELMET_PAT: DB 000,000,000,000,000,000,000,000 DB 000,000,003,004,008,008,008,008 DB 000,000,000,000,000,000,000,000 DB 000,000,192,032,016,016,016,016 SPACE_MAN_RUN_01_PAT: DB 015,007,227,063,031,065,103,127 DB 127,000,000,000,000,000,000,000 DB 240,224,192,236,239,237,252,252 DB 252,000,000,000,000,000,000,000 SPACE_MAN_RUN_02_PAT: DB 015,007,207,095,255,123,001,007 DB 015,030,015,001,003,000,000,000 DB 240,224,224,224,224,240,240,240 DB 240,120,248,188,158,007,014,028 SPACE_MAN_RUN_03_PAT: DB 015,007,231,063,031,013,000,001 DB 003,007,007,022,030,028,008,000 DB 240,224,240,240,240,248,250,255 DB 255,189,024,000,000,000,000,000 SPACE_MAN_CLIMB_BODY_PAT: DB 079,103,111,063,063,031,015,007 DB 015,014,014,007,007,003,007,014 DB 240,224,226,246,254,252,232,252 DB 252,056,048,120,060,128,000,000 SPACE_MAN_DIG_LOW_PAT: DB 015,007,007,015,031,030,030,063 DB 063,121,241,193,097,000,000,000 DB 240,224,192,240,248,220,236,126 DB 188,140,128,192,224,000,000,000 SHOVEL_PART_LOW_PAT: DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 008,012,006,003,003,000,000,000 DB 000,000,000,000,000,000,000,000 SPACE_MAN_DIG_HIGH_PAT: DB 047,103,099,063,063,051,031,014 DB 001,001,001,003,007,000,000,000 DB 240,224,224,240,248,248,248,252 DB 252,158,143,131,134,000,000,000 SHOVEL_PART_HIGH_PAT: DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 DB 000,002,007,007,007,002,002,002 NO_OXYGEN_WOBBLE_01_PAT: DB 255,126,124,126,127,127,111,103 DB 227,097,065,001,001,001,007,015 DB 000,000,000,000,000,128,192,192 DB 192,192,192,192,192,192,192,192 NO_OXYGEN_WOBBLE_02_PAT: DB 000,000,000,000,001,003,003,003 DB 003,001,001,001,001,001,007,015 DB 255,126,126,254,254,246,246,230 DB 231,199,196,192,192,192,192,192 SPACE_MAN_DEAD_BODY_PAT: DB 000,000,000,000,000,000,003,003 DB 003,003,003,003,003,003,003,003 DB 000,000,000,000,000,000,224,192 DB 129,131,159,191,255,255,255,255 SPACE_MAN_DEAD_HELMET_PAT: DB 000,000,000,000,000,000,000,000 DB 240,008,004,004,004,004,008,240 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 BUG_GRAB_HEAD_PAT: DB 000,000,000,000,000,000,000,000 DB 000,000,000,001,005,007,006,003 DB 000,000,000,000,000,000,000,000 DB 000,000,000,128,128,000,064,192 BUG_GRAB_BODY_PAT: DB 031,015,015,031,063,127,255,255 DB 057,056,028,029,031,012,000,000 DB 228,199,255,252,240,112,190,220 DB 238,120,112,096,000,000,000,000 SPACE_MAN_FALL_BODY_PAT: DB 015,007,011,059,063,031,001,031 DB 031,014,007,014,000,001,000,000 DB 240,252,254,254,246,254,252,248 DB 240,112,112,224,192,192,224,000 SPACE_MAN_CLIMB_HEAD_PAT: DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,001,003,003,003 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,128,192,192,192 BYTE_8AD2: DB 7 SOUND_TABLE: DW OPENING_TUNE DW SOUND_BANK_01_RAM DW LEVEL_COMPLETE_TUNE DW SOUND_BANK_02_RAM DW GAME_OVER_TUNE DW SOUND_BANK_03_RAM DW FALL_THROUGH_HOLE_SOUND DW SOUND_BANK_04_RAM DW CLIMB_LADDER DW SOUND_BANK_05_RAM DW SPACE_MAN_RUNNING_SOUND DW SOUND_BANK_06_RAM DW ALIEN_TRAPPED_BUZZ_SOUND DW SOUND_BANK_01_RAM DW SPACE_MAN_CAUGHT_SOUND DW SOUND_BANK_02_RAM DW USE_SHOVEL_SOUND DW SOUND_BANK_03_RAM DW OXYGEN_LOW_TUNE DW SOUND_BANK_04_RAM DW PLACE_ALIEN_SOUND DW SOUND_BANK_05_RAM DW ALIEN_ESCAPING_HOLE DW SOUND_BANK_06_RAM DW LOOSE_LIFE_TUNE DW SOUND_BANK_05_RAM DW LIGHT_FART_SOUND DW SOUND_BANK_04_RAM DW NO_SHOVEL_HERE_SOUND DW SOUND_BANK_05_RAM DW ALIEN_LAUGHING_SOUND DW SOUND_BANK_06_RAM DW SPACE_MAN_GET_READY_TUNE DW SOUND_BANK_07_RAM DW SPACE_MAN_LAND_SOUND DW SOUND_BANK_06_RAM DW SOUND_13 DW SOUND_BANK_07_RAM DW SOUND_14 DW SOUND_BANK_02_RAM DW SOUND_15 DW SOUND_BANK_03_RAM DW SOUND_16 DW SOUND_BANK_01_RAM DW SOUND_17 DW SOUND_BANK_05_RAM DW SOUND_18 DW SOUND_BANK_06_RAM DW SOUND_19 DW SOUND_BANK_05_RAM DW SOUND_1A DW SOUND_BANK_05_RAM DW SOUND_1B DW SOUND_BANK_06_RAM DW SOUND_1C DW SOUND_BANK_07_RAM DW SOUND_1D DW SOUND_BANK_05_RAM DW SOUND_1E DW SOUND_BANK_05_RAM DW SOUND_1F DW SOUND_BANK_06_RAM DW SOUND_20 DW SOUND_BANK_01_RAM DW SOUND_21 DW SOUND_BANK_02_RAM DW SOUND_22 DW SOUND_BANK_03_RAM DW SOUND_23 DW SOUND_BANK_07_RAM OPENING_TUNE: DB 066,087,051,008,025,020,104,066,129,050,008,073,021,066,059,050,008,073,021,066,224,049 DB 048,014,255,066,224,113,016,024,020,064,125,049,032,064,104,049,048,066,104,049,032,029 DB 020,066,254,048,009,025,020,066,013,049,009,025,020,066,083,049,008,025,020,066,148,049 DB 008,025,020,066,197,049,008,025,020,066,093,050,008,025,020,066,087,051,008,025,020,016 LEVEL_COMPLETE_TUNE: DB 130,214,048,008,025,020,168,130,160,048,008,073,021,130,143,048,008,073,021,130,120,048 DB 048,013,255,130,120,112,016,024,020,128,143,048,032,128,135,048,048,130,135,048,032,029 DB 020,130,064,048,009,025,020,130,067,048,009,025,020,130,085,048,008,025,020,130,101,048 DB 008,025,020,130,113,048,008,025,020,130,151,048,008,025,020,130,214,048,008,025,020,016 GAME_OVER_TUNE: DB 194,143,048,008,025,020,232,194,107,048,008,073,021,194,095,048,008,073,021,194,080,048 DB 048,013,255,194,080,112,016,024,020,192,107,048,032,192,113,048,048,194,113,048,032,029 DB 020,194,042,048,009,025,020,194,045,048,009,025,020,194,057,048,008,025,020,194,067,048 DB 008,025,020,194,076,048,008,025,020,194,101,048,008,025,020,194,143,048,008,025,020,016 FALL_THROUGH_HOLE_SOUND: DB 046,194,170,096,021,021,037,194,127,096,021,021,037,194,113,080,021,021,037,194,095,080,021 DB 021,037,194,076,064,021,021,037,194,071,064,021,021,037,194,050,064,021,021,037,194,053,064 DB 021,021,037,194,067,080,021,021,037,194,080,096,021,021,037,194,090,112,021,021,037,194,120 DB 128,021,021,037,194,060,160,021,021,037,194,030,192,021,019,037,194,015,224,021,017,037,016 CLIMB_LADDER: DB 039,130,029,065,021,021,037,130,214,064,021,021,037,130,190,048,021,021,037,130,160,048,021 DB 021,037,130,127,032,021,021,037,130,120,032,021,021,037,130,085,032,021,021,037,130,090,032 DB 021,021,037,130,113,048,021,021,037,130,135,064,021,021,037,130,151,080,021,021,037,130,202 DB 096,021,021,037,130,101,128,021,021,037,130,050,160,021,021,037,130,025,192,021,019,037,016 SPACE_MAN_RUNNING_SOUND: DB 066,172,033,021,021,037,066,064,033,021,021,037,066,029,017,021,021,037,066,240,016,021,021 DB 037,066,190,000,021,021,037,066,180,000,021,021,037,066,127,000,021,021,037,066,135,000,021 DB 021,037,066,170,016,021,021,037,066,202,032,021,021,037,066,226,048,021,021,037,066,046,065 DB 021,021,037,066,151,096,021,021,037,066,076,128,021,021,037,066,038,160,021,021,037,016 ALIEN_TRAPPED_BUZZ_SOUND: DB 064,087,035,003,041,064,129,050,003,041,064,059,050,003,035,064,224,033,003,041,064,125 DB 049,003,041,064,104,049,003,035,064,254,032,003,041,064,013,049,003,035,064,083,033,003 DB 041,064,148,049,003,041,064,197,049,003,035,064,093,034,003,041,064,087,051,003,041,064 DB 214,080,003,035,064,053,048,006,016 SPACE_MAN_CAUGHT_SOUND: DB 184,128,170,080,003,035,128,127,080,003,041,128,113,080,003,041,128,095,080,003,035,128 DB 076,080,003,041,128,071,080,003,035,128,050,080,003,041,128,053,080,003,041,128,067,080 DB 003,035,128,080,080,003,041,128,090,080,003,041,128,120,080,003,035,128,170,080,006,016 USE_SHOVEL_SOUND: DB 236,192,143,048,003,041,192,107,048,003,035,192,095,048,003,041,192,080,048,003,041,192,064,048 DB 003,035,192,060,048,003,041,192,085,048,003,035,192,090,048,003,041,192,113,048,003,041,192,135 DB 048,003,035,192,151,048,003,041,192,202,048,003,041,192,029,065,003,035,192,143,080,006,016 OXYGEN_LOW_TUNE: DB 038,002,034,012,039,017,002,034,018,039,017,002,034,012,039,017,002,034,018,039,017,002 DB 034,018,039,017,002,034,012,039,017,002,034,018,039,017,002,034,012,039,017,002,034,012 DB 039,017,002,034,012,039,017,002,033,018,039,017,016 PLACE_ALIEN_SOUND: DB 131,065,192,045,017,001,252,049,131,111,000,045,017,002,031,049,016 SOUND_1D: DB 002,070,015,028,018,016 ALIEN_ESCAPING_HOLE: DB 002,003,015,031,021,016 LOOSE_LIFE_TUNE: DB 193,187,240,015,017,242,016 LIGHT_FART_SOUND: DB 002,003,010,037,021,016 NO_SHOVEL_HERE_SOUND: DB 193,085,240,010,017,242,016 ALIEN_LAUGHING_SOUND: DB 002,003,060,000,000,024 SPACE_MAN_GET_READY_TUNE: DB 193,037,176,006,034,255,193,030,176,006,034,001,024 SPACE_MAN_LAND_SOUND: DB 002,003,015,021,026,042,002,067,015,021,026,016 SOUND_13: DB 193,086,241,025,017,241,193,086,241,025,017,241,016 SOUND_14: DB 002,007,010,021,021,016 SOUND_15: DB 193,001,240,010,017,008,016 SOUND_16: DB 064,143,083,040,064,197,083,040,064,094,083,040,064,255,083,040,024 SOUND_17: DB 193,169,016,005,017,005,002,003,005,000,000,016 SOUND_18: DB 192,034,240,006,192,050,240,007,024 SOUND_19: DB 002,003,005,000,000,037,024 SOUND_1A: DB 064,160,144,008,064,190,128,009,064,013,113,010,064,046,097,030,067,046,097,120,017,001,026,170,080 SOUND_1B: DB 128,029,145,008,128,104,129,009,128,083,113,010,128,148,097,030,131,148,097,120,017,002,026,170,144 SOUND_1C: DB 192,172,097,008,192,224,081,009,192,252,065,010,192,197,049,030,195,197,049,120,017,003,029,153,208 SOUND_1E: DB 129,255,051,002,017,128,152 SOUND_1F: DB 002,002,003,000,000,002,001,005,000,000,039,024 SOUND_20: DB 066,087,051,008,025,020,104,066,129,050,008,073,021,066,059,050 DB 008,073,021,066,224,049,048,014,255,066,224,113,016,024,020,080 SOUND_21: DB 130,214,048,008,025,020,168,130,160,048,008,073,021,130,143,048 DB 008,073,021,130,120,048,048,013,255,130,120,112,016,024,020,144 SOUND_22: DB 194,143,048,008,025,020,232,194,107,048,008,073,021,194,095,048 DB 008,073,021,194,080,048,048,013,255,194,080,112,016,024,020,208 SOUND_23: DB 130,250,003,017,016,018,144 SUB_8FE3: LD C, B LD DE, 4 LOC_8FE7: DEC C JP Z, LOC_8FEF ADD HL, DE JP LOC_8FE7 LOC_8FEF: INC HL INC HL LD E, (HL) INC HL LD D, (HL) EX DE, HL LD A, (HL) AND 3FH CP B RET NZ LD (HL), 0FFH RET NMI: PUSH AF PUSH BC PUSH DE PUSH HL EX AF, AF' EXX PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY LD HL, WORK_BUFFER LD DE, $72F3 LD BC, 30H LDIR LD HL, $7139 LD A, (HL) AND A JR Z, LOC_902B LD (HL), 0 XOR A LD (DEFER_WRITES_RAM), A CALL SUB_B04A LD A, 1 LD (DEFER_WRITES_RAM), A LOC_902B: CALL WRITER LD A, 20H CALL WR_SPR_NM_TBL CALL SUB_A9C5 CALL TIME_MGR CALL POLLER LD HL, SOUND_BANK_01_RAM LD DE, 3F00H LD BC, 47H CALL WRITE_VRAM LD HL, SOUND_BANK_01_RAM LD DE, 3F80H LD BC, 47H CALL READ_VRAM CALL SUB_A8B4 CALL SUB_A7DE CALL PLAY_SONGS CALL SOUND_MAN LD HL, SOUND_BANK_01_RAM LD DE, 3F80H LD BC, 47H CALL WRITE_VRAM LD HL, SOUND_BANK_01_RAM LD DE, 3F00H LD BC, 47H CALL READ_VRAM LD HL, $72F3 LD DE, WORK_BUFFER LD BC, 30H LDIR LD A, ($7138) AND A JR Z, LOC_908F XOR A LD ($7138), A JR FINISH_NMI LOC_908F: CALL SUB_813F FINISH_NMI: POP IY POP IX POP HL POP DE POP BC POP AF EXX EX AF, AF' POP HL POP DE POP BC POP AF RETN INIT_SYSTEM: LD A, 1 LD ($73C7), A LD (DEFER_WRITES_RAM), A LD A, (BYTE_8AD2) LD B, A LD HL, SOUND_TABLE CALL SOUND_INIT LD HL, TIMER_TABLE LD DE, TIMER_DATA_BLOCK CALL INIT_TIMER LD HL, SOUND_BANK_01_RAM LD DE, 3F80H LD BC, 47H CALL WRITE_VRAM LD HL, CONTROLLER_BUFFER LD A, 9BH LD (HL), A INC HL LD (HL), A LD A, (SKILL_LEVEL_RAM) LD (SKILL_LEVEL_CPY_RAM), A LD BC, 1E2H CALL WRITE_REGISTER XOR A LOC_90DE: CALL SUB_90EE CALL SUB_94AB CALL SUB_A00E CP 2 JR NZ, LOC_90DE JP START SUB_90EE: AND A JR NZ, LOC_90F4 CALL INIT_LIVES_COUNTER LOC_90F4: CALL SUB_913C CALL SUB_929A CALL SUB_9202 CALL SUB_91D4 CALL SUB_93AA RET INIT_LIVES_COUNTER: LD HL, 0 LD ($713D), HL LD ($713F), HL LD A, (SKILL_LEVEL_CPY_RAM) CP 2 LD A, 3 JR NC, LIVES_P1 LD A, 5 LIVES_P1: LD (LIVES_P1_RAM), A LD B, A LD A, (NUMB_OF_PLAYERS_RAM) CP 1 JR NZ, LIVES_P2 LD B, 0 LIVES_P2: LD A, B LD (LIVES_P2_RAM), A LD A, 1 LD (CURRENT_LVL_P1_RAM), A LD (CURRENT_LVL_P2_RAM), A XOR A LD ($7120), A LD ($7121), A LD ($7122), A RET SUB_913C: CALL SUB_A8F3 LD HL, SPRITE_NAME_TABLE LD BC, 80H CALL SUB_A9B9 LD HL, TIMER_TABLE LD DE, TIMER_DATA_BLOCK CALL INIT_TIMER CALL SUB_813F LD HL, $7154 LD (HL), 0 LD DE, $7155 LD BC, 45H LDIR CALL SUB_A488 LD HL, $719A LD (HL), 0 LD DE, $719B LD BC, 77H LDIR XOR A LD (OXYGEN_RED_LVL_RAM), A LD A, ($7120) BIT 0, A LD A, (CURRENT_LVL_P1_RAM) JR Z, LOC_9182 LD A, (CURRENT_LVL_P2_RAM) LOC_9182: LD HL, UNK_91BF CP 4 JR C, LOC_9193 LD HL, UNK_91C6 CP 7 JR C, LOC_9193 LD HL, UNK_91CD LOC_9193: LD DE, $7147 LD BC, 3 LDIR LD E, (HL) INC HL LD D, (HL) EX DE, HL PUSH DE XOR A CALL REQUEST_SIGNAL LD ($7144), A POP HL INC HL LD E, (HL) INC HL LD D, (HL) EX DE, HL XOR A CALL REQUEST_SIGNAL LD ($714A), A LD A, 0A0H LD (OXYGEN_YEL_LVL_RAM), A LD A, 50H LD ($7146), A RET UNK_91BF: DB 2 DB 0C8H DB 0 DB 45H DB 0 DB 34H DB 0 UNK_91C6: DB 3 DB 2CH DB 1 DB 40H DB 0 DB 30H DB 0 UNK_91CD: DB 4 DB 90H DB 1 DB 38H DB 0 DB 2AH DB 0 SUB_91D4: CALL RAND_GEN AND 7 LD HL, $7126 CP (HL) JR Z, SUB_91D4 LD (HL), A CALL SUB_A8F3 INC A CALL SUB_AA25 CALL SUB_813F LD A, ($7126) LD C, A ADD A, A ADD A, A ADD A, C ADD A, A LD C, A LD B, 0 LD HL, HOLE_ANIMATION_TABLE ADD HL, BC LD DE, $712B LD BC, 0AH LDIR RET SUB_9202: LD A, ($7120) BIT 0, A LD A, (LIVES_P1_RAM) JR Z, LOC_920F LD A, (LIVES_P2_RAM) LOC_920F: LD C, A LD B, 0 PUSH BC LD HL, 2C2H ADD HL, BC EX DE, HL LD HL, BONUS_TIMER_SIG_RAM LD (HL), 10H LD A, 2 LD IY, 1 CALL SUB_A8F3 CALL PUT_VRAM CALL SUB_813F POP BC LD A, C RLCA RLCA RLCA ADD A, 14H LD ($7150), A LD A, 0B0H LD ($714F), A XOR A LD ($714D), A LD ($7152), A LD A, 2 LOC_9244: LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD A, 6 CALL SUB_A2BF XOR A LD HL, 4 CALL REQUEST_SIGNAL LD ($714E), A LOC_925B: LD A, ($714E) CALL TEST_SIGNAL AND A JR Z, LOC_925B LD A, ($7150) CP 80H JR Z, LOC_9286 ADD A, 4 LD ($7150), A LD A, ($7152) INC A CP 4 JR NZ, LOC_9279 XOR A LOC_9279: LD ($7152), A LD C, A LD B, 0 LD HL, BYTE_9296 ADD HL, BC LD A, (HL) JR LOC_9244 LOC_9286: LD A, 9 LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD HL, 714CH RES 0, (HL) RET BYTE_9296: DB 002,003,002,001 SUB_929A: CALL SUB_A8F3 LD BC, 1C2H CALL WRITE_REGISTER CALL SUB_813F LD HL, 1000H LD DE, 300H LD A, 0 CALL FILL_VRAM LD A, 1 CALL DISPLAY_MESSAGES LD A, 2 CALL DISPLAY_MESSAGES LD A, 1 CALL SUB_A76D LD A, 2 CALL SUB_A76D XOR A CALL SUB_A76D LD A, 3 CALL DISPLAY_MESSAGES XOR A CALL SUB_A72F CALL SUB_A7B6 CALL SUB_A6C1 CALL SUB_A6F4 LD A, 7 CALL DISPLAY_MESSAGES LD A, 8 CALL DISPLAY_MESSAGES LD HL, $7120 BIT 0, (HL) JR Z, LOC_92F4 BIT 6, (HL) JR NZ, LOC_92F8 SET 6, (HL) JR LOC_9302 LOC_92F4: BIT 5, (HL) JR Z, LOC_9300 LOC_92F8: LD BC, 1E2H CALL WRITE_REGISTER JR LOC_934F LOC_9300: SET 5, (HL) LOC_9302: LD A, 4 CALL DISPLAY_MESSAGES LD A, 2 CALL SUB_A72F LD A, 6 CALL DISPLAY_MESSAGES LD BC, 1E2H CALL WRITE_REGISTER LD HL, BYTE_939B LD DE, $72D0 LD BC, 0FH LDIR LD IX, RED_BUG_OBJECT CALL PUTOBJ LD IX, GREEN_BUG_OBJECT CALL PUTOBJ LD IX, BLUE_BUG_OBJECT CALL PUTOBJ LD A, 1 CALL SUB_A2BF LD HL, 130H XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_9346: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_9346 LOC_934F: CALL SUB_A8F3 LD HL, 1060H LD DE, 260H LD A, 0 CALL FILL_VRAM LD HL, $704B LD BC, 18H CALL SUB_A9B9 LD A, ($7120) BIT 0, A LD A, 9 JR Z, LOC_9371 LD A, 0AH LOC_9371: CALL DISPLAY_MESSAGES CALL SUB_813F LD HL, 3EH XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_9381: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_9381 CALL SUB_A8F3 LD HL, 1168H LD DE, 18H XOR A CALL FILL_VRAM CALL SUB_813F RET BYTE_939B: DB 001,064,000,056,000,005,064,000,072,000,009,064,000,088,000 SUB_93AA: LD A, ($7120) BIT 0, A LD A, (CURRENT_LVL_P1_RAM) JR Z, LOC_93B7 LD A, (CURRENT_LVL_P2_RAM) LOC_93B7: CP 15H JR C, LOC_93BD LD A, 15H LOC_93BD: DEC A ADD A, A LD C, A LD B, 0 LD HL, OFF_B4C2 ADD HL, BC LD E, (HL) INC HL LD D, (HL) PUSH DE LD A, ($7126) ADD A, A LD C, A ADD A, A ADD A, C LD C, A LD HL, OFF_B62B ADD HL, BC LD E, (HL) INC HL LD D, (HL) PUSH DE POP IX POP HL LD IY, $7154 XOR A LD (BONUS_DIGIT_02_RAM), A LD ($7213), A LD (BONUS_DIGIT_01_RAM), A INC HL INC HL LD B, (HL) INC HL LD C, 7 LOC_93F1: LD (IY+0), 80H LD (IY+2), 0 LD (IY+7), 1 LD A, (HL) LD (IY+1), A INC HL LD A, (HL) INC HL LD (IY+6), A PUSH BC PUSH HL PUSH IX LOC_940B: CALL RAND_GEN LD HL, $7213 LD B, 30H CP 56H JR C, LOC_9425 LD HL, BONUS_DIGIT_01_RAM LD B, 50H CP 0ABH JR C, LOC_9425 LD HL, BONUS_DIGIT_02_RAM LD B, 70H LOC_9425: LD A, (HL) CP 3 JR NC, LOC_940B INC (HL) LOC_942B: CALL RAND_GEN POP IX PUSH IX AND 1FH CP (IX+0) JR NC, LOC_942B LD E, A LD D, 0 ADD IX, DE LD C, (IX+1) CALL SUB_A613 JR NC, LOC_942B LD (IY+4), B LD (IY+5), C CALL SUB_A552 LD A, ($712A) LD L, A LD H, 0 XOR A CALL REQUEST_SIGNAL LD (IY+3), A LD A, 0BH CALL SUB_A2BF LD HL, 2EH XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_946B: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_946B POP IX POP HL POP BC LD DE, 0AH ADD IY, DE DEC C DEC B JP NZ, LOC_93F1 LOC_9482: DEC C JP M, LOC_9492 LD B, 0AH XOR A LOC_9489: LD (IY+0), A INC IY DJNZ LOC_9489 JR LOC_9482 LOC_9492: LD A, 11H CALL SUB_A2BF XOR A LD HL, 90H CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_94A1: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_94A1 RET SUB_94AB: CALL SUB_94C0 AND A JR Z, LOC_94B5 LD A, 2 JR LOCRET_94BF LOC_94B5: CALL SUB_95CF CALL SUB_9A05 AND A JR Z, SUB_94AB DEC A LOCRET_94BF: RET SUB_94C0: LD HL, ($7148) LD A, L OR H JR Z, LOC_94CA CALL SUB_94CE LOC_94CA: CALL SUB_9553 RET SUB_94CE: LD A, ($7144) CALL TEST_SIGNAL AND A JP Z, LOCRET_954C LD HL, ($7148) XOR A LD B, A LD A, ($7147) LD C, A SBC HL, BC LD ($7148), HL CALL SUB_A8F3 XOR A CALL SUB_A72F CALL SUB_813F LD A, (OXYGEN_RED_LVL_RAM) BIT 0, A JR Z, LOC_9500 LD HL, $7146 DEC (HL) JR Z, LOCRET_954C XOR A JR LOC_9514 LOC_9500: LD A, ($7146) DEC A LD ($7146), A JR NZ, LOC_9514 LD HL, OXYGEN_RED_LVL_RAM SET 0, (HL) LD HL, $7146 LD (HL), 14H XOR A LOC_9514: LD B, A LD A, ($7120) BIT 0, A LD A, (CURRENT_LVL_P1_RAM) JR Z, LOC_9522 LD A, (CURRENT_LVL_P2_RAM) LOC_9522: CP 4 JR NC, LOC_952B LD DE, 0 JR LOC_9537 LOC_952B: CP 7 JR NC, LOC_9534 LD DE, 2 JR LOC_9537 LOC_9534: LD DE, 4 LOC_9537: LD HL, BYTE_954D ADD HL, DE LD E, (HL) INC HL LD D, (HL) EX DE, HL LD A, B AND A JR NZ, LOC_9544 ADD HL, HL LOC_9544: XOR A CALL REQUEST_SIGNAL LD HL, $7144 LD (HL), A LOCRET_954C: RET BYTE_954D: DB 069,000,064,000,056,000 SUB_9553: LD A, ($714A) CALL TEST_SIGNAL AND A JR Z, LOCRET_95C8 CALL SUB_A8F3 CALL OXYGEN_BAR_CONTROL CALL SUB_813F LD HL, OXYGEN_YEL_LVL_RAM LD DE, OXYGEN_RED_LVL_RAM LD A, (DE) AND 2 JR Z, LOC_9578 LD A, (HL) DEC A LD (HL), A JR NZ, LOC_95BD INC A JR LOCRET_95C8 LOC_9578: LD A, (HL) DEC A LD (HL), A JR Z, LOC_95AD LD A, ($7120) BIT 0, A LD A, (CURRENT_LVL_P1_RAM) JR Z, LOC_958A LD A, (CURRENT_LVL_P2_RAM) LOC_958A: CP 4 JR NC, LOC_9593 LD DE, 0 JR LOC_959F LOC_9593: CP 7 JR NC, LOC_959C LD DE, 2 JR LOC_959F LOC_959C: LD DE, 4 LOC_959F: LD HL, BYTE_95C9 ADD HL, DE LD E, (HL) INC HL LD D, (HL) EX DE, HL XOR A CALL REQUEST_SIGNAL JR LOC_95C4 LOC_95AD: LD A, (DE) OR 2 LD (DE), A LD (HL), 40H LD A, 0AH CALL SUB_A2BF LD A, 1 LD ($7139), A LOC_95BD: LD HL, 12H XOR A CALL REQUEST_SIGNAL LOC_95C4: LD ($714A), A XOR A LOCRET_95C8: RET BYTE_95C9: DB 052,000,048,000,042,000 SUB_95CF: LD A, ($714C) BIT 0, A JR Z, LOC_95E4 LD A, ($714E) CALL TEST_SIGNAL AND A JR Z, LOCRET_963D LD HL, $714C RES 0, (HL) LOC_95E4: LD A, ($714C) BIT 2, A JR Z, LOC_95F0 CALL SUB_9997 JR LOC_962C LOC_95F0: LD IX, JOY_P1 LD A, ($7120) BIT 0, A JR Z, LOC_95FF LD IX, FIRE_LEFT_P2 LOC_95FF: XOR A BIT 6, (IX+0) JR NZ, LOC_960D BIT 6, (IX+3) JR Z, LOC_9612 INC A LOC_960D: CALL SUB_9822 JR LOC_962C LOC_9612: LD A, (IX+1) LD B, A AND 0AH JR Z, LOC_961F CALL SUB_963E JR LOC_962C LOC_961F: LD A, B AND 5 JR Z, LOC_9629 CALL SUB_9759 JR LOC_962C LOC_9629: CALL SUB_99E4 LOC_962C: LD A, ($713B) AND A JR Z, LOCRET_963D DEC A LD ($713B), A JR NZ, LOCRET_963D LD HL, $713A SET 3, (HL) LOCRET_963D: RET SUB_963E: PUSH AF LD A, ($714F) LD HL, BYTE_9746 LD B, 5 LOC_9647: CP (HL) INC HL JR C, LOC_9650 CP (HL) JR C, LOC_9658 JR Z, LOC_9658 LOC_9650: INC HL INC HL DJNZ LOC_9647 POP AF JP LOC_9723 LOC_9658: INC HL LD A, (HL) LD ($714F), A POP AF BIT 1, A LD A, ($714D) JR Z, LOC_966B AND A JR Z, LOC_967B XOR A JR LOC_9671 LOC_966B: CP 1 JR Z, LOC_9682 LD A, 1 LOC_9671: LD ($714D), A LD A, 9 LD (SPCE_MAN_SPRT_NUM_RAM), A JR LOC_96FA LOC_967B: LD A, ($7150) ADD A, 4 JR LOC_9687 LOC_9682: LD A, ($7150) SUB 4 LOC_9687: CP 10H JR C, LOC_9706 CP 0F1H JR NC, LOC_9706 LD E, A LD A, ($714F) CP 0B0H JR Z, LOC_96DF CALL SUB_A34F JR C, LOC_96DF BIT 0, (IX+0) JR NZ, LOC_9706 LD A, ($7150) CALL SUB_A318 JR C, LOC_96DF LD A, (IX+1) CP 3 JR NZ, LOC_9706 LD A, ($7150) ADD A, 0CH LD C, A LD A, ($714D) AND A JR Z, LOC_96C1 LD A, C SUB 18H LD C, A LOC_96C1: LD A, ($714F) LD B, A LOC_96C5: LD A, B ADD A, 20H LD B, A CP 0B0H JR Z, LOC_96DF CALL SUB_A52A JR C, LOC_96DF BIT 0, (IX+0) JR NZ, LOC_9706 LD A, (IX+1) CP 3 JR Z, LOC_96C5 LOC_96DF: LD A, E LD ($7150), A LD A, ($7152) INC A CP 4 JR C, LOC_96EC XOR A LOC_96EC: LD ($7152), A LD C, A LD B, 0 LD HL, BYTE_9755 ADD HL, BC LD A, (HL) LD (SPCE_MAN_SPRT_NUM_RAM), A LOC_96FA: LD A, 1 LD ($7139), A LD A, 6 CALL SUB_A2BF JR LOC_9714 LOC_9706: XOR A LD ($7152), A LD A, 2 LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LOC_9714: XOR A LD HL, 4 CALL REQUEST_SIGNAL LD ($714E), A LD HL, $714C SET 0, (HL) LOC_9723: LD A, ($714F) CP 0B0H JR Z, LOCRET_9745 LD B, A LD A, ($7150) LD C, A CALL SUB_A52A JR C, LOCRET_9745 LD A, (IX+1) CP 3 JR NZ, LOCRET_9745 LD HL, $714C SET 2, (HL) LD A, 4 CALL SUB_A2BF LOCRET_9745: RET BYTE_9746: DB 044,052,048,076,084,080,108,116,112,140,148,144,172,176,176 BYTE_9755: DB 002,003,002,001 SUB_9759: LD C, A LD A, ($714D) CP 2 JR Z, LOC_976F CP 3 JR Z, LOC_976F LD A, ($714F) CALL SUB_97C2 JR C, LOCRET_97C1 JR LOC_9784 LOC_976F: LD HL, BYTE_981D LD A, ($714F) LD B, 5 LOC_9777: CP (HL) JR Z, LOC_977F INC HL DJNZ LOC_9777 JR LOC_9784 LOC_977F: CALL SUB_97C2 JR C, LOCRET_97C1 LOC_9784: LD HL, $714D LD A, ($714F) BIT 0, C JR NZ, LOC_9794 LD (HL), 3 ADD A, 4 JR LOC_9798 LOC_9794: LD (HL), 2 SUB 4 LOC_9798: LD ($714F), A LD A, (SPCE_MAN_SPRT_NUM_RAM) INC A CP 5 JR Z, LOC_97A5 LD A, 4 LOC_97A5: LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD A, 5 CALL SUB_A2BF XOR A LD HL, 4 CALL REQUEST_SIGNAL LD ($714E), A LD HL, $714C SET 0, (HL) LOCRET_97C1: RET SUB_97C2: LD HL, BYTE_980E LOC_97C5: CP (HL) INC HL JR Z, LOC_97CD INC HL INC HL JR LOC_97C5 LOC_97CD: LD E, (HL) INC HL LD D, (HL) EX DE, HL LD E, (HL) INC HL LD D, (HL) EX DE, HL LD A, ($7150) SUB 4 LD B, 3 LD D, (HL) INC HL LOC_97DE: LD E, D PUSH HL POP IX LOC_97E2: CP (IX+0) JR Z, LOC_97F4 INC IX INC IX DEC E JR NZ, LOC_97E2 ADD A, 4 DJNZ LOC_97DE JR LOC_980C LOC_97F4: BIT 0, C JR NZ, LOC_9800 BIT 1, (IX+1) JR Z, LOC_980C JR LOC_9806 LOC_9800: BIT 0, (IX+1) JR Z, LOC_980C LOC_9806: LD ($7150), A AND A JR LOCRET_980D LOC_980C: SCF LOCRET_980D: RET BYTE_980E: DB 176,043,113,144,045,113,112,047,113,080,049,113,048,051,113 BYTE_981D: DB 176,144,112,080,048 SUB_9822: LD C, A LD A, (SPCE_MAN_SPRT_NUM_RAM) CP 4 JP Z, LOC_997D CP 5 JP Z, LOC_997D CP 7 JP Z, LOC_98EA CP 8 JP Z, LOC_98EA LD A, ($714F) CP 0B0H JP Z, LOC_997D CALL SUB_A318 JP NC, LOC_9904 BIT 0, C JP NZ, LOC_997D LD A, ($714D) AND A LD A, ($7150) JR Z, LOC_985A SUB 12H JR LOC_985C LOC_985A: ADD A, 6 LOC_985C: LD E, A LD D, A LD L, 2 LOC_9860: LD A, D CP 9 JP C, LOC_997D CP 0F8H JP NC, LOC_997D LD A, ($714F) LD B, A CALL SUB_A4F0 LD B, 0AH LOC_9874: LD A, (IX+1) AND A JR Z, LOC_9888 LD A, (IX+2) SUB 0BH CP D JR NC, LOC_9888 ADD A, 16H CP D JP NC, LOC_997D LOC_9888: INC IX INC IX INC IX DJNZ LOC_9874 DEC L JR Z, LOC_9899 LD A, D ADD A, 0CH LD D, A JR LOC_9860 LOC_9899: LD L, 2 LOC_989B: LD A, ($714F) CALL SUB_A2E6 LD B, (IX+0) INC IX LOC_98A6: LD A, (IX+0) SUB 8 CP E JR NC, LOC_98B4 ADD A, 10H CP E JP NC, LOC_997D LOC_98B4: INC IX INC IX DJNZ LOC_98A6 DEC L JR Z, LOC_98C3 LD A, E ADD A, 0CH LD E, A JR LOC_989B LOC_98C3: LD A, 7 BIT 0, C JR NZ, LOC_98CB LD A, 8 LOC_98CB: LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD A, 9 CALL SUB_A2BF XOR A LD HL, 0FH CALL REQUEST_SIGNAL LD ($714E), A LD HL, $714C SET 0, (HL) JP LOCRET_9996 LOC_98EA: CALL SUB_A318 JR NC, LOC_9904 LD A, ($714F) LD B, A CALL SUB_A4F0 LOC_98F6: BIT 7, (IX+0) JR Z, LOC_9904 INC IX INC IX INC IX JR LOC_98F6 LOC_9904: BIT 0, C JR NZ, LOC_993E BIT 0, (IX+0) JR NZ, LOC_997D LD A, (IX+1) CP 3 JR NC, LOC_997D LD A, (SPCE_MAN_SPRT_NUM_RAM) INC A CP 8 JR Z, LOC_9967 INC (IX+1) SET 7, (IX+0) LD A, ($7150) ADD A, 0CH LD B, A LD A, ($714D) AND A JR Z, LOC_9934 LD A, B SUB 18H LD B, A LOC_9934: LD (IX+2), B CALL PLACE_HOLES LD A, 7 JR LOC_9967 LOC_993E: LD A, (IX+1) AND A JR Z, LOC_997D LD A, (SPCE_MAN_SPRT_NUM_RAM) CP 7 JR Z, LOC_994F LD A, 7 JR LOC_9967 LOC_994F: DEC (IX+1) LD A, (IX+1) AND A JR NZ, LOC_9962 BIT 0, (IX+0) JR NZ, LOC_9962 RES 7, (IX+0) LOC_9962: CALL PLACE_HOLES LD A, 8 LOC_9967: LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD A, (SPCE_MAN_SPRT_NUM_RAM) CP 8 JR NZ, LOC_9987 LD A, 9 CALL SUB_A2BF JR LOC_9987 LOC_997D: LD A, 0FH CALL SUB_A2BF LD A, 2 LD ($713B), A LOC_9987: XOR A LD HL, 0DH CALL REQUEST_SIGNAL LD ($714E), A LD HL, $714C SET 0, (HL) LOCRET_9996: RET SUB_9997: LD A, ($714F) CP 0B0H JR Z, LOC_99C0 LD B, A CALL SUB_A4F0 JR C, LOC_99B4 LD A, ($7150) LD C, A CALL SUB_A52A JR C, LOC_99C0 LD A, (IX+1) CP 3 JR NZ, LOC_99C0 LOC_99B4: LD A, ($714F) ADD A, 4 LD ($714F), A LD A, 6 JR LOC_99CC LOC_99C0: LD HL, $714C RES 2, (HL) LD A, 12H CALL SUB_A2BF LD A, 2 LOC_99CC: LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A XOR A LD HL, 3 CALL REQUEST_SIGNAL LD ($714E), A LD HL, $714C SET 0, (HL) RET SUB_99E4: LD A, (SPCE_MAN_SPRT_NUM_RAM) CP 4 JR NC, LOCRET_9A04 LD A, 9 LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A XOR A LD HL, 4 CALL REQUEST_SIGNAL LD ($714E), A LD HL, $714C SET 0, (HL) LOCRET_9A04: RET SUB_9A05: LD HL, $7153 INC (HL) LD A, (HL) CP 7 JR C, LOC_9A10 LD (HL), 0 LOC_9A10: CALL SUB_A67D BIT 7, (IX+0) JR Z, LOCRET_9A5E LD A, (IX+3) CALL TEST_SIGNAL AND A JR Z, LOCRET_9A5E BIT 4, (IX+0) JR Z, LOC_9A31 RES 4, (IX+0) LD HL, $713A SET 4, (HL) LOC_9A31: BIT 5, (IX+0) JR Z, LOC_9A3F CALL SUB_9CC0 AND A JR NZ, LOC_9A4B JR LOC_9A5D LOC_9A3F: BIT 6, (IX+0) JR Z, LOC_9A50 CALL SUB_9A5F AND A JR Z, LOCRET_9A5E LOC_9A4B: CALL SUB_9AB3 JR LOCRET_9A5E LOC_9A50: CALL SUB_9DD7 AND A JR Z, LOC_9A5D CALL SUB_9D81 LD A, 2 JR LOCRET_9A5E LOC_9A5D: XOR A LOCRET_9A5E: RET SUB_9A5F: PUSH IX POP IY LD A, (IY+4) AND 0F0H LD B, A LD C, (IY+5) CALL SUB_A52A LD A, (IX+1) AND A JR Z, LOC_9AA7 LD A, (IY+7) INC A CP 3 JR Z, LOC_9A7F LD A, 2 LOC_9A7F: LD (IY+7), A LD HL, 5 XOR A CALL REQUEST_SIGNAL LD (IY+3), A CALL SUB_A552 DEC (IY+8) JR Z, LOC_9A9B LD A, 7 CALL SUB_A2BF JR LOC_9AA4 LOC_9A9B: LD HL, $713A SET 0, (HL) SET 5, (IY+0) LOC_9AA4: XOR A JR LOCRET_9AB2 LOC_9AA7: LD (IX+0), 0 LD HL, $713A SET 0, (HL) LD A, 1 LOCRET_9AB2: RET SUB_9AB3: LD A, 4 CALL SUB_A2BF LD A, (IY+4) LD (BONUS_TIMER_SIG_RAM), A LD A, (IY+5) LD ($7213), A LD (BONUS_DIGIT_01_RAM), A LOC_9AC7: LD B, 7 LD IY, BONUS_TIMER_SIG_RAM LD D, (IY+0) LD E, (IY+1) LOC_9AD3: LD A, B CALL SUB_A435 JR C, LOC_9AF3 LD (IX+7), 0 PUSH IY PUSH IX POP IY CALL SUB_A552 POP IY LD A, (IY+0) CALL SUB_A5D9 JR C, LOC_9AF3 INC (IX+9) LOC_9AF3: DJNZ LOC_9AD3 LD A, ($713A) OR 13H LD ($713A), A XOR A LD HL, 1 CALL REQUEST_SIGNAL LD (IY+3), A LD A, (IY+0) CALL SUB_A5D9 JR C, LOC_9B32 LD B, (IY+0) LD C, (IY+1) CALL SUB_A52A JR C, LOC_9B2C XOR A LD (IX+0), A LD C, (IX+1) LD (IX+1), A CALL PLACE_HOLES LD A, C CP 3 JR Z, LOC_9B32 LOC_9B2C: SET 0, (IY+4) JR LOC_9B4C LOC_9B32: LD B, 7 LD D, (IY+0) LD E, (IY+1) LOC_9B3A: LD A, B CALL SUB_A435 JR C, LOC_9B43 INC (IX+4) LOC_9B43: DJNZ LOC_9B3A INC (IY+0) RES 0, (IY+4) LOC_9B4C: LD A, (IY+3) CALL TEST_SIGNAL AND A JR Z, LOC_9B4C BIT 0, (IY+4) JP Z, LOC_9AC7 LD A, 12H CALL SUB_A2BF LD HL, 0AH XOR A CALL REQUEST_SIGNAL LD (IY+3), A LOC_9B6B: LD A, (IY+3) CALL TEST_SIGNAL AND A JR Z, LOC_9B6B LD B, 7 LD D, (IY+0) LD E, (IY+1) LOC_9B7C: LD A, B DEC B CALL SUB_A435 JR C, LOC_9B7C LD A, (IX+1) CP 2 JR NZ, LOC_9B93 LD A, (IX+9) CP 2 JR NC, LOC_9BD2 JR LOC_9B9E LOC_9B93: CP 3 JR NZ, LOC_9BD2 LD A, (IX+9) CP 3 JR NC, LOC_9BD2 LOC_9B9E: PUSH IX POP IY LD D, (IY+4) LD E, (IY+5) CALL SUB_A6B1 JR NC, LOC_9BD2 RES 5, (IY+0) RES 6, (IY+0) LD (IY+9), 0 CALL SUB_A552 LD A, 10H CALL SUB_A2BF SET 4, (IY+0) XOR A LD HL, 3EH CALL REQUEST_SIGNAL LD (IY+3), A JP LOC_9C9A LOC_9BD2: LD IY, BONUS_TIMER_SIG_RAM LD B, 7 LD D, (IY+0) LD E, (IY+1) XOR A LD (IY+5), A LD (IY+6), A LOC_9BE5: LD A, B CALL SUB_A68E JR C, LOC_9C45 PUSH DE RES 7, (IX+0) LD HL, OFF_9C9C LD D, 0 LD E, (IX+1) DEC E RLC E ADD HL, DE LD E, (HL) INC HL LD D, (HL) EX DE, HL LD D, 0 LD E, (IX+9) RLC E ADD HL, DE LD E, (HL) INC HL LD D, (HL) LD HL, (BONUS_DIGIT_04_RAM) ADD HL, DE LD (BONUS_DIGIT_04_RAM), HL LD (IX+7), 0 LD (IX+1), 0 LD (IX+4), 19H LD (IX+5), 10H PUSH IX POP IY CALL SUB_A552 PUSH BC LD B, 7 LOC_9C2C: LD A, B CALL SUB_A67D BIT 7, (IX+0) JR Z, LOC_9C41 LD A, ($7129) ADD A, (IX+6) JR C, LOC_9C41 LD (IX+6), A LOC_9C41: DJNZ LOC_9C2C POP BC POP DE LOC_9C45: DJNZ LOC_9BE5 CALL SUB_A901 LD DE, (BONUS_DIGIT_04_RAM) LD HL, ($713D) LD A, ($7120) BIT 0, A JR Z, LOC_9C5B LD HL, ($713F) LOC_9C5B: CALL SUB_A8F3 ADD HL, DE CALL SUB_AFB1 CALL SUB_813F XOR A LD HL, 3EH CALL REQUEST_SIGNAL LD (BONUS_DIGIT_02_RAM), A LOC_9C6F: LD A, (BONUS_DIGIT_02_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_9C6F CALL SUB_A8F3 LD HL, $7083 LD BC, 8 CALL SUB_A9B9 CALL SUB_813F LD B, 7 LD HL, $7154 LD DE, 0AH LOC_9C8F: BIT 7, (HL) JR NZ, LOC_9C9A ADD HL, DE DJNZ LOC_9C8F LD A, 1 JR LOCRET_9C9B LOC_9C9A: XOR A LOCRET_9C9B: RET OFF_9C9C: DW BYTE_9CA2 DW BYTE_9CAC DW BYTE_9CB6 BYTE_9CA2: DB 0AH, 00H DB 0AH, 00H DB 14H, 00H DB 1EH, 00H DB 32H, 00H BYTE_9CAC: DB 1EH, 00H DB 1EH, 00H DB 1EH, 00H DB 32H, 00H DB 50H, 00H BYTE_9CB6: DB 50H, 00H DB 50H, 00H DB 50H, 00H DB 50H, 00H DB 78H, 00H SUB_9CC0: PUSH IX POP IY DEC (IY+4) INC (IY+7) LD A, (IY+07H) CP 1 JR Z, LOC_9CD5 LD (IY+7), 0 LOC_9CD5: LD B, (IY+4) LD C, (IY+5) LD A, (IY+7) CALL SUB_A552 LD A, (IY+4) CALL SUB_A5D9 JR NC, LOC_9D23 LD A, (IY+4) LD B, A AND 0FH CP 6 JR C, LOC_9D12 LD A, B AND 0F0H LD B, A LD C, (IY+5) CALL SUB_A52A LD A, (IX+1) AND A JR NZ, LOC_9D12 LD (IX+0), 0 LD HL, $713A SET 0, (HL) SET 1, (HL) LD A, 1 JR LOCRET_9D80 LOC_9D12: LD HL, 14H XOR A CALL REQUEST_SIGNAL LD (IY+3), A LD A, 0CH CALL SUB_A2BF JR LOC_9D7F LOC_9D23: LD A, ($712A) LD L, A LD H, 0 XOR A CALL REQUEST_SIGNAL LD (IY+3), A LD HL, $713A SET 1, (HL) RES 5, (IY+0) LD B, (IY+4) LD C, (IY+5) CALL SUB_A52A JR C, LOC_9D7F BIT 6, (IY+0) JR Z, LOC_9D74 RES 6, (IY+0) LD A, (IY+1) CP 3 JR Z, LOC_9D74 LD A, ($7120) BIT 0, A LD A, (CURRENT_LVL_P1_RAM) JR Z, LOC_9D62 LD A, (CURRENT_LVL_P2_RAM) LOC_9D62: CP 1 JR Z, LOC_9D74 INC (IY+1) LD A, ($7129) ADD A, (IY+6) JR C, LOC_9D74 LD (IY+6), A LOC_9D74: LD (IX+1), 0 LD (IX+0), 0 CALL PLACE_HOLES LOC_9D7F: XOR A LOCRET_9D80: RET SUB_9D81: LD A, 1FH LD ($713A), A LD A, (IY+1) ADD A, 11H LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD (IY+7), 0 LD (IY+1), 0 LD (IY+4), 11H LD (IY+5), 10H CALL SUB_A552 LD A, 8 CALL SUB_A2BF XOR A LD HL, 3EH CALL REQUEST_SIGNAL LD ($714E), A LOC_9DB5: LD A, ($714E) CALL TEST_SIGNAL AND A JR Z, LOC_9DB5 LD A, 0DH CALL SUB_A2BF XOR A LD HL, 0B4H CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_9DCD: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_9DCD RET SUB_9DD7: PUSH IX POP IY LD B, (IY+4) LD A, (IY+5) ADD A, 0CH LD C, A CALL SUB_A52A JR NC, LOC_9DF7 LD B, (IY+4) LD A, (IY+5) SUB 0CH LD C, A CALL SUB_A52A JR C, LOC_9DFE LOC_9DF7: BIT 0, (IX+0) JP NZ, LOC_9F6E LOC_9DFE: LD D, (IY+4) LD E, (IY+5) CALL SUB_A5EF JR NC, LOC_9E74 LD A, (IY+2) CP 2 JR NC, LOC_9E43 AND A LD A, (IY+5) JR Z, LOC_9E20 CP 10H JR NZ, LOC_9E28 LD (IY+2), 0 JR LOC_9E2C LOC_9E20: CP 0F0H JR NZ, LOC_9E2C LD (IY+2), 1 LOC_9E28: SUB 4 JR LOC_9E2E LOC_9E2C: ADD A, 4 LOC_9E2E: LD C, A LD B, (IY+4) CALL SUB_A613 JR C, LOC_9E3A LD (IY+2), A LOC_9E3A: LD (IY+4), B LD (IY+5), C JP LOC_9F6E LOC_9E43: CP 2 LD A, (IY+4) JR NZ, LOC_9E4E SUB 4 JR LOC_9E50 LOC_9E4E: ADD A, 4 LOC_9E50: LD B, A LD C, (IY+5) CALL SUB_A613 JR NC, LOC_9E62 LD (IY+4), B LD (IY+5), C JP LOC_9F6E LOC_9E62: LD (IY+4), B LD (IY+5), C LD (IY+2), A JP LOC_9F6E LOC_9E74: LD DE, 0 LD A, ($714F) CP (IY+4) JR NC, LOC_9E81 SET 0, D LOC_9E81: LD A, ($7150) CP (IY+5) JR NC, LOC_9E8B SET 1, D LOC_9E8B: CALL RAND_GEN AND A JR Z, LOC_9E8B CP 0C9H JR NC, LOC_9E8B CP (IY+6) JR C, LOC_9EA2 LD A, D XOR 3 LD D, A SET 7, D JR LOC_9F0D LOC_9EA2: LD A, ($714F) CP (IY+4) JR NZ, LOC_9EAE SET 6, D JR LOC_9F0D LOC_9EAE: BIT 0, D JR Z, LOC_9EBA BIT 0, (IX+1) JR NZ, LOC_9F0D JR LOC_9EC0 LOC_9EBA: BIT 1, (IX+1) JR NZ, LOC_9F0D LOC_9EC0: PUSH IX LD A, (IY+4) CALL SUB_A2E6 LD B, (IX+0) INC IX LD A, (IY+5) LOC_9ED0: BIT 1, D JR Z, LOC_9EDB CP (IX+0) JR NC, LOC_9EE2 JR LOC_9EF4 LOC_9EDB: CP (IX+0) JR Z, LOC_9EE2 JR NC, LOC_9EF4 LOC_9EE2: BIT 0, D JR NZ, LOC_9EEE BIT 1, (IX+1) JR NZ, LOC_9F00 JR LOC_9EF4 LOC_9EEE: BIT 0, (IX+1) JR NZ, LOC_9F00 LOC_9EF4: INC IX INC IX DJNZ LOC_9ED0 LD A, D XOR 2 LD D, A JR LOC_9F0B LOC_9F00: CALL RAND_GEN CP 80H JR NC, LOC_9F0B LD A, D XOR 2 LD A, D LOC_9F0B: POP IX LOC_9F0D: BIT 0, D JR NZ, LOC_9F19 BIT 1, (IX+1) JR NZ, LOC_9F1F JR LOC_9F4B LOC_9F19: BIT 0, (IX+1) JR Z, LOC_9F4B LOC_9F1F: BIT 6, D JR NZ, LOC_9F4B CALL RAND_GEN CP 80H JR NC, LOC_9F4B LD A, (IY+4) BIT 0, D JR Z, LOC_9F37 SUB 4 LD E, 2 JR LOC_9F3B LOC_9F37: ADD A, 4 LD E, 3 LOC_9F3B: LD B, A LD C, (IY+5) CALL SUB_A613 NOP NOP CALL SUB_A9E5 JR NC, LOC_9F6E JR LOC_9F65 LOC_9F4B: LD A, (IY+5) BIT 1, D JR Z, LOC_9F58 SUB 4 LD E, 1 JR LOC_9F5C LOC_9F58: ADD A, 4 LD E, 0 LOC_9F5C: LD C, A LD B, (IY+4) CALL SUB_A613 NOP NOP LOC_9F65: LD (IY+4), B LD (IY+5), C LD (IY+2), E LOC_9F6E: LD B, (IY+4) CALL SUB_A4F0 JR C, LOC_9F95 LD C, (IY+5) LD B, 0AH LD DE, 3 LOC_9F7E: BIT 7, (IX+0) JR Z, LOC_9F91 LD A, (IX+2) SUB 9 CP C JR NC, LOC_9F91 ADD A, 12H CP C JR NC, LOC_9FA4 LOC_9F91: ADD IX, DE DJNZ LOC_9F7E LOC_9F95: LD D, (IY+4) LD E, (IY+5) CALL SUB_A400 JR NC, LOC_9FA4 LD A, 1 JR LOCRET_A00D LOC_9FA4: LD B, (IY+4) LD C, (IY+5) CALL SUB_A52A JR C, LOC_9FF0 SET 0, (IX+0) LD A, (IX+1) CP 3 JR NZ, LOC_9FD8 SET 6, (IY+0) LD (IY+7), 3 LD A, (IY+4) ADD A, 0CH LD (IY+4), A LD (IY+8), 1AH LD A, 7 CALL SUB_A2BF LD HL, 5 JR LOC_9FF6 LOC_9FD8: CP 2 LD A, (IY+4) JR NZ, LOC_9FE3 ADD A, 5 JR LOC_9FE5 LOC_9FE3: ADD A, 3 LOC_9FE5: LD (IY+4), A SET 5, (IY+0) LD (IY+7), 1 LOC_9FF0: LD A, ($712A) LD L, A LD H, 0 LOC_9FF6: XOR A CALL REQUEST_SIGNAL LD (IY+3), A LD A, (IY+7) INC A CP 1 JR Z, LOC_A006 XOR A LOC_A006: LD (IY+7), A CALL SUB_A552 XOR A LOCRET_A00D: RET SUB_A00E: LD HL, $713A LD (HL), 1FH AND A JR NZ, LOC_A01D CALL SUB_A028 LD A, 1 JR LOCRET_A027 LOC_A01D: CP 2 JR NZ, LOC_A024 CALL SUB_A097 LOC_A024: CALL SUB_A16A LOCRET_A027: RET SUB_A028: LD A, 2 CALL SUB_A2BF LD B, 12H LOC_A02F: CALL SUB_A8F3 PUSH BC BIT 0, B JR NZ, LOC_A04A LD A, 5 CALL DISPLAY_MESSAGES LD HL, ($7148) LD H, A OR L JR Z, LOC_A04F LD A, 1 CALL SUB_A72F JR LOC_A04F LOC_A04A: LD A, 0EH CALL DISPLAY_MESSAGES LOC_A04F: CALL SUB_813F LD HL, 10H XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_A05C: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_A05C POP BC DJNZ LOC_A02F LD IX, $7120 BIT 0, (IX+0) JR NZ, LOC_A077 LD HL, ($713D) JR LOC_A07A LOC_A077: LD HL, ($713F) LOC_A07A: CALL SUB_A8F3 LD DE, ($7148) ADD HL, DE CALL SUB_AFB1 CALL SUB_813F LD HL, CURRENT_LVL_P1_RAM LD A, ($7120) BIT 0, A JR Z, LOC_A095 LD HL, CURRENT_LVL_P2_RAM LOC_A095: INC (HL) RET SUB_A097: LD A, ($714D) CP 2 JR NC, LOC_A0D7 LOC_A09E: LD A, ($714F) LD D, A LD A, ($7150) LD E, A CALL SUB_A5EF JR C, LOC_A0E1 BIT 1, (IX+1) JR Z, LOC_A12B LD A, 4 CALL SUB_A2BF LOC_A0B6: LD HL, $714F INC (HL) LD A, 5 LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A LD HL, 1 XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_A0CE: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_A0CE LOC_A0D7: LD A, ($714F) CALL SUB_A5D9 JR C, LOC_A0B6 JR LOC_A09E LOC_A0E1: LD A, ($714C) BIT 2, A JR Z, LOC_A12B LOC_A0E8: LD A, ($714F) CALL SUB_A5D9 JR C, LOC_A104 LD A, ($714F) LD B, A LD A, ($7150) LD C, A CALL SUB_A52A JR C, LOC_A12B LD A, (IX+1) CP 3 JR NZ, LOC_A12B LOC_A104: LD A, ($714F) ADD A, 4 LD ($714F), A LD A, 6 LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A XOR A LD HL, 6 CALL REQUEST_SIGNAL LD ($714E), A LOC_A120: LD A, ($714E) CALL TEST_SIGNAL AND A JR Z, LOC_A120 JR LOC_A0E8 LOC_A12B: LD A, 9 LOC_A12D: LD (SPCE_MAN_SPRT_NUM_RAM), A LD A, 1 LD ($7139), A XOR A LD HL, 1EH CALL REQUEST_SIGNAL LD ($714E), A LOC_A13F: LD A, ($714E) CALL TEST_SIGNAL AND A JR Z, LOC_A13F LD HL, SPCE_MAN_SPRT_NUM_RAM INC (HL) LD A, (HL) CP 12H JR NZ, LOC_A12D LD A, 0DH CALL SUB_A2BF LD HL, 0B4H XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_A160: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_A160 RET SUB_A16A: LD HL, LIVES_P1_RAM LD DE, LIVES_P2_RAM LD A, ($7120) BIT 0, A JR Z, LOC_A178 EX DE, HL LOC_A178: DEC (HL) LD A, (HL) AND A JR NZ, LOC_A1BC EX DE, HL OR (HL) JR Z, LOC_A1D9 CALL SUB_A8F3 LD HL, 1000H LD DE, 300H LD A, 0 CALL FILL_VRAM LD HL, SPRITE_NAME_TABLE LD BC, 80H CALL SUB_A9B9 LD A, ($7120) BIT 0, A LD A, 0BH JR Z, LOC_A1A3 LD A, 0CH LOC_A1A3: CALL DISPLAY_MESSAGES CALL SUB_813F XOR A LD HL, 0BBH CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_A1B3: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_A1B3 LOC_A1BC: LD HL, LIVES_P2_RAM LD A, ($7120) BIT 0, A JR Z, LOC_A1C9 LD HL, LIVES_P1_RAM LOC_A1C9: LD B, A LD A, (HL) AND A JR Z, LOC_A1D4 LD A, B XOR 1 LD ($7120), A LOC_A1D4: LD A, 1 JP LOCRET_A288 LOC_A1D9: LD HL, ($7141) LD BC, ($713D) AND A SBC HL, BC JR NC, LOC_A1E9 LD ($7141), BC LOC_A1E9: LD HL, ($7141) LD BC, ($713F) AND A SBC HL, BC JR NC, LOC_A1F9 LD ($7141), BC LOC_A1F9: CALL SUB_A8F3 XOR A CALL SUB_A76D LD HL, SPRITE_NAME_TABLE LD BC, 80H CALL SUB_A9B9 LD A, ($7120) BIT 0, A LD A, 0BH JR Z, LOC_A214 LD A, 0CH LOC_A214: CALL DISPLAY_MESSAGES CALL SUB_813F LD A, 3 CALL SUB_A2BF LD HL, 0BEH XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_A229: LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_A229 LD HL, 1D4CH XOR A CALL REQUEST_SIGNAL LD (BONUS_TIMER_SIG_RAM), A LOC_A23C: LD A, (KEYBOARD_P1) CP 0AH JR Z, LOC_A277 CP 0BH JR Z, LOC_A27A LD A, (KEYBOARD_P2) CP 0AH JR Z, LOC_A277 CP 0BH JR Z, LOC_A27A LD A, (BONUS_TIMER_SIG_RAM) CALL TEST_SIGNAL AND A JR Z, LOC_A23C CALL SUB_A8F3 LD HL, 1000H LD DE, 300H LD A, 0 CALL FILL_VRAM LD HL, SPRITE_NAME_TABLE LD BC, 80H CALL SUB_A9B9 CALL SUB_813F JR LOC_A23C LOC_A277: XOR A JR LOCRET_A288 LOC_A27A: CALL SUB_A8F3 LD BC, 1C2H CALL WRITE_REGISTER CALL SUB_813F LD A, 2 LOCRET_A288: RET SUB_A289: LD E, 5 LD IX, BYTE_A2B5 LOC_A28F: PUSH DE PUSH HL XOR A LD E, (IX+0) LD D, (IX+1) LOC_A298: LD H, B LD L, C AND A SBC HL, DE JP C, LOC_A2A6 INC A LD B, H LD C, L JP LOC_A298 LOC_A2A6: POP HL POP DE ADD A, 0D8H LD (HL), A INC HL INC IX INC IX DEC E JP NZ, LOC_A28F RET BYTE_A2B5: DB 016,039,232,003,100,000,010,000,001,000 SUB_A2BF: LD B, A LD A, (AUDIO_SELECT) LD C, A LD HL, BYTE_A2D4 LOC_A2C7: LD A, (HL) INC HL CP C JR Z, LOCRET_A2D3 CP B JR NZ, LOC_A2C7 LD B, A LD (AUDIO_SELECT), A LOCRET_A2D3: RET BYTE_A2D4: DB 01H, 11H, 02H, 03H, 08H, 0AH, 0DH, 10H, 04H, 12H, 07H, 0BH, 0CH, 0EH, 05H, 06H, 09H, 0FH SUB_A2E6: PUSH BC PUSH DE PUSH HL LD HL, BYTE_A309 LD B, 5 LD DE, 3 LOC_A2F1: CP (HL) JR Z, LOC_A2FA ADD HL, DE DJNZ LOC_A2F1 SCF JR LOC_A305 LOC_A2FA: INC HL LD E, (HL) INC HL LD D, (HL) EX DE, HL LD E, (HL) INC HL LD D, (HL) PUSH DE POP IX LOC_A305: POP HL POP DE POP BC RET BYTE_A309: DB 176,043,113,144,045,113,112,047,113,080,049,113,048,051,113 SUB_A318: PUSH BC PUSH DE PUSH HL LD A, ($714F) LD B, A CALL SUB_A4F0 LD A, ($7150) ADD A, 0CH LD C, A LD A, ($714D) AND A JR Z, LOC_A332 LD A, C SUB 18H LD C, A LOC_A332: LD B, 0AH LD A, C LD DE, 3 LOC_A338: BIT 7, (IX+0) JR Z, LOC_A343 CP (IX+2) JR Z, LOC_A34A LOC_A343: ADD IX, DE DJNZ LOC_A338 SCF JR LOC_A34B LOC_A34A: AND A LOC_A34B: POP HL POP DE POP BC RET SUB_A34F: PUSH BC PUSH DE PUSH HL LD A, ($714F) ADD A, 4 AND 0F0H LD B, A CALL SUB_A4F0 LD B, 0AH LD A, C LD DE, 3 LOC_A363: BIT 7, (IX+0) JR Z, LOC_A390 LD A, ($714D) AND A LD A, ($7150) JR Z, LOC_A382 SUB 0DH CP (IX+2) JR NC, LOC_A390 ADD A, 0CH CP (IX+2) JR NC, LOC_A397 JR LOC_A390 LOC_A382: ADD A, 0CH CP (IX+2) JR C, LOC_A390 SUB 0CH CP (IX+2) JR C, LOC_A397 LOC_A390: ADD IX, DE DJNZ LOC_A363 SCF JR LOC_A398 LOC_A397: AND A LOC_A398: POP HL POP DE POP BC RET SUB_A39C: LD A, H AND A JR NZ, LOC_A3A6 LD A, L LD HL, ($7136) JR LOC_A3B1 LOC_A3A6: LD A, ($7137) AND A JR Z, LOC_A3AE SCF RET LOC_A3AE: LD A, ($7136) LOC_A3B1: LD B, 8 EX DE, HL LD HL, 0 LOC_A3B7: ADD HL, HL JR C, LOC_A3C2 RLCA JR NC, LOC_A3C0 ADD HL, DE JR C, LOC_A3C2 LOC_A3C0: DJNZ LOC_A3B7 LOC_A3C2: LD ($7136), HL RET SUB_A3C6: LD A, L OR H JR NZ, LOC_A3CC SCF RET LOC_A3CC: PUSH BC PUSH DE PUSH IX LD IX, 0 LD B, 1 LOC_A3D6: BIT 7, H JR NZ, LOC_A3DE ADD HL, HL INC B JR LOC_A3D6 LOC_A3DE: EX DE, HL LD HL, ($7136) LOC_A3E2: ADD IX, IX AND A SBC HL, DE JR NC, LOC_A3EC ADD HL, DE JR LOC_A3EE LOC_A3EC: INC IX LOC_A3EE: LD A, D SRL A LD D, A LD A, E RRA LD E, A DJNZ LOC_A3E2 LD ($7136), IX POP IX POP DE POP BC RET SUB_A400: PUSH BC PUSH DE PUSH HL LD HL, $714F LD B, (HL) LD A, D SUB 9 CP B JR Z, LOC_A40F JR NC, LOC_A430 LOC_A40F: ADD A, 1AH CP B JR C, LOC_A430 LD HL, $7150 LD B, (HL) LD A, E SUB 0BH JR NC, LOC_A41E XOR A LOC_A41E: CP B JR Z, LOC_A423 JR NC, LOC_A430 LOC_A423: LD A, E ADD A, 0BH JR NC, LOC_A42A LD A, 0FFH LOC_A42A: CP B JR C, LOC_A430 SCF JR LOC_A431 LOC_A430: AND A LOC_A431: POP HL POP DE POP BC RET SUB_A435: CALL SUB_A67D BIT 7, (IX+0) JR Z, LOC_A44D LD A, (IX+4) CP D JR NZ, LOC_A44D LD A, (IX+5) CP E JR NZ, LOC_A44D AND A JR LOCRET_A44E LOC_A44D: SCF LOCRET_A44E: RET SUB_A44F: PUSH HL LD B, 0 LD C, (HL) LD ($7136), BC LD H, 0 LD L, (IY+0) CALL SUB_A39C LD H, 0 LD L, 64H CALL SUB_A3C6 LD BC, ($7136) POP HL RET SUB_A46C: PUSH HL LD B, 0 LD C, (HL) LD ($7136), BC LD HL, 64H CALL SUB_A39C LD H, 0 LD L, (IY+0) CALL SUB_A3C6 LD BC, ($7136) POP HL RET SUB_A488: LD HL, OFF_B4C2 LD A, ($7120) BIT 0, A JR Z, LOC_A497 LD A, (CURRENT_LVL_P2_RAM) JR LOC_A49A LOC_A497: LD A, (CURRENT_LVL_P1_RAM) LOC_A49A: CP 15H JR C, LOC_A4A0 LD A, 15H LOC_A4A0: DEC A ADD A, A LD B, 0 LD C, A ADD HL, BC LD E, (HL) INC HL LD D, (HL) EX DE, HL LD IY, BYTE_A4EC LD A, (SKILL_LEVEL_CPY_RAM) DEC A LD B, 0 LD C, A ADD IY, BC CALL SUB_A46C LD A, 7 CP C JR NC, LOC_A4C0 LD A, C LOC_A4C0: LD ($712A), A INC HL CALL SUB_A44F LD A, C LD ($7129), A INC HL LD D, (HL) LD IX, $7154 LOC_A4D1: PUSH DE SET 7, (IX+0) INC HL LD B, (HL) LD (IX+1), B INC HL CALL SUB_A44F LD (IX+6), C LD BC, 0AH ADD IX, BC POP DE DEC D JR NZ, LOC_A4D1 RET BYTE_A4EC: DB 050,075,100,125 SUB_A4F0: PUSH BC PUSH DE PUSH HL PUSH IY LD IY, BYTE_A51E LD C, 4 LD A, B LOC_A4FC: CP (IY+0) JR NZ, LOC_A50F LD IX, 0 LD E, (IY+1) LD D, (IY+2) ADD IX, DE JR LOC_A518 LOC_A50F: LD DE, 3 ADD IY, DE DEC C JR NZ, LOC_A4FC SCF LOC_A518: POP IY POP HL POP DE POP BC RET BYTE_A51E: DB 048,244,113,080,214,113,112,184,113,144,154,113 SUB_A52A: PUSH BC PUSH DE PUSH HL PUSH IY CALL SUB_A4F0 JR C, LOC_A54C LD B, 0AH LD D, 0 LD E, 3 LOC_A53A: BIT 7, (IX+0) JR Z, LOC_A546 LD A, C CP (IX+2) JR Z, LOC_A54C LOC_A546: ADD IX, DE DEC B JR NZ, LOC_A53A SCF LOC_A54C: POP IY POP HL POP DE POP BC RET SUB_A552: PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY PUSH IY POP DE LD IX, OFF_A5AF LD BC, 6 LOC_A563: LD A, (IX+0) CP E JR NZ, LOC_A56F LD A, (IX+1) CP D JR Z, LOC_A573 LOC_A56F: ADD IX, BC JR LOC_A563 LOC_A573: LD L, (IX+2) LD H, (IX+3) LD A, (IY+1) AND A JR Z, LOC_A586 DEC A ADD A, A ADD A, A INC A ADD A, (IY+7) LOC_A586: LD (HL), A INC HL LD A, (IY+5) SUB 8 LD (HL), A INC HL LD (HL), 0 LD A, (IY+4) SUB 18H INC HL LD (HL), A INC HL LD (HL), 0 LD E, (IX+4) LD D, (IX+5) PUSH DE POP IX CALL PUTOBJ POP IY POP IX POP HL POP DE POP BC RET OFF_A5AF: DW $7154 DW $72D0 DW RED_BUG_OBJECT DW $715E DW $72D5 DW GREEN_BUG_OBJECT DW $7168 DW $72DA DW BLUE_BUG_OBJECT DW $7172 DW $72DF DW OFF_B932 DW $717C DW $72E4 DW OFF_B93A DW $7186 DW $72E9 DW OFF_B942 DW $7190 DW $72EE DW OFF_B94A SUB_A5D9: PUSH BC PUSH HL LD BC, 5 LD HL, BYTE_A5EA AND A CPIR JR Z, LOC_A5E7 SCF LOC_A5E7: POP HL POP BC RET BYTE_A5EA: DB 048,080,112,144,176 SUB_A5EF: PUSH BC PUSH DE PUSH HL PUSH IY LD A, D CALL SUB_A2E6 JR C, LOC_A60D LD B, (IX+0) INC IX LD A, E LOC_A600: CP (IX+0) JR Z, LOC_A60D INC IX INC IX DEC B JR NZ, LOC_A600 SCF LOC_A60D: POP IY POP HL POP DE POP BC RET SUB_A613: PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY LD A, 7 PUSH IY POP DE LOC_A61F: PUSH AF CALL SUB_A67D PUSH IX POP HL AND A SBC HL, DE JR Z, LOC_A670 BIT 7, (IX+0) JR Z, LOC_A670 LD A, B ADD A, 0CH CP (IX+4) JR C, LOC_A670 LD A, (IX+4) ADD A, 0CH CP B JR C, LOC_A670 LD A, C ADD A, 0CH CP (IX+5) JR C, LOC_A670 LD A, (IX+5) ADD A, 0CH CP C JR C, LOC_A670 POP AF LD A, (IY+2) CP 2 JR NC, LOC_A664 LD A, (IX+5) CP C LD A, 0 JR C, LOC_A66D INC A JR LOC_A66D LOC_A664: LD A, (IX+4) CP B LD A, 2 JR NC, LOC_A66D INC A LOC_A66D: AND A JR LOC_A675 LOC_A670: POP AF DEC A JR NZ, LOC_A61F SCF LOC_A675: POP IY POP IX POP HL POP DE POP BC RET SUB_A67D: PUSH BC LD IX, $7154 LD BC, 0AH LOC_A685: DEC A JR Z, LOC_A68C ADD IX, BC JR LOC_A685 LOC_A68C: POP BC RET SUB_A68E: CALL SUB_A67D BIT 7, (IX+0) JR Z, LOC_A6AF LD A, (IX+4) JP LOC_BB00 LOC_A69D: LD A, (IX+5) ADD A, 4 CP E JR C, LOC_A6AF SUB 8 CP E JR Z, LOC_A6AC JR NC, LOC_A6AF LOC_A6AC: AND A JR LOCRET_A6B0 LOC_A6AF: SCF LOCRET_A6B0: RET SUB_A6B1: LD BC, 700H LOC_A6B4: LD A, B CALL SUB_A68E JR C, LOC_A6BB INC C LOC_A6BB: DJNZ LOC_A6B4 LD A, C CP 2 RET SUB_A6C1: LD HL, LIVES_P1_RAM LD A, ($7120) BIT 0, A JR Z, LOC_A6CE LD HL, LIVES_P2_RAM LOC_A6CE: LD B, (HL) LD C, 7 LD DE, 2C3H LD HL, UNK_A6F2 LOC_A6D7: PUSH BC PUSH DE PUSH HL LD A, 2 LD IY, 1 CALL PUT_VRAM POP HL POP DE POP BC INC DE DEC C JR Z, LOCRET_A6F1 DJNZ LOC_A6D7 LD HL, UNK_A6F3 JR LOC_A6D7 LOCRET_A6F1: RET UNK_A6F2: DB 19H UNK_A6F3: DB 10H SUB_A6F4: LD HL, CURRENT_LVL_P1_RAM LD A, ($7120) BIT 0, A JR Z, LOC_A701 LD HL, CURRENT_LVL_P2_RAM LOC_A701: LD A, (HL) LD BC, 0 LOC_A705: CP 0AH JR C, LOC_A70E SUB 0AH INC B JR LOC_A705 LOC_A70E: ADD A, 0D8H LD (BONUS_DIGIT_02_RAM), A LD A, B ADD A, 0D8H CP 0D8H JR NZ, LOC_A71C LD A, 10H LOC_A71C: LD (BONUS_DIGIT_01_RAM), A LD A, 2 LD DE, 2DAH LD HL, BONUS_DIGIT_01_RAM LD IY, 2 CALL PUT_VRAM RET SUB_A72F: PUSH AF LD BC, ($7148) LD HL, BONUS_TIMER_SIG_RAM CALL SUB_A289 LD A, 0D8H LD (BONUS_DIGIT_04_RAM), A LD HL, BONUS_DIGIT_01_RAM LD B, 2 LOC_A744: LD A, (HL) CP 0D8H JR NZ, LOC_A74E LD (HL), 0 INC HL DJNZ LOC_A744 LOC_A74E: POP AF ADD A, A LD C, A LD B, 0 LD HL, BYTE_A767 ADD HL, BC LD E, (HL) INC HL LD D, (HL) LD A, 2 LD HL, BONUS_DIGIT_01_RAM LD IY, 4 CALL PUT_VRAM RET BYTE_A767: DB 203,002,113,000,177,000 SUB_A76D: ADD A, A ADD A, A LD C, A LD B, 0 LD HL, BYTE_A7AA ADD HL, BC LD E, (HL) INC HL LD D, (HL) INC HL PUSH HL EX DE, HL LD C, (HL) INC HL LD B, (HL) LD HL, BONUS_TIMER_SIG_RAM CALL SUB_A289 LD HL, BONUS_TIMER_SIG_RAM LD B, 4 LOC_A78A: LD A, (HL) CP 0D8H JR NZ, LOC_A794 LD (HL), 0 INC HL DJNZ LOC_A78A LOC_A794: LD A, 0D8H LD (BONUS_DIGIT_04_RAM), A LD A, 2 POP HL LD E, (HL) INC HL LD D, (HL) LD HL, BONUS_TIMER_SIG_RAM LD IY, 6 CALL PUT_VRAM RET BYTE_A7AA: DB 065,113,013,000,061,113,005,000,063,113,024,000 SUB_A7B6: LD BC, 1402H LD DE, 42H LD HL, UNK_A7DC LOOP_A7BF: PUSH BC PUSH DE PUSH HL LD A, 2 LD IY, 1 CALL PUT_VRAM POP HL POP DE POP BC INC DE DJNZ LOOP_A7BF DEC C JR Z, LOCRET_A7DB LD HL, UNK_A7DD LD B, 8 JR LOOP_A7BF LOCRET_A7DB: RET UNK_A7DC: DB 18H UNK_A7DD: DB 29H SUB_A7DE: LD A, (AUDIO_SELECT) AND A JR Z, LOCRET_A83A DEC A ADD A, A LD HL, OFF_A83B LD C, A LD B, 0 ADD HL, BC LD E, (HL) INC HL LD D, (HL) EX DE, HL LD A, (HL) INC HL PUSH HL AND A JR Z, PLAY_SOUND LD HL, BYTE_A8AD CP 1 JR Z, LOC_A801 LD HL, BYTE_A8A7 LOC_A801: LD A, (HL) CP 0FFH JR Z, PLAY_SOUND INC HL LD B, A LD IX, SOUND_TABLE LD DE, 4 LOC_A80F: DEC B JR Z, LOC_A816 ADD IX, DE JR LOC_A80F LOC_A816: LD B, A PUSH HL LD L, (IX+2) LD H, (IX+3) LD A, (HL) AND 3FH CP B POP HL JR NZ, LOC_A801 POP HL JR LOC_A836 PLAY_SOUND: POP HL LD A, (HL) INC HL CP 0FFH JR Z, LOC_A836 PUSH HL LD B, A CALL PLAY_IT JR PLAY_SOUND LOC_A836: XOR A LD (AUDIO_SELECT), A LOCRET_A83A: RET OFF_A83B: DW UNK_A85F DW UNK_A864 DW UNK_A869 DW UNK_A86F DW UNK_A872 DW UNK_A876 DW UNK_A87A DW UNK_A87E DW UNK_A882 DW UNK_A886 DW UNK_A889 DW UNK_A88C DW UNK_A890 DW UNK_A895 DW UNK_A898 DW UNK_A89B DW UNK_A89E DW UNK_A8A3 UNK_A85F: DB 0 DB 1 DB 2 DB 3 DB 0FFH UNK_A864: DB 0 DB 4 DB 5 DB 6 DB 0FFH UNK_A869: DB 0 DB 7 DB 8 DB 9 DB 0AH DB 0FFH UNK_A86F: DB 1 DB 0BH DB 0FFH UNK_A872: DB 2 DB 0CH DB 0DH DB 0FFH UNK_A876: DB 2 DB 0EH DB 0FH DB 0FFH UNK_A87A: DB 1 DB 10H DB 11H DB 0FFH UNK_A87E: DB 0 DB 12H DB 13H DB 0FFH UNK_A882: DB 2 DB 14H DB 15H DB 0FFH UNK_A886: DB 0 DB 16H DB 0FFH UNK_A889: DB 1 DB 17H DB 0FFH UNK_A88C: DB 1 DB 18H DB 19H DB 0FFH UNK_A890: DB 0 DB 1AH DB 1BH DB 1CH DB 0FFH UNK_A895: DB 1 DB 1DH DB 0FFH UNK_A898: DB 2 DB 1EH DB 0FFH UNK_A89B: DB 1 DB 1FH DB 0FFH UNK_A89E: DB 0 DB 20H DB 21H DB 22H DB 0FFH UNK_A8A3: DB 1 DB 1DH DB 23H DB 0FFH BYTE_A8A7: DB 011,031,016,023,024,029 BYTE_A8AD: DB 001,004,007,018,026,032,255 SUB_A8B4: LD A, ($713A) AND A JR Z, LOCRET_A8EA LD BC, 7 LOC_A8BD: RRCA JR NC, LOC_A8E2 PUSH AF PUSH BC LD HL, BYTE_A8EB ADD HL, BC LD C, (HL) LD HL, OFF_A83B ADD HL, BC LD E, (HL) INC HL LD D, (HL) EX DE, HL LOC_A8CF: INC HL LD A, (HL) CP 0FFH JR Z, LOC_A8E0 PUSH HL LD HL, SOUND_TABLE LD B, A CALL SUB_8FE3 POP HL JR LOC_A8CF LOC_A8E0: POP BC POP AF LOC_A8E2: DEC C JP P, LOC_A8BD XOR A LD ($713A), A LOCRET_A8EA: RET BYTE_A8EB: DB 000,000,000,030,028,018,022,012 SUB_A8F3: PUSH AF LD A, 1 LD ($7138), A LOC_A8F9: LD A, ($7138) AND A JR NZ, LOC_A8F9 POP AF RET SUB_A901: CALL SUB_A8F3 LD HL, 2740H LD DE, 40H XOR A CALL FILL_VRAM LD IY, 1 LD HL, (NUMBER_TABLE) LD DE, 0E9H LD A, 1 CALL PUT_VRAM LD IY, 1 LD HL, (NUMBER_TABLE) LD DE, 0EBH LD A, 1 CALL PUT_VRAM LD HL, (BONUS_DIGIT_04_RAM) LD DE, (NUMBER_TABLE) LD BC, 64H AND A SBC HL, BC JR C, LOC_A956 LOC_A93B: PUSH HL LD HL, 8 ADD HL, DE EX DE, HL POP HL AND A SBC HL, BC JR NC, LOC_A93B PUSH HL EX DE, HL LD DE, 0EDH LD IY, 1 LD A, 1 CALL PUT_VRAM POP HL LOC_A956: LD BC, 64H ADD HL, BC LD BC, 0AH LD DE, (NUMBER_TABLE) LOC_A961: AND A SBC HL, BC JR C, LOC_A96F PUSH HL LD HL, 8 ADD HL, DE EX DE, HL POP HL JR LOC_A961 LOC_A96F: EX DE, HL LD DE, 0EFH LD IY, 1 LD A, 1 CALL PUT_VRAM LD A, (BONUS_TIMER_SIG_RAM) SUB 10H LD ($721A), A LD ($721E), A LD A, ($7213) SUB 8 LD ($721B), A ADD A, 10H LD ($721F), A LD A, 0ECH LD ($721C), A LD A, 0E8H LD ($7220), A LD A, 0FH LD ($721D), A LD ($7221), A LD HL, $721A LD DE, 13H LD IY, 2 LD A, 0 CALL PUT_VRAM CALL SUB_813F RET SUB_A9B9: LD DE, 1 EX DE, HL ADD HL, DE EX DE, HL XOR A LD (HL), A DEC BC LDIR RET SUB_A9C5: LD HL, SPRITE_ORDER_TABLE LD DE, $7015 LD B, 5 LOOP_A9CD: LD C, (HL) LD A, (DE) LD (HL), A LD A, C LD (DE), A INC HL INC DE DJNZ LOOP_A9CD LD DE, $7014 LD B, 8 LOC_A9DB: LD A, (DE) LD C, A LD A, (HL) LD (DE), A LD (HL), C INC HL DEC DE DJNZ LOC_A9DB RET SUB_A9E5: PUSH BC PUSH DE PUSH IX LD D, B LD BC, 700H LOC_A9ED: LD A, B CALL SUB_A67D BIT 7, (IX+0) JR Z, LOC_AA1B LD A, D BIT 0, E JR NZ, LOC_AA0C CP (IX+4) JR C, LOC_AA1B SUB 38H CP (IX+4) JR C, LOC_AA1A JR Z, LOC_AA1A JR LOC_AA1B LOC_AA0C: CP (IX+4) JR Z, LOC_AA13 JR NC, LOC_AA1B LOC_AA13: ADD A, 38H CP (IX+4) JR C, LOC_AA1B LOC_AA1A: INC C LOC_AA1B: DJNZ LOC_A9ED LD A, C CP 3 POP IX POP DE POP BC RET SUB_AA25: PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY LD BC, 2 LD IX, BYTE_AA5E PUSH AF CALL SUB_AA8F POP AF LD BC, 20H LD IY, OFF_AA7F DEC A AND 7 ADD A, A LD E, A LD D, 0 ADD IY, DE LD E, (IY+0) LD D, (IY+1) PUSH DE POP IX CALL SUB_AA8F POP IX POP IX POP HL POP DE POP BC POP AF RET BYTE_AA5E: DB 032,015,193,000,033,015,194,000,032,015,065,001,033,015,066,001,032,015,193,001,033,015,194,001,032,015,065,002,033,015,066,002,000 OFF_AA7F: DW BYTE_AACF DW BYTE_AB10 DW BYTE_AB59 DW BYTE_ABA2 DW BYTE_ABE3 DW BYTE_AC34 DW BYTE_AC6D DW BYTE_ACB6 SUB_AA8F: PUSH IY LOC_AA91: PUSH IX POP HL LD A, (IX+0) CP 0 JR Z, LOC_AACC LD A, (IX+1) INC IX INC IX LD D, (IX+1) LD E, (IX+0) INC IX INC IX LOC_AAAC: PUSH IX PUSH HL PUSH BC PUSH DE PUSH AF LD IY, 1 LD A, 2 CALL PUT_VRAM POP AF POP IY POP BC ADD IY, BC PUSH IY POP DE POP HL POP IX DEC A JR NZ, LOC_AAAC JR LOC_AA91 LOC_AACC: POP IY RET BYTE_AACF: DB 38H, 06H, 83H, 00H, 39H, 06H, 84H, 00H DB 38H, 06H, 8EH, 00H, 39H, 06H, 8FH, 00H DB 38H, 0AH, 9BH, 00H, 39H, 0AH, 9CH, 00H DB 38H, 06H, 07H, 01H, 39H, 06H, 08H, 01H DB 38H, 06H, 11H, 01H, 39H, 06H, 12H, 01H DB 38H, 0AH, 83H, 01H, 39H, 0AH, 84H, 01H DB 38H, 0AH, 8DH, 01H, 39H, 0AH, 8EH, 01H DB 38H, 06H, 1BH, 02H, 39H, 06H, 1CH, 02H DB 00H BYTE_AB10: DB 38H, 0AH, 83H, 00H, 39H, 0AH, 84H, 00H DB 38H, 0AH, 8EH, 00H, 39H, 0AH, 8FH, 00H DB 38H, 06H, 98H, 00H, 39H, 06H, 99H, 00H DB 38H, 06H, 0AH, 01H, 39H, 06H, 0BH, 01H DB 38H, 06H, 15H, 01H, 39H, 06H, 16H, 01H DB 38H, 06H, 87H, 01H, 39H, 06H, 88H, 01H DB 38H, 0AH, 92H, 01H, 39H, 0AH, 93H, 01H DB 38H, 0AH, 9BH, 01H, 39H, 0AH, 9CH, 01H DB 38H, 06H, 03H, 02H, 39H, 06H, 04H, 02H DB 00H BYTE_AB59: DB 38H, 06H, 83H, 00H, 39H, 06H, 84H, 00H DB 38H, 0AH, 8EH, 00H, 39H, 0AH, 8FH, 00H DB 38H, 0EH, 9BH, 00H, 39H, 0EH, 9CH, 00H DB 38H, 06H, 07H, 01H, 39H, 06H, 08H, 01H DB 38H, 0AH, 8AH, 01H, 39H, 0AH, 8BH, 01H DB 38H, 06H, 95H, 01H, 39H, 06H, 96H, 01H DB 38H, 06H, 03H, 02H, 39H, 06H, 04H, 02H DB 38H, 06H, 12H, 02H, 39H, 06H, 13H, 02H DB 38H, 06H, 18H, 02H, 39H, 06H, 19H, 02H DB 00H BYTE_ABA2: DB 38H, 06H, 83H, 00H, 39H, 06H, 84H, 00H DB 38H, 0EH, 8CH, 00H, 39H, 0EH, 8DH, 00H DB 38H, 0AH, 98H, 00H, 39H, 0AH, 99H, 00H DB 38H, 0AH, 07H, 01H, 39H, 0AH, 08H, 01H DB 38H, 0AH, 92H, 01H, 39H, 0AH, 93H, 01H DB 38H, 0AH, 9BH, 01H, 39H, 0AH, 9CH, 01H DB 38H, 06H, 03H, 02H, 39H, 06H, 04H, 02H DB 38H, 06H, 18H, 02H, 39H, 06H, 19H, 02H DB 00H BYTE_ABE3: DB 38H, 06H, 83H, 00H, 39H, 06H, 84H, 00H DB 38H, 06H, 8BH, 00H, 39H, 06H, 8CH, 00H DB 38H, 0EH, 98H, 00H, 39H, 0EH, 99H, 00H DB 38H, 06H, 9BH, 00H, 39H, 06H, 9CH, 00H DB 38H, 0AH, 07H, 01H, 39H, 0AH, 08H, 01H DB 38H, 0EH, 14H, 01H, 39H, 0EH, 15H, 01H DB 38H, 06H, 8BH, 01H, 39H, 06H, 8CH, 01H DB 38H, 0AH, 90H, 01H, 39H, 0AH, 91H, 01H DB 38H, 06H, 03H, 02H, 39H, 06H, 04H, 02H DB 38H, 06H, 1BH, 02H, 39H, 06H, 1CH, 02H DB 00H BYTE_AC34: DB 38H, 12H, 83H, 00H, 39H, 12H, 84H, 00H DB 38H, 06H, 89H, 00H, 39H, 06H, 8AH, 00H DB 38H, 06H, 96H, 00H, 39H, 06H, 97H, 00H DB 38H, 12H, 9BH, 00H, 39H, 12H, 9CH, 00H DB 38H, 0AH, 0FH, 01H, 39H, 0AH, 10H, 01H DB 38H, 06H, 09H, 02H, 39H, 06H, 0AH, 02H DB 38H, 06H, 16H, 02H, 39H, 06H, 17H, 02H DB 00H BYTE_AC6D: DB 38H, 0AH, 83H, 00H, 39H, 0AH, 84H, 00H DB 38H, 06H, 8BH, 00H, 39H, 06H, 8CH, 00H DB 38H, 06H, 9BH, 00H, 39H, 06H, 9CH, 00H DB 38H, 0AH, 10H, 01H, 39H, 0AH, 11H, 01H DB 38H, 0AH, 17H, 01H, 39H, 0AH, 18H, 01H DB 38H, 0AH, 87H, 01H, 39H, 0AH, 88H, 01H DB 38H, 06H, 8BH, 01H, 39H, 06H, 8CH, 01H DB 38H, 0AH, 9BH, 01H, 39H, 0AH, 9CH, 01H DB 38H, 06H, 13H, 02H, 39H, 06H, 14H, 02H DB 00H BYTE_ACB6: DB 38H, 06H, 83H, 00H, 39H, 06H, 84H, 00H DB 38H, 12H, 8DH, 00H, 39H, 12H, 8EH, 00H DB 38H, 06H, 92H, 00H, 39H, 06H, 93H, 00H DB 38H, 0EH, 17H, 01H, 39H, 0EH, 18H, 01H DB 38H, 06H, 88H, 01H, 39H, 06H, 89H, 01H DB 38H, 06H, 92H, 01H, 39H, 06H, 93H, 01H DB 38H, 06H, 03H, 02H, 39H, 06H, 04H, 02H DB 00H DISPLAY_MESSAGES: PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY DEC A ADD A, A LD B, 0 LD C, A LD IX, MESSAGE_TABLE ADD IX, BC LD H, (IX+1) LD L, (IX+0) LD IX, WHERE_TO_PLACE_MESSAGE ADD IX, BC LD D, (IX+1) LD E, (IX+0) LOC_AD14: LD A, 0FFH CP (HL) JR Z, LOC_AD46 LD A, 0FEH CP (HL) JR NZ, LOC_AD2A INC HL PUSH HL LD L, (HL) LD H, 0 ADD HL, DE PUSH HL POP DE POP HL INC HL JR LOC_AD14 LOC_AD2A: LD A, 0FDH CP (HL) JR NZ, LOC_AD41 INC HL PUSH HL INC HL LD A, (HL) POP HL LOC_AD34: PUSH AF CALL SUB_AD4F POP AF DEC HL DEC A JR NZ, LOC_AD34 INC HL INC HL JR LOC_AD14 LOC_AD41: CALL SUB_AD4F JR LOC_AD14 LOC_AD46: POP IY POP IX POP HL POP DE POP BC POP AF RET SUB_AD4F: PUSH DE PUSH HL LD IY, 1 LD A, 2 CALL PUT_VRAM POP HL POP DE INC DE INC HL RET MESSAGE_TABLE: DW P_1UP_TXT DW P_2UP_TXT DW OXYGEN_TXT DW TITLE_BONUS__TXT DW LEVEL_BONUS_TXT DW TITLE_SCORING_LIST DW UPPER_BORDER DW LOWER_BORDER DW GET_READY_P1_TXT DW GET_READY_P2_TXT DW GAME_OVER_P1_TXT DW GAME_OVER_P2_TXT DW GAME_OVER_TXT DW CLEAR_10_SPACES P_1UP_TXT: DB 217,246,241,255 P_2UP_TXT: DB 218,246,241,255 OXYGEN_TXT: DB 240,249,250,232,230,239,255 TITLE_BONUS__TXT: DB 0E3H,0F0H,0EFH,0F6H,0F4H,0FFH LEVEL_BONUS_TXT: DB 227,240,239,246,244,255 TITLE_SCORING_LIST: DB 253,253,001,000,217,216,216,000,253,253,001,000,000,221,216,216,254,052,253,253,001,000,219,216,216,000,253 DB 253,001,000,000,224,216,216,254,052,253,253,001,000,224,216,216,000,253,253,001,000,217,218,216,216,255 UPPER_BORDER: DB 008,253,009,028,011,254,002,010,254,028,012,255 LOWER_BORDER: DB 013,016,254,007,020,254,004,020,254,006,253,016,004,254,002,016,016,017,000,000,014,015,253,016,026,019,018,255 GET_READY_P1_TXT: DB 241,237,226,250,230,243,000,217,000,232,230,245,000,243,230,226,229,250,255 GET_READY_P2_TXT: DB 241,237,226,250,230,243,000,218,000,232,230,245,000,243,230,226,229,250,255 GAME_OVER_P1_TXT: DB 253,000,020,254,012,000,232,226,238,230,000,240,247,230,243,000,241,237,226,250,230,243,000,217,000,254,012,253,000,020,255 GAME_OVER_P2_TXT: DB 253,000,020,254,012,000,232,226,238,230,000,240,247,230,243,000,241,237,226,250,230,243,000,218,000,254,012,253,000,020,255 GAME_OVER_TXT: DB 253,000,011,254,021,000,232,226,238,230,000,240,247,230,243,000,254,021,253,000,011,255 CLEAR_10_SPACES: DB 253,000,010,255 WHERE_TO_PLACE_MESSAGE: DW 0002H, 0015H, 02D0H, 00ABH, 006BH, 012BH, 0021H, 02C1H, 0168H, 0168H, 0166H, 0166H, 014AH, 006BH OXYGEN_BAR_CONTROL: LD A, (OXYGEN_YEL_LVL_RAM) DEC A AND 0F8H RRCA RRCA RRCA LD E, A LD D, 0 LD HL, 55H LD A, (OXYGEN_RED_LVL_RAM) BIT 1, A JR Z, LOC_AEA6 LD HL, 5DH LOC_AEA6: AND A SBC HL, DE EX DE, HL LD A, (OXYGEN_YEL_LVL_RAM) DEC A AND 7 LD C, A LD B, 0 LD HL, OXYGEN_YELLOW_TABLE LD A, (OXYGEN_RED_LVL_RAM) BIT 1, A JR Z, LOC_AEC0 LD HL, OXYGEN_RED_TABLE LOC_AEC0: ADD HL, BC LD IY, 1 LD A, 2 CALL PUT_VRAM RET OXYGEN_YELLOW_TABLE: DB 000,118,117,116,115,114,113,112 OXYGEN_RED_TABLE: DB 000,048,047,046,045,044,043,042 PLACE_HOLES: PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY CALL SUB_A8F3 LD IY, HOLE_RAM_LOCATION LD DE, 4 LOC_AEED: LD L, (IY+0) LD H, (IY+1) AND A PUSH IX POP BC SBC HL, BC JR NC, LOC_AEFF ADD IY, DE JR LOC_AEED LOC_AEFF: LD E, (IY+2) LD D, (IY+3) LD A, (IX+2) SUB 6 AND 0F8H RRCA RRCA RRCA LD L, A LD H, 0 ADD HL, DE EX DE, HL LD A, (IX+2) AND 0CH RRCA RRCA ADD A, A ADD A, A ADD A, (IX+1) LD B, A ADD A, A ADD A, B LD C, A LD B, 0 LD IX, PLAYFIELD_PATTERN_LOCATION ADD IX, BC LD C, (IX+0) PUSH BC POP IY LD L, (IX+1) LD H, (IX+2) LD A, 2 CALL PUT_VRAM CALL SUB_813F POP IY POP IX POP HL POP DE POP BC POP AF RET HOLE_RAM_LOCATION: DW FLOOR_DIG_01_RAM DW 0240H DW FLOOR_DIG_02_RAM DW 01C0H DW FLOOR_DIG_03_RAM DW 0140H DW FLOOR_DIG_04_RAM DW 00C0H PLAYFIELD_PATTERN_LOCATION:DB 2 DW BRICK_FILL_SMALL_01 DB 2 DW HOLE_TOP_SMALL_01 DB 2 DW HOLE_MID_SMALL_01 DB 2 DW HOLE_COMP_SMALL_01 DB 3 DW BRICK_FILL_LARGE_01 DB 3 DW HOLE_TOP_LARGE_01 DB 3 DW HOLE_MID_LARGE_01 DB 3 DW HOLE_COMP_LARGE_01 DB 2 DW BRICK_FILL_SMALL_02 DB 2 DW HOLE_TOP_SMALL_02 DB 2 DW HOLE_MID_SMALL_02 DB 2 DW HOLE_COMP_SMALL_02 DB 3 DW BRICK_FILL_LARGE_02 DB 3 DW HOLE_TOP_LARGE_02 DB 3 DW HOLE_MID_LARGE_02 DB 3 DW HOLE_COMP_LARGE_02 BRICK_FILL_SMALL_01: DB 20H, 21H HOLE_TOP_SMALL_01: DB 5FH, 60H HOLE_MID_SMALL_01: DB 61H, 62H HOLE_COMP_SMALL_01: DB 55H, 56H BRICK_FILL_LARGE_01: DB 20H, 21H, 20H HOLE_TOP_LARGE_01: DB 48H, 49H, 4AH HOLE_MID_LARGE_01: DB 4BH, 4CH, 4DH HOLE_COMP_LARGE_01: DB 4EH, 4FH, 50H BRICK_FILL_SMALL_02: DB 21H, 20H HOLE_TOP_SMALL_02: DB 51H, 52H HOLE_MID_SMALL_02: DB 53H, 54H HOLE_COMP_SMALL_02: DB 55H, 56H BRICK_FILL_LARGE_02: DB 21H, 20H, 21H HOLE_TOP_LARGE_02: DB 57H, 58H, 59H HOLE_MID_LARGE_02: DB 5AH, 5BH, 5CH HOLE_COMP_LARGE_02: DB 5DH, 4FH, 5EH SUB_AFB1: PUSH BC PUSH DE PUSH IX PUSH IY PUSH HL LD IX, $7121 LD IY, LIVES_P1_RAM LD A, ($7120) BIT 0, A JR Z, LOC_AFCF LD IX, $7122 LD IY, LIVES_P2_RAM LOC_AFCF: LD DE, 1F4H AND A SBC HL, DE JR C, LOC_B025 BIT 0, (IX+0) JR NZ, LOC_AFFA LD A, ($7120) BIT 0, A XOR A JR Z, LOC_AFE6 INC A LOC_AFE6: PUSH IX PUSH IY CALL SUB_A6C1 POP IY POP IX SET 0, (IX+0) INC (IY+0) JR LOC_B025 LOC_AFFA: POP HL PUSH HL LD DE, 1964H AND A SBC HL, DE JR C, LOC_B025 BIT 1, (IX+0) JR NZ, LOC_B025 LD A, ($7120) BIT 0, A XOR A JR Z, LOC_B013 INC A LOC_B013: PUSH IX PUSH IY CALL SUB_A6C1 POP IY POP IX SET 1, (IX+0) INC (IY+0) LOC_B025: POP HL LD IY, $713D LD B, 1 LD A, ($7120) BIT 0, A JR Z, LOC_B039 LD IY, $713F LD B, 2 LOC_B039: LD (IY+0), L LD (IY+1), H LD A, B CALL SUB_A76D POP IY POP IX POP DE POP BC RET SUB_B04A: LD A, (SPCE_MAN_SPRT_NUM_RAM) DEC A LD C, A LD A, ($714D) AND A JR Z, LOC_B059 LD A, C ADD A, 14H LD C, A LOC_B059: LD A, (OXYGEN_RED_LVL_RAM) BIT 1, A JR Z, LOC_B064 LD A, C ADD A, 28H LD C, A LOC_B064: LD A, C ADD A, A LD C, A LD B, 0 LD IX, SPACE_MAN_ANIMATION_TABLE ADD IX, BC LD L, (IX+0) LD H, (IX+1) LD IY, BYTE_B2EA LOC_B079: LD A, (HL) INC HL AND A JR Z, LOC_B094 LD E, (IY+0) LD D, 0 PUSH HL PUSH IX PUSH IY CALL SUB_822C POP IY POP IX POP HL INC IY JR LOC_B079 LOC_B094: LD A, (HL) LD (SPACE_MAN_HORIZ_01), A LD H, 0 LD A, ($7150) SUB 10H LD L, A LD (SPACE_MAN_HORIZ_02), HL LD A, ($714F) SUB 20H LD L, A LD (SPACE_MAN_VERTICAL_02), HL LD IX, OFF_B7EB CALL PUTOBJ RET SPACE_MAN_ANIMATION_TABLE: DW BYTE_B154 DW BYTE_B159 DW BYTE_B15E DW BYTE_B163 DW BYTE_B168 DW BYTE_B16D DW BYTE_B172 DW BYTE_B178 DW BYTE_B17E DW BYTE_B183 DW BYTE_B188 DW BYTE_B18D DW BYTE_B192 DW BYTE_B197 DW BYTE_B19C DW BYTE_B1A1 DW BYTE_B1A6 DW BYTE_B1AA DW BYTE_B1AF DW BYTE_B1B4 DW BYTE_B1B9 DW BYTE_B1BE DW BYTE_B1C3 DW BYTE_B1C8 DW BYTE_B1CD DW BYTE_B1D2 DW BYTE_B1D7 DW BYTE_B1DD DW BYTE_B1E3 DW BYTE_B1E8 DW BYTE_B1ED DW BYTE_B1F2 DW BYTE_B1F7 DW BYTE_B1FC DW BYTE_B201 DW BYTE_B206 DW BYTE_B20B DW BYTE_B210 DW BYTE_B215 DW BYTE_B21A DW BYTE_B21F DW BYTE_B224 DW BYTE_B229 DW BYTE_B22E DW BYTE_B233 DW BYTE_B238 DW BYTE_B23D DW BYTE_B243 DW BYTE_B249 DW BYTE_B24E DW BYTE_B253 DW BYTE_B258 DW BYTE_B25D DW BYTE_B262 DW BYTE_B267 DW BYTE_B26C DW BYTE_B271 DW BYTE_B275 DW BYTE_B27A DW BYTE_B27F DW BYTE_B284 DW BYTE_B289 DW BYTE_B28E DW BYTE_B293 DW BYTE_B298 DW BYTE_B29D DW BYTE_B2A2 DW BYTE_B2A8 DW BYTE_B2AE DW BYTE_B2B3 DW BYTE_B2B8 DW BYTE_B2BD DW BYTE_B2C2 DW BYTE_B2C7 DW BYTE_B2CC DW BYTE_B2D1 DW BYTE_B2D6 DW BYTE_B2DB DW BYTE_B2E0 DW BYTE_B2E5 BYTE_B154: DB 05H, 07H, 04H, 00H, 00H BYTE_B159: DB 05H, 0BH, 04H, 00H, 00H BYTE_B15E: DB 05H, 09H, 04H, 00H, 00H BYTE_B163: DB 05H, 0CH, 22H, 00H, 00H BYTE_B168: DB 05H, 0DH, 22H, 00H, 00H BYTE_B16D: DB 05H, 21H, 04H, 00H, 00H BYTE_B172: DB 05H, 13H, 04H, 14H, 00H, 04H BYTE_B178: DB 05H, 0EH, 04H, 10H, 00H, 02H BYTE_B17E: DB 05H, 02H, 04H, 00H, 00H BYTE_B183: DB 05H, 02H, 04H, 00H, 0AH BYTE_B188: DB 05H, 02H, 04H, 00H, 0BH BYTE_B18D: DB 05H, 02H, 04H, 00H, 0CH BYTE_B192: DB 05H, 02H, 04H, 00H, 0DH BYTE_B197: DB 05H, 16H, 04H, 00H, 15H BYTE_B19C: DB 05H, 02H, 04H, 00H, 0DH BYTE_B1A1: DB 05H, 18H, 04H, 00H, 16H BYTE_B1A6: DB 1BH, 1AH, 00H, 0EH BYTE_B1AA: DB 05H, 1EH, 1CH, 00H, 0FH BYTE_B1AF: DB 05H, 1EH, 1CH, 00H, 11H BYTE_B1B4: DB 05H, 1EH, 1CH, 00H, 13H BYTE_B1B9: DB 05H, 06H, 03H, 00H, 00H BYTE_B1BE: DB 05H, 0AH, 03H, 00H, 00H BYTE_B1C3: DB 05H, 08H, 03H, 00H, 00H BYTE_B1C8: DB 05H, 0CH, 22H, 00H, 00H BYTE_B1CD: DB 05H, 0DH, 22H, 00H, 00H BYTE_B1D2: DB 05H, 20H, 03H, 00H, 00H BYTE_B1D7: DB 05H, 12H, 03H, 15H, 00H, 08H BYTE_B1DD: DB 05H, 0FH, 03H, 11H, 00H, 06H BYTE_B1E3: DB 05H, 01H, 03H, 00H, 00H BYTE_B1E8: DB 05H, 01H, 03H, 00H, 0AH BYTE_B1ED: DB 05H, 01H, 03H, 00H, 0BH BYTE_B1F2: DB 05H, 01H, 03H, 00H, 0CH BYTE_B1F7: DB 05H, 01H, 03H, 00H, 0DH BYTE_B1FC: DB 05H, 16H, 03H, 00H, 15H BYTE_B201: DB 05H, 01H, 03H, 00H, 0DH BYTE_B206: DB 05H, 18H, 03H, 00H, 16H BYTE_B20B: DB 1BH, 1AH, 03H, 00H, 0EH BYTE_B210: DB 05H, 1EH, 1CH, 00H, 0FH BYTE_B215: DB 05H, 1EH, 1CH, 00H, 11H BYTE_B21A: DB 05H, 1EH, 1CH, 00H, 13H BYTE_B21F: DB 05H, 07H, 04H, 00H, 01H BYTE_B224: DB 05H, 0BH, 04H, 00H, 01H BYTE_B229: DB 05H, 09H, 04H, 00H, 01H BYTE_B22E: DB 05H, 0CH, 22H, 00H, 01H BYTE_B233: DB 05H, 0DH, 22H, 00H, 01H BYTE_B238: DB 05H, 21H, 04H, 00H, 01H BYTE_B23D: DB 05H, 13H, 04H, 14H, 00H, 05H BYTE_B243: DB 05H, 0EH, 04H, 10H, 00H, 03H BYTE_B249: DB 05H, 02H, 04H, 00H, 01H BYTE_B24E: DB 05H, 02H, 04H, 00H, 0AH BYTE_B253: DB 05H, 02H, 04H, 00H, 0BH BYTE_B258: DB 05H, 02H, 04H, 00H, 0CH BYTE_B25D: DB 05H, 02H, 04H, 00H, 0DH BYTE_B262: DB 05H, 16H, 04H, 00H, 15H BYTE_B267: DB 05H, 02H, 04H, 00H, 0DH BYTE_B26C: DB 05H, 18H, 04H, 00H, 16H BYTE_B271: DB 1BH, 1AH, 00H, 0EH BYTE_B275: DB 05H, 1EH, 1CH, 00H, 10H BYTE_B27A: DB 05H, 1EH, 1CH, 00H, 12H BYTE_B27F: DB 05H, 1EH, 1CH, 00H, 14H BYTE_B284: DB 05H, 06H, 03H, 00H, 01H BYTE_B289: DB 05H, 0AH, 03H, 00H, 01H BYTE_B28E: DB 05H, 08H, 03H, 00H, 01H BYTE_B293: DB 05H, 0CH, 22H, 00H, 01H BYTE_B298: DB 05H, 0DH, 22H, 00H, 01H BYTE_B29D: DB 05H, 20H, 03H, 00H, 01H BYTE_B2A2: DB 05H, 12H, 03H, 15H, 00H, 09H BYTE_B2A8: DB 05H, 0FH, 03H, 11H, 00H, 07H BYTE_B2AE: DB 05H, 01H, 03H, 00H, 01H BYTE_B2B3: DB 05H, 01H, 03H, 00H, 0AH BYTE_B2B8: DB 05H, 01H, 03H, 00H, 0BH BYTE_B2BD: DB 05H, 01H, 03H, 00H, 0CH BYTE_B2C2: DB 05H, 01H, 03H, 00H, 0DH BYTE_B2C7: DB 05H, 16H, 03H, 00H, 15H BYTE_B2CC: DB 05H, 01H, 03H, 00H, 0DH BYTE_B2D1: DB 05H, 18H, 03H, 00H, 16H BYTE_B2D6: DB 1BH, 1AH, 03H, 00H, 0EH BYTE_B2DB: DB 05H, 1EH, 1CH, 00H, 10H BYTE_B2E0: DB 05H, 1EH, 1CH, 00H, 12H BYTE_B2E5: DB 05H, 1EH, 1CH, 00H, 14H BYTE_B2EA: DB 0D8H,0E0H,0DCH,0E4H HOLE_ANIMATION_TABLE:DW UNK_B33E DW UNK_B345 DW UNK_B34C DW UNK_B357 DW UNK_B362 DW UNK_B369 DW UNK_B370 DW UNK_B379 DW UNK_B388 DW UNK_B393 DW UNK_B39A DW UNK_B3A3 DW UNK_B3B0 DW UNK_B3BB DW UNK_B3C4 DW UNK_B3CB DW UNK_B3D4 DW UNK_B3E1 DW UNK_B3EC DW UNK_B3F5 DW UNK_B3FC DW UNK_B405 DW UNK_B414 DW UNK_B41F DW UNK_B42C DW UNK_B435 DW UNK_B43E DW UNK_B449 DW UNK_B450 DW UNK_B45B DW UNK_B464 DW UNK_B46B DW UNK_B478 DW UNK_B485 DW UNK_B490 DW UNK_B497 DW UNK_B49E DW UNK_B4A9 DW UNK_B4B2 DW UNK_B4BB UNK_B33E: DB 3 DB 20H, 01H DB 70H, 01H DB 0E0H, 01H UNK_B345: DB 3 DB 20H, 03H DB 70H, 03H DB 0E0H, 02H UNK_B34C: DB 5 DB 20H, 02H DB 40H, 01H DB 70H, 02H DB 90H, 01H DB 0E0H, 01H UNK_B357: DB 5 DB 20H, 01H DB 40H, 02H DB 78H, 01H DB 90H, 02H DB 0E0H, 03H UNK_B362: DB 3 DB 20H, 02H DB 78H, 02H DB 0E0H, 02H UNK_B369: DB 3 DB 20H, 01H DB 98H, 01H DB 0E0H, 01H UNK_B370: DB 4 DB 20H, 02H DB 40H, 01H DB 98H, 03H DB 0E0H, 03H UNK_B379: DB 7 DB 20H, 01H DB 40H, 02H DB 58H, 01H DB 78H, 01H DB 98H, 02H DB 0B0H, 01H DB 0E0H, 02H UNK_B388: DB 5 DB 20H, 03H DB 58H, 02H DB 78H, 03H DB 0B0H, 02H DB 0C8H, 01H UNK_B393: DB 3 DB 20H, 02H DB 78H, 02H DB 0C8H, 02H UNK_B39A: DB 4 DB 20H, 01H DB 58H, 01H DB 98H, 01H DB 0C8H, 01H UNK_B3A3: DB 6 DB 20H, 02H DB 58H, 03H DB 98H, 02H DB 0B0H, 01H DB 0C8H, 02H DB 0E0H, 01H UNK_B3B0: DB 5 DB 40H, 01H DB 58H, 02H DB 78H, 01H DB 0B0H, 02H DB 0E0H, 03H UNK_B3BB: DB 4 DB 20H, 01H DB 40H, 02H DB 78H, 03H DB 0E0H, 03H UNK_B3C4: DB 3 DB 20H, 02H DB 78H, 02H DB 0E0H, 02H UNK_B3CB: DB 4 DB 20H, 01H DB 98H, 01H DB 0C8H, 01H DB 0E0H, 01H UNK_B3D4: DB 6 DB 20H, 02H DB 40H, 01H DB 68H, 01H DB 98H, 03H DB 0C8H, 02H DB 0E0H, 03H UNK_B3E1: DB 5 DB 40H, 03H DB 68H, 03H DB 98H, 02H DB 0C8H, 01H DB 0E0H, 02H UNK_B3EC: DB 4 DB 20H, 01H DB 40H, 02H DB 68H, 03H DB 0C8H, 03H UNK_B3F5: DB 3 DB 20H, 02H DB 68H, 02H DB 0C8H, 02H UNK_B3FC: DB 4 DB 20H, 01H DB 88H, 01H DB 0A8H, 01H DB 0E0H, 01H UNK_B405: DB 7 DB 20H, 02H DB 40H, 01H DB 60H, 01H DB 88H, 03H DB 0A8H, 03H DB 0C8H, 01H DB 0E0H, 02H UNK_B414: DB 5 DB 40H, 03H DB 60H, 02H DB 88H, 02H DB 0A8H, 03H DB 0C8H, 03H UNK_B41F: DB 6 DB 20H, 01H DB 40H, 02H DB 60H, 01H DB 0A8H, 02H DB 0C8H, 03H DB 0E0H, 01H UNK_B42C: DB 4 DB 20H, 02H DB 60H, 02H DB 0C8H, 02H DB 0E0H, 02H UNK_B435: DB 4 DB 20H, 01H DB 50H, 01H DB 0B8H, 01H DB 0E0H, 01H UNK_B43E: DB 5 DB 20H, 03H DB 50H, 02H DB 80H, 01H DB 0B8H, 02H DB 0E0H, 03H UNK_B449: DB 3 DB 20H, 03H DB 80H, 03H DB 0E0H, 03H UNK_B450: DB 5 DB 20H, 03H DB 50H, 01H DB 80H, 02H DB 0B8H, 01H DB 0E0H, 03H UNK_B45B: DB 4 DB 20H, 02H DB 50H, 02H DB 0B8H, 02H DB 0E0H, 02H UNK_B464: DB 3 DB 40H, 01H DB 0A0H, 01H DB 0E0H, 01H UNK_B46B: DB 6 DB 40H, 03H DB 60H, 01H DB 88H, 01H DB 0A0H, 02H DB 0C0H, 01H DB 0E0H, 03H UNK_B478: DB 6 DB 20H, 01H DB 40H, 02H DB 60H, 02H DB 88H, 03H DB 0C0H, 03H DB 0E0H, 02H UNK_B485: DB 5 DB 20H, 03H DB 60H, 01H DB 88H, 02H DB 0C0H, 02H DB 0E0H, 01H UNK_B490: DB 3 DB 20H, 02H DB 60H, 02H DB 0E0H, 02H UNK_B497: DB 3 DB 20H, 01H DB 70H, 01H DB 0C0H, 01H UNK_B49E: DB 5 DB 20H, 02H DB 48H, 01H DB 70H, 03H DB 98H, 01H DB 0C0H, 03H UNK_B4A9: DB 4 DB 48H, 02H DB 70H, 03H DB 98H, 02H DB 0C0H, 03H UNK_B4B2: DB 4 DB 20H, 01H DB 70H, 03H DB 98H, 01H DB 0C0H, 02H UNK_B4BB: DB 3 DB 20H, 02H DB 70H, 02H DB 98H, 02H OFF_B4C2: DW BYTE_B4EC DW BYTE_B4F5 DW BYTE_B502 DW BYTE_B513 DW BYTE_B51C DW BYTE_B529 DW BYTE_B53A DW BYTE_B543 DW BYTE_B550 DW BYTE_B55F DW BYTE_B570 DW BYTE_B581 DW BYTE_B592 DW BYTE_B5A3 DW BYTE_B5B4 DW BYTE_B5C5 DW BYTE_B5D6 DW BYTE_B5E7 DW BYTE_B5F8 DW BYTE_B609 DW BYTE_B61A BYTE_B4EC: DB 08H, 1EH DB 3 DB 01H, 96H DB 01H, 96H DB 01H, 96H BYTE_B4F5: DB 08H, 0AH DB 5 DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H, 96H BYTE_B502: DB 08H, 0CH DB 7 DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H,0B4H BYTE_B513: DB 08H, 0AH DB 3 DB 01H,0B4H DB 01H,0B4H DB 02H,0A0H BYTE_B51C: DB 08H, 0AH DB 5 DB 01H,0A5H DB 01H,0A5H DB 01H,0A5H DB 01H,0BEH DB 02H,0AAH BYTE_B529: DB 08H, 10H DB 7 DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H, 96H DB 01H,0B4H DB 01H,0BEH DB 02H, 96H BYTE_B53A: DB 07H, 0AH DB 3 DB 01H,0B4H DB 02H,0BEH DB 03H,0C3H BYTE_B543: DB 07H, 06H DB 5 DB 01H, 96H DB 01H,0B4H DB 01H,0B9H DB 02H,0B9H DB 03H,0BEH BYTE_B550: DB 07H, 08H DB 6 DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 02H,0B9H DB 03H,0BEH BYTE_B55F: DB 08H, 08H DB 7 DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 02H,0B9H DB 03H,0BEH BYTE_B570: DB 08H, 08H DB 7 DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH BYTE_B581: DB 08H, 08H DB 7 DB 01H,0B4H DB 01H,0B4H DB 01H,0B4H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH BYTE_B592: DB 08H, 08H DB 7 DB 01H,0B4H DB 01H,0B4H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH BYTE_B5A3: DB 08H, 08H DB 7 DB 01H,0B4H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH BYTE_B5B4: DB 8, 8 DB 7 DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH BYTE_B5C5: DB 08H, 08H DB 7 DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH DB 03H,0BEH BYTE_B5D6: DB 08H, 08H DB 7 DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH BYTE_B5E7: DB 08H, 08H DB 7 DB 02H,0B9H DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH BYTE_B5F8: DB 08H, 08H DB 7 DB 02H,0B9H DB 02H,0B9H DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH BYTE_B609: DB 08H, 08H DB 7 DB 02H,0B9H DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH BYTE_B61A: DB 08H, 08H DB 7 DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH DB 03H,0BEH OFF_B62B: DW BYTE_B65B DW BYTE_B667 DW BYTE_B679 DW BYTE_B68D DW BYTE_B699 DW BYTE_B6AB DW BYTE_B6C3 DW BYTE_B6CF DW BYTE_B6DF DW BYTE_B6F1 DW BYTE_B6FD DW BYTE_B70D DW BYTE_B71F DW BYTE_B72D DW BYTE_B743 DW BYTE_B757 DW BYTE_B767 DW BYTE_B77B DW BYTE_B787 DW BYTE_B793 DW BYTE_B7A7 DW BYTE_B7BF DW BYTE_B7CB DW BYTE_B7DB BYTE_B65B: DB 0BH, 14H DB 20H, 2CH DB 4CH, 6CH DB 78H, 84H DB 0ACH,0D4H DB 0E0H,0ECH BYTE_B667: DB 11H, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 5CH, 6CH DB 78H, 84H DB 90H, 9CH DB 0B8H,0D4H DB 0E0H,0ECH BYTE_B679: DB 13H, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 58H, 64H DB 70H, 7CH DB 80H, 84H DB 90H, 9CH DB 0B8H,0D4H DB 0E0H,0ECH BYTE_B68D: DB 0BH, 14H DB 20H, 2CH DB 4CH, 6CH DB 78H, 84H DB 0A0H,0BCH DB 0C8H,0D4H BYTE_B699: DB 11H, 14H DB 20H, 2CH DB 3CH, 4CH DB 58H, 64H DB 68H, 6CH DB 78H, 84H DB 94H,0A4H DB 0B0H,0BCH DB 0C8H,0D4H BYTE_B6AB: DB 17H, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 58H, 64H DB 68H, 6CH DB 78H, 84H DB 88H, 8CH DB 98H,0A4H DB 0B0H,0BCH DB 0C8H,0D4H DB 0E0H,0ECH BYTE_B6C3: DB 0BH, 14H DB 20H, 2CH DB 4CH, 6CH DB 78H, 84H DB 0ACH,0D4H DB 0E0H,0ECH BYTE_B6CF: DB 0FH, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 5CH, 6CH DB 78H, 84H DB 0ACH,0D4H DB 0E0H,0ECH BYTE_B6DF: DB 11H, 34H DB 40H, 4CH DB 58H, 64H DB 68H, 6CH DB 78H, 84H DB 94H,0A4H DB 0B0H,0BCH DB 0C8H,0D4H DB 0E0H,0ECH BYTE_B6F1: DB 0BH, 14H DB 20H, 2CH DB 44H, 5CH DB 68H, 74H DB 98H,0BCH DB 0C8H,0D4H BYTE_B6FD: DB 0FH, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 54H, 5CH DB 68H, 74H DB 98H,0BCH DB 0C8H,0D4H BYTE_B70D: DB 11H, 34H DB 40H, 4CH DB 54H, 5CH DB 68H, 74H DB 80H, 8CH DB 98H,0A4H DB 0B0H,0BCH DB 0C8H,0D4H DB 0E0H,0ECH BYTE_B71F: DB 0DH, 14H DB 20H, 2CH DB 40H, 54H DB 60H, 6CH DB 94H,0BCH DB 0C8H,0D4H DB 0E0H,0ECH BYTE_B72D: DB 15H, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 50H, 54H DB 60H, 6CH DB 84H, 9CH DB 0A8H,0B4H DB 0B8H,0BCH DB 0C8H,0D4H DB 0E0H,0ECH BYTE_B743: DB 13H, 34H DB 40H, 4CH DB 50H, 54H DB 60H, 6CH DB 74H, 7CH DB 88H, 94H DB 98H, 9CH DB 0A8H,0B4H DB 0B8H,0BCH DB 0C8H,0D4H BYTE_B757: DB 0FH, 14H DB 20H, 2CH DB 38H, 44H DB 50H, 5CH DB 84H,0ACH DB 0B8H,0C4H DB 0CCH,0D4H DB 0E0H,0ECH BYTE_B767: DB 13H, 14H DB 20H, 2CH DB 38H, 44H DB 50H, 5CH DB 68H, 74H DB 80H, 8CH DB 9CH,0ACH DB 0B8H,0C4H DB 0CCH,0D4H DB 0E0H,0ECH BYTE_B77B: DB 0BH, 14H DB 20H, 2CH DB 50H, 74H DB 80H, 8CH DB 0B0H,0D4H DB 0E0H,0ECH BYTE_B787: DB 0BH, 14H DB 20H, 2CH DB 40H, 54H DB 60H, 6CH DB 0A0H,0D4H DB 0E0H,0ECH BYTE_B793: DB 13H, 14H DB 20H, 2CH DB 40H, 54H DB 60H, 6CH DB 74H, 7CH DB 88H, 94H DB 0A4H,0B4H DB 0C0H,0CCH DB 0D0H,0D4H DB 0E0H,0ECH BYTE_B7A7: DB 17H, 14H DB 20H, 2CH DB 30H, 34H DB 40H, 4CH DB 50H, 54H DB 60H, 6CH DB 74H, 7CH DB 88H, 94H DB 0A4H,0B4H DB 0C0H,0CCH DB 0D0H,0D4H DB 0E0H,0ECH BYTE_B7BF: DB 0BH, 14H DB 20H, 2CH DB 48H, 64H DB 70H, 7CH DB 84H, 8CH DB 98H,0A4H BYTE_B7CB: DB 0FH, 14H DB 20H, 2CH DB 48H, 64H DB 70H, 7CH DB 84H, 8CH DB 98H,0A4H DB 0ACH,0B4H DB 0C0H,0CCH BYTE_B7DB: DB 0FH, 3CH DB 48H, 54H DB 5CH, 64H DB 70H, 7CH DB 84H, 8CH DB 98H,0A4H DB 0ACH,0B4H DB 0C0H,0CCH OFF_B7EB: DW UNK_B7F9 DW SPACE_MAN_HORIZ_01 DW OFF_B9B5 DW OFF_B9BA DW OFF_B9BF DW OFF_B9C4 DW OFF_B9C9 UNK_B7F9: DB 54H DW BYTE_B866 DW BYTE_B910 DW BYTE_B86B DW BYTE_B910 DW BYTE_B870 DW BYTE_B898 DW BYTE_B875 DW BYTE_B898 DW BYTE_B870 DW BYTE_B8A2 DW BYTE_B875 DW BYTE_B8A2 DW BYTE_B870 DW BYTE_B8AC DW BYTE_B875 DW BYTE_B8AC DW BYTE_B870 DW BYTE_B8B6 DW BYTE_B875 DW BYTE_B8B6 DW BYTE_B86B DW BYTE_B8C0 DW BYTE_B86B DW BYTE_B8CA DW BYTE_B86B DW BYTE_B8D4 DW BYTE_B86B DW BYTE_B8DE DW BYTE_B86B DW BYTE_B8E8 DW BYTE_B87A DW BYTE_B8F2 DW BYTE_B87F DW BYTE_B8F2 DW BYTE_B884 DW BYTE_B8F2 DW BYTE_B889 DW BYTE_B8F2 DW BYTE_B88E DW BYTE_B8F2 DW BYTE_B893 DW BYTE_B8F2 DW BYTE_B86B DW BYTE_B8FC DW BYTE_B86B DW BYTE_B906 DB 000,000,000,000,000,000,000,000 DB 000,000,000,000,000,000,000,000 BYTE_B866: DB 000,000,000,000,000 BYTE_B86B: DB 000,000,001,000,000 BYTE_B870: DB 000,000,000,001,000 BYTE_B875: DB 000,000,001,001,000 BYTE_B87A: DB 000,000,000,002,001 BYTE_B87F: DB 000,000,001,002,001 BYTE_B884: DB 000,000,000,003,002 BYTE_B889: DB 000,000,001,003,002 BYTE_B88E: DB 000,000,000,004,003 BYTE_B893: DB 000,000,001,004,003 BYTE_B898: DB 08H, 03H DB 08H, 13H DB 08H, 03H DB 09H, 1BH DB 00H, 20H BYTE_B8A2: DB 08H, 03H DB 08H, 13H DB 08H, 03H DB 09H, 04H DB 00H, 20H BYTE_B8AC: DB 08H, 03H DB 08H, 13H DB 08H, 03H DB 07H, 1BH DB 00H, 20H BYTE_B8B6: DB 08H, 03H DB 08H, 13H DB 08H, 03H DB 07H, 04H DB 00H, 20H BYTE_B8C0: DB 08H, 00H DB 08H, 10H DB 08H, 01H DB 00H, 20H DB 00H, 20H BYTE_B8CA: DB 08H, 00H DB 08H, 10H DB 08H, 02H DB 00H, 20H DB 00H, 20H BYTE_B8D4: DB 08H, 00H DB 08H, 10H DB 08H, 03H DB 00H, 20H DB 00H, 20H BYTE_B8DE: DB 08H, 00H DB 08H, 10H DB 08H, 04H DB 00H, 20H DB 00H, 20H BYTE_B8E8: DB 16H, 10H DB 08H, 10H DB 0AH, 0DH DB 00H, 20H DB 00H, 20H BYTE_B8F2: DB 08H, 02H DB 08H, 12H DB 08H, 02H DB 00H, 0DH DB 00H, 0DH BYTE_B8FC: DB 04H, 00H DB 08H, 10H DB 04H, 04H DB 00H, 20H DB 00H, 20H BYTE_B906: DB 0CH, 00H DB 08H, 10H DB 0CH, 04H DB 00H, 20H DB 00H, 20H BYTE_B910: DB 08H, 00H DB 08H, 10H DB 08H, 00H DB 00H, 20H DB 00H, 20H RED_BUG_OBJECT: DW UNK_B952 DW $72D0 DW OFF_B9CE DW OFF_B9D3 GREEN_BUG_OBJECT: DW UNK_B952 DW $72D5 DW OFF_B9D8 DW OFF_B9DD BLUE_BUG_OBJECT: DW UNK_B952 DW $72DA DW OFF_B9E2 DW OFF_B9E7 OFF_B932: DW UNK_B952 DW $72DF DW OFF_B9EC DW OFF_B9F1 OFF_B93A: DW UNK_B952 DW $72E4 DW OFF_B9F6 DW OFF_B9FB OFF_B942: DW UNK_B952 DW $72E9 DW OFF_BA00 DW OFF_BA05 OFF_B94A: DW UNK_B952 DW $72EE DW OFF_BA0A DW SPRITE_ANIM_TABLE UNK_B952: DB 24H DW BYTE_B987 DW BYTE_B9B1 DW BYTE_B989 DW BYTE_B9A1 DW BYTE_B98B DW BYTE_B9A1 DW BYTE_B98D DW BYTE_B9A5 DW BYTE_B98F DW BYTE_B9A1 DW BYTE_B991 DW BYTE_B9A9 DW BYTE_B993 DW BYTE_B9A9 DW BYTE_B995 DW BYTE_B9AD DW BYTE_B997 DW BYTE_B9A9 DW BYTE_B999 DW BYTE_B9A9 DW BYTE_B99B DW BYTE_B9A9 DW BYTE_B99D DW BYTE_B9AD DW BYTE_B99F DW BYTE_B9A9 BYTE_B987: DB 0BH, 09H BYTE_B989: DB 00H, 00H BYTE_B98B: DB 01H, 01H BYTE_B98D: DB 02H, 00H BYTE_B98F: DB 00H, 00H BYTE_B991: DB 03H, 02H BYTE_B993: DB 04H, 03H BYTE_B995: DB 05H, 04H BYTE_B997: DB 06H, 04H BYTE_B999: DB 07H, 05H BYTE_B99B: DB 08H, 06H BYTE_B99D: DB 09H, 07H BYTE_B99F: DB 0AH, 8 BYTE_B9A1: DB 00H, 00H DB 00H, 10H BYTE_B9A5: DB 00H, 01H DB 00H, 11H BYTE_B9A9: DB 00H, 05H DB 00H, 15H BYTE_B9AD: DB 00H, 06H DB 00H, 16H BYTE_B9B1: DB 00H, 00H DB 00H, 00H OFF_B9B5: DW SPACE_MAN_HELMET_SPR_TABLE DW 7259H DB 2 OFF_B9BA: DW SPACE_MAN_BODY_SPR_TABLE DW 725FH DB 0 OFF_B9BF: DW SPACE_MAN_HEAD_SPR_TABLE DW 7265H DB 1 OFF_B9C4: DW SHOVEL_USE_SPR_TABLE DW 726BH DB 3 OFF_B9C9: DW BUG_GRAB_SPR_TABLE DW 7271H DB 4 OFF_B9CE: DW BUG_TOPS_SPR_TABLE DW 7277H DB 5 OFF_B9D3: DW BUG_BOTTOMS_SPR_TABLE DW 727DH DB 6 OFF_B9D8: DW BUG_TOPS_SPR_TABLE DW 7283H DB 7 OFF_B9DD: DW BUG_BOTTOMS_SPR_TABLE DW 7289H DB 8 OFF_B9E2: DW BUG_TOPS_SPR_TABLE DB 8FH DB 72H DB 9 OFF_B9E7: DW BUG_BOTTOMS_SPR_TABLE DW 7295H DB 0AH OFF_B9EC: DW BUG_TOPS_SPR_TABLE DW 729BH DB 0BH OFF_B9F1: DW BUG_BOTTOMS_SPR_TABLE DW 72A1H DB 0CH OFF_B9F6: DW BUG_TOPS_SPR_TABLE DW 72A7H DB 0DH OFF_B9FB: DW BUG_BOTTOMS_SPR_TABLE DW 72ADH DB 0EH OFF_BA00: DW BUG_TOPS_SPR_TABLE DW 72B3H DB 0FH OFF_BA05: DW BUG_BOTTOMS_SPR_TABLE DW 72B9H DB 10H OFF_BA0A: DW BUG_TOPS_SPR_TABLE DW 72BFH DB 11H SPRITE_ANIM_TABLE: DW BUG_BOTTOMS_SPR_TABLE DW $72C5 DB 12H SPACE_MAN_HELMET_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW SPACE_MAN_HELMET SPACE_MAN_BODY_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW SPACE_MAN_BODY SPACE_MAN_HEAD_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW SPACE_MAN_HEAD SHOVEL_USE_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW SHOVEL_USE BUG_GRAB_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW BUG_GRAB BUG_TOPS_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW BUG_TOPS BUG_BOTTOMS_SPR_TABLE: DB 03H, 00H, 00H, 00H, 00H DW BUG_BOTTOMS SPACE_MAN_HELMET: DB 05H,0D8H SPACE_MAN_BODY: DB 04H,0E0H SPACE_MAN_HEAD: DB 0FH,0DCH DB 0DH,0DCH SHOVEL_USE: DB 00H, 00H DB 0BH,0E4H DB 0CH, 54H DB 0CH, 5CH DB 05H, 64H BUG_GRAB: DB 00H, 00H DB 06H, 58H DB 06H, 60H DB 04H, 68H BUG_TOPS: DB 0CH, 00H DB 0CH, 08H DB 0CH, 10H DB 0CH, 24H DB 0CH, 2CH DB 0CH, 1CH DB 0CH, 14H DB 05H, 34H DB 05H, 3CH DB 05H, 44H DB 05H, 4CH DB 00H, 00H BUG_BOTTOMS: DB 06H, 04H DB 06H, 0CH DB 06H, 28H DB 06H, 30H DB 06H, 18H DB 04H, 38H DB 04H, 40H DB 04H, 48H DB 04H, 50H DB 00H, 00H LOC_BB00: CP D JP Z, LOC_A69D SUB 4 CP D JP NZ, LOC_A6AF JP LOC_A69D PADD: DS $56E,$FF ; UNCOMMENT TO PADD $FF TO 16K FOR ADE