mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Wire through MD2/MD4
This commit is contained in:
@@ -978,6 +978,10 @@ namespace SabreTools.DatFiles
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, datItem.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString());
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(datItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(datItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD5(datItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(datItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) != null)
|
||||
@@ -1234,6 +1238,10 @@ namespace SabreTools.DatFiles
|
||||
romItem.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, romItem.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString());
|
||||
if (romItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey) != null)
|
||||
romItem.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(romItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey)));
|
||||
if (romItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key) != null)
|
||||
romItem.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(romItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key)));
|
||||
if (romItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key) != null)
|
||||
romItem.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD4(romItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key)));
|
||||
if (romItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key) != null)
|
||||
romItem.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(romItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key)));
|
||||
if (romItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) != null)
|
||||
@@ -1542,6 +1550,10 @@ namespace SabreTools.DatFiles
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, datItem.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString());
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(datItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(datItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD4(datItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key) != null)
|
||||
datItem.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(datItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key)));
|
||||
if (datItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) != null)
|
||||
|
||||
@@ -219,6 +219,8 @@ namespace SabreTools.DatFiles
|
||||
category = machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
|
||||
name = item.GetName() ?? type.AsEnumValue<ItemType>().AsStringValue() ?? string.Empty,
|
||||
crc = string.Empty,
|
||||
md2 = string.Empty,
|
||||
md4 = string.Empty,
|
||||
md5 = string.Empty,
|
||||
sha1 = string.Empty,
|
||||
sha256 = string.Empty,
|
||||
@@ -260,6 +262,8 @@ namespace SabreTools.DatFiles
|
||||
else if (item is Rom rom)
|
||||
{
|
||||
crc = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) ?? string.Empty;
|
||||
md2 = rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) ?? string.Empty;
|
||||
md4 = rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) ?? string.Empty;
|
||||
md5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) ?? string.Empty;
|
||||
sha1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
|
||||
sha256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) ?? string.Empty;
|
||||
@@ -278,6 +282,8 @@ namespace SabreTools.DatFiles
|
||||
.Replace("%publisher%", publisher)
|
||||
.Replace("%category%", category)
|
||||
.Replace("%crc%", crc)
|
||||
.Replace("%md2%", md2)
|
||||
.Replace("%md4%", md4)
|
||||
.Replace("%md5%", md5)
|
||||
.Replace("%sha1%", sha1)
|
||||
.Replace("%sha256%", sha256)
|
||||
@@ -311,6 +317,8 @@ namespace SabreTools.DatFiles
|
||||
category = machine.Value.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
|
||||
name = item.Value.GetName() ?? type.AsEnumValue<ItemType>().AsStringValue() ?? string.Empty,
|
||||
crc = string.Empty,
|
||||
md2 = string.Empty,
|
||||
md4 = string.Empty,
|
||||
md5 = string.Empty,
|
||||
sha1 = string.Empty,
|
||||
sha256 = string.Empty,
|
||||
@@ -352,6 +360,8 @@ namespace SabreTools.DatFiles
|
||||
else if (item.Value is Rom rom)
|
||||
{
|
||||
crc = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) ?? string.Empty;
|
||||
md2 = rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) ?? string.Empty;
|
||||
md4 = rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) ?? string.Empty;
|
||||
md5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) ?? string.Empty;
|
||||
sha1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
|
||||
sha256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) ?? string.Empty;
|
||||
@@ -370,6 +380,8 @@ namespace SabreTools.DatFiles
|
||||
.Replace("%publisher%", publisher)
|
||||
.Replace("%category%", category)
|
||||
.Replace("%crc%", crc)
|
||||
.Replace("%md2%", md2)
|
||||
.Replace("%md4%", md4)
|
||||
.Replace("%md5%", md5)
|
||||
.Replace("%sha1%", sha1)
|
||||
.Replace("%sha256%", sha256)
|
||||
@@ -615,6 +627,10 @@ namespace SabreTools.DatFiles
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? ZeroHash.CRC32Str : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) == "null" ? ZeroHash.GetString(HashType.MD2) : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) == "null" ? ZeroHash.GetString(HashType.MD4) : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? ZeroHash.MD5Str : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key,
|
||||
@@ -659,6 +675,10 @@ namespace SabreTools.DatFiles
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? ZeroHash.CRC32Str : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) == "null" ? ZeroHash.GetString(HashType.MD2) : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) == "null" ? ZeroHash.GetString(HashType.MD4) : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key,
|
||||
rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? ZeroHash.MD5Str : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key,
|
||||
|
||||
@@ -145,6 +145,8 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
TotalSize += rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) ?? 0;
|
||||
AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD2, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD4, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
@@ -345,6 +347,8 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
TotalSize -= rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) ?? 0;
|
||||
RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD2, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD4, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
|
||||
@@ -88,6 +88,30 @@ namespace SabreTools.DatFiles.Formats
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HashType.MD2:
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.MD2Key);
|
||||
break;
|
||||
default:
|
||||
missingFields.Add(Models.Metadata.Rom.MD2Key);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HashType.MD4:
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.MD4Key);
|
||||
break;
|
||||
default:
|
||||
missingFields.Add(Models.Metadata.Rom.MD4Key);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HashType.MD5:
|
||||
switch (datItem)
|
||||
{
|
||||
|
||||
@@ -232,6 +232,8 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, ZeroHash.CRC32Str);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, null); // ZeroHash.GetString(HashType.MD2)
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, null); // ZeroHash.GetString(HashType.MD4)
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, ZeroHash.MD5Str);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, ZeroHash.SHA1Str);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, null); // ZeroHash.SHA256Str;
|
||||
@@ -667,6 +669,14 @@ namespace SabreTools.DatFiles
|
||||
else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.MD5))
|
||||
return ItemKey.MD5;
|
||||
|
||||
// // If all items are supposed to have a MD4, we bucket by that
|
||||
// else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.MD4))
|
||||
// return ItemKey.MD4;
|
||||
|
||||
// // If all items are supposed to have a MD2, we bucket by that
|
||||
// else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.MD2))
|
||||
// return ItemKey.MD2;
|
||||
|
||||
// Otherwise, we bucket by CRC
|
||||
else
|
||||
return ItemKey.CRC;
|
||||
|
||||
@@ -222,6 +222,8 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, ZeroHash.CRC32Str);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, null); // ZeroHash.GetString(HashType.MD2)
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, null); // ZeroHash.GetString(HashType.MD4)
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, ZeroHash.MD5Str);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, ZeroHash.SHA1Str);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, null); // ZeroHash.SHA256Str;
|
||||
@@ -865,6 +867,14 @@ namespace SabreTools.DatFiles
|
||||
else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.MD5))
|
||||
return ItemKey.MD5;
|
||||
|
||||
// // If all items are supposed to have a MD4, we bucket by that
|
||||
// else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.MD4))
|
||||
// return ItemKey.MD4;
|
||||
|
||||
// // If all items are supposed to have a MD2, we bucket by that
|
||||
// else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.MD2))
|
||||
// return ItemKey.MD2;
|
||||
|
||||
// Otherwise, we bucket by CRC
|
||||
else
|
||||
return ItemKey.CRC;
|
||||
@@ -917,6 +927,8 @@ namespace SabreTools.DatFiles
|
||||
Disk disk => bucketBy switch
|
||||
{
|
||||
ItemKey.CRC => ZeroHash.CRC32Str,
|
||||
// ItemKey.MD2 => ZeroHash.GetString(HashType.MD2),
|
||||
// ItemKey.MD4 => ZeroHash.GetString(HashType.MD4),
|
||||
ItemKey.MD5 => disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key) ?? string.Empty,
|
||||
ItemKey.SHA1 => disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key) ?? string.Empty,
|
||||
ItemKey.SHA256 => ZeroHash.SHA256Str,
|
||||
@@ -928,6 +940,8 @@ namespace SabreTools.DatFiles
|
||||
Media media => bucketBy switch
|
||||
{
|
||||
ItemKey.CRC => ZeroHash.CRC32Str,
|
||||
// ItemKey.MD2 => ZeroHash.GetString(HashType.MD2),
|
||||
// ItemKey.MD4 => ZeroHash.GetString(HashType.MD4),
|
||||
ItemKey.MD5 => media.GetStringFieldValue(Models.Metadata.Media.MD5Key) ?? string.Empty,
|
||||
ItemKey.SHA1 => media.GetStringFieldValue(Models.Metadata.Media.SHA1Key) ?? string.Empty,
|
||||
ItemKey.SHA256 => media.GetStringFieldValue(Models.Metadata.Media.SHA256Key) ?? string.Empty,
|
||||
@@ -939,6 +953,8 @@ namespace SabreTools.DatFiles
|
||||
Rom rom => bucketBy switch
|
||||
{
|
||||
ItemKey.CRC => rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) ?? string.Empty,
|
||||
// ItemKey.MD2 => rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) ?? string.Empty,
|
||||
// ItemKey.MD4 => rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) ?? string.Empty,
|
||||
ItemKey.MD5 => rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) ?? string.Empty,
|
||||
ItemKey.SHA1 => rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty,
|
||||
ItemKey.SHA256 => rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) ?? string.Empty,
|
||||
@@ -950,6 +966,8 @@ namespace SabreTools.DatFiles
|
||||
_ => bucketBy switch
|
||||
{
|
||||
ItemKey.CRC => ZeroHash.CRC32Str,
|
||||
// ItemKey.MD2 => ZeroHash.GetString(HashType.MD2),
|
||||
// ItemKey.MD4 => ZeroHash.GetString(HashType.MD4),
|
||||
ItemKey.MD5 => ZeroHash.MD5Str,
|
||||
ItemKey.SHA1 => ZeroHash.SHA1Str,
|
||||
ItemKey.SHA256 => ZeroHash.SHA256Str,
|
||||
|
||||
@@ -162,6 +162,18 @@ namespace SabreTools.DatFiles
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, newItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey));
|
||||
}
|
||||
|
||||
if (datItemFields.Contains(Models.Metadata.Rom.MD2Key))
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key)))
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, newItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key));
|
||||
}
|
||||
|
||||
if (datItemFields.Contains(Models.Metadata.Rom.MD4Key))
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key)))
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, newItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key));
|
||||
}
|
||||
|
||||
if (datItemFields.Contains(Models.Metadata.Rom.MD5Key))
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key)))
|
||||
|
||||
Reference in New Issue
Block a user