From c009a95d68893ec5626278f01199c7f1388fbc0b Mon Sep 17 00:00:00 2001 From: refractionpcsx2 Date: Tue, 12 May 2020 23:59:56 +0100 Subject: [PATCH] Fix situation where a VIF IRQ triggers and the game triggers a STOP causing the IRQ to never trigger. (#3385) Fixes Nitro Bike --- pcsx2/Vif.cpp | 1 - pcsx2/Vif0_Dma.cpp | 4 ++-- pcsx2/Vif1_Dma.cpp | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pcsx2/Vif.cpp b/pcsx2/Vif.cpp index c07ed1a0a..33aa79c71 100644 --- a/pcsx2/Vif.cpp +++ b/pcsx2/Vif.cpp @@ -229,7 +229,6 @@ __fi void vif1FBRST(u32 value) { // just stoppin the VIF (linuz). vif1Regs.stat.VSS = true; vif1Regs.stat.VPS = VPS_IDLE; - cpuRegs.interrupt &= ~((1 << 1) | (1 << 10)); //Stop all vif1 DMA's vif1.vifstalled.enabled = VifStallEnable(vif1ch); vif1.vifstalled.value = VIF_IRQ_STALL; } diff --git a/pcsx2/Vif0_Dma.cpp b/pcsx2/Vif0_Dma.cpp index fbce385bb..e9a3925f3 100644 --- a/pcsx2/Vif0_Dma.cpp +++ b/pcsx2/Vif0_Dma.cpp @@ -224,9 +224,9 @@ __fi void vif0Interrupt() if (!vif0.done) { - if (!(dmacRegs.ctrl.DMAE)) + if (!(dmacRegs.ctrl.DMAE) || vif0Regs.stat.VSS) //Stopped or DMA Disabled { - Console.WriteLn("vif0 dma masked"); + //Console.WriteLn("vif0 dma masked"); return; } diff --git a/pcsx2/Vif1_Dma.cpp b/pcsx2/Vif1_Dma.cpp index 6fc6bca53..884109895 100644 --- a/pcsx2/Vif1_Dma.cpp +++ b/pcsx2/Vif1_Dma.cpp @@ -376,9 +376,9 @@ __fi void vif1Interrupt() if (!vif1.done) { - if (!(dmacRegs.ctrl.DMAE)) + if (!(dmacRegs.ctrl.DMAE) || vif1Regs.stat.VSS) //Stopped or DMA Disabled { - Console.WriteLn("vif1 dma masked"); + //Console.WriteLn("vif1 dma masked"); return; }