From 46f6dc67c1a47f38731602cbef04e906e34c67b4 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 21 Apr 2026 00:46:22 -0700 Subject: [PATCH 1/6] make file select card wait times obey instantSaves setting --- src/d/d_file_select.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index 23ceb96f00..17d5f2c4e4 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -70,11 +70,7 @@ dFs_HIO_c::dFs_HIO_c() { select_icon_appear_frames = 5; appear_display_wait_frames = 15; field_0x000d = 15; - #if TARGET_PC - card_wait_frames = 0; - #else card_wait_frames = 90; - #endif test_frame_counts[0] = 1.11f; test_frame_counts[1] = 1.11f; test_frame_counts[2] = 1.11f; @@ -2367,7 +2363,7 @@ void dFile_select_c::CommandExec() { break; } - mWaitTimer = g_fsHIO.card_wait_frames; + mWaitTimer = IF_DUSK(dusk::getSettings().game.instantSaves ? 0 :) g_fsHIO.card_wait_frames; } void dFile_select_c::DataEraseWait() { @@ -4759,7 +4755,7 @@ void dFile_select_c::MemCardFormatYesSel2Disp() { bool isErrorTxtChange = errorTxtChangeAnm(); bool isYnMenuMove = yesnoMenuMoveAnm(); if (isErrorTxtChange == true && isYnMenuMove == true) { - mWaitTimer = g_fsHIO.card_wait_frames; + mWaitTimer = IF_DUSK(dusk::getSettings().game.instantSaves ? 0 :) g_fsHIO.card_wait_frames; mDoMemCd_Format(); mCardCheckProc = MEMCARDCHECKPROC_FORMAT; } @@ -4830,7 +4826,7 @@ void dFile_select_c::MemCardMakeGameFileSelDisp() { if (isErrorTxtChange == true && isYnMenuMove == true && isKetteiTxtDisp == true) { if (field_0x0268 != 0) { - mWaitTimer = g_fsHIO.card_wait_frames; + mWaitTimer = IF_DUSK(dusk::getSettings().game.instantSaves ? 0 :) g_fsHIO.card_wait_frames; setInitSaveData(); dataSave(); mCardCheckProc = MEMCARDCHECKPROC_MAKE_GAMEFILE; From 18d70df188c451d0845514424a9aedafba66fed8 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Tue, 21 Apr 2026 12:17:56 -0400 Subject: [PATCH 2/6] Small Imgui changes for better visibility by end user (#473) Co-authored-by: MelonSpeedruns --- src/dusk/imgui/ImGuiMenuGame.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index 691434427c..f41da74b7f 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -67,7 +67,7 @@ namespace dusk { ToggleFullscreen(); } - if (ImGui::MenuItem("Restore Default Window Size")) { + if (ImGui::Button("Restore Default Window Size")) { getSettings().video.enableFullscreen.setValue(false); VISetWindowFullscreen(false); VISetWindowSize(FB_WIDTH * 2, FB_HEIGHT * 2); @@ -75,6 +75,8 @@ namespace dusk { } } + ImGui::Separator(); + bool vsync = getSettings().video.enableVsync; if (ImGui::Checkbox("Enable VSync", &vsync)) { getSettings().video.enableVsync.setValue(vsync); @@ -312,14 +314,14 @@ namespace dusk { void ImGuiMenuGame::drawAudioMenu() { if (ImGui::BeginMenu("Audio")) { + + ImGui::SeparatorText("Volume"); + ImGui::Text("Master Volume"); if (config::ImGuiSliderInt("##masterVolume", getSettings().audio.masterVolume, 0, 100)) { dusk::audio::SetMasterVolume(getSettings().audio.masterVolume / 100.0f); } - if (config::ImGuiCheckbox("Enable Reverb", getSettings().audio.enableReverb)) { - dusk::audio::SetEnableReverb(getSettings().audio.enableReverb); - } /* // TODO: Implement additional settings ImGui::Text("Main Music Volume"); @@ -339,6 +341,13 @@ namespace dusk { } */ + ImGui::SeparatorText("Effects"); + + if (config::ImGuiCheckbox("Enable Reverb", getSettings().audio.enableReverb)) { + dusk::audio::SetEnableReverb(getSettings().audio.enableReverb); + } + + ImGui::SeparatorText("Tweaks"); config::ImGuiCheckbox("No Low HP Sound", getSettings().game.noLowHpSound); @@ -359,7 +368,11 @@ namespace dusk { if (ImGui::BeginMenu("Input")) { ImGui::SeparatorText("Controller"); - ImGui::MenuItem("Configure Controller", nullptr, &m_showControllerConfig); + if (ImGui::Button("Configure Controller")){ + m_showControllerConfig = !m_showControllerConfig; + } + + ImGui::SeparatorText("Camera"); config::ImGuiCheckbox("Invert Camera X Axis", getSettings().game.invertCameraXAxis); From 595a6f1c9efc6fd7a92a7c2da0dd7e1743a60d9a Mon Sep 17 00:00:00 2001 From: Luke Street Date: Tue, 21 Apr 2026 14:52:16 -0600 Subject: [PATCH 3/6] Enable DoF (+ setting) & fix texture cache leak --- extern/aurora | 2 +- include/dusk/settings.h | 1 + src/dusk/imgui/ImGuiMenuGame.cpp | 2 ++ src/dusk/settings.cpp | 2 ++ src/m_Do/m_Do_graphic.cpp | 3 +++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/extern/aurora b/extern/aurora index 5d420c9f73..ccb9dc1ad7 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 5d420c9f73c93ab9a5dcd052ac92d47362764e80 +Subproject commit ccb9dc1ad78f7e278af19d308a4f3e870ca04889 diff --git a/include/dusk/settings.h b/include/dusk/settings.h index 03749967c9..2cec252006 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -77,6 +77,7 @@ struct UserSettings { ConfigVar enableFrameInterpolation; ConfigVar internalResolutionScale; ConfigVar shadowResolutionMultiplier; + ConfigVar enableDepthOfField; // Audio ConfigVar noLowHpSound; diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index f41da74b7f..448bd531ff 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -165,6 +165,8 @@ namespace dusk { ImGui::Checkbox("Enable LOD Bias", &aurora::gx::enableLodBias); + config::ImGuiCheckbox("Enable Depth of Field", getSettings().game.enableDepthOfField); + ImGui::EndMenu(); } } diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 2bcdbe2185..aacca0dbc9 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -51,6 +51,7 @@ UserSettings g_userSettings = { .enableFrameInterpolation = {"game.enableFrameInterpolation", false}, .internalResolutionScale {"game.internalResolutionScale", 0}, .shadowResolutionMultiplier {"game.shadowResolutionMultiplier", 1}, + .enableDepthOfField {"game.enableDepthOfField", true}, // Audio .noLowHpSound {"game.noLowHpSound", false}, @@ -143,6 +144,7 @@ void registerSettings() { Register(g_userSettings.game.disableWaterRefraction); Register(g_userSettings.game.internalResolutionScale); Register(g_userSettings.game.shadowResolutionMultiplier); + Register(g_userSettings.game.enableDepthOfField); Register(g_userSettings.game.enableFastIronBoots); Register(g_userSettings.game.canTransformAnywhere); Register(g_userSettings.game.freeMagicArmor); diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index d949d10ff0..4dc505ac03 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -1155,6 +1155,9 @@ static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_ GXSetProjection(ortho, GX_ORTHOGRAPHIC); GXSetCurrentMtx(0); +#ifdef TARGET_PC + if (dusk::getSettings().game.enableDepthOfField) +#endif if (l_tevColor0.a > -255 && sp8 == 1) { GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16(x_orig, y_orig_pos, -5); From dd3a61d84cb3e80c0424b21278299b87eefc4797 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 21 Apr 2026 15:13:55 -0700 Subject: [PATCH 4/6] fix dmap background --- src/d/d_menu_dmap.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/d/d_menu_dmap.cpp b/src/d/d_menu_dmap.cpp index 66533dd12c..17d9193241 100644 --- a/src/d/d_menu_dmap.cpp +++ b/src/d/d_menu_dmap.cpp @@ -984,7 +984,36 @@ void dMenu_DmapBg_c::update() { JUT_ASSERT(2323, mpBackTexture != NULL); void* spec = mpArchive->getResource("spec/spec.dat"); + #if TARGET_PC + struct dmap_spec { + /* 0x00 */ BE(f32) field_0x0; + /* 0x04 */ BE(f32) field_0x4; + /* 0x08 */ BE(f32) field_0x8; + /* 0x0C */ u8 field_0xc; + /* 0x0D */ u8 field_0xd; + /* 0x0E */ u8 field_0xe; + /* 0x0F */ u8 field_0xf; + /* 0x10 */ u8 field_0x10; + /* 0x11 */ u8 field_0x11; + /* 0x12 */ u8 field_0x12; + /* 0x13 */ u8 field_0x13; + }; + dmap_spec* dspec = (dmap_spec*)spec; + + field_0xd80 = dspec->field_0x0; + field_0xd84 = dspec->field_0x4; + field_0xd88 = dspec->field_0x8; + field_0xd8c = dspec->field_0xc; + field_0xd8d = dspec->field_0xd; + field_0xd8e = dspec->field_0xe; + field_0xd8f = dspec->field_0xf; + field_0xd90 = dspec->field_0x10; + field_0xd91 = dspec->field_0x11; + field_0xd92 = dspec->field_0x12; + field_0xd93 = dspec->field_0x13; + #else memcpy(&field_0xd80, spec, 20); + #endif } } From d99205ecc616ff855f250b497eb42ce6e326b250 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Tue, 21 Apr 2026 17:12:21 -0600 Subject: [PATCH 5/6] Update aurora --- extern/aurora | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/aurora b/extern/aurora index ccb9dc1ad7..b524038d75 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit ccb9dc1ad78f7e278af19d308a4f3e870ca04889 +Subproject commit b524038d75444519f5ab685ef37da12300eab4ed From a15d0af139d7dd8ce5fdd110d28c2f4637245ae3 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Tue, 21 Apr 2026 17:39:53 -0600 Subject: [PATCH 6/6] Better fix for mirror crashes --- extern/aurora | 2 +- src/d/actor/d_a_mirror.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/extern/aurora b/extern/aurora index b524038d75..26da4c6bb0 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit b524038d75444519f5ab685ef37da12300eab4ed +Subproject commit 26da4c6bb08937ab07b5bd8bbf779b143c672a88 diff --git a/src/d/actor/d_a_mirror.cpp b/src/d/actor/d_a_mirror.cpp index 4711dee681..fb4142c0bb 100644 --- a/src/d/actor/d_a_mirror.cpp +++ b/src/d/actor/d_a_mirror.cpp @@ -30,6 +30,10 @@ static char* l_arcName = "Mirror"; static char* l_arcName2 = "MR-Table"; dMirror_packet_c::dMirror_packet_c() { +#ifdef TARGET_PC + GXInitTexObj(&mTexObj, nullptr, 0, 0, static_cast(-1), GX_MAX_TEXWRAPMODE, + GX_MAX_TEXWRAPMODE, GX_FALSE); +#endif reset(); }