From f101df48aea565182051bfe741aa69c71e36a67c Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 26 Sep 2025 11:39:29 -0400 Subject: [PATCH] Migrate support file models to Serialization --- SabreTools.Models/AACS/CopyrightRecord.cs | 16 - .../AACS/DriveRevocationListEntry.cs | 25 - .../AACS/DriveRevocationListRecord.cs | 26 - .../AACS/DriveRevocationSignatureBlock.cs | 17 - .../AACS/EndOfMediaKeyBlockRecord.cs | 23 - SabreTools.Models/AACS/Enums.cs | 69 -- .../AACS/ExplicitSubsetDifferenceRecord.cs | 11 - SabreTools.Models/AACS/GenericRecord.cs | 13 - .../AACS/HostRevocationListEntry.cs | 25 - .../AACS/HostRevocationListRecord.cs | 29 - .../AACS/HostRevocationSignatureBlock.cs | 17 - SabreTools.Models/AACS/MediaKeyBlock.cs | 14 - SabreTools.Models/AACS/MediaKeyDataRecord.cs | 18 - SabreTools.Models/AACS/Record.cs | 28 - SabreTools.Models/AACS/SubsetDifference.cs | 23 - .../AACS/SubsetDifferenceIndexRecord.cs | 26 - .../AACS/TypeAndVersionRecord.cs | 32 - .../AACS/VerifyMediaKeyRecord.cs | 24 - SabreTools.Models/BDPlus/Constants.cs | 9 - SabreTools.Models/BDPlus/SVM.cs | 50 -- SabreTools.Models/Charts/SongIni.cs | 621 ------------------ SabreTools.Models/Charts/Tier.cs | 16 - SabreTools.Models/Charts/TitlesIni.cs | 18 - SabreTools.Models/CueSheets/CueFile.cs | 30 - SabreTools.Models/CueSheets/CueIndex.cs | 33 - SabreTools.Models/CueSheets/CueSheet.cs | 41 -- SabreTools.Models/CueSheets/CueTrack.cs | 63 -- SabreTools.Models/CueSheets/Enums.cs | 116 ---- SabreTools.Models/CueSheets/PostGap.cs | 28 - SabreTools.Models/CueSheets/PreGap.cs | 28 - .../DVD/AudioSubPictureAttributesTable.cs | 32 - .../AudioSubPictureAttributesTableEntry.cs | 23 - SabreTools.Models/DVD/CellAddressTable.cs | 27 - .../DVD/CellAddressTableEntry.cs | 34 - SabreTools.Models/DVD/Constants.cs | 9 - SabreTools.Models/DVD/Enums.cs | 56 -- SabreTools.Models/DVD/LanguageUnitTable.cs | 34 - .../DVD/LanguageUnitTableEntry.cs | 29 - .../DVD/ParentalManagementMasksTable.cs | 37 -- .../DVD/ParentalManagementMasksTableEntry.cs | 24 - SabreTools.Models/DVD/ProgramChainTable.cs | 28 - .../DVD/ProgramChainTableEntry.cs | 30 - SabreTools.Models/DVD/TitlesTable.cs | 27 - SabreTools.Models/DVD/TitlesTableEntry.cs | 46 -- SabreTools.Models/DVD/VOBUAddressMap.cs | 16 - SabreTools.Models/DVD/VideoManagerIFO.cs | 159 ----- SabreTools.Models/DVD/VideoTitleSetIFO.cs | 169 ----- SabreTools.Models/IRD/File.cs | 140 ---- SabreTools.Models/NoFilterAttribute.cs | 8 - SabreTools.Models/PIC/Constants.cs | 17 - SabreTools.Models/PIC/DiscInformation.cs | 34 - SabreTools.Models/PIC/DiscInformationUnit.cs | 22 - .../PIC/DiscInformationUnitBody.cs | 24 - .../PIC/DiscInformationUnitHeader.cs | 47 -- .../PIC/DiscInformationUnitTrailer.cs | 37 -- SabreTools.Models/PlayStation3/Constants.cs | 67 -- SabreTools.Models/PlayStation3/Enums.cs | 31 - SabreTools.Models/PlayStation3/SFB.cs | 109 --- SabreTools.Models/PlayStation3/SFO.cs | 55 -- SabreTools.Models/PlayStation3/SFOHeader.cs | 34 - .../PlayStation3/SFOIndexTableEntry.cs | 37 -- .../PlayStation4/AppPkgHeader.cs | 237 ------- SabreTools.Models/PlayStation4/Constants.cs | 11 - SabreTools.Models/RequiredAttribute.cs | 9 - SabreTools.Models/Xbox/Attribute.cs | 32 - SabreTools.Models/Xbox/Catalog.cs | 173 ----- SabreTools.Models/Xbox/Constants.cs | 201 ------ SabreTools.Models/Xbox/Image.cs | 25 - SabreTools.Models/Xbox/Package.cs | 162 ----- SabreTools.Models/Xbox/Rating.cs | 26 - SabreTools.Models/Xbox/Title.cs | 26 - SabreTools.Models/Xbox/XMID.cs | 37 -- SabreTools.Models/Xbox/XeMID.cs | 67 -- 73 files changed, 3937 deletions(-) delete mode 100644 SabreTools.Models/AACS/CopyrightRecord.cs delete mode 100644 SabreTools.Models/AACS/DriveRevocationListEntry.cs delete mode 100644 SabreTools.Models/AACS/DriveRevocationListRecord.cs delete mode 100644 SabreTools.Models/AACS/DriveRevocationSignatureBlock.cs delete mode 100644 SabreTools.Models/AACS/EndOfMediaKeyBlockRecord.cs delete mode 100644 SabreTools.Models/AACS/Enums.cs delete mode 100644 SabreTools.Models/AACS/ExplicitSubsetDifferenceRecord.cs delete mode 100644 SabreTools.Models/AACS/GenericRecord.cs delete mode 100644 SabreTools.Models/AACS/HostRevocationListEntry.cs delete mode 100644 SabreTools.Models/AACS/HostRevocationListRecord.cs delete mode 100644 SabreTools.Models/AACS/HostRevocationSignatureBlock.cs delete mode 100644 SabreTools.Models/AACS/MediaKeyBlock.cs delete mode 100644 SabreTools.Models/AACS/MediaKeyDataRecord.cs delete mode 100644 SabreTools.Models/AACS/Record.cs delete mode 100644 SabreTools.Models/AACS/SubsetDifference.cs delete mode 100644 SabreTools.Models/AACS/SubsetDifferenceIndexRecord.cs delete mode 100644 SabreTools.Models/AACS/TypeAndVersionRecord.cs delete mode 100644 SabreTools.Models/AACS/VerifyMediaKeyRecord.cs delete mode 100644 SabreTools.Models/BDPlus/Constants.cs delete mode 100644 SabreTools.Models/BDPlus/SVM.cs delete mode 100644 SabreTools.Models/Charts/SongIni.cs delete mode 100644 SabreTools.Models/Charts/Tier.cs delete mode 100644 SabreTools.Models/Charts/TitlesIni.cs delete mode 100644 SabreTools.Models/CueSheets/CueFile.cs delete mode 100644 SabreTools.Models/CueSheets/CueIndex.cs delete mode 100644 SabreTools.Models/CueSheets/CueSheet.cs delete mode 100644 SabreTools.Models/CueSheets/CueTrack.cs delete mode 100644 SabreTools.Models/CueSheets/Enums.cs delete mode 100644 SabreTools.Models/CueSheets/PostGap.cs delete mode 100644 SabreTools.Models/CueSheets/PreGap.cs delete mode 100644 SabreTools.Models/DVD/AudioSubPictureAttributesTable.cs delete mode 100644 SabreTools.Models/DVD/AudioSubPictureAttributesTableEntry.cs delete mode 100644 SabreTools.Models/DVD/CellAddressTable.cs delete mode 100644 SabreTools.Models/DVD/CellAddressTableEntry.cs delete mode 100644 SabreTools.Models/DVD/Constants.cs delete mode 100644 SabreTools.Models/DVD/Enums.cs delete mode 100644 SabreTools.Models/DVD/LanguageUnitTable.cs delete mode 100644 SabreTools.Models/DVD/LanguageUnitTableEntry.cs delete mode 100644 SabreTools.Models/DVD/ParentalManagementMasksTable.cs delete mode 100644 SabreTools.Models/DVD/ParentalManagementMasksTableEntry.cs delete mode 100644 SabreTools.Models/DVD/ProgramChainTable.cs delete mode 100644 SabreTools.Models/DVD/ProgramChainTableEntry.cs delete mode 100644 SabreTools.Models/DVD/TitlesTable.cs delete mode 100644 SabreTools.Models/DVD/TitlesTableEntry.cs delete mode 100644 SabreTools.Models/DVD/VOBUAddressMap.cs delete mode 100644 SabreTools.Models/DVD/VideoManagerIFO.cs delete mode 100644 SabreTools.Models/DVD/VideoTitleSetIFO.cs delete mode 100644 SabreTools.Models/IRD/File.cs delete mode 100644 SabreTools.Models/NoFilterAttribute.cs delete mode 100644 SabreTools.Models/PIC/Constants.cs delete mode 100644 SabreTools.Models/PIC/DiscInformation.cs delete mode 100644 SabreTools.Models/PIC/DiscInformationUnit.cs delete mode 100644 SabreTools.Models/PIC/DiscInformationUnitBody.cs delete mode 100644 SabreTools.Models/PIC/DiscInformationUnitHeader.cs delete mode 100644 SabreTools.Models/PIC/DiscInformationUnitTrailer.cs delete mode 100644 SabreTools.Models/PlayStation3/Constants.cs delete mode 100644 SabreTools.Models/PlayStation3/Enums.cs delete mode 100644 SabreTools.Models/PlayStation3/SFB.cs delete mode 100644 SabreTools.Models/PlayStation3/SFO.cs delete mode 100644 SabreTools.Models/PlayStation3/SFOHeader.cs delete mode 100644 SabreTools.Models/PlayStation3/SFOIndexTableEntry.cs delete mode 100644 SabreTools.Models/PlayStation4/AppPkgHeader.cs delete mode 100644 SabreTools.Models/PlayStation4/Constants.cs delete mode 100644 SabreTools.Models/RequiredAttribute.cs delete mode 100644 SabreTools.Models/Xbox/Attribute.cs delete mode 100644 SabreTools.Models/Xbox/Catalog.cs delete mode 100644 SabreTools.Models/Xbox/Constants.cs delete mode 100644 SabreTools.Models/Xbox/Image.cs delete mode 100644 SabreTools.Models/Xbox/Package.cs delete mode 100644 SabreTools.Models/Xbox/Rating.cs delete mode 100644 SabreTools.Models/Xbox/Title.cs delete mode 100644 SabreTools.Models/Xbox/XMID.cs delete mode 100644 SabreTools.Models/Xbox/XeMID.cs diff --git a/SabreTools.Models/AACS/CopyrightRecord.cs b/SabreTools.Models/AACS/CopyrightRecord.cs deleted file mode 100644 index eae8a28..0000000 --- a/SabreTools.Models/AACS/CopyrightRecord.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.AACS -{ - /// - /// This record type is undocumented but found in real media key blocks - /// - public sealed class CopyrightRecord : Record - { - /// - /// Null-terminated ASCII string representing the copyright - /// - [MarshalAs(UnmanagedType.LPStr)] - public string? Copyright; - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/DriveRevocationListEntry.cs b/SabreTools.Models/AACS/DriveRevocationListEntry.cs deleted file mode 100644 index 79b6ecc..0000000 --- a/SabreTools.Models/AACS/DriveRevocationListEntry.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.AACS -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class DriveRevocationListEntry - { - /// - /// A 2-byte Range value indicates the range of revoked ID’s starting - /// from the ID contained in the record. A value of zero in the Range - /// field indicates that only one ID is being revoked, a value of one - /// in the Range field indicates two ID’s are being revoked, and so on. - /// - public ushort Range; - - /// - /// A 6-byte Drive ID value identifying the Licensed Drive being revoked - /// (or the first in a range of Licensed Drives being revoked, in the - /// case of a non-zero Range value). - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[]? DriveID; - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/DriveRevocationListRecord.cs b/SabreTools.Models/AACS/DriveRevocationListRecord.cs deleted file mode 100644 index f4bb740..0000000 --- a/SabreTools.Models/AACS/DriveRevocationListRecord.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// A properly formatted type 3 or type 4 Media Key Block contains exactly - /// one Drive Revocation List Record. It follows the Host Revocation List - /// Record, although it may not immediately follow it. - /// - /// The Drive Revocation List Record is identical to the Host Revocation - /// List Record, except it has type 2016, and it contains Drive Revocation - /// List Entries, not Host Revocation List Entries. The Drive Revocation List - /// Entries refer to Drive IDs in the Drive Certificates. - /// - /// - public sealed class DriveRevocationListRecord : Record - { - /// - /// The total number of Drive Revocation List Entry fields that follow. - /// - public uint TotalNumberOfEntries { get; set; } - - /// - /// Revocation list entries - /// - public DriveRevocationSignatureBlock[]? SignatureBlocks { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/DriveRevocationSignatureBlock.cs b/SabreTools.Models/AACS/DriveRevocationSignatureBlock.cs deleted file mode 100644 index 25c8e88..0000000 --- a/SabreTools.Models/AACS/DriveRevocationSignatureBlock.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - public sealed class DriveRevocationSignatureBlock - { - /// - /// The number of Drive Revocation List Entry fields in the signature block. - /// - public uint NumberOfEntries { get; set; } - - /// - /// A list of 8-byte Host Drive List Entry fields, the length of this - /// list being equal to the number in the signature block. - /// - public DriveRevocationListEntry[]? EntryFields { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/EndOfMediaKeyBlockRecord.cs b/SabreTools.Models/AACS/EndOfMediaKeyBlockRecord.cs deleted file mode 100644 index d88af23..0000000 --- a/SabreTools.Models/AACS/EndOfMediaKeyBlockRecord.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// A properly formatted MKB shall contain an End of Media Key Block Record. - /// When a device encounters this Record it stops processing the MKB, using - /// whatever Km value it has calculated up to that point as the final Km for - /// that MKB (pending possible checks for correctness of the key, as - /// described previously). - /// - /// - public sealed class EndOfMediaKeyBlockRecord : Record - { - /// - /// AACS LA’s signature on the data in the Media Key Block up to, - /// but not including, this record. Devices depending on the Version - /// Number in the Type and Version Record must verify the signature. - /// Other devices may ignore the signature data. If any device - /// determines that the signature does not verify or is omitted, it - /// must refuse to use the Media Key. - /// - public byte[]? SignatureData { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/Enums.cs b/SabreTools.Models/AACS/Enums.cs deleted file mode 100644 index 51a615e..0000000 --- a/SabreTools.Models/AACS/Enums.cs +++ /dev/null @@ -1,69 +0,0 @@ -namespace SabreTools.Models.AACS -{ - public enum MediaKeyBlockType : uint - { - /// - /// (Type 3). This is a normal Media Key Block suitable for being recorded - /// on a AACS Recordable Media. Both Class I and Class II Licensed Products - /// use it to directly calculate the Media Key. - /// - Type3 = 0x00031003, - - /// - /// (Type 4). This is a Media Key Block that has been designed to use Key - /// Conversion Data (KCD). Thus, it is suitable only for pre-recorded media - /// from which the KCD is derived. Both Class I and Class II Licensed Products - /// use it to directly calculate the Media Key. - /// - Type4 = 0x00041003, - - /// - /// (Type 10). This is a Class II Media Key Block (one that has the functionality - /// of a Sequence Key Block). This can only be processed by Class II Licensed - /// Products; Class I Licensed Products are revoked in Type 10 Media Key Blocks - /// and cannot process them. This type does not contain the Host Revocation List - /// Record, the Drive Revocation List Record, and the Media Key Data Record, as - /// described in the following sections. It does contain the records shown in - /// Section 3.2.5.2, which are only processed by Class II Licensed Products. - /// - Type10 = 0x000A1003, - - /// - /// Type 2.0 Category C. - /// This is the Media Key Block Type found on "UHD" media (AACS v2.0) - /// - /// - Type20 = 0x48141003, - - /// - /// Type 2.1 Category C. - /// This is the Media Key Block Type found on "UHD" media (AACS v2.1) - /// - /// - Type21 = 0x48151003, - } - - public enum RecordType : byte - { - EndOfMediaKeyBlock = 0x02, - ExplicitSubsetDifference = 0x04, - MediaKeyData = 0x05, - SubsetDifferenceIndex = 0x07, - MediaKeyVariantData = 0x0C, - TypeAndVersion = 0x10, - DriveRevocationList = 0x20, - HostRevocationList = 0x21, - VerifyMediaKey = 0x81, - - // Not documented - Copyright = 0x7F, - - // Record types only found in UHD media (AACS v2) - // - Unknown0x28_AACS2 = 0x28, - DriveRevocationList_AACS2 = 0x30, - HostRevocationList_AACS2 = 0x31, - VerifyMediaKey_AACS2 = 0x86, - EmptyRecord0xF8_AACS2 = 0xF8, - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/ExplicitSubsetDifferenceRecord.cs b/SabreTools.Models/AACS/ExplicitSubsetDifferenceRecord.cs deleted file mode 100644 index 53a31ca..0000000 --- a/SabreTools.Models/AACS/ExplicitSubsetDifferenceRecord.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - public sealed class ExplicitSubsetDifferenceRecord : Record - { - /// - /// In this record, each subset-difference is encoded with 5 bytes. - /// - public SubsetDifference[]? SubsetDifferences { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/GenericRecord.cs b/SabreTools.Models/AACS/GenericRecord.cs deleted file mode 100644 index 418e86b..0000000 --- a/SabreTools.Models/AACS/GenericRecord.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// This represents any record that does not have a concrete model yet - /// - public sealed class GenericRecord : Record - { - /// - /// Unparsed data comprising the record after the header - /// - public byte[]? Data { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/HostRevocationListEntry.cs b/SabreTools.Models/AACS/HostRevocationListEntry.cs deleted file mode 100644 index eda3ae3..0000000 --- a/SabreTools.Models/AACS/HostRevocationListEntry.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.AACS -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class HostRevocationListEntry - { - /// - /// A 2-byte Range value indicates the range of revoked ID’s starting - /// from the ID contained in the record. A value of zero in the Range - /// field indicates that only one ID is being revoked, a value of one - /// in the Range field indicates two ID’s are being revoked, and so on. - /// - public ushort Range; - - /// - /// A 6-byte Host ID value identifying the host being revoked (or the - /// first in a range of hosts being revoked, in the case of a non-zero - /// Range value). - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[]? HostID; - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/HostRevocationListRecord.cs b/SabreTools.Models/AACS/HostRevocationListRecord.cs deleted file mode 100644 index 4647551..0000000 --- a/SabreTools.Models/AACS/HostRevocationListRecord.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// A properly formatted type 3 or type 4 Media Key Block shall have exactly - /// one Host Revocation List Record as its second record. This record provides - /// a list of hosts that have been revoked by the AACS LA. The AACS specification - /// is applicable to PC-based system where a Licensed Drive and PC Host act - /// together as the Recording Device and/or Playback Device for AACS Content. - /// AACS uses a drive-host authentication protocol for the host to verify the - /// integrity of the data received from the Licensed Drive, and for the Licensed - /// Drive to check the validity of the host application. The Type and Version - /// Record and the Host Revocation List Record are guaranteed to be the first two - /// records of a Media Key Block, to make it easier for Licensed Drives to extract - /// this data from an arbitrary Media Key Block. - /// - /// - public sealed class HostRevocationListRecord : Record - { - /// - /// The total number of Host Revocation List Entry fields that follow. - /// - public uint TotalNumberOfEntries { get; set; } - - /// - /// Revocation list entries - /// - public HostRevocationSignatureBlock[]? SignatureBlocks { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/HostRevocationSignatureBlock.cs b/SabreTools.Models/AACS/HostRevocationSignatureBlock.cs deleted file mode 100644 index 227317e..0000000 --- a/SabreTools.Models/AACS/HostRevocationSignatureBlock.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - public sealed class HostRevocationSignatureBlock - { - /// - /// The number of Host Revocation List Entry fields in the signature block. - /// - public uint NumberOfEntries { get; set; } - - /// - /// A list of 8-byte Host Revocation List Entry fields, the length of this - /// list being equal to the number in the signature block. - /// - public HostRevocationListEntry[]? EntryFields { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/MediaKeyBlock.cs b/SabreTools.Models/AACS/MediaKeyBlock.cs deleted file mode 100644 index 17f3f94..0000000 --- a/SabreTools.Models/AACS/MediaKeyBlock.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// A Media Key Block is formatted as a sequence of contiguous Records. - /// - /// - public sealed class MediaKeyBlock - { - /// - /// Records - /// - public Record[]? Records { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/MediaKeyDataRecord.cs b/SabreTools.Models/AACS/MediaKeyDataRecord.cs deleted file mode 100644 index 985190b..0000000 --- a/SabreTools.Models/AACS/MediaKeyDataRecord.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// This record gives the associated encrypted media key data for the - /// subset-differences identified in the Explicit Subset-Difference Record. - /// - /// - public sealed class MediaKeyDataRecord : Record - { - /// - /// Each subset difference has its associated 16 bytes in this - /// record, in the same order it is encountered in the subset-difference - /// record. This 16 bytes is the ciphertext value C in the media - /// key calculation. - /// - public byte[][]? MediaKeyData { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/Record.cs b/SabreTools.Models/AACS/Record.cs deleted file mode 100644 index f96af20..0000000 --- a/SabreTools.Models/AACS/Record.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// Each Record begins with a one-byte Record Type field, followed by a - /// three-byte Record Length field. - /// - /// The following subsections describe the currently defined Record types, - /// and how a device processes each. All multi-byte integers, including - /// the length field, are “Big Endian”; in other words, the most significant - /// byte comes first in the record. - /// - /// - public abstract class Record - { - /// - /// The Record Type field value indicates the type of the Record. - /// - public RecordType RecordType { get; set; } - - /// - /// The Record Length field value indicates the number of bytes in - /// the Record, including the Record Type and the Record Length - /// fields themselves. Record lengths are always multiples of 4 bytes. - /// - // UInt24 not UInt32 - public uint RecordLength { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/SubsetDifference.cs b/SabreTools.Models/AACS/SubsetDifference.cs deleted file mode 100644 index 9ea8ac5..0000000 --- a/SabreTools.Models/AACS/SubsetDifference.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.AACS -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class SubsetDifference - { - /// - /// The mask for u is given by the first byte. That byte is - /// treated as a number, the number of low-order 0-bits in - /// the mask. For example, the value 0x01 denotes a mask of - /// 0xFFFFFFFE; value 0x0A denotes a mask of 0xFFFFFC00. - /// - public byte Mask; - - /// - /// The last 4 bytes are the uv number, most significant - /// byte first. - /// - public uint Number; - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/SubsetDifferenceIndexRecord.cs b/SabreTools.Models/AACS/SubsetDifferenceIndexRecord.cs deleted file mode 100644 index 231a057..0000000 --- a/SabreTools.Models/AACS/SubsetDifferenceIndexRecord.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// This is a speed-up record which can be ignored by devices not wishing to - /// take advantage of it. It is a lookup table which allows devices to quickly - /// find their subset-difference in the Explicit Subset-Difference record, - /// without processing the entire record. This Subset-Difference Index record - /// is always present, and always precedes the Explicit Subset-Difference record - /// in the MKB, although it does not necessarily immediately precede it. - /// - /// - public sealed class SubsetDifferenceIndexRecord : Record - { - /// - /// The number of devices per index offset. - /// - public uint Span { get; set; } - - /// - /// These offsets refer to the offset within the following Explicit - /// Subset-Difference record, with 0 being the start of the record. - /// - // UInt24 not UInt32 - public uint[]? Offsets { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/TypeAndVersionRecord.cs b/SabreTools.Models/AACS/TypeAndVersionRecord.cs deleted file mode 100644 index 32c5fb2..0000000 --- a/SabreTools.Models/AACS/TypeAndVersionRecord.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// Devices, except for recording devices which are writing Media Key Block - /// Extensions, may ignore this record. Recording devices shall verify the - /// signature (see End of Media Key Block record) and use the Version Number - /// in this record to determine if a new Media Key BLock Extension is, in - /// fact, more recent than the Media Key Block Extension that is currently - /// on the media. - /// - /// - public sealed class TypeAndVersionRecord : Record - { - /// - /// For AACS applications, the MKBType field is one of three values. - /// It is not an error for a Type 3 Media Key Block to be used for - /// controlling access to AACS Content on pre- recorded media. In - /// this case, the device shall not use the KCD. - /// - public MediaKeyBlockType MediaKeyBlockType { get; set; } - - /// - /// The Version Number is a 32-bit unsigned integer. Each time the - /// licensing agency changes the revocation, it increments the version - /// number and inserts the new value in subsequent Media Key Blocks. - /// Thus, larger values indicate more recent Media Key Blocks. The - /// Version Numbers begin at 1; 0 is a special value used for test - /// Media Key Blocks. - /// - public uint VersionNumber { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/AACS/VerifyMediaKeyRecord.cs b/SabreTools.Models/AACS/VerifyMediaKeyRecord.cs deleted file mode 100644 index 1f23078..0000000 --- a/SabreTools.Models/AACS/VerifyMediaKeyRecord.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace SabreTools.Models.AACS -{ - /// - /// A properly formatted MKB shall have exactly one Verify Media Key Record - /// as its first record. The presence of the Verify Media Key Record in an MKB - /// is mandatory, but the use of the Record by a device is not mandatory. The - /// device may use the Verify Media Key Record to verify the correctness of a - /// given MKB, or of its processing of it. If everything is correct, the device - /// should observe the condition: - /// [AES_128D(vKm, C]msb_64 == 0x0123456789ABCDEF)] - /// where Km is the Media Key value. - /// - /// - public sealed class VerifyMediaKeyRecord : Record - { - /// - /// Bytes 4 through 19 of the Record contain the ciphertext value - /// Cv = AES-128E (Km, 0x0123456789ABCDEF || 0xXXXXXXXXXXXXXXXX) - /// where 0xXXXXXXXXXXXXXXXX is an arbitrary 8-byte value, and Km is - /// the correct final Media Key value. - /// - public byte[]? CiphertextValue { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/BDPlus/Constants.cs b/SabreTools.Models/BDPlus/Constants.cs deleted file mode 100644 index 0b357b9..0000000 --- a/SabreTools.Models/BDPlus/Constants.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace SabreTools.Models.BDPlus -{ - public static class Constants - { - public static readonly byte[] SignatureBytes = [0x42, 0x44, 0x53, 0x56, 0x4D, 0x5F, 0x43, 0x43]; - - public const string SignatureString = "BDSVM_CC"; - } -} \ No newline at end of file diff --git a/SabreTools.Models/BDPlus/SVM.cs b/SabreTools.Models/BDPlus/SVM.cs deleted file mode 100644 index 284f036..0000000 --- a/SabreTools.Models/BDPlus/SVM.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.BDPlus -{ - /// - public sealed class SVM - { - /// - /// "BDSVM_CC" - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] - public string? Signature; - - /// - /// Unknown data - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] - public byte[]? Unknown1 = new byte[5]; - - /// - /// Version year - /// - public ushort Year; - - /// - /// Version month - /// - public byte Month; - - /// - /// Version day - /// - public byte Day; - - /// - /// Unknown data - /// - public uint Unknown2; - - /// - /// Length - /// - public uint Length; - - /// - /// Length bytes of data - /// - public byte[]? Data { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/Charts/SongIni.cs b/SabreTools.Models/Charts/SongIni.cs deleted file mode 100644 index 3bdea0c..0000000 --- a/SabreTools.Models/Charts/SongIni.cs +++ /dev/null @@ -1,621 +0,0 @@ -using System; - -namespace SabreTools.Models.Charts -{ - /// - /// [song]/[Song] - public class SongIni - { - #region Song/Chart Metadata - - /// - /// Title of the song. - /// - /// name - public string? Name { get; set; } - - /// - /// Artist(s) or band(s) behind the song. - /// - /// artist - public string? Artist { get; set; } - - /// - /// Title of the album the song is featured in. - /// - /// album - public string? Album { get; set; } - - /// - /// Genre of the song. - /// - /// genre - public string? Genre { get; set; } - - /// - /// Sub-genre for the song. - /// - /// sub_genre - public string? SubGenre { get; set; } - - /// - /// Year of the song’s release. - /// - /// year - public string? Year { get; set; } - - /// - /// Community member responsible for charting the song. - /// - /// charter, frets - public string? Charter { get; set; } - - /// - /// Version number for the song. - /// - /// version - public long? Version { get; set; } - - /// - /// Track number of the song within the album it's from. - /// - /// album_track, track - public long? AlbumTrack { get; set; } - - /// - /// Track number of the song within the playlist/setlist it's from. - /// - /// playlist_track - public long? PlaylistTrack { get; set; } - - /// - /// Length of the song's audio in milliseconds. - /// - /// song_length - public long? SongLength { get; set; } - - /// - /// Timestamp in milliseconds where the song preview starts. - /// - /// preview_start_time - public long? PreviewStartTime { get; set; } - - /// - /// Timestamp in milliseconds that the preview should stop at. - /// - /// preview_end_time - public long? PreviewEndTime { get; set; } - - /// - /// Flavor text for this song, usually shown after picking the song or during loading. - /// - /// loading_phrase - public string? LoadingPhrase { get; set; } - - #endregion - - #region Song/Chart Metadata (Game-Specific) - - /// - /// (FoFiX) Hex color to use in the song screen for the cassette. - /// - /// cassettecolor - public string? CassetteColor { get; set; } - - /// - /// (FoFiX) Miscellaneous tags for the chart. - /// Only known valid value is `cover`. - /// - /// tags - public string? Tags { get; set; } - - /// - /// (PS) Two timestamps in milliseconds for preview start and end time. - /// Example: `55000 85000` - /// - /// preview - public long[]? Preview { get; set; } - - /// - /// (CH) Playlist that the song should show up in. - /// - /// playlist - public string? Playlist { get; set; } - - /// - /// (CH) Sub-playlist that the song should show up in. - /// - /// sub_playlist - public string? SubPlaylist { get; set; } - - /// - /// (CH) Indicates if this song is a modchart. - /// Meant for sorting purposes only. - /// - /// modchart - public bool? Modchart { get; set; } - - /// - /// (CH) Indicates if the song has lyrics or not. - /// Meant for sorting purposes only. - /// - /// lyrics - public bool? Lyrics { get; set; } - - #endregion - - #region Track Difficulties - - /// - /// Overall difficulty of the song. - /// - /// diff_band - public long? DiffBand { get; set; } - - /// - /// Difficulty of the Lead Guitar track. - /// - /// diff_guitar - public long? DiffGuitar { get; set; } - - /// - /// Difficulty of the 6-Fret Lead track. - /// - /// diff_guitarghl - public long? DiffGuitarGHL { get; set; } - - /// - /// Difficulty of the Guitar Co-op track. - /// - /// diff_guitar_coop - public long? DiffGuitarCoop { get; set; } - - /// - /// Difficulty of the 6-Fret Guitar Co-op track. - /// - /// diff_guitar_coop_ghl - public long? DiffGuitarCoopGHL { get; set; } - - /// - /// Difficulty of the Pro Guitar track. - /// - /// diff_guitar_real - public long? DiffGuitarReal { get; set; } - - /// - /// Difficulty of the Pro Guitar 22-fret track. - /// - /// diff_guitar_real_22 - public long? DiffGuitarReal22 { get; set; } - - /// - /// Difficulty of the Rhythm Guitar track. - /// - /// diff_rhythm - public long? DiffRhythm { get; set; } - - /// - /// Difficulty of the 6-Fret Rhythm Guitar track. - /// - /// diff_rhythm_ghl - public long? DiffRhythmGHL { get; set; } - - /// - /// Difficulty of the Bass Guitar track. - /// - /// diff_bass - public long? DiffBass { get; set; } - - /// - /// Difficulty of the 6-Fret Bass track. - /// - /// diff_bassghl - public long? DiffBassGHL { get; set; } - - /// - /// Difficulty of the Pro Bass track. - /// - /// diff_bass_real - public long? DiffBassReal { get; set; } - - /// - /// Difficulty of the Pro Bass 22-fret track. - /// - /// diff_bass_real_22 - public long? DiffBassReal22 { get; set; } - - /// - /// Difficulty of the Drums track. - /// - /// diff_drums - public long? DiffDrums { get; set; } - - /// - /// Difficulty of the Pro Drums track. - /// - /// diff_drums_real - public long? DiffDrumsReal { get; set; } - - /// - /// Difficulty of the Drums Real track. - /// - /// diff_drums_real_ps - public long? DiffDrumsRealPS { get; set; } - - /// - /// Difficulty of the Keys track. - /// - /// diff_keys - public long? DiffKeys { get; set; } - - /// - /// Difficulty of the Pro Keys track. - /// - /// diff_keys_real - public long? DiffKeysReal { get; set; } - - /// - /// Difficulty of the Keys Real track. - /// - /// diff_keys_real_ps - public long? DiffKeysRealPS { get; set; } - - /// - /// Difficulty of the Vocals track. - /// - /// diff_vocals - public long? DiffVocals { get; set; } - - /// - /// Difficulty of the Harmonies track. - /// - /// diff_vocals_harm - public long? DiffVocalsHarm { get; set; } - - /// - /// Difficulty of the Dance track. - /// - /// diff_dance - public long? DiffDance { get; set; } - - #endregion - - #region Chart Properties - - /// - /// Forces the Drums track to be Pro Drums. - /// - /// pro_drums, pro_drum (FoFiX) - public bool? ProDrums { get; set; } - - /// - /// Forces the Drums track to be 5-lane. - /// - /// five_lane_drums - public bool? FiveLaneDrums { get; set; } - - /// - /// Specifies a voice type for the singer (either "male" or "female"). - /// - /// vocal_gender - public string? VocalGender { get; set; } - - /// - /// Specifies a tuning for 17-fret Pro Guitar. - /// - /// real_guitar_tuning - public string? RealGuitarTuning { get; set; } - - /// - /// Specifies a tuning for 22-fret Pro Guitar. - /// - /// real_guitar_22_tuning - public string? RealGuitar22Tuning { get; set; } - - /// - /// Specifies a tuning for 17-fret Pro Bass. - /// - /// real_bass_tuning - public string? RealBassTuning { get; set; } - - /// - /// Specifies a tuning for 22-fret Pro Bass. - /// - /// real_bass_22_tuning - public string? RealBass22Tuning { get; set; } - - /// - /// Specifies the number of lanes for the right hand in Real Keys. - /// - /// real_keys_lane_count_right - public long? RealKeysLaneCountRight { get; set; } - - /// - /// Specifies the number of lanes for the left hand in Real Keys. - /// - /// real_keys_lane_count_left - public long? RealKeysLaneCountLeft { get; set; } - - /// - /// Delays the chart relative to the audio by the specified number of milliseconds. - /// Higher = later notes. Can be negative. - /// - /// delay - [Obsolete] - public long? Delay { get; set; } - - /// - /// Overrides the default sustain cutoff threshold with a specified value in ticks. - /// - /// sustain_cutoff_threshold - [Obsolete] - public long? SustainCutoffThreshold { get; set; } - - /// - /// Overrides the default HOPO threshold with a specified value in ticks. - /// - /// hopo_frequency - [Obsolete] - public long? HopoFrequency { get; set; } - - /// - /// Sets the HOPO threshold to be a 1/8th step. - /// - /// eighthnote_hopo - [Obsolete] - public bool? EighthNoteHopo { get; set; } - - /// - /// Overrides the .mid note number for Star Power on 5-Fret Guitar. - /// Valid values are 103 and 116. - /// - /// multiplier_note, star_power_note (PS) - [Obsolete] - public long? MultiplierNote { get; set; } - - #endregion - - #region Chart Properties (Game-Specific) - - /// - /// (PS) Sets 5 to 4 Lane Drums Fallback Note - /// - /// drum_fallback_blue - public bool? DrumFallbackBlue { get; set; } - - /// - /// (FoFiX) Marks a song as a tutorial and hides it from Quickplay. - /// - /// tutorial - public bool? Tutorial { get; set; } - - /// - /// (FoFiX) Marks a song as a boss battle. - /// - /// boss_battle - public bool? BossBattle { get; set; } - - /// - /// (FoFiX) Overrides the natural HOPO threshold using numbers from 0 to 5. - /// - /// hopofreq - [Obsolete] - public long? HopoFreq { get; set; } - - /// - /// (FoFiX) Sets the "early hit window" size. - /// Valid values are "none", "half", or "full". - /// - /// early_hit_window_size - public string? EarlyHitWindowSize { get; set; } - - /// - /// (CH) Sets whether or not end events in the chart will be respected. - /// - /// end_events - public bool? EndEvents { get; set; } - - /// - /// (PS) Enables .mid SysEx events for guitar sliders/tap notes. - /// - /// sysex_slider - public bool? SysExSlider { get; set; } - - /// - /// (PS) Enables .mid SysEx events for Real Drums hi-hat pedal control. - /// - /// sysex_high_hat_ctrl - public bool? SysExHighHatCtrl { get; set; } - - /// - /// (PS) Enables .mid SysEx events for Real Drums rimshot hits. - /// - /// sysex_rimshot - public bool? SysExRimshot { get; set; } - - /// - /// (PS) Enables .mid SysEx events for guitar open notes. - /// - /// sysex_open_bass - public bool? SysExOpenBass { get; set; } - - /// - /// (PS) Enables .mid SysEx events for Pro Guitar/Bass slide directions. - /// - /// sysex_pro_slide - public bool? SysExProSlide { get; set; } - - /// - /// (PS) Sound sample set index for guitar. - /// - /// guitar_type - public long? GuitarType { get; set; } - - /// - /// (PS) Sound sample set index for bass. - /// - /// bass_type - public long? BassType { get; set; } - - /// - /// (PS) Sound sample set index for drums. - /// - /// kit_type - public long? KitType { get; set; } - - /// - /// (PS) Sound sample set index for keys. - /// - /// keys_type - public long? KeysType { get; set; } - - /// - /// (PS) Sound sample set index for dance. - /// - /// dance_type - public long? DanceType { get; set; } - - #endregion - - #region Images and Other Resources - - /// - /// Name of an icon image to display for this song. - /// Included in either the chart folder or the game the chart was made for, or sourced from this repository of icons. - /// - /// icon - public string? Icon { get; set; } - - /// - /// Name for a background image file. - /// - /// background - public string? Background { get; set; } - - /// - /// Name for a background video file. - /// - /// video - public string? Video { get; set; } - - /// - /// Name for a background video file. - /// - /// video_loop - public bool? VideoLoop { get; set; } - - /// - /// Timestamp in milliseconds where playback of an included video will start. Can be negative. - /// This tag controls the time relative to the video, not relative to the chart. Negative values will delay the video, positive values will make the video be at a further point in when the chart starts. - /// - /// video_start_time - public long? VideoStartTime { get; set; } - - /// - /// Timestamp in milliseconds where playback of an included video will end. -1 means no time is specified. - /// This is assumed to also be relative to the video, not the chart. - /// - /// video_end_time - public long? VideoEndTime { get; set; } - - /// - /// Name for a cover image file. - /// - /// cover - public string? Cover { get; set; } - - #endregion - - #region Images and Other Resources (Game-Specific) - - /// - /// (PS) Name for banner A. - /// - /// link_name_a - public string? LinkNameA { get; set; } - - /// - /// (PS) Name for banner B. - /// - /// link_name_b - public string? LinkNameB { get; set; } - - /// - /// (PS) Link that clicking banner A will open. - /// - /// banner_link_a - public string? BannerLinkA { get; set; } - - /// - /// (PS) Link that clicking banner B will open. - /// - /// banner_link_b - public string? BannerLinkB { get; set; } - - #endregion - - #region Miscellaneous (Game-Specific) - - /// - /// (FoFiX) High score data. - /// - /// scores - public string? Scores { get; set; } - - /// - /// (FoFiX) Additional score data. - /// - /// scores_ext - public string? ScoresExt { get; set; } - - /// - /// (FoFiX) Play count. - /// - /// count - public long? Count { get; set; } - - /// - /// (PS) Player's rating of the song - /// - /// rating - public long? Rating { get; set; } - - /// - /// (FoFiX) Career ID for this song. - /// - /// unlock_id - public string? UnlockId { get; set; } - - /// - /// (FoFiX) The career ID that must be completed to unlock this song. - /// - /// unlock_require - public string? UnlockRequire { get; set; } - - /// - /// (FoFiX) Text to display if the song is locked. - /// - /// unlock_text - public string? UnlockText { get; set; } - - /// - /// (FoFiX) Indicates if the song is unlocked. - /// - /// unlock_completed - public long? UnlockCompleted { get; set; } - - /// - /// (Editor on Fire) Sets a velocity number for drums accent notes. - /// - /// eof_midi_import_drum_accent_velocity - public long? EoFMidiImportDrumAccentVelocity { get; set; } - - /// - /// (Editor on Fire) Sets a velocity number for drums ghost notes. - /// - /// eof_midi_import_drum_ghost_velocity - public long? EoFMidiImportDrumGhostVelocity { get; set; } - - #endregion - } -} \ No newline at end of file diff --git a/SabreTools.Models/Charts/Tier.cs b/SabreTools.Models/Charts/Tier.cs deleted file mode 100644 index ee36fca..0000000 --- a/SabreTools.Models/Charts/Tier.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace SabreTools.Models.Charts -{ - /// - public class Tier - { - /// - /// Display name of the tier. - /// - public string? Name { get; set; } - - /// - /// Name used for associating a song with this tier, and for checking unlock requirements. - /// - public string? UnlockId { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/Charts/TitlesIni.cs b/SabreTools.Models/Charts/TitlesIni.cs deleted file mode 100644 index e29433f..0000000 --- a/SabreTools.Models/Charts/TitlesIni.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace SabreTools.Models.Charts -{ - /// - /// [titles] - public class TitlesIni - { - /// - /// A space-separated list of .ini sections to include in the career. - /// - /// sections - public string[]? SectionList { get; set; } - - /// - /// This entry points to other sections that should be used as part of the career. - /// - public Tier[]? Sections { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/CueSheets/CueFile.cs b/SabreTools.Models/CueSheets/CueFile.cs deleted file mode 100644 index 136552a..0000000 --- a/SabreTools.Models/CueSheets/CueFile.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; - -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// Represents a single FILE in a cuesheet - /// - public class CueFile - { - /// - /// filename - /// - public string? FileName { get; set; } - - /// - /// filetype - /// - public CueFileType FileType { get; set; } - - /// - /// List of TRACK in FILE - /// - public CueTrack[]? Tracks { get; set; } - } -} diff --git a/SabreTools.Models/CueSheets/CueIndex.cs b/SabreTools.Models/CueSheets/CueIndex.cs deleted file mode 100644 index 19ebbb7..0000000 --- a/SabreTools.Models/CueSheets/CueIndex.cs +++ /dev/null @@ -1,33 +0,0 @@ -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// Represents a single INDEX in a TRACK - /// - public class CueIndex - { - /// - /// INDEX number, between 0 and 99 - /// - public int Index { get; set; } - - /// - /// Starting time of INDEX in minutes - /// - public int Minutes { get; set; } - - /// - /// Starting time of INDEX in seconds - /// - /// There are 60 seconds in a minute - public int Seconds { get; set; } - - /// - /// Starting time of INDEX in frames. - /// - /// There are 75 frames per second - public int Frames { get; set; } - } -} diff --git a/SabreTools.Models/CueSheets/CueSheet.cs b/SabreTools.Models/CueSheets/CueSheet.cs deleted file mode 100644 index 916ae1a..0000000 --- a/SabreTools.Models/CueSheets/CueSheet.cs +++ /dev/null @@ -1,41 +0,0 @@ -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// Represents a single cuesheet - /// - public class CueSheet - { - /// - /// CATALOG - /// - public string? Catalog { get; set; } - - /// - /// CDTEXTFILE - /// - public string? CdTextFile { get; set; } - - /// - /// PERFORMER - /// - public string? Performer { get; set; } - - /// - /// SONGWRITER - /// - public string? Songwriter { get; set; } - - /// - /// TITLE - /// - public string? Title { get; set; } - - /// - /// List of FILE in cuesheet - /// - public CueFile[]? Files { get; set; } - } -} diff --git a/SabreTools.Models/CueSheets/CueTrack.cs b/SabreTools.Models/CueSheets/CueTrack.cs deleted file mode 100644 index e451887..0000000 --- a/SabreTools.Models/CueSheets/CueTrack.cs +++ /dev/null @@ -1,63 +0,0 @@ -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// Represents a single TRACK in a FILE - /// - public class CueTrack - { - /// - /// Track number. The range is 1 to 99. - /// - public int Number { get; set; } - - /// - /// Track datatype - /// - public CueTrackDataType DataType { get; set; } - - /// - /// FLAGS - /// - public CueTrackFlag Flags { get; set; } - - /// - /// ISRC - /// - /// 12 characters in length - public string? ISRC { get; set; } - - /// - /// PERFORMER - /// - public string? Performer { get; set; } - - /// - /// SONGWRITER - /// - public string? Songwriter { get; set; } - - /// - /// TITLE - /// - public string? Title { get; set; } - - /// - /// PREGAP - /// - public PreGap? PreGap { get; set; } - - /// - /// List of INDEX in TRACK - /// - /// Must start with 0 or 1 and then sequential - public CueIndex[]? Indices { get; set; } - - /// - /// POSTGAP - /// - public PostGap? PostGap { get; set; } - } -} diff --git a/SabreTools.Models/CueSheets/Enums.cs b/SabreTools.Models/CueSheets/Enums.cs deleted file mode 100644 index c330ce2..0000000 --- a/SabreTools.Models/CueSheets/Enums.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; - -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// The audio or data file’s filetype - /// - public enum CueFileType - { - /// - /// Intel binary file (least significant byte first). Use for data files. - /// - BINARY, - - /// - /// Motorola binary file (most significant byte first). Use for data files. - /// - MOTOROLA, - - /// - /// Audio AIFF file (44.1KHz 16-bit stereo) - /// - AIFF, - - /// - /// Audio WAVE file (44.1KHz 16-bit stereo) - /// - WAVE, - - /// - /// Audio MP3 file (44.1KHz 16-bit stereo) - /// - MP3, - } - - /// - /// Track datatype - /// - public enum CueTrackDataType - { - /// - /// AUDIO, Audio/Music (2352) - /// - AUDIO, - - /// - /// CDG, Karaoke CD+G (2448) - /// - CDG, - - /// - /// MODE1/2048, CD-ROM Mode1 Data (cooked) - /// - MODE1_2048, - - /// - /// MODE1/2352 CD-ROM Mode1 Data (raw) - /// - MODE1_2352, - - /// - /// MODE2/2336, CD-ROM XA Mode2 Data - /// - MODE2_2336, - - /// - /// MODE2/2352, CD-ROM XA Mode2 Data - /// - MODE2_2352, - - /// - /// CDI/2336, CD-I Mode2 Data - /// - CDI_2336, - - /// - /// CDI/2352, CD-I Mode2 Data - /// - CDI_2352, - } - - /// - /// Special subcode flags within a track - /// - [Flags] - public enum CueTrackFlag - { - /// - /// DCP, Digital copy permitted - /// - DCP = 1 << 0, - - /// - /// 4CH, Four channel audio - /// - FourCH = 1 << 1, - - /// - /// PRE, Pre-emphasis enabled (audio tracks only) - /// - PRE = 1 << 2, - - /// - /// SCMS, Serial Copy Management System (not supported by all recorders) - /// - SCMS = 1 << 3, - - /// - /// DATA, set for data files. This flag is set automatically based on the track’s filetype - /// - DATA = 1 << 4, - } -} diff --git a/SabreTools.Models/CueSheets/PostGap.cs b/SabreTools.Models/CueSheets/PostGap.cs deleted file mode 100644 index 88046bc..0000000 --- a/SabreTools.Models/CueSheets/PostGap.cs +++ /dev/null @@ -1,28 +0,0 @@ -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// Represents POSTGAP information of a track - /// - public class PostGap - { - /// - /// Length of POSTGAP in minutes - /// - public int Minutes { get; set; } - - /// - /// Length of POSTGAP in seconds - /// - /// There are 60 seconds in a minute - public int Seconds { get; set; } - - /// - /// Length of POSTGAP in frames. - /// - /// There are 75 frames per second - public int Frames { get; set; } - } -} diff --git a/SabreTools.Models/CueSheets/PreGap.cs b/SabreTools.Models/CueSheets/PreGap.cs deleted file mode 100644 index 206376c..0000000 --- a/SabreTools.Models/CueSheets/PreGap.cs +++ /dev/null @@ -1,28 +0,0 @@ -/// -/// Information sourced from http://web.archive.org/web/20070221154246/http://www.goldenhawk.com/download/cdrwin.pdf -/// -namespace SabreTools.Models.CueSheets -{ - /// - /// Represents PREGAP information of a track - /// - public class PreGap - { - /// - /// Length of PREGAP in minutes - /// - public int Minutes { get; set; } - - /// - /// Length of PREGAP in seconds - /// - /// There are 60 seconds in a minute - public int Seconds { get; set; } - - /// - /// Length of PREGAP in frames. - /// - /// There are 75 frames per second - public int Frames { get; set; } - } -} diff --git a/SabreTools.Models/DVD/AudioSubPictureAttributesTable.cs b/SabreTools.Models/DVD/AudioSubPictureAttributesTable.cs deleted file mode 100644 index 06137d7..0000000 --- a/SabreTools.Models/DVD/AudioSubPictureAttributesTable.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class AudioSubPictureAttributesTable - { - /// - /// Number of title sets - /// - public ushort NumberOfTitleSets { get; set; } - - /// - /// Reserved - /// - public ushort Reserved { get; set; } - - /// - /// End address (last byte of last VTS_ATRT) - /// - public uint EndAddress { get; set; } - - /// - /// Offset to VTS_ATRT n - /// - /// NumberOfTitleSets entries - public uint[]? Offsets { get; set; } - - /// - /// Entries - /// - public AudioSubPictureAttributesTableEntry[]? Entries { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/AudioSubPictureAttributesTableEntry.cs b/SabreTools.Models/DVD/AudioSubPictureAttributesTableEntry.cs deleted file mode 100644 index 8913a8a..0000000 --- a/SabreTools.Models/DVD/AudioSubPictureAttributesTableEntry.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class AudioSubPictureAttributesTableEntry - { - /// - /// End address (EA) - /// - public uint EndAddress { get; set; } - - /// - /// VTS_CAT (copy of offset 022-025 of the VTS IFO file) - /// 0=unspecified, 1=Karaoke - /// - public uint Category { get; set; } - - /// - /// Copy of VTS attributes (offset 100 and on from the VTS IFO - /// file, usually 0x300 bytes long) - /// - public byte[]? AttributesCopy { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/CellAddressTable.cs b/SabreTools.Models/DVD/CellAddressTable.cs deleted file mode 100644 index f3b88a6..0000000 --- a/SabreTools.Models/DVD/CellAddressTable.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class CellAddressTable - { - /// - /// Number of VOB IDs - /// - public ushort NumberOfVOBIDs { get; set; } - - /// - /// Reserved - /// - public ushort Reserved { get; set; } - - /// - /// End address (last byte of last entry) - /// - public uint EndAddress { get; set; } - - /// - /// 12-byte entries - /// - /// NumberOfVOBIDs entries - public CellAddressTableEntry[]? Entries { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/CellAddressTableEntry.cs b/SabreTools.Models/DVD/CellAddressTableEntry.cs deleted file mode 100644 index 834071e..0000000 --- a/SabreTools.Models/DVD/CellAddressTableEntry.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class CellAddressTableEntry - { - /// - /// VOBidn - /// - public ushort VOBIdentity; - - /// - /// CELLidn - /// - public byte CellIdentity; - - /// - /// Reserved - /// - public byte Reserved; - - /// - /// Starting sector within VOB - /// - public uint StartingSectorWithinVOB; - - /// - /// Ending sector within VOB - /// - public uint EndingSectorWithinVOB; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/Constants.cs b/SabreTools.Models/DVD/Constants.cs deleted file mode 100644 index 1678478..0000000 --- a/SabreTools.Models/DVD/Constants.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace SabreTools.Models.DVD -{ - public static class Constants - { - public const string VideoManagerIFOSignature = "DVDVIDEO-VMG"; - - public const string VideoTitleSetIFOSignature = "DVDVIDEO-VTS"; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/Enums.cs b/SabreTools.Models/DVD/Enums.cs deleted file mode 100644 index b69a2de..0000000 --- a/SabreTools.Models/DVD/Enums.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; - -namespace SabreTools.Models.DVD -{ - [Flags] - public enum ProgramChainCategory : byte - { - MenuTypeTitle = 0x02, - Entry = 0x80, - } - - [Flags] - public enum TitleType : byte - { - /// - /// Uop0 Time play or search - /// - Uop0TimePlayOrSearch = 0x01, - - /// - /// Uop1 PTT play or search - /// - Uop1PTTPlayOrSearch = 0x02, - - /// - /// Jump/Link/Call commands - exist - /// - JumpLinkCallExist = 0x04, - - /// - /// Jump/Link/Call commands - button - /// - JumpLinkCallButton = 0x08, - - /// - /// Jump/Link/Call commands - pre/post - /// - JumpLinkCallPrePost = 0x10, - - /// - /// Jump/Link/Call commands - cell - /// - JumpLinkCallCell = 0x20, - - /// - /// 0=one_sequential_pgc - /// 1=not one_sequential (random, shuffle, stills, loops, or more than one pgc) - /// - ComplexPGC = 0x40, - - /// - /// Reserved - /// - Reserved = 0x80, - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/LanguageUnitTable.cs b/SabreTools.Models/DVD/LanguageUnitTable.cs deleted file mode 100644 index e0df4e8..0000000 --- a/SabreTools.Models/DVD/LanguageUnitTable.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class LanguageUnitTable - { - /// - /// Number of Language Units - /// - public ushort NumberOfLanguageUnits { get; set; } - - /// - /// Reserved - /// - public ushort Reserved { get; set; } - - /// - /// End address (last byte of last PGC in last LU) - /// relative to VMGM_PGCI_UT - /// - public uint EndAddress { get; set; } - - /// - /// Language Units - /// - /// NumberOfVOBIDs entries - public LanguageUnitTableEntry[]? Entries { get; set; } - - /// - /// Program Chains - /// - /// NumberOfVOBIDs entries - public ProgramChainTable[]? ProgramChains { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/LanguageUnitTableEntry.cs b/SabreTools.Models/DVD/LanguageUnitTableEntry.cs deleted file mode 100644 index 0790999..0000000 --- a/SabreTools.Models/DVD/LanguageUnitTableEntry.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class LanguageUnitTableEntry - { - /// - /// ISO639 language code - /// - public ushort ISO639LanguageCode; - - /// - /// Reserved for language code extension - /// - public byte Reserved; - - /// - /// Menu existence flag [80 = title] - /// - public byte MenuExistenceFlag; - - /// - /// Offset to VMGM_LU, relative to VMGM_PGCI_UT - /// - public uint LanguageUnitOffset; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/ParentalManagementMasksTable.cs b/SabreTools.Models/DVD/ParentalManagementMasksTable.cs deleted file mode 100644 index d9d8c1f..0000000 --- a/SabreTools.Models/DVD/ParentalManagementMasksTable.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - /// The VMG_PTL_MAIT is searched by country, and points to - /// the table for each country. - /// - /// - public sealed class ParentalManagementMasksTable - { - /// - /// Number of countries - /// - public ushort NumberOfCountries { get; set; } - - /// - /// Number of title sets (NTs) - /// - public ushort NumberOfTitleSets { get; set; } - - /// - /// End address (last byte of last PTL_MAIT) - /// - public uint EndAddress { get; set; } - - /// - /// Entries - /// - public ParentalManagementMasksTableEntry[]? Entries { get; set; } - - /// - /// The PTL_MAIT contains the 16-bit masks for the VMG and - /// all title sets for parental management level 8 followed - /// by the masks for level 7, and so on to level 1. - /// - public byte[][]? BitMasks { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/ParentalManagementMasksTableEntry.cs b/SabreTools.Models/DVD/ParentalManagementMasksTableEntry.cs deleted file mode 100644 index 3fc9927..0000000 --- a/SabreTools.Models/DVD/ParentalManagementMasksTableEntry.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class ParentalManagementMasksTableEntry - { - /// - /// Country code - /// - public ushort CountryCode; - - /// - /// Reserved - /// - public ushort Reserved; - - /// - /// Offset to PTL_MAIT - /// - public uint Offset; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/ProgramChainTable.cs b/SabreTools.Models/DVD/ProgramChainTable.cs deleted file mode 100644 index bb0e13e..0000000 --- a/SabreTools.Models/DVD/ProgramChainTable.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class ProgramChainTable - { - /// - /// Number of Program Chains - /// - public ushort NumberOfProgramChains { get; set; } - - /// - /// Reserved - /// - public ushort Reserved { get; set; } - - /// - /// End address (last byte of last PGC in this LU) - /// relative to VMGM_LU - /// - public uint EndAddress { get; set; } - - /// - /// Program Chains - /// - /// NumberOfProgramChains entries - public ProgramChainTableEntry[]? Entries { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/ProgramChainTableEntry.cs b/SabreTools.Models/DVD/ProgramChainTableEntry.cs deleted file mode 100644 index f30a0e3..0000000 --- a/SabreTools.Models/DVD/ProgramChainTableEntry.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class ProgramChainTableEntry - { - /// - /// PGC category - /// - [MarshalAs(UnmanagedType.U1)] - public ProgramChainCategory Category; - - /// - /// Unknown - /// - public byte Unknown; - - /// - /// Parental management mask - /// - public ushort ParentalManagementMask; - - /// - /// Offset to VMGM_PGC, relative to VMGM_LU - /// - public uint Offset; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/TitlesTable.cs b/SabreTools.Models/DVD/TitlesTable.cs deleted file mode 100644 index 2236dd8..0000000 --- a/SabreTools.Models/DVD/TitlesTable.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class TitlesTable - { - /// - /// Number of titles - /// - public ushort NumberOfTitles { get; set; } - - /// - /// Reserved - /// - public ushort Reserved { get; set; } - - /// - /// End address (last byte of last entry) - /// - public uint EndAddress { get; set; } - - /// - /// 12-byte entries - /// - /// NumberOfTitles entries - public TitlesTableEntry[]? Entries { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/TitlesTableEntry.cs b/SabreTools.Models/DVD/TitlesTableEntry.cs deleted file mode 100644 index 46480a6..0000000 --- a/SabreTools.Models/DVD/TitlesTableEntry.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential)] - public sealed class TitlesTableEntry - { - /// - /// Title type - /// - [MarshalAs(UnmanagedType.U1)] - public TitleType TitleType; - - /// - /// Number of angles - /// - public byte NumberOfAngles; - - /// - /// Number of chapters (PTTs) - /// - public ushort NumberOfChapters; - - /// - /// Parental management mask - /// - public ushort ParentalManagementMask; - - /// - /// Video Title Set number (VTSN) - /// - public byte VideoTitleSetNumber; - - /// - /// Title number within VTS (VTS_TTN) - /// - public byte TitleNumberWithinVTS; - - /// - /// Start sector for VTS, referenced to whole disk - /// (video_ts.ifo starts at sector 00000000) - /// - public uint VTSStartSector; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/VOBUAddressMap.cs b/SabreTools.Models/DVD/VOBUAddressMap.cs deleted file mode 100644 index 144e6b6..0000000 --- a/SabreTools.Models/DVD/VOBUAddressMap.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace SabreTools.Models.DVD -{ - /// - public sealed class VOBUAddressMap - { - /// - /// End address (last byte of last entry) - /// - public uint EndAddress { get; set; } - - /// - /// Starting sector within VOB of nth VOBU - /// - public uint[]? StartingSectors { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/VideoManagerIFO.cs b/SabreTools.Models/DVD/VideoManagerIFO.cs deleted file mode 100644 index e6f689a..0000000 --- a/SabreTools.Models/DVD/VideoManagerIFO.cs +++ /dev/null @@ -1,159 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] - public sealed class VideoManagerIFO - { - /// - /// "DVDVIDEO-VMG" - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)] - public string? Signature; - - /// - /// Last sector of VMG set (last sector of BUP) - /// - public uint LastVMGSetSector; - - /// - /// Last sector of IFO - /// - public uint LastIFOSector; - - /// - /// Version number - /// - Byte 0 - Reserved, should be 0 - /// - Byte 1, Bits 7-4 - Major version number - /// - Byte 1, Bits 3-0 - Minor version number - /// - public ushort VersionNumber; - - /// - /// VMG category - /// - /// byte1=prohibited region mask - public uint VMGCategory; - - /// - /// Number of volumes - /// - public ushort NumberOfVolumes; - - /// - /// Volume number - /// - public ushort VolumeNumber; - - /// - /// Side ID - /// - public byte SideID; - - /// - /// Number of title sets - /// - public ushort NumberOfTitleSets; - - /// - /// Provider ID - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] - public byte[]? ProviderID; - - /// - /// VMG POS - /// - public ulong VMGPOS; - - /// - /// End byte address of VMGI_MAT - /// - public uint InformationManagementTableEndByteAddress; - - /// - /// Start address of FP_PGC (First Play program chain) - /// - public uint FirstPlayProgramChainStartAddress; - - /// - /// Start sector of Menu VOB - /// - public uint MenuVOBStartSector; - - /// - /// Sector pointer to TT_SRPT (table of titles) - /// - public uint TableOfTitlesSectorPointer; - - /// - /// Sector pointer to VMGM_PGCI_UT (Menu Program Chain table) - /// - public uint MenuProgramChainTableSectorPointer; - - /// - /// Sector pointer to VMG_PTL_MAIT (Parental Management masks) - /// - public uint ParentalManagementMasksSectorPointer; - - /// - /// Sector pointer to VMG_VTS_ATRT (copies of VTS audio/sub-picture attributes) - /// - public uint AudioSubPictureAttributesSectorPointer; - - /// - /// Sector pointer to VMG_TXTDT_MG (text data) - /// - public uint TextDataSectorPointer; - - /// - /// Sector pointer to VMGM_C_ADT (menu cell address table) - /// - public uint MenuCellAddressTableSectorPointer; - - /// - /// Sector pointer to VMGM_VOBU_ADMAP (menu VOBU address map) - /// - public uint MenuVOBUAddressMapSectorPointer; - - /// - /// Video attributes of VMGM_VOBS - /// - public ushort VideoAttributes; - - /// - /// Number of audio streams in VMGM_VOBS - /// - public ushort NumberOfAudioStreams; - - /// - /// Audio attributes of VMGM_VOBS - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] - public ulong[]? AudioAttributes; - - /// - /// Unknown - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] - public byte[]? Unknown; - - /// - /// Number of subpicture streams in VMGM_VOBS (0 or 1) - /// - public ushort NumberOfSubpictureStreams; - - /// - /// Subpicture attributes of VMGM_VOBS - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[]? SubpictureAttributes; - - /// - /// Reserved - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 164)] - public byte[]? Reserved; - } -} \ No newline at end of file diff --git a/SabreTools.Models/DVD/VideoTitleSetIFO.cs b/SabreTools.Models/DVD/VideoTitleSetIFO.cs deleted file mode 100644 index b1653b4..0000000 --- a/SabreTools.Models/DVD/VideoTitleSetIFO.cs +++ /dev/null @@ -1,169 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.DVD -{ - /// - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] - public sealed class VideoTitleSetIFO - { - /// - /// "DVDVIDEO-VTS" - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)] - public string? Signature; - - /// - /// Last sector of title set (last sector of BUP) - /// - public uint LastTitleSetSector; - - /// - /// Last sector of IFO - /// - public uint LastIFOSector; - - /// - /// Version number - /// - Byte 0 - Reserved, should be 0 - /// - Byte 1, Bits 7-4 - Major version number - /// - Byte 1, Bits 3-0 - Minor version number - /// - public ushort VersionNumber; - - /// - /// VTS category - /// - /// 0=unspecified, 1=Karaoke - public uint VMGCategory; - - /// - /// Number of volumes - /// - public ushort NumberOfVolumes; - - /// - /// Volume number - /// - public ushort VolumeNumber; - - /// - /// Side ID - /// - public byte SideID; - - /// - /// Number of title sets - /// - public ushort NumberOfTitleSets; - - /// - /// Provider ID - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] - public byte[]? ProviderID; - - /// - /// VMG POS - /// - public ulong VMGPOS; - - /// - /// End byte address of VTS_MAT - /// - public uint InformationManagementTableEndByteAddress; - - /// - /// Start address of FP_PGC (First Play program chain) - /// - public uint FirstPlayProgramChainStartAddress; - - /// - /// Start sector of Menu VOB - /// - public uint MenuVOBStartSector; - - /// - /// Start sector of Title VOB - /// - public uint TitleVOBStartSector; - - /// - /// Sector pointer to VTS_PTT_SRPT (table of Titles and Chapters) - /// - public uint TableOfTitlesAndChaptersSectorPointer; - - /// - /// Sector pointer to VTS_PGCI (Title Program Chain table) - /// - public uint TitleProgramChainTableSectorPointer; - - /// - /// Sector pointer to VTSM_PGCI_UT (Menu Program Chain table) - /// - public uint MenuProgramChainTableSectorPointer; - - /// - /// Sector pointer to VTS_TMAPTI (time map) - /// - public uint TimeMapSectorPointer; - - /// - /// Sector pointer to VTSM_C_ADT (menu cell address table) - /// - public uint MenuCellAddressTableSectorPointer; - - /// - /// Sector pointer to VTSM_VOBU_ADMAP (menu VOBU address map) - /// - public uint MenuVOBUAddressMapSectorPointer; - - /// - /// Sector pointer to VTS_C_ADT (title set cell address table) - /// - public uint TitleSetCellAddressTableSectorPointer; - - /// - /// Sector pointer to VTS_VOBU_ADMAP (title set VOBU address map) - /// - public uint TitleSetVOBUAddressMapSectorPointer; - - /// - /// Video attributes of VTSM_VOBS - /// - public ushort VideoAttributes; - - /// - /// Number of audio streams in VTSM_VOBS - /// - public ushort NumberOfAudioStreams; - - /// - /// Audio attributes of VTSM_VOBS - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] - public ulong[]? AudioAttributes; - - /// - /// Unknown - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] - public byte[]? Unknown; - - /// - /// Number of subpicture streams in VTSM_VOBS (0 or 1) - /// - public ushort NumberOfSubpictureStreams; - - /// - /// Subpicture attributes of VTSM_VOBS - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[]? SubpictureAttributes; - - /// - /// Reserved - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 164)] - public byte[]? Reserved; - } -} \ No newline at end of file diff --git a/SabreTools.Models/IRD/File.cs b/SabreTools.Models/IRD/File.cs deleted file mode 100644 index d428327..0000000 --- a/SabreTools.Models/IRD/File.cs +++ /dev/null @@ -1,140 +0,0 @@ -namespace SabreTools.Models.IRD -{ - /// - /// - public class File - { - /// - /// "3IRD" - /// - public byte[]? Magic { get; set; } - - /// - /// Version - /// - /// Versions 6 - 9 are accepted - public byte Version { get; set; } - - /// - /// The same value stored in PARAM.SFO / TITLE_ID - /// - /// 9 bytes, ASCII, stored without dashes - public string? TitleID { get; set; } - - /// - /// Number of bytes that follow containing the title - /// - public byte TitleLength { get; set; } - - /// - /// The same value stored in PARAM.SFO / TITLE - /// - /// bytes, ASCII - public string? Title { get; set; } - - /// - /// The same value stored in PARAM.SFO / PS3_SYSTEM_VER - /// - /// 4 bytes, ASCII, missing uses "0000" - public string? SystemVersion { get; set; } - - /// - /// The same value stored in PARAM.SFO / VERSION - /// - /// 5 bytes, ASCII - public string? GameVersion { get; set; } - - /// - /// The same value stored in PARAM.SFO / APP_VER - /// - /// 5 bytes, ASCII - public string? AppVersion { get; set; } - - /// - /// Length of the gzip-compressed header data - /// - public uint HeaderLength { get; set; } - - /// - /// Gzip-compressed header data - /// - public byte[]? Header { get; set; } - - /// - /// Length of the gzip-compressed footer data - /// - public uint FooterLength { get; set; } - - /// - /// Gzip-compressed footer data - /// - public byte[]? Footer { get; set; } - - /// - /// Number of complete regions in the image - /// - public byte RegionCount { get; set; } - - /// - /// MD5 hashes for all complete regions in the image - /// - /// regions, 16-bytes per hash - public byte[][]? RegionHashes { get; set; } - - /// - /// Number of decrypted files in the image - /// - public uint FileCount { get; set; } - - /// - /// Starting sector for each decrypted file - /// - /// files, alternating with each entry - public ulong[]? FileKeys { get; set; } - - /// - /// MD5 hashes for all decrypted files in the image - /// - /// files, 16-bytes per hash, alternating with each entry - public byte[][]? FileHashes { get; set; } - - /// - /// Extra Config, usually 0x0000 - /// - public ushort ExtraConfig { get; set; } - - /// - /// Attachments, usually 0x0000 - /// - public ushort Attachments { get; set; } - - /// - /// D1 key - /// - /// 16 bytes - public byte[]? Data1Key { get; set; } - - /// - /// D2 key - /// - /// 16 bytes - public byte[]? Data2Key { get; set; } - - /// - /// Uncompressed PIC data - /// - /// 115 bytes, before D1/D2 keys on version 9 - public byte[]? PIC { get; set; } - - /// - /// Unique Identifier - /// - /// Not present on version 6 and prior, after AppVersion on version 7 - public uint UID { get; set; } - - /// - /// IRD content CRC - /// - public uint CRC { get; set; } - } -} diff --git a/SabreTools.Models/NoFilterAttribute.cs b/SabreTools.Models/NoFilterAttribute.cs deleted file mode 100644 index e9ed2c8..0000000 --- a/SabreTools.Models/NoFilterAttribute.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace SabreTools.Models -{ - /// - /// Marks a key as unable to be filtered on - /// - [System.AttributeUsage(System.AttributeTargets.Field)] - public class NoFilterAttribute : System.Attribute { } -} \ No newline at end of file diff --git a/SabreTools.Models/PIC/Constants.cs b/SabreTools.Models/PIC/Constants.cs deleted file mode 100644 index 447b8a7..0000000 --- a/SabreTools.Models/PIC/Constants.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace SabreTools.Models.PIC -{ - /// - /// - public class Constants - { - public const string DiscTypeIdentifierROM = "BDO"; - - public const string DiscTypeIdentifierROMUltra = "BDU"; - - public const string DiscTypeIdentifierReWritable = "BDW"; - - public const string DiscTypeIdentifierRecordable = "BDR"; - - public const string DiscTypeIdentifierXGD4 = "XG4"; - } -} diff --git a/SabreTools.Models/PIC/DiscInformation.cs b/SabreTools.Models/PIC/DiscInformation.cs deleted file mode 100644 index 607c88c..0000000 --- a/SabreTools.Models/PIC/DiscInformation.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace SabreTools.Models.PIC -{ - /// - /// Disc Information and Emergency Brake data shall be read from the PIC zone. DI units that - /// contain physical information shall be returned.Emergency Brake data shall be returned.The - /// information shall be collected from the layer specified in the Layer field of the CDB. If any data - /// can be returned, 4 100 bytes shall be returned. - /// - /// - /// - public class DiscInformation - { - /// - /// 2048 bytes for BD-ROM, 3584 bytes for BD-R/RE - /// - /// Big-endian format - public ushort DataStructureLength { get; set; } - - /// - /// Should be 0x00 - /// - public byte Reserved0 { get; set; } - - /// - /// Should be 0x00 - /// - public byte Reserved1 { get; set; } - - /// - /// Disc information and emergency brake units - /// - public DiscInformationUnit[]? Units { get; set; } - } -} diff --git a/SabreTools.Models/PIC/DiscInformationUnit.cs b/SabreTools.Models/PIC/DiscInformationUnit.cs deleted file mode 100644 index ac709ce..0000000 --- a/SabreTools.Models/PIC/DiscInformationUnit.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace SabreTools.Models.PIC -{ - /// - /// - public class DiscInformationUnit - { - /// - /// Unit header - /// - public DiscInformationUnitHeader? Header { get; set; } - - /// - /// Unit body - /// - public DiscInformationUnitBody? Body { get; set; } - - /// - /// Unit trailer (BD-R/RE only) - /// - public DiscInformationUnitTrailer? Trailer { get; set; } - } -} diff --git a/SabreTools.Models/PIC/DiscInformationUnitBody.cs b/SabreTools.Models/PIC/DiscInformationUnitBody.cs deleted file mode 100644 index 7f4cc30..0000000 --- a/SabreTools.Models/PIC/DiscInformationUnitBody.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace SabreTools.Models.PIC -{ - /// - /// - /// TODO: Write models for the dependent contents, if possible - public class DiscInformationUnitBody - { - /// - /// Disc Type Identifier - /// - public string? DiscTypeIdentifier { get; set; } - - /// - /// Disc Size/Class/Version - /// - public byte DiscSizeClassVersion { get; set; } - - /// - /// DI Unit Format dependent contents - /// - /// 52 bytes for BD-ROM, 100 bytes for BD-R/RE - public byte[]? FormatDependentContents { get; set; } - } -} diff --git a/SabreTools.Models/PIC/DiscInformationUnitHeader.cs b/SabreTools.Models/PIC/DiscInformationUnitHeader.cs deleted file mode 100644 index 1176508..0000000 --- a/SabreTools.Models/PIC/DiscInformationUnitHeader.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.PIC -{ - /// - /// - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] - public class DiscInformationUnitHeader - { - /// - /// Disc Information Identifier "DI" - /// Emergency Brake Identifier "EB" - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)] - public string? DiscInformationIdentifier; - - /// - /// Disc Information Format - /// - public byte DiscInformationFormat; - - /// - /// Number of DI units in each DI block - /// - public byte NumberOfUnitsInBlock; - - /// - /// Should be 0x00 - /// - public byte Reserved0; - - /// - /// DI unit Sequence Number - /// - public byte SequenceNumber; - - /// - /// Number of bytes in use in this DI unit - /// - public byte BytesInUse; - - /// - /// Should be 0x00 - /// - public byte Reserved1; - } -} diff --git a/SabreTools.Models/PIC/DiscInformationUnitTrailer.cs b/SabreTools.Models/PIC/DiscInformationUnitTrailer.cs deleted file mode 100644 index bfa81d0..0000000 --- a/SabreTools.Models/PIC/DiscInformationUnitTrailer.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.PIC -{ - /// - /// BD-R/RE only - /// - /// - /// - [StructLayout(LayoutKind.Sequential)] - public class DiscInformationUnitTrailer - { - /// - /// Disc Manufacturer ID - /// - /// 6 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[]? DiscManufacturerID; - - /// - /// Media Type ID - /// - /// 3 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] - public byte[]? MediaTypeID; - - /// - /// Time Stamp - /// - public ushort TimeStamp; - - /// - /// Product Revision Number - /// - public byte ProductRevisionNumber; - } -} diff --git a/SabreTools.Models/PlayStation3/Constants.cs b/SabreTools.Models/PlayStation3/Constants.cs deleted file mode 100644 index 0344c71..0000000 --- a/SabreTools.Models/PlayStation3/Constants.cs +++ /dev/null @@ -1,67 +0,0 @@ -// TODO: Add more constants from the wiki -namespace SabreTools.Models.PlayStation3 -{ - /// - public static class Constants - { - /// - /// Identifying bytes for SFO file - /// - public const uint SFOMagic = 0x00505346; - - /// - /// Identifying bytes for SFB file - /// - public const uint SFBMagic = 0x2E534642; - - #region Hybrid Flags - - /// - /// Not dependant of other disc files, enables a network connection to PSN store - /// - public const char FlagDiscBenefits = 'S'; - - /// - /// dev_bdvd/PS3_CONTENT/THEMEDIR/PARAM.SFO - /// - public const char FlagThemes = 'T'; - - /// - /// dev_bdvd/PS3_CONTENT/VIDEODIR/PARAM.SFO - /// - public const char FlagVideo = 'V'; - - /// - /// friends? (unknown yet, usually combined with g/p?) - /// - public const char FlagFriends = 'f'; - - /// - /// dev_bdvd/PS3_GAME/USRDIR/PARAM.SFO - /// dev_bdvd/PS3_EXTRA/PARAM.SFO - /// - public const char FlagGameExtras = 'g'; - - /// - /// music? - /// - public const char FlagMusic = 'm'; - - /// - /// photo? (unknown yet, used with v, fv,..) - /// - public const char FlagPhoto = 'p'; - - /// - /// dev_bdvd/PS3_UPDATE/PS3UPDAT.PUP - /// - public const char FlagFirmwareUpdate = 'u'; - - /// - /// dev_bdvd/PS3_VPRM/PARAM.SFO - /// - public const char FlagMovie = 'v'; - - #endregion - } -} \ No newline at end of file diff --git a/SabreTools.Models/PlayStation3/Enums.cs b/SabreTools.Models/PlayStation3/Enums.cs deleted file mode 100644 index 13276e3..0000000 --- a/SabreTools.Models/PlayStation3/Enums.cs +++ /dev/null @@ -1,31 +0,0 @@ -// TODO: Add more enumerations from the wiki -namespace SabreTools.Models.PlayStation3 -{ - /// - public enum DataFormat : ushort - { - /// - /// UTF-8 Special Mode, NOT NULL terminated - /// - /// - /// Used in SFO's generated by the system and/or linked to an user (Game Saves and Trophies). - /// - UTF8SpecialMode = 0x0004, - - /// - /// UTF-8 character string, NULL terminated (0x00) - /// - /// - /// Can be used any character from the system fonts. The NULL byte is counted as part of the used bytes in len - /// - UTF8 = 0x0204, - - /// - /// Integer 32 bits unsigned - /// - /// - /// Always has a length of 4 bytes in len and max_len (even in the case some bytes are not used, all them are marked as used) - /// - Integer = 0x0404, - } -} \ No newline at end of file diff --git a/SabreTools.Models/PlayStation3/SFB.cs b/SabreTools.Models/PlayStation3/SFB.cs deleted file mode 100644 index da6843d..0000000 --- a/SabreTools.Models/PlayStation3/SFB.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.PlayStation3 -{ - /// - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] - public class SFB - { - /// - /// ".SFB" - /// - public uint Magic; - - /// - /// File version(?) - /// - public uint FileVersion; - - /// - /// Unknown (zeroes) - /// - /// 0x18 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x18)] - public byte[]? Reserved1; - - /// - /// "HYBRID_FLAG" (Flags type) - /// - /// 0x10 bytes - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x10)] - public string? FlagsType; - - /// - /// Disc Content Data Offset - /// - public uint DiscContentDataOffset; - - /// - /// Disc Content Data Length - /// - public uint DiscContentDataLength; - - /// - /// Unknown (zeroes) - /// - /// 0x08 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x08)] - public byte[]? Reserved2; - - /// - /// "TITLE_ID" (Disc Title Name) - /// - /// 0x08 bytes - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x08)] - public string? DiscTitleName; - - /// - /// Unknown (zeroes) - /// - /// 0x08 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x08)] - public byte[]? Reserved3; - - /// - /// Disc Version Data Offset - /// - public uint DiscVersionDataOffset; - - /// - /// Disc Version Data Length - /// - public uint DiscVersionDataLength; - - /// - /// Unknown (zeroes) - /// - /// 0x188 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x188)] - public byte[]? Reserved4; - - /// - /// Disc Content (Hybrid Flags) - /// - /// 0x20 bytes - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)] - public string? DiscContent; - - /// - /// Disc Title - /// - /// 0x10 bytes - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x10)] - public string? DiscTitle; - - /// - /// Disc Version - /// - /// 0x10 bytes - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x10)] - public string? DiscVersion; - - /// - /// Unknown (zeroes) - /// - /// 0x3C0 bytes - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x3C0)] - public byte[]? Reserved5; - } -} diff --git a/SabreTools.Models/PlayStation3/SFO.cs b/SabreTools.Models/PlayStation3/SFO.cs deleted file mode 100644 index 5788524..0000000 --- a/SabreTools.Models/PlayStation3/SFO.cs +++ /dev/null @@ -1,55 +0,0 @@ -namespace SabreTools.Models.PlayStation3 -{ - /// - public class SFO - { - /// - /// SFO header - /// - public SFOHeader? Header { get; set; } - - /// - /// Index table - /// - public SFOIndexTableEntry[]? IndexTable { get; set; } - - /// - /// Key table - /// - /// - /// Composed by a number of key entries defined with tables_entries in - /// the header, are short utf8 strings in capitals, NULL terminated - /// (0x00), and ordered alphabetically (from A to Z). This alphabetically - /// order defines the order of the associated entries in the other - /// two tables (index_table, and data_table) - /// - /// The end offset of this table needs to be aligned to a multiply of - /// 32bits (4 bytes), this is made with a padding at the end of key_table - /// when needed (in a few SFO's the table is aligned naturally as a - /// coincidence caused by the length of the key names used, when this - /// happens there is no padding needed) - /// - public string[]? KeyTable { get; set; } - - /// - /// Padding - /// - /// Enough bytes to align to 4 bytes - public byte[]? Padding { get; set; } - - /// - /// Data table - /// - /// - /// Composed by a number of data entries defined with tables_entries in - /// the header, every entry in this table is defined by the associated entry - /// in the index_table by using: fmt, len, max_len, and offset. There is - /// no padding between entries neither at the end of this table - /// - /// Some data entries can be filled with zeroes (not used, but availables for - /// being used). This entries can be considered reserved, and are marked with - /// a len = 0 in the associated entry in the index_table - /// - public byte[][]? DataTable { get; set; } - } -} diff --git a/SabreTools.Models/PlayStation3/SFOHeader.cs b/SabreTools.Models/PlayStation3/SFOHeader.cs deleted file mode 100644 index 5b0576f..0000000 --- a/SabreTools.Models/PlayStation3/SFOHeader.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.PlayStation3 -{ - /// - [StructLayout(LayoutKind.Sequential)] - public class SFOHeader - { - /// - /// "\0PSF" - /// - public uint Magic; - - /// - /// Version - /// - public uint Version; - - /// - /// Absolute start offset of key_table - /// - public uint KeyTableStart; - - /// - /// Absolute start offset of data_table - /// - public uint DataTableStart; - - /// - /// Number of entries in index_table, key_table, and data_table - /// - public uint TablesEntries; - } -} diff --git a/SabreTools.Models/PlayStation3/SFOIndexTableEntry.cs b/SabreTools.Models/PlayStation3/SFOIndexTableEntry.cs deleted file mode 100644 index 71a0794..0000000 --- a/SabreTools.Models/PlayStation3/SFOIndexTableEntry.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.PlayStation3 -{ - /// - [StructLayout(LayoutKind.Sequential)] - public class SFOIndexTableEntry - { - /// - /// Key relative offset. - /// (Absolute start offset of key) - (Absolute start offset of key_table) - /// - public ushort KeyOffset; - - /// - /// Data type - /// - [MarshalAs(UnmanagedType.U2)] - public DataFormat DataFormat; - - /// - /// Data used length - /// - public uint DataLength; - - /// - /// Data total length. TITLE_ID is always = 16 bytes - /// - public uint DataMaxLength; - - /// - /// Data relative offset. - /// (Absolute start offset of data_1) - (Absolute start offset of data_table) - /// - public uint DataOffset; - } -} diff --git a/SabreTools.Models/PlayStation4/AppPkgHeader.cs b/SabreTools.Models/PlayStation4/AppPkgHeader.cs deleted file mode 100644 index 947f581..0000000 --- a/SabreTools.Models/PlayStation4/AppPkgHeader.cs +++ /dev/null @@ -1,237 +0,0 @@ -using System.Runtime.InteropServices; - -namespace SabreTools.Models.PlayStation4 -{ - /// - /// All numeric values are big-endian - [StructLayout(LayoutKind.Sequential)] - public class AppPkgHeader - { - /// - /// Identifying bytes for app.pkg file, "\7FCNT" - /// - public uint Magic; - - /// - /// PKG Type - /// - public uint Type; - - /// - /// PKG Unknown Field - /// - public uint PKGUnknown; - - /// - /// PKG File count - /// - public uint FileCount; - - /// - /// PKG Entry count - /// - public uint EntryCount; - - /// - /// SC Entry count - /// - public ushort SCEntryCount; - - /// - /// PKG Entry count (duplicated) - /// - public ushort EntryCount2; - - /// - /// PKG File Table offset - /// - public uint TableOffset; - - /// - /// PKG Entry data size - /// - public uint EntryDataSize; - - /// - /// Offset of PKG Entries - /// - public ulong BodyOffset; - - /// - /// Length of all PKG Entries - /// - public ulong BodySize; - - /// - /// PKG Content offset - /// - public ulong ContentOffset; - - /// - /// PKG Content size - /// - public ulong ContentSize; - - /// - /// PKG Content ID - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x24)] - public string? ContentID; - - /// - /// PKG Content Padding (Zeroes) - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xC)] - public byte[]? ContentZeroes; - - /// - /// PKG DRM Type - /// - public uint DRMType; - - /// - /// PKG Content Type - /// - public uint ContentType; - - /// - /// PKG Content Flags - /// - public uint ContentFlags; - - /// - /// PKG Promote Size - /// - public uint PromoteSize; - - /// - /// PKG Version Date - /// - public uint VersionDate; - - /// - /// PKG Content Flags - /// - public uint VersionHash; - - /// - /// PKG Padding Section 1 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x78)] - public byte[]? Zeroes1; - - /// - /// PKG SHA256 for Main Entry 1 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? MainEntry1SHA256; - - /// - /// PKG SHA256 for Main Entry 2 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? MainEntry2SHA256; - - /// - /// PKG SHA256 for Digest Table - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? DigestTableSHA256; - - /// - /// PKG SHA256 for Main Table - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? MainTableSHA256; - - /// - /// PKG Padding Section 2 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x280)] - public byte[]? Zeroes2; - - /// - /// PFS Unknown Field - /// - public uint PFSUnknown; - - /// - /// PFS Image Count - /// - public uint PFSImageCount; - - /// - /// PFS Image Flags - /// - public ulong PFSImageFlags; - - /// - /// PFS Image Offset - /// - public ulong PFSImageOffset; - - /// - /// PFS Image Size - /// - public ulong PFSImageSize; - - /// - /// Mount Image Offset - /// - public ulong MountImageOffset; - - /// - /// Mount Image Size - /// - public ulong MountImageSize; - - /// - /// PKG Size - /// - public ulong PKGSize; - - /// - /// PKG Signed Size - /// - public uint PKGSignedSize; - - /// - /// PKG Signed Size - /// - public uint PKGCacheSize; - - /// - /// SHA256 for PFS Image - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? PFSImageSHA256; - - /// - /// SHA256 for PFS Signed - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? PFSSignedSHA256; - - /// - /// PFS Split Size nth 0 - /// - public ulong PFSSplitSize0; - - /// - /// PFS Split Size nth 1 - /// - public ulong PFSSplitSize1; - - /// - /// PKG Padding Section 3 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xB50)] - public byte[]? Zeroes3; - - /// - /// SHA256 for PKG - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] - public byte[]? PKGSHA256; - } -} diff --git a/SabreTools.Models/PlayStation4/Constants.cs b/SabreTools.Models/PlayStation4/Constants.cs deleted file mode 100644 index fdca14d..0000000 --- a/SabreTools.Models/PlayStation4/Constants.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SabreTools.Models.PlayStation4 -{ - /// - public class Constants - { - /// - /// Identifying bytes for app.pkg file, "\7FCNT" - /// - public const uint AppPkgMagic = 0x7F434E54; - } -} diff --git a/SabreTools.Models/RequiredAttribute.cs b/SabreTools.Models/RequiredAttribute.cs deleted file mode 100644 index dfb4eb5..0000000 --- a/SabreTools.Models/RequiredAttribute.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace SabreTools.Models -{ - /// - /// Marks a property as required on write - /// - /// TODO: Use reflection to determine required fields on write - [System.AttributeUsage(System.AttributeTargets.Property)] - public class RequiredAttribute : System.Attribute { } -} \ No newline at end of file diff --git a/SabreTools.Models/Xbox/Attribute.cs b/SabreTools.Models/Xbox/Attribute.cs deleted file mode 100644 index f50d827..0000000 --- a/SabreTools.Models/Xbox/Attribute.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Newtonsoft.Json; - -namespace SabreTools.Models.Xbox -{ - /// - /// Extra attributes relating to package, in catalog.js - /// - public class Attribute - { - /// - /// "supports4k": - /// True if package supports 4K, false otherwise - /// - [JsonProperty("supports4k", NullValueHandling = NullValueHandling.Ignore)] - public bool? Supports4K { get; set; } - - /// - /// "supportsHdr": - /// True if package supports HDR, false otherwise - /// - [JsonProperty("supportsHdr", NullValueHandling = NullValueHandling.Ignore)] - public bool? SupportsHDR { get; set; } - - /// - /// "isXboxOneXEnhanced": - /// True if package is XboxOne X enhanced, false otherwise - /// - [JsonProperty("isXboxOneXEnhanced", NullValueHandling = NullValueHandling.Ignore)] - public bool? IsXboxOneXEnhanced { get; set; } - - } -} diff --git a/SabreTools.Models/Xbox/Catalog.cs b/SabreTools.Models/Xbox/Catalog.cs deleted file mode 100644 index 9b4c58b..0000000 --- a/SabreTools.Models/Xbox/Catalog.cs +++ /dev/null @@ -1,173 +0,0 @@ -using Newtonsoft.Json; - -namespace SabreTools.Models.Xbox -{ - /// - /// Contains metadata information about XboxOne and XboxSX discs - /// Stored in a JSON file on the disc at /MSXC/Metadata/catalog.js - /// - [JsonObject] - public class Catalog - { - /// - /// "version": - /// Version of this catalog.js file - /// Known values: 1.0, 2.0, 2.1, 4.0, 4.1 (4.1 not confirmed on a disc) - /// - [JsonProperty("version")] - public string? Version { get; set; } - - /// - /// "discNumber": - /// Varies for each disc in set - /// 0 is reserved and shouldnt be used - /// Known Versions Present: 4.0 - /// - [JsonProperty("discNumber", NullValueHandling = NullValueHandling.Ignore)] - public int? DiscNumber { get; set; } - - /// - /// "discCount": - /// Total number of discs in set - /// Same value for each disc in the set - /// Known Versions Present: 4.0 - /// - [JsonProperty("discCount", NullValueHandling = NullValueHandling.Ignore)] - public int? DiscCount { get; set; } - - /// - /// "discSetId": - /// 8 hex character ID for the set itself - /// Same value for each disc in the set - /// Known Versions Present: 4.0 - /// - [JsonProperty("discSetId", NullValueHandling = NullValueHandling.Ignore)] - public string? DiscSetID { get; set; } - - /// - /// "bundle": - /// Package details for the bundle itself - /// Known fields used: ProductID, XboxProductID, - /// OneStoreProductID, Titles, VUI, Images - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("bundle", NullValueHandling = NullValueHandling.Ignore)] - public Package? Bundle { get; set; } - - /// - /// "launchPackage": - /// Package name to use as launch package - /// Before 4.0, object=Package with only ContentID filled - /// For 4.0 onwards, object=String, representing filename - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("launchPackage", NullValueHandling = NullValueHandling.Ignore)] - public object? LaunchPackage { get; set; } - - /// - /// "packages": - /// Package details for each package on disc - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("packages")] - public Package[]? Packages { get; set; } - - /// - /// "siblings": - /// List of Package Names that are related to this disc - /// The console picks the correct one to use - /// Known Versions Present: 4.0 - /// - [JsonProperty("siblings", NullValueHandling = NullValueHandling.Ignore)] - public string[][]? Siblings { get; set; } - - #region v1.0 only - - // The below fields are usually present in a Package sub-field - // but for v1.0 catalog.js files, they are at the root Catalog object - - /// - /// "productId": - /// Hex identifier for package Product ID - /// Known Versions Present: 1.0 - /// Exists within Packages[].ProductID for v2.0 onwards - /// - [JsonProperty("productId", NullValueHandling = NullValueHandling.Ignore)] - public string? ProductID { get; set; } - - /// - /// "contentId": - /// Hex content identifier - /// Known Versions present: 1.0 - /// Exists within Packages[].ContentID for v2.0 onwards - /// - [JsonProperty("contentId", NullValueHandling = NullValueHandling.Ignore)] - public string? ContentID { get; set; } - - /// - /// "titleId": - /// 8 hex character package Title ID - /// Known Versions Present: 1.0 - /// Exists within Packages[].TitleID for v2.0 onwards - /// - [JsonProperty("titleId", NullValueHandling = NullValueHandling.Ignore)] - public string? TitleID { get; set; } - - /// - /// "titles" - /// List of name of package for each locale - /// Known Versions Present: 1.0 - /// Exists within Packages[].Titles for v2.0 onwards - /// - [JsonProperty("titles", NullValueHandling = NullValueHandling.Ignore)] - public Title[]? Titles { get; set; } - - /// - /// "vui": - /// List of Voice User Interface packages titles for each locale - /// Known Versions Present: 1.0 - /// Exists within Packages[].VUI for v2.0 onwards - /// - [JsonProperty("vui", NullValueHandling = NullValueHandling.Ignore)] - public Title[]? VUI { get; set; } - - /// - /// "images": - /// List of paths to each image in MSXC/Metadata// - /// Known Versions Present: 1.0 - /// Exists within Packages[].Images for v2.0 onwards - /// - [JsonProperty("images", NullValueHandling = NullValueHandling.Ignore)] - public Image[]? Images { get; set; } - - /// - /// "ratings": - /// List of package age ratings for each relevant rating system - /// Known Versions Present: 1.0 - /// Exists within Packages[].Ratings for v2.0 onwards - /// - [JsonProperty("ratings", NullValueHandling = NullValueHandling.Ignore)] - public Rating[]? Ratings { get; set; } - - /// - /// "size": - /// Size of package in bytes - /// Known Versions Present: 1.0 - /// Exists within Packages[].Size for v2.0 onwards - /// - [JsonProperty("size", NullValueHandling = NullValueHandling.Ignore)] - public long? Size { get; set; } - - /// - /// "type": - /// Package Type - /// Known values: "Game" (Game package), "Durable" (DLC package) - /// Known Versions Present: 1.0 - /// Exists within Packages[].Type for v2.0 onwards - /// - [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] - public string? Type { get; set; } - - #endregion - } -} diff --git a/SabreTools.Models/Xbox/Constants.cs b/SabreTools.Models/Xbox/Constants.cs deleted file mode 100644 index 660c0b6..0000000 --- a/SabreTools.Models/Xbox/Constants.cs +++ /dev/null @@ -1,201 +0,0 @@ -using System.Collections.Generic; - -namespace SabreTools.Models.Xbox -{ - /// - /// - /// - public static class Constants - { - /// - /// Mapping of all Xbox 360 media subtypes to long names - /// - public static readonly Dictionary MediaSubtypes = new() - { - { 'F', "XGD3" }, - { 'X', "XGD2" }, - { 'Z', "Games on Demand / Marketplace Demo" }, - }; - - /// - /// Mapping of all publisher 2-letter codes to long names - /// - public static readonly Dictionary Publishers = new() - { - { "AB", "Ambush Reality" }, - { "AC", "Acclaim Entertainment" }, - { "AD", "Andamiro USA Corp." }, - { "AH", "Arush Entertainment" }, - { "AK", "Artdink" }, - { "AP", "Aquaplus" }, - { "AQ", "Aqua System" }, - { "AS", "ASK" }, - { "AT", "Atlus" }, - { "AV", "Activision" }, - { "AW", "Arc System Works" }, - { "AX", "Aksys Games" }, - { "AY", "Aspyr Media" }, - - { "BA", "Bandai" }, - { "BB", "BigBen" }, - { "BD", "Bravado" }, - { "BE", "Blueside Inc." }, - { "BF", "Blind Ferret Entertainment" }, - { "BG", "BradyGames" }, - { "BH", "Blackhole" }, - { "BL", "Black Box" }, - { "BM", "BAM! Entertainment" }, - { "BR", "Broccoli Co." }, - { "BS", "Bethesda Softworks" }, - { "BT", "Brash Entertainment" }, - { "BU", "Bunkasha Co." }, - { "BV", "Buena Vista Games" }, - { "BW", "BBC Multimedia" }, - { "BZ", "Blizzard" }, - - { "CC", "Capcom" }, - { "CK", "Kemco Corporation" }, // TODO: Confirm - { "CM", "Codemasters" }, - { "CT", "CTO" }, - { "CV", "Crave Entertainment" }, - - { "DC", "DreamCatcher Interactive" }, - { "DE", "Destineer" }, - { "DX", "Davilex" }, - - { "EA", "Electronic Arts" }, - { "EC", "Encore Software" }, - { "EF", "E-Frontier" }, - { "EL", "Enlight Software" }, - { "EM", "Empire Interactive" }, - { "ES", "Eidos Interactive" }, - { "EV", "Evolved Games" }, - - { "FE", "Focus Entertainment (formerly Focus Home Interactive)" }, // TODO: Confirm - { "FI", "Fox Interactive" }, - { "FL", "Fluent Entertainment" }, - { "FO", "505 Games" }, - { "FS", "From Software" }, - - { "GE", "Genki Co." }, - { "GF", "Gameloft" }, - { "GV", "Groove Games" }, - - { "HE", "Tru Blu (Entertainment division of Home Entertainment Suppliers)" }, - { "HP", "Hip Games" }, - { "HU", "Hudson Soft" }, - { "HW", "Highwaystar" }, - - { "IA", "Mad Catz Interactive" }, // TODO: Confirm - { "IF", "Idea Factory" }, - { "IG", "Infogrames" }, - { "IL", "Interlex Corporation" }, - { "IM", "Imagine Media" }, - { "IO", "Ignition Entertainment" }, - { "IP", "Interplay Entertainment" }, - { "IX", "InXile Entertainment" }, - - { "JA", "Jaleco Entertainment" }, - { "JW", "JoWooD Entertainment" }, - - { "KA", "Konami Osaka / Major A" }, - { "KB", "Kemco" }, // TODO: Confirm - { "KI", "Kids Station Inc." }, // TODO: Confirm - { "KN", "Konami" }, - { "KO", "Koei" }, - { "KT", "Konami Tokyo" }, - { "KU", "Kobi and/or GAE (formerly Global A Entertainment)" }, // TODO: Confirm - { "KY", "Kalypso" }, - - { "LA", "LucasArts" }, - { "LS", "Black Bean Games (publishing arm of Leader S.p.A.)" }, // TODO: Confirm - - { "MD", "Metro3D" }, - { "ME", "Medix" }, - { "MI", "Microïds" }, // TODO: Confirm - { "MJ", "Majesco Entertainment" }, - { "MM", "Myelin Media" }, - { "MP", "MediaQuest" }, // TODO: Confirm - { "MS", "Microsoft Game Studios" }, - { "MW", "Midway Games" }, - { "MX", "Empire Interactive" }, // TODO: Confirm - - { "NK", "NewKidCo" }, - { "NL", "NovaLogic" }, - { "NM", "Namco" }, - - { "OG", "O-Games" }, - { "OX", "Oxygen Interactive" }, - - { "PC", "Playlogic Entertainment" }, - { "PL", "Phantagram Co., Ltd. / Playlogic Entertainment" }, // TODO: Confirm - - { "RA", "Rage" }, - - { "SA", "Sammy" }, - { "SC", "SCi Games" }, - { "SE", "Sega" }, - { "SN", "SNK" }, - { "SP", "Southpeak Games" }, - { "SQ", "Square Enix" }, - { "SS", "Simon & Schuster" }, - { "ST", "Studio Nine" }, - { "SU", "Success Corporation" }, - { "SW", "Swing! Deutschland" }, - - { "TA", "Takara" }, - { "TC", "Tecmo" }, - { "TD", "The 3DO Company" }, - { "TK", "Takuyo" }, - { "TM", "TDK Mediactive" }, - { "TQ", "THQ" }, - { "TS", "Titus Interactive" }, - { "TT", "Take-Two Interactive Software" }, - - { "US", "Ubisoft" }, - - { "VC", "Victor Interactive Software" }, - { "VG", "Valcon Games" }, - { "VN", "Vivendi Universal Games (Former Interplay)" }, // TODO: Confirm - { "VU", "Vivendi Universal Games" }, - { "VV", "Vicarious Visions" }, - - { "WE", "Wanadoo Edition" }, - { "WR", "Warner Bros. Interactive Entertainment" }, - - { "XA", "Xbox Live Arcade" }, - { "XI", "Xicat Interactive / XPEC Entertainment and Idea Factory" }, // TODO: Confirm - { "XK", "Xbox Kiosk" }, - { "XL", "Xbox Live" }, - { "XM", "Evolved Games" }, // TODO: Confirm - { "XP", "XPEC Entertainment" }, - { "XR", "Panorama" }, // TODO: Confirm - - { "YB", "YBM Sisa (South-Korea)" }, - - { "ZD", "Zushi Games (formerly Zoo Digital Publishing)" }, - - { "" + (char)0x00 + (char)0x01, "Microsoft Downloadable Content" }, - { "" + (char)0x05 + (char)0x04, "Zuma's Revenge" }, - { "" + (char)0xAA + (char)0xAA, "Arcania - Gothic 4" }, - { "" + (char)0xFF + (char)0xED, "Microsoft Downloadable Content" }, - { "" + (char)0xFF + (char)0xFD, "Microsoft Downloadable Content" }, - { "" + (char)0xFF + (char)0xFE, "Microsoft Downloadable Content" }, - { "" + (char)0xFF + (char)0xFF, "Microsoft Downloadable Content" }, - }; - - /// - /// Mapping of all region 1-letter codes to long names - /// - public static readonly Dictionary Regions = new() - { - { 'A', "USA" }, - { 'E', "Europe" }, - { 'H', "Japan / Europe" }, - { 'J', "Japan / Asia" }, - { 'K', "USA / Japan" }, - { 'L', "USA / Europe" }, - { 'W', "World" }, - }; - } -} \ No newline at end of file diff --git a/SabreTools.Models/Xbox/Image.cs b/SabreTools.Models/Xbox/Image.cs deleted file mode 100644 index 1a2989a..0000000 --- a/SabreTools.Models/Xbox/Image.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Newtonsoft.Json; - -namespace SabreTools.Models.Xbox -{ - /// - /// List of image files associated with a package in catalog.js - /// - public class Image - { - /// - /// "size": - /// String representing image size - /// Known values: "100x100", "208x208", "480x480" - /// - [JsonProperty("size", NullValueHandling = NullValueHandling.Ignore)] - public string? Size { get; set; } - - /// - /// "image": - /// File name of image within MSXC/Metadata// - /// - [JsonProperty("image", NullValueHandling = NullValueHandling.Ignore)] - public string? Name { get; set; } - } -} diff --git a/SabreTools.Models/Xbox/Package.cs b/SabreTools.Models/Xbox/Package.cs deleted file mode 100644 index 289fbc1..0000000 --- a/SabreTools.Models/Xbox/Package.cs +++ /dev/null @@ -1,162 +0,0 @@ -using Newtonsoft.Json; - -namespace SabreTools.Models.Xbox -{ - /// - /// Metadata about each package on disc, in catalog.js - /// Packages are stored within /MSXC/ - /// - public class Package - { - /// - /// "packageName": - /// Package name of variant - /// Matches MSXC/ and MSXC/Metdata/ - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("packageName", NullValueHandling = NullValueHandling.Ignore)] - public string? PackageName { get; set; } - - /// - /// "productId": - /// Hex identifier for package Product ID - /// Known Versions Present: 2.0, 2.1 - /// - [JsonProperty("productId", NullValueHandling = NullValueHandling.Ignore)] - public string? ProductID { get; set; } - - /// - /// "contentId": - /// Hex content identifier - /// Known Versions present: 2.0, 2.1 - /// - [JsonProperty("contentId", NullValueHandling = NullValueHandling.Ignore)] - public string? ContentID { get; set; } - - /// - /// "xboxProductId": - /// Hex product identifier - /// Known Versions Present: 4.0 - /// - [JsonProperty("xboxProductId", NullValueHandling = NullValueHandling.Ignore)] - public string? XboxProductID { get; set; } - - /// - /// "oneStoreProductId": - /// Partner Center Product ID - /// 12 character uppercase alphanumeric - /// Known Versions Present: 4.0 - /// - [JsonProperty("oneStoreProductId", NullValueHandling = NullValueHandling.Ignore)] - public string? OneStoreProductID { get; set; } - - /// - /// "allowedOneStoreProductIds": - /// List of OneStoreProductID that this package is associated with - /// Used for DLC packages only (Type = "Durable") - /// Known Versions Present: 4.0 - /// - [JsonProperty("allowedOneStoreProductIds", NullValueHandling = NullValueHandling.Ignore)] - public string[]? AllowedOneStoreProductIDs { get; set; } - - /// - /// "franchiseGameHubId": - /// Hex identifier - /// Optionally used to mark package as game hub - /// Known Versions Present: 4.1 - /// - [JsonProperty("franchiseGameHubId", NullValueHandling = NullValueHandling.Ignore)] - public string? FranchiseGameHubID { get; set; } - - /// - /// "associatedFranchiseGameHubId": - /// Hex identifier - /// Marks corresponding FranchiseGameHubID that this package is launched with - /// Known Versions Present: 4.1 - /// - [JsonProperty("associatedFranchiseGameHubId", NullValueHandling = NullValueHandling.Ignore)] - public string? AssociatedFranchiseGameHubID { get; set; } - - /// - /// "titleId": - /// 8 hex character package Title ID - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("titleId", NullValueHandling = NullValueHandling.Ignore)] - public string? TitleID { get; set; } - - /// - /// "titles" - /// List of name of package for each locale - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("titles", NullValueHandling = NullValueHandling.Ignore)] - public Title[]? Titles { get; set; } - - /// - /// "vui": - /// List of Voice User Interface packages titles for each locale - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("vui", NullValueHandling = NullValueHandling.Ignore)] - public Title[]? VUI { get; set; } - - /// - /// "images": - /// List of paths to each image in MSXC/Metadata// - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("images", NullValueHandling = NullValueHandling.Ignore)] - public Image[]? Images { get; set; } - - /// - /// "ratings": - /// List of package age ratings for each relevant rating system - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("ratings", NullValueHandling = NullValueHandling.Ignore)] - public Rating[]? Ratings { get; set; } - - /// - /// "attributes": - /// Extra attributes associated with this package - /// Known Versions Present: 2.1, 4.0 - /// - [JsonProperty("attributes", NullValueHandling = NullValueHandling.Ignore)] - public Attribute[]? Attributes { get; set; } - - /// - /// "variants": - /// Alternative packages - /// Known Versions Present: 4.0 - /// - [JsonProperty("variants", NullValueHandling = NullValueHandling.Ignore)] - public Package[]? Variants { get; set; } - - /// - /// "generation": - /// Console generation the package is for - /// Known values: "8" (XboxOne), "9" (Xbox Series X|S) - /// Known Versions Present: 4.0 - /// - [JsonProperty("generation", NullValueHandling = NullValueHandling.Ignore)] - public string? Generation { get; set; } - - /// - /// "size": - /// Size of package in bytes - /// Known Versions Present: 2.0, 2.1 - /// - [JsonProperty("size", NullValueHandling = NullValueHandling.Ignore)] - public long? Size { get; set; } - - /// - /// "type": - /// Package Type - /// Known values: "Game" (Game package), "Durable" (DLC package) - /// Known Versions Present: 2.0, 2.1, 4.0 - /// - [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] - public string? Type { get; set; } - } -} diff --git a/SabreTools.Models/Xbox/Rating.cs b/SabreTools.Models/Xbox/Rating.cs deleted file mode 100644 index 67bbaa2..0000000 --- a/SabreTools.Models/Xbox/Rating.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Newtonsoft.Json; - -namespace SabreTools.Models.Xbox -{ - /// - /// Package rating for each rating system, in catalog.js - /// - public class Rating - { - /// - /// "system": - /// Name of rating system - /// Known values: COB-AU, PEGI, PCBP, USK, China, CERO, ESRB, GCAM, CSRR, - /// COB, DJCTQ, GRB, OFLC, OFLC-NZ, PEGIPortugal, FPB, Microsoft - /// - [JsonProperty("system", NullValueHandling = NullValueHandling.Ignore)] - public string? System { get; set; } - - /// - /// "value": - /// String representing rating value, depends on rating system - /// - [JsonProperty("value", NullValueHandling = NullValueHandling.Ignore)] - public string? Value { get; set; } - } -} diff --git a/SabreTools.Models/Xbox/Title.cs b/SabreTools.Models/Xbox/Title.cs deleted file mode 100644 index ca0e709..0000000 --- a/SabreTools.Models/Xbox/Title.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Newtonsoft.Json; - -namespace SabreTools.Models.Xbox -{ - /// - /// Package Title for each locale, for catalog.js - /// - public class Title - { - /// - /// "locale": - /// String representing locale that this title is in - /// Known values: "default", "en", "de", "fr", "ar", "zh-hans", - /// "zh-hant", "zh-TW", "zh-HK", "zh-CN", "zh-SG", etc - /// - [JsonProperty("locale", NullValueHandling = NullValueHandling.Ignore)] - public string? Locale { get; set; } - - /// - /// "title": - /// Package title - /// - [JsonProperty("title", NullValueHandling = NullValueHandling.Ignore)] - public string? Name { get; set; } - } -} diff --git a/SabreTools.Models/Xbox/XMID.cs b/SabreTools.Models/Xbox/XMID.cs deleted file mode 100644 index a9c1e31..0000000 --- a/SabreTools.Models/Xbox/XMID.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace SabreTools.Models.Xbox -{ - /// - /// Contains information specific to an XGD disc - /// - /// - /// XGD1 XMID Format Information: - /// - /// AABBBCCD - /// - AA => The two-ASCII-character publisher identifier (see Constants.Publishers for details) - /// - BBB => Game ID - /// - CC => Version number - /// - D => Region identifier (see Constants.Regions for details) - /// - public class XMID - { - /// - /// 2-character publisher identifier - /// - public string? PublisherIdentifier { get; set; } - - /// - /// 3-character Game ID - /// - public string? GameID { get; set; } - - /// - /// 2-character Internal version number - /// - public string? VersionNumber { get; set; } - - /// - /// 1-character Region identifier character - /// - /// Contains information specific to an XGD disc - /// - /// - /// XGD2/3 XeMID Format Information: - /// - /// AABCCCDDEFFGHH(IIIIIIII) - /// - AA => The two-ASCII-character publisher identifier (see Constants.Publishers for details) - /// - B => Platform identifier; 2 indicates Xbox 360. - /// - CCC => Game ID - /// - DD => SKU number (unique per SKU of a title) - /// - E => Region identifier (see Constants.Regions for details) - /// - FF => Base version; usually starts at 01 (can be 1 or 2 characters) - /// - G => Media type identifier (see Constants.MediaSubtypes for details) - /// - HH => Disc number stored in [disc number][total discs] format - /// - IIIIIIII => 8-hex-digit certification submission identifier; usually on test discs only - /// - public class XeMID - { - /// - /// 2-character publisher identifier - /// - public string? PublisherIdentifier { get; set; } - - /// - /// 1-character Platform disc is made for, 2 indicates Xbox 360 - /// - public char PlatformIdentifier { get; set; } - - /// - /// 3-character Game ID - /// - public string? GameID { get; set; } - - /// - /// 2-character Title-specific SKU - /// - public string? SKU { get; set; } - - /// - /// 1-character Region identifier character - /// - public char RegionIdentifier { get; set; } - - /// - /// 2-character Base version of executables, usually starts at 01 - /// - public string? BaseVersion { get; set; } - - /// - /// 1-character Media subtype identifier - /// - public char MediaSubtypeIdentifier { get; set; } - - /// - /// 2-character Disc number stored in [disc number][total discs] format - /// - public string? DiscNumberIdentifier { get; set; } - - /// - /// 8-hex-digit certification submission identifier; usually on test discs only - /// - public string? CertificationSubmissionIdentifier { get; set; } - } -}