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; }
- }
-}