summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/VolumeGC.cpp
diff options
context:
space:
mode:
authorZopolis4 <creatorsmithmdt@gmail.com>2021-12-17 18:56:48 +1100
committerZopolis4 <creatorsmithmdt@gmail.com>2025-04-21 22:05:25 +1000
commit8d94d25203b5b03d1fd9d6408b2aca3d71df1a14 (patch)
treec8e4ac79d64ddafdb07bfeedba46f052c2a6fa04 /Source/Core/DiscIO/VolumeGC.cpp
parent71f654cdc45ecb44e455ce35d8be910732aa6f7c (diff)
Implement Triforce ID parsing
Diffstat (limited to 'Source/Core/DiscIO/VolumeGC.cpp')
-rw-r--r--Source/Core/DiscIO/VolumeGC.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/Source/Core/DiscIO/VolumeGC.cpp b/Source/Core/DiscIO/VolumeGC.cpp
index ebd005f158..8cc255570a 100644
--- a/Source/Core/DiscIO/VolumeGC.cpp
+++ b/Source/Core/DiscIO/VolumeGC.cpp
@@ -48,11 +48,14 @@ VolumeGC::VolumeGC(std::unique_ptr<BlobReader> reader)
std::unique_ptr<FileInfo> file_info = tmp_fs->FindFileInfo("boot.id");
if (!file_info)
return;
- u32 triforce_magic; // "BTID"
+ BootID triforce_header;
const u64 file_size = ReadFile(*this, PARTITION_NONE, file_info.get(),
- reinterpret_cast<u8*>(&triforce_magic), sizeof(triforce_magic));
- if (file_size >= 4 && triforce_magic == BTID_MAGIC)
+ reinterpret_cast<u8*>(&triforce_header), sizeof(BootID));
+ if (file_size >= 4 && triforce_header.magic == BTID_MAGIC)
+ {
m_is_triforce = true;
+ m_triforce_id = triforce_header.id;
+ }
}
}
@@ -90,6 +93,14 @@ std::string VolumeGC::GetGameTDBID(const Partition& partition) const
return GetGameID(partition);
}
+std::string VolumeGC::GetTriforceID() const
+{
+ if (m_is_triforce)
+ return (std::string(m_triforce_id.data(), m_triforce_id.size()));
+ else
+ return "";
+}
+
Region VolumeGC::GetRegion() const
{
return RegionCodeToRegion(m_reader->ReadSwapped<u32>(0x458));