namespace SabreTools.Data.Models.NES
{
///
/// NES headered cart
///
///
///
public class Cart
{
///
/// NES 1.0 or 2.0 header
///
public CartHeader? Header { get; set; }
///
/// Trainer, if present (0 or 512 bytes)
///
public byte[] Trainer { get; set; } = [];
///
/// PRG ROM data (16384 * x bytes)
///
public byte[] PrgRomData { get; set; } = [];
///
/// CHR ROM data, if present (8192 * y bytes)
///
public byte[] ChrRomData { get; set; } = [];
///
/// PlayChoice INST-ROM, if present (0 or 8192 bytes)
///
public byte[] PlayChoiceInstRom { get; set; } = [];
///
/// PlayChoice PROM, if present (16 bytes Data, 16 bytes CounterOut)
///
///
/// This is often missing; see PC10 ROM-Images for details
/// 16 bytes RP5H01 PROM Data output (needed to decrypt the INST ROM)
/// 16 bytes RP5H01 PROM CounterOut output (needed to decrypt the INST ROM) (usually constant: 00,00,00,00,FF,FF,FF,FF,00,00,00,00,FF,FF,FF,FF)
///
/// TODO: Split into 2 parts
public byte[] PlayChoiceProm { get; set; } = [];
///
/// Some ROM-Images additionally contain a 128-byte (or sometimes 127-byte)
/// title at the end of the file.
///
public byte[] Title { get; set; } = [];
}
}