From 44d935410e8e4b9d998ae516bc7175391750c9b6 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Fri, 2 Sep 2016 01:15:28 -0400 Subject: renumber levels so they match the displayed level number (1-based, 1st level = level01) --- jumpmanjr.dasm | 916 +++++++++++++++++++++++++------------------------- jumpmanjr.info | 840 ++++++++++++++++++++++----------------------- level_descriptors.txt | 14 +- level_maps.txt | 22 +- leveldesc.info | 800 +++++++++++++++++++++---------------------- main.info | 40 +-- mklevelinfo.pl | 6 +- 7 files changed, 1319 insertions(+), 1319 deletions(-) diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index 1d858f5..48718e2 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-09-01 23:57:51 +; Created: 2016-09-02 01:14:13 ; Input file: jumpmanjr.rom ; Page: 1 @@ -116,7 +116,7 @@ work_level_indirect_subs:= $079E ; pointer to list of indirect su work_level_sub_bomb:= $07A0 ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine work_level_sub_start:= $07A2 ; called at start of level, $06E6 for some levels, or else a ROM subroutine work_level_sub6 := $07A4 ; always $9740 aka game_main_loop -work_level_sub_eol:= $07A6 ; called at end of level (all bombs picked up). $06E6 for all but level07 +work_level_sub_eol:= $07A6 ; called at end of level (all bombs picked up). $06E6 for all but level08 work_level_offs_40:= $07A8 ; all zeroes work_level_colpf3:= $07AE ; color (not sure what gets drawn in this color yet) work_level_colpf0:= $07AF ; color for girders and up-ropes @@ -125,7 +125,7 @@ work_level_colpf2:= $07B1 ; color for bombs work_level_offs_50:= $07B2 ; unknown work_level_offs_55:= $07B7 ; unknown, always $00 $00 $00 work_level_offs_58:= $07BA ; unknown, not a ROM address -work_level_offs_60:= $07BC ; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 +work_level_offs_60:= $07BC ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 cur_level_desc := $07C0 ; first 2 bytes are level number in screencodes cur_level_sub0 := $07C2 ; a subroutine cur_level_sub1 := $07C4 ; a subroutine @@ -149,7 +149,7 @@ cur_level_indirect_subs:= $07DE ; pointer to list of indirect su cur_level_sub_bomb:= $07E0 ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine cur_level_sub_start:= $07E2 ; called at start of level, $06E6 for some levels, or else a ROM subroutine cur_level_sub6 := $07E4 ; always $9740 aka game_main_loop -cur_level_sub_eol:= $07E6 ; called at end of level (all bombs picked up). $06E6 for all but level07 +cur_level_sub_eol:= $07E6 ; called at end of level (all bombs picked up). $06E6 for all but level08 cur_level_offs_40:= $07E8 ; all zeroes cur_level_colpf3:= $07EE ; color (not sure what gets drawn in this color yet) cur_level_colpf0:= $07EF ; color for girders and up-ropes @@ -158,7 +158,7 @@ cur_level_colpf2:= $07F1 ; color for bombs cur_level_offs_50:= $07F2 ; unknown cur_level_offs_55:= $07F7 ; unknown, always $00 $00 $00 cur_level_offs_58:= $07FA ; unknown, not a ROM address -cur_level_offs_60:= $07FC ; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 +cur_level_offs_60:= $07FC ; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 game_display_list:= $0881 ; display list for game board pm_memory := $2800 HPOSP0_minus_two:= $CFFE @@ -320,7 +320,7 @@ unused_vec_rts: ; the entry point for parsing the level map and drawing graphics from it. see level_maps.txt. caller must set $C0/$C1 to the address of the map data. modders beware: bogus map data can & will cause infinite loops. draw_map: ldy #$00 ; 8049 A0 00 .. -; $C0/$C1 points to $A300 (level00_desc) on the first call +; $C0/$C1 points to $A300 (level01_desc) on the first call dm_get_opcode: lda (dm_progctr),y ; 804B B1 C0 .. ; map opcodes: $FC = jump, $FF = end, $FD = set drawing direction, $FE = select graphics object @@ -1452,7 +1452,7 @@ store_bomb_coords: lsr a ; 8818 4A J lsr a ; 8819 4A J tay ; 881A A8 . -; some bombs redraw parts of the level (e.g. disappearing platforms on level00) +; some bombs redraw parts of the level (e.g. disappearing platforms on level01) change_map: lda work_level_map_changes ; 881B AD 9C 07 ... sta $B0 ; 881E 85 B0 .. @@ -4168,1291 +4168,1291 @@ 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 -level00_desc: +level01_desc: .byte $10,$11 ; A000 10 11 .. ; ---------------------------------------------------------------------------- ; a subroutine -level00_sub0: +level01_sub0: .addr L0000 ; A002 00 00 .. ; a subroutine -level00_sub1: +level01_sub1: .addr L0000 ; A004 00 00 .. ; a subroutine -level00_sub2: +level01_sub2: .addr L0000 ; A006 00 00 .. ; a subroutine -level00_sub3: +level01_sub3: .addr check_collisions_1 ; A008 73 8F s. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level00_num_bombs: +level01_num_bombs: .byte $0C ; A00A 0C . ; 0 = no bullets, range 0-4. -level00_bullet_max: +level01_bullet_max: .byte $01 ; A00B 01 . ; jumpman starting Y position -level00_y_start: +level01_y_start: .byte $A0 ; A00C A0 . ; jumpman starting X position -level00_x_start: +level01_x_start: .byte $7C ; A00D 7C | ; fudge factor for bomb locations, always $00 -level00_fudge_x: +level01_fudge_x: .byte $00 ; A00E 00 . ; fudge factor for bomb locations, always $06 -level00_fudge_y: +level01_fudge_y: .byte $06 ; A00F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level00_points_per_bomb: +level01_points_per_bomb: .byte $64 ; A010 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level00_time_bonus: +level01_time_bonus: .word $03E8 ; A011 E8 03 .. ; ---------------------------------------------------------------------------- ; always $00 -level00_offs_19: +level01_offs_19: .byte $00 ; A013 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level00_unkn_table0: +level01_unkn_table0: .addr L06DF ; A014 DF 06 .. ; used to draw the level initially (see also map_changes) -level00_map: - .addr l00_map ; A016 00 A3 .. +level01_map: + .addr l01_map ; A016 00 A3 .. ; start of bombs in map data (which must come last!) -level00_map_bombs: - .addr l00_map_bombs ; A018 66 A3 f. +level01_map_bombs: + .addr l01_map_bombs ; A018 66 A3 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. -level00_bomblist: - .addr l00_bombs ; A01A 8B A3 .. +level01_bomblist: + .addr l01_bombs ; A01A 8B A3 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level00_map_changes: - .addr l00_map_changes ; A01C A4 A3 .. +level01_map_changes: + .addr l01_map_changes ; A01C A4 A3 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level00_indirect_subs: +level01_indirect_subs: .byte $00,$00 ; A01E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level00_sub_bomb: +level01_sub_bomb: .addr L06E6 ; A020 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level00_sub_start: +level01_sub_start: .addr L06E6 ; A022 E6 06 .. ; always $9740 aka game_main_loop -level00_sub6: +level01_sub6: .addr game_main_loop ; A024 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level00_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level01_sub_eol: .addr L06E6 ; A026 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level00_offs_40: +level01_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A028 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level00_colpf3: +level01_colpf3: .byte $CA ; A02E CA . ; color for girders and up-ropes -level00_colpf0: +level01_colpf0: .byte $96 ; A02F 96 . ; color for ladders and down-ropes -level00_colpf1: +level01_colpf1: .byte $18 ; A030 18 . ; color for bombs -level00_colpf2: +level01_colpf2: .byte $5A ; A031 5A Z ; unknown -level00_offs_50: +level01_offs_50: .byte $0C,$24,$4C,$74,$8C ; A032 0C 24 4C 74 8C .$Lt. ; unknown, always $00 $00 $00 -level00_offs_55: +level01_offs_55: .byte $00,$00,$00 ; A037 00 00 00 ... ; unknown, not a ROM address -level00_offs_58: +level01_offs_58: .byte $1A,$7E ; A03A 1A 7E .~ -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level00_offs_60: +; 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 -level01_desc: +level02_desc: .byte $10,$12 ; A040 10 12 .. ; ---------------------------------------------------------------------------- ; a subroutine -level01_sub0: +level02_sub0: .addr electrocution_done ; A042 DD A4 .. ; a subroutine -level01_sub1: +level02_sub1: .addr electrocute ; A044 09 A5 .. ; a subroutine -level01_sub2: +level02_sub2: .addr L0000 ; A046 00 00 .. ; a subroutine -level01_sub3: - .addr level02_collisions ; A048 3D A5 =. +level02_sub3: + .addr level03_collisions ; A048 3D A5 =. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level01_num_bombs: +level02_num_bombs: .byte $10 ; A04A 10 . ; 0 = no bullets, range 0-4. -level01_bullet_max: +level02_bullet_max: .byte $02 ; A04B 02 . ; jumpman starting Y position -level01_y_start: +level02_y_start: .byte $20 ; A04C 20 ; jumpman starting X position -level01_x_start: +level02_x_start: .byte $7C ; A04D 7C | ; fudge factor for bomb locations, always $00 -level01_fudge_x: +level02_fudge_x: .byte $00 ; A04E 00 . ; fudge factor for bomb locations, always $06 -level01_fudge_y: +level02_fudge_y: .byte $06 ; A04F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level01_points_per_bomb: +level02_points_per_bomb: .byte $64 ; A050 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level01_time_bonus: +level02_time_bonus: .word $07D0 ; A051 D0 07 .. ; ---------------------------------------------------------------------------- ; always $00 -level01_offs_19: +level02_offs_19: .byte $00 ; A053 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level01_unkn_table0: +level02_unkn_table0: .addr LA5C2 ; A054 C2 A5 .. ; used to draw the level initially (see also map_changes) -level01_map: - .addr l01_map ; A056 E0 A3 .. +level02_map: + .addr l02_map ; A056 E0 A3 .. ; start of bombs in map data (which must come last!) -level01_map_bombs: +level02_map_bombs: .addr LA446 ; 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. -level01_bomblist: +level02_bomblist: .addr LA477 ; A05A 77 A4 w. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level01_map_changes: +level02_map_changes: .addr L0000 ; A05C 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level01_indirect_subs: +level02_indirect_subs: .byte $00,$00 ; A05E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level01_sub_bomb: +level02_sub_bomb: .addr electrocution_bomb_pickup ; A060 98 A4 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level01_sub_start: +level02_sub_start: .addr L8036 ; A062 36 80 6. ; always $9740 aka game_main_loop -level01_sub6: +level02_sub6: .addr game_main_loop ; A064 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level01_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level02_sub_eol: .addr L06E6 ; A066 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level01_offs_40: +level02_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A068 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level01_colpf3: +level02_colpf3: .byte $6A ; A06E 6A j ; color for girders and up-ropes -level01_colpf0: +level02_colpf0: .byte $08 ; A06F 08 . ; color for ladders and down-ropes -level01_colpf1: +level02_colpf1: .byte $C6 ; A070 C6 . ; color for bombs -level01_colpf2: +level02_colpf2: .byte $1A ; A071 1A . ; unknown -level01_offs_50: +level02_offs_50: .byte $18,$4C,$80,$00,$00 ; A072 18 4C 80 00 00 .L... ; unknown, always $00 $00 $00 -level01_offs_55: +level02_offs_55: .byte $00,$00,$00 ; A077 00 00 00 ... ; unknown, not a ROM address -level01_offs_58: +level02_offs_58: .byte $02,$94 ; A07A 02 94 .. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level01_offs_60: +; 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 -level02_desc: +level03_desc: .byte $10,$13 ; A080 10 13 .. ; ---------------------------------------------------------------------------- ; a subroutine -level02_sub0: +level03_sub0: .addr dumbwaiter_sub0 ; A082 BD A6 .. ; a subroutine -level02_sub1: +level03_sub1: .addr L0000 ; A084 00 00 .. ; a subroutine -level02_sub2: +level03_sub2: .addr L0000 ; A086 00 00 .. ; a subroutine -level02_sub3: +level03_sub3: .addr dumbwaiter_sub3 ; A088 24 A7 $. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level02_num_bombs: +level03_num_bombs: .byte $0C ; A08A 0C . ; 0 = no bullets, range 0-4. -level02_bullet_max: +level03_bullet_max: .byte $00 ; A08B 00 . ; jumpman starting Y position -level02_y_start: +level03_y_start: .byte $40 ; A08C 40 @ ; jumpman starting X position -level02_x_start: +level03_x_start: .byte $B4 ; A08D B4 . ; fudge factor for bomb locations, always $00 -level02_fudge_x: +level03_fudge_x: .byte $00 ; A08E 00 . ; fudge factor for bomb locations, always $06 -level02_fudge_y: +level03_fudge_y: .byte $06 ; A08F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level02_points_per_bomb: +level03_points_per_bomb: .byte $64 ; A090 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level02_time_bonus: +level03_time_bonus: .word $09C4 ; A091 C4 09 .. ; ---------------------------------------------------------------------------- ; always $00 -level02_offs_19: +level03_offs_19: .byte $00 ; A093 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level02_unkn_table0: +level03_unkn_table0: .addr LA66D ; A094 6D A6 m. ; used to draw the level initially (see also map_changes) -level02_map: +level03_map: .addr LA5F0 ; A096 F0 A5 .. ; start of bombs in map data (which must come last!) -level02_map_bombs: +level03_map_bombs: .addr LA62F ; 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. -level02_bomblist: +level03_bomblist: .addr LA654 ; A09A 54 A6 T. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level02_map_changes: +level03_map_changes: .addr L0000 ; A09C 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level02_indirect_subs: +level03_indirect_subs: .byte $00,$00 ; A09E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level02_sub_bomb: +level03_sub_bomb: .addr L06E6 ; A0A0 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level02_sub_start: +level03_sub_start: .addr dumbwaiter_setup ; A0A2 8C A6 .. ; always $9740 aka game_main_loop -level02_sub6: +level03_sub6: .addr game_main_loop ; A0A4 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level02_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level03_sub_eol: .addr L06E6 ; A0A6 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level02_offs_40: +level03_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A0A8 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level02_colpf3: +level03_colpf3: .byte $1A ; A0AE 1A . ; color for girders and up-ropes -level02_colpf0: +level03_colpf0: .byte $C6 ; A0AF C6 . ; color for ladders and down-ropes -level02_colpf1: +level03_colpf1: .byte $96 ; A0B0 96 . ; color for bombs -level02_colpf2: +level03_colpf2: .byte $1A ; A0B1 1A . ; unknown -level02_offs_50: +level03_offs_50: .byte $0C,$8C,$00,$00,$00 ; A0B2 0C 8C 00 00 00 ..... ; unknown, always $00 $00 $00 -level02_offs_55: +level03_offs_55: .byte $00,$00,$00 ; A0B7 00 00 00 ... ; unknown, not a ROM address -level02_offs_58: +level03_offs_58: .byte $00,$00 ; A0BA 00 00 .. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level02_offs_60: +; 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 -level03_desc: +level04_desc: .byte $10,$14 ; A0C0 10 14 .. ; ---------------------------------------------------------------------------- ; a subroutine -level03_sub0: +level04_sub0: .addr hellstones_sub0 ; A0C2 36 A8 6. ; a subroutine -level03_sub1: +level04_sub1: .addr L0000 ; A0C4 00 00 .. ; a subroutine -level03_sub2: +level04_sub2: .addr L0000 ; A0C6 00 00 .. ; a subroutine -level03_sub3: +level04_sub3: .addr hellstones_sub3 ; A0C8 27 A8 '. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level03_num_bombs: +level04_num_bombs: .byte $10 ; A0CA 10 . ; 0 = no bullets, range 0-4. -level03_bullet_max: +level04_bullet_max: .byte $00 ; A0CB 00 . ; jumpman starting Y position -level03_y_start: +level04_y_start: .byte $C0 ; A0CC C0 . ; jumpman starting X position -level03_x_start: +level04_x_start: .byte $7C ; A0CD 7C | ; fudge factor for bomb locations, always $00 -level03_fudge_x: +level04_fudge_x: .byte $00 ; A0CE 00 . ; fudge factor for bomb locations, always $06 -level03_fudge_y: +level04_fudge_y: .byte $06 ; A0CF 06 . ; points awarded per bomb pickup (always $64 aka 100) -level03_points_per_bomb: +level04_points_per_bomb: .byte $64 ; A0D0 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level03_time_bonus: +level04_time_bonus: .word $07D0 ; A0D1 D0 07 .. ; ---------------------------------------------------------------------------- ; always $00 -level03_offs_19: +level04_offs_19: .byte $00 ; A0D3 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level03_unkn_table0: +level04_unkn_table0: .addr L06DF ; A0D4 DF 06 .. ; used to draw the level initially (see also map_changes) -level03_map: +level04_map: .addr LA790 ; A0D6 90 A7 .. ; start of bombs in map data (which must come last!) -level03_map_bombs: +level04_map_bombs: .addr LA7D5 ; 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. -level03_bomblist: +level04_bomblist: .addr LA806 ; A0DA 06 A8 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level03_map_changes: +level04_map_changes: .addr L0000 ; A0DC 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level03_indirect_subs: +level04_indirect_subs: .byte $00,$00 ; A0DE 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level03_sub_bomb: +level04_sub_bomb: .addr L06E6 ; A0E0 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level03_sub_start: +level04_sub_start: .addr L8036 ; A0E2 36 80 6. ; always $9740 aka game_main_loop -level03_sub6: +level04_sub6: .addr game_main_loop ; A0E4 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level03_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level04_sub_eol: .addr L06E6 ; A0E6 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level03_offs_40: +level04_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A0E8 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level03_colpf3: +level04_colpf3: .byte $CA ; A0EE CA . ; color for girders and up-ropes -level03_colpf0: +level04_colpf0: .byte $96 ; A0EF 96 . ; color for ladders and down-ropes -level03_colpf1: +level04_colpf1: .byte $18 ; A0F0 18 . ; color for bombs -level03_colpf2: +level04_colpf2: .byte $5A ; A0F1 5A Z ; unknown -level03_offs_50: +level04_offs_50: .byte $4C,$18,$2C,$80,$6C ; A0F2 4C 18 2C 80 6C L.,.l ; unknown, always $00 $00 $00 -level03_offs_55: +level04_offs_55: .byte $00,$00,$00 ; A0F7 00 00 00 ... ; unknown, not a ROM address -level03_offs_58: +level04_offs_58: .byte $00,$00 ; A0FA 00 00 .. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level03_offs_60: +; 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 -level04_desc: +level05_desc: .byte $10,$15 ; A100 10 15 .. ; ---------------------------------------------------------------------------- ; a subroutine -level04_sub0: +level05_sub0: .addr L0000 ; A102 00 00 .. ; a subroutine -level04_sub1: +level05_sub1: .addr L0000 ; A104 00 00 .. ; a subroutine -level04_sub2: +level05_sub2: .addr L0000 ; A106 00 00 .. ; a subroutine -level04_sub3: +level05_sub3: .addr check_collisions_1 ; A108 73 8F s. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level04_num_bombs: +level05_num_bombs: .byte $0E ; A10A 0E . ; 0 = no bullets, range 0-4. -level04_bullet_max: +level05_bullet_max: .byte $02 ; A10B 02 . ; jumpman starting Y position -level04_y_start: +level05_y_start: .byte $C0 ; A10C C0 . ; jumpman starting X position -level04_x_start: +level05_x_start: .byte $34 ; A10D 34 4 ; fudge factor for bomb locations, always $00 -level04_fudge_x: +level05_fudge_x: .byte $00 ; A10E 00 . ; fudge factor for bomb locations, always $06 -level04_fudge_y: +level05_fudge_y: .byte $06 ; A10F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level04_points_per_bomb: +level05_points_per_bomb: .byte $64 ; A110 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level04_time_bonus: +level05_time_bonus: .word $07D0 ; A111 D0 07 .. ; ---------------------------------------------------------------------------- ; always $00 -level04_offs_19: +level05_offs_19: .byte $00 ; A113 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level04_unkn_table0: +level05_unkn_table0: .addr L06DF ; A114 DF 06 .. ; used to draw the level initially (see also map_changes) -level04_map: +level05_map: .addr LAAD0 ; A116 D0 AA .. ; start of bombs in map data (which must come last!) -level04_map_bombs: +level05_map_bombs: .addr LAB42 ; 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. -level04_bomblist: +level05_bomblist: .addr LAB6D ; A11A 6D AB m. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level04_map_changes: +level05_map_changes: .addr LAB8A ; A11C 8A AB .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level04_indirect_subs: +level05_indirect_subs: .byte $00,$00 ; A11E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level04_sub_bomb: +level05_sub_bomb: .addr L06E6 ; A120 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level04_sub_start: +level05_sub_start: .addr L06E6 ; A122 E6 06 .. ; always $9740 aka game_main_loop -level04_sub6: +level05_sub6: .addr game_main_loop ; A124 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level04_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level05_sub_eol: .addr L06E6 ; A126 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level04_offs_40: +level05_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A128 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level04_colpf3: +level05_colpf3: .byte $6A ; A12E 6A j ; color for girders and up-ropes -level04_colpf0: +level05_colpf0: .byte $08 ; A12F 08 . ; color for ladders and down-ropes -level04_colpf1: +level05_colpf1: .byte $C6 ; A130 C6 . ; color for bombs -level04_colpf2: +level05_colpf2: .byte $1A ; A131 1A . ; unknown -level04_offs_50: +level05_offs_50: .byte $0C,$22,$84,$8E,$00 ; A132 0C 22 84 8E 00 ."... ; unknown, always $00 $00 $00 -level04_offs_55: +level05_offs_55: .byte $00,$00,$00 ; A137 00 00 00 ... ; unknown, not a ROM address -level04_offs_58: +level05_offs_58: .byte $96,$00 ; A13A 96 00 .. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level04_offs_60: +; 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 -level05_desc: +level06_desc: .byte $10,$16 ; A140 10 16 .. ; ---------------------------------------------------------------------------- ; a subroutine -level05_sub0: +level06_sub0: .addr LAA3A ; A142 3A AA :. ; a subroutine -level05_sub1: +level06_sub1: .addr LAA35 ; A144 35 AA 5. ; a subroutine -level05_sub2: +level06_sub2: .addr LAA55 ; A146 55 AA U. ; a subroutine -level05_sub3: +level06_sub3: .addr LAABC ; A148 BC AA .. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level05_num_bombs: +level06_num_bombs: .byte $10 ; A14A 10 . ; 0 = no bullets, range 0-4. -level05_bullet_max: +level06_bullet_max: .byte $00 ; A14B 00 . ; jumpman starting Y position -level05_y_start: +level06_y_start: .byte $80 ; A14C 80 . ; jumpman starting X position -level05_x_start: +level06_x_start: .byte $34 ; A14D 34 4 ; fudge factor for bomb locations, always $00 -level05_fudge_x: +level06_fudge_x: .byte $00 ; A14E 00 . ; fudge factor for bomb locations, always $06 -level05_fudge_y: +level06_fudge_y: .byte $06 ; A14F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level05_points_per_bomb: +level06_points_per_bomb: .byte $64 ; A150 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level05_time_bonus: +level06_time_bonus: .word $05DC ; A151 DC 05 .. ; ---------------------------------------------------------------------------- ; always $00 -level05_offs_19: +level06_offs_19: .byte $00 ; A153 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level05_unkn_table0: +level06_unkn_table0: .addr L06DF ; A154 DF 06 .. ; used to draw the level initially (see also map_changes) -level05_map: +level06_map: .addr LA920 ; A156 20 A9 . ; start of bombs in map data (which must come last!) -level05_map_bombs: +level06_map_bombs: .addr LA974 ; 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. -level05_bomblist: +level06_bomblist: .addr LA9A5 ; A15A A5 A9 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level05_map_changes: +level06_map_changes: .addr L0000 ; A15C 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level05_indirect_subs: +level06_indirect_subs: .byte $00,$00 ; A15E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level05_sub_bomb: +level06_sub_bomb: .addr LAA73 ; A160 73 AA s. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level05_sub_start: +level06_sub_start: .addr LA9C6 ; A162 C6 A9 .. ; always $9740 aka game_main_loop -level05_sub6: +level06_sub6: .addr game_main_loop ; A164 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level05_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level06_sub_eol: .addr L06E6 ; A166 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level05_offs_40: +level06_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A168 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level05_colpf3: +level06_colpf3: .byte $56 ; A16E 56 V ; color for girders and up-ropes -level05_colpf0: +level06_colpf0: .byte $C6 ; A16F C6 . ; color for ladders and down-ropes -level05_colpf1: +level06_colpf1: .byte $96 ; A170 96 . ; color for bombs -level05_colpf2: +level06_colpf2: .byte $28 ; A171 28 ( ; unknown -level05_offs_50: +level06_offs_50: .byte $04,$30,$68,$94,$00 ; A172 04 30 68 94 00 .0h.. ; unknown, always $00 $00 $00 -level05_offs_55: +level06_offs_55: .byte $00,$00,$00 ; A177 00 00 00 ... ; unknown, not a ROM address -level05_offs_58: +level06_offs_58: .byte $4C,$FF ; A17A 4C FF L. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level05_offs_60: +; 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 -level06_desc: +level07_desc: .byte $10,$17 ; A180 10 17 .. ; ---------------------------------------------------------------------------- ; a subroutine -level06_sub0: +level07_sub0: .addr zigzag_sub0 ; A182 68 AD h. ; a subroutine -level06_sub1: +level07_sub1: .addr L0000 ; A184 00 00 .. ; a subroutine -level06_sub2: +level07_sub2: .addr L0000 ; A186 00 00 .. ; a subroutine -level06_sub3: +level07_sub3: .addr check_collisions_1 ; A188 73 8F s. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level06_num_bombs: +level07_num_bombs: .byte $0E ; A18A 0E . ; 0 = no bullets, range 0-4. -level06_bullet_max: +level07_bullet_max: .byte $03 ; A18B 03 . ; jumpman starting Y position -level06_y_start: +level07_y_start: .byte $C0 ; A18C C0 . ; jumpman starting X position -level06_x_start: +level07_x_start: .byte $7C ; A18D 7C | ; fudge factor for bomb locations, always $00 -level06_fudge_x: +level07_fudge_x: .byte $00 ; A18E 00 . ; fudge factor for bomb locations, always $06 -level06_fudge_y: +level07_fudge_y: .byte $06 ; A18F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level06_points_per_bomb: +level07_points_per_bomb: .byte $64 ; A190 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level06_time_bonus: +level07_time_bonus: .word $05DC ; A191 DC 05 .. ; ---------------------------------------------------------------------------- ; always $00 -level06_offs_19: +level07_offs_19: .byte $00 ; A193 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level06_unkn_table0: +level07_unkn_table0: .addr L06DF ; A194 DF 06 .. ; used to draw the level initially (see also map_changes) -level06_map: +level07_map: .addr LAC60 ; A196 60 AC `. ; start of bombs in map data (which must come last!) -level06_map_bombs: +level07_map_bombs: .addr LACBA ; 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. -level06_bomblist: +level07_bomblist: .addr LACE5 ; A19A E5 AC .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level06_map_changes: +level07_map_changes: .addr LAD02 ; A19C 02 AD .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level06_indirect_subs: +level07_indirect_subs: .byte $00,$00 ; A19E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level06_sub_bomb: +level07_sub_bomb: .addr L06E6 ; A1A0 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level06_sub_start: +level07_sub_start: .addr L8036 ; A1A2 36 80 6. ; always $9740 aka game_main_loop -level06_sub6: +level07_sub6: .addr game_main_loop ; A1A4 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level06_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level07_sub_eol: .addr L06E6 ; A1A6 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level06_offs_40: +level07_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A1A8 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level06_colpf3: +level07_colpf3: .byte $CA ; A1AE CA . ; color for girders and up-ropes -level06_colpf0: +level07_colpf0: .byte $96 ; A1AF 96 . ; color for ladders and down-ropes -level06_colpf1: +level07_colpf1: .byte $18 ; A1B0 18 . ; color for bombs -level06_colpf2: +level07_colpf2: .byte $5A ; A1B1 5A Z ; unknown -level06_offs_50: +level07_offs_50: .byte $0C,$4C,$8C,$00,$00 ; A1B2 0C 4C 8C 00 00 .L... ; unknown, always $00 $00 $00 -level06_offs_55: +level07_offs_55: .byte $00,$00,$00 ; A1B7 00 00 00 ... ; unknown, not a ROM address -level06_offs_58: +level07_offs_58: .byte $1C,$7E ; A1BA 1C 7E .~ -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level06_offs_60: +; 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 -level07_desc: +level08_desc: .byte $10,$18 ; A1C0 10 18 .. ; ---------------------------------------------------------------------------- ; a subroutine -level07_sub0: +level08_sub0: .addr LAF1C ; A1C2 1C AF .. ; a subroutine -level07_sub1: +level08_sub1: .addr L0000 ; A1C4 00 00 .. ; a subroutine -level07_sub2: +level08_sub2: .addr L0000 ; A1C6 00 00 .. ; a subroutine -level07_sub3: +level08_sub3: .addr check_collisions_1 ; A1C8 73 8F s. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level07_num_bombs: +level08_num_bombs: .byte $0C ; A1CA 0C . ; 0 = no bullets, range 0-4. -level07_bullet_max: +level08_bullet_max: .byte $02 ; A1CB 02 . ; jumpman starting Y position -level07_y_start: +level08_y_start: .byte $20 ; A1CC 20 ; jumpman starting X position -level07_x_start: +level08_x_start: .byte $7C ; A1CD 7C | ; fudge factor for bomb locations, always $00 -level07_fudge_x: +level08_fudge_x: .byte $00 ; A1CE 00 . ; fudge factor for bomb locations, always $06 -level07_fudge_y: +level08_fudge_y: .byte $06 ; A1CF 06 . ; points awarded per bomb pickup (always $64 aka 100) -level07_points_per_bomb: +level08_points_per_bomb: .byte $64 ; A1D0 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level07_time_bonus: +level08_time_bonus: .word $05DC ; A1D1 DC 05 .. ; ---------------------------------------------------------------------------- ; always $00 -level07_offs_19: +level08_offs_19: .byte $00 ; A1D3 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level07_unkn_table0: +level08_unkn_table0: .addr LAE8A ; A1D4 8A AE .. ; used to draw the level initially (see also map_changes) -level07_map: +level08_map: .addr LADE0 ; A1D6 E0 AD .. ; start of bombs in map data (which must come last!) -level07_map_bombs: +level08_map_bombs: .addr LAE4C ; 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. -level07_bomblist: +level08_bomblist: .addr LAE71 ; A1DA 71 AE q. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level07_map_changes: +level08_map_changes: .addr L0000 ; A1DC 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level07_indirect_subs: +level08_indirect_subs: .byte $00,$00 ; A1DE 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level07_sub_bomb: +level08_sub_bomb: .addr LAF23 ; A1E0 23 AF #. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level07_sub_start: +level08_sub_start: .addr LAE9B ; A1E2 9B AE .. ; always $9740 aka game_main_loop -level07_sub6: +level08_sub6: .addr game_main_loop ; A1E4 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level07_sub_eol: - .addr level07_letters ; A1E6 58 AF X. +; called at end of level (all bombs picked up). $06E6 for all but level08 +level08_sub_eol: + .addr level08_letters ; A1E6 58 AF X. ; ---------------------------------------------------------------------------- ; all zeroes -level07_offs_40: +level08_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A1E8 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level07_colpf3: +level08_colpf3: .byte $6A ; A1EE 6A j ; color for girders and up-ropes -level07_colpf0: +level08_colpf0: .byte $08 ; A1EF 08 . ; color for ladders and down-ropes -level07_colpf1: +level08_colpf1: .byte $C6 ; A1F0 C6 . ; color for bombs -level07_colpf2: +level08_colpf2: .byte $1A ; A1F1 1A . ; unknown -level07_offs_50: +level08_offs_50: .byte $0C,$30,$68,$8C,$00 ; A1F2 0C 30 68 8C 00 .0h.. ; unknown, always $00 $00 $00 -level07_offs_55: +level08_offs_55: .byte $00,$00,$00 ; A1F7 00 00 00 ... ; unknown, not a ROM address -level07_offs_58: +level08_offs_58: .byte $40,$56 ; A1FA 40 56 @V -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level07_offs_60: +; 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 -level08_desc: +level09_desc: .byte $10,$19 ; A200 10 19 .. ; ---------------------------------------------------------------------------- ; a subroutine -level08_sub0: +level09_sub0: .addr LB140 ; A202 40 B1 @. ; a subroutine -level08_sub1: +level09_sub1: .addr L0000 ; A204 00 00 .. ; a subroutine -level08_sub2: +level09_sub2: .addr L0000 ; A206 00 00 .. ; a subroutine -level08_sub3: +level09_sub3: .addr L0000 ; A208 00 00 .. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level08_num_bombs: +level09_num_bombs: .byte $08 ; A20A 08 . ; 0 = no bullets, range 0-4. -level08_bullet_max: +level09_bullet_max: .byte $00 ; A20B 00 . ; jumpman starting Y position -level08_y_start: +level09_y_start: .byte $C0 ; A20C C0 . ; jumpman starting X position -level08_x_start: +level09_x_start: .byte $9E ; A20D 9E . ; fudge factor for bomb locations, always $00 -level08_fudge_x: +level09_fudge_x: .byte $00 ; A20E 00 . ; fudge factor for bomb locations, always $06 -level08_fudge_y: +level09_fudge_y: .byte $06 ; A20F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level08_points_per_bomb: +level09_points_per_bomb: .byte $64 ; A210 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level08_time_bonus: +level09_time_bonus: .word $07D0 ; A211 D0 07 .. ; ---------------------------------------------------------------------------- ; always $00 -level08_offs_19: +level09_offs_19: .byte $00 ; A213 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level08_unkn_table0: +level09_unkn_table0: .addr L06DF ; A214 DF 06 .. ; used to draw the level initially (see also map_changes) -level08_map: +level09_map: .addr LB0A2 ; A216 A2 B0 .. ; start of bombs in map data (which must come last!) -level08_map_bombs: +level09_map_bombs: .addr LB072 ; 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. -level08_bomblist: +level09_bomblist: .addr LB0A3 ; A21A A3 B0 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level08_map_changes: +level09_map_changes: .addr L0000 ; A21C 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level08_indirect_subs: +level09_indirect_subs: .byte $00,$00 ; A21E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level08_sub_bomb: +level09_sub_bomb: .addr LB121 ; A220 21 B1 !. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level08_sub_start: +level09_sub_start: .addr LB0C4 ; A222 C4 B0 .. ; always $9740 aka game_main_loop -level08_sub6: +level09_sub6: .addr game_main_loop ; A224 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level08_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level09_sub_eol: .addr L06E6 ; A226 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level08_offs_40: +level09_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A228 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level08_colpf3: +level09_colpf3: .byte $1A ; A22E 1A . ; color for girders and up-ropes -level08_colpf0: +level09_colpf0: .byte $C6 ; A22F C6 . ; color for ladders and down-ropes -level08_colpf1: +level09_colpf1: .byte $96 ; A230 96 . ; color for bombs -level08_colpf2: +level09_colpf2: .byte $28 ; A231 28 ( ; unknown -level08_offs_50: +level09_offs_50: .byte $0C,$3C,$00,$00,$8C ; A232 0C 3C 00 00 8C .<... ; unknown, always $00 $00 $00 -level08_offs_55: +level09_offs_55: .byte $00,$00,$00 ; A237 00 00 00 ... ; unknown, not a ROM address -level08_offs_58: +level09_offs_58: .byte $80,$00 ; A23A 80 00 .. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level08_offs_60: +; 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 -level09_desc: +level10_desc: .byte $11,$10 ; A240 11 10 .. ; ---------------------------------------------------------------------------- ; a subroutine -level09_sub0: +level10_sub0: .addr LB27E ; A242 7E B2 ~. ; a subroutine -level09_sub1: +level10_sub1: .addr L0000 ; A244 00 00 .. ; a subroutine -level09_sub2: +level10_sub2: .addr L0000 ; A246 00 00 .. ; a subroutine -level09_sub3: +level10_sub3: .addr LB2E0 ; A248 E0 B2 .. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level09_num_bombs: +level10_num_bombs: .byte $0C ; A24A 0C . ; 0 = no bullets, range 0-4. -level09_bullet_max: +level10_bullet_max: .byte $02 ; A24B 02 . ; jumpman starting Y position -level09_y_start: +level10_y_start: .byte $C0 ; A24C C0 . ; jumpman starting X position -level09_x_start: +level10_x_start: .byte $3C ; A24D 3C < ; fudge factor for bomb locations, always $00 -level09_fudge_x: +level10_fudge_x: .byte $00 ; A24E 00 . ; fudge factor for bomb locations, always $06 -level09_fudge_y: +level10_fudge_y: .byte $06 ; A24F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level09_points_per_bomb: +level10_points_per_bomb: .byte $64 ; A250 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level09_time_bonus: +level10_time_bonus: .word $05DC ; A251 DC 05 .. ; ---------------------------------------------------------------------------- ; always $00 -level09_offs_19: +level10_offs_19: .byte $00 ; A253 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level09_unkn_table0: +level10_unkn_table0: .addr LB275 ; A254 75 B2 u. ; used to draw the level initially (see also map_changes) -level09_map: +level10_map: .addr LB1E0 ; A256 E0 B1 .. ; start of bombs in map data (which must come last!) -level09_map_bombs: +level10_map_bombs: .addr LB237 ; 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. -level09_bomblist: +level10_bomblist: .addr LB25C ; A25A 5C B2 \. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level09_map_changes: +level10_map_changes: .addr L0000 ; A25C 00 00 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level09_indirect_subs: +level10_indirect_subs: .byte $00,$00 ; A25E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level09_sub_bomb: +level10_sub_bomb: .addr LB2FD ; A260 FD B2 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level09_sub_start: +level10_sub_start: .addr L8036 ; A262 36 80 6. ; always $9740 aka game_main_loop -level09_sub6: +level10_sub6: .addr game_main_loop ; A264 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level09_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level10_sub_eol: .addr L06E6 ; A266 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level09_offs_40: +level10_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A268 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level09_colpf3: +level10_colpf3: .byte $CA ; A26E CA . ; color for girders and up-ropes -level09_colpf0: +level10_colpf0: .byte $96 ; A26F 96 . ; color for ladders and down-ropes -level09_colpf1: +level10_colpf1: .byte $18 ; A270 18 . ; color for bombs -level09_colpf2: +level10_colpf2: .byte $5A ; A271 5A Z ; unknown -level09_offs_50: +level10_offs_50: .byte $0C,$40,$8C,$00,$00 ; A272 0C 40 8C 00 00 .@... ; unknown, always $00 $00 $00 -level09_offs_55: +level10_offs_55: .byte $00,$00,$00 ; A277 00 00 00 ... ; unknown, not a ROM address -level09_offs_58: +level10_offs_58: .byte $62,$00 ; A27A 62 00 b. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level09_offs_60: +; 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 -level10_desc: +level11_desc: .byte $11,$11 ; A280 11 11 .. ; ---------------------------------------------------------------------------- ; a subroutine -level10_sub0: +level11_sub0: .addr LB457 ; A282 57 B4 W. ; a subroutine -level10_sub1: +level11_sub1: .addr LB581 ; A284 81 B5 .. ; a subroutine -level10_sub2: +level11_sub2: .addr L0000 ; A286 00 00 .. ; a subroutine -level10_sub3: +level11_sub3: .addr LB57C ; A288 7C B5 |. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level10_num_bombs: +level11_num_bombs: .byte $0F ; A28A 0F . ; 0 = no bullets, range 0-4. -level10_bullet_max: +level11_bullet_max: .byte $00 ; A28B 00 . ; jumpman starting Y position -level10_y_start: +level11_y_start: .byte $B6 ; A28C B6 . ; jumpman starting X position -level10_x_start: +level11_x_start: .byte $C4 ; A28D C4 . ; fudge factor for bomb locations, always $00 -level10_fudge_x: +level11_fudge_x: .byte $00 ; A28E 00 . ; fudge factor for bomb locations, always $06 -level10_fudge_y: +level11_fudge_y: .byte $06 ; A28F 06 . ; points awarded per bomb pickup (always $64 aka 100) -level10_points_per_bomb: +level11_points_per_bomb: .byte $64 ; A290 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level10_time_bonus: +level11_time_bonus: .word $03E8 ; A291 E8 03 .. ; ---------------------------------------------------------------------------- ; always $00 -level10_offs_19: +level11_offs_19: .byte $00 ; A293 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level10_unkn_table0: +level11_unkn_table0: .addr data_table_b50b ; A294 0B B5 .. ; used to draw the level initially (see also map_changes) -level10_map: +level11_map: .addr LB320 ; A296 20 B3 . ; start of bombs in map data (which must come last!) -level10_map_bombs: +level11_map_bombs: .addr LB38F ; 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. -level10_bomblist: +level11_bomblist: .addr LB3BD ; A29A BD B3 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level10_map_changes: +level11_map_changes: .addr LB3DC ; A29C DC B3 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level10_indirect_subs: +level11_indirect_subs: .byte $00,$00 ; A29E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level10_sub_bomb: +level11_sub_bomb: .addr LB44C ; A2A0 4C B4 L. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level10_sub_start: +level11_sub_start: .addr L8036 ; A2A2 36 80 6. ; always $9740 aka game_main_loop -level10_sub6: +level11_sub6: .addr game_main_loop ; A2A4 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level10_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level11_sub_eol: .addr L06E6 ; A2A6 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level10_offs_40: +level11_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A2A8 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level10_colpf3: +level11_colpf3: .byte $6A ; A2AE 6A j ; color for girders and up-ropes -level10_colpf0: +level11_colpf0: .byte $08 ; A2AF 08 . ; color for ladders and down-ropes -level10_colpf1: +level11_colpf1: .byte $C6 ; A2B0 C6 . ; color for bombs -level10_colpf2: +level11_colpf2: .byte $1A ; A2B1 1A . ; unknown -level10_offs_50: +level11_offs_50: .byte $0C,$30,$54,$8C,$00 ; A2B2 0C 30 54 8C 00 .0T.. ; unknown, always $00 $00 $00 -level10_offs_55: +level11_offs_55: .byte $00,$00,$00 ; A2B7 00 00 00 ... ; unknown, not a ROM address -level10_offs_58: +level11_offs_58: .byte $00,$66 ; A2BA 00 66 .f -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level10_offs_60: +; 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 -level11_desc: +level12_desc: .byte $11,$12 ; A2C0 11 12 .. ; ---------------------------------------------------------------------------- ; a subroutine -level11_sub0: +level12_sub0: .addr LB691 ; A2C2 91 B6 .. ; a subroutine -level11_sub1: +level12_sub1: .addr LB69B ; A2C4 9B B6 .. ; a subroutine -level11_sub2: +level12_sub2: .addr LB709 ; A2C6 09 B7 .. ; a subroutine -level11_sub3: +level12_sub3: .addr check_collisions_1 ; A2C8 73 8F s. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level -level11_num_bombs: +level12_num_bombs: .byte $0E ; A2CA 0E . ; 0 = no bullets, range 0-4. -level11_bullet_max: +level12_bullet_max: .byte $00 ; A2CB 00 . ; jumpman starting Y position -level11_y_start: +level12_y_start: .byte $C0 ; A2CC C0 . ; jumpman starting X position -level11_x_start: +level12_x_start: .byte $7C ; A2CD 7C | ; fudge factor for bomb locations, always $00 -level11_fudge_x: +level12_fudge_x: .byte $00 ; A2CE 00 . ; fudge factor for bomb locations, always $06 -level11_fudge_y: +level12_fudge_y: .byte $06 ; A2CF 06 . ; points awarded per bomb pickup (always $64 aka 100) -level11_points_per_bomb: +level12_points_per_bomb: .byte $64 ; A2D0 64 d ; ---------------------------------------------------------------------------- ; amount of time bonus at start of level -level11_time_bonus: +level12_time_bonus: .word $09C4 ; A2D1 C4 09 .. ; ---------------------------------------------------------------------------- ; always $00 -level11_offs_19: +level12_offs_19: .byte $00 ; A2D3 00 . ; ---------------------------------------------------------------------------- ; pointer to ROM table or $06xx -level11_unkn_table0: +level12_unkn_table0: .addr LB658 ; A2D4 58 B6 X. ; used to draw the level initially (see also map_changes) -level11_map: +level12_map: .addr data_b590 ; A2D6 90 B5 .. ; start of bombs in map data (which must come last!) -level11_map_bombs: +level12_map_bombs: .addr LB5D2 ; 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. -level11_bomblist: +level12_bomblist: .addr LB5FD ; A2DA FD B5 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -level11_map_changes: +level12_map_changes: .addr LB61A ; A2DC 1A B6 .. ; ---------------------------------------------------------------------------- ; pointer to list of indirect subs, always $0000 in this game -level11_indirect_subs: +level12_indirect_subs: .byte $00,$00 ; A2DE 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine -level11_sub_bomb: +level12_sub_bomb: .addr L06E6 ; A2E0 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine -level11_sub_start: +level12_sub_start: .addr L8036 ; A2E2 36 80 6. ; always $9740 aka game_main_loop -level11_sub6: +level12_sub6: .addr game_main_loop ; A2E4 40 97 @. -; called at end of level (all bombs picked up). $06E6 for all but level07 -level11_sub_eol: +; called at end of level (all bombs picked up). $06E6 for all but level08 +level12_sub_eol: .addr L06E6 ; A2E6 E6 06 .. ; ---------------------------------------------------------------------------- ; all zeroes -level11_offs_40: +level12_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A2E8 00 00 00 00 00 00 ...... ; color (not sure what gets drawn in this color yet) -level11_colpf3: +level12_colpf3: .byte $08 ; A2EE 08 . ; color for girders and up-ropes -level11_colpf0: +level12_colpf0: .byte $C6 ; A2EF C6 . ; color for ladders and down-ropes -level11_colpf1: +level12_colpf1: .byte $96 ; A2F0 96 . ; color for bombs -level11_colpf2: +level12_colpf2: .byte $28 ; A2F1 28 ( ; unknown -level11_offs_50: +level12_offs_50: .byte $0C,$2A,$4C,$6A,$8C ; A2F2 0C 2A 4C 6A 8C .*Lj. ; unknown, always $00 $00 $00 -level11_offs_55: +level12_offs_55: .byte $00,$00,$00 ; A2F7 00 00 00 ... ; unknown, not a ROM address -level11_offs_58: +level12_offs_58: .byte $00,$00 ; A2FA 00 00 .. -; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -level11_offs_60: +; unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 +level12_offs_60: .byte $00,$00,$00,$00 ; A2FC 00 00 00 00 .... ; level map data starts here -l00_map:.byte $FE,$33,$9C,$FD,$04,$00,$44,$05 ; A300 FE 33 9C FD 04 00 44 05 .3....D. +l01_map:.byte $FE,$33,$9C,$FD,$04,$00,$44,$05 ; A300 FE 33 9C FD 04 00 44 05 .3....D. .byte $06,$04,$15,$0A,$74,$15,$0A,$24 ; A308 06 04 15 0A 74 15 0A 24 ....t..$ .byte $22,$02,$74,$22,$02,$24,$25,$16 ; A310 22 02 74 22 02 24 25 16 ".t".$%. .byte $04,$45,$04,$44,$45,$06,$8C,$45 ; A318 04 45 04 44 45 06 8C 45 .E.DE..E @@ -5466,39 +5466,39 @@ l00_map:.byte $FE,$33,$9C,$FD,$04,$00,$44,$05 ; A300 FE 33 9C FD 04 00 44 05 .byte $18,$0A,$FE,$DA,$9C,$1D,$38,$06 ; A358 18 0A FE DA 9C 1D 38 06 ......8. .byte $81,$38,$06,$FE,$B3,$9C ; A360 81 38 06 FE B3 9C .8.... ; gfx_draw instructions for bombs, used by bomb_pickup to get bomb coords. $ff terminated -l00_map_bombs: +l01_map_bombs: .byte $04,$12,$01,$38,$02,$01,$64,$02 ; A366 04 12 01 38 02 01 64 02 ...8..d. .byte $01,$98,$12,$01,$44,$22,$01,$58 ; A36E 01 98 12 01 44 22 01 58 ....D".X .byte $22,$01,$04,$42,$01,$98,$42,$01 ; A376 22 01 04 42 01 98 42 01 "..B..B. .byte $04,$52,$01,$38,$52,$01,$64,$52 ; A37E 04 52 01 38 52 01 64 52 .R.8R.dR .byte $01,$98,$52,$01,$FF ; A386 01 98 52 01 FF ..R.. ; 2 bytes per entry, terminated by $FF. 1st byte is coarse grid coords (top nybble = X, bottom = Y), 2nd byte is index into map_changes -l00_bombs: +l01_bombs: .byte $24,$00,$62,$10,$82,$20,$C4,$00 ; A38B 24 00 62 10 82 20 C4 00 $.b.. .. .byte $66,$30,$86,$40,$2A,$00,$CA,$00 ; A393 66 30 86 40 2A 00 CA 00 f0.@*... .byte $2C,$00,$6C,$00,$8C,$00,$CC,$00 ; A39B 2C 00 6C 00 8C 00 CC 00 ,.l..... -; terminator for l00_bombs -l00_bombs_term: +; terminator for l01_bombs +l01_bombs_term: .byte $FF ; A3A3 FF . ; ---------------------------------------------------------------------------- ; 0000 = no change -l00_map_changes: +l01_map_changes: .addr L0000 ; A3A4 00 00 .. - .addr l00_map_change_0 ; A3A6 AE A3 .. - .addr l00_map_change_1 ; A3A8 B8 A3 .. - .addr l00_map_change_2 ; A3AA C2 A3 .. - .addr l00_map_change_3 ; A3AC CC A3 .. + .addr l01_map_change_0 ; A3A6 AE A3 .. + .addr l01_map_change_1 ; A3A8 B8 A3 .. + .addr l01_map_change_2 ; A3AA C2 A3 .. + .addr l01_map_change_3 ; A3AC CC A3 .. ; ---------------------------------------------------------------------------- -l00_map_change_0: +l01_map_change_0: .byte $FE,$49,$9C,$FD,$04,$01,$64,$08 ; A3AE FE 49 9C FD 04 01 64 08 .I....d. .byte $02,$FF ; A3B6 02 FF .. -l00_map_change_1: +l01_map_change_1: .byte $FE,$49,$9C,$FD,$04,$FF,$34,$09 ; A3B8 FE 49 9C FD 04 FF 34 09 .I....4. .byte $02,$FF ; A3C0 02 FF .. -l00_map_change_2: +l01_map_change_2: .byte $FE,$49,$9C,$FD,$04,$00,$2C,$25 ; A3C2 FE 49 9C FD 04 00 2C 25 .I....,% .byte $05,$FF ; A3CA 05 FF .. -l00_map_change_3: +l01_map_change_3: .byte $FE,$49,$9C,$FD,$04,$00,$60,$25 ; A3CC FE 49 9C FD 04 00 60 25 .I....`% .byte $05,$FF ; A3D4 05 FF .. ; probably just filler @@ -5506,7 +5506,7 @@ zero_filler_a3d6: .byte $00,$00,$00,$00,$00,$00,$00,$00 ; A3D6 00 00 00 00 00 00 00 00 ........ .byte $00,$00 ; A3DE 00 00 .. ; level map data starts here -l01_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A3E0 FE 33 9C FD 04 00 04 05 .3...... +l02_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A3E0 FE 33 9C FD 04 00 04 05 .3...... .byte $08,$34,$05,$0E,$7C,$05,$08,$14 ; A3E8 08 34 05 0E 7C 05 08 14 .4..|... .byte $15,$04,$34,$15,$04,$5C,$15,$04 ; A3F0 15 04 34 15 04 5C 15 04 ..4..\.. .byte $7C,$15,$04,$04,$25,$10,$5C,$25 ; A3F8 7C 15 04 04 25 10 5C 25 |...%.\% @@ -5618,7 +5618,7 @@ sfx_electrocution: .byte $32,$02,$01,$81,$00,$1E,$02,$00 ; A535 32 02 01 81 00 1E 02 00 2....... ; ---------------------------------------------------------------------------- ; skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted -level02_collisions: +level03_collisions: lda #$00 ; A53D A9 00 .. jmp L8F79 ; A53F 4C 79 8F Ly. @@ -5671,7 +5671,7 @@ LA654: .byte $22,$00,$24,$00,$26,$00,$28,$00 ; A654 22 00 24 00 26 00 28 00 LA66D: .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 level02 +; horizontally moving platforms from level03 dw_platform_player: .byte $FF,$FF,$FF,$AA,$55,$FF,$FF ; A685 FF FF FF AA 55 FF FF ....U.. ; ---------------------------------------------------------------------------- @@ -5798,7 +5798,7 @@ LA779: lda player_y_pos ; A779 AD 83 06 LA781: rts ; A781 60 ` ; ---------------------------------------------------------------------------- -; the dumbwaiters from level02. stored upside-down. +; the dumbwaiters from level03. stored upside-down. 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 ...... @@ -6283,7 +6283,7 @@ LAE9B: jsr L8036 ; AE9B 20 36 80 data_table_aea4: .byte $18,$08,$38,$20,$00,$48,$30,$18 ; AEA4 18 08 38 20 00 48 30 18 ..8 .H0. .byte $28,$10,$10 ; AEAC 28 10 10 (.. -; letters for level07, spellbound (not ASCII or screencodes though) +; letters for level08, spellbound (not ASCII or screencodes though) epyx_jumpman: .byte $40,$29,$21,$11,$19,$11,$09,$01 ; AEAF 40 29 21 11 19 11 09 01 @)!..... .byte $49,$41,$39,$19,$31 ; AEB7 49 41 39 19 31 IA9.1 @@ -6336,14 +6336,14 @@ LAF3B: lda LAEBC,y ; AF3B B9 BC AE ; ---------------------------------------------------------------------------- ; called at end of Spellbound, adds up letter bonus -level07_letters: +level08_letters: lda work_level_num_bombs ; AF58 AD 8A 07 ... - beq l07_got_all ; AF5B F0 01 .. + beq l08_got_all ; AF5B F0 01 .. rts ; AF5D 60 ` ; ---------------------------------------------------------------------------- ; got all the bombs -l07_got_all: +l08_got_all: lda #$09 ; AF5E A9 09 .. sta player_speed ; AF60 8D 24 06 .$. lda #$00 ; AF63 A9 00 .. @@ -6401,7 +6401,7 @@ cue_letter_sfx: jmp LAF86 ; AFC8 4C 86 AF L.. ; ---------------------------------------------------------------------------- -; played once per correct letter at end of level07 (spellbound) +; played once per correct letter at end of level08 (spellbound) sfx_letter_bonus: .byte $01,$A5,$00,$18,$04,$F3,$04,$00 ; AFCB 01 A5 00 18 04 F3 04 00 ........ .byte $00,$00,$00,$00,$00,$00,$00,$00 ; AFD3 00 00 00 00 00 00 00 00 ........ @@ -6994,7 +6994,7 @@ LB75D: lda #$02 ; B75D A9 02 jmp LB724 ; B768 4C 24 B7 L$. ; ---------------------------------------------------------------------------- -; used in level11 +; used in level12 wind_table_1: .byte $01,$02,$03,$03,$03,$03 ; B76B 01 02 03 03 03 03 ...... wind_table_2: diff --git a/jumpmanjr.info b/jumpmanjr.info index 56c4e30..0bf6eca 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -52,10 +52,10 @@ 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 "level07_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; -label { name "l07_got_all"; addr $AF5E; comment "got all the bombs"; }; +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 "bonus_250_pts"; addr $AF96; comment "per letter"; }; -label { name "epyx_jumpman"; addr $AEAF; comment "letters for level07, spellbound (not ASCII or screencodes though)"; }; +label { name "epyx_jumpman"; addr $AEAF; comment "letters for level08, spellbound (not ASCII or screencodes though)"; }; label { name "jump_frame"; addr $06EB; comment "0 if not jumping, or frames since start of jump (range 1 to 21)"; }; range { name "code_99f7"; start $99F7; end $9A1B; type code; }; @@ -130,7 +130,7 @@ label { name "bomb_found"; addr $87E0; size 1; }; label { name "bombloc"; addr $B6; size 1; comment "bomb_pickup: position of the bomb Jumpman just touched, on 8x8 coarse grid"; }; label { name "mul_y"; addr $87EA; size 1; comment "multiply Y by 1.5 (only works because Y will always be even at this point)"; }; label { name "store_bomb_coords"; addr $87F2; size 1; comment "store actual bomb coordinates (not the coarse ones) for bomb subs to use"; }; -label { name "change_map"; addr $881B; size 1; comment "some bombs redraw parts of the level (e.g. disappearing platforms on level00)"; }; +label { name "change_map"; addr $881B; size 1; comment "some bombs redraw parts of the level (e.g. disappearing platforms on level01)"; }; label { name "check_ind_sub"; addr $8831; size 1; comment "see if this bomb calls an indirect sub (none of them do in this game, this is useless code)"; }; label { name "blistptr"; addr $B4; size 2; comment "bomb_pickup: points to current level's bomblist"; }; range { name "gr7_or_masks"; start $8143; end $8152; type bytetable; }; @@ -297,39 +297,39 @@ 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 "wind_table_1"; start $B76B; end $b7bf; type bytetable; comment "used in level11"; }; +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"; }; label { name "electrocution_done"; addr $A4DD; comment "turn off electrocution effect (?)"; }; label { name "electrocute"; addr $A509; comment "electrocution effect"; }; -label { name "level02_collisions"; addr $A53D; comment "skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted"; }; +label { name "level03_collisions"; addr $A53D; comment "skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted"; }; label { name "start_jump"; addr $99A0; comment "start jumping, play sfx_jump"; }; -range { name "l00_map"; start $A300; end $a365; type bytetable; comment "level map data starts here"; }; +range { name "l01_map"; start $A300; end $a365; type bytetable; comment "level map data starts here"; }; -range { name "l00_map_bombs"; start $A366; end $A38A; type bytetable; comment "gfx_draw instructions for bombs, used by bomb_pickup to get bomb coords. $ff terminated"; }; -range { name "l00_bombs"; start $A38B; end $a3a2; type bytetable; comment "2 bytes per entry, terminated by $FF. 1st byte is coarse grid coords (top nybble = X, bottom = Y), 2nd byte is index into map_changes"; }; -range { name "l00_bombs_term"; start $a3a3; end $a3a3; type bytetable; comment "terminator for l00_bombs"; }; -range { name "l00_map_changes"; start $A3A4; end $a3ad; type addrtable; comment "0000 = no change"; }; -range { name "l00_map_change_0"; start $A3AE; end $a3d5; type bytetable; }; -label { name "l00_map_change_1"; addr $a3b8; }; -label { name "l00_map_change_2"; addr $a3c2; }; -label { name "l00_map_change_3"; addr $a3cc; }; +range { name "l01_map_bombs"; start $A366; end $A38A; type bytetable; comment "gfx_draw instructions for bombs, used by bomb_pickup to get bomb coords. $ff terminated"; }; +range { name "l01_bombs"; start $A38B; end $a3a2; type bytetable; comment "2 bytes per entry, terminated by $FF. 1st byte is coarse grid coords (top nybble = X, bottom = Y), 2nd byte is index into map_changes"; }; +range { name "l01_bombs_term"; start $a3a3; end $a3a3; type bytetable; comment "terminator for l01_bombs"; }; +range { name "l01_map_changes"; start $A3A4; end $a3ad; type addrtable; comment "0000 = no change"; }; +range { name "l01_map_change_0"; start $A3AE; end $a3d5; type bytetable; }; +label { name "l01_map_change_1"; addr $a3b8; }; +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 "l01_map"; start $A3e0; end $a497; type bytetable; comment "level map data starts here"; }; +range { name "l02_map"; start $A3e0; end $a497; type bytetable; comment "level map data starts here"; }; 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 level02. stored upside-down."; }; -label { name "dw_platform_player"; addr $A685; comment "horizontally moving platforms from level02"; }; +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 "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"; }; 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 level07 (spellbound)"; }; +range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; 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"; }; @@ -578,7 +578,7 @@ label { name "xxx_level_something"; addr $8600; comment "gets called after the l label { name "xxx_level_something_jv"; addr $8009; comment "gets called after the level is drawn & the intro music stops, and also during the level (?)"; }; label { name "draw_map"; addr $8049; comment "the entry point for parsing the level map and drawing graphics from it. see level_maps.txt. caller must set $C0/$C1 to the address of the map data. modders beware: bogus map data can & will cause infinite loops."; }; label { name "draw_map_jv"; addr $8000; comment "the entry point for parsing the level map and drawing graphics from it. see level_maps.txt."; }; -label { name "dm_get_opcode"; addr $804B; comment "$C0/$C1 points to $A300 (level00_desc) on the first call"; }; +label { name "dm_get_opcode"; addr $804B; comment "$C0/$C1 points to $A300 (level01_desc) on the first call"; }; label { name "dm_switch_opcode"; addr $804D; comment "map opcodes: $FC = jump, $FF = end, $FD = set drawing direction, $FE = select graphics object"; }; label { name "dm_draw_gfx"; addr $8090; comment "handle gfx_draw opcode"; }; label { name "dm_jump"; addr $805C; comment "handle gfx_jump opcode"; }; @@ -632,7 +632,7 @@ label { name "work_level_indirect_subs"; addr $079e; size 2; comment "pointer to label { name "work_level_sub_bomb"; addr $07a0; size 2; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; label { name "work_level_sub_start"; addr $07a2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; label { name "work_level_sub6"; addr $07a4; size 2; comment "always $9740 aka game_main_loop"; }; -label { name "work_level_sub_eol"; addr $07a6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; +label { name "work_level_sub_eol"; addr $07a6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; label { name "work_level_offs_40"; addr $07a8; size 6; comment "all zeroes"; }; label { name "work_level_colpf3"; addr $07ae; size 1; comment "color (not sure what gets drawn in this color yet)"; }; label { name "work_level_colpf0"; addr $07af; size 1; comment "color for girders and up-ropes"; }; @@ -641,7 +641,7 @@ label { name "work_level_colpf2"; addr $07b1; size 1; comment "color for bombs"; label { name "work_level_offs_50"; addr $07b2; size 5; comment "unknown"; }; label { name "work_level_offs_55"; addr $07b7; size 3; comment "unknown, always $00 $00 $00"; }; label { name "work_level_offs_58"; addr $07ba; size 2; comment "unknown, not a ROM address"; }; -label { name "work_level_offs_60"; addr $07bc; size 4; comment "unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; +label { name "work_level_offs_60"; addr $07bc; size 4; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; label { name "cur_level_desc"; addr $07c0; size 2; comment "first 2 bytes are level number in screencodes"; }; label { name "cur_level_sub0"; addr $07c2; size 2; comment "a subroutine"; }; @@ -666,7 +666,7 @@ label { name "cur_level_indirect_subs"; addr $07de; size 2; comment "pointer to label { name "cur_level_sub_bomb"; addr $07e0; size 2; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; label { name "cur_level_sub_start"; addr $07e2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; label { name "cur_level_sub6"; addr $07e4; size 2; comment "always $9740 aka game_main_loop"; }; -label { name "cur_level_sub_eol"; addr $07e6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; +label { name "cur_level_sub_eol"; addr $07e6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; label { name "cur_level_offs_40"; addr $07e8; size 6; comment "all zeroes"; }; label { name "cur_level_colpf3"; addr $07ee; size 1; comment "color (not sure what gets drawn in this color yet)"; }; label { name "cur_level_colpf0"; addr $07ef; size 1; comment "color for girders and up-ropes"; }; @@ -675,413 +675,413 @@ label { name "cur_level_colpf2"; addr $07f1; size 1; comment "color for bombs"; label { name "cur_level_offs_50"; addr $07f2; size 5; comment "unknown"; }; label { name "cur_level_offs_55"; addr $07f7; size 3; comment "unknown, always $00 $00 $00"; }; 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, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; +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 "level00_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 "level00_sub0"; start $a002; end $a003; type addrtable; comment "a subroutine"; }; -range { name "level00_sub1"; start $a004; end $a005; type addrtable; comment "a subroutine"; }; -range { name "level00_sub2"; start $a006; end $a007; type addrtable; comment "a subroutine"; }; -range { name "level00_sub3"; start $a008; end $a009; type addrtable; comment "a subroutine"; }; -range { name "level00_num_bombs"; start $a00a; end $a00a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level00_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level00_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level00_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; }; -range { name "level00_fudge_x"; start $a00e; end $a00e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level00_fudge_y"; start $a00f; end $a00f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level00_points_per_bomb"; start $a010; end $a010; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level00_time_bonus"; start $a011; end $a012; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level00_offs_19"; start $a013; end $a013; type bytetable; comment "always $00"; }; -range { name "level00_unkn_table0"; start $a014; end $a015; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level00_map"; start $a016; end $a017; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level00_map_bombs"; start $a018; end $a019; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level00_bomblist"; start $a01a; end $a01b; type addrtable; comment "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."; }; -range { name "level00_map_changes"; start $a01c; end $a01d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level00_indirect_subs"; start $a01e; end $a01f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level00_sub_bomb"; start $a020; end $a021; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level00_sub_start"; start $a022; end $a023; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level00_sub6"; start $a024; end $a025; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level00_sub_eol"; start $a026; end $a027; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level00_offs_40"; start $a028; end $a02d; type bytetable; comment "all zeroes"; }; -range { name "level00_colpf3"; start $a02e; end $a02e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level00_colpf0"; start $a02f; end $a02f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level00_colpf1"; start $a030; end $a030; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level00_colpf2"; start $a031; end $a031; type bytetable; comment "color for bombs"; }; -range { name "level00_offs_50"; start $a032; end $a036; type bytetable; comment "unknown"; }; -range { name "level00_offs_55"; start $a037; end $a039; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level00_offs_58"; start $a03a; end $a03b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level00_offs_60"; start $a03c; end $a03f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level01_sub3"; start $a008; end $a009; type addrtable; comment "a subroutine"; }; +range { name "level01_num_bombs"; start $a00a; end $a00a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level01_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level01_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level01_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; }; +range { name "level01_fudge_x"; start $a00e; end $a00e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level01_fudge_y"; start $a00f; end $a00f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level01_points_per_bomb"; start $a010; end $a010; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level01_time_bonus"; start $a011; end $a012; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level01_offs_19"; start $a013; end $a013; type bytetable; comment "always $00"; }; +range { name "level01_unkn_table0"; start $a014; end $a015; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level01_map"; start $a016; end $a017; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level01_map_bombs"; start $a018; end $a019; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level01_bomblist"; start $a01a; end $a01b; type addrtable; comment "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."; }; +range { name "level01_map_changes"; start $a01c; end $a01d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level01_indirect_subs"; start $a01e; end $a01f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level01_sub_bomb"; start $a020; end $a021; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level01_sub_start"; start $a022; end $a023; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level01_sub6"; start $a024; end $a025; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level01_sub_eol"; start $a026; end $a027; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level01_offs_40"; start $a028; end $a02d; type bytetable; comment "all zeroes"; }; +range { name "level01_colpf3"; start $a02e; end $a02e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level01_colpf0"; start $a02f; end $a02f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level01_colpf1"; start $a030; end $a030; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level01_colpf2"; start $a031; end $a031; type bytetable; comment "color for bombs"; }; +range { name "level01_offs_50"; start $a032; end $a036; type bytetable; comment "unknown"; }; +range { name "level01_offs_55"; start $a037; end $a039; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level01_desc"; start $a040; end $a041; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level01_sub0"; start $a042; end $a043; type addrtable; comment "a subroutine"; }; -range { name "level01_sub1"; start $a044; end $a045; type addrtable; comment "a subroutine"; }; -range { name "level01_sub2"; start $a046; end $a047; type addrtable; comment "a subroutine"; }; -range { name "level01_sub3"; start $a048; end $a049; type addrtable; comment "a subroutine"; }; -range { name "level01_num_bombs"; start $a04a; end $a04a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level01_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level01_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level01_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; }; -range { name "level01_fudge_x"; start $a04e; end $a04e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level01_fudge_y"; start $a04f; end $a04f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level01_points_per_bomb"; start $a050; end $a050; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level01_time_bonus"; start $a051; end $a052; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level01_offs_19"; start $a053; end $a053; type bytetable; comment "always $00"; }; -range { name "level01_unkn_table0"; start $a054; end $a055; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level01_map"; start $a056; end $a057; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level01_map_bombs"; start $a058; end $a059; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level01_bomblist"; start $a05a; end $a05b; type addrtable; comment "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."; }; -range { name "level01_map_changes"; start $a05c; end $a05d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level01_indirect_subs"; start $a05e; end $a05f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level01_sub_bomb"; start $a060; end $a061; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level01_sub_start"; start $a062; end $a063; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level01_sub6"; start $a064; end $a065; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level01_sub_eol"; start $a066; end $a067; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level01_offs_40"; start $a068; end $a06d; type bytetable; comment "all zeroes"; }; -range { name "level01_colpf3"; start $a06e; end $a06e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level01_colpf0"; start $a06f; end $a06f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level01_colpf1"; start $a070; end $a070; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level01_colpf2"; start $a071; end $a071; type bytetable; comment "color for bombs"; }; -range { name "level01_offs_50"; start $a072; end $a076; type bytetable; comment "unknown"; }; -range { name "level01_offs_55"; start $a077; end $a079; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level01_offs_58"; start $a07a; end $a07b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level01_offs_60"; start $a07c; end $a07f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level02_sub3"; start $a048; end $a049; type addrtable; comment "a subroutine"; }; +range { name "level02_num_bombs"; start $a04a; end $a04a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level02_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level02_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level02_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; }; +range { name "level02_fudge_x"; start $a04e; end $a04e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level02_fudge_y"; start $a04f; end $a04f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level02_points_per_bomb"; start $a050; end $a050; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level02_time_bonus"; start $a051; end $a052; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level02_offs_19"; start $a053; end $a053; type bytetable; comment "always $00"; }; +range { name "level02_unkn_table0"; start $a054; end $a055; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level02_map"; start $a056; end $a057; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level02_map_bombs"; start $a058; end $a059; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level02_bomblist"; start $a05a; end $a05b; type addrtable; comment "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."; }; +range { name "level02_map_changes"; start $a05c; end $a05d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level02_indirect_subs"; start $a05e; end $a05f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level02_sub_bomb"; start $a060; end $a061; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level02_sub_start"; start $a062; end $a063; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level02_sub6"; start $a064; end $a065; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level02_sub_eol"; start $a066; end $a067; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level02_offs_40"; start $a068; end $a06d; type bytetable; comment "all zeroes"; }; +range { name "level02_colpf3"; start $a06e; end $a06e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level02_colpf0"; start $a06f; end $a06f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level02_colpf1"; start $a070; end $a070; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level02_colpf2"; start $a071; end $a071; type bytetable; comment "color for bombs"; }; +range { name "level02_offs_50"; start $a072; end $a076; type bytetable; comment "unknown"; }; +range { name "level02_offs_55"; start $a077; end $a079; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level02_desc"; start $a080; end $a081; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level02_sub0"; start $a082; end $a083; type addrtable; comment "a subroutine"; }; -range { name "level02_sub1"; start $a084; end $a085; type addrtable; comment "a subroutine"; }; -range { name "level02_sub2"; start $a086; end $a087; type addrtable; comment "a subroutine"; }; -range { name "level02_sub3"; start $a088; end $a089; type addrtable; comment "a subroutine"; }; -range { name "level02_num_bombs"; start $a08a; end $a08a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level02_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level02_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level02_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; }; -range { name "level02_fudge_x"; start $a08e; end $a08e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level02_fudge_y"; start $a08f; end $a08f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level02_points_per_bomb"; start $a090; end $a090; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level02_time_bonus"; start $a091; end $a092; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level02_offs_19"; start $a093; end $a093; type bytetable; comment "always $00"; }; -range { name "level02_unkn_table0"; start $a094; end $a095; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level02_map"; start $a096; end $a097; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level02_map_bombs"; start $a098; end $a099; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level02_bomblist"; start $a09a; end $a09b; type addrtable; comment "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."; }; -range { name "level02_map_changes"; start $a09c; end $a09d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level02_indirect_subs"; start $a09e; end $a09f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level02_sub_bomb"; start $a0a0; end $a0a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level02_sub_start"; start $a0a2; end $a0a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level02_sub6"; start $a0a4; end $a0a5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level02_sub_eol"; start $a0a6; end $a0a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level02_offs_40"; start $a0a8; end $a0ad; type bytetable; comment "all zeroes"; }; -range { name "level02_colpf3"; start $a0ae; end $a0ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level02_colpf0"; start $a0af; end $a0af; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level02_colpf1"; start $a0b0; end $a0b0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level02_colpf2"; start $a0b1; end $a0b1; type bytetable; comment "color for bombs"; }; -range { name "level02_offs_50"; start $a0b2; end $a0b6; type bytetable; comment "unknown"; }; -range { name "level02_offs_55"; start $a0b7; end $a0b9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level02_offs_58"; start $a0ba; end $a0bb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level02_offs_60"; start $a0bc; end $a0bf; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level03_sub3"; start $a088; end $a089; type addrtable; comment "a subroutine"; }; +range { name "level03_num_bombs"; start $a08a; end $a08a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level03_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level03_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level03_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; }; +range { name "level03_fudge_x"; start $a08e; end $a08e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level03_fudge_y"; start $a08f; end $a08f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level03_points_per_bomb"; start $a090; end $a090; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level03_time_bonus"; start $a091; end $a092; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level03_offs_19"; start $a093; end $a093; type bytetable; comment "always $00"; }; +range { name "level03_unkn_table0"; start $a094; end $a095; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level03_map"; start $a096; end $a097; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level03_map_bombs"; start $a098; end $a099; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level03_bomblist"; start $a09a; end $a09b; type addrtable; comment "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."; }; +range { name "level03_map_changes"; start $a09c; end $a09d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level03_indirect_subs"; start $a09e; end $a09f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level03_sub_bomb"; start $a0a0; end $a0a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level03_sub_start"; start $a0a2; end $a0a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level03_sub6"; start $a0a4; end $a0a5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level03_sub_eol"; start $a0a6; end $a0a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level03_offs_40"; start $a0a8; end $a0ad; type bytetable; comment "all zeroes"; }; +range { name "level03_colpf3"; start $a0ae; end $a0ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level03_colpf0"; start $a0af; end $a0af; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level03_colpf1"; start $a0b0; end $a0b0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level03_colpf2"; start $a0b1; end $a0b1; type bytetable; comment "color for bombs"; }; +range { name "level03_offs_50"; start $a0b2; end $a0b6; type bytetable; comment "unknown"; }; +range { name "level03_offs_55"; start $a0b7; end $a0b9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level03_desc"; start $a0c0; end $a0c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level03_sub0"; start $a0c2; end $a0c3; type addrtable; comment "a subroutine"; }; -range { name "level03_sub1"; start $a0c4; end $a0c5; type addrtable; comment "a subroutine"; }; -range { name "level03_sub2"; start $a0c6; end $a0c7; type addrtable; comment "a subroutine"; }; -range { name "level03_sub3"; start $a0c8; end $a0c9; type addrtable; comment "a subroutine"; }; -range { name "level03_num_bombs"; start $a0ca; end $a0ca; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level03_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level03_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; }; -range { name "level03_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level03_fudge_x"; start $a0ce; end $a0ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level03_fudge_y"; start $a0cf; end $a0cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level03_points_per_bomb"; start $a0d0; end $a0d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level03_time_bonus"; start $a0d1; end $a0d2; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level03_offs_19"; start $a0d3; end $a0d3; type bytetable; comment "always $00"; }; -range { name "level03_unkn_table0"; start $a0d4; end $a0d5; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level03_map"; start $a0d6; end $a0d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level03_map_bombs"; start $a0d8; end $a0d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level03_bomblist"; start $a0da; end $a0db; type addrtable; comment "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."; }; -range { name "level03_map_changes"; start $a0dc; end $a0dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level03_indirect_subs"; start $a0de; end $a0df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level03_sub_bomb"; start $a0e0; end $a0e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level03_sub_start"; start $a0e2; end $a0e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level03_sub6"; start $a0e4; end $a0e5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level03_sub_eol"; start $a0e6; end $a0e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level03_offs_40"; start $a0e8; end $a0ed; type bytetable; comment "all zeroes"; }; -range { name "level03_colpf3"; start $a0ee; end $a0ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level03_colpf0"; start $a0ef; end $a0ef; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level03_colpf1"; start $a0f0; end $a0f0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level03_colpf2"; start $a0f1; end $a0f1; type bytetable; comment "color for bombs"; }; -range { name "level03_offs_50"; start $a0f2; end $a0f6; type bytetable; comment "unknown"; }; -range { name "level03_offs_55"; start $a0f7; end $a0f9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level03_offs_58"; start $a0fa; end $a0fb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level03_offs_60"; start $a0fc; end $a0ff; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level04_sub3"; start $a0c8; end $a0c9; type addrtable; comment "a subroutine"; }; +range { name "level04_num_bombs"; start $a0ca; end $a0ca; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level04_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level04_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; }; +range { name "level04_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; }; +range { name "level04_fudge_x"; start $a0ce; end $a0ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level04_fudge_y"; start $a0cf; end $a0cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level04_points_per_bomb"; start $a0d0; end $a0d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level04_time_bonus"; start $a0d1; end $a0d2; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level04_offs_19"; start $a0d3; end $a0d3; type bytetable; comment "always $00"; }; +range { name "level04_unkn_table0"; start $a0d4; end $a0d5; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level04_map"; start $a0d6; end $a0d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level04_map_bombs"; start $a0d8; end $a0d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level04_bomblist"; start $a0da; end $a0db; type addrtable; comment "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."; }; +range { name "level04_map_changes"; start $a0dc; end $a0dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level04_indirect_subs"; start $a0de; end $a0df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level04_sub_bomb"; start $a0e0; end $a0e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level04_sub_start"; start $a0e2; end $a0e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level04_sub6"; start $a0e4; end $a0e5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level04_sub_eol"; start $a0e6; end $a0e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level04_offs_40"; start $a0e8; end $a0ed; type bytetable; comment "all zeroes"; }; +range { name "level04_colpf3"; start $a0ee; end $a0ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level04_colpf0"; start $a0ef; end $a0ef; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level04_colpf1"; start $a0f0; end $a0f0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level04_colpf2"; start $a0f1; end $a0f1; type bytetable; comment "color for bombs"; }; +range { name "level04_offs_50"; start $a0f2; end $a0f6; type bytetable; comment "unknown"; }; +range { name "level04_offs_55"; start $a0f7; end $a0f9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level04_desc"; start $a100; end $a101; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level04_sub0"; start $a102; end $a103; type addrtable; comment "a subroutine"; }; -range { name "level04_sub1"; start $a104; end $a105; type addrtable; comment "a subroutine"; }; -range { name "level04_sub2"; start $a106; end $a107; type addrtable; comment "a subroutine"; }; -range { name "level04_sub3"; start $a108; end $a109; type addrtable; comment "a subroutine"; }; -range { name "level04_num_bombs"; start $a10a; end $a10a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level04_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level04_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level04_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; }; -range { name "level04_fudge_x"; start $a10e; end $a10e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level04_fudge_y"; start $a10f; end $a10f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level04_points_per_bomb"; start $a110; end $a110; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level04_time_bonus"; start $a111; end $a112; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level04_offs_19"; start $a113; end $a113; type bytetable; comment "always $00"; }; -range { name "level04_unkn_table0"; start $a114; end $a115; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level04_map"; start $a116; end $a117; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level04_map_bombs"; start $a118; end $a119; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level04_bomblist"; start $a11a; end $a11b; type addrtable; comment "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."; }; -range { name "level04_map_changes"; start $a11c; end $a11d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level04_indirect_subs"; start $a11e; end $a11f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level04_sub_bomb"; start $a120; end $a121; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level04_sub_start"; start $a122; end $a123; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level04_sub6"; start $a124; end $a125; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level04_sub_eol"; start $a126; end $a127; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level04_offs_40"; start $a128; end $a12d; type bytetable; comment "all zeroes"; }; -range { name "level04_colpf3"; start $a12e; end $a12e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level04_colpf0"; start $a12f; end $a12f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level04_colpf1"; start $a130; end $a130; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level04_colpf2"; start $a131; end $a131; type bytetable; comment "color for bombs"; }; -range { name "level04_offs_50"; start $a132; end $a136; type bytetable; comment "unknown"; }; -range { name "level04_offs_55"; start $a137; end $a139; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level04_offs_58"; start $a13a; end $a13b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level04_offs_60"; start $a13c; end $a13f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level05_sub3"; start $a108; end $a109; type addrtable; comment "a subroutine"; }; +range { name "level05_num_bombs"; start $a10a; end $a10a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level05_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level05_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level05_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; }; +range { name "level05_fudge_x"; start $a10e; end $a10e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level05_fudge_y"; start $a10f; end $a10f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level05_points_per_bomb"; start $a110; end $a110; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level05_time_bonus"; start $a111; end $a112; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level05_offs_19"; start $a113; end $a113; type bytetable; comment "always $00"; }; +range { name "level05_unkn_table0"; start $a114; end $a115; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level05_map"; start $a116; end $a117; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level05_map_bombs"; start $a118; end $a119; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level05_bomblist"; start $a11a; end $a11b; type addrtable; comment "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."; }; +range { name "level05_map_changes"; start $a11c; end $a11d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level05_indirect_subs"; start $a11e; end $a11f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level05_sub_bomb"; start $a120; end $a121; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level05_sub_start"; start $a122; end $a123; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level05_sub6"; start $a124; end $a125; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level05_sub_eol"; start $a126; end $a127; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level05_offs_40"; start $a128; end $a12d; type bytetable; comment "all zeroes"; }; +range { name "level05_colpf3"; start $a12e; end $a12e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level05_colpf0"; start $a12f; end $a12f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level05_colpf1"; start $a130; end $a130; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level05_colpf2"; start $a131; end $a131; type bytetable; comment "color for bombs"; }; +range { name "level05_offs_50"; start $a132; end $a136; type bytetable; comment "unknown"; }; +range { name "level05_offs_55"; start $a137; end $a139; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level05_desc"; start $a140; end $a141; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level05_sub0"; start $a142; end $a143; type addrtable; comment "a subroutine"; }; -range { name "level05_sub1"; start $a144; end $a145; type addrtable; comment "a subroutine"; }; -range { name "level05_sub2"; start $a146; end $a147; type addrtable; comment "a subroutine"; }; -range { name "level05_sub3"; start $a148; end $a149; type addrtable; comment "a subroutine"; }; -range { name "level05_num_bombs"; start $a14a; end $a14a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level05_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level05_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level05_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; }; -range { name "level05_fudge_x"; start $a14e; end $a14e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level05_fudge_y"; start $a14f; end $a14f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level05_points_per_bomb"; start $a150; end $a150; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level05_time_bonus"; start $a151; end $a152; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level05_offs_19"; start $a153; end $a153; type bytetable; comment "always $00"; }; -range { name "level05_unkn_table0"; start $a154; end $a155; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level05_map"; start $a156; end $a157; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level05_map_bombs"; start $a158; end $a159; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level05_bomblist"; start $a15a; end $a15b; type addrtable; comment "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."; }; -range { name "level05_map_changes"; start $a15c; end $a15d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level05_indirect_subs"; start $a15e; end $a15f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level05_sub_bomb"; start $a160; end $a161; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level05_sub_start"; start $a162; end $a163; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level05_sub6"; start $a164; end $a165; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level05_sub_eol"; start $a166; end $a167; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level05_offs_40"; start $a168; end $a16d; type bytetable; comment "all zeroes"; }; -range { name "level05_colpf3"; start $a16e; end $a16e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level05_colpf0"; start $a16f; end $a16f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level05_colpf1"; start $a170; end $a170; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level05_colpf2"; start $a171; end $a171; type bytetable; comment "color for bombs"; }; -range { name "level05_offs_50"; start $a172; end $a176; type bytetable; comment "unknown"; }; -range { name "level05_offs_55"; start $a177; end $a179; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level05_offs_58"; start $a17a; end $a17b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level05_offs_60"; start $a17c; end $a17f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level06_sub3"; start $a148; end $a149; type addrtable; comment "a subroutine"; }; +range { name "level06_num_bombs"; start $a14a; end $a14a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level06_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level06_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level06_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; }; +range { name "level06_fudge_x"; start $a14e; end $a14e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level06_fudge_y"; start $a14f; end $a14f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level06_points_per_bomb"; start $a150; end $a150; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level06_time_bonus"; start $a151; end $a152; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level06_offs_19"; start $a153; end $a153; type bytetable; comment "always $00"; }; +range { name "level06_unkn_table0"; start $a154; end $a155; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level06_map"; start $a156; end $a157; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level06_map_bombs"; start $a158; end $a159; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level06_bomblist"; start $a15a; end $a15b; type addrtable; comment "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."; }; +range { name "level06_map_changes"; start $a15c; end $a15d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level06_indirect_subs"; start $a15e; end $a15f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level06_sub_bomb"; start $a160; end $a161; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level06_sub_start"; start $a162; end $a163; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level06_sub6"; start $a164; end $a165; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level06_sub_eol"; start $a166; end $a167; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level06_offs_40"; start $a168; end $a16d; type bytetable; comment "all zeroes"; }; +range { name "level06_colpf3"; start $a16e; end $a16e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level06_colpf0"; start $a16f; end $a16f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level06_colpf1"; start $a170; end $a170; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level06_colpf2"; start $a171; end $a171; type bytetable; comment "color for bombs"; }; +range { name "level06_offs_50"; start $a172; end $a176; type bytetable; comment "unknown"; }; +range { name "level06_offs_55"; start $a177; end $a179; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level06_desc"; start $a180; end $a181; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level06_sub0"; start $a182; end $a183; type addrtable; comment "a subroutine"; }; -range { name "level06_sub1"; start $a184; end $a185; type addrtable; comment "a subroutine"; }; -range { name "level06_sub2"; start $a186; end $a187; type addrtable; comment "a subroutine"; }; -range { name "level06_sub3"; start $a188; end $a189; type addrtable; comment "a subroutine"; }; -range { name "level06_num_bombs"; start $a18a; end $a18a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level06_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level06_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level06_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; }; -range { name "level06_fudge_x"; start $a18e; end $a18e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level06_fudge_y"; start $a18f; end $a18f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level06_points_per_bomb"; start $a190; end $a190; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level06_time_bonus"; start $a191; end $a192; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level06_offs_19"; start $a193; end $a193; type bytetable; comment "always $00"; }; -range { name "level06_unkn_table0"; start $a194; end $a195; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level06_map"; start $a196; end $a197; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level06_map_bombs"; start $a198; end $a199; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level06_bomblist"; start $a19a; end $a19b; type addrtable; comment "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."; }; -range { name "level06_map_changes"; start $a19c; end $a19d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level06_indirect_subs"; start $a19e; end $a19f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level06_sub_bomb"; start $a1a0; end $a1a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level06_sub_start"; start $a1a2; end $a1a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level06_sub6"; start $a1a4; end $a1a5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level06_sub_eol"; start $a1a6; end $a1a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level06_offs_40"; start $a1a8; end $a1ad; type bytetable; comment "all zeroes"; }; -range { name "level06_colpf3"; start $a1ae; end $a1ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level06_colpf0"; start $a1af; end $a1af; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level06_colpf1"; start $a1b0; end $a1b0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level06_colpf2"; start $a1b1; end $a1b1; type bytetable; comment "color for bombs"; }; -range { name "level06_offs_50"; start $a1b2; end $a1b6; type bytetable; comment "unknown"; }; -range { name "level06_offs_55"; start $a1b7; end $a1b9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level06_offs_58"; start $a1ba; end $a1bb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level06_offs_60"; start $a1bc; end $a1bf; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level07_sub3"; start $a188; end $a189; type addrtable; comment "a subroutine"; }; +range { name "level07_num_bombs"; start $a18a; end $a18a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level07_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level07_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level07_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; }; +range { name "level07_fudge_x"; start $a18e; end $a18e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level07_fudge_y"; start $a18f; end $a18f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level07_points_per_bomb"; start $a190; end $a190; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level07_time_bonus"; start $a191; end $a192; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level07_offs_19"; start $a193; end $a193; type bytetable; comment "always $00"; }; +range { name "level07_unkn_table0"; start $a194; end $a195; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level07_map"; start $a196; end $a197; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level07_map_bombs"; start $a198; end $a199; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level07_bomblist"; start $a19a; end $a19b; type addrtable; comment "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."; }; +range { name "level07_map_changes"; start $a19c; end $a19d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level07_indirect_subs"; start $a19e; end $a19f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level07_sub_bomb"; start $a1a0; end $a1a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level07_sub_start"; start $a1a2; end $a1a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level07_sub6"; start $a1a4; end $a1a5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level07_sub_eol"; start $a1a6; end $a1a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level07_offs_40"; start $a1a8; end $a1ad; type bytetable; comment "all zeroes"; }; +range { name "level07_colpf3"; start $a1ae; end $a1ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level07_colpf0"; start $a1af; end $a1af; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level07_colpf1"; start $a1b0; end $a1b0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level07_colpf2"; start $a1b1; end $a1b1; type bytetable; comment "color for bombs"; }; +range { name "level07_offs_50"; start $a1b2; end $a1b6; type bytetable; comment "unknown"; }; +range { name "level07_offs_55"; start $a1b7; end $a1b9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level07_desc"; start $a1c0; end $a1c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level07_sub0"; start $a1c2; end $a1c3; type addrtable; comment "a subroutine"; }; -range { name "level07_sub1"; start $a1c4; end $a1c5; type addrtable; comment "a subroutine"; }; -range { name "level07_sub2"; start $a1c6; end $a1c7; type addrtable; comment "a subroutine"; }; -range { name "level07_sub3"; start $a1c8; end $a1c9; type addrtable; comment "a subroutine"; }; -range { name "level07_num_bombs"; start $a1ca; end $a1ca; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level07_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level07_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; }; -range { name "level07_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level07_fudge_x"; start $a1ce; end $a1ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level07_fudge_y"; start $a1cf; end $a1cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level07_points_per_bomb"; start $a1d0; end $a1d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level07_time_bonus"; start $a1d1; end $a1d2; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level07_offs_19"; start $a1d3; end $a1d3; type bytetable; comment "always $00"; }; -range { name "level07_unkn_table0"; start $a1d4; end $a1d5; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level07_map"; start $a1d6; end $a1d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level07_map_bombs"; start $a1d8; end $a1d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level07_bomblist"; start $a1da; end $a1db; type addrtable; comment "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."; }; -range { name "level07_map_changes"; start $a1dc; end $a1dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level07_indirect_subs"; start $a1de; end $a1df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level07_sub_bomb"; start $a1e0; end $a1e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level07_sub_start"; start $a1e2; end $a1e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level07_sub6"; start $a1e4; end $a1e5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level07_sub_eol"; start $a1e6; end $a1e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level07_offs_40"; start $a1e8; end $a1ed; type bytetable; comment "all zeroes"; }; -range { name "level07_colpf3"; start $a1ee; end $a1ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level07_colpf0"; start $a1ef; end $a1ef; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level07_colpf1"; start $a1f0; end $a1f0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level07_colpf2"; start $a1f1; end $a1f1; type bytetable; comment "color for bombs"; }; -range { name "level07_offs_50"; start $a1f2; end $a1f6; type bytetable; comment "unknown"; }; -range { name "level07_offs_55"; start $a1f7; end $a1f9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level07_offs_58"; start $a1fa; end $a1fb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level07_offs_60"; start $a1fc; end $a1ff; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level08_sub3"; start $a1c8; end $a1c9; type addrtable; comment "a subroutine"; }; +range { name "level08_num_bombs"; start $a1ca; end $a1ca; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level08_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level08_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; }; +range { name "level08_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; }; +range { name "level08_fudge_x"; start $a1ce; end $a1ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level08_fudge_y"; start $a1cf; end $a1cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level08_points_per_bomb"; start $a1d0; end $a1d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level08_time_bonus"; start $a1d1; end $a1d2; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level08_offs_19"; start $a1d3; end $a1d3; type bytetable; comment "always $00"; }; +range { name "level08_unkn_table0"; start $a1d4; end $a1d5; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level08_map"; start $a1d6; end $a1d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level08_map_bombs"; start $a1d8; end $a1d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level08_bomblist"; start $a1da; end $a1db; type addrtable; comment "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."; }; +range { name "level08_map_changes"; start $a1dc; end $a1dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level08_indirect_subs"; start $a1de; end $a1df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level08_sub_bomb"; start $a1e0; end $a1e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level08_sub_start"; start $a1e2; end $a1e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level08_sub6"; start $a1e4; end $a1e5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level08_sub_eol"; start $a1e6; end $a1e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level08_offs_40"; start $a1e8; end $a1ed; type bytetable; comment "all zeroes"; }; +range { name "level08_colpf3"; start $a1ee; end $a1ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level08_colpf0"; start $a1ef; end $a1ef; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level08_colpf1"; start $a1f0; end $a1f0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level08_colpf2"; start $a1f1; end $a1f1; type bytetable; comment "color for bombs"; }; +range { name "level08_offs_50"; start $a1f2; end $a1f6; type bytetable; comment "unknown"; }; +range { name "level08_offs_55"; start $a1f7; end $a1f9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level08_desc"; start $a200; end $a201; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level08_sub0"; start $a202; end $a203; type addrtable; comment "a subroutine"; }; -range { name "level08_sub1"; start $a204; end $a205; type addrtable; comment "a subroutine"; }; -range { name "level08_sub2"; start $a206; end $a207; type addrtable; comment "a subroutine"; }; -range { name "level08_sub3"; start $a208; end $a209; type addrtable; comment "a subroutine"; }; -range { name "level08_num_bombs"; start $a20a; end $a20a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level08_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level08_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level08_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; }; -range { name "level08_fudge_x"; start $a20e; end $a20e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level08_fudge_y"; start $a20f; end $a20f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level08_points_per_bomb"; start $a210; end $a210; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level08_time_bonus"; start $a211; end $a212; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level08_offs_19"; start $a213; end $a213; type bytetable; comment "always $00"; }; -range { name "level08_unkn_table0"; start $a214; end $a215; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level08_map"; start $a216; end $a217; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level08_map_bombs"; start $a218; end $a219; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level08_bomblist"; start $a21a; end $a21b; type addrtable; comment "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."; }; -range { name "level08_map_changes"; start $a21c; end $a21d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level08_indirect_subs"; start $a21e; end $a21f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level08_sub_bomb"; start $a220; end $a221; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level08_sub_start"; start $a222; end $a223; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level08_sub6"; start $a224; end $a225; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level08_sub_eol"; start $a226; end $a227; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level08_offs_40"; start $a228; end $a22d; type bytetable; comment "all zeroes"; }; -range { name "level08_colpf3"; start $a22e; end $a22e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level08_colpf0"; start $a22f; end $a22f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level08_colpf1"; start $a230; end $a230; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level08_colpf2"; start $a231; end $a231; type bytetable; comment "color for bombs"; }; -range { name "level08_offs_50"; start $a232; end $a236; type bytetable; comment "unknown"; }; -range { name "level08_offs_55"; start $a237; end $a239; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level08_offs_58"; start $a23a; end $a23b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level08_offs_60"; start $a23c; end $a23f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level09_sub3"; start $a208; end $a209; type addrtable; comment "a subroutine"; }; +range { name "level09_num_bombs"; start $a20a; end $a20a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level09_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level09_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level09_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; }; +range { name "level09_fudge_x"; start $a20e; end $a20e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level09_fudge_y"; start $a20f; end $a20f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level09_points_per_bomb"; start $a210; end $a210; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level09_time_bonus"; start $a211; end $a212; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level09_offs_19"; start $a213; end $a213; type bytetable; comment "always $00"; }; +range { name "level09_unkn_table0"; start $a214; end $a215; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level09_map"; start $a216; end $a217; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level09_map_bombs"; start $a218; end $a219; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level09_bomblist"; start $a21a; end $a21b; type addrtable; comment "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."; }; +range { name "level09_map_changes"; start $a21c; end $a21d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level09_indirect_subs"; start $a21e; end $a21f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level09_sub_bomb"; start $a220; end $a221; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level09_sub_start"; start $a222; end $a223; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level09_sub6"; start $a224; end $a225; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level09_sub_eol"; start $a226; end $a227; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level09_offs_40"; start $a228; end $a22d; type bytetable; comment "all zeroes"; }; +range { name "level09_colpf3"; start $a22e; end $a22e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level09_colpf0"; start $a22f; end $a22f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level09_colpf1"; start $a230; end $a230; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level09_colpf2"; start $a231; end $a231; type bytetable; comment "color for bombs"; }; +range { name "level09_offs_50"; start $a232; end $a236; type bytetable; comment "unknown"; }; +range { name "level09_offs_55"; start $a237; end $a239; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level09_desc"; start $a240; end $a241; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level09_sub0"; start $a242; end $a243; type addrtable; comment "a subroutine"; }; -range { name "level09_sub1"; start $a244; end $a245; type addrtable; comment "a subroutine"; }; -range { name "level09_sub2"; start $a246; end $a247; type addrtable; comment "a subroutine"; }; -range { name "level09_sub3"; start $a248; end $a249; type addrtable; comment "a subroutine"; }; -range { name "level09_num_bombs"; start $a24a; end $a24a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level09_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level09_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level09_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; }; -range { name "level09_fudge_x"; start $a24e; end $a24e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level09_fudge_y"; start $a24f; end $a24f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level09_points_per_bomb"; start $a250; end $a250; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level09_time_bonus"; start $a251; end $a252; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level09_offs_19"; start $a253; end $a253; type bytetable; comment "always $00"; }; -range { name "level09_unkn_table0"; start $a254; end $a255; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level09_map"; start $a256; end $a257; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level09_map_bombs"; start $a258; end $a259; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level09_bomblist"; start $a25a; end $a25b; type addrtable; comment "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."; }; -range { name "level09_map_changes"; start $a25c; end $a25d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level09_indirect_subs"; start $a25e; end $a25f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level09_sub_bomb"; start $a260; end $a261; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level09_sub_start"; start $a262; end $a263; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level09_sub6"; start $a264; end $a265; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level09_sub_eol"; start $a266; end $a267; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level09_offs_40"; start $a268; end $a26d; type bytetable; comment "all zeroes"; }; -range { name "level09_colpf3"; start $a26e; end $a26e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level09_colpf0"; start $a26f; end $a26f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level09_colpf1"; start $a270; end $a270; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level09_colpf2"; start $a271; end $a271; type bytetable; comment "color for bombs"; }; -range { name "level09_offs_50"; start $a272; end $a276; type bytetable; comment "unknown"; }; -range { name "level09_offs_55"; start $a277; end $a279; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level09_offs_58"; start $a27a; end $a27b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level09_offs_60"; start $a27c; end $a27f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level10_sub3"; start $a248; end $a249; type addrtable; comment "a subroutine"; }; +range { name "level10_num_bombs"; start $a24a; end $a24a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level10_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level10_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level10_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; }; +range { name "level10_fudge_x"; start $a24e; end $a24e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level10_fudge_y"; start $a24f; end $a24f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level10_points_per_bomb"; start $a250; end $a250; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level10_time_bonus"; start $a251; end $a252; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level10_offs_19"; start $a253; end $a253; type bytetable; comment "always $00"; }; +range { name "level10_unkn_table0"; start $a254; end $a255; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level10_map"; start $a256; end $a257; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level10_map_bombs"; start $a258; end $a259; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level10_bomblist"; start $a25a; end $a25b; type addrtable; comment "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."; }; +range { name "level10_map_changes"; start $a25c; end $a25d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level10_indirect_subs"; start $a25e; end $a25f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level10_sub_bomb"; start $a260; end $a261; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level10_sub_start"; start $a262; end $a263; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level10_sub6"; start $a264; end $a265; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level10_sub_eol"; start $a266; end $a267; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level10_offs_40"; start $a268; end $a26d; type bytetable; comment "all zeroes"; }; +range { name "level10_colpf3"; start $a26e; end $a26e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level10_colpf0"; start $a26f; end $a26f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level10_colpf1"; start $a270; end $a270; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level10_colpf2"; start $a271; end $a271; type bytetable; comment "color for bombs"; }; +range { name "level10_offs_50"; start $a272; end $a276; type bytetable; comment "unknown"; }; +range { name "level10_offs_55"; start $a277; end $a279; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level10_desc"; start $a280; end $a281; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level10_sub0"; start $a282; end $a283; type addrtable; comment "a subroutine"; }; -range { name "level10_sub1"; start $a284; end $a285; type addrtable; comment "a subroutine"; }; -range { name "level10_sub2"; start $a286; end $a287; type addrtable; comment "a subroutine"; }; -range { name "level10_sub3"; start $a288; end $a289; type addrtable; comment "a subroutine"; }; -range { name "level10_num_bombs"; start $a28a; end $a28a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level10_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level10_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level10_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; }; -range { name "level10_fudge_x"; start $a28e; end $a28e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level10_fudge_y"; start $a28f; end $a28f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level10_points_per_bomb"; start $a290; end $a290; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level10_time_bonus"; start $a291; end $a292; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level10_offs_19"; start $a293; end $a293; type bytetable; comment "always $00"; }; -range { name "level10_unkn_table0"; start $a294; end $a295; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level10_map"; start $a296; end $a297; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level10_map_bombs"; start $a298; end $a299; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level10_bomblist"; start $a29a; end $a29b; type addrtable; comment "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."; }; -range { name "level10_map_changes"; start $a29c; end $a29d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level10_indirect_subs"; start $a29e; end $a29f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level10_sub_bomb"; start $a2a0; end $a2a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level10_sub_start"; start $a2a2; end $a2a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level10_sub6"; start $a2a4; end $a2a5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level10_sub_eol"; start $a2a6; end $a2a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level10_offs_40"; start $a2a8; end $a2ad; type bytetable; comment "all zeroes"; }; -range { name "level10_colpf3"; start $a2ae; end $a2ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level10_colpf0"; start $a2af; end $a2af; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level10_colpf1"; start $a2b0; end $a2b0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level10_colpf2"; start $a2b1; end $a2b1; type bytetable; comment "color for bombs"; }; -range { name "level10_offs_50"; start $a2b2; end $a2b6; type bytetable; comment "unknown"; }; -range { name "level10_offs_55"; start $a2b7; end $a2b9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level10_offs_58"; start $a2ba; end $a2bb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level10_offs_60"; start $a2bc; end $a2bf; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level11_sub3"; start $a288; end $a289; type addrtable; comment "a subroutine"; }; +range { name "level11_num_bombs"; start $a28a; end $a28a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level11_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level11_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level11_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; }; +range { name "level11_fudge_x"; start $a28e; end $a28e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level11_fudge_y"; start $a28f; end $a28f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level11_points_per_bomb"; start $a290; end $a290; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level11_time_bonus"; start $a291; end $a292; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level11_offs_19"; start $a293; end $a293; type bytetable; comment "always $00"; }; +range { name "level11_unkn_table0"; start $a294; end $a295; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level11_map"; start $a296; end $a297; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level11_map_bombs"; start $a298; end $a299; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level11_bomblist"; start $a29a; end $a29b; type addrtable; comment "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."; }; +range { name "level11_map_changes"; start $a29c; end $a29d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level11_indirect_subs"; start $a29e; end $a29f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level11_sub_bomb"; start $a2a0; end $a2a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level11_sub_start"; start $a2a2; end $a2a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level11_sub6"; start $a2a4; end $a2a5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level11_sub_eol"; start $a2a6; end $a2a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level11_offs_40"; start $a2a8; end $a2ad; type bytetable; comment "all zeroes"; }; +range { name "level11_colpf3"; start $a2ae; end $a2ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level11_colpf0"; start $a2af; end $a2af; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level11_colpf1"; start $a2b0; end $a2b0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level11_colpf2"; start $a2b1; end $a2b1; type bytetable; comment "color for bombs"; }; +range { name "level11_offs_50"; start $a2b2; end $a2b6; type bytetable; comment "unknown"; }; +range { name "level11_offs_55"; start $a2b7; end $a2b9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level11_desc"; start $a2c0; end $a2c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level11_sub0"; start $a2c2; end $a2c3; type addrtable; comment "a subroutine"; }; -range { name "level11_sub1"; start $a2c4; end $a2c5; type addrtable; comment "a subroutine"; }; -range { name "level11_sub2"; start $a2c6; end $a2c7; type addrtable; comment "a subroutine"; }; -range { name "level11_sub3"; start $a2c8; end $a2c9; type addrtable; comment "a subroutine"; }; -range { name "level11_num_bombs"; start $a2ca; end $a2ca; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level11_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level11_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; }; -range { name "level11_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level11_fudge_x"; start $a2ce; end $a2ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level11_fudge_y"; start $a2cf; end $a2cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level11_points_per_bomb"; start $a2d0; end $a2d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level11_time_bonus"; start $a2d1; end $a2d2; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level11_offs_19"; start $a2d3; end $a2d3; type bytetable; comment "always $00"; }; -range { name "level11_unkn_table0"; start $a2d4; end $a2d5; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level11_map"; start $a2d6; end $a2d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level11_map_bombs"; start $a2d8; end $a2d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level11_bomblist"; start $a2da; end $a2db; type addrtable; comment "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."; }; -range { name "level11_map_changes"; start $a2dc; end $a2dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level11_indirect_subs"; start $a2de; end $a2df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level11_sub_bomb"; start $a2e0; end $a2e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level11_sub_start"; start $a2e2; end $a2e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level11_sub6"; start $a2e4; end $a2e5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level11_sub_eol"; start $a2e6; end $a2e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level11_offs_40"; start $a2e8; end $a2ed; type bytetable; comment "all zeroes"; }; -range { name "level11_colpf3"; start $a2ee; end $a2ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level11_colpf0"; start $a2ef; end $a2ef; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level11_colpf1"; start $a2f0; end $a2f0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level11_colpf2"; start $a2f1; end $a2f1; type bytetable; comment "color for bombs"; }; -range { name "level11_offs_50"; start $a2f2; end $a2f6; type bytetable; comment "unknown"; }; -range { name "level11_offs_55"; start $a2f7; end $a2f9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level11_offs_58"; start $a2fa; end $a2fb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level11_offs_60"; start $a2fc; end $a2ff; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level12_sub3"; start $a2c8; end $a2c9; type addrtable; comment "a subroutine"; }; +range { name "level12_num_bombs"; start $a2ca; end $a2ca; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level12_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level12_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; }; +range { name "level12_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; }; +range { name "level12_fudge_x"; start $a2ce; end $a2ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level12_fudge_y"; start $a2cf; end $a2cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level12_points_per_bomb"; start $a2d0; end $a2d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level12_time_bonus"; start $a2d1; end $a2d2; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level12_offs_19"; start $a2d3; end $a2d3; type bytetable; comment "always $00"; }; +range { name "level12_unkn_table0"; start $a2d4; end $a2d5; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level12_map"; start $a2d6; end $a2d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level12_map_bombs"; start $a2d8; end $a2d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level12_bomblist"; start $a2da; end $a2db; type addrtable; comment "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."; }; +range { name "level12_map_changes"; start $a2dc; end $a2dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level12_indirect_subs"; start $a2de; end $a2df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level12_sub_bomb"; start $a2e0; end $a2e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level12_sub_start"; start $a2e2; end $a2e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level12_sub6"; start $a2e4; end $a2e5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level12_sub_eol"; start $a2e6; end $a2e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level12_offs_40"; start $a2e8; end $a2ed; type bytetable; comment "all zeroes"; }; +range { name "level12_colpf3"; start $a2ee; end $a2ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level12_colpf0"; start $a2ef; end $a2ef; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level12_colpf1"; start $a2f0; end $a2f0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level12_colpf2"; start $a2f1; end $a2f1; type bytetable; comment "color for bombs"; }; +range { name "level12_offs_50"; start $a2f2; end $a2f6; type bytetable; comment "unknown"; }; +range { name "level12_offs_55"; start $a2f7; end $a2f9; type bytetable; comment "unknown, always $00 $00 $00"; }; +range { name "level12_offs_58"; start $a2fa; end $a2fb; type bytetable; comment "unknown, not a ROM address"; }; +range { name "level12_offs_60"; start $a2fc; end $a2ff; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; diff --git a/level_descriptors.txt b/level_descriptors.txt index 4cbed12..fcd88e1 100644 --- a/level_descriptors.txt +++ b/level_descriptors.txt @@ -15,8 +15,8 @@ It. It plays normally, with electric floors, and displays L=1 in the status window. The next level is Nothing To It (but the game calls it Electrocution), which also plays normally and displays L=2. -Anything that refers to a level below as levelXX is using zero-based -numbering (level00 = first level, aka Nothing To It). +Anything that refers to a level below as levelXX is using one-based +numbering (level01 = first level, aka Nothing To It). Level descriptor structure: @@ -92,7 +92,7 @@ Offset 36, size 2 (?): $40,$97 on every level. Offset 38, size 2: -$06E6 for all levels except level07, where it's $AF58 (which is +$06E6 for all levels except level08, where it's $AF58 (which is a subroutine in ROM). Offset 40, size 6: @@ -106,9 +106,9 @@ Unknown. Not a ROM address. Offset 50, size 1: $0C on most levels except: -$18 on level01 -$4C on level03 -$04 on level05 +$18 on level02 +$4C on level04 +$04 on level06 Offsets 51-54: unknown. @@ -122,6 +122,6 @@ Offset 58, size 2 (?): Unknown. Not a ROM address. Offset 60, size 4: -$00,$00,$00,$00 on every level except level05 (Walls) where it's +$00,$00,$00,$00 on every level except level06 (Walls) where it's $FF,$FF,$FF,$FF. diff --git a/level_maps.txt b/level_maps.txt index cfbda56..e2acd71 100644 --- a/level_maps.txt +++ b/level_maps.txt @@ -7,7 +7,7 @@ of the map during the level (e.g. the disappearing girders on level 1). Here's the map for the first level, as a disassembly: -level00_map: +level01_map: .byte $FE,$33,$9C,$FD,$04,$00,$44,$05 ; A300 FE 33 9C FD 04 00 44 05 .3....D. .byte $06,$04,$15,$0A,$74,$15,$0A,$24 ; A308 06 04 15 0A 74 15 0A 24 ....t..$ .byte $22,$02,$74,$22,$02,$24,$25,$16 ; A310 22 02 74 22 02 24 25 16 ".t".$%. @@ -21,7 +21,7 @@ level00_map: .byte $15,$FE,$C9,$9C,$06,$18,$0A,$99 ; A350 15 FE C9 9C 06 18 0A 99 ........ .byte $18,$0A,$FE,$DA,$9C,$1D,$38,$06 ; A358 18 0A FE DA 9C 1D 38 06 ......8. .byte $81,$38,$06,$FE,$B3,$9C ; A360 81 38 06 FE B3 9C .8.... -level00_map_bombs: +level01_map_bombs: .byte $04,$12,$01,$38,$02,$01,$64,$02 ; A366 04 12 01 38 02 01 64 02 ...8..d. .byte $01,$98,$12,$01,$44,$22,$01,$58 ; A36E 01 98 12 01 44 22 01 58 ....D".X .byte $22,$01,$04,$42,$01,$98,$42,$01 ; A376 22 01 04 42 01 98 42 01 "..B..B. @@ -51,7 +51,7 @@ A33C: $FE,$5F,$9C selects a different shape (ladders). There are more $FE's to select ladders, up/down ropes, and bombs... The bombs *must* come last! They have their own label here, -level00_map_bombs. This is because the level_desc structure has a 2nd +level01_map_bombs. This is because the level_desc structure has a 2nd map data pointer to the bombs, used by bomb_pickup for determining the location of the bomb that was just picked up. Most levels don't even use the position, but it's always stored at $06DC/$06DD for use by the @@ -78,9 +78,9 @@ Anything else - gfx_draw (opcode is X start, next 2 bytes are Y and length) All the opcodes other than gfx_end are 3 bytes. Write macros for ca65 and a disassembler in perl. -Hand disassembly of level00_map: +Hand disassembly of level01_map: -level00_map: +level01_map: gfx_shape sh_girder gfx_delta $04,$00 ; draw left to right (or to the east), 4 pixel steps gfx_draw $44,$05,$06 ; these are all horizontal platforms @@ -114,7 +114,7 @@ level00_map: gfx_draw $1D,$38,$06 ; again, no gfx_delta needed gfx_draw $81,$38,$06 gfx_shape sh_bomb -level00_map_bombs: ; always need a label at the start of the bombs +level01_map_bombs: ; always need a label at the start of the bombs gfx_draw $04,$12,$01 ; no gfx_delta, wouldn't matter as length is 1 for these. gfx_draw $38,$02,$01 gfx_draw $64,$02,$01 @@ -129,28 +129,28 @@ level00_map_bombs: ; always need a label at the start of the bombs gfx_draw $98,$52,$01 gfx_end ; that's all, folks! -level00 also has 4 sets of map_change instructions, triggered when various +level01 also has 4 sets of map_change instructions, triggered when various bombs are picked up: -l00_map_change_0: +l01_map_change_0: gfx_shape $9C49 ; sh_blank_4x4 gfx_delta $04,$01 gfx_draw $64,$08,$02 gfx_end -l00_map_change_1: +l01_map_change_1: gfx_shape $9C49 ; sh_blank_4x4 gfx_delta $04,$FF gfx_draw $34,$09,$02 gfx_end -l00_map_change_2: +l01_map_change_2: gfx_shape $9C49 ; sh_blank_4x4 gfx_delta $04,$00 gfx_draw $2C,$25,$05 gfx_end -l00_map_change_3: +l01_map_change_3: gfx_shape $9C49 ; sh_blank_4x4 gfx_delta $04,$00 gfx_draw $60,$25,$05 diff --git a/leveldesc.info b/leveldesc.info index c764796..ed6a200 100644 --- a/leveldesc.info +++ b/leveldesc.info @@ -21,7 +21,7 @@ label { name "work_level_indirect_subs"; addr $079e; size 2; comment "pointer to label { name "work_level_sub_bomb"; addr $07a0; size 2; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; label { name "work_level_sub_start"; addr $07a2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; label { name "work_level_sub6"; addr $07a4; size 2; comment "always $9740 aka game_main_loop"; }; -label { name "work_level_sub_eol"; addr $07a6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; +label { name "work_level_sub_eol"; addr $07a6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; label { name "work_level_offs_40"; addr $07a8; size 6; comment "all zeroes"; }; label { name "work_level_colpf3"; addr $07ae; size 1; comment "color (not sure what gets drawn in this color yet)"; }; label { name "work_level_colpf0"; addr $07af; size 1; comment "color for girders and up-ropes"; }; @@ -30,7 +30,7 @@ label { name "work_level_colpf2"; addr $07b1; size 1; comment "color for bombs"; label { name "work_level_offs_50"; addr $07b2; size 5; comment "unknown"; }; label { name "work_level_offs_55"; addr $07b7; size 3; comment "unknown, always $00 $00 $00"; }; label { name "work_level_offs_58"; addr $07ba; size 2; comment "unknown, not a ROM address"; }; -label { name "work_level_offs_60"; addr $07bc; size 4; comment "unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; +label { name "work_level_offs_60"; addr $07bc; size 4; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; label { name "cur_level_desc"; addr $07c0; size 2; comment "first 2 bytes are level number in screencodes"; }; label { name "cur_level_sub0"; addr $07c2; size 2; comment "a subroutine"; }; @@ -55,7 +55,7 @@ label { name "cur_level_indirect_subs"; addr $07de; size 2; comment "pointer to label { name "cur_level_sub_bomb"; addr $07e0; size 2; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; label { name "cur_level_sub_start"; addr $07e2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; label { name "cur_level_sub6"; addr $07e4; size 2; comment "always $9740 aka game_main_loop"; }; -label { name "cur_level_sub_eol"; addr $07e6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; +label { name "cur_level_sub_eol"; addr $07e6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; label { name "cur_level_offs_40"; addr $07e8; size 6; comment "all zeroes"; }; label { name "cur_level_colpf3"; addr $07ee; size 1; comment "color (not sure what gets drawn in this color yet)"; }; label { name "cur_level_colpf0"; addr $07ef; size 1; comment "color for girders and up-ropes"; }; @@ -64,413 +64,413 @@ label { name "cur_level_colpf2"; addr $07f1; size 1; comment "color for bombs"; label { name "cur_level_offs_50"; addr $07f2; size 5; comment "unknown"; }; label { name "cur_level_offs_55"; addr $07f7; size 3; comment "unknown, always $00 $00 $00"; }; 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, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; +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 "level00_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 "level00_sub0"; start $a002; end $a003; type addrtable; comment "a subroutine"; }; -range { name "level00_sub1"; start $a004; end $a005; type addrtable; comment "a subroutine"; }; -range { name "level00_sub2"; start $a006; end $a007; type addrtable; comment "a subroutine"; }; -range { name "level00_sub3"; start $a008; end $a009; type addrtable; comment "a subroutine"; }; -range { name "level00_num_bombs"; start $a00a; end $a00a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level00_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level00_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level00_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; }; -range { name "level00_fudge_x"; start $a00e; end $a00e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level00_fudge_y"; start $a00f; end $a00f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level00_points_per_bomb"; start $a010; end $a010; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level00_time_bonus"; start $a011; end $a012; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level00_offs_19"; start $a013; end $a013; type bytetable; comment "always $00"; }; -range { name "level00_unkn_table0"; start $a014; end $a015; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level00_map"; start $a016; end $a017; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level00_map_bombs"; start $a018; end $a019; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level00_bomblist"; start $a01a; end $a01b; type addrtable; comment "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."; }; -range { name "level00_map_changes"; start $a01c; end $a01d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level00_indirect_subs"; start $a01e; end $a01f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level00_sub_bomb"; start $a020; end $a021; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level00_sub_start"; start $a022; end $a023; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level00_sub6"; start $a024; end $a025; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level00_sub_eol"; start $a026; end $a027; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level00_offs_40"; start $a028; end $a02d; type bytetable; comment "all zeroes"; }; -range { name "level00_colpf3"; start $a02e; end $a02e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level00_colpf0"; start $a02f; end $a02f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level00_colpf1"; start $a030; end $a030; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level00_colpf2"; start $a031; end $a031; type bytetable; comment "color for bombs"; }; -range { name "level00_offs_50"; start $a032; end $a036; type bytetable; comment "unknown"; }; -range { name "level00_offs_55"; start $a037; end $a039; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level00_offs_58"; start $a03a; end $a03b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level00_offs_60"; start $a03c; end $a03f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level01_sub3"; start $a008; end $a009; type addrtable; comment "a subroutine"; }; +range { name "level01_num_bombs"; start $a00a; end $a00a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level01_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level01_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level01_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; }; +range { name "level01_fudge_x"; start $a00e; end $a00e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level01_fudge_y"; start $a00f; end $a00f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level01_points_per_bomb"; start $a010; end $a010; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level01_time_bonus"; start $a011; end $a012; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level01_offs_19"; start $a013; end $a013; type bytetable; comment "always $00"; }; +range { name "level01_unkn_table0"; start $a014; end $a015; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level01_map"; start $a016; end $a017; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level01_map_bombs"; start $a018; end $a019; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level01_bomblist"; start $a01a; end $a01b; type addrtable; comment "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."; }; +range { name "level01_map_changes"; start $a01c; end $a01d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level01_indirect_subs"; start $a01e; end $a01f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level01_sub_bomb"; start $a020; end $a021; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level01_sub_start"; start $a022; end $a023; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level01_sub6"; start $a024; end $a025; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level01_sub_eol"; start $a026; end $a027; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level01_offs_40"; start $a028; end $a02d; type bytetable; comment "all zeroes"; }; +range { name "level01_colpf3"; start $a02e; end $a02e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level01_colpf0"; start $a02f; end $a02f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level01_colpf1"; start $a030; end $a030; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level01_colpf2"; start $a031; end $a031; type bytetable; comment "color for bombs"; }; +range { name "level01_offs_50"; start $a032; end $a036; type bytetable; comment "unknown"; }; +range { name "level01_offs_55"; start $a037; end $a039; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level01_desc"; start $a040; end $a041; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level01_sub0"; start $a042; end $a043; type addrtable; comment "a subroutine"; }; -range { name "level01_sub1"; start $a044; end $a045; type addrtable; comment "a subroutine"; }; -range { name "level01_sub2"; start $a046; end $a047; type addrtable; comment "a subroutine"; }; -range { name "level01_sub3"; start $a048; end $a049; type addrtable; comment "a subroutine"; }; -range { name "level01_num_bombs"; start $a04a; end $a04a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level01_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level01_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level01_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; }; -range { name "level01_fudge_x"; start $a04e; end $a04e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level01_fudge_y"; start $a04f; end $a04f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level01_points_per_bomb"; start $a050; end $a050; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level01_time_bonus"; start $a051; end $a052; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level01_offs_19"; start $a053; end $a053; type bytetable; comment "always $00"; }; -range { name "level01_unkn_table0"; start $a054; end $a055; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level01_map"; start $a056; end $a057; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level01_map_bombs"; start $a058; end $a059; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level01_bomblist"; start $a05a; end $a05b; type addrtable; comment "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."; }; -range { name "level01_map_changes"; start $a05c; end $a05d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level01_indirect_subs"; start $a05e; end $a05f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level01_sub_bomb"; start $a060; end $a061; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level01_sub_start"; start $a062; end $a063; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level01_sub6"; start $a064; end $a065; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level01_sub_eol"; start $a066; end $a067; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level01_offs_40"; start $a068; end $a06d; type bytetable; comment "all zeroes"; }; -range { name "level01_colpf3"; start $a06e; end $a06e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level01_colpf0"; start $a06f; end $a06f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level01_colpf1"; start $a070; end $a070; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level01_colpf2"; start $a071; end $a071; type bytetable; comment "color for bombs"; }; -range { name "level01_offs_50"; start $a072; end $a076; type bytetable; comment "unknown"; }; -range { name "level01_offs_55"; start $a077; end $a079; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level01_offs_58"; start $a07a; end $a07b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level01_offs_60"; start $a07c; end $a07f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level02_sub3"; start $a048; end $a049; type addrtable; comment "a subroutine"; }; +range { name "level02_num_bombs"; start $a04a; end $a04a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level02_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level02_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level02_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; }; +range { name "level02_fudge_x"; start $a04e; end $a04e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level02_fudge_y"; start $a04f; end $a04f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level02_points_per_bomb"; start $a050; end $a050; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level02_time_bonus"; start $a051; end $a052; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level02_offs_19"; start $a053; end $a053; type bytetable; comment "always $00"; }; +range { name "level02_unkn_table0"; start $a054; end $a055; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level02_map"; start $a056; end $a057; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level02_map_bombs"; start $a058; end $a059; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level02_bomblist"; start $a05a; end $a05b; type addrtable; comment "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."; }; +range { name "level02_map_changes"; start $a05c; end $a05d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level02_indirect_subs"; start $a05e; end $a05f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level02_sub_bomb"; start $a060; end $a061; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level02_sub_start"; start $a062; end $a063; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level02_sub6"; start $a064; end $a065; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level02_sub_eol"; start $a066; end $a067; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level02_offs_40"; start $a068; end $a06d; type bytetable; comment "all zeroes"; }; +range { name "level02_colpf3"; start $a06e; end $a06e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level02_colpf0"; start $a06f; end $a06f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level02_colpf1"; start $a070; end $a070; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level02_colpf2"; start $a071; end $a071; type bytetable; comment "color for bombs"; }; +range { name "level02_offs_50"; start $a072; end $a076; type bytetable; comment "unknown"; }; +range { name "level02_offs_55"; start $a077; end $a079; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level02_desc"; start $a080; end $a081; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level02_sub0"; start $a082; end $a083; type addrtable; comment "a subroutine"; }; -range { name "level02_sub1"; start $a084; end $a085; type addrtable; comment "a subroutine"; }; -range { name "level02_sub2"; start $a086; end $a087; type addrtable; comment "a subroutine"; }; -range { name "level02_sub3"; start $a088; end $a089; type addrtable; comment "a subroutine"; }; -range { name "level02_num_bombs"; start $a08a; end $a08a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level02_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level02_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level02_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; }; -range { name "level02_fudge_x"; start $a08e; end $a08e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level02_fudge_y"; start $a08f; end $a08f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level02_points_per_bomb"; start $a090; end $a090; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level02_time_bonus"; start $a091; end $a092; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level02_offs_19"; start $a093; end $a093; type bytetable; comment "always $00"; }; -range { name "level02_unkn_table0"; start $a094; end $a095; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level02_map"; start $a096; end $a097; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level02_map_bombs"; start $a098; end $a099; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level02_bomblist"; start $a09a; end $a09b; type addrtable; comment "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."; }; -range { name "level02_map_changes"; start $a09c; end $a09d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level02_indirect_subs"; start $a09e; end $a09f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level02_sub_bomb"; start $a0a0; end $a0a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level02_sub_start"; start $a0a2; end $a0a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level02_sub6"; start $a0a4; end $a0a5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level02_sub_eol"; start $a0a6; end $a0a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level02_offs_40"; start $a0a8; end $a0ad; type bytetable; comment "all zeroes"; }; -range { name "level02_colpf3"; start $a0ae; end $a0ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level02_colpf0"; start $a0af; end $a0af; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level02_colpf1"; start $a0b0; end $a0b0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level02_colpf2"; start $a0b1; end $a0b1; type bytetable; comment "color for bombs"; }; -range { name "level02_offs_50"; start $a0b2; end $a0b6; type bytetable; comment "unknown"; }; -range { name "level02_offs_55"; start $a0b7; end $a0b9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level02_offs_58"; start $a0ba; end $a0bb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level02_offs_60"; start $a0bc; end $a0bf; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level03_sub3"; start $a088; end $a089; type addrtable; comment "a subroutine"; }; +range { name "level03_num_bombs"; start $a08a; end $a08a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level03_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level03_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level03_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; }; +range { name "level03_fudge_x"; start $a08e; end $a08e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level03_fudge_y"; start $a08f; end $a08f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level03_points_per_bomb"; start $a090; end $a090; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level03_time_bonus"; start $a091; end $a092; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level03_offs_19"; start $a093; end $a093; type bytetable; comment "always $00"; }; +range { name "level03_unkn_table0"; start $a094; end $a095; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level03_map"; start $a096; end $a097; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level03_map_bombs"; start $a098; end $a099; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level03_bomblist"; start $a09a; end $a09b; type addrtable; comment "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."; }; +range { name "level03_map_changes"; start $a09c; end $a09d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level03_indirect_subs"; start $a09e; end $a09f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level03_sub_bomb"; start $a0a0; end $a0a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level03_sub_start"; start $a0a2; end $a0a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level03_sub6"; start $a0a4; end $a0a5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level03_sub_eol"; start $a0a6; end $a0a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level03_offs_40"; start $a0a8; end $a0ad; type bytetable; comment "all zeroes"; }; +range { name "level03_colpf3"; start $a0ae; end $a0ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level03_colpf0"; start $a0af; end $a0af; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level03_colpf1"; start $a0b0; end $a0b0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level03_colpf2"; start $a0b1; end $a0b1; type bytetable; comment "color for bombs"; }; +range { name "level03_offs_50"; start $a0b2; end $a0b6; type bytetable; comment "unknown"; }; +range { name "level03_offs_55"; start $a0b7; end $a0b9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level03_desc"; start $a0c0; end $a0c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level03_sub0"; start $a0c2; end $a0c3; type addrtable; comment "a subroutine"; }; -range { name "level03_sub1"; start $a0c4; end $a0c5; type addrtable; comment "a subroutine"; }; -range { name "level03_sub2"; start $a0c6; end $a0c7; type addrtable; comment "a subroutine"; }; -range { name "level03_sub3"; start $a0c8; end $a0c9; type addrtable; comment "a subroutine"; }; -range { name "level03_num_bombs"; start $a0ca; end $a0ca; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level03_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level03_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; }; -range { name "level03_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level03_fudge_x"; start $a0ce; end $a0ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level03_fudge_y"; start $a0cf; end $a0cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level03_points_per_bomb"; start $a0d0; end $a0d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level03_time_bonus"; start $a0d1; end $a0d2; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level03_offs_19"; start $a0d3; end $a0d3; type bytetable; comment "always $00"; }; -range { name "level03_unkn_table0"; start $a0d4; end $a0d5; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level03_map"; start $a0d6; end $a0d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level03_map_bombs"; start $a0d8; end $a0d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level03_bomblist"; start $a0da; end $a0db; type addrtable; comment "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."; }; -range { name "level03_map_changes"; start $a0dc; end $a0dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level03_indirect_subs"; start $a0de; end $a0df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level03_sub_bomb"; start $a0e0; end $a0e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level03_sub_start"; start $a0e2; end $a0e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level03_sub6"; start $a0e4; end $a0e5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level03_sub_eol"; start $a0e6; end $a0e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level03_offs_40"; start $a0e8; end $a0ed; type bytetable; comment "all zeroes"; }; -range { name "level03_colpf3"; start $a0ee; end $a0ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level03_colpf0"; start $a0ef; end $a0ef; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level03_colpf1"; start $a0f0; end $a0f0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level03_colpf2"; start $a0f1; end $a0f1; type bytetable; comment "color for bombs"; }; -range { name "level03_offs_50"; start $a0f2; end $a0f6; type bytetable; comment "unknown"; }; -range { name "level03_offs_55"; start $a0f7; end $a0f9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level03_offs_58"; start $a0fa; end $a0fb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level03_offs_60"; start $a0fc; end $a0ff; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level04_sub3"; start $a0c8; end $a0c9; type addrtable; comment "a subroutine"; }; +range { name "level04_num_bombs"; start $a0ca; end $a0ca; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level04_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level04_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; }; +range { name "level04_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; }; +range { name "level04_fudge_x"; start $a0ce; end $a0ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level04_fudge_y"; start $a0cf; end $a0cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level04_points_per_bomb"; start $a0d0; end $a0d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level04_time_bonus"; start $a0d1; end $a0d2; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level04_offs_19"; start $a0d3; end $a0d3; type bytetable; comment "always $00"; }; +range { name "level04_unkn_table0"; start $a0d4; end $a0d5; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level04_map"; start $a0d6; end $a0d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level04_map_bombs"; start $a0d8; end $a0d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level04_bomblist"; start $a0da; end $a0db; type addrtable; comment "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."; }; +range { name "level04_map_changes"; start $a0dc; end $a0dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level04_indirect_subs"; start $a0de; end $a0df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level04_sub_bomb"; start $a0e0; end $a0e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level04_sub_start"; start $a0e2; end $a0e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level04_sub6"; start $a0e4; end $a0e5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level04_sub_eol"; start $a0e6; end $a0e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level04_offs_40"; start $a0e8; end $a0ed; type bytetable; comment "all zeroes"; }; +range { name "level04_colpf3"; start $a0ee; end $a0ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level04_colpf0"; start $a0ef; end $a0ef; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level04_colpf1"; start $a0f0; end $a0f0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level04_colpf2"; start $a0f1; end $a0f1; type bytetable; comment "color for bombs"; }; +range { name "level04_offs_50"; start $a0f2; end $a0f6; type bytetable; comment "unknown"; }; +range { name "level04_offs_55"; start $a0f7; end $a0f9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level04_desc"; start $a100; end $a101; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level04_sub0"; start $a102; end $a103; type addrtable; comment "a subroutine"; }; -range { name "level04_sub1"; start $a104; end $a105; type addrtable; comment "a subroutine"; }; -range { name "level04_sub2"; start $a106; end $a107; type addrtable; comment "a subroutine"; }; -range { name "level04_sub3"; start $a108; end $a109; type addrtable; comment "a subroutine"; }; -range { name "level04_num_bombs"; start $a10a; end $a10a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level04_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level04_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level04_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; }; -range { name "level04_fudge_x"; start $a10e; end $a10e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level04_fudge_y"; start $a10f; end $a10f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level04_points_per_bomb"; start $a110; end $a110; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level04_time_bonus"; start $a111; end $a112; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level04_offs_19"; start $a113; end $a113; type bytetable; comment "always $00"; }; -range { name "level04_unkn_table0"; start $a114; end $a115; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level04_map"; start $a116; end $a117; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level04_map_bombs"; start $a118; end $a119; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level04_bomblist"; start $a11a; end $a11b; type addrtable; comment "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."; }; -range { name "level04_map_changes"; start $a11c; end $a11d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level04_indirect_subs"; start $a11e; end $a11f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level04_sub_bomb"; start $a120; end $a121; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level04_sub_start"; start $a122; end $a123; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level04_sub6"; start $a124; end $a125; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level04_sub_eol"; start $a126; end $a127; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level04_offs_40"; start $a128; end $a12d; type bytetable; comment "all zeroes"; }; -range { name "level04_colpf3"; start $a12e; end $a12e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level04_colpf0"; start $a12f; end $a12f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level04_colpf1"; start $a130; end $a130; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level04_colpf2"; start $a131; end $a131; type bytetable; comment "color for bombs"; }; -range { name "level04_offs_50"; start $a132; end $a136; type bytetable; comment "unknown"; }; -range { name "level04_offs_55"; start $a137; end $a139; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level04_offs_58"; start $a13a; end $a13b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level04_offs_60"; start $a13c; end $a13f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level05_sub3"; start $a108; end $a109; type addrtable; comment "a subroutine"; }; +range { name "level05_num_bombs"; start $a10a; end $a10a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level05_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level05_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level05_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; }; +range { name "level05_fudge_x"; start $a10e; end $a10e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level05_fudge_y"; start $a10f; end $a10f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level05_points_per_bomb"; start $a110; end $a110; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level05_time_bonus"; start $a111; end $a112; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level05_offs_19"; start $a113; end $a113; type bytetable; comment "always $00"; }; +range { name "level05_unkn_table0"; start $a114; end $a115; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level05_map"; start $a116; end $a117; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level05_map_bombs"; start $a118; end $a119; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level05_bomblist"; start $a11a; end $a11b; type addrtable; comment "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."; }; +range { name "level05_map_changes"; start $a11c; end $a11d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level05_indirect_subs"; start $a11e; end $a11f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level05_sub_bomb"; start $a120; end $a121; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level05_sub_start"; start $a122; end $a123; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level05_sub6"; start $a124; end $a125; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level05_sub_eol"; start $a126; end $a127; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level05_offs_40"; start $a128; end $a12d; type bytetable; comment "all zeroes"; }; +range { name "level05_colpf3"; start $a12e; end $a12e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level05_colpf0"; start $a12f; end $a12f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level05_colpf1"; start $a130; end $a130; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level05_colpf2"; start $a131; end $a131; type bytetable; comment "color for bombs"; }; +range { name "level05_offs_50"; start $a132; end $a136; type bytetable; comment "unknown"; }; +range { name "level05_offs_55"; start $a137; end $a139; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level05_desc"; start $a140; end $a141; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level05_sub0"; start $a142; end $a143; type addrtable; comment "a subroutine"; }; -range { name "level05_sub1"; start $a144; end $a145; type addrtable; comment "a subroutine"; }; -range { name "level05_sub2"; start $a146; end $a147; type addrtable; comment "a subroutine"; }; -range { name "level05_sub3"; start $a148; end $a149; type addrtable; comment "a subroutine"; }; -range { name "level05_num_bombs"; start $a14a; end $a14a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level05_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level05_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level05_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; }; -range { name "level05_fudge_x"; start $a14e; end $a14e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level05_fudge_y"; start $a14f; end $a14f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level05_points_per_bomb"; start $a150; end $a150; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level05_time_bonus"; start $a151; end $a152; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level05_offs_19"; start $a153; end $a153; type bytetable; comment "always $00"; }; -range { name "level05_unkn_table0"; start $a154; end $a155; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level05_map"; start $a156; end $a157; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level05_map_bombs"; start $a158; end $a159; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level05_bomblist"; start $a15a; end $a15b; type addrtable; comment "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."; }; -range { name "level05_map_changes"; start $a15c; end $a15d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level05_indirect_subs"; start $a15e; end $a15f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level05_sub_bomb"; start $a160; end $a161; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level05_sub_start"; start $a162; end $a163; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level05_sub6"; start $a164; end $a165; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level05_sub_eol"; start $a166; end $a167; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level05_offs_40"; start $a168; end $a16d; type bytetable; comment "all zeroes"; }; -range { name "level05_colpf3"; start $a16e; end $a16e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level05_colpf0"; start $a16f; end $a16f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level05_colpf1"; start $a170; end $a170; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level05_colpf2"; start $a171; end $a171; type bytetable; comment "color for bombs"; }; -range { name "level05_offs_50"; start $a172; end $a176; type bytetable; comment "unknown"; }; -range { name "level05_offs_55"; start $a177; end $a179; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level05_offs_58"; start $a17a; end $a17b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level05_offs_60"; start $a17c; end $a17f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level06_sub3"; start $a148; end $a149; type addrtable; comment "a subroutine"; }; +range { name "level06_num_bombs"; start $a14a; end $a14a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level06_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level06_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level06_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; }; +range { name "level06_fudge_x"; start $a14e; end $a14e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level06_fudge_y"; start $a14f; end $a14f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level06_points_per_bomb"; start $a150; end $a150; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level06_time_bonus"; start $a151; end $a152; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level06_offs_19"; start $a153; end $a153; type bytetable; comment "always $00"; }; +range { name "level06_unkn_table0"; start $a154; end $a155; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level06_map"; start $a156; end $a157; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level06_map_bombs"; start $a158; end $a159; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level06_bomblist"; start $a15a; end $a15b; type addrtable; comment "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."; }; +range { name "level06_map_changes"; start $a15c; end $a15d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level06_indirect_subs"; start $a15e; end $a15f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level06_sub_bomb"; start $a160; end $a161; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level06_sub_start"; start $a162; end $a163; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level06_sub6"; start $a164; end $a165; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level06_sub_eol"; start $a166; end $a167; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level06_offs_40"; start $a168; end $a16d; type bytetable; comment "all zeroes"; }; +range { name "level06_colpf3"; start $a16e; end $a16e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level06_colpf0"; start $a16f; end $a16f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level06_colpf1"; start $a170; end $a170; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level06_colpf2"; start $a171; end $a171; type bytetable; comment "color for bombs"; }; +range { name "level06_offs_50"; start $a172; end $a176; type bytetable; comment "unknown"; }; +range { name "level06_offs_55"; start $a177; end $a179; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level06_desc"; start $a180; end $a181; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level06_sub0"; start $a182; end $a183; type addrtable; comment "a subroutine"; }; -range { name "level06_sub1"; start $a184; end $a185; type addrtable; comment "a subroutine"; }; -range { name "level06_sub2"; start $a186; end $a187; type addrtable; comment "a subroutine"; }; -range { name "level06_sub3"; start $a188; end $a189; type addrtable; comment "a subroutine"; }; -range { name "level06_num_bombs"; start $a18a; end $a18a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level06_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level06_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level06_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; }; -range { name "level06_fudge_x"; start $a18e; end $a18e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level06_fudge_y"; start $a18f; end $a18f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level06_points_per_bomb"; start $a190; end $a190; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level06_time_bonus"; start $a191; end $a192; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level06_offs_19"; start $a193; end $a193; type bytetable; comment "always $00"; }; -range { name "level06_unkn_table0"; start $a194; end $a195; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level06_map"; start $a196; end $a197; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level06_map_bombs"; start $a198; end $a199; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level06_bomblist"; start $a19a; end $a19b; type addrtable; comment "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."; }; -range { name "level06_map_changes"; start $a19c; end $a19d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level06_indirect_subs"; start $a19e; end $a19f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level06_sub_bomb"; start $a1a0; end $a1a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level06_sub_start"; start $a1a2; end $a1a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level06_sub6"; start $a1a4; end $a1a5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level06_sub_eol"; start $a1a6; end $a1a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level06_offs_40"; start $a1a8; end $a1ad; type bytetable; comment "all zeroes"; }; -range { name "level06_colpf3"; start $a1ae; end $a1ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level06_colpf0"; start $a1af; end $a1af; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level06_colpf1"; start $a1b0; end $a1b0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level06_colpf2"; start $a1b1; end $a1b1; type bytetable; comment "color for bombs"; }; -range { name "level06_offs_50"; start $a1b2; end $a1b6; type bytetable; comment "unknown"; }; -range { name "level06_offs_55"; start $a1b7; end $a1b9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level06_offs_58"; start $a1ba; end $a1bb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level06_offs_60"; start $a1bc; end $a1bf; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level07_sub3"; start $a188; end $a189; type addrtable; comment "a subroutine"; }; +range { name "level07_num_bombs"; start $a18a; end $a18a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level07_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level07_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level07_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; }; +range { name "level07_fudge_x"; start $a18e; end $a18e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level07_fudge_y"; start $a18f; end $a18f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level07_points_per_bomb"; start $a190; end $a190; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level07_time_bonus"; start $a191; end $a192; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level07_offs_19"; start $a193; end $a193; type bytetable; comment "always $00"; }; +range { name "level07_unkn_table0"; start $a194; end $a195; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level07_map"; start $a196; end $a197; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level07_map_bombs"; start $a198; end $a199; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level07_bomblist"; start $a19a; end $a19b; type addrtable; comment "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."; }; +range { name "level07_map_changes"; start $a19c; end $a19d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level07_indirect_subs"; start $a19e; end $a19f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level07_sub_bomb"; start $a1a0; end $a1a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level07_sub_start"; start $a1a2; end $a1a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level07_sub6"; start $a1a4; end $a1a5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level07_sub_eol"; start $a1a6; end $a1a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level07_offs_40"; start $a1a8; end $a1ad; type bytetable; comment "all zeroes"; }; +range { name "level07_colpf3"; start $a1ae; end $a1ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level07_colpf0"; start $a1af; end $a1af; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level07_colpf1"; start $a1b0; end $a1b0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level07_colpf2"; start $a1b1; end $a1b1; type bytetable; comment "color for bombs"; }; +range { name "level07_offs_50"; start $a1b2; end $a1b6; type bytetable; comment "unknown"; }; +range { name "level07_offs_55"; start $a1b7; end $a1b9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level07_desc"; start $a1c0; end $a1c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level07_sub0"; start $a1c2; end $a1c3; type addrtable; comment "a subroutine"; }; -range { name "level07_sub1"; start $a1c4; end $a1c5; type addrtable; comment "a subroutine"; }; -range { name "level07_sub2"; start $a1c6; end $a1c7; type addrtable; comment "a subroutine"; }; -range { name "level07_sub3"; start $a1c8; end $a1c9; type addrtable; comment "a subroutine"; }; -range { name "level07_num_bombs"; start $a1ca; end $a1ca; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level07_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level07_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; }; -range { name "level07_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level07_fudge_x"; start $a1ce; end $a1ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level07_fudge_y"; start $a1cf; end $a1cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level07_points_per_bomb"; start $a1d0; end $a1d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level07_time_bonus"; start $a1d1; end $a1d2; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level07_offs_19"; start $a1d3; end $a1d3; type bytetable; comment "always $00"; }; -range { name "level07_unkn_table0"; start $a1d4; end $a1d5; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level07_map"; start $a1d6; end $a1d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level07_map_bombs"; start $a1d8; end $a1d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level07_bomblist"; start $a1da; end $a1db; type addrtable; comment "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."; }; -range { name "level07_map_changes"; start $a1dc; end $a1dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level07_indirect_subs"; start $a1de; end $a1df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level07_sub_bomb"; start $a1e0; end $a1e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level07_sub_start"; start $a1e2; end $a1e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level07_sub6"; start $a1e4; end $a1e5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level07_sub_eol"; start $a1e6; end $a1e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level07_offs_40"; start $a1e8; end $a1ed; type bytetable; comment "all zeroes"; }; -range { name "level07_colpf3"; start $a1ee; end $a1ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level07_colpf0"; start $a1ef; end $a1ef; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level07_colpf1"; start $a1f0; end $a1f0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level07_colpf2"; start $a1f1; end $a1f1; type bytetable; comment "color for bombs"; }; -range { name "level07_offs_50"; start $a1f2; end $a1f6; type bytetable; comment "unknown"; }; -range { name "level07_offs_55"; start $a1f7; end $a1f9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level07_offs_58"; start $a1fa; end $a1fb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level07_offs_60"; start $a1fc; end $a1ff; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level08_sub3"; start $a1c8; end $a1c9; type addrtable; comment "a subroutine"; }; +range { name "level08_num_bombs"; start $a1ca; end $a1ca; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level08_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level08_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; }; +range { name "level08_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; }; +range { name "level08_fudge_x"; start $a1ce; end $a1ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level08_fudge_y"; start $a1cf; end $a1cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level08_points_per_bomb"; start $a1d0; end $a1d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level08_time_bonus"; start $a1d1; end $a1d2; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level08_offs_19"; start $a1d3; end $a1d3; type bytetable; comment "always $00"; }; +range { name "level08_unkn_table0"; start $a1d4; end $a1d5; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level08_map"; start $a1d6; end $a1d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level08_map_bombs"; start $a1d8; end $a1d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level08_bomblist"; start $a1da; end $a1db; type addrtable; comment "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."; }; +range { name "level08_map_changes"; start $a1dc; end $a1dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level08_indirect_subs"; start $a1de; end $a1df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level08_sub_bomb"; start $a1e0; end $a1e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level08_sub_start"; start $a1e2; end $a1e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level08_sub6"; start $a1e4; end $a1e5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level08_sub_eol"; start $a1e6; end $a1e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level08_offs_40"; start $a1e8; end $a1ed; type bytetable; comment "all zeroes"; }; +range { name "level08_colpf3"; start $a1ee; end $a1ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level08_colpf0"; start $a1ef; end $a1ef; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level08_colpf1"; start $a1f0; end $a1f0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level08_colpf2"; start $a1f1; end $a1f1; type bytetable; comment "color for bombs"; }; +range { name "level08_offs_50"; start $a1f2; end $a1f6; type bytetable; comment "unknown"; }; +range { name "level08_offs_55"; start $a1f7; end $a1f9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level08_desc"; start $a200; end $a201; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level08_sub0"; start $a202; end $a203; type addrtable; comment "a subroutine"; }; -range { name "level08_sub1"; start $a204; end $a205; type addrtable; comment "a subroutine"; }; -range { name "level08_sub2"; start $a206; end $a207; type addrtable; comment "a subroutine"; }; -range { name "level08_sub3"; start $a208; end $a209; type addrtable; comment "a subroutine"; }; -range { name "level08_num_bombs"; start $a20a; end $a20a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level08_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level08_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level08_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; }; -range { name "level08_fudge_x"; start $a20e; end $a20e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level08_fudge_y"; start $a20f; end $a20f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level08_points_per_bomb"; start $a210; end $a210; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level08_time_bonus"; start $a211; end $a212; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level08_offs_19"; start $a213; end $a213; type bytetable; comment "always $00"; }; -range { name "level08_unkn_table0"; start $a214; end $a215; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level08_map"; start $a216; end $a217; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level08_map_bombs"; start $a218; end $a219; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level08_bomblist"; start $a21a; end $a21b; type addrtable; comment "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."; }; -range { name "level08_map_changes"; start $a21c; end $a21d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level08_indirect_subs"; start $a21e; end $a21f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level08_sub_bomb"; start $a220; end $a221; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level08_sub_start"; start $a222; end $a223; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level08_sub6"; start $a224; end $a225; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level08_sub_eol"; start $a226; end $a227; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level08_offs_40"; start $a228; end $a22d; type bytetable; comment "all zeroes"; }; -range { name "level08_colpf3"; start $a22e; end $a22e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level08_colpf0"; start $a22f; end $a22f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level08_colpf1"; start $a230; end $a230; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level08_colpf2"; start $a231; end $a231; type bytetable; comment "color for bombs"; }; -range { name "level08_offs_50"; start $a232; end $a236; type bytetable; comment "unknown"; }; -range { name "level08_offs_55"; start $a237; end $a239; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level08_offs_58"; start $a23a; end $a23b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level08_offs_60"; start $a23c; end $a23f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level09_sub3"; start $a208; end $a209; type addrtable; comment "a subroutine"; }; +range { name "level09_num_bombs"; start $a20a; end $a20a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level09_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level09_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level09_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; }; +range { name "level09_fudge_x"; start $a20e; end $a20e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level09_fudge_y"; start $a20f; end $a20f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level09_points_per_bomb"; start $a210; end $a210; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level09_time_bonus"; start $a211; end $a212; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level09_offs_19"; start $a213; end $a213; type bytetable; comment "always $00"; }; +range { name "level09_unkn_table0"; start $a214; end $a215; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level09_map"; start $a216; end $a217; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level09_map_bombs"; start $a218; end $a219; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level09_bomblist"; start $a21a; end $a21b; type addrtable; comment "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."; }; +range { name "level09_map_changes"; start $a21c; end $a21d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level09_indirect_subs"; start $a21e; end $a21f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level09_sub_bomb"; start $a220; end $a221; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level09_sub_start"; start $a222; end $a223; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level09_sub6"; start $a224; end $a225; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level09_sub_eol"; start $a226; end $a227; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level09_offs_40"; start $a228; end $a22d; type bytetable; comment "all zeroes"; }; +range { name "level09_colpf3"; start $a22e; end $a22e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level09_colpf0"; start $a22f; end $a22f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level09_colpf1"; start $a230; end $a230; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level09_colpf2"; start $a231; end $a231; type bytetable; comment "color for bombs"; }; +range { name "level09_offs_50"; start $a232; end $a236; type bytetable; comment "unknown"; }; +range { name "level09_offs_55"; start $a237; end $a239; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level09_desc"; start $a240; end $a241; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level09_sub0"; start $a242; end $a243; type addrtable; comment "a subroutine"; }; -range { name "level09_sub1"; start $a244; end $a245; type addrtable; comment "a subroutine"; }; -range { name "level09_sub2"; start $a246; end $a247; type addrtable; comment "a subroutine"; }; -range { name "level09_sub3"; start $a248; end $a249; type addrtable; comment "a subroutine"; }; -range { name "level09_num_bombs"; start $a24a; end $a24a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level09_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level09_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level09_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; }; -range { name "level09_fudge_x"; start $a24e; end $a24e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level09_fudge_y"; start $a24f; end $a24f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level09_points_per_bomb"; start $a250; end $a250; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level09_time_bonus"; start $a251; end $a252; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level09_offs_19"; start $a253; end $a253; type bytetable; comment "always $00"; }; -range { name "level09_unkn_table0"; start $a254; end $a255; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level09_map"; start $a256; end $a257; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level09_map_bombs"; start $a258; end $a259; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level09_bomblist"; start $a25a; end $a25b; type addrtable; comment "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."; }; -range { name "level09_map_changes"; start $a25c; end $a25d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level09_indirect_subs"; start $a25e; end $a25f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level09_sub_bomb"; start $a260; end $a261; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level09_sub_start"; start $a262; end $a263; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level09_sub6"; start $a264; end $a265; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level09_sub_eol"; start $a266; end $a267; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level09_offs_40"; start $a268; end $a26d; type bytetable; comment "all zeroes"; }; -range { name "level09_colpf3"; start $a26e; end $a26e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level09_colpf0"; start $a26f; end $a26f; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level09_colpf1"; start $a270; end $a270; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level09_colpf2"; start $a271; end $a271; type bytetable; comment "color for bombs"; }; -range { name "level09_offs_50"; start $a272; end $a276; type bytetable; comment "unknown"; }; -range { name "level09_offs_55"; start $a277; end $a279; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level09_offs_58"; start $a27a; end $a27b; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level09_offs_60"; start $a27c; end $a27f; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level10_sub3"; start $a248; end $a249; type addrtable; comment "a subroutine"; }; +range { name "level10_num_bombs"; start $a24a; end $a24a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level10_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level10_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level10_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; }; +range { name "level10_fudge_x"; start $a24e; end $a24e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level10_fudge_y"; start $a24f; end $a24f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level10_points_per_bomb"; start $a250; end $a250; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level10_time_bonus"; start $a251; end $a252; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level10_offs_19"; start $a253; end $a253; type bytetable; comment "always $00"; }; +range { name "level10_unkn_table0"; start $a254; end $a255; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level10_map"; start $a256; end $a257; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level10_map_bombs"; start $a258; end $a259; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level10_bomblist"; start $a25a; end $a25b; type addrtable; comment "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."; }; +range { name "level10_map_changes"; start $a25c; end $a25d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level10_indirect_subs"; start $a25e; end $a25f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level10_sub_bomb"; start $a260; end $a261; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level10_sub_start"; start $a262; end $a263; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level10_sub6"; start $a264; end $a265; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level10_sub_eol"; start $a266; end $a267; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level10_offs_40"; start $a268; end $a26d; type bytetable; comment "all zeroes"; }; +range { name "level10_colpf3"; start $a26e; end $a26e; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level10_colpf0"; start $a26f; end $a26f; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level10_colpf1"; start $a270; end $a270; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level10_colpf2"; start $a271; end $a271; type bytetable; comment "color for bombs"; }; +range { name "level10_offs_50"; start $a272; end $a276; type bytetable; comment "unknown"; }; +range { name "level10_offs_55"; start $a277; end $a279; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level10_desc"; start $a280; end $a281; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level10_sub0"; start $a282; end $a283; type addrtable; comment "a subroutine"; }; -range { name "level10_sub1"; start $a284; end $a285; type addrtable; comment "a subroutine"; }; -range { name "level10_sub2"; start $a286; end $a287; type addrtable; comment "a subroutine"; }; -range { name "level10_sub3"; start $a288; end $a289; type addrtable; comment "a subroutine"; }; -range { name "level10_num_bombs"; start $a28a; end $a28a; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level10_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level10_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; }; -range { name "level10_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; }; -range { name "level10_fudge_x"; start $a28e; end $a28e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level10_fudge_y"; start $a28f; end $a28f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level10_points_per_bomb"; start $a290; end $a290; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level10_time_bonus"; start $a291; end $a292; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level10_offs_19"; start $a293; end $a293; type bytetable; comment "always $00"; }; -range { name "level10_unkn_table0"; start $a294; end $a295; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level10_map"; start $a296; end $a297; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level10_map_bombs"; start $a298; end $a299; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level10_bomblist"; start $a29a; end $a29b; type addrtable; comment "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."; }; -range { name "level10_map_changes"; start $a29c; end $a29d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level10_indirect_subs"; start $a29e; end $a29f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level10_sub_bomb"; start $a2a0; end $a2a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level10_sub_start"; start $a2a2; end $a2a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level10_sub6"; start $a2a4; end $a2a5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level10_sub_eol"; start $a2a6; end $a2a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level10_offs_40"; start $a2a8; end $a2ad; type bytetable; comment "all zeroes"; }; -range { name "level10_colpf3"; start $a2ae; end $a2ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level10_colpf0"; start $a2af; end $a2af; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level10_colpf1"; start $a2b0; end $a2b0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level10_colpf2"; start $a2b1; end $a2b1; type bytetable; comment "color for bombs"; }; -range { name "level10_offs_50"; start $a2b2; end $a2b6; type bytetable; comment "unknown"; }; -range { name "level10_offs_55"; start $a2b7; end $a2b9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level10_offs_58"; start $a2ba; end $a2bb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level10_offs_60"; start $a2bc; end $a2bf; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level11_sub3"; start $a288; end $a289; type addrtable; comment "a subroutine"; }; +range { name "level11_num_bombs"; start $a28a; end $a28a; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level11_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level11_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; }; +range { name "level11_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; }; +range { name "level11_fudge_x"; start $a28e; end $a28e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level11_fudge_y"; start $a28f; end $a28f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level11_points_per_bomb"; start $a290; end $a290; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level11_time_bonus"; start $a291; end $a292; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level11_offs_19"; start $a293; end $a293; type bytetable; comment "always $00"; }; +range { name "level11_unkn_table0"; start $a294; end $a295; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level11_map"; start $a296; end $a297; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level11_map_bombs"; start $a298; end $a299; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level11_bomblist"; start $a29a; end $a29b; type addrtable; comment "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."; }; +range { name "level11_map_changes"; start $a29c; end $a29d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level11_indirect_subs"; start $a29e; end $a29f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level11_sub_bomb"; start $a2a0; end $a2a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level11_sub_start"; start $a2a2; end $a2a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level11_sub6"; start $a2a4; end $a2a5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level11_sub_eol"; start $a2a6; end $a2a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level11_offs_40"; start $a2a8; end $a2ad; type bytetable; comment "all zeroes"; }; +range { name "level11_colpf3"; start $a2ae; end $a2ae; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level11_colpf0"; start $a2af; end $a2af; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level11_colpf1"; start $a2b0; end $a2b0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level11_colpf2"; start $a2b1; end $a2b1; type bytetable; comment "color for bombs"; }; +range { name "level11_offs_50"; start $a2b2; end $a2b6; type bytetable; comment "unknown"; }; +range { name "level11_offs_55"; start $a2b7; end $a2b9; type bytetable; comment "unknown, always $00 $00 $00"; }; +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 "level11_desc"; start $a2c0; end $a2c1; type bytetable; comment "first 2 bytes are level number in screencodes"; }; -range { name "level11_sub0"; start $a2c2; end $a2c3; type addrtable; comment "a subroutine"; }; -range { name "level11_sub1"; start $a2c4; end $a2c5; type addrtable; comment "a subroutine"; }; -range { name "level11_sub2"; start $a2c6; end $a2c7; type addrtable; comment "a subroutine"; }; -range { name "level11_sub3"; start $a2c8; end $a2c9; type addrtable; comment "a subroutine"; }; -range { name "level11_num_bombs"; start $a2ca; end $a2ca; type bytetable; comment "number of bombs to pick up on this level"; }; -range { name "level11_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; }; -range { name "level11_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; }; -range { name "level11_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level11_fudge_x"; start $a2ce; end $a2ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; -range { name "level11_fudge_y"; start $a2cf; end $a2cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; -range { name "level11_points_per_bomb"; start $a2d0; end $a2d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; -range { name "level11_time_bonus"; start $a2d1; end $a2d2; type wordtable; comment "amount of time bonus at start of level"; }; -range { name "level11_offs_19"; start $a2d3; end $a2d3; type bytetable; comment "always $00"; }; -range { name "level11_unkn_table0"; start $a2d4; end $a2d5; type addrtable; comment "pointer to ROM table or $06xx"; }; -range { name "level11_map"; start $a2d6; end $a2d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; -range { name "level11_map_bombs"; start $a2d8; end $a2d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; -range { name "level11_bomblist"; start $a2da; end $a2db; type addrtable; comment "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."; }; -range { name "level11_map_changes"; start $a2dc; end $a2dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; -range { name "level11_indirect_subs"; start $a2de; end $a2df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; -range { name "level11_sub_bomb"; start $a2e0; end $a2e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; -range { name "level11_sub_start"; start $a2e2; end $a2e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; -range { name "level11_sub6"; start $a2e4; end $a2e5; type addrtable; comment "always $9740 aka game_main_loop"; }; -range { name "level11_sub_eol"; start $a2e6; end $a2e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level07"; }; -range { name "level11_offs_40"; start $a2e8; end $a2ed; type bytetable; comment "all zeroes"; }; -range { name "level11_colpf3"; start $a2ee; end $a2ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; -range { name "level11_colpf0"; start $a2ef; end $a2ef; type bytetable; comment "color for girders and up-ropes"; }; -range { name "level11_colpf1"; start $a2f0; end $a2f0; type bytetable; comment "color for ladders and down-ropes"; }; -range { name "level11_colpf2"; start $a2f1; end $a2f1; type bytetable; comment "color for bombs"; }; -range { name "level11_offs_50"; start $a2f2; end $a2f6; type bytetable; comment "unknown"; }; -range { name "level11_offs_55"; start $a2f7; end $a2f9; type bytetable; comment "unknown, always $00 $00 $00"; }; -range { name "level11_offs_58"; start $a2fa; end $a2fb; type bytetable; comment "unknown, not a ROM address"; }; -range { name "level11_offs_60"; start $a2fc; end $a2ff; type bytetable; comment "unknown, level05 (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_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"; }; +range { name "level12_sub3"; start $a2c8; end $a2c9; type addrtable; comment "a subroutine"; }; +range { name "level12_num_bombs"; start $a2ca; end $a2ca; type bytetable; comment "number of bombs to pick up on this level"; }; +range { name "level12_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; }; +range { name "level12_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; }; +range { name "level12_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; }; +range { name "level12_fudge_x"; start $a2ce; end $a2ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level12_fudge_y"; start $a2cf; end $a2cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; +range { name "level12_points_per_bomb"; start $a2d0; end $a2d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; +range { name "level12_time_bonus"; start $a2d1; end $a2d2; type wordtable; comment "amount of time bonus at start of level"; }; +range { name "level12_offs_19"; start $a2d3; end $a2d3; type bytetable; comment "always $00"; }; +range { name "level12_unkn_table0"; start $a2d4; end $a2d5; type addrtable; comment "pointer to ROM table or $06xx"; }; +range { name "level12_map"; start $a2d6; end $a2d7; type addrtable; comment "used to draw the level initially (see also map_changes)"; }; +range { name "level12_map_bombs"; start $a2d8; end $a2d9; type addrtable; comment "start of bombs in map data (which must come last!)"; }; +range { name "level12_bomblist"; start $a2da; end $a2db; type addrtable; comment "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."; }; +range { name "level12_map_changes"; start $a2dc; end $a2dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; }; +range { name "level12_indirect_subs"; start $a2de; end $a2df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; }; +range { name "level12_sub_bomb"; start $a2e0; end $a2e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; }; +range { name "level12_sub_start"; start $a2e2; end $a2e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; }; +range { name "level12_sub6"; start $a2e4; end $a2e5; type addrtable; comment "always $9740 aka game_main_loop"; }; +range { name "level12_sub_eol"; start $a2e6; end $a2e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; }; +range { name "level12_offs_40"; start $a2e8; end $a2ed; type bytetable; comment "all zeroes"; }; +range { name "level12_colpf3"; start $a2ee; end $a2ee; type bytetable; comment "color (not sure what gets drawn in this color yet)"; }; +range { name "level12_colpf0"; start $a2ef; end $a2ef; type bytetable; comment "color for girders and up-ropes"; }; +range { name "level12_colpf1"; start $a2f0; end $a2f0; type bytetable; comment "color for ladders and down-ropes"; }; +range { name "level12_colpf2"; start $a2f1; end $a2f1; type bytetable; comment "color for bombs"; }; +range { name "level12_offs_50"; start $a2f2; end $a2f6; type bytetable; comment "unknown"; }; +range { name "level12_offs_55"; start $a2f7; end $a2f9; type bytetable; comment "unknown, always $00 $00 $00"; }; +range { name "level12_offs_58"; start $a2fa; end $a2fb; type bytetable; comment "unknown, not a ROM address"; }; +range { name "level12_offs_60"; start $a2fc; end $a2ff; type bytetable; comment "unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00"; }; diff --git a/main.info b/main.info index 1537639..d93f34a 100644 --- a/main.info +++ b/main.info @@ -50,10 +50,10 @@ 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 "level07_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; -label { name "l07_got_all"; addr $AF5E; comment "got all the bombs"; }; +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 "bonus_250_pts"; addr $AF96; comment "per letter"; }; -label { name "epyx_jumpman"; addr $AEAF; comment "letters for level07, spellbound (not ASCII or screencodes though)"; }; +label { name "epyx_jumpman"; addr $AEAF; comment "letters for level08, spellbound (not ASCII or screencodes though)"; }; label { name "jump_frame"; addr $06EB; comment "0 if not jumping, or frames since start of jump (range 1 to 21)"; }; range { name "code_99f7"; start $99F7; end $9A1B; type code; }; @@ -128,7 +128,7 @@ label { name "bomb_found"; addr $87E0; size 1; }; label { name "bombloc"; addr $B6; size 1; comment "bomb_pickup: position of the bomb Jumpman just touched, on 8x8 coarse grid"; }; label { name "mul_y"; addr $87EA; size 1; comment "multiply Y by 1.5 (only works because Y will always be even at this point)"; }; label { name "store_bomb_coords"; addr $87F2; size 1; comment "store actual bomb coordinates (not the coarse ones) for bomb subs to use"; }; -label { name "change_map"; addr $881B; size 1; comment "some bombs redraw parts of the level (e.g. disappearing platforms on level00)"; }; +label { name "change_map"; addr $881B; size 1; comment "some bombs redraw parts of the level (e.g. disappearing platforms on level01)"; }; label { name "check_ind_sub"; addr $8831; size 1; comment "see if this bomb calls an indirect sub (none of them do in this game, this is useless code)"; }; label { name "blistptr"; addr $B4; size 2; comment "bomb_pickup: points to current level's bomblist"; }; range { name "gr7_or_masks"; start $8143; end $8152; type bytetable; }; @@ -295,39 +295,39 @@ 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 "wind_table_1"; start $B76B; end $b7bf; type bytetable; comment "used in level11"; }; +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"; }; label { name "electrocution_done"; addr $A4DD; comment "turn off electrocution effect (?)"; }; label { name "electrocute"; addr $A509; comment "electrocution effect"; }; -label { name "level02_collisions"; addr $A53D; comment "skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted"; }; +label { name "level03_collisions"; addr $A53D; comment "skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted"; }; label { name "start_jump"; addr $99A0; comment "start jumping, play sfx_jump"; }; -range { name "l00_map"; start $A300; end $a365; type bytetable; comment "level map data starts here"; }; +range { name "l01_map"; start $A300; end $a365; type bytetable; comment "level map data starts here"; }; -range { name "l00_map_bombs"; start $A366; end $A38A; type bytetable; comment "gfx_draw instructions for bombs, used by bomb_pickup to get bomb coords. $ff terminated"; }; -range { name "l00_bombs"; start $A38B; end $a3a2; type bytetable; comment "2 bytes per entry, terminated by $FF. 1st byte is coarse grid coords (top nybble = X, bottom = Y), 2nd byte is index into map_changes"; }; -range { name "l00_bombs_term"; start $a3a3; end $a3a3; type bytetable; comment "terminator for l00_bombs"; }; -range { name "l00_map_changes"; start $A3A4; end $a3ad; type addrtable; comment "0000 = no change"; }; -range { name "l00_map_change_0"; start $A3AE; end $a3d5; type bytetable; }; -label { name "l00_map_change_1"; addr $a3b8; }; -label { name "l00_map_change_2"; addr $a3c2; }; -label { name "l00_map_change_3"; addr $a3cc; }; +range { name "l01_map_bombs"; start $A366; end $A38A; type bytetable; comment "gfx_draw instructions for bombs, used by bomb_pickup to get bomb coords. $ff terminated"; }; +range { name "l01_bombs"; start $A38B; end $a3a2; type bytetable; comment "2 bytes per entry, terminated by $FF. 1st byte is coarse grid coords (top nybble = X, bottom = Y), 2nd byte is index into map_changes"; }; +range { name "l01_bombs_term"; start $a3a3; end $a3a3; type bytetable; comment "terminator for l01_bombs"; }; +range { name "l01_map_changes"; start $A3A4; end $a3ad; type addrtable; comment "0000 = no change"; }; +range { name "l01_map_change_0"; start $A3AE; end $a3d5; type bytetable; }; +label { name "l01_map_change_1"; addr $a3b8; }; +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 "l01_map"; start $A3e0; end $a497; type bytetable; comment "level map data starts here"; }; +range { name "l02_map"; start $A3e0; end $a497; type bytetable; comment "level map data starts here"; }; 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 level02. stored upside-down."; }; -label { name "dw_platform_player"; addr $A685; comment "horizontally moving platforms from level02"; }; +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 "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"; }; 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 level07 (spellbound)"; }; +range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; 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"; }; @@ -576,7 +576,7 @@ label { name "xxx_level_something"; addr $8600; comment "gets called after the l label { name "xxx_level_something_jv"; addr $8009; comment "gets called after the level is drawn & the intro music stops, and also during the level (?)"; }; label { name "draw_map"; addr $8049; comment "the entry point for parsing the level map and drawing graphics from it. see level_maps.txt. caller must set $C0/$C1 to the address of the map data. modders beware: bogus map data can & will cause infinite loops."; }; label { name "draw_map_jv"; addr $8000; comment "the entry point for parsing the level map and drawing graphics from it. see level_maps.txt."; }; -label { name "dm_get_opcode"; addr $804B; comment "$C0/$C1 points to $A300 (level00_desc) on the first call"; }; +label { name "dm_get_opcode"; addr $804B; comment "$C0/$C1 points to $A300 (level01_desc) on the first call"; }; label { name "dm_switch_opcode"; addr $804D; comment "map opcodes: $FC = jump, $FF = end, $FD = set drawing direction, $FE = select graphics object"; }; label { name "dm_draw_gfx"; addr $8090; comment "handle gfx_draw opcode"; }; label { name "dm_jump"; addr $805C; comment "handle gfx_jump opcode"; }; diff --git a/mklevelinfo.pl b/mklevelinfo.pl index a95bc10..5cc633f 100644 --- a/mklevelinfo.pl +++ b/mklevelinfo.pl @@ -24,7 +24,7 @@ 32 => [ 2, 'sub_bomb', 'called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine' ], 34 => [ 2, 'sub_start', 'called at start of level, $06E6 for some levels, or else a ROM subroutine' ], 36 => [ 2, 'sub6', 'always $9740 aka game_main_loop' ], - 38 => [ 2, 'sub_eol', 'called at end of level (all bombs picked up). $06E6 for all but level07' ], + 38 => [ 2, 'sub_eol', 'called at end of level (all bombs picked up). $06E6 for all but level08' ], 40 => [ 6, 'offs', 'all zeroes' ], 46 => [ 1, 'colpf3', 'color (not sure what gets drawn in this color yet)' ], 47 => [ 1, 'colpf0', 'color for girders and up-ropes' ], @@ -33,7 +33,7 @@ 50 => [ 5, 'offs', 'unknown' ], 55 => [ 3, 'offs', 'unknown, always $00 $00 $00' ], 58 => [ 2, 'offs', 'unknown, not a ROM address' ], - 60 => [ 4, 'offs', 'unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00' ], + 60 => [ 4, 'offs', 'unknown, level06 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00' ], ); sub mkaddr { @@ -50,7 +50,7 @@ sub mkrange { my $ea = mkaddr($start + $len - 1); my $llab; if($level >= 0) { - my $ll = sprintf("%02d", $level); + my $ll = sprintf("%02d", $level + 1); $llab = "level$ll"; } else { if($level == -609) { -- cgit v1.2.3