From 5a055a98c7472cf25bddbbc609627f2e3965c2e9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 13 Sep 2023 12:11:56 -0400 Subject: [PATCH] Add XMID and XeMID models from MPF --- Xbox/XMID.cs | 49 +++++++++++++++++++++++++++ Xbox/XeMID.cs | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 Xbox/XMID.cs create mode 100644 Xbox/XeMID.cs diff --git a/Xbox/XMID.cs b/Xbox/XMID.cs new file mode 100644 index 0000000..63799ef --- /dev/null +++ b/Xbox/XMID.cs @@ -0,0 +1,49 @@ +namespace SabreTools.Models.Xbox +{ + /// + /// Contains information specific to an XGD disc + /// + /// + /// XGD1 XMID Format Information: + /// + /// AABBBCCD + /// - AA => The two-ASCII-character publisher identifier (see GetPublisher for details) + /// - BBB => Game ID + /// - CC => Version number + /// - D => Region identifier (see GetRegion for details) + /// + public class XMID + { + /// + /// 2-character publisher identifier + /// +#if NET48 + public string PublisherIdentifier { get; set; } +#else + public string PublisherIdentifier { get; set; } +#endif + + /// + /// 3-character Game ID + /// +#if NET48 + public string GameID { get; set; } +#else + public string? GameID { get; set; } +#endif + + /// + /// 2-character Internal version number + /// +#if NET48 + public string VersionNumber { get; set; } +#else + public string? VersionNumber { get; set; } +#endif + + /// + /// 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 GetPublisher 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 GetRegion for details) + /// - FF => Base version; usually starts at 01 (can be 1 or 2 characters) + /// - G => Media type identifier (see GetMediaSubtype 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 + /// +#if NET48 + public string PublisherIdentifier { get; set; } +#else + public string PublisherIdentifier { get; set; } +#endif + + /// + /// 1-character Platform disc is made for, 2 indicates Xbox 360 + /// + public char PlatformIdentifier { get; set; } + + /// + /// 3-character Game ID + /// +#if NET48 + public string GameID { get; set; } +#else + public string? GameID { get; set; } +#endif + + /// + /// 2-character Title-specific SKU + /// +#if NET48 + public string SKU { get; set; } +#else + public string? SKU { get; set; } +#endif + + /// + /// 1-character Region identifier character + /// + public char RegionIdentifier { get; set; } + + /// + /// 2-character Base version of executables, usually starts at 01 + /// +#if NET48 + public string BaseVersion { get; set; } +#else + public string? BaseVersion { get; set; } +#endif + + /// + /// 1-character Media subtype identifier + /// + public char MediaSubtypeIdentifier { get; set; } + + /// + /// 2-character Disc number stored in [disc number][total discs] format + /// +#if NET48 + public string DiscNumberIdentifier { get; set; } +#else + public string? DiscNumberIdentifier { get; set; } +#endif + + /// + /// 8-hex-digit certification submission identifier; usually on test discs only + /// +#if NET48 + public string CertificationSubmissionIdentifier { get; set; } +#else + public string? CertificationSubmissionIdentifier { get; set; } +#endif + } +}