Fix situation where a VIF IRQ triggers and the game triggers a STOP causing the IRQ to never trigger. (#3385)

Fixes Nitro Bike
This commit is contained in:
refractionpcsx2 2020-05-12 23:59:56 +01:00 committed by GitHub
parent 184f0df2c5
commit c009a95d68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 5 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}