From dc1882dd3e4e83a89773c80695a9d145d27118bd Mon Sep 17 00:00:00 2001 From: Stenzek Date: Mon, 22 Sep 2025 20:46:10 +1000 Subject: [PATCH] System: Fix patch setting override desync on safe mode toggle --- src/core/cheats.cpp | 2 +- src/core/system.cpp | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/core/cheats.cpp b/src/core/cheats.cpp index 261a119ca..61b200b53 100644 --- a/src/core/cheats.cpp +++ b/src/core/cheats.cpp @@ -1061,7 +1061,7 @@ void Cheats::UpdateActiveCodes(bool reload_enabled_list, bool verbose, bool verb blocked_cheats_msg.view(), blocked_patches_msg.view()) : fmt::format(TRANSLATE_FS("Cheats", "{} disabled by achievements hardcore mode/safe mode."), (blocked_cheats > 0) ? blocked_cheats_msg.view() : blocked_patches_msg.view()); - Host::AddIconOSDMessage("CheatsBlocked", ICON_EMOJI_WARNING, std::move(message), Host::OSD_INFO_DURATION); + Host::AddIconOSDMessage("LoadCheats", ICON_EMOJI_WARNING, std::move(message), Host::OSD_INFO_DURATION); } } } diff --git a/src/core/system.cpp b/src/core/system.cpp index 53ca2623d..254308da9 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1386,6 +1386,15 @@ void System::ApplySettings(bool display_osd_messages) LoadSettings(display_osd_messages); } + // If safe mode is changed, patches need to be disabled and settings potentially reloaded. + if (g_settings.disable_all_enhancements != old_settings.disable_all_enhancements) + { + const bool had_setting_overrides = Cheats::HasAnySettingOverrides(); + Cheats::ReloadCheats(false, true, false, true, true); + if (had_setting_overrides != Cheats::HasAnySettingOverrides()) + LoadSettings(false); + } + CheckForSettingsChanges(old_settings); Host::CheckForSettingsChanges(old_settings); } @@ -4335,9 +4344,6 @@ void System::CheckForSettingsChanges(const Settings& old_settings) { ClearMemorySaveStates(false, false); - if (g_settings.disable_all_enhancements != old_settings.disable_all_enhancements) - Cheats::ReloadCheats(false, true, false, true, true); - if (g_settings.cpu_overclock_active != old_settings.cpu_overclock_active || (g_settings.cpu_overclock_active && (g_settings.cpu_overclock_numerator != old_settings.cpu_overclock_numerator ||