Core: Add SConfig::GetSimulatedMemorySize().

This makes the simulated memory size of the running game accessible via
the `SConfig` singleton.
This commit is contained in:
cristian64 2026-03-27 11:48:18 +00:00
parent 24ad562871
commit ebcbb79f70
2 changed files with 23 additions and 8 deletions

View File

@ -154,27 +154,35 @@ u16 SConfig::GetRevision() const
return m_revision;
}
u32 SConfig::GetSimulatedMemorySize() const
{
std::lock_guard<std::recursive_mutex> lock(m_metadata_lock);
return m_simulated_memory_size;
}
void SConfig::ResetRunningGameMetadata()
{
std::lock_guard<std::recursive_mutex> lock(m_metadata_lock);
SetRunningGameMetadata("00000000", "", 0, 0, DiscIO::Region::Unknown);
SetRunningGameMetadata("00000000", "", 0, 0, DiscIO::Region::Unknown, 0);
}
void SConfig::SetRunningGameMetadata(const DiscIO::Volume& volume,
const DiscIO::Partition& partition)
{
std::lock_guard<std::recursive_mutex> lock(m_metadata_lock);
if (partition == volume.GetGamePartition())
{
SetRunningGameMetadata(volume.GetGameID(), volume.GetGameTDBID(),
volume.GetTitleID().value_or(0), volume.GetRevision().value_or(0),
volume.GetRegion());
volume.GetRegion(), volume.GetSimulatedMemorySize());
}
else
{
SetRunningGameMetadata(volume.GetGameID(partition), volume.GetGameTDBID(partition),
volume.GetTitleID(partition).value_or(0),
volume.GetRevision(partition).value_or(0), volume.GetRegion());
volume.GetRevision(partition).value_or(0), volume.GetRegion(),
volume.GetSimulatedMemorySize());
}
}
@ -192,26 +200,29 @@ void SConfig::SetRunningGameMetadata(const IOS::ES::TMDReader& tmd, DiscIO::Plat
{
// If not launching a disc game, just read everything from the TMD.
SetRunningGameMetadata(tmd.GetGameID(), tmd.GetGameTDBID(), tmd_title_id, tmd.GetTitleVersion(),
tmd.GetRegion());
tmd.GetRegion(), 0);
}
}
void SConfig::SetRunningGameMetadata(const std::string& game_id)
{
std::lock_guard<std::recursive_mutex> lock(m_metadata_lock);
SetRunningGameMetadata(game_id, "", 0, 0, DiscIO::Region::Unknown);
SetRunningGameMetadata(game_id, "", 0, 0, DiscIO::Region::Unknown, 0);
}
void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::string& gametdb_id,
u64 title_id, u16 revision, DiscIO::Region region)
u64 title_id, u16 revision, DiscIO::Region region,
u32 simulated_memory_size)
{
std::lock_guard<std::recursive_mutex> lock(m_metadata_lock);
const bool was_changed = m_game_id != game_id || m_gametdb_id != gametdb_id ||
m_title_id != title_id || m_revision != revision;
m_title_id != title_id || m_revision != revision ||
m_simulated_memory_size != simulated_memory_size;
m_game_id = game_id;
m_gametdb_id = gametdb_id;
m_title_id = title_id;
m_revision = revision;
m_simulated_memory_size = simulated_memory_size;
if (game_id.length() == 6)
{

View File

@ -65,6 +65,7 @@ struct SConfig
const std::string GetTitleDescription() const;
u64 GetTitleID() const;
u16 GetRevision() const;
u32 GetSimulatedMemorySize() const;
void ResetRunningGameMetadata();
void SetRunningGameMetadata(const DiscIO::Volume& volume, const DiscIO::Partition& partition);
void SetRunningGameMetadata(const IOS::ES::TMDReader& tmd, DiscIO::Platform platform);
@ -119,7 +120,8 @@ private:
static void ReloadTextures(Core::System& system);
void SetRunningGameMetadata(const std::string& game_id, const std::string& gametdb_id,
u64 title_id, u16 revision, DiscIO::Region region);
u64 title_id, u16 revision, DiscIO::Region region,
u32 simulated_memory_size);
static SConfig* m_Instance;
mutable std::recursive_mutex m_metadata_lock;
@ -130,4 +132,6 @@ private:
std::string m_title_description;
u64 m_title_id;
u16 m_revision;
// Memory size requested by game's header.
u32 m_simulated_memory_size;
};