Fix for Izumo Complete Issue 277, due to lack of understanding of VIF reset.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1409 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2009-06-20 13:08:17 +00:00
parent 40ae3c6ecd
commit 3ad38e99cb
2 changed files with 9 additions and 8 deletions

View File

@ -250,14 +250,9 @@ void GIFdma()
GIFchain(); //Transfers the data set by the switch GIFchain(); //Transfers the data set by the switch
if (((gif->qwc == 0) && (gif->chcr & 0xc) == 0))
gspath3done = 1;
else if(gif->qwc > 0 || gscycles)
{
GIFdmaEnd(); GIFdmaEnd();
return; return;
} }
}
if ((gif->chcr & 0xc) == 0x4 && gspath3done == 0) if ((gif->chcr & 0xc) == 0x4 && gspath3done == 0)
{ {
// Chain Mode // Chain Mode

View File

@ -2691,6 +2691,12 @@ void vif1Write32(u32 mem, u32 value)
psHu64(VIF1_FIFO) = 0; psHu64(VIF1_FIFO) = 0;
psHu64(0x10005008) = 0; // VIF1_FIFO + 8 psHu64(0x10005008) = 0; // VIF1_FIFO + 8
vif1.done = true; vif1.done = true;
if(vif1Regs->mskpath3)
{
vif1Regs->mskpath3 = 0;
psHu32(GIF_STAT) &= ~0x2;
if(gif->chcr & 0x100) CPU_INT(2, 4);
}
vif1Regs->err = 0; vif1Regs->err = 0;
vif1.inprogress = 0; vif1.inprogress = 0;
vif1Regs->stat &= ~(0x1F800000 | VIF1_STAT_INT | VIF1_STAT_VSS | VIF1_STAT_VIS | VIF1_STAT_VFS | VIF1_STAT_VPS); // FQC=0 vif1Regs->stat &= ~(0x1F800000 | VIF1_STAT_INT | VIF1_STAT_VSS | VIF1_STAT_VIS | VIF1_STAT_VFS | VIF1_STAT_VPS); // FQC=0