Add Mode0 and Mode2 formless models

This commit is contained in:
Matt Nadareski
2025-11-05 09:49:32 -05:00
parent eaabd2ee77
commit f47e68b9ba
3 changed files with 67 additions and 2 deletions

View File

@@ -0,0 +1,15 @@
namespace SabreTools.Data.Models.CDROM
{
/// <summary>
/// A CD-ROM Mode1 sector
/// </summary>
/// <see href="https://ecma-international.org/wp-content/uploads/ECMA-130_2nd_edition_june_1996.pdf"/>
public sealed class Mode0 : DataSector
{
/// <summary>
/// User Data, 2336 bytes
/// </summary>
/// <remarks>Should be all 0x00</remarks>
public byte[] UserData { get; set; } = new byte[2336];
}
}

View File

@@ -0,0 +1,14 @@
namespace SabreTools.Data.Models.CDROM
{
/// <summary>
/// A CD-ROM Mode1 sector
/// </summary>
/// <see href="https://ecma-international.org/wp-content/uploads/ECMA-130_2nd_edition_june_1996.pdf"/>
public sealed class Mode2Formless : DataSector
{
/// <summary>
/// User Data, 2336 bytes
/// </summary>
public byte[] UserData { get; set; } = new byte[2336];
}
}

View File

@@ -21,9 +21,9 @@ namespace SabreTools.Serialization.Readers
SectorMode sectorMode = data.GetSectorMode();
return sectorMode switch
{
SectorMode.MODE0 => null, // TODO: Create data sector for Mode0
SectorMode.MODE0 => ParseMode0(data),
SectorMode.MODE1 => ParseMode1(data),
SectorMode.MODE2 => null, // TODO: Create a data sector for Mode2 formless
SectorMode.MODE2 => ParseMode2Formless(data),
SectorMode.MODE2_FORM1 => ParseMode2Form1(data),
SectorMode.MODE2_FORM2 => ParseMode2Form2(data),
@@ -32,6 +32,24 @@ namespace SabreTools.Serialization.Readers
};
}
/// <summary>
/// Parse a Stream into a Mode0
/// </summary>
/// <param name="data">Stream to parse</param>
/// <returns>Filled Mode0 on success, null on error</returns>
public static Mode0 ParseMode0(Stream data)
{
var obj = new Mode0();
obj.SyncPattern = data.ReadBytes(12);
obj.Address = data.ReadBytes(3);
obj.Mode = data.ReadByteValue();
obj.UserData = data.ReadBytes(2336);
return obj;
}
/// <summary>
/// Parse a Stream into a Mode1
/// </summary>
@@ -53,6 +71,24 @@ namespace SabreTools.Serialization.Readers
return obj;
}
/// <summary>
/// Parse a Stream into a Mode2Formless
/// </summary>
/// <param name="data">Stream to parse</param>
/// <returns>Filled Mode2Formless on success, null on error</returns>
public static Mode2Formless ParseMode2Formless(Stream data)
{
var obj = new Mode2Formless();
obj.SyncPattern = data.ReadBytes(12);
obj.Address = data.ReadBytes(3);
obj.Mode = data.ReadByteValue();
obj.UserData = data.ReadBytes(2336);
return obj;
}
/// <summary>
/// Parse a Stream into a Mode2Form1
/// </summary>