From 7885aa4fce3098dd1c8e9e9658dbe1cfbe99e013 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 5 Sep 2016 05:48:58 -0400 Subject: blackout, data_aac8 --- jumpmanjr.dasm | 17 +++++++++++------ jumpmanjr.info | 11 ++++++----- main.info | 11 ++++++----- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index b303023..a403754 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-09-05 05:15:49 +; Created: 2016-09-05 05:47:25 ; Input file: jumpmanjr.rom ; Page: 1 @@ -6281,7 +6281,7 @@ walls_sub3: rts ; AAC7 60 ` ; ---------------------------------------------------------------------------- -; non-map data, dunno what for. grouped with the level 5 stuff, but doesn't seem to be used by level 5 +; non-map data, dunno what for. grouped with the level 5 stuff, but doesn't seem to be used by level 5 (as in, playing thru level 5 in the emu with breakpoint 'read>=aac8 read<=aacf' never causes a break!) data_aac8: .byte $00,$09,$40,$45,$02,$58,$45,$02 ; AAC8 00 09 40 45 02 58 45 02 ..@E.XE. ; level map data starts here @@ -6651,6 +6651,7 @@ l09_bombs: l09_bombs_term: .byte $FF ; B0C3 FF . ; ---------------------------------------------------------------------------- +; sets screen memory to $1000 and draws l09_real_map there. bombs are handled specially as they're blanks in the map. blackout_init: jsr special_init_jv ; B0C4 20 36 80 6. lda #$10 ; B0C7 A9 10 .. @@ -6662,7 +6663,7 @@ blackout_init: sta dm_progctr+1 ; B0D4 85 C1 .. jsr draw_map_jv ; B0D6 20 00 80 .. ldx #$07 ; B0D9 A2 07 .. -LB0DB: lda LB119,x ; B0DB BD 19 B1 ... +LB0DB: lda map_one_bomb_minus_one,x ; B0DB BD 19 B1 ... sta $08FF,x ; B0DE 9D FF 08 ... dex ; B0E1 CA . bne LB0DB ; B0E2 D0 F7 .. @@ -6691,13 +6692,16 @@ LB0E8: lda RANDOM ; B0E8 AD 0A D2 jsr draw_map_jv ; B112 20 00 80 .. dec $AA ; B115 C6 AA .. bne LB0E8 ; B117 D0 CF .. -LB119: rts ; B119 60 ` +; 1-indexed +map_one_bomb_minus_one: + rts ; B119 60 ` ; ---------------------------------------------------------------------------- -; dunno what this is for yet -map_b11a: +; used by blackout, copied to RAM and modified ($00's replaced with actual X and Y coords of bomb) +map_one_bomb: .byte $FE,$B3,$9C,$00,$00,$01,$FF ; B11A FE B3 9C 00 00 01 FF ....... ; ---------------------------------------------------------------------------- +; make sure the user sees the bomb he's just picked up (?). at least 1 pixel of it already has to be visible, for collision detection to work. blackout_bomb_sub: lda #$10 ; B121 A9 10 .. sta SAVMSC+1 ; B123 85 59 .Y @@ -6716,6 +6720,7 @@ blackout_bomb_sub: rts ; B13F 60 ` ; ---------------------------------------------------------------------------- +; copies pixels from rendered real map at $1000 to visible screen memory at $3000, centered around jumpman's location blackout_sub0: lda falling_flag ; B140 AD 21 06 .!. bne LB146 ; B143 D0 01 .. diff --git a/jumpmanjr.info b/jumpmanjr.info index 1b62dee..ddc05c3 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -467,9 +467,9 @@ label { name "l09_map_bombs"; addr $b072; size $21; }; range { name "l09_bombs"; start $b0a3; end $b0c2; type bytetable; }; range { name "l09_bombs_term"; start $b0c3; end $b0c3; type bytetable; }; label { name "l09_map"; addr $b0a2; comment "blackout doesn't draw the map initially"; }; -label { name "blackout_bomb_sub"; addr $B121; }; -label { name "blackout_init"; addr $B0C4; }; -label { name "blackout_sub0"; addr $B140; }; +label { name "blackout_bomb_sub"; addr $B121; comment "make sure the user sees the bomb he's just picked up (?). at least 1 pixel of it already has to be visible, for collision detection to work."; }; +label { name "blackout_init"; addr $B0C4; comment "sets screen memory to $1000 and draws l09_real_map there. bombs are handled specially as they're blanks in the map."; }; +label { name "blackout_sub0"; addr $B140; comment "copies pixels from rendered real map at $1000 to visible screen memory at $3000, centered around jumpman's location"; }; label { name "herethere_sub0"; addr $B27E; }; label { name "herethere_sub3"; addr $B2E0; }; @@ -504,7 +504,7 @@ range { name "l12_map_changes"; start $b61a; end $b657; type bytetable; }; range { name "l12_unkn0"; start $b658; end $b690; type bytetable; }; range { name "walls_down_rope"; start $aa90; end $aabb; type bytetable; comment "map data for center down-rope, referenced by walls_bomb_sub"; }; -range { name "data_aac8"; start $aac8; end $aacf; type bytetable; comment "non-map data, dunno what for. grouped with the level 5 stuff, but doesn't seem to be used by level 5"; }; +range { name "data_aac8"; start $aac8; end $aacf; type bytetable; comment "non-map data, dunno what for. grouped with the level 5 stuff, but doesn't seem to be used by level 5 (as in, playing thru level 5 in the emu with breakpoint 'read>=aac8 read<=aacf' never causes a break!)"; }; label { name "walls_up_rope"; addr $aaa6; comment "map data for center up-rope, referenced walls_bomb_sub"; }; range { name "spellbound_table"; start $aea4; end $af0f; type bytetable; comment "used by spellbound, dunno exactly how yet"; }; range { name "sfx_letter_bonus"; start $AFCB; end $afff; type bytetable; comment "played once per correct letter at end of level08 (spellbound). trailing 00's are filler."; }; @@ -751,7 +751,8 @@ label { name "add_life_bonus"; addr $B83B; size 1; }; label { name "sfx_option_pressed"; addr $8ab0; size 1; }; label { name "play_opt_key_sfx"; addr $94BC; size 1; }; label { name "wait_opt_key_sfx"; addr $94CE; size 1; comment "wait until it's done playing"; }; -range { name "map_b11a"; start $B11A; end $b120; type bytetable; comment "dunno what this is for yet"; }; +label { name "map_one_bomb_minus_one"; addr $b119; comment "1-indexed"; }; +range { name "map_one_bomb"; start $B11A; end $b120; type bytetable; comment "used by blackout, copied to RAM and modified ($00's replaced with actual X and Y coords of bomb)"; }; label { name "block_char_minus_one"; addr $9e0f; size 1; comment "couple of places in the code try to write here"; }; label { name "position_players"; addr $82E9; size 1; comment "X counts down 5..1 (starts at 6, immediately decremented, and loop is done with 0). zp_temp1 is ZP pointer to the current player or missile being written to ($2f00..$2b00, or p3/p2/p1/p0/missiles)."; }; label { name "HPOSP0_minus_two"; addr $CFFE; size 1; }; diff --git a/main.info b/main.info index 1a5ea58..e3a4788 100644 --- a/main.info +++ b/main.info @@ -465,9 +465,9 @@ label { name "l09_map_bombs"; addr $b072; size $21; }; range { name "l09_bombs"; start $b0a3; end $b0c2; type bytetable; }; range { name "l09_bombs_term"; start $b0c3; end $b0c3; type bytetable; }; label { name "l09_map"; addr $b0a2; comment "blackout doesn't draw the map initially"; }; -label { name "blackout_bomb_sub"; addr $B121; }; -label { name "blackout_init"; addr $B0C4; }; -label { name "blackout_sub0"; addr $B140; }; +label { name "blackout_bomb_sub"; addr $B121; comment "make sure the user sees the bomb he's just picked up (?). at least 1 pixel of it already has to be visible, for collision detection to work."; }; +label { name "blackout_init"; addr $B0C4; comment "sets screen memory to $1000 and draws l09_real_map there. bombs are handled specially as they're blanks in the map."; }; +label { name "blackout_sub0"; addr $B140; comment "copies pixels from rendered real map at $1000 to visible screen memory at $3000, centered around jumpman's location"; }; label { name "herethere_sub0"; addr $B27E; }; label { name "herethere_sub3"; addr $B2E0; }; @@ -502,7 +502,7 @@ range { name "l12_map_changes"; start $b61a; end $b657; type bytetable; }; range { name "l12_unkn0"; start $b658; end $b690; type bytetable; }; range { name "walls_down_rope"; start $aa90; end $aabb; type bytetable; comment "map data for center down-rope, referenced by walls_bomb_sub"; }; -range { name "data_aac8"; start $aac8; end $aacf; type bytetable; comment "non-map data, dunno what for. grouped with the level 5 stuff, but doesn't seem to be used by level 5"; }; +range { name "data_aac8"; start $aac8; end $aacf; type bytetable; comment "non-map data, dunno what for. grouped with the level 5 stuff, but doesn't seem to be used by level 5 (as in, playing thru level 5 in the emu with breakpoint 'read>=aac8 read<=aacf' never causes a break!)"; }; label { name "walls_up_rope"; addr $aaa6; comment "map data for center up-rope, referenced walls_bomb_sub"; }; range { name "spellbound_table"; start $aea4; end $af0f; type bytetable; comment "used by spellbound, dunno exactly how yet"; }; range { name "sfx_letter_bonus"; start $AFCB; end $afff; type bytetable; comment "played once per correct letter at end of level08 (spellbound). trailing 00's are filler."; }; @@ -749,7 +749,8 @@ label { name "add_life_bonus"; addr $B83B; size 1; }; label { name "sfx_option_pressed"; addr $8ab0; size 1; }; label { name "play_opt_key_sfx"; addr $94BC; size 1; }; label { name "wait_opt_key_sfx"; addr $94CE; size 1; comment "wait until it's done playing"; }; -range { name "map_b11a"; start $B11A; end $b120; type bytetable; comment "dunno what this is for yet"; }; +label { name "map_one_bomb_minus_one"; addr $b119; comment "1-indexed"; }; +range { name "map_one_bomb"; start $B11A; end $b120; type bytetable; comment "used by blackout, copied to RAM and modified ($00's replaced with actual X and Y coords of bomb)"; }; label { name "block_char_minus_one"; addr $9e0f; size 1; comment "couple of places in the code try to write here"; }; label { name "position_players"; addr $82E9; size 1; comment "X counts down 5..1 (starts at 6, immediately decremented, and loop is done with 0). zp_temp1 is ZP pointer to the current player or missile being written to ($2f00..$2b00, or p3/p2/p1/p0/missiles)."; }; label { name "HPOSP0_minus_two"; addr $CFFE; size 1; }; -- cgit v1.2.3