From a4831c81b494ea1a327a83890acc7c1055c687a2 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Thu, 5 Feb 2026 23:45:21 -0600 Subject: [PATCH] Core/State: Add OSD message and prevent state save/load when running Triforce. --- Source/Core/Core/State.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Source/Core/Core/State.cpp b/Source/Core/Core/State.cpp index 98180a8736..0df9ca1792 100644 --- a/Source/Core/Core/State.cpp +++ b/Source/Core/Core/State.cpp @@ -199,6 +199,17 @@ static void DoState(Core::System& system, PointerWrap& p) #endif // USE_RETRO_ACHIEVEMENTS } +static bool CheckIfStateSaveIsAllowed(Core::System& system) +{ + if (system.IsTriforce()) + { + OSD::AddMessage("State saving is not yet supported for Triforce"); + return false; + } + + return true; +} + static bool CheckIfStateLoadIsAllowed(Core::System& system) { if (!Core::IsRunningOrStarting(system)) @@ -216,6 +227,12 @@ static bool CheckIfStateLoadIsAllowed(Core::System& system) return false; } + if (system.IsTriforce()) + { + OSD::AddMessage("State loading is not yet supported for Triforce"); + return false; + } + return true; } @@ -495,6 +512,9 @@ static void SaveAsFromCore(Core::System& system, std::string filename) void SaveAs(Core::System& system, std::string filename) { + if (!CheckIfStateSaveIsAllowed(system)) + return; + Core::RunOnCPUThread( system, [&system, filename = std::move(filename), lock = GetStateSaveTaskLock()]() mutable { SaveAsFromCore(system, std::move(filename)); @@ -932,6 +952,9 @@ void LoadLastSaved(Core::System& system, int i) void SaveFirstSaved(Core::System& system) { + if (!CheckIfStateSaveIsAllowed(system)) + return; + Core::RunOnCPUThread(system, [&system, lock = GetStateSaveTaskLock()] { // Data must reach the filesystem for up to date "UsedSlots". s_compress_and_dump_thread.WaitForCompletion();