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 --- Makefile | 2 + jumpmanjr.dasm | 408 +++++++++++++++++++++++++++++++++------------------------ jumpmanjr.info | 83 ++++++++---- leveldesc.info | 70 ++++++---- main.info | 13 ++ mklevelinfo.pl | 5 +- 6 files changed, 354 insertions(+), 227 deletions(-) diff --git a/Makefile b/Makefile index eb342ae..0279bf1 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,8 @@ leveldesc.info: mklevelinfo.pl perl mklevelinfo.pl > leveldesc.info html: jumpmanjr.html + git add jumpmanjr.html + git commit -m'regenerate jumpmanjr.html' jumpmanjr.html: jumpmanjr.dasm vim +TOhtml '+w!jumpmanjr.html' '+qall!' 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.. diff --git a/jumpmanjr.info b/jumpmanjr.info index c1b0d38..f978884 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -118,6 +118,19 @@ label { name "show_get_ready_prompt"; addr $9624; size 1; comment "only in multi 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"; }; +label { name "erase_bomb"; addr $8879; size 1; comment "make the bomb disappear by drawing sh_blank in its location"; }; +label { name "bomb_add_points"; addr $8865; size 1; comment "add points to score for picking up bomb (theoretically different on every level, but really $64 aka 100 for all of them)"; }; +label { name "call_bomb_sub"; addr $8856; size 1; comment "call bomb pickup subroutine for this level (which might just do an RTS if there's no special action)"; }; +label { name "call_bomb_indirect_sub"; addr $883E; size 1; comment "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?)"; }; +label { name "search_bomblist"; addr $87D0; size 1; comment "set Y to the index of the current bomb (or rts if we can't find it)"; }; +label { name "bl_ok"; addr $87D7; size 1; }; +label { name "bomb_found"; addr $87E0; size 1; }; +label { name "bombloc"; addr $B6; size 1; comment "bomb_pickup: position of the bomb Jumpman just touched, on 8x8 coarse grid"; }; +label { name "mul_y"; addr $87EA; size 1; comment "multiply Y by 1.5 (only works because Y will always be even at this point)"; }; +label { name "unkn1"; addr $87F2; size 1; comment "find out: why are we storing this at 06DC?"; }; +label { name "change_map"; addr $881B; size 1; comment "this has to do with redrawing parts of the level (e.g. disappearing platforms on level00)"; }; +label { name "check_ind_sub"; addr $8831; size 1; comment "see if this bomb calls an indirect sub (none of them do in this game, this is useless code)"; }; +label { name "blistptr"; addr $B4; size 2; comment "bomb_pickup: points to current level's bomblist"; }; range { name "gr7_or_masks"; start $8143; end $8152; type bytetable; }; range { name "gr7_and_masks"; start $8153; end $8156; type bytetable; }; range { name "sfx_bomb_pickup"; start $8892; end $88A7; type bytetable; comment "played when a bomb is picked up"; }; @@ -587,14 +600,15 @@ label { name "work_level_num_bombs"; addr $078a; size 1; comment "number of bomb label { name "work_level_bullet_max"; addr $078b; size 1; comment "0 = no bullets, range 0-4."; }; label { name "work_level_y_start"; addr $078c; size 1; comment "jumpman starting Y position"; }; label { name "work_level_x_start"; addr $078d; size 1; comment "jumpman starting X position"; }; -label { name "work_level_offs_14"; addr $078e; size 2; comment "points to $0600"; }; +label { name "work_level_fudge_x"; addr $078e; size 1; comment "fudge factor for bomb locations, always $00"; }; +label { name "work_level_fudge_y"; addr $078f; size 1; comment "fudge factor for bomb locations, always $06"; }; label { name "work_level_points_per_bomb"; addr $0790; size 1; comment "points awarded per bomb pickup (always $64 aka 100)"; }; label { name "work_level_time_bonus"; addr $0791; size 2; comment "amount of time bonus at start of level"; }; label { name "work_level_offs_19"; addr $0793; size 1; comment "always $00"; }; label { name "work_level_unkn_table0"; addr $0794; size 2; comment "pointer to ROM table or $06xx"; }; label { name "work_level_map0"; addr $0796; size 2; comment "map data"; }; 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_bomblist"; addr $079a; size 2; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -616,14 +630,15 @@ label { name "cur_level_num_bombs"; addr $07ca; size 1; comment "number of bombs label { name "cur_level_bullet_max"; addr $07cb; size 1; comment "0 = no bullets, range 0-4."; }; label { name "cur_level_y_start"; addr $07cc; size 1; comment "jumpman starting Y position"; }; label { name "cur_level_x_start"; addr $07cd; size 1; comment "jumpman starting X position"; }; -label { name "cur_level_offs_14"; addr $07ce; size 2; comment "points to $0600"; }; +label { name "cur_level_fudge_x"; addr $07ce; size 1; comment "fudge factor for bomb locations, always $00"; }; +label { name "cur_level_fudge_y"; addr $07cf; size 1; comment "fudge factor for bomb locations, always $06"; }; label { name "cur_level_points_per_bomb"; addr $07d0; size 1; comment "points awarded per bomb pickup (always $64 aka 100)"; }; label { name "cur_level_time_bonus"; addr $07d1; size 2; comment "amount of time bonus at start of level"; }; label { name "cur_level_offs_19"; addr $07d3; size 1; comment "always $00"; }; label { name "cur_level_unkn_table0"; addr $07d4; size 2; comment "pointer to ROM table or $06xx"; }; label { name "cur_level_map0"; addr $07d6; size 2; comment "map data"; }; 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_bomblist"; addr $07da; size 2; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -645,14 +660,15 @@ range { name "level00_num_bombs"; start $a00a; end $a00a; type bytetable; commen range { name "level00_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level00_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; }; range { name "level00_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; }; -range { name "level00_offs_14"; start $a00e; end $a00f; type bytetable; comment "points to $0600"; }; +range { name "level00_fudge_x"; start $a00e; end $a00e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level00_fudge_y"; start $a00f; end $a00f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level00_points_per_bomb"; start $a010; end $a010; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level00_time_bonus"; start $a011; end $a012; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level00_offs_19"; start $a013; end $a013; type bytetable; comment "always $00"; }; range { name "level00_unkn_table0"; start $a014; end $a015; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level00_map0"; start $a016; end $a017; type addrtable; comment "map data"; }; range { name "level00_map1"; start $a018; end $a019; type addrtable; comment "map data"; }; -range { name "level00_map2"; start $a01a; end $a01b; type addrtable; comment "map data"; }; +range { name "level00_bomblist"; start $a01a; end $a01b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -674,14 +690,15 @@ range { name "level01_num_bombs"; start $a04a; end $a04a; type bytetable; commen range { name "level01_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level01_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; }; range { name "level01_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; }; -range { name "level01_offs_14"; start $a04e; end $a04f; type bytetable; comment "points to $0600"; }; +range { name "level01_fudge_x"; start $a04e; end $a04e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level01_fudge_y"; start $a04f; end $a04f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level01_points_per_bomb"; start $a050; end $a050; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level01_time_bonus"; start $a051; end $a052; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level01_offs_19"; start $a053; end $a053; type bytetable; comment "always $00"; }; range { name "level01_unkn_table0"; start $a054; end $a055; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level01_map0"; start $a056; end $a057; type addrtable; comment "map data"; }; range { name "level01_map1"; start $a058; end $a059; type addrtable; comment "map data"; }; -range { name "level01_map2"; start $a05a; end $a05b; type addrtable; comment "map data"; }; +range { name "level01_bomblist"; start $a05a; end $a05b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -703,14 +720,15 @@ range { name "level02_num_bombs"; start $a08a; end $a08a; type bytetable; commen range { name "level02_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level02_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; }; range { name "level02_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; }; -range { name "level02_offs_14"; start $a08e; end $a08f; type bytetable; comment "points to $0600"; }; +range { name "level02_fudge_x"; start $a08e; end $a08e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level02_fudge_y"; start $a08f; end $a08f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level02_points_per_bomb"; start $a090; end $a090; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level02_time_bonus"; start $a091; end $a092; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level02_offs_19"; start $a093; end $a093; type bytetable; comment "always $00"; }; range { name "level02_unkn_table0"; start $a094; end $a095; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level02_map0"; start $a096; end $a097; type addrtable; comment "map data"; }; range { name "level02_map1"; start $a098; end $a099; type addrtable; comment "map data"; }; -range { name "level02_map2"; start $a09a; end $a09b; type addrtable; comment "map data"; }; +range { name "level02_bomblist"; start $a09a; end $a09b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -732,14 +750,15 @@ range { name "level03_num_bombs"; start $a0ca; end $a0ca; type bytetable; commen range { name "level03_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level03_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; }; range { name "level03_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level03_offs_14"; start $a0ce; end $a0cf; type bytetable; comment "points to $0600"; }; +range { name "level03_fudge_x"; start $a0ce; end $a0ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level03_fudge_y"; start $a0cf; end $a0cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level03_points_per_bomb"; start $a0d0; end $a0d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level03_time_bonus"; start $a0d1; end $a0d2; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level03_offs_19"; start $a0d3; end $a0d3; type bytetable; comment "always $00"; }; range { name "level03_unkn_table0"; start $a0d4; end $a0d5; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level03_map0"; start $a0d6; end $a0d7; type addrtable; comment "map data"; }; range { name "level03_map1"; start $a0d8; end $a0d9; type addrtable; comment "map data"; }; -range { name "level03_map2"; start $a0da; end $a0db; type addrtable; comment "map data"; }; +range { name "level03_bomblist"; start $a0da; end $a0db; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -761,14 +780,15 @@ range { name "level04_num_bombs"; start $a10a; end $a10a; type bytetable; commen range { name "level04_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level04_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; }; range { name "level04_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; }; -range { name "level04_offs_14"; start $a10e; end $a10f; type bytetable; comment "points to $0600"; }; +range { name "level04_fudge_x"; start $a10e; end $a10e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level04_fudge_y"; start $a10f; end $a10f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level04_points_per_bomb"; start $a110; end $a110; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level04_time_bonus"; start $a111; end $a112; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level04_offs_19"; start $a113; end $a113; type bytetable; comment "always $00"; }; range { name "level04_unkn_table0"; start $a114; end $a115; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level04_map0"; start $a116; end $a117; type addrtable; comment "map data"; }; range { name "level04_map1"; start $a118; end $a119; type addrtable; comment "map data"; }; -range { name "level04_map2"; start $a11a; end $a11b; type addrtable; comment "map data"; }; +range { name "level04_bomblist"; start $a11a; end $a11b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -790,14 +810,15 @@ range { name "level05_num_bombs"; start $a14a; end $a14a; type bytetable; commen range { name "level05_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level05_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; }; range { name "level05_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; }; -range { name "level05_offs_14"; start $a14e; end $a14f; type bytetable; comment "points to $0600"; }; +range { name "level05_fudge_x"; start $a14e; end $a14e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level05_fudge_y"; start $a14f; end $a14f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level05_points_per_bomb"; start $a150; end $a150; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level05_time_bonus"; start $a151; end $a152; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level05_offs_19"; start $a153; end $a153; type bytetable; comment "always $00"; }; range { name "level05_unkn_table0"; start $a154; end $a155; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level05_map0"; start $a156; end $a157; type addrtable; comment "map data"; }; range { name "level05_map1"; start $a158; end $a159; type addrtable; comment "map data"; }; -range { name "level05_map2"; start $a15a; end $a15b; type addrtable; comment "map data"; }; +range { name "level05_bomblist"; start $a15a; end $a15b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -819,14 +840,15 @@ range { name "level06_num_bombs"; start $a18a; end $a18a; type bytetable; commen range { name "level06_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level06_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; }; range { name "level06_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; }; -range { name "level06_offs_14"; start $a18e; end $a18f; type bytetable; comment "points to $0600"; }; +range { name "level06_fudge_x"; start $a18e; end $a18e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level06_fudge_y"; start $a18f; end $a18f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level06_points_per_bomb"; start $a190; end $a190; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level06_time_bonus"; start $a191; end $a192; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level06_offs_19"; start $a193; end $a193; type bytetable; comment "always $00"; }; range { name "level06_unkn_table0"; start $a194; end $a195; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level06_map0"; start $a196; end $a197; type addrtable; comment "map data"; }; range { name "level06_map1"; start $a198; end $a199; type addrtable; comment "map data"; }; -range { name "level06_map2"; start $a19a; end $a19b; type addrtable; comment "map data"; }; +range { name "level06_bomblist"; start $a19a; end $a19b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -848,14 +870,15 @@ range { name "level07_num_bombs"; start $a1ca; end $a1ca; type bytetable; commen range { name "level07_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level07_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; }; range { name "level07_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level07_offs_14"; start $a1ce; end $a1cf; type bytetable; comment "points to $0600"; }; +range { name "level07_fudge_x"; start $a1ce; end $a1ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level07_fudge_y"; start $a1cf; end $a1cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level07_points_per_bomb"; start $a1d0; end $a1d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level07_time_bonus"; start $a1d1; end $a1d2; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level07_offs_19"; start $a1d3; end $a1d3; type bytetable; comment "always $00"; }; range { name "level07_unkn_table0"; start $a1d4; end $a1d5; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level07_map0"; start $a1d6; end $a1d7; type addrtable; comment "map data"; }; range { name "level07_map1"; start $a1d8; end $a1d9; type addrtable; comment "map data"; }; -range { name "level07_map2"; start $a1da; end $a1db; type addrtable; comment "map data"; }; +range { name "level07_bomblist"; start $a1da; end $a1db; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -877,14 +900,15 @@ range { name "level08_num_bombs"; start $a20a; end $a20a; type bytetable; commen range { name "level08_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level08_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; }; range { name "level08_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; }; -range { name "level08_offs_14"; start $a20e; end $a20f; type bytetable; comment "points to $0600"; }; +range { name "level08_fudge_x"; start $a20e; end $a20e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level08_fudge_y"; start $a20f; end $a20f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level08_points_per_bomb"; start $a210; end $a210; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level08_time_bonus"; start $a211; end $a212; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level08_offs_19"; start $a213; end $a213; type bytetable; comment "always $00"; }; range { name "level08_unkn_table0"; start $a214; end $a215; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level08_map0"; start $a216; end $a217; type addrtable; comment "map data"; }; range { name "level08_map1"; start $a218; end $a219; type addrtable; comment "map data"; }; -range { name "level08_map2"; start $a21a; end $a21b; type addrtable; comment "map data"; }; +range { name "level08_bomblist"; start $a21a; end $a21b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -906,14 +930,15 @@ range { name "level09_num_bombs"; start $a24a; end $a24a; type bytetable; commen range { name "level09_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level09_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; }; range { name "level09_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; }; -range { name "level09_offs_14"; start $a24e; end $a24f; type bytetable; comment "points to $0600"; }; +range { name "level09_fudge_x"; start $a24e; end $a24e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level09_fudge_y"; start $a24f; end $a24f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level09_points_per_bomb"; start $a250; end $a250; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level09_time_bonus"; start $a251; end $a252; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level09_offs_19"; start $a253; end $a253; type bytetable; comment "always $00"; }; range { name "level09_unkn_table0"; start $a254; end $a255; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level09_map0"; start $a256; end $a257; type addrtable; comment "map data"; }; range { name "level09_map1"; start $a258; end $a259; type addrtable; comment "map data"; }; -range { name "level09_map2"; start $a25a; end $a25b; type addrtable; comment "map data"; }; +range { name "level09_bomblist"; start $a25a; end $a25b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -935,14 +960,15 @@ range { name "level10_num_bombs"; start $a28a; end $a28a; type bytetable; commen range { name "level10_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level10_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; }; range { name "level10_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; }; -range { name "level10_offs_14"; start $a28e; end $a28f; type bytetable; comment "points to $0600"; }; +range { name "level10_fudge_x"; start $a28e; end $a28e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level10_fudge_y"; start $a28f; end $a28f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level10_points_per_bomb"; start $a290; end $a290; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level10_time_bonus"; start $a291; end $a292; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level10_offs_19"; start $a293; end $a293; type bytetable; comment "always $00"; }; range { name "level10_unkn_table0"; start $a294; end $a295; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level10_map0"; start $a296; end $a297; type addrtable; comment "map data"; }; range { name "level10_map1"; start $a298; end $a299; type addrtable; comment "map data"; }; -range { name "level10_map2"; start $a29a; end $a29b; type addrtable; comment "map data"; }; +range { name "level10_bomblist"; start $a29a; end $a29b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -964,14 +990,15 @@ range { name "level11_num_bombs"; start $a2ca; end $a2ca; type bytetable; commen range { name "level11_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level11_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; }; range { name "level11_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level11_offs_14"; start $a2ce; end $a2cf; type bytetable; comment "points to $0600"; }; +range { name "level11_fudge_x"; start $a2ce; end $a2ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level11_fudge_y"; start $a2cf; end $a2cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level11_points_per_bomb"; start $a2d0; end $a2d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level11_time_bonus"; start $a2d1; end $a2d2; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level11_offs_19"; start $a2d3; end $a2d3; type bytetable; comment "always $00"; }; range { name "level11_unkn_table0"; start $a2d4; end $a2d5; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level11_map0"; start $a2d6; end $a2d7; type addrtable; comment "map data"; }; range { name "level11_map1"; start $a2d8; end $a2d9; type addrtable; comment "map data"; }; -range { name "level11_map2"; start $a2da; end $a2db; type addrtable; comment "map data"; }; +range { name "level11_bomblist"; start $a2da; end $a2db; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; diff --git a/leveldesc.info b/leveldesc.info index d98c9f0..6918a60 100644 --- a/leveldesc.info +++ b/leveldesc.info @@ -7,14 +7,15 @@ label { name "work_level_num_bombs"; addr $078a; size 1; comment "number of bomb label { name "work_level_bullet_max"; addr $078b; size 1; comment "0 = no bullets, range 0-4."; }; label { name "work_level_y_start"; addr $078c; size 1; comment "jumpman starting Y position"; }; label { name "work_level_x_start"; addr $078d; size 1; comment "jumpman starting X position"; }; -label { name "work_level_offs_14"; addr $078e; size 2; comment "points to $0600"; }; +label { name "work_level_fudge_x"; addr $078e; size 1; comment "fudge factor for bomb locations, always $00"; }; +label { name "work_level_fudge_y"; addr $078f; size 1; comment "fudge factor for bomb locations, always $06"; }; label { name "work_level_points_per_bomb"; addr $0790; size 1; comment "points awarded per bomb pickup (always $64 aka 100)"; }; label { name "work_level_time_bonus"; addr $0791; size 2; comment "amount of time bonus at start of level"; }; label { name "work_level_offs_19"; addr $0793; size 1; comment "always $00"; }; label { name "work_level_unkn_table0"; addr $0794; size 2; comment "pointer to ROM table or $06xx"; }; label { name "work_level_map0"; addr $0796; size 2; comment "map data"; }; 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_bomblist"; addr $079a; size 2; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -36,14 +37,15 @@ label { name "cur_level_num_bombs"; addr $07ca; size 1; comment "number of bombs label { name "cur_level_bullet_max"; addr $07cb; size 1; comment "0 = no bullets, range 0-4."; }; label { name "cur_level_y_start"; addr $07cc; size 1; comment "jumpman starting Y position"; }; label { name "cur_level_x_start"; addr $07cd; size 1; comment "jumpman starting X position"; }; -label { name "cur_level_offs_14"; addr $07ce; size 2; comment "points to $0600"; }; +label { name "cur_level_fudge_x"; addr $07ce; size 1; comment "fudge factor for bomb locations, always $00"; }; +label { name "cur_level_fudge_y"; addr $07cf; size 1; comment "fudge factor for bomb locations, always $06"; }; label { name "cur_level_points_per_bomb"; addr $07d0; size 1; comment "points awarded per bomb pickup (always $64 aka 100)"; }; label { name "cur_level_time_bonus"; addr $07d1; size 2; comment "amount of time bonus at start of level"; }; label { name "cur_level_offs_19"; addr $07d3; size 1; comment "always $00"; }; label { name "cur_level_unkn_table0"; addr $07d4; size 2; comment "pointer to ROM table or $06xx"; }; label { name "cur_level_map0"; addr $07d6; size 2; comment "map data"; }; 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_bomblist"; addr $07da; size 2; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -65,14 +67,15 @@ range { name "level00_num_bombs"; start $a00a; end $a00a; type bytetable; commen range { name "level00_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level00_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; }; range { name "level00_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; }; -range { name "level00_offs_14"; start $a00e; end $a00f; type bytetable; comment "points to $0600"; }; +range { name "level00_fudge_x"; start $a00e; end $a00e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level00_fudge_y"; start $a00f; end $a00f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level00_points_per_bomb"; start $a010; end $a010; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level00_time_bonus"; start $a011; end $a012; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level00_offs_19"; start $a013; end $a013; type bytetable; comment "always $00"; }; range { name "level00_unkn_table0"; start $a014; end $a015; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level00_map0"; start $a016; end $a017; type addrtable; comment "map data"; }; range { name "level00_map1"; start $a018; end $a019; type addrtable; comment "map data"; }; -range { name "level00_map2"; start $a01a; end $a01b; type addrtable; comment "map data"; }; +range { name "level00_bomblist"; start $a01a; end $a01b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -94,14 +97,15 @@ range { name "level01_num_bombs"; start $a04a; end $a04a; type bytetable; commen range { name "level01_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level01_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; }; range { name "level01_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; }; -range { name "level01_offs_14"; start $a04e; end $a04f; type bytetable; comment "points to $0600"; }; +range { name "level01_fudge_x"; start $a04e; end $a04e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level01_fudge_y"; start $a04f; end $a04f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level01_points_per_bomb"; start $a050; end $a050; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level01_time_bonus"; start $a051; end $a052; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level01_offs_19"; start $a053; end $a053; type bytetable; comment "always $00"; }; range { name "level01_unkn_table0"; start $a054; end $a055; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level01_map0"; start $a056; end $a057; type addrtable; comment "map data"; }; range { name "level01_map1"; start $a058; end $a059; type addrtable; comment "map data"; }; -range { name "level01_map2"; start $a05a; end $a05b; type addrtable; comment "map data"; }; +range { name "level01_bomblist"; start $a05a; end $a05b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -123,14 +127,15 @@ range { name "level02_num_bombs"; start $a08a; end $a08a; type bytetable; commen range { name "level02_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level02_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; }; range { name "level02_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; }; -range { name "level02_offs_14"; start $a08e; end $a08f; type bytetable; comment "points to $0600"; }; +range { name "level02_fudge_x"; start $a08e; end $a08e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level02_fudge_y"; start $a08f; end $a08f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level02_points_per_bomb"; start $a090; end $a090; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level02_time_bonus"; start $a091; end $a092; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level02_offs_19"; start $a093; end $a093; type bytetable; comment "always $00"; }; range { name "level02_unkn_table0"; start $a094; end $a095; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level02_map0"; start $a096; end $a097; type addrtable; comment "map data"; }; range { name "level02_map1"; start $a098; end $a099; type addrtable; comment "map data"; }; -range { name "level02_map2"; start $a09a; end $a09b; type addrtable; comment "map data"; }; +range { name "level02_bomblist"; start $a09a; end $a09b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -152,14 +157,15 @@ range { name "level03_num_bombs"; start $a0ca; end $a0ca; type bytetable; commen range { name "level03_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level03_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; }; range { name "level03_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level03_offs_14"; start $a0ce; end $a0cf; type bytetable; comment "points to $0600"; }; +range { name "level03_fudge_x"; start $a0ce; end $a0ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level03_fudge_y"; start $a0cf; end $a0cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level03_points_per_bomb"; start $a0d0; end $a0d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level03_time_bonus"; start $a0d1; end $a0d2; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level03_offs_19"; start $a0d3; end $a0d3; type bytetable; comment "always $00"; }; range { name "level03_unkn_table0"; start $a0d4; end $a0d5; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level03_map0"; start $a0d6; end $a0d7; type addrtable; comment "map data"; }; range { name "level03_map1"; start $a0d8; end $a0d9; type addrtable; comment "map data"; }; -range { name "level03_map2"; start $a0da; end $a0db; type addrtable; comment "map data"; }; +range { name "level03_bomblist"; start $a0da; end $a0db; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -181,14 +187,15 @@ range { name "level04_num_bombs"; start $a10a; end $a10a; type bytetable; commen range { name "level04_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level04_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; }; range { name "level04_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; }; -range { name "level04_offs_14"; start $a10e; end $a10f; type bytetable; comment "points to $0600"; }; +range { name "level04_fudge_x"; start $a10e; end $a10e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level04_fudge_y"; start $a10f; end $a10f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level04_points_per_bomb"; start $a110; end $a110; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level04_time_bonus"; start $a111; end $a112; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level04_offs_19"; start $a113; end $a113; type bytetable; comment "always $00"; }; range { name "level04_unkn_table0"; start $a114; end $a115; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level04_map0"; start $a116; end $a117; type addrtable; comment "map data"; }; range { name "level04_map1"; start $a118; end $a119; type addrtable; comment "map data"; }; -range { name "level04_map2"; start $a11a; end $a11b; type addrtable; comment "map data"; }; +range { name "level04_bomblist"; start $a11a; end $a11b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -210,14 +217,15 @@ range { name "level05_num_bombs"; start $a14a; end $a14a; type bytetable; commen range { name "level05_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level05_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; }; range { name "level05_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; }; -range { name "level05_offs_14"; start $a14e; end $a14f; type bytetable; comment "points to $0600"; }; +range { name "level05_fudge_x"; start $a14e; end $a14e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level05_fudge_y"; start $a14f; end $a14f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level05_points_per_bomb"; start $a150; end $a150; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level05_time_bonus"; start $a151; end $a152; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level05_offs_19"; start $a153; end $a153; type bytetable; comment "always $00"; }; range { name "level05_unkn_table0"; start $a154; end $a155; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level05_map0"; start $a156; end $a157; type addrtable; comment "map data"; }; range { name "level05_map1"; start $a158; end $a159; type addrtable; comment "map data"; }; -range { name "level05_map2"; start $a15a; end $a15b; type addrtable; comment "map data"; }; +range { name "level05_bomblist"; start $a15a; end $a15b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -239,14 +247,15 @@ range { name "level06_num_bombs"; start $a18a; end $a18a; type bytetable; commen range { name "level06_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level06_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; }; range { name "level06_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; }; -range { name "level06_offs_14"; start $a18e; end $a18f; type bytetable; comment "points to $0600"; }; +range { name "level06_fudge_x"; start $a18e; end $a18e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level06_fudge_y"; start $a18f; end $a18f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level06_points_per_bomb"; start $a190; end $a190; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level06_time_bonus"; start $a191; end $a192; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level06_offs_19"; start $a193; end $a193; type bytetable; comment "always $00"; }; range { name "level06_unkn_table0"; start $a194; end $a195; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level06_map0"; start $a196; end $a197; type addrtable; comment "map data"; }; range { name "level06_map1"; start $a198; end $a199; type addrtable; comment "map data"; }; -range { name "level06_map2"; start $a19a; end $a19b; type addrtable; comment "map data"; }; +range { name "level06_bomblist"; start $a19a; end $a19b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -268,14 +277,15 @@ range { name "level07_num_bombs"; start $a1ca; end $a1ca; type bytetable; commen range { name "level07_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level07_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; }; range { name "level07_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level07_offs_14"; start $a1ce; end $a1cf; type bytetable; comment "points to $0600"; }; +range { name "level07_fudge_x"; start $a1ce; end $a1ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level07_fudge_y"; start $a1cf; end $a1cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level07_points_per_bomb"; start $a1d0; end $a1d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level07_time_bonus"; start $a1d1; end $a1d2; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level07_offs_19"; start $a1d3; end $a1d3; type bytetable; comment "always $00"; }; range { name "level07_unkn_table0"; start $a1d4; end $a1d5; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level07_map0"; start $a1d6; end $a1d7; type addrtable; comment "map data"; }; range { name "level07_map1"; start $a1d8; end $a1d9; type addrtable; comment "map data"; }; -range { name "level07_map2"; start $a1da; end $a1db; type addrtable; comment "map data"; }; +range { name "level07_bomblist"; start $a1da; end $a1db; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -297,14 +307,15 @@ range { name "level08_num_bombs"; start $a20a; end $a20a; type bytetable; commen range { name "level08_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level08_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; }; range { name "level08_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; }; -range { name "level08_offs_14"; start $a20e; end $a20f; type bytetable; comment "points to $0600"; }; +range { name "level08_fudge_x"; start $a20e; end $a20e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level08_fudge_y"; start $a20f; end $a20f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level08_points_per_bomb"; start $a210; end $a210; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level08_time_bonus"; start $a211; end $a212; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level08_offs_19"; start $a213; end $a213; type bytetable; comment "always $00"; }; range { name "level08_unkn_table0"; start $a214; end $a215; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level08_map0"; start $a216; end $a217; type addrtable; comment "map data"; }; range { name "level08_map1"; start $a218; end $a219; type addrtable; comment "map data"; }; -range { name "level08_map2"; start $a21a; end $a21b; type addrtable; comment "map data"; }; +range { name "level08_bomblist"; start $a21a; end $a21b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -326,14 +337,15 @@ range { name "level09_num_bombs"; start $a24a; end $a24a; type bytetable; commen range { name "level09_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level09_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; }; range { name "level09_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; }; -range { name "level09_offs_14"; start $a24e; end $a24f; type bytetable; comment "points to $0600"; }; +range { name "level09_fudge_x"; start $a24e; end $a24e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level09_fudge_y"; start $a24f; end $a24f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level09_points_per_bomb"; start $a250; end $a250; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level09_time_bonus"; start $a251; end $a252; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level09_offs_19"; start $a253; end $a253; type bytetable; comment "always $00"; }; range { name "level09_unkn_table0"; start $a254; end $a255; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level09_map0"; start $a256; end $a257; type addrtable; comment "map data"; }; range { name "level09_map1"; start $a258; end $a259; type addrtable; comment "map data"; }; -range { name "level09_map2"; start $a25a; end $a25b; type addrtable; comment "map data"; }; +range { name "level09_bomblist"; start $a25a; end $a25b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -355,14 +367,15 @@ range { name "level10_num_bombs"; start $a28a; end $a28a; type bytetable; commen range { name "level10_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level10_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; }; range { name "level10_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; }; -range { name "level10_offs_14"; start $a28e; end $a28f; type bytetable; comment "points to $0600"; }; +range { name "level10_fudge_x"; start $a28e; end $a28e; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level10_fudge_y"; start $a28f; end $a28f; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level10_points_per_bomb"; start $a290; end $a290; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level10_time_bonus"; start $a291; end $a292; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level10_offs_19"; start $a293; end $a293; type bytetable; comment "always $00"; }; range { name "level10_unkn_table0"; start $a294; end $a295; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level10_map0"; start $a296; end $a297; type addrtable; comment "map data"; }; range { name "level10_map1"; start $a298; end $a299; type addrtable; comment "map data"; }; -range { name "level10_map2"; start $a29a; end $a29b; type addrtable; comment "map data"; }; +range { name "level10_bomblist"; start $a29a; end $a29b; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; @@ -384,14 +397,15 @@ range { name "level11_num_bombs"; start $a2ca; end $a2ca; type bytetable; commen range { name "level11_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; }; range { name "level11_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; }; range { name "level11_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; }; -range { name "level11_offs_14"; start $a2ce; end $a2cf; type bytetable; comment "points to $0600"; }; +range { name "level11_fudge_x"; start $a2ce; end $a2ce; type bytetable; comment "fudge factor for bomb locations, always $00"; }; +range { name "level11_fudge_y"; start $a2cf; end $a2cf; type bytetable; comment "fudge factor for bomb locations, always $06"; }; range { name "level11_points_per_bomb"; start $a2d0; end $a2d0; type bytetable; comment "points awarded per bomb pickup (always $64 aka 100)"; }; range { name "level11_time_bonus"; start $a2d1; end $a2d2; type wordtable; comment "amount of time bonus at start of level"; }; range { name "level11_offs_19"; start $a2d3; end $a2d3; type bytetable; comment "always $00"; }; range { name "level11_unkn_table0"; start $a2d4; end $a2d5; type addrtable; comment "pointer to ROM table or $06xx"; }; range { name "level11_map0"; start $a2d6; end $a2d7; type addrtable; comment "map data"; }; range { name "level11_map1"; start $a2d8; end $a2d9; type addrtable; comment "map data"; }; -range { name "level11_map2"; start $a2da; end $a2db; type addrtable; comment "map data"; }; +range { name "level11_bomblist"; start $a2da; end $a2db; type bytetable; comment "addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF."; }; 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_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"; }; diff --git a/main.info b/main.info index 1fd0538..9029520 100644 --- a/main.info +++ b/main.info @@ -116,6 +116,19 @@ label { name "show_get_ready_prompt"; addr $9624; size 1; comment "only in multi 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"; }; +label { name "erase_bomb"; addr $8879; size 1; comment "make the bomb disappear by drawing sh_blank in its location"; }; +label { name "bomb_add_points"; addr $8865; size 1; comment "add points to score for picking up bomb (theoretically different on every level, but really $64 aka 100 for all of them)"; }; +label { name "call_bomb_sub"; addr $8856; size 1; comment "call bomb pickup subroutine for this level (which might just do an RTS if there's no special action)"; }; +label { name "call_bomb_indirect_sub"; addr $883E; size 1; comment "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?)"; }; +label { name "search_bomblist"; addr $87D0; size 1; comment "set Y to the index of the current bomb (or rts if we can't find it)"; }; +label { name "bl_ok"; addr $87D7; size 1; }; +label { name "bomb_found"; addr $87E0; size 1; }; +label { name "bombloc"; addr $B6; size 1; comment "bomb_pickup: position of the bomb Jumpman just touched, on 8x8 coarse grid"; }; +label { name "mul_y"; addr $87EA; size 1; comment "multiply Y by 1.5 (only works because Y will always be even at this point)"; }; +label { name "unkn1"; addr $87F2; size 1; comment "find out: why are we storing this at 06DC?"; }; +label { name "change_map"; addr $881B; size 1; comment "this has to do with redrawing parts of the level (e.g. disappearing platforms on level00)"; }; +label { name "check_ind_sub"; addr $8831; size 1; comment "see if this bomb calls an indirect sub (none of them do in this game, this is useless code)"; }; +label { name "blistptr"; addr $B4; size 2; comment "bomb_pickup: points to current level's bomblist"; }; range { name "gr7_or_masks"; start $8143; end $8152; type bytetable; }; range { name "gr7_and_masks"; start $8153; end $8156; type bytetable; }; range { name "sfx_bomb_pickup"; start $8892; end $88A7; type bytetable; comment "played when a bomb is picked up"; }; diff --git a/mklevelinfo.pl b/mklevelinfo.pl index 43c6588..1f1996f 100644 --- a/mklevelinfo.pl +++ b/mklevelinfo.pl @@ -10,14 +10,15 @@ 11 => [ 1, 'bullet_max', '0 = no bullets, range 0-4.' ], 12 => [ 1, 'y_start', 'jumpman starting Y position' ], 13 => [ 1, 'x_start', 'jumpman starting X position' ], - 14 => [ 2, 'offs', 'points to $0600' ], + 14 => [ 1, 'fudge_x', 'fudge factor for bomb locations, always $00' ], + 15 => [ 1, 'fudge_y', 'fudge factor for bomb locations, always $06' ], 16 => [ 1, 'points_per_bomb', 'points awarded per bomb pickup (always $64 aka 100)' ], 17 => [ 2, 'time_bonus', 'amount of time bonus at start of level' ], 19 => [ 1, 'offs', 'always $00' ], 20 => [ 2, 'unkn_table0', 'pointer to ROM table or $06xx' ], 22 => [ 2, 'map0', 'map data' ], 24 => [ 2, 'map1', 'map data' ], - 26 => [ 2, 'map2', 'map data' ], + 26 => [ 2, 'bomblist', 'addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF.' ], 28 => [ 2, 'unkn_table1', 'unknown, pointer to a ROM table or $0000' ], 30 => [ 2, 'offs', 'always $0000' ], 32 => [ 2, 'sub_bomb', 'called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine' ], -- cgit v1.2.3