diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 7eefe9b945..21d722290e 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -211,7 +211,7 @@ void SConfig::OnNewTitleLoad(const Core::CPUThreadGuard& guard) } CBoot::LoadMapFromFilename(guard, ppc_symbol_db); HLE::Reload(system); - PatchEngine::Reload(); + PatchEngine::Reload(system); HiresTexture::Update(); WC24PatchEngine::Reload(); } diff --git a/Source/Core/Core/PatchEngine.cpp b/Source/Core/Core/PatchEngine.cpp index 16be2960ba..9880977710 100644 --- a/Source/Core/Core/PatchEngine.cpp +++ b/Source/Core/Core/PatchEngine.cpp @@ -295,6 +295,13 @@ void RemoveMemoryPatch(std::size_t index) std::erase(s_on_frame_memory, index); } +static void ApplyStartupPatches(Core::System& system) +{ + ASSERT(Core::IsCPUThread()); + Core::CPUThreadGuard guard(system); + ApplyPatches(guard, s_on_frame); +} + bool ApplyFramePatches(Core::System& system) { const auto& ppc_state = system.GetPPCState(); @@ -332,10 +339,11 @@ void Shutdown() Gecko::Shutdown(); } -void Reload() +void Reload(Core::System& system) { Shutdown(); LoadPatches(); + ApplyStartupPatches(system); } } // namespace PatchEngine diff --git a/Source/Core/Core/PatchEngine.h b/Source/Core/Core/PatchEngine.h index 69ec0c9bb7..32e4ec93db 100644 --- a/Source/Core/Core/PatchEngine.h +++ b/Source/Core/Core/PatchEngine.h @@ -61,7 +61,7 @@ void RemoveMemoryPatch(std::size_t index); bool ApplyFramePatches(Core::System& system); void Shutdown(); -void Reload(); +void Reload(Core::System& system); inline int GetPatchTypeCharLength(PatchType type) {