mirror of https://github.com/PCSX2/pcsx2.git
This should be the proper fix for Eternal Poison dieing on reboots.
Bit ugly code though.. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2791 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
294705aea6
commit
6ffb25cb83
|
@ -164,7 +164,7 @@ static __forceinline void EndIOP()
|
|||
|
||||
if (sif0.iop.cycles == 0)
|
||||
{
|
||||
SIF_LOG("SIF0 IOP: cycles = 0");
|
||||
DevCon.Warning("SIF0 IOP: cycles = 0");
|
||||
sif0.iop.cycles = 1;
|
||||
}
|
||||
// iop is 1/8th the clock rate of the EE and psxcycles is in words (not quadwords)
|
||||
|
@ -176,13 +176,19 @@ static __forceinline void EndIOP()
|
|||
// Handle the EE transfer.
|
||||
static __forceinline void HandleEETransfer()
|
||||
{
|
||||
#ifdef PCSX2_DEVBUILD
|
||||
if (dmacRegs->ctrl.STS == STS_SIF0)
|
||||
{
|
||||
SIF_LOG("SIF0 stall control");
|
||||
DevCon.Warning("SIF0 stall control");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (sif0dma->qwc == 0)
|
||||
if (sif0dma->chcr.MOD == NORMAL_MODE)
|
||||
if (!sif0.ee.end){
|
||||
DevCon.Warning("sif0 irq prevented");
|
||||
done = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (sif0dma->qwc <= 0)
|
||||
{
|
||||
if ((sif0dma->chcr.MOD == NORMAL_MODE) || sif0.ee.end)
|
||||
|
|
|
@ -191,7 +191,7 @@ static __forceinline void EndIOP()
|
|||
//Total cycles over 1024 makes SIF too slow to keep up the sound stream in so3...
|
||||
if (sif1.iop.cycles == 0)
|
||||
{
|
||||
SIF_LOG("SIF1 IOP: cycles = 0");
|
||||
DevCon.Warning("SIF1 IOP: cycles = 0");
|
||||
sif1.iop.cycles = 1;
|
||||
}
|
||||
// iop is 1/8th the clock rate of the EE and psxcycles is in words (not quadwords)
|
||||
|
@ -201,12 +201,18 @@ static __forceinline void EndIOP()
|
|||
// Handle the EE transfer.
|
||||
static __forceinline void HandleEETransfer()
|
||||
{
|
||||
#ifdef PCSX2_DEVBUILD
|
||||
if (dmacRegs->ctrl.STD == STD_SIF1)
|
||||
{
|
||||
SIF_LOG("SIF1 stall control"); // STD == fromSIF1
|
||||
DevCon.Warning("SIF1 stall control"); // STD == fromSIF1
|
||||
}
|
||||
#endif
|
||||
|
||||
if (sif1dma->qwc == 0)
|
||||
if (sif1dma->chcr.MOD == NORMAL_MODE)
|
||||
if (!sif1.ee.end){
|
||||
DevCon.Warning("sif1 irq prevented");
|
||||
done = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// If there's no more to transfer.
|
||||
if (sif1dma->qwc <= 0)
|
||||
|
|
Loading…
Reference in New Issue