Config: Port emulation speed setting to new config system.
This commit is contained in:
parent
5d11dc1926
commit
fb47035f97
|
@ -71,7 +71,7 @@ unsigned int Mixer::MixerFifo::Mix(short* samples, unsigned int numSamples,
|
|||
// advance indexR with sample position
|
||||
// remember fractional offset
|
||||
|
||||
float emulationspeed = SConfig::GetInstance().m_EmulationSpeed;
|
||||
float emulationspeed = Config::Get(Config::MAIN_EMULATION_SPEED);
|
||||
float aid_sample_rate = static_cast<float>(m_input_sample_rate);
|
||||
if (consider_framelimit && emulationspeed > 0.0f)
|
||||
{
|
||||
|
|
|
@ -64,7 +64,6 @@ public:
|
|||
|
||||
// These store if the relevant setting should be reset back later (true) or if it should be left
|
||||
// alone on restore (false)
|
||||
bool bSetEmulationSpeed = false;
|
||||
bool bSetVolume = false;
|
||||
std::array<bool, MAX_BBMOTES> bSetWiimoteSource{};
|
||||
std::array<bool, SerialInterface::MAX_SI_CHANNELS> bSetPads{};
|
||||
|
@ -81,7 +80,6 @@ private:
|
|||
int iSyncGpuMinDistance = 0;
|
||||
float fSyncGpuOverclock = 0;
|
||||
bool bFastDiscSpeed = false;
|
||||
float m_EmulationSpeed = 0;
|
||||
std::string m_strGPUDeterminismMode;
|
||||
std::array<WiimoteSource, MAX_BBMOTES> iWiimoteSource{};
|
||||
std::array<SerialInterface::SIDevices, SerialInterface::MAX_SI_CHANNELS> Pads{};
|
||||
|
@ -101,7 +99,6 @@ void ConfigCache::SaveConfig(const SConfig& config)
|
|||
iSyncGpuMinDistance = config.iSyncGpuMinDistance;
|
||||
fSyncGpuOverclock = config.fSyncGpuOverclock;
|
||||
bFastDiscSpeed = config.bFastDiscSpeed;
|
||||
m_EmulationSpeed = config.m_EmulationSpeed;
|
||||
m_strGPUDeterminismMode = config.m_strGPUDeterminismMode;
|
||||
|
||||
for (int i = 0; i != MAX_BBMOTES; ++i)
|
||||
|
@ -110,7 +107,6 @@ void ConfigCache::SaveConfig(const SConfig& config)
|
|||
std::copy(std::begin(config.m_SIDevice), std::end(config.m_SIDevice), std::begin(Pads));
|
||||
std::copy(std::begin(config.m_EXIDevice), std::end(config.m_EXIDevice), std::begin(m_EXIDevice));
|
||||
|
||||
bSetEmulationSpeed = false;
|
||||
bSetVolume = false;
|
||||
bSetWiimoteSource.fill(false);
|
||||
bSetPads.fill(false);
|
||||
|
@ -151,9 +147,6 @@ void ConfigCache::RestoreConfig(SConfig* config)
|
|||
config->m_SIDevice[i] = Pads[i];
|
||||
}
|
||||
|
||||
if (bSetEmulationSpeed)
|
||||
config->m_EmulationSpeed = m_EmulationSpeed;
|
||||
|
||||
for (unsigned int i = 0; i < ExpansionInterface::MAX_EXI_CHANNELS; ++i)
|
||||
{
|
||||
if (bSetEXIDevice[i])
|
||||
|
@ -165,11 +158,6 @@ void ConfigCache::RestoreConfig(SConfig* config)
|
|||
|
||||
static ConfigCache config_cache;
|
||||
|
||||
void SetEmulationSpeedReset(bool value)
|
||||
{
|
||||
config_cache.bSetEmulationSpeed = value;
|
||||
}
|
||||
|
||||
static GPUDeterminismMode ParseGPUDeterminismMode(const std::string& mode)
|
||||
{
|
||||
if (mode == "auto")
|
||||
|
@ -212,9 +200,6 @@ bool BootCore(std::unique_ptr<BootParameters> boot, const WindowSystemInfo& wsi)
|
|||
core_section->Get("MMU", &StartUp.bMMU, StartUp.bMMU);
|
||||
core_section->Get("SyncGPU", &StartUp.bSyncGPU, StartUp.bSyncGPU);
|
||||
core_section->Get("FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
|
||||
if (core_section->Get("EmulationSpeed", &StartUp.m_EmulationSpeed, StartUp.m_EmulationSpeed))
|
||||
config_cache.bSetEmulationSpeed = true;
|
||||
|
||||
core_section->Get("GPUDeterminismMode", &StartUp.m_strGPUDeterminismMode,
|
||||
StartUp.m_strGPUDeterminismMode);
|
||||
|
||||
|
@ -302,8 +287,6 @@ bool BootCore(std::unique_ptr<BootParameters> boot, const WindowSystemInfo& wsi)
|
|||
StartUp.bFastDiscSpeed = netplay_settings.m_FastDiscSpeed;
|
||||
StartUp.bMMU = netplay_settings.m_MMU;
|
||||
StartUp.bFastmem = netplay_settings.m_Fastmem;
|
||||
if (netplay_settings.m_HostInputAuthority && !netplay_settings.m_IsHosting)
|
||||
config_cache.bSetEmulationSpeed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -11,7 +11,6 @@ struct WindowSystemInfo;
|
|||
namespace BootManager
|
||||
{
|
||||
bool BootCore(std::unique_ptr<BootParameters> parameters, const WindowSystemInfo& wsi);
|
||||
void SetEmulationSpeedReset(bool value);
|
||||
|
||||
// Synchronise Dolphin's configuration with the SYSCONF (which may have changed during emulation),
|
||||
// and restore settings that were overriden by per-game INIs or for some other reason.
|
||||
|
|
|
@ -97,6 +97,7 @@ bool IsSettingSaveable(const Config::Location& config_location)
|
|||
&Config::GetInfoForSimulateKonga(1).GetLocation(),
|
||||
&Config::GetInfoForSimulateKonga(2).GetLocation(),
|
||||
&Config::GetInfoForSimulateKonga(3).GetLocation(),
|
||||
&Config::MAIN_EMULATION_SPEED.GetLocation(),
|
||||
|
||||
// UI.General
|
||||
|
||||
|
|
|
@ -120,7 +120,6 @@ void SConfig::SaveCoreSettings(IniFile& ini)
|
|||
core->Set("WiimoteEnableSpeaker", m_WiimoteEnableSpeaker);
|
||||
core->Set("WiimoteControllerInterface", connect_wiimotes_for_ciface);
|
||||
core->Set("MMU", bMMU);
|
||||
core->Set("EmulationSpeed", m_EmulationSpeed);
|
||||
core->Set("GPUDeterminismMode", m_strGPUDeterminismMode);
|
||||
core->Set("PerfMapDir", m_perfDir);
|
||||
}
|
||||
|
@ -165,7 +164,6 @@ void SConfig::LoadCoreSettings(IniFile& ini)
|
|||
core->Get("SyncGpuOverclock", &fSyncGpuOverclock, 1.0f);
|
||||
core->Get("FastDiscSpeed", &bFastDiscSpeed, false);
|
||||
core->Get("DisableICache", &bDisableICache, false);
|
||||
core->Get("EmulationSpeed", &m_EmulationSpeed, 1.0f);
|
||||
core->Get("GPUDeterminismMode", &m_strGPUDeterminismMode, "auto");
|
||||
core->Get("PerfMapDir", &m_perfDir, "");
|
||||
}
|
||||
|
|
|
@ -146,8 +146,6 @@ struct SConfig
|
|||
ExpansionInterface::TEXIDevices m_EXIDevice[3];
|
||||
SerialInterface::SIDevices m_SIDevice[4];
|
||||
|
||||
float m_EmulationSpeed;
|
||||
|
||||
SConfig(const SConfig&) = delete;
|
||||
SConfig& operator=(const SConfig&) = delete;
|
||||
SConfig(SConfig&&) = delete;
|
||||
|
|
|
@ -174,7 +174,8 @@ void ThrottleCallback(u64 last_time, s64 cyclesLate)
|
|||
|
||||
s64 diff = last_time - time;
|
||||
const SConfig& config = SConfig::GetInstance();
|
||||
bool frame_limiter = config.m_EmulationSpeed > 0.0f && !Core::GetIsThrottlerTempDisabled();
|
||||
const float emulation_speed = Config::Get(Config::MAIN_EMULATION_SPEED);
|
||||
bool frame_limiter = emulation_speed > 0.0f && !Core::GetIsThrottlerTempDisabled();
|
||||
u32 next_event = GetTicksPerSecond() / 1000;
|
||||
|
||||
{
|
||||
|
@ -186,8 +187,8 @@ void ThrottleCallback(u64 last_time, s64 cyclesLate)
|
|||
|
||||
if (frame_limiter)
|
||||
{
|
||||
if (config.m_EmulationSpeed != 1.0f)
|
||||
next_event = u32(next_event * config.m_EmulationSpeed);
|
||||
if (emulation_speed != 1.0f)
|
||||
next_event = u32(next_event * emulation_speed);
|
||||
const s64 max_fallback = config.iTimingVariance * 1000;
|
||||
if (std::abs(diff) > max_fallback)
|
||||
{
|
||||
|
|
|
@ -14,9 +14,7 @@
|
|||
#include "Common/SettingsHandler.h"
|
||||
#include "Common/Timer.h"
|
||||
#include "Common/Version.h"
|
||||
#include "Core/BootManager.h"
|
||||
#include "Core/Config/MainSettings.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/Core.h"
|
||||
#include "Core/HW/Memmap.h"
|
||||
|
||||
|
@ -103,8 +101,7 @@ IPCReply GetSpeedLimit(const IOCtlVRequest& request)
|
|||
return IPCReply(IPC_EINVAL);
|
||||
}
|
||||
|
||||
const SConfig& config = SConfig::GetInstance();
|
||||
const u32 speed_percent = config.m_EmulationSpeed * 100;
|
||||
const u32 speed_percent = Config::Get(Config::MAIN_EMULATION_SPEED) * 100;
|
||||
Memory::Write_U32(speed_percent, request.io_vectors[0].address);
|
||||
|
||||
return IPCReply(IPC_SUCCESS);
|
||||
|
@ -124,8 +121,7 @@ IPCReply SetSpeedLimit(const IOCtlVRequest& request)
|
|||
}
|
||||
|
||||
const float speed = float(Memory::Read_U32(request.in_vectors[0].address)) / 100.0f;
|
||||
SConfig::GetInstance().m_EmulationSpeed = speed;
|
||||
BootManager::SetEmulationSpeedReset(true);
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
|
||||
return IPCReply(IPC_SUCCESS);
|
||||
}
|
||||
|
|
|
@ -2033,13 +2033,13 @@ bool NetPlayClient::GetNetPads(const int pad_nb, const bool batching, GCPadStatu
|
|||
if (time_diff.count() >= 1.0 || !buffer_over_target)
|
||||
{
|
||||
// run fast if the buffer is overfilled, otherwise run normal speed
|
||||
SConfig::GetInstance().m_EmulationSpeed = buffer_over_target ? 0.0f : 1.0f;
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, buffer_over_target ? 0.0f : 1.0f);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set normal speed when we're the host, otherwise it can get stuck at unlimited
|
||||
SConfig::GetInstance().m_EmulationSpeed = 1.0f;
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -459,26 +459,26 @@ void HotkeyScheduler::Run()
|
|||
Core::SetIsThrottlerTempDisabled(IsHotkey(HK_TOGGLE_THROTTLE, true));
|
||||
|
||||
auto ShowEmulationSpeed = []() {
|
||||
const float emulation_speed = Config::Get(Config::MAIN_EMULATION_SPEED);
|
||||
OSD::AddMessage(
|
||||
SConfig::GetInstance().m_EmulationSpeed <= 0 ?
|
||||
emulation_speed <= 0 ?
|
||||
"Speed Limit: Unlimited" :
|
||||
StringFromFormat("Speed Limit: %li%%",
|
||||
std::lround(SConfig::GetInstance().m_EmulationSpeed * 100.f)));
|
||||
StringFromFormat("Speed Limit: %li%%", std::lround(emulation_speed * 100.f)));
|
||||
};
|
||||
|
||||
if (IsHotkey(HK_DECREASE_EMULATION_SPEED))
|
||||
{
|
||||
auto speed = SConfig::GetInstance().m_EmulationSpeed - 0.1;
|
||||
auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) - 0.1;
|
||||
speed = (speed <= 0 || (speed >= 0.95 && speed <= 1.05)) ? 1.0 : speed;
|
||||
SConfig::GetInstance().m_EmulationSpeed = speed;
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
ShowEmulationSpeed();
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_INCREASE_EMULATION_SPEED))
|
||||
{
|
||||
auto speed = SConfig::GetInstance().m_EmulationSpeed + 0.1;
|
||||
auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) + 0.1;
|
||||
speed = (speed >= 0.95 && speed <= 1.05) ? 1.0 : speed;
|
||||
SConfig::GetInstance().m_EmulationSpeed = speed;
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
ShowEmulationSpeed();
|
||||
}
|
||||
|
||||
|
|
|
@ -260,7 +260,7 @@ void GeneralPane::LoadConfig()
|
|||
#ifdef USE_DISCORD_PRESENCE
|
||||
m_checkbox_discord_presence->setChecked(Config::Get(Config::MAIN_USE_DISCORD_PRESENCE));
|
||||
#endif
|
||||
int selection = qRound(SConfig::GetInstance().m_EmulationSpeed * 10);
|
||||
int selection = qRound(Config::Get(Config::MAIN_EMULATION_SPEED) * 10);
|
||||
if (selection < m_combobox_speedlimit->count())
|
||||
m_combobox_speedlimit->setCurrentIndex(selection);
|
||||
m_checkbox_dualcore->setChecked(SConfig::GetInstance().bCPUThread);
|
||||
|
@ -353,7 +353,8 @@ void GeneralPane::OnSaveConfig()
|
|||
m_checkbox_override_region_settings->isChecked());
|
||||
Config::SetBase(Config::MAIN_AUTO_DISC_CHANGE, m_checkbox_auto_disc_change->isChecked());
|
||||
Config::SetBaseOrCurrent(Config::MAIN_ENABLE_CHEATS, m_checkbox_cheats->isChecked());
|
||||
settings.m_EmulationSpeed = m_combobox_speedlimit->currentIndex() * 0.1f;
|
||||
Config::SetBaseOrCurrent(Config::MAIN_EMULATION_SPEED,
|
||||
m_combobox_speedlimit->currentIndex() * 0.1f);
|
||||
Settings::Instance().SetFallbackRegion(
|
||||
UpdateFallbackRegionFromIndex(m_combobox_fallback_region->currentIndex()));
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "Common/CommonTypes.h"
|
||||
#include "Common/StringUtil.h"
|
||||
#include "Core/Config/GraphicsSettings.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/Config/MainSettings.h"
|
||||
#include "Core/Core.h"
|
||||
#include "Core/Movie.h"
|
||||
#include "VideoCommon/DriverDetails.h"
|
||||
|
@ -24,7 +24,7 @@ static bool IsVSyncActive(bool enabled)
|
|||
{
|
||||
// Vsync is disabled when the throttler is disabled by the tab key.
|
||||
return enabled && !Core::GetIsThrottlerTempDisabled() &&
|
||||
SConfig::GetInstance().m_EmulationSpeed == 1.0;
|
||||
Config::Get(Config::MAIN_EMULATION_SPEED) == 1.0;
|
||||
}
|
||||
|
||||
void UpdateActiveConfig()
|
||||
|
|
Loading…
Reference in New Issue