mirror of https://github.com/PCSX2/pcsx2.git
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:
parent
15944feea1
commit
c753f0d206
|
@ -167,7 +167,7 @@ __fi void vif0Interrupt()
|
||||||
|
|
||||||
if (!(vif0ch.chcr.STR)) Console.WriteLn("vif0 running when CHCR == %x", vif0ch.chcr._u32);
|
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;
|
vif0Regs.stat.INT = true;
|
||||||
|
|
||||||
|
|
|
@ -311,7 +311,7 @@ __fi void vif1Interrupt()
|
||||||
}
|
}
|
||||||
if (!vif1ch.chcr.STR) Console.WriteLn("Vif1 running when CHCR == %x", vif1ch.chcr._u32);
|
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");
|
VIF_LOG("VIF IRQ Firing");
|
||||||
vif1Regs.stat.INT = true;
|
vif1Regs.stat.INT = true;
|
||||||
|
|
|
@ -318,7 +318,7 @@ void vifMFIFOInterrupt()
|
||||||
|
|
||||||
// Simulated GS transfer time done, clear the flags
|
// 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");
|
SPR_LOG("VIF MFIFO Code Interrupt detected");
|
||||||
vif1Regs.stat.INT = true;
|
vif1Regs.stat.INT = true;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue