From 49857e962d4ba38eb8c888392fe4be6669af557e Mon Sep 17 00:00:00 2001 From: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com> Date: Thu, 24 Jul 2025 18:45:45 +0200 Subject: [PATCH] [Core]: Rework Custom CPU Ticks logic / quality --- src/core/core_timing.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp index c4ea15c1dd..ed07e80ce2 100644 --- a/src/core/core_timing.cpp +++ b/src/core/core_timing.cpp @@ -174,15 +174,21 @@ void CoreTiming::UnscheduleEvent(const std::shared_ptr& event_type, } } +static u64 GetNextTickCount(u64 next_ticks) { + if (Settings::values.use_custom_cpu_ticks.GetValue()) { + return Settings::values.cpu_ticks.GetValue(); + } + return next_ticks; +} + void CoreTiming::AddTicks(u64 ticks_to_add) { - cpu_ticks = Settings::values.use_custom_cpu_ticks.GetValue() - ? Settings::values.cpu_ticks.GetValue() - : cpu_ticks + ticks_to_add; - downcount -= static_cast(cpu_ticks); + const u64 ticks = GetNextTickCount(ticks_to_add); + cpu_ticks += ticks; + downcount -= static_cast(ticks); } void CoreTiming::Idle() { - cpu_ticks += 1000U; + AddTicks(1000U); } void CoreTiming::ResetTicks() {