namespace SabreTools.Data.Models.NES
{
///
/// NES 2.0 header information
///
///
public class CartHeader2 : CartHeader
{
// All common header parts take up bytes 0-7
#region Byte 8
///
/// Mapper MSB bits 8-11
///
/// Byte 8, Bits 0-3
public byte MapperMSB { get; set; }
///
/// Submapper
///
/// Byte 8, Bits 4-7
public byte Submapper { get; set; }
#endregion
#region Byte 9
///
/// PRG-ROM size MSB bits 8-11
///
/// Byte 9, Bits 0-3
public byte PrgRomSizeMSB { get; set; }
///
/// CHR-ROM size MSB bits 8-11
///
/// Byte 9, Bits 4-7
public byte ChrRomSizeMSB { get; set; }
#endregion
#region Byte 10
///
/// PRG-RAM (volatile) shift count
///
///
/// Byte 10, Bits 0-3
///
/// If the shift count is zero, there is no RAM.
/// If the shift count is non-zero, the actual size is
/// "64 << shift count" bytes, i.e. 8192 bytes for a shift count of 7.
///
public byte PrgRamShiftCount { get; set; }
///
/// PRG-NVRAM/EEPROM (non-volatile) shift count
///
///
/// Byte 10, Bits 4-7
///
/// If the shift count is zero, there is no NVRAM.
/// If the shift count is non-zero, the actual size is
/// "64 << shift count" bytes, i.e. 8192 bytes for a shift count of 7.
///
public byte PrgNvramEepromShiftCount { get; set; }
#endregion
#region Byte 11
///
/// CHR-RAM size (volatile) shift count
///
///
/// Byte 11, Bits 0-3
///
/// If the shift count is zero, there is no RAM.
/// If the shift count is non-zero, the actual size is
/// "64 << shift count" bytes, i.e. 8192 bytes for a shift count of 7.
///
public byte ChrRamShiftCount { get; set; }
///
/// CHR-NVRAM size (non-volatile) shift count
///
///
/// Byte 11, Bits 4-7
///
/// If the shift count is zero, there is no NVRAM.
/// If the shift count is non-zero, the actual size is
/// "64 << shift count" bytes, i.e. 8192 bytes for a shift count of 7.
///
public byte ChrNvramShiftCount { get; set; }
#endregion
///
/// CPU/PPU timing mode
///
public CPUPPUTiming CPUPPUTiming { get; set; }
#region Byte 13
#region Standard System and PlayChoice-10
///
/// Reserved byte, unused
///
///
/// Valid when == .
/// Valid when == .
///
public byte Reserved13 { get; set; }
#endregion
#region Vs. Unisystem
///
/// Vs. System Type
///
///
/// Byte 13, Bits 0-3
///
/// Valid when ==
///
public VsSystemType VsSystemType { get; set; }
///
/// Vs. Hardware Type
///
///
/// Byte 13, Bits 4-7
///
/// Valid when ==
///
public VsHardwareType VsHardwareType { get; set; }
#endregion
#region Extended Console Type
///
/// Extended Console Type
///
///
/// Byte 13, Bits 0-3
///
/// Valid when ==
///
public ExtendedConsoleType ExtendedConsoleType { get; set; }
///
/// Unknown reserved bits
///
/// Byte 13, Bits 4-7
public byte Byte13ReservedBits47 { get; set; }
#endregion
#endregion
///
/// Number of miscellaneous ROMs present
///
/// Only bits 0-1 are used
public byte MiscellaneousROMs { get; set; }
///
/// Default Expansion Device
///
public DefaultExpansionDevice DefaultExpansionDevice { get; set; }
}
}