From 670a6fef7b1767ae2a0ceed3881eade1278fbac4 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Fri, 2 Sep 2016 03:58:22 -0400 Subject: label all the map/bomb/etc data for all levels --- jumpmanjr.dasm | 355 +++++++++++++++++++++++++++++++++------------------------ jumpmanjr.info | 133 ++++++++++++++++----- leveldesc.info | 24 ++-- main.info | 109 +++++++++++++++--- mklevelinfo.pl | 16 +++ 5 files changed, 436 insertions(+), 201 deletions(-) diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index 48718e2..683790d 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-09-02 01:14:13 +; Created: 2016-09-02 03:47:10 ; Input file: jumpmanjr.rom ; Page: 1 @@ -4167,7 +4167,7 @@ cartoptions_right: cartinit_right: .addr cart_start_stub ; 9FFE FE 8A .. ; ---------------------------------------------------------------------------- -; 64-byte level descriptors, 12 of them (1 per level). first 2 bytes are level number in screencodes +; 64-byte level descriptors, 12 of them (1 per level). Descriptor for Nothing To It. first 2 bytes are level number in screencodes level01_desc: .byte $10,$11 ; A000 10 11 .. ; ---------------------------------------------------------------------------- @@ -4274,7 +4274,7 @@ level01_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level01_offs_60: .byte $00,$00,$00,$00 ; A03C 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Electrocution. first 2 bytes are level number in screencodes level02_desc: .byte $10,$12 ; A040 10 12 .. ; ---------------------------------------------------------------------------- @@ -4329,10 +4329,10 @@ level02_map: .addr l02_map ; A056 E0 A3 .. ; start of bombs in map data (which must come last!) level02_map_bombs: - .addr LA446 ; A058 46 A4 F. + .addr l02_map_bombs ; A058 46 A4 F. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level02_bomblist: - .addr LA477 ; A05A 77 A4 w. + .addr l02_bombs ; A05A 77 A4 w. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level02_map_changes: .addr L0000 ; A05C 00 00 .. @@ -4381,7 +4381,7 @@ level02_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level02_offs_60: .byte $00,$00,$00,$00 ; A07C 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Dumbwaiter. first 2 bytes are level number in screencodes level03_desc: .byte $10,$13 ; A080 10 13 .. ; ---------------------------------------------------------------------------- @@ -4430,16 +4430,16 @@ level03_offs_19: ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx level03_unkn_table0: - .addr LA66D ; A094 6D A6 m. + .addr l03_unkn ; A094 6D A6 m. ; used to draw the level initially (see also map_changes) level03_map: - .addr LA5F0 ; A096 F0 A5 .. + .addr l03_map ; A096 F0 A5 .. ; start of bombs in map data (which must come last!) level03_map_bombs: - .addr LA62F ; A098 2F A6 /. + .addr l03_map_bombs ; A098 2F A6 /. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level03_bomblist: - .addr LA654 ; A09A 54 A6 T. + .addr l03_bombs ; A09A 54 A6 T. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level03_map_changes: .addr L0000 ; A09C 00 00 .. @@ -4488,7 +4488,7 @@ level03_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level03_offs_60: .byte $00,$00,$00,$00 ; A0BC 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Hellstones. first 2 bytes are level number in screencodes level04_desc: .byte $10,$14 ; A0C0 10 14 .. ; ---------------------------------------------------------------------------- @@ -4540,13 +4540,13 @@ level04_unkn_table0: .addr L06DF ; A0D4 DF 06 .. ; used to draw the level initially (see also map_changes) level04_map: - .addr LA790 ; A0D6 90 A7 .. + .addr l04_map ; A0D6 90 A7 .. ; start of bombs in map data (which must come last!) level04_map_bombs: - .addr LA7D5 ; A0D8 D5 A7 .. + .addr l04_map_bombs ; A0D8 D5 A7 .. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level04_bomblist: - .addr LA806 ; A0DA 06 A8 .. + .addr l04_bombs ; A0DA 06 A8 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level04_map_changes: .addr L0000 ; A0DC 00 00 .. @@ -4595,7 +4595,7 @@ level04_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level04_offs_60: .byte $00,$00,$00,$00 ; A0FC 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Figurits Revenge. first 2 bytes are level number in screencodes level05_desc: .byte $10,$15 ; A100 10 15 .. ; ---------------------------------------------------------------------------- @@ -4647,16 +4647,16 @@ level05_unkn_table0: .addr L06DF ; A114 DF 06 .. ; used to draw the level initially (see also map_changes) level05_map: - .addr LAAD0 ; A116 D0 AA .. + .addr l05_map ; A116 D0 AA .. ; start of bombs in map data (which must come last!) level05_map_bombs: - .addr LAB42 ; A118 42 AB B. + .addr l05_map_bombs ; A118 42 AB B. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level05_bomblist: - .addr LAB6D ; A11A 6D AB m. + .addr l05_bombs ; A11A 6D AB m. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level05_map_changes: - .addr LAB8A ; A11C 8A AB .. + .addr l05_map_changes ; A11C 8A AB .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game level05_indirect_subs: @@ -4702,7 +4702,7 @@ level05_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level05_offs_60: .byte $00,$00,$00,$00 ; A13C 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Walls. first 2 bytes are level number in screencodes level06_desc: .byte $10,$16 ; A140 10 16 .. ; ---------------------------------------------------------------------------- @@ -4754,13 +4754,13 @@ level06_unkn_table0: .addr L06DF ; A154 DF 06 .. ; used to draw the level initially (see also map_changes) level06_map: - .addr LA920 ; A156 20 A9 . + .addr l06_map ; A156 20 A9 . ; start of bombs in map data (which must come last!) level06_map_bombs: - .addr LA974 ; A158 74 A9 t. + .addr l06_map_bombs ; A158 74 A9 t. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level06_bomblist: - .addr LA9A5 ; A15A A5 A9 .. + .addr l06_bombs ; A15A A5 A9 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level06_map_changes: .addr L0000 ; A15C 00 00 .. @@ -4809,7 +4809,7 @@ level06_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level06_offs_60: .byte $FF,$FF,$FF,$FF ; A17C FF FF FF FF .... -; first 2 bytes are level number in screencodes +; Descriptor for Zig-Zag. first 2 bytes are level number in screencodes level07_desc: .byte $10,$17 ; A180 10 17 .. ; ---------------------------------------------------------------------------- @@ -4861,16 +4861,16 @@ level07_unkn_table0: .addr L06DF ; A194 DF 06 .. ; used to draw the level initially (see also map_changes) level07_map: - .addr LAC60 ; A196 60 AC `. + .addr l07_map ; A196 60 AC `. ; start of bombs in map data (which must come last!) level07_map_bombs: - .addr LACBA ; A198 BA AC .. + .addr l07_map_bombs ; A198 BA AC .. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level07_bomblist: - .addr LACE5 ; A19A E5 AC .. + .addr l07_bombs ; A19A E5 AC .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level07_map_changes: - .addr LAD02 ; A19C 02 AD .. + .addr l07_map_changes ; A19C 02 AD .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game level07_indirect_subs: @@ -4916,7 +4916,7 @@ level07_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level07_offs_60: .byte $00,$00,$00,$00 ; A1BC 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Spellbound. first 2 bytes are level number in screencodes level08_desc: .byte $10,$18 ; A1C0 10 18 .. ; ---------------------------------------------------------------------------- @@ -4965,16 +4965,16 @@ level08_offs_19: ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx level08_unkn_table0: - .addr LAE8A ; A1D4 8A AE .. + .addr l08_unkn0 ; A1D4 8A AE .. ; used to draw the level initially (see also map_changes) level08_map: - .addr LADE0 ; A1D6 E0 AD .. + .addr l08_map ; A1D6 E0 AD .. ; start of bombs in map data (which must come last!) level08_map_bombs: - .addr LAE4C ; A1D8 4C AE L. + .addr l08_map_bombs ; A1D8 4C AE L. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level08_bomblist: - .addr LAE71 ; A1DA 71 AE q. + .addr l08_bombs ; A1DA 71 AE q. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level08_map_changes: .addr L0000 ; A1DC 00 00 .. @@ -4985,16 +4985,16 @@ level08_indirect_subs: ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine level08_sub_bomb: - .addr LAF23 ; A1E0 23 AF #. + .addr spellbound_bomb_sub ; A1E0 23 AF #. ; called at start of level, $06E6 for some levels, or else a ROM subroutine level08_sub_start: - .addr LAE9B ; A1E2 9B AE .. + .addr spellbound_init ; A1E2 9B AE .. ; always $9740 aka game_main_loop level08_sub6: .addr game_main_loop ; A1E4 40 97 @. ; called at end of level (all bombs picked up). $06E6 for all but level08 level08_sub_eol: - .addr level08_letters ; A1E6 58 AF X. + .addr spellbound_letters ; A1E6 58 AF X. ; ---------------------------------------------------------------------------- ; all zeroes level08_offs_40: @@ -5023,13 +5023,13 @@ level08_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level08_offs_60: .byte $00,$00,$00,$00 ; A1FC 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Blackout. first 2 bytes are level number in screencodes level09_desc: .byte $10,$19 ; A200 10 19 .. ; ---------------------------------------------------------------------------- ; a subroutine level09_sub0: - .addr LB140 ; A202 40 B1 @. + .addr blackout_sub0 ; A202 40 B1 @. ; a subroutine level09_sub1: .addr L0000 ; A204 00 00 .. @@ -5075,13 +5075,13 @@ level09_unkn_table0: .addr L06DF ; A214 DF 06 .. ; used to draw the level initially (see also map_changes) level09_map: - .addr LB0A2 ; A216 A2 B0 .. + .addr l09_map ; A216 A2 B0 .. ; start of bombs in map data (which must come last!) level09_map_bombs: - .addr LB072 ; A218 72 B0 r. + .addr l09_map_bombs ; A218 72 B0 r. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level09_bomblist: - .addr LB0A3 ; A21A A3 B0 .. + .addr l09_bombs ; A21A A3 B0 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level09_map_changes: .addr L0000 ; A21C 00 00 .. @@ -5092,10 +5092,10 @@ level09_indirect_subs: ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine level09_sub_bomb: - .addr LB121 ; A220 21 B1 !. + .addr blackout_bomb_sub ; A220 21 B1 !. ; called at start of level, $06E6 for some levels, or else a ROM subroutine level09_sub_start: - .addr LB0C4 ; A222 C4 B0 .. + .addr blackout_init ; A222 C4 B0 .. ; always $9740 aka game_main_loop level09_sub6: .addr game_main_loop ; A224 40 97 @. @@ -5130,13 +5130,13 @@ level09_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level09_offs_60: .byte $00,$00,$00,$00 ; A23C 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for HereThereEverywhere. first 2 bytes are level number in screencodes level10_desc: .byte $11,$10 ; A240 11 10 .. ; ---------------------------------------------------------------------------- ; a subroutine level10_sub0: - .addr LB27E ; A242 7E B2 ~. + .addr herethere_sub0 ; A242 7E B2 ~. ; a subroutine level10_sub1: .addr L0000 ; A244 00 00 .. @@ -5145,7 +5145,7 @@ level10_sub2: .addr L0000 ; A246 00 00 .. ; a subroutine level10_sub3: - .addr LB2E0 ; A248 E0 B2 .. + .addr herethere_sub3 ; A248 E0 B2 .. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level level10_num_bombs: @@ -5179,16 +5179,16 @@ level10_offs_19: ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx level10_unkn_table0: - .addr LB275 ; A254 75 B2 u. + .addr l10_unkn0 ; A254 75 B2 u. ; used to draw the level initially (see also map_changes) level10_map: - .addr LB1E0 ; A256 E0 B1 .. + .addr l10_map ; A256 E0 B1 .. ; start of bombs in map data (which must come last!) level10_map_bombs: - .addr LB237 ; A258 37 B2 7. + .addr l10_map_bombs ; A258 37 B2 7. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level10_bomblist: - .addr LB25C ; A25A 5C B2 \. + .addr l10_bombs ; A25A 5C B2 \. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level10_map_changes: .addr L0000 ; A25C 00 00 .. @@ -5199,7 +5199,7 @@ level10_indirect_subs: ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine level10_sub_bomb: - .addr LB2FD ; A260 FD B2 .. + .addr herethere_bomb_sub ; A260 FD B2 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine level10_sub_start: .addr L8036 ; A262 36 80 6. @@ -5237,22 +5237,22 @@ level10_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level10_offs_60: .byte $00,$00,$00,$00 ; A27C 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Hatchlings. first 2 bytes are level number in screencodes level11_desc: .byte $11,$11 ; A280 11 11 .. ; ---------------------------------------------------------------------------- ; a subroutine level11_sub0: - .addr LB457 ; A282 57 B4 W. + .addr hatch_sub0 ; A282 57 B4 W. ; a subroutine level11_sub1: - .addr LB581 ; A284 81 B5 .. + .addr hatch_sub1 ; A284 81 B5 .. ; a subroutine level11_sub2: .addr L0000 ; A286 00 00 .. ; a subroutine level11_sub3: - .addr LB57C ; A288 7C B5 |. + .addr hatch_sub3 ; A288 7C B5 |. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level level11_num_bombs: @@ -5286,19 +5286,19 @@ level11_offs_19: ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx level11_unkn_table0: - .addr data_table_b50b ; A294 0B B5 .. + .addr hatch_table_b50b ; A294 0B B5 .. ; used to draw the level initially (see also map_changes) level11_map: - .addr LB320 ; A296 20 B3 . + .addr l11_map ; A296 20 B3 . ; start of bombs in map data (which must come last!) level11_map_bombs: - .addr LB38F ; A298 8F B3 .. + .addr l11_map_bombs ; A298 8F B3 .. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level11_bomblist: - .addr LB3BD ; A29A BD B3 .. + .addr l11_bombs ; A29A BD B3 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level11_map_changes: - .addr LB3DC ; A29C DC B3 .. + .addr l11_map_changes ; A29C DC B3 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game level11_indirect_subs: @@ -5306,7 +5306,7 @@ level11_indirect_subs: ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine level11_sub_bomb: - .addr LB44C ; A2A0 4C B4 L. + .addr hatch_bomb_sub ; A2A0 4C B4 L. ; called at start of level, $06E6 for some levels, or else a ROM subroutine level11_sub_start: .addr L8036 ; A2A2 36 80 6. @@ -5344,19 +5344,19 @@ level11_offs_58: ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 level11_offs_60: .byte $00,$00,$00,$00 ; A2BC 00 00 00 00 .... -; first 2 bytes are level number in screencodes +; Descriptor for Hurricane. first 2 bytes are level number in screencodes level12_desc: .byte $11,$12 ; A2C0 11 12 .. ; ---------------------------------------------------------------------------- ; a subroutine level12_sub0: - .addr LB691 ; A2C2 91 B6 .. + .addr hurr_sub0 ; A2C2 91 B6 .. ; a subroutine level12_sub1: - .addr LB69B ; A2C4 9B B6 .. + .addr hurr_sub1 ; A2C4 9B B6 .. ; a subroutine level12_sub2: - .addr LB709 ; A2C6 09 B7 .. + .addr hurr_sub2 ; A2C6 09 B7 .. ; a subroutine level12_sub3: .addr check_collisions_1 ; A2C8 73 8F s. @@ -5393,19 +5393,19 @@ level12_offs_19: ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx level12_unkn_table0: - .addr LB658 ; A2D4 58 B6 X. + .addr l12_unkn0 ; A2D4 58 B6 X. ; used to draw the level initially (see also map_changes) level12_map: - .addr data_b590 ; A2D6 90 B5 .. + .addr l12_map ; A2D6 90 B5 .. ; start of bombs in map data (which must come last!) level12_map_bombs: - .addr LB5D2 ; A2D8 D2 B5 .. + .addr l12_map_bombs ; A2D8 D2 B5 .. ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level12_bomblist: - .addr LB5FD ; A2DA FD B5 .. + .addr l12_bombs ; A2DA FD B5 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level12_map_changes: - .addr LB61A ; A2DC 1A B6 .. + .addr l12_map_changes ; A2DC 1A B6 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game level12_indirect_subs: @@ -5519,17 +5519,20 @@ l02_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A3E0 FE 33 9C FD 04 00 04 05 .byte $05,$FE,$C9,$9C,$19,$3C,$05,$85 ; A430 05 FE C9 9C 19 3C 05 85 .....<.. .byte $3C,$05,$FE,$DA,$9C,$05,$30,$08 ; A438 3C 05 FE DA 9C 05 30 08 <.....0. .byte $99,$30,$08,$FE,$B3,$9C ; A440 99 30 08 FE B3 9C .0.... -LA446: .byte $04,$02,$01,$38,$02,$01,$64,$02 ; A446 04 02 01 38 02 01 64 02 ...8..d. +l02_map_bombs: + .byte $04,$02,$01,$38,$02,$01,$64,$02 ; A446 04 02 01 38 02 01 64 02 ...8..d. .byte $01,$98,$02,$01,$04,$12,$01,$38 ; A44E 01 98 02 01 04 12 01 38 .......8 .byte $12,$01,$64,$12,$01,$98,$12,$01 ; A456 12 01 64 12 01 98 12 01 ..d..... .byte $20,$22,$01,$7C,$22,$01,$38,$32 ; A45E 20 22 01 7C 22 01 38 32 ".|".82 .byte $01,$64,$32,$01,$04,$52,$01,$38 ; A466 01 64 32 01 04 52 01 38 .d2..R.8 .byte $52,$01,$64,$52,$01,$98,$52,$01 ; A46E 52 01 64 52 01 98 52 01 R.dR..R. .byte $FF ; A476 FF . -LA477: .byte $22,$00,$62,$00,$82,$00,$C2,$00 ; A477 22 00 62 00 82 00 C2 00 ".b..... +l02_bombs: + .byte $22,$00,$62,$00,$82,$00,$C2,$00 ; A477 22 00 62 00 82 00 C2 00 ".b..... .byte $24,$00,$64,$00,$84,$00,$C4,$00 ; A47F 24 00 64 00 84 00 C4 00 $.d..... .byte $46,$00,$A6,$00,$68,$00,$88,$00 ; A487 46 00 A6 00 68 00 88 00 F...h... .byte $2C,$00,$6C,$00,$8C,$00,$CC,$00 ; A48F 2C 00 6C 00 8C 00 CC 00 ,.l..... +l02_bombs_term: .byte $FF ; A497 FF . ; ---------------------------------------------------------------------------- ; not sure what this actually does @@ -5651,7 +5654,8 @@ LA5C2: .byte $03,$D3,$A5,$08,$00,$00,$01,$00 ; A5C2 03 D3 A5 08 00 00 01 00 .byte $00,$C3,$C3,$C3,$C3,$FF,$FF,$C3 ; A5DA 00 C3 C3 C3 C3 FF FF C3 ........ .byte $C3,$00,$00,$00,$00,$00,$00,$00 ; A5E2 C3 00 00 00 00 00 00 00 ........ .byte $00,$00,$00,$00,$00,$00 ; A5EA 00 00 00 00 00 00 ...... -LA5F0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A5F0 FE 33 9C FD 04 00 04 05 .3...... +; level map data starts here +l03_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A5F0 FE 33 9C FD 04 00 04 05 .3...... .byte $06,$84,$05,$06,$04,$15,$06,$84 ; A5F8 06 84 05 06 04 15 06 84 ........ .byte $15,$06,$04,$25,$0C,$6C,$25,$0C ; A600 15 06 04 25 0C 6C 25 0C ...%.l%. .byte $04,$35,$0C,$6C,$35,$0C,$04,$45 ; A608 04 35 0C 6C 35 0C 04 45 .5.l5..E @@ -5659,16 +5663,20 @@ LA5F0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A5F0 FE 33 9C FD 04 00 04 05 .byte $45,$04,$04,$55,$06,$84,$55,$06 ; A618 45 04 04 55 06 84 55 06 E..U..U. .byte $FE,$5F,$9C,$FD,$00,$04,$0C,$01 ; A620 FE 5F 9C FD 00 04 0C 01 ._...... .byte $05,$8C,$01,$05,$FE,$B3,$9C ; A628 05 8C 01 05 FE B3 9C ....... -LA62F: .byte $04,$02,$01,$04,$12,$01,$04,$22 ; A62F 04 02 01 04 12 01 04 22 ......." +l03_map_bombs: + .byte $04,$02,$01,$04,$12,$01,$04,$22 ; A62F 04 02 01 04 12 01 04 22 ......." .byte $01,$04,$32,$01,$04,$42,$01,$04 ; A637 01 04 32 01 04 42 01 04 ..2..B.. .byte $52,$01,$98,$02,$01,$98,$12,$01 ; A63F 52 01 98 02 01 98 12 01 R....... .byte $98,$22,$01,$98,$32,$01,$98,$42 ; A647 98 22 01 98 32 01 98 42 ."..2..B .byte $01,$98,$52,$01,$FF ; A64F 01 98 52 01 FF ..R.. -LA654: .byte $22,$00,$24,$00,$26,$00,$28,$00 ; A654 22 00 24 00 26 00 28 00 ".$.&.(. +l03_bombs: + .byte $22,$00,$24,$00,$26,$00,$28,$00 ; A654 22 00 24 00 26 00 28 00 ".$.&.(. .byte $2A,$00,$2C,$00,$C2,$00,$C4,$00 ; A65C 2A 00 2C 00 C2 00 C4 00 *.,..... .byte $C6,$00,$C8,$00,$CA,$00,$CC,$00 ; A664 C6 00 C8 00 CA 00 CC 00 ........ +l03_bombs_term: .byte $FF ; A66C FF . -LA66D: .byte $00,$00,$00,$01,$7A,$01,$01,$66 ; A66D 00 00 00 01 7A 01 01 66 ....z..f +l03_unkn: + .byte $00,$00,$00,$01,$7A,$01,$01,$66 ; A66D 00 00 00 01 7A 01 01 66 ....z..f .byte $03,$86,$A6,$06,$4C,$4A,$01,$66 ; A675 03 86 A6 06 4C 4A 01 66 ....LJ.f .byte $04,$86,$A6,$06,$A4,$CA,$01,$66 ; A67D 04 86 A6 06 A4 CA 01 66 .......f ; horizontally moving platforms from level03 @@ -5798,11 +5806,12 @@ LA779: lda player_y_pos ; A779 AD 83 06 LA781: rts ; A781 60 ` ; ---------------------------------------------------------------------------- -; the dumbwaiters from level03. stored upside-down. +; the dumbwaiters from level03. stored upside-down. trailing 00's might just be filler. dumbwaiter_player: .byte $18,$3C,$7E,$FF,$FF,$FF,$00,$00 ; A782 18 3C 7E FF FF FF 00 00 .<~..... .byte $00,$00,$00,$00,$00,$00 ; A78A 00 00 00 00 00 00 ...... -LA790: .byte $FE,$33,$9C,$FD,$04,$00,$40,$05 ; A790 FE 33 9C FD 04 00 40 05 .3....@. +; level map data starts here +l04_map:.byte $FE,$33,$9C,$FD,$04,$00,$40,$05 ; A790 FE 33 9C FD 04 00 40 05 .3....@. .byte $08,$18,$15,$0A,$04,$25,$14,$18 ; A798 08 18 15 0A 04 25 14 18 .....%.. .byte $35,$0A,$2C,$45,$0A,$04,$55,$0F ; A7A0 35 0A 2C 45 0A 04 55 0F 5.,E..U. .byte $60,$55,$0F,$4C,$15,$0F,$60,$25 ; A7A8 60 55 0F 4C 15 0F 60 25 `U.L..`% @@ -5811,17 +5820,20 @@ LA790: .byte $FE,$33,$9C,$FD,$04,$00,$40,$05 ; A790 FE 33 9C FD 04 00 40 05 .byte $4C,$21,$05,$4C,$41,$05,$18,$11 ; A7C0 4C 21 05 4C 41 05 18 11 L!.LA... .byte $05,$80,$11,$05,$2C,$31,$05,$6C ; A7C8 05 80 11 05 2C 31 05 6C ....,1.l .byte $31,$05,$FE,$B3,$9C ; A7D0 31 05 FE B3 9C 1.... -LA7D5: .byte $40,$02,$01,$5C,$02,$01,$24,$12 ; A7D5 40 02 01 5C 02 01 24 12 @..\..$. +l04_map_bombs: + .byte $40,$02,$01,$5C,$02,$01,$24,$12 ; A7D5 40 02 01 5C 02 01 24 12 @..\..$. .byte $01,$3C,$12,$01,$60,$12,$01,$78 ; A7DD 01 3C 12 01 60 12 01 78 .<..`..x .byte $12,$01,$04,$22,$01,$3C,$22,$01 ; A7E5 12 01 04 22 01 3C 22 01 ...".<". .byte $60,$22,$01,$98,$22,$01,$18,$32 ; A7ED 60 22 01 98 22 01 18 32 `".."..2 .byte $01,$84,$32,$01,$3C,$42,$01,$60 ; A7F5 01 84 32 01 3C 42 01 60 ..2.. .byte $48,$AD,$58,$AD,$FE,$49,$9C,$FD ; AD12 48 AD 58 AD FE 49 9C FD H.X..I.. .byte $04,$FF,$24,$0B,$06,$FF,$FE,$49 ; AD1A 04 FF 24 0B 06 FF FE 49 ..$....I @@ -6246,7 +6272,7 @@ data_table_adc7: .byte $00,$FF,$FE,$FD,$FC,$FD,$FE,$FF ; ADCF 00 FF FE FD FC FD FE FF ........ .byte $00,$00,$00,$00,$00,$00,$00,$00 ; ADD7 00 00 00 00 00 00 00 00 ........ .byte $00 ; ADDF 00 . -LADE0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; ADE0 FE 33 9C FD 04 00 04 05 .3...... +l08_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; ADE0 FE 33 9C FD 04 00 04 05 .3...... .byte $02,$44,$05,$06,$94,$05,$02,$30 ; ADE8 02 44 05 06 94 05 02 30 .D.....0 .byte $0A,$02,$68,$0A,$02,$28,$21,$04 ; ADF0 0A 02 68 0A 02 28 21 04 ..h..(!. .byte $68,$21,$04,$04,$25,$06,$84,$25 ; ADF8 68 21 04 04 25 06 84 25 h!..%..% @@ -6260,20 +6286,25 @@ LADE0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; ADE0 FE 33 9C FD 04 00 04 05 .byte $C9,$9C,$34,$0C,$04,$6B,$0C,$04 ; AE38 C9 9C 34 0C 04 6B 0C 04 ..4..k.. .byte $FE,$DA,$9C,$44,$02,$10,$5A,$02 ; AE40 FE DA 9C 44 02 10 5A 02 ...D..Z. .byte $10,$FE,$B3,$9C ; AE48 10 FE B3 9C .... -LAE4C: .byte $04,$02,$01,$98,$02,$01,$04,$22 ; AE4C 04 02 01 98 02 01 04 22 ......." +l08_map_bombs: + .byte $04,$02,$01,$98,$02,$01,$04,$22 ; AE4C 04 02 01 98 02 01 04 22 ......." .byte $01,$98,$22,$01,$18,$34,$01,$84 ; AE54 01 98 22 01 18 34 01 84 .."..4.. .byte $34,$01,$04,$42,$01,$98,$42,$01 ; AE5C 34 01 04 42 01 98 42 01 4..B..B. .byte $04,$52,$01,$38,$52,$01,$64,$52 ; AE64 04 52 01 38 52 01 64 52 .R.8R.dR .byte $01,$98,$52,$01,$FF ; AE6C 01 98 52 01 FF ..R.. -LAE71: .byte $22,$00,$C2,$00,$26,$00,$C6,$00 ; AE71 22 00 C2 00 26 00 C6 00 "...&... +l08_bombs: + .byte $22,$00,$C2,$00,$26,$00,$C6,$00 ; AE71 22 00 C2 00 26 00 C6 00 "...&... .byte $48,$00,$A8,$00,$2A,$00,$CA,$00 ; AE79 48 00 A8 00 2A 00 CA 00 H...*... .byte $2C,$00,$6C,$00,$8C,$00,$CC,$00 ; AE81 2C 00 6C 00 8C 00 CC 00 ,.l..... +l08_bombs_term: .byte $FF ; AE89 FF . -LAE8A: .byte $03,$00,$00,$01,$7C,$01,$01,$00 ; AE8A 03 00 00 01 7C 01 01 00 ....|... +l08_unkn0: + .byte $03,$00,$00,$01,$7C,$01,$01,$00 ; AE8A 03 00 00 01 7C 01 01 00 ....|... .byte $04,$0C,$AF,$10,$86,$00,$01,$0F ; AE92 04 0C AF 10 86 00 01 0F ........ .byte $FF ; AE9A FF . ; ---------------------------------------------------------------------------- -LAE9B: jsr L8036 ; AE9B 20 36 80 6. +spellbound_init: + jsr L8036 ; AE9B 20 36 80 6. lda #$C0 ; AE9E A9 C0 .. sta $0770 ; AEA0 8D 70 07 .p. rts ; AEA3 60 ` @@ -6308,7 +6339,8 @@ LAF1C: lda $062A ; AF1C AD 2A 06 rts ; AF22 60 ` ; ---------------------------------------------------------------------------- -LAF23: lda $B2 ; AF23 A5 B2 .. +spellbound_bomb_sub: + lda $B2 ; AF23 A5 B2 .. lsr a ; AF25 4A J tax ; AF26 AA . ldy data_table_aea4,x ; AF27 BC A4 AE ... @@ -6336,14 +6368,14 @@ LAF3B: lda LAEBC,y ; AF3B B9 BC AE ; ---------------------------------------------------------------------------- ; called at end of Spellbound, adds up letter bonus -level08_letters: +spellbound_letters: lda work_level_num_bombs ; AF58 AD 8A 07 ... - beq l08_got_all ; AF5B F0 01 .. + beq spellbound_got_all ; AF5B F0 01 .. rts ; AF5D 60 ` ; ---------------------------------------------------------------------------- ; got all the bombs -l08_got_all: +spellbound_got_all: lda #$09 ; AF5E A9 09 .. sta player_speed ; AF60 8D 24 06 .$. lda #$00 ; AF63 A9 00 .. @@ -6410,8 +6442,8 @@ sfx_letter_bonus: .byte $00,$00,$00,$00,$00,$00,$00,$00 ; AFEB 00 00 00 00 00 00 00 00 ........ .byte $00,$00,$00,$00,$00,$00,$00,$00 ; AFF3 00 00 00 00 00 00 00 00 ........ .byte $00,$00,$00,$00,$00 ; AFFB 00 00 00 00 00 ..... -; referenced by routine at $B0C4 -map_b000: +; blackout doesn't draw the map initially +l09_real_map: .byte $FE,$33,$9C,$FD,$04,$00,$04,$07 ; B000 FE 33 9C FD 04 00 04 07 .3...... .byte $06,$24,$07,$02,$6C,$05,$04,$8C ; B008 06 24 07 02 6C 05 04 8C .$..l... .byte $05,$04,$28,$18,$04,$48,$15,$06 ; B010 05 04 28 18 04 48 15 06 ..(..H.. @@ -6427,21 +6459,25 @@ map_b000: .byte $1A,$0A,$06,$5E,$18,$09,$9A,$08 ; B060 1A 0A 06 5E 18 09 9A 08 ...^.... .byte $0B,$FE,$DA,$9C,$83,$04,$13,$FE ; B068 0B FE DA 9C 83 04 13 FE ........ .byte $49,$9C ; B070 49 9C I. -LB072: .byte $04 ; B072 04 . -LB073: .byte $02,$01,$24,$02,$01,$44,$02,$01 ; B073 02 01 24 02 01 44 02 01 ..$..D.. - .byte $78,$02,$01,$98,$02,$01,$3C,$12 ; B07B 78 02 01 98 02 01 3C 12 x.....<. - .byte $01,$5C,$12,$01,$7C,$12,$01,$24 ; B083 01 5C 12 01 7C 12 01 24 .\..|..$ - .byte $22,$01,$78,$22,$01,$04,$38,$01 ; B08B 22 01 78 22 01 04 38 01 ".x"..8. - .byte $1C,$46,$01,$78,$42,$01,$04,$52 ; B093 1C 46 01 78 42 01 04 52 .F.xB..R - .byte $01,$58,$52,$01,$98,$52,$01 ; B09B 01 58 52 01 98 52 01 .XR..R. -LB0A2: .byte $FF ; B0A2 FF . -LB0A3: .byte $22,$00,$42,$00,$62,$00,$A2,$00 ; B0A3 22 00 42 00 62 00 A2 00 ".B.b... +l09_map_bombs: + .byte $04,$02,$01,$24,$02,$01,$44,$02 ; B072 04 02 01 24 02 01 44 02 ...$..D. + .byte $01,$78,$02,$01,$98,$02,$01,$3C ; B07A 01 78 02 01 98 02 01 3C .x.....< + .byte $12,$01,$5C,$12,$01,$7C,$12,$01 ; B082 12 01 5C 12 01 7C 12 01 ..\..|.. + .byte $24,$22,$01,$78,$22,$01,$04,$38 ; B08A 24 22 01 78 22 01 04 38 $".x"..8 + .byte $01,$1C,$46,$01,$78,$42,$01,$04 ; B092 01 1C 46 01 78 42 01 04 ..F.xB.. + .byte $52,$01,$58,$52,$01,$98,$52,$01 ; B09A 52 01 58 52 01 98 52 01 R.XR..R. +; blackout doesn't draw the map initially +l09_map:.byte $FF ; B0A2 FF . +l09_bombs: + .byte $22,$00,$42,$00,$62,$00,$A2,$00 ; B0A3 22 00 42 00 62 00 A2 00 ".B.b... .byte $C2,$00,$64,$00,$84,$00,$A4,$00 ; B0AB C2 00 64 00 84 00 A4 00 ..d..... .byte $46,$00,$A6,$00,$28,$00,$4A,$00 ; B0B3 46 00 A6 00 28 00 4A 00 F...(.J. .byte $AA,$00,$2C,$00,$8C,$00,$CC,$00 ; B0BB AA 00 2C 00 8C 00 CC 00 ..,..... +l09_bombs_term: .byte $FF ; B0C3 FF . ; ---------------------------------------------------------------------------- -LB0C4: jsr L8036 ; B0C4 20 36 80 6. +blackout_init: + jsr L8036 ; B0C4 20 36 80 6. lda #$10 ; B0C7 A9 10 .. sta SAVMSC+1 ; B0C9 85 59 .Y jsr clear_screen_mem_jv ; B0CB 20 1E 80 .. @@ -6469,9 +6505,9 @@ LB0E8: lda RANDOM ; B0E8 AD 0A D2 clc ; B0FA 18 . adc $AB ; B0FB 65 AB e. tay ; B0FD A8 . - lda LB072,y ; B0FE B9 72 B0 .r. + lda l09_map_bombs,y ; B0FE B9 72 B0 .r. sta $0903 ; B101 8D 03 09 ... - lda LB073,y ; B104 B9 73 B0 .s. + lda l09_map_bombs+1,y ; B104 B9 73 B0 .s. sta $0904 ; B107 8D 04 09 ... lda #$00 ; B10A A9 00 .. sta dm_progctr ; B10C 85 C0 .. @@ -6487,7 +6523,8 @@ LB119: rts ; B119 60 map_b11a: .byte $FE,$B3,$9C,$00,$00,$01,$FF ; B11A FE B3 9C 00 00 01 FF ....... ; ---------------------------------------------------------------------------- -LB121: lda #$10 ; B121 A9 10 .. +blackout_bomb_sub: + lda #$10 ; B121 A9 10 .. sta SAVMSC+1 ; B123 85 59 .Y lda #$D9 ; B125 A9 D9 .. sta dm_progctr ; B127 85 C0 .. @@ -6504,7 +6541,8 @@ LB121: lda #$10 ; B121 A9 10 rts ; B13F 60 ` ; ---------------------------------------------------------------------------- -LB140: lda falling_flag ; B140 AD 21 06 .!. +blackout_sub0: + lda falling_flag ; B140 AD 21 06 .!. bne LB146 ; B143 D0 01 .. LB145: rts ; B145 60 ` @@ -6600,10 +6638,9 @@ LB1D2: cmp #$26 ; B1D2 C9 26 LB1DE: rts ; B1DE 60 ` ; ---------------------------------------------------------------------------- -; dunno what this is for yet -data_table_b1df: +zero_filler_b1df: .byte $00 ; B1DF 00 . -LB1E0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B1E0 FE 33 9C FD 04 00 04 05 .3...... +l10_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B1E0 FE 33 9C FD 04 00 04 05 .3...... .byte $06,$38,$05,$08,$7C,$05,$06,$24 ; B1E8 06 38 05 08 7C 05 06 24 .8..|..$ .byte $15,$06,$64,$15,$0E,$04,$2D,$06 ; B1F0 15 06 64 15 0E 04 2D 06 ..d...-. .byte $38,$35,$0C,$04,$45,$06,$30,$45 ; B1F8 38 35 0C 04 45 06 30 45 85..E.0E @@ -6614,19 +6651,24 @@ LB1E0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B1E0 FE 33 9C FD 04 00 04 05 .byte $01,$0B,$0C,$41,$05,$40,$01,$05 ; B220 01 0B 0C 41 05 40 01 05 ...A.@.. .byte $40,$31,$05,$8C,$01,$15,$FE,$DA ; B228 40 31 05 8C 01 15 FE DA @1...... .byte $9C,$66,$30,$04,$FE,$B3,$9C ; B230 9C 66 30 04 FE B3 9C .f0.... -LB237: .byte $04,$02,$01,$38,$02,$01,$7C,$02 ; B237 04 02 01 38 02 01 7C 02 ...8..|. +l10_map_bombs: + .byte $04,$02,$01,$38,$02,$01,$7C,$02 ; B237 04 02 01 38 02 01 7C 02 ...8..|. .byte $01,$38,$12,$01,$64,$12,$01,$98 ; B23F 01 38 12 01 64 12 01 98 .8..d... .byte $12,$01,$04,$22,$01,$98,$39,$01 ; B247 12 01 04 22 01 98 39 01 ..."..9. .byte $58,$47,$01,$04,$52,$01,$38,$52 ; B24F 58 47 01 04 52 01 38 52 XG..R.8R .byte $01,$98,$52,$01,$FF ; B257 01 98 52 01 FF ..R.. -LB25C: .byte $22,$00,$62,$00,$A2,$00,$64,$00 ; B25C 22 00 62 00 A2 00 64 00 ".b...d. +l10_bombs: + .byte $22,$00,$62,$00,$A2,$00,$64,$00 ; B25C 22 00 62 00 A2 00 64 00 ".b...d. .byte $84,$00,$C4,$00,$26,$00,$C8,$00 ; B264 84 00 C4 00 26 00 C8 00 ....&... .byte $8A,$00,$2C,$00,$6C,$00,$CC,$00 ; B26C 8A 00 2C 00 6C 00 CC 00 ..,.l... +l10_bombs_term: .byte $FF ; B274 FF . -LB275: .byte $03,$A8,$B2,$0A,$A4,$20,$01,$56 ; B275 03 A8 B2 0A A4 20 01 56 ..... .V +l10_unkn0: + .byte $03,$A8,$B2,$0A,$A4,$20,$01,$56 ; B275 03 A8 B2 0A A4 20 01 56 ..... .V .byte $FF ; B27D FF . ; ---------------------------------------------------------------------------- -LB27E: lda $06F5 ; B27E AD F5 06 ... +herethere_sub0: + lda $06F5 ; B27E AD F5 06 ... sta $066C ; B281 8D 6C 06 .l. bne LB287 ; B284 D0 01 .. rts ; B286 60 ` @@ -6660,7 +6702,8 @@ data_table_b2a8: LB2D0: .byte $A4,$4C,$52,$70,$86,$86,$A4,$82 ; B2D0 A4 4C 52 70 86 86 A4 82 .LRp.... LB2D8: .byte $20,$20,$98,$C0,$B4,$80,$68,$40 ; B2D8 20 20 98 C0 B4 80 68 40 ....h@ ; ---------------------------------------------------------------------------- -LB2E0: lda $0619 ; B2E0 AD 19 06 ... +herethere_sub3: + lda $0619 ; B2E0 AD 19 06 ... and #$0F ; B2E3 29 0F ). bne LB2F2 ; B2E5 D0 0B .. lda $068A ; B2E7 AD 8A 06 ... @@ -6673,7 +6716,8 @@ LB2F2: lda $062A ; B2F2 AD 2A 06 jmp L8F79 ; B2FA 4C 79 8F Ly. ; ---------------------------------------------------------------------------- -LB2FD: lda $0680 ; B2FD AD 80 06 ... +herethere_bomb_sub: + lda $0680 ; B2FD AD 80 06 ... sta player_x_pos ; B300 8D 7E 06 .~. lda $0685 ; B303 AD 85 06 ... sta player_y_pos ; B306 8D 83 06 ... @@ -6689,7 +6733,7 @@ LB2FD: lda $0680 ; B2FD AD 80 06 ; referenced by routine at $B2FD sxf_b319: .byte $01,$86,$00,$0A,$20,$00,$00 ; B319 01 86 00 0A 20 00 00 .... .. -LB320: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B320 FE 33 9C FD 04 00 04 05 .3...... +l11_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B320 FE 33 9C FD 04 00 04 05 .3...... .byte $08,$2C,$07,$15,$84,$05,$06,$1C ; B328 08 2C 07 15 84 05 06 1C .,...... .byte $15,$03,$48,$15,$0D,$04,$25,$07 ; B330 15 03 48 15 0D 04 25 07 ..H...%. .byte $30,$2F,$0D,$04,$35,$06,$74,$35 ; B338 30 2F 0D 04 35 06 74 35 0/..5.t5 @@ -6703,17 +6747,22 @@ LB320: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B320 FE 33 9C FD 04 00 04 05 .byte $C9,$9C,$04,$38,$02,$1A,$38,$02 ; B378 C9 9C 04 38 02 1A 38 02 ...8..8. .byte $33,$32,$07,$74,$38,$05,$FE,$DA ; B380 33 32 07 74 38 05 FE DA 32.t8... .byte $9C,$6A,$12,$0F,$FE,$B3,$9C ; B388 9C 6A 12 0F FE B3 9C .j..... -LB38F: .byte $04,$02,$01,$3A,$02,$01,$5A,$02 ; B38F 04 02 01 3A 02 01 5A 02 ...:..Z. +l11_map_bombs: + .byte $04,$02,$01,$3A,$02,$01,$5A,$02 ; B38F 04 02 01 3A 02 01 5A 02 ...:..Z. .byte $01,$7A,$02,$01,$98,$02,$01,$20 ; B397 01 7A 02 01 98 02 01 20 .z..... .byte $12,$01,$5A,$12,$01,$04,$22,$01 ; B39F 12 01 5A 12 01 04 22 01 ..Z...". .byte $3A,$22,$01,$04,$32,$01,$78,$32 ; B3A7 3A 22 01 04 32 01 78 32 :"..2.x2 .byte $01,$98,$32,$01,$04,$52,$01,$38 ; B3AF 01 98 32 01 04 52 01 38 ..2..R.8 .byte $52,$01,$60,$52,$01,$FF ; B3B7 52 01 60 52 01 FF R.`R.. -LB3BD: .byte $22,$10,$62,$20,$82,$30,$A2,$40 ; B3BD 22 10 62 20 82 30 A2 40 ".b .0.@ +l11_bombs: + .byte $22,$10,$62,$20,$82,$30,$A2,$40 ; B3BD 22 10 62 20 82 30 A2 40 ".b .0.@ .byte $C2,$50,$44,$60,$84,$70,$26,$80 ; B3C5 C2 50 44 60 84 70 26 80 .PD`.p&. .byte $66,$90,$28,$A0,$A8,$B0,$C8,$C0 ; B3CD 66 90 28 A0 A8 B0 C8 C0 f.(..... - .byte $2C,$D0,$6C,$E0,$8C,$F0,$FF ; B3D5 2C D0 6C E0 8C F0 FF ,.l.... -LB3DC: .byte $00,$00,$FC,$B3,$06,$B4,$10,$B4 ; B3DC 00 00 FC B3 06 B4 10 B4 ........ + .byte $2C,$D0,$6C,$E0,$8C,$F0 ; B3D5 2C D0 6C E0 8C F0 ,.l... +l11_bombs_term: + .byte $FF ; B3DB FF . +l11_map_changes: + .byte $00,$00,$FC,$B3,$06,$B4,$10,$B4 ; B3DC 00 00 FC B3 06 B4 10 B4 ........ .byte $06,$B4,$10,$B4,$1A,$B4,$24,$B4 ; B3E4 06 B4 10 B4 1A B4 24 B4 ......$. .byte $2E,$B4,$38,$B4,$2E,$B4,$38,$B4 ; B3EC 2E B4 38 B4 2E B4 38 B4 ..8...8. .byte $FC,$B3,$24,$B4,$1A,$B4,$42,$B4 ; B3F4 FC B3 24 B4 1A B4 42 B4 ..$...B. @@ -6728,14 +6777,16 @@ LB3DC: .byte $00,$00,$FC,$B3,$06,$B4,$10,$B4 ; B3DC 00 00 FC B3 06 B4 10 B4 .byte $00,$04,$54,$3F,$04,$FF,$FE,$89 ; B43C 00 04 54 3F 04 FF FE 89 ..T?.... .byte $9C,$FD,$00,$04,$8C,$1D,$04,$FF ; B444 9C FD 00 04 8C 1D 04 FF ........ ; ---------------------------------------------------------------------------- -LB44C: lda #$01 ; B44C A9 01 .. +hatch_bomb_sub: + lda #$01 ; B44C A9 01 .. sta $0770 ; B44E 8D 70 07 .p. lda #$00 ; B451 A9 00 .. sta $0771 ; B453 8D 71 07 .q. rts ; B456 60 ` ; ---------------------------------------------------------------------------- -LB457: lda $0623 ; B457 AD 23 06 .#. +hatch_sub0: + lda $0623 ; B457 AD 23 06 .#. cmp #$02 ; B45A C9 02 .. bne LB46A ; B45C D0 0C .. lda #$00 ; B45E A9 00 .. @@ -6823,7 +6874,7 @@ LB502: sty $A0 ; B502 84 A0 ; ---------------------------------------------------------------------------- ; dunno what this is for yet -data_table_b50b: +hatch_table_b50b: .byte $03,$1C,$B5,$08,$00,$00,$01,$56 ; B50B 03 1C B5 08 00 00 01 56 .......V .byte $04,$1C,$B5,$08,$00,$00,$05,$1A ; B513 04 1C B5 08 00 00 05 1A ........ .byte $FF,$00,$00,$18,$18,$24,$24,$18 ; B51B FF 00 00 18 18 24 24 18 .....$$. @@ -6841,19 +6892,20 @@ sfx_woop: .byte $DC,$01,$01,$A6,$00,$C8,$02,$01 ; B56C DC 01 01 A6 00 C8 02 01 ........ .byte $A4,$DC,$01,$01,$A2,$F0,$01,$00 ; B574 A4 DC 01 01 A2 F0 01 00 ........ ; ---------------------------------------------------------------------------- -LB57C: lda #$00 ; B57C A9 00 .. +hatch_sub3: + lda #$00 ; B57C A9 00 .. jmp L8F76 ; B57E 4C 76 8F Lv. ; ---------------------------------------------------------------------------- -LB581: lda $062A ; B581 AD 2A 06 .*. +hatch_sub1: + lda $062A ; B581 AD 2A 06 .*. sta PCOLR3 ; B584 8D C3 02 ... rts ; B587 60 ` ; ---------------------------------------------------------------------------- zero_filler_8588: .byte $00,$00,$00,$00,$00,$00,$00,$00 ; B588 00 00 00 00 00 00 00 00 ........ -data_b590: - .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B590 FE 33 9C FD 04 00 04 05 .3...... +l12_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; B590 FE 33 9C FD 04 00 04 05 .3...... .byte $08,$3C,$05,$0A,$7C,$05,$08,$04 ; B598 08 3C 05 0A 7C 05 08 04 .<..|... .byte $25,$26,$04,$43,$26,$04,$55,$06 ; B5A0 25 26 04 43 26 04 55 06 %&.C&.U. .byte $3C,$55,$0A,$84,$55,$06,$04,$43 ; B5A8 3C 55 0A 84 55 06 04 43 . + .byte $8C,$00,$CC,$00 ; B615 8C 00 CC 00 .... +l12_bombs_term: + .byte $FF ; B619 FF . +l12_map_changes: + .byte $00,$00,$24,$B6,$2E,$B6,$3E,$B6 ; B61A 00 00 24 B6 2E B6 3E B6 ..$...>. .byte $4E,$B6,$FE,$49,$9C,$FD,$04,$00 ; B622 4E B6 FE 49 9C FD 04 00 N..I.... .byte $78,$43,$02,$FF,$FE,$49,$9C,$FD ; B62A 78 43 02 FF FE 49 9C FD xC...I.. .byte $04,$00,$3C,$25,$02,$FD,$04,$00 ; B632 04 00 3C 25 02 FD 04 00 ..<%.... @@ -6880,7 +6937,8 @@ LB61A: .byte $00,$00,$24,$B6,$2E,$B6,$3E,$B6 ; B61A 00 00 24 B6 2E B6 3E B6 .byte $04,$00,$7C,$25,$02,$FD,$04,$00 ; B642 04 00 7C 25 02 FD 04 00 ..|%.... .byte $5C,$25,$02,$FF,$FE,$49,$9C,$FD ; B64A 5C 25 02 FF FE 49 9C FD \%...I.. .byte $04,$00,$5C,$43,$02,$FF ; B652 04 00 5C 43 02 FF ..\C.. -LB658: .byte $00,$71,$B6,$08,$40,$02,$01,$08 ; B658 00 71 B6 08 40 02 01 08 .q..@... +l12_unkn0: + .byte $00,$71,$B6,$08,$40,$02,$01,$08 ; B658 00 71 B6 08 40 02 01 08 .q..@... .byte $03,$71,$B6,$08,$14,$40,$02,$08 ; B660 03 71 B6 08 14 40 02 08 .q...@.. .byte $04,$71,$B6,$08,$00,$80,$03,$08 ; B668 04 71 B6 08 00 80 03 08 .q...... .byte $FF,$47,$EF,$3E,$1E,$1E,$0E,$02 ; B670 FF 47 EF 3E 1E 1E 0E 02 .G.>.... @@ -6889,7 +6947,8 @@ LB658: .byte $00,$71,$B6,$08,$40,$02,$01,$08 ; B658 00 71 B6 08 40 02 01 08 .byte $05,$40,$EE,$3F,$1E,$1C,$0C,$02 ; B688 05 40 EE 3F 1E 1C 0C 02 .@.?.... .byte $05 ; B690 05 . ; ---------------------------------------------------------------------------- -LB691: lda falling_flag ; B691 AD 21 06 .!. +hurr_sub0: + lda falling_flag ; B691 AD 21 06 .!. bne LB697 ; B694 D0 01 .. rts ; B696 60 ` @@ -6898,7 +6957,8 @@ LB697: inc player_x_pos ; B697 EE 7E 06 LB69A: rts ; B69A 60 ` ; ---------------------------------------------------------------------------- -LB69B: lda player_speed ; B69B AD 24 06 .$. +hurr_sub1: + lda player_speed ; B69B AD 24 06 .$. cmp #$09 ; B69E C9 09 .. bcs LB6A9 ; B6A0 B0 07 .. lda $0623 ; B6A2 AD 23 06 .#. @@ -6947,7 +7007,8 @@ LB702: lda $076C ; B702 AD 6C 07 rts ; B708 60 ` ; ---------------------------------------------------------------------------- -LB709: lda $06F5 ; B709 AD F5 06 ... +hurr_sub2: + lda $06F5 ; B709 AD F5 06 ... cmp #$01 ; B70C C9 01 .. bne LB71C ; B70E D0 0C .. inc $0669 ; B710 EE 69 06 .i. diff --git a/jumpmanjr.info b/jumpmanjr.info index 0bf6eca..da90ca8 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -52,8 +52,8 @@ label { name "update_score_display"; addr $8CBC; comment "also adds extra life e label { name "update_score_display_jv"; addr $800C; comment "also adds extra life every 7500 points"; }; label { name "score_mod_1m"; addr $B7C0; comment "roll over the score if it's >= 1 million"; }; label { name "score_below_1m"; addr $B7EE; }; -label { name "level08_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; -label { name "l08_got_all"; addr $AF5E; comment "got all the bombs"; }; +label { name "spellbound_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; +label { name "spellbound_got_all"; addr $AF5E; comment "got all the bombs"; }; label { name "bonus_250_pts"; addr $AF96; comment "per letter"; }; label { name "epyx_jumpman"; addr $AEAF; comment "letters for level08, spellbound (not ASCII or screencodes though)"; }; @@ -296,7 +296,7 @@ label { name "play_hellstone_sfx"; addr $A88D; }; label { name "sfx_hellstone"; addr $a90d; }; range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "screen codes, displayed by well_done_screen"; }; range { name "zero_filler_8588"; start $B588; end $B58f; type bytetable; }; -range { name "data_b590"; start $B590; end $B690; type bytetable; }; +#range { name "data_b590"; start $B590; end $B690; type bytetable; }; range { name "wind_table_1"; start $B76B; end $b7bf; type bytetable; comment "used in level12"; }; label { name "wind_table_2"; addr $b771; }; label { name "electrocution_bomb_pickup"; addr $A498; comment "not sure what this actually does"; }; @@ -317,21 +317,101 @@ label { name "l01_map_change_2"; addr $a3c2; }; label { name "l01_map_change_3"; addr $a3cc; }; range { name "zero_filler_a3d6"; start $a3d6; end $a3df; type bytetable; comment "probably just filler"; }; -range { name "l02_map"; start $A3e0; end $a497; type bytetable; comment "level map data starts here"; }; +range { name "l02_map"; start $A3e0; end $a445; type bytetable; comment "level map data starts here"; }; +range { name "l02_map_bombs"; start $A446; end $a476; type bytetable; }; +range { name "l02_bombs"; start $A477; end $a496; type bytetable; }; +range { name "l02_bombs_term"; start $A497; end $a497; type bytetable; }; + +range { name "data_a542"; start $A542; end $A5EF; type bytetable; comment "dunno, referenced by electrocution_bomb_pickup"; }; +range { name "l03_map"; start $A5F0; end $a62e; type bytetable; comment "level map data starts here"; }; +range { name "l03_map_bombs"; start $a62f; end $a653; type bytetable; }; +range { name "l03_bombs"; start $a654; end $a66b; type bytetable; }; +range { name "l03_bombs_term"; start $a66c; end $a66c; type bytetable; }; +range { name "l03_unkn"; start $a66d; end $a684; type bytetable; }; range { name "sfx_electrocution"; start $A52D; end $A53C; type bytetable; }; -range { name "data_a542"; start $A542; end $A68B; type bytetable; comment "dunno, referenced by electrocution_bomb_pickup"; }; -range { name "dumbwaiter_player"; start $a782; end $A826; type bytetable; comment "the dumbwaiters from level03. stored upside-down."; }; -label { name "dw_platform_player"; addr $A685; comment "horizontally moving platforms from level03"; }; -range { name "data_table_a8fd"; start $a8fd; end $A9C5; type bytetable; comment "dunno, referenced by routine at $A8D4"; }; +range { name "dumbwaiter_player"; start $a782; end $a78f; type bytetable; comment "the dumbwaiters from level03. stored upside-down. trailing 00's might just be filler."; }; +range { name "dw_platform_player"; start $A685; end $a68b; type bytetable; comment "horizontally moving platforms from level03"; }; + +range { name "l04_map"; start $a790; end $a7d4; type bytetable; comment "level map data starts here"; }; +range { name "l04_map_bombs"; start $a7d5; end $a805; type bytetable; }; +range { name "l04_bombs"; start $a806; end $a825; type bytetable; }; +range { name "l04_bombs_term"; start $a826; end $a826; type bytetable; }; + +range { name "l05_map"; start $aad0; end $ab41; type bytetable; comment "level map data starts here"; }; +range { name "l05_map_bombs"; start $ab42; end $ab6c; type bytetable; }; +range { name "l05_bombs"; start $ab6d; end $ab88; type bytetable; }; +range { name "l05_bombs_term"; start $ab89; end $ab89; type bytetable; }; +range { name "l05_map_changes"; start $ab8a; end $ac5f; type bytetable; }; + +range { name "data_table_a8fd"; start $a8fd; end $a91f; type bytetable; comment "dunno, referenced by routine at $A8D4"; }; +range { name "l06_map"; start $a920; end $a973; type bytetable; }; +range { name "l06_map_bombs"; start $a974; end $a9a4; type bytetable; }; +range { name "l06_bombs"; start $a9a5; end $a9c4; type bytetable; }; +range { name "l06_bombs_term"; start $a9c5; end $a9c5; type bytetable; }; + +range { name "l07_map"; start $ac60; end $acb9; type bytetable; }; +range { name "l07_map_bombs"; start $acba; end $ace4; type bytetable; }; +range { name "l07_bombs"; start $ace5; end $ad00; type bytetable; }; +range { name "l07_bombs_term"; start $ad01; end $ad01; type bytetable; }; +range { name "l07_map_changes"; start $ad02; end $ad67; type bytetable; }; + +range { name "data_table_adc7"; start $adc7; end $addf; type bytetable; comment "dunno, referenced by routines at $AD9E and $ADB5"; }; +range { name "l08_map"; start $ade0; end $ae4b; type bytetable; }; +range { name "l08_map_bombs"; start $ae4c; end $ae70; type bytetable; }; +range { name "l08_bombs"; start $ae71; end $ae88; type bytetable; }; +range { name "l08_bombs_term"; start $ae89; end $ae89; type bytetable; }; +range { name "l08_unkn0"; start $ae8a; end $ae9a; type bytetable; }; +label { name "spellbound_bomb_sub"; addr $AF23; }; +label { name "spellbound_init"; addr $AE9B; }; + +range { name "l09_real_map"; start $b000; end $b0a2; type bytetable; comment "blackout doesn't draw the map initially"; }; +#range { name "l09_map"; start $b0a2; end $b0a2; type bytetable; comment "blackout doesn't draw the map initially"; }; +#range { name "l09_map_bombs"; start $b072; end $b0a2; type bytetable; }; +label { name "l09_map_bombs"; addr $b072; size $21; }; +range { name "l09_bombs"; start $b0a3; end $b0c2; type bytetable; }; +range { name "l09_bombs_term"; start $b0c3; end $b0c3; type bytetable; }; +label { name "l09_map"; addr $b0a2; comment "blackout doesn't draw the map initially"; }; +label { name "blackout_bomb_sub"; addr $B121; }; +label { name "blackout_init"; addr $B0C4; }; +label { name "blackout_sub0"; addr $B140; }; + +label { name "herethere_sub0"; addr $B27E; }; +label { name "herethere_sub3"; addr $B2E0; }; +range { name "zero_filler_b1df"; start $b1df; end $b1df; type bytetable; }; +range { name "l10_map"; start $B1E0; end $b236; type bytetable; }; +range { name "l10_map_bombs"; start $b237; end $b25b; type bytetable; }; +range { name "l10_bombs"; start $b25c; end $b273; type bytetable; }; +range { name "l10_bombs_term"; start $b274; end $b274; type bytetable; }; +range { name "l10_unkn0"; start $b275; end $b27d; type bytetable; }; +label { name "herethere_bomb_sub"; addr $B2FD; }; + +label { name "hatch_sub0"; addr $B457; }; +label { name "hatch_sub1"; addr $B581; }; +label { name "hatch_sub3"; addr $B57C; }; +range { name "l11_map"; start $B320; end $b38e; type bytetable; }; +range { name "l11_map_bombs"; start $B38F; end $B3BC; type bytetable; }; +range { name "l11_bombs"; start $B3BD; end $b3da; type bytetable; }; +range { name "l11_bombs_term"; start $b3db; end $b3db; type bytetable; }; +range { name "l11_map_changes"; start $B3DC; end $b44b; type bytetable; }; +label { name "hatch_bomb_sub"; addr $B44C; }; + +label { name "hurr_sub0"; addr $b691; }; +label { name "hurr_sub1"; addr $b69b; }; +label { name "hurr_sub2"; addr $B709; }; +range { name "l12_map"; start $b590; end $b5d1; type bytetable; }; +range { name "l12_map_bombs"; start $b5d2; end $b5fc; type bytetable; }; +range { name "l12_bombs"; start $b5fd; end $b618; type bytetable; }; +range { name "l12_bombs_term"; start $b619; end $b619; type bytetable; }; +range { name "l12_map_changes"; start $b61a; end $b657; type bytetable; }; +range { name "l12_unkn0"; start $b658; end $b690; type bytetable; }; + range { name "map_aa90"; start $aa90; end $aabb; type bytetable; comment "dunno what this is for yet"; }; -range { name "map_aac8"; start $aac8; end $AD67; type bytetable; comment "dunno what this is for yet"; }; +range { name "map_aac8"; start $aac8; end $aacf; type bytetable; comment "dunno what this is for yet"; }; label { name "map_aaa6"; addr $aaa6; comment "referenced by routine at $AA82"; }; -range { name "data_table_adc7"; start $adc7; end $AE9A; type bytetable; comment "dunno, referenced by routines at $AD9E and $ADB5"; }; range { name "data_table_aea4"; start $aea4; end $af0f; type bytetable; comment "dunno"; }; -range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; type bytetable; comment "played once per correct letter at end of level08 (spellbound)"; }; +range { name "sfx_letter_bonus"; start $AFCB; end $afff; type bytetable; comment "played once per correct letter at end of level08 (spellbound)"; }; label { name "cue_letter_sfx"; addr $AFB9; comment "play sfx_letter_bonus"; }; -label { name "map_b000"; addr $b000; comment "referenced by routine at $B0C4"; }; label { name "stub"; addr $8405; comment "just an RTS"; }; range { name "data_table_85b6"; start $85b6; end $85bd; type bytetable; comment "used in vblank_imm_isr, not sure for what yet"; }; label { name "page6_initial_vectors_minus_one"; addr $85d3; comment "1-indexed"; }; @@ -358,10 +438,9 @@ label { name "sh_up_rope"; addr $9cc9; }; label { name "sh_down_rope"; addr $9cda; }; label { name "sh_9ceb"; addr $9ceb; comment "dunno what this is yet"; }; range { name "sprite_table"; start $9d00; end $9dff; type bytetable; comment "jumpman's animation frames and other sprites, seem to be 10 bytes per sprite"; }; -range { name "sxf_b319"; start $b319; end $B44B; type bytetable; comment "referenced by routine at $B2FD"; }; -range { name "data_table_b1df"; start $b1df; end $B27d; type bytetable; comment "dunno what this is for yet"; }; +range { name "sxf_b319"; start $b319; end $b31f; type bytetable; comment "referenced by routine at $B2FD"; }; range { name "data_table_b2a8"; start $b2a8; end $B2df; type bytetable; comment "dunno what this is for yet"; }; -range { name "data_table_b50b"; start $b50b; end $B57b; type bytetable; comment "dunno what this is for yet"; }; +range { name "hatch_table_b50b"; start $b50b; end $B57b; type bytetable; comment "dunno what this is for yet"; }; range { name "scores_screen_dlist"; start $8C52; end $8C67; type bytetable; comment "a GR.2-ish DL, with DLIs, screen mem at $3000, for player scores screen"; }; label { name "reyalp_msg_minus_one"; addr $8c67; }; label { name "show_reyalp_msg"; addr $8BC0; comment "shows PLAYER (backwards loop)"; }; @@ -677,7 +756,7 @@ label { name "cur_level_offs_55"; addr $07f7; size 3; comment "unknown, always $ label { name "cur_level_offs_58"; addr $07fa; size 2; comment "unknown, not a ROM address"; }; label { name "cur_level_offs_60"; addr $07fc; size 4; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level01_desc"; start $a000; end $a001; type bytetable; comment "64-byte level descriptors, 12 of them (1 per level). first 2 bytes are level number in screencodes"; }; +range { name "level01_desc"; start $a000; end $a001; type bytetable; comment "64-byte level descriptors, 12 of them (1 per level). Descriptor for Nothing To It. first 2 bytes are level number in screencodes"; }; range { name "level01_sub0"; start $a002; end $a003; type addrtable; comment "a subroutine"; }; range { name "level01_sub1"; start $a004; end $a005; type addrtable; comment "a subroutine"; }; range { name "level01_sub2"; start $a006; end $a007; type addrtable; comment "a subroutine"; }; @@ -711,7 +790,7 @@ range { name "level01_offs_55"; start $a037; end $a039; type bytetable; comment range { name "level01_offs_58"; start $a03a; end $a03b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level01_offs_60"; start $a03c; end $a03f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level02_desc"; start $a040; end $a041; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level02_desc"; start $a040; end $a041; type bytetable; comment "Descriptor for Electrocution. first 2 bytes are level number in screencodes"; }; range { name "level02_sub0"; start $a042; end $a043; type addrtable; comment "a subroutine"; }; range { name "level02_sub1"; start $a044; end $a045; type addrtable; comment "a subroutine"; }; range { name "level02_sub2"; start $a046; end $a047; type addrtable; comment "a subroutine"; }; @@ -745,7 +824,7 @@ range { name "level02_offs_55"; start $a077; end $a079; type bytetable; comment range { name "level02_offs_58"; start $a07a; end $a07b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level02_offs_60"; start $a07c; end $a07f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level03_desc"; start $a080; end $a081; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level03_desc"; start $a080; end $a081; type bytetable; comment "Descriptor for Dumbwaiter. first 2 bytes are level number in screencodes"; }; range { name "level03_sub0"; start $a082; end $a083; type addrtable; comment "a subroutine"; }; range { name "level03_sub1"; start $a084; end $a085; type addrtable; comment "a subroutine"; }; range { name "level03_sub2"; start $a086; end $a087; type addrtable; comment "a subroutine"; }; @@ -779,7 +858,7 @@ range { name "level03_offs_55"; start $a0b7; end $a0b9; type bytetable; comment range { name "level03_offs_58"; start $a0ba; end $a0bb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level03_offs_60"; start $a0bc; end $a0bf; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level04_desc"; start $a0c0; end $a0c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level04_desc"; start $a0c0; end $a0c1; type bytetable; comment "Descriptor for Hellstones. first 2 bytes are level number in screencodes"; }; range { name "level04_sub0"; start $a0c2; end $a0c3; type addrtable; comment "a subroutine"; }; range { name "level04_sub1"; start $a0c4; end $a0c5; type addrtable; comment "a subroutine"; }; range { name "level04_sub2"; start $a0c6; end $a0c7; type addrtable; comment "a subroutine"; }; @@ -813,7 +892,7 @@ range { name "level04_offs_55"; start $a0f7; end $a0f9; type bytetable; comment range { name "level04_offs_58"; start $a0fa; end $a0fb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level04_offs_60"; start $a0fc; end $a0ff; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level05_desc"; start $a100; end $a101; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level05_desc"; start $a100; end $a101; type bytetable; comment "Descriptor for Figurits Revenge. first 2 bytes are level number in screencodes"; }; range { name "level05_sub0"; start $a102; end $a103; type addrtable; comment "a subroutine"; }; range { name "level05_sub1"; start $a104; end $a105; type addrtable; comment "a subroutine"; }; range { name "level05_sub2"; start $a106; end $a107; type addrtable; comment "a subroutine"; }; @@ -847,7 +926,7 @@ range { name "level05_offs_55"; start $a137; end $a139; type bytetable; comment range { name "level05_offs_58"; start $a13a; end $a13b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level05_offs_60"; start $a13c; end $a13f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level06_desc"; start $a140; end $a141; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level06_desc"; start $a140; end $a141; type bytetable; comment "Descriptor for Walls. first 2 bytes are level number in screencodes"; }; range { name "level06_sub0"; start $a142; end $a143; type addrtable; comment "a subroutine"; }; range { name "level06_sub1"; start $a144; end $a145; type addrtable; comment "a subroutine"; }; range { name "level06_sub2"; start $a146; end $a147; type addrtable; comment "a subroutine"; }; @@ -881,7 +960,7 @@ range { name "level06_offs_55"; start $a177; end $a179; type bytetable; comment range { name "level06_offs_58"; start $a17a; end $a17b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level06_offs_60"; start $a17c; end $a17f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level07_desc"; start $a180; end $a181; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level07_desc"; start $a180; end $a181; type bytetable; comment "Descriptor for Zig-Zag. first 2 bytes are level number in screencodes"; }; range { name "level07_sub0"; start $a182; end $a183; type addrtable; comment "a subroutine"; }; range { name "level07_sub1"; start $a184; end $a185; type addrtable; comment "a subroutine"; }; range { name "level07_sub2"; start $a186; end $a187; type addrtable; comment "a subroutine"; }; @@ -915,7 +994,7 @@ range { name "level07_offs_55"; start $a1b7; end $a1b9; type bytetable; comment range { name "level07_offs_58"; start $a1ba; end $a1bb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level07_offs_60"; start $a1bc; end $a1bf; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level08_desc"; start $a1c0; end $a1c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level08_desc"; start $a1c0; end $a1c1; type bytetable; comment "Descriptor for Spellbound. first 2 bytes are level number in screencodes"; }; range { name "level08_sub0"; start $a1c2; end $a1c3; type addrtable; comment "a subroutine"; }; range { name "level08_sub1"; start $a1c4; end $a1c5; type addrtable; comment "a subroutine"; }; range { name "level08_sub2"; start $a1c6; end $a1c7; type addrtable; comment "a subroutine"; }; @@ -949,7 +1028,7 @@ range { name "level08_offs_55"; start $a1f7; end $a1f9; type bytetable; comment range { name "level08_offs_58"; start $a1fa; end $a1fb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level08_offs_60"; start $a1fc; end $a1ff; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level09_desc"; start $a200; end $a201; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level09_desc"; start $a200; end $a201; type bytetable; comment "Descriptor for Blackout. first 2 bytes are level number in screencodes"; }; range { name "level09_sub0"; start $a202; end $a203; type addrtable; comment "a subroutine"; }; range { name "level09_sub1"; start $a204; end $a205; type addrtable; comment "a subroutine"; }; range { name "level09_sub2"; start $a206; end $a207; type addrtable; comment "a subroutine"; }; @@ -983,7 +1062,7 @@ range { name "level09_offs_55"; start $a237; end $a239; type bytetable; comment range { name "level09_offs_58"; start $a23a; end $a23b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level09_offs_60"; start $a23c; end $a23f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level10_desc"; start $a240; end $a241; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level10_desc"; start $a240; end $a241; type bytetable; comment "Descriptor for HereThereEverywhere. first 2 bytes are level number in screencodes"; }; range { name "level10_sub0"; start $a242; end $a243; type addrtable; comment "a subroutine"; }; range { name "level10_sub1"; start $a244; end $a245; type addrtable; comment "a subroutine"; }; range { name "level10_sub2"; start $a246; end $a247; type addrtable; comment "a subroutine"; }; @@ -1017,7 +1096,7 @@ range { name "level10_offs_55"; start $a277; end $a279; type bytetable; comment range { name "level10_offs_58"; start $a27a; end $a27b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level10_offs_60"; start $a27c; end $a27f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level11_desc"; start $a280; end $a281; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level11_desc"; start $a280; end $a281; type bytetable; comment "Descriptor for Hatchlings. first 2 bytes are level number in screencodes"; }; range { name "level11_sub0"; start $a282; end $a283; type addrtable; comment "a subroutine"; }; range { name "level11_sub1"; start $a284; end $a285; type addrtable; comment "a subroutine"; }; range { name "level11_sub2"; start $a286; end $a287; type addrtable; comment "a subroutine"; }; @@ -1051,7 +1130,7 @@ range { name "level11_offs_55"; start $a2b7; end $a2b9; type bytetable; comment range { name "level11_offs_58"; start $a2ba; end $a2bb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level11_offs_60"; start $a2bc; end $a2bf; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level12_desc"; start $a2c0; end $a2c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level12_desc"; start $a2c0; end $a2c1; type bytetable; comment "Descriptor for Hurricane. first 2 bytes are level number in screencodes"; }; range { name "level12_sub0"; start $a2c2; end $a2c3; type addrtable; comment "a subroutine"; }; range { name "level12_sub1"; start $a2c4; end $a2c5; type addrtable; comment "a subroutine"; }; range { name "level12_sub2"; start $a2c6; end $a2c7; type addrtable; comment "a subroutine"; }; diff --git a/leveldesc.info b/leveldesc.info index ed6a200..12e7301 100644 --- a/leveldesc.info +++ b/leveldesc.info @@ -66,7 +66,7 @@ label { name "cur_level_offs_55"; addr $07f7; size 3; comment "unknown, always $ label { name "cur_level_offs_58"; addr $07fa; size 2; comment "unknown, not a ROM address"; }; label { name "cur_level_offs_60"; addr $07fc; size 4; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level01_desc"; start $a000; end $a001; type bytetable; comment "64-byte level descriptors, 12 of them (1 per level). first 2 bytes are level number in screencodes"; }; +range { name "level01_desc"; start $a000; end $a001; type bytetable; comment "64-byte level descriptors, 12 of them (1 per level). Descriptor for Nothing To It. first 2 bytes are level number in screencodes"; }; range { name "level01_sub0"; start $a002; end $a003; type addrtable; comment "a subroutine"; }; range { name "level01_sub1"; start $a004; end $a005; type addrtable; comment "a subroutine"; }; range { name "level01_sub2"; start $a006; end $a007; type addrtable; comment "a subroutine"; }; @@ -100,7 +100,7 @@ range { name "level01_offs_55"; start $a037; end $a039; type bytetable; comment range { name "level01_offs_58"; start $a03a; end $a03b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level01_offs_60"; start $a03c; end $a03f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level02_desc"; start $a040; end $a041; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level02_desc"; start $a040; end $a041; type bytetable; comment "Descriptor for Electrocution. first 2 bytes are level number in screencodes"; }; range { name "level02_sub0"; start $a042; end $a043; type addrtable; comment "a subroutine"; }; range { name "level02_sub1"; start $a044; end $a045; type addrtable; comment "a subroutine"; }; range { name "level02_sub2"; start $a046; end $a047; type addrtable; comment "a subroutine"; }; @@ -134,7 +134,7 @@ range { name "level02_offs_55"; start $a077; end $a079; type bytetable; comment range { name "level02_offs_58"; start $a07a; end $a07b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level02_offs_60"; start $a07c; end $a07f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level03_desc"; start $a080; end $a081; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level03_desc"; start $a080; end $a081; type bytetable; comment "Descriptor for Dumbwaiter. first 2 bytes are level number in screencodes"; }; range { name "level03_sub0"; start $a082; end $a083; type addrtable; comment "a subroutine"; }; range { name "level03_sub1"; start $a084; end $a085; type addrtable; comment "a subroutine"; }; range { name "level03_sub2"; start $a086; end $a087; type addrtable; comment "a subroutine"; }; @@ -168,7 +168,7 @@ range { name "level03_offs_55"; start $a0b7; end $a0b9; type bytetable; comment range { name "level03_offs_58"; start $a0ba; end $a0bb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level03_offs_60"; start $a0bc; end $a0bf; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level04_desc"; start $a0c0; end $a0c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level04_desc"; start $a0c0; end $a0c1; type bytetable; comment "Descriptor for Hellstones. first 2 bytes are level number in screencodes"; }; range { name "level04_sub0"; start $a0c2; end $a0c3; type addrtable; comment "a subroutine"; }; range { name "level04_sub1"; start $a0c4; end $a0c5; type addrtable; comment "a subroutine"; }; range { name "level04_sub2"; start $a0c6; end $a0c7; type addrtable; comment "a subroutine"; }; @@ -202,7 +202,7 @@ range { name "level04_offs_55"; start $a0f7; end $a0f9; type bytetable; comment range { name "level04_offs_58"; start $a0fa; end $a0fb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level04_offs_60"; start $a0fc; end $a0ff; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level05_desc"; start $a100; end $a101; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level05_desc"; start $a100; end $a101; type bytetable; comment "Descriptor for Figurits Revenge. first 2 bytes are level number in screencodes"; }; range { name "level05_sub0"; start $a102; end $a103; type addrtable; comment "a subroutine"; }; range { name "level05_sub1"; start $a104; end $a105; type addrtable; comment "a subroutine"; }; range { name "level05_sub2"; start $a106; end $a107; type addrtable; comment "a subroutine"; }; @@ -236,7 +236,7 @@ range { name "level05_offs_55"; start $a137; end $a139; type bytetable; comment range { name "level05_offs_58"; start $a13a; end $a13b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level05_offs_60"; start $a13c; end $a13f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level06_desc"; start $a140; end $a141; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level06_desc"; start $a140; end $a141; type bytetable; comment "Descriptor for Walls. first 2 bytes are level number in screencodes"; }; range { name "level06_sub0"; start $a142; end $a143; type addrtable; comment "a subroutine"; }; range { name "level06_sub1"; start $a144; end $a145; type addrtable; comment "a subroutine"; }; range { name "level06_sub2"; start $a146; end $a147; type addrtable; comment "a subroutine"; }; @@ -270,7 +270,7 @@ range { name "level06_offs_55"; start $a177; end $a179; type bytetable; comment range { name "level06_offs_58"; start $a17a; end $a17b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level06_offs_60"; start $a17c; end $a17f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level07_desc"; start $a180; end $a181; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level07_desc"; start $a180; end $a181; type bytetable; comment "Descriptor for Zig-Zag. first 2 bytes are level number in screencodes"; }; range { name "level07_sub0"; start $a182; end $a183; type addrtable; comment "a subroutine"; }; range { name "level07_sub1"; start $a184; end $a185; type addrtable; comment "a subroutine"; }; range { name "level07_sub2"; start $a186; end $a187; type addrtable; comment "a subroutine"; }; @@ -304,7 +304,7 @@ range { name "level07_offs_55"; start $a1b7; end $a1b9; type bytetable; comment range { name "level07_offs_58"; start $a1ba; end $a1bb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level07_offs_60"; start $a1bc; end $a1bf; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level08_desc"; start $a1c0; end $a1c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level08_desc"; start $a1c0; end $a1c1; type bytetable; comment "Descriptor for Spellbound. first 2 bytes are level number in screencodes"; }; range { name "level08_sub0"; start $a1c2; end $a1c3; type addrtable; comment "a subroutine"; }; range { name "level08_sub1"; start $a1c4; end $a1c5; type addrtable; comment "a subroutine"; }; range { name "level08_sub2"; start $a1c6; end $a1c7; type addrtable; comment "a subroutine"; }; @@ -338,7 +338,7 @@ range { name "level08_offs_55"; start $a1f7; end $a1f9; type bytetable; comment range { name "level08_offs_58"; start $a1fa; end $a1fb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level08_offs_60"; start $a1fc; end $a1ff; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level09_desc"; start $a200; end $a201; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level09_desc"; start $a200; end $a201; type bytetable; comment "Descriptor for Blackout. first 2 bytes are level number in screencodes"; }; range { name "level09_sub0"; start $a202; end $a203; type addrtable; comment "a subroutine"; }; range { name "level09_sub1"; start $a204; end $a205; type addrtable; comment "a subroutine"; }; range { name "level09_sub2"; start $a206; end $a207; type addrtable; comment "a subroutine"; }; @@ -372,7 +372,7 @@ range { name "level09_offs_55"; start $a237; end $a239; type bytetable; comment range { name "level09_offs_58"; start $a23a; end $a23b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level09_offs_60"; start $a23c; end $a23f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level10_desc"; start $a240; end $a241; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level10_desc"; start $a240; end $a241; type bytetable; comment "Descriptor for HereThereEverywhere. first 2 bytes are level number in screencodes"; }; range { name "level10_sub0"; start $a242; end $a243; type addrtable; comment "a subroutine"; }; range { name "level10_sub1"; start $a244; end $a245; type addrtable; comment "a subroutine"; }; range { name "level10_sub2"; start $a246; end $a247; type addrtable; comment "a subroutine"; }; @@ -406,7 +406,7 @@ range { name "level10_offs_55"; start $a277; end $a279; type bytetable; comment range { name "level10_offs_58"; start $a27a; end $a27b; type bytetable; comment "unknown, not a ROM address"; }; range { name "level10_offs_60"; start $a27c; end $a27f; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level11_desc"; start $a280; end $a281; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level11_desc"; start $a280; end $a281; type bytetable; comment "Descriptor for Hatchlings. first 2 bytes are level number in screencodes"; }; range { name "level11_sub0"; start $a282; end $a283; type addrtable; comment "a subroutine"; }; range { name "level11_sub1"; start $a284; end $a285; type addrtable; comment "a subroutine"; }; range { name "level11_sub2"; start $a286; end $a287; type addrtable; comment "a subroutine"; }; @@ -440,7 +440,7 @@ range { name "level11_offs_55"; start $a2b7; end $a2b9; type bytetable; comment range { name "level11_offs_58"; start $a2ba; end $a2bb; type bytetable; comment "unknown, not a ROM address"; }; range { name "level11_offs_60"; start $a2bc; end $a2bf; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; -range { name "level12_desc"; start $a2c0; end $a2c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; +range { name "level12_desc"; start $a2c0; end $a2c1; type bytetable; comment "Descriptor for Hurricane. first 2 bytes are level number in screencodes"; }; range { name "level12_sub0"; start $a2c2; end $a2c3; type addrtable; comment "a subroutine"; }; range { name "level12_sub1"; start $a2c4; end $a2c5; type addrtable; comment "a subroutine"; }; range { name "level12_sub2"; start $a2c6; end $a2c7; type addrtable; comment "a subroutine"; }; diff --git a/main.info b/main.info index d93f34a..9001d00 100644 --- a/main.info +++ b/main.info @@ -50,8 +50,8 @@ label { name "update_score_display"; addr $8CBC; comment "also adds extra life e label { name "update_score_display_jv"; addr $800C; comment "also adds extra life every 7500 points"; }; label { name "score_mod_1m"; addr $B7C0; comment "roll over the score if it's >= 1 million"; }; label { name "score_below_1m"; addr $B7EE; }; -label { name "level08_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; -label { name "l08_got_all"; addr $AF5E; comment "got all the bombs"; }; +label { name "spellbound_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; +label { name "spellbound_got_all"; addr $AF5E; comment "got all the bombs"; }; label { name "bonus_250_pts"; addr $AF96; comment "per letter"; }; label { name "epyx_jumpman"; addr $AEAF; comment "letters for level08, spellbound (not ASCII or screencodes though)"; }; @@ -294,7 +294,7 @@ label { name "play_hellstone_sfx"; addr $A88D; }; label { name "sfx_hellstone"; addr $a90d; }; range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "screen codes, displayed by well_done_screen"; }; range { name "zero_filler_8588"; start $B588; end $B58f; type bytetable; }; -range { name "data_b590"; start $B590; end $B690; type bytetable; }; +#range { name "data_b590"; start $B590; end $B690; type bytetable; }; range { name "wind_table_1"; start $B76B; end $b7bf; type bytetable; comment "used in level12"; }; label { name "wind_table_2"; addr $b771; }; label { name "electrocution_bomb_pickup"; addr $A498; comment "not sure what this actually does"; }; @@ -315,21 +315,101 @@ label { name "l01_map_change_2"; addr $a3c2; }; label { name "l01_map_change_3"; addr $a3cc; }; range { name "zero_filler_a3d6"; start $a3d6; end $a3df; type bytetable; comment "probably just filler"; }; -range { name "l02_map"; start $A3e0; end $a497; type bytetable; comment "level map data starts here"; }; +range { name "l02_map"; start $A3e0; end $a445; type bytetable; comment "level map data starts here"; }; +range { name "l02_map_bombs"; start $A446; end $a476; type bytetable; }; +range { name "l02_bombs"; start $A477; end $a496; type bytetable; }; +range { name "l02_bombs_term"; start $A497; end $a497; type bytetable; }; + +range { name "data_a542"; start $A542; end $A5EF; type bytetable; comment "dunno, referenced by electrocution_bomb_pickup"; }; +range { name "l03_map"; start $A5F0; end $a62e; type bytetable; comment "level map data starts here"; }; +range { name "l03_map_bombs"; start $a62f; end $a653; type bytetable; }; +range { name "l03_bombs"; start $a654; end $a66b; type bytetable; }; +range { name "l03_bombs_term"; start $a66c; end $a66c; type bytetable; }; +range { name "l03_unkn"; start $a66d; end $a684; type bytetable; }; range { name "sfx_electrocution"; start $A52D; end $A53C; type bytetable; }; -range { name "data_a542"; start $A542; end $A68B; type bytetable; comment "dunno, referenced by electrocution_bomb_pickup"; }; -range { name "dumbwaiter_player"; start $a782; end $A826; type bytetable; comment "the dumbwaiters from level03. stored upside-down."; }; -label { name "dw_platform_player"; addr $A685; comment "horizontally moving platforms from level03"; }; -range { name "data_table_a8fd"; start $a8fd; end $A9C5; type bytetable; comment "dunno, referenced by routine at $A8D4"; }; +range { name "dumbwaiter_player"; start $a782; end $a78f; type bytetable; comment "the dumbwaiters from level03. stored upside-down. trailing 00's might just be filler."; }; +range { name "dw_platform_player"; start $A685; end $a68b; type bytetable; comment "horizontally moving platforms from level03"; }; + +range { name "l04_map"; start $a790; end $a7d4; type bytetable; comment "level map data starts here"; }; +range { name "l04_map_bombs"; start $a7d5; end $a805; type bytetable; }; +range { name "l04_bombs"; start $a806; end $a825; type bytetable; }; +range { name "l04_bombs_term"; start $a826; end $a826; type bytetable; }; + +range { name "l05_map"; start $aad0; end $ab41; type bytetable; comment "level map data starts here"; }; +range { name "l05_map_bombs"; start $ab42; end $ab6c; type bytetable; }; +range { name "l05_bombs"; start $ab6d; end $ab88; type bytetable; }; +range { name "l05_bombs_term"; start $ab89; end $ab89; type bytetable; }; +range { name "l05_map_changes"; start $ab8a; end $ac5f; type bytetable; }; + +range { name "data_table_a8fd"; start $a8fd; end $a91f; type bytetable; comment "dunno, referenced by routine at $A8D4"; }; +range { name "l06_map"; start $a920; end $a973; type bytetable; }; +range { name "l06_map_bombs"; start $a974; end $a9a4; type bytetable; }; +range { name "l06_bombs"; start $a9a5; end $a9c4; type bytetable; }; +range { name "l06_bombs_term"; start $a9c5; end $a9c5; type bytetable; }; + +range { name "l07_map"; start $ac60; end $acb9; type bytetable; }; +range { name "l07_map_bombs"; start $acba; end $ace4; type bytetable; }; +range { name "l07_bombs"; start $ace5; end $ad00; type bytetable; }; +range { name "l07_bombs_term"; start $ad01; end $ad01; type bytetable; }; +range { name "l07_map_changes"; start $ad02; end $ad67; type bytetable; }; + +range { name "data_table_adc7"; start $adc7; end $addf; type bytetable; comment "dunno, referenced by routines at $AD9E and $ADB5"; }; +range { name "l08_map"; start $ade0; end $ae4b; type bytetable; }; +range { name "l08_map_bombs"; start $ae4c; end $ae70; type bytetable; }; +range { name "l08_bombs"; start $ae71; end $ae88; type bytetable; }; +range { name "l08_bombs_term"; start $ae89; end $ae89; type bytetable; }; +range { name "l08_unkn0"; start $ae8a; end $ae9a; type bytetable; }; +label { name "spellbound_bomb_sub"; addr $AF23; }; +label { name "spellbound_init"; addr $AE9B; }; + +range { name "l09_real_map"; start $b000; end $b0a2; type bytetable; comment "blackout doesn't draw the map initially"; }; +#range { name "l09_map"; start $b0a2; end $b0a2; type bytetable; comment "blackout doesn't draw the map initially"; }; +#range { name "l09_map_bombs"; start $b072; end $b0a2; type bytetable; }; +label { name "l09_map_bombs"; addr $b072; size $21; }; +range { name "l09_bombs"; start $b0a3; end $b0c2; type bytetable; }; +range { name "l09_bombs_term"; start $b0c3; end $b0c3; type bytetable; }; +label { name "l09_map"; addr $b0a2; comment "blackout doesn't draw the map initially"; }; +label { name "blackout_bomb_sub"; addr $B121; }; +label { name "blackout_init"; addr $B0C4; }; +label { name "blackout_sub0"; addr $B140; }; + +label { name "herethere_sub0"; addr $B27E; }; +label { name "herethere_sub3"; addr $B2E0; }; +range { name "zero_filler_b1df"; start $b1df; end $b1df; type bytetable; }; +range { name "l10_map"; start $B1E0; end $b236; type bytetable; }; +range { name "l10_map_bombs"; start $b237; end $b25b; type bytetable; }; +range { name "l10_bombs"; start $b25c; end $b273; type bytetable; }; +range { name "l10_bombs_term"; start $b274; end $b274; type bytetable; }; +range { name "l10_unkn0"; start $b275; end $b27d; type bytetable; }; +label { name "herethere_bomb_sub"; addr $B2FD; }; + +label { name "hatch_sub0"; addr $B457; }; +label { name "hatch_sub1"; addr $B581; }; +label { name "hatch_sub3"; addr $B57C; }; +range { name "l11_map"; start $B320; end $b38e; type bytetable; }; +range { name "l11_map_bombs"; start $B38F; end $B3BC; type bytetable; }; +range { name "l11_bombs"; start $B3BD; end $b3da; type bytetable; }; +range { name "l11_bombs_term"; start $b3db; end $b3db; type bytetable; }; +range { name "l11_map_changes"; start $B3DC; end $b44b; type bytetable; }; +label { name "hatch_bomb_sub"; addr $B44C; }; + +label { name "hurr_sub0"; addr $b691; }; +label { name "hurr_sub1"; addr $b69b; }; +label { name "hurr_sub2"; addr $B709; }; +range { name "l12_map"; start $b590; end $b5d1; type bytetable; }; +range { name "l12_map_bombs"; start $b5d2; end $b5fc; type bytetable; }; +range { name "l12_bombs"; start $b5fd; end $b618; type bytetable; }; +range { name "l12_bombs_term"; start $b619; end $b619; type bytetable; }; +range { name "l12_map_changes"; start $b61a; end $b657; type bytetable; }; +range { name "l12_unkn0"; start $b658; end $b690; type bytetable; }; + range { name "map_aa90"; start $aa90; end $aabb; type bytetable; comment "dunno what this is for yet"; }; -range { name "map_aac8"; start $aac8; end $AD67; type bytetable; comment "dunno what this is for yet"; }; +range { name "map_aac8"; start $aac8; end $aacf; type bytetable; comment "dunno what this is for yet"; }; label { name "map_aaa6"; addr $aaa6; comment "referenced by routine at $AA82"; }; -range { name "data_table_adc7"; start $adc7; end $AE9A; type bytetable; comment "dunno, referenced by routines at $AD9E and $ADB5"; }; range { name "data_table_aea4"; start $aea4; end $af0f; type bytetable; comment "dunno"; }; -range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; type bytetable; comment "played once per correct letter at end of level08 (spellbound)"; }; +range { name "sfx_letter_bonus"; start $AFCB; end $afff; type bytetable; comment "played once per correct letter at end of level08 (spellbound)"; }; label { name "cue_letter_sfx"; addr $AFB9; comment "play sfx_letter_bonus"; }; -label { name "map_b000"; addr $b000; comment "referenced by routine at $B0C4"; }; label { name "stub"; addr $8405; comment "just an RTS"; }; range { name "data_table_85b6"; start $85b6; end $85bd; type bytetable; comment "used in vblank_imm_isr, not sure for what yet"; }; label { name "page6_initial_vectors_minus_one"; addr $85d3; comment "1-indexed"; }; @@ -356,10 +436,9 @@ label { name "sh_up_rope"; addr $9cc9; }; label { name "sh_down_rope"; addr $9cda; }; label { name "sh_9ceb"; addr $9ceb; comment "dunno what this is yet"; }; range { name "sprite_table"; start $9d00; end $9dff; type bytetable; comment "jumpman's animation frames and other sprites, seem to be 10 bytes per sprite"; }; -range { name "sxf_b319"; start $b319; end $B44B; type bytetable; comment "referenced by routine at $B2FD"; }; -range { name "data_table_b1df"; start $b1df; end $B27d; type bytetable; comment "dunno what this is for yet"; }; +range { name "sxf_b319"; start $b319; end $b31f; type bytetable; comment "referenced by routine at $B2FD"; }; range { name "data_table_b2a8"; start $b2a8; end $B2df; type bytetable; comment "dunno what this is for yet"; }; -range { name "data_table_b50b"; start $b50b; end $B57b; type bytetable; comment "dunno what this is for yet"; }; +range { name "hatch_table_b50b"; start $b50b; end $B57b; type bytetable; comment "dunno what this is for yet"; }; range { name "scores_screen_dlist"; start $8C52; end $8C67; type bytetable; comment "a GR.2-ish DL, with DLIs, screen mem at $3000, for player scores screen"; }; label { name "reyalp_msg_minus_one"; addr $8c67; }; label { name "show_reyalp_msg"; addr $8BC0; comment "shows PLAYER (backwards loop)"; }; diff --git a/mklevelinfo.pl b/mklevelinfo.pl index 5cc633f..e3c1492 100644 --- a/mklevelinfo.pl +++ b/mklevelinfo.pl @@ -69,10 +69,26 @@ EOF return $range; } +@lvnames = ( + "Nothing To It", + "Electrocution", + "Dumbwaiter", + "Hellstones", + "Figurits Revenge", + "Walls", + "Zig-Zag", + "Spellbound", + "Blackout", + "HereThereEverywhere", + "Hatchlings", + "Hurricane" +); + for $level (-610,-609,0..11) { $addr = 0xa000 + $level * 0x40; for $offset (sort { $a <=> $b } keys %struct) { my ($size, $label, $comment) = @{$struct{$offset}}; + $comment = "Descriptor for $lvnames[$level]. $comment" if $level >= 0 && $offset == 0; if($level == 0 && $offset == 0) { $comment = "64-byte level descriptors, 12 of them (1 per level). " . $comment; } -- cgit v1.2.3