From e8394d6665d99d29aad38f09f89d5720af149804 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 10 Mar 2026 17:06:01 -0400 Subject: [PATCH] Rename NES cart models a bit --- SabreTools.Serialization/Models/NES/Cart.cs | 2 +- .../Models/NES/{Header.cs => CartHeader.cs} | 2 +- .../Models/NES/{Header1.cs => CartHeader1.cs} | 2 +- .../Models/NES/{Header2.cs => CartHeader2.cs} | 12 ++-- .../Models/NES/Constants.cs | 4 +- SabreTools.Serialization/Readers/NESCart.cs | 10 +-- SabreTools.Serialization/WrapperFactory.cs | 2 +- .../Wrappers/NESCart.Extraction.cs | 4 +- .../Wrappers/NESCart.Printing.cs | 6 +- SabreTools.Serialization/Wrappers/NESCart.cs | 62 +++++++++---------- 10 files changed, 53 insertions(+), 53 deletions(-) rename SabreTools.Serialization/Models/NES/{Header.cs => CartHeader.cs} (98%) rename SabreTools.Serialization/Models/NES/{Header1.cs => CartHeader1.cs} (98%) rename SabreTools.Serialization/Models/NES/{Header2.cs => CartHeader2.cs} (89%) diff --git a/SabreTools.Serialization/Models/NES/Cart.cs b/SabreTools.Serialization/Models/NES/Cart.cs index fed87792..01011d0d 100644 --- a/SabreTools.Serialization/Models/NES/Cart.cs +++ b/SabreTools.Serialization/Models/NES/Cart.cs @@ -10,7 +10,7 @@ namespace SabreTools.Data.Models.NES /// /// NES 1.0 or 2.0 header /// - public Header? Header { get; set; } + public CartHeader? Header { get; set; } /// /// Trainer, if present (0 or 512 bytes) diff --git a/SabreTools.Serialization/Models/NES/Header.cs b/SabreTools.Serialization/Models/NES/CartHeader.cs similarity index 98% rename from SabreTools.Serialization/Models/NES/Header.cs rename to SabreTools.Serialization/Models/NES/CartHeader.cs index 43312544..5ec23d25 100644 --- a/SabreTools.Serialization/Models/NES/Header.cs +++ b/SabreTools.Serialization/Models/NES/CartHeader.cs @@ -5,7 +5,7 @@ namespace SabreTools.Data.Models.NES /// /// /// - public abstract class Header + public abstract class CartHeader { /// /// Constant $4E $45 $53 $1A (ASCII "NES" followed by MS-DOS end-of-file) diff --git a/SabreTools.Serialization/Models/NES/Header1.cs b/SabreTools.Serialization/Models/NES/CartHeader1.cs similarity index 98% rename from SabreTools.Serialization/Models/NES/Header1.cs rename to SabreTools.Serialization/Models/NES/CartHeader1.cs index 84da3d73..1f9ab7be 100644 --- a/SabreTools.Serialization/Models/NES/Header1.cs +++ b/SabreTools.Serialization/Models/NES/CartHeader1.cs @@ -13,7 +13,7 @@ namespace SabreTools.Data.Models.NES /// not marked for NES 2.0 format, an emulator should either mask off the upper 4 bits /// of the mapper number or simply refuse to load the ROM. /// - public class Header1 : Header + public class CartHeader1 : CartHeader { // All common header parts take up bytes 0-7 diff --git a/SabreTools.Serialization/Models/NES/Header2.cs b/SabreTools.Serialization/Models/NES/CartHeader2.cs similarity index 89% rename from SabreTools.Serialization/Models/NES/Header2.cs rename to SabreTools.Serialization/Models/NES/CartHeader2.cs index c7d6b312..278b63d6 100644 --- a/SabreTools.Serialization/Models/NES/Header2.cs +++ b/SabreTools.Serialization/Models/NES/CartHeader2.cs @@ -4,7 +4,7 @@ namespace SabreTools.Data.Models.NES /// NES 2.0 header information /// /// - public class Header2 : Header + public class CartHeader2 : CartHeader { // All common header parts take up bytes 0-7 @@ -109,8 +109,8 @@ namespace SabreTools.Data.Models.NES /// Reserved byte, unused /// /// - /// Valid when == . - /// Valid when == . + /// Valid when == . + /// Valid when == . /// public byte Reserved13 { get; set; } @@ -124,7 +124,7 @@ namespace SabreTools.Data.Models.NES /// /// Byte 13, Bits 0-3 /// - /// Valid when == + /// Valid when == /// public VsSystemType VsSystemType { get; set; } @@ -134,7 +134,7 @@ namespace SabreTools.Data.Models.NES /// /// Byte 13, Bits 4-7 /// - /// Valid when == + /// Valid when == /// public VsHardwareType VsHardwareType { get; set; } @@ -148,7 +148,7 @@ namespace SabreTools.Data.Models.NES /// /// Byte 13, Bits 0-3 /// - /// Valid when == + /// Valid when == /// public ExtendedConsoleType ExtendedConsoleType { get; set; } diff --git a/SabreTools.Serialization/Models/NES/Constants.cs b/SabreTools.Serialization/Models/NES/Constants.cs index 4f3f4ad3..8cb84071 100644 --- a/SabreTools.Serialization/Models/NES/Constants.cs +++ b/SabreTools.Serialization/Models/NES/Constants.cs @@ -5,11 +5,11 @@ namespace SabreTools.Data.Models.NES /// /// NES /// - public static readonly byte[] SignatureBytes = [0x4E, 0x45, 0x53, 0x1A]; + public static readonly byte[] CartSignatureBytes = [0x4E, 0x45, 0x53, 0x1A]; /// /// NES /// - public static readonly string SignatureString = "NES" + (char)0x1A; + public static readonly string CartSignatureString = "NES" + (char)0x1A; } } diff --git a/SabreTools.Serialization/Readers/NESCart.cs b/SabreTools.Serialization/Readers/NESCart.cs index c3ce7a4d..8d9abac5 100644 --- a/SabreTools.Serialization/Readers/NESCart.cs +++ b/SabreTools.Serialization/Readers/NESCart.cs @@ -42,7 +42,7 @@ namespace SabreTools.Serialization.Readers // TODO: Make model for PRG-ROM data blocks int prgRomSize = cart.Header.PrgRomSize * 16384; int chrRomSize = cart.Header.ChrRomSize * 8192; - if (cart.Header is Header2 header2) + if (cart.Header is CartHeader2 header2) { ushort extendedSize = (ushort)((header2.PrgRomSizeMSB << 8) | header.PrgRomSize); @@ -83,11 +83,11 @@ namespace SabreTools.Serialization.Readers /// /// Stream to parse /// Filled Header on success, null on error - public static Header? ParseHeader(Stream data) + public static CartHeader? ParseHeader(Stream data) { // Cache data until NES 2.0 flag determined byte[] identificationString = data.ReadBytes(4); - if (!identificationString.EqualsExactly(SignatureBytes)) + if (!identificationString.EqualsExactly(CartSignatureBytes)) return null; byte prgRomSize = data.ReadByteValue(); @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.Readers // NES 2.0 if (nes20) { - var obj = new Header2(); + var obj = new CartHeader2(); obj.IdentificationString = identificationString; obj.PrgRomSize = prgRomSize; @@ -174,7 +174,7 @@ namespace SabreTools.Serialization.Readers // NES 1.0 else { - var obj = new Header1(); + var obj = new CartHeader1(); obj.IdentificationString = identificationString; obj.PrgRomSize = prgRomSize; diff --git a/SabreTools.Serialization/WrapperFactory.cs b/SabreTools.Serialization/WrapperFactory.cs index 4145d353..7119b1e3 100644 --- a/SabreTools.Serialization/WrapperFactory.cs +++ b/SabreTools.Serialization/WrapperFactory.cs @@ -477,7 +477,7 @@ namespace SabreTools.Serialization #region NESCart // NES 1.0 and 2.0 image with header - if (magic.StartsWith(Data.Models.NES.Constants.SignatureBytes)) + if (magic.StartsWith(Data.Models.NES.Constants.CartSignatureBytes)) return WrapperType.NESCart; // NES 1.0 and 2.0 image diff --git a/SabreTools.Serialization/Wrappers/NESCart.Extraction.cs b/SabreTools.Serialization/Wrappers/NESCart.Extraction.cs index 73ae1a3a..f1192ecd 100644 --- a/SabreTools.Serialization/Wrappers/NESCart.Extraction.cs +++ b/SabreTools.Serialization/Wrappers/NESCart.Extraction.cs @@ -65,7 +65,7 @@ namespace SabreTools.Serialization.Wrappers fs.Write(byte7); fs.Flush(); - if (Header is Header1 header1) + if (Header is CartHeader1 header1) { // Byte 8 fs.Write(header1.PrgRamSize); @@ -91,7 +91,7 @@ namespace SabreTools.Serialization.Wrappers fs.Write(header1.Padding); fs.Flush(); } - else if (Header is Header2 header2) + else if (Header is CartHeader2 header2) { // Byte 8 byte byte8 = 0; diff --git a/SabreTools.Serialization/Wrappers/NESCart.Printing.cs b/SabreTools.Serialization/Wrappers/NESCart.Printing.cs index 3fc7c6aa..05ced275 100644 --- a/SabreTools.Serialization/Wrappers/NESCart.Printing.cs +++ b/SabreTools.Serialization/Wrappers/NESCart.Printing.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(Model.Title, "Title"); } - private static void Print(StringBuilder builder, Header? header) + private static void Print(StringBuilder builder, CartHeader? header) { builder.AppendLine(" Common Header Information:"); builder.AppendLine(" -------------------------"); @@ -86,7 +86,7 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(mapperNumber, " Mapper"); builder.AppendLine(); - if (header is Header1 header1) + if (header is CartHeader1 header1) { builder.AppendLine(" NES 1.0 Header Information:"); builder.AppendLine(" -------------------------"); @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Wrappers // Bytes 11-15 builder.AppendLine(header1.Padding, " Padding"); } - else if (header is Header2 header2) + else if (header is CartHeader2 header2) { builder.AppendLine(" NES 2.0 Header Information:"); builder.AppendLine(" -------------------------"); diff --git a/SabreTools.Serialization/Wrappers/NESCart.cs b/SabreTools.Serialization/Wrappers/NESCart.cs index 1f8e674a..c8c4e080 100644 --- a/SabreTools.Serialization/Wrappers/NESCart.cs +++ b/SabreTools.Serialization/Wrappers/NESCart.cs @@ -17,12 +17,12 @@ namespace SabreTools.Serialization.Wrappers #region Common /// - public Header? Header => Model.Header; + public CartHeader? Header => Model.Header; - /// + /// public bool AlternativeNametableLayout => Header?.AlternativeNametableLayout ?? false; - /// + /// public bool BatteryBackedPrgRam => Header?.BatteryBackedPrgRam ?? false; /// @@ -41,14 +41,14 @@ namespace SabreTools.Serialization.Wrappers return 0; int chrRomSize = Header.ChrRomSize * 8192; - if (Header is Header2 header2) + if (Header is CartHeader2 header2) chrRomSize = (header2.ChrRomSizeMSB << 8) | chrRomSize; return chrRomSize; } } - /// + /// public ConsoleType ConsoleType => Header?.ConsoleType ?? ConsoleType.StandardSystem; /// @@ -64,18 +64,18 @@ namespace SabreTools.Serialization.Wrappers return 0; int mapperNumber = (Header.MapperUpperNibble << 4) | Header.MapperLowerNibble; - if (Header is Header2 header2) + if (Header is CartHeader2 header2) mapperNumber = (header2.MapperMSB << 8) | mapperNumber; return mapperNumber; } } - /// + /// public NametableArrangement NametableArrangement => Header?.NametableArrangement ?? NametableArrangement.Vertical; - /// + /// public bool NES20 => Header?.NES20 ?? false; /// @@ -90,9 +90,9 @@ namespace SabreTools.Serialization.Wrappers if (Header is null) return 0; - if (Header is Header1 header1) + if (Header is CartHeader1 header1) return header1.PrgRamSize > 0 ? header1.PrgRamSize * 8192 : 8192; - else if (Header is Header2 header2) + else if (Header is CartHeader2 header2) return header2.PrgRamShiftCount > 0 ? 64 << header2.PrgRamShiftCount : 0; else return 0; @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.Wrappers return 0; int prgRomSize = Header.PrgRomSize * 16384; - if (Header is Header2 header2) + if (Header is CartHeader2 header2) prgRomSize = (header2.PrgRomSizeMSB << 8) | prgRomSize; return prgRomSize; @@ -134,63 +134,63 @@ namespace SabreTools.Serialization.Wrappers /// public byte[] Trainer => Model.Trainer; - /// + /// public bool TrainerPresent => Header?.TrainerPresent ?? false; #endregion #region NES 1.0 - /// + /// /// Defined only for NES 1.0 public bool HasBusConflicts { get { // Missing or invalid header - if (Header is null || Header is not Header1 header1) + if (Header is null || Header is not CartHeader1 header1) return false; return header1.HasBusConflicts; } } - /// + /// /// Defined only for NES 1.0 public bool PrgRamPresent { get { // Missing or invalid header - if (Header is null || Header is not Header1 header1) + if (Header is null || Header is not CartHeader1 header1) return false; return header1.PrgRamPresent; } } - /// + /// /// Defined only for NES 1.0 public TVSystem TVSystem { get { // Missing or invalid header - if (Header is null || Header is not Header1 header1) + if (Header is null || Header is not CartHeader1 header1) return TVSystem.NTSC; return header1.TVSystem; } } - /// + /// /// Defined only for NES 1.0 public TVSystemExtended TVSystemExtended { get { // Missing or invalid header - if (Header is null || Header is not Header1 header1) + if (Header is null || Header is not CartHeader1 header1) return TVSystemExtended.NTSC; return header1.TVSystemExtended; @@ -210,7 +210,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return 0; return header2.ChrNvramShiftCount > 0 ? 64 << header2.ChrNvramShiftCount : 0; @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return 0; return header2.ChrRamShiftCount > 0 ? 64 << header2.ChrRamShiftCount : 0; @@ -242,7 +242,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return CPUPPUTiming.RP2C02; return header2.CPUPPUTiming; @@ -258,7 +258,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return DefaultExpansionDevice.Unspecified; return header2.DefaultExpansionDevice; @@ -274,7 +274,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return ExtendedConsoleType.RegularSystem; // Invalid console type @@ -294,7 +294,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return 0; return header2.MiscellaneousROMs; @@ -310,21 +310,21 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return 0; return header2.PrgNvramEepromShiftCount > 0 ? 64 << header2.PrgNvramEepromShiftCount : 0; } } - /// + /// /// Defined only for NES 2.0 public int Submapper { get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return 0; return header2.Submapper; @@ -340,7 +340,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return VsHardwareType.VsUnisystem; // Invalid console type @@ -360,7 +360,7 @@ namespace SabreTools.Serialization.Wrappers get { // Missing or invalid header - if (Header is null || Header is not Header2 header2) + if (Header is null || Header is not CartHeader2 header2) return VsSystemType.AnyRP2C03RC2C03Variant; // Invalid console type