From e4b6e6488d361f45fde0a4438e3a3c77bac6b717 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 17 May 2025 21:45:58 +1000 Subject: [PATCH] System: Swap back gamesettings->safe mode order Fixes e.g. round texcoords warning being shown on games that need it. But don't display CD speedup warnings if the gamedb will disable them. --- src/core/system.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 155787c4c..6bd8ddcce 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1222,14 +1222,14 @@ void System::LoadSettings(bool display_osd_messages) InputManager::ReloadSources(controller_si, lock); InputManager::ReloadBindings(controller_si, hotkey_si); - // apply compatibility settings - if (g_settings.apply_compatibility_settings && s_state.running_game_entry) - s_state.running_game_entry->ApplySettings(g_settings, display_osd_messages); - // show safe mode warning if it's toggled on, or on startup if (IsValidOrInitializing() && (display_osd_messages || (!previous_safe_mode && g_settings.disable_all_enhancements))) WarnAboutUnsafeSettings(); + // apply compatibility settings + if (g_settings.apply_compatibility_settings && s_state.running_game_entry) + s_state.running_game_entry->ApplySettings(g_settings, display_osd_messages); + // patch overrides take precedence over compat settings Cheats::ApplySettingOverrides(); @@ -4753,6 +4753,10 @@ void System::WarnAboutUnsafeSettings() messages.append_vformat(fmt, fmt::make_format_args(args...)); messages.append('\n'); }; + const auto has_trait = [](GameDatabase::Trait trait) { + return (g_settings.apply_compatibility_settings && s_state.running_game_entry && + s_state.running_game_entry->HasTrait(trait)); + }; if (!g_settings.disable_all_enhancements) { @@ -4762,8 +4766,11 @@ void System::WarnAboutUnsafeSettings() ICON_EMOJI_WARNING, TRANSLATE_FS("System", "CPU clock speed is set to {}% ({} / {}). This may crash games."), g_settings.GetCPUOverclockPercent(), g_settings.cpu_overclock_numerator, g_settings.cpu_overclock_denominator); } - if (g_settings.cdrom_read_speedup != 1 || g_settings.cdrom_seek_speedup != 1) + if ((g_settings.cdrom_read_speedup != 1 && !has_trait(GameDatabase::Trait::DisableCDROMReadSpeedup)) || + (g_settings.cdrom_seek_speedup != 1 && !has_trait(GameDatabase::Trait::DisableCDROMSeekSpeedup))) + { append(ICON_EMOJI_WARNING, TRANSLATE_SV("System", "CD-ROM read/seek speedup is enabled. This may crash games.")); + } if (g_settings.gpu_force_video_timing != ForceVideoTimingMode::Disabled) append(ICON_FA_TV, TRANSLATE_SV("System", "Frame rate is not set to automatic. Games may run at incorrect speeds."));