aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jumpmanjr.dasm17
-rw-r--r--jumpmanjr.info11
-rw-r--r--main.info11
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; };