diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2021-09-22 03:02:39 +0200 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2021-10-23 23:51:23 +0200 |
| commit | b1802f6daa65e8617b26c4b47d94813242fb7945 (patch) | |
| tree | 04bc4172d162bf7f1d474f9eda77b102e61973e4 | |
| parent | f8611f71395f0dc469582c8cdfce7c601c635b00 (diff) | |
DiscIO/DirectoryBlob: Add a content source representing a run of padding bytes.
| -rw-r--r-- | Source/Core/DiscIO/DirectoryBlob.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/DiscIO/DirectoryBlob.h | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/Source/Core/DiscIO/DirectoryBlob.cpp b/Source/Core/DiscIO/DirectoryBlob.cpp index c86b0396a2..356416b076 100644 --- a/Source/Core/DiscIO/DirectoryBlob.cpp +++ b/Source/Core/DiscIO/DirectoryBlob.cpp @@ -132,6 +132,11 @@ bool DiscContent::Read(u64* offset, u64* length, u8** buffer) const return false; } } + else if (std::holds_alternative<ContentFixedByte>(m_content_source)) + { + const ContentFixedByte& source = std::get<ContentFixedByte>(m_content_source); + std::fill_n(*buffer, bytes_to_read, source.m_byte); + } else { PanicAlertFmt("DirectoryBlob: Invalid content source in DiscContent."); diff --git a/Source/Core/DiscIO/DirectoryBlob.h b/Source/Core/DiscIO/DirectoryBlob.h index e942c14a94..5ab03137e5 100644 --- a/Source/Core/DiscIO/DirectoryBlob.h +++ b/Source/Core/DiscIO/DirectoryBlob.h @@ -71,10 +71,18 @@ struct ContentVolume Partition m_partition; }; +// Content chunk representing a run of identical bytes. +// Useful for padding between chunks within a file. +struct ContentFixedByte +{ + u8 m_byte; +}; + using ContentSource = std::variant<ContentFile, // File const u8*, // Memory ContentPartition, // Partition - ContentVolume // Volume + ContentVolume, // Volume + ContentFixedByte // Fixed value padding >; class DiscContent |
