From 572890a181fd233952ed4bdd521d32a0af211a14 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Sat, 31 Aug 2024 23:13:43 -0500 Subject: [PATCH] 3d engine bits --- bits.h | 137 ----------------------- registers/graphics_engine_bits.csv | 172 ++++++++++++++++++++++++++++- registers/graphics_engine_bits.ods | Bin 20636 -> 22138 bytes 3 files changed, 170 insertions(+), 139 deletions(-) diff --git a/bits.h b/bits.h index 0ee698d..e69de29 100644 --- a/bits.h +++ b/bits.h @@ -1,137 +0,0 @@ -#define DISPCNT__obj_extended_palette (0x1 << 31) -#define DISPCNT__bg_extended_palette (0x1 << 30) -#define DISPCNT__bg_screen_base_offset(v) (((v) & 0x7) << 27) -#define DISPCNT__bg_character_base_offset(v) (((v) & 0x7) << 24) -#define DISPCNT__obj_processing_during_h_blank_period (0x1 << 23) -#define DISPCNT__obj_vram_capacity__128kb (0x0 << 22) -#define DISPCNT__obj_vram_capacity__256kb (0x1 << 22) -#define DISPCNT__character_vram_capacity__32kb (0x0 << 20) -#define DISPCNT__character_vram_capacity__64kb (0x1 << 20) -#define DISPCNT__character_vram_capacity__128kb (0x2 << 20) -#define DISPCNT__character_vram_capacity__256kb (0x3 << 20) -#define DISPCNT__display_vram_block__vram_a (0x0 << 18) -#define DISPCNT__display_vram_block__vram_b (0x1 << 18) -#define DISPCNT__display_vram_block__vram_c (0x2 << 18) -#define DISPCNT__display_vram_block__vram_d (0x3 << 18) -#define DISPCNT__display_mode__display_off (0x0 << 16) -#define DISPCNT__display_mode__graphics_display (0x1 << 16) -#define DISPCNT__display_mode__vram_display (0x2 << 16) -#define DISPCNT__display_mode__main_memory_display (0x3 << 16) -#define DISPCNT__obj_window__disable (0x0 << 15) -#define DISPCNT__obj_window__enable (0x1 << 15) -#define DISPCNT__window_1__disable (0x0 << 14) -#define DISPCNT__window_1__enable (0x1 << 14) -#define DISPCNT__window_0__disable (0x0 << 13) -#define DISPCNT__window_0__enable (0x1 << 13) -#define DISPCNT__obj__disable (0x0 << 12) -#define DISPCNT__obj__enable (0x1 << 12) -#define DISPCNT__bg3__disable (0x0 << 11) -#define DISPCNT__bg3__enable (0x1 << 11) -#define DISPCNT__bg2__disable (0x0 << 10) -#define DISPCNT__bg2__enable (0x1 << 10) -#define DISPCNT__bg1__disable (0x0 << 9) -#define DISPCNT__bg1__enable (0x1 << 9) -#define DISPCNT__bg0__disable (0x0 << 8) -#define DISPCNT__bg0__enable (0x1 << 8) -#define DISPCNT__2d_display_forced_blank (0x1 << 7) -#define DISPCNT__bitmap_obj_mapping_mode__2d_mapping_with_128_horizontal_dots (0x0 << 5) -#define DISPCNT__bitmap_obj_mapping_mode__2d_mapping_with_256_horizontal_dots (0x1 << 5) -#define DISPCNT__bitmap_obj_mapping_mode__1d_mapping (0x2 << 5) -#define DISPCNT__character_obj_mapping_mode__2d_mapping (0x0 << 4) -#define DISPCNT__character_obj_mapping_mode__1d_mapping (0x1 << 4) -#define DISPCNT__display_selection_for_bg0__2d_graphics (0x0 << 3) -#define DISPCNT__display_selection_for_bg0__3d_graphics (0x1 << 3) -#define DISPCNT__bg_mode__text0_text1_text2_text3 (0x0 << 0) -#define DISPCNT__bg_mode__text0_text1_text2_affine3 (0x1 << 0) -#define DISPCNT__bg_mode__text0_text1_affine2_affine3 (0x2 << 0) -#define DISPCNT__bg_mode__text0_text1_text2_extended3 (0x3 << 0) -#define DISPCNT__bg_mode__text0_text1_affine2_extended3 (0x4 << 0) -#define DISPCNT__bg_mode__text0_text1_extended2_extended3 (0x5 << 0) -#define DISPCNT__bg_mode__3d_large_screen_256_color_bitmap (0x6 << 0) -#define DISPSTAT__v_counter_match_interrupt_request__disable (0x0 << 5) -#define DISPSTAT__v_counter_match_interrupt_request__enable (0x1 << 5) -#define DISPSTAT__h_blank_interrupt_request__disable (0x0 << 4) -#define DISPSTAT__h_blank_interrupt_request__enable (0x1 << 4) -#define DISPSTAT__v_blank_interrupt_request__disable (0x0 << 3) -#define DISPSTAT__v_blank_interrupt_request__enable (0x1 << 3) -#define DISPSTAT__v_counter_match_detection__outside_a_matching_interval (0x0 << 2) -#define DISPSTAT__v_counter_match_detection__during_a_matching_interval (0x1 << 2) -#define DISPSTAT__h_blank_detection__outside_h_blank_interval (0x0 << 1) -#define DISPSTAT__h_blank_detection__during_h_blank_interval (0x1 << 1) -#define DISPSTAT__v_blank_detection__outside_v_blank_interval (0x0 << 0) -#define DISPSTAT__v_blank_detection__during_v_blank_interval (0x1 << 0) -#define VCOUNT__v_counter_value(v) (((v) >> 0) & 0x1ff) -#define BG0CNT__screen_size__256x256 (0x0 << 14) -#define BG0CNT__screen_size__512x256 (0x1 << 14) -#define BG0CNT__screen_size__256x512 (0x2 << 14) -#define BG0CNT__screen_size__512x512 (0x3 << 14) -#define BG0CNT__bg_extended_palette_slot__slot_0 (0x0 << 13) -#define BG0CNT__bg_extended_palette_slot__slot_2 (0x1 << 13) -#define BG0CNT__screen_base_block(v) (((v) & 0x1f) << 8) -#define BG0CNT__color_mode__16_color_mode (0x0 << 7) -#define BG0CNT__color_mode__256_color_mode (0x1 << 7) -#define BG0CNT__mosaic__disable (0x0 << 6) -#define BG0CNT__mosaic__enable (0x1 << 6) -#define BG0CNT__character_base_block(v) (((v) & 0xf) << 2) -#define BG0CNT__priority(v) (((v) & 0x3) << 0) -#define BG1CNT__screen_size__256x256 (0x0 << 14) -#define BG1CNT__screen_size__512x256 (0x1 << 14) -#define BG1CNT__screen_size__256x512 (0x2 << 14) -#define BG1CNT__screen_size__512x512 (0x3 << 14) -#define BG1CNT__bg_extended_palette_slot__slot_1 (0x0 << 13) -#define BG1CNT__bg_extended_palette_slot__slot_3 (0x1 << 13) -#define BG1CNT__screen_base_block(v) (((v) & 0x1f) << 8) -#define BG1CNT__color_mode__16_color_mode (0x0 << 7) -#define BG1CNT__color_mode__256_color_mode (0x1 << 7) -#define BG1CNT__mosaic__disable (0x0 << 6) -#define BG1CNT__mosaic__enable (0x1 << 6) -#define BG1CNT__character_base_block(v) (((v) & 0xf) << 2) -#define BG1CNT__priority(v) (((v) & 0x3) << 0) -#define BG2CNT__screen_size__256x256 (0x0 << 14) -#define BG2CNT__screen_size__512x256 (0x1 << 14) -#define BG2CNT__screen_size__256x512 (0x2 << 14) -#define BG2CNT__screen_size__512x512 (0x3 << 14) -#define BG2CNT__out_of_area_processing__transparent_display (0x0 << 13) -#define BG2CNT__out_of_area_processing__wraparound_display (0x1 << 13) -#define BG2CNT__screen_base_block(v) (((v) & 0x1f) << 8) -#define BG2CNT__color_mode__16_color_mode (0x0 << 7) -#define BG2CNT__color_mode__256_color_mode (0x1 << 7) -#define BG2CNT__mosaic__disable (0x0 << 6) -#define BG2CNT__mosaic__enable (0x1 << 6) -#define BG2CNT__character_base_block(v) (((v) & 0xf) << 2) -#define BG2CNT__priority(v) (((v) & 0x3) << 0) -#define BG3CNT__screen_size__256x256 (0x0 << 14) -#define BG3CNT__screen_size__512x256 (0x1 << 14) -#define BG3CNT__screen_size__256x512 (0x2 << 14) -#define BG3CNT__screen_size__512x512 (0x3 << 14) -#define BG3CNT__out_of_area_processing__transparent_display (0x0 << 13) -#define BG3CNT__out_of_area_processing__wraparound_display (0x1 << 13) -#define BG3CNT__screen_base_block(v) (((v) & 0x1f) << 8) -#define BG3CNT__color_mode__16_color_mode (0x0 << 7) -#define BG3CNT__color_mode__256_color_mode (0x1 << 7) -#define BG3CNT__mosaic__disable (0x0 << 6) -#define BG3CNT__mosaic__enable (0x1 << 6) -#define BG3CNT__character_base_block(v) (((v) & 0xf) << 2) -#define BG3CNT__priority(v) (((v) & 0x3) << 0) -#define OBJ_ATTRIBUTE_0__obj_shape__square (0x0 << 14) -#define OBJ_ATTRIBUTE_0__obj_shape__long_rectangle (0x1 << 14) -#define OBJ_ATTRIBUTE_0__obj_shape__tall_rectangle (0x2 << 14) -#define OBJ_ATTRIBUTE_0__color_mode__16_color_mode (0x0 << 13) -#define OBJ_ATTRIBUTE_0__color_mode__256_color_mode (0x1 << 13) -#define OBJ_ATTRIBUTE_0__mosaic__off (0x0 << 12) -#define OBJ_ATTRIBUTE_0__mosaic__on (0x1 << 12) -#define OBJ_ATTRIBUTE_0__obj_mode__normal (0x0 << 10) -#define OBJ_ATTRIBUTE_0__obj_mode__translucent (0x1 << 10) -#define OBJ_ATTRIBUTE_0__obj_mode__obj_window (0x2 << 10) -#define OBJ_ATTRIBUTE_0__obj_mode__bitmap_obj (0x3 << 10) -#define OBJ_ATTRIBUTE_0__double_size__disable (0x0 << 9) -#define OBJ_ATTRIBUTE_0__double_size__enable (0x1 << 9) -#define OBJ_ATTRIBUTE_0__affine_transformation__disable (0x0 << 8) -#define OBJ_ATTRIBUTE_0__affine_transformation__enable (0x1 << 8) -#define OBJ_ATTRIBUTE_0__y_coordinate(v) (((v) & 0xff) << 0) -#define OBJ_ATTRIBUTE_1__obj_size(v) (((v) & 0x3) << 14) -#define OBJ_ATTRIBUTE_1__affine_transformation_parameter(v) (((v) & 0x1f) << 9) -#define OBJ_ATTRIBUTE_1__x_coordinate(v) (((v) & 0x1ff) << 0) -#define OBJ_ATTRIBUTE_2__color_parameter(v) (((v) & 0xf) << 12) -#define OBJ_ATTRIBUTE_2__display_priority(v) (((v) & 0x3) << 10) -#define OBJ_ATTRIBUTE_2__character_name(v) (((v) & 0x3ff) << 0) diff --git a/registers/graphics_engine_bits.csv b/registers/graphics_engine_bits.csv index b05b1e8..789c316 100644 --- a/registers/graphics_engine_bits.csv +++ b/registers/graphics_engine_bits.csv @@ -40,8 +40,8 @@ "DISPCNT","bitmap_obj_mapping_mode","6-5","1d_mapping","0b10",, "DISPCNT","character_obj_mapping_mode",4,"2d_mapping",0,, "DISPCNT","character_obj_mapping_mode",4,"1d_mapping",1,, -"DISPCNT","2d_3d_display_selection_for_bg0",3,"display_2d_graphics",0,, -"DISPCNT","2d_3d_display_selection_for_bg0",3,"display_3d_graphics",1,, +"DISPCNT","display_selection_for_bg0",3,"2d_graphics",0,, +"DISPCNT","display_selection_for_bg0",3,"3d_graphics",1,, "DISPCNT","bg_mode","2-0","text0_text1_text2_text3",0,, "DISPCNT","bg_mode","2-0","text0_text1_text2_affine3",1,, "DISPCNT","bg_mode","2-0","text0_text1_affine2_affine3",2,, @@ -121,6 +121,166 @@ "BG3CNT",,"5-2","character_base_block",,"0b1111", "BG3CNT",,"1-0","priority",,"0b11", ,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +"DISP3DCNT","clear_image",14,"disable",0,, +"DISP3DCNT","clear_image",14,"enable",1,, +"DISP3DCNT",,13,"polygon_list_ram_and_vertex_ram_overflow",1,, +"DISP3DCNT",,12,"color_buffer_underflow",1,, +"DISP3DCNT",,"11-8","fog_shift",,"0b1111", +"DISP3DCNT","fog_master",7,"disable",0,, +"DISP3DCNT","fog_master",7,"enable",1,, +"DISP3DCNT","fog_mode",6,"blending_using_pixel_color_value_and_alpha_value",0,, +"DISP3DCNT","fog_mode",6,"blending_using_only_pixel_alpha_value",1,, +"DISP3DCNT","edge_marking",5,"disable",0,, +"DISP3DCNT","edge_marking",5,"enable",1,, +"DISP3DCNT","anti_aliasing",4,"disable",0,, +"DISP3DCNT","anti_aliasing",4,"enable",1,, +"DISP3DCNT","alpha_blending",3,"disable",0,, +"DISP3DCNT","alpha_blending",3,"enable",1,, +"DISP3DCNT","alpha_test",2,"disable",0,, +"DISP3DCNT","alpha_test",2,"enable",1,, +"DISP3DCNT","toon_highlight",1,"toon_shading",0,, +"DISP3DCNT","toon_highlight",1,"highlight_shading",1,, +"DISP3DCNT","texture_mapping",0,"disable",0,, +"DISP3DCNT","texture_mapping",0,"enable",1,, +,,,,,, +"MTX_MODE","matrix_mode","1-0","projection","0b00",, +"MTX_MODE","matrix_mode","1-0","position","0b01",, +"MTX_MODE","matrix_mode","1-0","position_and_vector","0b10",, +"MTX_MODE","matrix_mode","1-0","texture","0b11",, +,,,,,, +"MTX_POP",,"5-0","number_of_pops",,"0b111111", +,,,,,, +"MTX_STORE",,"4-0","index",,"0b11111", +,,,,,, +"MTX_RESTORE",,"4-0","position",,"0b11111", +,,,,,, +"NORMAL",,"29-20","z_component",,"0x7ff", +"NORMAL",,"19-10","y_component",,"0x7ff", +"NORMAL",,"9-0","x_component",,"0x7ff", +,,,,,, +"TEXCOORD",,"31-16","t_coordinate",,"0xff", +"TEXCOORD",,"15-0","x_coordinate",,"0xff", +,,,,,, +"VTX_16",,"31-16","y_coordinate",,"0xff", +"VTX_16",,"15-0","x_coordinate",,"0xff", +"VTX_16",,"15-0","z_coordinate",,"0xff", +,,,,,, +"VTX_10",,"29-20","z_coordinate",,"0x7ff", +"VTX_10",,"19-10","y_coordinate",,"0x7ff", +"VTX_10",,"9-0","x_coordinate",,"0x7ff", +,,,,,, +"VTX_XY",,"31-16","y_coordinate",,"0xff", +"VTX_XY",,"15-0","x_coordinate",,"0xff", +,,,,,, +"VTX_XZ",,"31-16","z_coordinate",,"0xff", +"VTX_XZ",,"15-0","z_coordinate",,"0xff", +,,,,,, +"VTX_YZ",,"31-16","z_coordinate",,"0xff", +"VTX_YZ",,"15-0","y_coordinate",,"0xff", +,,,,,, +"VTX_DIFF",,"29-20","z_coordinate",,"0x7ff", +"VTX_DIFF",,"19-10","y_coordinate",,"0x7ff", +"VTX_DIFF",,"9-0","x_coordinate",,"0x7ff", +,,,,,, +"POLYGON_ATTR",,"29-24","polygon_id",,"0b111111", +"POLYGON_ATTR",,"20-16","alpha_value",,"0b11111", +"POLYGON_ATTR","fog",15,"disable",0,, +"POLYGON_ATTR","fog",15,"enable",1,, +"POLYGON_ATTR","depth_test_condition",14,"render_when_depth_value_is_smaller_than_buffer_value",0,, +"POLYGON_ATTR","depth_test_condition",14,"render_when_depth_value_is_equal_to_buffer_value",1,, +"POLYGON_ATTR","one_dot_polygon",13,"do_not_render",0,, +"POLYGON_ATTR","one_dot_polygon",13,"render",1,, +"POLYGON_ATTR","far_plane_intersection",12,"delete",0,, +"POLYGON_ATTR","far_plane_intersection",12,"clip",1,, +"POLYGON_ATTR","translucent_depth_value_update",11,"do_not_update",0,, +"POLYGON_ATTR","translucent_depth_value_update",11,"update",1,, +"POLYGON_ATTR","render_front_surface",7,"disable",0,, +"POLYGON_ATTR","render_front_surface",7,"enable",1,, +"POLYGON_ATTR","render_back_surface",6,"disable",0,, +"POLYGON_ATTR","render_back_surface",6,"enable",1,, +"POLYGON_ATTR","polygon_mode","5-4","modulation","0b00",, +"POLYGON_ATTR","polygon_mode","5-4","decal","0b01",, +"POLYGON_ATTR","polygon_mode","5-4","toon","0b10",, +"POLYGON_ATTR","polygon_mode","5-4","shadow","0b11",, +"POLYGON_ATTR","light_3",3,"disable",0,, +"POLYGON_ATTR","light_3",3,"enable",1,, +"POLYGON_ATTR","light_2",2,"disable",0,, +"POLYGON_ATTR","light_2",2,"enable",1,, +"POLYGON_ATTR","light_1",1,"disable",0,, +"POLYGON_ATTR","light_1",1,"enable",1,, +"POLYGON_ATTR","light_0",0,"disable",0,, +"POLYGON_ATTR","light_0",0,"enable",1,, +,,,,,, +"TEXIMAGE_PARAM","texture_coordinate_transformation_mode","31-30","do_not_transform_texture_coordinates","0b00",, +"TEXIMAGE_PARAM","texture_coordinate_transformation_mode","31-30","texcoord_source","0b01",, +"TEXIMAGE_PARAM","texture_coordinate_transformation_mode","31-30","normal_source","0b10",, +"TEXIMAGE_PARAM","texture_coordinate_transformation_mode","31-30","vextex_source","0b11",, +"TEXIMAGE_PARAM","palette_color0_transparency",29,"palette_setting",0,, +"TEXIMAGE_PARAM","palette_color0_transparency",29,"always_transparent",1,, +"TEXIMAGE_PARAM","texture_format","28-26","no_texture",0,, +"TEXIMAGE_PARAM","texture_format","28-26","a3i5_translucent",1,, +"TEXIMAGE_PARAM","texture_format","28-26","4_color_palette",2,, +"TEXIMAGE_PARAM","texture_format","28-26","16_color_palette",3,, +"TEXIMAGE_PARAM","texture_format","28-26","256_color_palette",4,, +"TEXIMAGE_PARAM","texture_format","28-26","4x4_texel_compressed",5,, +"TEXIMAGE_PARAM","texture_format","28-26","a5i3_translucent",6,, +"TEXIMAGE_PARAM","texture_format","28-26","direct",7,, +"TEXIMAGE_PARAM","t_size","25-23","8_texels",0,, +"TEXIMAGE_PARAM","t_size","25-23","16_texels",1,, +"TEXIMAGE_PARAM","t_size","25-23","32_texels",2,, +"TEXIMAGE_PARAM","t_size","25-23","64_texels",3,, +"TEXIMAGE_PARAM","t_size","25-23","128_texels",4,, +"TEXIMAGE_PARAM","t_size","25-23","256_texels",5,, +"TEXIMAGE_PARAM","t_size","25-23","512_texels",6,, +"TEXIMAGE_PARAM","t_size","25-23","1024_texels",7,, +"TEXIMAGE_PARAM","s_size","22-20","8_texels",0,, +"TEXIMAGE_PARAM","s_size","22-20","16_texels",1,, +"TEXIMAGE_PARAM","s_size","22-20","32_texels",2,, +"TEXIMAGE_PARAM","s_size","22-20","64_texels",3,, +"TEXIMAGE_PARAM","s_size","22-20","128_texels",4,, +"TEXIMAGE_PARAM","s_size","22-20","256_texels",5,, +"TEXIMAGE_PARAM","s_size","22-20","512_texels",6,, +"TEXIMAGE_PARAM","s_size","22-20","1024_texels",7,, +"TEXIMAGE_PARAM","flip_t",19,"do_not_flip",0,, +"TEXIMAGE_PARAM","flip_t",19,"flip",1,, +"TEXIMAGE_PARAM","flip_s",18,"do_not_flip",0,, +"TEXIMAGE_PARAM","flip_s",18,"flip",1,, +"TEXIMAGE_PARAM","repeat_t",17,"do_not_repeat",0,, +"TEXIMAGE_PARAM","repeat_t",17,"repeat",1,, +"TEXIMAGE_PARAM","repeat_s",16,"do_not_repeat",0,, +"TEXIMAGE_PARAM","repeat_s",16,"repeat",1,, +"TEXIMAGE_PARAM",,"15-0","texture_starting_address",,"0xffff", +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, +,,,,,, "OBJ_ATTRIBUTE_0","obj_shape","15-14","square","0b00",, "OBJ_ATTRIBUTE_0","obj_shape","15-14","long_rectangle","0b01",, "OBJ_ATTRIBUTE_0","obj_shape","15-14","tall_rectangle","0b10",, @@ -137,3 +297,11 @@ "OBJ_ATTRIBUTE_0","affine_transformation",8,"disable",0,, "OBJ_ATTRIBUTE_0","affine_transformation",8,"enable",1,, "OBJ_ATTRIBUTE_0",,"7-0","y_coordinate",,"0xff", +,,,,,, +"OBJ_ATTRIBUTE_1",,"15-14","obj_size",,"0b11", +"OBJ_ATTRIBUTE_1",,"13-9","affine_transformation_parameter",,"0b11111", +"OBJ_ATTRIBUTE_1",,"8-0","x_coordinate",,"0x1ff", +,,,,,, +"OBJ_ATTRIBUTE_2",,"15-12","color_parameter",,"0b1111", +"OBJ_ATTRIBUTE_2",,"11-10","display_priority",,"0b11", +"OBJ_ATTRIBUTE_2",,"9-0","character_name",,"0x3ff", diff --git a/registers/graphics_engine_bits.ods b/registers/graphics_engine_bits.ods index a7c21c5ec6563dd8ca08ced06618011eefda1d88..bd85bd95e69c06f1f9ab6d9cad791ffcafbb332e 100644 GIT binary patch delta 10379 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