diff --git a/SabreTools.Core/Enums.cs b/SabreTools.Core/Enums.cs index 6b5ce01c..6d619839 100644 --- a/SabreTools.Core/Enums.cs +++ b/SabreTools.Core/Enums.cs @@ -763,6 +763,7 @@ namespace SabreTools.Core Board, RebuildTo, + NoIntroId, #endregion diff --git a/SabreTools.Core/Tools/Converters.cs b/SabreTools.Core/Tools/Converters.cs index 57f866d0..3d849507 100644 --- a/SabreTools.Core/Tools/Converters.cs +++ b/SabreTools.Core/Tools/Converters.cs @@ -1120,6 +1120,12 @@ namespace SabreTools.Core.Tools case "rebuild_to": return MachineField.RebuildTo; + case "id": + case "nointroid": + case "nointro_id": + case "no_intro_id": + return MachineField.NoIntroId; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.DatFiles/Formats/Logiqx.cs b/SabreTools.DatFiles/Formats/Logiqx.cs index 62c61837..47b51cd7 100644 --- a/SabreTools.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.DatFiles/Formats/Logiqx.cs @@ -410,6 +410,7 @@ namespace SabreTools.DatFiles.Formats SourceFile = reader.GetAttribute("sourcefile"), Board = reader.GetAttribute("board"), RebuildTo = reader.GetAttribute("rebuildto"), + NoIntroId = reader.GetAttribute("id"), Runnable = reader.GetAttribute("runnable").AsRunnable(), // Used by older DATs CloneOf = reader.GetAttribute("cloneof"), @@ -950,6 +951,7 @@ namespace SabreTools.DatFiles.Formats xtw.WriteAttributeString("ismechanical", "yes"); xtw.WriteOptionalAttributeString("runnable", datItem.Machine.Runnable.FromRunnable()); + xtw.WriteOptionalAttributeString("id", datItem.Machine.NoIntroId); 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 80244d7a..a54e51dd 100644 --- a/SabreTools.DatFiles/Setter.cs +++ b/SabreTools.DatFiles/Setter.cs @@ -34,7 +34,7 @@ namespace SabreTools.DatFiles public Dictionary DatItemMappings { get; set; } #endregion - + #region Logging /// @@ -367,6 +367,9 @@ namespace SabreTools.DatFiles if (MachineMappings.Keys.Contains(MachineField.RebuildTo)) machine.RebuildTo = MachineMappings[MachineField.RebuildTo]; + if (MachineMappings.Keys.Contains(MachineField.NoIntroId)) + machine.NoIntroId = MachineMappings[MachineField.NoIntroId]; + #endregion #region Logiqx EmuArc @@ -420,7 +423,7 @@ namespace SabreTools.DatFiles #endregion } - + /// /// Set fields with given values /// @@ -708,7 +711,7 @@ namespace SabreTools.DatFiles private void SetFields(Disk disk) { #region Common - + if (DatItemMappings.Keys.Contains(DatItemField.MD5)) disk.MD5 = DatItemMappings[DatItemField.MD5]; diff --git a/SabreTools.DatItems/Machine.cs b/SabreTools.DatItems/Machine.cs index 7a7880a3..ce3c6fd1 100644 --- a/SabreTools.DatItems/Machine.cs +++ b/SabreTools.DatItems/Machine.cs @@ -201,6 +201,13 @@ namespace SabreTools.DatItems [XmlElement("rebuildto")] public string RebuildTo { get; set; } = null; + /// + /// No-Intro ID for the game + /// + [JsonProperty("nointroid", DefaultValueHandling = DefaultValueHandling.Ignore)] + [XmlElement("nointroid")] + public string NoIntroId { get; set; } = null; + #endregion // TODO: Should this be a separate object for TruRip? @@ -387,6 +394,7 @@ namespace SabreTools.DatItems Board = this.Board, RebuildTo = this.RebuildTo, + NoIntroId = this.NoIntroId, #endregion diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs index 0da3f014..fbeed346 100644 --- a/SabreTools.Filtering/DatItemRemover.cs +++ b/SabreTools.Filtering/DatItemRemover.cs @@ -212,6 +212,9 @@ namespace SabreTools.Filtering if (MachineFields.Contains(MachineField.RebuildTo)) machine.RebuildTo = null; + if (MachineFields.Contains(MachineField.NoIntroId)) + machine.NoIntroId = null; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.Filtering/MachineFilter.cs b/SabreTools.Filtering/MachineFilter.cs index ab124188..110bcac7 100644 --- a/SabreTools.Filtering/MachineFilter.cs +++ b/SabreTools.Filtering/MachineFilter.cs @@ -56,6 +56,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(); #endregion @@ -255,6 +256,10 @@ namespace SabreTools.Filtering SetStringFilter(RebuildTo, value, negate); break; + case MachineField.NoIntroId: + SetStringFilter(NoIntroId, value, negate); + break; + #endregion #region Logiqx EmuArc @@ -456,6 +461,10 @@ namespace SabreTools.Filtering if (!PassStringFilter(RebuildTo, machine.RebuildTo)) return false; + // Machine_NoIntroId + if (!PassStringFilter(NoIntroId, machine.NoIntroId)) + return false; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.Filtering/Replacer.cs b/SabreTools.Filtering/Replacer.cs index 14f49812..c7b41ae2 100644 --- a/SabreTools.Filtering/Replacer.cs +++ b/SabreTools.Filtering/Replacer.cs @@ -166,6 +166,9 @@ namespace SabreTools.Filtering if (machineFields.Contains(MachineField.RebuildTo)) machine.RebuildTo = repMachine.RebuildTo; + if (machineFields.Contains(MachineField.NoIntroId)) + machine.NoIntroId = repMachine.NoIntroId; + #endregion #region Logiqx EmuArc diff --git a/SabreTools.Test/TestData/test-logiqx.xml b/SabreTools.Test/TestData/test-logiqx.xml index e438e3ff..4bb21012 100644 --- a/SabreTools.Test/TestData/test-logiqx.xml +++ b/SabreTools.Test/TestData/test-logiqx.xml @@ -20,7 +20,7 @@ - + Not a real game, sorry Game! (Version 1) 1980