EE REC: Prevent crash when DI instruction is in branch delay slot

This commit is contained in:
refractionpcsx2 2020-07-16 20:09:12 +01:00
parent a782e03ebf
commit 54f47572af
2 changed files with 3 additions and 1 deletions

View File

@ -117,7 +117,8 @@ void recDI()
// Fixes booting issues in the following games:
// Jak X, Namco 50th anniversary, Spongebob the Movie, Spongebob Battle for Bikini Bottom,
// The Incredibles, The Incredibles rize of the underminer, Soukou kihei armodyne, Garfield Saving Arlene, Tales of Fandom Vol. 2.
recompileNextInstruction(0); // DI execution is delayed by one instruction
if(!g_recompilingDelaySlot)
recompileNextInstruction(0); // DI execution is delayed by one instruction
xMOV(eax, ptr[&cpuRegs.CP0.n.Status]);
xTEST(eax, 0x20006); // EXL | ERL | EDI

View File

@ -61,6 +61,7 @@ extern u32 s_nBlockCycles; // cycles of current block recompiling
// Used to clear recompiled code blocks during memory/dma write operations.
u32 recClearMem(u32 pc);
u32 REC_CLEARM( u32 mem );
extern bool g_recompilingDelaySlot;
// used when processing branches
void SaveBranchState();