aboutsummaryrefslogtreecommitdiff
path: root/main.info
diff options
context:
space:
mode:
Diffstat (limited to 'main.info')
-rw-r--r--main.info51
1 files changed, 29 insertions, 22 deletions
diff --git a/main.info b/main.info
index 057cf17..ca1123d 100644
--- a/main.info
+++ b/main.info
@@ -135,7 +135,6 @@ label { name "ltr_loop"; addr $AF6D; };
label { name "ltr_delay"; addr $AF86; comment "wait approx 1/3 second so user can see what happened"; };
label { name "ltr_wait"; addr $AF8B; };
label { name "ltr_skip"; addr $AF92; };
-label { name "epyx_jumpman"; addr $AEAF; comment "letters for level08, spellbound (not ASCII or screencodes though)"; };
label { name "init_level"; addr $9682; comment "call start subroutine for current level"; };
label { name "set_level_colors"; addr $9691; comment "set color regs from level descriptor (COLOR4 always $00, black)"; };
@@ -170,6 +169,7 @@ label { name "number_names_2"; addr $95e5; size 4; comment "N W R O"
label { name "number_names_3"; addr $95e9; size 4; comment "E O E U"; };
label { name "number_names_4"; addr $95ed; size 4; comment "space space E R"; };
label { name "sfx_select_key"; addr $95f1; comment "played when select key pressed, 4 notes, descending"; };
+label { name "unknown_95fd"; addr $95fd; comment "not sure what (if anything) reads this, it might be filler. it isn't valid 6502 code."; };
label { name "set_dma_ctl"; addr $838F; comment "std playfield, enable players + missiles, single-line p/m res, DMA enabled"; };
range { name "level_names"; start $BB00; end $bbef; type bytetable; };
@@ -342,16 +342,16 @@ range { name "mus11_priority"; start $8ffe; end $8ffe; type bytetable; };
range { name "empty_music_entry"; start $8fff; end $8fff; type bytetable; comment "empty music table entries point here"; };
-label { name "sfx_priority_tmp"; addr $0661; comment "??"; };
-label { name "sfx_slot_curpos"; addr $064E; size 2; comment "address we've got to so far, playing this sfx"; };
-label { name "sfx_slot_priority"; addr $063E; size 1; comment "priority of this sfx"; };
-label { name "sfx_lock"; addr $062F; size 1; comment "lets other code know cue_sfx is still running? not 100% sure"; };
-label { name "inc_sfx_pos"; addr $8231; size 1; comment "point to next byte in current sfx slot indexed by X"; };
-label { name "sfx_finished"; addr $8226; size 1; comment "done playing this sfx, free up the slot, X-indexed"; };
-label { name "sfx_next_note"; addr $817D; size 1; };
-label { name "sfx_player_entry"; addr $8157; size 1; comment "we have 4 slots (because POKEY has 4 voices), X counts down by 2 from 10 to 2 (at 0, the loop exits)"; };
-label { name "next_sfx_slot"; addr $815F; size 1; };
-label { name "sfx_exit"; addr $815E; size 1; };
+label { name "snd_priority_tmp"; addr $0661; comment "??"; };
+label { name "snd_slot_curpos"; addr $064E; size 2; comment "address we've got to so far, playing this sfx"; };
+label { name "snd_slot_priority"; addr $063E; size 1; comment "priority of this sfx"; };
+label { name "snd_lock"; addr $062F; size 1; comment "lets other code know cue_sfx is still running? not 100% sure"; };
+label { name "inc_snd_pos"; addr $8231; size 1; comment "point to next byte in current sfx slot indexed by X"; };
+label { name "snd_finished"; addr $8226; size 1; comment "done playing this sfx, free up the slot, X-indexed"; };
+label { name "snd_next_note"; addr $817D; size 1; };
+label { name "snd_player_entry"; addr $8157; size 1; comment "we have 4 slots (because POKEY has 4 voices), X counts down by 2 from 10 to 2 (at 0, the loop exits)"; };
+label { name "next_snd_slot"; addr $815F; size 1; };
+label { name "snd_exit"; addr $815E; size 1; };
label { name "is_slot_active"; addr $8168; size 1; comment "skip it, if slot is inactive"; };
label { name "cpos_hi_ok"; addr $8223; };
label { name "lp_ok"; addr $8248; comment "copy to sfx_ptr, fall thru to cue_sfx"; };
@@ -360,13 +360,13 @@ label { name "load_slot"; addr $8266; comment "found a free slot, use it"; };
label { name "bump_slot"; addr $8281; comment "couldn't find a free slot, look for a used slot with lower priority than this sfx has"; };
label { name "bump_try_next"; addr $8283; comment "until we find one, or ran out of slots to look at"; };
label { name "bump_fail"; addr $8285; comment "branch to cue_done (give up) if all slots are in use with higher priority than this sfx (which means it won't be heard)"; };
-label { name "sfx_slot_timer"; addr $063F; size 1; };
-label { name "sfx_slot_duration"; addr $0646; size 1; };
-label { name "sfx_play_note"; addr $8206; size 1; comment "y==0, a>=4 on entry"; };
-label { name "sfx_play_rest"; addr $819E; size 1; comment "y==0 on entry"; };
-label { name "sfx_set_audc"; addr $81AE; size 1; comment "y==0 on entry"; };
-label { name "sfx_jump_opcode"; addr $81C8; size 1; comment "I *think* this jumps to a different sfx address..."; };
-label { name "sfx_slot_audc"; addr $0647; size 1; };
+label { name "snd_slot_timer"; addr $063F; size 1; };
+label { name "snd_slot_duration"; addr $0646; size 1; };
+label { name "snd_play_note"; addr $8206; size 1; comment "y==0, a>=4 on entry"; };
+label { name "snd_play_rest"; addr $819E; size 1; comment "y==0 on entry"; };
+label { name "snd_set_audc"; addr $81AE; size 1; comment "y==0 on entry"; };
+label { name "snd_jump_opcode"; addr $81C8; size 1; comment "I *think* this jumps to a different sfx address..."; };
+label { name "snd_slot_audc"; addr $0647; size 1; };
range { name "sfx00"; start $BDF2; end $BE24; type bytetable; };
range { name "sfx01"; start $BE25; end $BE78; type bytetable; };
@@ -563,11 +563,15 @@ 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 (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 "spellbound_table"; start $aea4; end $af0b; type bytetable; comment "used by spellbound, dunno exactly how yet"; };
+label { name "epyx_jumpman"; addr $AEAF; comment "letters for level08, spellbound (not ASCII or screencodes though)"; };
+label { name "letter_bitmap"; addr $AEBC; comment "player graphics for letters. each letter is 8x8 (8 bytes, 8px/byte), takes up the whole 8x8 cell (no blanks at edges like a normal font would have). no duplicate letters, so this spells 'JUMPANEYX ' (space at the end)"; };
+range { name "bonus_250"; start $AF0C; end $AF1B; type bytetable; comment "the little 250 that gets displayed at end of level, for each letter"; };
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."; };
label { name "cue_letter_sfx"; addr $AFB9; comment "play sfx_letter_bonus"; };
label { name "stub"; addr $8405; comment "just an RTS"; };
-range { name "data_table_85b6"; start $85b6; end $85bd; type bytetable; comment "used in vblank_imm_isr, not sure for what yet"; };
+range { name "rotating_colors"; start $85b6; end $85bd; type bytetable; comment "used for color-shifting objects like electrocution, walls, and the bonus counter. every frame, the next one of these is stored in rot_color."; };
+label { name "rot_color"; addr $062A; comment "see comment at rotating_colors"; };
label { name "page6_vectors_minus_one"; addr $05ff; comment "1-indexed"; };
label { name "page6_initial_vectors_minus_one"; addr $85dd; comment "1-indexed"; };
range { name "page6_initial_vectors"; start $85de; end $85f5; type addrtable; comment "copied into page 6 by init_hardware"; };
@@ -644,7 +648,7 @@ label { name "cue_sfx_jv"; addr $8006; comment "setup to play sfx"; };
label { name "cue_sfx"; addr $8255; comment "setup to play sfx at *sfx_ptr, priority in A"; };
label { name "cue_sfx_lowprior"; addr $8240; comment "if cue_sfx not already in progress, setup to play sfx at (sfx_slot_priority, sfx_lock), priority A"; };
label { name "cue_sfx_lowprior_jv"; addr $8003; comment "if cue_sfx not already in progress, setup to play sfx at (sfx_slot_priority, sfx_lock), priority A"; };
-label { name "sfx_ptr"; addr $063C; size 2; };
+label { name "snd_ptr"; addr $063C; size 2; };
label { name "cue_ok"; addr $8244; size 1; };
label { name "cue_done"; addr $8278; size 1; };
label { name "inc_done"; addr $823F; size 1; };
@@ -768,6 +772,10 @@ label { name "select_key_enabled"; addr $06C7; size 1; comment "non-zero = jump
label { name "option_key_enabled"; addr $06C6; size 1; comment "non-zero = jump through start_key_vec if start key pressed (checked by vblank_imm_isr)"; };
label { name "zp_temp1"; addr $cb; size 2; comment "used for (zp,y) addressing, also for checking console keys in vblank_imm_isr"; };
label { name "zp_temp2"; addr $ae; size 2; comment "used for (zp,y) addressing, also 2 temps for scores_screen"; };
+label { name "zp_temp3"; addr $B7; size 1; };
+label { name "zp_temp4"; addr $B8; size 1; comment "number of players, used by ask_num_players and option_key_handler. used as a temp elsewhere."; };
+label { name "zp_temp5"; addr $B9; size 1; comment "among other things, used for jumpman's dance on title screen"; };
+label { name "zp_temp6"; addr $BA; size 1; comment "used for audio freq counter in materialize_jumpman. also used when setting number of players and player speeds."; };
label { name "hang_main_thread"; addr $9486; size 1; comment "initialization done, everything's done in interrupts from here on out"; };
label { name "option_key_handler"; addr $9489; size 1; comment "called via option_key_vec when someone presses option"; };
@@ -846,7 +854,6 @@ label { name "init_struct_users_jv"; addr $8024; };
label { name "isu_next_su"; addr $9A5E; };
label { name "isu_next_byte"; addr $9A60; };
range { name "struct_users_init_contents"; start $9A71; end $9a7b; type bytetable; comment "work_user and struct_user_1 to _4 are initialized to this"; };
-range { name "data_af10"; start $AF10; end $AF1B; type bytetable; comment "looks almost like code but it's bogus"; };
range { name "extra_life_points"; start $8CFD; end $8CFF; type bytetable; comment "3 bytes, value 7500 decimal, give an extra life after this many points. not copied to RAM, meaning no level can change this."; };
label { name "chk_next_byte"; addr $8CBE; comment "number_of_users should be score-1 here. score+2 should be next_extra_life-1 also."; };
label { name "chk_done"; addr $8CFA; };