mirror of https://github.com/PCSX2/pcsx2.git
Config: Fix frame rate being parsed ever-so-slightly off
Also converts from double to float, we don't need additional precision for storing these values.
This commit is contained in:
parent
e064e96c96
commit
22e9aea827
|
@ -67,9 +67,9 @@ void SettingsLoadWrapper::Entry(const char* section, const char* var, bool& valu
|
||||||
value = m_si.GetBoolValue(section, var, defvalue);
|
value = m_si.GetBoolValue(section, var, defvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsLoadWrapper::Entry(const char* section, const char* var, double& value, const double defvalue /*= 0.0*/)
|
void SettingsLoadWrapper::Entry(const char* section, const char* var, float& value, const float defvalue /*= 0.0*/)
|
||||||
{
|
{
|
||||||
value = m_si.GetDoubleValue(section, var, defvalue);
|
value = m_si.GetFloatValue(section, var, defvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsLoadWrapper::Entry(const char* section, const char* var, std::string& value, const std::string& default_value /*= std::string()*/)
|
void SettingsLoadWrapper::Entry(const char* section, const char* var, std::string& value, const std::string& default_value /*= std::string()*/)
|
||||||
|
@ -141,9 +141,9 @@ void SettingsSaveWrapper::Entry(const char* section, const char* var, bool& valu
|
||||||
m_si.SetBoolValue(section, var, value);
|
m_si.SetBoolValue(section, var, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsSaveWrapper::Entry(const char* section, const char* var, double& value, const double defvalue /*= 0.0*/)
|
void SettingsSaveWrapper::Entry(const char* section, const char* var, float& value, const float defvalue /*= 0.0*/)
|
||||||
{
|
{
|
||||||
m_si.SetDoubleValue(section, var, value);
|
m_si.SetFloatValue(section, var, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsSaveWrapper::Entry(const char* section, const char* var, std::string& value, const std::string& default_value /*= std::string()*/)
|
void SettingsSaveWrapper::Entry(const char* section, const char* var, std::string& value, const std::string& default_value /*= std::string()*/)
|
||||||
|
|
|
@ -29,7 +29,7 @@ public:
|
||||||
virtual void Entry(const char* section, const char* var, int& value, const int defvalue = 0) = 0;
|
virtual void Entry(const char* section, const char* var, int& value, const int defvalue = 0) = 0;
|
||||||
virtual void Entry(const char* section, const char* var, uint& value, const uint defvalue = 0) = 0;
|
virtual void Entry(const char* section, const char* var, uint& value, const uint defvalue = 0) = 0;
|
||||||
virtual void Entry(const char* section, const char* var, bool& value, const bool defvalue = false) = 0;
|
virtual void Entry(const char* section, const char* var, bool& value, const bool defvalue = false) = 0;
|
||||||
virtual void Entry(const char* section, const char* var, double& value, const double defvalue = 0.0) = 0;
|
virtual void Entry(const char* section, const char* var, float& value, const float defvalue = 0.0) = 0;
|
||||||
virtual void Entry(const char* section, const char* var, std::string& value, const std::string& default_value = std::string()) = 0;
|
virtual void Entry(const char* section, const char* var, std::string& value, const std::string& default_value = std::string()) = 0;
|
||||||
|
|
||||||
// This special form of Entry is provided for bitfields, which cannot be passed by reference.
|
// This special form of Entry is provided for bitfields, which cannot be passed by reference.
|
||||||
|
@ -65,7 +65,7 @@ public:
|
||||||
void Entry(const char* section, const char* var, int& value, const int defvalue = 0) override;
|
void Entry(const char* section, const char* var, int& value, const int defvalue = 0) override;
|
||||||
void Entry(const char* section, const char* var, uint& value, const uint defvalue = 0) override;
|
void Entry(const char* section, const char* var, uint& value, const uint defvalue = 0) override;
|
||||||
void Entry(const char* section, const char* var, bool& value, const bool defvalue = false) override;
|
void Entry(const char* section, const char* var, bool& value, const bool defvalue = false) override;
|
||||||
void Entry(const char* section, const char* var, double& value, const double defvalue = 0.0) override;
|
void Entry(const char* section, const char* var, float& value, const float defvalue = 0.0) override;
|
||||||
|
|
||||||
void Entry(const char* section, const char* var, std::string& value, const std::string& default_value = std::string()) override;
|
void Entry(const char* section, const char* var, std::string& value, const std::string& default_value = std::string()) override;
|
||||||
bool EntryBitBool(const char* section, const char* var, bool value, const bool defvalue = false) override;
|
bool EntryBitBool(const char* section, const char* var, bool value, const bool defvalue = false) override;
|
||||||
|
@ -86,7 +86,7 @@ public:
|
||||||
void Entry(const char* section, const char* var, int& value, const int defvalue = 0) override;
|
void Entry(const char* section, const char* var, int& value, const int defvalue = 0) override;
|
||||||
void Entry(const char* section, const char* var, uint& value, const uint defvalue = 0) override;
|
void Entry(const char* section, const char* var, uint& value, const uint defvalue = 0) override;
|
||||||
void Entry(const char* section, const char* var, bool& value, const bool defvalue = false) override;
|
void Entry(const char* section, const char* var, bool& value, const bool defvalue = false) override;
|
||||||
void Entry(const char* section, const char* var, double& value, const double defvalue = 0.0) override;
|
void Entry(const char* section, const char* var, float& value, const float defvalue = 0.0) override;
|
||||||
|
|
||||||
void Entry(const char* section, const char* var, std::string& value, const std::string& default_value = std::string()) override;
|
void Entry(const char* section, const char* var, std::string& value, const std::string& default_value = std::string()) override;
|
||||||
bool EntryBitBool(const char* section, const char* var, bool value, const bool defvalue = false) override;
|
bool EntryBitBool(const char* section, const char* var, bool value, const bool defvalue = false) override;
|
||||||
|
|
|
@ -38,6 +38,18 @@ const char* EnumToString(SSE_RoundMode sse)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SSE_MXCSR SSE_MXCSR::GetCurrent()
|
||||||
|
{
|
||||||
|
SSE_MXCSR ret;
|
||||||
|
ret.bitmask = _mm_getcsr();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SSE_MXCSR::SetCurrent(const SSE_MXCSR& value)
|
||||||
|
{
|
||||||
|
_mm_setcsr(value.bitmask);
|
||||||
|
}
|
||||||
|
|
||||||
SSE_RoundMode SSE_MXCSR::GetRoundMode() const
|
SSE_RoundMode SSE_MXCSR::GetRoundMode() const
|
||||||
{
|
{
|
||||||
return (SSE_RoundMode)RoundingControl;
|
return (SSE_RoundMode)RoundingControl;
|
||||||
|
|
|
@ -185,6 +185,9 @@ union SSE_MXCSR
|
||||||
FlushToZero : 1;
|
FlushToZero : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static SSE_MXCSR GetCurrent();
|
||||||
|
static void SetCurrent(const SSE_MXCSR& value);
|
||||||
|
|
||||||
SSE_RoundMode GetRoundMode() const;
|
SSE_RoundMode GetRoundMode() const;
|
||||||
SSE_MXCSR& SetRoundMode(SSE_RoundMode mode);
|
SSE_MXCSR& SetRoundMode(SSE_RoundMode mode);
|
||||||
SSE_MXCSR& ClearExceptionFlags();
|
SSE_MXCSR& ClearExceptionFlags();
|
||||||
|
|
|
@ -212,6 +212,7 @@ ImplementEnumOperators(SpeedhackId);
|
||||||
//------------ DEFAULT sseMXCSR VALUES ---------------
|
//------------ DEFAULT sseMXCSR VALUES ---------------
|
||||||
#define DEFAULT_sseMXCSR 0xffc0 //FPU rounding > DaZ, FtZ, "chop"
|
#define DEFAULT_sseMXCSR 0xffc0 //FPU rounding > DaZ, FtZ, "chop"
|
||||||
#define DEFAULT_sseVUMXCSR 0xffc0 //VU rounding > DaZ, FtZ, "chop"
|
#define DEFAULT_sseVUMXCSR 0xffc0 //VU rounding > DaZ, FtZ, "chop"
|
||||||
|
#define SYSTEM_sseMXCSR 0x1f80
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// TraceFiltersEE
|
// TraceFiltersEE
|
||||||
|
@ -427,6 +428,9 @@ struct Pcsx2Config
|
||||||
|
|
||||||
static const char* GetRendererName(GSRendererType type);
|
static const char* GetRendererName(GSRendererType type);
|
||||||
|
|
||||||
|
static constexpr float DEFAULT_FRAME_RATE_NTSC = 59.94f;
|
||||||
|
static constexpr float DEFAULT_FRAME_RATE_PAL = 50.00f;
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
u64 bitset;
|
u64 bitset;
|
||||||
|
@ -503,24 +507,24 @@ struct Pcsx2Config
|
||||||
|
|
||||||
VsyncMode VsyncEnable{VsyncMode::Off};
|
VsyncMode VsyncEnable{VsyncMode::Off};
|
||||||
|
|
||||||
double LimitScalar{1.0};
|
float LimitScalar{1.0f};
|
||||||
double FramerateNTSC{59.94};
|
float FramerateNTSC{DEFAULT_FRAME_RATE_NTSC};
|
||||||
double FrameratePAL{50.00};
|
float FrameratePAL{DEFAULT_FRAME_RATE_PAL};
|
||||||
|
|
||||||
AspectRatioType AspectRatio{AspectRatioType::RAuto4_3_3_2};
|
AspectRatioType AspectRatio{AspectRatioType::RAuto4_3_3_2};
|
||||||
FMVAspectRatioSwitchType FMVAspectRatioSwitch{FMVAspectRatioSwitchType::Off};
|
FMVAspectRatioSwitchType FMVAspectRatioSwitch{FMVAspectRatioSwitchType::Off};
|
||||||
GSInterlaceMode InterlaceMode{GSInterlaceMode::Automatic};
|
GSInterlaceMode InterlaceMode{GSInterlaceMode::Automatic};
|
||||||
|
|
||||||
double Zoom{100.0};
|
float Zoom{100.0f};
|
||||||
double StretchY{100.0};
|
float StretchY{100.0f};
|
||||||
#ifndef PCSX2_CORE
|
#ifndef PCSX2_CORE
|
||||||
double OffsetX{0.0};
|
float OffsetX{0.0f};
|
||||||
double OffsetY{0.0};
|
float OffsetY{0.0f};
|
||||||
#else
|
#else
|
||||||
int Crop[4]{};
|
int Crop[4]{};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
double OsdScale{100.0};
|
float OsdScale{100.0};
|
||||||
|
|
||||||
GSRendererType Renderer{GSRendererType::Auto};
|
GSRendererType Renderer{GSRendererType::Auto};
|
||||||
uint UpscaleMultiplier{1};
|
uint UpscaleMultiplier{1};
|
||||||
|
@ -623,14 +627,14 @@ struct Pcsx2Config
|
||||||
s32 SpeakerConfiguration{0};
|
s32 SpeakerConfiguration{0};
|
||||||
s32 DplDecodingLevel{0};
|
s32 DplDecodingLevel{0};
|
||||||
|
|
||||||
double VolumeAdjustC{ 0.0f };
|
float VolumeAdjustC{ 0.0f };
|
||||||
double VolumeAdjustFL{ 0.0f };
|
float VolumeAdjustFL{ 0.0f };
|
||||||
double VolumeAdjustFR{ 0.0f };
|
float VolumeAdjustFR{ 0.0f };
|
||||||
double VolumeAdjustBL{ 0.0f };
|
float VolumeAdjustBL{ 0.0f };
|
||||||
double VolumeAdjustBR{ 0.0f };
|
float VolumeAdjustBR{ 0.0f };
|
||||||
double VolumeAdjustSL{ 0.0f };
|
float VolumeAdjustSL{ 0.0f };
|
||||||
double VolumeAdjustSR{ 0.0f };
|
float VolumeAdjustSR{ 0.0f };
|
||||||
double VolumeAdjustLFE{ 0.0f };
|
float VolumeAdjustLFE{ 0.0f };
|
||||||
|
|
||||||
std::string OutputModule;
|
std::string OutputModule;
|
||||||
|
|
||||||
|
@ -890,9 +894,9 @@ struct Pcsx2Config
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
struct FramerateOptions
|
struct FramerateOptions
|
||||||
{
|
{
|
||||||
double NominalScalar{1.0};
|
float NominalScalar{1.0f};
|
||||||
double TurboScalar{2.0};
|
float TurboScalar{2.0f};
|
||||||
double SlomoScalar{0.5};
|
float SlomoScalar{0.5f};
|
||||||
|
|
||||||
void LoadSave(SettingsWrapper& wrap);
|
void LoadSave(SettingsWrapper& wrap);
|
||||||
void SanityCheck();
|
void SanityCheck();
|
||||||
|
|
|
@ -353,7 +353,7 @@ double GetVerticalFrequency()
|
||||||
|
|
||||||
static double AdjustToHostRefreshRate(double vertical_frequency, double frame_limit)
|
static double AdjustToHostRefreshRate(double vertical_frequency, double frame_limit)
|
||||||
{
|
{
|
||||||
if (!EmuConfig.GS.SyncToHostRefreshRate || EmuConfig.GS.LimitScalar != 1.0)
|
if (!EmuConfig.GS.SyncToHostRefreshRate || EmuConfig.GS.LimitScalar != 1.0f)
|
||||||
{
|
{
|
||||||
SPU2SetDeviceSampleRateMultiplier(1.0);
|
SPU2SetDeviceSampleRateMultiplier(1.0);
|
||||||
s_use_vsync_for_timing = false;
|
s_use_vsync_for_timing = false;
|
||||||
|
@ -413,7 +413,7 @@ u32 UpdateVSyncRate()
|
||||||
break;
|
break;
|
||||||
case GS_VideoMode::PAL:
|
case GS_VideoMode::PAL:
|
||||||
case GS_VideoMode::DVD_PAL:
|
case GS_VideoMode::DVD_PAL:
|
||||||
custom = (EmuConfig.GS.FrameratePAL != 50.0);
|
custom = (EmuConfig.GS.FrameratePAL != Pcsx2Config::GSOptions::DEFAULT_FRAME_RATE_PAL);
|
||||||
if (gsIsInterlaced)
|
if (gsIsInterlaced)
|
||||||
total_scanlines = SCANLINES_TOTAL_PAL_I;
|
total_scanlines = SCANLINES_TOTAL_PAL_I;
|
||||||
else
|
else
|
||||||
|
@ -421,7 +421,7 @@ u32 UpdateVSyncRate()
|
||||||
break;
|
break;
|
||||||
case GS_VideoMode::NTSC:
|
case GS_VideoMode::NTSC:
|
||||||
case GS_VideoMode::DVD_NTSC:
|
case GS_VideoMode::DVD_NTSC:
|
||||||
custom = (EmuConfig.GS.FramerateNTSC != 59.94);
|
custom = (EmuConfig.GS.FramerateNTSC != Pcsx2Config::GSOptions::DEFAULT_FRAME_RATE_NTSC);
|
||||||
if (gsIsInterlaced)
|
if (gsIsInterlaced)
|
||||||
total_scanlines = SCANLINES_TOTAL_NTSC_I;
|
total_scanlines = SCANLINES_TOTAL_NTSC_I;
|
||||||
else
|
else
|
||||||
|
@ -564,7 +564,7 @@ static __fi void frameLimitUpdateCore()
|
||||||
static __fi void frameLimit()
|
static __fi void frameLimit()
|
||||||
{
|
{
|
||||||
// Framelimiter off in settings? Framelimiter go brrr.
|
// Framelimiter off in settings? Framelimiter go brrr.
|
||||||
if (EmuConfig.GS.LimitScalar == 0.0 || s_use_vsync_for_timing)
|
if (EmuConfig.GS.LimitScalar == 0.0f || s_use_vsync_for_timing)
|
||||||
{
|
{
|
||||||
frameLimitUpdateCore();
|
frameLimitUpdateCore();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -95,7 +95,7 @@ bool ImGuiManager::Initialize()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
s_global_scale = std::max(1.0f, g_host_display->GetWindowScale() * static_cast<float>(EmuConfig.GS.OsdScale / 100.0));
|
s_global_scale = std::max(1.0f, g_host_display->GetWindowScale() * (EmuConfig.GS.OsdScale / 100.0f));
|
||||||
|
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ void ImGuiManager::WindowResized()
|
||||||
void ImGuiManager::UpdateScale()
|
void ImGuiManager::UpdateScale()
|
||||||
{
|
{
|
||||||
const float window_scale = g_host_display ? g_host_display->GetWindowScale() : 1.0f;
|
const float window_scale = g_host_display ? g_host_display->GetWindowScale() : 1.0f;
|
||||||
const float scale = std::max(window_scale * static_cast<float>(EmuConfig.GS.OsdScale / 100.0), 1.0f);
|
const float scale = std::max(window_scale * (EmuConfig.GS.OsdScale / 100.0f), 1.0f);
|
||||||
|
|
||||||
#ifdef PCSX2_CORE
|
#ifdef PCSX2_CORE
|
||||||
if (scale == s_global_scale && (!HasFullscreenFonts() || !ImGuiFullscreen::UpdateLayoutScale()))
|
if (scale == s_global_scale && (!HasFullscreenFonts() || !ImGuiFullscreen::UpdateLayoutScale()))
|
||||||
|
@ -728,10 +728,10 @@ void ImGuiManager::DrawPerformanceOverlay()
|
||||||
fmt::format_to(std::back_inserter(text), "{}{}%", first ? "" : " | ", static_cast<u32>(std::round(speed)));
|
fmt::format_to(std::back_inserter(text), "{}{}%", first ? "" : " | ", static_cast<u32>(std::round(speed)));
|
||||||
|
|
||||||
// We read the main config here, since MTGS doesn't get updated with speed toggles.
|
// We read the main config here, since MTGS doesn't get updated with speed toggles.
|
||||||
if (EmuConfig.GS.LimitScalar == 0.0)
|
if (EmuConfig.GS.LimitScalar == 0.0f)
|
||||||
text += " (Max)";
|
text += " (Max)";
|
||||||
else
|
else
|
||||||
fmt::format_to(std::back_inserter(text), " ({:.0f}%)", EmuConfig.GS.LimitScalar * 100.0);
|
fmt::format_to(std::back_inserter(text), " ({:.0f}%)", EmuConfig.GS.LimitScalar * 100.0f);
|
||||||
}
|
}
|
||||||
if (!text.empty())
|
if (!text.empty())
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,7 +63,7 @@ void gsUpdateFrequency(Pcsx2Config& config)
|
||||||
config.GS.LimitScalar = config.Framerate.TurboScalar;
|
config.GS.LimitScalar = config.Framerate.TurboScalar;
|
||||||
break;
|
break;
|
||||||
case LimiterModeType::Unlimited:
|
case LimiterModeType::Unlimited:
|
||||||
config.GS.LimitScalar = 0.0;
|
config.GS.LimitScalar = 0.0f;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pxAssert("Unknown framelimiter mode!");
|
pxAssert("Unknown framelimiter mode!");
|
||||||
|
@ -71,7 +71,7 @@ void gsUpdateFrequency(Pcsx2Config& config)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
config.GS.LimitScalar = 0.0;
|
config.GS.LimitScalar = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateVSyncRate();
|
UpdateVSyncRate();
|
||||||
|
|
|
@ -511,7 +511,7 @@ void Pcsx2Config::GSOptions::ReloadIniSettings()
|
||||||
#define GSSettingIntEx(var, name) var = theApp.GetConfigI(name)
|
#define GSSettingIntEx(var, name) var = theApp.GetConfigI(name)
|
||||||
#define GSSettingBool(var) var = theApp.GetConfigB(#var)
|
#define GSSettingBool(var) var = theApp.GetConfigB(#var)
|
||||||
#define GSSettingBoolEx(var, name) var = theApp.GetConfigB(name)
|
#define GSSettingBoolEx(var, name) var = theApp.GetConfigB(name)
|
||||||
#define GSSettingFloat(var) var = static_cast<double>(theApp.GetConfigI(#var))
|
#define GSSettingFloat(var) var = static_cast<float>(theApp.GetConfigI(#var))
|
||||||
#define GSSettingIntEnumEx(var, name) var = static_cast<decltype(var)>(theApp.GetConfigI(name))
|
#define GSSettingIntEnumEx(var, name) var = static_cast<decltype(var)>(theApp.GetConfigI(name))
|
||||||
#define GSSettingString(var) var = theApp.GetConfigS(#var)
|
#define GSSettingString(var) var = theApp.GetConfigS(#var)
|
||||||
#define GSSettingStringEx(var, name) var = theApp.GetConfigS(name)
|
#define GSSettingStringEx(var, name) var = theApp.GetConfigS(name)
|
||||||
|
@ -680,7 +680,7 @@ bool Pcsx2Config::GSOptions::UseHardwareRenderer() const
|
||||||
|
|
||||||
VsyncMode Pcsx2Config::GetEffectiveVsyncMode() const
|
VsyncMode Pcsx2Config::GetEffectiveVsyncMode() const
|
||||||
{
|
{
|
||||||
if (GS.LimitScalar != 1.0)
|
if (GS.LimitScalar != 1.0f)
|
||||||
{
|
{
|
||||||
Console.WriteLn("Vsync is OFF");
|
Console.WriteLn("Vsync is OFF");
|
||||||
return VsyncMode::Off;
|
return VsyncMode::Off;
|
||||||
|
@ -1002,9 +1002,9 @@ void Pcsx2Config::FramerateOptions::SanityCheck()
|
||||||
{
|
{
|
||||||
// Ensure Conformation of various options...
|
// Ensure Conformation of various options...
|
||||||
|
|
||||||
NominalScalar = std::clamp(NominalScalar, 0.05, 10.0);
|
NominalScalar = std::clamp(NominalScalar, 0.05f, 10.0f);
|
||||||
TurboScalar = std::clamp(TurboScalar, 0.05, 10.0);
|
TurboScalar = std::clamp(TurboScalar, 0.05f, 10.0f);
|
||||||
SlomoScalar = std::clamp(SlomoScalar, 0.05, 10.0);
|
SlomoScalar = std::clamp(SlomoScalar, 0.05f, 10.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pcsx2Config::FramerateOptions::LoadSave(SettingsWrapper& wrap)
|
void Pcsx2Config::FramerateOptions::LoadSave(SettingsWrapper& wrap)
|
||||||
|
@ -1049,6 +1049,11 @@ Pcsx2Config::Pcsx2Config()
|
||||||
|
|
||||||
void Pcsx2Config::LoadSave(SettingsWrapper& wrap)
|
void Pcsx2Config::LoadSave(SettingsWrapper& wrap)
|
||||||
{
|
{
|
||||||
|
// Switch the rounding mode back to the system default for loading settings.
|
||||||
|
// That way, we'll get exactly the same values as what we loaded when we first started.
|
||||||
|
const SSE_MXCSR prev_mxcsr(SSE_MXCSR::GetCurrent());
|
||||||
|
SSE_MXCSR::SetCurrent(SSE_MXCSR{SYSTEM_sseMXCSR});
|
||||||
|
|
||||||
SettingsWrapSection("EmuCore");
|
SettingsWrapSection("EmuCore");
|
||||||
|
|
||||||
SettingsWrapBitBool(CdvdVerboseReads);
|
SettingsWrapBitBool(CdvdVerboseReads);
|
||||||
|
@ -1114,6 +1119,8 @@ void Pcsx2Config::LoadSave(SettingsWrapper& wrap)
|
||||||
{
|
{
|
||||||
CurrentAspectRatio = GS.AspectRatio;
|
CurrentAspectRatio = GS.AspectRatio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SSE_MXCSR::SetCurrent(prev_mxcsr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pcsx2Config::LoadSaveMemcards(SettingsWrapper& wrap)
|
void Pcsx2Config::LoadSaveMemcards(SettingsWrapper& wrap)
|
||||||
|
|
|
@ -194,15 +194,17 @@ int IniLoader::EntryBitfield(const wxString& var, int value, const int defvalue)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IniLoader::Entry(const wxString& var, double& value, const double defvalue)
|
void IniLoader::Entry(const wxString& var, float& value, const float defvalue)
|
||||||
{
|
{
|
||||||
auto readval = wxString::FromCDouble(value);
|
auto readval = wxString::FromCDouble(static_cast<double>(value));
|
||||||
|
|
||||||
if (m_Config)
|
if (m_Config)
|
||||||
m_Config->Read(var, &readval);
|
m_Config->Read(var, &readval);
|
||||||
|
|
||||||
if (!readval.ToCDouble(&value))
|
double dvalue;
|
||||||
value = 0.0;
|
if (!readval.ToCDouble(&dvalue))
|
||||||
|
dvalue = 0.0;
|
||||||
|
value = static_cast<float>(dvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IniLoader::Entry(const wxString& var, wxPoint& value, const wxPoint defvalue)
|
void IniLoader::Entry(const wxString& var, wxPoint& value, const wxPoint defvalue)
|
||||||
|
@ -380,12 +382,12 @@ int IniSaver::EntryBitfield(const wxString& var, int value, const int defvalue)
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IniSaver::Entry(const wxString& var, double& value, const double defvalue)
|
void IniSaver::Entry(const wxString& var, float& value, const float defvalue)
|
||||||
{
|
{
|
||||||
if (!m_Config)
|
if (!m_Config)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_Config->Write(var, wxString::FromCDouble(value));
|
m_Config->Write(var, wxString::FromCDouble(static_cast<double>(value)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void IniSaver::Entry(const wxString& var, wxPoint& value, const wxPoint defvalue)
|
void IniSaver::Entry(const wxString& var, wxPoint& value, const wxPoint defvalue)
|
||||||
|
|
|
@ -59,7 +59,7 @@ public:
|
||||||
virtual void Entry(const wxString& var, int& value, const int defvalue = 0) = 0;
|
virtual void Entry(const wxString& var, int& value, const int defvalue = 0) = 0;
|
||||||
virtual void Entry(const wxString& var, uint& value, const uint defvalue = 0) = 0;
|
virtual void Entry(const wxString& var, uint& value, const uint defvalue = 0) = 0;
|
||||||
virtual void Entry(const wxString& var, bool& value, const bool defvalue = false) = 0;
|
virtual void Entry(const wxString& var, bool& value, const bool defvalue = false) = 0;
|
||||||
virtual void Entry(const wxString& var, double& value, const double defvalue = 0.0) = 0;
|
virtual void Entry(const wxString& var, float& value, const float defvalue = 0.0) = 0;
|
||||||
virtual void Entry(const wxString& var, std::string& value, const std::string& default_value = std::string()) = 0;
|
virtual void Entry(const wxString& var, std::string& value, const std::string& default_value = std::string()) = 0;
|
||||||
|
|
||||||
// This special form of Entry is provided for bitfields, which cannot be passed by reference.
|
// This special form of Entry is provided for bitfields, which cannot be passed by reference.
|
||||||
|
@ -124,7 +124,7 @@ public:
|
||||||
void Entry(const wxString& var, int& value, const int defvalue = 0) override;
|
void Entry(const wxString& var, int& value, const int defvalue = 0) override;
|
||||||
void Entry(const wxString& var, uint& value, const uint defvalue = 0) override;
|
void Entry(const wxString& var, uint& value, const uint defvalue = 0) override;
|
||||||
void Entry(const wxString& var, bool& value, const bool defvalue = false) override;
|
void Entry(const wxString& var, bool& value, const bool defvalue = false) override;
|
||||||
void Entry(const wxString& var, double& value, const double defvalue = 0.0) override;
|
void Entry(const wxString& var, float& value, const float defvalue = 0.0) override;
|
||||||
void Entry(const wxString& var, std::string& value, const std::string& default_value = std::string()) override;
|
void Entry(const wxString& var, std::string& value, const std::string& default_value = std::string()) override;
|
||||||
|
|
||||||
bool EntryBitBool(const wxString& var, bool value, const bool defvalue = false) override;
|
bool EntryBitBool(const wxString& var, bool value, const bool defvalue = false) override;
|
||||||
|
@ -164,7 +164,7 @@ public:
|
||||||
void Entry(const wxString& var, int& value, const int defvalue = 0) override;
|
void Entry(const wxString& var, int& value, const int defvalue = 0) override;
|
||||||
void Entry(const wxString& var, uint& value, const uint defvalue = 0) override;
|
void Entry(const wxString& var, uint& value, const uint defvalue = 0) override;
|
||||||
void Entry(const wxString& var, bool& value, const bool defvalue = false) override;
|
void Entry(const wxString& var, bool& value, const bool defvalue = false) override;
|
||||||
void Entry(const wxString& var, double& value, const double defvalue = 0.0) override;
|
void Entry(const wxString& var, float& value, const float defvalue = 0.0) override;
|
||||||
void Entry(const wxString& var, std::string& value, const std::string& default_value = std::string()) override;
|
void Entry(const wxString& var, std::string& value, const std::string& default_value = std::string()) override;
|
||||||
|
|
||||||
bool EntryBitBool(const wxString& var, bool value, const bool defvalue = false) override;
|
bool EntryBitBool(const wxString& var, bool value, const bool defvalue = false) override;
|
||||||
|
|
Loading…
Reference in New Issue