diff --git a/SabreTools.DatFiles/DatFileTool.cs b/SabreTools.DatFiles/DatFileTool.cs
index 0dab5208..c2d19477 100644
--- a/SabreTools.DatFiles/DatFileTool.cs
+++ b/SabreTools.DatFiles/DatFileTool.cs
@@ -55,6 +55,8 @@ namespace SabreTools.DatFiles
DatFormat.MissFile => new Missfile(baseDat),
DatFormat.OfflineList => new OfflineList(baseDat),
DatFormat.OpenMSX => new OpenMSX(baseDat),
+ DatFormat.RedumpMD2 => new Md2File(baseDat),
+ DatFormat.RedumpMD4 => new Md4File(baseDat),
DatFormat.RedumpMD5 => new Md5File(baseDat),
DatFormat.RedumpSFV => new SfvFile(baseDat),
DatFormat.RedumpSHA1 => new Sha1File(baseDat),
diff --git a/SabreTools.DatFiles/DatHeader.cs b/SabreTools.DatFiles/DatHeader.cs
index 8d2f8cdc..23aeacdf 100644
--- a/SabreTools.DatFiles/DatHeader.cs
+++ b/SabreTools.DatFiles/DatHeader.cs
@@ -523,6 +523,36 @@ namespace SabreTools.DatFiles
#endregion
+ #region .md2
+
+ // Redump MD2
+#if NET20 || NET35
+ if ((datFormat & DatFormat.RedumpMD2) != 0)
+#else
+ if (datFormat.HasFlag(DatFormat.RedumpMD2))
+#endif
+ {
+ outfileNames.Add(DatFormat.RedumpMD2, CreateOutFileNamesHelper(outDir, ".md2", overwrite));
+ usedExtensions.Add(".md2");
+ };
+
+ #endregion
+
+ #region .md4
+
+ // Redump MD4
+#if NET20 || NET35
+ if ((datFormat & DatFormat.RedumpMD4) != 0)
+#else
+ if (datFormat.HasFlag(DatFormat.RedumpMD4))
+#endif
+ {
+ outfileNames.Add(DatFormat.RedumpMD4, CreateOutFileNamesHelper(outDir, ".md4", overwrite));
+ usedExtensions.Add(".md4");
+ };
+
+ #endregion
+
#region .md5
// Redump MD5
diff --git a/SabreTools.DatFiles/Enums.cs b/SabreTools.DatFiles/Enums.cs
index 26988736..2e7136f8 100644
--- a/SabreTools.DatFiles/Enums.cs
+++ b/SabreTools.DatFiles/Enums.cs
@@ -7,7 +7,7 @@ namespace SabreTools.DatFiles
/// DAT output formats
///
[Flags]
- public enum DatFormat
+ public enum DatFormat : ulong
{
#region XML Formats
@@ -123,40 +123,50 @@ namespace SabreTools.DatFiles
///
RedumpSFV = 1 << 19,
+ ///
+ /// MD2 hash list
+ ///
+ RedumpMD2 = 1 << 20,
+
+ ///
+ /// MD4 hash list
+ ///
+ RedumpMD4 = 1 << 21,
+
///
/// MD5 hash list
///
- RedumpMD5 = 1 << 20,
+ RedumpMD5 = 1 << 22,
///
/// SHA-1 hash list
///
- RedumpSHA1 = 1 << 21,
+ RedumpSHA1 = 1 << 23,
///
/// SHA-256 hash list
///
- RedumpSHA256 = 1 << 22,
+ RedumpSHA256 = 1 << 24,
///
/// SHA-384 hash list
///
- RedumpSHA384 = 1 << 23,
+ RedumpSHA384 = 1 << 25,
///
/// SHA-512 hash list
///
- RedumpSHA512 = 1 << 24,
+ RedumpSHA512 = 1 << 26,
///
/// SpamSum hash list
///
- RedumpSpamSum = 1 << 25,
+ RedumpSpamSum = 1 << 27,
#endregion
// Specialty combinations
- ALL = Int32.MaxValue,
+ ALL = ulong.MaxValue,
}
///
diff --git a/SabreTools.DatFiles/Parser.cs b/SabreTools.DatFiles/Parser.cs
index f9c33fb2..f513d466 100644
--- a/SabreTools.DatFiles/Parser.cs
+++ b/SabreTools.DatFiles/Parser.cs
@@ -148,6 +148,10 @@ namespace SabreTools.DatFiles
return DatFormat.CSV;
case "json":
return DatFormat.SabreJSON;
+ case "md2":
+ return DatFormat.RedumpMD2;
+ case "md4":
+ return DatFormat.RedumpMD4;
case "md5":
return DatFormat.RedumpMD5;
case "sfv":
diff --git a/SabreTools.Test/DatTools/ParserTests.cs b/SabreTools.Test/DatTools/ParserTests.cs
index f63cfb57..5fc602d4 100644
--- a/SabreTools.Test/DatTools/ParserTests.cs
+++ b/SabreTools.Test/DatTools/ParserTests.cs
@@ -29,6 +29,8 @@ namespace SabreTools.Test.DatTools
[InlineData("test-smdb.txt", DatFormat.EverdriveSMDB, 1)]
//[InlineData(null, DatFormat.SabreJSON, 0)] // TODO: Create good-enough test file for this
[InlineData("test-sfv.sfv", DatFormat.RedumpSFV, 1)]
+ //[InlineData("test-md2.md2", DatFormat.RedumpMD2, 1)] // TODO: Create good-enough test file for this
+ //[InlineData("test-md4.md4", DatFormat.RedumpMD4, 1)] // TODO: Create good-enough test file for this
[InlineData("test-md5.md5", DatFormat.RedumpMD5, 1)]
[InlineData("test-sha1.sha1", DatFormat.RedumpSHA1, 1)]
[InlineData("test-sha256.sha256", DatFormat.RedumpSHA256, 1)]
diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs
index ff46945f..644eea54 100644
--- a/SabreTools/Features/BaseFeature.cs
+++ b/SabreTools/Features/BaseFeature.cs
@@ -2305,6 +2305,8 @@ Some special strings that can be used:
"json" or "sj" or "sabrejson" => DatFormat.SabreJSON,
"lr" or "listrom" => DatFormat.Listrom,
"lx" or "listxml" => DatFormat.Listxml,
+ "md2" => DatFormat.RedumpMD2,
+ "md4" => DatFormat.RedumpMD4,
"md5" => DatFormat.RedumpMD5,
"miss" or "missfile" => DatFormat.MissFile,
"msx" or "openmsx" => DatFormat.OpenMSX,