mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
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:
+1
-1
@@ -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
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user