diff --git a/SabreTools.Core/Enums.cs b/SabreTools.Core/Enums.cs
index ea849e9c..ecdb35c1 100644
--- a/SabreTools.Core/Enums.cs
+++ b/SabreTools.Core/Enums.cs
@@ -554,6 +554,13 @@ namespace SabreTools.Core
Optional,
Inverted,
+ // Rom (Archive.org)
+ ArchiveDotOrgSource,
+ ArchiveDotOrgFormat,
+ OriginalFilename,
+ Rotation,
+ Summation,
+
// Rom (AttractMode)
AltName,
AltTitle,
diff --git a/SabreTools.Core/Tools/Converters.cs b/SabreTools.Core/Tools/Converters.cs
index 056f2a34..1ac0d132 100644
--- a/SabreTools.Core/Tools/Converters.cs
+++ b/SabreTools.Core/Tools/Converters.cs
@@ -413,6 +413,25 @@ namespace SabreTools.Core.Tools
case "inverted":
return DatItemField.Inverted;
+ // Rom (Archive.org)
+ case "ado-source":
+ case "ado source":
+ return DatItemField.ArchiveDotOrgSource;
+
+ case "ado-format":
+ case "ado format":
+ return DatItemField.ArchiveDotOrgFormat;
+
+ case "original-filename":
+ case "original filename":
+ return DatItemField.OriginalFilename;
+
+ case "rotation":
+ return DatItemField.Rotation;
+
+ case "summation":
+ return DatItemField.Summation;
+
// Rom (AttractMode)
case "altname":
case "alt name":
diff --git a/SabreTools.DatFiles/Setter.cs b/SabreTools.DatFiles/Setter.cs
index 05972f16..d4b61d27 100644
--- a/SabreTools.DatFiles/Setter.cs
+++ b/SabreTools.DatFiles/Setter.cs
@@ -1081,6 +1081,25 @@ namespace SabreTools.DatFiles
#endregion
+ #region Archive.org
+
+ if (DatItemMappings.Keys.Contains(DatItemField.ArchiveDotOrgSource))
+ rom.ArchiveDotOrgSource = DatItemMappings[DatItemField.ArchiveDotOrgSource];
+
+ if (DatItemMappings.Keys.Contains(DatItemField.ArchiveDotOrgFormat))
+ rom.ArchiveDotOrgFormat = DatItemMappings[DatItemField.ArchiveDotOrgFormat];
+
+ if (DatItemMappings.Keys.Contains(DatItemField.OriginalFilename))
+ rom.OriginalFilename = DatItemMappings[DatItemField.OriginalFilename];
+
+ if (DatItemMappings.Keys.Contains(DatItemField.Rotation))
+ rom.Rotation = DatItemMappings[DatItemField.Rotation];
+
+ if (DatItemMappings.Keys.Contains(DatItemField.Summation))
+ rom.Summation = DatItemMappings[DatItemField.Summation];
+
+ #endregion
+
#region AttractMode
if (DatItemMappings.Keys.Contains(DatItemField.AltName))
diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs
index 39cf63be..ed9ece3d 100644
--- a/SabreTools.DatItems/Formats/Rom.cs
+++ b/SabreTools.DatItems/Formats/Rom.cs
@@ -229,7 +229,7 @@ namespace SabreTools.DatItems.Formats
public string Rotation { get; set; }
///
- /// Image rotation
+ /// Summation value?
///
[JsonProperty("summation", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("summation")]
diff --git a/SabreTools.Filtering/DatItemFilter.cs b/SabreTools.Filtering/DatItemFilter.cs
index f416779c..c25889c7 100644
--- a/SabreTools.Filtering/DatItemFilter.cs
+++ b/SabreTools.Filtering/DatItemFilter.cs
@@ -44,6 +44,14 @@ namespace SabreTools.Filtering
public FilterItem Optional { get; private set; } = new FilterItem() { Neutral = null };
public FilterItem Inverted { get; private set; } = new FilterItem();
+ // Rom (Archive.org)
+ public FilterItem ArchiveDotOrgSource { get; private set; } = new FilterItem();
+ public FilterItem ArchiveDotOrgFormat { get; private set; } = new FilterItem();
+ public FilterItem OriginalFilename { get; private set; } = new FilterItem();
+ public FilterItem Rotation { get; private set; } = new FilterItem();
+ public FilterItem Summation { get; private set; } = new FilterItem();
+
+
// Rom (AttractMode)
public FilterItem AltName { get; private set; } = new FilterItem();
public FilterItem AltTitle { get; private set; } = new FilterItem();
@@ -326,6 +334,27 @@ namespace SabreTools.Filtering
SetBooleanFilter(Inverted, value, negate);
break;
+ // Rom (Archive.org)
+ case DatItemField.ArchiveDotOrgSource:
+ SetStringFilter(ArchiveDotOrgSource, value, negate);
+ break;
+
+ case DatItemField.ArchiveDotOrgFormat:
+ SetStringFilter(ArchiveDotOrgFormat, value, negate);
+ break;
+
+ case DatItemField.OriginalFilename:
+ SetStringFilter(OriginalFilename, value, negate);
+ break;
+
+ case DatItemField.Rotation:
+ SetStringFilter(Rotation, value, negate);
+ break;
+
+ case DatItemField.Summation:
+ SetStringFilter(Summation, value, negate);
+ break;
+
// Rom (AttractMode)
case DatItemField.AltName:
SetStringFilter(AltName, value, negate);
@@ -1754,6 +1783,30 @@ namespace SabreTools.Filtering
#endregion
+ #region Archive.org
+
+ // Filter on file source
+ if (!PassStringFilter(ArchiveDotOrgSource, rom.ArchiveDotOrgSource))
+ return false;
+
+ // Filter on file format
+ if (!PassStringFilter(ArchiveDotOrgFormat, rom.ArchiveDotOrgFormat))
+ return false;
+
+ // Filter on original filename
+ if (!PassStringFilter(OriginalFilename, rom.OriginalFilename))
+ return false;
+
+ // Filter on rotation
+ if (!PassStringFilter(Rotation, rom.Rotation))
+ return false;
+
+ // Filter on summation
+ if (!PassStringFilter(Summation, rom.Summation))
+ return false;
+
+ #endregion
+
#region AttractMode
// Filter on alt name
diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs
index 68a12537..760d6b3c 100644
--- a/SabreTools.Filtering/DatItemRemover.cs
+++ b/SabreTools.Filtering/DatItemRemover.cs
@@ -921,6 +921,25 @@ namespace SabreTools.Filtering
#endregion
+ #region Archive.org
+
+ if (DatItemFields.Contains(DatItemField.ArchiveDotOrgSource))
+ rom.ArchiveDotOrgSource = null;
+
+ if (DatItemFields.Contains(DatItemField.ArchiveDotOrgFormat))
+ rom.ArchiveDotOrgFormat = null;
+
+ if (DatItemFields.Contains(DatItemField.OriginalFilename))
+ rom.OriginalFilename = null;
+
+ if (DatItemFields.Contains(DatItemField.Rotation))
+ rom.Rotation = null;
+
+ if (DatItemFields.Contains(DatItemField.Summation))
+ rom.Summation = null;
+
+ #endregion
+
#region AttractMode
if (DatItemFields.Contains(DatItemField.AltName))
diff --git a/SabreTools.Filtering/Replacer.cs b/SabreTools.Filtering/Replacer.cs
index 595f6f3f..8534cf63 100644
--- a/SabreTools.Filtering/Replacer.cs
+++ b/SabreTools.Filtering/Replacer.cs
@@ -910,6 +910,25 @@ namespace SabreTools.Filtering
#endregion
+ #region Archive.org
+
+ if (datItemFields.Contains(DatItemField.ArchiveDotOrgSource))
+ rom.ArchiveDotOrgSource = newItem.ArchiveDotOrgSource;
+
+ if (datItemFields.Contains(DatItemField.ArchiveDotOrgFormat))
+ rom.ArchiveDotOrgFormat = newItem.ArchiveDotOrgFormat;
+
+ if (datItemFields.Contains(DatItemField.OriginalFilename))
+ rom.OriginalFilename = newItem.OriginalFilename;
+
+ if (datItemFields.Contains(DatItemField.Rotation))
+ rom.Rotation = newItem.Rotation;
+
+ if (datItemFields.Contains(DatItemField.Summation))
+ rom.Summation = newItem.Summation;
+
+ #endregion
+
#region AttractMode
if (datItemFields.Contains(DatItemField.AltName))