System: Warn if fastmem mode is not optimal

This commit is contained in:
Stenzek 2024-12-24 13:16:37 +10:00
parent f4265edb2d
commit dc18ce2c2a
No known key found for this signature in database
1 changed files with 31 additions and 15 deletions

View File

@ -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]<typename... T>(const char* icon, fmt::format_string<T...> 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(
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));
g_settings.cpu_overclock_denominator);
}
if (g_settings.cdrom_read_speedup > 1)
{
append(ICON_EMOJI_WARNING,
SmallString::from_format(
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));
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)