aboutsummaryrefslogtreecommitdiff
path: root/jumpmanjr.info
diff options
context:
space:
mode:
Diffstat (limited to 'jumpmanjr.info')
-rw-r--r--jumpmanjr.info54
1 files changed, 37 insertions, 17 deletions
diff --git a/jumpmanjr.info b/jumpmanjr.info
index 4de38f2..0589e61 100644
--- a/jumpmanjr.info
+++ b/jumpmanjr.info
@@ -117,12 +117,19 @@ label { name "check_collisions_3"; addr $9832; size 1; comment "movement/jumping
label { name "special_init"; addr $8B23; comment "various levels use this as their init, or use an init that calls this"; };
label { name "special_init_jv"; addr $8036; comment "various levels use this as their init, or use an init that calls this"; };
+label { name "si_clear"; addr $8B27; comment "clear memory from $0760 to $077f"; };
+label { name "special_init_2"; addr $8B2D; comment "special_init that doesn't clear memory. does anything use this entry point?"; };
+label { name "special_init_2_jv"; addr $8039; comment "special_init that doesn't clear memory. unused vector?"; };
label { name "next_player"; addr $9AAA; comment "used in multiplayer games, also called in single player (?)"; };
label { name "next_player_jv"; addr $8027; comment "used in multiplayer games, also called in single player (?)"; };
label { name "mul_player_11"; addr $9A7C; comment "multiply current player number by 11, return result in Y"; };
label { name "add_11"; addr $9A82; };
label { name "return_y"; addr $9A8A; };
label { name "save_struct_player"; addr $9A8C; };
+label { name "setup_blank_dlist"; addr $8AE0; comment "show blank screen with empty display list"; };
+label { name "setup_blank_dlist_jv"; addr $803C; comment "show blank screen with empty display list"; };
+label { name "draw_level"; addr $BA00; comment "calls draw_map, plays level intro music, shows level name"; };
+label { name "draw_level_jv"; addr $802A; comment "calls draw_map, plays level intro music, shows level name"; };
label { name "mid_jump"; addr $99A8; size 1; comment "check & see if we're done jumping"; };
label { name "continue_jump"; addr $99BD; size 1; comment "we're in mid-jump and didn't hit anything, keep going"; };
@@ -311,6 +318,7 @@ 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; };
+label { name "pnum_subtractors"; addr $8702; size 18; comment "3 bytes per table entry"; };
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; };
range { name "zero_filler_b7f1"; start $B7F1; end $B7FF; type bytetable; };
@@ -465,8 +473,8 @@ range { name "sfx_letter_bonus"; start $AFCB; end $afff; type bytetable; comment
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"; };
-label { name "page6_initial_vectors_minus_one"; addr $85d3; comment "1-indexed"; };
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"; };
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"; };
@@ -590,6 +598,7 @@ 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)"; };
+label { name "score_minus_one"; addr $06ff; size 1; };
label { name "score"; addr $0700; size 3; };
label { name "level"; addr $06f6; size 1; };
label { name "lives"; addr $070a; size 1; };
@@ -709,8 +718,19 @@ label { name "update_status_window"; addr $8694; comment "bottom 2 GR.1 lines on
label { name "update_status_window_jv"; addr $8012; comment "bottom 2 GR.1 lines on the game board"; };
label { name "setup_gameboard_dlist"; addr $9B00; comment "for some reason there are 2 copies of the display list, at $0800 and $0881"; };
label { name "setup_gameboard_dlist_jv"; addr $8015; comment "for some reason there are 2 copies of the display list, at $0800 and $0881"; };
-label { name "xxx_level_something"; addr $8600; comment "gets called after the level is drawn & the intro music stops, and also during the level (?)"; };
-label { name "xxx_level_something_jv"; addr $8009; comment "gets called after the level is drawn & the intro music stops, and also during the level (?)"; };
+label { name "print_number"; addr $8600; comment "convert the 3-byte integer stored at num_in to screen codes, store into memory pointed to by num_out"; };
+label { name "print_number_jv"; addr $8009; comment "convert the 3-byte integer stored at num_in to screen codes, store into memory pointed to by num_out"; };
+label { name "num_tmp"; addr $0665; size 1; comment "temp used by print_number"; };
+label { name "num_in"; addr $D0; size 3; comment "print_number input. 3-byte number (LSB first as usual) to be printed"; };
+label { name "num_out"; addr $D3; size 2; comment "area of (screen) memory where print_number stores its output"; };
+label { name "num_color"; addr $D5; size 1; comment "print_number adds this to numeric screencode output. normally 0, set to $80 on the end-of-game screen."; };
+label { name "print_bonus"; addr $867E; comment "print remaining bonus time; work_level_points_per_bomb should read work_level_time_bonus-1"; };
+label { name "print_bonus_jv"; addr $800F; comment "print remaining bonus time"; };
+label { name "pnum_done"; addr $8667; };
+label { name "next_digit"; addr $8607; comment "starts at 0, gets added to"; };
+label { name "print_score"; addr $8668; };
+label { name "ps_loop"; addr $8672; };
+label { name "pb_loop"; addr $8688; };
label { name "draw_map"; addr $8049; comment "the entry point for parsing the level map and drawing graphics from it. see level_maps.txt. caller must set $C0/$C1 to the address of the map data. modders beware: bogus map data can & will cause infinite loops."; };
label { name "draw_map_jv"; addr $8000; comment "the entry point for parsing the level map and drawing graphics from it. see level_maps.txt."; };
label { name "dm_get_opcode"; addr $804B; comment "$C0/$C1 points to $A300 (level01_desc) on the first call"; };
@@ -765,7 +785,7 @@ label { name "work_level_bomblist"; addr $079a; size 2; comment "addr of list of
label { name "work_level_map_changes"; addr $079c; size 2; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
label { name "work_level_indirect_subs"; addr $079e; size 2; comment "pointer to list of indirect subs, always $0000 in this game"; };
label { name "work_level_sub_bomb"; addr $07a0; size 2; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-label { name "work_level_sub_start"; addr $07a2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+label { name "work_level_init"; addr $07a2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
label { name "work_level_sub6"; addr $07a4; size 2; comment "always $9740 aka game_main_loop"; };
label { name "work_level_sub_eol"; addr $07a6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
label { name "work_level_offs_40"; addr $07a8; size 6; comment "all zeroes"; };
@@ -799,7 +819,7 @@ label { name "cur_level_bomblist"; addr $07da; size 2; comment "addr of list of
label { name "cur_level_map_changes"; addr $07dc; size 2; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
label { name "cur_level_indirect_subs"; addr $07de; size 2; comment "pointer to list of indirect subs, always $0000 in this game"; };
label { name "cur_level_sub_bomb"; addr $07e0; size 2; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-label { name "cur_level_sub_start"; addr $07e2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+label { name "cur_level_init"; addr $07e2; size 2; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
label { name "cur_level_sub6"; addr $07e4; size 2; comment "always $9740 aka game_main_loop"; };
label { name "cur_level_sub_eol"; addr $07e6; size 2; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
label { name "cur_level_offs_40"; addr $07e8; size 6; comment "all zeroes"; };
@@ -833,7 +853,7 @@ range { name "level01_bomblist"; start $a01a; end $a01b; type addrtable; comment
range { name "level01_map_changes"; start $a01c; end $a01d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level01_indirect_subs"; start $a01e; end $a01f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level01_sub_bomb"; start $a020; end $a021; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level01_sub_start"; start $a022; end $a023; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level01_init"; start $a022; end $a023; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level01_sub6"; start $a024; end $a025; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level01_sub_eol"; start $a026; end $a027; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level01_offs_40"; start $a028; end $a02d; type bytetable; comment "all zeroes"; };
@@ -867,7 +887,7 @@ range { name "level02_bomblist"; start $a05a; end $a05b; type addrtable; comment
range { name "level02_map_changes"; start $a05c; end $a05d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level02_indirect_subs"; start $a05e; end $a05f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level02_sub_bomb"; start $a060; end $a061; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level02_sub_start"; start $a062; end $a063; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level02_init"; start $a062; end $a063; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level02_sub6"; start $a064; end $a065; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level02_sub_eol"; start $a066; end $a067; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level02_offs_40"; start $a068; end $a06d; type bytetable; comment "all zeroes"; };
@@ -901,7 +921,7 @@ range { name "level03_bomblist"; start $a09a; end $a09b; type addrtable; comment
range { name "level03_map_changes"; start $a09c; end $a09d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level03_indirect_subs"; start $a09e; end $a09f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level03_sub_bomb"; start $a0a0; end $a0a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level03_sub_start"; start $a0a2; end $a0a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level03_init"; start $a0a2; end $a0a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level03_sub6"; start $a0a4; end $a0a5; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level03_sub_eol"; start $a0a6; end $a0a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level03_offs_40"; start $a0a8; end $a0ad; type bytetable; comment "all zeroes"; };
@@ -935,7 +955,7 @@ range { name "level04_bomblist"; start $a0da; end $a0db; type addrtable; comment
range { name "level04_map_changes"; start $a0dc; end $a0dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level04_indirect_subs"; start $a0de; end $a0df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level04_sub_bomb"; start $a0e0; end $a0e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level04_sub_start"; start $a0e2; end $a0e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level04_init"; start $a0e2; end $a0e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level04_sub6"; start $a0e4; end $a0e5; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level04_sub_eol"; start $a0e6; end $a0e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level04_offs_40"; start $a0e8; end $a0ed; type bytetable; comment "all zeroes"; };
@@ -969,7 +989,7 @@ range { name "level05_bomblist"; start $a11a; end $a11b; type addrtable; comment
range { name "level05_map_changes"; start $a11c; end $a11d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level05_indirect_subs"; start $a11e; end $a11f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level05_sub_bomb"; start $a120; end $a121; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level05_sub_start"; start $a122; end $a123; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level05_init"; start $a122; end $a123; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level05_sub6"; start $a124; end $a125; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level05_sub_eol"; start $a126; end $a127; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level05_offs_40"; start $a128; end $a12d; type bytetable; comment "all zeroes"; };
@@ -1003,7 +1023,7 @@ range { name "level06_bomblist"; start $a15a; end $a15b; type addrtable; comment
range { name "level06_map_changes"; start $a15c; end $a15d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level06_indirect_subs"; start $a15e; end $a15f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level06_sub_bomb"; start $a160; end $a161; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level06_sub_start"; start $a162; end $a163; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level06_init"; start $a162; end $a163; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level06_sub6"; start $a164; end $a165; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level06_sub_eol"; start $a166; end $a167; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level06_offs_40"; start $a168; end $a16d; type bytetable; comment "all zeroes"; };
@@ -1037,7 +1057,7 @@ range { name "level07_bomblist"; start $a19a; end $a19b; type addrtable; comment
range { name "level07_map_changes"; start $a19c; end $a19d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level07_indirect_subs"; start $a19e; end $a19f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level07_sub_bomb"; start $a1a0; end $a1a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level07_sub_start"; start $a1a2; end $a1a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level07_init"; start $a1a2; end $a1a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level07_sub6"; start $a1a4; end $a1a5; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level07_sub_eol"; start $a1a6; end $a1a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level07_offs_40"; start $a1a8; end $a1ad; type bytetable; comment "all zeroes"; };
@@ -1071,7 +1091,7 @@ range { name "level08_bomblist"; start $a1da; end $a1db; type addrtable; comment
range { name "level08_map_changes"; start $a1dc; end $a1dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level08_indirect_subs"; start $a1de; end $a1df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level08_sub_bomb"; start $a1e0; end $a1e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level08_sub_start"; start $a1e2; end $a1e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level08_init"; start $a1e2; end $a1e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level08_sub6"; start $a1e4; end $a1e5; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level08_sub_eol"; start $a1e6; end $a1e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level08_offs_40"; start $a1e8; end $a1ed; type bytetable; comment "all zeroes"; };
@@ -1105,7 +1125,7 @@ range { name "level09_bomblist"; start $a21a; end $a21b; type addrtable; comment
range { name "level09_map_changes"; start $a21c; end $a21d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level09_indirect_subs"; start $a21e; end $a21f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level09_sub_bomb"; start $a220; end $a221; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level09_sub_start"; start $a222; end $a223; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level09_init"; start $a222; end $a223; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level09_sub6"; start $a224; end $a225; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level09_sub_eol"; start $a226; end $a227; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level09_offs_40"; start $a228; end $a22d; type bytetable; comment "all zeroes"; };
@@ -1139,7 +1159,7 @@ range { name "level10_bomblist"; start $a25a; end $a25b; type addrtable; comment
range { name "level10_map_changes"; start $a25c; end $a25d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level10_indirect_subs"; start $a25e; end $a25f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level10_sub_bomb"; start $a260; end $a261; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level10_sub_start"; start $a262; end $a263; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level10_init"; start $a262; end $a263; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level10_sub6"; start $a264; end $a265; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level10_sub_eol"; start $a266; end $a267; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level10_offs_40"; start $a268; end $a26d; type bytetable; comment "all zeroes"; };
@@ -1173,7 +1193,7 @@ range { name "level11_bomblist"; start $a29a; end $a29b; type addrtable; comment
range { name "level11_map_changes"; start $a29c; end $a29d; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level11_indirect_subs"; start $a29e; end $a29f; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level11_sub_bomb"; start $a2a0; end $a2a1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level11_sub_start"; start $a2a2; end $a2a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level11_init"; start $a2a2; end $a2a3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level11_sub6"; start $a2a4; end $a2a5; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level11_sub_eol"; start $a2a6; end $a2a7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level11_offs_40"; start $a2a8; end $a2ad; type bytetable; comment "all zeroes"; };
@@ -1207,7 +1227,7 @@ range { name "level12_bomblist"; start $a2da; end $a2db; type addrtable; comment
range { name "level12_map_changes"; start $a2dc; end $a2dd; type addrtable; comment "address of list of addresses of map data, used for changing the map when certain bombs are picked up"; };
range { name "level12_indirect_subs"; start $a2de; end $a2df; type bytetable; comment "pointer to list of indirect subs, always $0000 in this game"; };
range { name "level12_sub_bomb"; start $a2e0; end $a2e1; type addrtable; comment "called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine"; };
-range { name "level12_sub_start"; start $a2e2; end $a2e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
+range { name "level12_init"; start $a2e2; end $a2e3; type addrtable; comment "called at start of level, $06E6 for some levels, or else a ROM subroutine"; };
range { name "level12_sub6"; start $a2e4; end $a2e5; type addrtable; comment "always $9740 aka game_main_loop"; };
range { name "level12_sub_eol"; start $a2e6; end $a2e7; type addrtable; comment "called at end of level (all bombs picked up). $06E6 for all but level08"; };
range { name "level12_offs_40"; start $a2e8; end $a2ed; type bytetable; comment "all zeroes"; };