From 92428711e4e7d0b18da59242afb3b3252e360751 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Sat, 26 Apr 2025 03:03:36 -0500 Subject: [PATCH] 20kdm2: use twiddled textures --- bsp/20kdm2/texture.inc | 50 ++++++++++++++--------------- bsp/20kdm2/textures/sfx/flame1.jpg | Bin 0 -> 5653 bytes bsp/{gen.sh => data_gen.sh} | 2 +- bsp/generate.py | 1 - bsp/mipmapped | Bin 0 -> 32768 bytes bsp/texture_gen.sh | 1 + example/bsp/20kdm2.cpp | 8 ++--- 7 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 bsp/20kdm2/textures/sfx/flame1.jpg rename bsp/{gen.sh => data_gen.sh} (90%) delete mode 120000 bsp/generate.py create mode 100644 bsp/mipmapped create mode 100644 bsp/texture_gen.sh diff --git a/bsp/20kdm2/texture.inc b/bsp/20kdm2/texture.inc index ff54214..31f4a1c 100644 --- a/bsp/20kdm2/texture.inc +++ b/bsp/20kdm2/texture.inc @@ -17,7 +17,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7steptop2_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7steptop2_data_size, - .offset = 163840, + .offset = 327680, .width = 256, .height = 32, .v_mul = 1.0, // 32 @@ -25,7 +25,7 @@ { .start = (void *)0, .size = (uint32_t)0, - .offset = 172032, + .offset = 344064, .width = 0, .height = 0, .v_mul = 0, // 0 @@ -33,7 +33,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7dimfloor_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7dimfloor_data_size, - .offset = 172032, + .offset = 344064, .width = 128, .height = 128, .v_mul = 1.0, // 128 @@ -41,7 +41,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7brickfloor01_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7brickfloor01_data_size, - .offset = 188416, + .offset = 376832, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -49,7 +49,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7bmtrim_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7bmtrim_data_size, - .offset = 253952, + .offset = 507904, .width = 256, .height = 64, .v_mul = 1.0, // 64 @@ -57,7 +57,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7sbrickfloor_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7sbrickfloor_data_size, - .offset = 270336, + .offset = 540672, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -65,7 +65,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7brnmetal_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7brnmetal_data_size, - .offset = 335872, + .offset = 671744, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -73,7 +73,7 @@ { .start = (void *)0, .size = (uint32_t)0, - .offset = 401408, + .offset = 802816, .width = 0, .height = 0, .v_mul = 0, // 0 @@ -81,7 +81,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7beam02_red_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7beam02_red_data_size, - .offset = 401408, + .offset = 802816, .width = 64, .height = 128, .v_mul = 1.0, // 128 @@ -89,7 +89,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7swindow_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7swindow_data_size, - .offset = 409600, + .offset = 819200, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -97,7 +97,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7bigwall_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7bigwall_data_size, - .offset = 475136, + .offset = 950272, .width = 256, .height = 1024, .v_mul = 0.75, // 768 @@ -105,7 +105,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7panelwood_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7panelwood_data_size, - .offset = 671744, + .offset = 1343488, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -113,7 +113,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7beam01_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7beam01_data_size, - .offset = 737280, + .offset = 1474560, .width = 64, .height = 256, .v_mul = 1.0, // 256 @@ -121,7 +121,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_gothic_floor_xstepborder5_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_gothic_floor_xstepborder5_data_size, - .offset = 753664, + .offset = 1507328, .width = 256, .height = 64, .v_mul = 0.78125, // 50 @@ -129,7 +129,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_liquids_lavahell_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_liquids_lavahell_data_size, - .offset = 766464, + .offset = 1532928, .width = 128, .height = 128, .v_mul = 1.0, // 128 @@ -137,7 +137,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_e7_e7steptop_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_e7_e7steptop_data_size, - .offset = 782848, + .offset = 1565696, .width = 256, .height = 32, .v_mul = 1.0, // 32 @@ -145,7 +145,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_gothic_trim_metalblackwave01_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_gothic_trim_metalblackwave01_data_size, - .offset = 791040, + .offset = 1582080, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -153,7 +153,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_stone_pjrock1_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_stone_pjrock1_data_size, - .offset = 856576, + .offset = 1713152, .width = 256, .height = 256, .v_mul = 1.0, // 256 @@ -161,7 +161,7 @@ { .start = (void *)0, .size = (uint32_t)0, - .offset = 922112, + .offset = 1844224, .width = 0, .height = 0, .v_mul = 0, // 0 @@ -169,7 +169,7 @@ { .start = (void *)0, .size = (uint32_t)0, - .offset = 922112, + .offset = 1844224, .width = 0, .height = 0, .v_mul = 0, // 0 @@ -177,7 +177,7 @@ { .start = (void *)&_binary_bsp_20kdm2_models_mapobjects_timlamp_timlamp_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_models_mapobjects_timlamp_timlamp_data_size, - .offset = 922112, + .offset = 1844224, .width = 128, .height = 128, .v_mul = 1.0, // 128 @@ -185,7 +185,7 @@ { .start = (void *)0, .size = (uint32_t)0, - .offset = 938496, + .offset = 1876992, .width = 0, .height = 0, .v_mul = 0, // 0 @@ -193,7 +193,7 @@ { .start = (void *)&_binary_bsp_20kdm2_textures_sfx_flame2_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_textures_sfx_flame2_data_size, - .offset = 938496, + .offset = 1876992, .width = 128, .height = 256, .v_mul = 1.0, // 256 @@ -201,7 +201,7 @@ { .start = (void *)&_binary_bsp_20kdm2_models_mapobjects_gratelamp_gratetorch2_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_models_mapobjects_gratelamp_gratetorch2_data_size, - .offset = 971264, + .offset = 1942528, .width = 32, .height = 64, .v_mul = 1.0, // 64 @@ -209,7 +209,7 @@ { .start = (void *)&_binary_bsp_20kdm2_models_mapobjects_gratelamp_gratetorch2b_data_start, .size = (uint32_t)&_binary_bsp_20kdm2_models_mapobjects_gratelamp_gratetorch2b_data_size, - .offset = 973312, + .offset = 1946624, .width = 32, .height = 64, .v_mul = 1.0, // 64 diff --git a/bsp/20kdm2/textures/sfx/flame1.jpg b/bsp/20kdm2/textures/sfx/flame1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..892bab7664f0f16380649b8fb06a3104fe4522d1 GIT binary patch literal 5653 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 ; - uint32_t texture_address = texture_memory_alloc.texture.start + font_offset + texture->offset * 2; + uint32_t texture_address = texture_memory_alloc.texture.start + font_offset + texture->offset; uint32_t texture_control_word = texture_control_word::pixel_format::_565 - | texture_control_word::scan_order::non_twiddled + | texture_control_word::scan_order::twiddled | texture_control_word::texture_address(texture_address / 8) ; @@ -1152,7 +1152,7 @@ void transfer_textures() int textures_length = (sizeof (textures)) / (sizeof (textures[0])); for (int i = 0; i < textures_length; i++) { - uint32_t offset = texture_memory_alloc.texture.start + font_offset + textures[i].offset * 2; + uint32_t offset = texture_memory_alloc.texture.start + font_offset + textures[i].offset; void * dst = reinterpret_cast(&ta_fifo_texture_memory[offset / 4]); void * src = textures[i].start; uint32_t size = textures[i].size; @@ -1325,7 +1325,7 @@ int main() 0xff202040); } - ta_parameter_writer writer = ta_parameter_writer(ta_parameter_buf); + ta_parameter_writer writer = ta_parameter_writer(ta_parameter_buf, (sizeof (ta_parameter_buf))); video_output::set_mode_vga();