diff --git a/SabreTools.Helper/Dats/DatFile.cs b/SabreTools.Helper/Dats/DatFile.cs index cc7f4d40..1b34f95f 100644 --- a/SabreTools.Helper/Dats/DatFile.cs +++ b/SabreTools.Helper/Dats/DatFile.cs @@ -31,6 +31,8 @@ namespace SabreTools.Helper.Dats private bool _excludeOf; private bool _mergeRoms; private Hash _stripHash; + private bool _oneGameOneRegion; + private List _regions = new List(); private SortedDictionary> _files = new SortedDictionary>(); private SortedBy _sortedBy; @@ -168,6 +170,16 @@ namespace SabreTools.Helper.Dats get { return _stripHash; } set { _stripHash = value; } } + public bool OneGameOneRegion + { + get { return _oneGameOneRegion; } + set { _oneGameOneRegion = value; } + } + public List Regions + { + get { return _regions; } + set { _regions = value; } + } public SortedBy SortedBy { get { return _sortedBy; } diff --git a/SabreTools/Partials/SabreTools.Help.cs b/SabreTools/Partials/SabreTools.Help.cs index 95a4b5ab..f3623595 100644 --- a/SabreTools/Partials/SabreTools.Help.cs +++ b/SabreTools/Partials/SabreTools.Help.cs @@ -8,6 +8,7 @@ namespace SabreTools { public partial class SabreTools { + // TODO: Add 1G1R to the flags for update public static Help RetrieveHelp() { // Create and add the header to the Help object diff --git a/SabreTools/Partials/SabreTools.Inits.cs b/SabreTools/Partials/SabreTools.Inits.cs index d6fc5e9a..4c464582 100644 --- a/SabreTools/Partials/SabreTools.Inits.cs +++ b/SabreTools/Partials/SabreTools.Inits.cs @@ -459,6 +459,8 @@ namespace SabreTools /// True if the date should not be appended to the default name, false otherwise [OBSOLETE] /// /* Filtering info */ /// Pre-populated filter object for DAT filtering + /// True if the outputs should be created in 1G1R mode, false otherwise + /// List of regions in the order they should be used, blank for default /// /* Trimming info */ /// Type of the split that should be performed (split, merged, fully merged) /// True if we are supposed to trim names to NTFS length, false otherwise @@ -514,6 +516,8 @@ namespace SabreTools /* Filtering info */ Filter filter, + bool oneGameOneRegion, + List regions, /* Trimming info */ SplitType splitType, @@ -595,6 +599,35 @@ namespace SabreTools } } + // Set the 1G1R regions alphabetically if not already set + if (regions == null || regions.Count == 0) + { + regions = new List() + { + "australia", + "canada", + "china", + "denmark", + "europe", + "finland", + "france", + "germany", + "greece", + "italy", + "japan", + "korea", + "netherlands", + "norway", + "russia", + "spain", + "sweden", + "usa", + "usa, australia", + "usa, europe", + "world", + }; + } + // Normalize the extensions addext = (addext == "" || addext.StartsWith(".") ? addext : "." + addext); repext = (repext == "" || repext.StartsWith(".") ? repext : "." + repext); @@ -653,6 +686,8 @@ namespace SabreTools ExcludeOf = excludeOf, DatFormat = datFormat, StripHash = stripHash, + OneGameOneRegion = oneGameOneRegion, + Regions = regions, UseGame = usegame, Prefix = prefix, diff --git a/SabreTools/SabreTools.cs b/SabreTools/SabreTools.cs index 4ef27667..d9f75061 100644 --- a/SabreTools/SabreTools.cs +++ b/SabreTools/SabreTools.cs @@ -102,6 +102,7 @@ namespace SabreTools inplace = false, inverse = false, merge = false, + oneGameOneRegion = false, parseArchivesAsFiles = false, quickScan = false, quotes = false, @@ -159,6 +160,7 @@ namespace SabreTools List exta = new List(); List extb = new List(); List inputs = new List(); + List regions = new List(); // Get the first argument as a feature flag string feature = args[0]; @@ -270,6 +272,10 @@ namespace SabreTools switch (args[i]) { // User flags + case "-1g1r": + case "--1g1r": + oneGameOneRegion = true; + break; case "-ab": case "--add-blank": addBlankFilesForEmptyFolder = true; @@ -776,6 +782,10 @@ namespace SabreTools case "--root-dir": root = args[++i]; break; + case "-reg": + case "--region": + regions.Add(args[++i]); + break; case "-rep": case "--rep-ext": repext = args[++i]; @@ -1044,6 +1054,10 @@ namespace SabreTools case "--root-dir": root = split[1]; break; + case "-reg": + case "--region": + regions.Add(split[1]); + break; case "-rep": case "--rep-ext": repext = split[1]; @@ -1165,29 +1179,9 @@ namespace SabreTools // Create a DAT from a directory or set of directories if (datFromDir) { - InitDatFromDir(inputs, - filename, - name, - description, - category, - version, - author, - forcepack, - excludeOf, - datFormat, - romba, - superdat, - omitFromScan, - removeDateFromAutomaticName, - parseArchivesAsFiles, - enableGzip, - addBlankFilesForEmptyFolder, - addFileDates, - tempDir, - outDir, - copyFiles, - header, - maxParallelism); + InitDatFromDir(inputs, filename, name, description, category, version, author, forcepack, excludeOf, + datFormat, romba, superdat, omitFromScan, removeDateFromAutomaticName, parseArchivesAsFiles, enableGzip, + addBlankFilesForEmptyFolder, addFileDates, tempDir, outDir, copyFiles, header, maxParallelism); } // If we're in header extract and remove mode @@ -1250,9 +1244,9 @@ namespace SabreTools else if (update) { InitUpdate(inputs, filename, name, description, rootdir, category, version, date, author, email, homepage, url, comment, header, - superdat, forcemerge, forcend, forcepack, excludeOf, datFormat, usegame, prefix, - postfix, quotes, repext, addext, remext, datPrefix, romba, merge, diffMode, inplace, skip, removeDateFromAutomaticName, - filter, splitType, trim, single, root, outDir, cleanGameNames, descAsName, dedup, stripHash, maxParallelism); + superdat, forcemerge, forcend, forcepack, excludeOf, datFormat, usegame, prefix, postfix, quotes, repext, addext, remext, + datPrefix, romba, merge, diffMode, inplace, skip, removeDateFromAutomaticName, filter, oneGameOneRegion, regions, + splitType, trim, single, root, outDir, cleanGameNames, descAsName, dedup, stripHash, maxParallelism); } // If we're using the verifier