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; } } }