AchievementManager - Load unknown games
Prior to this change, any game unrecognized by RetroAchievements would ultimately result in the game being "Closed" by AchievementManager. As a result, if any game was run while in this state without any other closing being done, AchievementManager would simply load it like a new game, despite memory already being accessed. However, testing and documentation determined that the rcheevos client doesn't actually complain when it fails to hash a game; it just runs this as "Unidentified Game" with RA ID = 0. As such, this change utilizes that in AchievementManager to differentiate between no software running and unidentified software running. As a result of this, now LoadGame needs to be called for every piece of runnable software, supported format or otherwise. If a supported format is not available, LoadGame can now be called with a nullptr to ensure that rcheevos still properly sets up an unidentified game.
This commit is contained in:
1 parent
fd285f6348
commit
c68549e9ef
3 files changed
+37
-29
No files matched your search
@@ -603,6 +603,8 @@ bool CBoot::BootUp(Core::System& system, const Core::CPUThreadGuard& guard,
|
||||
return false;
|
||||
}
|
||||
|
||||
AchievementManager::GetInstance().LoadGame(nullptr);
|
||||
|
||||
SConfig::OnTitleDirectlyBooted(guard);
|
||||
|
||||
ppc_state.pc = executable.reader->GetEntryPoint();
|
||||
@@ -635,6 +637,8 @@ bool CBoot::BootUp(Core::System& system, const Core::CPUThreadGuard& guard,
|
||||
if (!BootNANDTitle(system, nand_title.id))
|
||||
return false;
|
||||
|
||||
AchievementManager::GetInstance().LoadGame(nullptr);
|
||||
|
||||
SConfig::OnTitleDirectlyBooted(guard);
|
||||
return true;
|
||||
}
|
||||
@@ -661,6 +665,8 @@ bool CBoot::BootUp(Core::System& system, const Core::CPUThreadGuard& guard,
|
||||
ipl.disc->auto_disc_change_paths);
|
||||
}
|
||||
|
||||
AchievementManager::GetInstance().LoadGame(nullptr);
|
||||
|
||||
SConfig::OnTitleDirectlyBooted(guard);
|
||||
return true;
|
||||
}
|
||||
@@ -668,6 +674,7 @@ bool CBoot::BootUp(Core::System& system, const Core::CPUThreadGuard& guard,
|
||||
bool operator()(const BootParameters::DFF& dff) const
|
||||
{
|
||||
NOTICE_LOG_FMT(BOOT, "Booting DFF: {}", dff.dff_path);
|
||||
AchievementManager::GetInstance().LoadGame(nullptr);
|
||||
return system.GetFifoPlayer().Open(dff.dff_path);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user