diff --git a/SabreTools.Serialization/Extensions/XboxExecutable.cs b/SabreTools.Serialization/Extensions/XboxExecutable.cs index 2d9d3490..3f89d23e 100644 --- a/SabreTools.Serialization/Extensions/XboxExecutable.cs +++ b/SabreTools.Serialization/Extensions/XboxExecutable.cs @@ -1,3 +1,4 @@ +using System; using SabreTools.IO.Extensions; namespace SabreTools.Data.Extensions @@ -5,13 +6,12 @@ namespace SabreTools.Data.Extensions public static class XboxExecutable { /// - /// Convert a 4-byte value to a formatted XBE title ID + /// Convert a UInt32 to a formatted XBE title ID /// - public static string? ToFormattedXBETitleID(this byte[]? data) + public static string? ToFormattedXBETitleID(this uint value) { - // Ignore invalid data - if (data is null || data.Length < 4) - return null; + // Convert to a byte array + byte[] data = BitConverter.GetBytes(value); // Create the prefix string prefix1 = (0x41 <= data[3] && data[3] <= 0x5A) || (0x30 <= data[3] && data[3] <= 0x39) diff --git a/SabreTools.Serialization/Models/XboxExecutable/Certificate.cs b/SabreTools.Serialization/Models/XboxExecutable/Certificate.cs index fbfa7d78..6a289109 100644 --- a/SabreTools.Serialization/Models/XboxExecutable/Certificate.cs +++ b/SabreTools.Serialization/Models/XboxExecutable/Certificate.cs @@ -21,8 +21,7 @@ namespace SabreTools.Data.Models.XboxExecutable /// Title ID for this application. This field doesn't appear to matter with /// unsigned code, so it can be set to zero. /// - /// 4 bytes - public byte[] TitleID { get; set; } = new byte[4]; + public uint TitleID { get; set; } /// /// Title name for this application (i.e. L"The Simpsons Road Rage"). @@ -35,7 +34,7 @@ namespace SabreTools.Data.Models.XboxExecutable /// to matter with unsigned code (or signed code, for that matter), so they can all /// be set to zero. /// - public byte[][] AlternativeTitleIDs { get; set; } = new byte[16][]; + public uint[] AlternativeTitleIDs { get; set; } = new uint[16]; /// /// Allowed media types for this .XBE. diff --git a/SabreTools.Serialization/Readers/XboxExecutable.cs b/SabreTools.Serialization/Readers/XboxExecutable.cs index a27b40fe..60f238be 100644 --- a/SabreTools.Serialization/Readers/XboxExecutable.cs +++ b/SabreTools.Serialization/Readers/XboxExecutable.cs @@ -153,13 +153,13 @@ namespace SabreTools.Serialization.Readers obj.SizeOfCertificate = data.ReadUInt32LittleEndian(); obj.TimeDate = data.ReadUInt32LittleEndian(); - obj.TitleID = data.ReadBytes(4); + obj.TitleID = data.ReadUInt32LittleEndian(); obj.TitleName = data.ReadBytes(0x50); - obj.AlternativeTitleIDs = new byte[16][]; + obj.AlternativeTitleIDs = new uint[16]; for (int i = 0; i < obj.AlternativeTitleIDs.Length; i++) { - obj.AlternativeTitleIDs[i] = data.ReadBytes(4); + obj.AlternativeTitleIDs[i] = data.ReadUInt32LittleEndian(); } obj.AllowedMediaTypes = (AllowedMediaTypes)data.ReadUInt32LittleEndian(); diff --git a/SabreTools.Serialization/Wrappers/XboxExecutable.cs b/SabreTools.Serialization/Wrappers/XboxExecutable.cs index 729d67fd..9125e1db 100644 --- a/SabreTools.Serialization/Wrappers/XboxExecutable.cs +++ b/SabreTools.Serialization/Wrappers/XboxExecutable.cs @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.Wrappers #region Extension Properties /// - public byte[][]? AlternativeTitleIDsBytes => Certificate?.AlternativeTitleIDs; + public uint[]? AlternativeTitleIDs => Certificate?.AlternativeTitleIDs; /// public string[]? AlternativeTitleIDsStrings @@ -26,10 +26,10 @@ namespace SabreTools.Serialization.Wrappers get { // Ignore invalid alternative title IDs - if (AlternativeTitleIDsBytes is null) + if (AlternativeTitleIDs is null) return null; - return Array.ConvertAll(AlternativeTitleIDsBytes, ba => ba.ToFormattedXBETitleID() ?? "[NULL]"); + return Array.ConvertAll(AlternativeTitleIDs, ba => ba.ToFormattedXBETitleID() ?? "[NULL]"); } } @@ -71,10 +71,10 @@ namespace SabreTools.Serialization.Wrappers public ThreadLocalStorage? ThreadLocalStorage => Model.ThreadLocalStorage; /// - public byte[]? TitleIDBytes => Certificate?.TitleID; + public uint TitleID => Certificate?.TitleID ?? 0; /// - public string? TitleIDString => TitleIDBytes.ToFormattedXBETitleID(); + public string? TitleIDString => TitleID.ToFormattedXBETitleID(); /// public string? TitleName