namespace SabreTools.Data.Models.IRD { /// /// public class File { /// /// "3IRD" /// public byte[] Magic { get; set; } = new byte[4]; /// /// Version /// /// Versions 6 - 9 are accepted public byte Version { get; set; } /// /// The same value stored in PARAM.SFO / TITLE_ID /// /// 9 bytes, ASCII, stored without dashes public string TitleID { get; set; } = string.Empty; /// /// Number of bytes that follow containing the title /// public byte TitleLength { get; set; } /// /// The same value stored in PARAM.SFO / TITLE /// /// bytes, ASCII public string Title { get; set; } = string.Empty; /// /// The same value stored in PARAM.SFO / PS3_SYSTEM_VER /// /// 4 bytes, ASCII, missing uses "0000" public string SystemVersion { get; set; } = string.Empty; /// /// The same value stored in PARAM.SFO / VERSION /// /// 5 bytes, ASCII public string GameVersion { get; set; } = string.Empty; /// /// The same value stored in PARAM.SFO / APP_VER /// /// 5 bytes, ASCII public string AppVersion { get; set; } = string.Empty; /// /// Length of the gzip-compressed header data /// public uint HeaderLength { get; set; } /// /// Gzip-compressed header data /// public byte[] Header { get; set; } = []; /// /// Length of the gzip-compressed footer data /// public uint FooterLength { get; set; } /// /// Gzip-compressed footer data /// public byte[] Footer { get; set; } = []; /// /// Number of complete regions in the image /// public byte RegionCount { get; set; } /// /// MD5 hashes for all complete regions in the image /// /// regions, 16-bytes per hash public byte[][] RegionHashes { get; set; } = []; /// /// Number of decrypted files in the image /// public uint FileCount { get; set; } /// /// Starting sector for each decrypted file /// /// files, alternating with each entry public ulong[] FileKeys { get; set; } = []; /// /// MD5 hashes for all decrypted files in the image /// /// files, 16-bytes per hash, alternating with each entry public byte[][] FileHashes { get; set; } = []; /// /// Extra Config, usually 0x0000 /// public ushort ExtraConfig { get; set; } /// /// Attachments, usually 0x0000 /// public ushort Attachments { get; set; } /// /// D1 key /// /// 16 bytes public byte[] Data1Key { get; set; } = new byte[16]; /// /// D2 key /// /// 16 bytes public byte[] Data2Key { get; set; } = new byte[16]; /// /// Uncompressed PIC data /// /// 115 bytes, before D1/D2 keys on version 9 public byte[] PIC { get; set; } = new byte[115]; /// /// Unique Identifier /// /// Not present on version 6 and prior, after AppVersion on version 7 public uint UID { get; set; } /// /// IRD content CRC /// public uint CRC { get; set; } } }