aboutsummaryrefslogtreecommitdiff
path: root/jumpmanjr.info
diff options
context:
space:
mode:
Diffstat (limited to 'jumpmanjr.info')
-rw-r--r--jumpmanjr.info82
1 files changed, 50 insertions, 32 deletions
diff --git a/jumpmanjr.info b/jumpmanjr.info
index 9c9fdef..c1b0d38 100644
--- a/jumpmanjr.info
+++ b/jumpmanjr.info
@@ -122,21 +122,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; };
@@ -245,7 +247,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; };
@@ -299,8 +303,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"; };
@@ -331,6 +343,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"; };
@@ -404,7 +422,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)"; };
@@ -566,7 +584,7 @@ label { name "work_level_sub1"; addr $0784; size 2; comment "a subroutine"; };
label { name "work_level_sub2"; addr $0786; size 2; comment "a subroutine"; };
label { name "work_level_sub3"; addr $0788; size 2; comment "a subroutine"; };
label { name "work_level_num_bombs"; addr $078a; size 1; comment "number of bombs to pick up on this level"; };
-label { name "work_level_bullet_chance"; addr $078b; size 1; comment "0 = no bullets"; };
+label { name "work_level_bullet_max"; addr $078b; size 1; comment "0 = no bullets, range 0-4."; };
label { name "work_level_y_start"; addr $078c; size 1; comment "jumpman starting Y position"; };
label { name "work_level_x_start"; addr $078d; size 1; comment "jumpman starting X position"; };
label { name "work_level_offs_14"; addr $078e; size 2; comment "points to $0600"; };
@@ -595,7 +613,7 @@ label { name "cur_level_sub1"; addr $07c4; size 2; comment "a subroutine"; };
label { name "cur_level_sub2"; addr $07c6; size 2; comment "a subroutine"; };
label { name "cur_level_sub3"; addr $07c8; size 2; comment "a subroutine"; };
label { name "cur_level_num_bombs"; addr $07ca; size 1; comment "number of bombs to pick up on this level"; };
-label { name "cur_level_bullet_chance"; addr $07cb; size 1; comment "0 = no bullets"; };
+label { name "cur_level_bullet_max"; addr $07cb; size 1; comment "0 = no bullets, range 0-4."; };
label { name "cur_level_y_start"; addr $07cc; size 1; comment "jumpman starting Y position"; };
label { name "cur_level_x_start"; addr $07cd; size 1; comment "jumpman starting X position"; };
label { name "cur_level_offs_14"; addr $07ce; size 2; comment "points to $0600"; };
@@ -624,7 +642,7 @@ range { name "level00_sub1"; start $a004; end $a005; type addrtable; comment "a
range { name "level00_sub2"; start $a006; end $a007; type addrtable; comment "a subroutine"; };
range { name "level00_sub3"; start $a008; end $a009; type addrtable; comment "a subroutine"; };
range { name "level00_num_bombs"; start $a00a; end $a00a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level00_bullet_chance"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets"; };
+range { name "level00_bullet_max"; start $a00b; end $a00b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level00_y_start"; start $a00c; end $a00c; type bytetable; comment "jumpman starting Y position"; };
range { name "level00_x_start"; start $a00d; end $a00d; type bytetable; comment "jumpman starting X position"; };
range { name "level00_offs_14"; start $a00e; end $a00f; type bytetable; comment "points to $0600"; };
@@ -653,7 +671,7 @@ range { name "level01_sub1"; start $a044; end $a045; type addrtable; comment "a
range { name "level01_sub2"; start $a046; end $a047; type addrtable; comment "a subroutine"; };
range { name "level01_sub3"; start $a048; end $a049; type addrtable; comment "a subroutine"; };
range { name "level01_num_bombs"; start $a04a; end $a04a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level01_bullet_chance"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets"; };
+range { name "level01_bullet_max"; start $a04b; end $a04b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level01_y_start"; start $a04c; end $a04c; type bytetable; comment "jumpman starting Y position"; };
range { name "level01_x_start"; start $a04d; end $a04d; type bytetable; comment "jumpman starting X position"; };
range { name "level01_offs_14"; start $a04e; end $a04f; type bytetable; comment "points to $0600"; };
@@ -682,7 +700,7 @@ range { name "level02_sub1"; start $a084; end $a085; type addrtable; comment "a
range { name "level02_sub2"; start $a086; end $a087; type addrtable; comment "a subroutine"; };
range { name "level02_sub3"; start $a088; end $a089; type addrtable; comment "a subroutine"; };
range { name "level02_num_bombs"; start $a08a; end $a08a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level02_bullet_chance"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets"; };
+range { name "level02_bullet_max"; start $a08b; end $a08b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level02_y_start"; start $a08c; end $a08c; type bytetable; comment "jumpman starting Y position"; };
range { name "level02_x_start"; start $a08d; end $a08d; type bytetable; comment "jumpman starting X position"; };
range { name "level02_offs_14"; start $a08e; end $a08f; type bytetable; comment "points to $0600"; };
@@ -711,7 +729,7 @@ range { name "level03_sub1"; start $a0c4; end $a0c5; type addrtable; comment "a
range { name "level03_sub2"; start $a0c6; end $a0c7; type addrtable; comment "a subroutine"; };
range { name "level03_sub3"; start $a0c8; end $a0c9; type addrtable; comment "a subroutine"; };
range { name "level03_num_bombs"; start $a0ca; end $a0ca; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level03_bullet_chance"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets"; };
+range { name "level03_bullet_max"; start $a0cb; end $a0cb; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level03_y_start"; start $a0cc; end $a0cc; type bytetable; comment "jumpman starting Y position"; };
range { name "level03_x_start"; start $a0cd; end $a0cd; type bytetable; comment "jumpman starting X position"; };
range { name "level03_offs_14"; start $a0ce; end $a0cf; type bytetable; comment "points to $0600"; };
@@ -740,7 +758,7 @@ range { name "level04_sub1"; start $a104; end $a105; type addrtable; comment "a
range { name "level04_sub2"; start $a106; end $a107; type addrtable; comment "a subroutine"; };
range { name "level04_sub3"; start $a108; end $a109; type addrtable; comment "a subroutine"; };
range { name "level04_num_bombs"; start $a10a; end $a10a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level04_bullet_chance"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets"; };
+range { name "level04_bullet_max"; start $a10b; end $a10b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level04_y_start"; start $a10c; end $a10c; type bytetable; comment "jumpman starting Y position"; };
range { name "level04_x_start"; start $a10d; end $a10d; type bytetable; comment "jumpman starting X position"; };
range { name "level04_offs_14"; start $a10e; end $a10f; type bytetable; comment "points to $0600"; };
@@ -769,7 +787,7 @@ range { name "level05_sub1"; start $a144; end $a145; type addrtable; comment "a
range { name "level05_sub2"; start $a146; end $a147; type addrtable; comment "a subroutine"; };
range { name "level05_sub3"; start $a148; end $a149; type addrtable; comment "a subroutine"; };
range { name "level05_num_bombs"; start $a14a; end $a14a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level05_bullet_chance"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets"; };
+range { name "level05_bullet_max"; start $a14b; end $a14b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level05_y_start"; start $a14c; end $a14c; type bytetable; comment "jumpman starting Y position"; };
range { name "level05_x_start"; start $a14d; end $a14d; type bytetable; comment "jumpman starting X position"; };
range { name "level05_offs_14"; start $a14e; end $a14f; type bytetable; comment "points to $0600"; };
@@ -798,7 +816,7 @@ range { name "level06_sub1"; start $a184; end $a185; type addrtable; comment "a
range { name "level06_sub2"; start $a186; end $a187; type addrtable; comment "a subroutine"; };
range { name "level06_sub3"; start $a188; end $a189; type addrtable; comment "a subroutine"; };
range { name "level06_num_bombs"; start $a18a; end $a18a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level06_bullet_chance"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets"; };
+range { name "level06_bullet_max"; start $a18b; end $a18b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level06_y_start"; start $a18c; end $a18c; type bytetable; comment "jumpman starting Y position"; };
range { name "level06_x_start"; start $a18d; end $a18d; type bytetable; comment "jumpman starting X position"; };
range { name "level06_offs_14"; start $a18e; end $a18f; type bytetable; comment "points to $0600"; };
@@ -827,7 +845,7 @@ range { name "level07_sub1"; start $a1c4; end $a1c5; type addrtable; comment "a
range { name "level07_sub2"; start $a1c6; end $a1c7; type addrtable; comment "a subroutine"; };
range { name "level07_sub3"; start $a1c8; end $a1c9; type addrtable; comment "a subroutine"; };
range { name "level07_num_bombs"; start $a1ca; end $a1ca; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level07_bullet_chance"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets"; };
+range { name "level07_bullet_max"; start $a1cb; end $a1cb; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level07_y_start"; start $a1cc; end $a1cc; type bytetable; comment "jumpman starting Y position"; };
range { name "level07_x_start"; start $a1cd; end $a1cd; type bytetable; comment "jumpman starting X position"; };
range { name "level07_offs_14"; start $a1ce; end $a1cf; type bytetable; comment "points to $0600"; };
@@ -856,7 +874,7 @@ range { name "level08_sub1"; start $a204; end $a205; type addrtable; comment "a
range { name "level08_sub2"; start $a206; end $a207; type addrtable; comment "a subroutine"; };
range { name "level08_sub3"; start $a208; end $a209; type addrtable; comment "a subroutine"; };
range { name "level08_num_bombs"; start $a20a; end $a20a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level08_bullet_chance"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets"; };
+range { name "level08_bullet_max"; start $a20b; end $a20b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level08_y_start"; start $a20c; end $a20c; type bytetable; comment "jumpman starting Y position"; };
range { name "level08_x_start"; start $a20d; end $a20d; type bytetable; comment "jumpman starting X position"; };
range { name "level08_offs_14"; start $a20e; end $a20f; type bytetable; comment "points to $0600"; };
@@ -885,7 +903,7 @@ range { name "level09_sub1"; start $a244; end $a245; type addrtable; comment "a
range { name "level09_sub2"; start $a246; end $a247; type addrtable; comment "a subroutine"; };
range { name "level09_sub3"; start $a248; end $a249; type addrtable; comment "a subroutine"; };
range { name "level09_num_bombs"; start $a24a; end $a24a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level09_bullet_chance"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets"; };
+range { name "level09_bullet_max"; start $a24b; end $a24b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level09_y_start"; start $a24c; end $a24c; type bytetable; comment "jumpman starting Y position"; };
range { name "level09_x_start"; start $a24d; end $a24d; type bytetable; comment "jumpman starting X position"; };
range { name "level09_offs_14"; start $a24e; end $a24f; type bytetable; comment "points to $0600"; };
@@ -914,7 +932,7 @@ range { name "level10_sub1"; start $a284; end $a285; type addrtable; comment "a
range { name "level10_sub2"; start $a286; end $a287; type addrtable; comment "a subroutine"; };
range { name "level10_sub3"; start $a288; end $a289; type addrtable; comment "a subroutine"; };
range { name "level10_num_bombs"; start $a28a; end $a28a; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level10_bullet_chance"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets"; };
+range { name "level10_bullet_max"; start $a28b; end $a28b; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level10_y_start"; start $a28c; end $a28c; type bytetable; comment "jumpman starting Y position"; };
range { name "level10_x_start"; start $a28d; end $a28d; type bytetable; comment "jumpman starting X position"; };
range { name "level10_offs_14"; start $a28e; end $a28f; type bytetable; comment "points to $0600"; };
@@ -943,7 +961,7 @@ range { name "level11_sub1"; start $a2c4; end $a2c5; type addrtable; comment "a
range { name "level11_sub2"; start $a2c6; end $a2c7; type addrtable; comment "a subroutine"; };
range { name "level11_sub3"; start $a2c8; end $a2c9; type addrtable; comment "a subroutine"; };
range { name "level11_num_bombs"; start $a2ca; end $a2ca; type bytetable; comment "number of bombs to pick up on this level"; };
-range { name "level11_bullet_chance"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets"; };
+range { name "level11_bullet_max"; start $a2cb; end $a2cb; type bytetable; comment "0 = no bullets, range 0-4."; };
range { name "level11_y_start"; start $a2cc; end $a2cc; type bytetable; comment "jumpman starting Y position"; };
range { name "level11_x_start"; start $a2cd; end $a2cd; type bytetable; comment "jumpman starting X position"; };
range { name "level11_offs_14"; start $a2ce; end $a2cf; type bytetable; comment "points to $0600"; };