From 9a3b72f7626073e1465f6b3ffe36c3f9f849a1b8 Mon Sep 17 00:00:00 2001 From: Eladash <18193363+elad335@users.noreply.github.com> Date: Fri, 29 Mar 2024 09:54:20 +0300 Subject: [PATCH] Savestates/SPU: Partially publicize SPU-Compatible functionality --- rpcs3/Emu/Cell/SPULLVMRecompiler.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp index 107bf3b64c..395aebf2cc 100644 --- a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp @@ -2932,7 +2932,18 @@ public: case SPU_RdInMbox: case SPU_RdEventStat: { - if (g_cfg.savestate.compatible_mode) + bool loop_is_likely = op.ra == SPU_RdSigNotify1 || op.ra == SPU_RdSigNotify2; + + for (u32 block_start : m_block->bb->preds) + { + if (block_start >= m_pos) + { + loop_is_likely = true; + break; + } + } + + if (loop_is_likely || g_cfg.savestate.compatible_mode) { ensure_gpr_stores(); check_state(m_pos, false);