GIF: Correctly delay FINISH interrupts/flags

[SAVEVERSION+]
This commit is contained in:
refractionpcsx2
2023-09-17 14:52:47 +01:00
parent 85670dd4a1
commit 2947e11b9b
5 changed files with 14 additions and 5 deletions
+6 -1
View File
@@ -84,8 +84,8 @@ bool Gif_HandlerAD(u8* pMem)
else if (reg == GIF_A_D_REG_FINISH)
{ // FINISH
GUNIT_WARN("GIF Handler - FINISH");
CSRreg.FINISH = true;
gifUnit.gsFINISH.gsFINISHFired = false;
gifUnit.gsFINISH.gsFINISHPending = true;
}
else if (reg == GIF_A_D_REG_LABEL)
{ // LABEL
@@ -188,6 +188,11 @@ bool Gif_HandlerAD_Debug(u8* pMem)
void Gif_FinishIRQ()
{
if (gifUnit.gsFINISH.gsFINISHPending)
{
CSRreg.FINISH = true;
gifUnit.gsFINISH.gsFINISHPending = false;
}
if (CSRreg.FINISH && !GSIMR.FINISHMSK && !gifUnit.gsFINISH.gsFINISHFired)
{
gsIrq();