diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs index fb0f3824..4c8ad353 100644 --- a/SabreTools.Library/DatFiles/ClrMamePro.cs +++ b/SabreTools.Library/DatFiles/ClrMamePro.cs @@ -271,6 +271,9 @@ namespace SabreTools.Library.DatFiles case "biosset": itemType = ItemType.BiosSet; break; + case "chip": + itemType = ItemType.Chip; + break; case "disk": itemType = ItemType.Disk; break; @@ -387,24 +390,39 @@ namespace SabreTools.Library.DatFiles break; case "default": if (item.ItemType == ItemType.BiosSet) - ((BiosSet)item).Default = attrVal.ToLowerInvariant().AsYesNo(); + ((BiosSet)item).Default = attrVal.AsYesNo(); else if (item.ItemType == ItemType.Release) - ((Release)item).Default = attrVal.ToLowerInvariant().AsYesNo(); + ((Release)item).Default = attrVal.AsYesNo(); break; case "description": if (item.ItemType == ItemType.BiosSet) - ((BiosSet)item).Description = attrVal.ToLowerInvariant(); + ((BiosSet)item).Description = attrVal; break; case "region": if (item.ItemType == ItemType.Release) - ((Release)item).Region = attrVal.ToLowerInvariant(); + ((Release)item).Region = attrVal; break; case "language": if (item.ItemType == ItemType.Release) - ((Release)item).Language = attrVal.ToLowerInvariant(); + ((Release)item).Language = attrVal; + + break; + case "tag": + if (item.ItemType == ItemType.Chip) + ((Chip)item).Tag = attrVal; + + break; + case "type": + if (item.ItemType == ItemType.Chip) + ((Chip)item).ChipType = attrVal; + + break; + case "clock": + if (item.ItemType == ItemType.Chip) + ((Chip)item).Clock = attrVal; break; } @@ -674,6 +692,16 @@ namespace SabreTools.Library.DatFiles cmpw.WriteEndElement(); break; + case ItemType.Chip: + var chip = datItem as Chip; + cmpw.WriteStartElement("chip"); + cmpw.WriteRequiredAttributeString("name", chip.Name); + cmpw.WriteOptionalAttributeString("tag", chip.Tag); + cmpw.WriteOptionalAttributeString("type", chip.ChipType); + cmpw.WriteOptionalAttributeString("clock", chip.Clock); + cmpw.WriteEndElement(); + break; + case ItemType.Disk: var disk = datItem as Disk; cmpw.WriteStartElement("disk"); diff --git a/SabreTools.Library/DatFiles/ItemDictionary.cs b/SabreTools.Library/DatFiles/ItemDictionary.cs index 4c2b7dcd..d4a90d92 100644 --- a/SabreTools.Library/DatFiles/ItemDictionary.cs +++ b/SabreTools.Library/DatFiles/ItemDictionary.cs @@ -88,6 +88,12 @@ namespace SabreTools.Library.DatFiles [JsonIgnore] public long BiosSetCount { get; private set; } = 0; + /// + /// Number of Chip items + /// + [JsonIgnore] + public long ChipCount { get; private set; } = 0; + /// /// Number of Disk items /// @@ -388,6 +394,9 @@ namespace SabreTools.Library.DatFiles case ItemType.BiosSet: BiosSetCount += 1; break; + case ItemType.Chip: + ChipCount += 1; + break; case ItemType.Disk: DiskCount += 1; if (((Disk)item).ItemStatus != ItemStatus.Nodump) @@ -508,6 +517,9 @@ namespace SabreTools.Library.DatFiles case ItemType.BiosSet: BiosSetCount -= 1; break; + case ItemType.Chip: + ChipCount -= 1; + break; case ItemType.Disk: DiskCount -= 1; if (((Disk)item).ItemStatus != ItemStatus.Nodump) diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs index 4f4a14d8..014f4ad5 100644 --- a/SabreTools.Library/DatFiles/Json.cs +++ b/SabreTools.Library/DatFiles/Json.cs @@ -232,6 +232,9 @@ namespace SabreTools.Library.DatFiles case ItemType.Blank: datItem = datItemObj.ToObject(); break; + case ItemType.Chip: + datItem = datItemObj.ToObject(); + break; case ItemType.Disk: datItem = datItemObj.ToObject(); break; diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs index 3f8aa897..9302fc8a 100644 --- a/SabreTools.Library/DatFiles/Listxml.cs +++ b/SabreTools.Library/DatFiles/Listxml.cs @@ -283,17 +283,19 @@ namespace SabreTools.Library.DatFiles break; case "chip": - var chip = new ListXmlChip(); - chip.Name = reader.GetAttribute("name"); - chip.Tag = reader.GetAttribute("tag"); - chip.Type = reader.GetAttribute("type"); - chip.Clock = reader.GetAttribute("clock"); + datItems.Add(new Chip + { + Name = reader.GetAttribute("name"), + Tag = reader.GetAttribute("tag"), + ChipType = reader.GetAttribute("type"), + Clock = reader.GetAttribute("clock"), - // Ensure the list exists - if (machine.Chips == null) - machine.Chips = new List(); - - machine.Chips.Add(chip); + Source = new Source + { + Index = indexId, + Name = filename, + }, + }); reader.Read(); break; @@ -1122,21 +1124,6 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); } } - if (datItem.Machine.Chips != null) - { - foreach (var chip in datItem.Machine.Chips) - { - xtw.WriteStartElement("chip"); - - xtw.WriteOptionalAttributeString("name", chip.Name); - xtw.WriteOptionalAttributeString("tag", chip.Tag); - xtw.WriteOptionalAttributeString("type", chip.Type); - xtw.WriteOptionalAttributeString("clock", chip.Clock); - - // End chip - xtw.WriteEndElement(); - } - } if (datItem.Machine.Displays != null) { foreach (var display in datItem.Machine.Displays) @@ -1558,6 +1545,16 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); break; + case ItemType.Chip: + var chip = datItem as Chip; + xtw.WriteStartElement("chip"); + xtw.WriteRequiredAttributeString("name", chip.Name); + xtw.WriteOptionalAttributeString("tag", chip.Tag); + xtw.WriteOptionalAttributeString("type", chip.ChipType); + xtw.WriteOptionalAttributeString("clock", chip.Clock); + xtw.WriteEndElement(); + break; + case ItemType.Disk: var disk = datItem as Disk; xtw.WriteStartElement("disk"); diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs index 6881355e..8000f399 100644 --- a/SabreTools.Library/DatFiles/Logiqx.cs +++ b/SabreTools.Library/DatFiles/Logiqx.cs @@ -528,6 +528,31 @@ namespace SabreTools.Library.DatFiles reader.Read(); break; + case "chip": + containsItems = true; + + DatItem chiprom = new Chip + { + Name = reader.GetAttribute("name"), + Tag = reader.GetAttribute("tag"), + ChipType = reader.GetAttribute("type"), + Clock = reader.GetAttribute("clock"), + + Source = new Source + { + Index = indexId, + Name = filename, + }, + }; + + chiprom.CopyMachineInformation(machine); + + // Now process and add the rom + key = ParseAddHelper(chiprom); + + reader.Read(); + break; + default: reader.Read(); break; @@ -968,6 +993,16 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); break; + case ItemType.Chip: + var chip = datItem as Chip; + xtw.WriteStartElement("chip"); + xtw.WriteRequiredAttributeString("name", chip.Name); + xtw.WriteOptionalAttributeString("tag", chip.Tag); + xtw.WriteOptionalAttributeString("type", chip.ChipType); + xtw.WriteOptionalAttributeString("clock", chip.Clock); + xtw.WriteEndElement(); + break; + case ItemType.Disk: var disk = datItem as Disk; xtw.WriteStartElement("disk"); diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs index f89acb4f..e284fccc 100644 --- a/SabreTools.Library/DatFiles/SabreDat.cs +++ b/SabreTools.Library/DatFiles/SabreDat.cs @@ -383,6 +383,22 @@ namespace SabreTools.Library.DatFiles }; break; + case "chip": + datItem = new Chip + { + Name = reader.GetAttribute("name"), + Tag = reader.GetAttribute("tag"), + ChipType = reader.GetAttribute("chiptype"), + Clock = reader.GetAttribute("clock"), + + Source = new Source + { + Index = indexId, + Name = filename, + }, + }; + break; + case "disk": datItem = new Disk { @@ -855,6 +871,17 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); break; + case ItemType.Chip: + var chip = datItem as Chip; + xtw.WriteStartElement("file"); + xtw.WriteAttributeString("type", "chip"); + xtw.WriteRequiredAttributeString("name", chip.Name); + xtw.WriteOptionalAttributeString("tag", chip.Tag); + xtw.WriteOptionalAttributeString("chiptype", chip.ChipType); + xtw.WriteOptionalAttributeString("clock", chip.Clock); + xtw.WriteEndElement(); + break; + case ItemType.Disk: var disk = datItem as Disk; xtw.WriteStartElement("file"); diff --git a/SabreTools.Library/DatItems/Auxiliary.cs b/SabreTools.Library/DatItems/Auxiliary.cs index 70fdca38..fc327023 100644 --- a/SabreTools.Library/DatItems/Auxiliary.cs +++ b/SabreTools.Library/DatItems/Auxiliary.cs @@ -37,26 +37,6 @@ namespace SabreTools.Library.DatItems public string Mask { get; set; } } - /// - /// Represents one ListXML chip - /// - /// TODO: Promote this to the same level as Sample - [JsonObject("chip")] - public class ListXmlChip - { - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("tag")] - public string Tag { get; set; } - - [JsonProperty("type")] - public string Type { get; set; } // TODO: (cpu|audio) - - [JsonProperty("clock")] - public string Clock { get; set; } - } - /// /// Represents one ListXML condition /// diff --git a/SabreTools.Library/DatItems/Chip.cs b/SabreTools.Library/DatItems/Chip.cs new file mode 100644 index 00000000..c2cced83 --- /dev/null +++ b/SabreTools.Library/DatItems/Chip.cs @@ -0,0 +1,223 @@ +using System.Collections.Generic; +using System.Linq; + +using SabreTools.Library.Filtering; +using SabreTools.Library.Tools; +using Newtonsoft.Json; + +namespace SabreTools.Library.DatItems +{ + /// + /// Represents which Chip(s) is associated with a set + /// + [JsonObject("chip")] + public class Chip : DatItem + { + #region Fields + + /// + /// Internal tag + /// + [JsonProperty("tag")] + public string Tag { get; set; } + + /// + /// Type of the chip + /// + [JsonProperty("chiptype")] + public string ChipType { get; set; } // TODO: (cpu|audio) + + /// + /// Clock speed + /// + [JsonProperty("clock")] + public string Clock { get; set; } + + #endregion + + #region Accessors + + /// + /// Set fields with given values + /// + /// Mappings dictionary + public override void SetFields(Dictionary mappings) + { + // Set base fields + base.SetFields(mappings); + + // Handle Chip-specific fields + if (mappings.Keys.Contains(Field.DatItem_Tag)) + Tag = mappings[Field.DatItem_Tag]; + + if (mappings.Keys.Contains(Field.DatItem_ChipType)) + ChipType = mappings[Field.DatItem_ChipType]; + + if (mappings.Keys.Contains(Field.DatItem_Clock)) + Clock = mappings[Field.DatItem_Clock]; + } + + #endregion + + #region Constructors + + /// + /// Create a default, empty Chip object + /// + public Chip() + { + Name = string.Empty; + ItemType = ItemType.Chip; + } + + #endregion + + #region Cloning Methods + + public override object Clone() + { + return new Chip() + { + Name = this.Name, + ItemType = this.ItemType, + DupeType = this.DupeType, + + AltName = this.AltName, + AltTitle = this.AltTitle, + + Original = this.Original, + OpenMSXSubType = this.OpenMSXSubType, + OpenMSXType = this.OpenMSXType, + Remark = this.Remark, + Boot = this.Boot, + + Part = this.Part, + Features = this.Features, + AreaName = this.AreaName, + AreaSize = this.AreaSize, + AreaWidth = this.AreaWidth, + AreaEndianness = this.AreaEndianness, + Value = this.Value, + LoadFlag = this.LoadFlag, + + Machine = this.Machine.Clone() as Machine, + Source = this.Source.Clone() as Source, + Remove = this.Remove, + + Tag = this.Tag, + ChipType = this.ChipType, + Clock = this.Clock, + }; + } + + #endregion + + #region Comparision Methods + + public override bool Equals(DatItem other) + { + // If we don't have a chip, return false + if (ItemType != other.ItemType) + return false; + + // Otherwise, treat it as a chip + Chip newOther = other as Chip; + + // If the chip information matches + return (Name == newOther.Name + && Tag == newOther.Tag + && ChipType == newOther.ChipType + && Clock == newOther.Clock); + } + + #endregion + + #region Filtering + + /// + /// Check to see if a DatItem passes the filter + /// + /// Filter to check against + /// True if the item passed the filter, false otherwise + public override bool PassesFilter(Filter filter) + { + // Check common fields first + if (!base.PassesFilter(filter)) + return false; + + // DatItem_Tag + if (filter.DatItem_Tag.MatchesPositiveSet(Tag) == false) + return false; + if (filter.DatItem_Tag.MatchesNegativeSet(Tag) == true) + return false; + + // DatItem_ChipType + if (filter.DatItem_ChipType.MatchesPositiveSet(ChipType) == false) + return false; + if (filter.DatItem_ChipType.MatchesNegativeSet(ChipType) == true) + return false; + + // DatItem_Clock + if (filter.DatItem_Clock.MatchesPositiveSet(Clock) == false) + return false; + if (filter.DatItem_Clock.MatchesNegativeSet(Clock) == true) + return false; + + return true; + } + + /// + /// Remove fields from the DatItem + /// + /// List of Fields to remove + public override void RemoveFields(List fields) + { + // Remove common fields first + base.RemoveFields(fields); + + // Remove the fields + if (fields.Contains(Field.DatItem_Tag)) + Tag = null; + + if (fields.Contains(Field.DatItem_ChipType)) + ChipType = null; + + if (fields.Contains(Field.DatItem_Clock)) + Clock = null; + } + + #endregion + + #region Sorting and Merging + + /// + /// Replace fields from another item + /// + /// DatItem to pull new information from + /// List of Fields representing what should be updated + public override void ReplaceFields(DatItem item, List fields) + { + // Replace common fields first + base.ReplaceFields(item, fields); + + // If we don't have a Chip to replace from, ignore specific fields + if (item.ItemType != ItemType.Chip) + return; + + // Cast for easier access + Chip newItem = item as Chip; + + // Replace the fields + if (fields.Contains(Field.DatItem_Tag)) + Tag = newItem.Tag; + + if (fields.Contains(Field.DatItem_ChipType)) + ChipType = newItem.ChipType; + + if (fields.Contains(Field.DatItem_Clock)) + Clock = newItem.Clock; + } + + #endregion + } +} diff --git a/SabreTools.Library/DatItems/DatItem.cs b/SabreTools.Library/DatItems/DatItem.cs index 7b0cae03..cfef11ce 100644 --- a/SabreTools.Library/DatItems/DatItem.cs +++ b/SabreTools.Library/DatItems/DatItem.cs @@ -185,27 +185,44 @@ namespace SabreTools.Library.DatItems /// /// Fields unique to a DatItem /// - /// TODO: Ensure list public static readonly List DatItemFields = new List() { - // Common - Field.DatItem_Name, + #region Common + + Field.DatItem_Name, + Field.DatItem_Type, + + #endregion + + #region AttractMode - // AttractMode Field.DatItem_AltName, Field.DatItem_AltTitle, - // OpenMSX + #endregion + + #region OpenMSX + Field.DatItem_Original, Field.DatItem_OpenMSXSubType, Field.DatItem_OpenMSXType, Field.DatItem_Remark, Field.DatItem_Boot, - //SoftwareList + #endregion + + #region SoftwareList + + // Part + Field.DatItem_Part, Field.DatItem_Part_Name, Field.DatItem_Part_Interface, + + // Feature Field.DatItem_Features, + Field.DatItem_Feature_Name, + Field.DatItem_Feature_Value, + Field.DatItem_AreaName, Field.DatItem_AreaSize, Field.DatItem_AreaWidth, @@ -213,9 +230,18 @@ namespace SabreTools.Library.DatItems Field.DatItem_Value, Field.DatItem_LoadFlag, + #endregion + + #region Item-Specific + // BiosSet - Field.DatItem_Description, Field.DatItem_Default, + Field.DatItem_Description, + + // Chip + Field.DatItem_Tag, + Field.DatItem_ChipType, + Field.DatItem_Clock, // Disk Field.DatItem_MD5, @@ -230,8 +256,8 @@ namespace SabreTools.Library.DatItems Field.DatItem_Region, Field.DatItem_Index, Field.DatItem_Writable, - Field.DatItem_Optional, Field.DatItem_Status, + Field.DatItem_Optional, // Release Field.DatItem_Language, @@ -243,6 +269,8 @@ namespace SabreTools.Library.DatItems Field.DatItem_CRC, Field.DatItem_Offset, Field.DatItem_Inverted, + + #endregion }; /// @@ -414,6 +442,9 @@ namespace SabreTools.Library.DatItems case ItemType.Blank: return new Blank(); + case ItemType.Chip: + return new Chip(); + case ItemType.Disk: return new Disk(); diff --git a/SabreTools.Library/DatItems/Enums.cs b/SabreTools.Library/DatItems/Enums.cs index 6608bfdd..a77207d8 100644 --- a/SabreTools.Library/DatItems/Enums.cs +++ b/SabreTools.Library/DatItems/Enums.cs @@ -133,13 +133,6 @@ namespace SabreTools.Library.DatItems Machine_DeviceReferences, // TODO: Double-check DeviceReferences usage Machine_DeviceReference_Name, - // Chips - Machine_Chips, // TODO: Implement Chips usage - Machine_Chip_Name, - Machine_Chip_Tag, - Machine_Chip_Type, - Machine_Chip_Clock, - // Displays Machine_Displays, // TODO: Implement Displays usage Machine_Display_Tag, @@ -398,6 +391,11 @@ namespace SabreTools.Library.DatItems DatItem_Default, DatItem_Description, + // Chip + DatItem_Tag, + DatItem_ChipType, + DatItem_Clock, + // Disk DatItem_MD5, #if NET_FRAMEWORK @@ -459,6 +457,7 @@ namespace SabreTools.Library.DatItems Release = 3, BiosSet = 4, Archive = 5, + Chip = 6, Blank = 99, // This is not a real type, only used internally } diff --git a/SabreTools.Library/DatItems/Machine.cs b/SabreTools.Library/DatItems/Machine.cs index 1f69fa76..92ae5fbc 100644 --- a/SabreTools.Library/DatItems/Machine.cs +++ b/SabreTools.Library/DatItems/Machine.cs @@ -158,12 +158,6 @@ namespace SabreTools.Library.DatItems [JsonProperty("devicereferences", DefaultValueHandling = DefaultValueHandling.Ignore)] public List DeviceReferences { get; set; } = null; - /// - /// List of associated chips - /// - [JsonProperty("chips", DefaultValueHandling = DefaultValueHandling.Ignore)] - public List Chips { get; set; } = null; - /// /// List of associated displays /// @@ -603,7 +597,6 @@ namespace SabreTools.Library.DatItems SourceFile = this.SourceFile, Runnable = this.Runnable, DeviceReferences = this.DeviceReferences, - Chips = this.Chips, Displays = this.Displays, Sounds = this.Sounds, Conditions = this.Conditions, @@ -842,94 +835,6 @@ namespace SabreTools.Library.DatItems #endregion - #region Chips - - // Machine_DeviceReferences - if (filter.Machine_Chips.MatchesNeutral(null, Chips?.Any() ?? null) == false) - return false; - - // Machine_Chip_Name - if (Chips?.Any() == true) - { - bool anyPositive = false; - bool anyNegative = false; - - foreach (var chip in Chips) - { - if (filter.Machine_Chip_Name.MatchesPositiveSet(chip?.Name) != false) - anyPositive = true; - if (filter.Machine_Chip_Name.MatchesNegativeSet(chip?.Name) == true) - anyNegative = true; - } - - if (!anyPositive) - return false; - if (anyNegative) - return false; - } - - // Machine_Chip_Tag - if (Chips?.Any() == true) - { - bool anyPositive = false; - bool anyNegative = false; - - foreach (var chip in Chips) - { - if (filter.Machine_Chip_Tag.MatchesPositiveSet(chip?.Tag) != false) - anyPositive = true; - if (filter.Machine_Chip_Tag.MatchesNegativeSet(chip?.Tag) == true) - anyNegative = true; - } - - if (!anyPositive) - return false; - if (anyNegative) - return false; - } - - // Machine_Chip_Type - if (Chips?.Any() == true) - { - bool anyPositive = false; - bool anyNegative = false; - - foreach (var chip in Chips) - { - if (filter.Machine_Chip_Type.MatchesPositiveSet(chip?.Type) != false) - anyPositive = true; - if (filter.Machine_Chip_Type.MatchesNegativeSet(chip?.Type) == true) - anyNegative = true; - } - - if (!anyPositive) - return false; - if (anyNegative) - return false; - } - - // Machine_Chip_Clock - if (Chips?.Any() == true) - { - bool anyPositive = false; - bool anyNegative = false; - - foreach (var chip in Chips) - { - if (filter.Machine_Chip_Clock.MatchesPositiveSet(chip?.Clock) != false) - anyPositive = true; - if (filter.Machine_Chip_Clock.MatchesNegativeSet(chip?.Clock) == true) - anyNegative = true; - } - - if (!anyPositive) - return false; - if (anyNegative) - return false; - } - - #endregion - #region Displays // Machine_Displays diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs index 7aab4f23..9f1b59ad 100644 --- a/SabreTools.Library/Filtering/Filter.cs +++ b/SabreTools.Library/Filtering/Filter.cs @@ -56,13 +56,6 @@ namespace SabreTools.Library.Filtering public FilterItem Machine_DeviceReferences { get; private set; } = new FilterItem() { Neutral = null }; public FilterItem Machine_DeviceReference_Name { get; private set; } = new FilterItem(); - // Chips - public FilterItem Machine_Chips { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Machine_Chip_Name { get; private set; } = new FilterItem(); - public FilterItem Machine_Chip_Tag { get; private set; } = new FilterItem(); - public FilterItem Machine_Chip_Type { get; private set; } = new FilterItem(); - public FilterItem Machine_Chip_Clock { get; private set; } = new FilterItem(); - // Displays public FilterItem Machine_Displays { get; private set; } = new FilterItem() { Neutral = null }; public FilterItem Machine_Display_Tag { get; private set; } = new FilterItem(); @@ -321,6 +314,11 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_Default { get; private set; } = new FilterItem() { Neutral = null }; public FilterItem DatItem_Description { get; private set; } = new FilterItem(); + // Chip + public FilterItem DatItem_Tag { get; private set; } = new FilterItem(); + public FilterItem DatItem_ChipType { get; private set; } = new FilterItem(); + public FilterItem DatItem_Clock { get; private set; } = new FilterItem(); + // Disk public FilterItem DatItem_MD5 { get; private set; } = new FilterItem(); #if NET_FRAMEWORK @@ -623,42 +621,6 @@ namespace SabreTools.Library.Filtering Machine_DeviceReference_Name.PositiveSet.Add(value); break; - // Chips - case Field.Machine_Chips: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - Machine_Chips.Neutral = false; - else - Machine_Chips.Neutral = true; - break; - - case Field.Machine_Chip_Name: - if (negate) - Machine_Chip_Name.NegativeSet.Add(value); - else - Machine_Chip_Name.PositiveSet.Add(value); - break; - - case Field.Machine_Chip_Tag: - if (negate) - Machine_Chip_Tag.NegativeSet.Add(value); - else - Machine_Chip_Tag.PositiveSet.Add(value); - break; - - case Field.Machine_Chip_Type: - if (negate) - Machine_Chip_Type.NegativeSet.Add(value); - else - Machine_Chip_Type.PositiveSet.Add(value); - break; - - case Field.Machine_Chip_Clock: - if (negate) - Machine_Chip_Clock.NegativeSet.Add(value); - else - Machine_Chip_Clock.PositiveSet.Add(value); - break; - // Displays case Field.Machine_Displays: if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) @@ -1840,6 +1802,28 @@ namespace SabreTools.Library.Filtering DatItem_Description.PositiveSet.Add(value); break; + // Chip + case Field.DatItem_Tag: + if (negate) + DatItem_Tag.NegativeSet.Add(value); + else + DatItem_Tag.PositiveSet.Add(value); + break; + + case Field.DatItem_ChipType: + if (negate) + DatItem_ChipType.NegativeSet.Add(value); + else + DatItem_ChipType.PositiveSet.Add(value); + break; + + case Field.DatItem_Clock: + if (negate) + DatItem_Clock.NegativeSet.Add(value); + else + DatItem_Clock.PositiveSet.Add(value); + break; + // Disk case Field.DatItem_MD5: if (negate) diff --git a/SabreTools.Library/Tools/Converters.cs b/SabreTools.Library/Tools/Converters.cs index de9f8a5b..265d8cfb 100644 --- a/SabreTools.Library/Tools/Converters.cs +++ b/SabreTools.Library/Tools/Converters.cs @@ -440,21 +440,6 @@ namespace SabreTools.Library.Tools case "devicereference_name": return Field.Machine_DeviceReference_Name; - case "chips": - return Field.Machine_Chips; - - case "chip_name": - return Field.Machine_Chip_Name; - - case "chip_tag": - return Field.Machine_Chip_Tag; - - case "chip_type": - return Field.Machine_Chip_Type; - - case "chip_clock": - return Field.Machine_Chip_Clock; - case "displays": return Field.Machine_Displays; @@ -995,15 +980,28 @@ namespace SabreTools.Library.Tools case "bios_description": return Field.DatItem_Description; + // Chip + case "tag": + return Field.DatItem_Tag; + + case "chiptype": + case "chip_type": + return Field.DatItem_ChipType; + + case "clock": + return Field.DatItem_Clock; + // Disk case "md5": case "md5_hash": return Field.DatItem_MD5; + #if NET_FRAMEWORK case "ripemd160": case "ripemd160_hash": return Field.DatItem_RIPEMD160; #endif + case "sha1": case "sha_1": case "sha1hash": @@ -1400,6 +1398,17 @@ namespace SabreTools.Library.Tools case "biosset-description": case "bios-set-description": return Field.DatItem_Description; + + case "tag": + return Field.DatItem_Tag; + + case "chiptype": + case "chip_type": + return Field.DatItem_ChipType; + + case "clock": + return Field.DatItem_Clock; + case "crc": case "crc32": return Field.DatItem_CRC; @@ -1515,6 +1524,8 @@ namespace SabreTools.Library.Tools return ItemType.BiosSet; case "blank": return ItemType.Blank; + case "chip": + return ItemType.Chip; case "disk": return ItemType.Disk; case "release": @@ -1532,6 +1543,7 @@ namespace SabreTools.Library.Tools "archive" => ItemType.Archive, "biosset" => ItemType.BiosSet, "blank" => ItemType.Blank, + "chip" => ItemType.Chip, "disk" => ItemType.Disk, "release" => ItemType.Release, "rom" => ItemType.Rom, @@ -1898,6 +1910,8 @@ namespace SabreTools.Library.Tools return "biosset"; case ItemType.Blank: return "blank"; + case ItemType.Chip: + return "chip"; case ItemType.Disk: return "disk"; case ItemType.Release: @@ -1915,6 +1929,7 @@ namespace SabreTools.Library.Tools ItemType.Archive => "archive", ItemType.BiosSet => "biosset", ItemType.Blank => "blank", + ItemType.Chip => "chip", ItemType.Disk => "disk", ItemType.Release => "release", ItemType.Rom => "rom",