Stop VIF0, VIF1 and EE SIF1 from interrupting based on how much data was transfered.

In theory this would be the correct thing to do, but with our current DMAC and event test system it just causes problems.

Note: This commit *could* break/improve/fix games, please test :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2333 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2009-12-10 00:56:10 +00:00
parent f03cdbcdb3
commit 86a75775f3
4 changed files with 9 additions and 6 deletions

View File

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

View File

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

View File

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

View File

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