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