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,26 +83,27 @@ _vifT static __fi bool vifTransfer(u32 *data, int size, bool TTE) {
|
|||
|
||||
vifX.irqoffset = transferred % 4; // cannot lose the offset
|
||||
|
||||
if (!TTE) {// *WARNING* - Tags CAN have interrupts! so lets just ignore the dma modifying stuffs (GT4)
|
||||
transferred = transferred >> 2;
|
||||
vifXch.madr +=(transferred << 4);
|
||||
vifXch.qwc -= transferred;
|
||||
if (vifXch.chcr.STR) hwDmacSrcTadrInc(vifXch);
|
||||
if(!vifXch.qwc) {
|
||||
vifX.inprogress &= ~0x1;
|
||||
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?
|
||||
}
|
||||
//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;
|
||||
vifXch.madr +=(transferred << 4);
|
||||
vifXch.qwc -= transferred;
|
||||
|
||||
if (vifXch.chcr.STR) hwDmacSrcTadrInc(vifXch);
|
||||
|
||||
if(!vifXch.qwc) {
|
||||
vifX.inprogress &= ~0x1;
|
||||
vifX.vifstalled = false;
|
||||
}
|
||||
}
|
||||
|
||||
return !vifX.vifstalled;
|
||||
|
|
Loading…
Reference in New Issue