aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2016-08-29 22:09:51 -0400
committerB. Watson <yalhcru@gmail.com>2016-08-29 22:09:51 -0400
commit9adb57030389b8fe337cdfb144edacdded00739a (patch)
tree307a9f8ee9fcda3cc3c4d5a7f2a29f4dcfacc5b4
parentdc0f471095e8d30527845fd04f900c793329f2b4 (diff)
downloadjumpmanjr-9adb57030389b8fe337cdfb144edacdded00739a.tar.gz
bomb pickups
-rw-r--r--jumpmanjr.dasm79
-rw-r--r--jumpmanjr.info36
-rw-r--r--leveldesc.info28
-rw-r--r--main.info7
-rw-r--r--mklevelinfo.pl2
5 files changed, 83 insertions, 69 deletions
diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm
index eada163..a177c55 100644
--- a/jumpmanjr.dasm
+++ b/jumpmanjr.dasm
@@ -1,5 +1,5 @@
; da65 V2.15 - Git 104f898
-; Created: 2016-08-29 17:57:21
+; Created: 2016-08-29 22:07:15
; Input file: jumpmanjr.rom
; Page: 1
@@ -99,7 +99,7 @@ work_level_map1 := $0798 ; map data
work_level_map2 := $079A ; map data
work_level_unkn_table1:= $079C ; unknown, pointer to a ROM table or $0000
work_level_offs_30:= $079E ; always $0000
-work_level_sub4 := $07A0 ; $06E6 for most levels, or else a ROM subroutine
+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_sub5 := $07A2 ; $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
@@ -127,7 +127,7 @@ cur_level_map1 := $07D8 ; map data
cur_level_map2 := $07DA ; map data
cur_level_unkn_table1:= $07DC ; unknown, pointer to a ROM table or $0000
cur_level_offs_30:= $07DE ; always $0000
-cur_level_sub4 := $07E0 ; $06E6 for most levels, or else a ROM subroutine
+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_sub5 := $07E2 ; $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
@@ -261,7 +261,9 @@ crumble_gameboard_jv:
jmp crumble_gameboard ; 8030 4C 00 8D L..
; ----------------------------------------------------------------------------
-L8033: jmp L87A0 ; 8033 4C A0 87 L..
+; check whether Jumpman just touched a bomb (RTS if not)
+check_bomb_coll_jv:
+ jmp check_bomb_coll ; 8033 4C A0 87 L..
; ----------------------------------------------------------------------------
L8036: jmp L8B23 ; 8036 4C 23 8B L#.
@@ -1328,13 +1330,17 @@ set_prior:
jmp L88A8 ; 879D 4C A8 88 L..
; ----------------------------------------------------------------------------
-L87A0: lda collision_save+4 ; 87A0 AD B4 06 ...
+; check whether Jumpman just touched a bomb (RTS if not)
+check_bomb_coll:
+ lda collision_save+4 ; 87A0 AD B4 06 ...
and #$04 ; 87A3 29 04 ).
- bne L87A8 ; 87A5 D0 01 ..
+ bne bomb_pickup ; 87A5 D0 01 ..
rts ; 87A7 60 `
; ----------------------------------------------------------------------------
-L87A8: lda $067E ; 87A8 AD 7E 06 .~.
+; Jumpman just picked up a bomb, award points, play sfx_bomb_pickup, make the bomb disappear, do some other stuff I don't understand yet
+bomb_pickup:
+ lda $067E ; 87A8 AD 7E 06 .~.
clc ; 87AB 18 .
adc work_level_offs_14 ; 87AC 6D 8E 07 m..
and #$E0 ; 87AF 29 E0 ).
@@ -1426,9 +1432,9 @@ L8831: ldy $B2 ; 8831 A4 B2
lda ($B0),y ; 884E B1 B0 ..
sta $06E5 ; 8850 8D E5 06 ...
jsr L06E3 ; 8853 20 E3 06 ..
-L8856: lda work_level_sub4 ; 8856 AD A0 07 ...
+L8856: lda work_level_sub_bomb ; 8856 AD A0 07 ...
sta $06E4 ; 8859 8D E4 06 ...
- lda work_level_sub4+1 ; 885C AD A1 07 ...
+ lda work_level_sub_bomb+1 ; 885C AD A1 07 ...
sta $06E5 ; 885F 8D E5 06 ...
jsr L06E3 ; 8862 20 E3 06 ..
clc ; 8865 18 .
@@ -1452,7 +1458,8 @@ L888A: lda collision_save+4 ; 888A AD B4 06
rts ; 8891 60 `
; ----------------------------------------------------------------------------
-data_8892:
+; played when a bomb is picked up
+sfx_bomb_pickup:
.byte $01,$A6,$00,$1E,$03,$28,$03,$1E ; 8892 01 A6 00 1E 03 28 03 1E .....(..
.byte $03,$28,$03,$1E,$03,$28,$03,$1E ; 889A 03 28 03 1E 03 28 03 1E .(...(..
.byte $03,$28,$03,$00,$00,$00 ; 88A2 03 28 03 00 00 00 .(....
@@ -3260,7 +3267,7 @@ get_ready_dlist:
; ----------------------------------------------------------------------------
game_main_loop:
jsr materialize_jumpman ; 9740 20 7B 97 {.
-L9743: jsr L8033 ; 9743 20 33 80 3.
+L9743: jsr check_bomb_coll_jv ; 9743 20 33 80 3.
lda work_level_num_bombs ; 9746 AD 8A 07 ...
beq got_all_bombs ; 9749 F0 1B ..
lda $0623 ; 974B AD 23 06 .#.
@@ -4168,8 +4175,8 @@ level00_unkn_table1:
level00_offs_30:
.byte $00,$00 ; A01E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level00_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level00_sub_bomb:
.addr L06E6 ; A020 E6 06 ..
; $06E6 for some levels, or else a ROM subroutine
level00_sub5:
@@ -4261,8 +4268,8 @@ level01_unkn_table1:
level01_offs_30:
.byte $00,$00 ; A05E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level01_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level01_sub_bomb:
.addr LA498 ; A060 98 A4 ..
; $06E6 for some levels, or else a ROM subroutine
level01_sub5:
@@ -4354,8 +4361,8 @@ level02_unkn_table1:
level02_offs_30:
.byte $00,$00 ; A09E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level02_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level02_sub_bomb:
.addr L06E6 ; A0A0 E6 06 ..
; $06E6 for some levels, or else a ROM subroutine
level02_sub5:
@@ -4447,8 +4454,8 @@ level03_unkn_table1:
level03_offs_30:
.byte $00,$00 ; A0DE 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level03_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level03_sub_bomb:
.addr L06E6 ; A0E0 E6 06 ..
; $06E6 for some levels, or else a ROM subroutine
level03_sub5:
@@ -4540,8 +4547,8 @@ level04_unkn_table1:
level04_offs_30:
.byte $00,$00 ; A11E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level04_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level04_sub_bomb:
.addr L06E6 ; A120 E6 06 ..
; $06E6 for some levels, or else a ROM subroutine
level04_sub5:
@@ -4633,8 +4640,8 @@ level05_unkn_table1:
level05_offs_30:
.byte $00,$00 ; A15E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level05_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level05_sub_bomb:
.addr LAA73 ; A160 73 AA s.
; $06E6 for some levels, or else a ROM subroutine
level05_sub5:
@@ -4726,8 +4733,8 @@ level06_unkn_table1:
level06_offs_30:
.byte $00,$00 ; A19E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level06_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level06_sub_bomb:
.addr L06E6 ; A1A0 E6 06 ..
; $06E6 for some levels, or else a ROM subroutine
level06_sub5:
@@ -4819,8 +4826,8 @@ level07_unkn_table1:
level07_offs_30:
.byte $00,$00 ; A1DE 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level07_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level07_sub_bomb:
.addr LAF23 ; A1E0 23 AF #.
; $06E6 for some levels, or else a ROM subroutine
level07_sub5:
@@ -4912,8 +4919,8 @@ level08_unkn_table1:
level08_offs_30:
.byte $00,$00 ; A21E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level08_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level08_sub_bomb:
.addr LB121 ; A220 21 B1 !.
; $06E6 for some levels, or else a ROM subroutine
level08_sub5:
@@ -5005,8 +5012,8 @@ level09_unkn_table1:
level09_offs_30:
.byte $00,$00 ; A25E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level09_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level09_sub_bomb:
.addr LB2FD ; A260 FD B2 ..
; $06E6 for some levels, or else a ROM subroutine
level09_sub5:
@@ -5098,8 +5105,8 @@ level10_unkn_table1:
level10_offs_30:
.byte $00,$00 ; A29E 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level10_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level10_sub_bomb:
.addr LB44C ; A2A0 4C B4 L.
; $06E6 for some levels, or else a ROM subroutine
level10_sub5:
@@ -5191,8 +5198,8 @@ level11_unkn_table1:
level11_offs_30:
.byte $00,$00 ; A2DE 00 00 ..
; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level11_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level11_sub_bomb:
.addr L06E6 ; A2E0 E6 06 ..
; $06E6 for some levels, or else a ROM subroutine
level11_sub5:
@@ -7164,7 +7171,7 @@ LBCC1: lda $0663 ; BCC1 AD 63 06
rts ; BCCC 60 `
; ----------------------------------------------------------------------------
-; dunno, but referenced by code at $BC6A
+; dunno, but referenced by code at $BC6A (part of well_done_screen)
code_bccd:
lda $062A ; BCCD AD 2A 06 .*.
sta COLOR2 ; BCD0 8D C6 02 ...
diff --git a/jumpmanjr.info b/jumpmanjr.info
index 17dfa03..f94de92 100644
--- a/jumpmanjr.info
+++ b/jumpmanjr.info
@@ -1,5 +1,6 @@
### GENERATED FILE, do not edit, edit main.info and mklevelinfo.pl instead
+
# da65 info file for jumpman junior ROM.
GLOBAL {
@@ -96,9 +97,12 @@ label { name "check_collisions_3"; addr $9832; size 1; comment "did player 0 or
label { name "collision_save"; addr $06B0; size 16; comment "save_collisions copies GTIA collision regs $D000-$d00f here"; };
label { name "init_next_level"; addr $9BE8; size 1; comment "..."; };
label { name "show_get_ready_prompt"; addr $9624; size 1; comment "only in multiplayer games"; };
+label { name "check_bomb_coll"; addr $87A0; size 1; comment "check whether Jumpman just touched a bomb (RTS if not)"; };
+label { name "check_bomb_coll_jv"; addr $8033; size 1; comment "check whether Jumpman just touched a bomb (RTS if not)"; };
+label { name "bomb_pickup"; addr $87A8; size 1; comment "Jumpman just picked up a bomb, award points, play sfx_bomb_pickup, make the bomb disappear, do some other stuff I don't understand yet"; };
range { name "gr7_or_masks"; start $8143; end $8152; type bytetable; };
range { name "gr7_and_masks"; start $8153; end $8156; type bytetable; };
-range { name "data_8892"; start $8892; end $88A7; type bytetable; };
+range { name "sfx_bomb_pickup"; start $8892; end $88A7; type bytetable; comment "played when a bomb is picked up"; };
range { name "data_8dfa"; start $8DFA; end $8DFF; type bytetable; };
range { name "data_8f43"; start $8F43; end $8f72; type bytetable; };
@@ -224,7 +228,7 @@ range { name "data_table_86da"; start $86da; end $8713; type bytetable; };
range { name "level_name_hscrol_table"; start $BBF0; end $BBff; type bytetable; comment "used for centering level name on gameboard"; };
range { name "zero_filler_b8bf"; start $b8bf; end $b96a; type bytetable; comment "all zeroes, filler?"; };
range { name "zero_filler_baab"; start $baab; end $babb; type bytetable; comment "filler?"; };
-range { name "code_bccd"; start $bccd; end $bcd8; type code; comment "dunno, but referenced by code at $BC6A"; };
+range { name "code_bccd"; start $bccd; end $bcd8; type code; comment "dunno, but referenced by code at $BC6A (part of well_done_screen)"; };
range { name "well_done_map"; start $bcd9; end $bd51; type bytetable; comment "level map used for the WELL DONE screen, when you beat level 12"; };
range { name "well_done_shape"; start $bda0; end $bdc6; type bytetable; comment "used to draw the large WELL DONE banner"; };
range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "not sure what displays this, but it's screen codes"; };
@@ -519,7 +523,7 @@ label { name "work_level_map1"; addr $0798; size 2; comment "map data"; };
label { name "work_level_map2"; addr $079a; size 2; comment "map data"; };
label { name "work_level_unkn_table1"; addr $079c; size 2; comment "unknown, pointer to a ROM table or $0000"; };
label { name "work_level_offs_30"; addr $079e; size 2; comment "always $0000"; };
-label { name "work_level_sub4"; addr $07a0; size 2; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; addr $07a2; size 2; comment "$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"; };
@@ -548,7 +552,7 @@ label { name "cur_level_map1"; addr $07d8; size 2; comment "map data"; };
label { name "cur_level_map2"; addr $07da; size 2; comment "map data"; };
label { name "cur_level_unkn_table1"; addr $07dc; size 2; comment "unknown, pointer to a ROM table or $0000"; };
label { name "cur_level_offs_30"; addr $07de; size 2; comment "always $0000"; };
-label { name "cur_level_sub4"; addr $07e0; size 2; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; addr $07e2; size 2; comment "$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"; };
@@ -577,7 +581,7 @@ range { name "level00_map1"; start $a018; end $a019; type addrtable; comment "ma
range { name "level00_map2"; start $a01a; end $a01b; type addrtable; comment "map data"; };
range { name "level00_unkn_table1"; start $a01c; end $a01d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level00_offs_30"; start $a01e; end $a01f; type bytetable; comment "always $0000"; };
-range { name "level00_sub4"; start $a020; end $a021; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a022; end $a023; type addrtable; comment "$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"; };
@@ -606,7 +610,7 @@ range { name "level01_map1"; start $a058; end $a059; type addrtable; comment "ma
range { name "level01_map2"; start $a05a; end $a05b; type addrtable; comment "map data"; };
range { name "level01_unkn_table1"; start $a05c; end $a05d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level01_offs_30"; start $a05e; end $a05f; type bytetable; comment "always $0000"; };
-range { name "level01_sub4"; start $a060; end $a061; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a062; end $a063; type addrtable; comment "$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"; };
@@ -635,7 +639,7 @@ range { name "level02_map1"; start $a098; end $a099; type addrtable; comment "ma
range { name "level02_map2"; start $a09a; end $a09b; type addrtable; comment "map data"; };
range { name "level02_unkn_table1"; start $a09c; end $a09d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level02_offs_30"; start $a09e; end $a09f; type bytetable; comment "always $0000"; };
-range { name "level02_sub4"; start $a0a0; end $a0a1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a0a2; end $a0a3; type addrtable; comment "$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"; };
@@ -664,7 +668,7 @@ range { name "level03_map1"; start $a0d8; end $a0d9; type addrtable; comment "ma
range { name "level03_map2"; start $a0da; end $a0db; type addrtable; comment "map data"; };
range { name "level03_unkn_table1"; start $a0dc; end $a0dd; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level03_offs_30"; start $a0de; end $a0df; type bytetable; comment "always $0000"; };
-range { name "level03_sub4"; start $a0e0; end $a0e1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a0e2; end $a0e3; type addrtable; comment "$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"; };
@@ -693,7 +697,7 @@ range { name "level04_map1"; start $a118; end $a119; type addrtable; comment "ma
range { name "level04_map2"; start $a11a; end $a11b; type addrtable; comment "map data"; };
range { name "level04_unkn_table1"; start $a11c; end $a11d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level04_offs_30"; start $a11e; end $a11f; type bytetable; comment "always $0000"; };
-range { name "level04_sub4"; start $a120; end $a121; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a122; end $a123; type addrtable; comment "$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"; };
@@ -722,7 +726,7 @@ range { name "level05_map1"; start $a158; end $a159; type addrtable; comment "ma
range { name "level05_map2"; start $a15a; end $a15b; type addrtable; comment "map data"; };
range { name "level05_unkn_table1"; start $a15c; end $a15d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level05_offs_30"; start $a15e; end $a15f; type bytetable; comment "always $0000"; };
-range { name "level05_sub4"; start $a160; end $a161; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a162; end $a163; type addrtable; comment "$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"; };
@@ -751,7 +755,7 @@ range { name "level06_map1"; start $a198; end $a199; type addrtable; comment "ma
range { name "level06_map2"; start $a19a; end $a19b; type addrtable; comment "map data"; };
range { name "level06_unkn_table1"; start $a19c; end $a19d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level06_offs_30"; start $a19e; end $a19f; type bytetable; comment "always $0000"; };
-range { name "level06_sub4"; start $a1a0; end $a1a1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a1a2; end $a1a3; type addrtable; comment "$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"; };
@@ -780,7 +784,7 @@ range { name "level07_map1"; start $a1d8; end $a1d9; type addrtable; comment "ma
range { name "level07_map2"; start $a1da; end $a1db; type addrtable; comment "map data"; };
range { name "level07_unkn_table1"; start $a1dc; end $a1dd; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level07_offs_30"; start $a1de; end $a1df; type bytetable; comment "always $0000"; };
-range { name "level07_sub4"; start $a1e0; end $a1e1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a1e2; end $a1e3; type addrtable; comment "$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"; };
@@ -809,7 +813,7 @@ range { name "level08_map1"; start $a218; end $a219; type addrtable; comment "ma
range { name "level08_map2"; start $a21a; end $a21b; type addrtable; comment "map data"; };
range { name "level08_unkn_table1"; start $a21c; end $a21d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level08_offs_30"; start $a21e; end $a21f; type bytetable; comment "always $0000"; };
-range { name "level08_sub4"; start $a220; end $a221; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a222; end $a223; type addrtable; comment "$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"; };
@@ -838,7 +842,7 @@ range { name "level09_map1"; start $a258; end $a259; type addrtable; comment "ma
range { name "level09_map2"; start $a25a; end $a25b; type addrtable; comment "map data"; };
range { name "level09_unkn_table1"; start $a25c; end $a25d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level09_offs_30"; start $a25e; end $a25f; type bytetable; comment "always $0000"; };
-range { name "level09_sub4"; start $a260; end $a261; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a262; end $a263; type addrtable; comment "$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"; };
@@ -867,7 +871,7 @@ range { name "level10_map1"; start $a298; end $a299; type addrtable; comment "ma
range { name "level10_map2"; start $a29a; end $a29b; type addrtable; comment "map data"; };
range { name "level10_unkn_table1"; start $a29c; end $a29d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level10_offs_30"; start $a29e; end $a29f; type bytetable; comment "always $0000"; };
-range { name "level10_sub4"; start $a2a0; end $a2a1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a2a2; end $a2a3; type addrtable; comment "$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"; };
@@ -896,7 +900,7 @@ range { name "level11_map1"; start $a2d8; end $a2d9; type addrtable; comment "ma
range { name "level11_map2"; start $a2da; end $a2db; type addrtable; comment "map data"; };
range { name "level11_unkn_table1"; start $a2dc; end $a2dd; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level11_offs_30"; start $a2de; end $a2df; type bytetable; comment "always $0000"; };
-range { name "level11_sub4"; start $a2e0; end $a2e1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a2e2; end $a2e3; type addrtable; comment "$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"; };
diff --git a/leveldesc.info b/leveldesc.info
index 47b7ebc..35b89a0 100644
--- a/leveldesc.info
+++ b/leveldesc.info
@@ -17,7 +17,7 @@ label { name "work_level_map1"; addr $0798; size 2; comment "map data"; };
label { name "work_level_map2"; addr $079a; size 2; comment "map data"; };
label { name "work_level_unkn_table1"; addr $079c; size 2; comment "unknown, pointer to a ROM table or $0000"; };
label { name "work_level_offs_30"; addr $079e; size 2; comment "always $0000"; };
-label { name "work_level_sub4"; addr $07a0; size 2; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; addr $07a2; size 2; comment "$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"; };
@@ -46,7 +46,7 @@ label { name "cur_level_map1"; addr $07d8; size 2; comment "map data"; };
label { name "cur_level_map2"; addr $07da; size 2; comment "map data"; };
label { name "cur_level_unkn_table1"; addr $07dc; size 2; comment "unknown, pointer to a ROM table or $0000"; };
label { name "cur_level_offs_30"; addr $07de; size 2; comment "always $0000"; };
-label { name "cur_level_sub4"; addr $07e0; size 2; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; addr $07e2; size 2; comment "$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"; };
@@ -75,7 +75,7 @@ range { name "level00_map1"; start $a018; end $a019; type addrtable; comment "ma
range { name "level00_map2"; start $a01a; end $a01b; type addrtable; comment "map data"; };
range { name "level00_unkn_table1"; start $a01c; end $a01d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level00_offs_30"; start $a01e; end $a01f; type bytetable; comment "always $0000"; };
-range { name "level00_sub4"; start $a020; end $a021; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a022; end $a023; type addrtable; comment "$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"; };
@@ -104,7 +104,7 @@ range { name "level01_map1"; start $a058; end $a059; type addrtable; comment "ma
range { name "level01_map2"; start $a05a; end $a05b; type addrtable; comment "map data"; };
range { name "level01_unkn_table1"; start $a05c; end $a05d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level01_offs_30"; start $a05e; end $a05f; type bytetable; comment "always $0000"; };
-range { name "level01_sub4"; start $a060; end $a061; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a062; end $a063; type addrtable; comment "$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"; };
@@ -133,7 +133,7 @@ range { name "level02_map1"; start $a098; end $a099; type addrtable; comment "ma
range { name "level02_map2"; start $a09a; end $a09b; type addrtable; comment "map data"; };
range { name "level02_unkn_table1"; start $a09c; end $a09d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level02_offs_30"; start $a09e; end $a09f; type bytetable; comment "always $0000"; };
-range { name "level02_sub4"; start $a0a0; end $a0a1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a0a2; end $a0a3; type addrtable; comment "$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"; };
@@ -162,7 +162,7 @@ range { name "level03_map1"; start $a0d8; end $a0d9; type addrtable; comment "ma
range { name "level03_map2"; start $a0da; end $a0db; type addrtable; comment "map data"; };
range { name "level03_unkn_table1"; start $a0dc; end $a0dd; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level03_offs_30"; start $a0de; end $a0df; type bytetable; comment "always $0000"; };
-range { name "level03_sub4"; start $a0e0; end $a0e1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a0e2; end $a0e3; type addrtable; comment "$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"; };
@@ -191,7 +191,7 @@ range { name "level04_map1"; start $a118; end $a119; type addrtable; comment "ma
range { name "level04_map2"; start $a11a; end $a11b; type addrtable; comment "map data"; };
range { name "level04_unkn_table1"; start $a11c; end $a11d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level04_offs_30"; start $a11e; end $a11f; type bytetable; comment "always $0000"; };
-range { name "level04_sub4"; start $a120; end $a121; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a122; end $a123; type addrtable; comment "$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"; };
@@ -220,7 +220,7 @@ range { name "level05_map1"; start $a158; end $a159; type addrtable; comment "ma
range { name "level05_map2"; start $a15a; end $a15b; type addrtable; comment "map data"; };
range { name "level05_unkn_table1"; start $a15c; end $a15d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level05_offs_30"; start $a15e; end $a15f; type bytetable; comment "always $0000"; };
-range { name "level05_sub4"; start $a160; end $a161; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a162; end $a163; type addrtable; comment "$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"; };
@@ -249,7 +249,7 @@ range { name "level06_map1"; start $a198; end $a199; type addrtable; comment "ma
range { name "level06_map2"; start $a19a; end $a19b; type addrtable; comment "map data"; };
range { name "level06_unkn_table1"; start $a19c; end $a19d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level06_offs_30"; start $a19e; end $a19f; type bytetable; comment "always $0000"; };
-range { name "level06_sub4"; start $a1a0; end $a1a1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a1a2; end $a1a3; type addrtable; comment "$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"; };
@@ -278,7 +278,7 @@ range { name "level07_map1"; start $a1d8; end $a1d9; type addrtable; comment "ma
range { name "level07_map2"; start $a1da; end $a1db; type addrtable; comment "map data"; };
range { name "level07_unkn_table1"; start $a1dc; end $a1dd; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level07_offs_30"; start $a1de; end $a1df; type bytetable; comment "always $0000"; };
-range { name "level07_sub4"; start $a1e0; end $a1e1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a1e2; end $a1e3; type addrtable; comment "$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"; };
@@ -307,7 +307,7 @@ range { name "level08_map1"; start $a218; end $a219; type addrtable; comment "ma
range { name "level08_map2"; start $a21a; end $a21b; type addrtable; comment "map data"; };
range { name "level08_unkn_table1"; start $a21c; end $a21d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level08_offs_30"; start $a21e; end $a21f; type bytetable; comment "always $0000"; };
-range { name "level08_sub4"; start $a220; end $a221; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a222; end $a223; type addrtable; comment "$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"; };
@@ -336,7 +336,7 @@ range { name "level09_map1"; start $a258; end $a259; type addrtable; comment "ma
range { name "level09_map2"; start $a25a; end $a25b; type addrtable; comment "map data"; };
range { name "level09_unkn_table1"; start $a25c; end $a25d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level09_offs_30"; start $a25e; end $a25f; type bytetable; comment "always $0000"; };
-range { name "level09_sub4"; start $a260; end $a261; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a262; end $a263; type addrtable; comment "$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"; };
@@ -365,7 +365,7 @@ range { name "level10_map1"; start $a298; end $a299; type addrtable; comment "ma
range { name "level10_map2"; start $a29a; end $a29b; type addrtable; comment "map data"; };
range { name "level10_unkn_table1"; start $a29c; end $a29d; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level10_offs_30"; start $a29e; end $a29f; type bytetable; comment "always $0000"; };
-range { name "level10_sub4"; start $a2a0; end $a2a1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a2a2; end $a2a3; type addrtable; comment "$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"; };
@@ -394,7 +394,7 @@ range { name "level11_map1"; start $a2d8; end $a2d9; type addrtable; comment "ma
range { name "level11_map2"; start $a2da; end $a2db; type addrtable; comment "map data"; };
range { name "level11_unkn_table1"; start $a2dc; end $a2dd; type addrtable; comment "unknown, pointer to a ROM table or $0000"; };
range { name "level11_offs_30"; start $a2de; end $a2df; type bytetable; comment "always $0000"; };
-range { name "level11_sub4"; start $a2e0; end $a2e1; type addrtable; comment "$06E6 for most levels, or else a ROM subroutine"; };
+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_sub5"; start $a2e2; end $a2e3; type addrtable; comment "$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"; };
diff --git a/main.info b/main.info
index 543d4ff..eb90eb4 100644
--- a/main.info
+++ b/main.info
@@ -95,9 +95,12 @@ label { name "check_collisions_3"; addr $9832; size 1; comment "did player 0 or
label { name "collision_save"; addr $06B0; size 16; comment "save_collisions copies GTIA collision regs $D000-$d00f here"; };
label { name "init_next_level"; addr $9BE8; size 1; comment "..."; };
label { name "show_get_ready_prompt"; addr $9624; size 1; comment "only in multiplayer games"; };
+label { name "check_bomb_coll"; addr $87A0; size 1; comment "check whether Jumpman just touched a bomb (RTS if not)"; };
+label { name "check_bomb_coll_jv"; addr $8033; size 1; comment "check whether Jumpman just touched a bomb (RTS if not)"; };
+label { name "bomb_pickup"; addr $87A8; size 1; comment "Jumpman just picked up a bomb, award points, play sfx_bomb_pickup, make the bomb disappear, do some other stuff I don't understand yet"; };
range { name "gr7_or_masks"; start $8143; end $8152; type bytetable; };
range { name "gr7_and_masks"; start $8153; end $8156; type bytetable; };
-range { name "data_8892"; start $8892; end $88A7; type bytetable; };
+range { name "sfx_bomb_pickup"; start $8892; end $88A7; type bytetable; comment "played when a bomb is picked up"; };
range { name "data_8dfa"; start $8DFA; end $8DFF; type bytetable; };
range { name "data_8f43"; start $8F43; end $8f72; type bytetable; };
@@ -223,7 +226,7 @@ range { name "data_table_86da"; start $86da; end $8713; type bytetable; };
range { name "level_name_hscrol_table"; start $BBF0; end $BBff; type bytetable; comment "used for centering level name on gameboard"; };
range { name "zero_filler_b8bf"; start $b8bf; end $b96a; type bytetable; comment "all zeroes, filler?"; };
range { name "zero_filler_baab"; start $baab; end $babb; type bytetable; comment "filler?"; };
-range { name "code_bccd"; start $bccd; end $bcd8; type code; comment "dunno, but referenced by code at $BC6A"; };
+range { name "code_bccd"; start $bccd; end $bcd8; type code; comment "dunno, but referenced by code at $BC6A (part of well_done_screen)"; };
range { name "well_done_map"; start $bcd9; end $bd51; type bytetable; comment "level map used for the WELL DONE screen, when you beat level 12"; };
range { name "well_done_shape"; start $bda0; end $bdc6; type bytetable; comment "used to draw the large WELL DONE banner"; };
range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "not sure what displays this, but it's screen codes"; };
diff --git a/mklevelinfo.pl b/mklevelinfo.pl
index 56a8894..e94c6fa 100644
--- a/mklevelinfo.pl
+++ b/mklevelinfo.pl
@@ -20,7 +20,7 @@
26 => [ 2, 'map2', 'map data' ],
28 => [ 2, 'unkn_table1', 'unknown, pointer to a ROM table or $0000' ],
30 => [ 2, 'offs', 'always $0000' ],
- 32 => [ 2, 'sub4', '$06E6 for most levels, or else a ROM subroutine' ],
+ 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, 'sub5', '$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' ],