From 6b373ee02fb32bf807ab1357517da37fa1327afe Mon Sep 17 00:00:00 2001 From: dinkc64 Date: Sat, 5 Jul 2025 08:54:49 -0400 Subject: [PATCH] megadrive, fix dma stun during vbl (fixes outrunners) --- src/burn/drv/megadrive/megadrive.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/burn/drv/megadrive/megadrive.cpp b/src/burn/drv/megadrive/megadrive.cpp index c2c570250..1a99c41ba 100644 --- a/src/burn/drv/megadrive/megadrive.cpp +++ b/src/burn/drv/megadrive/megadrive.cpp @@ -5011,7 +5011,8 @@ INT32 MegadriveFrame() RamVReg->pending_ints |= 0x10; if (RamVReg->reg[0] & 0x10) { //bprintf(0, _T("h-int @ %d. "), SekCyclesDoneFrame()); - SekSetIRQLine(4, CPU_IRQSTATUS_ACK); + //SekSetIRQLine(4, CPU_IRQSTATUS_ACK); + if (SekGetIRQLevel() < 4) SekSetIRQLine(4, CPU_IRQSTATUS_ACK); } } @@ -5031,7 +5032,7 @@ INT32 MegadriveFrame() SekCyclesBurn(DMABURN()); #endif #endif - SekCyclesBurnRun(CheckDMA()); + SekCyclesBurn(CheckDMA()); SekRunM68k(CYCLES_M68K_VINT_LAG); @@ -5079,7 +5080,7 @@ INT32 MegadriveFrame() if (y < lines_vis) { do_timing_hacks_as(vdp_slots); } else { - SekCyclesBurnRun(CheckDMA()); + SekCyclesBurn(CheckDMA()); } SekRunM68k(CYCLES_M68K_LINE); }