From 2570c8f072b9dc6ba7f50dc2ec9cdb4f0ccc58e6 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 1 Sep 2026 01:09:42 -0700 Subject: [PATCH 1/3] fix gamemode onSaveLoaded handling with hideTvSettingsScreen setting --- src/d/d_bright_check.cpp | 8 ++++++++ src/d/d_file_select.cpp | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/d/d_bright_check.cpp b/src/d/d_bright_check.cpp index 7ec4f09b10..b9ea46e58e 100644 --- a/src/d/d_bright_check.cpp +++ b/src/d/d_bright_check.cpp @@ -191,6 +191,14 @@ void dBrightCheck_c::modeMove() { mDoAud_seStart(Z2SE_ENTER_GAME, NULL, 0, 0); #ifdef TARGET_PC toggleAutoSave(true); + + if (!dusk::getSettings().game.hideTvSettingsScreen) { + const dusk::gamemode::GameMode* gameMode = + dusk::gamemode::getGameModeManager().getCurrentGameMode(); + if (gameMode) { + gameMode->invokeOnSaveLoadedFunction(); + } + } #endif mCompleteCheck = true; mMode = MODE_WAIT_e; diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index 4b23d3ded9..3f64b8b239 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -1789,10 +1789,16 @@ void dFile_select_c::nameInput2() { #if TARGET_PC dusk::mods::svc::save_slot_new(mSelectNum); const dusk::gamemode::GameMode* gameMode = - dusk::gamemode::getGameModeManager().getCurrentGameMode(); + dusk::gamemode::getGameModeManager().getCurrentGameMode(); if (gameMode) { gameMode->invokeOnNewSaveFunction(); - gameMode->invokeOnSaveLoadedFunction(); + } + + // only do OnSaveLoaded callback here if hiding the brightness check screen + if (dusk::getSettings().game.hideTvSettingsScreen) { + if (gameMode) { + gameMode->invokeOnSaveLoadedFunction(); + } } #endif mDataSelProc = DATASELPROC_NEXT_MODE_WAIT; From 6c966876b9f41578614e6a531c3f2315518f7f83 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 1 Sep 2026 02:46:53 -0700 Subject: [PATCH 2/3] fix speedrun timer resetting --- src/dusk/ui/menu_bar.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/dusk/ui/menu_bar.cpp b/src/dusk/ui/menu_bar.cpp index d2bf8f8d9d..4884dbf3a9 100644 --- a/src/dusk/ui/menu_bar.cpp +++ b/src/dusk/ui/menu_bar.cpp @@ -160,17 +160,12 @@ void MenuBar::build_tabs() { }); if (dusk::speedrun::isActive()) { - mTabBar->add_tab("Reset Timer", [this] { + mTabBar->add_tab("Reset Run", [this] { mTabBar->set_active_tab(-1); mDoAud_seStartMenu(kSoundClick); dusk::speedrun::g_speedrunInfo.reset(); - if (getSettings().game.liveSplitEnabled) { - dusk::speedrun::reset(); - } - auto* playScene = fpcM_SearchByName(fpcNm_PLAY_SCENE_e); - if (playScene != nullptr) { - fopScnM_ChangeReq((scene_class*)playScene, fpcNm_NAME_SCENE_e, 0x7FFF, 0); - } + dusk::speedrun::reset(); + JUTGamePad::C3ButtonReset::sResetSwitchPushing = true; hide(false); }); } From a746b23944ecca700df3ccc3d3523e936be2c74b Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 1 Sep 2026 03:11:04 -0700 Subject: [PATCH 3/3] make sure tools are disabled for speedrun mode and reset run info when mode is deactivated --- src/dusk/speedrun.cpp | 5 +++++ src/dusk/ui/settings.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dusk/speedrun.cpp b/src/dusk/speedrun.cpp index 8527f9510a..166ef70839 100644 --- a/src/dusk/speedrun.cpp +++ b/src/dusk/speedrun.cpp @@ -19,6 +19,8 @@ static void onSpeedrunModeDeactive() { if (getSettings().game.liveSplitEnabled) { speedrun::disconnectLiveSplit(); } + g_speedrunInfo.reset(); + reset(); } void registerSpeedrunGameMode() { @@ -82,6 +84,9 @@ void resetForSpeedrunMode() { getSettings().backend.enableAdvancedSettings.setSpeedrunValue(false); getSettings().game.recordingMode.setSpeedrunValue(false); getSettings().game.debugFlyCam.setSpeedrunValue(false); + + getSettings().game.enableMoveLinkCombo.setSpeedrunValue(false); + getSettings().game.enableTeleportCombo.setSpeedrunValue(false); } static void clearSpeedrunOverrides() { diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 5622110dc9..a546f1c76a 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -1239,7 +1239,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { { .key = "Speedrun Mode", .helpText = - "Enables speedrunning options while restricting certain gameplay modifiers.", + "Enables Speedrun game mode option in the Dusklight launch menu.", .onChange = [this](bool enabled) { if (enabled) {