diff --git a/DATFromDir/DATFromDir.cs b/DATFromDir/DATFromDir.cs
index 16ceabf0..d8109620 100644
--- a/DATFromDir/DATFromDir.cs
+++ b/DATFromDir/DATFromDir.cs
@@ -28,6 +28,7 @@ namespace SabreTools
private bool _noSHA1;
private bool _bare;
private bool _archivesAsFiles;
+ private bool _enableGzip;
// Other required variables
private Logger _logger;
@@ -41,8 +42,9 @@ namespace SabreTools
/// True if SHA-1 hashes should be skipped over, false otherwise
/// True if the date should be omitted from the DAT, false otherwise
/// True if archives should be treated as files, false otherwise
+ /// True if GZIP archives should be treated as files, false otherwise>
/// Logger object for console and file output
- public DATFromDir(List inputs, DatData datdata, bool noMD5, bool noSHA1, bool bare, bool archivesAsFiles, Logger logger)
+ public DATFromDir(List inputs, DatData datdata, bool noMD5, bool noSHA1, bool bare, bool archivesAsFiles, bool enableGzip, Logger logger)
{
_inputs = inputs;
_datdata = datdata;
@@ -50,6 +52,7 @@ namespace SabreTools
_noSHA1 = noSHA1;
_bare = bare;
_archivesAsFiles = archivesAsFiles;
+ _enableGzip = enableGzip;
_logger = logger;
}
@@ -72,7 +75,7 @@ namespace SabreTools
logger.Start();
// First things first, take care of all of the arguments that this could have
- bool noMD5 = false, noSHA1 = false, forceunpack = false, archivesAsFiles = false, old = false, superDat = false, bare = false, romba = false;
+ bool noMD5 = false, noSHA1 = false, forceunpack = false, archivesAsFiles = false, old = false, superDat = false, bare = false, romba = false, enableGzip = false;
string name = "", desc = "", cat = "", version = "", author = "";
List inputs = new List();
foreach (string arg in args)
@@ -85,26 +88,22 @@ namespace SabreTools
Build.Help();
logger.Close();
return;
- case "-m":
- case "--noMD5":
- noMD5 = true;
- break;
- case "-s":
- case "--noSHA1":
- noSHA1 = true;
- break;
case "-b":
case "--bare":
bare = true;
break;
- case "-u":
- case "--unzip":
- forceunpack = true;
- break;
case "-f":
case "--files":
archivesAsFiles = true;
break;
+ case "-gz":
+ case "--gz-files":
+ enableGzip = true;
+ break;
+ case "-m":
+ case "--noMD5":
+ noMD5 = true;
+ break;
case "-o":
case "--old":
old = true;
@@ -113,10 +112,18 @@ namespace SabreTools
case "--romba":
romba = true;
break;
+ case "-s":
+ case "--noSHA1":
+ noSHA1 = true;
+ break;
case "-sd":
case "--superdat":
superDat = true;
break;
+ case "-u":
+ case "--unzip":
+ forceunpack = true;
+ break;
default:
if (arg.StartsWith("-n=") || arg.StartsWith("--name="))
{
@@ -184,7 +191,7 @@ namespace SabreTools
Type = (superDat ? "SuperDAT" : ""),
Roms = new Dictionary>(),
};
- DATFromDir dfd = new DATFromDir(inputs, datdata, noMD5, noSHA1, bare, archivesAsFiles, logger);
+ DATFromDir dfd = new DATFromDir(inputs, datdata, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, logger);
bool success = dfd.Start();
// If we failed, show the help
@@ -367,6 +374,36 @@ namespace SabreTools
/// Filename of the item to be checked
private void ProcessFile(string item)
{
+ // Special case for if we are in Romba mode (all names are SHA-1 hashes)
+ if (_datdata.Romba)
+ {
+ string datum = Path.GetFileNameWithoutExtension(item);
+
+ RomData rom = new RomData
+ {
+ Type = "rom",
+ Game = datum,
+ Name = datum,
+ Size = 1,
+ SHA1 = Path.GetFileNameWithoutExtension(item),
+ };
+
+ string key = datum;
+ if (_datdata.Roms.ContainsKey(key))
+ {
+ _datdata.Roms[key].Add(rom);
+ }
+ else
+ {
+ List temp = new List();
+ temp.Add(rom);
+ _datdata.Roms.Add(key, temp);
+ }
+
+ _logger.User("File added: " + Path.GetFileNameWithoutExtension(item) + Environment.NewLine);
+ return;
+ }
+
// Create the temporary output directory
bool encounteredErrors = true;
if (!_archivesAsFiles)
@@ -377,7 +414,7 @@ namespace SabreTools
ArchiveType at = archive.Type;
_logger.Log("Found archive of type: " + at);
- if (at == ArchiveType.Zip || at == ArchiveType.SevenZip || at == ArchiveType.Rar || (at == ArchiveType.GZip && _datdata.Romba))
+ if (at == ArchiveType.Zip || at == ArchiveType.SevenZip || at == ArchiveType.Rar || (at == ArchiveType.GZip && _enableGzip))
{
_tempDir = Environment.CurrentDirectory + Path.DirectorySeparatorChar + "temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + Path.DirectorySeparatorChar;
DirectoryInfo di = Directory.CreateDirectory(_tempDir);
diff --git a/SabreHelper/Build.cs b/SabreHelper/Build.cs
index 0f245689..45ea1ecf 100644
--- a/SabreHelper/Build.cs
+++ b/SabreHelper/Build.cs
@@ -162,7 +162,8 @@ Options:
-u, --unzip Force unzipping in created DAT
-f, --files Treat archives as files
-o, --old Output DAT in CMP format instead of XML
- -ro, --romba Allow reading of GZIP files for Romba
+ -gz, --gz-files Allow reading of GZIP files as archives
+ -ro, --romba Read files from a Romba input
-n=, --name= Set the internal name of the DAT
-d=, --desc= Set the filename and description of the DAT
-c=, --cat= Set the category of the DAT