mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 09:22:05 +00:00
Keep track of GameTDB ID separately from game ID
The difference between Dolphin's game IDs and GameTDB's game IDs is that GameTDB uses four characters for non-disc titles, whereas Dolphin uses six characters for all titles. This fixes: - TitleDatabase considering Datel discs to be NHL Hitz 2002 - Gecko code downloading not working for discs with IDs starting with P - Cover downloading mixing up discs with channels (e.g. Mario Kart Wii and Mario Kart Channel) and making extra HTTP requests. (Android was actually doing a better job at this than DolphinQt!)
This commit is contained in:
parent
d27036eb77
commit
8842a0f402
23 changed files with 106 additions and 84 deletions
|
@ -680,7 +680,7 @@ void SConfig::LoadJitDebugSettings(IniFile& ini)
|
|||
|
||||
void SConfig::ResetRunningGameMetadata()
|
||||
{
|
||||
SetRunningGameMetadata("00000000", 0, 0, Core::TitleDatabase::TitleType::Other);
|
||||
SetRunningGameMetadata("00000000", "", 0, 0);
|
||||
}
|
||||
|
||||
void SConfig::SetRunningGameMetadata(const DiscIO::Volume& volume,
|
||||
|
@ -688,14 +688,14 @@ void SConfig::SetRunningGameMetadata(const DiscIO::Volume& volume,
|
|||
{
|
||||
if (partition == volume.GetGamePartition())
|
||||
{
|
||||
SetRunningGameMetadata(volume.GetGameID(), volume.GetTitleID().value_or(0),
|
||||
volume.GetRevision().value_or(0), Core::TitleDatabase::TitleType::Other);
|
||||
SetRunningGameMetadata(volume.GetGameID(), volume.GetGameTDBID(),
|
||||
volume.GetTitleID().value_or(0), volume.GetRevision().value_or(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetRunningGameMetadata(volume.GetGameID(partition), volume.GetTitleID(partition).value_or(0),
|
||||
volume.GetRevision(partition).value_or(0),
|
||||
Core::TitleDatabase::TitleType::Other);
|
||||
SetRunningGameMetadata(volume.GetGameID(partition), volume.GetGameTDBID(),
|
||||
volume.GetTitleID(partition).value_or(0),
|
||||
volume.GetRevision(partition).value_or(0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -710,16 +710,18 @@ void SConfig::SetRunningGameMetadata(const IOS::ES::TMDReader& tmd)
|
|||
if (!DVDInterface::UpdateRunningGameMetadata(tmd_title_id))
|
||||
{
|
||||
// If not launching a disc game, just read everything from the TMD.
|
||||
SetRunningGameMetadata(tmd.GetGameID(), tmd_title_id, tmd.GetTitleVersion(),
|
||||
Core::TitleDatabase::TitleType::Channel);
|
||||
const std::string game_id = tmd.GetGameID();
|
||||
SetRunningGameMetadata(game_id, game_id, tmd_title_id, tmd.GetTitleVersion());
|
||||
}
|
||||
}
|
||||
|
||||
void SConfig::SetRunningGameMetadata(const std::string& game_id, u64 title_id, u16 revision,
|
||||
Core::TitleDatabase::TitleType type)
|
||||
void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::string& gametdb_id,
|
||||
u64 title_id, u16 revision)
|
||||
{
|
||||
const bool was_changed = m_game_id != game_id || m_title_id != title_id || m_revision != revision;
|
||||
const bool was_changed = m_game_id != game_id || m_gametdb_id != gametdb_id ||
|
||||
m_title_id != title_id || m_revision != revision;
|
||||
m_game_id = game_id;
|
||||
m_gametdb_id = gametdb_id;
|
||||
m_title_id = title_id;
|
||||
m_revision = revision;
|
||||
|
||||
|
@ -747,7 +749,7 @@ void SConfig::SetRunningGameMetadata(const std::string& game_id, u64 title_id, u
|
|||
}
|
||||
|
||||
const Core::TitleDatabase title_database;
|
||||
m_title_description = title_database.Describe(m_game_id, type);
|
||||
m_title_description = title_database.Describe(m_gametdb_id);
|
||||
NOTICE_LOG(CORE, "Active title: %s", m_title_description.c_str());
|
||||
|
||||
Config::AddLayer(ConfigLoaders::GenerateGlobalGameConfigLoader(game_id, revision));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue