From 2501dc4ecbfc45170a84503a90eb15f5770e6918 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Fri, 2 Sep 2016 00:00:39 -0400 Subject: bombs and level maps --- jumpmanjr.dasm | 529 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 350 insertions(+), 179 deletions(-) (limited to 'jumpmanjr.dasm') diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index 7da9faf..1d858f5 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-08-31 16:20:14 +; Created: 2016-09-01 23:57:51 ; Input file: jumpmanjr.rom ; Page: 1 @@ -108,17 +108,21 @@ work_level_points_per_bomb:= $0790 ; points awarded per bomb pickup 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_bomblist:= $079A ; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +work_level_map := $0796 ; used to draw the level initially (see also map_changes) +work_level_map_bombs:= $0798 ; start of bombs in map data (which must come last!) +work_level_bomblist:= $079A ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. work_level_map_changes:= $079C ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -work_level_offs_30:= $079E ; always $0000 +work_level_indirect_subs:= $079E ; pointer to list of indirect subs, always $0000 in this game work_level_sub_bomb:= $07A0 ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine work_level_sub_start:= $07A2 ; called at start of level, $06E6 for some levels, or else a ROM subroutine work_level_sub6 := $07A4 ; always $9740 aka game_main_loop work_level_sub_eol:= $07A6 ; called at end of level (all bombs picked up). $06E6 for all but level07 work_level_offs_40:= $07A8 ; all zeroes -work_level_offs_46:= $07AE ; unknown +work_level_colpf3:= $07AE ; color (not sure what gets drawn in this color yet) +work_level_colpf0:= $07AF ; color for girders and up-ropes +work_level_colpf1:= $07B0 ; color for ladders and down-ropes +work_level_colpf2:= $07B1 ; color for bombs +work_level_offs_50:= $07B2 ; unknown work_level_offs_55:= $07B7 ; unknown, always $00 $00 $00 work_level_offs_58:= $07BA ; unknown, not a ROM address work_level_offs_60:= $07BC ; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 @@ -137,17 +141,21 @@ cur_level_points_per_bomb:= $07D0 ; points awarded per bomb pickup 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_bomblist:= $07DA ; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +cur_level_map := $07D6 ; used to draw the level initially (see also map_changes) +cur_level_map_bombs:= $07D8 ; start of bombs in map data (which must come last!) +cur_level_bomblist:= $07DA ; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. cur_level_map_changes:= $07DC ; address of list of addresses of map data, used for changing the map when certain bombs are picked up -cur_level_offs_30:= $07DE ; always $0000 +cur_level_indirect_subs:= $07DE ; pointer to list of indirect subs, always $0000 in this game cur_level_sub_bomb:= $07E0 ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine cur_level_sub_start:= $07E2 ; called at start of level, $06E6 for some levels, or else a ROM subroutine cur_level_sub6 := $07E4 ; always $9740 aka game_main_loop cur_level_sub_eol:= $07E6 ; called at end of level (all bombs picked up). $06E6 for all but level07 cur_level_offs_40:= $07E8 ; all zeroes -cur_level_offs_46:= $07EE ; unknown +cur_level_colpf3:= $07EE ; color (not sure what gets drawn in this color yet) +cur_level_colpf0:= $07EF ; color for girders and up-ropes +cur_level_colpf1:= $07F0 ; color for ladders and down-ropes +cur_level_colpf2:= $07F1 ; color for bombs +cur_level_offs_50:= $07F2 ; unknown cur_level_offs_55:= $07F7 ; unknown, always $00 $00 $00 cur_level_offs_58:= $07FA ; unknown, not a ROM address cur_level_offs_60:= $07FC ; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 @@ -1294,8 +1302,8 @@ csm_loop: rts ; 8729 60 ` ; ---------------------------------------------------------------------------- -; clear P/M mem -clear_pm_mem: +; misc stuff, called from enable_joystick +prepare_level: lda #$09 ; 872A A9 09 .. sta player_speed ; 872C 8D 24 06 .$. ldx #$05 ; 872F A2 05 .. @@ -1351,7 +1359,7 @@ ej_loop:lda #$E6 ; 8777 A9 E6 stx joystick_disabled ; 8785 8E 32 06 .2. stx sfx_lock ; 8788 8E 2F 06 ./. stx work_level_bullet_max ; 878B 8E 8B 07 ... - jsr clear_pm_mem ; 878E 20 2A 87 *. + jsr prepare_level ; 878E 20 2A 87 *. jsr silence_audio ; 8791 20 5B 87 [. lda #$30 ; 8794 A9 30 .0 sta SAVMSC+1 ; 8796 85 59 .Y @@ -1359,7 +1367,7 @@ ej_loop:lda #$E6 ; 8777 A9 E6 set_prior: lda #$11 ; 8798 A9 11 .. sta PRIOR ; 879A 8D 1B D0 ... - jmp L88A8 ; 879D 4C A8 88 L.. + jmp clear_pm_mem ; 879D 4C A8 88 L.. ; ---------------------------------------------------------------------------- ; check whether Jumpman just touched a bomb (RTS if not) @@ -1370,7 +1378,7 @@ check_bomb_coll: rts ; 87A7 60 ` ; ---------------------------------------------------------------------------- -; 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 +; Jumpman just touched a bomb, award points, play sfx_bomb_pickup, make the bomb disappear, etc. bomb_pickup: lda player_x_pos ; 87A8 AD 7E 06 .~. clc ; 87AB 18 . @@ -1387,6 +1395,8 @@ bomb_pickup: lsr a ; 87BF 4A J ora bombloc ; 87C0 05 B6 .. sta bombloc ; 87C2 85 B6 .. +; screen X range approx $32 to $C6, Y $18 to $C0, meaning the coarse grid visible screen range is X 1-6, Y 0-6 +coarse_grid: lda work_level_bomblist ; 87C4 AD 9A 07 ... sta blistptr ; 87C7 85 B4 .. lda work_level_bomblist+1 ; 87C9 AD 9B 07 ... @@ -1408,9 +1418,9 @@ bl_ok: cmp bombloc ; 87D7 C5 B6 ; ---------------------------------------------------------------------------- bomb_found: - lda work_level_map1 ; 87E0 AD 98 07 ... + lda work_level_map_bombs ; 87E0 AD 98 07 ... sta $B0 ; 87E3 85 B0 .. - lda work_level_map1+1 ; 87E5 AD 99 07 ... + lda work_level_map_bombs+1 ; 87E5 AD 99 07 ... sta $B1 ; 87E8 85 B1 .. ; multiply Y by 1.5 (only works because Y will always be even at this point) mul_y: tya ; 87EA 98 . @@ -1419,8 +1429,9 @@ mul_y: tya ; 87EA 98 clc ; 87EE 18 . adc $B2 ; 87EF 65 B2 e. tay ; 87F1 A8 . -; find out: why are we storing this at 06DC? -unkn1: lda ($B0),y ; 87F2 B1 B0 .. +; store actual bomb coordinates (not the coarse ones) for bomb subs to use +store_bomb_coords: + lda ($B0),y ; 87F2 B1 B0 .. sta $06DC ; 87F4 8D DC 06 ... iny ; 87F7 C8 . lda ($B0),y ; 87F8 B1 B0 .. @@ -1441,7 +1452,7 @@ unkn1: lda ($B0),y ; 87F2 B1 B0 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) +; some bombs redraw parts of the level (e.g. disappearing platforms on level00) change_map: lda work_level_map_changes ; 881B AD 9C 07 ... sta $B0 ; 881E 85 B0 .. @@ -1465,9 +1476,9 @@ check_ind_sub: 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 ... + lda work_level_indirect_subs ; 883E AD 9E 07 ... sta $B0 ; 8841 85 B0 .. - lda work_level_offs_30+1 ; 8843 AD 9F 07 ... + lda work_level_indirect_subs+1 ; 8843 AD 9F 07 ... sta $B1 ; 8846 85 B1 .. lda ($B0),y ; 8848 B1 B0 .. sta $06E4 ; 884A 8D E4 06 ... @@ -1501,9 +1512,11 @@ erase_bomb: jsr draw_map_jv ; 8881 20 00 80 .. jsr update_score_display_jv ; 8884 20 0C 80 .. dec work_level_num_bombs ; 8887 CE 8A 07 ... -L888A: lda collision_save+4 ; 888A AD B4 06 ... +; wait for bomb to really disappear +wait_bomb: + lda collision_save+4 ; 888A AD B4 06 ... and #$04 ; 888D 29 04 ). - bne L888A ; 888F D0 F9 .. + bne wait_bomb ; 888F D0 F9 .. rts ; 8891 60 ` ; ---------------------------------------------------------------------------- @@ -1513,15 +1526,18 @@ sfx_bomb_pickup: .byte $03,$28,$03,$1E,$03,$28,$03,$1E ; 889A 03 28 03 1E 03 28 03 1E .(...(.. .byte $03,$28,$03,$00,$00,$00 ; 88A2 03 28 03 00 00 00 .(.... ; ---------------------------------------------------------------------------- -L88A8: ldx #$00 ; 88A8 A2 00 .. +; clear P/M memory, called from enable_joystick +clear_pm_mem: + ldx #$00 ; 88A8 A2 00 .. txa ; 88AA 8A . -L88AB: sta $2B00,x ; 88AB 9D 00 2B ..+ +clr_loop: + sta $2B00,x ; 88AB 9D 00 2B ..+ sta $2C00,x ; 88AE 9D 00 2C .., sta $2D00,x ; 88B1 9D 00 2D ..- sta $2E00,x ; 88B4 9D 00 2E ... sta $2F00,x ; 88B7 9D 00 2F ../ dex ; 88BA CA . - bne L88AB ; 88BB D0 EE .. + bne clr_loop ; 88BB D0 EE .. rts ; 88BD 60 ` ; ---------------------------------------------------------------------------- @@ -3183,9 +3199,9 @@ setup_get_ready_dl: lda #$96 ; 9659 A9 96 .. sta work_level_sub0+1 ; 965B 8D 83 07 ... jsr clear_screen_mem_jv ; 965E 20 1E 80 .. - lda cur_level_map0 ; 9661 AD D6 07 ... + lda cur_level_map ; 9661 AD D6 07 ... sta dm_progctr ; 9664 85 C0 .. - lda cur_level_map0+1 ; 9666 AD D7 07 ... + lda cur_level_map+1 ; 9666 AD D7 07 ... sta dm_progctr+1 ; 9669 85 C1 .. jsr draw_map_jv ; 966B 20 00 80 .. L966E: lda jiffy_timer_2 ; 966E AD 1B 06 ... @@ -3207,13 +3223,13 @@ copy_level_desc_2: lda #$00 ; 9691 A9 00 .. sta COLOR4 ; 9693 8D C8 02 ... sta $06AB ; 9696 8D AB 06 ... - lda work_level_offs_46+1 ; 9699 AD AF 07 ... + lda work_level_colpf0 ; 9699 AD AF 07 ... sta COLOR0 ; 969C 8D C4 02 ... - lda work_level_offs_46+2 ; 969F AD B0 07 ... + lda work_level_colpf1 ; 969F AD B0 07 ... sta COLOR1 ; 96A2 8D C5 02 ... - lda work_level_offs_46+3 ; 96A5 AD B1 07 ... + lda work_level_colpf2 ; 96A5 AD B1 07 ... sta COLOR2 ; 96A8 8D C6 02 ... - lda work_level_offs_46 ; 96AB AD AE 07 ... + lda work_level_colpf3 ; 96AB AD AE 07 ... sta COLOR3 ; 96AE 8D C7 02 ... jsr setup_gameboard_dlist_jv ; 96B1 20 15 80 .. inc $06F5 ; 96B4 EE F5 06 ... @@ -3570,7 +3586,7 @@ L9949: lda player_x_pos ; 9949 AD 7E 06 sbc #$30 ; 994D E9 30 .0 sta zp_temp1 ; 994F 85 CB .. ldx #$08 ; 9951 A2 08 .. -L9953: lda work_level_offs_46+3,x ; 9953 BD B1 07 ... +L9953: lda work_level_colpf2,x ; 9953 BD B1 07 ... clc ; 9956 18 . adc #$02 ; 9957 69 02 i. cmp zp_temp1 ; 9959 C5 CB .. @@ -3585,7 +3601,7 @@ L9967: clc ; 9967 18 rts ; 9968 60 ` ; ---------------------------------------------------------------------------- -L9969: lda work_level_offs_46+3,x ; 9969 BD B1 07 ... +L9969: lda work_level_colpf2,x ; 9969 BD B1 07 ... clc ; 996C 18 . adc #$30 ; 996D 69 30 i0 sec ; 996F 38 8 @@ -4201,21 +4217,21 @@ level00_offs_19: ; pointer to ROM table or $06xx level00_unkn_table0: .addr L06DF ; A014 DF 06 .. -; map data -level00_map0: - .addr level00_map ; A016 00 A3 .. -; map data -level00_map1: - .addr LA366 ; A018 66 A3 f. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; used to draw the level initially (see also map_changes) +level00_map: + .addr l00_map ; A016 00 A3 .. +; start of bombs in map data (which must come last!) +level00_map_bombs: + .addr l00_map_bombs ; A018 66 A3 f. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level00_bomblist: - .addr LA38B ; A01A 8B A3 .. + .addr l00_bombs ; A01A 8B A3 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level00_map_changes: - .addr LA3A4 ; A01C A4 A3 .. + .addr l00_map_changes ; A01C A4 A3 .. ; ---------------------------------------------------------------------------- -; always $0000 -level00_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level00_indirect_subs: .byte $00,$00 ; A01E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4234,10 +4250,21 @@ level00_sub_eol: ; all zeroes level00_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A028 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level00_colpf3: + .byte $CA ; A02E CA . +; color for girders and up-ropes +level00_colpf0: + .byte $96 ; A02F 96 . +; color for ladders and down-ropes +level00_colpf1: + .byte $18 ; A030 18 . +; color for bombs +level00_colpf2: + .byte $5A ; A031 5A Z ; unknown -level00_offs_46: - .byte $CA,$96,$18,$5A,$0C,$24,$4C,$74 ; A02E CA 96 18 5A 0C 24 4C 74 ...Z.$Lt - .byte $8C ; A036 8C . +level00_offs_50: + .byte $0C,$24,$4C,$74,$8C ; A032 0C 24 4C 74 8C .$Lt. ; unknown, always $00 $00 $00 level00_offs_55: .byte $00,$00,$00 ; A037 00 00 00 ... @@ -4297,21 +4324,21 @@ level01_offs_19: ; pointer to ROM table or $06xx level01_unkn_table0: .addr LA5C2 ; A054 C2 A5 .. -; map data -level01_map0: - .addr LA3E0 ; A056 E0 A3 .. -; map data -level01_map1: +; used to draw the level initially (see also map_changes) +level01_map: + .addr l01_map ; A056 E0 A3 .. +; start of bombs in map data (which must come last!) +level01_map_bombs: .addr LA446 ; A058 46 A4 F. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level01_bomblist: .addr LA477 ; A05A 77 A4 w. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level01_map_changes: .addr L0000 ; A05C 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level01_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level01_indirect_subs: .byte $00,$00 ; A05E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4330,10 +4357,21 @@ level01_sub_eol: ; all zeroes level01_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A068 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level01_colpf3: + .byte $6A ; A06E 6A j +; color for girders and up-ropes +level01_colpf0: + .byte $08 ; A06F 08 . +; color for ladders and down-ropes +level01_colpf1: + .byte $C6 ; A070 C6 . +; color for bombs +level01_colpf2: + .byte $1A ; A071 1A . ; unknown -level01_offs_46: - .byte $6A,$08,$C6,$1A,$18,$4C,$80,$00 ; A06E 6A 08 C6 1A 18 4C 80 00 j....L.. - .byte $00 ; A076 00 . +level01_offs_50: + .byte $18,$4C,$80,$00,$00 ; A072 18 4C 80 00 00 .L... ; unknown, always $00 $00 $00 level01_offs_55: .byte $00,$00,$00 ; A077 00 00 00 ... @@ -4393,21 +4431,21 @@ level02_offs_19: ; pointer to ROM table or $06xx level02_unkn_table0: .addr LA66D ; A094 6D A6 m. -; map data -level02_map0: +; used to draw the level initially (see also map_changes) +level02_map: .addr LA5F0 ; A096 F0 A5 .. -; map data -level02_map1: +; start of bombs in map data (which must come last!) +level02_map_bombs: .addr LA62F ; A098 2F A6 /. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level02_bomblist: .addr LA654 ; A09A 54 A6 T. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level02_map_changes: .addr L0000 ; A09C 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level02_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level02_indirect_subs: .byte $00,$00 ; A09E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4426,10 +4464,21 @@ level02_sub_eol: ; all zeroes level02_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A0A8 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level02_colpf3: + .byte $1A ; A0AE 1A . +; color for girders and up-ropes +level02_colpf0: + .byte $C6 ; A0AF C6 . +; color for ladders and down-ropes +level02_colpf1: + .byte $96 ; A0B0 96 . +; color for bombs +level02_colpf2: + .byte $1A ; A0B1 1A . ; unknown -level02_offs_46: - .byte $1A,$C6,$96,$1A,$0C,$8C,$00,$00 ; A0AE 1A C6 96 1A 0C 8C 00 00 ........ - .byte $00 ; A0B6 00 . +level02_offs_50: + .byte $0C,$8C,$00,$00,$00 ; A0B2 0C 8C 00 00 00 ..... ; unknown, always $00 $00 $00 level02_offs_55: .byte $00,$00,$00 ; A0B7 00 00 00 ... @@ -4489,21 +4538,21 @@ level03_offs_19: ; pointer to ROM table or $06xx level03_unkn_table0: .addr L06DF ; A0D4 DF 06 .. -; map data -level03_map0: +; used to draw the level initially (see also map_changes) +level03_map: .addr LA790 ; A0D6 90 A7 .. -; map data -level03_map1: +; start of bombs in map data (which must come last!) +level03_map_bombs: .addr LA7D5 ; A0D8 D5 A7 .. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level03_bomblist: .addr LA806 ; A0DA 06 A8 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level03_map_changes: .addr L0000 ; A0DC 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level03_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level03_indirect_subs: .byte $00,$00 ; A0DE 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4522,10 +4571,21 @@ level03_sub_eol: ; all zeroes level03_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A0E8 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level03_colpf3: + .byte $CA ; A0EE CA . +; color for girders and up-ropes +level03_colpf0: + .byte $96 ; A0EF 96 . +; color for ladders and down-ropes +level03_colpf1: + .byte $18 ; A0F0 18 . +; color for bombs +level03_colpf2: + .byte $5A ; A0F1 5A Z ; unknown -level03_offs_46: - .byte $CA,$96,$18,$5A,$4C,$18,$2C,$80 ; A0EE CA 96 18 5A 4C 18 2C 80 ...ZL.,. - .byte $6C ; A0F6 6C l +level03_offs_50: + .byte $4C,$18,$2C,$80,$6C ; A0F2 4C 18 2C 80 6C L.,.l ; unknown, always $00 $00 $00 level03_offs_55: .byte $00,$00,$00 ; A0F7 00 00 00 ... @@ -4585,21 +4645,21 @@ level04_offs_19: ; pointer to ROM table or $06xx level04_unkn_table0: .addr L06DF ; A114 DF 06 .. -; map data -level04_map0: +; used to draw the level initially (see also map_changes) +level04_map: .addr LAAD0 ; A116 D0 AA .. -; map data -level04_map1: +; start of bombs in map data (which must come last!) +level04_map_bombs: .addr LAB42 ; A118 42 AB B. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level04_bomblist: .addr LAB6D ; A11A 6D AB m. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level04_map_changes: .addr LAB8A ; A11C 8A AB .. ; ---------------------------------------------------------------------------- -; always $0000 -level04_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level04_indirect_subs: .byte $00,$00 ; A11E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4618,10 +4678,21 @@ level04_sub_eol: ; all zeroes level04_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A128 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level04_colpf3: + .byte $6A ; A12E 6A j +; color for girders and up-ropes +level04_colpf0: + .byte $08 ; A12F 08 . +; color for ladders and down-ropes +level04_colpf1: + .byte $C6 ; A130 C6 . +; color for bombs +level04_colpf2: + .byte $1A ; A131 1A . ; unknown -level04_offs_46: - .byte $6A,$08,$C6,$1A,$0C,$22,$84,$8E ; A12E 6A 08 C6 1A 0C 22 84 8E j....".. - .byte $00 ; A136 00 . +level04_offs_50: + .byte $0C,$22,$84,$8E,$00 ; A132 0C 22 84 8E 00 ."... ; unknown, always $00 $00 $00 level04_offs_55: .byte $00,$00,$00 ; A137 00 00 00 ... @@ -4681,21 +4752,21 @@ level05_offs_19: ; pointer to ROM table or $06xx level05_unkn_table0: .addr L06DF ; A154 DF 06 .. -; map data -level05_map0: +; used to draw the level initially (see also map_changes) +level05_map: .addr LA920 ; A156 20 A9 . -; map data -level05_map1: +; start of bombs in map data (which must come last!) +level05_map_bombs: .addr LA974 ; A158 74 A9 t. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level05_bomblist: .addr LA9A5 ; A15A A5 A9 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level05_map_changes: .addr L0000 ; A15C 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level05_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level05_indirect_subs: .byte $00,$00 ; A15E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4714,10 +4785,21 @@ level05_sub_eol: ; all zeroes level05_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A168 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level05_colpf3: + .byte $56 ; A16E 56 V +; color for girders and up-ropes +level05_colpf0: + .byte $C6 ; A16F C6 . +; color for ladders and down-ropes +level05_colpf1: + .byte $96 ; A170 96 . +; color for bombs +level05_colpf2: + .byte $28 ; A171 28 ( ; unknown -level05_offs_46: - .byte $56,$C6,$96,$28,$04,$30,$68,$94 ; A16E 56 C6 96 28 04 30 68 94 V..(.0h. - .byte $00 ; A176 00 . +level05_offs_50: + .byte $04,$30,$68,$94,$00 ; A172 04 30 68 94 00 .0h.. ; unknown, always $00 $00 $00 level05_offs_55: .byte $00,$00,$00 ; A177 00 00 00 ... @@ -4777,21 +4859,21 @@ level06_offs_19: ; pointer to ROM table or $06xx level06_unkn_table0: .addr L06DF ; A194 DF 06 .. -; map data -level06_map0: +; used to draw the level initially (see also map_changes) +level06_map: .addr LAC60 ; A196 60 AC `. -; map data -level06_map1: +; start of bombs in map data (which must come last!) +level06_map_bombs: .addr LACBA ; A198 BA AC .. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level06_bomblist: .addr LACE5 ; A19A E5 AC .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level06_map_changes: .addr LAD02 ; A19C 02 AD .. ; ---------------------------------------------------------------------------- -; always $0000 -level06_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level06_indirect_subs: .byte $00,$00 ; A19E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4810,10 +4892,21 @@ level06_sub_eol: ; all zeroes level06_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A1A8 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level06_colpf3: + .byte $CA ; A1AE CA . +; color for girders and up-ropes +level06_colpf0: + .byte $96 ; A1AF 96 . +; color for ladders and down-ropes +level06_colpf1: + .byte $18 ; A1B0 18 . +; color for bombs +level06_colpf2: + .byte $5A ; A1B1 5A Z ; unknown -level06_offs_46: - .byte $CA,$96,$18,$5A,$0C,$4C,$8C,$00 ; A1AE CA 96 18 5A 0C 4C 8C 00 ...Z.L.. - .byte $00 ; A1B6 00 . +level06_offs_50: + .byte $0C,$4C,$8C,$00,$00 ; A1B2 0C 4C 8C 00 00 .L... ; unknown, always $00 $00 $00 level06_offs_55: .byte $00,$00,$00 ; A1B7 00 00 00 ... @@ -4873,21 +4966,21 @@ level07_offs_19: ; pointer to ROM table or $06xx level07_unkn_table0: .addr LAE8A ; A1D4 8A AE .. -; map data -level07_map0: +; used to draw the level initially (see also map_changes) +level07_map: .addr LADE0 ; A1D6 E0 AD .. -; map data -level07_map1: +; start of bombs in map data (which must come last!) +level07_map_bombs: .addr LAE4C ; A1D8 4C AE L. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level07_bomblist: .addr LAE71 ; A1DA 71 AE q. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level07_map_changes: .addr L0000 ; A1DC 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level07_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level07_indirect_subs: .byte $00,$00 ; A1DE 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -4906,10 +4999,21 @@ level07_sub_eol: ; all zeroes level07_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A1E8 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level07_colpf3: + .byte $6A ; A1EE 6A j +; color for girders and up-ropes +level07_colpf0: + .byte $08 ; A1EF 08 . +; color for ladders and down-ropes +level07_colpf1: + .byte $C6 ; A1F0 C6 . +; color for bombs +level07_colpf2: + .byte $1A ; A1F1 1A . ; unknown -level07_offs_46: - .byte $6A,$08,$C6,$1A,$0C,$30,$68,$8C ; A1EE 6A 08 C6 1A 0C 30 68 8C j....0h. - .byte $00 ; A1F6 00 . +level07_offs_50: + .byte $0C,$30,$68,$8C,$00 ; A1F2 0C 30 68 8C 00 .0h.. ; unknown, always $00 $00 $00 level07_offs_55: .byte $00,$00,$00 ; A1F7 00 00 00 ... @@ -4969,21 +5073,21 @@ level08_offs_19: ; pointer to ROM table or $06xx level08_unkn_table0: .addr L06DF ; A214 DF 06 .. -; map data -level08_map0: +; used to draw the level initially (see also map_changes) +level08_map: .addr LB0A2 ; A216 A2 B0 .. -; map data -level08_map1: +; start of bombs in map data (which must come last!) +level08_map_bombs: .addr LB072 ; A218 72 B0 r. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level08_bomblist: .addr LB0A3 ; A21A A3 B0 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level08_map_changes: .addr L0000 ; A21C 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level08_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level08_indirect_subs: .byte $00,$00 ; A21E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -5002,10 +5106,21 @@ level08_sub_eol: ; all zeroes level08_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A228 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level08_colpf3: + .byte $1A ; A22E 1A . +; color for girders and up-ropes +level08_colpf0: + .byte $C6 ; A22F C6 . +; color for ladders and down-ropes +level08_colpf1: + .byte $96 ; A230 96 . +; color for bombs +level08_colpf2: + .byte $28 ; A231 28 ( ; unknown -level08_offs_46: - .byte $1A,$C6,$96,$28,$0C,$3C,$00,$00 ; A22E 1A C6 96 28 0C 3C 00 00 ...(.<.. - .byte $8C ; A236 8C . +level08_offs_50: + .byte $0C,$3C,$00,$00,$8C ; A232 0C 3C 00 00 8C .<... ; unknown, always $00 $00 $00 level08_offs_55: .byte $00,$00,$00 ; A237 00 00 00 ... @@ -5065,21 +5180,21 @@ level09_offs_19: ; pointer to ROM table or $06xx level09_unkn_table0: .addr LB275 ; A254 75 B2 u. -; map data -level09_map0: +; used to draw the level initially (see also map_changes) +level09_map: .addr LB1E0 ; A256 E0 B1 .. -; map data -level09_map1: +; start of bombs in map data (which must come last!) +level09_map_bombs: .addr LB237 ; A258 37 B2 7. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level09_bomblist: .addr LB25C ; A25A 5C B2 \. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level09_map_changes: .addr L0000 ; A25C 00 00 .. ; ---------------------------------------------------------------------------- -; always $0000 -level09_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level09_indirect_subs: .byte $00,$00 ; A25E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -5098,10 +5213,21 @@ level09_sub_eol: ; all zeroes level09_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A268 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level09_colpf3: + .byte $CA ; A26E CA . +; color for girders and up-ropes +level09_colpf0: + .byte $96 ; A26F 96 . +; color for ladders and down-ropes +level09_colpf1: + .byte $18 ; A270 18 . +; color for bombs +level09_colpf2: + .byte $5A ; A271 5A Z ; unknown -level09_offs_46: - .byte $CA,$96,$18,$5A,$0C,$40,$8C,$00 ; A26E CA 96 18 5A 0C 40 8C 00 ...Z.@.. - .byte $00 ; A276 00 . +level09_offs_50: + .byte $0C,$40,$8C,$00,$00 ; A272 0C 40 8C 00 00 .@... ; unknown, always $00 $00 $00 level09_offs_55: .byte $00,$00,$00 ; A277 00 00 00 ... @@ -5161,21 +5287,21 @@ level10_offs_19: ; pointer to ROM table or $06xx level10_unkn_table0: .addr data_table_b50b ; A294 0B B5 .. -; map data -level10_map0: +; used to draw the level initially (see also map_changes) +level10_map: .addr LB320 ; A296 20 B3 . -; map data -level10_map1: +; start of bombs in map data (which must come last!) +level10_map_bombs: .addr LB38F ; A298 8F B3 .. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level10_bomblist: .addr LB3BD ; A29A BD B3 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level10_map_changes: .addr LB3DC ; A29C DC B3 .. ; ---------------------------------------------------------------------------- -; always $0000 -level10_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level10_indirect_subs: .byte $00,$00 ; A29E 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -5194,10 +5320,21 @@ level10_sub_eol: ; all zeroes level10_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A2A8 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level10_colpf3: + .byte $6A ; A2AE 6A j +; color for girders and up-ropes +level10_colpf0: + .byte $08 ; A2AF 08 . +; color for ladders and down-ropes +level10_colpf1: + .byte $C6 ; A2B0 C6 . +; color for bombs +level10_colpf2: + .byte $1A ; A2B1 1A . ; unknown -level10_offs_46: - .byte $6A,$08,$C6,$1A,$0C,$30,$54,$8C ; A2AE 6A 08 C6 1A 0C 30 54 8C j....0T. - .byte $00 ; A2B6 00 . +level10_offs_50: + .byte $0C,$30,$54,$8C,$00 ; A2B2 0C 30 54 8C 00 .0T.. ; unknown, always $00 $00 $00 level10_offs_55: .byte $00,$00,$00 ; A2B7 00 00 00 ... @@ -5257,21 +5394,21 @@ level11_offs_19: ; pointer to ROM table or $06xx level11_unkn_table0: .addr LB658 ; A2D4 58 B6 X. -; map data -level11_map0: +; used to draw the level initially (see also map_changes) +level11_map: .addr data_b590 ; A2D6 90 B5 .. -; map data -level11_map1: +; start of bombs in map data (which must come last!) +level11_map_bombs: .addr LB5D2 ; A2D8 D2 B5 .. -; addr of list of bombs, indexed by player position on coarse 8x8 grid. terminated by $FF. +; addr of list of bombs, indexed by player position on coarse 8x8 grid. 2 bytes each, 1st is coarse-grid position, 2nd is: hi 4 bits = change_map index, lo 4 = indirect sub (unused). terminated by $FF. level11_bomblist: .addr LB5FD ; A2DA FD B5 .. ; address of list of addresses of map data, used for changing the map when certain bombs are picked up level11_map_changes: .addr LB61A ; A2DC 1A B6 .. ; ---------------------------------------------------------------------------- -; always $0000 -level11_offs_30: +; pointer to list of indirect subs, always $0000 in this game +level11_indirect_subs: .byte $00,$00 ; A2DE 00 00 .. ; ---------------------------------------------------------------------------- ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine @@ -5290,10 +5427,21 @@ level11_sub_eol: ; all zeroes level11_offs_40: .byte $00,$00,$00,$00,$00,$00 ; A2E8 00 00 00 00 00 00 ...... +; color (not sure what gets drawn in this color yet) +level11_colpf3: + .byte $08 ; A2EE 08 . +; color for girders and up-ropes +level11_colpf0: + .byte $C6 ; A2EF C6 . +; color for ladders and down-ropes +level11_colpf1: + .byte $96 ; A2F0 96 . +; color for bombs +level11_colpf2: + .byte $28 ; A2F1 28 ( ; unknown -level11_offs_46: - .byte $08,$C6,$96,$28,$0C,$2A,$4C,$6A ; A2EE 08 C6 96 28 0C 2A 4C 6A ...(.*Lj - .byte $8C ; A2F6 8C . +level11_offs_50: + .byte $0C,$2A,$4C,$6A,$8C ; A2F2 0C 2A 4C 6A 8C .*Lj. ; unknown, always $00 $00 $00 level11_offs_55: .byte $00,$00,$00 ; A2F7 00 00 00 ... @@ -5304,8 +5452,7 @@ level11_offs_58: level11_offs_60: .byte $00,$00,$00,$00 ; A2FC 00 00 00 00 .... ; level map data starts here -level00_map: - .byte $FE,$33,$9C,$FD,$04,$00,$44,$05 ; A300 FE 33 9C FD 04 00 44 05 .3....D. +l00_map:.byte $FE,$33,$9C,$FD,$04,$00,$44,$05 ; A300 FE 33 9C FD 04 00 44 05 .3....D. .byte $06,$04,$15,$0A,$74,$15,$0A,$24 ; A308 06 04 15 0A 74 15 0A 24 ....t..$ .byte $22,$02,$74,$22,$02,$24,$25,$16 ; A310 22 02 74 22 02 24 25 16 ".t".$%. .byte $04,$45,$04,$44,$45,$06,$8C,$45 ; A318 04 45 04 44 45 06 8C 45 .E.DE..E @@ -5318,24 +5465,48 @@ level00_map: .byte $15,$FE,$C9,$9C,$06,$18,$0A,$99 ; A350 15 FE C9 9C 06 18 0A 99 ........ .byte $18,$0A,$FE,$DA,$9C,$1D,$38,$06 ; A358 18 0A FE DA 9C 1D 38 06 ......8. .byte $81,$38,$06,$FE,$B3,$9C ; A360 81 38 06 FE B3 9C .8.... -LA366: .byte $04,$12,$01,$38,$02,$01,$64,$02 ; A366 04 12 01 38 02 01 64 02 ...8..d. +; gfx_draw instructions for bombs, used by bomb_pickup to get bomb coords. $ff terminated +l00_map_bombs: + .byte $04,$12,$01,$38,$02,$01,$64,$02 ; A366 04 12 01 38 02 01 64 02 ...8..d. .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.. .. +; 2 bytes per entry, terminated by $FF. 1st byte is coarse grid coords (top nybble = X, bottom = Y), 2nd byte is index into map_changes +l00_bombs: + .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..... +; terminator for l00_bombs +l00_bombs_term: .byte $FF ; A3A3 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.. - .byte $04,$FF,$34,$09,$02,$FF,$FE,$49 ; A3BC 04 FF 34 09 02 FF FE 49 ..4....I - .byte $9C,$FD,$04,$00,$2C,$25,$05,$FF ; A3C4 9C FD 04 00 2C 25 05 FF ....,%.. +; ---------------------------------------------------------------------------- +; 0000 = no change +l00_map_changes: + .addr L0000 ; A3A4 00 00 .. + .addr l00_map_change_0 ; A3A6 AE A3 .. + .addr l00_map_change_1 ; A3A8 B8 A3 .. + .addr l00_map_change_2 ; A3AA C2 A3 .. + .addr l00_map_change_3 ; A3AC CC A3 .. +; ---------------------------------------------------------------------------- +l00_map_change_0: + .byte $FE,$49,$9C,$FD,$04,$01,$64,$08 ; A3AE FE 49 9C FD 04 01 64 08 .I....d. + .byte $02,$FF ; A3B6 02 FF .. +l00_map_change_1: + .byte $FE,$49,$9C,$FD,$04,$FF,$34,$09 ; A3B8 FE 49 9C FD 04 FF 34 09 .I....4. + .byte $02,$FF ; A3C0 02 FF .. +l00_map_change_2: + .byte $FE,$49,$9C,$FD,$04,$00,$2C,$25 ; A3C2 FE 49 9C FD 04 00 2C 25 .I....,% + .byte $05,$FF ; A3CA 05 FF .. +l00_map_change_3: .byte $FE,$49,$9C,$FD,$04,$00,$60,$25 ; A3CC FE 49 9C FD 04 00 60 25 .I....`% - .byte $05,$FF,$00,$00,$00,$00,$00,$00 ; A3D4 05 FF 00 00 00 00 00 00 ........ - .byte $00,$00,$00,$00 ; A3DC 00 00 00 00 .... -LA3E0: .byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A3E0 FE 33 9C FD 04 00 04 05 .3...... + .byte $05,$FF ; A3D4 05 FF .. +; probably just filler +zero_filler_a3d6: + .byte $00,$00,$00,$00,$00,$00,$00,$00 ; A3D6 00 00 00 00 00 00 00 00 ........ + .byte $00,$00 ; A3DE 00 00 .. +; level map data starts here +l01_map:.byte $FE,$33,$9C,$FD,$04,$00,$04,$05 ; A3E0 FE 33 9C FD 04 00 04 05 .3...... .byte $08,$34,$05,$0E,$7C,$05,$08,$14 ; A3E8 08 34 05 0E 7C 05 08 14 .4..|... .byte $15,$04,$34,$15,$04,$5C,$15,$04 ; A3F0 15 04 34 15 04 5C 15 04 ..4..\.. .byte $7C,$15,$04,$04,$25,$10,$5C,$25 ; A3F8 7C 15 04 04 25 10 5C 25 |...%.\% @@ -7063,9 +7234,9 @@ LBA00: lda #$40 ; BA00 A9 40 lda #$30 ; BA13 A9 30 .0 sta SAVMSC+1 ; BA15 85 59 .Y jsr clear_screen_mem_jv ; BA17 20 1E 80 .. - lda cur_level_map0 ; BA1A AD D6 07 ... + lda cur_level_map ; BA1A AD D6 07 ... sta dm_progctr ; BA1D 85 C0 .. - lda cur_level_map0+1 ; BA1F AD D7 07 ... + lda cur_level_map+1 ; BA1F AD D7 07 ... sta dm_progctr+1 ; BA22 85 C1 .. jsr draw_map_jv ; BA24 20 00 80 .. lda #$30 ; BA27 A9 30 .0 @@ -7111,13 +7282,13 @@ show_level_name: ; level is already drawn with all color regs set to black. for each color reg, wait 1 sec before turning it visible. this syncs up with the music because the music was written to sync with this actually sync_to_music: jsr wait_1_sec ; BA71 20 9E BA .. - lda cur_level_offs_46+3 ; BA74 AD F1 07 ... + lda cur_level_colpf2 ; BA74 AD F1 07 ... sta COLOR2 ; BA77 8D C6 02 ... jsr wait_1_sec ; BA7A 20 9E BA .. - lda cur_level_offs_46+2 ; BA7D AD F0 07 ... + lda cur_level_colpf1 ; BA7D AD F0 07 ... sta COLOR1 ; BA80 8D C5 02 ... jsr wait_1_sec ; BA83 20 9E BA .. - lda cur_level_offs_46+1 ; BA86 AD EF 07 ... + lda cur_level_colpf0 ; BA86 AD EF 07 ... sta COLOR0 ; BA89 8D C4 02 ... jsr wait_1_sec ; BA8C 20 9E BA .. lda #$00 ; BA8F A9 00 .. @@ -7252,7 +7423,7 @@ LBC5E: lda jiffy_timer_1 ; BC5E AD 1A 06 lda #$BD ; BC88 A9 BD .. sta work_level_sub1+1 ; BC8A 8D 85 07 ... lda #$4C ; BC8D A9 4C .L - sta work_level_offs_46+7 ; BC8F 8D B5 07 ... + sta work_level_offs_50+3 ; BC8F 8D B5 07 ... ; wait for score screen to finish (I think, anyway) wd_wait_scores: lda work_level_sub1 ; BC92 AD 84 07 ... -- cgit v1.2.3