diff --git a/SabreTools.Serialization/Models/README.MD b/SabreTools.Serialization/Models/README.MD
index 54acc200..f9bb537c 100644
--- a/SabreTools.Serialization/Models/README.MD
+++ b/SabreTools.Serialization/Models/README.MD
@@ -44,6 +44,7 @@ Not all of this information was able to be gathered directly from the files in q
| [PKWARE(?)](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) | PKZIP |
| [PS3 Developer Wiki](https://www.psdevwiki.com/ps3/) | IRD, PlayStation3 |
| [RanseiLink](https://github.com/Deijin27/RanseiLink) | Nitro |
+| [raphnet](https://www.raphnet.net/divers/documentation/Sneskart.txt) | SNES |
| [Reverse Engineering Wise](https://codeberg.org/CYBERDEV/REWise) | WiseInstaller |
| [SharpCompress](https://github.com/adamhathcock/sharpcompress) | PKZIP |
| [Source SDK 2013](https://github.com/ValveSoftware/source-sdk-2013) | BSP |
diff --git a/SabreTools.Serialization/Models/SNES/Cart.cs b/SabreTools.Serialization/Models/SNES/Cart.cs
new file mode 100644
index 00000000..0409b3a7
--- /dev/null
+++ b/SabreTools.Serialization/Models/SNES/Cart.cs
@@ -0,0 +1,19 @@
+namespace SabreTools.Data.Models.SNES
+{
+ ///
+ /// SNES cart image
+ ///
+ ///
+ public class Cart
+ {
+ ///
+ /// Copier header
+ ///
+ public Header? Header { get; set; }
+
+ ///
+ /// Cartridge data
+ ///
+ public byte[] Data { get; set; } = [];
+ }
+}
diff --git a/SabreTools.Serialization/Models/SNES/Constants.cs b/SabreTools.Serialization/Models/SNES/Constants.cs
new file mode 100644
index 00000000..e129d696
--- /dev/null
+++ b/SabreTools.Serialization/Models/SNES/Constants.cs
@@ -0,0 +1,11 @@
+namespace SabreTools.Data.Models.SNES
+{
+ public static class Constants
+ {
+ ///
+ /// Super Wild Card header identifier
+ ///
+ ///
+ public static readonly byte[] SuperWildCardHeaderIdentifier = [0xAA, 0xBB, 0x04];
+ }
+}
diff --git a/SabreTools.Serialization/Models/SNES/Enums.cs b/SabreTools.Serialization/Models/SNES/Enums.cs
new file mode 100644
index 00000000..1da6e257
--- /dev/null
+++ b/SabreTools.Serialization/Models/SNES/Enums.cs
@@ -0,0 +1,174 @@
+using System;
+
+namespace SabreTools.Data.Models.SNES
+{
+ ///
+ /// Pro Fighter first SRAM mode
+ ///
+ ///
+ public enum FIGDSPMode1 : byte
+ {
+ ///
+ /// If using DSP1 microchip and if no SRAM (SRAM size=0)
+ ///
+ DSP1WithNoSRAM = 0x47,
+
+ ///
+ /// If not using DSP1 and no SRAM (SRAM size=0)
+ ///
+ NoDSP1WithNoSRAM = 0x77,
+
+ ///
+ /// If using DSP1 microchip and if using SRAM (SRAM size>0)
+ ///
+ DSP1WithSRAM = 0xFD,
+ }
+
+ ///
+ /// Pro Fighter second SRAM mode
+ ///
+ ///
+ public enum FIGDSPMode2 : byte
+ {
+ ///
+ /// If using DSP1 microchip and if using SRAM (SRAM size>0)
+ ///
+ DSP1WithSRAM = 0x82,
+
+ ///
+ /// If using DSP1 microchip and if no SRAM (SRAM size=0)
+ ///
+ DSP1WithNoSRAM = 0x83,
+
+ ///
+ /// If not using DSP1 and no SRAM (SRAM size=0)
+ ///
+ NoDSP1WithNoSRAM = 0x83,
+ }
+
+ ///
+ /// Pro Fighter image mode
+ ///
+ ///
+ public enum FIGImageMode : byte
+ {
+ ///
+ /// Last image in set (or single image)
+ ///
+ SingleImage = 0x00,
+
+ ///
+ /// Multi image
+ ///
+ MultiImage = 0x40,
+ }
+
+ ///
+ /// Pro Fighter ROM mode
+ ///
+ ///
+ public enum FIGRomMode : byte
+ {
+ LoROM = 0x00,
+
+ HiROM = 0x80,
+ }
+
+ ///
+ /// Super Wild Card image information
+ ///
+ ///
+ [Flags]
+ public enum SWCImageInformation : byte
+ {
+ ///
+ /// Reserved
+ ///
+ Reserved0 = 0b00000001,
+
+ ///
+ /// Reserved
+ ///
+ Reserved1 = 0b00000010,
+
+ #region SRAM size
+
+ ///
+ /// 256kbit SRAM
+ ///
+ SRAM256kbit = 0b00000000,
+
+ ///
+ /// 65kbit SRAM
+ ///
+ SRAM65kbit = 0b00000100,
+
+ ///
+ /// 16kbit SRAM
+ ///
+ SRAM16kbit = 0b00001000,
+
+ ///
+ /// no SRAM
+ ///
+ SRAMNone = 0b00001100,
+
+ #endregion
+
+ #region DRAM mode
+
+ ///
+ /// DRAM memory mapping Mode 20
+ ///
+ DRAMMappingMode20 = 0b00000000,
+
+ ///
+ /// DRAM memory mapping Mode 21 (HiROM)
+ ///
+ DRAMMappingMode21 = 0b00010000,
+
+ #endregion
+
+ #region SRAM mode
+
+ ///
+ /// SRAM memory mapping Mode 20
+ ///
+ SRAMMappingMode20 = 0b00000000,
+
+ ///
+ /// SRAM memory mapping Mode 21 (HiROM)
+ ///
+ SRAMMappingMode21 = 0b00100000,
+
+ #endregion
+
+ #region Multi-image
+
+ ///
+ /// Not multi image (no more split files to follow)
+ ///
+ NotMultiImage = 0b00000000,
+
+ ///
+ /// Multi image (there is another split file to follow)
+ ///
+ MultiImage = 0b01000000,
+
+ #endregion
+
+ #region Run program mode
+
+ ///
+ /// Run program in Mode 1 (JMP RESET Vector)
+ ///
+ RunProgramInMode1 = 0b00000000,
+
+ ///
+ /// Run program in Mode 0 (JMP $8000)
+ ///
+ RunProgramInMode0 = 0b10000000,
+
+ #endregion
+ }
+}
diff --git a/SabreTools.Serialization/Models/SNES/Header.cs b/SabreTools.Serialization/Models/SNES/Header.cs
new file mode 100644
index 00000000..c10a3421
--- /dev/null
+++ b/SabreTools.Serialization/Models/SNES/Header.cs
@@ -0,0 +1,7 @@
+namespace SabreTools.Data.Models.SNES
+{
+ ///
+ /// SNES copier header
+ ///
+ public abstract class Header { }
+}
diff --git a/SabreTools.Serialization/Models/SNES/ProFighterHeader.cs b/SabreTools.Serialization/Models/SNES/ProFighterHeader.cs
new file mode 100644
index 00000000..8c9a5175
--- /dev/null
+++ b/SabreTools.Serialization/Models/SNES/ProFighterHeader.cs
@@ -0,0 +1,41 @@
+namespace SabreTools.Data.Models.SNES
+{
+ ///
+ /// Pro Fighter (FIG) header
+ ///
+ ///
+ public class ProFighterHeader : Header
+ {
+ ///
+ /// Size word
+ ///
+ /// Little-endian
+ public ushort Size { get; set; }
+
+ ///
+ /// Single- or multi-image
+ ///
+ public FIGImageMode ImageMode { get; set; }
+
+ ///
+ /// ROM mode
+ ///
+ public FIGRomMode RomMode { get; set; }
+
+ ///
+ /// First DSP1 SRAM flag
+ ///
+ public FIGDSPMode1 DSPMode1 { get; set; }
+
+ ///
+ /// Second DSP1 SRAM flag
+ ///
+ public FIGDSPMode2 DSPMode2 { get; set; }
+
+ ///
+ /// Padding to get to 512 bytes
+ ///
+ /// 506 bytes
+ public byte[] Padding { get; set; } = new byte[506];
+ }
+}
diff --git a/SabreTools.Serialization/Models/SNES/SuperWildCardHeader.cs b/SabreTools.Serialization/Models/SNES/SuperWildCardHeader.cs
new file mode 100644
index 00000000..1a838797
--- /dev/null
+++ b/SabreTools.Serialization/Models/SNES/SuperWildCardHeader.cs
@@ -0,0 +1,37 @@
+namespace SabreTools.Data.Models.SNES
+{
+ ///
+ /// Super Wild Card (SWC) header
+ ///
+ ///
+ public class SuperWildCardHeader : Header
+ {
+ ///
+ /// Size word
+ ///
+ /// Little-endian
+ public ushort Size { get; set; }
+
+ ///
+ /// Image information byte
+ ///
+ public SWCImageInformation ImageInformation { get; set; }
+
+ ///
+ /// Reserved
+ ///
+ /// 4 bytes
+ public byte[] Reserved1 { get; set; } = new byte[4];
+
+ ///
+ /// SWC header identifier (0xAA, 0xBB, 0x04)
+ ///
+ public byte[] HeaderIdentifier { get; set; } = new byte[3];
+
+ ///
+ /// Padding to get to 512 bytes
+ ///
+ /// 502 bytes
+ public byte[] Padding { get; set; } = new byte[502];
+ }
+}