mirror of https://github.com/PCSX2/pcsx2.git
Found and fixed the issue causing some FFX battles to hang since ~400 revs ago.
The same problem caused the hang in Phantasy Star 4 when pressing pause. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3645 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
a8e406523b
commit
6798f27d4d
|
@ -342,11 +342,17 @@ __fi void dmaSIF0()
|
||||||
psHu32(SBUS_F240) |= 0x2000;
|
psHu32(SBUS_F240) |= 0x2000;
|
||||||
sif0.ee.busy = true;
|
sif0.ee.busy = true;
|
||||||
|
|
||||||
/*if (sif0.iop.busy)
|
// Okay, this here is needed currently (r3644).
|
||||||
{*/
|
// FFX battles in the thunder plains map die otherwise, Phantasy Star 4 as well
|
||||||
hwIntcIrq(INTC_SBUS);
|
// These 2 games could be made playable again by increasing the time the EE or the IOP run,
|
||||||
|
// showing that this is very timing sensible.
|
||||||
|
// Doing this DMA unfortunately brings back an old warning in Legend of Legaia though, but it still works.
|
||||||
|
if (sif0.iop.busy)
|
||||||
|
{
|
||||||
|
//hwIntcIrq(INTC_SBUS); // not sure, so let's not
|
||||||
SIF0Dma();
|
SIF0Dma();
|
||||||
psHu32(SBUS_F240) &= ~0x20;
|
// Do we really want to mess with the SIF flags like that? Nah.
|
||||||
psHu32(SBUS_F240) &= ~0x2000;
|
//psHu32(SBUS_F240) &= ~0x20;
|
||||||
//}
|
//psHu32(SBUS_F240) &= ~0x2000;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -341,11 +341,17 @@ __fi void dmaSIF1()
|
||||||
psHu32(SBUS_F240) |= 0x4000;
|
psHu32(SBUS_F240) |= 0x4000;
|
||||||
sif1.ee.busy = true;
|
sif1.ee.busy = true;
|
||||||
|
|
||||||
/*if (sif1.iop.busy)
|
// Okay, this here is needed currently (r3644).
|
||||||
{*/
|
// FFX battles in the thunder plains map die otherwise, Phantasy Star 4 as well
|
||||||
|
// These 2 games could be made playable again by increasing the time the EE or the IOP run,
|
||||||
|
// showing that this is very timing sensible.
|
||||||
|
// Doing this DMA unfortunately brings back an old warning in Legend of Legaia though, but it still works.
|
||||||
|
if (sif1.iop.busy)
|
||||||
|
{
|
||||||
SIF1Dma();
|
SIF1Dma();
|
||||||
psHu32(SBUS_F240) &= ~0x40;
|
// Do we really want to mess with the SIF flags like that? Nah.
|
||||||
psHu32(SBUS_F240) &= ~0x100;
|
//psHu32(SBUS_F240) &= ~0x40;
|
||||||
psHu32(SBUS_F240) &= ~0x4000;
|
//psHu32(SBUS_F240) &= ~0x100;
|
||||||
//}
|
//psHu32(SBUS_F240) &= ~0x4000;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue