From 1797664a3383f9798707a3c5a1137608e47eb3fe Mon Sep 17 00:00:00 2001 From: XingXing Date: Fri, 13 Sep 2024 22:06:01 +0800 Subject: igs/igs027a.cpp: Corrected timer interval calculation. (#12759) Fixes slowdown in jking02. --- src/mame/igs/igs027a.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/mame/igs/igs027a.cpp b/src/mame/igs/igs027a.cpp index d64bf09cd64..a1d7d8bcf27 100644 --- a/src/mame/igs/igs027a.cpp +++ b/src/mame/igs/igs027a.cpp @@ -87,7 +87,16 @@ template void igs027a_cpu_device::timer_rate_w(u8 data) { // TODO: determine how timer intervals are derived from clocks - m_irq_timers[N]->adjust(attotime::from_hz(data / 2), 0, attotime::from_hz(data / 2)); + if (data) + { + constexpr u32 TIMER_DIVISOR = 4263; + auto period = attotime::from_ticks(TIMER_DIVISOR * (data + 1), clock()); + m_irq_timers[N]->adjust(period, 0, period); + } + else + { + m_irq_timers[N]->adjust(attotime::never, 0, attotime::never); + } } u8 igs027a_cpu_device::irq_pending_r() -- cgit v1.2.3