diff --git a/SabreTools.Library/DatItems/Adjuster.cs b/SabreTools.Library/DatItems/Adjuster.cs index a42ceddb..3f24ecec 100644 --- a/SabreTools.Library/DatItems/Adjuster.cs +++ b/SabreTools.Library/DatItems/Adjuster.cs @@ -189,10 +189,6 @@ namespace SabreTools.Library.DatItems if (filter.DatItem_Default.MatchesNeutral(null, Default) == false) return false; - // Filter on conditions - if (filter.DatItem_Conditions.MatchesNeutral(null, Conditions != null ? (bool?)(Conditions.Count > 0) : null) == false) - return false; - // Filter on individual conditions if (Conditions != null) { @@ -222,9 +218,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Default)) Default = null; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = null; - if (Conditions != null) { foreach (Condition condition in Conditions) @@ -272,9 +265,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Default)) Default = newItem.Default; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = newItem.Conditions; - // Field replacement doesn't make sense for DatItem_Condition* } diff --git a/SabreTools.Library/DatItems/Configuration.cs b/SabreTools.Library/DatItems/Configuration.cs index 02d0b747..933560fd 100644 --- a/SabreTools.Library/DatItems/Configuration.cs +++ b/SabreTools.Library/DatItems/Configuration.cs @@ -257,10 +257,6 @@ namespace SabreTools.Library.DatItems if (filter.DatItem_Mask.MatchesNegativeSet(Mask) == true) return false; - // Filter on conditions - if (filter.DatItem_Conditions.MatchesNeutral(null, Conditions != null ? (bool?)(Conditions.Count > 0) : null) == false) - return false; - // Filter on individual conditions if (Conditions != null) { @@ -271,10 +267,6 @@ namespace SabreTools.Library.DatItems } } - // Filter on locations - if (filter.DatItem_Locations.MatchesNeutral(null, Locations != null ? (bool?)(Locations.Count > 0) : null) == false) - return false; - // Filter on individual locations if (Locations != null) { @@ -285,10 +277,6 @@ namespace SabreTools.Library.DatItems } } - // Filter on settings - if (filter.DatItem_Settings.MatchesNeutral(null, Settings != null ? (bool?)(Settings.Count > 0) : null) == false) - return false; - // Filter on individual conditions if (Settings != null) { @@ -321,9 +309,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Mask)) Mask = null; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = null; - if (Conditions != null) { foreach (Condition condition in Conditions) @@ -332,9 +317,6 @@ namespace SabreTools.Library.DatItems } } - if (fields.Contains(Field.DatItem_Locations)) - Locations = null; - if (Locations != null) { foreach (Location location in Locations) @@ -343,9 +325,6 @@ namespace SabreTools.Library.DatItems } } - if (fields.Contains(Field.DatItem_Settings)) - Settings = null; - if (Settings != null) { foreach (Setting setting in Settings) @@ -396,19 +375,8 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Mask)) Mask = newItem.Mask; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = newItem.Conditions; - // Field replacement doesn't make sense for DatItem_Condition* - - if (fields.Contains(Field.DatItem_Locations)) - Locations = newItem.Locations; - // Field replacement doesn't make sense for DatItem_Location* - - if (fields.Contains(Field.DatItem_Settings)) - Settings = newItem.Settings; - // Field replacement doesn't make sense for DatItem_Setting* } diff --git a/SabreTools.Library/DatItems/DatItem.cs b/SabreTools.Library/DatItems/DatItem.cs index 7e581abb..0cf87719 100644 --- a/SabreTools.Library/DatItems/DatItem.cs +++ b/SabreTools.Library/DatItems/DatItem.cs @@ -69,54 +69,20 @@ namespace SabreTools.Library.DatItems /// /// Fields unique to a DatItem /// - /// TODO: Update this once reshuffling is done public static readonly List DatItemFields = new List() { #region Common - Field.DatItem_Name, Field.DatItem_Type, #endregion - #region AttractMode - - Field.DatItem_AltName, - Field.DatItem_AltTitle, - - #endregion - - #region OpenMSX - - Field.DatItem_Original, - Field.DatItem_OpenMSXSubType, - Field.DatItem_OpenMSXType, - Field.DatItem_Remark, - Field.DatItem_Boot, - - #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_LoadFlag, - - #endregion - #region Item-Specific #region Actionable // Rom + Field.DatItem_Name, Field.DatItem_Bios, Field.DatItem_Size, Field.DatItem_CRC, @@ -136,11 +102,27 @@ namespace SabreTools.Library.DatItems Field.DatItem_Optional, Field.DatItem_Inverted, + // Rom (AttractMode) + Field.DatItem_AltName, + Field.DatItem_AltTitle, + + // Rom (OpenMSX) + Field.DatItem_Original, + Field.DatItem_OpenMSXSubType, + Field.DatItem_OpenMSXType, + Field.DatItem_Remark, + Field.DatItem_Boot, + // Rom (SoftwareList) Field.DatItem_AreaName, Field.DatItem_AreaSize, Field.DatItem_AreaWidth, Field.DatItem_AreaEndianness, + Field.DatItem_LoadFlag, + Field.DatItem_Part_Name, + Field.DatItem_Part_Interface, + Field.DatItem_Part_Feature_Name, + Field.DatItem_Part_Feature_Value, Field.DatItem_Value, // Disk @@ -153,11 +135,9 @@ namespace SabreTools.Library.DatItems // Adjuster Field.DatItem_Default, - Field.DatItem_Conditions, - Field.DatItem_Condition_Tag, - Field.DatItem_Condition_Mask, - Field.DatItem_Condition_Relation, - Field.DatItem_Condition_Value, + + // Analog + Field.DatItem_Analog_Mask, // BiosSet Field.DatItem_Description, @@ -166,24 +146,101 @@ namespace SabreTools.Library.DatItems Field.DatItem_Tag, Field.DatItem_ChipType, Field.DatItem_Clock, - - // DIP Switch.Values - Field.DatItem_Values, - Field.DatItem_Value_Name, - Field.DatItem_Value_Value, - Field.DatItem_Value_Default, - // Ram Option + // Condition + Field.DatItem_Mask, + Field.DatItem_Relation, + Field.DatItem_Condition_Tag, + Field.DatItem_Condition_Mask, + Field.DatItem_Condition_Relation, + Field.DatItem_Condition_Value, + + // Control + Field.DatItem_Control_Type, + Field.DatItem_Control_Player, + Field.DatItem_Control_Buttons, + Field.DatItem_Control_RegButtons, + Field.DatItem_Control_Minimum, + Field.DatItem_Control_Maximum, + Field.DatItem_Control_Sensitivity, + Field.DatItem_Control_KeyDelta, + Field.DatItem_Control_Reverse, + Field.DatItem_Control_Ways, + Field.DatItem_Control_Ways2, + Field.DatItem_Control_Ways3, + + // Device + Field.DatItem_DeviceType, + Field.DatItem_FixedImage, + Field.DatItem_Mandatory, + Field.DatItem_Interface, + + // Display + Field.DatItem_DisplayType, + Field.DatItem_Rotate, + Field.DatItem_FlipX, + Field.DatItem_Width, + Field.DatItem_Height, + Field.DatItem_Refresh, + Field.DatItem_PixClock, + Field.DatItem_HTotal, + Field.DatItem_HBEnd, + Field.DatItem_HBStart, + Field.DatItem_VTotal, + Field.DatItem_VBEnd, + Field.DatItem_VBStart, + + // Driver + Field.DatItem_SupportStatus, + Field.DatItem_EmulationStatus, + Field.DatItem_CocktailStatus, + Field.DatItem_SaveStateStatus, + + // Extension + Field.DatItem_Extension_Name, + + // Feature + Field.DatItem_FeatureType, + Field.DatItem_FeatureStatus, + Field.DatItem_FeatureOverall, + + // Input + Field.DatItem_Service, + Field.DatItem_Tilt, + Field.DatItem_Players, + Field.DatItem_Coins, + + // Instance + Field.DatItem_Instance_Name, + Field.DatItem_Instance_BriefName, + + // Location + Field.DatItem_Location_Name, + Field.DatItem_Location_Number, + Field.DatItem_Location_Inverted, + + // RamOption Field.DatItem_Content, - // Slot.SlotOptions - Field.DatItem_SlotOptions, + // Release + Field.DatItem_Language, + + // Setting + Field.DatItem_Setting_Name, + Field.DatItem_Setting_Value, + Field.DatItem_Setting_Default, + + // SlotOption Field.DatItem_SlotOption_Name, Field.DatItem_SlotOption_DeviceName, Field.DatItem_SlotOption_Default, - // Release - Field.DatItem_Language, + // SoftwareList + Field.DatItem_SoftwareListStatus, + Field.DatItem_Filter, + + // Sound + Field.DatItem_Channels, #endregion @@ -193,22 +250,26 @@ namespace SabreTools.Library.DatItems /// /// Fields unique to a Machine /// - /// TODO: Update this once reshuffling is done public static readonly List MachineFields = new List() { - // Common + #region Common + Field.Machine_Name, Field.Machine_Comment, Field.Machine_Description, Field.Machine_Year, Field.Machine_Manufacturer, Field.Machine_Publisher, + Field.Machine_Category, Field.Machine_RomOf, Field.Machine_CloneOf, Field.Machine_SampleOf, Field.Machine_Type, - // AttractMode + #endregion + + #region AttractMode + Field.Machine_Players, Field.Machine_Rotation, Field.Machine_Control, @@ -217,15 +278,24 @@ namespace SabreTools.Library.DatItems Field.Machine_DisplayType, Field.Machine_Buttons, - // ListXML + #endregion + + #region ListXML + Field.Machine_SourceFile, Field.Machine_Runnable, - // Logiqx + #endregion + + #region Logiqx + Field.Machine_Board, Field.Machine_RebuildTo, - // Logiqx EmuArc + #endregion + + #region Logiqx EmuArc + Field.Machine_TitleID, Field.Machine_Developer, Field.Machine_Genre, @@ -236,13 +306,21 @@ namespace SabreTools.Library.DatItems Field.Machine_CRC, Field.Machine_RelatedTo, - // OpenMSX + #endregion + + #region OpenMSX + Field.Machine_GenMSXID, Field.Machine_System, Field.Machine_Country, - // SoftwareList + #endregion + + #region SoftwareList + Field.Machine_Supported, + + #endregion }; #endregion diff --git a/SabreTools.Library/DatItems/DipSwitch.cs b/SabreTools.Library/DatItems/DipSwitch.cs index a3e9dd13..bb4b942d 100644 --- a/SabreTools.Library/DatItems/DipSwitch.cs +++ b/SabreTools.Library/DatItems/DipSwitch.cs @@ -301,15 +301,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Mask)) Mask = null; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = null; - - if (fields.Contains(Field.DatItem_Locations)) - Locations = null; - - if (fields.Contains(Field.DatItem_Values)) - Values = null; - // TODO: Handle DatItem_Condition* // TODO: Handle DatItem_Location* // TODO: Handle DatItem_Value* @@ -324,9 +315,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Part_Interface) && Part != null) Part.Interface = null; - if (fields.Contains(Field.DatItem_Features) && Part != null) - Part.Features = null; - // TODO: Handle DatItem_Feature* #endregion @@ -376,15 +364,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Mask)) Mask = newItem.Mask; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = newItem.Conditions; - - if (fields.Contains(Field.DatItem_Locations)) - Locations = newItem.Locations; - - if (fields.Contains(Field.DatItem_Values)) - Values = newItem.Values; - // TODO: Handle DatItem_Condition* // TODO: Handle DatItem_Location* // TODO: Handle DatItem_Value* @@ -409,13 +388,7 @@ namespace SabreTools.Library.DatItems Part.Interface = newItem.Part?.Interface; } - if (fields.Contains(Field.DatItem_Features)) - { - if (Part == null) - Part = new Part(); - - Part.Features = newItem.Part?.Features; - } + // TODO: Handle DatItem_Part_Feature* #endregion } diff --git a/SabreTools.Library/DatItems/Disk.cs b/SabreTools.Library/DatItems/Disk.cs index 370f3f27..123e630a 100644 --- a/SabreTools.Library/DatItems/Disk.cs +++ b/SabreTools.Library/DatItems/Disk.cs @@ -555,9 +555,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Part_Interface) && Part != null) Part.Interface = null; - if (fields.Contains(Field.DatItem_Features) && Part != null) - Part.Features = null; - // TODO: Handle DatItem_Feature* #endregion @@ -694,13 +691,7 @@ namespace SabreTools.Library.DatItems Part.Interface = newItem.Part?.Interface; } - if (fields.Contains(Field.DatItem_Features)) - { - if (Part == null) - Part = new Part(); - - Part.Features = newItem.Part?.Features; - } + // TODO: Handle DatItem_Part_Feature* #endregion } diff --git a/SabreTools.Library/DatItems/Enums.cs b/SabreTools.Library/DatItems/Enums.cs index a3630729..21ba5dbe 100644 --- a/SabreTools.Library/DatItems/Enums.cs +++ b/SabreTools.Library/DatItems/Enums.cs @@ -229,39 +229,16 @@ namespace SabreTools.Library.DatItems #region Common - DatItem_Name, DatItem_Type, #endregion - #region AttractMode - - DatItem_AltName, - DatItem_AltTitle, - - #endregion - - #region SoftwareList - - // Part - DatItem_Part, - DatItem_Part_Name, - DatItem_Part_Interface, - - // Feature - DatItem_Features, - DatItem_Feature_Name, - DatItem_Feature_Value, - - DatItem_LoadFlag, - - #endregion - #region Item-Specific #region Actionable // Rom + DatItem_Name, DatItem_Bios, DatItem_Size, DatItem_CRC, @@ -281,6 +258,10 @@ namespace SabreTools.Library.DatItems DatItem_Optional, DatItem_Inverted, + // Rom (AttractMode) + DatItem_AltName, + DatItem_AltTitle, + // Rom (OpenMSX) DatItem_Original, DatItem_OpenMSXSubType, @@ -289,10 +270,15 @@ namespace SabreTools.Library.DatItems DatItem_Boot, // Rom (SoftwareList) - DatItem_AreaName, - DatItem_AreaSize, - DatItem_AreaWidth, - DatItem_AreaEndianness, + DatItem_AreaName, // TODO: DataArea/DiskArea? + DatItem_AreaSize, // TODO: DataArea? + DatItem_AreaWidth, // TODO: DataArea? + DatItem_AreaEndianness, // TODO: DataArea? + DatItem_LoadFlag, + DatItem_Part_Name, // TODO: Part? + DatItem_Part_Interface, // TODO: Part? + DatItem_Part_Feature_Name, // TODO: PartFeature? + DatItem_Part_Feature_Value, // TODO: PartFeature? DatItem_Value, // Disk @@ -305,14 +291,9 @@ namespace SabreTools.Library.DatItems // Adjuster DatItem_Default, - DatItem_Conditions, - DatItem_Condition_Tag, - DatItem_Condition_Mask, - DatItem_Condition_Relation, - DatItem_Condition_Value, // Analog - DatItem_Mask, + DatItem_Analog_Mask, // BiosSet DatItem_Description, @@ -323,19 +304,26 @@ namespace SabreTools.Library.DatItems DatItem_Clock, // Condition + DatItem_Mask, DatItem_Relation, + DatItem_Condition_Tag, + DatItem_Condition_Mask, + DatItem_Condition_Relation, + DatItem_Condition_Value, - // Configuration.Locations - DatItem_Locations, - DatItem_Location_Name, - DatItem_Location_Number, - DatItem_Location_Inverted, - - // Configuration.Settings - DatItem_Settings, - DatItem_Setting_Name, - DatItem_Setting_Value, - DatItem_Setting_Default, + // Control + DatItem_Control_Type, + DatItem_Control_Player, + DatItem_Control_Buttons, + DatItem_Control_RegButtons, + DatItem_Control_Minimum, + DatItem_Control_Maximum, + DatItem_Control_Sensitivity, + DatItem_Control_KeyDelta, + DatItem_Control_Reverse, + DatItem_Control_Ways, + DatItem_Control_Ways2, + DatItem_Control_Ways3, // Device DatItem_DeviceType, @@ -343,21 +331,6 @@ namespace SabreTools.Library.DatItems DatItem_Mandatory, DatItem_Interface, - // Device.Instances - DatItem_Instances, - DatItem_Instance_Name, - DatItem_Instance_BriefName, - - // Device.Extensions - DatItem_Extensions, - DatItem_Extension_Name, - - // DipSwitch.Values - DatItem_Values, - DatItem_Value_Name, - DatItem_Value_Value, - DatItem_Value_Default, - // Display DatItem_DisplayType, DatItem_Rotate, @@ -379,53 +352,50 @@ namespace SabreTools.Library.DatItems DatItem_CocktailStatus, DatItem_SaveStateStatus, + // Extension + DatItem_Extension_Name, + // Feature DatItem_FeatureType, DatItem_FeatureStatus, DatItem_FeatureOverall, - // Inputs + // Input DatItem_Service, DatItem_Tilt, DatItem_Players, DatItem_Coins, - // Inputs.Controls - DatItem_Controls, - DatItem_Control_Type, - DatItem_Control_Player, - DatItem_Control_Buttons, - DatItem_Control_RegButtons, - DatItem_Control_Minimum, - DatItem_Control_Maximum, - DatItem_Control_Sensitivity, - DatItem_Control_KeyDelta, - DatItem_Control_Reverse, - DatItem_Control_Ways, - DatItem_Control_Ways2, - DatItem_Control_Ways3, + // Instance + DatItem_Instance_Name, + DatItem_Instance_BriefName, - // Port.Analogs - DatItem_Analogs, - DatItem_Analog_Mask, + // Location + DatItem_Location_Name, + DatItem_Location_Number, + DatItem_Location_Inverted, - // Ram Option + // RamOption DatItem_Content, // Release DatItem_Language, - // Slot.SlotOptions - DatItem_SlotOptions, + // Setting + DatItem_Setting_Name, + DatItem_Setting_Value, + DatItem_Setting_Default, + + // SlotOption DatItem_SlotOption_Name, DatItem_SlotOption_DeviceName, DatItem_SlotOption_Default, - // Software List + // SoftwareList DatItem_SoftwareListStatus, DatItem_Filter, - // Sounds + // Sound DatItem_Channels, #endregion diff --git a/SabreTools.Library/DatItems/Input.cs b/SabreTools.Library/DatItems/Input.cs index 545db0bf..dd637092 100644 --- a/SabreTools.Library/DatItems/Input.cs +++ b/SabreTools.Library/DatItems/Input.cs @@ -193,9 +193,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Coins)) Coins = null; - if (fields.Contains(Field.DatItem_Controls)) - Controls = null; - // TODO: Handle DatItem_Control* } @@ -233,9 +230,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Coins)) Coins = newItem.Coins; - if (fields.Contains(Field.DatItem_Controls)) - Controls = newItem.Controls; - // TODO: Handle DatItem_Control* } diff --git a/SabreTools.Library/DatItems/Port.cs b/SabreTools.Library/DatItems/Port.cs index 29dbdfe4..c2f6cba8 100644 --- a/SabreTools.Library/DatItems/Port.cs +++ b/SabreTools.Library/DatItems/Port.cs @@ -134,9 +134,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Tag)) Tag = null; - if (fields.Contains(Field.DatItem_Analogs)) - Analogs = null; - // TODO: Handle DatItem_Analog* } @@ -165,9 +162,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Name)) Tag = newItem.Tag; - if (fields.Contains(Field.DatItem_Analogs)) - Analogs = newItem.Analogs; - // TODO: Handle DatItem_Analog* } diff --git a/SabreTools.Library/DatItems/Rom.cs b/SabreTools.Library/DatItems/Rom.cs index 08a51a39..cb28b6c7 100644 --- a/SabreTools.Library/DatItems/Rom.cs +++ b/SabreTools.Library/DatItems/Rom.cs @@ -1081,9 +1081,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Part_Interface) && Part != null) Part.Interface = null; - if (fields.Contains(Field.DatItem_Features) && Part != null) - Part.Features = null; - // TODO: Handle DatItem_Feature* if (fields.Contains(Field.DatItem_Value)) @@ -1342,13 +1339,7 @@ namespace SabreTools.Library.DatItems Part.Interface = newItem.Part?.Interface; } - if (fields.Contains(Field.DatItem_Features)) - { - if (Part == null) - Part = new Part(); - - Part.Features = newItem.Part?.Features; - } + // TODO: Handle DatItem_Part_Feature* #endregion } diff --git a/SabreTools.Library/DatItems/Setting.cs b/SabreTools.Library/DatItems/Setting.cs index 3f58fba8..7ea98282 100644 --- a/SabreTools.Library/DatItems/Setting.cs +++ b/SabreTools.Library/DatItems/Setting.cs @@ -207,10 +207,6 @@ namespace SabreTools.Library.DatItems if (filter.DatItem_Setting_Default.MatchesNeutral(null, Default) == false) return false; - // Filter on conditions - if (filter.DatItem_Conditions.MatchesNeutral(null, Conditions != null ? (bool?)(Conditions.Count > 0) : null) == false) - return false; - // Filter on individual conditions if (Conditions != null) { @@ -243,9 +239,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Setting_Default)) Default = null; - if (fields.Contains(Field.DatItem_Conditions)) - Conditions = null; - if (Conditions != null) { foreach (Condition condition in Conditions) diff --git a/SabreTools.Library/DatItems/Slot.cs b/SabreTools.Library/DatItems/Slot.cs index db568443..7bb0da41 100644 --- a/SabreTools.Library/DatItems/Slot.cs +++ b/SabreTools.Library/DatItems/Slot.cs @@ -173,9 +173,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Name)) Name = null; - if (fields.Contains(Field.DatItem_SlotOptions)) - SlotOptions = null; - // TODO: Handle DatItem_SlotOption* } @@ -214,9 +211,6 @@ namespace SabreTools.Library.DatItems if (fields.Contains(Field.DatItem_Name)) Name = newItem.Name; - if (fields.Contains(Field.DatItem_SlotOptions)) - SlotOptions = newItem.SlotOptions; - // TODO: Handle DatItem_SlotOption* } diff --git a/SabreTools.Library/DatItems/Sound.cs b/SabreTools.Library/DatItems/Sound.cs index 40013ef9..513559d8 100644 --- a/SabreTools.Library/DatItems/Sound.cs +++ b/SabreTools.Library/DatItems/Sound.cs @@ -33,7 +33,7 @@ namespace SabreTools.Library.DatItems // Set base fields base.SetFields(mappings); - // Handle Sample-specific fields + // Handle Sound-specific fields if (mappings.Keys.Contains(Field.DatItem_Channels)) Channels = mappings[Field.DatItem_Channels]; } diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs index ab34a114..8fc10cfe 100644 --- a/SabreTools.Library/Filtering/Filter.cs +++ b/SabreTools.Library/Filtering/Filter.cs @@ -13,7 +13,6 @@ namespace SabreTools.Library.Filtering /// TODO: Can clever use of Filtering allow for easier external splitting methods? public class Filter { - // TODO: Reorder once all reorganization is done #region Fields #region Machine Filters @@ -94,49 +93,16 @@ namespace SabreTools.Library.Filtering #region Common - public FilterItem DatItem_Name { get; private set; } = new FilterItem(); public FilterItem DatItem_Type { get; private set; } = new FilterItem(); #endregion - #region AttractMode - - public FilterItem DatItem_AltName { get; private set; } = new FilterItem(); - public FilterItem DatItem_AltTitle { get; private set; } = new FilterItem(); - - #endregion - - #region OpenMSX - - public FilterItem DatItem_Original { get; private set; } = new FilterItem(); - public FilterItem DatItem_OpenMSXSubType { get; private set; } = new FilterItem() { Positive = OpenMSXSubType.NULL, Negative = OpenMSXSubType.NULL }; - public FilterItem DatItem_OpenMSXType { get; private set; } = new FilterItem(); - public FilterItem DatItem_Remark { get; private set; } = new FilterItem(); - public FilterItem DatItem_Boot { get; private set; } = new FilterItem(); - - #endregion - - #region SoftwareList - - // Part - public FilterItem DatItem_Part { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Part_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Part_Interface { get; private set; } = new FilterItem(); - - // Feature - public FilterItem DatItem_Features { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Feature_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Feature_Value { get; private set; } = new FilterItem(); - - public FilterItem DatItem_LoadFlag { get; private set; } = new FilterItem(); - - #endregion - #region Item-Specific #region Actionable // Rom + public FilterItem DatItem_Name { get; private set; } = new FilterItem(); public FilterItem DatItem_Bios { get; private set; } = new FilterItem(); public FilterItem DatItem_Size { get; private set; } = new FilterItem() { Positive = -1, Negative = -1, Neutral = -1 }; public FilterItem DatItem_CRC { get; private set; } = new FilterItem(); @@ -156,11 +122,27 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_Optional { get; private set; } = new FilterItem() { Neutral = null }; public FilterItem DatItem_Inverted { get; private set; } = new FilterItem(); + // Rom (AttractMode) + public FilterItem DatItem_AltName { get; private set; } = new FilterItem(); + public FilterItem DatItem_AltTitle { get; private set; } = new FilterItem(); + + // Rom (OpenMSX) + public FilterItem DatItem_Original { get; private set; } = new FilterItem(); + public FilterItem DatItem_OpenMSXSubType { get; private set; } = new FilterItem() { Positive = OpenMSXSubType.NULL, Negative = OpenMSXSubType.NULL }; + public FilterItem DatItem_OpenMSXType { get; private set; } = new FilterItem(); + public FilterItem DatItem_Remark { get; private set; } = new FilterItem(); + public FilterItem DatItem_Boot { get; private set; } = new FilterItem(); + // Rom (SoftwareList) public FilterItem DatItem_AreaName { get; private set; } = new FilterItem(); public FilterItem DatItem_AreaSize { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; public FilterItem DatItem_AreaWidth { get; private set; } = new FilterItem(); public FilterItem DatItem_AreaEndianness { get; private set; } = new FilterItem(); + public FilterItem DatItem_LoadFlag { get; private set; } = new FilterItem(); + public FilterItem DatItem_Part_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Part_Interface { get; private set; } = new FilterItem(); + public FilterItem DatItem_Part_Feature_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Part_Feature_Value { get; private set; } = new FilterItem(); public FilterItem DatItem_Value { get; private set; } = new FilterItem(); // Disk @@ -172,18 +154,13 @@ namespace SabreTools.Library.Filtering #region Auxiliary // Adjuster - public FilterItem DatItem_Conditions { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Condition_Tag { get; private set; } = new FilterItem(); - public FilterItem DatItem_Condition_Mask { get; private set; } = new FilterItem(); - public FilterItem DatItem_Condition_Relation { get; private set; } = new FilterItem(); - public FilterItem DatItem_Condition_Value { get; private set; } = new FilterItem(); + public FilterItem DatItem_Default { get; private set; } = new FilterItem() { Neutral = null }; // Analog - public FilterItem DatItem_Mask { get; private set; } = new FilterItem(); + public FilterItem DatItem_Analog_Mask { get; private set; } = new FilterItem(); // BiosSet public FilterItem DatItem_Description { get; private set; } = new FilterItem(); - public FilterItem DatItem_Default { get; private set; } = new FilterItem() { Neutral = null }; // Chip public FilterItem DatItem_Tag { get; private set; } = new FilterItem(); @@ -191,19 +168,26 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_Clock { get; private set; } = new FilterItem(); // Condition + public FilterItem DatItem_Mask { get; private set; } = new FilterItem(); public FilterItem DatItem_Relation { get; private set; } = new FilterItem(); + public FilterItem DatItem_Condition_Tag { get; private set; } = new FilterItem(); + public FilterItem DatItem_Condition_Mask { get; private set; } = new FilterItem(); + public FilterItem DatItem_Condition_Relation { get; private set; } = new FilterItem(); + public FilterItem DatItem_Condition_Value { get; private set; } = new FilterItem(); - // Configuration.Locations - public FilterItem DatItem_Locations { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Location_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Location_Number { get; private set; } = new FilterItem(); - public FilterItem DatItem_Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; - - // Configuration.Settings - public FilterItem DatItem_Settings { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Setting_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Setting_Value { get; private set; } = new FilterItem(); - public FilterItem DatItem_Setting_Default { get; private set; } = new FilterItem() { Neutral = null }; + // Control + public FilterItem DatItem_Control_Type { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Player { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Buttons { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_RegButtons { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Minimum { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Maximum { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Sensitivity { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_KeyDelta { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Reverse { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem DatItem_Control_Ways { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Ways2 { get; private set; } = new FilterItem(); + public FilterItem DatItem_Control_Ways3 { get; private set; } = new FilterItem(); // Device public FilterItem DatItem_DeviceType { get; private set; } = new FilterItem(); @@ -211,21 +195,6 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_Mandatory { get; private set; } = new FilterItem(); public FilterItem DatItem_Interface { get; private set; } = new FilterItem(); - // Device.Instances - public FilterItem DatItem_Instances { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Instance_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Instance_BriefName { get; private set; } = new FilterItem(); - - // Device.Extensions - public FilterItem DatItem_Extensions { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Extension_Name { get; private set; } = new FilterItem(); - - // DipSwitch.Values - public FilterItem DatItem_Values { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Value_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Value_Value { get; private set; } = new FilterItem(); - public FilterItem DatItem_Value_Default { get; private set; } = new FilterItem() { Neutral = null }; - // Display public FilterItem DatItem_DisplayType { get; private set; } = new FilterItem(); public FilterItem DatItem_Rotate { get; private set; } = new FilterItem(); @@ -247,6 +216,9 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_CocktailStatus { get; private set; } = new FilterItem() { Positive = SupportStatus.NULL, Negative = SupportStatus.NULL }; public FilterItem DatItem_SaveStateStatus { get; private set; } = new FilterItem() { Positive = Supported.NULL, Negative = Supported.NULL }; + // Extension + public FilterItem DatItem_Extension_Name { get; private set; } = new FilterItem(); + // Feature public FilterItem DatItem_FeatureType { get; private set; } = new FilterItem() { Positive = FeatureType.NULL, Negative = FeatureType.NULL }; public FilterItem DatItem_FeatureStatus { get; private set; } = new FilterItem() { Positive = FeatureStatus.NULL, Negative = FeatureStatus.NULL }; @@ -258,38 +230,32 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_Players { get; private set; } = new FilterItem(); public FilterItem DatItem_Coins { get; private set; } = new FilterItem(); - // Input.Controls - public FilterItem DatItem_Controls { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Control_Type { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Player { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Buttons { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_RegButtons { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Minimum { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Maximum { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Sensitivity { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_KeyDelta { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Reverse { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Control_Ways { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Ways2 { get; private set; } = new FilterItem(); - public FilterItem DatItem_Control_Ways3 { get; private set; } = new FilterItem(); + // Instance + public FilterItem DatItem_Instance_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Instance_BriefName { get; private set; } = new FilterItem(); - // Port.Analogs - public FilterItem DatItem_Analogs { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem DatItem_Analog_Mask { get; private set; } = new FilterItem(); + // Location + public FilterItem DatItem_Location_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Location_Number { get; private set; } = new FilterItem(); + public FilterItem DatItem_Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; - // Ram Option + // RamOption public FilterItem DatItem_Content { get; private set; } = new FilterItem(); // Release public FilterItem DatItem_Language { get; private set; } = new FilterItem(); - // Slots.SlotOptions - public FilterItem DatItem_SlotOptions { get; private set; } = new FilterItem() { Neutral = null }; + // Setting + public FilterItem DatItem_Setting_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Setting_Value { get; private set; } = new FilterItem(); + public FilterItem DatItem_Setting_Default { get; private set; } = new FilterItem() { Neutral = null }; + + // SlotOption public FilterItem DatItem_SlotOption_Name { get; private set; } = new FilterItem(); public FilterItem DatItem_SlotOption_DeviceName { get; private set; } = new FilterItem(); public FilterItem DatItem_SlotOption_Default { get; private set; } = new FilterItem() { Neutral = null }; - // Software List + // SoftwareList public FilterItem DatItem_SoftwareListStatus { get; private set; } = new FilterItem() { Positive = SoftwareListStatus.NULL, Negative = SoftwareListStatus.NULL }; public FilterItem DatItem_Filter { get; private set; } = new FilterItem(); @@ -652,13 +618,6 @@ namespace SabreTools.Library.Filtering #region Common - case Field.DatItem_Name: - if (negate) - DatItem_Name.NegativeSet.Add(value); - else - DatItem_Name.PositiveSet.Add(value); - break; - case Field.DatItem_Type: if (value.AsItemType() == null) return; @@ -671,203 +630,18 @@ namespace SabreTools.Library.Filtering #endregion - #region AttractMode - - case Field.DatItem_AltName: - if (negate) - DatItem_AltName.NegativeSet.Add(value); - else - DatItem_AltName.PositiveSet.Add(value); - break; - - case Field.DatItem_AltTitle: - if (negate) - DatItem_AltTitle.NegativeSet.Add(value); - else - DatItem_AltTitle.PositiveSet.Add(value); - break; - - #endregion - - #region OpenMSX - - case Field.DatItem_Original: - if (negate) - DatItem_Original.NegativeSet.Add(value); - else - DatItem_Original.PositiveSet.Add(value); - break; - - case Field.DatItem_OpenMSXSubType: - if (negate) - DatItem_OpenMSXSubType.Negative |= value.AsOpenMSXSubType(); - else - DatItem_OpenMSXSubType.Positive |= value.AsOpenMSXSubType(); - break; - - case Field.DatItem_OpenMSXType: - if (negate) - DatItem_OpenMSXType.NegativeSet.Add(value); - else - DatItem_OpenMSXType.PositiveSet.Add(value); - break; - - case Field.DatItem_Remark: - if (negate) - DatItem_Remark.NegativeSet.Add(value); - else - DatItem_Remark.PositiveSet.Add(value); - break; - - case Field.DatItem_Boot: - if (negate) - DatItem_Boot.NegativeSet.Add(value); - else - DatItem_Boot.PositiveSet.Add(value); - break; - - #endregion - - #region SoftwareList - - // Part - case Field.DatItem_Part: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Part.Neutral = false; - else - DatItem_Part.Neutral = true; - break; - - case Field.DatItem_Part_Name: - if (negate) - DatItem_Part_Name.NegativeSet.Add(value); - else - DatItem_Part_Name.PositiveSet.Add(value); - break; - - case Field.DatItem_Part_Interface: - if (negate) - DatItem_Part_Interface.NegativeSet.Add(value); - else - DatItem_Part_Interface.PositiveSet.Add(value); - break; - - // Feature - case Field.DatItem_Features: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Features.Neutral = false; - else - DatItem_Features.Neutral = true; - break; - - case Field.DatItem_Feature_Name: - if (negate) - DatItem_Feature_Name.NegativeSet.Add(value); - else - DatItem_Feature_Name.PositiveSet.Add(value); - break; - - case Field.DatItem_Feature_Value: - if (negate) - DatItem_Feature_Value.NegativeSet.Add(value); - else - DatItem_Feature_Value.PositiveSet.Add(value); - break; - - case Field.DatItem_AreaName: - if (negate) - DatItem_AreaName.NegativeSet.Add(value); - else - DatItem_AreaName.PositiveSet.Add(value); - break; - - case Field.DatItem_AreaSize: - bool? asOperation = null; - if (value.StartsWith(">")) - asOperation = true; - else if (value.StartsWith("<")) - asOperation = false; - else if (value.StartsWith("=")) - asOperation = null; - - string areasizeString = value.TrimStart('>', '<', '='); - if (!Int64.TryParse(areasizeString, out long areasize)) - return; - - // Equal - if (asOperation == null && !negate) - { - DatItem_AreaSize.Neutral = areasize; - } - - // Not Equal - else if (asOperation == null && negate) - { - DatItem_AreaSize.Negative = areasize - 1; - DatItem_AreaSize.Positive = areasize + 1; - } - - // Greater Than or Equal - else if (asOperation == true && !negate) - { - DatItem_AreaSize.Positive = areasize; - } - - // Strictly Less Than - else if (asOperation == true && negate) - { - DatItem_AreaSize.Negative = areasize - 1; - } - - // Less Than or Equal - else if (asOperation == false && !negate) - { - DatItem_AreaSize.Negative = areasize; - } - - // Strictly Greater Than - else if (asOperation == false && negate) - { - DatItem_AreaSize.Positive = areasize + 1; - } - - break; - - case Field.DatItem_AreaWidth: - if (negate) - DatItem_AreaWidth.NegativeSet.Add(value); - else - DatItem_AreaWidth.PositiveSet.Add(value); - break; - - case Field.DatItem_AreaEndianness: - if (negate) - DatItem_AreaEndianness.NegativeSet.Add(value); - else - DatItem_AreaEndianness.PositiveSet.Add(value); - break; - - case Field.DatItem_Value: - if (negate) - DatItem_Value.NegativeSet.Add(value); - else - DatItem_Value.PositiveSet.Add(value); - break; - - case Field.DatItem_LoadFlag: - if (negate) - DatItem_LoadFlag.NegativeSet.Add(value); - else - DatItem_LoadFlag.PositiveSet.Add(value); - break; - - #endregion - #region Item-Specific #region Actionable // Rom + case Field.DatItem_Name: + if (negate) + DatItem_Name.NegativeSet.Add(value); + else + DatItem_Name.PositiveSet.Add(value); + break; + case Field.DatItem_Bios: if (negate) DatItem_Bios.NegativeSet.Add(value); @@ -1027,6 +801,173 @@ namespace SabreTools.Library.Filtering DatItem_Inverted.Neutral = true; break; + // Rom (AttractMode) + case Field.DatItem_AltName: + if (negate) + DatItem_AltName.NegativeSet.Add(value); + else + DatItem_AltName.PositiveSet.Add(value); + break; + + case Field.DatItem_AltTitle: + if (negate) + DatItem_AltTitle.NegativeSet.Add(value); + else + DatItem_AltTitle.PositiveSet.Add(value); + break; + + // Rom (OpenMSX) + case Field.DatItem_Original: + if (negate) + DatItem_Original.NegativeSet.Add(value); + else + DatItem_Original.PositiveSet.Add(value); + break; + + case Field.DatItem_OpenMSXSubType: + if (negate) + DatItem_OpenMSXSubType.Negative |= value.AsOpenMSXSubType(); + else + DatItem_OpenMSXSubType.Positive |= value.AsOpenMSXSubType(); + break; + + case Field.DatItem_OpenMSXType: + if (negate) + DatItem_OpenMSXType.NegativeSet.Add(value); + else + DatItem_OpenMSXType.PositiveSet.Add(value); + break; + + case Field.DatItem_Remark: + if (negate) + DatItem_Remark.NegativeSet.Add(value); + else + DatItem_Remark.PositiveSet.Add(value); + break; + + case Field.DatItem_Boot: + if (negate) + DatItem_Boot.NegativeSet.Add(value); + else + DatItem_Boot.PositiveSet.Add(value); + break; + + // Rom (SoftwareList) + case Field.DatItem_AreaName: + if (negate) + DatItem_AreaName.NegativeSet.Add(value); + else + DatItem_AreaName.PositiveSet.Add(value); + break; + + case Field.DatItem_AreaSize: + bool? asOperation = null; + if (value.StartsWith(">")) + asOperation = true; + else if (value.StartsWith("<")) + asOperation = false; + else if (value.StartsWith("=")) + asOperation = null; + + string areasizeString = value.TrimStart('>', '<', '='); + if (!Int64.TryParse(areasizeString, out long areasize)) + return; + + // Equal + if (asOperation == null && !negate) + { + DatItem_AreaSize.Neutral = areasize; + } + + // Not Equal + else if (asOperation == null && negate) + { + DatItem_AreaSize.Negative = areasize - 1; + DatItem_AreaSize.Positive = areasize + 1; + } + + // Greater Than or Equal + else if (asOperation == true && !negate) + { + DatItem_AreaSize.Positive = areasize; + } + + // Strictly Less Than + else if (asOperation == true && negate) + { + DatItem_AreaSize.Negative = areasize - 1; + } + + // Less Than or Equal + else if (asOperation == false && !negate) + { + DatItem_AreaSize.Negative = areasize; + } + + // Strictly Greater Than + else if (asOperation == false && negate) + { + DatItem_AreaSize.Positive = areasize + 1; + } + + break; + + case Field.DatItem_AreaWidth: + if (negate) + DatItem_AreaWidth.NegativeSet.Add(value); + else + DatItem_AreaWidth.PositiveSet.Add(value); + break; + + case Field.DatItem_AreaEndianness: + if (negate) + DatItem_AreaEndianness.NegativeSet.Add(value); + else + DatItem_AreaEndianness.PositiveSet.Add(value); + break; + + case Field.DatItem_LoadFlag: + if (negate) + DatItem_LoadFlag.NegativeSet.Add(value); + else + DatItem_LoadFlag.PositiveSet.Add(value); + break; + + case Field.DatItem_Part_Name: + if (negate) + DatItem_Part_Name.NegativeSet.Add(value); + else + DatItem_Part_Name.PositiveSet.Add(value); + break; + + case Field.DatItem_Part_Interface: + if (negate) + DatItem_Part_Interface.NegativeSet.Add(value); + else + DatItem_Part_Interface.PositiveSet.Add(value); + break; + + case Field.DatItem_Part_Feature_Name: + if (negate) + DatItem_Part_Feature_Name.NegativeSet.Add(value); + else + DatItem_Part_Feature_Name.PositiveSet.Add(value); + break; + + case Field.DatItem_Part_Feature_Value: + if (negate) + DatItem_Part_Feature_Value.NegativeSet.Add(value); + else + DatItem_Part_Feature_Value.PositiveSet.Add(value); + break; + + case Field.DatItem_Value: + if (negate) + DatItem_Value.NegativeSet.Add(value); + else + DatItem_Value.PositiveSet.Add(value); + break; + // Disk case Field.DatItem_Index: if (negate) @@ -1054,47 +995,12 @@ namespace SabreTools.Library.Filtering DatItem_Default.Neutral = true; break; - case Field.DatItem_Conditions: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Conditions.Neutral = false; - else - DatItem_Conditions.Neutral = true; - break; - - case Field.DatItem_Condition_Tag: - if (negate) - DatItem_Condition_Tag.NegativeSet.Add(value); - else - DatItem_Condition_Tag.PositiveSet.Add(value); - break; - - case Field.DatItem_Condition_Mask: - if (negate) - DatItem_Condition_Mask.NegativeSet.Add(value); - else - DatItem_Condition_Mask.PositiveSet.Add(value); - break; - - case Field.DatItem_Condition_Relation: - if (negate) - DatItem_Condition_Relation.NegativeSet.Add(value); - else - DatItem_Condition_Relation.PositiveSet.Add(value); - break; - - case Field.DatItem_Condition_Value: - if (negate) - DatItem_Condition_Value.NegativeSet.Add(value); - else - DatItem_Condition_Value.PositiveSet.Add(value); - break; - // Analog - case Field.DatItem_Mask: + case Field.DatItem_Analog_Mask: if (negate) - DatItem_Mask.NegativeSet.Add(value); + DatItem_Analog_Mask.NegativeSet.Add(value); else - DatItem_Mask.PositiveSet.Add(value); + DatItem_Analog_Mask.PositiveSet.Add(value); break; // BiosSet @@ -1128,6 +1034,13 @@ namespace SabreTools.Library.Filtering break; // Condition + case Field.DatItem_Mask: + if (negate) + DatItem_Mask.NegativeSet.Add(value); + else + DatItem_Mask.PositiveSet.Add(value); + break; + case Field.DatItem_Relation: if (negate) DatItem_Relation.NegativeSet.Add(value); @@ -1135,62 +1048,117 @@ namespace SabreTools.Library.Filtering DatItem_Relation.PositiveSet.Add(value); break; - // Configurations.Locations - case Field.DatItem_Locations: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Locations.Neutral = false; - else - DatItem_Locations.Neutral = true; - break; - - case Field.DatItem_Location_Name: + case Field.DatItem_Condition_Tag: if (negate) - DatItem_Location_Name.NegativeSet.Add(value); + DatItem_Condition_Tag.NegativeSet.Add(value); else - DatItem_Location_Name.PositiveSet.Add(value); + DatItem_Condition_Tag.PositiveSet.Add(value); break; - case Field.DatItem_Location_Number: + case Field.DatItem_Condition_Mask: if (negate) - DatItem_Location_Number.NegativeSet.Add(value); + DatItem_Condition_Mask.NegativeSet.Add(value); else - DatItem_Location_Number.PositiveSet.Add(value); + DatItem_Condition_Mask.PositiveSet.Add(value); break; - case Field.DatItem_Location_Inverted: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Location_Inverted.Neutral = false; - else - DatItem_Location_Inverted.Neutral = true; - break; - - // Configurations.Settings - case Field.DatItem_Settings: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Settings.Neutral = false; - else - DatItem_Settings.Neutral = true; - break; - - case Field.DatItem_Setting_Name: + case Field.DatItem_Condition_Relation: if (negate) - DatItem_Setting_Name.NegativeSet.Add(value); + DatItem_Condition_Relation.NegativeSet.Add(value); else - DatItem_Setting_Name.PositiveSet.Add(value); + DatItem_Condition_Relation.PositiveSet.Add(value); break; - case Field.DatItem_Setting_Value: + case Field.DatItem_Condition_Value: if (negate) - DatItem_Setting_Value.NegativeSet.Add(value); + DatItem_Condition_Value.NegativeSet.Add(value); else - DatItem_Setting_Value.PositiveSet.Add(value); + DatItem_Condition_Value.PositiveSet.Add(value); break; - case Field.DatItem_Setting_Default: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Setting_Default.Neutral = false; + // Control + case Field.DatItem_Control_Type: + if (negate) + DatItem_Control_Type.NegativeSet.Add(value); else - DatItem_Setting_Default.Neutral = true; + DatItem_Control_Type.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Player: + if (negate) + DatItem_Control_Player.NegativeSet.Add(value); + else + DatItem_Control_Player.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Buttons: + if (negate) + DatItem_Control_Buttons.NegativeSet.Add(value); + else + DatItem_Control_Buttons.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_RegButtons: + if (negate) + DatItem_Control_RegButtons.NegativeSet.Add(value); + else + DatItem_Control_RegButtons.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Minimum: + if (negate) + DatItem_Control_Minimum.NegativeSet.Add(value); + else + DatItem_Control_Minimum.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Maximum: + if (negate) + DatItem_Control_Maximum.NegativeSet.Add(value); + else + DatItem_Control_Maximum.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Sensitivity: + if (negate) + DatItem_Control_Sensitivity.NegativeSet.Add(value); + else + DatItem_Control_Sensitivity.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_KeyDelta: + if (negate) + DatItem_Control_KeyDelta.NegativeSet.Add(value); + else + DatItem_Control_KeyDelta.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Reverse: + if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) + DatItem_Control_Reverse.Neutral = false; + else + DatItem_Control_Reverse.Neutral = true; + break; + + case Field.DatItem_Control_Ways: + if (negate) + DatItem_Control_Ways.NegativeSet.Add(value); + else + DatItem_Control_Ways.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Ways2: + if (negate) + DatItem_Control_Ways2.NegativeSet.Add(value); + else + DatItem_Control_Ways2.PositiveSet.Add(value); + break; + + case Field.DatItem_Control_Ways3: + if (negate) + DatItem_Control_Ways3.NegativeSet.Add(value); + else + DatItem_Control_Ways3.PositiveSet.Add(value); break; // Device @@ -1222,72 +1190,6 @@ namespace SabreTools.Library.Filtering DatItem_Interface.PositiveSet.Add(value); break; - // Devices.Instances - case Field.DatItem_Instances: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Instances.Neutral = false; - else - DatItem_Instances.Neutral = true; - break; - - case Field.DatItem_Instance_Name: - if (negate) - DatItem_Instance_Name.NegativeSet.Add(value); - else - DatItem_Instance_Name.PositiveSet.Add(value); - break; - - case Field.DatItem_Instance_BriefName: - if (negate) - DatItem_Instance_BriefName.NegativeSet.Add(value); - else - DatItem_Instance_BriefName.PositiveSet.Add(value); - break; - - // Devices.Extensions - case Field.DatItem_Extensions: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Extensions.Neutral = false; - else - DatItem_Extensions.Neutral = true; - break; - - case Field.DatItem_Extension_Name: - if (negate) - DatItem_Extension_Name.NegativeSet.Add(value); - else - DatItem_Extension_Name.PositiveSet.Add(value); - break; - - // DipSwitches.Values - case Field.DatItem_Values: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Values.Neutral = false; - else - DatItem_Values.Neutral = true; - break; - - case Field.DatItem_Value_Name: - if (negate) - DatItem_Value_Name.NegativeSet.Add(value); - else - DatItem_Value_Name.PositiveSet.Add(value); - break; - - case Field.DatItem_Value_Value: - if (negate) - DatItem_Value_Value.NegativeSet.Add(value); - else - DatItem_Value_Value.PositiveSet.Add(value); - break; - - case Field.DatItem_Value_Default: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Value_Default.Neutral = false; - else - DatItem_Value_Default.Neutral = true; - break; - // Display case Field.DatItem_DisplayType: if (negate) @@ -1409,6 +1311,14 @@ namespace SabreTools.Library.Filtering DatItem_SaveStateStatus.Positive |= value.AsSupported(); break; + // Extension + case Field.DatItem_Extension_Name: + if (negate) + DatItem_Extension_Name.NegativeSet.Add(value); + else + DatItem_Extension_Name.PositiveSet.Add(value); + break; + // Feature case Field.DatItem_FeatureType: if (negate) @@ -1460,114 +1370,44 @@ namespace SabreTools.Library.Filtering DatItem_Coins.PositiveSet.Add(value); break; - // Input.Controls - case Field.DatItem_Controls: + // Instance + case Field.DatItem_Instance_Name: + if (negate) + DatItem_Instance_Name.NegativeSet.Add(value); + else + DatItem_Instance_Name.PositiveSet.Add(value); + break; + + case Field.DatItem_Instance_BriefName: + if (negate) + DatItem_Instance_BriefName.NegativeSet.Add(value); + else + DatItem_Instance_BriefName.PositiveSet.Add(value); + break; + + // Location + case Field.DatItem_Location_Name: + if (negate) + DatItem_Location_Name.NegativeSet.Add(value); + else + DatItem_Location_Name.PositiveSet.Add(value); + break; + + case Field.DatItem_Location_Number: + if (negate) + DatItem_Location_Number.NegativeSet.Add(value); + else + DatItem_Location_Number.PositiveSet.Add(value); + break; + + case Field.DatItem_Location_Inverted: if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Controls.Neutral = false; + DatItem_Location_Inverted.Neutral = false; else - DatItem_Controls.Neutral = true; + DatItem_Location_Inverted.Neutral = true; break; - case Field.DatItem_Control_Type: - if (negate) - DatItem_Control_Type.NegativeSet.Add(value); - else - DatItem_Control_Type.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Player: - if (negate) - DatItem_Control_Player.NegativeSet.Add(value); - else - DatItem_Control_Player.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Buttons: - if (negate) - DatItem_Control_Buttons.NegativeSet.Add(value); - else - DatItem_Control_Buttons.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_RegButtons: - if (negate) - DatItem_Control_RegButtons.NegativeSet.Add(value); - else - DatItem_Control_RegButtons.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Minimum: - if (negate) - DatItem_Control_Minimum.NegativeSet.Add(value); - else - DatItem_Control_Minimum.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Maximum: - if (negate) - DatItem_Control_Maximum.NegativeSet.Add(value); - else - DatItem_Control_Maximum.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Sensitivity: - if (negate) - DatItem_Control_Sensitivity.NegativeSet.Add(value); - else - DatItem_Control_Sensitivity.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_KeyDelta: - if (negate) - DatItem_Control_KeyDelta.NegativeSet.Add(value); - else - DatItem_Control_KeyDelta.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Reverse: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Control_Reverse.Neutral = false; - else - DatItem_Control_Reverse.Neutral = true; - break; - - case Field.DatItem_Control_Ways: - if (negate) - DatItem_Control_Ways.NegativeSet.Add(value); - else - DatItem_Control_Ways.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Ways2: - if (negate) - DatItem_Control_Ways2.NegativeSet.Add(value); - else - DatItem_Control_Ways2.PositiveSet.Add(value); - break; - - case Field.DatItem_Control_Ways3: - if (negate) - DatItem_Control_Ways3.NegativeSet.Add(value); - else - DatItem_Control_Ways3.PositiveSet.Add(value); - break; - - // Port.Analogs - case Field.DatItem_Analogs: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_Analogs.Neutral = false; - else - DatItem_Analogs.Neutral = true; - break; - - case Field.DatItem_Analog_Mask: - if (negate) - DatItem_Analog_Mask.NegativeSet.Add(value); - else - DatItem_Analog_Mask.PositiveSet.Add(value); - break; - - // Ram Option + // RamOption case Field.DatItem_Content: if (negate) DatItem_Content.NegativeSet.Add(value); @@ -1583,14 +1423,29 @@ namespace SabreTools.Library.Filtering DatItem_Language.PositiveSet.Add(value); break; - // Slots.SlotOptions - case Field.DatItem_SlotOptions: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - DatItem_SlotOptions.Neutral = false; + // Setting + case Field.DatItem_Setting_Name: + if (negate) + DatItem_Setting_Name.NegativeSet.Add(value); else - DatItem_SlotOptions.Neutral = true; + DatItem_Setting_Name.PositiveSet.Add(value); break; + case Field.DatItem_Setting_Value: + if (negate) + DatItem_Setting_Value.NegativeSet.Add(value); + else + DatItem_Setting_Value.PositiveSet.Add(value); + break; + + case Field.DatItem_Setting_Default: + if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) + DatItem_Setting_Default.Neutral = false; + else + DatItem_Setting_Default.Neutral = true; + break; + + // SlotOption case Field.DatItem_SlotOption_Name: if (negate) DatItem_SlotOption_Name.NegativeSet.Add(value); @@ -1612,7 +1467,7 @@ namespace SabreTools.Library.Filtering DatItem_SlotOption_Default.Neutral = true; break; - // Software List + // SoftwareList case Field.DatItem_SoftwareListStatus: if (negate) DatItem_SoftwareListStatus.Negative |= value.AsSoftwareListStatus(); @@ -1637,9 +1492,9 @@ namespace SabreTools.Library.Filtering #endregion - #endregion // Item-Specifics + #endregion // Item-Specific - #endregion // DatItem Filters + #endregion // DatItem Filters } } diff --git a/SabreTools.Library/Tools/Converters.cs b/SabreTools.Library/Tools/Converters.cs index 23aff73d..4edda1e0 100644 --- a/SabreTools.Library/Tools/Converters.cs +++ b/SabreTools.Library/Tools/Converters.cs @@ -661,90 +661,19 @@ namespace SabreTools.Library.Tools { #region Common - case "name": - return Field.DatItem_Name; - case "type": return Field.DatItem_Type; #endregion - #region AttractMode - - case "altname": - case "alt name": - case "alt-name": - case "altromname": - case "alt romname": - case "alt-romname": - return Field.DatItem_AltName; - - case "alttitle": - case "alt title": - case "alt-title": - case "altromtitle": - case "alt romtitle": - case "alt-romtitle": - return Field.DatItem_AltTitle; - - #endregion - - #region OpenMSX - - case "original": - return Field.DatItem_Original; - - case "subtype": - case "sub_type": - case "openmsxsubtype": - case "openmsx_subtype": - return Field.DatItem_OpenMSXSubType; - - case "openmsxtype": - case "openmsx_type": - return Field.DatItem_OpenMSXType; - - case "remark": - return Field.DatItem_Remark; - - case "boot": - return Field.DatItem_Boot; - - #endregion - - #region SoftwareList - - case "part": - return Field.DatItem_Part; - - case "partname": - case "part_name": - return Field.DatItem_Part_Name; - - case "partinterface": - case "part_interface": - return Field.DatItem_Part_Interface; - - case "features": - return Field.DatItem_Features; - - case "feature_name": - return Field.DatItem_Feature_Name; - - case "feature_value": - return Field.DatItem_Feature_Value; - - case "loadflag": - case "load_flag": - return Field.DatItem_LoadFlag; - - #endregion - #region Item-Specific #region Actionable // Rom + case "name": + return Field.DatItem_Name; + case "bios": return Field.DatItem_Bios; @@ -820,6 +749,43 @@ namespace SabreTools.Library.Tools case "inverted": return Field.DatItem_Inverted; + // Rom (AttractMode) + case "altname": + case "alt name": + case "alt-name": + case "altromname": + case "alt romname": + case "alt-romname": + return Field.DatItem_AltName; + + case "alttitle": + case "alt title": + case "alt-title": + case "altromtitle": + case "alt romtitle": + case "alt-romtitle": + return Field.DatItem_AltTitle; + + // Rom (OpenMSX) + case "original": + return Field.DatItem_Original; + + case "subtype": + case "sub_type": + case "openmsxsubtype": + case "openmsx_subtype": + return Field.DatItem_OpenMSXSubType; + + case "openmsxtype": + case "openmsx_type": + return Field.DatItem_OpenMSXType; + + case "remark": + return Field.DatItem_Remark; + + case "boot": + return Field.DatItem_Boot; + // Rom (SoftwareList) case "areaname": case "area_name": @@ -837,6 +803,24 @@ namespace SabreTools.Library.Tools case "area_endianness": return Field.DatItem_AreaEndianness; + case "loadflag": + case "load_flag": + return Field.DatItem_LoadFlag; + + case "partname": + case "part_name": + return Field.DatItem_Part_Name; + + case "partinterface": + case "part_interface": + return Field.DatItem_Part_Interface; + + case "part_feature_name": + return Field.DatItem_Part_Feature_Name; + + case "part_feature_value": + return Field.DatItem_Part_Feature_Value; + case "value": return Field.DatItem_Value; @@ -855,24 +839,9 @@ namespace SabreTools.Library.Tools case "default": return Field.DatItem_Default; - case "conditions": - return Field.DatItem_Conditions; - - case "condition_tag": - return Field.DatItem_Condition_Tag; - - case "condition_mask": - return Field.DatItem_Condition_Mask; - - case "condition_relation": - return Field.DatItem_Condition_Relation; - - case "condition_value": - return Field.DatItem_Condition_Value; - // Analog - case "mask": - return Field.DatItem_Mask; + case "analog_mask": + return Field.DatItem_Analog_Mask; // BiosSet case "description": @@ -892,46 +861,60 @@ namespace SabreTools.Library.Tools return Field.DatItem_Clock; // Condition + case "mask": + return Field.DatItem_Mask; + case "relation": return Field.DatItem_Relation; - // Configuration - case "locations": - return Field.DatItem_Locations; + case "condition_tag": + return Field.DatItem_Condition_Tag; - case "location_name": - return Field.DatItem_Location_Name; + case "condition_mask": + return Field.DatItem_Condition_Mask; - case "location_number": - return Field.DatItem_Location_Number; + case "condition_relation": + return Field.DatItem_Condition_Relation; - case "location_inverted": - return Field.DatItem_Location_Inverted; + case "condition_value": + return Field.DatItem_Condition_Value; - case "settings": - return Field.DatItem_Settings; + // Control + case "control_type": + return Field.DatItem_Control_Type; - case "setting_name": - return Field.DatItem_Setting_Name; + case "control_player": + return Field.DatItem_Control_Player; - case "setting_value": - return Field.DatItem_Setting_Value; + case "control_buttons": + return Field.DatItem_Control_Buttons; - case "setting_default": - return Field.DatItem_Setting_Default; + case "control_regbuttons": + return Field.DatItem_Control_RegButtons; - // DIP Switch - case "values": - return Field.DatItem_Values; + case "control_minimum": + return Field.DatItem_Control_Minimum; - case "value_name": - return Field.DatItem_Value_Name; + case "control_maximum": + return Field.DatItem_Control_Maximum; - case "value_value": - return Field.DatItem_Value_Value; + case "control_sensitivity": + return Field.DatItem_Control_Sensitivity; - case "value_default": - return Field.DatItem_Value_Default; + case "control_keydelta": + return Field.DatItem_Control_KeyDelta; + + case "control_reverse": + return Field.DatItem_Control_Reverse; + + case "control_ways": + return Field.DatItem_Control_Ways; + + case "control_ways2": + return Field.DatItem_Control_Ways2; + + case "control_ways3": + return Field.DatItem_Control_Ways3; // Device case "devicetype": @@ -946,21 +929,6 @@ namespace SabreTools.Library.Tools case "interface": return Field.DatItem_Interface; - case "instances": - return Field.DatItem_Instances; - - case "instance_name": - return Field.DatItem_Instance_Name; - - case "instance_briefname": - return Field.DatItem_Instance_BriefName; - - case "extensions": - return Field.DatItem_Extensions; - - case "extension_name": - return Field.DatItem_Extension_Name; - // Display case "displaytype": return Field.DatItem_DisplayType; @@ -1014,6 +982,10 @@ namespace SabreTools.Library.Tools case "savestatestatus": return Field.DatItem_SaveStateStatus; + // Extension + case "extension_name": + return Field.DatItem_Extension_Name; + // Feature case "featuretype": return Field.DatItem_FeatureType; @@ -1037,53 +1009,24 @@ namespace SabreTools.Library.Tools case "coins": return Field.DatItem_Coins; - case "controls": - return Field.DatItem_Controls; + // Instance + case "instance_name": + return Field.DatItem_Instance_Name; - case "control_type": - return Field.DatItem_Control_Type; + case "instance_briefname": + return Field.DatItem_Instance_BriefName; - case "control_player": - return Field.DatItem_Control_Player; + // Location + case "location_name": + return Field.DatItem_Location_Name; - case "control_buttons": - return Field.DatItem_Control_Buttons; + case "location_number": + return Field.DatItem_Location_Number; - case "control_regbuttons": - return Field.DatItem_Control_RegButtons; + case "location_inverted": + return Field.DatItem_Location_Inverted; - case "control_minimum": - return Field.DatItem_Control_Minimum; - - case "control_maximum": - return Field.DatItem_Control_Maximum; - - case "control_sensitivity": - return Field.DatItem_Control_Sensitivity; - - case "control_keydelta": - return Field.DatItem_Control_KeyDelta; - - case "control_reverse": - return Field.DatItem_Control_Reverse; - - case "control_ways": - return Field.DatItem_Control_Ways; - - case "control_ways2": - return Field.DatItem_Control_Ways2; - - case "control_ways3": - return Field.DatItem_Control_Ways3; - - // Port - case "analogs": - return Field.DatItem_Analogs; - - case "analog_mask": - return Field.DatItem_Analog_Mask; - - // Ram Option + // RamOption case "content": return Field.DatItem_Content; @@ -1091,10 +1034,20 @@ namespace SabreTools.Library.Tools case "language": return Field.DatItem_Language; - // Slot - case "slotoptions": - return Field.DatItem_SlotOptions; + // Setting + case "setting_name": + case "value_name": + return Field.DatItem_Setting_Name; + case "setting_value": + case "value_value": + return Field.DatItem_Setting_Value; + + case "setting_default": + case "value_default": + return Field.DatItem_Setting_Default; + + // SlotOption case "slotoption_name": return Field.DatItem_SlotOption_Name; @@ -1104,7 +1057,7 @@ namespace SabreTools.Library.Tools case "slotoption_default": return Field.DatItem_SlotOption_Default; - // Software List + // SoftwareList case "softwareliststatus": case "softwarelist_status": return Field.DatItem_SoftwareListStatus; @@ -1377,8 +1330,6 @@ namespace SabreTools.Library.Tools case "part interface": case "part-interface": return Field.DatItem_Part_Interface; - case "features": - return Field.DatItem_Features; case "areaname": case "area name": case "area-name": @@ -1504,9 +1455,6 @@ namespace SabreTools.Library.Tools case "default": return Field.DatItem_Default; - case "conditions": - return Field.DatItem_Conditions; - case "condition_tag": return Field.DatItem_Condition_Tag;