diff options
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/ConfigManager.cpp | 25 | ||||
| -rw-r--r-- | Source/Core/Core/ConfigManager.h | 6 |
2 files changed, 23 insertions, 8 deletions
diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 8404cfff07..460ca2e048 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -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) { diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index 39dbc6d39a..145b002418 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -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; }; |
