summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DiscIO/DirectoryBlob.cpp5
-rw-r--r--Source/Core/DiscIO/DirectoryBlob.h10
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