VIF-MFIFO: Fix for stalls on wait instructions, fixes Stuart Little 3

- VIF Waits for Path3 to flush, but it was firing before it had finished.
-Condition is much cleaner and less hacky now.
This commit is contained in:
refractionpcsx2
2015-06-27 22:47:44 +01:00
parent 15944feea1
commit c753f0d206
3 changed files with 3 additions and 3 deletions
+1 -1
View File
@@ -167,7 +167,7 @@ __fi void vif0Interrupt()
if (!(vif0ch.chcr.STR)) Console.WriteLn("vif0 running when CHCR == %x", vif0ch.chcr._u32);
if (vif0.irq && vif0.tag.size == 0 && vif0.cmd == 0)
if (vif0.irq && vif0.vifstalled.enabled && vif0.vifstalled.value == VIF_IRQ_STALL)
{
vif0Regs.stat.INT = true;
+1 -1
View File
@@ -311,7 +311,7 @@ __fi void vif1Interrupt()
}
if (!vif1ch.chcr.STR) Console.WriteLn("Vif1 running when CHCR == %x", vif1ch.chcr._u32);
if (vif1.irq && vif1.tag.size == 0 &&vif1.cmd == 0)
if (vif1.irq && vif1.vifstalled.enabled && vif1.vifstalled.value == VIF_IRQ_STALL)
{
VIF_LOG("VIF IRQ Firing");
vif1Regs.stat.INT = true;
+1 -1
View File
@@ -318,7 +318,7 @@ void vifMFIFOInterrupt()
// Simulated GS transfer time done, clear the flags
if (vif1.irq && vif1.tag.size == 0) {
if (vif1.irq && vif1.vifstalled.enabled && vif1.vifstalled.value == VIF_IRQ_STALL) {
SPR_LOG("VIF MFIFO Code Interrupt detected");
vif1Regs.stat.INT = true;