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
This commit is contained in:
refraction 2009-03-07 13:10:12 +00:00
parent 661d5442a8
commit e88cf84e9c
1 changed files with 23 additions and 16 deletions

View File

@ -998,21 +998,24 @@ int VIF0transfer(u32 *data, int size, int istag) {
++data; ++data;
--vif0.vifpacketsize; --vif0.vifpacketsize;
if ((vif0.cmd & 0x80)) { //i bit on vifcode and not masked by VIF0_ERR if ((vif0.cmd & 0x80))
if(!(vif0Regs->err & 0x1)){ {
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) ); VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif0.cmd, psHu32(INTC_MASK) );
++vif0.irq; ++vif0.irq;
if(istag && vif0.tag.size <= vif0.vifpacketsize) vif0.stallontag = 1; if(istag && vif0.tag.size <= vif0.vifpacketsize) vif0.stallontag = 1;
if(vif0.tag.size == 0) break;
} if(vif0.tag.size == 0) break;
vif0.cmd &= 0x7f; }
} }
}
} //End of Transfer loop
transferred += size - vif0.vifpacketsize; transferred += size - vif0.vifpacketsize;
g_vifCycles+= (transferred >> 2)*BIAS; /* guessing */ g_vifCycles+= (transferred >> 2)*BIAS; /* guessing */
// use tag.size because some game doesn't like .cmd // use tag.size because some game doesn't like .cmd
@ -1837,19 +1840,23 @@ int VIF1transfer(u32 *data, int size, int istag) {
--vif1.vifpacketsize; --vif1.vifpacketsize;
if ((vif1.cmd & 0x80)) { //i bit on vifcode and not masked by VIF1_ERR if ((vif1.cmd & 0x80))
VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif1.cmd, psHu32(INTC_MASK) ); {
vif1.cmd &= 0x7f;
if(!(vif1Regs->err & 0x1)){
++vif1.irq; 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(istag && vif1.tag.size <= vif1.vifpacketsize) vif1.stallontag = 1;
if(vif1.tag.size == 0) break; if(vif1.tag.size == 0) break;
} }
vif1.cmd &= 0x7f;
} }
}
} // End of Transfer loop
transferred += size - vif1.vifpacketsize; transferred += size - vif1.vifpacketsize;
g_vifCycles+= (transferred>>2)*BIAS; /* guessing */ g_vifCycles+= (transferred>>2)*BIAS; /* guessing */