mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Editorconfig cleanup, use extensions
This commit is contained in:
@@ -237,7 +237,7 @@ namespace SabreTools.Data.Models.XRD
|
||||
public int DirectoryCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// List of XISO descriptors and their sector offsets and sizes
|
||||
/// List of XISO descriptors and their sector offsets and sizes
|
||||
/// The root directory descriptor is not guaranteed to be the first
|
||||
/// </summary>
|
||||
public DirectoryEntry[] DirectoryInfo { get; set; } = [];
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using SabreTools.Data.Models.XRD;
|
||||
using SabreTools.IO.Extensions;
|
||||
@@ -105,7 +104,7 @@ namespace SabreTools.Serialization.Readers
|
||||
var vd = XDVDFS.ParseVolumeDescriptor(data);
|
||||
if (vd is null)
|
||||
return null;
|
||||
|
||||
|
||||
xrd.VolumeDescriptor = vd;
|
||||
xrd.LayoutDescriptor = XDVDFS.ParseLayoutDescriptor(data);
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
@@ -9,6 +10,8 @@ namespace SabreTools.Serialization.Writers
|
||||
/// <inheritdoc/>
|
||||
public override Stream? SerializeStream(Data.Models.IRD.File? obj)
|
||||
{
|
||||
#region Validation
|
||||
|
||||
// If the data is invalid
|
||||
if (obj?.Magic is null)
|
||||
return null;
|
||||
@@ -50,79 +53,68 @@ namespace SabreTools.Serialization.Writers
|
||||
if (obj.Data2Key.Length != 16)
|
||||
return null;
|
||||
|
||||
#endregion
|
||||
|
||||
// Create the output stream
|
||||
var stream = new MemoryStream();
|
||||
|
||||
stream.Write(obj.Magic, 0, obj.Magic.Length);
|
||||
stream.WriteByte(obj.Version);
|
||||
stream.Write(obj.Magic);
|
||||
stream.Write(obj.Version);
|
||||
|
||||
byte[] titleId = Encoding.ASCII.GetBytes(obj.TitleID);
|
||||
stream.Write(titleId, 0, titleId.Length);
|
||||
stream.Write(titleId);
|
||||
|
||||
stream.WriteByte(obj.TitleLength);
|
||||
stream.Write(obj.TitleLength);
|
||||
byte[] title = Encoding.ASCII.GetBytes(obj.Title);
|
||||
stream.Write(title, 0, title.Length);
|
||||
stream.Write(title);
|
||||
|
||||
byte[] systemVersion = Encoding.ASCII.GetBytes(obj.SystemVersion);
|
||||
stream.Write(systemVersion, 0, systemVersion.Length);
|
||||
stream.Write(systemVersion);
|
||||
|
||||
byte[] gameVersion = Encoding.ASCII.GetBytes(obj.GameVersion);
|
||||
stream.Write(gameVersion, 0, gameVersion.Length);
|
||||
stream.Write(gameVersion);
|
||||
|
||||
byte[] appVersion = Encoding.ASCII.GetBytes(obj.AppVersion);
|
||||
stream.Write(appVersion, 0, appVersion.Length);
|
||||
stream.Write(appVersion);
|
||||
|
||||
if (obj.Version == 7)
|
||||
{
|
||||
byte[] uid = BitConverter.GetBytes(obj.UID);
|
||||
stream.Write(uid, 0, uid.Length);
|
||||
}
|
||||
stream.WriteLittleEndian(obj.UID);
|
||||
|
||||
byte[] headerLength = BitConverter.GetBytes(obj.HeaderLength);
|
||||
stream.Write(headerLength, 0, headerLength.Length);
|
||||
stream.Write(obj.Header, 0, obj.Header.Length);
|
||||
stream.WriteLittleEndian(obj.HeaderLength);
|
||||
stream.Write(obj.Header);
|
||||
|
||||
byte[] footerLength = BitConverter.GetBytes(obj.FooterLength);
|
||||
stream.Write(footerLength, 0, footerLength.Length);
|
||||
stream.Write(obj.Footer, 0, obj.Footer.Length);
|
||||
stream.WriteLittleEndian(obj.FooterLength);
|
||||
stream.Write(obj.Footer);
|
||||
|
||||
stream.WriteByte(obj.RegionCount);
|
||||
stream.Write(obj.RegionCount);
|
||||
for (int i = 0; i < obj.RegionCount; i++)
|
||||
{
|
||||
stream.Write(obj.RegionHashes[i], 0, obj.RegionHashes[i].Length);
|
||||
stream.Write(obj.RegionHashes[i]);
|
||||
}
|
||||
|
||||
byte[] fileCount = BitConverter.GetBytes(obj.FileCount);
|
||||
stream.Write(fileCount, 0, fileCount.Length);
|
||||
stream.WriteLittleEndian(obj.FileCount);
|
||||
for (int i = 0; i < obj.FileCount; i++)
|
||||
{
|
||||
byte[] fileKey = BitConverter.GetBytes(obj.FileKeys[i]);
|
||||
stream.Write(fileKey, 0, fileKey.Length);
|
||||
stream.Write(obj.FileHashes[i], 0, obj.FileHashes[i].Length);
|
||||
stream.WriteLittleEndian(obj.FileKeys[i]);
|
||||
stream.Write(obj.FileHashes[i]);
|
||||
}
|
||||
|
||||
byte[] extraConfig = BitConverter.GetBytes(obj.ExtraConfig);
|
||||
stream.Write(extraConfig, 0, extraConfig.Length);
|
||||
byte[] attachments = BitConverter.GetBytes(obj.Attachments);
|
||||
stream.Write(attachments, 0, attachments.Length);
|
||||
stream.WriteLittleEndian(obj.ExtraConfig);
|
||||
stream.WriteLittleEndian(obj.Attachments);
|
||||
|
||||
if (obj.Version >= 9)
|
||||
stream.Write(obj.PIC, 0, obj.PIC.Length);
|
||||
stream.Write(obj.PIC);
|
||||
|
||||
stream.Write(obj.Data1Key, 0, obj.Data1Key.Length);
|
||||
stream.Write(obj.Data2Key, 0, obj.Data2Key.Length);
|
||||
stream.Write(obj.Data1Key);
|
||||
stream.Write(obj.Data2Key);
|
||||
|
||||
if (obj.Version < 9)
|
||||
stream.Write(obj.PIC, 0, obj.PIC.Length);
|
||||
stream.Write(obj.PIC);
|
||||
|
||||
if (obj.Version > 7)
|
||||
{
|
||||
byte[] uid = BitConverter.GetBytes(obj.UID);
|
||||
stream.Write(uid, 0, uid.Length);
|
||||
}
|
||||
stream.WriteLittleEndian(obj.UID);
|
||||
|
||||
byte[] crc = BitConverter.GetBytes(obj.CRC);
|
||||
stream.Write(crc, 0, crc.Length);
|
||||
stream.WriteLittleEndian(obj.CRC);
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write CHR-ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
@@ -250,7 +250,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write INST-ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
@@ -279,7 +279,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write PRG-ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
@@ -308,7 +308,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write trainer data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.IO.Extensions;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
@@ -43,7 +44,7 @@ namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
if (Debug) Console.WriteLine("Attempting to write ROM data");
|
||||
|
||||
stream.Write(obj, 0, obj.Length);
|
||||
stream.Write(obj);
|
||||
stream.Flush();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace SabreTools.Serialization.Writers
|
||||
// Create the file stream
|
||||
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
|
||||
fs.Write(obj.ReservedArea, 0, obj.ReservedArea.Length);
|
||||
fs.Write(obj.ReservedArea);
|
||||
SerializeVolumeDescriptor(fs, obj.VolumeDescriptor);
|
||||
if (obj.LayoutDescriptor is not null)
|
||||
SerializeLayoutDescriptor(fs, obj.LayoutDescriptor);
|
||||
@@ -79,26 +79,26 @@ namespace SabreTools.Serialization.Writers
|
||||
|
||||
public static void SerializeVolumeDescriptor(Stream stream, VolumeDescriptor obj)
|
||||
{
|
||||
stream.Write(obj.StartSignature, 0, obj.StartSignature.Length);
|
||||
stream.Write(obj.StartSignature);
|
||||
stream.WriteLittleEndian(obj.RootOffset);
|
||||
stream.WriteLittleEndian(obj.RootSize);
|
||||
stream.WriteLittleEndian(obj.MasteringTimestamp);
|
||||
stream.WriteByte(obj.UnknownByte);
|
||||
stream.Write(obj.Reserved, 0, obj.Reserved.Length);
|
||||
stream.Write(obj.EndSignature, 0, obj.EndSignature.Length);
|
||||
stream.Write(obj.UnknownByte);
|
||||
stream.Write(obj.Reserved);
|
||||
stream.Write(obj.EndSignature);
|
||||
}
|
||||
|
||||
public static void SerializeLayoutDescriptor(Stream stream, LayoutDescriptor obj)
|
||||
{
|
||||
stream.Write(obj.Signature, 0, obj.Signature.Length);
|
||||
stream.Write(obj.Unused8Bytes, 0, obj.Unused8Bytes.Length);
|
||||
stream.Write(obj.Signature);
|
||||
stream.Write(obj.Unused8Bytes);
|
||||
SerializeFourPartVersionType(stream, obj.XBLayoutVersion);
|
||||
SerializeFourPartVersionType(stream, obj.XBPremasterVersion);
|
||||
SerializeFourPartVersionType(stream, obj.XBGameDiscVersion);
|
||||
SerializeFourPartVersionType(stream, obj.XBOther1Version);
|
||||
SerializeFourPartVersionType(stream, obj.XBOther2Version);
|
||||
SerializeFourPartVersionType(stream, obj.XBOther3Version);
|
||||
stream.Write(obj.Reserved, 0, obj.Reserved.Length);
|
||||
stream.Write(obj.Reserved);
|
||||
}
|
||||
|
||||
public static void SerializeFourPartVersionType(Stream stream, FourPartVersionType obj)
|
||||
@@ -114,7 +114,7 @@ namespace SabreTools.Serialization.Writers
|
||||
foreach (var dr in obj.DirectoryRecords)
|
||||
SerializeDirectoryRecord(stream, dr);
|
||||
if (obj.Padding is not null && obj.Padding.Length > 0)
|
||||
stream.Write(obj.Padding, 0, obj.Padding.Length);
|
||||
stream.Write(obj.Padding);
|
||||
}
|
||||
|
||||
public static void SerializeDirectoryRecord(Stream stream, DirectoryRecord obj)
|
||||
@@ -123,11 +123,11 @@ namespace SabreTools.Serialization.Writers
|
||||
stream.WriteLittleEndian(obj.RightChildOffset);
|
||||
stream.WriteLittleEndian(obj.ExtentOffset);
|
||||
stream.WriteLittleEndian(obj.ExtentSize);
|
||||
stream.WriteByte((byte)obj.FileFlags);
|
||||
stream.WriteByte(obj.FilenameLength);
|
||||
stream.Write(obj.Filename, 0, obj.Filename.Length);
|
||||
stream.Write((byte)obj.FileFlags);
|
||||
stream.Write(obj.FilenameLength);
|
||||
stream.Write(obj.Filename);
|
||||
if (obj.Padding is not null && obj.Padding.Length > 0)
|
||||
stream.Write(obj.Padding, 0, obj.Padding.Length);
|
||||
stream.Write(obj.Padding);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Serialization.Writers
|
||||
{
|
||||
@@ -9,6 +8,8 @@ namespace SabreTools.Serialization.Writers
|
||||
/// <inheritdoc/>
|
||||
public override Stream? SerializeStream(Data.Models.XRD.File? obj)
|
||||
{
|
||||
#region Validation
|
||||
|
||||
// If the data is invalid
|
||||
if (obj?.Magic is null)
|
||||
return null;
|
||||
@@ -38,11 +39,11 @@ namespace SabreTools.Serialization.Writers
|
||||
// If the XGD Type specific fields are not set/unset
|
||||
if ((obj.XGDType == 1 || obj.XGDType == 2 || obj.XGDType == 3) && obj.SecuritySectors is null)
|
||||
return null;
|
||||
if ((obj.XGDType != 1 && obj.XGDType != 2 && obj.XGDType != 3) && obj.SecuritySectors is not null)
|
||||
if (obj.XGDType != 1 && obj.XGDType != 2 && obj.XGDType != 3 && obj.SecuritySectors is not null)
|
||||
return null;
|
||||
if ((obj.XGDType == 2 || obj.XGDType == 3) && obj.Xbox360Certificate is null)
|
||||
return null;
|
||||
if ((obj.XGDType != 2 && obj.XGDType != 3) && obj.Xbox360Certificate is not null)
|
||||
if (obj.XGDType != 2 && obj.XGDType != 3 && obj.Xbox360Certificate is not null)
|
||||
return null;
|
||||
|
||||
// If any static-length fields aren't the correct length
|
||||
@@ -109,12 +110,14 @@ namespace SabreTools.Serialization.Writers
|
||||
if (obj.XboxCertificate.AlternateSignatureKeys[i].Length != 16)
|
||||
return null;
|
||||
}
|
||||
|
||||
if (obj.XboxCertificate.CodeEncKey.Length != 16)
|
||||
return null;
|
||||
}
|
||||
|
||||
if (obj.Xbox360Certificate is not null)
|
||||
{
|
||||
var certificateLength = 388 + 24 * obj.Xbox360Certificate.Table.Length;
|
||||
var certificateLength = 388 + (24 * obj.Xbox360Certificate.Table.Length);
|
||||
if (obj.Xbox360Certificate.Length != certificateLength)
|
||||
return null;
|
||||
if (obj.Xbox360Certificate.Signature.Length != 256)
|
||||
@@ -135,6 +138,7 @@ namespace SabreTools.Serialization.Writers
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (obj.FileCount != obj.FileInfo.Length)
|
||||
return null;
|
||||
for (int i = 0; i < obj.FileInfo.Length; i++)
|
||||
@@ -142,6 +146,7 @@ namespace SabreTools.Serialization.Writers
|
||||
if (obj.FileInfo[i].SHA1.Length != 20)
|
||||
return null;
|
||||
}
|
||||
|
||||
if (obj.DirectoryCount != obj.DirectoryInfo.Length)
|
||||
return null;
|
||||
if (obj.VideoISOFileCount is not null && obj.VideoISOFileInfo is not null && obj.VideoISOFileCount != obj.VideoISOFileInfo.Length)
|
||||
@@ -149,63 +154,56 @@ namespace SabreTools.Serialization.Writers
|
||||
if (obj.XRDSHA1.Length != 20)
|
||||
return null;
|
||||
|
||||
#endregion
|
||||
|
||||
// Create the output stream
|
||||
var stream = new MemoryStream();
|
||||
|
||||
stream.Write(obj.Magic, 0, obj.Magic.Length);
|
||||
stream.WriteByte(obj.Version);
|
||||
stream.WriteByte(obj.XGDType);
|
||||
stream.WriteByte(obj.XGDSubtype);
|
||||
stream.Write(obj.Ringcode, 0, obj.Ringcode.Length);
|
||||
stream.Write(obj.Magic);
|
||||
stream.Write(obj.Version);
|
||||
stream.Write(obj.XGDType);
|
||||
stream.Write(obj.XGDSubtype);
|
||||
stream.Write(obj.Ringcode);
|
||||
|
||||
byte[] redumpSize = BitConverter.GetBytes(obj.RedumpSize);
|
||||
stream.Write(redumpSize, 0, redumpSize.Length);
|
||||
stream.Write(obj.RedumpCRC, 0, obj.RedumpCRC.Length);
|
||||
stream.Write(obj.RedumpMD5, 0, obj.RedumpMD5.Length);
|
||||
stream.Write(obj.RedumpSHA1, 0, obj.RedumpSHA1.Length);
|
||||
stream.WriteLittleEndian(obj.RedumpSize);
|
||||
stream.Write(obj.RedumpCRC);
|
||||
stream.Write(obj.RedumpMD5);
|
||||
stream.Write(obj.RedumpSHA1);
|
||||
|
||||
byte[] rawXISOSize = BitConverter.GetBytes(obj.RawXISOSize);
|
||||
stream.Write(rawXISOSize, 0, rawXISOSize.Length);
|
||||
stream.Write(obj.RawXISOCRC, 0, obj.RawXISOCRC.Length);
|
||||
stream.Write(obj.RawXISOMD5, 0, obj.RawXISOMD5.Length);
|
||||
stream.Write(obj.RawXISOSHA1, 0, obj.RawXISOSHA1.Length);
|
||||
stream.WriteLittleEndian(obj.RawXISOSize);
|
||||
stream.Write(obj.RawXISOCRC);
|
||||
stream.Write(obj.RawXISOMD5);
|
||||
stream.Write(obj.RawXISOSHA1);
|
||||
|
||||
byte[] cookedXISOSize = BitConverter.GetBytes(obj.CookedXISOSize);
|
||||
stream.Write(cookedXISOSize, 0, cookedXISOSize.Length);
|
||||
stream.Write(obj.CookedXISOCRC, 0, obj.CookedXISOCRC.Length);
|
||||
stream.Write(obj.CookedXISOMD5, 0, obj.CookedXISOMD5.Length);
|
||||
stream.Write(obj.CookedXISOSHA1, 0, obj.CookedXISOSHA1.Length);
|
||||
stream.WriteLittleEndian(obj.CookedXISOSize);
|
||||
stream.Write(obj.CookedXISOCRC);
|
||||
stream.Write(obj.CookedXISOMD5);
|
||||
stream.Write(obj.CookedXISOSHA1);
|
||||
|
||||
byte[] videoISOSize = BitConverter.GetBytes(obj.VideoISOSize);
|
||||
stream.Write(videoISOSize, 0, videoISOSize.Length);
|
||||
stream.Write(obj.VideoISOCRC, 0, obj.VideoISOCRC.Length);
|
||||
stream.Write(obj.VideoISOMD5, 0, obj.VideoISOMD5.Length);
|
||||
stream.Write(obj.VideoISOSHA1, 0, obj.VideoISOSHA1.Length);
|
||||
stream.WriteLittleEndian(obj.VideoISOSize);
|
||||
stream.Write(obj.VideoISOCRC);
|
||||
stream.Write(obj.VideoISOMD5);
|
||||
stream.Write(obj.VideoISOSHA1);
|
||||
|
||||
if (obj.WipedVideoISOSize is not null)
|
||||
{
|
||||
byte[] wipedVideoISOSize = BitConverter.GetBytes(obj.WipedVideoISOSize ?? 0);
|
||||
stream.Write(videoISOSize, 0, videoISOSize.Length);
|
||||
}
|
||||
stream.WriteLittleEndian(obj.WipedVideoISOSize.Value);
|
||||
if (obj.WipedVideoISOCRC is not null)
|
||||
stream.Write(obj.WipedVideoISOCRC, 0, obj.WipedVideoISOCRC.Length);
|
||||
stream.Write(obj.WipedVideoISOCRC);
|
||||
if (obj.WipedVideoISOMD5 is not null)
|
||||
stream.Write(obj.WipedVideoISOMD5, 0, obj.WipedVideoISOMD5.Length);
|
||||
stream.Write(obj.WipedVideoISOMD5);
|
||||
if (obj.WipedVideoISOSHA1 is not null)
|
||||
stream.Write(obj.WipedVideoISOSHA1, 0, obj.WipedVideoISOSHA1.Length);
|
||||
stream.Write(obj.WipedVideoISOSHA1);
|
||||
|
||||
byte[] fillerSize = BitConverter.GetBytes(obj.FillerSize);
|
||||
stream.Write(fillerSize, 0, fillerSize.Length);
|
||||
stream.Write(obj.FillerCRC, 0, obj.FillerCRC.Length);
|
||||
stream.Write(obj.FillerMD5, 0, obj.FillerMD5.Length);
|
||||
stream.Write(obj.FillerSHA1, 0, obj.FillerSHA1.Length);
|
||||
stream.WriteLittleEndian(obj.FillerSize);
|
||||
stream.Write(obj.FillerCRC);
|
||||
stream.Write(obj.FillerMD5);
|
||||
stream.Write(obj.FillerSHA1);
|
||||
|
||||
if (obj.SecuritySectors is not null)
|
||||
{
|
||||
for (int i = 0; i < obj.SecuritySectors.Length; i++)
|
||||
{
|
||||
byte[] securitySector = BitConverter.GetBytes(obj.SecuritySectors[i]);
|
||||
stream.Write(securitySector, 0, securitySector.Length);
|
||||
stream.Write(obj.SecuritySectors[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,29 +212,23 @@ namespace SabreTools.Serialization.Writers
|
||||
if (obj.Xbox360Certificate is not null)
|
||||
SerializeXbox360Certificate(stream, obj.Xbox360Certificate);
|
||||
|
||||
byte[] fileCount = BitConverter.GetBytes(obj.FileCount);
|
||||
stream.Write(fileCount, 0, fileCount.Length);
|
||||
stream.WriteLittleEndian(obj.FileCount);
|
||||
for (int i = 0; i < obj.FileInfo.Length; i++)
|
||||
{
|
||||
byte[] offset = BitConverter.GetBytes(obj.FileInfo[i].Offset);
|
||||
stream.Write(offset, 0, offset.Length);
|
||||
byte[] size = BitConverter.GetBytes(obj.FileInfo[i].Size);
|
||||
stream.Write(size, 0, size.Length);
|
||||
stream.Write(obj.FileInfo[i].SHA1, 0, obj.FileInfo[i].SHA1.Length);
|
||||
stream.WriteLittleEndian(obj.FileInfo[i].Offset);
|
||||
stream.WriteLittleEndian(obj.FileInfo[i].Size);
|
||||
stream.Write(obj.FileInfo[i].SHA1);
|
||||
}
|
||||
|
||||
XDVDFS.SerializeVolumeDescriptor(stream, obj.VolumeDescriptor);
|
||||
if (obj.LayoutDescriptor is not null)
|
||||
XDVDFS.SerializeLayoutDescriptor(stream, obj.LayoutDescriptor);
|
||||
|
||||
byte[] directoryCount = BitConverter.GetBytes(obj.DirectoryCount);
|
||||
stream.Write(directoryCount, 0, directoryCount.Length);
|
||||
stream.WriteLittleEndian(obj.DirectoryCount);
|
||||
for (int i = 0; i < obj.DirectoryInfo.Length; i++)
|
||||
{
|
||||
byte[] offset = BitConverter.GetBytes(obj.DirectoryInfo[i].Offset);
|
||||
stream.Write(offset, 0, offset.Length);
|
||||
byte[] size = BitConverter.GetBytes(obj.DirectoryInfo[i].Size);
|
||||
stream.Write(size, 0, size.Length);
|
||||
stream.Write(obj.DirectoryInfo[i].Offset);
|
||||
stream.Write(obj.DirectoryInfo[i].Size);
|
||||
XDVDFS.SerializeDirectoryDescriptor(stream, obj.DirectoryInfo[i].DirectoryDescriptor);
|
||||
}
|
||||
|
||||
@@ -245,77 +237,56 @@ namespace SabreTools.Serialization.Writers
|
||||
|
||||
public static void SerializeXboxCertificate(Stream stream, Data.Models.XboxExecutable.Certificate obj)
|
||||
{
|
||||
byte[] sizeOfCertificate = BitConverter.GetBytes(obj.SizeOfCertificate);
|
||||
stream.Write(sizeOfCertificate, 0, sizeOfCertificate.Length);
|
||||
byte[] timeDate = BitConverter.GetBytes(obj.TimeDate);
|
||||
stream.Write(timeDate, 0, timeDate.Length);
|
||||
byte[] titleID = BitConverter.GetBytes(obj.TitleID);
|
||||
stream.Write(titleID, 0, titleID.Length);
|
||||
stream.Write(obj.TitleName, 0, obj.TitleName.Length);
|
||||
stream.WriteLittleEndian(obj.SizeOfCertificate);
|
||||
stream.WriteLittleEndian(obj.TimeDate);
|
||||
stream.WriteLittleEndian(obj.TitleID);
|
||||
stream.Write(obj.TitleName);
|
||||
for (int i = 0; i < obj.AlternativeTitleIDs.Length; i++)
|
||||
{
|
||||
byte[] alternativeTitleID = BitConverter.GetBytes(obj.AlternativeTitleIDs[i]);
|
||||
stream.Write(alternativeTitleID, 0, alternativeTitleID.Length);
|
||||
stream.WriteLittleEndian(obj.AlternativeTitleIDs[i]);
|
||||
}
|
||||
byte[] allowedMediaTypes = BitConverter.GetBytes((uint)obj.AllowedMediaTypes);
|
||||
stream.Write(allowedMediaTypes, 0, allowedMediaTypes.Length);
|
||||
byte[] gameRegion = BitConverter.GetBytes((uint)obj.GameRegion);
|
||||
stream.Write(gameRegion, 0, gameRegion.Length);
|
||||
byte[] gameRatings = BitConverter.GetBytes(obj.GameRatings);
|
||||
stream.Write(gameRatings, 0, gameRatings.Length);
|
||||
byte[] diskNumber = BitConverter.GetBytes(obj.DiskNumber);
|
||||
stream.Write(diskNumber, 0, diskNumber.Length);
|
||||
byte[] version = BitConverter.GetBytes(obj.Version);
|
||||
stream.Write(version, 0, version.Length);
|
||||
stream.Write(obj.LANKey, 0, obj.LANKey.Length);
|
||||
stream.Write(obj.SignatureKey, 0, obj.SignatureKey.Length);
|
||||
|
||||
stream.WriteLittleEndian((uint)obj.AllowedMediaTypes);
|
||||
stream.WriteLittleEndian((uint)obj.GameRegion);
|
||||
stream.WriteLittleEndian(obj.GameRatings);
|
||||
stream.WriteLittleEndian(obj.DiskNumber);
|
||||
stream.WriteLittleEndian(obj.Version);
|
||||
stream.Write(obj.LANKey);
|
||||
stream.Write(obj.SignatureKey);
|
||||
for (int i = 0; i < obj.AlternateSignatureKeys.Length; i++)
|
||||
{
|
||||
stream.Write(obj.AlternateSignatureKeys[i], 0, obj.AlternateSignatureKeys[i].Length);
|
||||
stream.Write(obj.AlternateSignatureKeys[i]);
|
||||
}
|
||||
byte[] originalCertificateSize = BitConverter.GetBytes(obj.OriginalCertificateSize);
|
||||
stream.Write(originalCertificateSize, 0, originalCertificateSize.Length);
|
||||
byte[] onlineService = BitConverter.GetBytes(obj.OnlineService);
|
||||
stream.Write(onlineService, 0, onlineService.Length);
|
||||
byte[] securityFlags = BitConverter.GetBytes(obj.SecurityFlags);
|
||||
stream.Write(securityFlags, 0, securityFlags.Length);
|
||||
stream.Write(obj.CodeEncKey, 0, obj.CodeEncKey.Length);
|
||||
|
||||
stream.WriteLittleEndian(obj.OriginalCertificateSize);
|
||||
stream.WriteLittleEndian(obj.OnlineService);
|
||||
stream.WriteLittleEndian(obj.SecurityFlags);
|
||||
stream.Write(obj.CodeEncKey);
|
||||
}
|
||||
|
||||
public static void SerializeXbox360Certificate(Stream stream, Data.Models.XenonExecutable.Certificate obj)
|
||||
{
|
||||
byte[] length = BitConverter.GetBytes(obj.Length);
|
||||
stream.Write(length, 0, length.Length);
|
||||
byte[] imageSize = BitConverter.GetBytes(obj.ImageSize);
|
||||
stream.Write(imageSize, 0, imageSize.Length);
|
||||
stream.Write(obj.Signature, 0, obj.Signature.Length);
|
||||
byte[] baseFileLoadAddress = BitConverter.GetBytes(obj.BaseFileLoadAddress);
|
||||
stream.Write(baseFileLoadAddress, 0, baseFileLoadAddress.Length);
|
||||
byte[] imageFlags = BitConverter.GetBytes(obj.ImageFlags);
|
||||
stream.Write(imageFlags, 0, imageFlags.Length);
|
||||
byte[] imageBaseAddress = BitConverter.GetBytes(obj.ImageBaseAddress);
|
||||
stream.Write(imageBaseAddress, 0, imageBaseAddress.Length);
|
||||
stream.Write(obj.UnknownHash1, 0, obj.UnknownHash1.Length);
|
||||
byte[] unknown0128 = BitConverter.GetBytes(obj.Unknown0128);
|
||||
stream.Write(unknown0128, 0, unknown0128.Length);
|
||||
stream.Write(obj.UnknownHash2, 0, obj.UnknownHash2.Length);
|
||||
stream.Write(obj.MediaID, 0, obj.MediaID.Length);
|
||||
stream.Write(obj.XEXFileKey, 0, obj.XEXFileKey.Length);
|
||||
byte[] unknown0160 = BitConverter.GetBytes(obj.Unknown0160);
|
||||
stream.Write(unknown0160, 0, unknown0160.Length);
|
||||
stream.Write(obj.UnknownHash3, 0, obj.UnknownHash3.Length);
|
||||
byte[] regionFlags = BitConverter.GetBytes(obj.RegionFlags);
|
||||
stream.Write(regionFlags, 0, regionFlags.Length);
|
||||
byte[] allowedMediaTypeFlags = BitConverter.GetBytes(obj.AllowedMediaTypeFlags);
|
||||
stream.Write(allowedMediaTypeFlags, 0, allowedMediaTypeFlags.Length);
|
||||
byte[] tableCount = BitConverter.GetBytes(obj.TableCount);
|
||||
stream.Write(tableCount, 0, tableCount.Length);
|
||||
stream.WriteLittleEndian(obj.Length);
|
||||
stream.WriteLittleEndian(obj.ImageSize);
|
||||
stream.Write(obj.Signature);
|
||||
stream.WriteLittleEndian(obj.BaseFileLoadAddress);
|
||||
stream.WriteLittleEndian(obj.ImageFlags);
|
||||
stream.WriteLittleEndian(obj.ImageBaseAddress);
|
||||
stream.Write(obj.UnknownHash1);
|
||||
stream.WriteLittleEndian(obj.Unknown0128);
|
||||
stream.Write(obj.UnknownHash2);
|
||||
stream.Write(obj.MediaID);
|
||||
stream.Write(obj.XEXFileKey);
|
||||
stream.WriteLittleEndian(obj.Unknown0160);
|
||||
stream.Write(obj.UnknownHash3);
|
||||
stream.WriteLittleEndian(obj.RegionFlags);
|
||||
stream.WriteLittleEndian(obj.AllowedMediaTypeFlags);
|
||||
stream.WriteLittleEndian(obj.TableCount);
|
||||
|
||||
for (int i = 0; i < obj.Table.Length; i++)
|
||||
{
|
||||
byte[] id = BitConverter.GetBytes(obj.Table[i].ID);
|
||||
stream.Write(id, 0, id.Length);
|
||||
stream.Write(obj.Table[i].Data, 0, obj.Table[i].Data.Length);
|
||||
stream.WriteLittleEndian(obj.Table[i].ID);
|
||||
stream.Write(obj.Table[i].Data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Data.Models.BSP;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -81,7 +82,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -97,7 +98,7 @@ namespace SabreTools.Wrappers
|
||||
if (data.Length == 0)
|
||||
return false;
|
||||
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.IO.Compression.Blast;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -110,7 +111,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.IO;
|
||||
using SabreTools.Data.Models.MicrosoftCabinet;
|
||||
using SabreTools.IO.Compression.MSZIP;
|
||||
using SabreTools.IO.Extensions;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -200,7 +201,7 @@ namespace SabreTools.Wrappers
|
||||
Console.Error.WriteLine($"Data block {blockIndex} in folder {folderIndex} had mismatching sizes. Expected: {block.UncompressedSize}, Got: {stream.Length}");
|
||||
|
||||
byte[] padding = new byte[block.UncompressedSize - stream.Length];
|
||||
stream.Write(padding, 0, padding.Length);
|
||||
stream.Write(padding);
|
||||
}
|
||||
|
||||
// Return the byte array data
|
||||
|
||||
@@ -176,7 +176,7 @@ namespace SabreTools.Wrappers
|
||||
if (buffer.Length == 0)
|
||||
break;
|
||||
|
||||
tempStream.Write(buffer, 0, buffer.Length);
|
||||
tempStream.Write(buffer);
|
||||
tempStream.Flush();
|
||||
|
||||
currentOffset += bytesToRead;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -67,7 +68,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace SabreTools.Wrappers
|
||||
|
||||
// Write the output file
|
||||
var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace SabreTools.Wrappers
|
||||
|
||||
// Write the file data to a temp file
|
||||
var tempStream = File.Open(tempFile, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
|
||||
tempStream.Write(data, 0, data.Length);
|
||||
tempStream.Write(data);
|
||||
tempStream.Flush();
|
||||
|
||||
return true;
|
||||
@@ -317,7 +317,7 @@ namespace SabreTools.Wrappers
|
||||
if (buffer.Length == 0)
|
||||
break;
|
||||
|
||||
tempStream.Write(buffer, 0, buffer.Length);
|
||||
tempStream.Write(buffer);
|
||||
tempStream.Flush();
|
||||
|
||||
currentOffset += bytesToRead;
|
||||
@@ -614,7 +614,7 @@ namespace SabreTools.Wrappers
|
||||
|
||||
// Write the output file
|
||||
var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace SabreTools.Wrappers
|
||||
// {
|
||||
// // Open the output file for writing
|
||||
// using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
// fs.Write(data, 0, data.Length);
|
||||
// fs.Write(data);
|
||||
// fs.Flush();
|
||||
// }
|
||||
// catch
|
||||
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using SabreTools.IO.Compression.zlib;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -135,7 +136,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.IO;
|
||||
using SabreTools.Data.Models.SecuROM;
|
||||
using SabreTools.Hashing;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -71,7 +72,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Data.Models.TAR;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -148,7 +149,7 @@ namespace SabreTools.Wrappers
|
||||
|
||||
// Write the file
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(dataBytes, 0, dataBytes.Length);
|
||||
fs.Write(dataBytes);
|
||||
fs.Flush();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Data.Models.BSP;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -81,7 +82,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -67,7 +68,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace SabreTools.Wrappers
|
||||
}
|
||||
}
|
||||
|
||||
destination.Write(actual, 0, actual.Length);
|
||||
destination.Write(actual);
|
||||
return ExtractionStatus.GOOD;
|
||||
}
|
||||
catch
|
||||
@@ -199,7 +199,7 @@ namespace SabreTools.Wrappers
|
||||
// Debug output
|
||||
if (includeDebug) Console.WriteLine("No CRC-32!");
|
||||
|
||||
destination.Write(actual, 0, actual.Length);
|
||||
destination.Write(actual);
|
||||
return ExtractionStatus.GOOD;
|
||||
}
|
||||
catch
|
||||
|
||||
@@ -61,10 +61,10 @@ namespace SabreTools.Wrappers
|
||||
builder.AppendLine(Model.SecuritySectors[i], $"Security Sector {i}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Model.XboxCertificate is not null)
|
||||
XboxExecutable.Print(builder, Model.XboxCertificate);
|
||||
|
||||
|
||||
if (Model.Xbox360Certificate is not null)
|
||||
XenonExecutable.Print(builder, Model.Xbox360Certificate);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.Numerics.Extensions;
|
||||
|
||||
namespace SabreTools.Wrappers
|
||||
{
|
||||
@@ -76,7 +77,7 @@ namespace SabreTools.Wrappers
|
||||
{
|
||||
// Open the output file for writing
|
||||
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
fs.Write(data, 0, data.Length);
|
||||
fs.Write(data);
|
||||
fs.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user