From 8fefba0a2262d725dad7c25edc023c2590029126 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Wed, 31 Aug 2016 04:50:44 -0400 Subject: bomb_pickup stuff --- jumpmanjr.dasm | 408 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 239 insertions(+), 169 deletions(-) (limited to 'jumpmanjr.dasm') diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index 4273121..83e6524 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-08-30 17:25:09 +; Created: 2016-08-31 04:47:36 ; Input file: jumpmanjr.rom ; Page: 1 @@ -11,6 +11,8 @@ L0000 := $0000 dm_ypos := $0054 ; see draw_map and level_maps.txt dm_xpos := $0055 ; see draw_map and level_maps.txt SAVMSC := $0058 ; OS's idea of the start of screen memory [redundant to set here?] +blistptr := $00B4 ; bomb_pickup: points to current level's bomblist +bombloc := $00B6 ; bomb_pickup: position of the bomb Jumpman just touched, on 8x8 coarse grid dm_count := $00BE ; graphics object definition is this long dm_length := $00BF ; see draw_map and level_maps.txt dm_progctr := $00C0 ; see draw_map and level_maps.txt @@ -100,14 +102,15 @@ work_level_num_bombs:= $078A ; number of bombs to pick up on work_level_bullet_max:= $078B ; 0 = no bullets, range 0-4. work_level_y_start:= $078C ; jumpman starting Y position work_level_x_start:= $078D ; jumpman starting X position -work_level_offs_14:= $078E ; points to $0600 +work_level_fudge_x:= $078E ; fudge factor for bomb locations, always $00 +work_level_fudge_y:= $078F ; fudge factor for bomb locations, always $06 work_level_points_per_bomb:= $0790 ; points awarded per bomb pickup (always $64 aka 100) work_level_time_bonus:= $0791 ; amount of time bonus at start of level work_level_offs_19:= $0793 ; always $00 work_level_unkn_table0:= $0794 ; pointer to ROM table or $06xx work_level_map0 := $0796 ; map data work_level_map1 := $0798 ; map data -work_level_map2 := $079A ; map data +work_level_bomblist:= $079A ; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. work_level_unkn_table1:= $079C ; unknown, pointer to a ROM table or $0000 work_level_offs_30:= $079E ; always $0000 work_level_sub_bomb:= $07A0 ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -128,14 +131,15 @@ cur_level_num_bombs:= $07CA ; number of bombs to pick up on cur_level_bullet_max:= $07CB ; 0 = no bullets, range 0-4. cur_level_y_start:= $07CC ; jumpman starting Y position cur_level_x_start:= $07CD ; jumpman starting X position -cur_level_offs_14:= $07CE ; points to $0600 +cur_level_fudge_x:= $07CE ; fudge factor for bomb locations, always $00 +cur_level_fudge_y:= $07CF ; fudge factor for bomb locations, always $06 cur_level_points_per_bomb:= $07D0 ; points awarded per bomb pickup (always $64 aka 100) cur_level_time_bonus:= $07D1 ; amount of time bonus at start of level cur_level_offs_19:= $07D3 ; always $00 cur_level_unkn_table0:= $07D4 ; pointer to ROM table or $06xx cur_level_map0 := $07D6 ; map data cur_level_map1 := $07D8 ; map data -cur_level_map2 := $07DA ; map data +cur_level_bomblist:= $07DA ; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. cur_level_unkn_table1:= $07DC ; unknown, pointer to a ROM table or $0000 cur_level_offs_30:= $07DE ; always $0000 cur_level_sub_bomb:= $07E0 ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -1370,48 +1374,53 @@ check_bomb_coll: bomb_pickup: lda player_x_pos ; 87A8 AD 7E 06 .~. clc ; 87AB 18 . - adc work_level_offs_14 ; 87AC 6D 8E 07 m.. + adc work_level_fudge_x ; 87AC 6D 8E 07 m.. and #$E0 ; 87AF 29 E0 ). - sta $B6 ; 87B1 85 B6 .. + sta bombloc ; 87B1 85 B6 .. clc ; 87B3 18 . lda player_y_pos ; 87B4 AD 83 06 ... - adc work_level_offs_14+1 ; 87B7 6D 8F 07 m.. + adc work_level_fudge_y ; 87B7 6D 8F 07 m.. and #$E0 ; 87BA 29 E0 ). lsr a ; 87BC 4A J lsr a ; 87BD 4A J lsr a ; 87BE 4A J lsr a ; 87BF 4A J - ora $B6 ; 87C0 05 B6 .. - sta $B6 ; 87C2 85 B6 .. - lda work_level_map2 ; 87C4 AD 9A 07 ... - sta $B4 ; 87C7 85 B4 .. - lda work_level_map2+1 ; 87C9 AD 9B 07 ... - sta $B5 ; 87CC 85 B5 .. + ora bombloc ; 87C0 05 B6 .. + sta bombloc ; 87C2 85 B6 .. + lda work_level_bomblist ; 87C4 AD 9A 07 ... + sta blistptr ; 87C7 85 B4 .. + lda work_level_bomblist+1 ; 87C9 AD 9B 07 ... + sta blistptr+1 ; 87CC 85 B5 .. ldy #$00 ; 87CE A0 00 .. -L87D0: lda ($B4),y ; 87D0 B1 B4 .. +; set Y to the index of the current bomb (or rts if we can't find it) +search_bomblist: + lda (blistptr),y ; 87D0 B1 B4 .. cmp #$FF ; 87D2 C9 FF .. - bne L87D7 ; 87D4 D0 01 .. + bne bl_ok ; 87D4 D0 01 .. rts ; 87D6 60 ` ; ---------------------------------------------------------------------------- -L87D7: cmp $B6 ; 87D7 C5 B6 .. - beq L87E0 ; 87D9 F0 05 .. +bl_ok: cmp bombloc ; 87D7 C5 B6 .. + beq bomb_found ; 87D9 F0 05 .. iny ; 87DB C8 . iny ; 87DC C8 . - jmp L87D0 ; 87DD 4C D0 87 L.. + jmp search_bomblist ; 87DD 4C D0 87 L.. ; ---------------------------------------------------------------------------- -L87E0: lda work_level_map1 ; 87E0 AD 98 07 ... +bomb_found: + lda work_level_map1 ; 87E0 AD 98 07 ... sta $B0 ; 87E3 85 B0 .. lda work_level_map1+1 ; 87E5 AD 99 07 ... sta $B1 ; 87E8 85 B1 .. - tya ; 87EA 98 . +; multiply Y by 1.5 (only works because Y will always be even at this point) +mul_y: tya ; 87EA 98 . sta $B2 ; 87EB 85 B2 .. lsr a ; 87ED 4A J clc ; 87EE 18 . adc $B2 ; 87EF 65 B2 e. tay ; 87F1 A8 . - lda ($B0),y ; 87F2 B1 B0 .. +; find out: why are we storing this at 06DC? +unkn1: lda ($B0),y ; 87F2 B1 B0 .. sta $06DC ; 87F4 8D DC 06 ... iny ; 87F7 C8 . lda ($B0),y ; 87F8 B1 B0 .. @@ -1424,14 +1433,16 @@ L87E0: lda work_level_map1 ; 87E0 AD 98 07 jsr cue_sfx_jv ; 8809 20 06 80 .. ldy $B2 ; 880C A4 B2 .. iny ; 880E C8 . - lda ($B4),y ; 880F B1 B4 .. - beq L8856 ; 8811 F0 43 .C + lda (blistptr),y ; 880F B1 B4 .. + beq call_bomb_sub ; 8811 F0 43 .C and #$F0 ; 8813 29 F0 ). - beq L8831 ; 8815 F0 1A .. + beq check_ind_sub ; 8815 F0 1A .. lsr a ; 8817 4A J lsr a ; 8818 4A J lsr a ; 8819 4A J tay ; 881A A8 . +; this has to do with redrawing parts of the level (e.g. disappearing platforms on level00) +change_map: lda work_level_unkn_table1 ; 881B AD 9C 07 ... sta $B0 ; 881E 85 B0 .. lda work_level_unkn_table1+1 ; 8820 AD 9D 07 ... @@ -1442,14 +1453,18 @@ L87E0: lda work_level_map1 ; 87E0 AD 98 07 lda ($B0),y ; 882A B1 B0 .. sta dm_progctr+1 ; 882C 85 C1 .. jsr draw_map_jv ; 882E 20 00 80 .. -L8831: ldy $B2 ; 8831 A4 B2 .. +; see if this bomb calls an indirect sub (none of them do in this game, this is useless code) +check_ind_sub: + ldy $B2 ; 8831 A4 B2 .. iny ; 8833 C8 . - lda ($B4),y ; 8834 B1 B4 .. - beq L8856 ; 8836 F0 1E .. + lda (blistptr),y ; 8834 B1 B4 .. + beq call_bomb_sub ; 8836 F0 1E .. and #$0F ; 8838 29 0F ). - beq L8856 ; 883A F0 1A .. + beq call_bomb_sub ; 883A F0 1A .. asl a ; 883C 0A . tay ; 883D A8 . +; this would call a subroutine via pointer-to-pointer, but I'm almost 100% certain it's never used (maybe a holdover from original Jumpman?) +call_bomb_indirect_sub: lda work_level_offs_30 ; 883E AD 9E 07 ... sta $B0 ; 8841 85 B0 .. lda work_level_offs_30+1 ; 8843 AD 9F 07 ... @@ -1460,20 +1475,26 @@ 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_sub_bomb ; 8856 AD A0 07 ... +; call bomb pickup subroutine for this level (which might just do an RTS if there's no special action) +call_bomb_sub: + lda work_level_sub_bomb ; 8856 AD A0 07 ... sta $06E4 ; 8859 8D E4 06 ... lda work_level_sub_bomb+1 ; 885C AD A1 07 ... sta $06E5 ; 885F 8D E5 06 ... jsr L06E3 ; 8862 20 E3 06 .. +; add points to score for picking up bomb (theoretically different on every level, but really $64 aka 100 for all of them) +bomb_add_points: clc ; 8865 18 . lda score ; 8866 AD 00 07 ... adc work_level_points_per_bomb ; 8869 6D 90 07 m.. sta score ; 886C 8D 00 07 ... - bcc L8879 ; 886F 90 08 .. + bcc erase_bomb ; 886F 90 08 .. inc score+1 ; 8871 EE 01 07 ... - bne L8879 ; 8874 D0 03 .. + bne erase_bomb ; 8874 D0 03 .. inc score+2 ; 8876 EE 02 07 ... -L8879: lda #$D9 ; 8879 A9 D9 .. +; make the bomb disappear by drawing sh_blank in its location +erase_bomb: + lda #$D9 ; 8879 A9 D9 .. sta dm_progctr ; 887B 85 C0 .. lda #$06 ; 887D A9 06 .. sta dm_progctr+1 ; 887F 85 C1 .. @@ -4159,9 +4180,12 @@ level00_y_start: ; jumpman starting X position level00_x_start: .byte $7C ; A00D 7C | -; points to $0600 -level00_offs_14: - .byte $00,$06 ; A00E 00 06 .. +; fudge factor for bomb locations, always $00 +level00_fudge_x: + .byte $00 ; A00E 00 . +; fudge factor for bomb locations, always $06 +level00_fudge_y: + .byte $06 ; A00F 06 . ; points awarded per bomb pickup (always $64 aka 100) level00_points_per_bomb: .byte $64 ; A010 64 d @@ -4183,9 +4207,11 @@ level00_map0: ; map data level00_map1: .addr LA366 ; A018 66 A3 f. -; map data -level00_map2: - .addr LA38B ; A01A 8B A3 .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level00_bomblist: + .byte $8B,$A3 ; A01A 8B A3 .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level00_unkn_table1: .addr LA3A4 ; A01C A4 A3 .. @@ -4252,9 +4278,12 @@ level01_y_start: ; jumpman starting X position level01_x_start: .byte $7C ; A04D 7C | -; points to $0600 -level01_offs_14: - .byte $00,$06 ; A04E 00 06 .. +; fudge factor for bomb locations, always $00 +level01_fudge_x: + .byte $00 ; A04E 00 . +; fudge factor for bomb locations, always $06 +level01_fudge_y: + .byte $06 ; A04F 06 . ; points awarded per bomb pickup (always $64 aka 100) level01_points_per_bomb: .byte $64 ; A050 64 d @@ -4276,9 +4305,11 @@ level01_map0: ; map data level01_map1: .addr LA446 ; A058 46 A4 F. -; map data -level01_map2: - .addr LA477 ; A05A 77 A4 w. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level01_bomblist: + .byte $77,$A4 ; A05A 77 A4 w. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level01_unkn_table1: .addr L0000 ; A05C 00 00 .. @@ -4345,9 +4376,12 @@ level02_y_start: ; jumpman starting X position level02_x_start: .byte $B4 ; A08D B4 . -; points to $0600 -level02_offs_14: - .byte $00,$06 ; A08E 00 06 .. +; fudge factor for bomb locations, always $00 +level02_fudge_x: + .byte $00 ; A08E 00 . +; fudge factor for bomb locations, always $06 +level02_fudge_y: + .byte $06 ; A08F 06 . ; points awarded per bomb pickup (always $64 aka 100) level02_points_per_bomb: .byte $64 ; A090 64 d @@ -4369,9 +4403,11 @@ level02_map0: ; map data level02_map1: .addr LA62F ; A098 2F A6 /. -; map data -level02_map2: - .addr LA654 ; A09A 54 A6 T. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level02_bomblist: + .byte $54,$A6 ; A09A 54 A6 T. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level02_unkn_table1: .addr L0000 ; A09C 00 00 .. @@ -4438,9 +4474,12 @@ level03_y_start: ; jumpman starting X position level03_x_start: .byte $7C ; A0CD 7C | -; points to $0600 -level03_offs_14: - .byte $00,$06 ; A0CE 00 06 .. +; fudge factor for bomb locations, always $00 +level03_fudge_x: + .byte $00 ; A0CE 00 . +; fudge factor for bomb locations, always $06 +level03_fudge_y: + .byte $06 ; A0CF 06 . ; points awarded per bomb pickup (always $64 aka 100) level03_points_per_bomb: .byte $64 ; A0D0 64 d @@ -4462,9 +4501,11 @@ level03_map0: ; map data level03_map1: .addr LA7D5 ; A0D8 D5 A7 .. -; map data -level03_map2: - .addr LA806 ; A0DA 06 A8 .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level03_bomblist: + .byte $06,$A8 ; A0DA 06 A8 .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level03_unkn_table1: .addr L0000 ; A0DC 00 00 .. @@ -4531,9 +4572,12 @@ level04_y_start: ; jumpman starting X position level04_x_start: .byte $34 ; A10D 34 4 -; points to $0600 -level04_offs_14: - .byte $00,$06 ; A10E 00 06 .. +; fudge factor for bomb locations, always $00 +level04_fudge_x: + .byte $00 ; A10E 00 . +; fudge factor for bomb locations, always $06 +level04_fudge_y: + .byte $06 ; A10F 06 . ; points awarded per bomb pickup (always $64 aka 100) level04_points_per_bomb: .byte $64 ; A110 64 d @@ -4555,9 +4599,11 @@ level04_map0: ; map data level04_map1: .addr LAB42 ; A118 42 AB B. -; map data -level04_map2: - .addr LAB6D ; A11A 6D AB m. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level04_bomblist: + .byte $6D,$AB ; A11A 6D AB m. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level04_unkn_table1: .addr LAB8A ; A11C 8A AB .. @@ -4624,9 +4670,12 @@ level05_y_start: ; jumpman starting X position level05_x_start: .byte $34 ; A14D 34 4 -; points to $0600 -level05_offs_14: - .byte $00,$06 ; A14E 00 06 .. +; fudge factor for bomb locations, always $00 +level05_fudge_x: + .byte $00 ; A14E 00 . +; fudge factor for bomb locations, always $06 +level05_fudge_y: + .byte $06 ; A14F 06 . ; points awarded per bomb pickup (always $64 aka 100) level05_points_per_bomb: .byte $64 ; A150 64 d @@ -4648,9 +4697,11 @@ level05_map0: ; map data level05_map1: .addr LA974 ; A158 74 A9 t. -; map data -level05_map2: - .addr LA9A5 ; A15A A5 A9 .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level05_bomblist: + .byte $A5,$A9 ; A15A A5 A9 .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level05_unkn_table1: .addr L0000 ; A15C 00 00 .. @@ -4717,9 +4768,12 @@ level06_y_start: ; jumpman starting X position level06_x_start: .byte $7C ; A18D 7C | -; points to $0600 -level06_offs_14: - .byte $00,$06 ; A18E 00 06 .. +; fudge factor for bomb locations, always $00 +level06_fudge_x: + .byte $00 ; A18E 00 . +; fudge factor for bomb locations, always $06 +level06_fudge_y: + .byte $06 ; A18F 06 . ; points awarded per bomb pickup (always $64 aka 100) level06_points_per_bomb: .byte $64 ; A190 64 d @@ -4741,9 +4795,11 @@ level06_map0: ; map data level06_map1: .addr LACBA ; A198 BA AC .. -; map data -level06_map2: - .addr LACE5 ; A19A E5 AC .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level06_bomblist: + .byte $E5,$AC ; A19A E5 AC .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level06_unkn_table1: .addr LAD02 ; A19C 02 AD .. @@ -4810,9 +4866,12 @@ level07_y_start: ; jumpman starting X position level07_x_start: .byte $7C ; A1CD 7C | -; points to $0600 -level07_offs_14: - .byte $00,$06 ; A1CE 00 06 .. +; fudge factor for bomb locations, always $00 +level07_fudge_x: + .byte $00 ; A1CE 00 . +; fudge factor for bomb locations, always $06 +level07_fudge_y: + .byte $06 ; A1CF 06 . ; points awarded per bomb pickup (always $64 aka 100) level07_points_per_bomb: .byte $64 ; A1D0 64 d @@ -4834,9 +4893,11 @@ level07_map0: ; map data level07_map1: .addr LAE4C ; A1D8 4C AE L. -; map data -level07_map2: - .addr LAE71 ; A1DA 71 AE q. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level07_bomblist: + .byte $71,$AE ; A1DA 71 AE q. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level07_unkn_table1: .addr L0000 ; A1DC 00 00 .. @@ -4903,9 +4964,12 @@ level08_y_start: ; jumpman starting X position level08_x_start: .byte $9E ; A20D 9E . -; points to $0600 -level08_offs_14: - .byte $00,$06 ; A20E 00 06 .. +; fudge factor for bomb locations, always $00 +level08_fudge_x: + .byte $00 ; A20E 00 . +; fudge factor for bomb locations, always $06 +level08_fudge_y: + .byte $06 ; A20F 06 . ; points awarded per bomb pickup (always $64 aka 100) level08_points_per_bomb: .byte $64 ; A210 64 d @@ -4927,9 +4991,11 @@ level08_map0: ; map data level08_map1: .addr LB072 ; A218 72 B0 r. -; map data -level08_map2: - .addr LB0A3 ; A21A A3 B0 .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level08_bomblist: + .byte $A3,$B0 ; A21A A3 B0 .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level08_unkn_table1: .addr L0000 ; A21C 00 00 .. @@ -4996,9 +5062,12 @@ level09_y_start: ; jumpman starting X position level09_x_start: .byte $3C ; A24D 3C < -; points to $0600 -level09_offs_14: - .byte $00,$06 ; A24E 00 06 .. +; fudge factor for bomb locations, always $00 +level09_fudge_x: + .byte $00 ; A24E 00 . +; fudge factor for bomb locations, always $06 +level09_fudge_y: + .byte $06 ; A24F 06 . ; points awarded per bomb pickup (always $64 aka 100) level09_points_per_bomb: .byte $64 ; A250 64 d @@ -5020,9 +5089,11 @@ level09_map0: ; map data level09_map1: .addr LB237 ; A258 37 B2 7. -; map data -level09_map2: - .addr LB25C ; A25A 5C B2 \. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level09_bomblist: + .byte $5C,$B2 ; A25A 5C B2 \. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level09_unkn_table1: .addr L0000 ; A25C 00 00 .. @@ -5089,9 +5160,12 @@ level10_y_start: ; jumpman starting X position level10_x_start: .byte $C4 ; A28D C4 . -; points to $0600 -level10_offs_14: - .byte $00,$06 ; A28E 00 06 .. +; fudge factor for bomb locations, always $00 +level10_fudge_x: + .byte $00 ; A28E 00 . +; fudge factor for bomb locations, always $06 +level10_fudge_y: + .byte $06 ; A28F 06 . ; points awarded per bomb pickup (always $64 aka 100) level10_points_per_bomb: .byte $64 ; A290 64 d @@ -5113,9 +5187,11 @@ level10_map0: ; map data level10_map1: .addr LB38F ; A298 8F B3 .. -; map data -level10_map2: - .addr LB3BD ; A29A BD B3 .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level10_bomblist: + .byte $BD,$B3 ; A29A BD B3 .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level10_unkn_table1: .addr LB3DC ; A29C DC B3 .. @@ -5182,9 +5258,12 @@ level11_y_start: ; jumpman starting X position level11_x_start: .byte $7C ; A2CD 7C | -; points to $0600 -level11_offs_14: - .byte $00,$06 ; A2CE 00 06 .. +; fudge factor for bomb locations, always $00 +level11_fudge_x: + .byte $00 ; A2CE 00 . +; fudge factor for bomb locations, always $06 +level11_fudge_y: + .byte $06 ; A2CF 06 . ; points awarded per bomb pickup (always $64 aka 100) level11_points_per_bomb: .byte $64 ; A2D0 64 d @@ -5206,9 +5285,11 @@ level11_map0: ; map data level11_map1: .addr LB5D2 ; A2D8 D2 B5 .. -; map data -level11_map2: - .addr LB5FD ; A2DA FD B5 .. +; ---------------------------------------------------------------------------- +; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +level11_bomblist: + .byte $FD,$B5 ; A2DA FD B5 .. +; ---------------------------------------------------------------------------- ; unknown, pointer to a ROM table or $0000 level11_unkn_table1: .addr LB61A ; A2DC 1A B6 .. @@ -5265,11 +5346,10 @@ LA366: .byte $04,$12,$01,$38,$02,$01,$64,$02 ; A366 04 12 01 38 02 01 64 02 .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.. -LA38B: .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..... - .byte $FF ; A3A3 FF . + .byte $01,$98,$52,$01,$FF,$24,$00,$62 ; A386 01 98 52 01 FF 24 00 62 ..R..$.b + .byte $10,$82,$20,$C4,$00,$66,$30,$86 ; A38E 10 82 20 C4 00 66 30 86 .. ..f0. + .byte $40,$2A,$00,$CA,$00,$2C,$00,$6C ; A396 40 2A 00 CA 00 2C 00 6C @*...,.l + .byte $00,$8C,$00,$CC,$00,$FF ; A39E 00 8C 00 CC 00 FF ...... LA3A4: .byte $00,$00,$AE,$A3,$B8,$A3,$C2,$A3 ; A3A4 00 00 AE A3 B8 A3 C2 A3 ........ .byte $CC,$A3,$FE,$49,$9C,$FD,$04,$01 ; A3AC CC A3 FE 49 9C FD 04 01 ...I.... .byte $64,$08,$02,$FF,$FE,$49,$9C,$FD ; A3B4 64 08 02 FF FE 49 9C FD d....I.. @@ -5297,12 +5377,11 @@ LA446: .byte $04,$02,$01,$38,$02,$01,$64,$02 ; A446 04 02 01 38 02 01 64 02 .byte $20,$22,$01,$7C,$22,$01,$38,$32 ; A45E 20 22 01 7C 22 01 38 32 ".|".82 .byte $01,$64,$32,$01,$04,$52,$01,$38 ; A466 01 64 32 01 04 52 01 38 .d2..R.8 .byte $52,$01,$64,$52,$01,$98,$52,$01 ; A46E 52 01 64 52 01 98 52 01 R.dR..R. - .byte $FF ; A476 FF . -LA477: .byte $22,$00,$62,$00,$82,$00,$C2,$00 ; A477 22 00 62 00 82 00 C2 00 ".b..... - .byte $24,$00,$64,$00,$84,$00,$C4,$00 ; A47F 24 00 64 00 84 00 C4 00 $.d..... - .byte $46,$00,$A6,$00,$68,$00,$88,$00 ; A487 46 00 A6 00 68 00 88 00 F...h... - .byte $2C,$00,$6C,$00,$8C,$00,$CC,$00 ; A48F 2C 00 6C 00 8C 00 CC 00 ,.l..... - .byte $FF ; A497 FF . + .byte $FF,$22,$00,$62,$00,$82,$00,$C2 ; A476 FF 22 00 62 00 82 00 C2 .".b.... + .byte $00,$24,$00,$64,$00,$84,$00,$C4 ; A47E 00 24 00 64 00 84 00 C4 .$.d.... + .byte $00,$46,$00,$A6,$00,$68,$00,$88 ; A486 00 46 00 A6 00 68 00 88 .F...h.. + .byte $00,$2C,$00,$6C,$00,$8C,$00,$CC ; A48E 00 2C 00 6C 00 8C 00 CC .,.l.... + .byte $00,$FF ; A496 00 FF .. ; ---------------------------------------------------------------------------- ; not sure what this actually does electrocution_bomb_pickup: @@ -5435,11 +5514,10 @@ LA62F: .byte $04,$02,$01,$04,$12,$01,$04,$22 ; A62F 04 02 01 04 12 01 04 22 .byte $01,$04,$32,$01,$04,$42,$01,$04 ; A637 01 04 32 01 04 42 01 04 ..2..B.. .byte $52,$01,$98,$02,$01,$98,$12,$01 ; A63F 52 01 98 02 01 98 12 01 R....... .byte $98,$22,$01,$98,$32,$01,$98,$42 ; A647 98 22 01 98 32 01 98 42 ."..2..B - .byte $01,$98,$52,$01,$FF ; A64F 01 98 52 01 FF ..R.. -LA654: .byte $22,$00,$24,$00,$26,$00,$28,$00 ; A654 22 00 24 00 26 00 28 00 ".$.&.(. - .byte $2A,$00,$2C,$00,$C2,$00,$C4,$00 ; A65C 2A 00 2C 00 C2 00 C4 00 *.,..... - .byte $C6,$00,$C8,$00,$CA,$00,$CC,$00 ; A664 C6 00 C8 00 CA 00 CC 00 ........ - .byte $FF ; A66C FF . + .byte $01,$98,$52,$01,$FF,$22,$00,$24 ; A64F 01 98 52 01 FF 22 00 24 ..R..".$ + .byte $00,$26,$00,$28,$00,$2A,$00,$2C ; A657 00 26 00 28 00 2A 00 2C .&.(.*., + .byte $00,$C2,$00,$C4,$00,$C6,$00,$C8 ; A65F 00 C2 00 C4 00 C6 00 C8 ........ + .byte $00,$CA,$00,$CC,$00,$FF ; A667 00 CA 00 CC 00 FF ...... 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 @@ -5589,12 +5667,11 @@ LA7D5: .byte $40,$02,$01,$5C,$02,$01,$24,$12 ; A7D5 40 02 01 5C 02 01 24 12 .byte $60,$22,$01,$98,$22,$01,$18,$32 ; A7ED 60 22 01 98 22 01 18 32 `".."..2 .byte $01,$84,$32,$01,$3C,$42,$01,$60 ; A7F5 01 84 32 01 3C 42 01 60 ..2.. .byte $48,$AD,$58,$AD,$FE,$49,$9C,$FD ; AD12 48 AD 58 AD FE 49 9C FD H.X..I.. @@ -6036,11 +6110,10 @@ LAE4C: .byte $04,$02,$01,$98,$02,$01,$04,$22 ; AE4C 04 02 01 98 02 01 04 22 .byte $01,$98,$22,$01,$18,$34,$01,$84 ; AE54 01 98 22 01 18 34 01 84 .."..4.. .byte $34,$01,$04,$42,$01,$98,$42,$01 ; AE5C 34 01 04 42 01 98 42 01 4..B..B. .byte $04,$52,$01,$38,$52,$01,$64,$52 ; AE64 04 52 01 38 52 01 64 52 .R.8R.dR - .byte $01,$98,$52,$01,$FF ; AE6C 01 98 52 01 FF ..R.. -LAE71: .byte $22,$00,$C2,$00,$26,$00,$C6,$00 ; AE71 22 00 C2 00 26 00 C6 00 "...&... - .byte $48,$00,$A8,$00,$2A,$00,$CA,$00 ; AE79 48 00 A8 00 2A 00 CA 00 H...*... - .byte $2C,$00,$6C,$00,$8C,$00,$CC,$00 ; AE81 2C 00 6C 00 8C 00 CC 00 ,.l..... - .byte $FF ; AE89 FF . + .byte $01,$98,$52,$01,$FF,$22,$00,$C2 ; AE6C 01 98 52 01 FF 22 00 C2 ..R..".. + .byte $00,$26,$00,$C6,$00,$48,$00,$A8 ; AE74 00 26 00 C6 00 48 00 A8 .&...H.. + .byte $00,$2A,$00,$CA,$00,$2C,$00,$6C ; AE7C 00 2A 00 CA 00 2C 00 6C .*...,.l + .byte $00,$8C,$00,$CC,$00,$FF ; AE84 00 8C 00 CC 00 FF ...... LAE8A: .byte $03,$00,$00,$01,$7C,$01,$01,$00 ; AE8A 03 00 00 01 7C 01 01 00 ....|... .byte $04,$0C,$AF,$10,$86,$00,$01,$0F ; AE92 04 0C AF 10 86 00 01 0F ........ .byte $FF ; AE9A FF . @@ -6206,12 +6279,11 @@ LB073: .byte $02,$01,$24,$02,$01,$44,$02,$01 ; B073 02 01 24 02 01 44 02 01 .byte $22,$01,$78,$22,$01,$04,$38,$01 ; B08B 22 01 78 22 01 04 38 01 ".x"..8. .byte $1C,$46,$01,$78,$42,$01,$04,$52 ; B093 1C 46 01 78 42 01 04 52 .F.xB..R .byte $01,$58,$52,$01,$98,$52,$01 ; B09B 01 58 52 01 98 52 01 .XR..R. -LB0A2: .byte $FF ; B0A2 FF . -LB0A3: .byte $22,$00,$42,$00,$62,$00,$A2,$00 ; B0A3 22 00 42 00 62 00 A2 00 ".B.b... - .byte $C2,$00,$64,$00,$84,$00,$A4,$00 ; B0AB C2 00 64 00 84 00 A4 00 ..d..... - .byte $46,$00,$A6,$00,$28,$00,$4A,$00 ; B0B3 46 00 A6 00 28 00 4A 00 F...(.J. - .byte $AA,$00,$2C,$00,$8C,$00,$CC,$00 ; B0BB AA 00 2C 00 8C 00 CC 00 ..,..... - .byte $FF ; B0C3 FF . +LB0A2: .byte $FF,$22,$00,$42,$00,$62,$00,$A2 ; B0A2 FF 22 00 42 00 62 00 A2 .".B.b.. + .byte $00,$C2,$00,$64,$00,$84,$00,$A4 ; B0AA 00 C2 00 64 00 84 00 A4 ...d.... + .byte $00,$46,$00,$A6,$00,$28,$00,$4A ; B0B2 00 46 00 A6 00 28 00 4A .F...(.J + .byte $00,$AA,$00,$2C,$00,$8C,$00,$CC ; B0BA 00 AA 00 2C 00 8C 00 CC ...,.... + .byte $00,$FF ; B0C2 00 FF .. ; ---------------------------------------------------------------------------- LB0C4: jsr L8036 ; B0C4 20 36 80 6. lda #$10 ; B0C7 A9 10 .. @@ -6390,11 +6462,10 @@ LB237: .byte $04,$02,$01,$38,$02,$01,$7C,$02 ; B237 04 02 01 38 02 01 7C 02 .byte $01,$38,$12,$01,$64,$12,$01,$98 ; B23F 01 38 12 01 64 12 01 98 .8..d... .byte $12,$01,$04,$22,$01,$98,$39,$01 ; B247 12 01 04 22 01 98 39 01 ..."..9. .byte $58,$47,$01,$04,$52,$01,$38,$52 ; B24F 58 47 01 04 52 01 38 52 XG..R.8R - .byte $01,$98,$52,$01,$FF ; B257 01 98 52 01 FF ..R.. -LB25C: .byte $22,$00,$62,$00,$A2,$00,$64,$00 ; B25C 22 00 62 00 A2 00 64 00 ".b...d. - .byte $84,$00,$C4,$00,$26,$00,$C8,$00 ; B264 84 00 C4 00 26 00 C8 00 ....&... - .byte $8A,$00,$2C,$00,$6C,$00,$CC,$00 ; B26C 8A 00 2C 00 6C 00 CC 00 ..,.l... - .byte $FF ; B274 FF . + .byte $01,$98,$52,$01,$FF,$22,$00,$62 ; B257 01 98 52 01 FF 22 00 62 ..R..".b + .byte $00,$A2,$00,$64,$00,$84,$00,$C4 ; B25F 00 A2 00 64 00 84 00 C4 ...d.... + .byte $00,$26,$00,$C8,$00,$8A,$00,$2C ; B267 00 26 00 C8 00 8A 00 2C .&....., + .byte $00,$6C,$00,$CC,$00,$FF ; B26F 00 6C 00 CC 00 FF .l.... LB275: .byte $03,$A8,$B2,$0A,$A4,$20,$01,$56 ; B275 03 A8 B2 0A A4 20 01 56 ..... .V .byte $FF ; B27D FF . ; ---------------------------------------------------------------------------- @@ -6480,11 +6551,11 @@ LB38F: .byte $04,$02,$01,$3A,$02,$01,$5A,$02 ; B38F 04 02 01 3A 02 01 5A 02 .byte $12,$01,$5A,$12,$01,$04,$22,$01 ; B39F 12 01 5A 12 01 04 22 01 ..Z...". .byte $3A,$22,$01,$04,$32,$01,$78,$32 ; B3A7 3A 22 01 04 32 01 78 32 :"..2.x2 .byte $01,$98,$32,$01,$04,$52,$01,$38 ; B3AF 01 98 32 01 04 52 01 38 ..2..R.8 - .byte $52,$01,$60,$52,$01,$FF ; B3B7 52 01 60 52 01 FF R.`R.. -LB3BD: .byte $22,$10,$62,$20,$82,$30,$A2,$40 ; B3BD 22 10 62 20 82 30 A2 40 ".b .0.@ - .byte $C2,$50,$44,$60,$84,$70,$26,$80 ; B3C5 C2 50 44 60 84 70 26 80 .PD`.p&. - .byte $66,$90,$28,$A0,$A8,$B0,$C8,$C0 ; B3CD 66 90 28 A0 A8 B0 C8 C0 f.(..... - .byte $2C,$D0,$6C,$E0,$8C,$F0,$FF ; B3D5 2C D0 6C E0 8C F0 FF ,.l.... + .byte $52,$01,$60,$52,$01,$FF,$22,$10 ; B3B7 52 01 60 52 01 FF 22 10 R.`R..". + .byte $62,$20,$82,$30,$A2,$40,$C2,$50 ; B3BF 62 20 82 30 A2 40 C2 50 b .0.@.P + .byte $44,$60,$84,$70,$26,$80,$66,$90 ; B3C7 44 60 84 70 26 80 66 90 D`.p&.f. + .byte $28,$A0,$A8,$B0,$C8,$C0,$2C,$D0 ; B3CF 28 A0 A8 B0 C8 C0 2C D0 (.....,. + .byte $6C,$E0,$8C,$F0,$FF ; B3D7 6C E0 8C F0 FF l.... LB3DC: .byte $00,$00,$FC,$B3,$06,$B4,$10,$B4 ; B3DC 00 00 FC B3 06 B4 10 B4 ........ .byte $06,$B4,$10,$B4,$1A,$B4,$24,$B4 ; B3E4 06 B4 10 B4 1A B4 24 B4 ......$. .byte $2E,$B4,$38,$B4,$2E,$B4,$38,$B4 ; B3EC 2E B4 38 B4 2E B4 38 B4 ..8...8. @@ -6639,11 +6710,10 @@ LB5D2: .byte $04,$02,$01,$20,$02,$01,$3C,$02 ; B5D2 04 02 01 20 02 01 3C 02 .byte $02,$01,$04,$22,$01,$98,$22,$01 ; B5E2 02 01 04 22 01 98 22 01 ..."..". .byte $3C,$36,$01,$60,$36,$01,$04,$52 ; B5EA 3C 36 01 60 36 01 04 52 <6.`6..R .byte $01,$3C,$52,$01,$60,$52,$01,$98 ; B5F2 01 3C 52 01 60 52 01 98 .. .byte $4E,$B6,$FE,$49,$9C,$FD,$04,$00 ; B622 4E B6 FE 49 9C FD 04 00 N..I.... .byte $78,$43,$02,$FF,$FE,$49,$9C,$FD ; B62A 78 43 02 FF FE 49 9C FD xC...I.. -- cgit v1.2.3