From 552b3ad35342b91b4e87871221b15dc9d43c9cbb Mon Sep 17 00:00:00 2001 From: SuperDude88 <82904174+SuperDude88@users.noreply.github.com> Date: Mon, 6 Jul 2026 19:59:43 -0400 Subject: [PATCH 1/3] Deduplicate Speedrun Overrides Avoids issues where only one is updated + makes sense organizationally --- src/dusk/ui/settings.cpp | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 3c89f34136..f14bb2343f 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -15,6 +15,7 @@ #include "dusk/io.hpp" #include "dusk/livesplit.h" #include "dusk/discord_presence.hpp" +#include "dusk/speedrun.h" #include "graphics_tuner.hpp" #include "m_Do/m_Do_main.h" #include "menu_bar.hpp" @@ -218,43 +219,6 @@ AuroraBackend configured_backend() { return configuredBackend; } -void reset_for_speedrun_mode() { - mDoMain::developmentMode = -1; - - getSettings().game.enableTurboKeybind.setSpeedrunValue(false); - - getSettings().game.damageMultiplier.setSpeedrunValue(1); - getSettings().game.instantDeath.setSpeedrunValue(false); - getSettings().game.noHeartDrops.setSpeedrunValue(false); - getSettings().game.autoSave.setSpeedrunValue(false); - getSettings().game.sunsSong.setSpeedrunValue(false); - - getSettings().game.infiniteHearts.setSpeedrunValue(false); - getSettings().game.infiniteArrows.setSpeedrunValue(false); - getSettings().game.infiniteSeeds.setSpeedrunValue(false); - getSettings().game.infiniteBombs.setSpeedrunValue(false); - getSettings().game.infiniteOil.setSpeedrunValue(false); - getSettings().game.infiniteOxygen.setSpeedrunValue(false); - getSettings().game.infiniteRupees.setSpeedrunValue(false); - getSettings().game.enableIndefiniteItemDrops.setSpeedrunValue(false); - getSettings().game.moonJump.setSpeedrunValue(false); - getSettings().game.superClawshot.setSpeedrunValue(false); - getSettings().game.alwaysGreatspin.setSpeedrunValue(false); - getSettings().game.enableFastIronBoots.setSpeedrunValue(false); - getSettings().game.canTransformAnywhere.setSpeedrunValue(false); - getSettings().game.fastRoll.setSpeedrunValue(false); - getSettings().game.fastSpinner.setSpeedrunValue(false); - getSettings().game.armorRupeeDrain.setSpeedrunValue(MagicArmorMode::NORMAL); - getSettings().game.invincibleEnemies.setSpeedrunValue(false); - - getSettings().game.pauseOnFocusLost.setSpeedrunValue(false); - aurora_set_pause_on_focus_lost(false); - - getSettings().backend.enableAdvancedSettings.setSpeedrunValue(false); - getSettings().game.recordingMode.setSpeedrunValue(false); - getSettings().game.debugFlyCam.setSpeedrunValue(false); -} - void clear_speedrun_overrides() { config::EnumerateRegistered([](config::ConfigVarBase& cvar) { cvar.clearSpeedrunOverride(); @@ -1325,7 +1289,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .onChange = [](bool enabled) { if (enabled) { - reset_for_speedrun_mode(); + resetForSpeedrunMode(); } else { restore_from_speedrun_mode(); if (getSettings().game.liveSplitEnabled) { From a01c01b5822e3c2e3270cab14a24650725478795 Mon Sep 17 00:00:00 2001 From: SuperDude88 <82904174+SuperDude88@users.noreply.github.com> Date: Mon, 6 Jul 2026 20:26:03 -0400 Subject: [PATCH 2/3] Move restore_from_speedrun_mode I think it makes more sense to have this in the same place the overrides are set --- include/dusk/speedrun.h | 1 + src/dusk/speedrun.cpp | 12 ++++++++++++ src/dusk/ui/settings.cpp | 13 +------------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/dusk/speedrun.h b/include/dusk/speedrun.h index c1a92e4a50..d9e43c3ed7 100644 --- a/include/dusk/speedrun.h +++ b/include/dusk/speedrun.h @@ -37,5 +37,6 @@ struct SpeedrunInfo { extern SpeedrunInfo m_speedrunInfo; void resetForSpeedrunMode(); +void restoreFromSpeedrunMode(); } // namespace dusk diff --git a/src/dusk/speedrun.cpp b/src/dusk/speedrun.cpp index 0a70125da2..21a6d2c79c 100644 --- a/src/dusk/speedrun.cpp +++ b/src/dusk/speedrun.cpp @@ -1,5 +1,6 @@ #include "dusk/speedrun.h" #include "dusk/settings.h" +#include "dusk/config.hpp" #include "m_Do/m_Do_main.h" #include @@ -44,4 +45,15 @@ void resetForSpeedrunMode() { getSettings().game.debugFlyCam.setSpeedrunValue(false); } +static void clear_speedrun_overrides() { + config::EnumerateRegistered([](config::ConfigVarBase& cvar) { + cvar.clearSpeedrunOverride(); + }); +} + +void restoreFromSpeedrunMode() { + clear_speedrun_overrides(); + aurora_set_pause_on_focus_lost(getSettings().game.pauseOnFocusLost.getValue()); +} + } // namespace dusk diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index f14bb2343f..cf19be28be 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -219,17 +219,6 @@ AuroraBackend configured_backend() { return configuredBackend; } -void clear_speedrun_overrides() { - config::EnumerateRegistered([](config::ConfigVarBase& cvar) { - cvar.clearSpeedrunOverride(); - }); -} - -void restore_from_speedrun_mode() { - clear_speedrun_overrides(); - aurora_set_pause_on_focus_lost(getSettings().game.pauseOnFocusLost.getValue()); -} - std::filesystem::path normalized_display_path(const std::filesystem::path& path) { std::error_code ec; auto normalized = std::filesystem::weakly_canonical(path, ec); @@ -1291,7 +1280,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { if (enabled) { resetForSpeedrunMode(); } else { - restore_from_speedrun_mode(); + restoreFromSpeedrunMode(); if (getSettings().game.liveSplitEnabled) { speedrun::disconnectLiveSplit(); } From a65c2b4a3794741140c5291a802164de4ab00624 Mon Sep 17 00:00:00 2001 From: Irastris Date: Fri, 10 Jul 2026 21:23:23 -0400 Subject: [PATCH 3/3] Camelcase nit --- src/dusk/speedrun.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dusk/speedrun.cpp b/src/dusk/speedrun.cpp index 21a6d2c79c..6cc235eb89 100644 --- a/src/dusk/speedrun.cpp +++ b/src/dusk/speedrun.cpp @@ -45,14 +45,14 @@ void resetForSpeedrunMode() { getSettings().game.debugFlyCam.setSpeedrunValue(false); } -static void clear_speedrun_overrides() { +static void clearSpeedrunOverrides() { config::EnumerateRegistered([](config::ConfigVarBase& cvar) { cvar.clearSpeedrunOverride(); }); } void restoreFromSpeedrunMode() { - clear_speedrun_overrides(); + clearSpeedrunOverrides(); aurora_set_pause_on_focus_lost(getSettings().game.pauseOnFocusLost.getValue()); }