diff --git a/pcsx2/Sif.cpp b/pcsx2/Sif.cpp index 8ca41d3b36..c7f270c8ef 100644 --- a/pcsx2/Sif.cpp +++ b/pcsx2/Sif.cpp @@ -268,7 +268,9 @@ __forceinline void SIF1Dma() SIF_LOG("EE SIF1 End %x", sif1.end); eesifbusy[1] = false; done = true; - CPU_INT(6, cycles*BIAS); + // Voodoocycles : 4 cycles always, stops games from throwing double interrupts. + CPU_INT(6, 4); + //CPU_INT(6, cycles*BIAS); //sif1.chain = 0; sif1.end = 0; } diff --git a/pcsx2/Vif0Dma.cpp b/pcsx2/Vif0Dma.cpp index daa780b459..b41f738f32 100644 --- a/pcsx2/Vif0Dma.cpp +++ b/pcsx2/Vif0Dma.cpp @@ -563,7 +563,7 @@ void vif0Interrupt() else _VIF0chain(); - CPU_INT(0, g_vifCycles); + CPU_INT(0, /*g_vifCycles*/ VifCycleVoodoo); return; } } @@ -584,7 +584,7 @@ void vif0Interrupt() else _chainVIF0(); - CPU_INT(0, g_vifCycles); + CPU_INT(0, /*g_vifCycles*/ VifCycleVoodoo); return; } @@ -654,7 +654,7 @@ void dmaVIF0() } vif0.done = true; - CPU_INT(0, g_vifCycles); + CPU_INT(0, /*g_vifCycles*/ VifCycleVoodoo); return; } diff --git a/pcsx2/Vif1Dma.cpp b/pcsx2/Vif1Dma.cpp index d16b2c86fd..c8e5434161 100644 --- a/pcsx2/Vif1Dma.cpp +++ b/pcsx2/Vif1Dma.cpp @@ -907,7 +907,7 @@ __forceinline void vif1Interrupt() if (vif1.inprogress & 0x1) { _VIF1chain(); - CPU_INT(1, g_vifCycles); + CPU_INT(1, /*g_vifCycles*/ VifCycleVoodoo); return; } @@ -922,7 +922,7 @@ __forceinline void vif1Interrupt() if ((vif1.inprogress & 0x1) == 0) vif1SetupTransfer(); - CPU_INT(1, g_vifCycles); + CPU_INT(1, /*g_vifCycles*/ VifCycleVoodoo); return; } diff --git a/pcsx2/VifDma.h b/pcsx2/VifDma.h index 477d368a73..0882ac91e6 100644 --- a/pcsx2/VifDma.h +++ b/pcsx2/VifDma.h @@ -45,6 +45,7 @@ struct vifStruct { extern vifStruct vif0, vif1; extern u8 schedulepath3msk; +static const int VifCycleVoodoo = 4; void __fastcall UNPACK_S_32( u32 *dest, u32 *data, int size );