aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2016-09-02 01:15:28 -0400
committerB. Watson <yalhcru@gmail.com>2016-09-02 01:15:28 -0400
commit44d935410e8e4b9d998ae516bc7175391750c9b6 (patch)
tree4fc04dd7c8ad19b6c6e30205d7012fb2a50d307a
parent909f27681c8e8869b54fc81bcb83c001ccf63ae3 (diff)
downloadjumpmanjr-44d935410e8e4b9d998ae516bc7175391750c9b6.tar.gz
renumber levels so they match the displayed level number (1-based, 1st level = level01)
-rw-r--r--jumpmanjr.dasm916
-rw-r--r--jumpmanjr.info840
-rw-r--r--level_descriptors.txt14
-rw-r--r--level_maps.txt22
-rw-r--r--leveldesc.info800
-rw-r--r--main.info40
-rw-r--r--mklevelinfo.pl6
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) {