diff options
| author | JosJuice <josjuice@gmail.com> | 2015-12-03 17:29:59 +0100 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2015-12-03 17:29:59 +0100 |
| commit | a0cd753060fb8b2701c4e1733cc56da4523f852c (patch) | |
| tree | c458ee7ffc253bed518343bd3ec59cddf5e2bc52 /Source/Core/DiscIO | |
| parent | a5904b522d4bb73e24e8d453566cc1cdcd1b7ccb (diff) | |
Don't read from volume when reloading Wii banners
Should make loading cached Wii games that lack banners slightly faster.
Diffstat (limited to 'Source/Core/DiscIO')
| -rw-r--r-- | Source/Core/DiscIO/Volume.h | 4 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeCommon.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeDirectory.cpp | 17 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeDirectory.h | 1 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeWad.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeWad.h | 1 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeWiiCrypted.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeWiiCrypted.h | 1 |
8 files changed, 46 insertions, 7 deletions
diff --git a/Source/Core/DiscIO/Volume.h b/Source/Core/DiscIO/Volume.h index e9dd63f682..2e55ac5963 100644 --- a/Source/Core/DiscIO/Volume.h +++ b/Source/Core/DiscIO/Volume.h @@ -90,7 +90,7 @@ public: virtual std::map<ELanguage, std::string> GetNames(bool prefer_long) const = 0; virtual std::map<ELanguage, std::string> GetDescriptions() const { return std::map<ELanguage, std::string>(); } virtual std::string GetCompany() const { return std::string(); } - virtual std::vector<u32> GetBanner(int* width, int* height) const; + virtual std::vector<u32> GetBanner(int* width, int* height) const = 0; virtual u64 GetFSTSize() const = 0; virtual std::string GetApploaderDate() const = 0; // 0 is the first disc, 1 is the second disc @@ -108,6 +108,8 @@ public: // Size on disc (compressed size) virtual u64 GetRawSize() const = 0; + static std::vector<u32> GetWiiBanner(int* width, int* height, u64 title_id); + protected: template <u32 N> std::string DecodeString(const char(&data)[N]) const diff --git a/Source/Core/DiscIO/VolumeCommon.cpp b/Source/Core/DiscIO/VolumeCommon.cpp index a6fa2dc41d..17fbbc4d11 100644 --- a/Source/Core/DiscIO/VolumeCommon.cpp +++ b/Source/Core/DiscIO/VolumeCommon.cpp @@ -24,14 +24,11 @@ static const unsigned int WII_BANNER_HEIGHT = 64; static const unsigned int WII_BANNER_SIZE = WII_BANNER_WIDTH * WII_BANNER_HEIGHT * 2; static const unsigned int WII_BANNER_OFFSET = 0xA0; -std::vector<u32> IVolume::GetBanner(int* width, int* height) const +std::vector<u32> IVolume::GetWiiBanner(int* width, int* height, u64 title_id) { *width = 0; *height = 0; - u64 title_id = 0; - GetTitleID(&title_id); - std::string file_name = StringFromFormat("%s/title/%08x/%08x/data/banner.bin", File::GetUserPath(D_WIIROOT_IDX).c_str(), (u32)(title_id >> 32), (u32)title_id); if (!File::Exists(file_name)) diff --git a/Source/Core/DiscIO/VolumeDirectory.cpp b/Source/Core/DiscIO/VolumeDirectory.cpp index 672a322c5c..69018fc1cd 100644 --- a/Source/Core/DiscIO/VolumeDirectory.cpp +++ b/Source/Core/DiscIO/VolumeDirectory.cpp @@ -183,7 +183,8 @@ IVolume::ECountry CVolumeDirectory::GetCountry() const std::string CVolumeDirectory::GetMakerID() const { - return "VOID"; + // Not implemented + return "00"; } std::string CVolumeDirectory::GetInternalName() const @@ -204,6 +205,14 @@ std::map<IVolume::ELanguage, std::string> CVolumeDirectory::GetNames(bool prefer return names; } +std::vector<u32> CVolumeDirectory::GetBanner(int* width, int* height) const +{ + // Not implemented + *width = 0; + *height = 0; + return std::vector<u32>(); +} + void CVolumeDirectory::SetName(const std::string& name) { size_t length = name.length(); @@ -216,11 +225,13 @@ void CVolumeDirectory::SetName(const std::string& name) u64 CVolumeDirectory::GetFSTSize() const { + // Not implemented return 0; } std::string CVolumeDirectory::GetApploaderDate() const { + // Not implemented return "VOID"; } @@ -239,12 +250,14 @@ BlobType CVolumeDirectory::GetBlobType() const u64 CVolumeDirectory::GetSize() const { + // Not implemented return 0; } u64 CVolumeDirectory::GetRawSize() const { - return GetSize(); + // Not implemented + return 0; } std::string CVolumeDirectory::ExtractDirectoryName(const std::string& _rDirectory) diff --git a/Source/Core/DiscIO/VolumeDirectory.h b/Source/Core/DiscIO/VolumeDirectory.h index 8d8f664a07..28baea670c 100644 --- a/Source/Core/DiscIO/VolumeDirectory.h +++ b/Source/Core/DiscIO/VolumeDirectory.h @@ -43,6 +43,7 @@ public: u16 GetRevision() const override { return 0; } std::string GetInternalName() const override; std::map<IVolume::ELanguage, std::string> GetNames(bool prefer_long) const override; + std::vector<u32> GetBanner(int* width, int* height) const override; void SetName(const std::string&); u64 GetFSTSize() const override; diff --git a/Source/Core/DiscIO/VolumeWad.cpp b/Source/Core/DiscIO/VolumeWad.cpp index 7a998b17d0..db6dc440a5 100644 --- a/Source/Core/DiscIO/VolumeWad.cpp +++ b/Source/Core/DiscIO/VolumeWad.cpp @@ -127,6 +127,18 @@ std::map<IVolume::ELanguage, std::string> CVolumeWAD::GetNames(bool prefer_long) return ReadWiiNames(name_data); } +std::vector<u32> CVolumeWAD::GetBanner(int* width, int* height) const +{ + *width = 0; + *height = 0; + + u64 title_id; + if (!GetTitleID(&title_id)) + return std::vector<u32>(); + + return GetWiiBanner(width, height, title_id); +} + BlobType CVolumeWAD::GetBlobType() const { return m_pReader ? m_pReader->GetBlobType() : BlobType::PLAIN; diff --git a/Source/Core/DiscIO/VolumeWad.h b/Source/Core/DiscIO/VolumeWad.h index 7af4eeca7b..ee0379fe5c 100644 --- a/Source/Core/DiscIO/VolumeWad.h +++ b/Source/Core/DiscIO/VolumeWad.h @@ -32,6 +32,7 @@ public: u16 GetRevision() const override; std::string GetInternalName() const override { return ""; } std::map<IVolume::ELanguage, std::string> GetNames(bool prefer_long) const override; + std::vector<u32> GetBanner(int* width, int* height) const override; u64 GetFSTSize() const override { return 0; } std::string GetApploaderDate() const override { return ""; } diff --git a/Source/Core/DiscIO/VolumeWiiCrypted.cpp b/Source/Core/DiscIO/VolumeWiiCrypted.cpp index 6483f971ce..4f226c62e4 100644 --- a/Source/Core/DiscIO/VolumeWiiCrypted.cpp +++ b/Source/Core/DiscIO/VolumeWiiCrypted.cpp @@ -212,6 +212,18 @@ std::map<IVolume::ELanguage, std::string> CVolumeWiiCrypted::GetNames(bool prefe return ReadWiiNames(opening_bnr); } +std::vector<u32> CVolumeWiiCrypted::GetBanner(int* width, int* height) const +{ + *width = 0; + *height = 0; + + u64 title_id; + if (!GetTitleID(&title_id)) + return std::vector<u32>(); + + return GetWiiBanner(width, height, title_id); +} + u64 CVolumeWiiCrypted::GetFSTSize() const { if (m_pReader == nullptr) diff --git a/Source/Core/DiscIO/VolumeWiiCrypted.h b/Source/Core/DiscIO/VolumeWiiCrypted.h index c88138faf6..482deffa37 100644 --- a/Source/Core/DiscIO/VolumeWiiCrypted.h +++ b/Source/Core/DiscIO/VolumeWiiCrypted.h @@ -32,6 +32,7 @@ public: u16 GetRevision() const override; std::string GetInternalName() const override; std::map<IVolume::ELanguage, std::string> GetNames(bool prefer_long) const override; + std::vector<u32> GetBanner(int* width, int* height) const override; u64 GetFSTSize() const override; std::string GetApploaderDate() const override; u8 GetDiscNumber() const override; |
