namespace SabreTools.Data.Models.XDVDFS
{
///
/// Xbox DVD Layout Descriptor, present at sector 33 (offset 0x10800) of an Xbox DVD Filesystem
/// Only present on XGD1 and XGD2 discs
///
///
///
public class LayoutDescriptor
{
///
/// Xbox DVD Layout descriptor signature for 2nd sector start
/// For XGD2, this should be the only non-zero field
///
/// 24 bytes
public byte[] Signature { get; set; } = new byte[24]; // LayoutDescriptorSignature
///
/// Seemingly unused 8 bytes after the signature, should be zeroed
///
/// 8 bytes
public byte[] Unused8Bytes { get; set; } = new byte[8];
///
/// Version number of xblayout(?) tool used to master the filesystem
/// Known versions are 1.0.x.1, x = 3926 to 5120
/// If zeroed, xblayout was not used
///
/// 8 bytes
public FourPartVersionType XBLayoutVersion { get; set; } = new();
///
/// Version number of xbpremaster(?) tool used to master the filesystem
/// If zeroed, xbpremaster was not used
///
/// 8 bytes
public FourPartVersionType XBPremasterVersion { get; set; } = new();
///
/// Version number of xbgamedisc(?) tool used to master the filesystem
/// The major version is set to [0x01, 0x02] which may not be a ushort ?
/// Known versions are 513.0.x.1 (aka 2.1.0.x.1), x = 5233 to 5849
/// If zeroed, xbgamedisc was not used
///
/// 8 bytes
public FourPartVersionType XBGameDiscVersion { get; set; } = new();
///
/// Version number of other microsoft tool used to master the filesystem
/// May be zeroed, not always present
///
/// 8 bytes
public FourPartVersionType XBOther1Version { get; set; } = new();
///
/// Version number of other microsoft tool used to master the filesystem
/// May be zeroed, not always present
///
/// 8 bytes
public FourPartVersionType XBOther2Version { get; set; } = new();
///
/// Version number of other microsoft tool used to master the filesystem
/// May be zeroed, not always present
///
/// 8 bytes
public FourPartVersionType XBOther3Version { get; set; } = new();
///
/// Padding the remainder of sector, should be zeroed
///
/// 1968 bytes
public byte[] Reserved { get; set; } = new byte[1968];
}
}