Fix issues found during testing

This commit is contained in:
Matt Nadareski
2026-03-13 12:10:45 -04:00
parent 810338d011
commit cff722ba67
4 changed files with 28 additions and 26 deletions

View File

@@ -74,5 +74,7 @@ namespace SabreTools.Data.Models.XboxExecutable
/// 16 x 16-byte Signature Keys. An unsigned .XBE can just zero these out.
/// </summary>
public byte[][] AlternateSignatureKeys { get; set; } = new byte[16][];
// TODO: Add optional fields from https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/master/src/common/xbe/Xbe.h
}
}

View File

@@ -9,19 +9,19 @@ namespace SabreTools.Data.Models.XboxExecutable
[Flags]
public enum AllowedMediaTypes : uint
{
XBEIMAGE_MEDIA_TYPE_HARD_DISK = 0x00000001,
XBEIMAGE_MEDIA_TYPE_DVD_X2 = 0x00000002,
XBEIMAGE_MEDIA_TYPE_DVD_CD = 0x00000004,
XBEIMAGE_MEDIA_TYPE_CD = 0x00000008,
XBEIMAGE_MEDIA_TYPE_DVD_5_RO = 0x00000010,
XBEIMAGE_MEDIA_TYPE_DVD_9_RO = 0x00000020,
XBEIMAGE_MEDIA_TYPE_DVD_5_RW = 0x00000040,
XBEIMAGE_MEDIA_TYPE_DVD_9_RW = 0x00000080,
XBEIMAGE_MEDIA_TYPE_DONGLE = 0x00000100,
XBEIMAGE_MEDIA_TYPE_MEDIA_BOARD = 0x00000200,
XBEIMAGE_MEDIA_TYPE_NONSECURE_HARD_DISK = 0x40000000,
XBEIMAGE_MEDIA_TYPE_NONSECURE_MODE = 0x80000000,
XBEIMAGE_MEDIA_TYPE_MEDIA_MASK = 0x00FFFFFF,
HARD_DISK = 0x00000001,
DVD_X2 = 0x00000002,
DVD_CD = 0x00000004,
CD = 0x00000008,
DVD_5_RO = 0x00000010,
DVD_9_RO = 0x00000020,
DVD_5_RW = 0x00000040,
DVD_9_RW = 0x00000080,
DONGLE = 0x00000100,
MEDIA_BOARD = 0x00000200,
NONSECURE_HARD_DISK = 0x40000000,
NONSECURE_MODE = 0x80000000,
MEDIA_MASK = 0x00FFFFFF,
}
/// <summary>
@@ -31,10 +31,10 @@ namespace SabreTools.Data.Models.XboxExecutable
[Flags]
public enum GameRegion : uint
{
XBEIMAGE_GAME_REGION_NA = 0x00000001,
XBEIMAGE_GAME_REGION_JAPAN = 0x00000002,
XBEIMAGE_GAME_REGION_RESTOFWORLD = 0x00000004,
XBEIMAGE_GAME_REGION_MANUFACTURING = 0x80000000,
NA = 0x00000001,
JAPAN = 0x00000002,
RESTOFWORLD = 0x00000004,
MANUFACTURING = 0x80000000,
}
/// <summary>
@@ -55,7 +55,7 @@ namespace SabreTools.Data.Models.XboxExecutable
/// </summary>
/// <see href="https://www.caustik.com/cxbx/download/xbe.htm"/>
[Flags]
public enum LibraryFlags : uint
public enum LibraryFlags : ushort
{
/// <remarks>13-Bit Mask</remarks>
QFEVersion = 0x1FFF,

View File

@@ -236,7 +236,7 @@ namespace SabreTools.Serialization.Readers
obj.MajorVersion = data.ReadUInt16LittleEndian();
obj.MinorVersion = data.ReadUInt16LittleEndian();
obj.BuildVersion = data.ReadUInt16LittleEndian();
obj.LibraryFlags = (LibraryFlags)data.ReadUInt32LittleEndian();
obj.LibraryFlags = (LibraryFlags)data.ReadUInt16LittleEndian();
return obj;
}

View File

@@ -23,8 +23,8 @@ namespace SabreTools.Serialization.Wrappers
Print(builder, Model.SectionHeaders);
Print(builder, Model.ThreadLocalStorage);
Print(builder, Model.LibraryVersions);
Print(builder, Model.KernelLibraryVersion, "Kernel ", 2);
Print(builder, Model.XAPILibraryVersion, "XAPI ", 2);
Print(builder, Model.KernelLibraryVersion, "Kernel ", string.Empty, 2);
Print(builder, Model.XAPILibraryVersion, "XAPI ", string.Empty, 2);
}
private static void Print(StringBuilder builder, Certificate? certificate)
@@ -42,7 +42,7 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine(certificate.TimeDate, " Time/Date stamp");
builder.AppendLine(certificate.TitleID, " Title ID");
builder.AppendLine(certificate.TitleName, " Title name");
builder.AppendLine(Encoding.Unicode.GetString(certificate.TitleName), " Title name (Unicode)");
builder.AppendLine(Encoding.Unicode.GetString(certificate.TitleName).TrimEnd('\0'), " Title name (Unicode)");
builder.AppendLine(certificate.AlternativeTitleIDs, " Alternative title IDs");
builder.AppendLine($" Allowed media types: {certificate.AllowedMediaTypes} (0x{certificate.AllowedMediaTypes:X})");
builder.AppendLine($" Game region: {certificate.GameRegion} (0x{certificate.GameRegion:X})");
@@ -100,9 +100,9 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, LibraryVersion? libraryVersion, string prefix, int padding)
private static void Print(StringBuilder builder, LibraryVersion? libraryVersion, string prefix, string postfix, int padding)
{
builder.AppendLine($"{"".PadLeft(padding)}{prefix}Library Version Information:");
builder.AppendLine($"{"".PadLeft(padding)}{prefix}Library Version Information{postfix}:");
builder.AppendLine($"{"".PadLeft(padding)}-------------------------");
if (libraryVersion is null)
{
@@ -112,7 +112,7 @@ namespace SabreTools.Serialization.Wrappers
}
builder.AppendLine(libraryVersion.LibraryName, $"{"".PadLeft(padding)}Library name");
builder.AppendLine(Encoding.ASCII.GetString(libraryVersion.LibraryName), $"{"".PadLeft(padding)}Library name (ASCII)");
builder.AppendLine(Encoding.ASCII.GetString(libraryVersion.LibraryName).TrimEnd('\0'), $"{"".PadLeft(padding)}Library name (ASCII)");
builder.AppendLine(libraryVersion.MajorVersion, $"{"".PadLeft(padding)}Major version");
builder.AppendLine(libraryVersion.MinorVersion, $"{"".PadLeft(padding)}Minor version");
builder.AppendLine(libraryVersion.BuildVersion, $"{"".PadLeft(padding)}Build version");
@@ -134,7 +134,7 @@ namespace SabreTools.Serialization.Wrappers
for (int i = 0; i < entries!.Length; i++)
{
var entry = entries[i];
Print(builder, entry, string.Empty, 4);
Print(builder, entry, string.Empty, $" {i}", 4);
}
builder.AppendLine();