..trying out CPU_IRQSTATUS_HOLD

This commit is contained in:
dinkc64 2015-02-20 16:26:29 +00:00
parent 80014e3d9c
commit 9e08b5cb4f
4 changed files with 10 additions and 30 deletions

View File

@ -977,9 +977,7 @@ static INT32 DrvFrame()
nCyclesSegment = ZetRun(nCyclesSegment);
nCyclesDone[nCurrentCPU] += nCyclesSegment;
if (i & 1) { // 4 times per frame
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100); // needs long ack
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();

View File

@ -857,9 +857,7 @@ void __fastcall jack_cpu0_write(UINT16 address, UINT8 data)
soundlatch = data;
ZetClose();
ZetOpen(1);
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
ZetClose();
ZetOpen(0);
break;

View File

@ -2159,9 +2159,7 @@ static INT32 HardheadFrame()
nCyclesSegment = (nCyclesTotal[1] / nInterleave) * (i + 1);
BurnTimerUpdateYM3812(nCyclesSegment);
if ((i % (nInterleave/4)) == ((nInterleave / 4) - 1)) {
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();
}
@ -2222,9 +2220,7 @@ static INT32 RrangerFrame()
nCyclesSegment = (nCyclesTotal[1] / nInterleave) * (i + 1);
BurnTimerUpdate(nCyclesSegment);
if ((i % (nInterleave/4)) == ((nInterleave / 4) - 1)) {
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();
}
@ -2282,9 +2278,7 @@ static INT32 Hardhea2Frame()
nCyclesSegment = (nCyclesTotal[1] / nInterleave) * (i + 1);
BurnTimerUpdateYM3812(nCyclesSegment);
if ((i % (nInterleave/4)) == ((nInterleave / 4) - 1)) {
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();
@ -2350,9 +2344,7 @@ static INT32 SparkmanFrame() // & starfigh
if (i == 112 && *nmi_enable) ZetNmi();
if (i == (Sparkman ? 250 : 255)) { // any other value and the sprites glitch (MAME uses 240 here, hmmm)
vblank = 1;
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();
@ -2360,9 +2352,7 @@ static INT32 SparkmanFrame() // & starfigh
nCyclesSegment = (nCyclesTotal[1] / nInterleave) * (i + 1);
BurnTimerUpdateYM3812(nCyclesSegment);
if ((i % (nInterleave/4)) == ((nInterleave / 4) - 1)) {
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();
}

View File

@ -570,23 +570,17 @@ static INT32 DrvFrame()
nCycles[0] -= ZetRun(nCycles[0] / (nInterleave - i));
if (i == ((nInterleave / 2) - 1)) {
ZetSetVector(0xd7);
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
if (i == ( nInterleave - 1)) {
ZetSetVector(0xcf);
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
}
ZetClose();
ZetOpen(1);
nCycles[1] -= ZetRun(nCycles[1] / (nInterleave - i));
ZetSetIRQLine(0, CPU_IRQSTATUS_ACK);
ZetRun(100);
ZetSetIRQLine(0, CPU_IRQSTATUS_NONE);
ZetSetIRQLine(0, CPU_IRQSTATUS_HOLD);
ZetClose();
if (pBurnSoundOut) {