diff --git a/SabreTools.Helper/Objects/DATFromDirParallel.cs b/SabreTools.Helper/Objects/DATFromDirParallel.cs index f55b3ebc..794cedfe 100644 --- a/SabreTools.Helper/Objects/DATFromDirParallel.cs +++ b/SabreTools.Helper/Objects/DATFromDirParallel.cs @@ -55,6 +55,7 @@ namespace SabreTools { _basePath = Path.GetFullPath(basePath); _datdata = datdata; + _datdata.Files = new Dictionary>(); _datdata.Files.Add("null", new List()); _noMD5 = noMD5; _noSHA1 = noSHA1; @@ -205,7 +206,14 @@ namespace SabreTools // If the rom is valid, write it out if (rom.Name != null) { - _datdata.Files["null"].Add(rom); + // Add the list if it doesn't exist already + string key = rom.HashData.Size + "-" + rom.HashData.CRC; + if (!_datdata.Files.ContainsKey(key)) + { + _datdata.Files.Add(key, new List()); + } + + _datdata.Files[key].Add(rom); _logger.User("File added: " + Path.GetFileNameWithoutExtension(item) + Environment.NewLine); } else @@ -299,6 +307,13 @@ namespace SabreTools /// DatData object with output information private void ProcessFileHelper(string item, Rom rom, string basepath, string parent, Dat datdata) { + // Add the list if it doesn't exist already + string key = rom.HashData.Size + "-" + rom.HashData.CRC; + if (!datdata.Files.ContainsKey(key)) + { + datdata.Files.Add(key, new List()); + } + try { // If the basepath ends with a directory separator, remove it @@ -377,7 +392,7 @@ namespace SabreTools rom.Name = romname; // Add the file information to the DAT - datdata.Files["null"].Add(rom); + datdata.Files[key].Add(rom); _logger.User("File added: " + romname + Environment.NewLine); }