diff --git a/DATabase/DATabase.cs b/DATabase/DATabase.cs
index b7f4c057..1adcb797 100644
--- a/DATabase/DATabase.cs
+++ b/DATabase/DATabase.cs
@@ -640,7 +640,8 @@ Make a selection:
2) Convert CMP DAT to XML
3) Convert DAT to missfile
4) Trim all entries in DAT and merge into a single game
- 5) Split DAT using 2 extensions
+ 5) Merge, diff, and/or dedup 2 or more DAT files
+ 6) Split DAT using 2 extensions
B) Go back to the previous menu
");
Console.Write("Enter selection: ");
@@ -660,6 +661,9 @@ Make a selection:
TrimMergeMenu();
break;
case "5":
+ MergeDiffMenu();
+ break;
+ case "6":
ExtSplitMenu();
break;
}
@@ -846,6 +850,95 @@ Make a selection:
}
}
+ ///
+ /// Show the text-based MergeDiff menu
+ ///
+ private static void MergeDiffMenu()
+ {
+ string selection = "", input = "", name = "", desc = "", cat = "", version = "", author = "";
+ bool dedup = false, diff = false, noDate = false, forceunpack = false, old = false;
+ while (selection.ToLowerInvariant() != "b")
+ {
+ Console.Clear();
+ Build.Start("DATabase");
+ Console.WriteLine(@"DAT TRIM MENU
+===========================
+Make a selection:
+
+ 1) Add a file or folder to process" + (input != "" ? ":\n\t" + input : "") + @"
+ 2) Internal DAT name" + (name != "" ? ":\t" + name : "") + @"
+ 3) External DAT name/description" + (desc != "" ? ":\t" + desc : "") + @"
+ 4) Category" + (cat != "" ? ":\t" + cat : "") + @"
+ 5) Version" + (version != "" ? ":\t" + version : "") + @"
+ 6) Author" + (author != "" ? ":\t" + author : "") + @"
+ 7) " + (dedup ? "Don't dedup files in output" : "Dedup files in output") + @"
+ 8) " + (diff ? "Only merge the input files" : "Diff the input files") + @"
+ 9) " + (noDate ? "Don't append the date to the name" : "Append the date to the name") + @"
+ 10) " + (forceunpack ? "Remove 'forcepacking=\"unzip\"' from output" : "Add 'forcepacking=\"unzip\"' to output") + @"
+ 11) " + (old ? "Enable XML output" : "Enable ClrMamePro output") + @"
+ 12) Merge the DATs
+ B) Go back to the previous menu
+");
+ Console.Write("Enter selection: ");
+ selection = Console.ReadLine();
+ switch (selection)
+ {
+ case "1":
+ Console.Clear();
+ Console.Write("Please enter a file or folder name: ");
+ input += ";" + Console.ReadLine();
+ break;
+ case "2":
+ Console.Clear();
+ Console.Write("Please enter a name: ");
+ name = Console.ReadLine();
+ break;
+ case "3":
+ Console.Clear();
+ Console.Write("Please enter a description: ");
+ desc = Console.ReadLine();
+ break;
+ case "4":
+ Console.Clear();
+ Console.Write("Please enter a category: ");
+ cat = Console.ReadLine();
+ break;
+ case "5":
+ Console.Clear();
+ Console.Write("Please enter a version: ");
+ version = Console.ReadLine();
+ break;
+ case "6":
+ Console.Clear();
+ Console.Write("Please enter an author: ");
+ author = Console.ReadLine();
+ break;
+ case "7":
+ dedup = !dedup;
+ break;
+ case "8":
+ diff = !diff;
+ break;
+ case "9":
+ noDate = !noDate;
+ break;
+ case "10":
+ forceunpack = !forceunpack;
+ break;
+ case "11":
+ old = !old;
+ break;
+ case "12":
+ Console.Clear();
+ List inputs = new List(input.Split(';'));
+ InitMergeDiff(inputs, name, desc, cat, version, author, diff, dedup, noDate, forceunpack, old);
+ Console.Write("\nPress any key to continue...");
+ Console.ReadKey();
+ break;
+ }
+ }
+ }
+
///
/// Show the text-based ExtSplit menu
///
@@ -1287,7 +1380,6 @@ Make a selection:
///
/// Wrap merging, diffing, and deduping 2 or mor DATs
///
- /// List of files and directories to be merged
/// A List of Strings representing the DATs or DAT folders to be merged
/// Internal name of the DAT
/// Description and external name of the DAT