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,