DiscIO: Add Volume::IsDatelDisc

This commit is contained in:
JosJuice 2020-07-04 14:51:13 +02:00
parent f9aaf8b971
commit f24566bf39
8 changed files with 21 additions and 6 deletions

View File

@ -115,6 +115,7 @@ public:
return 0; return 0;
} }
virtual Platform GetVolumeType() const = 0; virtual Platform GetVolumeType() const = 0;
virtual bool IsDatelDisc() const = 0;
virtual bool SupportsIntegrityCheck() const { return false; } virtual bool SupportsIntegrityCheck() const { return false; }
virtual bool CheckH3TableIntegrity(const Partition& partition) const { return false; } virtual bool CheckH3TableIntegrity(const Partition& partition) const { return false; }
virtual bool CheckBlockIntegrity(u64 block_index, const std::vector<u8>& encrypted_data, virtual bool CheckBlockIntegrity(u64 block_index, const std::vector<u8>& encrypted_data,

View File

@ -62,10 +62,7 @@ std::string VolumeGC::GetGameTDBID(const Partition& partition) const
const std::string game_id = GetGameID(partition); 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 // 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 game_id == "GNHE5d" && IsDatelDisc() ? "" : game_id;
return "";
return game_id;
} }
Region VolumeGC::GetRegion() const Region VolumeGC::GetRegion() const
@ -135,6 +132,11 @@ Platform VolumeGC::GetVolumeType() const
return Platform::GameCubeDisc; return Platform::GameCubeDisc;
} }
bool VolumeGC::IsDatelDisc() const
{
return !GetBootDOLOffset(*this, PARTITION_NONE).has_value();
}
VolumeGC::ConvertedGCBanner VolumeGC::LoadBannerFile() const VolumeGC::ConvertedGCBanner VolumeGC::LoadBannerFile() const
{ {
GCBanner banner_file; GCBanner banner_file;

View File

@ -43,6 +43,7 @@ public:
std::vector<u32> GetBanner(u32* width, u32* height) const override; std::vector<u32> GetBanner(u32* width, u32* height) const override;
Platform GetVolumeType() const override; Platform GetVolumeType() const override;
bool IsDatelDisc() const override;
Region GetRegion() const override; Region GetRegion() const override;
BlobType GetBlobType() const override; BlobType GetBlobType() const override;
u64 GetSize() const override; u64 GetSize() const override;

View File

@ -284,6 +284,11 @@ Platform VolumeWAD::GetVolumeType() const
return Platform::WiiWAD; return Platform::WiiWAD;
} }
bool VolumeWAD::IsDatelDisc() const
{
return false;
}
std::map<Language, std::string> VolumeWAD::GetLongNames() const std::map<Language, std::string> VolumeWAD::GetLongNames() const
{ {
if (!m_tmd.IsValid() || !IOS::ES::IsChannel(m_tmd.GetTitleId())) if (!m_tmd.IsValid() || !IOS::ES::IsChannel(m_tmd.GetTitleId()))

View File

@ -59,6 +59,7 @@ public:
return ""; return "";
} }
Platform GetVolumeType() const override; Platform GetVolumeType() const override;
bool IsDatelDisc() const override;
Region GetRegion() const override; Region GetRegion() const override;
Country GetCountry(const Partition& partition = PARTITION_NONE) const override; Country GetCountry(const Partition& partition = PARTITION_NONE) const override;

View File

@ -334,6 +334,11 @@ Platform VolumeWii::GetVolumeType() const
return Platform::WiiDisc; return Platform::WiiDisc;
} }
bool VolumeWii::IsDatelDisc() const
{
return m_game_partition == PARTITION_NONE;
}
BlobType VolumeWii::GetBlobType() const BlobType VolumeWii::GetBlobType() const
{ {
return m_reader->GetBlobType(); return m_reader->GetBlobType();

View File

@ -79,6 +79,7 @@ public:
std::vector<u32> GetBanner(u32* width, u32* height) const override; std::vector<u32> GetBanner(u32* width, u32* height) const override;
Platform GetVolumeType() const override; Platform GetVolumeType() const override;
bool IsDatelDisc() const override;
bool SupportsIntegrityCheck() const override { return m_encrypted; } bool SupportsIntegrityCheck() const override { return m_encrypted; }
bool CheckH3TableIntegrity(const Partition& partition) const override; bool CheckH3TableIntegrity(const Partition& partition) const override;
bool CheckBlockIntegrity(u64 block_index, const std::vector<u8>& encrypted_data, bool CheckBlockIntegrity(u64 block_index, const std::vector<u8>& encrypted_data,

View File

@ -120,8 +120,7 @@ GameFile::GameFile(std::string path) : m_file_path(std::move(path))
m_file_size = volume->GetRawSize(); m_file_size = volume->GetRawSize();
m_volume_size = volume->GetSize(); m_volume_size = volume->GetSize();
m_volume_size_is_accurate = volume->IsSizeAccurate(); m_volume_size_is_accurate = volume->IsSizeAccurate();
m_is_datel_disc = DiscIO::IsDisc(m_platform) && m_is_datel_disc = volume->IsDatelDisc();
!DiscIO::GetBootDOLOffset(*volume, volume->GetGamePartition());
m_internal_name = volume->GetInternalName(); m_internal_name = volume->GetInternalName();
m_game_id = volume->GetGameID(); m_game_id = volume->GetGameID();