From 9e57201b0820ece8b1087579422347f2f776e3a6 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 5 Dec 2021 16:18:54 +0200 Subject: [PATCH] Accurate IF clear timing --- Core/sm83_cpu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index 6920c79..4980871 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -1639,6 +1639,10 @@ void GB_cpu_run(GB_gameboy_t *gb) interrupt_queue >>= 1; interrupt_bit++; } + assert(gb->pending_cycles > 2); + gb->pending_cycles -= 2; + flush_pending_cycles(gb); + gb->pending_cycles = 2; gb->io_registers[GB_IO_IF] &= ~(1 << interrupt_bit); gb->pc = interrupt_bit * 8 + 0x40; }