mirror of https://github.com/PCSX2/pcsx2.git
VMManager: Add warning for unsafe settings on boot
This commit is contained in:
parent
6e0ac7fa75
commit
43d6ddd7cf
|
@ -51,6 +51,7 @@ EmulationSettingsWidget::EmulationSettingsWidget(SettingsDialog* dialog, QWidget
|
|||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.noInterlacingPatches, "EmuCore", "EnableNoInterlacingPatches", false);
|
||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.perGameSettings, "EmuCore", "EnablePerGameSettings", true);
|
||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.hostFilesystem, "EmuCore", "HostFs", false);
|
||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.warnAboutUnsafeSettings, "EmuCore", "WarnAboutUnsafeSettings", true);
|
||||
|
||||
dialog->registerWidgetHelp(m_ui.normalSpeed, tr("Normal Speed"), "100%",
|
||||
tr("Sets the target emulation speed. It is not guaranteed that this speed will be reached, "
|
||||
|
@ -96,6 +97,9 @@ EmulationSettingsWidget::EmulationSettingsWidget(SettingsDialog* dialog, QWidget
|
|||
tr("Sets the maximum number of frames that can be queued up to the GS, before the CPU thread will wait for one of them to complete before continuing. "
|
||||
"Higher values can assist with smoothing out irregular frame times, but add additional input lag."));
|
||||
|
||||
dialog->registerWidgetHelp(m_ui.warnAboutUnsafeSettings, tr("Warn About Unsafe Settings"),
|
||||
tr("Checked"), tr("Displays warnings when settings are enabled which may break games."));
|
||||
|
||||
updateOptimalFramePacing();
|
||||
}
|
||||
|
||||
|
|
|
@ -160,6 +160,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="warnAboutUnsafeSettings">
|
||||
<property name="text">
|
||||
<string>Warn About Unsafe Settings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -970,7 +970,9 @@ struct Pcsx2Config
|
|||
MultitapPort1_Enabled : 1,
|
||||
|
||||
ConsoleToStdio : 1,
|
||||
HostFs : 1;
|
||||
HostFs : 1,
|
||||
|
||||
WarnAboutUnsafeSettings : 1;
|
||||
|
||||
// uses automatic ntfs compression when creating new memory cards (Win32 only)
|
||||
#ifdef _WIN32
|
||||
|
|
|
@ -2256,6 +2256,8 @@ void FullscreenUI::DrawEmulationSettingsPage()
|
|||
"EmuCore", "EnablePerGameSettings", true);
|
||||
DrawToggleSetting(bsi, "Enable Host Filesystem", "Enables access to files from the host: namespace in the virtual machine.", "EmuCore",
|
||||
"HostFs", false);
|
||||
DrawToggleSetting(bsi, "Warn About Unsafe Settings", "Displays warnings when settings are enabled which may break games.", "EmuCore",
|
||||
"WarnAboutUnsafeSettings", true);
|
||||
|
||||
EndMenuButtons();
|
||||
}
|
||||
|
|
|
@ -411,7 +411,7 @@ ImFont* ImGuiManager::AddFixedFont(float size)
|
|||
|
||||
bool ImGuiManager::AddIconFonts(float size)
|
||||
{
|
||||
static constexpr ImWchar range_fa[] = { 0xf001,0xf002,0xf005,0xf005,0xf00c,0xf00e,0xf011,0xf011,0xf013,0xf013,0xf017,0xf017,0xf019,0xf019,0xf021,0xf021,0xf025,0xf025,0xf028,0xf028,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03d,0xf04a,0xf04c,0xf04e,0xf04e,0xf050,0xf050,0xf052,0xf052,0xf059,0xf059,0xf05e,0xf05e,0xf065,0xf065,0xf067,0xf067,0xf071,0xf071,0xf07b,0xf07c,0xf085,0xf085,0xf091,0xf091,0xf0a0,0xf0a0,0xf0ac,0xf0ad,0xf0c5,0xf0c5,0xf0c7,0xf0c9,0xf0d0,0xf0d0,0xf0e2,0xf0e2,0xf0eb,0xf0eb,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf11b,0xf11c,0xf121,0xf121,0xf140,0xf140,0xf144,0xf144,0xf14a,0xf14a,0xf15b,0xf15b,0xf188,0xf188,0xf192,0xf192,0xf1c9,0xf1c9,0xf1dd,0xf1de,0xf1e6,0xf1e6,0xf1ea,0xf1eb,0xf1f8,0xf1f8,0xf1fc,0xf1fc,0xf242,0xf242,0xf245,0xf245,0xf26c,0xf26c,0xf2d0,0xf2d0,0xf2db,0xf2db,0xf2f5,0xf2f5,0xf410,0xf410,0xf466,0xf466,0xf51f,0xf51f,0xf543,0xf543,0xf545,0xf545,0xf547,0xf548,0xf552,0xf552,0xf65d,0xf65e,0xf756,0xf756,0xf7c2,0xf7c2,0xf815,0xf815,0xf818,0xf818,0xf8cc,0xf8cc,0x0,0x0 };
|
||||
static constexpr ImWchar range_fa[] = { 0xf001,0xf002,0xf005,0xf005,0xf00c,0xf00e,0xf011,0xf011,0xf013,0xf013,0xf017,0xf017,0xf019,0xf019,0xf021,0xf021,0xf025,0xf025,0xf028,0xf028,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03d,0xf04a,0xf04c,0xf04e,0xf04e,0xf050,0xf050,0xf052,0xf052,0xf059,0xf059,0xf05e,0xf05e,0xf065,0xf065,0xf067,0xf067,0xf06a,0xf06a,0xf071,0xf071,0xf07b,0xf07c,0xf085,0xf085,0xf091,0xf091,0xf0a0,0xf0a0,0xf0ac,0xf0ad,0xf0b0,0xf0b0,0xf0c5,0xf0c5,0xf0c7,0xf0c9,0xf0d0,0xf0d0,0xf0e2,0xf0e2,0xf0eb,0xf0eb,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf11b,0xf11c,0xf121,0xf121,0xf140,0xf140,0xf144,0xf144,0xf14a,0xf14a,0xf15b,0xf15b,0xf188,0xf188,0xf192,0xf192,0xf1c9,0xf1c9,0xf1dd,0xf1de,0xf1e6,0xf1e6,0xf1ea,0xf1eb,0xf1f8,0xf1f8,0xf1fc,0xf1fc,0xf242,0xf242,0xf245,0xf245,0xf26c,0xf26c,0xf2d0,0xf2d0,0xf2db,0xf2db,0xf2f5,0xf2f5,0xf302,0xf302,0xf3fd,0xf3fd,0xf410,0xf410,0xf466,0xf466,0xf479,0xf479,0xf517,0xf517,0xf51f,0xf51f,0xf543,0xf543,0xf545,0xf545,0xf547,0xf548,0xf552,0xf552,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf756,0xf756,0xf7c2,0xf7c2,0xf815,0xf815,0xf818,0xf818,0xf8cc,0xf8cc,0x0,0x0 };
|
||||
|
||||
ImFontConfig cfg;
|
||||
cfg.MergeMode = true;
|
||||
|
|
|
@ -1034,6 +1034,8 @@ Pcsx2Config::Pcsx2Config()
|
|||
McdCompressNTFS = true;
|
||||
#endif
|
||||
|
||||
WarnAboutUnsafeSettings = true;
|
||||
|
||||
// To be moved to FileMemoryCard pluign (someday)
|
||||
for (uint slot = 0; slot < 8; ++slot)
|
||||
{
|
||||
|
@ -1084,6 +1086,8 @@ void Pcsx2Config::LoadSave(SettingsWrapper& wrap)
|
|||
SettingsWrapBitBool(MultitapPort1_Enabled);
|
||||
#endif
|
||||
|
||||
SettingsWrapBitBool(WarnAboutUnsafeSettings);
|
||||
|
||||
// Process various sub-components:
|
||||
|
||||
Speedhacks.LoadSave(wrap);
|
||||
|
|
|
@ -83,6 +83,7 @@ namespace VMManager
|
|||
static void CheckForSPU2ConfigChanges(const Pcsx2Config& old_config);
|
||||
static void CheckForDEV9ConfigChanges(const Pcsx2Config& old_config);
|
||||
static void CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config);
|
||||
static void WarnAboutUnsafeSettings();
|
||||
|
||||
static bool AutoDetectSource(const std::string& filename);
|
||||
static bool ApplyBootParameters(VMBootParameters params, std::string* state_to_load);
|
||||
|
@ -348,8 +349,13 @@ void VMManager::LoadSettings()
|
|||
EmuConfig.Speedhacks.vuThread = false;
|
||||
|
||||
if (HasValidVM())
|
||||
{
|
||||
if (EmuConfig.WarnAboutUnsafeSettings)
|
||||
WarnAboutUnsafeSettings();
|
||||
|
||||
ApplyGameFixes();
|
||||
}
|
||||
}
|
||||
|
||||
void VMManager::ApplyGameFixes()
|
||||
{
|
||||
|
@ -1718,6 +1724,90 @@ void VMManager::SetDefaultSettings(SettingsInterface& si)
|
|||
SetHardwareDependentDefaultSettings(si);
|
||||
}
|
||||
|
||||
void VMManager::WarnAboutUnsafeSettings()
|
||||
{
|
||||
std::string messages;
|
||||
|
||||
if (EmuConfig.Speedhacks.fastCDVD)
|
||||
messages += ICON_FA_COMPACT_DISC " Fast CDVD is enabled, this may break games.\n";
|
||||
if (EmuConfig.Speedhacks.EECycleRate != 0 || EmuConfig.Speedhacks.EECycleSkip != 0)
|
||||
messages += ICON_FA_TACHOMETER_ALT " Cycle rate/skip is not at default, this may crash or make games run too slow.\n";
|
||||
if (EmuConfig.SPU2.SynchMode != Pcsx2Config::SPU2Options::SynchronizationMode::TimeStretch)
|
||||
messages += ICON_FA_VOLUME_MUTE " Audio is not using time stretch synchronization, this may break FMVs.\n";
|
||||
if (EmuConfig.GS.HWMipmap != HWMipmapLevel::Automatic)
|
||||
messages += ICON_FA_IMAGES " Mipmapping is not set to automatic. This may break rendering in some games.\n";
|
||||
if (EmuConfig.GS.TextureFiltering != BiFiltering::PS2)
|
||||
messages += ICON_FA_FILTER " Texture filtering is not set to Bilinear (PS2). This will break rendering in some games.\n";
|
||||
if (EmuConfig.GS.UserHacks_TriFilter != TriFiltering::Automatic)
|
||||
messages += ICON_FA_PAGER " Trilinear filtering is not set to automatic. This may break rendering in some games.\n";
|
||||
if (EmuConfig.GS.AccurateBlendingUnit <= AccBlendLevel::Minimum)
|
||||
messages += ICON_FA_BLENDER " Blending is below basic, this may break effects in some games.\n";
|
||||
if (EmuConfig.GS.CRCHack != CRCHackLevel::Automatic)
|
||||
messages += ICON_FA_FIRST_AID " CRC Fix Level is not set to default, this may break effects in some games.\n";
|
||||
if (EmuConfig.Cpu.sseMXCSR.GetRoundMode() != SSEround_Chop || EmuConfig.Cpu.sseVUMXCSR.GetRoundMode() != SSEround_Chop)
|
||||
messages += ICON_FA_MICROCHIP " EE FPU Round Mode is not set to default, this may break some games.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.fpuOverflow || EmuConfig.Cpu.Recompiler.fpuExtraOverflow || EmuConfig.Cpu.Recompiler.fpuFullMode)
|
||||
messages += ICON_FA_MICROCHIP " EE FPU Clamp Mode is not set to default, this may break some games.\n";
|
||||
if (EmuConfig.Cpu.sseVUMXCSR.GetRoundMode() != SSEround_Chop)
|
||||
messages += ICON_FA_MICROCHIP " VU Round Mode is not set to default, this may break some games.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.vuOverflow || EmuConfig.Cpu.Recompiler.vuExtraOverflow || EmuConfig.Cpu.Recompiler.vuSignOverflow)
|
||||
messages += ICON_FA_MICROCHIP " VU Clamp Mode is not set to default, this may break some games.\n";
|
||||
if (!EmuConfig.EnableGameFixes)
|
||||
messages += ICON_FA_GAMEPAD " Game Fixes are not enabled. Compatibility with some games may be affected.\n";
|
||||
if (!EmuConfig.EnablePatches)
|
||||
messages += ICON_FA_GAMEPAD " Compatibility Patches are not enabled. Compatibility with some games may be affected.\n";
|
||||
if (EmuConfig.GS.FramerateNTSC != Pcsx2Config::GSOptions::DEFAULT_FRAME_RATE_NTSC)
|
||||
messages += ICON_FA_TV " Frame rate for NTSC is not default. This may break some games.\n";
|
||||
if (EmuConfig.GS.FrameratePAL != Pcsx2Config::GSOptions::DEFAULT_FRAME_RATE_PAL)
|
||||
messages += ICON_FA_TV " Frame rate for PAL is not default. This may break some games.\n";
|
||||
|
||||
if (!messages.empty())
|
||||
{
|
||||
if (messages.back() == '\n')
|
||||
messages.pop_back();
|
||||
Host::AddKeyedOSDMessage("unsafe_settings_warning", std::move(messages), 10.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
Host::RemoveKeyedOSDMessage("unsafe_settings_warning");
|
||||
}
|
||||
|
||||
messages.clear();
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableEE)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableVU0)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " VU0 Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableVU1)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " VU1 Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableIOP)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " IOP Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (EmuConfig.Cpu.Recompiler.EnableEECache)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Cache is enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.WaitLoop)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Wait Loop Detection is not enabled, this may reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.IntcStat)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " INTC Spin Detection is not enabled, this may reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.vu1Instant)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " Instant VU1 is disabled, this may reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.vuFlagHack)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " mVU Flag Hack is not enabled, this may reduce performance.\n";
|
||||
if (EmuConfig.GS.GPUPaletteConversion)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " GPU Palette Conversion is enabled, this may reduce performance.\n";
|
||||
if (EmuConfig.GS.TexturePreloading != TexturePreloadingLevel::Full)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " Texture Preloading is not Full, this may reduce performance.\n";
|
||||
|
||||
if (!messages.empty())
|
||||
{
|
||||
if (messages.back() == '\n')
|
||||
messages.pop_back();
|
||||
Host::AddKeyedOSDMessage("performance_settings_warning", std::move(messages), 10.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
Host::RemoveKeyedOSDMessage("performance_settings_warning");
|
||||
}
|
||||
}
|
||||
|
||||
static void HotkeyAdjustTargetSpeed(double delta)
|
||||
{
|
||||
EmuConfig.Framerate.NominalScalar = EmuConfig.GS.LimitScalar + delta;
|
||||
|
|
Loading…
Reference in New Issue