diff --git a/SabreTools.DatItems/DatItemTool.cs b/SabreTools.DatItems/DatItemTool.cs index c12be568..e585c383 100644 --- a/SabreTools.DatItems/DatItemTool.cs +++ b/SabreTools.DatItems/DatItemTool.cs @@ -3,6 +3,9 @@ using System.IO; using SabreTools.Core.Tools; using SabreTools.DatItems.Formats; using SabreTools.FileTypes; +using SabreTools.FileTypes.Aaru; +using SabreTools.FileTypes.CHD; +using SabreTools.IO.Extensions; using SabreTools.IO.Logging; using SabreTools.Matching.Compare; @@ -33,22 +36,22 @@ namespace SabreTools.DatItems { // Disk #if NET20 || NET35 - FileTypes.CHD.CHDFile when (asFile & TreatAsFile.CHD) == 0 => new Disk(baseFile), + FileTypes.CHD.CHDFile when (asFile & TreatAsFile.CHD) == 0 => baseFile.ConvertToDisk(), #else - FileTypes.CHD.CHDFile when !asFile.HasFlag(TreatAsFile.CHD) => new Disk(baseFile), + FileTypes.CHD.CHDFile when !asFile.HasFlag(TreatAsFile.CHD) => baseFile.ConvertToDisk(), #endif // Media #if NET20 || NET35 - FileTypes.Aaru.AaruFormat when (asFile & TreatAsFile.AaruFormat) == 0 => new Media(baseFile), + FileTypes.Aaru.AaruFormat when (asFile & TreatAsFile.AaruFormat) == 0 => baseFile.ConvertToMedia(), #else - FileTypes.Aaru.AaruFormat when !asFile.HasFlag(TreatAsFile.AaruFormat) => new Media(baseFile), + FileTypes.Aaru.AaruFormat when !asFile.HasFlag(TreatAsFile.AaruFormat) => baseFile.ConvertToMedia(), #endif // Rom - BaseArchive => new Rom(baseFile), + BaseArchive => baseFile.ConvertToRom(), Folder => null, // Folders cannot be a DatItem - BaseFile => new Rom(baseFile), + BaseFile => baseFile.ConvertToRom(), // Miscellaneous _ => null, @@ -57,6 +60,193 @@ namespace SabreTools.DatItems #endregion + #region Conversion + + /// + /// Convert a BaseFile value to a Disk + /// + /// BaseFile to convert + /// Disk containing original BaseFile information + public static Disk ConvertToDisk(this BaseFile baseFile) + { + var disk = new Disk(); + + disk.SetName(baseFile.Filename); + if (baseFile is FileTypes.CHD.CHDFile chd) + { + disk.SetFieldValue(Models.Metadata.Disk.MD5Key, chd.InternalMD5.ToHexString()); + disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, chd.InternalSHA1.ToHexString()); + } + else + { + disk.SetFieldValue(Models.Metadata.Disk.MD5Key, baseFile.MD5.ToHexString()); + disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, baseFile.SHA1.ToHexString()); + } + + disk.SetFieldValue(DatItem.DupeTypeKey, 0x00); + + return disk; + } + + /// + /// Convert a BaseFile value to a File + /// + /// BaseFile to convert + /// File containing original BaseFile information + public static Formats.File ConvertToFile(this BaseFile baseFile) + { + var file = new Formats.File(); + + file.CRC = baseFile.CRC.ToHexString(); + file.MD5 = baseFile.MD5.ToHexString(); + file.SHA1 = baseFile.SHA1.ToHexString(); + file.SHA256 = baseFile.SHA256.ToHexString(); + + file.SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType.File); + file.SetFieldValue(DatItem.DupeTypeKey, 0x00); + + return file; + } + + /// + /// Convert a BaseFile value to a Media + /// + /// BaseFile to convert + /// Media containing original BaseFile information + public static Media ConvertToMedia(this BaseFile baseFile) + { + var media = new Media(); + + media.SetName(baseFile.Filename); + if (baseFile is FileTypes.Aaru.AaruFormat aif) + { + media.SetFieldValue(Models.Metadata.Media.MD5Key, aif.InternalMD5.ToHexString()); + media.SetFieldValue(Models.Metadata.Media.SHA1Key, aif.InternalSHA1.ToHexString()); + media.SetFieldValue(Models.Metadata.Media.SHA256Key, aif.InternalSHA256.ToHexString()); + media.SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(aif.InternalSpamSum ?? [])); + } + else + { + media.SetFieldValue(Models.Metadata.Media.MD5Key, baseFile.MD5.ToHexString()); + media.SetFieldValue(Models.Metadata.Media.SHA1Key, baseFile.SHA1.ToHexString()); + media.SetFieldValue(Models.Metadata.Media.SHA256Key, baseFile.SHA256.ToHexString()); + media.SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? [])); + } + + media.SetFieldValue(DatItem.DupeTypeKey, 0x00); + + return media; + } + + /// + /// Convert a BaseFile value to a Rom + /// + /// BaseFile to convert + /// Rom containing original BaseFile information + public static Rom ConvertToRom(this BaseFile baseFile) + { + var rom = new Rom(); + + rom.SetName(baseFile.Filename); + rom.SetFieldValue(Models.Metadata.Rom.DateKey, baseFile.Date); + rom.SetFieldValue(Models.Metadata.Rom.CRCKey, baseFile.CRC.ToHexString()); + rom.SetFieldValue(Models.Metadata.Rom.MD5Key, baseFile.MD5.ToHexString()); + rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, baseFile.SHA1.ToHexString()); + rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, baseFile.SHA256.ToHexString()); + rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, baseFile.SHA384.ToHexString()); + rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, baseFile.SHA512.ToHexString()); + rom.SetFieldValue(Models.Metadata.Rom.SizeKey, baseFile.Size.ToString()); + if (baseFile.SpamSum != null) + rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum)); + + rom.SetFieldValue(DatItem.DupeTypeKey, 0x00); + + return rom; + } + + /// + /// Convert a Disk value to a BaseFile + /// + /// Disk to convert + /// BaseFile containing original Disk information + public static BaseFile ConvertToBaseFile(this Disk disk) + { + return new CHDFile() + { + Filename = disk.GetName(), + Parent = disk.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + MD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(), + InternalMD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(), + SHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(), + InternalSHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(), + }; + } + + /// + /// Convert a File value to a BaseFile + /// + /// File to convert + /// BaseFile containing original File information + public static BaseFile ConvertToBaseFile(this Formats.File file) + { + return new BaseFile() + { + Parent = file.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + CRC = file.CRC.FromHexString(), + MD5 = file.MD5.FromHexString(), + SHA1 = file.SHA1.FromHexString(), + SHA256 = file.SHA256.FromHexString(), + }; + } + + /// + /// Convert a Media value to a BaseFile + /// + /// Media to convert + /// BaseFile containing original Media information + public static BaseFile ConvertToBaseFile(this Media media) + { + return new AaruFormat() + { + Filename = media.GetName(), + Parent = media.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + MD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(), + InternalMD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(), + SHA1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(), + InternalSHA1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(), + SHA256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key).FromHexString(), + InternalSHA256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key).FromHexString(), + SpamSum = System.Text.Encoding.UTF8.GetBytes(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty), + InternalSpamSum = System.Text.Encoding.UTF8.GetBytes(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty), + }; + } + + /// + /// Convert a Rom value to a BaseFile + /// + /// Rom to convert + /// BaseFile containing original Rom information + public static BaseFile ConvertToBaseFile(this Rom rom) + { + string? spamSum = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey); + return new BaseFile() + { + Filename = rom.GetName(), + Parent = rom.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + Date = rom.GetStringFieldValue(Models.Metadata.Rom.DateKey), + Size = NumberHelper.ConvertToInt64(rom.GetStringFieldValue(Models.Metadata.Rom.SizeKey)), + CRC = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey).FromHexString(), + MD5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key).FromHexString(), + SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key).FromHexString(), + SHA256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key).FromHexString(), + SHA384 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key).FromHexString(), + SHA512 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key).FromHexString(), + SpamSum = spamSum != null ? System.Text.Encoding.UTF8.GetBytes(spamSum) : null, + }; + } + + #endregion + #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs index 9aaa10b0..75d1ae36 100644 --- a/SabreTools.DatItems/Formats/Disk.cs +++ b/SabreTools.DatItems/Formats/Disk.cs @@ -2,8 +2,6 @@ using Newtonsoft.Json; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.FileTypes; -using SabreTools.IO.Extensions; namespace SabreTools.DatItems.Formats { @@ -72,42 +70,10 @@ namespace SabreTools.DatItems.Formats SetFieldValue(DatItem.DupeTypeKey, 0x00); } - public Disk(BaseFile baseFile) : base() - { - SetName(baseFile.Filename); - - if (baseFile is FileTypes.CHD.CHDFile chd) - { - SetFieldValue(Models.Metadata.Disk.MD5Key, chd.InternalMD5.ToHexString()); - SetFieldValue(Models.Metadata.Disk.SHA1Key, chd.InternalSHA1.ToHexString()); - } - else - { - SetFieldValue(Models.Metadata.Disk.MD5Key, baseFile.MD5.ToHexString()); - SetFieldValue(Models.Metadata.Disk.SHA1Key, baseFile.SHA1.ToHexString()); - } - - SetFieldValue(DatItem.DupeTypeKey, 0x00); - } - #endregion #region Cloning Methods - /// - /// Convert Disk object to a BaseFile - /// - public BaseFile ConvertToBaseFile() - { - return new BaseFile() - { - Filename = GetName(), - Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), - MD5 = GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(), - SHA1 = GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(), - }; - } - /// /// Convert a disk to the closest Rom approximation /// diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs index a981f29c..b288a56f 100644 --- a/SabreTools.DatItems/Formats/File.cs +++ b/SabreTools.DatItems/Formats/File.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Core.Tools; -using SabreTools.FileTypes; using SabreTools.Hashing; using SabreTools.IO.Extensions; @@ -105,21 +104,6 @@ namespace SabreTools.DatItems.Formats SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); } - /// - /// Create a File object from a BaseFile - /// - /// - public File(BaseFile baseFile) - { - _crc = baseFile.CRC; - _md5 = baseFile.MD5; - _sha1 = baseFile.SHA1; - _sha256 = baseFile.SHA256; - - SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); - SetFieldValue(DatItem.DupeTypeKey, 0x00); - } - #endregion #region Cloning Methods @@ -146,21 +130,6 @@ namespace SabreTools.DatItems.Formats return file; } - /// - /// Convert Disk object to a BaseFile - /// - public BaseFile ConvertToBaseFile() - { - return new BaseFile() - { - Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), - CRC = this._crc, - MD5 = this._md5, - SHA1 = this._sha1, - SHA256 = this._sha256, - }; - } - /// /// Convert a disk to the closest Rom approximation /// diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs index 4072ec71..ee9ab3de 100644 --- a/SabreTools.DatItems/Formats/Media.cs +++ b/SabreTools.DatItems/Formats/Media.cs @@ -1,8 +1,6 @@ using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Core; -using SabreTools.FileTypes; -using SabreTools.IO.Extensions; namespace SabreTools.DatItems.Formats { @@ -34,48 +32,10 @@ namespace SabreTools.DatItems.Formats SetFieldValue(DatItem.DupeTypeKey, 0x00); } - public Media(BaseFile baseFile) : base() - { - SetName(baseFile.Filename); - - if (baseFile is FileTypes.Aaru.AaruFormat aif) - { - SetFieldValue(Models.Metadata.Media.MD5Key, aif.InternalMD5.ToHexString()); - SetFieldValue(Models.Metadata.Media.SHA1Key, aif.InternalSHA1.ToHexString()); - SetFieldValue(Models.Metadata.Media.SHA256Key, aif.InternalSHA256.ToHexString()); - SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(aif.InternalSpamSum ?? [])); - } - else - { - SetFieldValue(Models.Metadata.Media.MD5Key, baseFile.MD5.ToHexString()); - SetFieldValue(Models.Metadata.Media.SHA1Key, baseFile.SHA1.ToHexString()); - SetFieldValue(Models.Metadata.Media.SHA256Key, baseFile.SHA256.ToHexString()); - SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? [])); - } - - SetFieldValue(DatItem.DupeTypeKey, 0x00); - } - #endregion #region Cloning Methods - /// - /// Convert Media object to a BaseFile - /// - public BaseFile ConvertToBaseFile() - { - return new BaseFile() - { - Filename = GetName(), - Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), - MD5 = GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(), - SHA1 = GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(), - SHA256 = GetStringFieldValue(Models.Metadata.Media.SHA256Key).FromHexString(), - SpamSum = System.Text.Encoding.UTF8.GetBytes(GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty), - }; - } - /// /// Convert a media to the closest Rom approximation /// diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs index b44cc6f2..dcf0b06c 100644 --- a/SabreTools.DatItems/Formats/Rom.cs +++ b/SabreTools.DatItems/Formats/Rom.cs @@ -2,8 +2,6 @@ using Newtonsoft.Json; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.FileTypes; -using SabreTools.IO.Extensions; namespace SabreTools.DatItems.Formats { @@ -91,23 +89,6 @@ namespace SabreTools.DatItems.Formats SetFieldValue(Models.Metadata.Rom.StatusKey, ItemStatus.None.AsStringValue()); } - public Rom(BaseFile baseFile) : base() - { - SetName(baseFile.Filename); - SetFieldValue(Models.Metadata.Rom.DateKey, baseFile.Date); - SetFieldValue(Models.Metadata.Rom.CRCKey, baseFile.CRC.ToHexString()); - SetFieldValue(Models.Metadata.Rom.MD5Key, baseFile.MD5.ToHexString()); - SetFieldValue(Models.Metadata.Rom.SHA1Key, baseFile.SHA1.ToHexString()); - SetFieldValue(Models.Metadata.Rom.SHA256Key, baseFile.SHA256.ToHexString()); - SetFieldValue(Models.Metadata.Rom.SHA384Key, baseFile.SHA384.ToHexString()); - SetFieldValue(Models.Metadata.Rom.SHA512Key, baseFile.SHA512.ToHexString()); - SetFieldValue(Models.Metadata.Rom.SizeKey, baseFile.Size.ToString()); - if (baseFile.SpamSum != null) - SetFieldValue(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum)); - - SetFieldValue(DatItem.DupeTypeKey, 0x00); - } - public Rom(Models.Metadata.Rom item) : base(item) { SetFieldValue(DatItem.DupeTypeKey, 0x00); @@ -115,32 +96,6 @@ namespace SabreTools.DatItems.Formats #endregion - #region Cloning Methods - - /// - /// Convert Rom object to a BaseFile - /// - public BaseFile ConvertToBaseFile() - { - string? spamSum = GetStringFieldValue(Models.Metadata.Rom.SpamSumKey); - return new BaseFile() - { - Filename = GetName(), - Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), - Date = GetStringFieldValue(Models.Metadata.Rom.DateKey), - Size = NumberHelper.ConvertToInt64(GetStringFieldValue(Models.Metadata.Rom.SizeKey)), - CRC = GetStringFieldValue(Models.Metadata.Rom.CRCKey).FromHexString(), - MD5 = GetStringFieldValue(Models.Metadata.Rom.MD5Key).FromHexString(), - SHA1 = GetStringFieldValue(Models.Metadata.Rom.SHA1Key).FromHexString(), - SHA256 = GetStringFieldValue(Models.Metadata.Rom.SHA256Key).FromHexString(), - SHA384 = GetStringFieldValue(Models.Metadata.Rom.SHA384Key).FromHexString(), - SHA512 = GetStringFieldValue(Models.Metadata.Rom.SHA512Key).FromHexString(), - SpamSum = spamSum != null ? System.Text.Encoding.UTF8.GetBytes(spamSum) : null, - }; - } - - #endregion - #region Comparision Methods /// diff --git a/SabreTools.DatTools/DatFromDir.cs b/SabreTools.DatTools/DatFromDir.cs index bc8a5518..7b4b6545 100644 --- a/SabreTools.DatTools/DatFromDir.cs +++ b/SabreTools.DatTools/DatFromDir.cs @@ -229,7 +229,7 @@ namespace SabreTools.DatTools if (baseFile != null && baseFile.Filename != null) { // Add the list if it doesn't exist already - Rom rom = new(baseFile); + Rom rom = baseFile.ConvertToRom(); datFile.Items.Add(rom.GetKey(ItemKey.CRC), rom); logger.Verbose($"File added: {Path.GetFileNameWithoutExtension(item)}"); } diff --git a/SabreTools.DatTools/Rebuilder.cs b/SabreTools.DatTools/Rebuilder.cs index 0643aa37..dc5205b1 100644 --- a/SabreTools.DatTools/Rebuilder.cs +++ b/SabreTools.DatTools/Rebuilder.cs @@ -157,13 +157,13 @@ namespace SabreTools.DatTools // Otherwise, we rebuild that file to all locations that we need to bool usedInternally; if (items[0].GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == ItemType.Disk) - usedInternally = RebuildIndividualFile(datFile, new Disk(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false); + usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToDisk(), foundpath, outDir, date, inverse, outputFormat, isZip: false); else if (items[0].GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == ItemType.File) - usedInternally = RebuildIndividualFile(datFile, new DatItems.Formats.File(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false); + usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToFile(), foundpath, outDir, date, inverse, outputFormat, isZip: false); else if (items[0].GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == ItemType.Media) - usedInternally = RebuildIndividualFile(datFile, new Media(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false); + usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToMedia(), foundpath, outDir, date, inverse, outputFormat, isZip: false); else - usedInternally = RebuildIndividualFile(datFile, new Rom(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false); + usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToRom(), foundpath, outDir, date, inverse, outputFormat, isZip: false); // If we are supposed to delete the depot file, do so if (delete && usedInternally) @@ -335,15 +335,15 @@ namespace SabreTools.DatTools #else else if (internalFileInfo is FileTypes.Aaru.AaruFormat && !asFile.HasFlag(TreatAsFile.AaruFormat)) #endif - internalDatItem = new Media(internalFileInfo); + internalDatItem = internalFileInfo.ConvertToMedia(); #if NET20 || NET35 else if (internalFileInfo is FileTypes.CHD.CHDFile && (asFile & TreatAsFile.CHD) == 0) #else else if (internalFileInfo is FileTypes.CHD.CHDFile && !asFile.HasFlag(TreatAsFile.CHD)) #endif - internalDatItem = new Disk(internalFileInfo); + internalDatItem = internalFileInfo.ConvertToDisk(); else - internalDatItem = new Rom(internalFileInfo); + internalDatItem = internalFileInfo.ConvertToRom(); if (internalDatItem != null) usedExternally = RebuildIndividualFile(datFile, internalDatItem, file, outDir, date, inverse, outputFormat); @@ -500,7 +500,7 @@ namespace SabreTools.DatTools { // Get the file informations that we will be using HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1]; - Rom headerless = new(FileTypeTool.GetInfo(transformStream, hashes)); + Rom headerless = FileTypeTool.GetInfo(transformStream, hashes).ConvertToRom(); // If we have duplicates and we're not filtering if (ShouldRebuild(datFile, headerless, transformStream, false, out dupes)) @@ -575,7 +575,7 @@ namespace SabreTools.DatTools // Get the item from the current file HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1]; - Rom item = new(FileTypeTool.GetInfo(stream, hashes)); + Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom(); item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Path.GetFileNameWithoutExtension(item.GetName())); item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.NameKey, Path.GetFileNameWithoutExtension(item.GetName())); @@ -633,7 +633,7 @@ namespace SabreTools.DatTools // Get the item from the current file HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1]; - var item = new Rom(FileTypeTool.GetInfo(stream, hashes)); + Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom(); // Create a machine for the current item var machine = new Machine(); diff --git a/SabreTools.DatTools/Verification.cs b/SabreTools.DatTools/Verification.cs index 7da13c26..ef9cf40a 100644 --- a/SabreTools.DatTools/Verification.cs +++ b/SabreTools.DatTools/Verification.cs @@ -96,8 +96,8 @@ namespace SabreTools.DatTools continue; // Now we want to remove all duplicates from the DAT - datFile.Items.GetDuplicates(new Rom(fileinfo)) - .AddRange(datFile.Items.GetDuplicates(new Disk(fileinfo))); + datFile.Items.GetDuplicates(fileinfo.ConvertToRom()) + .AddRange(datFile.Items.GetDuplicates(fileinfo.ConvertToDisk())); } watch.Stop(); @@ -181,8 +181,8 @@ namespace SabreTools.DatTools continue; // Now we want to remove all duplicates from the DAT - datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, new Rom(fileinfo))) - .Concat(datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, new Disk(fileinfo)))); + datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, fileinfo.ConvertToRom())) + .Concat(datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, fileinfo.ConvertToDisk()))); } watch.Stop();