diff --git a/first.jai b/first.jai index d4125e0..8bb5b76 100644 --- a/first.jai +++ b/first.jai @@ -238,6 +238,7 @@ wasm_build :: (opts: Build_Options, trueno_opts: Trueno_Build_Options) { "emcc", "src/platform_specific/main.c", "dist/main.o", "modules/sokol-jai/sokol/gfx/sokol_gfx_wasm_gl_release.a", "modules/sokol-jai/sokol/log/sokol_log_wasm_gl_release.a", "modules/sokol-jai/sokol/audio/sokol_audio_wasm_gl_release.a", "modules/sokol-jai/sokol/time/sokol_time_wasm_gl_release.a", "modules/sokol-jai/sokol/app/sokol_app_wasm_gl_release.a", "modules/sokol-jai/sokol/glue/sokol_glue_wasm_gl_release.a", "modules/sokol-jai/sokol/fetch/sokol_fetch_wasm_gl_release.a", "modules/sokol-jai/sokol/gl/sokol_gl_wasm_gl_release.a", "modules/sokol-jai/sokol/fontstash/sokol_fontstash_wasm_gl_release.a", "modules/sokol-jai/sokol/stbi/stb_image.a", + "modules/sokol-jai/sokol/stbv/stb_vorbis.a", "-o", "dist/index.html", "-sSTACK_SIZE=10MB", "-sALLOW_MEMORY_GROWTH", diff --git a/log_nvprosample.txt b/log_nvprosample.txt index 7da0b9d..696bb8c 100644 --- a/log_nvprosample.txt +++ b/log_nvprosample.txt @@ -1,6 +1,6 @@ _______________ Vulkan Version: - - available: 1.3.296 + - available: 1.4.309 - requesting: 1.3.0 ______________________ Used Instance Layers : @@ -8,17 +8,15 @@ VK_LAYER_KHRONOS_validation Used Instance Extensions : ____________________ -Devices : 2 -0: AMD Radeon RX 6700 XT (RADV NAVI22) +Devices : 1 +0: AMD Radeon RX 6950 XT - Compatible -1: llvmpipe (LLVM 20.1.2, 256 bits) - - Compatible -Compatible physical devices found : 2 +Compatible physical devices found : 1 Using Device: - - Device Name : AMD Radeon RX 6700 XT (RADV NAVI22) + - Device Name : AMD Radeon RX 6950 XT - Vendor : AMD - - Driver Version : 25.2.8 - - API Version : 1.4.318 + - Driver Version : 2.0.341 + - API Version : 1.4.308 - Device Type : Discrete GPU ________________________ Used Device Extensions : @@ -26,4 +24,139 @@ VK_KHR_deferred_host_operations VK_KHR_acceleration_structure VK_KHR_ray_query -BLAS Compaction: 0.3MB -> 0.2MB (0.1MB saved, 32.1% smaller) +BLAS Compaction: 0.7MB -> 0.2MB (0.5MB saved, 65.9% smaller) +_______________ +Vulkan Version: + - available: 1.4.309 + - requesting: 1.3.0 +______________________ +Used Instance Layers : +VK_LAYER_KHRONOS_validation + +Used Instance Extensions : +____________________ +Devices : 1 +0: AMD Radeon RX 6950 XT + - Compatible +Compatible physical devices found : 1 +Using Device: + - Device Name : AMD Radeon RX 6950 XT + - Vendor : AMD + - Driver Version : 2.0.341 + - API Version : 1.4.308 + - Device Type : Discrete GPU +________________________ +Used Device Extensions : +VK_KHR_deferred_host_operations +VK_KHR_acceleration_structure +VK_KHR_ray_query + +BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 66.0% smaller) +_______________ +Vulkan Version: + - available: 1.4.309 + - requesting: 1.3.0 +______________________ +Used Instance Layers : +VK_LAYER_KHRONOS_validation + +Used Instance Extensions : +____________________ +Devices : 1 +0: AMD Radeon RX 6950 XT + - Compatible +Compatible physical devices found : 1 +Using Device: + - Device Name : AMD Radeon RX 6950 XT + - Vendor : AMD + - Driver Version : 2.0.341 + - API Version : 1.4.308 + - Device Type : Discrete GPU +________________________ +Used Device Extensions : +VK_KHR_deferred_host_operations +VK_KHR_acceleration_structure +VK_KHR_ray_query + +BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 66.0% smaller) +_______________ +Vulkan Version: + - available: 1.4.309 + - requesting: 1.3.0 +______________________ +Used Instance Layers : +VK_LAYER_KHRONOS_validation + +Used Instance Extensions : +____________________ +Devices : 1 +0: AMD Radeon RX 6950 XT + - Compatible +Compatible physical devices found : 1 +Using Device: + - Device Name : AMD Radeon RX 6950 XT + - Vendor : AMD + - Driver Version : 2.0.341 + - API Version : 1.4.308 + - Device Type : Discrete GPU +________________________ +Used Device Extensions : +VK_KHR_deferred_host_operations +VK_KHR_acceleration_structure +VK_KHR_ray_query + +BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 66.0% smaller) +_______________ +Vulkan Version: + - available: 1.4.309 + - requesting: 1.3.0 +______________________ +Used Instance Layers : +VK_LAYER_KHRONOS_validation + +Used Instance Extensions : +____________________ +Devices : 1 +0: AMD Radeon RX 6950 XT + - Compatible +Compatible physical devices found : 1 +Using Device: + - Device Name : AMD Radeon RX 6950 XT + - Vendor : AMD + - Driver Version : 2.0.341 + - API Version : 1.4.308 + - Device Type : Discrete GPU +________________________ +Used Device Extensions : +VK_KHR_deferred_host_operations +VK_KHR_acceleration_structure +VK_KHR_ray_query + +BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 65.9% smaller) +_______________ +Vulkan Version: + - available: 1.4.309 + - requesting: 1.3.0 +______________________ +Used Instance Layers : +VK_LAYER_KHRONOS_validation + +Used Instance Extensions : +____________________ +Devices : 1 +0: AMD Radeon RX 6950 XT + - Compatible +Compatible physical devices found : 1 +Using Device: + - Device Name : AMD Radeon RX 6950 XT + - Vendor : AMD + - Driver Version : 2.0.341 + - API Version : 1.4.308 + - Device Type : Discrete GPU +________________________ +Used Device Extensions : +VK_KHR_deferred_host_operations +VK_KHR_acceleration_structure +VK_KHR_ray_query + +BLAS Compaction: 0.8MB -> 0.3MB (0.5MB saved, 65.9% smaller) diff --git a/src/settings_menu.jai b/src/settings_menu.jai index ab8a89b..9986067 100644 --- a/src/settings_menu.jai +++ b/src/settings_menu.jai @@ -58,8 +58,17 @@ AUDIO_LABELS :: string.["Master Volume", "Music Volume", "Sound Effects"]; GRAPHICS_ITEMS :: string.["Fullscreen"]; } +main_items :: () -> []string { + result : [..]string; + result.allocator = temp; + array_add(*result, MAIN_ITEMS[0]); + for g_settings_config.main_items array_add(*result, it.label); + for 1..MAIN_ITEMS.count-1 array_add(*result, MAIN_ITEMS[it]); + return result; +} + page_items :: () -> []string { - if g_settings.page == .MAIN return MAIN_ITEMS; + if g_settings.page == .MAIN return main_items(); if g_settings.page == .SETTINGS return SETTINGS_ITEMS; if g_settings.page == .AUDIO return AUDIO_LABELS; if g_settings.page == .GRAPHICS return GRAPHICS_ITEMS; @@ -224,9 +233,17 @@ handle_enter :: (index: s32 = -1) { i := ifx index >= 0 then index else g_settings.cursor; if g_settings.page == { case .MAIN; + game_items := cast(s32) g_settings_config.main_items.count; if i == 0 { save_settings(); g_settings.open = false; } - if i == 1 then navigate_to(.SETTINGS); - if i == 2 { save_settings(); sapp_request_quit(); } + else if i <= game_items { + save_settings(); + g_settings.open = false; + g_settings_config.main_items[i - 1].on_select(); + } else { + i -= game_items; + if i == 1 then navigate_to(.SETTINGS); + if i == 2 { save_settings(); sapp_request_quit(); } + } case .SETTINGS; if i == 0 then navigate_to(.AUDIO); if i == 1 then navigate_to(.GRAPHICS); @@ -255,10 +272,17 @@ Phosphene_Config :: struct { palette : []Vector3; } +// An entry the game adds to the pause menu. Choosing it closes the menu first. +Settings_Menu_Item :: struct { + label : string; + on_select : (); +} + Settings_Menu_Config :: struct { game_title : string = "TRUENO"; credits : string = "Trueno engine by Tuomas Katajisto 2026"; phosphenes : Phosphene_Config; + main_items : []Settings_Menu_Item; // must outlive the config, e.g. a constant array } set_settings_config :: (config: Settings_Menu_Config) { diff --git a/test_packs/game_core.pack b/test_packs/game_core.pack index 79cf58e..187235a 100644 Binary files a/test_packs/game_core.pack and b/test_packs/game_core.pack differ