From c20258d782ada6ce2a628bdf4070b1ad8f8d97b0 Mon Sep 17 00:00:00 2001 From: LillyJadeKatrin Date: Wed, 7 Jun 2023 22:16:39 -0400 Subject: [PATCH] Disable slowdown in hardcore mode Slowing down the emulator would artificially improve reaction times and is therefore disallowed in hardcore mode. Speeds faster than 1x are allowed, but any speed below 1x is scaled back up to 1x. --- Source/Core/Core/CoreTiming.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/Core/Core/CoreTiming.cpp b/Source/Core/Core/CoreTiming.cpp index 2e6f6a0968..ae0a7bd2bf 100644 --- a/Source/Core/Core/CoreTiming.cpp +++ b/Source/Core/Core/CoreTiming.cpp @@ -16,13 +16,16 @@ #include "Common/Logging/Log.h" #include "Common/SPSCQueue.h" +#include "Core/AchievementManager.h" #include "Core/CPUThreadConfigCallback.h" +#include "Core/Config/AchievementSettings.h" #include "Core/Config/MainSettings.h" #include "Core/Core.h" #include "Core/PowerPC/PowerPC.h" #include "Core/System.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/PerformanceMetrics.h" #include "VideoCommon/VideoBackendBase.h" #include "VideoCommon/VideoConfig.h" @@ -135,6 +138,17 @@ void CoreTimingManager::RefreshConfig() m_max_variance = std::chrono::duration_cast
(DT_ms(Config::Get(Config::MAIN_TIMING_VARIANCE))); +#ifdef USE_RETRO_ACHIEVEMENTS + if (AchievementManager::GetInstance()->IsHardcoreModeActive() && + Config::Get(Config::MAIN_EMULATION_SPEED) < 1.0f && + Config::Get(Config::MAIN_EMULATION_SPEED) > 0.0f) + { + Config::SetCurrent(Config::MAIN_EMULATION_SPEED, 1.0f); + m_emulation_speed = 1.0f; + OSD::AddMessage("Minimum speed is 100% in Hardcore Mode"); + } +#endif // USE_RETRO_ACHIEVEMENTS + m_emulation_speed = Config::Get(Config::MAIN_EMULATION_SPEED); }