mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-09 02:16:55 +00:00
Add Mode0 and Mode2 formless models
This commit is contained in:
15
SabreTools.Serialization/Models/CDROM/Mode0.cs
Normal file
15
SabreTools.Serialization/Models/CDROM/Mode0.cs
Normal 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];
|
||||
}
|
||||
}
|
||||
14
SabreTools.Serialization/Models/CDROM/Mode2Formless.cs
Normal file
14
SabreTools.Serialization/Models/CDROM/Mode2Formless.cs
Normal 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];
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user