diff options
Diffstat (limited to 'jumpmanjr.dasm')
-rw-r--r-- | jumpmanjr.dasm | 79 |
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 ... |