diff --git a/SabreHelper/Output.cs b/SabreHelper/Output.cs index dcdb2695..4ff5d079 100644 --- a/SabreHelper/Output.cs +++ b/SabreHelper/Output.cs @@ -173,6 +173,7 @@ namespace SabreTools.Helper (rom.CRC != "" ? " crc " + rom.CRC.ToLowerInvariant() : "") + (rom.MD5 != "" ? " md5 " + rom.MD5.ToLowerInvariant() : "") + (rom.SHA1 != "" ? " sha1 " + rom.SHA1.ToLowerInvariant() : "") + + (rom.Nodump ? " flags nodump" : "") + " )\n"; break; case OutputFormat.MissFile: @@ -234,6 +235,7 @@ namespace SabreTools.Helper (rom.CRC != "" ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") + (rom.MD5 != "" ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") + (rom.SHA1 != "" ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") + + (rom.Nodump ? " status=\"nodump\"" : "") + "/>\n"; break; } diff --git a/SabreHelper/RomManipulation.cs b/SabreHelper/RomManipulation.cs index 47eac922..4c73a05b 100644 --- a/SabreHelper/RomManipulation.cs +++ b/SabreHelper/RomManipulation.cs @@ -288,12 +288,13 @@ namespace SabreTools.Helper { case "rom": case "disk": - // If the rom is nodump, skip it + // If the rom is nodump, flag it + bool nodump = false; if (xtr.GetAttribute("flags") == "nodump" || xtr.GetAttribute("status") == "nodump") { logger.Log("Nodump detected: " + - (xtr.GetAttribute("name") != null && xtr.GetAttribute("name") != "" ? "\"" + xtr.GetAttribute("name") + "\"" : "ROM NAME NOT FOUND") + "; skipping..."); - break; + (xtr.GetAttribute("name") != null && xtr.GetAttribute("name") != "" ? "\"" + xtr.GetAttribute("name") + "\"" : "ROM NAME NOT FOUND")); + nodump = true; } // Take care of hex-sized files @@ -343,12 +344,12 @@ namespace SabreTools.Helper // If the file has no size and it's not the above case, skip and log else if (subreader.Name == "rom" && (size == 0 || size == -1)) { - logger.Warning("Potentially incomplete entry found for \"" + xtr.GetAttribute("name") + "\""); - break; + logger.Error("Incomplete entry for \"" + xtr.GetAttribute("name") + "\" will be output as nodump"); + nodump = true; } // Only add the rom if there's useful information in it - if (!(crc == "" && md5 == "" && sha1 == "")) + if (!(crc == "" && md5 == "" && sha1 == "") || nodump) { // Get the new values to add key = size + "-" + crc; @@ -365,6 +366,7 @@ namespace SabreTools.Helper MD5 = md5, SHA1 = sha1, System = filename, + Nodump = nodump, }; if (datdata.Roms.ContainsKey(key)) diff --git a/SabreHelper/Structs.cs b/SabreHelper/Structs.cs index 04ca1c32..12e4e7d0 100644 --- a/SabreHelper/Structs.cs +++ b/SabreHelper/Structs.cs @@ -21,6 +21,7 @@ namespace SabreTools.Helper public string MD5; public string SHA1; public DupeType Dupe; + public bool Nodump; } ///