mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06: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:
@ -76,6 +76,7 @@ public:
|
||||
return offset;
|
||||
}
|
||||
virtual std::string GetGameID(const Partition& partition = PARTITION_NONE) const = 0;
|
||||
virtual std::string GetGameTDBID(const Partition& partition = PARTITION_NONE) const = 0;
|
||||
virtual std::string GetMakerID(const Partition& partition = PARTITION_NONE) const = 0;
|
||||
virtual std::optional<u16> GetRevision(const Partition& partition = PARTITION_NONE) const = 0;
|
||||
virtual std::string GetInternalName(const Partition& partition = PARTITION_NONE) const = 0;
|
||||
|
@ -72,6 +72,17 @@ std::string VolumeGC::GetGameID(const Partition& partition) const
|
||||
return DecodeString(id);
|
||||
}
|
||||
|
||||
std::string VolumeGC::GetGameTDBID(const Partition& partition) const
|
||||
{
|
||||
const std::string game_id = GetGameID(partition);
|
||||
|
||||
// Don't return an ID for Datel discs that are using the game ID of NHL Hitz 2002
|
||||
if (game_id == "GNHE5d" && !GetBootDOLOffset(*this, partition).has_value())
|
||||
return "";
|
||||
|
||||
return game_id;
|
||||
}
|
||||
|
||||
Region VolumeGC::GetRegion() const
|
||||
{
|
||||
const std::optional<u32> region_code = ReadSwapped<u32>(0x458, PARTITION_NONE);
|
||||
|
@ -34,6 +34,7 @@ public:
|
||||
const Partition& partition = PARTITION_NONE) const override;
|
||||
const FileSystem* GetFileSystem(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetGameID(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetGameTDBID(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetMakerID(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::optional<u16> GetRevision(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetInternalName(const Partition& partition = PARTITION_NONE) const override;
|
||||
|
@ -105,6 +105,11 @@ std::string VolumeWAD::GetGameID(const Partition& partition) const
|
||||
return m_tmd.GetGameID();
|
||||
}
|
||||
|
||||
std::string VolumeWAD::GetGameTDBID(const Partition& partition) const
|
||||
{
|
||||
return m_tmd.GetGameTDBID();
|
||||
}
|
||||
|
||||
std::string VolumeWAD::GetMakerID(const Partition& partition) const
|
||||
{
|
||||
char temp[2];
|
||||
|
@ -35,6 +35,7 @@ public:
|
||||
std::optional<u64> GetTitleID(const Partition& partition = PARTITION_NONE) const override;
|
||||
const IOS::ES::TMDReader& GetTMD(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetGameID(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetGameTDBID(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetMakerID(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::optional<u16> GetRevision(const Partition& partition = PARTITION_NONE) const override;
|
||||
std::string GetInternalName(const Partition& partition = PARTITION_NONE) const override
|
||||
|
@ -278,6 +278,11 @@ std::string VolumeWii::GetGameID(const Partition& partition) const
|
||||
return DecodeString(id);
|
||||
}
|
||||
|
||||
std::string VolumeWii::GetGameTDBID(const Partition& partition) const
|
||||
{
|
||||
return GetGameID(partition);
|
||||
}
|
||||
|
||||
Region VolumeWii::GetRegion() const
|
||||
{
|
||||
const std::optional<u32> region_code = m_reader->ReadSwapped<u32>(0x4E000);
|
||||
|
@ -45,6 +45,7 @@ public:
|
||||
u64 partition_data_offset);
|
||||
u64 PartitionOffsetToRawOffset(u64 offset, const Partition& partition) const override;
|
||||
std::string GetGameID(const Partition& partition) const override;
|
||||
std::string GetGameTDBID(const Partition& partition) const override;
|
||||
std::string GetMakerID(const Partition& partition) const override;
|
||||
std::optional<u16> GetRevision(const Partition& partition) const override;
|
||||
std::string GetInternalName(const Partition& partition) const override;
|
||||
|
Reference in New Issue
Block a user