diff --git a/SabreTools.Data.Models/N3DS/Enums.cs b/SabreTools.Data.Models/N3DS/Enums.cs
index a5bac17d..fd2bcb11 100644
--- a/SabreTools.Data.Models/N3DS/Enums.cs
+++ b/SabreTools.Data.Models/N3DS/Enums.cs
@@ -226,4 +226,18 @@ namespace SabreTools.Data.Models.N3DS
Optional = 0x4000,
Shared = 0x8000,
}
+
+ ///
+ public enum Z3DSMetadataItemType : byte
+ {
+ ///
+ /// End marker
+ ///
+ End = 0,
+
+ ///
+ /// Binary metadata
+ ///
+ Binary = 1,
+ }
}
diff --git a/SabreTools.Data.Models/N3DS/Z3DSMetadata.cs b/SabreTools.Data.Models/N3DS/Z3DSMetadata.cs
new file mode 100644
index 00000000..1a799bee
--- /dev/null
+++ b/SabreTools.Data.Models/N3DS/Z3DSMetadata.cs
@@ -0,0 +1,20 @@
+namespace SabreTools.Data.Models.N3DS
+{
+ ///
+ /// Metadata block whose size is defined by
+ ///
+ ///
+ public class Z3DSMetadata
+ {
+ ///
+ /// Metadata version
+ ///
+ /// Currently only a value of 1 is expected
+ public byte Version { get; set; }
+
+ ///
+ /// Set of metadata entries in the block
+ ///
+ public Z3DSMetadataItem[] Items { get; set; } = [];
+ }
+}
diff --git a/SabreTools.Data.Models/N3DS/Z3DSMetadataItem.cs b/SabreTools.Data.Models/N3DS/Z3DSMetadataItem.cs
new file mode 100644
index 00000000..e8476f3f
--- /dev/null
+++ b/SabreTools.Data.Models/N3DS/Z3DSMetadataItem.cs
@@ -0,0 +1,38 @@
+namespace SabreTools.Data.Models.N3DS
+{
+ ///
+ /// Metadata item entry
+ ///
+ ///
+ public class Z3DSMetadataItem
+ {
+ ///
+ /// Item type
+ ///
+ public Z3DSMetadataItemType Type { get; set; }
+
+ ///
+ /// Length of the name field
+ ///
+ public byte NameLength { get; set; }
+
+ ///
+ /// Length of the data field
+ ///
+ public ushort DataLength { get; set; }
+
+ ///
+ /// Name encoded as bytes whose length is given
+ /// by
+ ///
+ /// Ignored if is End
+ public byte[] Name { get; set; } = [];
+
+ ///
+ /// Data encoded as bytes whose length is given
+ /// by
+ ///
+ /// Ignored if is End
+ public byte[] Data { get; set; } = [];
+ }
+}