From e88cf84e9c85acfa9ae99a089ee19ef0378c8df3 Mon Sep 17 00:00:00 2001 From: refraction Date: Sat, 7 Mar 2009 13:10:12 +0000 Subject: [PATCH] Fixed a silly error (on my part) which stopped the Gran Turismo games loading, looks like it was the same reason Tekken 5 broke too. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@713 96395faa-99c1-11dd-bbfe-3dabce05a288 --- pcsx2/VifDma.cpp | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/pcsx2/VifDma.cpp b/pcsx2/VifDma.cpp index 5048c50ab0..6845abb887 100644 --- a/pcsx2/VifDma.cpp +++ b/pcsx2/VifDma.cpp @@ -998,21 +998,24 @@ int VIF0transfer(u32 *data, int size, int istag) { ++data; --vif0.vifpacketsize; - if ((vif0.cmd & 0x80)) { //i bit on vifcode and not masked by VIF0_ERR - if(!(vif0Regs->err & 0x1)){ + if ((vif0.cmd & 0x80)) + { + vif0.cmd &= 0x7f; + if(!(vif0Regs->err & 0x1)) //i bit on vifcode and not masked by VIF0_ERR + { VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif0.cmd, psHu32(INTC_MASK) ); ++vif0.irq; if(istag && vif0.tag.size <= vif0.vifpacketsize) vif0.stallontag = 1; - if(vif0.tag.size == 0) break; - } - vif0.cmd &= 0x7f; - + if(vif0.tag.size == 0) break; + } } - } + + } //End of Transfer loop + transferred += size - vif0.vifpacketsize; g_vifCycles+= (transferred >> 2)*BIAS; /* guessing */ // use tag.size because some game doesn't like .cmd @@ -1837,19 +1840,23 @@ int VIF1transfer(u32 *data, int size, int istag) { --vif1.vifpacketsize; - if ((vif1.cmd & 0x80)) { //i bit on vifcode and not masked by VIF1_ERR - VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif1.cmd, psHu32(INTC_MASK) ); - - if(!(vif1Regs->err & 0x1)){ - ++vif1.irq; + if ((vif1.cmd & 0x80)) + { + vif1.cmd &= 0x7f; + + if(!(vif1Regs->err & 0x1)) //i bit on vifcode and not masked by VIF1_ERR + { + VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif1.cmd, psHu32(INTC_MASK) ); + + ++vif1.irq; + if(istag && vif1.tag.size <= vif1.vifpacketsize) vif1.stallontag = 1; if(vif1.tag.size == 0) break; - } - vif1.cmd &= 0x7f; - + } } - } + + } // End of Transfer loop transferred += size - vif1.vifpacketsize; g_vifCycles+= (transferred>>2)*BIAS; /* guessing */