diff options
| author | Zopolis4 <creatorsmithmdt@gmail.com> | 2021-12-17 18:56:48 +1100 |
|---|---|---|
| committer | Zopolis4 <creatorsmithmdt@gmail.com> | 2025-04-21 22:05:25 +1000 |
| commit | 8d94d25203b5b03d1fd9d6408b2aca3d71df1a14 (patch) | |
| tree | c8e4ac79d64ddafdb07bfeedba46f052c2a6fa04 /Source/Core/DiscIO/VolumeGC.cpp | |
| parent | 71f654cdc45ecb44e455ce35d8be910732aa6f7c (diff) | |
Implement Triforce ID parsing
Diffstat (limited to 'Source/Core/DiscIO/VolumeGC.cpp')
| -rw-r--r-- | Source/Core/DiscIO/VolumeGC.cpp | 17 |
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)); |
