Gif: Fix MFIFO logic so it doesn't get caught in a loop (Tekken Tag)

This commit is contained in:
refractionpcsx2 2016-10-02 14:35:36 +01:00
parent 955a69b16e
commit 59be0818e2
1 changed files with 41 additions and 40 deletions

View File

@ -708,6 +708,13 @@ void gifMFIFOInterrupt()
}
}
if (!gifch.chcr.STR) {
Console.WriteLn("WTF GIFMFIFO");
cpuRegs.interrupt &= ~(1 << 11);
return;
}
if (gifch.qwc > 0 || !gspath3done) {
if (dmacRegs.ctrl.MFD != MFD_GIF) {
DevCon.Warning("Not in GIF MFIFO mode! Stopping GIF MFIFO");
return;
@ -728,12 +735,6 @@ void gifMFIFOInterrupt()
if (!CheckPaths()) return;
if(!gifch.chcr.STR) {
Console.WriteLn("WTF GIFMFIFO");
cpuRegs.interrupt &= ~(1 << 11);
return;
}
if (!(gifstate & GIF_STATE_STALL)) {
if (QWCinGIFMFIFO(gifch.tadr) == 0) {
@ -757,7 +758,7 @@ void gifMFIFOInterrupt()
GifDMAInt(16);
return;
}
}
//if(gifqwc > 0) Console.WriteLn("GIF MFIFO ending with stuff in it %x", gifqwc);
if (!gifmfifoirq) gifqwc = 0;