diff --git a/SabreTools.Skippers/SkipperFiles/Atari7800.cs b/SabreTools.Skippers/SkipperFiles/Atari7800.cs
new file mode 100644
index 00000000..bd3f4005
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/Atari7800.cs
@@ -0,0 +1,65 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Atari 7800 headers
+ ///
+ /// Originally from a7800.xml
+ internal class Atari7800 : SkipperFile
+ {
+ public Atari7800()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x01,
+ Value = new byte[] { 0x41, 0x54, 0x41, 0x52, 0x49, 0x37, 0x38, 0x30, 0x30 },
+ Result = true,
+ };
+
+ var rule2Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x64,
+ Value = new byte[] { 0x41, 0x43, 0x54, 0x55, 0x41, 0x4C, 0x20, 0x43, 0x41, 0x52, 0x54, 0x20, 0x44, 0x41, 0x54, 0x41, 0x20, 0x53, 0x54, 0x41, 0x52, 0x54, 0x53, 0x20, 0x48, 0x45, 0x52, 0x45 },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x80,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ var rule2 = new SkipperRule
+ {
+ StartOffset = 0x80,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule2Test1,
+ }
+ };
+
+ // Create file
+ Name = "Atari 7800";
+ Author = "Roman Scherzer";
+ Version = "1.0";
+ SourceFile = "a7800";
+ Rules = new List
+ {
+ rule1,
+ rule2,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/AtariLynx.cs b/SabreTools.Skippers/SkipperFiles/AtariLynx.cs
new file mode 100644
index 00000000..44b424a3
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/AtariLynx.cs
@@ -0,0 +1,65 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Atari Lynx headers
+ ///
+ /// Originally from lynx.xml
+ internal class AtariLynx : SkipperFile
+ {
+ public AtariLynx()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x4C, 0x59, 0x4E, 0x58 },
+ Result = true,
+ };
+
+ var rule2Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x06,
+ Value = new byte[] { 0x42, 0x53, 0x39 },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x40,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ var rule2 = new SkipperRule
+ {
+ StartOffset = 0x40,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule2Test1,
+ }
+ };
+
+ // Create file
+ Name = "Atari Lynx";
+ Author = "Roman Scherzer";
+ Version = "1.0";
+ SourceFile = "lynx";
+ Rules = new List
+ {
+ rule1,
+ rule2,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/CommodorePSID.cs b/SabreTools.Skippers/SkipperFiles/CommodorePSID.cs
new file mode 100644
index 00000000..2ddf741d
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/CommodorePSID.cs
@@ -0,0 +1,125 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Commodore PSID headers
+ ///
+ /// Originally from psid.xml
+ internal class CommodorePSID : SkipperFile
+ {
+ public CommodorePSID()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x01, 0x00, 0x76 },
+ Result = true,
+ };
+
+ var rule2Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x03, 0x00, 0x7c },
+ Result = true,
+ };
+
+ var rule3Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x02, 0x00, 0x7c },
+ Result = true,
+ };
+
+ var rule4Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x01, 0x00, 0x7c },
+ Result = true,
+ };
+
+ var rule5Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x52, 0x53, 0x49, 0x44, 0x00, 0x02, 0x00, 0x7c },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x76,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ var rule2 = new SkipperRule
+ {
+ StartOffset = 0x76,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule2Test1,
+ }
+ };
+
+ var rule3 = new SkipperRule
+ {
+ StartOffset = 0x7c,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule3Test1,
+ }
+ };
+
+ var rule4 = new SkipperRule
+ {
+ StartOffset = 0x7c,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule4Test1,
+ }
+ };
+
+ var rule5 = new SkipperRule
+ {
+ StartOffset = 0x7c,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule5Test1,
+ }
+ };
+
+ // Create file
+ Name = "psid";
+ Author = "Yori Yoshizuki";
+ Version = "1.2";
+ SourceFile = "psid";
+ Rules = new List
+ {
+ rule1,
+ rule2,
+ rule3,
+ rule4,
+ rule5,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/NECPCEngine.cs b/SabreTools.Skippers/SkipperFiles/NECPCEngine.cs
new file mode 100644
index 00000000..acfc72e4
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/NECPCEngine.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for NEC PC-Engine / TurboGrafx 16 headers
+ ///
+ /// Originally from pce.xml
+ internal class NECPCEngine : SkipperFile
+ {
+ public NECPCEngine()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0x02 },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x200,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ // Create file
+ Name = "NEC TurboGrafx-16/PC-Engine";
+ Author = "Matt Nadareski (darksabre76)";
+ Version = "1.0";
+ SourceFile = "pce";
+ Rules = new List
+ {
+ rule1,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/Nintendo64.cs b/SabreTools.Skippers/SkipperFiles/Nintendo64.cs
new file mode 100644
index 00000000..2df5b23b
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/Nintendo64.cs
@@ -0,0 +1,85 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Nintendo 64 headers
+ ///
+ /// Originally from n64.xml
+ internal class Nintendo64 : SkipperFile
+ {
+ public Nintendo64()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x80, 0x37, 0x12, 0x40 },
+ Result = true,
+ };
+
+ var rule2Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x37, 0x80, 0x40, 0x12 },
+ Result = true,
+ };
+
+ var rule3Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x40, 0x12, 0x37, 0x80 },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x00,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ var rule2 = new SkipperRule
+ {
+ StartOffset = 0x00,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.Byteswap,
+ Tests = new List
+ {
+ rule2Test1,
+ }
+ };
+
+ var rule3 = new SkipperRule
+ {
+ StartOffset = 0x00,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.Wordswap,
+ Tests = new List
+ {
+ rule3Test1,
+ }
+ };
+
+ // Create file
+ Name = "Nintendo 64 - ABCD";
+ Author = "CUE";
+ Version = "1.1";
+ SourceFile = "n64";
+ Rules = new List
+ {
+ rule1, // V64
+ rule2, // Z64
+ rule3, // N64
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/NintendoEntertainmentSystem.cs b/SabreTools.Skippers/SkipperFiles/NintendoEntertainmentSystem.cs
new file mode 100644
index 00000000..edb024fb
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/NintendoEntertainmentSystem.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Nintendo Entertainment System headers
+ ///
+ /// Originally from nes.xml
+ internal class NintendoEntertainmentSystem : SkipperFile
+ {
+ public NintendoEntertainmentSystem()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x4E, 0x45, 0x53, 0x1A },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x10,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ // Create file
+ Name = "Nintendo Famicon/NES";
+ Author = "Roman Scherzer";
+ Version = "1.1";
+ SourceFile = "nes";
+ Rules = new List
+ {
+ rule1,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/NintendoFamicomDiskSystem.cs b/SabreTools.Skippers/SkipperFiles/NintendoFamicomDiskSystem.cs
new file mode 100644
index 00000000..ce25cd98
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/NintendoFamicomDiskSystem.cs
@@ -0,0 +1,105 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Nintendo Famicom Disk System headers
+ ///
+ /// Originally from fds.xml
+ internal class NintendoFamicomDiskSystem : SkipperFile
+ {
+ public NintendoFamicomDiskSystem()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ Result = true,
+ };
+
+ var rule2Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ Result = true,
+ };
+
+ var rule3Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ Result = true,
+ };
+
+ var rule4Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x10,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ var rule2 = new SkipperRule
+ {
+ StartOffset = 0x10,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule2Test1,
+ }
+ };
+
+ var rule3 = new SkipperRule
+ {
+ StartOffset = 0x10,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule3Test1,
+ }
+ };
+
+ var rule4 = new SkipperRule
+ {
+ StartOffset = 0x10,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule4Test1,
+ }
+ };
+
+ // Create file
+ Name = "fds";
+ Author = "Yori Yoshizuki";
+ Version = "1.0";
+ SourceFile = "fds";
+ Rules = new List
+ {
+ rule1,
+ rule2,
+ rule3,
+ rule4,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/SuperFamicomSPC.cs b/SabreTools.Skippers/SkipperFiles/SuperFamicomSPC.cs
new file mode 100644
index 00000000..f693d0d8
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/SuperFamicomSPC.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Super Famicom SPC headers
+ ///
+ /// Originally from spc.xml
+ internal class SuperFamicomSPC : SkipperFile
+ {
+ public SuperFamicomSPC()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x00,
+ Value = new byte[] { 0x53, 0x4E, 0x45, 0x53, 0x2D, 0x53, 0x50, 0x43 },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x100,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ // Create file
+ Name = "Nintendo Super Famicon SPC";
+ Author = "Yori Yoshizuki";
+ Version = "1.0";
+ SourceFile = "spc";
+ Rules = new List
+ {
+ rule1,
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperFiles/SuperNintendoEntertainmentSystem.cs b/SabreTools.Skippers/SkipperFiles/SuperNintendoEntertainmentSystem.cs
new file mode 100644
index 00000000..e28d54f3
--- /dev/null
+++ b/SabreTools.Skippers/SkipperFiles/SuperNintendoEntertainmentSystem.cs
@@ -0,0 +1,85 @@
+using System.Collections.Generic;
+
+namespace SabreTools.Skippers.SkipperFiles
+{
+ ///
+ /// SkipperFile for Super Nintendo Entertainment System headers
+ ///
+ /// Originally from snes.xml
+ internal class SuperNintendoEntertainmentSystem : SkipperFile
+ {
+ public SuperNintendoEntertainmentSystem()
+ {
+ // Create tests
+ var rule1Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x16,
+ Value = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ Result = true,
+ };
+
+ var rule2Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x16,
+ Value = new byte[] { 0xAA, 0xBB, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ Result = true,
+ };
+
+ var rule3Test1 = new SkipperTest
+ {
+ Type = HeaderSkipTest.Data,
+ Offset = 0x16,
+ Value = new byte[] { 0x53, 0x55, 0x50, 0x45, 0x52, 0x55, 0x46, 0x4F },
+ Result = true,
+ };
+
+ // Create rules
+ var rule1 = new SkipperRule
+ {
+ StartOffset = 0x200,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule1Test1,
+ }
+ };
+
+ var rule2 = new SkipperRule
+ {
+ StartOffset = 0x200,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule2Test1,
+ }
+ };
+
+ var rule3 = new SkipperRule
+ {
+ StartOffset = 0x200,
+ EndOffset = null,
+ Operation = HeaderSkipOperation.None,
+ Tests = new List
+ {
+ rule3Test1,
+ }
+ };
+
+ // Create file
+ Name = "Nintendo Super Famicom/SNES";
+ Author = "Matt Nadareski (darksabre76)";
+ Version = "1.0";
+ SourceFile = "snes";
+ Rules = new List
+ {
+ rule1, // FIG
+ rule2, // SMC
+ rule3, // UFO
+ };
+ }
+ }
+}
diff --git a/SabreTools.Skippers/SkipperMatch.cs b/SabreTools.Skippers/SkipperMatch.cs
index d1d6a6b2..745c2df6 100644
--- a/SabreTools.Skippers/SkipperMatch.cs
+++ b/SabreTools.Skippers/SkipperMatch.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.IO;
-
using SabreTools.IO;
using SabreTools.Logging;
@@ -95,15 +94,15 @@ namespace SabreTools.Skippers
Skippers = new List();
// Get skippers for each known header type
- Skippers.Add(GetAtari7800());
- Skippers.Add(GetAtariLynx());
- Skippers.Add(GetCommodorePSID());
- Skippers.Add(GetNECPCEngine());
- Skippers.Add(GetNintendo64());
- Skippers.Add(GetNintendoEntertainmentSystem());
- Skippers.Add(GetNintendoFamicomDiskSystem());
- Skippers.Add(GetSuperNintendoEntertainmentSystem());
- Skippers.Add(GetSuperFamicomSPC());
+ Skippers.Add(new SkipperFiles.Atari7800());
+ Skippers.Add(new SkipperFiles.AtariLynx());
+ Skippers.Add(new SkipperFiles.CommodorePSID());
+ Skippers.Add(new SkipperFiles.NECPCEngine());
+ Skippers.Add(new SkipperFiles.Nintendo64());
+ Skippers.Add(new SkipperFiles.NintendoEntertainmentSystem());
+ Skippers.Add(new SkipperFiles.NintendoFamicomDiskSystem());
+ Skippers.Add(new SkipperFiles.SuperNintendoEntertainmentSystem());
+ Skippers.Add(new SkipperFiles.SuperFamicomSPC());
}
///
@@ -169,658 +168,5 @@ namespace SabreTools.Skippers
return skipperRule;
}
-
- // These are hardcoded versions of the XML files that get parsed in
- // TODO: Should these be in their own derived classes?
- #region Skipper Generation
-
- ///
- /// Generate a SkipperFile for Atari 7800 headers
- ///
- /// Originally from a7800.xml
- private static SkipperFile GetAtari7800()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x01,
- Value = new byte[] { 0x41, 0x54, 0x41, 0x52, 0x49, 0x37, 0x38, 0x30, 0x30 },
- Result = true,
- };
-
- var rule2Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x64,
- Value = new byte[] { 0x41, 0x43, 0x54, 0x55, 0x41, 0x4C, 0x20, 0x43, 0x41, 0x52, 0x54, 0x20, 0x44, 0x41, 0x54, 0x41, 0x20, 0x53, 0x54, 0x41, 0x52, 0x54, 0x53, 0x20, 0x48, 0x45, 0x52, 0x45 },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x80,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- var rule2 = new SkipperRule
- {
- StartOffset = 0x80,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule2Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "Atari 7800",
- Author = "Roman Scherzer",
- Version = "1.0",
- SourceFile = "a7800",
- Rules = new List
- {
- rule1,
- rule2,
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Atari Lynx headers
- ///
- /// Originally from lynx.xml
- private static SkipperFile GetAtariLynx()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x4C, 0x59, 0x4E, 0x58 },
- Result = true,
- };
-
- var rule2Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x06,
- Value = new byte[] { 0x42, 0x53, 0x39 },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x40,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- var rule2 = new SkipperRule
- {
- StartOffset = 0x40,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule2Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "Atari Lynx",
- Author = "Roman Scherzer",
- Version = "1.0",
- SourceFile = "lynx",
- Rules = new List
- {
- rule1,
- rule2,
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Commodore PSID headers
- ///
- /// Originally from psid.xml
- private static SkipperFile GetCommodorePSID()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x01, 0x00, 0x76 },
- Result = true,
- };
-
- var rule2Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x03, 0x00, 0x7c },
- Result = true,
- };
-
- var rule3Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x02, 0x00, 0x7c },
- Result = true,
- };
-
- var rule4Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x50, 0x53, 0x49, 0x44, 0x00, 0x01, 0x00, 0x7c },
- Result = true,
- };
-
- var rule5Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x52, 0x53, 0x49, 0x44, 0x00, 0x02, 0x00, 0x7c },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x76,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- var rule2 = new SkipperRule
- {
- StartOffset = 0x76,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule2Test1,
- }
- };
-
- var rule3 = new SkipperRule
- {
- StartOffset = 0x7c,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule3Test1,
- }
- };
-
- var rule4 = new SkipperRule
- {
- StartOffset = 0x7c,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule4Test1,
- }
- };
-
- var rule5 = new SkipperRule
- {
- StartOffset = 0x7c,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule5Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "psid",
- Author = "Yori Yoshizuki",
- Version = "1.2",
- SourceFile = "psid",
- Rules = new List
- {
- rule1,
- rule2,
- rule3,
- rule4,
- rule5,
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for NEC PC-Engine / TurboGrafx 16 headers
- ///
- /// Originally from pce.xml
- private static SkipperFile GetNECPCEngine()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0x02 },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x200,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "NEC TurboGrafx-16/PC-Engine",
- Author = "Matt Nadareski (darksabre76)",
- Version = "1.0",
- SourceFile = "pce",
- Rules = new List
- {
- rule1,
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Nintendo 64 headers
- ///
- /// Originally from n64.xml
- private static SkipperFile GetNintendo64()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x80, 0x37, 0x12, 0x40 },
- Result = true,
- };
-
- var rule2Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x37, 0x80, 0x40, 0x12 },
- Result = true,
- };
-
- var rule3Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x40, 0x12, 0x37, 0x80 },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x00,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- var rule2 = new SkipperRule
- {
- StartOffset = 0x00,
- EndOffset = null,
- Operation = HeaderSkipOperation.Byteswap,
- Tests = new List
- {
- rule2Test1,
- }
- };
-
- var rule3 = new SkipperRule
- {
- StartOffset = 0x00,
- EndOffset = null,
- Operation = HeaderSkipOperation.Wordswap,
- Tests = new List
- {
- rule3Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "Nintendo 64 - ABCD",
- Author = "CUE",
- Version = "1.1",
- SourceFile = "n64",
- Rules = new List
- {
- rule1, // V64
- rule2, // Z64
- rule3, // N64
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Nintendo Entertainment System headers
- ///
- /// Originally from nes.xml
- private static SkipperFile GetNintendoEntertainmentSystem()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x4E, 0x45, 0x53, 0x1A },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x10,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "Nintendo Famicon/NES",
- Author = "Roman Scherzer",
- Version = "1.1",
- SourceFile = "nes",
- Rules = new List
- {
- rule1,
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Nintendo Famicom Disk System headers
- ///
- /// Originally from fds.xml
- private static SkipperFile GetNintendoFamicomDiskSystem()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- Result = true,
- };
-
- var rule2Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- Result = true,
- };
-
- var rule3Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- Result = true,
- };
-
- var rule4Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x46, 0x44, 0x53, 0x1A, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x10,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- var rule2 = new SkipperRule
- {
- StartOffset = 0x10,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule2Test1,
- }
- };
-
- var rule3 = new SkipperRule
- {
- StartOffset = 0x10,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule3Test1,
- }
- };
-
- var rule4 = new SkipperRule
- {
- StartOffset = 0x10,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule4Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "fds",
- Author = "Yori Yoshizuki",
- Version = "1.0",
- SourceFile = "fds",
- Rules = new List
- {
- rule1,
- rule2,
- rule3,
- rule4,
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Super Nintendo Entertainment System headers
- ///
- /// Originally from snes.xml
- private static SkipperFile GetSuperNintendoEntertainmentSystem()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x16,
- Value = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- Result = true,
- };
-
- var rule2Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x16,
- Value = new byte[] { 0xAA, 0xBB, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
- Result = true,
- };
-
- var rule3Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x16,
- Value = new byte[] { 0x53, 0x55, 0x50, 0x45, 0x52, 0x55, 0x46, 0x4F },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x200,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- var rule2 = new SkipperRule
- {
- StartOffset = 0x200,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule2Test1,
- }
- };
-
- var rule3 = new SkipperRule
- {
- StartOffset = 0x200,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule3Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "Nintendo Super Famicom/SNES",
- Author = "Matt Nadareski (darksabre76)",
- Version = "1.0",
- SourceFile = "snes",
- Rules = new List
- {
- rule1, // FIG
- rule2, // SMC
- rule3, // UFO
- },
- };
-
- return skipperFile;
- }
-
- ///
- /// Generate a SkipperFile for Super Famicom SPC headers
- ///
- /// Originally from spc.xml
- private static SkipperFile GetSuperFamicomSPC()
- {
- // Create tests
- var rule1Test1 = new SkipperTest
- {
- Type = HeaderSkipTest.Data,
- Offset = 0x00,
- Value = new byte[] { 0x53, 0x4E, 0x45, 0x53, 0x2D, 0x53, 0x50, 0x43 },
- Result = true,
- };
-
- // Create rules
- var rule1 = new SkipperRule
- {
- StartOffset = 0x100,
- EndOffset = null,
- Operation = HeaderSkipOperation.None,
- Tests = new List
- {
- rule1Test1,
- }
- };
-
- // Create file
- var skipperFile = new SkipperFile
- {
- Name = "Nintendo Super Famicon SPC",
- Author = "Yori Yoshizuki",
- Version = "1.0",
- SourceFile = "spc",
- Rules = new List
- {
- rule1,
- },
- };
-
- return skipperFile;
- }
-
- #endregion
}
}
\ No newline at end of file