diff --git a/SabreTools.Models/BMP/BITMAPFILEHEADER.cs b/SabreTools.Models/BMP/BITMAPFILEHEADER.cs
deleted file mode 100644
index 361651b..0000000
--- a/SabreTools.Models/BMP/BITMAPFILEHEADER.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.BMP
-{
- ///
- /// The BITMAPFILEHEADER structure contains information about the type, size,
- /// and layout of a file that contains a DIB.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class BITMAPFILEHEADER
- {
- ///
- /// The file type; must be BM.
- ///
- public ushort Type;
-
- ///
- /// The size, in bytes, of the bitmap file.
- ///
- public uint Size;
-
- ///
- /// Reserved; must be zero.
- ///
- public ushort Reserved1;
-
- ///
- /// Reserved; must be zero.
- ///
- public ushort Reserved2;
-
- ///
- /// The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.
- ///
- public uint OffBits;
- }
-}
diff --git a/SabreTools.Models/BMP/BITMAPINFOHEADER.cs b/SabreTools.Models/BMP/BITMAPINFOHEADER.cs
deleted file mode 100644
index 4d776f4..0000000
--- a/SabreTools.Models/BMP/BITMAPINFOHEADER.cs
+++ /dev/null
@@ -1,97 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.BMP
-{
- ///
- /// The BITMAPINFOHEADER structure contains information about the dimensions and
- /// color format of a device-independent bitmap (DIB).
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class BITMAPINFOHEADER
- {
- ///
- /// Specifies the number of bytes required by the structure. This value does
- /// not include the size of the color table or the size of the color masks,
- /// if they are appended to the end of structure.
- ///
- public uint Size;
-
- ///
- /// Specifies the width of the bitmap, in pixels.
- ///
- public int Width;
-
- ///
- /// Specifies the height of the bitmap, in pixels.
- /// - For uncompressed RGB bitmaps, if biHeight is positive, the bitmap is a
- /// bottom-up DIB with the origin at the lower left corner. If biHeight is
- /// negative, the bitmap is a top-down DIB with the origin at the upper left
- /// corner.
- /// - For YUV bitmaps, the bitmap is always top-down, regardless of the sign of
- /// biHeight. Decoders should offer YUV formats with positive biHeight, but for
- /// backward compatibility they should accept YUV formats with either positive
- /// or negative biHeight.
- /// - For compressed formats, biHeight must be positive, regardless of image orientation.
- ///
- public int Height;
-
- ///
- /// Specifies the number of planes for the target device. This value must be set to 1.
- ///
- public ushort Planes;
-
- ///
- /// Specifies the number of bits per pixel (bpp). For uncompressed formats, this value
- /// is the average number of bits per pixel. For compressed formats, this value is the
- /// implied bit depth of the uncompressed image, after the image has been decoded.
- ///
- public ushort BitCount;
-
- ///
- /// For compressed video and YUV formats, this member is a FOURCC code, specified as a
- /// DWORD in little-endian order. For example, YUYV video has the FOURCC 'VYUY' or
- /// 0x56595559. For more information, see FOURCC Codes.
- ///
- /// For uncompressed RGB formats, the following values are possible:
- /// - BI_RGB: Uncompressed RGB.
- /// - BI_BITFIELDS: Uncompressed RGB with color masks. Valid for 16-bpp and 32-bpp bitmaps.
- ///
- /// Note that BI_JPG and BI_PNG are not valid video formats.
- ///
- /// For 16-bpp bitmaps, if biCompression equals BI_RGB, the format is always RGB 555.
- /// If biCompression equals BI_BITFIELDS, the format is either RGB 555 or RGB 565. Use
- /// the subtype GUID in the AM_MEDIA_TYPE structure to determine the specific RGB type.
- ///
- public uint Compression;
-
- ///
- /// Specifies the size, in bytes, of the image. This can be set to 0 for uncompressed
- /// RGB bitmaps.
- ///
- public uint SizeImage;
-
- ///
- /// Specifies the horizontal resolution, in pixels per meter, of the target device for
- /// the bitmap.
- ///
- public int XPelsPerMeter;
-
- ///
- /// Specifies the vertical resolution, in pixels per meter, of the target device for
- /// the bitmap.
- ///
- public int YPelsPerMeter;
-
- ///
- /// Specifies the number of color indices in the color table that are actually used by
- /// the bitmap.
- ///
- public uint ClrUsed;
-
- ///
- /// Specifies the number of color indices that are considered important for displaying
- /// the bitmap. If this value is zero, all colors are important.
- ///
- public uint ClrImportant;
- }
-}
diff --git a/SabreTools.Models/CFB/Binary.cs b/SabreTools.Models/CFB/Binary.cs
deleted file mode 100644
index 8bddf02..0000000
--- a/SabreTools.Models/CFB/Binary.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-namespace SabreTools.Models.CFB
-{
- ///
- /// Microsoft Compound File Binary (CFB) file format, also known as the
- /// Object Linking and Embedding (OLE) or Component Object Model (COM)
- /// structured storage compound file implementation binary file format.
- /// This structure name can be shortened to compound file.
- ///
- ///
- public sealed class Binary
- {
- ///
- /// Compound file header
- ///
- public FileHeader? Header { get; set; }
-
- ///
- /// The FAT is the main allocator for space within a compound file.
- /// Every sector in the file is represented within the FAT in some
- /// fashion, including those sectors that are unallocated (free).
- /// The FAT is a sector chain that is made up of one or more FAT sectors.
- ///
- ///
- /// If Header Major Version is 3, there MUST be 128 fields specified to fill a 512-byte sector.
- ///
- /// If Header Major Version is 4, there MUST be 1,024 fields specified to fill a 4,096-byte sector
- ///
- public SectorNumber[]? FATSectorNumbers { get; set; }
-
- ///
- /// The mini FAT is used to allocate space in the mini stream.
- /// The mini stream is divided intosmaller, equal-length sectors,
- /// and the sector size that is used for the mini stream is specified
- /// from the Compound File Header (64 bytes).
- ///
- ///
- /// If Header Major Version is 3, there MUST be 128 fields specified to fill a 512-byte sector.
- ///
- /// If Header Major Version is 4, there MUST be 1,024 fields specified to fill a 4,096-byte sector
- ///
- public SectorNumber[]? MiniFATSectorNumbers { get; set; }
-
- ///
- /// The DIFAT array is used to represent storage of the FAT sectors.
- /// The DIFAT is represented by an array of 32-bit sector numbers.
- /// The DIFAT array is stored both in the header and in DIFAT sectors.
- /// In the header, the DIFAT array occupies 109 entries, and in each
- /// DIFAT sector, the DIFAT array occupies the entire sector minus
- /// 4 bytes. (The last field is for chaining the DIFAT sector chain.)
- ///
- ///
- /// If Header Major Version is 3, there MUST be 127 fields specified to
- /// fill a 512-byte sector minus the "Next DIFAT Sector Location" field.
- ///
- /// If Header Major Version is 4, there MUST be 1,023 fields specified
- /// to fill a 4,096-byte sector minus the "Next DIFAT Sector Location" field.
- ///
- public SectorNumber[]? DIFATSectorNumbers { get; set; }
-
- ///
- /// The directory entry array is an array of directory entries that
- /// are grouped into a directory sector. Each storage object or stream
- /// object within a compound file is represented by a single directory
- /// entry. The space for the directory sectors that are holding the
- /// array is allocated from the FAT.
- ///
- ///
- /// The first entry in the first sector of the directory chain (also
- /// referred to as the first element of the directory array, or stream
- /// ID #0) is known as the root directory entry, and it is reserved for
- /// two purposes. First, it provides a root parent for all objects that
- /// are stationed at the root of the compound file. Second, its function
- /// is overloaded to store the size and starting sector for the mini stream.
- ///
- /// The root directory entry behaves as both a stream and a storage object.
- /// The root directory entry's Name field MUST contain the null-terminated
- /// string "Root Entry" in Unicode UTF-16.
- ///
- /// The object class GUID (CLSID) that is stored in the root directory
- /// entry can be used for COM activation of the document's application.
- ///
- /// The time stamps for the root storage are not maintained in the root
- /// directory entry. Rather, the root storage's creation and modification
- /// time stamps are normally stored on the file itself in the file system.
- ///
- /// The Creation Time field in the root storage directory entry MUST be
- /// all zeroes. The Modified Time field in the root storage directory
- /// entry MAY be all zeroes.
- ///
- public DirectoryEntry[]? DirectoryEntries { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CFB/Constants.cs b/SabreTools.Models/CFB/Constants.cs
deleted file mode 100644
index 403dddd..0000000
--- a/SabreTools.Models/CFB/Constants.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System;
-
-namespace SabreTools.Models.CFB
-{
- public static class Constants
- {
- public static readonly byte[] SignatureBytes = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];
-
- public const ulong SignatureUInt64 = 0xE11AB1A1E011CFD0;
-
-
- ///
- #region Class IDs
-
- ///
- /// Installer Package (msi), Merge Module (msm), Patch Creation Properties (pcp)
- ///
- public static readonly Guid InstallerPackage = new("000c1084-0000-0000-c000-000000000046");
-
- ///
- /// Patch Package (msp)
- ///
- public static readonly Guid PatchPackage = new("000C1086-0000-0000-C000-000000000046");
-
- ///
- /// Transform (mst)
- ///
- public static readonly Guid Transform = new("000C1082-0000-0000-C000-000000000046");
-
- #endregion
-
- ///
- #region Property Set Format IDs
-
- ///
- /// The Summary Information Property Set
- ///
- public static readonly Guid FMTID_SummaryInformation = new("F29F85E0-4FF9-1068-AB91-08002B27B3D9");
-
- ///
- /// The DocumentSummaryInformation and UserDefined Property Sets
- ///
- public static readonly Guid FMTID_DocSummaryInformation = new("D5CDD502-2E9C-101B-9397-08002B2CF9AE");
-
- ///
- /// The DocumentSummaryInformation and UserDefined Property Sets
- ///
- public static readonly Guid FMTID_UserDefinedProperties = new("D5CDD505-2E9C-101B-9397-08002B2CF9AE");
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CFB/DirectoryEntry.cs b/SabreTools.Models/CFB/DirectoryEntry.cs
deleted file mode 100644
index 21acefd..0000000
--- a/SabreTools.Models/CFB/DirectoryEntry.cs
+++ /dev/null
@@ -1,142 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CFB
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public sealed class DirectoryEntry
- {
- ///
- /// This field MUST contain a Unicode string for the storage or stream
- /// name encoded in UTF-16. The name MUST be terminated with a UTF-16
- /// terminating null character. Thus, storage and stream names are limited
- /// to 32 UTF-16 code points, including the terminating null character.
- /// When locating an object in the compound file except for the root
- /// storage, the directory entry name is compared by using a special
- /// case-insensitive uppercase mapping, described in Red-Black Tree.
- /// The following characters are illegal and MUST NOT be part of the
- /// name: '/', '\', ':', '!'.
- ///
- /// 64 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
- public string? Name;
-
- ///
- /// This field MUST match the length of the Directory Entry Name Unicode
- /// string in bytes. The length MUST be a multiple of 2 and include the
- /// terminating null character in the count. This length MUST NOT exceed 64,
- /// the maximum size of the Directory Entry Name field.
- ///
- public ushort NameLength;
-
- ///
- /// This field MUST be 0x00, 0x01, 0x02, or 0x05, depending on the
- /// actual type of object. All other values are not valid.
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ObjectType ObjectType;
-
- ///
- /// This field MUST be 0x00 (red) or 0x01 (black). All other values are not valid.
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ColorFlag ColorFlag;
-
- ///
- /// This field contains the stream ID of the left sibling. If there
- /// is no left sibling, the field MUST be set to NOSTREAM (0xFFFFFFFF).
- ///
- [MarshalAs(UnmanagedType.U4)]
- public StreamID LeftSiblingID;
-
- ///
- /// This field contains the stream ID of the right sibling. If there
- /// is no right sibling, the field MUST be set to NOSTREAM (0xFFFFFFFF).
- ///
- [MarshalAs(UnmanagedType.U4)]
- public StreamID RightSiblingID;
-
- ///
- /// This field contains the stream ID of a child object. If there is no
- /// child object, including all entries for stream objects, the field
- /// MUST be set to NOSTREAM (0xFFFFFFFF).
- ///
- [MarshalAs(UnmanagedType.U4)]
- public StreamID ChildID;
-
- ///
- /// This field contains an object class GUID, if this entry is for a
- /// storage object or root storage object. For a stream object, this field
- /// MUST be set to all zeroes. A value containing all zeroes in a storage
- /// or root storage directory entry is valid, and indicates that no object
- /// class is associated with the storage. If an implementation of the file
- /// format enables applications to create storage objects without explicitly
- /// setting an object class GUID, it MUST write all zeroes by default. If
- /// this value is not all zeroes, the object class GUID can be used as a
- /// parameter to start applications.
- ///
- public Guid CLSID;
-
- ///
- /// This field contains the user-defined flags if this entry is for a storage
- /// object or root storage object. For a stream object, this field SHOULD be
- /// set to all zeroes because many implementations provide no way for
- /// applications to retrieve state bits from a stream object. If an
- /// implementation of the file format enables applications to create storage
- /// objects without explicitly setting state bits, it MUST write all zeroes
- /// by default.
- ///
- public uint StateBits;
-
- ///
- /// This field contains the creation time for a storage object, or all zeroes
- /// to indicate that the creation time of the storage object was not recorded.
- /// The Windows FILETIME structure is used to represent this field in UTC.
- /// For a stream object, this field MUST be all zeroes. For a root storage
- /// object, this field MUST be all zeroes, and the creation time is retrieved
- /// or set on the compound file itself.
- ///
- public ulong CreationTime;
-
- ///
- /// This field contains the modification time for a storage object, or all
- /// zeroes to indicate that the modified time of the storage object was not
- /// recorded. The Windows FILETIME structure is used to represent this field
- /// in UTC. For a stream object, this field MUST be all zeroes. For a root
- /// storage object, this field MAY<2> be set to all zeroes, and the modified
- /// time is retrieved or set on the compound file itself.
- ///
- public ulong ModifiedTime;
-
- ///
- /// This field contains the first sector location if this is a stream object.
- /// For a root storage object, this field MUST contain the first sector of the
- /// mini stream, if the mini stream exists. For a storage object, this field MUST
- /// be set to all zeroes.
- ///
- public uint StartingSectorLocation;
-
- ///
- /// This 64-bit integer field contains the size of the user-defined data if this
- /// is a stream object. For a root storage object, this field contains the size
- /// of the mini stream. For a storage object, this field MUST be set to all zeroes.
- ///
- ///
- /// For a version 3 compound file 512-byte sector size, the value of this field MUST
- /// be less than or equal to 0x80000000. (Equivalently, this requirement can be stated:
- /// the size of a stream or of the mini stream in a version 3 compound file MUST be
- /// less than or equal to 2 gigabytes (GB).) Note that as a consequence of this
- /// requirement, the most significant 32 bits of this field MUST be zero in a version
- /// 3 compound file. However, implementers should be aware that some older
- /// implementations did not initialize the most significant 32 bits of this field,
- /// and these bits might therefore be nonzero in files that are otherwise valid
- /// version 3 compound files. Although this document does not normatively specify
- /// parser behavior, it is recommended that parsers ignore the most significant 32 bits
- /// of this field in version 3 compound files, treating it as if its value were zero,
- /// unless there is a specific reason to do otherwise (for example, a parser whose
- /// purpose is to verify the correctness of a compound file).
- ///
- public ulong StreamSize;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CFB/Enums.cs b/SabreTools.Models/CFB/Enums.cs
deleted file mode 100644
index e7dea50..0000000
--- a/SabreTools.Models/CFB/Enums.cs
+++ /dev/null
@@ -1,474 +0,0 @@
-namespace SabreTools.Models.CFB
-{
- public enum ColorFlag : byte
- {
- Red = 0x00,
- Black = 0x01,
- }
-
- public enum ObjectType : byte
- {
- Unknown = 0x00,
- StorageObject = 0x01,
- StreamObject = 0x02,
- RootStorageObject = 0x05,
- }
-
- public enum SectorNumber : uint
- {
- ///
- /// Regular sector number.
- ///
- REGSECT = 0x00000000, // 0x00000000 - 0xFFFFFFF9
-
- ///
- /// Maximum regular sector number.
- ///
- MAXREGSECT = 0xFFFFFFFA,
-
- ///
- /// Reserved for future use.
- ///
- NotApplicable = 0xFFFFFFFB,
-
- ///
- /// Specifies a DIFAT sector in the FAT.
- ///
- DIFSECT = 0xFFFFFFFC,
-
- ///
- /// Specifies a FAT sector in the FAT.
- ///
- FATSECT = 0xFFFFFFFD,
-
- ///
- /// End of a linked chain of sectors.
- ///
- ENDOFCHAIN = 0xFFFFFFFE,
-
- ///
- /// Specifies an unallocated sector in the FAT, Mini FAT, or DIFAT.
- ///
- FREESECT = 0xFFFFFFFF,
- }
-
- public enum StreamID : uint
- {
- ///
- /// Regular stream ID to identify the directory entry.
- ///
- REGSID = 0x00000000, // 0x00000000 - 0xFFFFFFF9
-
- ///
- /// Maximum regular stream ID.
- ///
- MAXREGSID = 0xFFFFFFFA,
-
- ///
- /// Terminator or empty pointer.
- ///
- NOSTREAM = 0xFFFFFFFF,
- }
-
- ///
- public enum SummaryInformationProperty : uint
- {
- ///
- /// Title
- ///
- PIDSI_TITLE = 0x00000002,
-
- ///
- /// Subject
- ///
- PIDSI_SUBJECT = 0x00000003,
-
- ///
- /// Author
- ///
- PIDSI_AUTHOR = 0x00000004,
-
- ///
- /// Keywords
- ///
- PIDSI_KEYWORDS = 0x00000005,
-
- ///
- /// Comments
- ///
- PIDSI_COMMENTS = 0x00000006,
-
- ///
- /// Template
- ///
- PIDSI_TEMPLATE = 0x00000007,
-
- ///
- /// Last Saved By
- ///
- PIDSI_LASTAUTHOR = 0x00000008,
-
- ///
- /// Revision Number
- ///
- PIDSI_REVNUMBER = 0x00000009,
-
- ///
- /// Total Editing Time
- ///
- PIDSI_EDITTIME = 0x0000000A,
-
- ///
- /// Last Printed
- ///
- PIDSI_LASTPRINTED = 0x0000000B,
-
- ///
- /// Create Time/Date
- ///
- PIDSI_CREATE_DTM = 0x0000000C,
-
- ///
- /// Last saved Time/Date
- ///
- PIDSI_LASTSAVE_DTM = 0x0000000D,
-
- ///
- /// Number of Pages
- ///
- PIDSI_PAGECOUNT = 0x0000000E,
-
- ///
- /// Number of Words
- ///
- PIDSI_WORDCOUNT = 0x0000000F,
-
- ///
- /// Number of Characters
- ///
- PIDSI_CHARCOUNT = 0x00000010,
-
- ///
- /// Thumbnail
- ///
- PIDSI_THUMBNAIL = 0x00000011,
-
- ///
- /// Name of Creating Application
- ///
- PIDSI_APPNAME = 0x00000012,
-
- ///
- /// Security
- ///
- PIDSI_SECURITY = 0x00000013,
- }
-
- /// Also includes the DocumentSummaryInformation set
- ///
- public enum UserDefinedProperty : uint
- {
- ///
- /// Category - A text string typed by the user that indicates what
- /// category the file belongs to (memo, proposal, and so on). It
- /// is useful for finding files of same type.
- ///
- PIDDSI_CATEGORY = 0x00000002,
-
- ///
- /// PresentationTarget - Target format for presentation (35mm,
- /// printer, video, and so on).
- ///
- PIDDSI_PRESFORMAT = 0x00000003,
-
- ///
- /// Bytes - Number of bytes.
- ///
- PIDDSI_BYTECOUNT = 0x00000004,
-
- ///
- /// Lines - Number of lines.
- ///
- PIDDSI_LINECOUNT = 0x00000005,
-
- ///
- /// Paragraphs - Number of paragraphs.
- ///
- PIDDSI_PARCOUNT = 0x00000006,
-
- ///
- /// Slides - Number of slides.
- ///
- PIDDSI_SLIDECOUNT = 0x00000007,
-
- ///
- /// Notes - Number of pages that contain notes.
- ///
- PIDDSI_NOTECOUNT = 0x00000008,
-
- ///
- /// HiddenSlides - Number of slides that are hidden.
- ///
- PIDDSI_HIDDENCOUNT = 0x00000009,
-
- ///
- /// MMClips - Number of sound or video clips.
- ///
- PIDDSI_MMCLIPCOUNT = 0x0000000A,
-
- ///
- /// ScaleCrop - Set to True (-1) when scaling of the thumbnail
-
- /// is desired. If not set, cropping is desired.
- ///
- PIDDSI_SCALE = 0x0000000B,
-
- ///
- /// HeadingPairs - Internally used property indicating the
- /// grouping of different document parts and the number of
- /// items in each group. The titles of the document parts are
- /// stored in the TitlesofParts property. The HeadingPairs
- /// property is stored as a vector of variants, in repeating
- /// pairs of VT_LPSTR (or VT_LPWSTR) and VT_I4 values. The
- /// VT_LPSTR value represents a heading name, and the VT_I4
- /// value indicates the count of document parts under that heading.
- ///
- PIDDSI_HEADINGPAIR = 0x0000000C,
-
- ///
- /// TitlesofParts - Names of document parts.
- ///
- PIDDSI_DOCPARTS = 0x0000000D,
-
- ///
- /// Manager - Manager of the project.
- ///
- PIDDSI_MANAGER = 0x0000000E,
-
- ///
- /// Company - Company name.
- ///
- PIDDSI_COMPANY = 0x0000000F,
-
- ///
- /// LinksUpToDate - Boolean value to indicate whether the custom
- /// links are hampered by excessive noise, for all applications.
- ///
- PIDDSI_LINKSDIRTY = 0x00000010,
- }
-
- ///
- public enum VariantType : ushort
- {
- ///
- /// The type of the contained field is undefined. When this flag is
- /// specified, the VARIANT MUST NOT contain a data field.
- ///
- VT_EMPTY = 0x0000,
-
- ///
- /// The type of the contained field is NULL. When this flag is
- /// specified, the VARIANT MUST NOT contain a data field.
- ///
- VT_NULL = 0x0001,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 2-byte signed integer.
- ///
- VT_I2 = 0x0002,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 4-byte signed integer.
- ///
- VT_I4 = 0x0003,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 4-byte IEEE floating-point number.
- ///
- VT_R4 = 0x0004,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be an 8-byte IEEE floating-point number.
- ///
- VT_R8 = 0x0005,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be CURRENCY.
- ///
- VT_CY = 0x0006,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be DATE.
- ///
- VT_DATE = 0x0007,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be BSTR.
- ///
- VT_BSTR = 0x0008,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a pointer to IDispatch.
- ///
- VT_DISPATCH = 0x0009,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be HRESULT.
- ///
- VT_ERROR = 0x000A,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be VARIANT_BOOL.
- ///
- VT_BOOL = 0x000B,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be VARIANT. It MUST appear with the bit flag VT_BYREF.
- ///
- VT_VARIANT = 0x000C,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a pointer to IUnknown.
- ///
- VT_UNKNOWN = 0x000D,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be DECIMAL.
- ///
- VT_DECIMAL = 0x000E,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 1-byte integer.
- ///
- VT_I1 = 0x0010,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 1-byte unsigned integer.
- ///
- VT_UI1 = 0x0011,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 2-byte unsigned integer.
- ///
- VT_UI2 = 0x0012,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 4-byte unsigned integer.
- ///
- VT_UI4 = 0x0013,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be an 8-byte signed integer.
- ///
- VT_I8 = 0x0014,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be an 8-byte unsigned integer.
- ///
- VT_UI8 = 0x0015,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 4-byte signed integer.
- ///
- VT_INT = 0x0016,
-
- ///
- /// Either the specified type, or the type of the element or contained
- /// field MUST be a 4-byte unsigned integer.
- ///
- VT_UINT = 0x0017,
-
- ///
- /// The specified type MUST be void.
- ///
- VT_VOID = 0x0018,
-
- ///
- /// The specified type MUST be HRESULT.
- ///
- VT_HRESULT = 0x0019,
-
- ///
- /// The specified type MUST be a unique pointer.
- ///
- VT_PTR = 0x001A,
-
- ///
- /// The specified type MUST be SAFEARRAY.
- ///
- VT_SAFEARRAY = 0x001B,
-
- ///
- /// The specified type MUST be a fixed-size array.
- ///
- VT_CARRAY = 0x001C,
-
- ///
- /// The specified type MUST be user defined.
- ///
- VT_USERDEFINED = 0x001D,
-
- ///
- /// The specified type MUST be a NULL-terminated string.
- ///
- VT_LPSTR = 0x001E,
-
- ///
- /// The specified type MUST be a zero-terminated string of
- /// UNICODE characters.
- ///
- VT_LPWSTR = 0x001F,
-
- ///
- /// The type of the element or contained field MUST be a BRECORD.
- ///
- VT_RECORD = 0x0024,
-
- ///
- /// The specified type MUST be either a 4-byte or an 8-byte signed
- /// integer. The size of the integer is platform specific and
- /// determines the system pointer size value.
- ///
- VT_INT_PTR = 0x0025,
-
- ///
- /// The specified type MUST be either a 4 byte or an 8 byte unsigned
- /// integer. The size of the integer is platform specific and
- /// determines the system pointer size value
- ///
- VT_UINT_PTR = 0x0026,
-
- ///
- /// The type of the element or contained field MUST be a SAFEARRAY.
- ///
- VT_ARRAY = 0x2000,
-
- ///
- /// The type of the element or contained field MUST be a pointer to
- /// one of the types listed in the previous rows of this table. If
- /// present, this bit flag MUST appear in a VARIANT discriminant
- /// with one of the previous flags.
- ///
- VT_BYREF = 0x4000
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CFB/FileHeader.cs b/SabreTools.Models/CFB/FileHeader.cs
deleted file mode 100644
index 5714fe8..0000000
--- a/SabreTools.Models/CFB/FileHeader.cs
+++ /dev/null
@@ -1,133 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CFB
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class FileHeader
- {
- ///
- /// Iddentification signature for the compound file structure, and MUST be
- /// set to the value 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1.
- ///
- public ulong Signature;
-
- ///
- /// Reserved and unused class ID that MUST be set to all zeroes (CLSID_NULL)
- ///
- public Guid CLSID;
-
- ///
- /// Version number for nonbreaking changes. This field SHOULD be set to
- /// 0x003E if the major version field is either 0x0003 or 0x0004.
- ///
- public ushort MinorVersion;
-
- ///
- /// Version number for breaking changes. This field MUST be set to either
- /// 0x0003 (version 3) or 0x0004 (version 4).
- ///
- public ushort MajorVersion;
-
- ///
- /// This field MUST be set to 0xFFFE. This field is a byte order mark for
- /// all integer fields, specifying little-endian byte order.
- ///
- public ushort ByteOrder;
-
- ///
- /// This field MUST be set to 0x0009, or 0x000c, depending on the Major
- /// Version field. This field specifies the sector size of the compound file
- /// as a power of 2.
- ///
- /// If Major Version is 3, the Sector Shift MUST be 0x0009, specifying a
- /// sector size of 512 bytes.
- ///
- /// If Major Version is 4, the Sector Shift MUST be 0x000C, specifying a
- /// sector size of 4096 bytes.
- ///
- public ushort SectorShift;
-
- ///
- /// This field MUST be set to 0x0006. This field specifies the sector size
- /// of the Mini Stream as a power of 2. The sector size of the Mini Stream
- /// MUST be 64 bytes.
- ///
- public ushort MiniSectorShift;
-
- ///
- /// This field MUST be set to all zeroes.
- ///
- /// 6 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public byte[]? Reserved;
-
- ///
- /// This integer field contains the count of the number of directory sectors
- /// in the compound file.
- ///
- /// If Major Version is 3, the Number of Directory Sectors MUST be zero. This
- /// field is not supported for version 3 compound files.
- ///
- public uint NumberOfDirectorySectors;
-
- ///
- /// This integer field contains the count of the number of FAT sectors in the
- /// compound file.
- ///
- public uint NumberOfFATSectors;
-
- ///
- /// This integer field contains the starting sector number for the directory stream.
- ///
- public uint FirstDirectorySectorLocation;
-
- ///
- /// This integer field MAY contain a sequence number that is incremented every time
- /// the compound file is saved by an implementation that supports file transactions.
- /// This is the field that MUST be set to all zeroes if file transactions are not
- /// implemented.
- ///
- public uint TransactionSignatureNumber;
-
- ///
- /// This integer field MUST be set to 0x00001000. This field specifies the maximum
- /// size of a user-defined data stream that is allocated from the mini FAT and mini
- /// stream, and that cutoff is 4,096 bytes. Any user-defined data stream that is
- /// greater than or equal to this cutoff size must be allocated as normal sectors from
- /// the FAT.
- ///
- public uint MiniStreamCutoffSize;
-
- ///
- /// This integer field contains the starting sector number for the mini FAT.
- ///
- public uint FirstMiniFATSectorLocation;
-
- ///
- /// This integer field contains the count of the number of mini FAT sectors in the
- /// compound file.
- ///
- public uint NumberOfMiniFATSectors;
-
- ///
- /// This integer field contains the starting sector number for the DIFAT.
- ///
- public uint FirstDIFATSectorLocation;
-
- ///
- /// This integer field contains the count of the number of DIFAT sectors in the
- /// compound file.
- ///
- public uint NumberOfDIFATSectors;
-
- ///
- /// This array of 32-bit integer fields contains the first 109 FAT sector
- /// locations of the compound file
- ///
- /// 109 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 109)]
- public SectorNumber[]? DIFAT;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CFB/SummaryInformation.cs b/SabreTools.Models/CFB/SummaryInformation.cs
deleted file mode 100644
index 6a9f864..0000000
--- a/SabreTools.Models/CFB/SummaryInformation.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-using System;
-
-namespace SabreTools.Models.CFB
-{
- ///
- public sealed class SummaryInformation
- {
- #region Set Header
-
- ///
- /// This field MUST be set to 0xFFFE. This field is a byte order mark for
- /// all integer fields, specifying little-endian byte order.
- ///
- public ushort ByteOrder { get; set; }
-
- ///
- /// Format
- ///
- public ushort Format { get; set; }
-
- ///
- /// Build
- ///
- public ushort Build { get; set; }
-
- ///
- /// Platform ID
- ///
- public ushort PlatformID { get; set; }
-
- ///
- /// CLSID
- ///
- public Guid CLSID { get; set; }
-
- ///
- /// 4 bytes of reserved data
- ///
- public byte[]? Reserved { get; set; }
-
- #endregion
-
- #region Format Header
-
- ///
- /// Format ID, should be
- ///
- public Guid FormatID { get; set; }
-
- ///
- /// 16 bytes of unknown data
- ///
- public byte[]? Unknown { get; set; }
-
- #endregion
-
- #region Section Header
-
- ///
- /// Location of the section
- ///
- public uint Offset { get; set; }
-
- ///
- /// Section count(?)
- ///
- public uint SectionCount { get; set; }
-
- ///
- /// Property count
- ///
- public uint PropertyCount { get; set; }
-
- ///
- /// Properties
- ///
- /// Each Variant might be followed by an index and offset value
- public Variant[]? Properties { get; set; }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CFB/Variant.cs b/SabreTools.Models/CFB/Variant.cs
deleted file mode 100644
index 9473cbb..0000000
--- a/SabreTools.Models/CFB/Variant.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-namespace SabreTools.Models.CFB
-{
- ///
- /// VARIANT is a container for a union that can hold many types of data.
- ///
- ///
- public sealed class Variant
- {
- ///
- /// MUST be set to the size, in quad words (64 bits), of the structure.
- ///
- public uint Size { get; set; }
-
- ///
- /// MUST be set to 0 and MUST be ignored by the recipient.
- ///
- public uint RpcReserved { get; set; }
-
- ///
- /// MUST be set to one of the values specified with a "V".
- ///
- public VariantType VariantType { get; set; }
-
- ///
- /// MAY be set to 0 and MUST be ignored by the recipient.
- ///
- public ushort Reserved1 { get; set; }
-
- ///
- /// MAY be set to 0 and MUST be ignored by the recipient.
- ///
- public ushort Reserved2 { get; set; }
-
- ///
- /// MAY be set to 0 and MUST be ignored by the recipient.
- ///
- public ushort Reserved3 { get; set; }
-
- ///
- /// MUST contain an instance of the type, according to the value
- /// in the field.
- ///
- public object? Union { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CHD/CompressedMapEntryV5.cs b/SabreTools.Models/CHD/CompressedMapEntryV5.cs
deleted file mode 100644
index 0b21665..0000000
--- a/SabreTools.Models/CHD/CompressedMapEntryV5.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class CompressedMapEntryV5
- {
- ///
- /// Compression type
- ///
- public byte Compression;
-
- ///
- /// Compressed length
- ///
- /// Actually UInt24
- public uint CompLength;
-
- ///
- /// Offset
- ///
- /// Actually UInt48
- public ulong Offset;
-
- ///
- /// CRC-16 of the data
- ///
- public ushort CRC;
- }
-}
diff --git a/SabreTools.Models/CHD/CompressedMapHeaderV5.cs b/SabreTools.Models/CHD/CompressedMapHeaderV5.cs
deleted file mode 100644
index 1ec0e35..0000000
--- a/SabreTools.Models/CHD/CompressedMapHeaderV5.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class CompressedMapHeaderV5
- {
- ///
- /// Length of compressed map
- ///
- public uint Length;
-
- ///
- /// Offset of first block
- ///
- /// Actually UInt48
- public ulong DataStart;
-
- ///
- /// CRC-16 of the map
- ///
- public ushort CRC;
-
- ///
- /// Bits used to encode complength
- ///
- public byte LengthBits;
-
- ///
- /// Bits used to encode self-refs
- ///
- public byte HunkBits;
-
- ///
- /// Bits used to encode parent unit refs
- ///
- public byte ParentUnitBits;
-
- ///
- /// Future use
- ///
- public byte Reserved;
- }
-}
diff --git a/SabreTools.Models/CHD/Constants.cs b/SabreTools.Models/CHD/Constants.cs
deleted file mode 100644
index 863c712..0000000
--- a/SabreTools.Models/CHD/Constants.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-namespace SabreTools.Models.CHD
-{
- public static class Constants
- {
- public static readonly byte[] SignatureBytes = [0x4D, 0x43, 0x6F, 0x6D, 0x70, 0x72, 0x48, 0x44];
-
- public const string SignatureString = "MComprHD";
-
- #region Header Sizes
-
- public const int HeaderV1Size = 76;
- public const int HeaderV2Size = 80;
- public const int HeaderV3Size = 120;
- public const int HeaderV4Size = 108;
- public const int HeaderV5Size = 124;
-
- #endregion
-
- #region Metadata Parameters
-
- public const uint CHDMETAINDEX_APPEND = uint.MaxValue;
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CHD/Enums.cs b/SabreTools.Models/CHD/Enums.cs
deleted file mode 100644
index a492b87..0000000
--- a/SabreTools.Models/CHD/Enums.cs
+++ /dev/null
@@ -1,358 +0,0 @@
-using System;
-
-namespace SabreTools.Models.CHD
-{
- ///
- public enum AVHuffCodec
- {
- DECOMPRESS_CONFIG = 1,
- }
-
- ///
- public enum CodecType : uint
- {
- CHD_CODEC_NONE = 0,
-
- #region General Codecs
-
- /// "zlib"
- ZLIB = 0x7a6c6962,
-
- /// "zstd"
- ZSTD = 0x7a737464,
-
- /// "lzma"
- LZMA = 0x6c7a6d61,
-
- /// "huff"
- HUFFMAN = 0x68756666,
-
- /// "flac"
- FLAC = 0x666c6163,
-
- #endregion
-
- #region General Codecs with CD Frontend
-
- /// "cdzl"
- CD_ZLIB = 0x63647a6c,
-
- /// "cdzs"
- CD_ZSTD = 0x63647a73,
-
- /// "cdlz"
- CD_LZMA = 0x63646c7a,
-
- /// "cdfl"
- CD_FLAC = 0x6364666c,
-
- #endregion
-
- #region A/V Codecs
-
- /// "avhu"
- AVHUFF = 0x61766875,
-
- #endregion
-
- #region Pseudo-Codecs Returned by hunk_info
-
- ///
- /// Copy of another hunk
- ///
- CHD_CODEC_SELF = 1,
-
- ///
- /// Copy of a parent's hunk
- ///
- CHD_CODEC_PARENT = 2,
-
- ///
- /// Legacy "mini" 8-byte repeat
- ///
- CHD_CODEC_MINI = 3,
-
- #endregion
- }
-
- ///
- public enum CompressionType : uint
- {
- #region V1
-
- CHDCOMPRESSION_NONE = 0,
- CHDCOMPRESSION_ZLIB = 1,
-
- #endregion
-
- #region V3
-
- CHDCOMPRESSION_ZLIB_PLUS = 2,
-
- #endregion
-
- #region V4
-
- CHDCOMPRESSION_AV = 3,
-
- #endregion
- }
-
- ///
- public enum Error : uint
- {
- NO_INTERFACE = 1,
- NOT_OPEN,
- ALREADY_OPEN,
- INVALID_FILE,
- INVALID_DATA,
- REQUIRES_PARENT,
- FILE_NOT_WRITEABLE,
- CODEC_ERROR,
- INVALID_PARENT,
- HUNK_OUT_OF_RANGE,
- DECOMPRESSION_ERROR,
- COMPRESSION_ERROR,
- CANT_VERIFY,
- METADATA_NOT_FOUND,
- INVALID_METADATA_SIZE,
- UNSUPPORTED_VERSION,
- VERIFY_INCOMPLETE,
- INVALID_METADATA,
- INVALID_STATE,
- OPERATION_PENDING,
- UNSUPPORTED_FORMAT,
- UNKNOWN_COMPRESSION,
- WALKING_PARENT,
- COMPRESSING
- }
-
- ///
- [Flags]
- public enum Flags : uint
- {
- ///
- /// Set if this drive has a parent
- ///
- DriveHasParent = 0x00000001,
-
- ///
- /// Set if this drive allows writes
- ///
- DriveAllowsWrites = 0x00000002,
- }
-
- ///
- [Flags]
- public enum MetadataFlags : byte
- {
- ///
- /// Indicates data is checksummed
- ///
- CHD_MDFLAGS_CHECKSUM = 0x01,
- }
-
- ///
- public enum MetadataTag : uint
- {
- CHDMETATAG_WILDCARD = 0,
-
- #region Hard Disk
-
- ///
- /// Standard hard disk metadata
- ///
- /// "GDDD"
- HARD_DISK_METADATA_TAG = 0x47444444,
-
- ///
- /// Hard disk identify information
- ///
- /// "IDNT"
- HARD_DISK_IDENT_METADATA_TAG = 0x49444e54,
-
- ///
- /// Hard disk key information
- ///
- /// "KEY "
- HARD_DISK_KEY_METADATA_TAG = 0x4b455920,
-
- #endregion
-
- #region PCMCIA
-
- ///
- /// PCMCIA CIS information
- ///
- /// "CIS "
- PCMCIA_CIS_METADATA_TAG = 0x43495320,
-
- #endregion
-
- #region CD-ROM
-
- /// "CHCD"
- CDROM_OLD_METADATA_TAG = 0x43484344,
-
- /// "CHTR"
- CDROM_TRACK_METADATA_TAG = 0x43485452,
-
- /// "CHT2"
- CDROM_TRACK_METADATA2_TAG = 0x43485432,
-
- #endregion
-
- #region GD-ROM
-
- /// "CHGT"
- GDROM_OLD_METADATA_TAG = 0x43484754,
-
- /// "CHGD"
- GDROM_TRACK_METADATA_TAG = 0x43484744,
-
- #endregion
-
- #region DVD
-
- ///
- /// Standard DVD metadata
- ///
- /// "DVD "
- DVD_METADATA_TAG = 0x44564420,
-
- #endregion
-
- #region A/V
-
- ///
- /// Standard A/V metadata
- ///
- /// "AVAV"
- AV_METADATA_TAG = 0x41564156,
-
- ///
- /// A/V laserdisc frame metadata
- ///
- /// "AVLD"
- AV_LD_METADATA_TAG = 0x41564c44,
-
- #endregion
- }
-
- ///
- public enum V34EntryType : uint
- {
- ///
- /// Invalid type
- ///
- V34_MAP_ENTRY_TYPE_INVALID = 0,
-
- ///
- /// Standard compression
- ///
- V34_MAP_ENTRY_TYPE_COMPRESSED = 1,
-
- ///
- /// Uncompressed data
- ///
- V34_MAP_ENTRY_TYPE_UNCOMPRESSED = 2,
-
- ///
- /// Mini: use offset as raw data
- ///
- V34_MAP_ENTRY_TYPE_MINI = 3,
-
- ///
- /// Same as another hunk in this file
- ///
- V34_MAP_ENTRY_TYPE_SELF_HUNK = 4,
-
- ///
- /// Same as a hunk in the parent file
- ///
- V34_MAP_ENTRY_TYPE_PARENT_HUNK = 5,
-
- ///
- /// Compressed with secondary algorithm (usually FLAC CDDA)
- ///
- V34_MAP_ENTRY_TYPE_2ND_COMPRESSED = 6,
- }
-
- ///
- public enum V5CompressionType : uint
- {
- // These types are live when running
-
- ///
- /// Codec #0
- ///
- COMPRESSION_TYPE_0 = 0,
-
- ///
- /// Codec #1
- ///
- COMPRESSION_TYPE_1 = 1,
-
- ///
- /// Codec #2
- ///
- COMPRESSION_TYPE_2 = 2,
-
- ///
- /// Codec #3
- ///
- COMPRESSION_TYPE_3 = 3,
-
- ///
- /// No compression; implicit length = hunkbytes
- ///
- COMPRESSION_NONE = 4,
-
- ///
- /// Same as another block in this CHD
- ///
- COMPRESSION_SELF = 5,
-
- ///
- /// Same as a hunk's worth of units in the parent CHD
- ///
- COMPRESSION_PARENT = 6,
-
- // These additional pseudo-types are used for compressed encodings
-
- ///
- /// Start of small RLE run (4-bit length)
- ///
- COMPRESSION_RLE_SMALL,
-
- ///
- /// Start of large RLE run (8-bit length)
- ///
- COMPRESSION_RLE_LARGE,
-
- ///
- /// Same as the last COMPRESSION_SELF block
- ///
- COMPRESSION_SELF_0,
-
- ///
- /// Same as the last COMPRESSION_SELF block + 1
- ///
- COMPRESSION_SELF_1,
-
- ///
- /// Same block in the parent
- ///
- COMPRESSION_PARENT_SELF,
-
- ///
- /// Same as the last COMPRESSION_PARENT block
- ///
- COMPRESSION_PARENT_0,
-
- ///
- /// Same as the last COMPRESSION_PARENT block + 1
- ///
- COMPRESSION_PARENT_1
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CHD/Header.cs b/SabreTools.Models/CHD/Header.cs
deleted file mode 100644
index 2e97aca..0000000
--- a/SabreTools.Models/CHD/Header.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public abstract class Header
- {
- ///
- /// 'MComprHD'
- ///
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
- public string? Tag;
-
- ///
- /// Length of header (including tag and length fields)
- ///
- public uint Length;
-
- ///
- /// Drive format version
- ///
- public uint Version;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/CHD/HeaderV1.cs b/SabreTools.Models/CHD/HeaderV1.cs
deleted file mode 100644
index ff73e89..0000000
--- a/SabreTools.Models/CHD/HeaderV1.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public class HeaderV1 : Header
- {
- ///
- /// Flags
- ///
- [MarshalAs(UnmanagedType.U4)]
- public Flags Flags;
-
- ///
- /// Compression type
- ///
- [MarshalAs(UnmanagedType.U4)]
- public CompressionType Compression;
-
- ///
- /// 512-byte sectors per hunk
- ///
- public uint HunkSize;
-
- ///
- /// Total # of hunks represented
- ///
- public uint TotalHunks;
-
- ///
- /// Number of cylinders on hard disk
- ///
- public uint Cylinders;
-
- ///
- /// Number of heads on hard disk
- ///
- public uint Heads;
-
- ///
- /// Number of sectors on hard disk
- ///
- public uint Sectors;
-
- ///
- /// MD5 checksum of raw data
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[] MD5 = new byte[16];
-
- ///
- /// MD5 checksum of parent file
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[] ParentMD5 = new byte[16];
- }
-}
diff --git a/SabreTools.Models/CHD/HeaderV2.cs b/SabreTools.Models/CHD/HeaderV2.cs
deleted file mode 100644
index 873633c..0000000
--- a/SabreTools.Models/CHD/HeaderV2.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public class HeaderV2 : Header
- {
- ///
- /// Flags
- ///
- [MarshalAs(UnmanagedType.U4)]
- public Flags Flags;
-
- ///
- /// Compression type
- ///
- [MarshalAs(UnmanagedType.U4)]
- public CompressionType Compression;
-
- ///
- /// Seclen-byte sectors per hunk
- ///
- public uint HunkSize;
-
- ///
- /// Total # of hunks represented
- ///
- public uint TotalHunks;
-
- ///
- /// Number of cylinders on hard disk
- ///
- public uint Cylinders;
-
- ///
- /// Number of heads on hard disk
- ///
- public uint Heads;
-
- ///
- /// Number of sectors on hard disk
- ///
- public uint Sectors;
-
- ///
- /// MD5 checksum of raw data
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[]? MD5 = new byte[16];
-
- ///
- /// MD5 checksum of parent file
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[]? ParentMD5 = new byte[16];
-
- ///
- /// Number of bytes per sector
- ///
- public uint BytesPerSector;
- }
-}
diff --git a/SabreTools.Models/CHD/HeaderV3.cs b/SabreTools.Models/CHD/HeaderV3.cs
deleted file mode 100644
index 9b235ab..0000000
--- a/SabreTools.Models/CHD/HeaderV3.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public class HeaderV3 : Header
- {
- ///
- /// Flags
- ///
- [MarshalAs(UnmanagedType.U4)]
- public Flags Flags;
-
- ///
- /// Compression type
- ///
- [MarshalAs(UnmanagedType.U4)]
- public CompressionType Compression;
-
- ///
- /// Total # of hunks represented
- ///
- public uint TotalHunks;
-
- ///
- /// Logical size of the data (in bytes)
- ///
- public ulong LogicalBytes;
-
- ///
- /// Offset to the first blob of metadata
- ///
- public ulong MetaOffset;
-
- ///
- /// MD5 checksum of raw data
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[]? MD5 = new byte[16];
-
- ///
- /// MD5 checksum of parent file
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[]? ParentMD5 = new byte[16];
-
- ///
- /// Number of bytes per hunk
- ///
- public uint HunkBytes;
-
- ///
- /// SHA1 checksum of raw data
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? SHA1 = new byte[20];
-
- ///
- /// SHA1 checksum of parent file
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ParentSHA1 = new byte[20];
- }
-}
diff --git a/SabreTools.Models/CHD/HeaderV4.cs b/SabreTools.Models/CHD/HeaderV4.cs
deleted file mode 100644
index 069ea60..0000000
--- a/SabreTools.Models/CHD/HeaderV4.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public class HeaderV4 : Header
- {
- ///
- /// Flags
- ///
- [MarshalAs(UnmanagedType.U4)]
- public Flags Flags;
-
- ///
- /// Compression type
- ///
- [MarshalAs(UnmanagedType.U4)]
- public CompressionType Compression;
-
- ///
- /// Total # of hunks represented
- ///
- public uint TotalHunks;
-
- ///
- /// Logical size of the data (in bytes)
- ///
- public ulong LogicalBytes;
-
- ///
- /// Offset to the first blob of metadata
- ///
- public ulong MetaOffset;
-
- ///
- /// Number of bytes per hunk
- ///
- public uint HunkBytes;
-
- ///
- /// Combined raw+meta SHA1
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? SHA1 = new byte[20];
-
- ///
- /// Combined raw+meta SHA1 of parent
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ParentSHA1 = new byte[20];
-
- ///
- /// Raw data SHA1
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? RawSHA1 = new byte[20];
- }
-}
diff --git a/SabreTools.Models/CHD/HeaderV5.cs b/SabreTools.Models/CHD/HeaderV5.cs
deleted file mode 100644
index c3bfd02..0000000
--- a/SabreTools.Models/CHD/HeaderV5.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public class HeaderV5 : Header
- {
- ///
- /// Which custom compressors are used?
- ///
- public CodecType[] Compressors { get; set; } = new CodecType[4];
-
- ///
- /// Logical size of the data (in bytes)
- ///
- public ulong LogicalBytes { get; set; }
-
- ///
- /// Offset to the map
- ///
- public ulong MapOffset { get; set; }
-
- ///
- /// Offset to the first blob of metadata
- ///
- public ulong MetaOffset { get; set; }
-
- ///
- /// Number of bytes per hunk (512k maximum)
- ///
- public uint HunkBytes { get; set; }
-
- ///
- /// Number of bytes per unit within each hunk
- ///
- public uint UnitBytes { get; set; }
-
- ///
- /// Raw data SHA1
- ///
- public byte[]? RawSHA1 { get; set; }
-
- ///
- /// Combined raw+meta SHA1
- ///
- public byte[]? SHA1 { get; set; }
-
- ///
- /// Combined raw+meta SHA1 of parent
- ///
- public byte[]? ParentSHA1 { get; set; }
- }
-}
diff --git a/SabreTools.Models/CHD/MapV1.cs b/SabreTools.Models/CHD/MapV1.cs
deleted file mode 100644
index e7efc23..0000000
--- a/SabreTools.Models/CHD/MapV1.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class MapV1
- {
- ///
- /// Starting offset within the file
- ///
- public ulong StartingOffset;
-
- ///
- /// Length of data; If == hunksize, data is uncompressed
- ///
- public ulong Length;
- }
-}
diff --git a/SabreTools.Models/CHD/MapV3.cs b/SabreTools.Models/CHD/MapV3.cs
deleted file mode 100644
index 1ed611d..0000000
--- a/SabreTools.Models/CHD/MapV3.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class MapV3
- {
- ///
- /// Starting offset within the file
- ///
- public ulong StartingOffset;
-
- ///
- /// 32-bit CRC of the uncompressed data
- ///
- public uint CRC32;
-
- ///
- /// Lower 16 bits of length
- ///
- public ushort LengthLo;
-
- ///
- /// Upper 8 bits of length
- ///
- public byte LengthHi;
-
- ///
- /// Flags, indicating compression info
- ///
- public byte Flags;
- }
-}
diff --git a/SabreTools.Models/CHD/MetadataEntry.cs b/SabreTools.Models/CHD/MetadataEntry.cs
deleted file mode 100644
index 16c538b..0000000
--- a/SabreTools.Models/CHD/MetadataEntry.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class MetadataEntry
- {
- ///
- /// Offset within the file of the header
- ///
- public ulong Offset;
-
- ///
- /// Offset within the file of the next header
- ///
- public ulong Next;
-
- ///
- /// Offset within the file of the previous header
- ///
- public ulong Prev;
-
- ///
- /// Length of the metadata
- ///
- public uint Length;
-
- ///
- /// Metadata tag
- ///
- public MetadataTag Metatag;
-
- ///
- /// Flag bits
- ///
- public MetadataFlags Flags;
- }
-}
diff --git a/SabreTools.Models/CHD/MetadataHash.cs b/SabreTools.Models/CHD/MetadataHash.cs
deleted file mode 100644
index 64bbae9..0000000
--- a/SabreTools.Models/CHD/MetadataHash.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class MetadataHash
- {
- ///
- /// Tag of the metadata in big-endian
- ///
- public MetadataTag Tag;
-
- ///
- /// Hash data
- ///
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? SHA1;
- }
-}
diff --git a/SabreTools.Models/CHD/UncompressedMapV5.cs b/SabreTools.Models/CHD/UncompressedMapV5.cs
deleted file mode 100644
index e9b20b2..0000000
--- a/SabreTools.Models/CHD/UncompressedMapV5.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.CHD
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public class UncompressedMapV5
- {
- ///
- /// Starting offset / hunk size
- ///
- public uint StartingOffset;
- }
-}
diff --git a/SabreTools.Models/LDSCRYPT/Constants.cs b/SabreTools.Models/LDSCRYPT/Constants.cs
deleted file mode 100644
index 60beb66..0000000
--- a/SabreTools.Models/LDSCRYPT/Constants.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace SabreTools.Models.LDSCRYPT
-{
- public static class Constants
- {
- public static readonly byte[] SignatureBytes = [0x4C, 0x44, 0x53, 0x43, 0x52, 0x59, 0x50, 0x54];
-
- public const string SignatureString = "LDSCRYPT";
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/LDSCRYPT/EncryptedFile.cs b/SabreTools.Models/LDSCRYPT/EncryptedFile.cs
deleted file mode 100644
index cf73ad4..0000000
--- a/SabreTools.Models/LDSCRYPT/EncryptedFile.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace SabreTools.Models.LDSCRYPT
-{
- ///
- /// This is a placeholder model for future work
- ///
- public class EncryptedFile
- {
-
- }
-}
diff --git a/SabreTools.Models/N3DS/ARM11KernelCapabilities.cs b/SabreTools.Models/N3DS/ARM11KernelCapabilities.cs
deleted file mode 100644
index 6673a1a..0000000
--- a/SabreTools.Models/N3DS/ARM11KernelCapabilities.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// The kernel capability descriptors are passed to svcCreateProcess.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class ARM11KernelCapabilities
- {
- ///
- /// Descriptors
- /// -------------------
- /// Pattern of bits 20-31 Type Fields
- /// 0b1110xxxxxxxx Interrupt info
- /// 0b11110xxxxxxx System call mask Bits 24-26: System call mask table index; Bits 0-23: mask
- /// 0b1111110xxxxx Kernel release version Bits 8-15: Major version; Bits 0-7: Minor version
- /// 0b11111110xxxx Handle table size Bits 0-18: size
- /// 0b111111110xxx Kernel flags
- /// 0b11111111100x Map address range Describes a memory mapping like the 0b111111111110 descriptor, but an entire range rather than a single page is mapped.Another 0b11111111100x descriptor must follow this one to denote the(exclusive) end of the address range to map.
- /// 0b111111111110 Map memory page Bits 0-19: page index to map(virtual address >> 12; the physical address is determined per-page according to Memory layout); Bit 20: Map read-only(otherwise read-write)
- ///
- /// ARM11 Kernel Flags
- /// -------------------
- /// Bit Description
- /// 0 Allow debug
- /// 1 Force debug
- /// 2 Allow non-alphanum
- /// 3 Shared page writing
- /// 4 Privilege priority
- /// 5 Allow main() args
- /// 6 Shared device memory
- /// 7 Runnable on sleep
- /// 8-11 Memory type(1: application, 2: system, 3: base)
- /// 12 Special memory
- /// 13 Process has access to CPU core 2 (New3DS only)
- ///
- /// TODO: Make enum for flag values
- /// 28 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
- public uint[]? Descriptors;
-
- ///
- /// Reserved
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? Reserved;
- }
-}
diff --git a/SabreTools.Models/N3DS/ARM11LocalSystemCapabilities.cs b/SabreTools.Models/N3DS/ARM11LocalSystemCapabilities.cs
deleted file mode 100644
index 270f04b..0000000
--- a/SabreTools.Models/N3DS/ARM11LocalSystemCapabilities.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class ARM11LocalSystemCapabilities
- {
- ///
- /// Program ID
- ///
- public ulong ProgramID;
-
- ///
- /// Core version (The Title ID low of the required FIRM)
- ///
- public uint CoreVersion;
-
- ///
- /// Flag1 (implemented starting from 8.0.0-18).
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ARM11LSCFlag1 Flag1;
-
- ///
- /// Flag2 (implemented starting from 8.0.0-18).
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ARM11LSCFlag2 Flag2;
-
- ///
- /// Flag0
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ARM11LSCFlag0 Flag0;
-
- ///
- /// Priority
- ///
- public byte Priority;
-
- ///
- /// Resource limit descriptors. The first byte here controls the maximum allowed CpuTime.
- ///
- /// 16 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public ushort[]? ResourceLimitDescriptors;
-
- ///
- /// Storage info
- ///
- public StorageInfo? StorageInfo;
-
- ///
- /// Service access control
- ///
- /// 32 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
- public ulong[]? ServiceAccessControl;
-
- ///
- /// Extended service access control, support for this was implemented with 9.3.0-X.
- ///
- /// 2 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
- public ulong[]? ExtendedServiceAccessControl;
-
- ///
- /// Reserved
- ///
- /// 0x0F bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0F)]
- public byte[]? Reserved;
-
- ///
- /// Resource limit category. (0 = APPLICATION, 1 = SYS_APPLET, 2 = LIB_APPLET, 3 = OTHER (sysmodules running under the BASE memregion))
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ResourceLimitCategory ResourceLimitCategory;
- }
-}
diff --git a/SabreTools.Models/N3DS/ARM9AccessControl.cs b/SabreTools.Models/N3DS/ARM9AccessControl.cs
deleted file mode 100644
index dc3636a..0000000
--- a/SabreTools.Models/N3DS/ARM9AccessControl.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class ARM9AccessControl
- {
- ///
- /// Descriptors
- ///
- /// 15 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 15)]
- public ARM9AccessControlDescriptors[]? Descriptors;
-
- ///
- /// ARM9 Descriptor Version. Originally this value had to be ≥ 2.
- /// Starting with 9.3.0-X this value has to be either value 2 or value 3.
- ///
- public byte DescriptorVersion;
- }
-}
diff --git a/SabreTools.Models/N3DS/AccessControlInfo.cs b/SabreTools.Models/N3DS/AccessControlInfo.cs
deleted file mode 100644
index 3952ed0..0000000
--- a/SabreTools.Models/N3DS/AccessControlInfo.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class AccessControlInfo
- {
- ///
- /// ARM11 local system capabilities
- ///
- public ARM11LocalSystemCapabilities? ARM11LocalSystemCapabilities;
-
- ///
- /// ARM11 kernel capabilities
- ///
- public ARM11KernelCapabilities? ARM11KernelCapabilities;
-
- ///
- /// ARM9 access control
- ///
- /// TODO: Fix serialization issue with this type
- public ARM9AccessControl? ARM9AccessControl;
- }
-}
diff --git a/SabreTools.Models/N3DS/CIA.cs b/SabreTools.Models/N3DS/CIA.cs
deleted file mode 100644
index b060897..0000000
--- a/SabreTools.Models/N3DS/CIA.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// CIA stands for CTR Importable Archive. This format allows the installation of
- /// titles to the 3DS. CIA files and titles on Nintendo's CDN contain identical data.
- /// As a consequence, valid CIA files can be generated from CDN content. This also
- /// means CIA files can contain anything that titles on Nintendo's CDN can contain.
- ///
- /// Under normal circumstances CIA files are used where downloading a title is
- /// impractical or not possible. Such as distributing a Download Play child, or
- /// installing forced Gamecard updates. Those CIA(s) are stored by the titles in
- /// question, in an auxiliary CFA file.
- ///
- ///
- public class CIA
- {
- ///
- /// CIA header
- ///
- public CIAHeader? Header { get; set; }
-
- ///
- /// Certificate chain
- ///
- ///
- /// https://www.3dbrew.org/wiki/CIA#Certificate_Chain
- ///
- public Certificate[]? CertificateChain { get; set; }
-
- ///
- /// Ticket
- ///
- public Ticket? Ticket { get; set; }
-
- ///
- /// TMD file data
- ///
- public TitleMetadata? TMDFileData { get; set; }
-
- ///
- /// Content file data
- ///
- public NCCHHeader[]? Partitions { get; set; }
-
- ///
- /// Content file data
- ///
- /// TODO: Parse the content file data
- public byte[]? ContentFileData { get; set; }
-
- ///
- /// Meta file data (Not a necessary component)
- ///
- public MetaData? MetaData { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/N3DS/CIAHeader.cs b/SabreTools.Models/N3DS/CIAHeader.cs
deleted file mode 100644
index daa4983..0000000
--- a/SabreTools.Models/N3DS/CIAHeader.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class CIAHeader
- {
- ///
- /// Archive header size, usually 0x2020 bytes
- ///
- public uint HeaderSize;
-
- ///
- /// Type
- ///
- public ushort Type;
-
- ///
- /// Version
- ///
- public ushort Version;
-
- ///
- /// Certificate chain size
- ///
- public uint CertificateChainSize;
-
- ///
- /// Ticket size
- ///
- public uint TicketSize;
-
- ///
- /// TMD file size
- ///
- public uint TMDFileSize;
-
- ///
- /// Meta size (0 if no Meta data is present)
- ///
- public uint MetaSize;
-
- ///
- /// Content size
- ///
- public ulong ContentSize;
-
- ///
- /// Content Index
- ///
- /// 0x2000 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x2000)]
- public byte[]? ContentIndex;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/N3DS/CardInfoHeader.cs b/SabreTools.Models/N3DS/CardInfoHeader.cs
deleted file mode 100644
index f2d31b2..0000000
--- a/SabreTools.Models/N3DS/CardInfoHeader.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class CardInfoHeader
- {
- ///
- /// CARD2: Writable Address In Media Units (For 'On-Chip' Savedata). CARD1: Always 0xFFFFFFFF.
- ///
- public uint WritableAddressMediaUnits;
-
- ///
- /// Card Info Bitmask
- ///
- public uint CardInfoBitmask;
-
- ///
- /// Reserved
- ///
- /// 0xF8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xF8)]
- public byte[]? Reserved1;
-
- ///
- /// Filled size of cartridge
- ///
- public uint FilledSize;
-
- ///
- /// Reserved
- ///
- /// 0x0C bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0C)]
- public byte[]? Reserved2;
-
- ///
- /// Title version
- ///
- public ushort TitleVersion;
-
- ///
- /// Card revision
- ///
- public ushort CardRevision;
-
- ///
- /// Reserved
- ///
- /// 0x0C bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0C)]
- public byte[]? Reserved3;
-
- ///
- /// Title ID of CVer in included update partition
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? CVerTitleID;
-
- ///
- /// Version number of CVer in included update partition
- ///
- public ushort CVerVersionNumber;
-
- ///
- /// Reserved
- ///
- /// 0xCD6 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xCD6)]
- public byte[]? Reserved4;
-
- ///
- /// This data is returned by 16-byte cartridge command 0x82.
- ///
- public InitialData? InitialData;
- }
-}
diff --git a/SabreTools.Models/N3DS/Cart.cs b/SabreTools.Models/N3DS/Cart.cs
deleted file mode 100644
index 688f9b6..0000000
--- a/SabreTools.Models/N3DS/Cart.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// Represents a 3DS cart image
- ///
- public class Cart
- {
- ///
- /// 3DS cart header
- ///
- public NCSDHeader? Header { get; set; }
-
- ///
- /// 3DS card info header
- ///
- public CardInfoHeader? CardInfoHeader { get; set; }
-
- ///
- /// 3DS development card info header
- ///
- public DevelopmentCardInfoHeader? DevelopmentCardInfoHeader { get; set; }
-
- ///
- /// NCCH partitions
- ///
- public NCCHHeader[]? Partitions { get; set; }
-
- ///
- /// NCCH extended headers
- ///
- public NCCHExtendedHeader[]? ExtendedHeaders { get; set; }
-
- ///
- /// ExeFS headers associated with each partition
- ///
- public ExeFSHeader[]? ExeFSHeaders { get; set; }
-
- ///
- /// RomFS headers associated with each partition
- ///
- public RomFSHeader[]? RomFSHeaders { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/N3DS/Certificate.cs b/SabreTools.Models/N3DS/Certificate.cs
deleted file mode 100644
index ce48c6a..0000000
--- a/SabreTools.Models/N3DS/Certificate.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// Certificates contain cryptography information for verifying Signatures.
- /// These certificates are also signed. The parent/child relationship between
- /// certificates, makes all the certificates effectively signed by 'Root',
- /// the public key for which is stored in NATIVE_FIRM.
- ///
- ///
- public sealed class Certificate
- {
- ///
- /// Signature Type
- ///
- public SignatureType SignatureType { get; set; }
-
- ///
- /// Signature size
- ///
- public ushort SignatureSize { get; set; }
-
- ///
- /// Padding size
- ///
- public byte PaddingSize { get; set; }
-
- ///
- /// Signature
- ///
- public byte[]? Signature { get; set; }
-
- ///
- /// Padding to align next data to 0x40 bytes
- ///
- public byte[]? Padding { get; set; }
-
- ///
- /// Issuer
- ///
- public string? Issuer { get; set; }
-
- ///
- /// Key Type
- ///
- public PublicKeyType KeyType { get; set; }
-
- ///
- /// Name
- ///
- public string? Name { get; set; }
-
- ///
- /// Expiration time as UNIX Timestamp, used at least for CTCert
- ///
- public uint ExpirationTime { get; set; }
-
- // This contains the Public Key (i.e. Modulus & Public Exponent)
- #region RSA-4096 and RSA-2048
-
- ///
- /// Modulus
- ///
- public byte[]? RSAModulus { get; set; }
-
- ///
- /// Public Exponent
- ///
- public uint RSAPublicExponent { get; set; }
-
- ///
- /// Padding
- ///
- public byte[]? RSAPadding { get; set; }
-
- #endregion
-
- // This contains the ECC public key, and is as follows:
- #region ECC
-
- ///
- /// Public Key
- ///
- public byte[]? ECCPublicKey { get; set; }
-
- ///
- /// Padding
- ///
- public byte[]? ECCPadding { get; set; }
-
- #endregion
- }
-}
diff --git a/SabreTools.Models/N3DS/CodeSetInfo.cs b/SabreTools.Models/N3DS/CodeSetInfo.cs
deleted file mode 100644
index 075291a..0000000
--- a/SabreTools.Models/N3DS/CodeSetInfo.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class CodeSetInfo
- {
- ///
- /// Address
- ///
- public uint Address;
-
- ///
- /// Physical region size (in page-multiples)
- ///
- public uint PhysicalRegionSizeInPages;
-
- ///
- /// Size (in bytes)
- ///
- public uint SizeInBytes;
- }
-}
diff --git a/SabreTools.Models/N3DS/Constants.cs b/SabreTools.Models/N3DS/Constants.cs
deleted file mode 100644
index cf2ce34..0000000
--- a/SabreTools.Models/N3DS/Constants.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- public static class Constants
- {
- // ExeFS
- public static readonly byte[] CodeSegmentName = [0x2e, 0x63, 0x6f, 0x64, 0x65, 0x00, 0x00, 0x00]; // .code\0\0\0
-
- // NCCH
- public const string NCCHMagicNumber = "NCCH";
-
- // NCSD
- public const string NCSDMagicNumber = "NCSD";
-
- // RomFS
- public const string RomFSMagicNumber = "IVFC";
- public const uint RomFSSecondMagicNumber = 0x10000;
-
- // Setup Keys and IVs
- public static byte[] PlainCounter = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
- public static byte[] ExefsCounter = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
- public static byte[] RomfsCounter = [0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
-
- public const int CXTExtendedDataHeaderLength = 0x800;
- }
-}
diff --git a/SabreTools.Models/N3DS/ContentChunkRecord.cs b/SabreTools.Models/N3DS/ContentChunkRecord.cs
deleted file mode 100644
index 5fd8b6d..0000000
--- a/SabreTools.Models/N3DS/ContentChunkRecord.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// There is one of these for each content contained in this title.
- /// (Determined by "Content Count" in the TMD Header).
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class ContentChunkRecord
- {
- ///
- /// Content id
- ///
- public uint ContentId;
-
- ///
- /// Content index
- ///
- ///
- /// This does not apply to DLC.
- ///
- public ContentIndex ContentIndex;
-
- ///
- /// Content type
- ///
- public TMDContentType ContentType;
-
- ///
- /// Content size
- ///
- public ulong ContentSize;
-
- ///
- /// SHA-256 hash
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? SHA256Hash;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/N3DS/ContentInfoRecord.cs b/SabreTools.Models/N3DS/ContentInfoRecord.cs
deleted file mode 100644
index 6f64b9f..0000000
--- a/SabreTools.Models/N3DS/ContentInfoRecord.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// There are 64 of these records, usually only the first is used.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class ContentInfoRecord
- {
- ///
- /// Content index offset
- ///
- public ushort ContentIndexOffset;
-
- ///
- /// Content command count [k]
- ///
- public ushort ContentCommandCount;
-
- ///
- /// SHA-256 hash of the next k content records that have not been hashed yet
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? UnhashedContentRecordsSHA256Hash;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/N3DS/DevelopmentCardInfoHeader.cs b/SabreTools.Models/N3DS/DevelopmentCardInfoHeader.cs
deleted file mode 100644
index b4371f8..0000000
--- a/SabreTools.Models/N3DS/DevelopmentCardInfoHeader.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class DevelopmentCardInfoHeader
- {
- ///
- /// CardDeviceReserved1
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? CardDeviceReserved1;
-
- ///
- /// TitleKey
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? TitleKey;
-
- ///
- /// CardDeviceReserved2
- ///
- /// 0x1BF0 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x1BF0)]
- public byte[]? CardDeviceReserved2;
-
- ///
- /// TestData
- ///
- public TestData? TestData;
- }
-}
diff --git a/SabreTools.Models/N3DS/Enums.cs b/SabreTools.Models/N3DS/Enums.cs
deleted file mode 100644
index 5d3ca16..0000000
--- a/SabreTools.Models/N3DS/Enums.cs
+++ /dev/null
@@ -1,229 +0,0 @@
-using System;
-
-namespace SabreTools.Models.N3DS
-{
- [Flags]
- public enum ARM9AccessControlDescriptors : byte
- {
- MountNandRoot = 0x01,
- MountNandroWriteAccess = 0x02,
- MountTwlnRoot = 0x04,
- MountWnandRoot = 0x08,
- MountCardSPI = 0x0F,
- UseSDIF3 = 0x10,
- CreateSeed = 0x20,
- UseCardSPI = 0x40,
- SDApplication = 0x80,
- MountSdmcWriteAccess = 0xF0,
- }
-
- [Flags]
- public enum ARM11LSCFlag0 : byte
- {
- IdealProcessor = 0x01 | 0x02,
-
- AffinityMask = 0x04 | 0x08,
-
- ///
- /// Value Description
- /// 0 Prod (64MB of usable application memory)
- /// 1 Undefined (unusable)
- /// 2 Dev1 (96MB of usable application memory)
- /// 3 Dev2 (80MB of usable application memory)
- /// 4 Dev3 (72MB of usable application memory)
- /// 5 Dev4 (32MB of usable application memory)
- /// 6-7 Undefined Same as Prod?
- ///
- Old3DSSystemMode = 0x0F | 0x10 | 0x20 | 0x40,
- }
-
- [Flags]
- public enum ARM11LSCFlag1 : byte
- {
- EnableL2Cache = 0x01,
- Cpuspeed_804MHz = 0x02,
- }
-
- [Flags]
- public enum ARM11LSCFlag2 : byte
- {
- ///
- /// Value Description
- /// 0 Legacy (use Old3DS system mode)
- /// 1 Prod (124MB of usable application memory)
- /// 2 Dev1 (178MB of usable application memory)
- /// 3 Dev2 (124MB of usable application memory)
- /// 4-7 Undefined Same as Prod?
- ///
- New3DSSystemMode = 0x01 | 0x02 | 0x04 | 0x08,
- }
-
- [Flags]
- public enum BitMasks : byte
- {
- FixedCryptoKey = 0x01,
- NoMountRomFs = 0x02,
- NoCrypto = 0x04,
- NewKeyYGenerator = 0x20,
- }
-
- public enum ContentIndex : ushort
- {
- ///
- /// Main Content (.CXI for 3DS executable content/.CFA for 3DS Data Archives/.SRL for TWL content)
- ///
- MainContent = 0x0000,
-
- ///
- /// Home Menu Manual (.CFA)
- ///
- HomeMenuManual = 0x0001,
-
- ///
- /// DLP Child Container (.CFA)
- ///
- DLPChildContainer = 0x0002,
- }
-
- public enum ContentPlatform : byte
- {
- CTR = 0x01,
- Snake = 0x02, // New3DS
- }
-
- [Flags]
- public enum ContentType : byte
- {
- Data = 0x01,
- Executable = 0x02,
- SystemUpdate = 0x04,
- Manual = 0x08,
- Child = 0x04 | 0x08,
- Trial = 0x10,
- }
-
- public enum CryptoMethod : byte
- {
- Original = 0x00,
- Seven = 0x01,
- NineThree = 0x0A,
- NineSix = 0x0B,
- }
-
- [Flags]
- public enum FilesystemAccessInfo : ulong
- {
- CategorySystemApplication = 0x1,
- CategoryHardwareCheck = 0x2,
- CategoryFilesystemTool = 0x4,
- Debug = 0x8,
- TWLCardBackup = 0x10,
- TWLNANDData = 0x20,
- BOSS = 0x40,
- sdmcRoot = 0x80,
- Core = 0x100,
- nandRootroReadOnly = 0x200,
- nandRootrw = 0x400,
- nandrootroWriteAccess = 0x800,
- CategorySystemSettings = 0x1000,
- Cardboard = 0x2000,
- ExportImportIVS = 0x4000,
- sdmcRootWriteOnly = 0x8000,
- SwitchCleanup = 0x10000, // Introduced in 3.0.0?
- SavedataMove = 0x20000, // Introduced in 5.0.0
- Shop = 0x40000, // Introduced in 5.0.0
- Shell = 0x80000, // Introduced in 5.0.0
- CategoryHomeMenu = 0x100000, // Introduced in 6.0.0
- SeedDB = 0x200000, // Introduced in 9.6.0-X FIRM. Home Menu has this bit set starting with 9.6.0-X.
- }
-
- public enum FilesystemType : ulong
- {
- None = 0,
- Normal = 1,
- FIRM = 3,
- AGB_FIRMSave = 4,
- }
-
- public enum MediaCardDeviceType : byte
- {
- NORFlash = 0x01,
- None = 0x02,
- BT = 0x03,
- }
-
- public enum MediaPlatformIndex : byte
- {
- CTR = 0x01,
- }
-
- public enum MediaTypeIndex : byte
- {
- InnerDevice = 0x00,
- Card1 = 0x01,
- Card2 = 0x02,
- ExtendedDevice = 0x03,
- }
-
- public enum NCCHFlags
- {
- CryptoMethod = 0x03,
- ContentPlatform = 0x04,
- ContentTypeBitMask = 0x05,
- ContentUnitSize = 0x06,
- BitMasks = 0x07,
- }
-
- public enum NCSDFlags
- {
- BackupWriteWaitTime = 0x00,
- MediaCardDevice3X = 0x03,
- MediaPlatformIndex = 0x04,
- MediaTypeIndex = 0x05,
- MediaUnitSize = 0x06,
- MediaCardDevice2X = 0x07,
- }
-
- public enum PublicKeyType : uint
- {
- RSA_4096 = 0x00000000,
- RSA_2048 = 0x01000000,
- EllipticCurve = 0x02000000,
- }
-
- public enum ResourceLimitCategory : byte
- {
- APPLICATION = 0,
- SYS_APPLET = 1,
- LIB_APPLET = 2,
- OTHER = 3,
- }
-
- // Note: These are reversed because of how C# reads values
- public enum SignatureType : uint
- {
- RSA_4096_SHA1 = 0x00000100,
- RSA_2048_SHA1 = 0x01000100,
- ECDSA_SHA1 = 0x02000100,
- RSA_4096_SHA256 = 0x03000100,
- RSA_2048_SHA256 = 0x04000100,
- ECDSA_SHA256 = 0x05000100,
- }
-
- [Flags]
- public enum StorageInfoOtherAttributes : byte
- {
- NotUseROMFS = 0x01,
- UseExtendedSavedataAccess = 0x02,
- }
-
- [Flags]
- public enum TMDContentType : ushort
- {
- Encrypted = 0x0001,
- Disc = 0x0002,
- CFM = 0x0004,
- Optional = 0x4000,
- Shared = 0x8000,
- }
-}
diff --git a/SabreTools.Models/N3DS/ExeFSFileHeader.cs b/SabreTools.Models/N3DS/ExeFSFileHeader.cs
deleted file mode 100644
index cdf8100..0000000
--- a/SabreTools.Models/N3DS/ExeFSFileHeader.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// There are a maximum of 10 file headers in the ExeFS format. (This maximum
- /// number of file headers is disputable, with makerom indicating a maximum of
- /// 8 sections and makecia indicating a maximum of 10. From a non-SDK point of
- /// view, the ExeFS header format can hold no more than 10 file headers within
- /// the currently define size of 0x200 bytes.)
- ///
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
- public sealed class ExeFSFileHeader
- {
- ///
- /// File name
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
- public string? FileName;
-
- ///
- /// File offset
- ///
- public uint FileOffset;
-
- ///
- /// File size
- ///
- public uint FileSize;
- }
-}
diff --git a/SabreTools.Models/N3DS/ExeFSHeader.cs b/SabreTools.Models/N3DS/ExeFSHeader.cs
deleted file mode 100644
index feb047d..0000000
--- a/SabreTools.Models/N3DS/ExeFSHeader.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// ExeFS or Executable Filesystem contains information related to the
- /// executable program, and is the part of the CXI format.
- ///
- /// The ExeFS usually contains one or more of the following files:
- /// - .code Contains the code binary, which can be optionally reverse-LZSS compressed via an exheader flag.
- /// - logo Contains distribution licensing Binary data.
- /// - banner Contains the banner which homemenu uses for this CXI.
- /// - icon Contains the icon which homemenu displays for this CXI.
- ///
- ///
- public sealed class ExeFSHeader
- {
- ///
- /// File headers (10 headers maximum, 16 bytes each)
- ///
- public ExeFSFileHeader[]? FileHeaders { get; set; }
-
- ///
- /// Reserved
- ///
- /// 0x20 bytes
- public byte[]? Reserved { get; set; }
-
- ///
- /// File hashes (10 hashes maximum, 32 bytes each, one for each header)
- ///
- /// SHA-256 hashes
- public byte[][]? FileHashes { get; set; }
- }
-}
diff --git a/SabreTools.Models/N3DS/InitialData.cs b/SabreTools.Models/N3DS/InitialData.cs
deleted file mode 100644
index 065a743..0000000
--- a/SabreTools.Models/N3DS/InitialData.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class InitialData
- {
- ///
- /// Card seed keyY (first u64 is Media ID (same as first NCCH partitionId))
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? CardSeedKeyY;
-
- ///
- /// Encrypted card seed (AES-CCM, keyslot 0x3B for retail cards, see CTRCARD_SECSEED)
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? EncryptedCardSeed;
-
- ///
- /// Card seed AES-MAC
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? CardSeedAESMAC;
-
- ///
- /// Card seed nonce
- ///
- /// 0x0C bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0C)]
- public byte[]? CardSeedNonce;
-
- ///
- /// Reserved3
- ///
- /// 0xC4 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xC4)]
- public byte[]? Reserved;
-
- ///
- /// Copy of first NCCH header (excluding RSA signature)
- ///
- public NCCHHeader? BackupHeader;
- }
-}
diff --git a/SabreTools.Models/N3DS/MetaData.cs b/SabreTools.Models/N3DS/MetaData.cs
deleted file mode 100644
index f84545e..0000000
--- a/SabreTools.Models/N3DS/MetaData.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class MetaData
- {
- ///
- /// Title ID dependency list - Taken from the application's ExHeader
- ///
- /// TODO: Determine numeric format of each entry
- /// 0x180 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x180)]
- public byte[]? TitleIDDependencyList;
-
- ///
- /// Reserved
- ///
- /// 0x180 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x180)]
- public byte[]? Reserved1;
-
- ///
- /// Core Version
- ///
- public uint CoreVersion;
-
- ///
- /// Reserved
- ///
- /// 0xFC bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xFC)]
- public byte[]? Reserved2;
-
- ///
- /// Icon Data(.ICN) - Taken from the application's ExeFS
- ///
- /// 0x36C0 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x36C0)]
- public byte[]? IconData;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/N3DS/NCCHExtendedHeader.cs b/SabreTools.Models/N3DS/NCCHExtendedHeader.cs
deleted file mode 100644
index a9a00a7..0000000
--- a/SabreTools.Models/N3DS/NCCHExtendedHeader.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// The exheader has two sections:
- /// - The actual exheader data, containing System Control Info (SCI) and Access Control Info (ACI);
- /// - A signed copy of NCCH HDR public key, and exheader ACI. This version of the ACI is used as limitation to the actual ACI.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class NCCHExtendedHeader
- {
- ///
- /// SCI
- ///
- public SystemControlInfo? SCI;
-
- ///
- /// ACI
- ///
- public AccessControlInfo? ACI;
-
- ///
- /// AccessDesc signature (RSA-2048-SHA256)
- ///
- /// 0x100 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
- public byte[]? AccessDescSignature;
-
- ///
- /// NCCH HDR RSA-2048 public key
- ///
- /// 0x100 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
- public byte[]? NCCHHDRPublicKey;
-
- ///
- /// ACI (for limitation of first ACI)
- ///
- public AccessControlInfo? ACIForLimitations;
- }
-}
diff --git a/SabreTools.Models/N3DS/NCCHHeader.cs b/SabreTools.Models/N3DS/NCCHHeader.cs
deleted file mode 100644
index cf41fd7..0000000
--- a/SabreTools.Models/N3DS/NCCHHeader.cs
+++ /dev/null
@@ -1,177 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
- public sealed class NCCHHeader
- {
- ///
- /// RSA-2048 signature of the NCCH header, using SHA-256.
- ///
- /// 0x100 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
- public byte[]? RSA2048Signature;
-
- ///
- /// Magic ID, always 'NCCH'
- ///
- /// 4 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
- public string? MagicID;
-
- ///
- /// Content size, in media units (1 media unit = 0x200 bytes)
- ///
- public uint ContentSizeInMediaUnits;
-
- ///
- /// Partition ID
- ///
- public ulong PartitionId;
-
- ///
- /// Maker code
- ///
- public ushort MakerCode;
-
- ///
- /// Version
- ///
- public ushort Version;
-
- ///
- /// When ncchflag[7] = 0x20 starting with FIRM 9.6.0-X, this is compared with the first output u32 from a
- /// SHA256 hash. The data used for that hash is 0x18-bytes: [0x10-long title-unique content lock seed]
- /// [programID from NCCH + 0x118]. This hash is only used for verification of the content lock seed, and
- /// is not the actual keyY.
- ///
- public uint VerificationHash;
-
- ///
- /// Program ID
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? ProgramId;
-
- ///
- /// Reserved
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? Reserved1;
-
- ///
- /// Logo Region SHA-256 hash. (For applications built with SDK 5+) (Supported from firmware: 5.0.0-11)
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? LogoRegionHash;
-
- ///
- /// Product code
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x10)]
- public string? ProductCode;
-
- ///
- /// Extended header SHA-256 hash (SHA256 of 2x Alignment Size, beginning at 0x0 of ExHeader)
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? ExtendedHeaderHash;
-
- ///
- /// Extended header size, in bytes
- ///
- public uint ExtendedHeaderSizeInBytes;
-
- ///
- /// Reserved
- ///
- public uint Reserved2;
-
- ///
- /// Flags
- ///
- public NCCHHeaderFlags? Flags;
-
- ///
- /// Plain region offset, in media units
- ///
- public uint PlainRegionOffsetInMediaUnits;
-
- ///
- /// Plain region size, in media units
- ///
- public uint PlainRegionSizeInMediaUnits;
-
- ///
- /// Logo Region offset, in media units (For applications built with SDK 5+) (Supported from firmware: 5.0.0-11)
- ///
- public uint LogoRegionOffsetInMediaUnits;
-
- ///
- /// Logo Region size, in media units (For applications built with SDK 5+) (Supported from firmware: 5.0.0-11)
- ///
- public uint LogoRegionSizeInMediaUnits;
-
- ///
- /// ExeFS offset, in media units
- ///
- public uint ExeFSOffsetInMediaUnits;
-
- ///
- /// ExeFS size, in media units
- ///
- public uint ExeFSSizeInMediaUnits;
-
- ///
- /// ExeFS hash region size, in media units
- ///
- public uint ExeFSHashRegionSizeInMediaUnits;
-
- ///
- /// Reserved
- ///
- public uint Reserved3;
-
- ///
- /// RomFS offset, in media units
- ///
- public uint RomFSOffsetInMediaUnits;
-
- ///
- /// RomFS size, in media units
- ///
- public uint RomFSSizeInMediaUnits;
-
- ///
- /// RomFS hash region size, in media units
- ///
- public uint RomFSHashRegionSizeInMediaUnits;
-
- ///
- /// Reserved
- ///
- public uint Reserved4;
-
- ///
- /// ExeFS superblock SHA-256 hash - (SHA-256 hash, starting at 0x0 of the ExeFS over the number of
- /// media units specified in the ExeFS hash region size)
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? ExeFSSuperblockHash;
-
- ///
- /// RomFS superblock SHA-256 hash - (SHA-256 hash, starting at 0x0 of the RomFS over the number
- /// of media units specified in the RomFS hash region size)
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? RomFSSuperblockHash;
- }
-}
diff --git a/SabreTools.Models/N3DS/NCCHHeaderFlags.cs b/SabreTools.Models/N3DS/NCCHHeaderFlags.cs
deleted file mode 100644
index 266537b..0000000
--- a/SabreTools.Models/N3DS/NCCHHeaderFlags.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class NCCHHeaderFlags
- {
- ///
- /// Reserved
- ///
- public byte Reserved0;
-
- ///
- /// Reserved
- ///
- public byte Reserved1;
-
- ///
- /// Reserved
- ///
- public byte Reserved2;
-
- ///
- /// Crypto Method: When this is non-zero, a NCCH crypto method using two keyslots is used.
- ///
- [MarshalAs(UnmanagedType.U1)]
- public CryptoMethod CryptoMethod;
-
- ///
- /// Content Platform: 1 = CTR, 2 = snake (New 3DS).
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ContentPlatform ContentPlatform;
-
- ///
- /// Content Type Bit-masks: Data = 0x1, Executable = 0x2, SystemUpdate = 0x4, Manual = 0x8,
- /// Child = (0x4|0x8), Trial = 0x10. When 'Data' is set, but not 'Executable', NCCH is a CFA.
- /// Otherwise when 'Executable' is set, NCCH is a CXI.
- ///
- [MarshalAs(UnmanagedType.U1)]
- public ContentType MediaPlatformIndex;
-
- ///
- /// Content Unit Size i.e. u32 ContentUnitSize = 0x200*2^flags[6];
- ///
- public byte ContentUnitSize;
-
- ///
- /// Bit-masks: FixedCryptoKey = 0x1, NoMountRomFs = 0x2, NoCrypto = 0x4, using a new keyY
- /// generator = 0x20(starting with FIRM 9.6.0-X).
- ///
- [MarshalAs(UnmanagedType.U1)]
- public BitMasks BitMasks;
- }
-}
diff --git a/SabreTools.Models/N3DS/NCSDHeader.cs b/SabreTools.Models/N3DS/NCSDHeader.cs
deleted file mode 100644
index 302cdf4..0000000
--- a/SabreTools.Models/N3DS/NCSDHeader.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// There are two known specialisations of the NCSD container format:
- /// - The CTR Cart Image (CCI) format, the 3DS' raw NAND format
- /// - CCI is the format of game ROM images.
- ///
- /// CTR System Update (CSU) is a variant of CCI, where the only difference
- /// is in the file extension.
- ///
- ///
- public sealed class NCSDHeader
- {
- #region Common to all NCSD files
-
- ///
- /// RSA-2048 SHA-256 signature of the NCSD header
- ///
- public byte[]? RSA2048Signature { get; set; }
-
- ///
- /// Magic Number 'NCSD'
- ///
- public string? MagicNumber { get; set; }
-
- ///
- /// Size of the NCSD image, in media units (1 media unit = 0x200 bytes)
- ///
- public uint ImageSizeInMediaUnits { get; set; }
-
- ///
- /// Media ID
- ///
- public byte[]? MediaId { get; set; }
-
- ///
- /// Partitions FS type (0=None, 1=Normal, 3=FIRM, 4=AGB_FIRM save)
- ///
- public FilesystemType PartitionsFSType { get; set; }
-
- ///
- /// Partitions crypt type (each byte corresponds to a partition in the partition table)
- ///
- public byte[]? PartitionsCryptType { get; set; }
-
- ///
- /// Offset & Length partition table, in media units
- ///
- public PartitionTableEntry[]? PartitionsTable { get; set; }
-
- #endregion
-
- #region CTR Cart Image (CCI) Specific
-
- ///
- /// Exheader SHA-256 hash
- ///
- public byte[]? ExheaderHash { get; set; }
-
- ///
- /// Additional header size
- ///
- public uint AdditionalHeaderSize { get; set; }
-
- ///
- /// Sector zero offset
- ///
- public uint SectorZeroOffset { get; set; }
-
- ///
- /// Partition Flags
- ///
- public byte[]? PartitionFlags { get; set; }
-
- ///
- /// Partition ID table
- ///
- public ulong[]? PartitionIdTable { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved1 { get; set; }
-
- ///
- /// Reserved?
- ///
- public byte[]? Reserved2 { get; set; }
-
- ///
- /// Support for this was implemented with 9.6.0-X FIRM. Bit0=1 enables using bits 1-2, it's unknown
- /// what these two bits are actually used for(the value of these two bits get compared with some other
- /// value during NCSD verification/loading). This appears to enable a new, likely hardware-based,
- /// antipiracy check on cartridges.
- ///
- public byte FirmUpdateByte1 { get; set; }
-
- ///
- /// Support for this was implemented with 9.6.0-X FIRM, see below regarding save crypto.
- ///
- public byte FirmUpdateByte2 { get; set; }
-
- #endregion
-
- #region Raw NAND Format Specific
-
- ///
- /// Unknown
- ///
- public byte[]? Unknown { get; set; }
-
- ///
- /// Encrypted MBR partition-table, for the TWL partitions(key-data used for this keyslot is console-unique).
- ///
- public byte[]? EncryptedMBR { get; set; }
-
- #endregion
- }
-}
diff --git a/SabreTools.Models/N3DS/PartitionTableEntry.cs b/SabreTools.Models/N3DS/PartitionTableEntry.cs
deleted file mode 100644
index 17cd573..0000000
--- a/SabreTools.Models/N3DS/PartitionTableEntry.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// Offset and Length partition table, in media units
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class PartitionTableEntry
- {
- ///
- /// Offset
- ///
- public uint Offset;
-
- ///
- /// Length
- ///
- public uint Length;
- }
-}
diff --git a/SabreTools.Models/N3DS/RomFSHeader.cs b/SabreTools.Models/N3DS/RomFSHeader.cs
deleted file mode 100644
index bfb7e55..0000000
--- a/SabreTools.Models/N3DS/RomFSHeader.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// RomFS (or Read-Only Filesystem) is part of the NCCH format, and is
- /// used as external file storage.
- ///
- ///
- /// TODO: Implement the other parts of the RomFS tree structure
-
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
- public sealed class RomFSHeader
- {
- ///
- /// Magic "IVFC"
- ///
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
- public string? MagicString;
-
- ///
- /// Magic number 0x10000
- ///
- public uint MagicNumber;
-
- ///
- /// Master hash size
- ///
- public uint MasterHashSize;
-
- ///
- /// Level 1 logical offset
- ///
- public ulong Level1LogicalOffset;
-
- ///
- /// Level 1 hashdata size
- ///
- public ulong Level1HashdataSize;
-
- ///
- /// Level 1 block size, in log2
- ///
- public uint Level1BlockSizeLog2;
-
- ///
- /// Reserved
- ///
- public uint Reserved1;
-
- ///
- /// Level 2 logical offset
- ///
- public ulong Level2LogicalOffset;
-
- ///
- /// Level 2 hashdata size
- ///
- public ulong Level2HashdataSize;
-
- ///
- /// Level 2 block size, in log2
- ///
- public uint Level2BlockSizeLog2;
-
- ///
- /// Reserved
- ///
- public uint Reserved2;
-
- ///
- /// Level 3 logical offset
- ///
- public ulong Level3LogicalOffset;
-
- ///
- /// Level 3 hashdata size
- ///
- public ulong Level3HashdataSize;
-
- ///
- /// Level 3 block size, in log2
- ///
- public uint Level3BlockSizeLog2;
-
- ///
- /// Reserved
- ///
- public uint Reserved3;
-
- ///
- /// Reserved
- ///
- public uint Reserved4;
-
- ///
- /// Optional info size.
- ///
- public uint OptionalInfoSize;
- }
-}
diff --git a/SabreTools.Models/N3DS/StorageInfo.cs b/SabreTools.Models/N3DS/StorageInfo.cs
deleted file mode 100644
index 0a9f752..0000000
--- a/SabreTools.Models/N3DS/StorageInfo.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// Used in FSReg:Register.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class StorageInfo
- {
- ///
- /// Extdata ID
- ///
- public ulong ExtdataID;
-
- ///
- /// System savedata IDs
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? SystemSavedataIDs;
-
- ///
- /// Storage accessible unique IDs
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? StorageAccessibleUniqueIDs;
-
- ///
- /// Filesystem access info
- ///
- /// TODO: Create enum for the flag values
- /// TODO: Combine with "other attributes"
- /// 7 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
- public byte[]? FileSystemAccessInfo;
-
- ///
- /// Other attributes
- ///
- [MarshalAs(UnmanagedType.U1)]
- public StorageInfoOtherAttributes OtherAttributes;
- }
-}
diff --git a/SabreTools.Models/N3DS/SystemControlInfo.cs b/SabreTools.Models/N3DS/SystemControlInfo.cs
deleted file mode 100644
index abcbecf..0000000
--- a/SabreTools.Models/N3DS/SystemControlInfo.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
- public sealed class SystemControlInfo
- {
- ///
- /// Application title (default is "CtrApp")
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
- public string? ApplicationTitle;
-
- ///
- /// Reserved
- ///
- /// 5 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
- public byte[]? Reserved1;
-
- ///
- /// Flag (bit 0: CompressExefsCode, bit 1: SDApplication)
- ///
- public byte Flag;
-
- ///
- /// Remaster version
- ///
- public ushort RemasterVersion;
-
- ///
- /// Text code set info
- ///
- public CodeSetInfo? TextCodeSetInfo;
-
- ///
- /// Stack size
- ///
- public uint StackSize;
-
- ///
- /// Read-only code set info
- ///
- public CodeSetInfo? ReadOnlyCodeSetInfo;
-
- ///
- /// Reserved
- ///
- public uint Reserved2;
-
- ///
- /// Data code set info
- ///
- public CodeSetInfo? DataCodeSetInfo;
-
- ///
- /// BSS size
- ///
- public uint BSSSize;
-
- ///
- /// Dependency module (program ID) list
- ///
- /// 48 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
- public ulong[]? DependencyModuleList;
-
- ///
- /// SystemInfo
- ///
- public SystemInfo? SystemInfo;
- }
-}
diff --git a/SabreTools.Models/N3DS/SystemInfo.cs b/SabreTools.Models/N3DS/SystemInfo.cs
deleted file mode 100644
index 8d43af6..0000000
--- a/SabreTools.Models/N3DS/SystemInfo.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class SystemInfo
- {
- ///
- /// SaveData Size
- ///
- public ulong SaveDataSize;
-
- ///
- /// Jump ID
- ///
- public ulong JumpID;
-
- ///
- /// Reserved
- ///
- /// 0x30 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x30)]
- public byte[]? Reserved;
- }
-}
diff --git a/SabreTools.Models/N3DS/TestData.cs b/SabreTools.Models/N3DS/TestData.cs
deleted file mode 100644
index 6c8770b..0000000
--- a/SabreTools.Models/N3DS/TestData.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.N3DS
-{
- ///
- /// The test data is the same one encountered in development DS/DSi cartridges.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class TestData
- {
- ///
- /// The bytes FF 00 FF 00 AA 55 AA 55.
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? Signature;
-
- ///
- /// An ascending byte sequence equal to the offset mod 256 (08 09 0A ... FE FF 00 01 ... FF).
- ///
- /// 0x1F8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x1F8)]
- public byte[]? AscendingByteSequence;
-
- ///
- /// A descending byte sequence equal to 255 minus the offset mod 256 (FF FE FD ... 00 FF DE ... 00).
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? DescendingByteSequence;
-
- ///
- /// Filled with 00 (0b00000000) bytes.
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? Filled00;
-
- ///
- /// Filled with FF (0b11111111) bytes.
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? FilledFF;
-
- ///
- /// Filled with 0F (0b00001111) bytes.
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? Filled0F;
-
- ///
- /// Filled with F0 (0b11110000) bytes.
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? FilledF0;
-
- ///
- /// Filled with 55 (0b01010101) bytes.
- ///
- /// 0x200 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x200)]
- public byte[]? Filled55;
-
- ///
- /// Filled with AA (0b10101010) bytes.
- ///
- /// 0x1FF bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x1FF)]
- public byte[]? FilledAA;
-
- ///
- /// The final byte is 00 (0b00000000).
- ///
- public byte FinalByte;
- }
-}
diff --git a/SabreTools.Models/N3DS/Ticket.cs b/SabreTools.Models/N3DS/Ticket.cs
deleted file mode 100644
index 2bc3df4..0000000
--- a/SabreTools.Models/N3DS/Ticket.cs
+++ /dev/null
@@ -1,178 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// A format used to store an encrypted titlekey (using 128-Bit AES-CBC).
- /// With 3DS, the Ticket format was updated (now v1) from Wii/DSi format (v0).
- ///
- ///
- public sealed class Ticket
- {
- ///
- /// Signature Type
- ///
- public SignatureType SignatureType { get; set; }
-
- ///
- /// Signature size
- ///
- public ushort SignatureSize { get; set; }
-
- ///
- /// Padding size
- ///
- public byte PaddingSize { get; set; }
-
- ///
- /// Signature
- ///
- public byte[]? Signature { get; set; }
-
- ///
- /// Padding
- ///
- public byte[]? Padding { get; set; }
-
- ///
- /// Issuer
- ///
- public string? Issuer { get; set; }
-
- ///
- /// ECC PublicKey
- ///
- public byte[]? ECCPublicKey { get; set; }
-
- ///
- /// Version (For 3DS this is always 1)
- ///
- public byte Version { get; set; }
-
- ///
- /// CaCrlVersion
- ///
- public byte CaCrlVersion { get; set; }
-
- ///
- /// SignerCrlVersion
- ///
- public byte SignerCrlVersion { get; set; }
-
- ///
- /// TitleKey (normal-key encrypted using one of the common keyYs; see below)
- ///
- ///
- /// The titlekey is decrypted by using the AES engine with the ticket common-key keyslot.
- /// The keyY is selected through an index (ticket offset 0xB1) into a plaintext array
- /// of 6 keys ("common keyYs") stored in the data section of Process9. AES-CBC mode is used
- /// where the IV is the big-endian titleID. Note that on a retail unit index0 is a retail keyY,
- /// while on a dev-unit index0 is the dev common-key which is a normal-key.
- /// (On retail for these keyYs, the hardware key-scrambler is used)
- ///
- /// The titlekey is used to decrypt content downloaded from the CDN using 128-bit AES-CBC with
- /// the content index (as big endian u16, padded with trailing zeroes) as the IV.
- ///
- public byte[]? TitleKey { get; set; }
-
- ///
- /// Reserved
- ///
- public byte Reserved1 { get; set; }
-
- ///
- /// TicketID
- ///
- public ulong TicketID { get; set; }
-
- ///
- /// ConsoleID
- ///
- public uint ConsoleID { get; set; }
-
- ///
- /// TitleID
- ///
- public ulong TitleID { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved2 { get; set; }
-
- ///
- /// Ticket title version
- ///
- ///
- /// The Ticket Title Version is generally the same as the title version stored in the
- /// Title Metadata. Although it doesn't have to match the TMD version to be valid.
- ///
- public ushort TicketTitleVersion { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved3 { get; set; }
-
- ///
- /// License Type
- ///
- public byte LicenseType { get; set; }
-
- ///
- /// Index to the common keyY used for this ticket, usually 0x1 for retail system titles
- ///
- public byte CommonKeyYIndex { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved4 { get; set; }
-
- ///
- /// eShop Account ID?
- ///
- public uint eShopAccountID { get; set; }
-
- ///
- /// Reserved
- ///
- public byte Reserved5 { get; set; }
-
- ///
- /// Audit
- ///
- public byte Audit { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved6 { get; set; }
-
- ///
- /// Limits
- ///
- ///
- /// In demos, the first u32 in the "Limits" section is 0x4, then the second u32 is the max-playcount.
- ///
- public uint[]? Limits { get; set; }
-
- ///
- /// The Content Index of a ticket has its own size defined within itself,
- /// with seemingly a minimal of 20 bytes, the second u32 in big endian defines
- /// the full value of X.
- ///
- public uint ContentIndexSize { get; set; }
-
- ///
- /// Content Index
- ///
- public byte[]? ContentIndex { get; set; }
-
- ///
- /// Certificate chain
- ///
- ///
- /// https://www.3dbrew.org/wiki/Ticket#Certificate_Chain
- ///
- public Certificate[]? CertificateChain { get; set; }
- }
-}
diff --git a/SabreTools.Models/N3DS/TitleMetadata.cs b/SabreTools.Models/N3DS/TitleMetadata.cs
deleted file mode 100644
index 1cbeaab..0000000
--- a/SabreTools.Models/N3DS/TitleMetadata.cs
+++ /dev/null
@@ -1,155 +0,0 @@
-namespace SabreTools.Models.N3DS
-{
- ///
- /// A format used to store information about a title (installed title, DLC, etc.)
- /// and all its installed contents, including which contents they consist of and
- /// their SHA256 hashes.
- ///
- ///
- public sealed class TitleMetadata
- {
- ///
- /// Signature Type
- ///
- public SignatureType SignatureType { get; set; }
-
- ///
- /// Signature size
- ///
- public ushort SignatureSize { get; set; }
-
- ///
- /// Padding size
- ///
- public byte PaddingSize { get; set; }
-
- ///
- /// Signature
- ///
- public byte[]? Signature { get; set; }
-
- ///
- /// Padding
- ///
- public byte[]? Padding1 { get; set; }
-
- ///
- /// Signature Issuer
- ///
- public string? Issuer { get; set; }
-
- ///
- /// Version
- ///
- public byte Version { get; set; }
-
- ///
- /// CaCrlVersion
- ///
- public byte CaCrlVersion { get; set; }
-
- ///
- /// SignerCrlVersion
- ///
- public byte SignerCrlVersion { get; set; }
-
- ///
- /// Reserved
- ///
- public byte Reserved1 { get; set; }
-
- ///
- /// System Version
- ///
- public ulong SystemVersion { get; set; }
-
- ///
- /// TitleID
- ///
- public ulong TitleID { get; set; }
-
- ///
- /// Title Type
- ///
- public uint TitleType { get; set; }
-
- ///
- /// Group ID
- ///
- public ushort GroupID { get; set; }
-
- ///
- /// Save Data Size in Little Endian (Bytes) (Also SRL Public Save Data Size)
- ///
- public uint SaveDataSize { get; set; }
-
- ///
- /// SRL Private Save Data Size in Little Endian (Bytes)
- ///
- public uint SRLPrivateSaveDataSize { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved2 { get; set; }
-
- ///
- /// SRL Flag
- ///
- public byte SRLFlag { get; set; }
-
- ///
- /// Reserved
- ///
- public byte[]? Reserved3 { get; set; }
-
- ///
- /// Access Rights
- ///
- public uint AccessRights { get; set; }
-
- ///
- /// Title Version
- ///
- public ushort TitleVersion { get; set; }
-
- ///
- /// Content Count (big-endian)
- ///
- public ushort ContentCount { get; set; }
-
- ///
- /// Boot Content
- ///
- public ushort BootContent { get; set; }
-
- ///
- /// Padding
- ///
- public byte[]? Padding2 { get; set; }
-
- ///
- /// SHA-256 Hash of the Content Info Records
- ///
- public byte[]? SHA256HashContentInfoRecords { get; set; }
-
- ///
- /// There are 64 of these records, usually only the first is used.
- ///
- public ContentInfoRecord[]? ContentInfoRecords { get; set; }
-
- ///
- /// There is one of these for each content contained in this title.
- /// (Determined by "Content Count" in the TMD Header).
- ///
- public ContentChunkRecord[]? ContentChunkRecords { get; set; }
-
- ///
- /// Certificate chain
- ///
- ///
- /// https://www.3dbrew.org/wiki/Title_metadata#Certificate_Chain
- ///
- public Certificate[]? CertificateChain { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/Cart.cs b/SabreTools.Models/Nitro/Cart.cs
deleted file mode 100644
index 78f39d1..0000000
--- a/SabreTools.Models/Nitro/Cart.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace SabreTools.Models.Nitro
-{
- ///
- /// Represents a DS/DSi cart image
- ///
- public class Cart
- {
- ///
- /// DS/DSi cart header
- ///
- public CommonHeader? CommonHeader { get; set; }
-
- ///
- /// DSi extended cart header
- ///
- public ExtendedDSiHeader? ExtendedDSiHeader { get; set; }
-
- ///
- /// Secure area, may be encrypted or decrypted
- ///
- public byte[]? SecureArea { get; set; }
-
- ///
- /// Name table (folder allocation table, name list)
- ///
- public NameTable? NameTable { get; set; }
-
- ///
- /// File allocation table
- ///
- public FileAllocationTableEntry[]? FileAllocationTable { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/CommonHeader.cs b/SabreTools.Models/Nitro/CommonHeader.cs
deleted file mode 100644
index 5fad6b3..0000000
--- a/SabreTools.Models/Nitro/CommonHeader.cs
+++ /dev/null
@@ -1,232 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.Nitro
-{
- ///
- /// Nintendo DS / DSi cartridge header
- ///
- ///
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
- public sealed class CommonHeader
- {
- ///
- /// Game Title
- ///
- /// 12 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
- public string? GameTitle;
-
- ///
- /// Gamecode
- ///
- public uint GameCode;
-
- ///
- /// Makercode
- ///
- /// 2 bytes
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
- public string? MakerCode;
-
- ///
- /// Unitcode
- ///
- [MarshalAs(UnmanagedType.U1)]
- public Unitcode UnitCode;
-
- ///
- /// Encryption seed select (device code. 0 = normal)
- ///
- public byte EncryptionSeedSelect;
-
- ///
- /// Devicecapacity
- ///
- public byte DeviceCapacity;
-
- ///
- /// Reserved
- ///
- /// 7 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
- public byte[]? Reserved1;
-
- ///
- /// Game Revision (used by DSi titles)
- ///
- public ushort GameRevision;
-
- ///
- /// ROM Version
- ///
- public byte RomVersion;
-
- ///
- /// Internal flags, (Bit2: Autostart)
- ///
- public byte InternalFlags;
-
- ///
- /// ARM9 rom offset
- ///
- public uint ARM9RomOffset;
-
- ///
- /// ARM9 entry address
- ///
- public uint ARM9EntryAddress;
-
- ///
- /// ARM9 load address
- ///
- public uint ARM9LoadAddress;
-
- ///
- /// ARM9 size
- ///
- public uint ARM9Size;
-
- ///
- /// ARM7 rom offset
- ///
- public uint ARM7RomOffset;
-
- ///
- /// ARM7 entry address
- ///
- public uint ARM7EntryAddress;
-
- ///
- /// ARM7 load address
- ///
- public uint ARM7LoadAddress;
-
- ///
- /// ARM7 size
- ///
- public uint ARM7Size;
-
- ///
- /// File Name Table (FNT) offset
- ///
- public uint FileNameTableOffset;
-
- ///
- /// File Name Table (FNT) length
- ///
- public uint FileNameTableLength;
-
- ///
- /// File Allocation Table (FNT) offset
- ///
- public uint FileAllocationTableOffset;
-
- ///
- /// File Allocation Table (FNT) length
- ///
- public uint FileAllocationTableLength;
-
- ///
- /// File Name Table (FNT) offset
- ///
- public uint ARM9OverlayOffset;
-
- ///
- /// File Name Table (FNT) length
- ///
- public uint ARM9OverlayLength;
-
- ///
- /// File Name Table (FNT) offset
- ///
- public uint ARM7OverlayOffset;
-
- ///
- /// File Name Table (FNT) length
- ///
- public uint ARM7OverlayLength;
-
- ///
- /// Normal card control register settings (0x00416657 for OneTimePROM)
- ///
- public uint NormalCardControlRegisterSettings;
-
- ///
- /// Secure card control register settings (0x081808F8 for OneTimePROM)
- ///
- public uint SecureCardControlRegisterSettings;
-
- ///
- /// Icon Banner offset (NDSi same as NDS, but with new extra entries)
- ///
- public uint IconBannerOffset;
-
- ///
- /// Secure area (2K) CRC
- ///
- public ushort SecureAreaCRC;
-
- ///
- /// Secure transfer timeout (0x0D7E for OneTimePROM)
- ///
- public ushort SecureTransferTimeout;
-
- ///
- /// ARM9 autoload
- ///
- public uint ARM9Autoload;
-
- ///
- /// ARM7 autoload
- ///
- public uint ARM7Autoload;
-
- ///
- /// Secure disable
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? SecureDisable;
-
- ///
- /// NTR region ROM size (excluding DSi area)
- ///
- public uint NTRRegionRomSize;
-
- ///
- /// Header size
- ///
- public uint HeaderSize;
-
- ///
- /// Reserved (0x88, 0x8C, 0x90 = Unknown, used by DSi)
- ///
- /// 56 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 56)]
- public byte[]? Reserved2;
-
- ///
- /// Nintendo Logo
- ///
- /// 156 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 156)]
- public byte[]? NintendoLogo;
-
- ///
- /// Nintendo Logo CRC
- ///
- public ushort NintendoLogoCRC;
-
- ///
- /// Header CRC
- ///
- public ushort HeaderCRC;
-
- ///
- /// Debugger reserved
- ///
- /// 0x20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
- public byte[]? DebuggerReserved;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/Constants.cs b/SabreTools.Models/Nitro/Constants.cs
deleted file mode 100644
index 501e66a..0000000
--- a/SabreTools.Models/Nitro/Constants.cs
+++ /dev/null
@@ -1,368 +0,0 @@
-namespace SabreTools.Models.Nitro
-{
- public static class Constants
- {
- public const uint MAGIC30 = 0x72636E65;
-
- public const uint MAGIC34 = 0x6A624F79;
-
- #region Empty Secure Area
-
- public const uint EmptySecureAreaValue1 = 0x00000000;
-
- public const uint EmptySecureAreaValue2 = 0x00000000;
-
- #endregion
-
- #region Improperly Decrypted Secure Area
-
- public const uint ImproperlyDecrypted1Value1 = 0xE386C397;
-
- public const uint ImproperlyDecrypted1Value2 = 0x82775B7E;
-
- public const uint ImproperlyDecrypted2Value1 = 0xF98415B8;
-
- public const uint ImproperlyDecrypted2Value2 = 0x698068FC;
-
- public const uint ImproperlyDecrypted3Value1 = 0xA71329EE;
-
- public const uint ImproperlyDecrypted3Value2 = 0x2A1D4C38;
-
- public const uint ImproperlyDecrypted4Value1 = 0xC44DCC48;
-
- public const uint ImproperlyDecrypted4Value2 = 0x38B6F8CB;
-
- public const uint ImproperlyDecrypted5Value1 = 0x3A9323B5;
-
- public const uint ImproperlyDecrypted5Value2 = 0xC0387241;
-
- #endregion
-
- #region Improperly Encrypted Secure Area
-
- public const uint ImproperlyEncrypted1Value1 = 0x4BCE88BE;
-
- public const uint ImproperlyEncrypted1Value2 = 0xD3662DD1;
-
- public const uint ImproperlyEncrypted2Value1 = 0x2543C534;
-
- public const uint ImproperlyEncrypted2Value2 = 0xCC4BE38E;
-
- #endregion
-
- #region Properly Decrypted Non-Standard Secure Area (Mastering Issue)
-
- /// Dragon Quest 5 (EU)
- public const uint NonStandardDecrypted1Value1 = 0xD0D48B67;
-
- /// Dragon Quest 5 (EU)
- public const uint NonStandardDecrypted1Value2 = 0x39392F23;
-
- /// Dragon Quest 5 (USA)
- public const uint NonStandardDecrypted2Value1 = 0x014A191A;
-
- /// Dragon Quest 5 (USA)
- public const uint NonStandardDecrypted2Value2 = 0xA5C470B9;
-
- /// Dragon Quest 5 (JP)
- public const uint NonStandardDecrypted3Value1 = 0x7829BC8D;
-
- /// Dragon Quest 5 (JP)
- public const uint NonStandardDecrypted3Value2 = 0x9968EF44;
-
- /// Prince of Persia (EU)
- public const uint NonStandardDecrypted4Value1 = 0xC4A15AB8;
-
- /// Prince of Persia (EU)
- public const uint NonStandardDecrypted4Value2 = 0xD2E667C8;
-
- /// Prince of Persia (USA)
- public const uint NonStandardDecrypted5Value1 = 0xD5E97D20;
-
- /// Prince of Persia (USA)
- public const uint NonStandardDecrypted5Value2 = 0x21B2A159;
-
- #endregion
-
- #region Properly Decrypted Prototype Secure Area
-
- public const uint PrototypeDecryptedValue1 = 0xBA35F813;
-
- public const uint PrototypeDecryptedValue2 = 0xB691AAE8;
-
- #endregion
-
- #region Properly Decrypted Secure Area
-
- public const uint DecryptedValue1 = 0xE7FFDEFF;
-
- public const uint DecryptedValue2 = 0xE7FFDEFF;
-
- #endregion
-
- public static byte[] EncryptionData =
- [
- 0x99,0xD5,0x20,0x5F,0x57,0x44,0xF5,0xB9,0x6E,0x19,0xA4,0xD9,0x9E,0x6A,0x5A,0x94,
- 0xD8,0xAE,0xF1,0xEB,0x41,0x75,0xE2,0x3A,0x93,0x82,0xD0,0x32,0x33,0xEE,0x31,0xD5,
- 0xCC,0x57,0x61,0x9A,0x37,0x06,0xA2,0x1B,0x79,0x39,0x72,0xF5,0x55,0xAE,0xF6,0xBE,
- 0x5F,0x1B,0x69,0xFB,0xE5,0x9D,0xF1,0xE9,0xCE,0x2C,0xD9,0xA1,0x5E,0x32,0x05,0xE6,
- 0xFE,0xD3,0xFE,0xCF,0xD4,0x62,0x04,0x0D,0x8B,0xF5,0xEC,0xB7,0x2B,0x60,0x79,0xBB,
- 0x12,0x95,0x31,0x0D,0x6E,0x3F,0xDA,0x2B,0x88,0x84,0xF0,0xF1,0x3D,0x12,0x7E,0x25,
- 0x45,0x22,0xF1,0xBB,0x24,0x06,0x1A,0x06,0x11,0xAD,0xDF,0x28,0x8B,0x64,0x81,0x34,
- 0x2B,0xEB,0x33,0x29,0x99,0xAA,0xF2,0xBD,0x9C,0x14,0x95,0x9D,0x9F,0xF7,0xF5,0x8C,
- 0x72,0x97,0xA1,0x29,0x9D,0xD1,0x5F,0xCF,0x66,0x4D,0x07,0x1A,0xDE,0xD3,0x4A,0x4B,
- 0x85,0xC9,0xA7,0xA3,0x17,0x95,0x05,0x3A,0x3D,0x49,0x0A,0xBF,0x0A,0x89,0x8B,0xA2,
- 0x4A,0x82,0x49,0xDD,0x27,0x90,0xF1,0x0B,0xE9,0xEB,0x1C,0x6A,0x83,0x76,0x45,0x05,
- 0xBA,0x81,0x70,0x61,0x17,0x3F,0x4B,0xDE,0xAE,0xCF,0xAB,0x39,0x57,0xF2,0x3A,0x56,
- 0x48,0x11,0xAD,0x8A,0x40,0xE1,0x45,0x3F,0xFA,0x9B,0x02,0x54,0xCA,0xA6,0x93,0xFB,
- 0xEF,0x4D,0xFE,0x6F,0xA3,0xD8,0x87,0x9C,0x08,0xBA,0xD5,0x48,0x6A,0x8D,0x2D,0xFD,
- 0x6E,0x15,0xF8,0x74,0xBD,0xBE,0x52,0x8B,0x18,0x22,0x8A,0x9E,0xFB,0x74,0x37,0x07,
- 0x1B,0x36,0x6C,0x4A,0x19,0xBA,0x42,0x62,0xB9,0x79,0x91,0x10,0x7B,0x67,0x65,0x96,
- 0xFE,0x02,0x23,0xE8,0xEE,0x99,0x8C,0x77,0x3E,0x5C,0x86,0x64,0x4D,0x6D,0x78,0x86,
- 0xA5,0x4F,0x65,0xE2,0x1E,0xB2,0xDF,0x5A,0x0A,0xD0,0x7E,0x08,0x14,0xB0,0x71,0xAC,
- 0xBD,0xDB,0x83,0x1C,0xB9,0xD7,0xA1,0x62,0xCD,0xC6,0x63,0x7C,0x52,0x69,0xC3,0xE6,
- 0xBF,0x75,0xCE,0x12,0x44,0x5D,0x21,0x04,0xFA,0xFB,0xD3,0x3C,0x38,0x11,0x63,0xD4,
- 0x95,0x85,0x41,0x49,0x46,0x09,0xF2,0x08,0x43,0x11,0xDC,0x1F,0x76,0xC0,0x15,0x6D,
- 0x1F,0x3C,0x63,0x70,0xEA,0x87,0x80,0x6C,0xC3,0xBD,0x63,0x8B,0xC2,0x37,0x21,0x37,
- 0xDC,0xEE,0x09,0x23,0x2E,0x37,0x6A,0x4D,0x73,0x90,0xF7,0x50,0x30,0xAC,0x1C,0x92,
- 0x04,0x10,0x23,0x91,0x4F,0xD2,0x07,0xAA,0x68,0x3E,0x4F,0x9A,0xC9,0x64,0x60,0x6A,
- 0xC8,0x14,0x21,0xF3,0xD6,0x22,0x41,0x12,0x44,0x24,0xCF,0xE6,0x8A,0x56,0xDD,0x0D,
- 0x53,0x4D,0xE1,0x85,0x1E,0x8C,0x52,0x5A,0x9C,0x19,0x84,0xC2,0x03,0x57,0xF1,0x6F,
- 0xE3,0x00,0xBE,0x58,0xF6,0x4C,0xED,0xD5,0x21,0x64,0x9C,0x1F,0xBE,0x55,0x03,0x3C,
- 0x4A,0xDC,0xFF,0xAA,0xC9,0xDA,0xE0,0x5D,0x5E,0xBF,0xE6,0xDE,0xF5,0xD8,0xB1,0xF8,
- 0xFF,0x36,0xB3,0xB9,0x62,0x67,0x95,0xDB,0x31,0x5F,0x37,0xED,0x4C,0x70,0x67,0x99,
- 0x90,0xB5,0x18,0x31,0x6C,0x3D,0x99,0x99,0xE4,0x42,0xDA,0xD3,0x25,0x42,0x13,0xA0,
- 0xAE,0xD7,0x70,0x6C,0xB1,0x55,0xCF,0xC7,0xD7,0x46,0xD5,0x43,0x61,0x17,0x3D,0x44,
- 0x28,0xE9,0x33,0x85,0xD5,0xD0,0xA2,0x93,0xAA,0x25,0x12,0x1F,0xFB,0xC5,0x0B,0x46,
- 0xF5,0x97,0x76,0x56,0x45,0xA6,0xBE,0x87,0xB1,0x94,0x6B,0xE8,0xB1,0xFE,0x33,0x99,
- 0xAE,0x1F,0x3E,0x6C,0x39,0x71,0x1D,0x09,0x00,0x90,0x37,0xE4,0x10,0x3E,0x75,0x74,
- 0xFF,0x8C,0x83,0x3B,0xB0,0xF1,0xB0,0xF9,0x01,0x05,0x47,0x42,0x95,0xF1,0xD6,0xAC,
- 0x7E,0x38,0xE6,0x9E,0x95,0x74,0x26,0x3F,0xB4,0x68,0x50,0x18,0xD0,0x43,0x30,0xB4,
- 0x4C,0x4B,0xE3,0x68,0xBF,0xE5,0x4D,0xB6,0x95,0x8B,0x0A,0xA0,0x74,0x25,0x32,0x77,
- 0xCF,0xA1,0xF7,0x2C,0xD8,0x71,0x13,0x5A,0xAB,0xEA,0xC9,0x51,0xE8,0x0D,0xEE,0xEF,
- 0xE9,0x93,0x7E,0x19,0xA7,0x1E,0x43,0x38,0x81,0x16,0x2C,0xA1,0x48,0xE3,0x73,0xCC,
- 0x29,0x21,0x6C,0xD3,0x5D,0xCE,0xA0,0xD9,0x61,0x71,0x43,0xA0,0x15,0x13,0xB5,0x64,
- 0x92,0xCF,0x2A,0x19,0xDC,0xAD,0xB7,0xA5,0x9F,0x86,0x65,0xF8,0x1A,0x9F,0xE7,0xFB,
- 0xF7,0xFD,0xB8,0x13,0x6C,0x27,0xDB,0x6F,0xDF,0x35,0x1C,0xF7,0x8D,0x2C,0x5B,0x9B,
- 0x12,0xAB,0x38,0x64,0x06,0xCC,0xDE,0x31,0xE8,0x4E,0x75,0x11,0x64,0xE3,0xFA,0xEA,
- 0xEB,0x34,0x54,0xC2,0xAD,0x3F,0x34,0xEB,0x93,0x2C,0x7D,0x26,0x36,0x9D,0x56,0xF3,
- 0x5A,0xE1,0xF6,0xB3,0x98,0x63,0x4A,0x9E,0x32,0x83,0xE4,0x9A,0x84,0x60,0x7D,0x90,
- 0x2E,0x13,0x0E,0xEE,0x93,0x4B,0x36,0xA2,0x85,0xEC,0x16,0x38,0xE8,0x88,0x06,0x02,
- 0xBF,0xF0,0xA0,0x3A,0xED,0xD7,0x6A,0x9A,0x73,0xE1,0x57,0xCF,0xF8,0x44,0xB8,0xDC,
- 0x2E,0x23,0x59,0xD1,0xDF,0x95,0x52,0x71,0x99,0x61,0xA0,0x4B,0xD5,0x7F,0x6E,0x78,
- 0xBA,0xA9,0xC5,0x30,0xD3,0x40,0x86,0x32,0x9D,0x32,0x0C,0x9C,0x37,0xB7,0x02,0x2F,
- 0xBA,0x54,0x98,0xA9,0xC4,0x13,0x04,0xC9,0x8D,0xBE,0xC8,0xE7,0x5D,0x97,0x50,0x2E,
- 0x93,0xD6,0x22,0x59,0x0C,0x27,0xBC,0x22,0x92,0xE0,0xA7,0x20,0x0F,0x93,0x6F,0x7F,
- 0x4C,0x9F,0xD3,0xB5,0xA6,0x2A,0x0B,0x74,0x67,0x49,0x7D,0x10,0x26,0xCB,0xD1,0xC5,
- 0x86,0x71,0xE7,0x8C,0xA0,0x9C,0xE9,0x5B,0xB2,0x1A,0xF6,0x01,0xEE,0x8C,0x9E,0x5E,
- 0x83,0xF2,0x1A,0xDB,0xE6,0xE5,0xEA,0x84,0x59,0x76,0xD2,0x7C,0xF6,0x8D,0xA5,0x49,
- 0x36,0x48,0xC2,0x16,0x52,0xBB,0x83,0xA3,0x74,0xB9,0x07,0x0C,0x3B,0xFF,0x61,0x28,
- 0xE1,0x61,0xE9,0xE4,0xEF,0x6E,0x15,0xAA,0x4E,0xBA,0xE8,0x5D,0x05,0x96,0xBB,0x32,
- 0x56,0xB0,0xFB,0x72,0x52,0x0F,0x0E,0xC8,0x42,0x25,0x65,0x76,0x89,0xAF,0xF2,0xDE,
- 0x10,0x27,0xF0,0x01,0x4B,0x74,0xA7,0x97,0x07,0xD5,0x26,0x54,0x54,0x09,0x1F,0x82,
- 0x0A,0x86,0x7D,0x30,0x39,0x0E,0xB3,0x26,0x9B,0x0B,0x57,0xBB,0x36,0x06,0x31,0xAF,
- 0xFD,0x79,0xFC,0xD9,0x30,0x10,0x2B,0x0C,0xB3,0xE1,0x9B,0xD7,0x7B,0xDC,0x5F,0xEF,
- 0xD2,0xF8,0x13,0x45,0x4D,0x47,0x75,0xBD,0x46,0x96,0x3C,0x7E,0x75,0xF3,0x3E,0xB5,
- 0x67,0xC5,0x9A,0x3B,0xB0,0x5B,0x29,0x6B,0xDE,0x80,0x5B,0xC8,0x15,0x05,0xB1,0x31,
- 0xB6,0xCE,0x49,0xDD,0xAD,0x84,0xB5,0xAE,0x60,0xDC,0x67,0x31,0x34,0x30,0xFE,0x4E,
- 0xBD,0x80,0x2F,0xA6,0xBF,0x63,0x39,0x21,0x86,0xD9,0x35,0x7F,0x16,0x68,0x22,0x05,
- 0x54,0xE9,0x90,0x26,0x8C,0x07,0x6C,0x51,0xA4,0x31,0x55,0xD7,0x09,0x07,0xA8,0x3E,
- 0x2E,0x53,0x66,0xC1,0xF8,0xF2,0x7B,0xC4,0xF2,0x58,0xCF,0xF1,0x87,0xC5,0xA2,0xE7,
- 0x27,0x8F,0x30,0x87,0x58,0xA0,0x64,0x62,0x23,0x18,0xB9,0x88,0x7C,0xFA,0xCE,0xC4,
- 0x98,0xAE,0xAD,0x17,0xCC,0x4A,0x5B,0xF3,0xE9,0x48,0xD5,0x56,0xD3,0x0D,0xF2,0xC8,
- 0x92,0x73,0x8C,0xDB,0xD7,0x2F,0x56,0xAC,0x81,0xF9,0x92,0x69,0x4D,0xC6,0x32,0xF6,
- 0xE6,0xC0,0x8D,0x21,0xE2,0x76,0x80,0x61,0x11,0xBC,0xDC,0x6C,0x93,0xAF,0x19,0x69,
- 0x9B,0xD0,0xBF,0xB9,0x31,0x9F,0x02,0x67,0xA3,0x51,0xEE,0x83,0x06,0x22,0x7B,0x0C,
- 0xAB,0x49,0x42,0x40,0xB8,0xD5,0x01,0x7D,0xCE,0x5E,0xF7,0x55,0x53,0x39,0xC5,0x99,
- 0x46,0xD8,0x87,0x9F,0xBA,0xF7,0x64,0xB4,0xE3,0x9A,0xFA,0xA1,0x6D,0x90,0x68,0x10,
- 0x30,0xCA,0x8A,0x54,0xA7,0x9F,0x60,0xC3,0x19,0xF5,0x6B,0x0D,0x7A,0x51,0x98,0xE6,
- 0x98,0x43,0x51,0xB4,0xD6,0x35,0xE9,0x4F,0xC3,0xDF,0x0F,0x7B,0xD6,0x2F,0x5C,0xBD,
- 0x3A,0x15,0x61,0x19,0xF1,0x4B,0xCB,0xAA,0xDC,0x6D,0x64,0xC9,0xD3,0xC6,0x1E,0x56,
- 0xEF,0x38,0x4C,0x50,0x71,0x86,0x75,0xCC,0x0D,0x0D,0x4E,0xE9,0x28,0xF6,0x06,0x5D,
- 0x70,0x1B,0xAA,0xD3,0x45,0xCF,0xA8,0x39,0xAC,0x95,0xA6,0x2E,0xB4,0xE4,0x22,0xD4,
- 0x74,0xA8,0x37,0x5F,0x48,0x7A,0x04,0xCC,0xA5,0x4C,0x40,0xD8,0x28,0xB4,0x28,0x08,
- 0x0D,0x1C,0x72,0x52,0x41,0xF0,0x7D,0x47,0x19,0x3A,0x53,0x4E,0x58,0x84,0x62,0x6B,
- 0x93,0xB5,0x8A,0x81,0x21,0x4E,0x0D,0xDC,0xB4,0x3F,0xA2,0xC6,0xFC,0xC9,0x2B,0x40,
- 0xDA,0x38,0x04,0xE9,0x5E,0x5A,0x86,0x6B,0x0C,0x22,0x25,0x85,0x68,0x11,0x8D,0x7C,
- 0x92,0x1D,0x95,0x55,0x4D,0xAB,0x8E,0xBB,0xDA,0xA6,0xE6,0xB7,0x51,0xB6,0x32,0x5A,
- 0x05,0x41,0xDD,0x05,0x2A,0x0A,0x56,0x50,0x91,0x17,0x47,0xCC,0xC9,0xE6,0x7E,0xB5,
- 0x61,0x4A,0xDB,0x73,0x67,0x51,0xC8,0x33,0xF5,0xDA,0x6E,0x74,0x2E,0x54,0xC3,0x37,
- 0x0D,0x6D,0xAF,0x08,0xE8,0x15,0x8A,0x5F,0xE2,0x59,0x21,0xCD,0xA8,0xDE,0x0C,0x06,
- 0x5A,0x77,0x6B,0x5F,0xDB,0x18,0x65,0x3E,0xC8,0x50,0xDE,0x78,0xE0,0xB8,0x82,0xB3,
- 0x5D,0x4E,0x72,0x32,0x07,0x4F,0xC1,0x34,0x23,0xBA,0x96,0xB7,0x67,0x4E,0xA4,0x28,
- 0x1E,0x34,0x62,0xEB,0x2D,0x6A,0x70,0xE9,0x2F,0x42,0xC4,0x70,0x4E,0x5A,0x31,0x9C,
- 0xF9,0x5B,0x47,0x28,0xAA,0xDA,0x71,0x6F,0x38,0x1F,0xB3,0x78,0xC4,0x92,0x6B,0x1C,
- 0x9E,0xF6,0x35,0x9A,0xB7,0x4D,0x0E,0xBF,0xCC,0x18,0x29,0x41,0x03,0x48,0x35,0x5D,
- 0x55,0xD0,0x2B,0xC6,0x29,0xAF,0x5C,0x60,0x74,0x69,0x8E,0x5E,0x9B,0x7C,0xD4,0xBD,
- 0x7B,0x44,0x64,0x7D,0x3F,0x92,0x5D,0x69,0xB6,0x1F,0x00,0x4B,0xD4,0x83,0x35,0xCF,
- 0x7E,0x64,0x4E,0x17,0xAE,0x8D,0xD5,0x2E,0x9A,0x28,0x12,0x4E,0x2E,0x2B,0x49,0x08,
- 0x5C,0xAE,0xC6,0x46,0x85,0xAE,0x41,0x61,0x1E,0x6F,0x82,0xD2,0x51,0x37,0x16,0x1F,
- 0x0B,0xF6,0x59,0xA4,0x9A,0xCA,0x5A,0xAF,0x0D,0xD4,0x33,0x8B,0x20,0x63,0xF1,0x84,
- 0x80,0x5C,0xCB,0xCF,0x08,0xB4,0xB9,0xD3,0x16,0x05,0xBD,0x62,0x83,0x31,0x9B,0x56,
- 0x51,0x98,0x9F,0xBA,0xB2,0x5B,0xAA,0xB2,0x22,0x6B,0x2C,0xB5,0xD4,0x48,0xFA,0x63,
- 0x2B,0x5F,0x58,0xFA,0x61,0xFA,0x64,0x09,0xBB,0x38,0xE0,0xB8,0x9D,0x92,0x60,0xA8,
- 0x0D,0x67,0x6F,0x0E,0x37,0xF5,0x0D,0x01,0x9F,0xC2,0x77,0xD4,0xFE,0xEC,0xF1,0x73,
- 0x30,0x39,0xE0,0x7D,0xF5,0x61,0x98,0xE4,0x2C,0x28,0x55,0x04,0x56,0x55,0xDB,0x2F,
- 0x6B,0xEC,0xE5,0x58,0x06,0xB6,0x64,0x80,0x6A,0x2A,0x1A,0x4E,0x5B,0x0F,0xD8,0xC4,
- 0x0A,0x2E,0x52,0x19,0xD9,0x62,0xF5,0x30,0x48,0xBE,0x8C,0x7B,0x4F,0x38,0x9B,0xA2,
- 0xC3,0xAF,0xC9,0xD3,0xC7,0xC1,0x62,0x41,0x86,0xB9,0x61,0x21,0x57,0x6F,0x99,0x4F,
- 0xC1,0xBA,0xCE,0x7B,0xB5,0x3B,0x4D,0x5E,0x8A,0x8B,0x44,0x57,0x5F,0x13,0x5F,0x70,
- 0x6D,0x5B,0x29,0x47,0xDC,0x38,0xE2,0xEC,0x04,0x55,0x65,0x12,0x2A,0xE8,0x17,0x43,
- 0xE1,0x8E,0xDD,0x2A,0xB3,0xE2,0x94,0xF7,0x09,0x6E,0x5C,0xE6,0xEB,0x8A,0xF8,0x6D,
- 0x89,0x49,0x54,0x48,0xF5,0x2F,0xAD,0xBF,0xEA,0x94,0x4B,0xCA,0xFC,0x39,0x87,0x82,
- 0x5F,0x8A,0x01,0xF2,0x75,0xF2,0xE6,0x71,0xD6,0xD8,0x42,0xDE,0xF1,0x2D,0x1D,0x28,
- 0xA6,0x88,0x7E,0xA3,0xA0,0x47,0x1D,0x30,0xD9,0xA3,0x71,0xDF,0x49,0x1C,0xCB,0x01,
- 0xF8,0x36,0xB1,0xF2,0xF0,0x22,0x58,0x5D,0x45,0x6B,0xBD,0xA0,0xBB,0xB2,0x88,0x42,
- 0xC7,0x8C,0x28,0xCE,0x93,0xE8,0x90,0x63,0x08,0x90,0x7C,0x89,0x3C,0xF5,0x7D,0xB7,
- 0x04,0x2D,0x4F,0x55,0x51,0x16,0xFD,0x7E,0x79,0xE8,0xBE,0xC1,0xF2,0x12,0xD4,0xF8,
- 0xB4,0x84,0x05,0x23,0xA0,0xCC,0xD2,0x2B,0xFD,0xE1,0xAB,0xAD,0x0D,0xD1,0x55,0x6C,
- 0x23,0x41,0x94,0x4D,0x77,0x37,0x4F,0x05,0x28,0x0C,0xBF,0x17,0xB3,0x12,0x67,0x6C,
- 0x8C,0xC3,0x5A,0xF7,0x41,0x84,0x2A,0x6D,0xD0,0x94,0x12,0x27,0x2C,0xB4,0xED,0x9C,
- 0x4D,0xEC,0x47,0x82,0x97,0xD5,0x67,0xB9,0x1B,0x9D,0xC0,0x55,0x07,0x7E,0xE5,0x8E,
- 0xE2,0xA8,0xE7,0x3E,0x12,0xE4,0x0E,0x3A,0x2A,0x45,0x55,0x34,0xA2,0xF9,0x2D,0x5A,
- 0x1B,0xAB,0x52,0x7C,0x83,0x10,0x5F,0x55,0xD2,0xF1,0x5A,0x43,0x2B,0xC6,0xA7,0xA4,
- 0x89,0x15,0x95,0xE8,0xB4,0x4B,0x9D,0xF8,0x75,0xE3,0x9F,0x60,0x78,0x5B,0xD6,0xE6,
- 0x0D,0x44,0xE6,0x21,0x06,0xBD,0x47,0x22,0x53,0xA4,0x00,0xAD,0x8D,0x43,0x13,0x85,
- 0x39,0xF7,0xAA,0xFC,0x38,0xAF,0x7B,0xED,0xFC,0xE4,0x2B,0x54,0x50,0x98,0x4C,0xFC,
- 0x85,0x80,0xF7,0xDF,0x3C,0x80,0x22,0xE1,0x94,0xDA,0xDE,0x24,0xC6,0xB0,0x7A,0x39,
- 0x38,0xDC,0x0F,0xA1,0xA7,0xF4,0xF9,0x6F,0x63,0x18,0x57,0x8B,0x84,0x41,0x2A,0x2E,
- 0xD4,0x53,0xF2,0xD9,0x00,0x0F,0xD0,0xDD,0x99,0x6E,0x19,0xA6,0x0A,0xD0,0xEC,0x5B,
- 0x58,0x24,0xAB,0xC0,0xCB,0x06,0x65,0xEC,0x1A,0x13,0x38,0x94,0x0A,0x67,0x03,0x2F,
- 0x3F,0xF7,0xE3,0x77,0x44,0x77,0x33,0xC6,0x14,0x39,0xD0,0xE3,0xC0,0xA2,0x08,0x79,
- 0xBB,0x40,0x99,0x57,0x41,0x0B,0x01,0x90,0xCD,0xE1,0xCC,0x48,0x67,0xDB,0xB3,0xAF,
- 0x88,0x74,0xF3,0x4C,0x82,0x8F,0x72,0xB1,0xB5,0x23,0x29,0xC4,0x12,0x6C,0x19,0xFC,
- 0x8E,0x46,0xA4,0x9C,0xC4,0x25,0x65,0x87,0xD3,0x6D,0xBE,0x8A,0x93,0x11,0x03,0x38,
- 0xED,0x83,0x2B,0xF3,0x46,0xA4,0x93,0xEA,0x3B,0x53,0x85,0x1D,0xCE,0xD4,0xF1,0x08,
- 0x83,0x27,0xED,0xFC,0x9B,0x1A,0x18,0xBC,0xF9,0x8B,0xAE,0xDC,0x24,0xAB,0x50,0x38,
- 0xE9,0x72,0x4B,0x10,0x22,0x17,0x7B,0x46,0x5D,0xAB,0x59,0x64,0xF3,0x40,0xAE,0xF8,
- 0xBB,0xE5,0xC8,0xF9,0x26,0x03,0x4E,0x55,0x7D,0xEB,0xEB,0xFE,0xF7,0x39,0xE6,0xE0,
- 0x0A,0x11,0xBE,0x2E,0x28,0xFF,0x98,0xED,0xC0,0xC9,0x42,0x56,0x42,0xC3,0xFD,0x00,
- 0xF6,0xAF,0x87,0xA2,0x5B,0x01,0x3F,0x32,0x92,0x47,0x95,0x9A,0x72,0xA5,0x32,0x3D,
- 0xAE,0x6B,0xD0,0x9B,0x07,0xD2,0x49,0x92,0xE3,0x78,0x4A,0xFA,0xA1,0x06,0x7D,0xF2,
- 0x41,0xCF,0x77,0x74,0x04,0x14,0xB2,0x0C,0x86,0x84,0x64,0x16,0xD5,0xBB,0x51,0xA1,
- 0xE5,0x6F,0xF1,0xD1,0xF2,0xE2,0xF7,0x5F,0x58,0x20,0x4D,0xB8,0x57,0xC7,0xCF,0xDD,
- 0xC5,0xD8,0xBE,0x76,0x3D,0xF6,0x5F,0x7E,0xE7,0x2A,0x8B,0x88,0x24,0x1B,0x38,0x3F,
- 0x0E,0x41,0x23,0x77,0xF5,0xF0,0x4B,0xD4,0x0C,0x1F,0xFA,0xA4,0x0B,0x80,0x5F,0xCF,
- 0x45,0xF6,0xE0,0xDA,0x2F,0x34,0x59,0x53,0xFB,0x20,0x3C,0x52,0x62,0x5E,0x35,0xB5,
- 0x62,0xFE,0x8B,0x60,0x63,0xE3,0x86,0x5A,0x15,0x1A,0x6E,0xD1,0x47,0x45,0xBC,0x32,
- 0xB4,0xEB,0x67,0x38,0xAB,0xE4,0x6E,0x33,0x3A,0xB5,0xED,0xA3,0xAD,0x67,0xE0,0x4E,
- 0x41,0x95,0xEE,0x62,0x62,0x71,0x26,0x1D,0x31,0xEF,0x62,0x30,0xAF,0xD7,0x82,0xAC,
- 0xC2,0xDC,0x05,0x04,0xF5,0x97,0x07,0xBF,0x11,0x59,0x23,0x07,0xC0,0x64,0x02,0xE8,
- 0x97,0xE5,0x3E,0xAF,0x18,0xAC,0x59,0xA6,0x8B,0x4A,0x33,0x90,0x1C,0x6E,0x7C,0x9C,
- 0x20,0x7E,0x4C,0x3C,0x3E,0x61,0x64,0xBB,0xC5,0x6B,0x7C,0x7E,0x3E,0x9F,0xC5,0x4C,
- 0x9F,0xEA,0x73,0xF5,0xD7,0x89,0xC0,0x4C,0xF4,0xFB,0xF4,0x2D,0xEC,0x14,0x1B,0x51,
- 0xD5,0xC1,0x12,0xC8,0x10,0xDF,0x0B,0x4A,0x8B,0x9C,0xBC,0x93,0x45,0x6A,0x3E,0x3E,
- 0x7D,0xC1,0xA9,0xBA,0xCD,0xC1,0xB4,0x07,0xE4,0xE1,0x68,0x86,0x43,0xB2,0x6D,0x38,
- 0xF3,0xFB,0x0C,0x5C,0x66,0x37,0x71,0xDE,0x56,0xEF,0x6E,0xA0,0x10,0x40,0x65,0xA7,
- 0x98,0xF7,0xD0,0xBE,0x0E,0xC8,0x37,0x36,0xEC,0x10,0xCA,0x7C,0x9C,0xAB,0x84,0x1E,
- 0x05,0x17,0x76,0x02,0x1C,0x4F,0x52,0xAA,0x5F,0xC1,0xC6,0xA0,0x56,0xB9,0xD8,0x04,
- 0x84,0x44,0x4D,0xA7,0x59,0xD8,0xDE,0x60,0xE6,0x38,0x0E,0x05,0x8F,0x03,0xE1,0x3B,
- 0x6D,0x81,0x04,0x33,0x6F,0x30,0x0B,0xCE,0x69,0x05,0x21,0x33,0xFB,0x26,0xBB,0x89,
- 0x7D,0xB6,0xAE,0x87,0x7E,0x51,0x07,0xE0,0xAC,0xF7,0x96,0x0A,0x6B,0xF9,0xC4,0x5C,
- 0x1D,0xE4,0x44,0x47,0xB8,0x5E,0xFA,0xE3,0x78,0x84,0x55,0x42,0x4B,0x48,0x5E,0xF7,
- 0x7D,0x47,0x35,0x86,0x1D,0x2B,0x43,0x05,0x03,0xEC,0x8A,0xB8,0x1E,0x06,0x3C,0x76,
- 0x0C,0x48,0x1A,0x43,0xA7,0xB7,0x8A,0xED,0x1E,0x13,0xC6,0x43,0xEE,0x10,0xEF,0xDB,
- 0xEC,0xFB,0x3C,0x83,0xB2,0x95,0x44,0xEF,0xD8,0x54,0x51,0x4E,0x2D,0x11,0x44,0x1D,
- 0xFB,0x36,0x59,0x1E,0x7A,0x34,0xC1,0xC3,0xCA,0x57,0x00,0x61,0xEA,0x67,0xA5,0x16,
- 0x9B,0x55,0xD0,0x55,0xE1,0x7F,0xD9,0x36,0xD2,0x40,0x76,0xAE,0xDC,0x01,0xCE,0xB0,
- 0x7A,0x83,0xD5,0xCB,0x20,0x98,0xEC,0x6B,0xC1,0x72,0x92,0x34,0xF3,0x82,0x57,0x37,
- 0x62,0x8A,0x32,0x36,0x0C,0x90,0x43,0xAE,0xAE,0x5C,0x9B,0x78,0x8E,0x13,0x65,0x02,
- 0xFD,0x68,0x71,0xC1,0xFE,0xB0,0x31,0xA0,0x24,0x82,0xB0,0xC3,0xB1,0x79,0x69,0xA7,
- 0xF5,0xD2,0xEB,0xD0,0x82,0xC0,0x32,0xDC,0x9E,0xC7,0x26,0x3C,0x6D,0x8D,0x98,0xC1,
- 0xBB,0x22,0xD4,0xD0,0x0F,0x33,0xEC,0x3E,0xB9,0xCC,0xE1,0xDC,0x6A,0x4C,0x77,0x36,
- 0x14,0x1C,0xF9,0xBF,0x81,0x9F,0x28,0x5F,0x71,0x85,0x32,0x29,0x90,0x75,0x48,0xC4,
- 0xB3,0x4A,0xCE,0xD8,0x44,0x8F,0x14,0x2F,0xFD,0x40,0x57,0xEF,0xAA,0x08,0x75,0xD9,
- 0x46,0xD1,0xD6,0x6E,0x32,0x55,0x1F,0xC3,0x18,0xFE,0x84,0x1F,0xFC,0x84,0xD5,0xFF,
- 0x71,0x5E,0x1B,0x48,0xC3,0x86,0x95,0x0E,0x28,0x08,0x27,0xD3,0x38,0x83,0x71,0x7B,
- 0x4C,0x80,0x63,0x54,0x9A,0x56,0xB0,0xAC,0xCF,0x80,0xCA,0x31,0x09,0xEF,0xFE,0xF3,
- 0xBE,0xAF,0x24,0x7E,0xA6,0xFE,0x53,0x3F,0xC2,0x8D,0x4A,0x33,0x68,0xD1,0x22,0xA6,
- 0x66,0xAD,0x7B,0xEA,0xDE,0xB6,0x43,0xB0,0xA1,0x25,0x95,0x00,0xA3,0x3F,0x75,0x46,
- 0x14,0x11,0x44,0xEC,0xD7,0x95,0xBC,0x92,0xF0,0x4F,0xA9,0x16,0x53,0x62,0x97,0x60,
- 0x2A,0x0F,0x41,0xF1,0x71,0x24,0xBE,0xEE,0x94,0x7F,0x08,0xCD,0x60,0x93,0xB3,0x85,
- 0x5B,0x07,0x00,0x3F,0xD8,0x0F,0x28,0x83,0x9A,0xD1,0x69,0x9F,0xD1,0xDA,0x2E,0xC3,
- 0x90,0x01,0xA2,0xB9,0x6B,0x4E,0x2A,0x66,0x9D,0xDA,0xAE,0xA6,0xEA,0x2A,0xD3,0x68,
- 0x2F,0x0C,0x0C,0x9C,0xD2,0x8C,0x4A,0xED,0xE2,0x9E,0x57,0x65,0x9D,0x09,0x87,0xA3,
- 0xB4,0xC4,0x32,0x5D,0xC9,0xD4,0x32,0x2B,0xB1,0xE0,0x71,0x1E,0x64,0x4D,0xE6,0x90,
- 0x71,0xE3,0x1E,0x40,0xED,0x7D,0xF3,0x84,0x0E,0xED,0xC8,0x78,0x76,0xAE,0xC0,0x71,
- 0x27,0x72,0xBB,0x05,0xEA,0x02,0x64,0xFB,0xF3,0x48,0x6B,0xB5,0x42,0x93,0x3F,0xED,
- 0x9F,0x13,0x53,0xD2,0xF7,0xFE,0x2A,0xEC,0x1D,0x47,0x25,0xDB,0x3C,0x91,0x86,0xC6,
- 0x8E,0xF0,0x11,0xFD,0x23,0x74,0x36,0xF7,0xA4,0xF5,0x9E,0x7A,0x7E,0x53,0x50,0x44,
- 0xD4,0x47,0xCA,0xD3,0xEB,0x38,0x6D,0xE6,0xD9,0x71,0x94,0x7F,0x4A,0xC6,0x69,0x4B,
- 0x11,0xF4,0x52,0xEA,0x22,0xFE,0x8A,0xB0,0x36,0x67,0x8B,0x59,0xE8,0xE6,0x80,0x2A,
- 0xEB,0x65,0x04,0x13,0xEE,0xEC,0xDC,0x9E,0x5F,0xB1,0xEC,0x05,0x6A,0x59,0xE6,0x9F,
- 0x5E,0x59,0x6B,0x89,0xBF,0xF7,0x1A,0xCA,0x44,0xF9,0x5B,0x6A,0x71,0x85,0x03,0xE4,
- 0x29,0x62,0xE0,0x70,0x6F,0x41,0xC4,0xCF,0xB2,0xB1,0xCC,0xE3,0x7E,0xA6,0x07,0xA8,
- 0x87,0xE7,0x7F,0x84,0x93,0xDB,0x52,0x4B,0x6C,0xEC,0x7E,0xDD,0xD4,0x24,0x48,0x10,
- 0x69,0x9F,0x04,0x60,0x74,0xE6,0x48,0x18,0xF3,0xE4,0x2C,0xB9,0x4F,0x2E,0x50,0x7A,
- 0xDF,0xD4,0x54,0x69,0x2B,0x8B,0xA7,0xF3,0xCE,0xFF,0x1F,0xF3,0x3E,0x26,0x01,0x39,
- 0x17,0x95,0x84,0x89,0xB0,0xF0,0x4C,0x4B,0x82,0x91,0x9F,0xC4,0x4B,0xAC,0x9D,0xA5,
- 0x74,0xAF,0x17,0x25,0xC9,0xCA,0x32,0xD3,0xBC,0x89,0x8A,0x84,0x89,0xCC,0x0D,0xAE,
- 0x7C,0xA2,0xDB,0x9C,0x6A,0x78,0x91,0xEE,0xEA,0x76,0x5D,0x4E,0x87,0x60,0xF5,0x69,
- 0x15,0x67,0xD4,0x02,0xCF,0xAF,0x48,0x36,0x07,0xEA,0xBF,0x6F,0x66,0x2D,0x06,0x8F,
- 0xC4,0x9A,0xFE,0xF9,0xF6,0x90,0x87,0x75,0xB8,0xF7,0xAD,0x0F,0x76,0x10,0x5A,0x3D,
- 0x59,0xB0,0x2E,0xB3,0xC7,0x35,0x2C,0xCC,0x70,0x56,0x2B,0xCB,0xE3,0x37,0x96,0xC5,
- 0x2F,0x46,0x1B,0x8A,0x22,0x46,0xC7,0x88,0xA7,0x26,0x32,0x98,0x61,0xDF,0x86,0x22,
- 0x8A,0xF4,0x1C,0x2F,0x87,0xA1,0x09,0xAA,0xCC,0xA9,0xAE,0xD3,0xBD,0x00,0x45,0x1C,
- 0x9A,0x54,0x87,0x86,0x52,0x87,0xEF,0xFF,0x1E,0x8F,0xA1,0x8F,0xC1,0x89,0x5C,0x35,
- 0x1B,0xDA,0x2D,0x3A,0x2C,0x16,0xB2,0xC2,0xF1,0x56,0xE2,0x78,0xC1,0x6B,0x63,0x97,
- 0xC5,0x56,0x8F,0xC9,0x32,0x7F,0x2C,0xAA,0xAF,0xA6,0xA8,0xAC,0x20,0x91,0x22,0x88,
- 0xDE,0xE4,0x60,0x8B,0xF9,0x4B,0x42,0x25,0x1A,0xE3,0x7F,0x9C,0x2C,0x19,0x89,0x3A,
- 0x7E,0x05,0xD4,0x36,0xCC,0x69,0x58,0xC2,0xC1,0x32,0x8B,0x2F,0x90,0x85,0xEB,0x7A,
- 0x39,0x50,0xA5,0xA1,0x27,0x92,0xC5,0x66,0xB0,0x20,0x4F,0x58,0x7E,0x55,0x83,0x43,
- 0x2B,0x45,0xE2,0x9C,0xE4,0xD8,0x12,0x90,0x2C,0x16,0x83,0x56,0x16,0x79,0x03,0xB3,
- 0xAD,0x2D,0x61,0x18,0x1A,0x13,0x1F,0x37,0xE2,0xE1,0x9C,0x73,0x7B,0x80,0xD5,0xFD,
- 0x2D,0x51,0x87,0xFC,0x7B,0xAA,0xD7,0x1F,0x2C,0x7A,0x8E,0xAF,0xF4,0x8D,0xBB,0xCD,
- 0x95,0x11,0x7C,0x72,0x0B,0xEE,0x6F,0xE2,0xB9,0xAF,0xDE,0x37,0x83,0xDE,0x8C,0x8D,
- 0x62,0x05,0x67,0xB7,0x96,0xC6,0x8D,0x56,0xB6,0x0D,0xD7,0x62,0xBA,0xD6,0x46,0x36,
- 0xBD,0x8E,0xC8,0xE6,0xEA,0x2A,0x6C,0x10,0x14,0xFF,0x6B,0x5B,0xFA,0x82,0x3C,0x46,
- 0xB1,0x30,0x43,0x46,0x51,0x8A,0x7D,0x9B,0x92,0x3E,0x83,0x79,0x5B,0x55,0x5D,0xB2,
- 0x6C,0x5E,0xCE,0x90,0x62,0x8E,0x53,0x98,0xC9,0x0D,0x6D,0xE5,0x2D,0x57,0xCD,0xC5,
- 0x81,0x57,0xBA,0xE1,0xE8,0xB8,0x8F,0x72,0xE5,0x4F,0x13,0xDC,0xEA,0x9D,0x71,0x15,
- 0x10,0xB2,0x11,0x88,0xD5,0x09,0xD4,0x7F,0x5B,0x65,0x7F,0x2C,0x3B,0x38,0x4C,0x11,
- 0x68,0x50,0x8D,0xFB,0x9E,0xB0,0x59,0xBF,0x94,0x80,0x89,0x4A,0xC5,0x1A,0x18,0x12,
- 0x89,0x53,0xD1,0x4A,0x10,0x29,0xE8,0x8C,0x1C,0xEC,0xB6,0xEA,0x46,0xC7,0x17,0x8B,
- 0x25,0x15,0x31,0xA8,0xA2,0x6B,0x43,0xB1,0x9D,0xE2,0xDB,0x0B,0x87,0x9B,0xB0,0x11,
- 0x04,0x0E,0x71,0xD2,0x29,0x77,0x89,0x82,0x0A,0x66,0x41,0x7F,0x1D,0x0B,0x48,0xFF,
- 0x72,0xBB,0x24,0xFD,0xC2,0x48,0xA1,0x9B,0xFE,0x7B,0x7F,0xCE,0x88,0xDB,0x86,0xD9,
- 0x85,0x3B,0x1C,0xB0,0xDC,0xA8,0x33,0x07,0xBF,0x51,0x2E,0xE3,0x0E,0x9A,0x00,0x97,
- 0x1E,0x06,0xC0,0x97,0x43,0x9D,0xD8,0xB6,0x45,0xC4,0x86,0x67,0x5F,0x00,0xF8,0x88,
- 0x9A,0xA4,0x52,0x9E,0xC7,0xAA,0x8A,0x83,0x75,0xEC,0xC5,0x18,0xAE,0xCE,0xC3,0x2F,
- 0x1A,0x2B,0xF9,0x18,0xFF,0xAE,0x1A,0xF5,0x53,0x0B,0xB5,0x33,0x51,0xA7,0xFD,0xE8,
- 0xA8,0xE1,0xA2,0x64,0xB6,0x22,0x17,0x43,0x80,0xCC,0x0A,0xD8,0xAE,0x3B,0xBA,0x40,
- 0xD7,0xD9,0x92,0x4A,0x89,0xDF,0x04,0x10,0xEE,0x9B,0x18,0x2B,0x6A,0x77,0x69,0x8A,
- 0x68,0xF4,0xF9,0xB9,0xA2,0x21,0x15,0x6E,0xE6,0x1E,0x3B,0x03,0x62,0x30,0x9B,0x60,
- 0x41,0x7E,0x25,0x9B,0x9E,0x8F,0xC5,0x52,0x10,0x08,0xF8,0xC2,0x69,0xA1,0x21,0x11,
- 0x88,0x37,0x5E,0x79,0x35,0x66,0xFF,0x10,0x42,0x18,0x6E,0xED,0x97,0xB6,0x6B,0x1C,
- 0x4E,0x36,0xE5,0x6D,0x7D,0xB4,0xE4,0xBF,0x20,0xB9,0xE0,0x05,0x3A,0x69,0xD5,0xB8,
- 0xE3,0xD5,0xDC,0xE0,0xB9,0xAC,0x53,0x3E,0x07,0xA4,0x57,0xAD,0x77,0xFF,0x48,0x18,
- 0x76,0x2A,0xAC,0x49,0x2A,0x8E,0x47,0x75,0x6D,0x9F,0x67,0x63,0x30,0x35,0x8C,0x39,
- 0x05,0x39,0xD5,0x6F,0x64,0x3A,0x5B,0xAD,0xCA,0x0B,0xBB,0x82,0x52,0x99,0x45,0xB1,
- 0x93,0x36,0x36,0x99,0xAF,0x13,0x20,0x44,0x36,0xD8,0x02,0x44,0x09,0x39,0x92,0x85,
- 0xFF,0x4A,0x4A,0x97,0x87,0xA6,0x63,0xD7,0xC7,0xB5,0xB5,0x24,0xED,0x0F,0xB4,0x6F,
- 0x0C,0x58,0x52,0x14,0xD9,0xA6,0x7B,0xD3,0x79,0xBC,0x38,0x58,0xA1,0xBD,0x3B,0x84,
- 0x06,0xD8,0x1A,0x06,0xFD,0x6B,0xA8,0xEA,0x4B,0x69,0x28,0x04,0x37,0xAD,0x82,0x99,
- 0xFB,0x0E,0x1B,0x85,0xBD,0xA8,0x5D,0x73,0xCD,0xDC,0x58,0x75,0x0A,0xBE,0x63,0x6C,
- 0x48,0xE7,0x4C,0xE4,0x30,0x2B,0x04,0x60,0xB9,0x15,0xD8,0xDA,0x86,0x81,0x75,0x8F,
- 0x96,0xD4,0x8D,0x1C,0x5D,0x70,0x85,0x7C,0x1C,0x67,0x7B,0xD5,0x08,0x67,0xA6,0xCE,
- 0x4B,0x0A,0x66,0x70,0xB7,0xE5,0x63,0xD4,0x5B,0x8A,0x82,0xEA,0x10,0x67,0xCA,0xE2,
- 0xF4,0xEF,0x17,0x85,0x2F,0x2A,0x5F,0x8A,0x97,0x82,0xF8,0x6A,0xD6,0x34,0x10,0xEA,
- 0xEB,0xC9,0x5C,0x3C,0xE1,0x49,0xF8,0x46,0xEB,0xDE,0xBD,0xF6,0xA9,0x92,0xF1,0xAA,
- 0xA6,0xA0,0x18,0xB0,0x3A,0xD3,0x0F,0x1F,0xF3,0x6F,0xFF,0x31,0x45,0x43,0x44,0xD3,
- 0x50,0x9A,0xF7,0x88,0x09,0x96,0xC1,0xCE,0x76,0xCC,0xF2,0x2C,0x2C,0xBA,0xAD,0x82,
- 0x77,0x8F,0x18,0x84,0xC0,0xD2,0x07,0x9C,0x36,0x90,0x83,0x4E,0x0B,0xA5,0x4F,0x43,
- 0x3E,0x04,0xAB,0x78,0x4F,0xD6,0xFB,0x09,0x01,0x24,0x90,0xDA,0x6F,0x3C,0x3A,0x61,
- 0x0D,0x7F,0x69,0x4A,0xEB,0x2B,0x30,0x02,0xB4,0xDB,0xE0,0x84,0xA9,0xEC,0xD7,0x35,
- 0xBF,0x37,0x7D,0x85,0x58,0xCE,0xA9,0x4E,0xE4,0x80,0xC7,0xA8,0xD3,0x30,0x67,0x48,
- 0xEB,0x29,0xAF,0x2F,0x74,0x6A,0xB4,0xA7,0x3F,0x0F,0x3F,0x92,0xAF,0xF3,0xCA,0xAC,
- 0xAF,0x4B,0xD9,0x94,0xC0,0x43,0xCA,0x81,0x0D,0x2F,0x48,0xA1,0xB0,0x27,0xD5,0xD2,
- 0xEF,0x4B,0x05,0x85,0xA3,0xDE,0x4D,0x93,0x30,0x3C,0xF0,0xBB,0x4A,0x8F,0x30,0x27,
- 0x4C,0xEB,0xE3,0x3E,0x64,0xED,0x9A,0x2F,0x3B,0xF1,0x82,0xF0,0xBA,0xF4,0xCF,0x7F,
- 0x40,0xCB,0xB0,0xE1,0x7F,0xBC,0xAA,0x57,0xD3,0xC9,0x74,0xF2,0xFA,0x43,0x0D,0x22,
- 0xD0,0xF4,0x77,0x4E,0x93,0xD7,0x85,0x70,0x1F,0x99,0xBF,0xB6,0xDE,0x35,0xF1,0x30,
- 0xA7,0x5E,0x71,0xF0,0x6B,0x01,0x2D,0x7B,0x64,0xF0,0x33,0x53,0x0A,0x39,0x88,0xF3,
- 0x6B,0x3A,0xA6,0x6B,0x35,0xD2,0x2F,0x43,0xCD,0x02,0xFD,0xB5,0xE9,0xBC,0x5B,0xAA,
- 0xD8,0xA4,0x19,0x7E,0x0E,0x5D,0x94,0x81,0x9E,0x6F,0x77,0xAD,0xD6,0x0E,0x74,0x93,
- 0x96,0xE7,0xC4,0x18,0x5F,0xAD,0xF5,0x19,
- ];
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/Enums.cs b/SabreTools.Models/Nitro/Enums.cs
deleted file mode 100644
index 0ead57a..0000000
--- a/SabreTools.Models/Nitro/Enums.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace SabreTools.Models.Nitro
-{
- public enum Unitcode : byte
- {
- NDS = 0x00,
-
- NDSPlusDSi = 0x02,
-
- DSi = 0x03,
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/ExtendedDSiHeader.cs b/SabreTools.Models/Nitro/ExtendedDSiHeader.cs
deleted file mode 100644
index cf4a766..0000000
--- a/SabreTools.Models/Nitro/ExtendedDSiHeader.cs
+++ /dev/null
@@ -1,298 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.Nitro
-{
- ///
- /// Nintendo DSi extended cart header
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class ExtendedDSiHeader
- {
- ///
- /// Global MBK1..MBK5 Settings
- ///
- /// 5 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
- public uint[]? GlobalMBK15Settings;
-
- ///
- /// Local MBK6..MBK8 Settings for ARM9
- ///
- /// 3 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
- public uint[]? LocalMBK68SettingsARM9;
-
- ///
- /// Local MBK6..MBK8 Settings for ARM7
- ///
- /// 3 entries
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
- public uint[]? LocalMBK68SettingsARM7;
-
- ///
- /// Global MBK9 Setting
- ///
- public uint GlobalMBK9Setting;
-
- ///
- /// Region Flags
- ///
- public uint RegionFlags;
-
- ///
- /// Access control
- ///
- public uint AccessControl;
-
- ///
- /// ARM7 SCFG EXT mask (controls which devices to enable)
- ///
- public uint ARM7SCFGEXTMask;
-
- ///
- /// Reserved/flags? When bit2 of byte 0x1bf is set, usage of banner.sav from the title data dir is enabled.(additional banner data)
- ///
- public uint ReservedFlags;
-
- ///
- /// ARM9i rom offset
- ///
- public uint ARM9iRomOffset;
-
- ///
- /// Reserved
- ///
- public uint Reserved3;
-
- ///
- /// ARM9i load address
- ///
- public uint ARM9iLoadAddress;
-
- ///
- /// ARM9i size;
- ///
- public uint ARM9iSize;
-
- ///
- /// ARM7i rom offset
- ///
- public uint ARM7iRomOffset;
-
- ///
- /// Pointer to base address where various structures and parameters are passed to the title - what is that???
- ///
- public uint Reserved4;
-
- ///
- /// ARM7i load address
- ///
- public uint ARM7iLoadAddress;
-
- ///
- /// ARM7i size;
- ///
- public uint ARM7iSize;
-
- ///
- /// Digest NTR region offset
- ///
- public uint DigestNTRRegionOffset;
-
- ///
- /// Digest NTR region length
- ///
- public uint DigestNTRRegionLength;
-
- //
- /// Digest TWL region offset
- ///
- public uint DigestTWLRegionOffset;
-
- ///
- /// Digest TWL region length
- ///
- public uint DigestTWLRegionLength;
-
- //
- /// Digest Sector Hashtable region offset
- ///
- public uint DigestSectorHashtableRegionOffset;
-
- ///
- /// Digest Sector Hashtable region length
- ///
- public uint DigestSectorHashtableRegionLength;
-
- //
- /// Digest Block Hashtable region offset
- ///
- public uint DigestBlockHashtableRegionOffset;
-
- ///
- /// Digest Block Hashtable region length
- ///
- public uint DigestBlockHashtableRegionLength;
-
- ///
- /// Digest Sector size
- ///
- public uint DigestSectorSize;
-
- ///
- /// Digeset Block Sectorount
- ///
- public uint DigestBlockSectorCount;
-
- ///
- /// Icon Banner Size (usually 0x23C0)
- ///
- public uint IconBannerSize;
-
- ///
- /// Unknown (used by DSi)
- ///
- public uint Unknown1;
-
- ///
- /// NTR+TWL region ROM size (total size including DSi area)
- ///
- public uint NTRTWLRegionRomSize;
-
- ///
- /// Unknown (used by DSi)
- ///
- /// 12 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
- public byte[]? Unknown2;
-
- ///
- /// Modcrypt area 1 offset
- ///
- public uint ModcryptArea1Offset;
-
- ///
- /// Modcrypt area 1 size
- ///
- public uint ModcryptArea1Size;
-
- ///
- /// Modcrypt area 2 offset
- ///
- public uint ModcryptArea2Offset;
-
- ///
- /// Modcrypt area 2 size
- ///
- public uint ModcryptArea2Size;
-
- ///
- /// Title ID
- ///
- /// 8 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
- public byte[]? TitleID;
-
- ///
- /// DSiWare: "public.sav" size
- ///
- public uint DSiWarePublicSavSize;
-
- ///
- /// DSiWare: "private.sav" size
- ///
- public uint DSiWarePrivateSavSize;
-
- ///
- /// Reserved (zero)
- ///
- /// 176 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 176)]
- public byte[]? ReservedZero;
-
- ///
- /// Unknown (used by DSi)
- ///
- /// 16 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[]? Unknown3;
-
- ///
- /// ARM9 (with encrypted secure area) SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ARM9WithSecureAreaSHA1HMACHash;
-
- ///
- /// ARM7 SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ARM7SHA1HMACHash;
-
- ///
- /// Digest master SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? DigestMasterSHA1HMACHash;
-
- ///
- /// Banner SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? BannerSHA1HMACHash;
-
- ///
- /// ARM9i (decrypted) SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ARM9iDecryptedSHA1HMACHash;
-
- ///
- /// ARM7i (decrypted) SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ARM7iDecryptedSHA1HMACHash;
-
- ///
- /// Reserved
- ///
- /// 40 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
- public byte[]? Reserved5;
-
- ///
- /// ARM9 (without secure area) SHA1 HMAC hash
- ///
- /// 20 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public byte[]? ARM9NoSecureAreaSHA1HMACHash;
-
- ///
- /// Reserved
- ///
- /// 2636 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2636)]
- public byte[]? Reserved6;
-
- ///
- /// Reserved and unchecked region, always zero. Used for passing arguments in debug environment.
- ///
- /// 0x180 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x180)]
- public byte[]? ReservedAndUnchecked;
-
- ///
- /// RSA signature (the first 0xE00 bytes of the header are signed with an 1024-bit RSA signature).
- ///
- /// 0x80 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x80)]
- public byte[]? RSASignature;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/FileAllocationTableEntry.cs b/SabreTools.Models/Nitro/FileAllocationTableEntry.cs
deleted file mode 100644
index 43c4819..0000000
--- a/SabreTools.Models/Nitro/FileAllocationTableEntry.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.Nitro
-{
- ///
- /// The structure of the file allocation table is very simple,
- /// it's just a table of 8 byte entries
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class FileAllocationTableEntry
- {
- ///
- /// Start offset of file
- ///
- public uint StartOffset;
-
- ///
- /// End offset of file (after this is padding)
- ///
- public uint EndOffset;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/FolderAllocationTableEntry.cs b/SabreTools.Models/Nitro/FolderAllocationTableEntry.cs
deleted file mode 100644
index 7a8e5a3..0000000
--- a/SabreTools.Models/Nitro/FolderAllocationTableEntry.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.Nitro
-{
- ///
- /// Each folder in the file system has a 8 byte long entry.
- /// The first one is for the root folder, and acts as an entry
- /// point to the file system.
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class FolderAllocationTableEntry
- {
- ///
- /// Start offset of folder contents within Name List
- /// relative to start of NameTable
- ///
- public uint StartOffset;
-
- ///
- /// Index of first file within folder in File Allocation Table
- ///
- public ushort FirstFileIndex;
-
- ///
- /// Index of parent folder in current table; for root folder
- /// this holds the number of entries in the table
- ///
- public byte ParentFolderIndex;
-
- ///
- /// Unknown, always 0xF0 except for root folder
- ///
- public byte Unknown;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/NameListEntry.cs b/SabreTools.Models/Nitro/NameListEntry.cs
deleted file mode 100644
index 4da0790..0000000
--- a/SabreTools.Models/Nitro/NameListEntry.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-namespace SabreTools.Models.Nitro
-{
- ///
- /// The name list holds the names of the folders, and their contents
- /// in order, with references back to the Folder Allocation Table.
- ///
- ///
- public sealed class NameListEntry
- {
- ///
- /// The least significant 7 bits store the length of the name,
- /// and the most significant bit indicates whether it is a
- /// folder (1 = folder, 0 = file).
- ///
- public bool Folder { get; set; }
-
- ///
- /// The variable length name (UTF-8)
- ///
- public string? Name { get; set; }
-
- ///
- /// Only there if it is a folder. Refers to the the index of it
- /// within the Folder allocation table, allowing its contents to
- /// be found.
- ///
- public ushort Index { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/Nitro/NameTable.cs b/SabreTools.Models/Nitro/NameTable.cs
deleted file mode 100644
index fbbdba7..0000000
--- a/SabreTools.Models/Nitro/NameTable.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-namespace SabreTools.Models.Nitro
-{
- ///
- /// The name table stores the names of the files and the structure
- /// of the file system. From the information stored, the index of the
- /// file's entry in the File Allocation Table can be found.
- ///
- /// It is split into two parts:
- /// - Folder Allocation Table
- /// - Name List
- ///
- ///
- public sealed class NameTable
- {
- ///
- /// Folder allocation table
- ///
- public FolderAllocationTableEntry[]? FolderAllocationTable { get; set; }
-
- ///
- /// Name list
- ///
- public NameListEntry[]? NameList { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/OLE/ArrayDimension.cs b/SabreTools.Models/OLE/ArrayDimension.cs
deleted file mode 100644
index 591ee2f..0000000
--- a/SabreTools.Models/OLE/ArrayDimension.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The ArrayDimension packet represents the size and index offset of a dimension of an array
- /// property type.
- ///
- ///
- public class ArrayDimension
- {
- ///
- /// An unsigned integer representing the size of the dimension.
- ///
- public uint Size { get; set; }
-
- ///
- /// A signed integer representing the index offset of the dimension. For
- /// example, an array dimension that is to be accessed with a 0-based index would have the value
- /// zero, whereas an array dimension that is to be accessed with a 1-based index would have the
- /// value 0x00000001.
- ///
- public int Value { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/ArrayHeader.cs b/SabreTools.Models/OLE/ArrayHeader.cs
deleted file mode 100644
index caed60b..0000000
--- a/SabreTools.Models/OLE/ArrayHeader.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The ArrayHeader packet represents the type and dimensions of an array property type.
- ///
- ///
- public class ArrayHeader
- {
- ///
- /// MUST be set to the value obtained by clearing the VT_ARRAY (0x2000) bit of
- /// this array property's PropertyType value.
- ///
- public PropertyType Type { get; set; }
-
- ///
- /// An unsigned integer representing the number of dimensions in the array
- /// property. MUST be at least 1 and at most 31.
- ///
- public uint NumDimensions { get; set; }
-
- ///
- /// MUST be a sequence of ArrayDimension packets
- ///
- /// The number of scalar values in an array property can be calculated from the ArrayHeader packet
- /// as the product of the Size fields of each of the ArrayDimension packets.
- ///
- public ArrayDimension[]? Dimensions { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/BLOB.cs b/SabreTools.Models/OLE/BLOB.cs
deleted file mode 100644
index 70bbc39..0000000
--- a/SabreTools.Models/OLE/BLOB.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The BLOB packet represents binary data
- ///
- ///
- public class BLOB
- {
- ///
- /// The size in bytes of the field, not including padding (if any)
- ///
- public uint Size { get; set; }
-
- ///
- /// MUST be an array of bytes, followed by zero padding to a multiple of 4 bytes.
- ///
- public byte[]? Bytes { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/CURRENCY.cs b/SabreTools.Models/OLE/CURRENCY.cs
deleted file mode 100644
index 3f1a975..0000000
--- a/SabreTools.Models/OLE/CURRENCY.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The CURRENCY (Packet Version) packet represents a CURRENCY as specified in [MS-OAUT]
- /// section 2.2.24.
- ///
- ///
- public class CURRENCY
- {
- ///
- /// The value of the int64 field specified in [MS-OAUT] section 2.2.24.
- ///
- public ulong Value { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/ClipboardData.cs b/SabreTools.Models/OLE/ClipboardData.cs
deleted file mode 100644
index aa239ca..0000000
--- a/SabreTools.Models/OLE/ClipboardData.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The ClipboardData packet represents clipboard data
- ///
- ///
- public class ClipboardData
- {
- ///
- /// The total size in bytes of the and fields,
- /// not including padding (if any).
- ///
- public uint Size { get; set; }
-
- ///
- /// An application-specific identifier for the format of the data in the
- /// field.
- ///
- public uint Format { get; set; }
-
- ///
- /// MUST be an array of bytes, followed by zero padding to a multiple of 4 bytes
- ///
- public byte[]? Data { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/CodePageString.cs b/SabreTools.Models/OLE/CodePageString.cs
deleted file mode 100644
index 8730089..0000000
--- a/SabreTools.Models/OLE/CodePageString.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The CodePageString packet represents a string whose encoding depends on the
- /// value of the property set's CodePage property.
- ///
- ///
- public class CodePageString
- {
- ///
- /// The size in bytes of the field, including the null terminator,
- /// but not including padding (if any). If the property set's CodePage property
- /// has the value CP_WINUNICODE (0x04B0), then the value MUST be a multiple of 2
- ///
- public uint Size { get; set; }
-
- ///
- /// If is zero, this field MUST be zero bytes in length. If
- /// is nonzero and the CodePage property set's CodePage property has the value CP_WINUNICODE (0x04B0),
- /// then the value MUST be a null-terminated array of 16-bit Unicode characters, followed by zero
- /// padding to a multiple of 4 bytes. If is nonzero and the property set's CodePage
- /// property has any other value, it MUST be a null-terminated array of 8-bit characters from the code
- /// page identified by the CodePage property, followed by zero padding to a multiple of 4 bytes. The
- /// string represented by this field MAY contain embedded or additional trailing null characters and
- /// an OLEPS implementation MUST be able to handle such strings. However, the manner in which
- /// strings with embedded or additional trailing null characters are presented by the implementation
- /// to an application is implementation-specific. For maximum interoperability, an OLEPS
- /// implementation SHOULD NOT write strings with embedded or trailing null characters unless
- /// specifically requested to do so by an application.
- ///
- public string? Characters { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/Constants.cs b/SabreTools.Models/OLE/Constants.cs
deleted file mode 100644
index 6743352..0000000
--- a/SabreTools.Models/OLE/Constants.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- public static class Constants
- {
- #region Format IDs
-
- public const string SummaryInformationFMTIDString = "F29F85E0-4FF9-1068-AB91-08002B27B3D9";
- public static readonly GUID SummaryInformationFMTIDGUID = new()
- {
- Data1 = 0xF29F85E0,
- Data2 = 0x4FF9,
- Data3 = 0x1068,
- Data4 = [0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9],
- };
-
- public const string DocSummaryInformationFMTIDString = "D5CDD502-2E9C-101B-9397-08002B2CF9AE";
- public static readonly GUID DocSummaryInformationFMTIDGUID = new()
- {
- Data1 = 0xD5CDD502,
- Data2 = 0x2E9C,
- Data3 = 0x101B,
- Data4 = [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE],
- };
-
- public const string UserDefinedPropertiesFMTIDString = "D5CDD502-2E9C-101B-9397-08002B2CF9AE";
- public static readonly GUID UserDefinedPropertiesFMTIDGUID = new()
- {
- Data1 = 0xD5CDD502,
- Data2 = 0x2E9C,
- Data3 = 0x101B,
- Data4 = [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE],
- };
-
- public const string GlobalInfoFMTIDString = "56616F00-C154-11CE-8553-00AA00A1F95B";
- public static readonly GUID GlobalInfoFMTIDGUID = new()
- {
- Data1 = 0x56616F00,
- Data2 = 0xC154,
- Data3 = 0x11CE,
- Data4 = [0x85, 0x53, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x5B],
- };
-
- public const string ImageContentsFMTIDString = "556616400-C154-11CE-8553-00AA00A1F95B";
- public static readonly GUID ImageContentsFMTIDGUID = new()
- {
- Data1 = 0x56616F00,
- Data2 = 0xC154,
- Data3 = 0x11CE,
- Data4 = [0x85, 0x53, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x5B],
- };
-
- public const string ImageInfoFMTIDString = "556616400-C154-11CE-8553-00AA00A1F95B";
- public static readonly GUID ImageInfoFMTIDGUID = new()
- {
- Data1 = 0x56616F00,
- Data2 = 0xC154,
- Data3 = 0x11CE,
- Data4 = [0x85, 0x53, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x5B],
- };
-
- public const string PropertyBagFMTIDString = "20001801-5DE6-11D1-8E38-00C04FB9386D";
- public static readonly GUID PropertyBagFMTIDGUID = new()
- {
- Data1 = 0x20001801,
- Data2 = 0x5DE6,
- Data3 = 0x11D1,
- Data4 = [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D],
- };
-
- #endregion
-
- #region Stream or Storage Names
-
- public static readonly string SummaryInformationName = (byte)0x05 + "SummaryInformation";
-
- public static readonly string DocSummaryInformationName = (byte)0x05 + "DocumentSummaryInformation";
-
- public static readonly string UserDefinedPropertiesName = (byte)0x05 + "DocumentSummaryInformation";
-
- public static readonly string GlobalInfoName = (byte)0x05 + "GlobalInfo";
-
- public static readonly string ImageContentsName = (byte)0x05 + "ImageContents";
-
- public static readonly string ImageInfoName = (byte)0x05 + "ImageInfo";
-
- public const string ControlStreamName = "{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}";
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/OLE/ControlStream.cs b/SabreTools.Models/OLE/ControlStream.cs
deleted file mode 100644
index a16f091..0000000
--- a/SabreTools.Models/OLE/ControlStream.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// A file that has one or more property sets associated with it through the alternate
- /// stream binding MUST have a control stream, which is an alternate stream with the name
- /// "{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}". This stream MUST contain the following packet.
- ///
- ///
- public class ControlStream
- {
- ///
- /// MUST be set to zero, and nonzero values MUST be rejected.
- ///
- public ushort Reserved1 { get; set; }
-
- ///
- /// MUST be set to zero, and MUST be ignored.
- ///
- public ushort Reserved2 { get; set; }
-
- ///
- /// An application-provided value that MUST NOT be interpreted by the
- /// OLEPS implementation. If the application did not provide a value,
- /// it SHOULD be set to zero.
- ///
- public uint ApplicationState { get; set; }
-
- ///
- /// An application-provided value that MUST NOT be interpreted by the
- /// OLEPS implementation. If the application did not provide a value,
- /// it SHOULD be absent.
- ///
- public GUID? CLSID { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/DATE.cs b/SabreTools.Models/OLE/DATE.cs
deleted file mode 100644
index 4fc7ed4..0000000
--- a/SabreTools.Models/OLE/DATE.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The DATE (Packet Version) packet represents a DATE as specified in [MS-OAUT]
- /// section 2.2.25
- ///
- ///
- public class DATE
- {
- ///
- /// The value of the DATE is an 8-byte IEEE floating-point number, as specified in
- /// [MS-OAUT] section 2.2.25.
- ///
- public ulong Value { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/DECIMAL.cs b/SabreTools.Models/OLE/DECIMAL.cs
deleted file mode 100644
index c8b6541..0000000
--- a/SabreTools.Models/OLE/DECIMAL.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The DECIMAL (Packet Version) packet represents a DECIMAL as specified in [MS-OAUT] section
- /// 2.2.26
- ///
- ///
- public class DECIMAL
- {
- ///
- /// MUST be set to zero and MUST be ignored
- ///
- public ushort Reserved { get; set; }
-
- ///
- /// The value of the scale field specified in [MS-OAUT] section 2.2.26
- ///
- public byte Scale { get; set; }
-
- ///
- /// The value of the sign field specified in [MS-OAUT] section 2.2.26
- ///
- public byte Sign { get; set; }
-
- ///
- /// The value of the Hi32 field specified in [MS-OAUT] section 2.2.26
- ///
- public uint Hi32 { get; set; }
-
- ///
- /// The value of the Lo64 field specified in [MS-OAUT] section 2.2.26
- ///
- public ulong Lo64 { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/Dictionary.cs b/SabreTools.Models/OLE/Dictionary.cs
deleted file mode 100644
index 6480443..0000000
--- a/SabreTools.Models/OLE/Dictionary.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The Dictionary packet represents all mappings between property identifiers and
- /// property names in a property set
- ///
- ///
- public class Dictionary
- {
- ///
- /// n unsigned integer representing the number of entries in the Dictionary
- ///
- public uint NumEntries { get; set; }
-
- ///
- /// All Entry fields MUST be a sequence of DictionaryEntry packets. Entries are
- /// not required to appear in any particular order.
- ///
- public DictionaryEntry[]? Entries { get; set; }
-
- // Padding (variable): Padding, if necessary, to a total length that is a multiple of 4 bytes.
- // Padding would be after each dictionary entry
- }
-}
diff --git a/SabreTools.Models/OLE/DictionaryEntry.cs b/SabreTools.Models/OLE/DictionaryEntry.cs
deleted file mode 100644
index 149c2e4..0000000
--- a/SabreTools.Models/OLE/DictionaryEntry.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The DictionaryEntry packet represents a mapping between a property identifier and a
- /// property name
- ///
- ///
- public class DictionaryEntry
- {
- ///
- /// An unsigned integer representing a property identifier. MUST be a valid
- /// PropertyIdentifier value in the range 0x00000002 to 0x7FFFFFFF, inclusive
- /// (this specifically excludes the property identifiers for any of the special
- /// properties specified in section 2.18).
- ///
- public PropertyIdentifier PropertyIdentifier { get; set; }
-
- ///
- /// If the property set's CodePage property has the value CP_WINUNICODE (0x04B0),
- /// MUST be the length of the Name field in 16-bit Unicode characters, including
- /// the null terminator but not including padding (if any). Otherwise, MUST be the
- /// length of the Name field in 8-bit characters, including the null terminator.
- ///
- public uint Length { get; set; }
-
- ///
- /// If the property set's CodePage property has the value CP_WINUNICODE (0x04B0),
- /// MUST be a null-terminated array of 16-bit Unicode characters, followed by zero
- /// padding to a multiple of 4 bytes. Otherwise, MUST be a null-terminated array of
- /// 8-bit characters from the code page identified by the CodePage property and MUST
- /// NOT be padded.
- ///
- public string? Name { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/Enums.cs b/SabreTools.Models/OLE/Enums.cs
deleted file mode 100644
index c4dae7f..0000000
--- a/SabreTools.Models/OLE/Enums.cs
+++ /dev/null
@@ -1,503 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The PropertyIdentifier data type represents the property identifier of a property in a property set
- ///
- ///
- /// The SummaryInformation property set format, identified by FMTID_SummaryInformation
- /// ({F29F85E0-4FF9-1068-AB91-08002B27B3D9}), represents generic properties of a document. The properties
- /// specific to the SummaryInformation property set are specified in the following table. Except where
- /// otherwise stated, a SummaryInformation property set SHOULD have all of these properties, and SHOULD
- /// NOT have any other properties, except for the special properties specified in section 2.18.
- ///
- ///
- public enum PropertyIdentifier : uint
- {
- ///
- /// Property identifier for the Dictionary property
- ///
- DICTIONARY_PROPERTY_IDENTIFIER = 0x00000000,
-
- ///
- /// Property identifier for the CodePage property
- ///
- CODEPAGE_PROPERTY_IDENTIFIER = 0x00000001,
-
- ///
- /// Property identifier for the Locale property
- ///
- LOCALE_PROPERTY_IDENTIFIER = 0x80000000,
-
- ///
- /// Property identifier for the Behavior property
- ///
- BEHAVIOR_PROPERTY_IDENTIFIER = 0x80000003,
-
- #region SummaryInformation
-
- ///
- /// The title of the document.
- ///
- /// VT_LPSTR
- PIDSI_TITLE = 0x00000002,
-
- ///
- /// The subject of the document.
- ///
- /// VT_LPSTR
- PIDSI_SUBJECT = 0x00000003,
-
- ///
- /// The author of the document.
- ///
- /// VT_LPSTR
- PIDSI_AUTHOR = 0x00000004,
-
- ///
- /// Keywords related to the document.
- ///
- /// VT_LPSTR
- PIDSI_KEYWORDS = 0x00000005,
-
- ///
- /// Comments related the document.
- ///
- /// VT_LPSTR
- PIDSI_COMMENTS = 0x00000006,
-
- ///
- /// The application-specific template from which the document was created.
- ///
- /// VT_LPSTR
- PIDSI_TEMPLATE = 0x00000007,
-
- ///
- /// The last author of the document.
- ///
- /// VT_LPSTR
- PIDSI_LASTAUTHOR = 0x00000008,
-
- ///
- /// An application-specific revision number for this version of the document.
- ///
- /// VT_LPSTR
- PIDSI_REVNUMBER = 0x00000009,
-
- ///
- /// A 64-bit unsigned integer indicating the total amount of time that
- /// has been spent editing the document in 100-nanosecond
- /// increments. MUST be encoded as a FILETIME by setting the
- /// dwLowDataTime field to the low 32-bits and the dwHighDateTime
- /// field to the high 32-bits.
- ///
- /// VT_FILETIME
- PIDSI_EDITTIME = 0x0000000A,
-
- ///
- /// The most recent time that the document was printed.
- ///
- /// VT_FILETIME
- PIDSI_LASTPRINTED = 0x0000000B,
-
- ///
- /// The time that the document was created.
- ///
- /// VT_FILETIME
- PIDSI_CREATE_DTM = 0x0000000C,
-
- ///
- /// The most recent time that the document was saved.
- ///
- /// VT_FILETIME
- PIDSI_LASTSAVE_DTM = 0x0000000D,
-
- ///
- /// The total number of pages in the document.
- ///
- /// VT_I4
- PIDSI_PAGECOUNT = 0x0000000E,
-
- ///
- /// The total number of words in the document.
- ///
- /// VT_I4
- PIDSI_WORDCOUNT = 0x0000000F,
-
- ///
- /// The total number of characters in the document.
- ///
- /// VT_I4
- PIDSI_CHARCOUNT = 0x00000010,
-
- ///
- /// Application-specific clipboard data containing a thumbnail
- /// representing the document's contents. MAY be absent.
- ///
- /// VT_CF
- PIDSI_THUMBNAIL = 0x00000011,
-
- ///
- /// The name of the application that was used to create the document.
- ///
- /// VT_LPSTR
- PIDSI_APPNAME = 0x00000012,
-
- ///
- /// A 32-bit signed integer representing a set of application-suggested
- /// access control flags with the following values:
- /// - 0x00000001: Password protected
- /// - 0x00000002: Read-only recommended
- /// - 0x00000004: Read-only enforced
- /// - 0x00000008: Locked for annotations
- ///
- /// VT_I4
- PIDSI_DOC_SECURITY = 0x00000013,
-
- #endregion
- }
-
- ///
- /// The PropertyType enumeration represents the type of a property in a property set. The set of types
- /// supported depends on the version of the property set, which is indicated by the Version field of the
- /// PropertySetStream packet. In addition, the property types not supported in simple property sets
- /// are specified as such. PropertyType is an enumeration, which MUST be one of the following values
- ///
- ///
- public enum PropertyType : ushort
- {
- ///
- /// Type is undefined, and the minimum property set version is 0
- ///
- VT_EMPTY = 0x0000,
-
- ///
- /// Type is null, and the minimum property set version is 0
- ///
- VT_NULL = 0x0001,
-
- ///
- /// Type is 16-bit signed integer, and the minimum property set version is 0
- ///
- VT_I2 = 0x0002,
-
- ///
- /// Type is 32-bit signed integer, and the minimum property set version is 0.
- ///
- VT_I4 = 0x0003,
-
- ///
- /// Type is 4-byte (single-precision) IEEE floating-point number, and the
- /// minimum property set version is 0.
- ///
- VT_R4 = 0x0004,
-
- ///
- /// Type is 8-byte (double-precision) IEEE floating-point number, and the
- /// minimum property set version is 0.
- ///
- VT_R8 = 0x0005,
-
- ///
- /// Type is CURRENCY, and the minimum property set version is 0.
- ///
- VT_CY = 0x0006,
-
- ///
- /// Type is DATE, and the minimum property set version is 0.
- ///
- VT_DATE = 0x0007,
-
- ///
- /// Type is CodePageString, and the minimum property set version is 0.
- ///
- VT_BSTR = 0x0008,
-
- ///
- /// Type is HRESULT, and the minimum property set version is 0.
- ///
- VT_ERROR = 0x000A,
-
- ///
- /// Type is VARIANT_BOOL, and the minimum property set version is 0.
- ///
- VT_BOOL = 0x000B,
-
- ///
- /// Type is DECIMAL, and the minimum property set version is 0.
- ///
- VT_DECIMAL = 0x000E,
-
- ///
- /// Type is 1-byte signed integer, and the minimum property set version
- /// is 1.
- ///
- VT_I1 = 0x0010,
-
- ///
- /// Type is 1-byte unsigned integer, and the minimum property set version
- /// is 0.
- ///
- VT_UI1 = 0x0011,
-
- ///
- /// Type is 2-byte unsigned integer, and the minimum property set version
- /// is 0.
- ///
- VT_UI2 = 0x0012,
-
- ///
- /// Type is 4-byte unsigned integer, and the minimum property set version
- /// is 0.
- ///
- VT_UI4 = 0x0013,
-
- ///
- /// Type is 8-byte signed integer, and the minimum property set version
- /// is 0.
- ///
- VT_I8 = 0x0014,
-
- ///
- /// Type is 8-byte unsigned integer, and the minimum property set version
- /// is 0.
- ///
- VT_UI8 = 0x0015,
-
- ///
- /// Type is 4-byte signed integer, and the minimum property set version
- /// is 1.
- ///
- VT_INT = 0x0016,
-
- ///
- /// Type is 4-byte unsigned integer, and the minimum property set version
- /// is 1.
- ///
- VT_UINT = 0x0017,
-
- ///
- /// Type is CodePageString, and the minimum property set version is 0.
- ///
- VT_LPSTR = 0x001E,
-
- ///
- /// Type is UnicodeString, and the minimum property set version is 0.
- ///
- VT_LPWSTR = 0x001F,
-
- ///
- /// Type is FILETIME, and the minimum property set version is 0.
- ///
- VT_FILETIME = 0x0040,
-
- ///
- /// Type is binary large object (BLOB), and the minimum property set
- /// version is 0.
- ///
- VT_BLOB = 0x0041,
-
- ///
- /// Type is Stream, and the minimum property set version is 0. VT_STREAM
- /// is not allowed in a simple property set.
- ///
- VT_STREAM = 0x0042,
-
- ///
- /// Type is Storage, and the minimum property set version is 0. VT_STORAGE
- /// is not allowed in a simple property set.
- ///
- VT_STORAGE = 0x0043,
-
- ///
- /// Type is Stream representing an Object in an application-specific manner,
- /// and the minimum property set version is 0. VT_STREAMED_Object is not
- /// allowed in a simple property set.
- ///
- VT_STREAMED_Object = 0x0044,
-
- ///
- /// Type is Storage representing an Object in an application-specific manner,
- /// and the minimum property set version is 0. VT_STORED_Object is not
- /// allowed in a simple property set.
- ///
- VT_STORED_Object = 0x0045,
-
- ///
- /// Type is BLOB representing an object in an application-specific manner.
- /// The minimum property set version is 0.
- ///
- VT_BLOB_Object = 0x0046,
-
- ///
- /// Type is PropertyIdentifier, and the minimum property set version is 0.
- ///
- VT_CF = 0x0047,
-
- ///
- /// Type is CLSID, and the minimum property set version is 0.
- ///
- VT_CLSID = 0x0048,
-
- ///
- /// Type is Stream with application-specific version GUID (VersionedStream).
- /// The minimum property set version is 0. VT_VERSIONED_STREAM is not allowed
- /// in a simple property set.
- ///
- VT_VERSIONED_STREAM = 0x0049,
-
- ///
- /// Type is Vector, and the minimum property set version is 0
- ///
- VT_VECTOR = 0x1000,
-
- ///
- /// Type is Vector of 1-byte unsigned integers, and the minimum property set version
- /// is 0.
- ///
- VT_VECTOR_UI1 = 0x1011,
-
- ///
- /// Type is Vector of 2-byte unsigned integers, and the minimum property set version
- /// is 0.
- ///
- VT_VECTOR_UI2 = 0x1012,
-
- ///
- /// Type is Vector of 4-byte unsigned integers, and the minimum property set version
- /// is 0.
- ///
- VT_VECTOR_UI4 = 0x1013,
-
- ///
- /// Type is Vector of 8-byte signed integers, and the minimum property set version
- /// is 0.
- ///
- VT_VECTOR_I8 = 0x1014,
-
- ///
- /// Type is Vector of 8-byte unsigned integers and the minimum property set version
- /// is 0.
- ///
- VT_VECTOR_UI8 = 0x1015,
-
- ///
- /// Type is Vector of CodePageString, and the minimum property set version is 0.
- ///
- VT_VECTOR_LPSTR = 0x101E,
-
- ///
- /// Type is Vector of UnicodeString, and the minimum property set version is 0.
- ///
- VT_VECTOR_LPWSTR = 0x101F,
-
- ///
- /// Type is Vector of FILETIME, and the minimum property set version is 0.
- ///
- VT_VECTOR_FILETIME = 0x1040,
-
- ///
- /// Type is Vector of PropertyIdentifier, and the minimum property set version is 0.
- ///
- VT_VECTOR_CF = 0x1047,
-
- ///
- /// Type is Vector of CLSID, and the minimum property set version is 0.
- ///
- VT_VECTOR_CLSID = 0x1048,
-
- ///
- /// Type is Array of 16-bit signed integers, and the minimum property set version
- /// is 1.
- ///
- VT_ARRAY_I2 = 0x2002,
-
- ///
- /// Type is Array of 32-bit signed integers, and the minimum property set version
- /// is 1.
- ///
- VT_ARRAY_I4 = 0x2003,
-
- ///
- /// Type is Array of 4-byte (single-precision) IEEE floating-point numbers, and the
- /// minimum property set version is 1.
- ///
- VT_ARRAY_R4 = 0x2004,
-
- ///
- /// Type is IEEE floating-point numbers, and the minimum property set version is 1.
- ///
- VT_ARRAY_R8 = 0x2005,
-
- ///
- /// Type is Array of CURRENCY, and the minimum property set version is 1.
- ///
- VT_ARRAY_CY = 0x2006,
-
- ///
- /// Type is Array of DATE, and the minimum property set version is 1.
- ///
- VT_ARRAY_DATE = 0x2007,
-
- ///
- /// Type is Array of CodePageString, and the minimum property set version is 1.
- ///
- VT_ARRAY_BSTR = 0x2008,
-
- ///
- /// Type is Array of HRESULT, and the minimum property set version is 1.
- ///
- VT_ARRAY_ERROR = 0x200A,
-
- ///
- /// Type is Array of VARIANT_BOOL, and the minimum property set version is 1.
- ///
- VT_ARRAY_BOOL = 0x200B,
-
- ///
- /// Type is Array of variable-typed properties, and the minimum property set
- /// version is 1
- ///
- VT_ARRAY_VARIANT = 0x200C,
-
- ///
- /// Type is Array of DECIMAL, and the minimum property set version is 1
- ///
- VT_ARRAY_DECIMAL = 0x200E,
-
- ///
- /// Type is Array of 1-byte signed integers, and the minimum property set
- /// version is 1
- ///
- VT_ARRAY_I1 = 0x2010,
-
- ///
- /// Type is Array of 1-byte unsigned integers, and the minimum property set
- /// version is 1
- ///
- VT_ARRAY_UI1 = 0x2011,
-
- ///
- /// Type is Array of 2-byte unsigned integers, and the minimum property set
- /// version is 1.
- ///
- VT_ARRAY_UI2 = 0x2012,
-
- ///
- /// Type is Array of 4-byte unsigned integers, and the minimum property set
- /// version is 1.
- ///
- VT_ARRAY_UI4 = 0x2013,
-
- ///
- /// Type is Array of 4-byte signed integers, and the minimum property set version
- /// is 1.
- ///
- VT_ARRAY_INT = 0x2016,
-
- ///
- /// Type is Array of 4-byte unsigned integers, and the minimum property set version
- /// is 1.
- ///
- VT_ARRAY_UINT = 0x2017,
- }
-}
diff --git a/SabreTools.Models/OLE/FILETIME.cs b/SabreTools.Models/OLE/FILETIME.cs
deleted file mode 100644
index ab4663c..0000000
--- a/SabreTools.Models/OLE/FILETIME.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The FILETIME (Packet Version) packet represents a FILETIME structure ([MS-DTYP] section 2.3.3
- ///
- ///
- public class FILETIME
- {
- ///
- /// The value of the dwLowDateTime field specified in [MS-DTYP] section 2.3.3.
- ///
- public uint LowDateTime { get; set; }
-
- ///
- /// The value of the dwHighDateTime field specified in [MS-DTYP] section 2.3.3.
- ///
- public uint HighDateTime { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/GUID.cs b/SabreTools.Models/OLE/GUID.cs
deleted file mode 100644
index dbf219d..0000000
--- a/SabreTools.Models/OLE/GUID.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The GUID (Packet Version) packet represents a GUID
- ///
- ///
- public class GUID
- {
- ///
- /// The value of the Data1 field specified in [MS-DTYP] section 2.3.4
- ///
- public uint Data1 { get; set; }
-
- ///
- /// The value of the Data2 field specified in [MS-DTYP] section 2.3.4
- ///
- public ushort Data2 { get; set; }
-
- ///
- /// The value of the Data3 field specified in [MS-DTYP] section 2.3.4
- ///
- public ushort Data3 { get; set; }
-
- ///
- /// The value of the Data4 field specified in [MS-DTYP] section 2.3.4
- ///
- public byte[]? Data4 { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/IndirectPropertyName.cs b/SabreTools.Models/OLE/IndirectPropertyName.cs
deleted file mode 100644
index c7f1689..0000000
--- a/SabreTools.Models/OLE/IndirectPropertyName.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The IndirectPropertyName packet represents the name of a stream or storage as used in the
- /// representation of the following property types in a non-simple property set: VT_STREAM (0x0042),
- /// VT_STORAGE (0x0043), VT_STREAMED_OBJECT (0x0044), VT_STORED_OBJECT (0x0044), and
- /// VT_VERSIONED_STREAM (0x0049). It MUST be represented as a CodePageString, and its value MUST
- /// be derived from the property identifier of the property represented according to the following
- /// Augmented Backus–Naur Form (ABNF) [RFC4234] syntax.
- ///
- /// Indirectproperty = "prop" propertyIdentifier
- ///
- /// Where PropertyIdentifier is the decimal string representation of the property identifier. This property
- /// identifier MUST be a valid PropertyIdentifier value and MUST NOT be the property identifier for any of
- /// the special properties specified in section 2.18.
- ///
- ///
- public class IndirectPropertyName : CodePageString { }
-}
diff --git a/SabreTools.Models/OLE/PropertyIdentifierAndOffset.cs b/SabreTools.Models/OLE/PropertyIdentifierAndOffset.cs
deleted file mode 100644
index 91a93ab..0000000
--- a/SabreTools.Models/OLE/PropertyIdentifierAndOffset.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The PropertyIdentifierAndOffset packet is used in the PropertySet packet to represent a
- /// property identifier and the byte offset of the property in the PropertySet packet
- ///
- ///
- public class PropertyIdentifierAndOffset
- {
- ///
- /// An unsigned integer representing the property identifier of a property
- /// in the property set. MUST be a valid PropertyIdentifier value.
- ///
- public PropertyIdentifier PropertyIdentifier { get; set; }
-
- ///
- /// An unsigned integer representing the offset in bytes from the beginning
- /// of the PropertySet packet to the beginning of the Property field for the
- /// property represented. MUST be a multiple of 4 bytes.
- ///
- public uint Offset { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/PropertySet.cs b/SabreTools.Models/OLE/PropertySet.cs
deleted file mode 100644
index 3056fbb..0000000
--- a/SabreTools.Models/OLE/PropertySet.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The PropertySet packet represents a property set.
- ///
- ///
- public class PropertySet
- {
- ///
- /// MUST be the total size in bytes of the PropertySet packet
- ///
- public uint Size { get; set; }
-
- ///
- /// An unsigned integer representing the number of properties in the
- /// property set.
- ///
- public uint NumProperties { get; set; }
-
- ///
- /// All PropertyIdentifierAndOffset fields MUST be a sequence of
- /// PropertyIdentifierAndOffset packets. The sequence MUST be in order of
- /// increasing value of the Offset field. Packets are not required to be
- /// in any particular order with regard to the value of the PropertyIdentifier
- /// field.
- ///
- public PropertyIdentifierAndOffset[]? PropertyIdentifierAndOffsets { get; set; }
-
- ///
- /// Each Property field is a sequence of property values, each of which MUST
- /// be represented by a TypedPropertyValue packet or a Dictionary packet in
- /// the special case of the Dictionary property.
- ///
- public object[]? Properties { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/PropertySetStream.cs b/SabreTools.Models/OLE/PropertySetStream.cs
deleted file mode 100644
index 19e44ac..0000000
--- a/SabreTools.Models/OLE/PropertySetStream.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The PropertySetStream packet specifies the stream format for simple property
- /// sets and the stream format for the CONTENTS stream in the Non-Simple Property
- /// Set Storage Format. A simple property set MUST be represented by a stream
- /// containing a PropertySetStream packet.
- ///
- /// The PropertySetStream packet usually represents exactly one property set, but
- /// for historical reasons, the DocumentSummaryInfo and UserDefinedProperties
- /// property sets are represented in the same stream.In this special case, a
- /// PropertySetStream might represent two property sets.
- ///
- /// An implementation SHOULD enforce a limit on the total size of a PropertySetStream
- /// packet. This limit MUST be at least 262,144 bytes, and for maximum interoperability
- /// SHOULD be 2,097,152 bytes.
- ///
- ///
- public class PropertySetStream
- {
- ///
- /// MUST be set to 0xFFFE
- ///
- public ushort ByteOrder { get; set; }
-
- ///
- /// An unsigned integer indicating the version number of the property set (or
- /// property sets). MUST be 0x0000 or 0x0001. An OLEPS implementation MUST
- /// accept version 0 property sets and SHOULD<5> also accept version 1 property
- /// sets. This field MUST be set to 0x0001 if the property set or property sets
- /// use any of the following features not supported by version 0 property sets:
- /// - Property types not supported for version 0 property sets, as specified in
- /// the PropertyType enumeration.
- /// - The Behavior property.
- ///
- /// If the property set does not use any of these features, this field SHOULD be
- /// set to 0x0000 for maximum interoperability.
- ///
- public ushort Version { get; set; }
-
- ///
- /// An implementation-specific value that SHOULD be ignored, except possibly to
- /// report this value to applications. It SHOULD NOT be interpreted by the
- /// OLEPS implementation.
- ///
- public uint SystemIdentifier { get; set; }
-
- ///
- /// MUST be a GUID (Packet Version) packet representing the associated CLSID of
- /// the property set (or property sets). If no CLSID is provided by the
- /// application, it SHOULD be set to GUID_NULL by default.
- ///
- public GUID? CLSID { get; set; }
-
- ///
- /// An unsigned integer indicating the number of property sets represented by
- /// this PropertySetStream structure. MUST be either 0x00000001 or 0x00000002.
- ///
- /// - 0x00000001: This structure contains one property set
- /// - 0x00000002: This structure contains two property sets.
- /// The optional fields for PropertySet 1 are present.
- ///
- public uint NumPropertySets { get; set; }
-
- ///
- /// A GUID that MUST be set to the FMTID of the property set represented by the
- /// field PropertySet 0. If NumPropertySets has the value 0x00000002, then this
- /// GUID MUST be set to FMTID_DocSummaryInformation
- /// ({D5CDD502-2E9C-101B-9397-08002B2CF9AE}).
- ///
- public GUID? FMTID0 { get; set; }
-
- ///
- /// An unsigned integer that MUST be set to the offset in bytes from the beginning
- /// of this PropertySetStream structure to the beginning of the field PropertySet 0.
- ///
- public uint Offset0 { get; set; }
-
- ///
- /// If NumPropertySets has the value 0x00000002, it MUST be set to FMTID_UserDefinedProperties
- /// ({D5CDD505-2E9C-101B-9397-08002B2CF9AE}). Otherwise, it MUST be absent.
- ///
- public GUID? FMTID1 { get; set; }
-
- ///
- /// If NumPropertySets has the value 0x00000002, it MUST be set to the offset in bytes
- /// from the beginning of this PropertySetStream structure to the beginning of the
- /// field PropertySet 1. Otherwise, it MUST be absent.
- ///
- public uint? Offset1 { get; set; }
-
- ///
- /// MUST be a PropertySet packet
- ///
- public PropertySet? PropertySet0 { get; set; }
-
- ///
- /// If NumPropertySets has the value 0x00000002, it MUST be a PropertySet packet.
- /// Otherwise, it MUST be absent.
- ///
- public PropertySet? PropertySet1 { get; set; }
-
- // Padding (variable): Contains additional padding added by the implementation.
- // If present, padding MUST be zeroes and MUST be ignored.
- }
-}
diff --git a/SabreTools.Models/OLE/TypedPropertyValue.cs b/SabreTools.Models/OLE/TypedPropertyValue.cs
deleted file mode 100644
index ebb993a..0000000
--- a/SabreTools.Models/OLE/TypedPropertyValue.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The TypedPropertyValue structure represents the typed value of a property in a property set
- ///
- ///
- public class TypedPropertyValue
- {
- ///
- /// MUST be a value from the PropertyType enumeration, indicating the type of
- /// property represented.
- ///
- public PropertyType Type { get; set; }
-
- ///
- /// MUST be set to zero, and any nonzero value SHOULD be rejected
- ///
- public ushort Padding { get; set; }
-
- ///
- /// MUST be the value of the property represented and serialized according to
- /// the value of Type as follows.
- ///
- /// See documentation for required lengths
- public byte[]? Value { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/UnicodeString.cs b/SabreTools.Models/OLE/UnicodeString.cs
deleted file mode 100644
index 3779dfa..0000000
--- a/SabreTools.Models/OLE/UnicodeString.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The UnicodeString packet represents a Unicode string.
- ///
- ///
- public class UnicodeString
- {
- ///
- /// The length in 16-bit Unicode characters of the field, including the null
- /// terminator, but not including padding (if any).
- ///
- public uint Length { get; set; }
-
- ///
- /// If is zero, this field MUST be zero bytes in length. If is
- /// nonzero, this field MUST be a null-terminated array of 16-bit Unicode characters, followed by zero
- /// padding to a multiple of 4 bytes. The string represented by this field SHOULD NOT contain
- /// embedded or additional trailing null characters.
- ///
- public string? Characters { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/VectorHeader.cs b/SabreTools.Models/OLE/VectorHeader.cs
deleted file mode 100644
index 1f35db9..0000000
--- a/SabreTools.Models/OLE/VectorHeader.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The VectorHeader packet represents the number of scalar values in a vector property type.
- ///
- ///
- public class VectorHeader
- {
- ///
- /// An unsigned integer indicating the number of scalar values following the header.
- ///
- public uint Length { get; set; }
- }
-}
diff --git a/SabreTools.Models/OLE/VersionedStream.cs b/SabreTools.Models/OLE/VersionedStream.cs
deleted file mode 100644
index da8f73d..0000000
--- a/SabreTools.Models/OLE/VersionedStream.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace SabreTools.Models.OLE
-{
- ///
- /// The VersionedStream packet represents a stream with an application-specific version GUID.
- ///
- ///
- public class VersionedStream
- {
- ///
- /// MUST be a GUID (Packet Version).
- ///
- public GUID? VersionGuid { get; set; }
-
- ///
- /// MUST be an IndirectPropertyName.
- ///
- public IndirectPropertyName? StreamName { get; set; }
- }
-}
diff --git a/SabreTools.Models/PlayJ/AudioFile.cs b/SabreTools.Models/PlayJ/AudioFile.cs
deleted file mode 100644
index 764accb..0000000
--- a/SabreTools.Models/PlayJ/AudioFile.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// PlayJ audio file / CDS entry
- ///
- public sealed class AudioFile
- {
- ///
- /// Header
- ///
- public AudioHeader? Header { get; set; }
-
- ///
- /// Unknown block 1
- ///
- public UnknownBlock1? UnknownBlock1 { get; set; }
-
- #region V1 Only
-
- ///
- /// Value referred to by
- ///
- /// Typically 0x00000000
- public uint UnknownValue2 { get; set; }
-
- ///
- /// Unknown block 3 (V1 only)
- ///
- public UnknownBlock3? UnknownBlock3 { get; set; }
-
- #endregion
-
- #region V2 Only
-
- ///
- /// Number of data files embedded
- ///
- public uint DataFilesCount { get; set; }
-
- ///
- /// Data files (V2 only)
- ///
- public DataFile[]? DataFiles { get; set; }
-
- // After the data files is a block starting with 0x00000001
- // This block then contains highly repeating data, possible audio samples?
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/AudioHeader.cs b/SabreTools.Models/PlayJ/AudioHeader.cs
deleted file mode 100644
index a379d85..0000000
--- a/SabreTools.Models/PlayJ/AudioHeader.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// PlayJ audio header / CDS entry header
- ///
- /// V1 and V2 variants exist
- public abstract class AudioHeader
- {
- ///
- /// Signature (0x4B539DFF)
- ///
- public uint Signature { get; set; }
-
- ///
- /// Version
- ///
- public uint Version { get; set; }
-
- // Header-specific data goes here
-
- ///
- /// Length of the track name
- ///
- public ushort TrackLength { get; set; }
-
- ///
- /// Track name (not null-terminated)
- ///
- public string? Track { get; set; }
-
- ///
- /// Length of the artist name
- ///
- public ushort ArtistLength { get; set; }
-
- ///
- /// Artist name (not null-terminated)
- ///
- public string? Artist { get; set; }
-
- ///
- /// Length of the album name
- ///
- public ushort AlbumLength { get; set; }
-
- ///
- /// Album name (not null-terminated)
- ///
- public string? Album { get; set; }
-
- ///
- /// Length of the writer name
- ///
- public ushort WriterLength { get; set; }
-
- ///
- /// Writer name (not null-terminated)
- ///
- public string? Writer { get; set; }
-
- ///
- /// Length of the publisher name
- ///
- public ushort PublisherLength { get; set; }
-
- ///
- /// Publisher name (not null-terminated)
- ///
- public string? Publisher { get; set; }
-
- ///
- /// Length of the label name
- ///
- public ushort LabelLength { get; set; }
-
- ///
- /// Label name (not null-terminated)
- ///
- public string? Label { get; set; }
-
- ///
- /// Length of the comments
- ///
- /// Optional field only in some samples
- public ushort CommentsLength { get; set; }
-
- ///
- /// Comments (not null-terminated)
- ///
- /// Optional field only in some samples
- public string? Comments { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/AudioHeaderV1.cs b/SabreTools.Models/PlayJ/AudioHeaderV1.cs
deleted file mode 100644
index 4577286..0000000
--- a/SabreTools.Models/PlayJ/AudioHeaderV1.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// PlayJ audio header / CDS entry header (V1)
- ///
- public sealed class AudioHeaderV1 : AudioHeader
- {
- ///
- /// Download track ID
- ///
- /// 0xFFFFFFFF if unset
- public uint TrackID { get; set; }
-
- ///
- /// Offset to unknown data block 1
- ///
- public uint UnknownOffset1 { get; set; }
-
- ///
- /// Offset to unknown data block 2
- ///
- public uint UnknownOffset2 { get; set; }
-
- ///
- /// Offset to unknown data block 3
- ///
- public uint UnknownOffset3 { get; set; }
-
- ///
- /// Unknown
- ///
- /// Always 0x00000001
- public uint Unknown1 { get; set; }
-
- ///
- /// Unknown
- ///
- /// Typically 0x00000001 in download titles
- public uint Unknown2 { get; set; }
-
- ///
- /// Track year
- ///
- /// 0xFFFFFFFF if unset
- public uint Year { get; set; }
-
- ///
- /// Track number
- ///
- public byte TrackNumber { get; set; }
-
- ///
- /// Subgenre
- ///
- public Subgenre Subgenre { get; set; }
-
- ///
- /// Track duration in seconds
- ///
- public uint Duration { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/AudioHeaderV2.cs b/SabreTools.Models/PlayJ/AudioHeaderV2.cs
deleted file mode 100644
index 5156a51..0000000
--- a/SabreTools.Models/PlayJ/AudioHeaderV2.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// PlayJ audio header / CDS entry header (V2)
- ///
- public sealed class AudioHeaderV2 : AudioHeader
- {
- ///
- /// Unknown (Always 0x00000001)
- ///
- public uint Unknown1 { get; set; }
-
- ///
- /// Unknown (Always 0x00000001)
- ///
- public uint Unknown2 { get; set; }
-
- ///
- /// Unknown (Always 0x00000000)
- ///
- public uint Unknown3 { get; set; }
-
- ///
- /// Unknown (Always 0x00000003)
- ///
- public uint Unknown4 { get; set; }
-
- ///
- /// Unknown (Always 0x00000001)
- ///
- public uint Unknown5 { get; set; }
-
- ///
- /// Unknown (Always 0x00000000)
- ///
- public uint Unknown6 { get; set; }
-
- ///
- /// Offset to unknown block 1, relative to the track ID
- ///
- public uint UnknownOffset1 { get; set; }
-
- ///
- /// Unknown
- ///
- public uint Unknown7 { get; set; }
-
- ///
- /// Unknown (Always 0x00000004)
- ///
- public uint Unknown8 { get; set; }
-
- ///
- /// Unknown (Always 0x00000002)
- ///
- public uint Unknown9 { get; set; }
-
- ///
- /// Offset to unknown block 1, relative to the track ID
- ///
- /// Always identical to ?
- public uint UnknownOffset2 { get; set; }
-
- ///
- /// Unknown
- ///
- public uint Unknown10 { get; set; }
-
- ///
- /// Unknown
- ///
- public uint Unknown11 { get; set; }
-
- ///
- /// Unknown (Always 0x0000005)
- ///
- public uint Unknown12 { get; set; }
-
- ///
- /// Unknown (Always 0x0000009)
- ///
- public uint Unknown13 { get; set; }
-
- ///
- /// Unknown
- ///
- public uint Unknown14 { get; set; }
-
- ///
- /// Unknown
- ///
- public uint Unknown15 { get; set; }
-
- ///
- /// Unknown (Always 0x0000000)
- ///
- public uint Unknown16 { get; set; }
-
- ///
- /// Unknown (Always 0x00000007)
- ///
- public uint Unknown17 { get; set; }
-
- ///
- /// Download track ID
- ///
- /// 0xFFFFFFFF if unset
- public uint TrackID { get; set; }
-
- ///
- /// Track year -- UNCONFIRMED
- ///
- /// 0xFFFFFFFF if unset
- public uint Year { get; set; }
-
- ///
- /// Track number
- ///
- public uint TrackNumber { get; set; }
-
- ///
- /// Unknown
- ///
- public uint Unknown18 { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/Constants.cs b/SabreTools.Models/PlayJ/Constants.cs
deleted file mode 100644
index 04cd2c4..0000000
--- a/SabreTools.Models/PlayJ/Constants.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- public static class Constants
- {
- public static readonly byte[] SignatureBytes = [0xFF, 0x9D, 0x53, 0x4B];
-
- public const uint SignatureUInt32 = 0x4B539DFF;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/DataFile.cs b/SabreTools.Models/PlayJ/DataFile.cs
deleted file mode 100644
index 30418e4..0000000
--- a/SabreTools.Models/PlayJ/DataFile.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// Embedded data file (V2 only?)
- ///
- public sealed class DataFile
- {
- ///
- /// Length of the data file name
- ///
- public ushort FileNameLength { get; set; }
-
- ///
- /// Data file name
- ///
- public string? FileName { get; set; }
-
- ///
- /// Length of the data
- ///
- public uint DataLength { get; set; }
-
- ///
- /// Data
- ///
- public byte[]? Data { get; set; }
-
- // Notes about Data:
- // - Each data block in the samples contains a GIF header
- // - Each GIF header contains an application extension: http://www.vurdalakov.net/misc/gif/application-extension
- // - Each GIF doesn't always stretch to the end of the data
- // - Remaining data seems to be padded as 0x00 (typically 8 bytes)
- // - GIF data is fully formed and may be copied to a standalone file
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/Enums.cs b/SabreTools.Models/PlayJ/Enums.cs
deleted file mode 100644
index ec9cd9e..0000000
--- a/SabreTools.Models/PlayJ/Enums.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- public enum Genre
- {
- ///
- /// Blues/Folk/Country
- ///
- BluesFolkCountry = 1,
-
- ///
- /// Jazz
- ///
- Jazz = 5,
-
- ///
- /// Reggae
- ///
- Reggae = 10,
-
- ///
- /// Classical
- ///
- Classical = 12,
-
- ///
- /// Electronic
- ///
- Electronic = 13,
-
- ///
- /// Pop/Rock
- ///
- PopRock = 15,
-
- ///
- /// World
- ///
- World = 16,
-
- ///
- /// Urban
- ///
- Urban = 17,
-
- ///
- /// Latin
- ///
- Latin = 18,
-
- ///
- /// Soundtrack/Other
- ///
- SoundtrackOther = 20,
-
- ///
- /// New Age
- ///
- NewAge = 21,
-
- ///
- /// Spiritual
- ///
- Spiritual = 22,
-
- ///
- /// Sway & Tech
- ///
- SwayAndTech = 23,
-
- ///
- /// Jam Bands
- ///
- JamBands = 24,
-
- ///
- /// Comedy
- ///
- Comedy = 25,
-
- ///
- /// Brazilian
- ///
- Brazilian = 26,
- }
-
- // TODO: Fill out the remaining subgenres from the wayback machine
- ///
- /// Every subgenre is uniquely associated with a genre
- public enum Subgenre : byte
- {
- ///
- /// Blues/Folk/Country > Blues (Modern/Electric)
- ///
- BluesModernElectric = 2,
-
- ///
- /// Blues/Folk/Country > Blues (Modern/Acoustic)
- ///
- BluesModernAcoustic = 3,
-
- ///
- /// Blues/Folk/Country > Blues (Traditional)
- ///
- BluesTraditional = 4,
-
- ///
- /// Blues/Folk/Country > Folk (Traditional)
- ///
- FolkTraditional = 5,
-
- ///
- /// Blues/Folk/Country > Folk (Contemporary)
- ///
- FolkContemporary = 6,
-
- ///
- /// Blues/Folk/Country > Folk (Jazz)
- ///
- FolkJazz = 7,
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/Playlist.cs b/SabreTools.Models/PlayJ/Playlist.cs
deleted file mode 100644
index 65a6b5e..0000000
--- a/SabreTools.Models/PlayJ/Playlist.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// PlayJ playlist file
- ///
- public sealed class Playlist
- {
- ///
- /// Playlist header
- ///
- public PlaylistHeader? Header { get; set; }
-
- ///
- /// Embedded audio files / headers
- ///
- public AudioFile[]? AudioFiles { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/PlaylistHeader.cs b/SabreTools.Models/PlayJ/PlaylistHeader.cs
deleted file mode 100644
index 7a90588..0000000
--- a/SabreTools.Models/PlayJ/PlaylistHeader.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// PlayJ playlist header
- ///
- public sealed class PlaylistHeader
- {
- ///
- /// Number of tracks contained within the playlist
- ///
- public uint TrackCount { get; set; }
-
- ///
- /// 52 bytes of unknown data
- ///
- public byte[]? Data { get; set; }
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/UnknownBlock1.cs b/SabreTools.Models/PlayJ/UnknownBlock1.cs
deleted file mode 100644
index 9494c39..0000000
--- a/SabreTools.Models/PlayJ/UnknownBlock1.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// Data referred to by or
- ///
- public sealed class UnknownBlock1
- {
- ///
- /// Length of the following data block
- ///
- public uint Length { get; set; }
-
- ///
- /// Unknown data
- ///
- public byte[]? Data { get; set; }
-
- // Notes about Data:
- // - Might be UInt16 offset and UInt16 length pairs
- // - Might be relevant to ad data
- // - Might be relevant to encryption
- // - Highly repeating patterns in the values with only a few differences
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/PlayJ/UnknownBlock3.cs b/SabreTools.Models/PlayJ/UnknownBlock3.cs
deleted file mode 100644
index 691aaa1..0000000
--- a/SabreTools.Models/PlayJ/UnknownBlock3.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace SabreTools.Models.PlayJ
-{
- ///
- /// Data referred to by
- ///
- public sealed class UnknownBlock3
- {
- ///
- /// Unknown data
- ///
- public byte[]? Data { get; set; }
-
- // Notes about Data:
- // - This may be where the encrypted audio samples live
- // - It is also possible that it's where the ad data lives and samples follow
- // + See V2 for example of why this would be the case
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/RealArcade/Constants.cs b/SabreTools.Models/RealArcade/Constants.cs
deleted file mode 100644
index 8b2a2e4..0000000
--- a/SabreTools.Models/RealArcade/Constants.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace SabreTools.Models.RealArcade
-{
- public static class Constants
- {
- public static readonly byte[] MezzanineSignatureBytes = [0x58, 0x5A, 0x69, 0x70, 0x32, 0x2E, 0x30];
-
- public const string MezzanineSignatureString = "XZip2.0";
-
- public static readonly byte[] RgsSignatureBytes = [0x52, 0x41, 0x53, 0x47, 0x49, 0x32, 0x2E, 0x30];
-
- public const string RgsSignatureString = "RASGI2.0";
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/RealArcade/Mezzanine.cs b/SabreTools.Models/RealArcade/Mezzanine.cs
deleted file mode 100644
index 051db7c..0000000
--- a/SabreTools.Models/RealArcade/Mezzanine.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace SabreTools.Models.RealArcade
-{
- ///
- /// This is a placeholder model for future work
- ///
- public class Mezzanine
- {
-
- }
-}
diff --git a/SabreTools.Models/RealArcade/RgsFile.cs b/SabreTools.Models/RealArcade/RgsFile.cs
deleted file mode 100644
index fae6931..0000000
--- a/SabreTools.Models/RealArcade/RgsFile.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace SabreTools.Models.RealArcade
-{
- ///
- /// This is a placeholder model for future work
- ///
- public class RgsFile
- {
-
- }
-}
diff --git a/SabreTools.Models/StarForce/Constants.cs b/SabreTools.Models/StarForce/Constants.cs
deleted file mode 100644
index 5a33e0c..0000000
--- a/SabreTools.Models/StarForce/Constants.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace SabreTools.Models.StarForce
-{
- public static class Constants
- {
- public static readonly byte[] SignatureBytes = [0x53, 0x46, 0x46, 0x53];
-
- public const string SignatureString = "SFFS";
-
- public const uint SignatureUInt32 = 0x53464653;
- }
-}
\ No newline at end of file
diff --git a/SabreTools.Models/StarForce/FileEntry.cs b/SabreTools.Models/StarForce/FileEntry.cs
deleted file mode 100644
index eb738ce..0000000
--- a/SabreTools.Models/StarForce/FileEntry.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.StarForce
-{
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class FileEntry
- {
- ///
- /// MD5 hash of filename (not encrypted,)
- ///
- /// 0x10 bytes
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)]
- public byte[]? FilenameMD5Hash;
-
- ///
- /// Index of fileheader (encrypted with filename)
- ///
- public ulong FileHeaderIndex;
- }
-}
diff --git a/SabreTools.Models/StarForce/FileHeader.cs b/SabreTools.Models/StarForce/FileHeader.cs
deleted file mode 100644
index 60644e4..0000000
--- a/SabreTools.Models/StarForce/FileHeader.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace SabreTools.Models.StarForce
-{
- ///
- public sealed class FileHeader
- {
- ///
- /// Start of file content (encrypted with filename)
- ///
- public ulong FileContentStart { get; set; }
-
- ///
- /// File info (timestamps, size, data position, encrypted)
- ///
- /// Unknown format
- public byte[]? FileInfo { get; set; }
- }
-}
diff --git a/SabreTools.Models/StarForce/FileSystem.cs b/SabreTools.Models/StarForce/FileSystem.cs
deleted file mode 100644
index bb46491..0000000
--- a/SabreTools.Models/StarForce/FileSystem.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace SabreTools.Models.StarForce
-{
- ///
- /// SFFS consists of 2 major parts: the container files that contain the game
- /// content and a filesystem filter driver (sfvfs02.sys) that handles all file-io.
- /// When a game has SFFS'ed files and uses some file-io api like CreateFile, the
- /// SFFS filterdriver sees this request and handles it if needed.that way, SFFS is
- /// totally transparent to the game, since it never knows if the data is coming from
- /// real file API or from the SFFS filterdriver. during SF initialization, the
- /// SF-process registers itself as a SFFS process in a processid list, maintained
- /// from the filterdriver. Part of that registration are the names of the
- /// containerfiles, the process uses and an application key, that is needed to
- /// decrypt headerinfos. Note that SFFS itself is completly vm-free.
- ///
- ///
- public sealed class FileSystem
- {
- ///
- /// Header
- ///
- public Header? Header { get; set; }
-
- ///
- /// Files
- ///
- public FileEntry[]? Files { get; set; }
-
- ///
- /// File headers
- ///
- public FileHeader[]? FileHeaders { get; set; }
- }
-}
diff --git a/SabreTools.Models/StarForce/Header.cs b/SabreTools.Models/StarForce/Header.cs
deleted file mode 100644
index 3e3829f..0000000
--- a/SabreTools.Models/StarForce/Header.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace SabreTools.Models.StarForce
-{
- ///
- /// Header
- ///
- ///
- [StructLayout(LayoutKind.Sequential)]
- public sealed class Header
- {
- ///
- /// "SFFS"
- ///
- public uint Magic;
-
- ///
- /// Version (0x00000001)
- ///
- public uint Version;
-
- ///
- /// Number of files in the container (encrypted with application key).
- /// Minimal number here is usually 65h, so its not real file count
- /// in some cases, more like index size
- ///
- public ulong FileCount;
- }
-}