mirror of https://github.com/PCSX2/pcsx2.git
Limit EESIF1 scheduled interrupts to a maximum of 384 cycles, stops a lot of timeouts and subsequent reschedules.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2476 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
aac2a2e0d1
commit
cf809cd1df
|
@ -173,7 +173,8 @@ __forceinline void PSX_INT( IopEventId n, s32 ecycle )
|
||||||
DevCon.Warning( "***** IOP > Twice-thrown int on IRQ %d", n );
|
DevCon.Warning( "***** IOP > Twice-thrown int on IRQ %d", n );
|
||||||
|
|
||||||
// 19 is CDVD read int, it's supposed to be high.
|
// 19 is CDVD read int, it's supposed to be high.
|
||||||
//if (ecycle > 8192 && n != 19) DevCon.Warning( "IOP cycles high: %d, n %d", ecycle, n );
|
//if (ecycle > 8192 && n != 19)
|
||||||
|
// DevCon.Warning( "IOP cycles high: %d, n %d", ecycle, n );
|
||||||
|
|
||||||
psxRegs.interrupt |= 1 << n;
|
psxRegs.interrupt |= 1 << n;
|
||||||
|
|
||||||
|
|
|
@ -539,7 +539,9 @@ __forceinline void CPU_INT( u32 n, s32 ecycle)
|
||||||
DevCon.Warning( "***** EE > Twice-thrown int on IRQ %d", n );
|
DevCon.Warning( "***** EE > Twice-thrown int on IRQ %d", n );
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (ecycle > 8192) DevCon.Warning( "EE cycles high: %d, n %d", ecycle, n );
|
//if (ecycle > 8192 && n != DMAC_TO_IPU && n != DMAC_FROM_IPU) {
|
||||||
|
// DevCon.Warning( "EE cycles high: %d, n %d", ecycle, n );
|
||||||
|
//}
|
||||||
|
|
||||||
cpuRegs.interrupt|= 1 << n;
|
cpuRegs.interrupt|= 1 << n;
|
||||||
cpuRegs.sCycle[n] = cpuRegs.cycle;
|
cpuRegs.sCycle[n] = cpuRegs.cycle;
|
||||||
|
|
|
@ -130,10 +130,10 @@ __forceinline void SIF1EEDma(int &cycles, int &psxCycles, bool &done)
|
||||||
eesifbusy[1] = false;
|
eesifbusy[1] = false;
|
||||||
done = true;
|
done = true;
|
||||||
|
|
||||||
// Voodoocycles : 4 cycles always, stops games from throwing double interrupts.
|
// Voodoocycles : Okami wants around 100 cycles when booting up
|
||||||
// Edit: Ok, one game (Okami) wants bad timing aparently, so revert this until I know which values it likes.
|
// Other games reach like 50k cycles here, but the EE will long have given up by then and just retry.
|
||||||
//CPU_INT(6, 4);
|
// (Cause of double interrupts on the EE)
|
||||||
CPU_INT(6, cycles*BIAS);
|
CPU_INT(6, min( (int)(cycles*BIAS), 384 ) );
|
||||||
sif1.end = 0;
|
sif1.end = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue