summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/DirectoryBlob.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2017-06-08 18:30:05 +0200
committerJosJuice <josjuice@gmail.com>2017-08-01 11:36:40 +0200
commita0fa350ca651f3ecbeb2b06e107c49c506bf995e (patch)
treea13d4f7303183b0cad97d0e4897f4c88b06364e1 /Source/Core/DiscIO/DirectoryBlob.cpp
parent936ef5b9dde767698fc2a61b1d2b2c2f867f60f0 (diff)
DirectoryBlob: Use DiscContent for everything in ReadPartition
Diffstat (limited to 'Source/Core/DiscIO/DirectoryBlob.cpp')
-rw-r--r--Source/Core/DiscIO/DirectoryBlob.cpp36
1 files changed, 7 insertions, 29 deletions
diff --git a/Source/Core/DiscIO/DirectoryBlob.cpp b/Source/Core/DiscIO/DirectoryBlob.cpp
index 8f000454e8..39b0595987 100644
--- a/Source/Core/DiscIO/DirectoryBlob.cpp
+++ b/Source/Core/DiscIO/DirectoryBlob.cpp
@@ -165,39 +165,17 @@ DirectoryBlobReader::DirectoryBlobReader(File::IOFile dol_file, const std::strin
SetDOLAndDiskType(std::move(dol_file));
BuildFST();
+
+ m_virtual_disc.emplace(DISKHEADER_ADDRESS, DISKHEADERINFO_ADDRESS, m_disk_header.data());
+ m_virtual_disc.emplace(DISKHEADERINFO_ADDRESS, sizeof(m_disk_header_info),
+ reinterpret_cast<const u8*>(m_disk_header_info.get()));
+ m_virtual_disc.emplace(APPLOADER_ADDRESS, m_apploader.size(), m_apploader.data());
+ m_virtual_disc.emplace(m_dol_address, m_dol.size(), m_dol.data());
+ m_virtual_disc.emplace(m_fst_address, m_fst_data.size(), m_fst_data.data());
}
bool DirectoryBlobReader::ReadPartition(u64 offset, u64 length, u8* buffer)
{
- // header
- if (offset < DISKHEADERINFO_ADDRESS)
- {
- WriteToBuffer(DISKHEADER_ADDRESS, DISKHEADERINFO_ADDRESS, m_disk_header.data(), &offset,
- &length, &buffer);
- }
- // header info
- if (offset >= DISKHEADERINFO_ADDRESS && offset < APPLOADER_ADDRESS)
- {
- WriteToBuffer(DISKHEADERINFO_ADDRESS, sizeof(m_disk_header_info), (u8*)m_disk_header_info.get(),
- &offset, &length, &buffer);
- }
- // apploader
- if (offset >= APPLOADER_ADDRESS && offset < APPLOADER_ADDRESS + m_apploader.size())
- {
- WriteToBuffer(APPLOADER_ADDRESS, m_apploader.size(), m_apploader.data(), &offset, &length,
- &buffer);
- }
- // dol
- if (offset >= m_dol_address && offset < m_dol_address + m_dol.size())
- {
- WriteToBuffer(m_dol_address, m_dol.size(), m_dol.data(), &offset, &length, &buffer);
- }
- // fst
- if (offset >= m_fst_address && offset < m_data_start_address)
- {
- WriteToBuffer(m_fst_address, m_fst_data.size(), m_fst_data.data(), &offset, &length, &buffer);
- }
-
if (m_virtual_disc.empty())
return true;