diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index de1b9173..f90213ab 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -335,10 +335,10 @@ namespace SabreTools.DatFiles /// Perform deduplication based on the deduplication type provided /// /// Dedupe type that should be used - public void Deduplicate(DedupeType dedupeType) + public void Deduplicate() { - Items.Deduplicate(dedupeType); - ItemsDB.Deduplicate(dedupeType); + Items.Deduplicate(); + ItemsDB.Deduplicate(); } /// diff --git a/SabreTools.DatFiles/DatFileTool.cs b/SabreTools.DatFiles/DatFileTool.cs index 49a9cd4d..a7675e10 100644 --- a/SabreTools.DatFiles/DatFileTool.cs +++ b/SabreTools.DatFiles/DatFileTool.cs @@ -462,7 +462,7 @@ namespace SabreTools.DatFiles { // For comparison's sake, we want to use CRC as the base bucketing datFile.BucketBy(ItemKey.CRC); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); intDat.BucketBy(ItemKey.CRC); // Then we do a hashwise comparison against the base DAT @@ -511,7 +511,7 @@ namespace SabreTools.DatFiles { // For comparison's sake, we want to use Machine Name as the base bucketing datFile.BucketBy(ItemKey.Machine); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); intDat.BucketBy(ItemKey.Machine); // Then we do a namewise comparison against the base DAT @@ -579,7 +579,7 @@ namespace SabreTools.DatFiles { // For comparison's sake, we want to use CRC as the base bucketing datFile.BucketBy(ItemKey.CRC); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); intDat.BucketBy(ItemKey.CRC); // Then we do a hashwise comparison against the base DAT @@ -621,7 +621,7 @@ namespace SabreTools.DatFiles { // For comparison's sake, we want to use Machine Name as the base bucketing datFile.BucketBy(ItemKey.Machine); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); intDat.BucketBy(ItemKey.Machine); // Then we do a namewise comparison against the base DAT @@ -680,7 +680,7 @@ namespace SabreTools.DatFiles else { intDat.BucketBy(ItemKey.CRC); - intDat.Deduplicate(DedupeType.Full); + intDat.Deduplicate(); } // Then we compare against the base DAT diff --git a/SabreTools.DatFiles/Enums.cs b/SabreTools.DatFiles/Enums.cs index 66a937c1..27403346 100644 --- a/SabreTools.DatFiles/Enums.cs +++ b/SabreTools.DatFiles/Enums.cs @@ -169,29 +169,6 @@ namespace SabreTools.DatFiles ALL = ulong.MaxValue, } - /// - /// Determines the DAT deduplication type - /// - public enum DedupeType - { - /// - /// No deduplication - /// - None = 0, - - /// - /// Deduplicate across all available fields - /// - /// Requires sorting by any hash - Full, - - /// - /// Deduplicate on a per-machine basis - /// - /// Requires sorting by machine - Game, - } - /// /// Determines merging tag handling for DAT output /// diff --git a/SabreTools.DatFiles/ItemDictionary.cs b/SabreTools.DatFiles/ItemDictionary.cs index 25589935..cc783f52 100644 --- a/SabreTools.DatFiles/ItemDictionary.cs +++ b/SabreTools.DatFiles/ItemDictionary.cs @@ -30,11 +30,6 @@ namespace SabreTools.DatFiles /// private ItemKey _bucketedBy = ItemKey.NULL; - /// - /// Determine merging type for all items - /// - private DedupeType _mergedBy = DedupeType.None; - /// /// Internal dictionary for the class /// @@ -381,22 +376,10 @@ namespace SabreTools.DatFiles } /// - /// Perform deduplication based on the deduplication type provided + /// Perform deduplication on the current sorted dictionary /// - /// Dedupe type that should be used - public void Deduplicate(DedupeType dedupeType) + public void Deduplicate() { - // Set the sorted type - _mergedBy = dedupeType; - - // If no deduplication is requested, just return - if (dedupeType == DedupeType.None) - return; - - // Ensure Game deduplication is valid - if (dedupeType == DedupeType.Game && _bucketedBy != ItemKey.Machine) - return; - #if NET452_OR_GREATER || NETCOREAPP Parallel.ForEach(SortedKeys, Core.Globals.ParallelOptions, key => #elif NET40_OR_GREATER @@ -579,9 +562,6 @@ namespace SabreTools.DatFiles // Set the sorted type _bucketedBy = bucketBy; - // Reset the merged type since this might change the merge - _mergedBy = DedupeType.None; - // First do the initial sort of all of the roms inplace List oldkeys = [.. SortedKeys]; diff --git a/SabreTools.DatFiles/ItemDictionaryDB.cs b/SabreTools.DatFiles/ItemDictionaryDB.cs index 605baa42..8d16eddb 100644 --- a/SabreTools.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.DatFiles/ItemDictionaryDB.cs @@ -679,19 +679,10 @@ namespace SabreTools.DatFiles } /// - /// Perform deduplication based on the deduplication type provided + /// Perform deduplication on the current sorted dictionary /// - /// Dedupe type that should be used - public void Deduplicate(DedupeType dedupeType) + public void Deduplicate() { - // If no deduplication is requested, just return - if (dedupeType == DedupeType.None) - return; - - // Ensure Game deduplication is valid - if (dedupeType == DedupeType.Game && _bucketedBy != ItemKey.Machine) - return; - #if NET452_OR_GREATER || NETCOREAPP Parallel.ForEach(SortedKeys, Core.Globals.ParallelOptions, key => #elif NET40_OR_GREATER diff --git a/SabreTools.DatTools/Cleaner.cs b/SabreTools.DatTools/Cleaner.cs index 893c80d7..a72262b7 100644 --- a/SabreTools.DatTools/Cleaner.cs +++ b/SabreTools.DatTools/Cleaner.cs @@ -108,12 +108,12 @@ namespace SabreTools.DatTools if (DedupeRoms == DedupeType.Full) { datFile.BucketBy(ItemKey.CRC); - datFile.Deduplicate(DedupeRoms); + datFile.Deduplicate(); } else if (DedupeRoms == DedupeType.Game) { datFile.BucketBy(ItemKey.Machine); - datFile.Deduplicate(DedupeRoms); + datFile.Deduplicate(); } // Process description to machine name diff --git a/SabreTools.DatTools/Enums.cs b/SabreTools.DatTools/Enums.cs index 76ef83f0..f93a6365 100644 --- a/SabreTools.DatTools/Enums.cs +++ b/SabreTools.DatTools/Enums.cs @@ -1,5 +1,28 @@ namespace SabreTools.DatTools { + /// + /// Determines the DAT deduplication type + /// + public enum DedupeType + { + /// + /// No deduplication + /// + None = 0, + + /// + /// Deduplicate across all available fields + /// + /// Requires sorting by any hash + Full, + + /// + /// Deduplicate on a per-machine basis + /// + /// Requires sorting by machine + Game, + } + /// /// Determines which files should be skipped in DFD /// diff --git a/SabreTools.DatTools/Verification.cs b/SabreTools.DatTools/Verification.cs index 6c4930ba..2f6ee95f 100644 --- a/SabreTools.DatTools/Verification.cs +++ b/SabreTools.DatTools/Verification.cs @@ -211,12 +211,12 @@ namespace SabreTools.DatTools if (hashOnly) { datFile.BucketBy(ItemKey.CRC); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); } else { datFile.BucketBy(ItemKey.Machine); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); } // Then mark items for removal @@ -261,12 +261,12 @@ namespace SabreTools.DatTools if (hashOnly) { datFile.BucketBy(ItemKey.CRC); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); } else { datFile.BucketBy(ItemKey.Machine); - datFile.Deduplicate(DedupeType.Full); + datFile.Deduplicate(); } // Then mark items for removal