summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/ConfigManager.cpp25
-rw-r--r--Source/Core/Core/ConfigManager.h6
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;
};