diff --git a/SabreTools.Helper/Data/Enums.cs b/SabreTools.Helper/Data/Enums.cs
index 05327dd1..4bd8425b 100644
--- a/SabreTools.Helper/Data/Enums.cs
+++ b/SabreTools.Helper/Data/Enums.cs
@@ -59,6 +59,19 @@ namespace SabreTools.Helper
ExternalAll = 4,
}
+ ///
+ /// Determine what type of file an item is
+ ///
+ public enum ItemType
+ {
+ Rom = 0,
+ Disk = 1,
+ Sample = 2,
+ Release = 3,
+ BiosSet = 4,
+ Archive = 5,
+ }
+
///
/// Determines forcemerging tag for DAT output
///
diff --git a/SabreTools.Helper/Data/Structs.cs b/SabreTools.Helper/Data/Structs.cs
index 063e399f..4f95d4c7 100644
--- a/SabreTools.Helper/Data/Structs.cs
+++ b/SabreTools.Helper/Data/Structs.cs
@@ -48,7 +48,7 @@ namespace SabreTools.Helper
{
public Machine Machine;
public string Name;
- public string Type;
+ public ItemType Type;
public HashData HashData;
public DupeType Dupe;
public bool Nodump;
diff --git a/SabreTools.Helper/Tools/ArchiveTools.cs b/SabreTools.Helper/Tools/ArchiveTools.cs
index 0939562c..23df0bfd 100644
--- a/SabreTools.Helper/Tools/ArchiveTools.cs
+++ b/SabreTools.Helper/Tools/ArchiveTools.cs
@@ -536,7 +536,7 @@ namespace SabreTools.Helper
roms.Add(new Rom
{
- Type = "rom",
+ Type = ItemType.Rom,
Name = reader.Entry.Key,
Machine = new Machine
{
@@ -620,7 +620,7 @@ namespace SabreTools.Helper
Rom rom = new Rom
{
- Type = "rom",
+ Type = ItemType.Rom,
Machine = new Machine
{
Name = Path.GetFileNameWithoutExtension(input).ToLowerInvariant(),
diff --git a/SabreTools.Helper/Tools/DatTools.cs b/SabreTools.Helper/Tools/DatTools.cs
index 1c6f0395..8d3c73e8 100644
--- a/SabreTools.Helper/Tools/DatTools.cs
+++ b/SabreTools.Helper/Tools/DatTools.cs
@@ -177,7 +177,7 @@ namespace SabreTools.Helper
Name = gamename,
Description = gamedesc,
},
- Type = (line.Trim().StartsWith("disk (") ? "disk" : "rom"),
+ Type = (line.Trim().StartsWith("disk (") ? ItemType.Disk : ItemType.Rom),
Metadata = new SourceMetadata { SystemID = sysid, SourceID = srcid },
};
@@ -300,7 +300,7 @@ namespace SabreTools.Helper
rom.HashData.SHA1 = RomTools.CleanHashData(rom.HashData.SHA1, Constants.SHA1Length);
// If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info
- if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero))
+ if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero))
{
rom.HashData.Size = Constants.SizeZero;
rom.HashData.CRC = Constants.CRCZero;
@@ -308,14 +308,14 @@ namespace SabreTools.Helper
rom.HashData.SHA1 = Constants.SHA1Zero;
}
// If the file has no size and it's not the above case, skip and log
- else if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1))
+ else if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1))
{
logger.Warning("Incomplete entry for \"" + rom.Name + "\" will be output as nodump");
rom.Nodump = true;
}
// If we have a disk, make sure that the value for size is -1
- if (rom.Type == "disk")
+ if (rom.Type == ItemType.Disk)
{
rom.HashData.Size = -1;
}
@@ -334,8 +334,8 @@ namespace SabreTools.Helper
}
// Add statistical data
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
@@ -588,7 +588,7 @@ namespace SabreTools.Helper
rom.HashData.SHA1 = RomTools.CleanHashData(rom.HashData.SHA1, Constants.SHA1Length);
// If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info
- if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero))
+ if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero))
{
rom.HashData.Size = Constants.SizeZero;
rom.HashData.CRC = Constants.CRCZero;
@@ -596,14 +596,14 @@ namespace SabreTools.Helper
rom.HashData.SHA1 = Constants.SHA1Zero;
}
// If the file has no size and it's not the above case, skip and log
- else if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1))
+ else if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1))
{
logger.Warning("Incomplete entry for \"" + rom.Name + "\" will be output as nodump");
rom.Nodump = true;
}
// If we have a disk, make sure that the value for size is -1
- if (rom.Type == "disk")
+ if (rom.Type == ItemType.Disk)
{
rom.HashData.Size = -1;
}
@@ -622,8 +622,8 @@ namespace SabreTools.Helper
}
// Add statistical data
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
@@ -679,7 +679,7 @@ namespace SabreTools.Helper
Rom rom = new Rom
{
- Type = "rom",
+ Type = ItemType.Rom,
Name = "null",
Machine = new Machine
{
@@ -708,8 +708,8 @@ namespace SabreTools.Helper
}
// Add statistical data
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
@@ -1135,7 +1135,7 @@ namespace SabreTools.Helper
Description = gamedesc,
},
Name = subreader.GetAttribute("name"),
- Type = subreader.Name,
+ Type = (subreader.Name.ToLowerInvariant() == "disk" ? ItemType.Disk : ItemType.Rom),
HashData = new HashData
{
Size = size,
@@ -1160,8 +1160,8 @@ namespace SabreTools.Helper
}
// Add statistical data
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
@@ -1188,7 +1188,7 @@ namespace SabreTools.Helper
Rom rom = new Rom
{
- Type = "rom",
+ Type = ItemType.Rom,
Name = "null",
Machine = new Machine
{
@@ -1217,8 +1217,8 @@ namespace SabreTools.Helper
}
// Add statistical data
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
@@ -1374,7 +1374,7 @@ namespace SabreTools.Helper
Name = tempname,
},
Name = xtr.GetAttribute("name"),
- Type = xtr.GetAttribute("type"),
+ Type = (xtr.GetAttribute("type").ToLowerInvariant() == "disk" ? ItemType.Disk : ItemType.Rom),
HashData = new HashData
{
Size = size,
@@ -1399,8 +1399,8 @@ namespace SabreTools.Helper
}
// Add statistical data
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
@@ -1864,7 +1864,7 @@ namespace SabreTools.Helper
}
// Filter on rom type
- if (romtype != "" && rom.Type.ToLowerInvariant() != romtype.ToLowerInvariant())
+ if (romtype != "" && rom.Type.ToString().ToLowerInvariant() != romtype.ToLowerInvariant())
{
continue;
}
diff --git a/SabreTools.Helper/Tools/Output.cs b/SabreTools.Helper/Tools/Output.cs
index 5d8738a9..d99dad22 100644
--- a/SabreTools.Helper/Tools/Output.cs
+++ b/SabreTools.Helper/Tools/Output.cs
@@ -421,7 +421,7 @@ namespace SabreTools.Helper
switch (datdata.OutputFormat)
{
case OutputFormat.ClrMamePro:
- state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" +
+ state += "\t" + rom.Type.ToString().ToLowerInvariant() + " ( name \"" + rom.Name + "\"" +
(rom.HashData.Size != -1 ? " size " + rom.HashData.Size : "") +
(!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc " + rom.HashData.CRC.ToLowerInvariant() : "") +
(!String.IsNullOrEmpty(rom.HashData.MD5) ? " md5 " + rom.HashData.MD5.ToLowerInvariant() : "") +
@@ -453,7 +453,7 @@ namespace SabreTools.Helper
else if (datdata.TSV == true)
{
string inline = "\"" + datdata.FileName + "\"\t\"" + datdata.Name + "\"\t\"" + datdata.Description + "\"\t\"" + rom.Machine + "\"\t\"" + rom.Machine + "\"\t\"" +
- rom.Type + "\"\t\"" + (rom.Type == "rom" ? rom.Name : "") + "\"\t\"" + (rom.Type == "disk" ? rom.Name : "") + "\"\t\"" + rom.HashData.Size + "\"\t\"" +
+ rom.Type.ToString().ToLowerInvariant() + "\"\t\"" + (rom.Type == ItemType.Rom ? rom.Name : "") + "\"\t\"" + (rom.Type == ItemType.Disk ? rom.Name : "") + "\"\t\"" + rom.HashData.Size + "\"\t\"" +
rom.HashData.CRC + "\"\t\"" + rom.HashData.MD5 + "\"\t\"" + rom.HashData.SHA1 + "\"\t" + (rom.Nodump ? "\"Nodump\"" : "\"\"");
state += pre + inline + post + "\n";
}
@@ -461,7 +461,7 @@ namespace SabreTools.Helper
else if (datdata.TSV == false)
{
string inline = "\"" + datdata.FileName + "\",\"" + datdata.Name + "\",\"" + datdata.Description + "\",\"" + rom.Machine + "\",\"" + rom.Machine + "\",\"" +
- rom.Type + "\",\"" + (rom.Type == "rom" ? rom.Name : "") + "\",\"" + (rom.Type == "disk" ? rom.Name : "") + "\",\"" + rom.HashData.Size + "\",\"" +
+ rom.Type.ToString().ToLowerInvariant() + "\",\"" + (rom.Type == ItemType.Rom ? rom.Name : "") + "\",\"" + (rom.Type == ItemType.Disk ? rom.Name : "") + "\",\"" + rom.HashData.Size + "\",\"" +
rom.HashData.CRC + "\",\"" + rom.HashData.MD5 + "\",\"" + rom.HashData.SHA1 + "\"," + (rom.Nodump ? "\"Nodump\"" : "\"\"");
state += pre + inline + post + "\n";
}
@@ -510,7 +510,7 @@ namespace SabreTools.Helper
}
state += prefix;
- state += "\n");
break;
case OutputFormat.Xml:
- state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
+ state += "\t\t<" + rom.Type.ToString().ToLowerInvariant() + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
(rom.HashData.Size != -1 ? " size=\"" + rom.HashData.Size + "\"" : "") +
(!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc=\"" + rom.HashData.CRC.ToLowerInvariant() + "\"" : "") +
(!String.IsNullOrEmpty(rom.HashData.MD5) ? " md5=\"" + rom.HashData.MD5.ToLowerInvariant() + "\"" : "") +
diff --git a/SabreTools.Helper/Tools/RomTools.cs b/SabreTools.Helper/Tools/RomTools.cs
index 18e77da7..63299643 100644
--- a/SabreTools.Helper/Tools/RomTools.cs
+++ b/SabreTools.Helper/Tools/RomTools.cs
@@ -29,7 +29,7 @@ namespace SabreTools.Helper
Rom rom = new Rom
{
Name = Path.GetFileName(input),
- Type = "rom",
+ Type = ItemType.Rom,
HashData = new HashData
{
Size = (new FileInfo(input)).Length,
@@ -249,11 +249,11 @@ namespace SabreTools.Helper
return dupefound;
}
- if (rom.Type == "rom" && lastrom.Type == "rom")
+ if (rom.Type == ItemType.Rom && lastrom.Type == ItemType.Rom)
{
dupefound = rom.HashData.Equals(lastrom.HashData, false);
}
- else if (rom.Type == "disk" && lastrom.Type == "disk")
+ else if (rom.Type == ItemType.Disk && lastrom.Type == ItemType.Disk)
{
dupefound = rom.HashData.Equals(lastrom.HashData, true);
}
diff --git a/SabreTools.Helper/Tools/Stats.cs b/SabreTools.Helper/Tools/Stats.cs
index 92da77a5..976a318e 100644
--- a/SabreTools.Helper/Tools/Stats.cs
+++ b/SabreTools.Helper/Tools/Stats.cs
@@ -120,8 +120,8 @@ Please check the log folder if the stats scrolled offscreen");
{
foreach (Rom rom in roms)
{
- datdata.RomCount += (rom.Type == "rom" ? 1 : 0);
- datdata.DiskCount += (rom.Type == "disk" ? 1 : 0);
+ datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0);
+ datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0);
datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size);
datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1);
datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1);
diff --git a/SabreTools/DATFromDir.cs b/SabreTools/DATFromDir.cs
index c4a055c1..a0271c3f 100644
--- a/SabreTools/DATFromDir.cs
+++ b/SabreTools/DATFromDir.cs
@@ -267,7 +267,7 @@ namespace SabreTools
// If we're in a mode that doesn't allow for actual empty folders, add the blank info
if (_datdata.OutputFormat != OutputFormat.SabreDat && _datdata.OutputFormat != OutputFormat.MissFile)
{
- rom.Type = "rom";
+ rom.Type = ItemType.Rom;
rom.Name = "-";
rom.HashData.Size = Constants.SizeZero;
rom.HashData.CRC = Constants.CRCZero;