From dc18ce2c2aebaee0f2dca089eb6264f6a1dd2f28 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 24 Dec 2024 13:16:37 +1000 Subject: [PATCH] System: Warn if fastmem mode is not optimal --- src/core/system.cpp | 46 ++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 03e5dec07..a2d80c793 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -4672,7 +4672,14 @@ void System::WarnAboutStateTaints(u32 state_taints) void System::WarnAboutUnsafeSettings() { LargeString messages; - auto append = [&messages](const char* icon, std::string_view msg) { messages.append_format("{} {}\n", icon, msg); }; + const auto append = [&messages](const char* icon, std::string_view msg) { + messages.append_format("{} {}\n", icon, msg); + }; + const auto append_format = [&messages](const char* icon, fmt::format_string fmt, T&&... args) { + messages.append_format("{} ", icon); + messages.append_vformat(fmt, fmt::make_format_args(args...)); + messages.append('\n'); + }; if (!g_settings.disable_all_enhancements) { @@ -4680,26 +4687,27 @@ void System::WarnAboutUnsafeSettings() { if (g_settings.cpu_overclock_active) { - append(ICON_EMOJI_WARNING, - SmallString::from_format( - 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)); + append_format(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) { - append(ICON_EMOJI_WARNING, - SmallString::from_format( - TRANSLATE_FS("System", "CD-ROM read speedup set to {}x (effective speed {}x). This may crash games."), - g_settings.cdrom_read_speedup, g_settings.cdrom_read_speedup * 2)); + append_format( + ICON_EMOJI_WARNING, + TRANSLATE_FS("System", "CD-ROM read speedup set to {}x (effective speed {}x). This may crash games."), + g_settings.cdrom_read_speedup, g_settings.cdrom_read_speedup * 2); } if (g_settings.cdrom_seek_speedup != 1) { - append(ICON_EMOJI_WARNING, - SmallString::from_format(TRANSLATE_FS("System", "CD-ROM seek speedup set to {}. This may crash games."), - (g_settings.cdrom_seek_speedup == 0) ? - TinyString(TRANSLATE_SV("System", "Instant")) : - TinyString::from_format("{}x", g_settings.cdrom_seek_speedup))); + TinyString speed; + if (g_settings.cdrom_seek_speedup == 0) + speed = TRANSLATE_SV("System", "Instant"); + else + speed.format("{}x", g_settings.cdrom_seek_speedup); + append_format(ICON_EMOJI_WARNING, + TRANSLATE_FS("System", "CD-ROM seek speedup set to {}. This may crash games."), speed); } if (g_settings.gpu_force_video_timing != ForceVideoTimingMode::Disabled) { @@ -4735,6 +4743,14 @@ void System::WarnAboutUnsafeSettings() TRANSLATE_SV("System", "Texture cache is enabled. This feature is experimental, some games may not render correctly.")); } + + // Potential performance issues. + if (g_settings.cpu_fastmem_mode != Settings::DEFAULT_CPU_FASTMEM_MODE) + { + append_format(ICON_EMOJI_WARNING, + TRANSLATE_FS("System", "Fastmem mode is set to {}, this will reduce performance."), + Settings::GetCPUFastmemModeName(g_settings.cpu_fastmem_mode)); + } } if (g_settings.disable_all_enhancements)