diff options
| author | Zopolis4 <creatorsmithmdt@gmail.com> | 2021-08-10 07:49:34 +1000 |
|---|---|---|
| committer | Zopolis4 <creatorsmithmdt@gmail.com> | 2025-04-21 22:05:25 +1000 |
| commit | 71f654cdc45ecb44e455ce35d8be910732aa6f7c (patch) | |
| tree | 532133c1d36da13740d19c6005822a9f719ac50d /Source/Core/DiscIO/VolumeGC.cpp | |
| parent | 494e2c05c217c6ba80ceecba7c3d7ce339ea55a9 (diff) | |
Add Triforce platform and preliminary boot.id parsing
Diffstat (limited to 'Source/Core/DiscIO/VolumeGC.cpp')
| -rw-r--r-- | Source/Core/DiscIO/VolumeGC.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/Source/Core/DiscIO/VolumeGC.cpp b/Source/Core/DiscIO/VolumeGC.cpp index 8a95e0bb31..ebd005f158 100644 --- a/Source/Core/DiscIO/VolumeGC.cpp +++ b/Source/Core/DiscIO/VolumeGC.cpp @@ -29,7 +29,8 @@ namespace DiscIO { -VolumeGC::VolumeGC(std::unique_ptr<BlobReader> reader) : m_reader(std::move(reader)) +VolumeGC::VolumeGC(std::unique_ptr<BlobReader> reader) + : m_reader(std::move(reader)), m_is_triforce(false) { ASSERT(m_reader); @@ -39,6 +40,20 @@ VolumeGC::VolumeGC(std::unique_ptr<BlobReader> reader) : m_reader(std::move(read }; m_converted_banner = [this] { return LoadBannerFile(); }; + + constexpr u32 BTID_MAGIC = 0x44495442; + auto tmp_fs = GetFileSystem(PARTITION_NONE); + if (tmp_fs) + { + std::unique_ptr<FileInfo> file_info = tmp_fs->FindFileInfo("boot.id"); + if (!file_info) + return; + u32 triforce_magic; // "BTID" + 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) + m_is_triforce = true; + } } VolumeGC::~VolumeGC() = default; @@ -139,7 +154,10 @@ const BlobReader& VolumeGC::GetBlobReader() const Platform VolumeGC::GetVolumeType() const { - return Platform::GameCubeDisc; + if (m_is_triforce) + return Platform::Triforce; + else + return Platform::GameCubeDisc; } bool VolumeGC::IsDatelDisc() const |
