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