diff --git a/SabreTools.Core/Enums.cs b/SabreTools.Core/Enums.cs index 587a9e7a..de487bb3 100644 --- a/SabreTools.Core/Enums.cs +++ b/SabreTools.Core/Enums.cs @@ -767,6 +767,7 @@ namespace SabreTools.Core Board, RebuildTo, NoIntroId, + NoIntroCloneOfId, #endregion diff --git a/SabreTools.Core/Tools/Converters.cs b/SabreTools.Core/Tools/Converters.cs index 653489d1..b3551548 100644 --- a/SabreTools.Core/Tools/Converters.cs +++ b/SabreTools.Core/Tools/Converters.cs @@ -1130,6 +1130,13 @@ namespace SabreTools.Core.Tools case "no_intro_id": return MachineField.NoIntroId; + case "cloneofid": + case "nointrocloneofid": + case "nointro_cloneofid": + case "no_intro_cloneofid": + case "no_intro_clone_of_id": + return MachineField.NoIntroCloneOfId; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.DatFiles/Formats/Logiqx.cs b/SabreTools.DatFiles/Formats/Logiqx.cs index 98818de7..c47a9c06 100644 --- a/SabreTools.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.DatFiles/Formats/Logiqx.cs @@ -411,6 +411,7 @@ namespace SabreTools.DatFiles.Formats Board = reader.GetAttribute("board"), RebuildTo = reader.GetAttribute("rebuildto"), NoIntroId = reader.GetAttribute("id"), + NoIntroCloneOfId = reader.GetAttribute("cloneofid"), Runnable = reader.GetAttribute("runnable").AsRunnable(), // Used by older DATs CloneOf = reader.GetAttribute("cloneof"), @@ -960,6 +961,7 @@ namespace SabreTools.DatFiles.Formats xtw.WriteOptionalAttributeString("runnable", datItem.Machine.Runnable.FromRunnable()); xtw.WriteOptionalAttributeString("id", datItem.Machine.NoIntroId); + xtw.WriteOptionalAttributeString("cloneofid", datItem.Machine.NoIntroCloneOfId); if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase)) xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf); diff --git a/SabreTools.DatFiles/Setter.cs b/SabreTools.DatFiles/Setter.cs index 6f3e1e58..d6435a0b 100644 --- a/SabreTools.DatFiles/Setter.cs +++ b/SabreTools.DatFiles/Setter.cs @@ -370,6 +370,9 @@ namespace SabreTools.DatFiles if (MachineMappings.Keys.Contains(MachineField.NoIntroId)) machine.NoIntroId = MachineMappings[MachineField.NoIntroId]; + if (MachineMappings.Keys.Contains(MachineField.NoIntroCloneOfId)) + machine.NoIntroCloneOfId = MachineMappings[MachineField.NoIntroCloneOfId]; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.DatItems/Machine.cs b/SabreTools.DatItems/Machine.cs index ce3c6fd1..58a4b1a9 100644 --- a/SabreTools.DatItems/Machine.cs +++ b/SabreTools.DatItems/Machine.cs @@ -208,6 +208,13 @@ namespace SabreTools.DatItems [XmlElement("nointroid")] public string NoIntroId { get; set; } = null; + /// + /// No-Intro ID for the game + /// + [JsonProperty("nointrocloneofid", DefaultValueHandling = DefaultValueHandling.Ignore)] + [XmlElement("nointrocloneofid")] + public string NoIntroCloneOfId { get; set; } = null; + #endregion // TODO: Should this be a separate object for TruRip? @@ -395,6 +402,7 @@ namespace SabreTools.DatItems Board = this.Board, RebuildTo = this.RebuildTo, NoIntroId = this.NoIntroId, + NoIntroCloneOfId = this.NoIntroCloneOfId, #endregion diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs index aed05529..6d23653b 100644 --- a/SabreTools.Filtering/DatItemRemover.cs +++ b/SabreTools.Filtering/DatItemRemover.cs @@ -215,6 +215,9 @@ namespace SabreTools.Filtering if (MachineFields.Contains(MachineField.NoIntroId)) machine.NoIntroId = null; + if (MachineFields.Contains(MachineField.NoIntroCloneOfId)) + machine.NoIntroCloneOfId = null; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.Filtering/MachineFilter.cs b/SabreTools.Filtering/MachineFilter.cs index 110bcac7..ce362d66 100644 --- a/SabreTools.Filtering/MachineFilter.cs +++ b/SabreTools.Filtering/MachineFilter.cs @@ -57,6 +57,7 @@ namespace SabreTools.Filtering public FilterItem Board { get; private set; } = new FilterItem(); public FilterItem RebuildTo { get; private set; } = new FilterItem(); public FilterItem NoIntroId { get; private set; } = new FilterItem(); + public FilterItem NoIntroCloneOfId { get; private set; } = new FilterItem(); #endregion @@ -260,6 +261,10 @@ namespace SabreTools.Filtering SetStringFilter(NoIntroId, value, negate); break; + case MachineField.NoIntroCloneOfId: + SetStringFilter(NoIntroCloneOfId, value, negate); + break; + #endregion #region Logiqx EmuArc @@ -465,6 +470,11 @@ namespace SabreTools.Filtering if (!PassStringFilter(NoIntroId, machine.NoIntroId)) return false; + // Machine_NoIntroCloneOfId + if (!PassStringFilter(NoIntroCloneOfId, value: machine.NoIntroCloneOfId)) + return false; + + #endregion #region Logiqx EmuArc diff --git a/SabreTools.Filtering/Replacer.cs b/SabreTools.Filtering/Replacer.cs index 7331961b..87792098 100644 --- a/SabreTools.Filtering/Replacer.cs +++ b/SabreTools.Filtering/Replacer.cs @@ -169,6 +169,9 @@ namespace SabreTools.Filtering if (machineFields.Contains(MachineField.NoIntroId)) machine.NoIntroId = repMachine.NoIntroId; + if (machineFields.Contains(MachineField.NoIntroCloneOfId)) + machine.NoIntroCloneOfId = repMachine.NoIntroCloneOfId; + #endregion #region Logiqx EmuArc