Fixed monumental cockup from my big commit, it shows, product placement really does work!! FFXII now works again, at normal speed.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4037 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2010-11-19 19:47:06 +00:00
parent 80663917b1
commit 9979fe30e3
3 changed files with 13 additions and 11 deletions

View File

@ -629,12 +629,6 @@ void gifMFIFOInterrupt()
GIF_LOG("gifMFIFOInterrupt"); GIF_LOG("gifMFIFOInterrupt");
mfifocycles = 0; mfifocycles = 0;
if((gifstate & GIF_STATE_EMPTY))
{
FireMFIFOEmpty();
if(!(gifstate & GIF_STATE_STALL)) return;
}
if (dmacRegs.ctrl.MFD != MFD_GIF) if (dmacRegs.ctrl.MFD != MFD_GIF)
{ {
DevCon.Warning("Not in GIF MFIFO mode! Stopping GIF MFIFO"); DevCon.Warning("Not in GIF MFIFO mode! Stopping GIF MFIFO");
@ -656,6 +650,12 @@ void gifMFIFOInterrupt()
if(gifRegs.stat.P1Q) gsPath1Interrupt(); if(gifRegs.stat.P1Q) gsPath1Interrupt();
} }
if((gifstate & GIF_STATE_EMPTY))
{
FireMFIFOEmpty();
if(!(gifstate & GIF_STATE_STALL)) return;
}
if(CheckPaths(11) == false) return; if(CheckPaths(11) == false) return;
if (!(gifch.chcr.STR)) if (!(gifch.chcr.STR))

View File

@ -502,6 +502,7 @@ void dmaVIF1()
{ {
vif1.dmamode = VIF_CHAIN_MODE; vif1.dmamode = VIF_CHAIN_MODE;
vif1.done = false; vif1.done = false;
vif1.inprogress = 0;
} }
if (vif1ch.chcr.DIR) vif1Regs.stat.FQC = min((u16)0x10, vif1ch.qwc); if (vif1ch.chcr.DIR) vif1Regs.stat.FQC = min((u16)0x10, vif1ch.qwc);

View File

@ -248,11 +248,7 @@ void vifMFIFOInterrupt()
g_vifCycles = 0; g_vifCycles = 0;
VIF_LOG("vif mfifo interrupt"); VIF_LOG("vif mfifo interrupt");
if(vif1.inprogress & 0x10)
{
FireMFIFOEmpty();
if(!(vif1.done && vif1ch.qwc == 0))return;
}
if (dmacRegs.ctrl.MFD != MFD_VIF1) if (dmacRegs.ctrl.MFD != MFD_VIF1)
{ {
DevCon.Warning("Not in VIF MFIFO mode! Stopping VIF MFIFO"); DevCon.Warning("Not in VIF MFIFO mode! Stopping VIF MFIFO");
@ -289,6 +285,11 @@ void vifMFIFOInterrupt()
vif1Regs.stat.VPS = VPS_IDLE; vif1Regs.stat.VPS = VPS_IDLE;
} }
if(vif1.inprogress & 0x10)
{
FireMFIFOEmpty();
if(!(vif1.done && vif1ch.qwc == 0) || !(vif1.irq && vif1.tag.size == 0))return;
}
if (vif1.irq && vif1.tag.size == 0) if (vif1.irq && vif1.tag.size == 0)
{ {
SPR_LOG("VIF MFIFO Code Interrupt detected"); SPR_LOG("VIF MFIFO Code Interrupt detected");