From 49bbe8f48231b023c82a3f6d9a5a11dbe8b3c77d Mon Sep 17 00:00:00 2001 From: unofficial-fish Date: Fri, 14 Aug 2026 00:35:46 +0000 Subject: [PATCH 1/2] 2097 track previews --- src/wipeout/main_menu.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/wipeout/main_menu.c b/src/wipeout/main_menu.c index b0ff60d..7c8fc27 100755 --- a/src/wipeout/main_menu.c +++ b/src/wipeout/main_menu.c @@ -25,7 +25,6 @@ static void page_options_highscores_init(menu_t *menu); static uint16_t background; static texture_list_t track_images; static menu_t *main_menu; - static struct { Object *race_classes[2]; Object *teams[4]; @@ -34,6 +33,7 @@ static struct { struct { Object *championship, *msdos, *single_race, *options; } misc; Object *rescue; Object *controller; + Object *wipeout_2097_track_previews[8]; } models; static void draw_model(Object *model, vec2_t offset, vec3_t pos, float rotation) { @@ -601,15 +601,23 @@ static void button_circuit_select(menu_t *menu, int data) { game_set_scene(GAME_SCENE_RACE); } -static void page_circuit_additional_draw(menu_t *menu, int data) {} +static void page_circuit_additional_draw(menu_t *menu, int data) { + // We don't have wipeout64 previews (and 'Unfinished Track' hasn't one either) + if (data > 14) return; + + int model_index = (data) % 8; + draw_model(models.wipeout_2097_track_previews[model_index], vec2(0, -0.2), vec3(200, -200, -1100), system_cycle_time()); +} static void page_circuit_additional_init(menu_t *menu) { + // It would be nice to switch to wipeout 2097's background here, if present, + // but the menu system is not set up for this. menu_page_t *page = menu_push(menu, "ADDITIONAL CIRCUITS", page_circuit_additional_draw); - flags_add(page->layout_flags, MENU_FIXED); - page->title_pos = vec2i(0, 30); - page->title_anchor = UI_POS_TOP | UI_POS_CENTER; - page->items_pos = vec2i(0, 50); - page->items_anchor = UI_POS_TOP | UI_POS_CENTER; + flags_set(page->layout_flags, MENU_VERTICAL | MENU_FIXED); + page->title_pos = vec2i(20, 30); + page->title_anchor = UI_POS_TOP | UI_POS_LEFT; + page->items_pos = vec2i(20, 50); + page->items_anchor = UI_POS_TOP | UI_POS_LEFT; for (int i = CIRCUIT_TALONS_REACH; i < len(def.circuits); i++) { if (g.installed_circuits[i] && @@ -669,6 +677,7 @@ void main_menu_init(void) { main_menu = mem_bump(sizeof(menu_t)); background = image_get_texture("wipeout/textures/wipeout1.tim"); + track_images = image_get_compressed_textures("wipeout/textures/track.cmp"); objects_unpack(models.race_classes, objects_load("wipeout/common/leeg.prm", image_get_compressed_textures("wipeout/common/leeg.cmp"))); @@ -678,6 +687,9 @@ void main_menu_init(void) { objects_unpack(models.rescue, objects_load("wipeout/common/rescu.prm", image_get_compressed_textures("wipeout/common/rescu.cmp"))); objects_unpack(models.controller, objects_load("wipeout/common/pad1.prm", image_get_compressed_textures("wipeout/common/pad1.cmp"))); objects_unpack(models.misc, objects_load("wipeout/common/msdos.prm", image_get_compressed_textures("wipeout/common/msdos.cmp"))); + if (file_exists("wipeout2/")) { + objects_unpack(models.wipeout_2097_track_previews, objects_load("wipeout2/common/june.prm", texture_list_empty())); + } menu_reset(main_menu); page_main_init(main_menu); From ba7c1f4003035adad738ffbae0af2692bfed9ceb Mon Sep 17 00:00:00 2001 From: unofficial-fish Date: Sat, 29 Aug 2026 03:36:48 +0000 Subject: [PATCH 2/2] Disable backface culling on track previews --- src/wipeout/main_menu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/wipeout/main_menu.c b/src/wipeout/main_menu.c index 7c8fc27..f227a2a 100755 --- a/src/wipeout/main_menu.c +++ b/src/wipeout/main_menu.c @@ -606,7 +606,9 @@ static void page_circuit_additional_draw(menu_t *menu, int data) { if (data > 14) return; int model_index = (data) % 8; + render_set_cull_backface(false); draw_model(models.wipeout_2097_track_previews[model_index], vec2(0, -0.2), vec3(200, -200, -1100), system_cycle_time()); + render_set_cull_backface(true); } static void page_circuit_additional_init(menu_t *menu) {