aboutsummaryrefslogtreecommitdiff
path: root/main.info
diff options
context:
space:
mode:
Diffstat (limited to 'main.info')
-rw-r--r--main.info54
1 files changed, 36 insertions, 18 deletions
diff --git a/main.info b/main.info
index 472f2c6..1fd0538 100644
--- a/main.info
+++ b/main.info
@@ -120,21 +120,23 @@ 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"; };
range { name "data_8dfa"; start $8DFA; end $8DFF; type bytetable; };
-range { name "data_8f43"; start $8F43; end $8f72; type bytetable; };
-
-##range { name "mus0_addr1"; start $8FC3; end $8fc4; type addrtable; comment "mus struct table, 5 bytes per entry: 0/1 are an address, 2/3 are another, 5 is maybe the length? tempo?"; };
-##range { name "mus0_addr2"; start $8FC5; end $8fc6; type addrtable; };
-##range { name "mus0_len_or_tempo"; start $8FC7; end $8fc7; type bytetable; };
-##
-##range { name "mus1_addr1"; start $8FC8; end $8fc9; type addrtable; };
-##range { name "mus1_addr2"; start $8FCA; end $8fcb; type addrtable; };
-##range { name "mus1_len_or_tempo"; start $8FCC; end $8fcc; type bytetable; };
-##
-##range { name "mus2_addr1"; start $8FC8; end $8fc9; type addrtable; };
-##range { name "mus2_addr2"; start $8FCA; end $8fcb; type addrtable; };
-##range { name "mus2_len_or_tempo"; start $8FCC; end $8fcc; type bytetable; };
-
-#range { name "more_mus"; start $8FC8; end $8fff; type bytetable; comment "more 5-byte structs"; };
+range { name "bullet_table"; start $8F43; end $8f72; type bytetable; comment "used by bullet_logic"; };
+label { name "sfx_bullet"; addr $8f59; size 1; comment "bang!"; };
+label { name "play_sfx_bullet"; addr $8EFB; size 1; comment "let player hear report"; };
+label { name "set_bullet_dir"; addr $8EA7; size 1; comment "initial direction (before it fires)"; };
+label { name "fire_bullet"; addr $8EEF; size 1; comment "fire! Y reg indexes table of directions"; };
+label { name "player_y_pos"; addr $0683; size 1; comment "$C6 is the bottom of the level (where you end up when you die)"; };
+label { name "player_x_pos"; addr $067E; size 1; comment "stored in HPOSP0"; };
+label { name "bullet_x_pos"; addr $069B; size 4; comment "4 bytes, meaning we can never have >4 bullets on screen at once (makes sense, GTIA only has 4 missiles)"; };
+label { name "bullet_y_pos"; addr $069F; size 4; comment "another 4 bytes"; };
+label { name "bullet_flags"; addr $0756; size 4; comment "4 bytes, 0 = bullet slot not in use, non-0 = bullet active"; };
+label { name "bullet_x_delta"; addr $075A; size 4; comment "4 bytes"; };
+label { name "bullet_y_delta"; addr $075E; size 4; comment "4 bytes"; };
+label { name "fire_when_ready"; addr $8EB9; size 1; comment "fire at player if lined up with him, otherwise don't. either way we end up at move_bullet"; };
+label { name "sbc3"; addr $8EC1; size 1; comment "aim at center of body mass!"; };
+label { name "move_bullet"; addr $8F11; size 1; };
+label { name "aim_bullet_y"; addr $8ED6; size 1; comment "take aim!"; };
+label { name "aim_bullet_x"; addr $8EE4; size 1; comment "take aim!"; };
range { name "mus00_addr1"; start $8fc3; end $8fc4; type addrtable; comment "aka mus_struct_table, 5 bytes per entry"; };
range { name "mus00_addr2"; start $8fc5; end $8fc6; type addrtable; };
@@ -243,7 +245,9 @@ label { name "numplayer_screen_data_minus_one"; addr $959a; comment "1-indexed l
range { name "numplayer_screen_data"; start $959b; end $95ff; type bytetable; comment "'number of players?', gets copied to $3800, see option_key_handler"; };
range { name "sfx_add_life_bonus"; start $b896; end $b8a6; type bytetable; comment "played when adding bonus per life at end of level"; };
range { name "mul_25_table"; start $b8a7; end $b8be; type wordtable; comment "multiply by 25"; };
-range { name "data_table_8a39"; start $8a39; end $8a7f; type bytetable; };
+range { name "falling_table_1"; start $8a39; end $8a7f; type bytetable; };
+label { name "falling_table_2"; addr $8A42; };
+label { name "play_sfx_death"; addr $8936; };
range { name "data_table_86da"; start $86da; end $8713; type bytetable; };
range { name "level_name_hscrol_table"; start $BBF0; end $BBff; type bytetable; comment "used for centering level name on gameboard"; };
range { name "zero_filler_b8bf"; start $b8bf; end $b96a; type bytetable; };
@@ -297,8 +301,16 @@ range { name "data_table_aea4"; start $aea4; end $af0f; type bytetable; comment
range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; type bytetable; comment "played once per correct letter at end of level07 (spellbound)"; };
label { name "cue_letter_sfx"; addr $AFB9; comment "play sfx_letter_bonus"; };
label { name "map_b000"; addr $b000; comment "referenced by routine at $B0C4"; };
+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 "data_table_85de"; start $85de; end $85f5; type bytetable; comment "dunno what this is for yet, but it's copied into page 6 by init_hardware"; };
+label { name "page6_initial_vectors_minus_one"; addr $85d3; comment "1-indexed"; };
+label { name "page6_vectors_minus_one"; addr $05ff; comment "1-indexed"; };
+range { name "page6_initial_vectors"; start $85de; end $85f5; type addrtable; comment "copied into page 6 by init_hardware"; };
+label { name "page6_vectors"; addr $0600; size 24; comment "initialized with page6_initial_vectors"; };
+label { name "zigzag_sub0"; addr $AD68; comment "move bullets in ways that defy the laws of physics and common sense"; };
+label { name "no_bullet"; addr $8E75; };
+label { name "want_bullet"; addr $8E76; comment "create a bullet unless there are already max_bullets of them"; };
+label { name "next_bullet_slot"; addr $8E78; };
range { name "zero_filler_85f6"; start $85f6; end $85ff; type bytetable; comment "probably just filler"; };
range { name "movement_direction_table"; start $85be; end $85dd; type wordtable; comment "X/Y movement, indexed by joystick_state << 1, each entry is XXYY, $FF is -1"; };
range { name "get_ready_msg"; start $9714; end $9726; type bytetable; comment "PLAYER GET READY"; };
@@ -329,6 +341,12 @@ label { name "check_alive"; addr $8BE9; comment "player still has lives left?";
label { name "no_cross"; addr $8BEF; };
label { name "what_are_we_waiting_for"; addr $8C39; comment "I *think* we're waiting for the music to finish playing..."; };
+label { name "check_falling_1"; addr $9800; comment "called via vector in page 6"; };
+label { name "check_falling_2"; addr $8900; comment "called via vector in page 6"; };
+label { name "bullet_logic"; addr $8E69; comment "not sure what $0622, $0623 are for yet"; };
+label { name "rand_1_to_3"; addr $8E86; comment "A = rand() % 3 + 1; // bullets only come from left, right, or top (never bottom)"; };
+label { name "bullet_table_minus_one"; addr $8F42; comment "1-indexed"; };
+label { name "falling_flag"; addr $0621; comment "1 = falling, reset to 0 when jumpman hits the ground"; };
label { name "jiffy_timer_1"; addr $061A; comment "gets incremented every frame"; };
label { name "jiffy_timer_2"; addr $061B; comment "gets incremented every frame"; };
label { name "bonus_jiffy_timer"; addr $0626; comment "gets incremented every frame when playing a level, bonus-=100 when this reaches 0"; };
@@ -402,7 +420,7 @@ range { name "keycode_table"; start $9C19; end $9c20; type bytetable; };
#label { name "mul_25_table"; addr $B8A7; size 2; };
label { name "init_hardware"; addr $837c; };
-label { name "init_page6_loop"; addr $837e; comment "movement_direction_table+31 should read data_table_85de-1, da65 isn't perfect yet"; };
+label { name "init_page6_loop"; addr $837e; };
# these are so far only for player 1
label { name "number_of_players"; addr $06f4; size 1; comment "0 for single-player game, otherwise range 1-3 (2 to 4 players)"; };