Core/State: Add OSD message and prevent state save/load when running Triforce.

This commit is contained in:
Jordan Woyak
2026-02-06 00:12:25 -06:00
parent fb3d049907
commit a4831c81b4
+23
View File
@@ -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();