summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/VolumeWad.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@innovatetechnologi.es>2019-07-21 15:32:52 +0800
committerGitHub <noreply@github.com>2019-07-21 15:32:52 +0800
commitda1fbbc5d5d0eda5fcdccadd20207b4b525f8a7e (patch)
tree28afb7bb2892547e824f688261ec50c0616ef15b /Source/Core/DiscIO/VolumeWad.cpp
parentcd7a374ab91f1f1dd46e5631309bea7ed5efc23d (diff)
parent34f32898e63e7dd5d0251fd630f8d569432c9ac3 (diff)
Merge pull request #8243 from JosJuice/merge-wad-classes
DiscIO: Merge WiiWAD into VolumeWAD
Diffstat (limited to 'Source/Core/DiscIO/VolumeWad.cpp')
-rw-r--r--Source/Core/DiscIO/VolumeWad.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/Source/Core/DiscIO/VolumeWad.cpp b/Source/Core/DiscIO/VolumeWad.cpp
index 911708b7c8..e0dda7ebc4 100644
--- a/Source/Core/DiscIO/VolumeWad.cpp
+++ b/Source/Core/DiscIO/VolumeWad.cpp
@@ -61,10 +61,6 @@ VolumeWAD::VolumeWAD(std::unique_ptr<BlobReader> reader) : m_reader(std::move(re
Read(m_cert_chain_offset, m_cert_chain_size, m_cert_chain.data());
}
-VolumeWAD::~VolumeWAD()
-{
-}
-
bool VolumeWAD::Read(u64 offset, u64 length, u8* buffer, const Partition& partition) const
{
if (partition != PARTITION_NONE)
@@ -118,6 +114,24 @@ const std::vector<u8>& VolumeWAD::GetCertificateChain(const Partition& partition
return m_cert_chain;
}
+std::vector<u8> VolumeWAD::GetContent(u16 index) const
+{
+ u64 offset = m_data_offset;
+ for (const IOS::ES::Content& content : m_tmd.GetContents())
+ {
+ const u64 aligned_size = Common::AlignUp(content.size, 0x40);
+ if (content.index == index)
+ {
+ std::vector<u8> data(aligned_size);
+ if (!m_reader->Read(offset, aligned_size, data.data()))
+ return {};
+ return data;
+ }
+ offset += aligned_size;
+ }
+ return {};
+}
+
std::vector<u64> VolumeWAD::GetContentOffsets() const
{
const std::vector<IOS::ES::Content> contents = m_tmd.GetContents();