From 6bd6a8d12e19dd3e380c1aa05539850629e9dbfd Mon Sep 17 00:00:00 2001 From: Stenzek Date: Wed, 29 Apr 2026 01:37:02 +1000 Subject: [PATCH] Timers: Interrupt request should be cleared after mode write --- src/core/timers.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/timers.cpp b/src/core/timers.cpp index 4917b2e45..392fe1a34 100644 --- a/src/core/timers.cpp +++ b/src/core/timers.cpp @@ -392,6 +392,9 @@ void Timers::WriteRegister(u32 offset, u32 value) DEBUG_LOG("Timer {} write mode register 0x{:04X}", timer_index, value); cs.mode.bits = (value & WRITE_MASK) | (cs.mode.bits & ~WRITE_MASK); + // Interrupt is cleared after any mode write. + cs.mode.interrupt_request_n = true; + // Why is this extra assignment here? MSVC compiler bugs it seems. // Without the copy in the local variable, when compiling with LTCG, it generates: //