diff --git a/SabreTools.Serialization.csproj b/SabreTools.Serialization.csproj
index 4508216c..b9f643f2 100644
--- a/SabreTools.Serialization.csproj
+++ b/SabreTools.Serialization.csproj
@@ -29,7 +29,7 @@
-
+
diff --git a/Wrappers/XgdInfo.cs b/Wrappers/XgdInfo.cs
index 722fc293..88821430 100644
--- a/Wrappers/XgdInfo.cs
+++ b/Wrappers/XgdInfo.cs
@@ -1,4 +1,6 @@
-namespace SabreTools.Serialization.Wrappers
+using static SabreTools.Models.Xbox.Constants;
+
+namespace SabreTools.Serialization.Wrappers
{
///
/// Contains information specific to an XGD disc
@@ -44,6 +46,96 @@
#region Extension Properties
+ ///
+ /// Get the human-readable media subtype string
+ ///
+#if NET48
+ public string MediaSubtype
+#else
+ public string? MediaSubtype
+#endif
+ {
+ get
+ {
+ if (!this.Initialized)
+ return null;
+
+ // Media subtype is only valid for XGD2/3
+ if (XeMID == null)
+ return null;
+
+ char mediaSubtype = XeMID.MediaSubtypeIdentifier;
+ if (MediaSubtypes.ContainsKey(mediaSubtype))
+ return MediaSubtypes[mediaSubtype];
+
+ return $"Unknown ({mediaSubtype})";
+ }
+ }
+
+ ///
+ /// Get the human-readable publisher string
+ ///
+#if NET48
+ public string Publisher
+#else
+ public string? Publisher
+#endif
+ {
+ get
+ {
+ if (!this.Initialized)
+ return null;
+
+#if NET48
+ string publisherIdentifier = null;
+#else
+ string? publisherIdentifier = null;
+#endif
+ if (XMID != null)
+ publisherIdentifier = XMID.PublisherIdentifier;
+ else if (XeMID != null)
+ publisherIdentifier = XeMID.PublisherIdentifier;
+
+ if (string.IsNullOrWhiteSpace(publisherIdentifier))
+ return null;
+
+ if (Publishers.ContainsKey(publisherIdentifier))
+ return Publishers[publisherIdentifier];
+
+ return $"Unknown ({publisherIdentifier})";
+ }
+ }
+
+ ///
+ /// Get the human-readable region string
+ ///
+#if NET48
+ public string Region
+#else
+ public string? Region
+#endif
+ {
+ get
+ {
+ if (!this.Initialized)
+ return null;
+
+ char? regionIdentifier = null;
+ if (XMID != null)
+ regionIdentifier = XMID.RegionIdentifier;
+ else if (XeMID != null)
+ regionIdentifier = XeMID.RegionIdentifier;
+
+ if (regionIdentifier == null)
+ return null;
+
+ if (Regions.ContainsKey((char)regionIdentifier))
+ return Regions[(char)regionIdentifier];
+
+ return $"Unknown ({regionIdentifier})";
+ }
+ }
+
///
/// Get the human-readable serial string
///
@@ -93,11 +185,8 @@
try
{
- // XGD1 doesn't use PlatformIdentifier
if (XMID != null)
return $"1.{XMID.VersionNumber}";
-
- // XGD2/3 uses a specific identifier
else if (XeMID?.PlatformIdentifier == '2')
return $"1.{XeMID.SKU}";