mirror of https://github.com/PCSX2/pcsx2.git
Fixed a bug pseudonym spotted. stalls should be handled properly once again on games that have IRQ's on VIF Mark commands.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5372 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
c83b72339b
commit
0e3a7f74be
|
@ -83,27 +83,28 @@ _vifT static __fi bool vifTransfer(u32 *data, int size, bool TTE) {
|
||||||
|
|
||||||
vifX.irqoffset = transferred % 4; // cannot lose the offset
|
vifX.irqoffset = transferred % 4; // cannot lose the offset
|
||||||
|
|
||||||
if (!TTE) {// *WARNING* - Tags CAN have interrupts! so lets just ignore the dma modifying stuffs (GT4)
|
if (vifX.irq && vifX.cmd == 0) {
|
||||||
|
//DevCon.WriteLn("Vif IRQ!");
|
||||||
|
if(((vifXRegs.code >> 24) & 0x7f) != 0x7) {
|
||||||
|
vifXRegs.stat.VIS = true; // Note: commenting this out fixes WALL-E?
|
||||||
|
}
|
||||||
|
//Always needs to be set to return to the correct offset if there is data left.
|
||||||
|
vifX.vifstalled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TTE) // *WARNING* - Tags CAN have interrupts! so lets just ignore the dma modifying stuffs (GT4)
|
||||||
|
{
|
||||||
transferred = transferred >> 2;
|
transferred = transferred >> 2;
|
||||||
vifXch.madr +=(transferred << 4);
|
vifXch.madr +=(transferred << 4);
|
||||||
vifXch.qwc -= transferred;
|
vifXch.qwc -= transferred;
|
||||||
|
|
||||||
if (vifXch.chcr.STR) hwDmacSrcTadrInc(vifXch);
|
if (vifXch.chcr.STR) hwDmacSrcTadrInc(vifXch);
|
||||||
|
|
||||||
if(!vifXch.qwc) {
|
if(!vifXch.qwc) {
|
||||||
vifX.inprogress &= ~0x1;
|
vifX.inprogress &= ~0x1;
|
||||||
vifX.vifstalled = false;
|
vifX.vifstalled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
if (!vifX.irqoffset) vifX.vifstalled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vifX.irq && vifX.cmd == 0) {
|
|
||||||
//DevCon.WriteLn("Vif IRQ!");
|
|
||||||
if(((vifXRegs.code >> 24) & 0x7f) != 0x7) {
|
|
||||||
vifXRegs.stat.VIS = true; // Note: commenting this out fixes WALL-E?
|
|
||||||
vifX.vifstalled = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return !vifX.vifstalled;
|
return !vifX.vifstalled;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue