aboutsummaryrefslogtreecommitdiff
path: root/jumpmanjr.dasm
diff options
context:
space:
mode:
Diffstat (limited to 'jumpmanjr.dasm')
-rw-r--r--jumpmanjr.dasm79
1 files changed, 43 insertions, 36 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 ...