diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs
index 6037107a..361c68ec 100644
--- a/SabreTools.Library/DatFiles/DatFile.cs
+++ b/SabreTools.Library/DatFiles/DatFile.cs
@@ -709,6 +709,12 @@ namespace SabreTools.Library.DatFiles
// Perform item-level cleaning
CleanDatItems(cleaner);
+ // Bucket and dedupe according to the flag
+ if (cleaner?.DedupeRoms == DedupeType.Full)
+ Items.BucketBy(Field.DatItem_CRC, cleaner.DedupeRoms);
+ else if (cleaner?.DedupeRoms == DedupeType.Game)
+ Items.BucketBy(Field.Machine_Name, cleaner.DedupeRoms);
+
// Process description to machine name
if (cleaner?.DescriptionAsName == true)
MachineDescriptionToName();
@@ -3437,14 +3443,6 @@ namespace SabreTools.Library.DatFiles
consoleOutput.ReplaceStatistics(Header.FileName, Items.Keys.Count(), Items);
}
- // Bucket and dedupe according to the flag
- // TODO: Can this be made into a cleaning flag instead of a header one?
- // TODO: Should this be run as a cleaning step?
- if (Header.DedupeRoms == DedupeType.Full)
- Items.BucketBy(Field.DatItem_CRC, Header.DedupeRoms, norename: norename);
- else if (Header.DedupeRoms == DedupeType.Game)
- Items.BucketBy(Field.Machine_Name, Header.DedupeRoms, norename: norename);
-
// Bucket roms by game name, if not already
Items.BucketBy(Field.Machine_Name, DedupeType.None, norename: norename);
diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs
index d93f4a29..df6389fd 100644
--- a/SabreTools.Library/DatFiles/DatHeader.cs
+++ b/SabreTools.Library/DatFiles/DatHeader.cs
@@ -265,22 +265,6 @@ namespace SabreTools.Library.DatFiles
#endregion
- #region Filtering Fields
-
- ///
- /// Deduplicate items using the given method
- ///
- [JsonIgnore]
- public DedupeType DedupeRoms { get; set; }
-
- ///
- /// Strip hash types from items
- ///
- [JsonIgnore]
- public Hash StripHash { get; private set; }
-
- #endregion
-
#region Write pre-processing
///
@@ -501,8 +485,6 @@ namespace SabreTools.Library.DatFiles
ForceNodump = this.ForceNodump,
ForcePacking = this.ForcePacking,
DatFormat = this.DatFormat,
- DedupeRoms = this.DedupeRoms,
- StripHash = this.StripHash,
UseRomName = this.UseRomName,
Prefix = this.Prefix,
@@ -542,8 +524,6 @@ namespace SabreTools.Library.DatFiles
ForceNodump = this.ForceNodump,
ForcePacking = this.ForcePacking,
DatFormat = this.DatFormat,
- DedupeRoms = this.DedupeRoms,
- StripHash = this.StripHash,
};
}
@@ -555,8 +535,6 @@ namespace SabreTools.Library.DatFiles
return new DatHeader()
{
DatFormat = this.DatFormat,
- DedupeRoms = this.DedupeRoms,
- StripHash = this.StripHash,
UseRomName = this.UseRomName,
Prefix = this.Prefix,
@@ -631,9 +609,6 @@ namespace SabreTools.Library.DatFiles
if (datHeader.DatFormat != 0x00)
DatFormat = datHeader.DatFormat;
- DedupeRoms = datHeader.DedupeRoms;
- //StripHash = datHeader.StripHash;
-
if (!string.IsNullOrWhiteSpace(datHeader.Prefix))
Prefix = datHeader.Prefix;
diff --git a/SabreTools.Library/Filtering/Cleaner.cs b/SabreTools.Library/Filtering/Cleaner.cs
index 1ff9f390..b2884712 100644
--- a/SabreTools.Library/Filtering/Cleaner.cs
+++ b/SabreTools.Library/Filtering/Cleaner.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
+using SabreTools.Library.DatFiles;
using SabreTools.Library.DatItems;
namespace SabreTools.Library.Filtering
@@ -14,6 +15,12 @@ namespace SabreTools.Library.Filtering
///
public bool Clean { get; set; }
+ ///
+ /// Deduplicate items using the given method
+ ///
+ public DedupeType DedupeRoms { get; set; }
+
+
///
/// Set Machine Description from Machine Name
///
diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs
index 8843dabc..950ca871 100644
--- a/SabreTools/Features/BaseFeature.cs
+++ b/SabreTools/Features/BaseFeature.cs
@@ -2699,6 +2699,7 @@ Some special strings that can be used:
Cleaner cleaner = new Cleaner()
{
Clean = GetBoolean(features, CleanValue),
+ DedupeRoms = GetDedupeType(features),
DescriptionAsName = GetBoolean(features, DescriptionAsNameValue),
KeepEmptyGames = GetBoolean(features, KeepEmptyGamesValue),
OneGamePerRegion = GetBoolean(features, OneGamePerRegionValue),
@@ -2732,7 +2733,6 @@ Some special strings that can be used:
Category = GetString(features, CategoryStringValue),
Comment = GetString(features, CommentStringValue),
Date = GetString(features, DateStringValue),
- DedupeRoms = GetDedupeType(features),
Description = GetString(features, DescriptionStringValue),
Email = GetString(features, EmailStringValue),
FileName = GetString(features, FilenameStringValue),
diff --git a/SabreTools/Features/Update.cs b/SabreTools/Features/Update.cs
index 9162691f..39edb7ec 100644
--- a/SabreTools/Features/Update.cs
+++ b/SabreTools/Features/Update.cs
@@ -125,14 +125,14 @@ namespace SabreTools.Features
{
Header.Name = (updateMode != 0 ? "DiffDAT" : "MergeDAT")
+ (Header.Type == "SuperDAT" ? "-SuperDAT" : string.Empty)
- + (Header.DedupeRoms != DedupeType.None ? "-deduped" : string.Empty);
+ + (Cleaner.DedupeRoms != DedupeType.None ? "-deduped" : string.Empty);
}
if (string.IsNullOrWhiteSpace(Header.Description))
{
Header.Description = (updateMode != 0 ? "DiffDAT" : "MergeDAT")
+ (Header.Type == "SuperDAT" ? "-SuperDAT" : string.Empty)
- + (Header.DedupeRoms != DedupeType.None ? " - deduped" : string.Empty);
+ + (Cleaner.DedupeRoms != DedupeType.None ? " - deduped" : string.Empty);
if (!GetBoolean(features, NoAutomaticDateValue))
Header.Description += $" ({Header.Date})";