VIF/VU: Cleaned up VIF Stall behaviour, sync XGKick with Unpacks.

Also cleaned up a bunch of bad/old code
Fixed branches on E-Bit and M-Bit (VU0)
Fixed up VU Int behaviour with VU Instant on/off

Savestate bump
This commit is contained in:
refractionpcsx2
2021-09-12 16:12:31 +01:00
parent 7e29a7e5a4
commit 3f56414824
12 changed files with 120 additions and 105 deletions
+6 -7
View File
@@ -35,12 +35,9 @@ void BaseVUmicroCPU::ExecuteBlock(bool startUp)
if (!(stat & test))
{
if (m_Idx == 1)
if (m_Idx == 1 && VU1.xgkickenable)
{
if (VU1.xgkickenable && (cpuRegs.cycle - VU1.xgkicklastcycle) >= 2)
{
_vuXGKICKTransfer(&VU1, (cpuRegs.cycle - VU1.xgkicklastcycle), false);
}
_vuXGKICKTransfer(&VU1, (cpuRegs.cycle - VU1.xgkicklastcycle), false);
}
return;
}
@@ -63,7 +60,9 @@ void BaseVUmicroCPU::ExecuteBlock(bool startUp)
u32 nextblockcycles = m_Idx ? VU1.nextBlockCycles : VU0.nextBlockCycles;
if((VU0.flags & VUFLAG_MFLAGSET) || VU0.blockhasmbit)
bool useNextBlocks = (VU0.flags & VUFLAG_MFLAGSET) || VU0.blockhasmbit || !EmuConfig.Cpu.Recompiler.EnableVU0;
if(useNextBlocks)
cpuSetNextEventDelta(nextblockcycles);
else if(s)
cpuSetNextEventDelta(s);
@@ -86,7 +85,7 @@ void BaseVUmicroCPU::ExecuteBlock(bool startUp)
Execute(delta);
}
if ((stat & test) && !EmuConfig.Gamefixes.VUKickstartHack)
if ((stat & test) && (!EmuConfig.Gamefixes.VUKickstartHack || (!m_Idx && !EmuConfig.Cpu.Recompiler.EnableVU0)))
{
// Queue up next required time to run a block
nextblockcycles = m_Idx ? VU1.nextBlockCycles : VU0.nextBlockCycles;