diff options
Diffstat (limited to 'Source/Core/DiscIO/DirectoryBlob.cpp')
| -rw-r--r-- | Source/Core/DiscIO/DirectoryBlob.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Source/Core/DiscIO/DirectoryBlob.cpp b/Source/Core/DiscIO/DirectoryBlob.cpp index 61aac73694..8628c50fc0 100644 --- a/Source/Core/DiscIO/DirectoryBlob.cpp +++ b/Source/Core/DiscIO/DirectoryBlob.cpp @@ -54,6 +54,8 @@ enum class PartitionType : u32 // 0xFF is an arbitrarily picked value. Note that we can't use 0x00, because that means NTSC-J constexpr u32 INVALID_REGION = 0xFF; +constexpr u32 PARTITION_DATA_OFFSET = 0x20000; + constexpr u8 ENTRY_SIZE = 0x0c; constexpr u8 FILE_ENTRY = 0; constexpr u8 DIRECTORY_ENTRY = 1; @@ -508,8 +510,8 @@ void DirectoryBlobReader::SetPartitions(std::vector<PartitionWithType>&& partiti const u64 partition_data_size = partitions[i].partition.GetDataSize(); m_partitions.emplace(partition_address, std::move(partitions[i].partition)); - const u64 unaligned_next_partition_address = - VolumeWii::PartitionOffsetToRawOffset(partition_data_size, Partition(partition_address)); + const u64 unaligned_next_partition_address = VolumeWii::EncryptedPartitionOffsetToRawOffset( + partition_data_size, Partition(partition_address), PARTITION_DATA_OFFSET); partition_address = Common::AlignUp(unaligned_next_partition_address, 0x10000ull); } m_data_size = partition_address; @@ -546,7 +548,6 @@ void DirectoryBlobReader::SetPartitionHeader(const DirectoryBlobPartition& parti partition_root + "h3.bin"); constexpr u32 PARTITION_HEADER_SIZE = 0x1c; - constexpr u32 DATA_OFFSET = 0x20000; const u64 data_size = Common::AlignUp(partition.GetDataSize(), 0x7c00) / 0x7c00 * 0x8000; m_partition_headers.emplace_back(PARTITION_HEADER_SIZE); std::vector<u8>& partition_header = m_partition_headers.back(); @@ -555,7 +556,7 @@ void DirectoryBlobReader::SetPartitionHeader(const DirectoryBlobPartition& parti Write32(static_cast<u32>(cert_size), 0x8, &partition_header); Write32(static_cast<u32>(cert_offset >> 2), 0x0C, &partition_header); Write32(H3_OFFSET >> 2, 0x10, &partition_header); - Write32(DATA_OFFSET >> 2, 0x14, &partition_header); + Write32(PARTITION_DATA_OFFSET >> 2, 0x14, &partition_header); Write32(static_cast<u32>(data_size >> 2), 0x18, &partition_header); m_nonpartition_contents.Add(partition_address + TICKET_SIZE, partition_header); |
