From 3ad38e99cb4e48852d7854437a5fcb36a6dd1e56 Mon Sep 17 00:00:00 2001 From: refraction Date: Sat, 20 Jun 2009 13:08:17 +0000 Subject: [PATCH] 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 --- pcsx2/Gif.cpp | 11 +++-------- pcsx2/VifDma.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pcsx2/Gif.cpp b/pcsx2/Gif.cpp index 15765e0fcb..55a4e0070c 100644 --- a/pcsx2/Gif.cpp +++ b/pcsx2/Gif.cpp @@ -249,14 +249,9 @@ void GIFdma() } 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(); - return; - } + + GIFdmaEnd(); + return; } if ((gif->chcr & 0xc) == 0x4 && gspath3done == 0) { diff --git a/pcsx2/VifDma.cpp b/pcsx2/VifDma.cpp index fcbe73b6bf..0d176d2562 100644 --- a/pcsx2/VifDma.cpp +++ b/pcsx2/VifDma.cpp @@ -2691,6 +2691,12 @@ void vif1Write32(u32 mem, u32 value) psHu64(VIF1_FIFO) = 0; psHu64(0x10005008) = 0; // VIF1_FIFO + 8 vif1.done = true; + if(vif1Regs->mskpath3) + { + vif1Regs->mskpath3 = 0; + psHu32(GIF_STAT) &= ~0x2; + if(gif->chcr & 0x100) CPU_INT(2, 4); + } vif1Regs->err = 0; vif1.inprogress = 0; vif1Regs->stat &= ~(0x1F800000 | VIF1_STAT_INT | VIF1_STAT_VSS | VIF1_STAT_VIS | VIF1_STAT_VFS | VIF1_STAT_VPS); // FQC=0