diff --git a/SabreTools.DatItems/DatItemTool.cs b/SabreTools.DatItems/DatItemTool.cs
index 847f724f..b1225371 100644
--- a/SabreTools.DatItems/DatItemTool.cs
+++ b/SabreTools.DatItems/DatItemTool.cs
@@ -1062,12 +1062,10 @@ namespace SabreTools.DatItems
/// DatItem to set fields on
/// DatItem mappings dictionary
/// Machine mappings dictionary
- /// True if this is a subitem, false otherwise
public static void SetFields(
DatItem datItem,
Dictionary datItemMappings,
- Dictionary machineMappings,
- bool sub = false)
+ Dictionary machineMappings)
{
if (datItem == null)
return;
@@ -1085,777 +1083,41 @@ namespace SabreTools.DatItems
#endregion
- #region Adjuster
-
- if (datItem is Adjuster adjuster)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Default))
- adjuster.Default = datItemMappings[DatItemField.Default].AsYesNo();
-
- // Field.DatItem_Conditions does not apply here
- if (adjuster.ConditionsSpecified)
- {
- foreach (Condition subCondition in adjuster.Conditions)
- {
- SetFields(subCondition, datItemMappings, machineMappings, true);
- }
- }
- }
-
- #endregion
-
- #region Analog
-
- else if (datItem is Analog analog)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Analog_Mask))
- analog.Mask = datItemMappings[DatItemField.Analog_Mask];
- }
-
- #endregion
-
- #region BiosSet
-
- else if (datItem is BiosSet biosSet)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Description))
- biosSet.Description = datItemMappings[DatItemField.Description];
-
- if (datItemMappings.Keys.Contains(DatItemField.Default))
- biosSet.Default = datItemMappings[DatItemField.Default].AsYesNo();
- }
-
- #endregion
-
- #region Chip
-
- else if (datItem is Chip chip)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- chip.Tag = datItemMappings[DatItemField.Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.ChipType))
- chip.ChipType = datItemMappings[DatItemField.ChipType].AsChipType();
-
- if (datItemMappings.Keys.Contains(DatItemField.Clock))
- chip.Clock = Utilities.CleanLong(datItemMappings[DatItemField.Clock]);
- }
-
- #endregion
-
- #region Condition
-
- else if (datItem is Condition condition)
- {
- if (sub)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Condition_Tag))
- condition.Tag = datItemMappings[DatItemField.Condition_Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.Condition_Mask))
- condition.Mask = datItemMappings[DatItemField.Condition_Mask];
-
- if (datItemMappings.Keys.Contains(DatItemField.Condition_Relation))
- condition.Relation = datItemMappings[DatItemField.Condition_Relation].AsRelation();
-
- if (datItemMappings.Keys.Contains(DatItemField.Condition_Value))
- condition.Value = datItemMappings[DatItemField.Condition_Value];
- }
- else
- {
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- condition.Tag = datItemMappings[DatItemField.Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.Mask))
- condition.Mask = datItemMappings[DatItemField.Mask];
-
- if (datItemMappings.Keys.Contains(DatItemField.Relation))
- condition.Relation = datItemMappings[DatItemField.Relation].AsRelation();
-
- if (datItemMappings.Keys.Contains(DatItemField.Value))
- condition.Value = datItemMappings[DatItemField.Value];
- }
- }
-
- #endregion
-
- #region Configuration
-
- else if (datItem is Configuration configuration)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- configuration.Tag = datItemMappings[DatItemField.Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.Mask))
- configuration.Mask = datItemMappings[DatItemField.Mask];
-
- if (configuration.ConditionsSpecified)
- {
- foreach (Condition subCondition in configuration.Conditions)
- {
- SetFields(subCondition, datItemMappings, machineMappings, true);
- }
- }
-
- if (configuration.LocationsSpecified)
- {
- foreach (Location subLocation in configuration.Locations)
- {
- SetFields(subLocation, datItemMappings, machineMappings);
- }
- }
-
- if (configuration.SettingsSpecified)
- {
- foreach (Setting subSetting in configuration.Settings)
- {
- SetFields(subSetting, datItemMappings, machineMappings);
- }
- }
- }
-
- #endregion
-
- #region Control
-
- else if (datItem is Control control)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Control_Type))
- control.ControlType = datItemMappings[DatItemField.Control_Type].AsControlType();
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Player))
- control.Player = Utilities.CleanLong(datItemMappings[DatItemField.Control_Player]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Buttons))
- control.Buttons = Utilities.CleanLong(datItemMappings[DatItemField.Control_Buttons]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_RequiredButtons))
- control.RequiredButtons = Utilities.CleanLong(datItemMappings[DatItemField.Control_RequiredButtons]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Minimum))
- control.Minimum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Minimum]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Maximum))
- control.Maximum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Maximum]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Sensitivity))
- control.Sensitivity = Utilities.CleanLong(datItemMappings[DatItemField.Control_Sensitivity]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_KeyDelta))
- control.KeyDelta = Utilities.CleanLong(datItemMappings[DatItemField.Control_KeyDelta]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Reverse))
- control.Reverse = datItemMappings[DatItemField.Control_Reverse].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Ways))
- control.Ways = datItemMappings[DatItemField.Control_Ways];
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Ways2))
- control.Ways2 = datItemMappings[DatItemField.Control_Ways2];
-
- if (datItemMappings.Keys.Contains(DatItemField.Control_Ways3))
- control.Ways3 = datItemMappings[DatItemField.Control_Ways3];
- }
-
- #endregion
-
- #region DataArea
-
- else if (datItem is DataArea dataArea)
- {
- if (datItemMappings.Keys.Contains(DatItemField.AreaSize))
- dataArea.Size = Utilities.CleanLong(datItemMappings[DatItemField.AreaSize]);
-
- if (datItemMappings.Keys.Contains(DatItemField.AreaWidth))
- dataArea.Width = Utilities.CleanLong(datItemMappings[DatItemField.AreaWidth]);
-
- if (datItemMappings.Keys.Contains(DatItemField.AreaEndianness))
- dataArea.Endianness = datItemMappings[DatItemField.AreaEndianness].AsEndianness();
- }
-
- #endregion
-
- #region Device
-
- else if (datItem is Device device)
- {
- if (datItemMappings.Keys.Contains(DatItemField.DeviceType))
- device.DeviceType = datItemMappings[DatItemField.DeviceType].AsDeviceType();
-
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- device.Tag = datItemMappings[DatItemField.Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.FixedImage))
- device.FixedImage = datItemMappings[DatItemField.FixedImage];
-
- if (datItemMappings.Keys.Contains(DatItemField.Mandatory))
- device.Mandatory = Utilities.CleanLong(datItemMappings[DatItemField.Mandatory]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Interface))
- device.Interface = datItemMappings[DatItemField.Interface];
-
- if (device.InstancesSpecified)
- {
- foreach (Instance subInstance in device.Instances)
- {
- SetFields(subInstance, datItemMappings, machineMappings);
- }
- }
-
- if (device.ExtensionsSpecified)
- {
- foreach (Extension subExtension in device.Extensions)
- {
- SetFields(subExtension, datItemMappings, machineMappings);
- }
- }
- }
-
- #endregion
-
- #region DipSwitch
-
- else if (datItem is DipSwitch dipSwitch)
- {
- #region Common
-
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- dipSwitch.Tag = datItemMappings[DatItemField.Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.Mask))
- dipSwitch.Mask = datItemMappings[DatItemField.Mask];
-
- if (dipSwitch.ConditionsSpecified)
- {
- foreach (Condition subCondition in dipSwitch.Conditions)
- {
- SetFields(subCondition, datItemMappings, machineMappings, true);
- }
- }
-
- if (dipSwitch.LocationsSpecified)
- {
- foreach (Location subLocation in dipSwitch.Locations)
- {
- SetFields(subLocation, datItemMappings, machineMappings);
- }
- }
-
- if (dipSwitch.ValuesSpecified)
- {
- foreach (Setting subValue in dipSwitch.Values)
- {
- SetFields(subValue, datItemMappings, machineMappings);
- }
- }
-
- #endregion
-
- #region SoftwareList
-
- // Handle Part-specific fields
- if (dipSwitch.Part == null)
- dipSwitch.Part = new Part();
-
- SetFields(dipSwitch.Part, datItemMappings, machineMappings);
-
- #endregion
- }
-
- #endregion
-
- #region Disk
-
- else if (datItem is Disk disk)
- {
- #region Common
-
- if (datItemMappings.Keys.Contains(DatItemField.MD5))
- disk.MD5 = datItemMappings[DatItemField.MD5];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA1))
- disk.SHA1 = datItemMappings[DatItemField.SHA1];
-
- if (datItemMappings.Keys.Contains(DatItemField.Merge))
- disk.MergeTag = datItemMappings[DatItemField.Merge];
-
- if (datItemMappings.Keys.Contains(DatItemField.Region))
- disk.Region = datItemMappings[DatItemField.Region];
-
- if (datItemMappings.Keys.Contains(DatItemField.Index))
- disk.Index = datItemMappings[DatItemField.Index];
-
- if (datItemMappings.Keys.Contains(DatItemField.Writable))
- disk.Writable = datItemMappings[DatItemField.Writable].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Status))
- disk.ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.Optional))
- disk.Optional = datItemMappings[DatItemField.Optional].AsYesNo();
-
- #endregion
-
- #region SoftwareList
-
- if (disk.DiskArea == null)
- disk.DiskArea = new DiskArea();
-
- SetFields(disk.DiskArea, datItemMappings, machineMappings);
-
- if (disk.Part == null)
- disk.Part = new Part();
-
- SetFields(disk.Part, datItemMappings, machineMappings);
-
- #endregion
- }
-
- #endregion
-
- #region Display
-
- else if (datItem is Display display)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- display.Tag = datItemMappings[DatItemField.Tag];
-
- if (datItemMappings.Keys.Contains(DatItemField.DisplayType))
- display.DisplayType = datItemMappings[DatItemField.DisplayType].AsDisplayType();
-
- if (datItemMappings.Keys.Contains(DatItemField.Rotate))
- display.Rotate = Utilities.CleanLong(datItemMappings[DatItemField.Rotate]);
-
- if (datItemMappings.Keys.Contains(DatItemField.FlipX))
- display.FlipX = datItemMappings[DatItemField.FlipX].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Width))
- display.Width = Utilities.CleanLong(datItemMappings[DatItemField.Width]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Height))
- display.Height = Utilities.CleanLong(datItemMappings[DatItemField.Height]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Refresh))
- {
- if (Double.TryParse(datItemMappings[DatItemField.Refresh], out double refresh))
- display.Refresh = refresh;
- }
-
- if (datItemMappings.Keys.Contains(DatItemField.PixClock))
- display.PixClock = Utilities.CleanLong(datItemMappings[DatItemField.PixClock]);
-
- if (datItemMappings.Keys.Contains(DatItemField.HTotal))
- display.HTotal = Utilities.CleanLong(datItemMappings[DatItemField.HTotal]);
-
- if (datItemMappings.Keys.Contains(DatItemField.HBEnd))
- display.HBEnd = Utilities.CleanLong(datItemMappings[DatItemField.HBEnd]);
-
- if (datItemMappings.Keys.Contains(DatItemField.HBStart))
- display.HBStart = Utilities.CleanLong(datItemMappings[DatItemField.HBStart]);
-
- if (datItemMappings.Keys.Contains(DatItemField.VTotal))
- display.VTotal = Utilities.CleanLong(datItemMappings[DatItemField.VTotal]);
-
- if (datItemMappings.Keys.Contains(DatItemField.VBEnd))
- display.VBEnd = Utilities.CleanLong(datItemMappings[DatItemField.VBEnd]);
-
- if (datItemMappings.Keys.Contains(DatItemField.VBStart))
- display.VBStart = Utilities.CleanLong(datItemMappings[DatItemField.VBStart]);
- }
-
- #endregion
-
- #region Driver
-
- else if (datItem is Driver driver)
- {
- if (datItemMappings.Keys.Contains(DatItemField.SupportStatus))
- driver.Status = datItemMappings[DatItemField.SupportStatus].AsSupportStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.EmulationStatus))
- driver.Emulation = datItemMappings[DatItemField.EmulationStatus].AsSupportStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.CocktailStatus))
- driver.Cocktail = datItemMappings[DatItemField.CocktailStatus].AsSupportStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.SaveStateStatus))
- driver.SaveState = datItemMappings[DatItemField.SaveStateStatus].AsSupported();
- }
-
- #endregion
-
- #region Feature
-
- else if (datItem is Feature feature)
- {
- if (datItemMappings.Keys.Contains(DatItemField.FeatureType))
- feature.Type = datItemMappings[DatItemField.FeatureType].AsFeatureType();
-
- if (datItemMappings.Keys.Contains(DatItemField.FeatureStatus))
- feature.Status = datItemMappings[DatItemField.FeatureStatus].AsFeatureStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.FeatureOverall))
- feature.Overall = datItemMappings[DatItemField.FeatureOverall].AsFeatureStatus();
- }
-
- #endregion
-
- #region Info
-
- else if (datItem is Info info)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Value))
- info.Value = datItemMappings[DatItemField.Value];
- }
-
- #endregion
-
- #region Input
-
- else if (datItem is Input input)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Service))
- input.Service = datItemMappings[DatItemField.Service].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Tilt))
- input.Tilt = datItemMappings[DatItemField.Tilt].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Players))
- input.Players = Utilities.CleanLong(datItemMappings[DatItemField.Players]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Coins))
- input.Coins = Utilities.CleanLong(datItemMappings[DatItemField.Coins]);
-
- if (input.ControlsSpecified)
- {
- foreach (Control subControl in input.Controls)
- {
- SetFields(subControl, datItemMappings, machineMappings);
- }
- }
- }
-
- #endregion
-
- #region Instance
-
- else if (datItem is Instance instance)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Instance_BriefName))
- instance.BriefName = datItemMappings[DatItemField.Instance_BriefName];
- }
-
- #endregion
-
- #region Location
-
- else if (datItem is Location location)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Location_Number))
- location.Number = Utilities.CleanLong(datItemMappings[DatItemField.Location_Number]);
-
- if (datItemMappings.Keys.Contains(DatItemField.Location_Inverted))
- location.Inverted = datItemMappings[DatItemField.Location_Inverted].AsYesNo();
- }
-
- #endregion
-
- #region Media
-
- else if (datItem is Media media)
- {
- if (datItemMappings.Keys.Contains(DatItemField.MD5))
- media.MD5 = datItemMappings[DatItemField.MD5];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA1))
- media.SHA1 = datItemMappings[DatItemField.SHA1];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA256))
- media.SHA256 = datItemMappings[DatItemField.SHA256];
-
- if (datItemMappings.Keys.Contains(DatItemField.SpamSum))
- media.SpamSum = datItemMappings[DatItemField.SpamSum];
- }
-
- #endregion
-
- #region Part
-
- else if (datItem is Part part)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Part_Name))
- part.Name = datItemMappings[DatItemField.Part_Name];
-
- if (datItemMappings.Keys.Contains(DatItemField.Part_Interface))
- part.Interface = datItemMappings[DatItemField.Part_Interface];
-
- if (part.FeaturesSpecified)
- {
- foreach (PartFeature subPartFeature in part.Features)
- {
- SetFields(subPartFeature, datItemMappings, machineMappings);
- }
- }
- }
-
- #endregion
-
- #region PartFeature
-
- else if (datItem is PartFeature partFeature)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Name))
- partFeature.Name = datItemMappings[DatItemField.Part_Feature_Name];
-
- if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Value))
- partFeature.Value = datItemMappings[DatItemField.Part_Feature_Value];
- }
-
- #endregion
-
- #region Port
-
- else if (datItem is Port port)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Tag))
- port.Tag = datItemMappings[DatItemField.Tag];
-
- if (port.AnalogsSpecified)
- {
- foreach (Analog subAnalog in port.Analogs)
- {
- SetFields(subAnalog, datItemMappings, machineMappings);
- }
- }
- }
-
- #endregion
-
- #region RamOption
-
- else if (datItem is RamOption ramOption)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Default))
- ramOption.Default = datItemMappings[DatItemField.Default].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Content))
- ramOption.Content = datItemMappings[DatItemField.Content];
- }
-
- #endregion
-
- #region Release
-
- else if (datItem is Release release)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Region))
- release.Region = datItemMappings[DatItemField.Region];
-
- if (datItemMappings.Keys.Contains(DatItemField.Language))
- release.Language = datItemMappings[DatItemField.Language];
-
- if (datItemMappings.Keys.Contains(DatItemField.Date))
- release.Date = datItemMappings[DatItemField.Date];
-
- if (datItemMappings.Keys.Contains(DatItemField.Default))
- release.Default = datItemMappings[DatItemField.Default].AsYesNo();
- }
-
- #endregion
-
- #region Rom
-
- else if (datItem is Rom rom)
- {
- #region Common
-
- if (datItemMappings.Keys.Contains(DatItemField.Bios))
- rom.Bios = datItemMappings[DatItemField.Bios];
-
- if (datItemMappings.Keys.Contains(DatItemField.Size))
- rom.Size = Utilities.CleanLong(datItemMappings[DatItemField.Size]);
-
- if (datItemMappings.Keys.Contains(DatItemField.CRC))
- rom.CRC = datItemMappings[DatItemField.CRC];
-
- if (datItemMappings.Keys.Contains(DatItemField.MD5))
- rom.MD5 = datItemMappings[DatItemField.MD5];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA1))
- rom.SHA1 = datItemMappings[DatItemField.SHA1];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA256))
- rom.SHA256 = datItemMappings[DatItemField.SHA256];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA384))
- rom.SHA384 = datItemMappings[DatItemField.SHA384];
-
- if (datItemMappings.Keys.Contains(DatItemField.SHA512))
- rom.SHA512 = datItemMappings[DatItemField.SHA512];
-
- if (datItemMappings.Keys.Contains(DatItemField.SpamSum))
- rom.SpamSum = datItemMappings[DatItemField.SpamSum];
-
- if (datItemMappings.Keys.Contains(DatItemField.Merge))
- rom.MergeTag = datItemMappings[DatItemField.Merge];
-
- if (datItemMappings.Keys.Contains(DatItemField.Region))
- rom.Region = datItemMappings[DatItemField.Region];
-
- if (datItemMappings.Keys.Contains(DatItemField.Offset))
- rom.Offset = datItemMappings[DatItemField.Offset];
-
- if (datItemMappings.Keys.Contains(DatItemField.Date))
- rom.Date = datItemMappings[DatItemField.Date];
-
- if (datItemMappings.Keys.Contains(DatItemField.Status))
- rom.ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.Optional))
- rom.Optional = datItemMappings[DatItemField.Optional].AsYesNo();
-
- if (datItemMappings.Keys.Contains(DatItemField.Inverted))
- rom.Inverted = datItemMappings[DatItemField.Optional].AsYesNo();
-
- #endregion
-
- #region AttractMode
-
- if (datItemMappings.Keys.Contains(DatItemField.AltName))
- rom.AltName = datItemMappings[DatItemField.AltName];
-
- if (datItemMappings.Keys.Contains(DatItemField.AltTitle))
- rom.AltTitle = datItemMappings[DatItemField.AltTitle];
-
- #endregion
-
- #region OpenMSX
-
- if (datItemMappings.Keys.Contains(DatItemField.Original))
- rom.Original = new Original() { Content = datItemMappings[DatItemField.Original] };
-
- if (datItemMappings.Keys.Contains(DatItemField.OpenMSXSubType))
- rom.OpenMSXSubType = datItemMappings[DatItemField.OpenMSXSubType].AsOpenMSXSubType();
-
- if (datItemMappings.Keys.Contains(DatItemField.OpenMSXType))
- rom.OpenMSXType = datItemMappings[DatItemField.OpenMSXType];
-
- if (datItemMappings.Keys.Contains(DatItemField.Remark))
- rom.Remark = datItemMappings[DatItemField.Remark];
-
- if (datItemMappings.Keys.Contains(DatItemField.Boot))
- rom.Boot = datItemMappings[DatItemField.Boot];
-
- #endregion
-
- #region SoftwareList
-
- if (datItemMappings.Keys.Contains(DatItemField.LoadFlag))
- rom.LoadFlag = datItemMappings[DatItemField.LoadFlag].AsLoadFlag();
-
- if (datItemMappings.Keys.Contains(DatItemField.Value))
- rom.Value = datItemMappings[DatItemField.Value];
-
- if (rom.DataArea == null)
- rom.DataArea = new DataArea();
-
- SetFields(rom.DataArea, datItemMappings, machineMappings);
-
- if (rom.Part == null)
- rom.Part = new Part();
-
- SetFields(rom.Part, datItemMappings, machineMappings);
-
- #endregion
- }
-
- #endregion
-
- #region Setting
-
- else if (datItem is Setting setting)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Setting_Name))
- setting.Name = datItemMappings[DatItemField.Setting_Name];
-
- if (datItemMappings.Keys.Contains(DatItemField.Setting_Value))
- setting.Value = datItemMappings[DatItemField.Setting_Value];
-
- if (datItemMappings.Keys.Contains(DatItemField.Setting_Default))
- setting.Default = datItemMappings[DatItemField.Setting_Default].AsYesNo();
-
- if (setting.ConditionsSpecified)
- {
- foreach (Condition subCondition in setting.Conditions)
- {
- SetFields(subCondition, datItemMappings, machineMappings, true);
- }
- }
- }
-
- #endregion
-
- #region SharedFeature
-
- else if (datItem is SharedFeature sharedFeature)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Value))
- sharedFeature.Value = datItemMappings[DatItemField.Value];
- }
-
- #endregion
-
- #region Slot
-
- else if (datItem is Slot slot)
- {
- if (slot.SlotOptionsSpecified)
- {
- foreach (SlotOption subSlotOption in slot.SlotOptions)
- {
- SetFields(subSlotOption, datItemMappings, machineMappings);
- }
- }
- }
-
- #endregion
-
- #region SlotOption
-
- else if (datItem is SlotOption slotOption)
- {
- if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Name))
- slotOption.Name = datItemMappings[DatItemField.SlotOption_Name];
-
- if (datItemMappings.Keys.Contains(DatItemField.SlotOption_DeviceName))
- slotOption.DeviceName = datItemMappings[DatItemField.SlotOption_DeviceName];
-
- if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Default))
- slotOption.Default = datItemMappings[DatItemField.SlotOption_Default].AsYesNo();
- }
-
- #endregion
-
- #region SoftwareList
-
- else if (datItem is SoftwareList softwareList)
- {
- if (datItemMappings.Keys.Contains(DatItemField.SoftwareListStatus))
- softwareList.Status = datItemMappings[DatItemField.SoftwareListStatus].AsSoftwareListStatus();
-
- if (datItemMappings.Keys.Contains(DatItemField.Filter))
- softwareList.Filter = datItemMappings[DatItemField.Filter];
- }
-
- #endregion
-
- #region Sound
-
- else if (datItem is Sound sound)
- {
- if (datItemMappings.Keys.Contains(DatItemField.Channels))
- sound.Channels = Utilities.CleanLong(datItemMappings[DatItemField.Channels]);
- }
+ #region Item-Specific
+
+ if (datItem is Adjuster) SetFields(datItem as Adjuster, datItemMappings);
+ else if (datItem is Analog) SetFields(datItem as Analog, datItemMappings);
+ else if (datItem is BiosSet) SetFields(datItem as BiosSet, datItemMappings);
+ else if (datItem is Chip) SetFields(datItem as Chip, datItemMappings);
+ else if (datItem is Condition) SetFields(datItem as Condition, datItemMappings);
+ else if (datItem is Configuration) SetFields(datItem as Configuration, datItemMappings);
+ else if (datItem is Control) SetFields(datItem as Control, datItemMappings);
+ else if (datItem is DataArea) SetFields(datItem as DataArea, datItemMappings);
+ else if (datItem is Device) SetFields(datItem as Device, datItemMappings);
+ else if (datItem is DipSwitch) SetFields(datItem as DipSwitch, datItemMappings);
+ else if (datItem is Disk) SetFields(datItem as Disk, datItemMappings);
+ else if (datItem is DiskArea) SetFields(datItem as DiskArea, datItemMappings);
+ else if (datItem is Display) SetFields(datItem as Display, datItemMappings);
+ else if (datItem is Driver) SetFields(datItem as Driver, datItemMappings);
+ else if (datItem is Extension) SetFields(datItem as Extension, datItemMappings);
+ else if (datItem is Feature) SetFields(datItem as Feature, datItemMappings);
+ else if (datItem is Info) SetFields(datItem as Info, datItemMappings);
+ else if (datItem is Input) SetFields(datItem as Input, datItemMappings);
+ else if (datItem is Instance) SetFields(datItem as Instance, datItemMappings);
+ else if (datItem is Location) SetFields(datItem as Location, datItemMappings);
+ else if (datItem is Media) SetFields(datItem as Media, datItemMappings);
+ else if (datItem is Part) SetFields(datItem as Part, datItemMappings);
+ else if (datItem is PartFeature) SetFields(datItem as PartFeature, datItemMappings);
+ else if (datItem is Port) SetFields(datItem as Port, datItemMappings);
+ else if (datItem is RamOption) SetFields(datItem as RamOption, datItemMappings);
+ else if (datItem is Release) SetFields(datItem as Release, datItemMappings);
+ else if (datItem is Rom) SetFields(datItem as Rom, datItemMappings);
+ else if (datItem is Setting) SetFields(datItem as Setting, datItemMappings);
+ else if (datItem is SharedFeature) SetFields(datItem as SharedFeature, datItemMappings);
+ else if (datItem is Slot) SetFields(datItem as Slot, datItemMappings);
+ else if (datItem is SlotOption) SetFields(datItem as SlotOption, datItemMappings);
+ else if (datItem is SoftwareList) SetFields(datItem as SoftwareList, datItemMappings);
+ else if (datItem is Sound) SetFields(datItem as Sound, datItemMappings);
#endregion
}
@@ -2007,6 +1269,840 @@ namespace SabreTools.DatItems
#endregion
}
+ ///
+ /// Set fields with given values
+ ///
+ /// Adjuster to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Adjuster adjuster, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Default))
+ adjuster.Default = datItemMappings[DatItemField.Default].AsYesNo();
+
+ // Field.DatItem_Conditions does not apply here
+ if (adjuster.ConditionsSpecified)
+ {
+ foreach (Condition subCondition in adjuster.Conditions)
+ {
+ SetFields(subCondition, datItemMappings, true);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Analog to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Analog analog, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Analog_Mask))
+ analog.Mask = datItemMappings[DatItemField.Analog_Mask];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// BiosSet to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(BiosSet biosSet, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Description))
+ biosSet.Description = datItemMappings[DatItemField.Description];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Default))
+ biosSet.Default = datItemMappings[DatItemField.Default].AsYesNo();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Chip to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Chip chip, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ chip.Tag = datItemMappings[DatItemField.Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.ChipType))
+ chip.ChipType = datItemMappings[DatItemField.ChipType].AsChipType();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Clock))
+ chip.Clock = Utilities.CleanLong(datItemMappings[DatItemField.Clock]);
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Condition to remove replace fields in
+ /// DatItem mappings dictionary
+ /// True if this is a subitem, false otherwise
+ private static void SetFields(Condition condition, Dictionary datItemMappings, bool sub = false)
+ {
+ if (sub)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Condition_Tag))
+ condition.Tag = datItemMappings[DatItemField.Condition_Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Condition_Mask))
+ condition.Mask = datItemMappings[DatItemField.Condition_Mask];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Condition_Relation))
+ condition.Relation = datItemMappings[DatItemField.Condition_Relation].AsRelation();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Condition_Value))
+ condition.Value = datItemMappings[DatItemField.Condition_Value];
+ }
+ else
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ condition.Tag = datItemMappings[DatItemField.Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Mask))
+ condition.Mask = datItemMappings[DatItemField.Mask];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Relation))
+ condition.Relation = datItemMappings[DatItemField.Relation].AsRelation();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Value))
+ condition.Value = datItemMappings[DatItemField.Value];
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Configuration to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Configuration configuration, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ configuration.Tag = datItemMappings[DatItemField.Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Mask))
+ configuration.Mask = datItemMappings[DatItemField.Mask];
+
+ if (configuration.ConditionsSpecified)
+ {
+ foreach (Condition subCondition in configuration.Conditions)
+ {
+ SetFields(subCondition, datItemMappings, true);
+ }
+ }
+
+ if (configuration.LocationsSpecified)
+ {
+ foreach (Location subLocation in configuration.Locations)
+ {
+ SetFields(subLocation, datItemMappings);
+ }
+ }
+
+ if (configuration.SettingsSpecified)
+ {
+ foreach (Setting subSetting in configuration.Settings)
+ {
+ SetFields(subSetting, datItemMappings);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Control to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Control control, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Type))
+ control.ControlType = datItemMappings[DatItemField.Control_Type].AsControlType();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Player))
+ control.Player = Utilities.CleanLong(datItemMappings[DatItemField.Control_Player]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Buttons))
+ control.Buttons = Utilities.CleanLong(datItemMappings[DatItemField.Control_Buttons]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_RequiredButtons))
+ control.RequiredButtons = Utilities.CleanLong(datItemMappings[DatItemField.Control_RequiredButtons]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Minimum))
+ control.Minimum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Minimum]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Maximum))
+ control.Maximum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Maximum]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Sensitivity))
+ control.Sensitivity = Utilities.CleanLong(datItemMappings[DatItemField.Control_Sensitivity]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_KeyDelta))
+ control.KeyDelta = Utilities.CleanLong(datItemMappings[DatItemField.Control_KeyDelta]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Reverse))
+ control.Reverse = datItemMappings[DatItemField.Control_Reverse].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Ways))
+ control.Ways = datItemMappings[DatItemField.Control_Ways];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Ways2))
+ control.Ways2 = datItemMappings[DatItemField.Control_Ways2];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Control_Ways3))
+ control.Ways3 = datItemMappings[DatItemField.Control_Ways3];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// DataArea to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(DataArea dataArea, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.AreaSize))
+ dataArea.Size = Utilities.CleanLong(datItemMappings[DatItemField.AreaSize]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.AreaWidth))
+ dataArea.Width = Utilities.CleanLong(datItemMappings[DatItemField.AreaWidth]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.AreaEndianness))
+ dataArea.Endianness = datItemMappings[DatItemField.AreaEndianness].AsEndianness();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Device to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Device device, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.DeviceType))
+ device.DeviceType = datItemMappings[DatItemField.DeviceType].AsDeviceType();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ device.Tag = datItemMappings[DatItemField.Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.FixedImage))
+ device.FixedImage = datItemMappings[DatItemField.FixedImage];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Mandatory))
+ device.Mandatory = Utilities.CleanLong(datItemMappings[DatItemField.Mandatory]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Interface))
+ device.Interface = datItemMappings[DatItemField.Interface];
+
+ if (device.InstancesSpecified)
+ {
+ foreach (Instance subInstance in device.Instances)
+ {
+ SetFields(subInstance, datItemMappings);
+ }
+ }
+
+ if (device.ExtensionsSpecified)
+ {
+ foreach (Extension subExtension in device.Extensions)
+ {
+ SetFields(subExtension, datItemMappings);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// DipSwitch to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(DipSwitch dipSwitch, Dictionary datItemMappings)
+ {
+ #region Common
+
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ dipSwitch.Tag = datItemMappings[DatItemField.Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Mask))
+ dipSwitch.Mask = datItemMappings[DatItemField.Mask];
+
+ if (dipSwitch.ConditionsSpecified)
+ {
+ foreach (Condition subCondition in dipSwitch.Conditions)
+ {
+ SetFields(subCondition, datItemMappings, true);
+ }
+ }
+
+ if (dipSwitch.LocationsSpecified)
+ {
+ foreach (Location subLocation in dipSwitch.Locations)
+ {
+ SetFields(subLocation, datItemMappings);
+ }
+ }
+
+ if (dipSwitch.ValuesSpecified)
+ {
+ foreach (Setting subValue in dipSwitch.Values)
+ {
+ SetFields(subValue, datItemMappings);
+ }
+ }
+
+ #endregion
+
+ #region SoftwareList
+
+ // Handle Part-specific fields
+ if (dipSwitch.Part == null)
+ dipSwitch.Part = new Part();
+
+ SetFields(dipSwitch.Part, datItemMappings);
+
+ #endregion
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Disk to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Disk disk, Dictionary datItemMappings)
+ {
+ #region Common
+
+ if (datItemMappings.Keys.Contains(DatItemField.MD5))
+ disk.MD5 = datItemMappings[DatItemField.MD5];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA1))
+ disk.SHA1 = datItemMappings[DatItemField.SHA1];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Merge))
+ disk.MergeTag = datItemMappings[DatItemField.Merge];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Region))
+ disk.Region = datItemMappings[DatItemField.Region];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Index))
+ disk.Index = datItemMappings[DatItemField.Index];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Writable))
+ disk.Writable = datItemMappings[DatItemField.Writable].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Status))
+ disk.ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Optional))
+ disk.Optional = datItemMappings[DatItemField.Optional].AsYesNo();
+
+ #endregion
+
+ #region SoftwareList
+
+ if (disk.DiskArea == null)
+ disk.DiskArea = new DiskArea();
+
+ SetFields(disk.DiskArea, datItemMappings);
+
+ if (disk.Part == null)
+ disk.Part = new Part();
+
+ SetFields(disk.Part, datItemMappings);
+
+ #endregion
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// DiskArea to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(DiskArea diskArea, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.AreaName))
+ diskArea.Name = datItemMappings[DatItemField.AreaName];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Display to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Display display, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ display.Tag = datItemMappings[DatItemField.Tag];
+
+ if (datItemMappings.Keys.Contains(DatItemField.DisplayType))
+ display.DisplayType = datItemMappings[DatItemField.DisplayType].AsDisplayType();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Rotate))
+ display.Rotate = Utilities.CleanLong(datItemMappings[DatItemField.Rotate]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.FlipX))
+ display.FlipX = datItemMappings[DatItemField.FlipX].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Width))
+ display.Width = Utilities.CleanLong(datItemMappings[DatItemField.Width]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Height))
+ display.Height = Utilities.CleanLong(datItemMappings[DatItemField.Height]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Refresh))
+ {
+ if (Double.TryParse(datItemMappings[DatItemField.Refresh], out double refresh))
+ display.Refresh = refresh;
+ }
+
+ if (datItemMappings.Keys.Contains(DatItemField.PixClock))
+ display.PixClock = Utilities.CleanLong(datItemMappings[DatItemField.PixClock]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.HTotal))
+ display.HTotal = Utilities.CleanLong(datItemMappings[DatItemField.HTotal]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.HBEnd))
+ display.HBEnd = Utilities.CleanLong(datItemMappings[DatItemField.HBEnd]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.HBStart))
+ display.HBStart = Utilities.CleanLong(datItemMappings[DatItemField.HBStart]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.VTotal))
+ display.VTotal = Utilities.CleanLong(datItemMappings[DatItemField.VTotal]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.VBEnd))
+ display.VBEnd = Utilities.CleanLong(datItemMappings[DatItemField.VBEnd]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.VBStart))
+ display.VBStart = Utilities.CleanLong(datItemMappings[DatItemField.VBStart]);
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Driver to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Driver driver, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.SupportStatus))
+ driver.Status = datItemMappings[DatItemField.SupportStatus].AsSupportStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.EmulationStatus))
+ driver.Emulation = datItemMappings[DatItemField.EmulationStatus].AsSupportStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.CocktailStatus))
+ driver.Cocktail = datItemMappings[DatItemField.CocktailStatus].AsSupportStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.SaveStateStatus))
+ driver.SaveState = datItemMappings[DatItemField.SaveStateStatus].AsSupported();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Extension to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Extension extension, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Extension_Name))
+ extension.Name = datItemMappings[DatItemField.Extension_Name];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Feature to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Feature feature, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.FeatureType))
+ feature.Type = datItemMappings[DatItemField.FeatureType].AsFeatureType();
+
+ if (datItemMappings.Keys.Contains(DatItemField.FeatureStatus))
+ feature.Status = datItemMappings[DatItemField.FeatureStatus].AsFeatureStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.FeatureOverall))
+ feature.Overall = datItemMappings[DatItemField.FeatureOverall].AsFeatureStatus();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Info to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Info info, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Value))
+ info.Value = datItemMappings[DatItemField.Value];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Input to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Input input, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Service))
+ input.Service = datItemMappings[DatItemField.Service].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Tilt))
+ input.Tilt = datItemMappings[DatItemField.Tilt].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Players))
+ input.Players = Utilities.CleanLong(datItemMappings[DatItemField.Players]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Coins))
+ input.Coins = Utilities.CleanLong(datItemMappings[DatItemField.Coins]);
+
+ if (input.ControlsSpecified)
+ {
+ foreach (Control subControl in input.Controls)
+ {
+ SetFields(subControl, datItemMappings);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Instance to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Instance instance, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Instance_Name))
+ instance.BriefName = datItemMappings[DatItemField.Instance_Name];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Instance_BriefName))
+ instance.BriefName = datItemMappings[DatItemField.Instance_BriefName];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Location to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Location location, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Location_Name))
+ location.Name = datItemMappings[DatItemField.Location_Name];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Location_Number))
+ location.Number = Utilities.CleanLong(datItemMappings[DatItemField.Location_Number]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.Location_Inverted))
+ location.Inverted = datItemMappings[DatItemField.Location_Inverted].AsYesNo();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Media to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Media media, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.MD5))
+ media.MD5 = datItemMappings[DatItemField.MD5];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA1))
+ media.SHA1 = datItemMappings[DatItemField.SHA1];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA256))
+ media.SHA256 = datItemMappings[DatItemField.SHA256];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SpamSum))
+ media.SpamSum = datItemMappings[DatItemField.SpamSum];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Part to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Part part, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Part_Name))
+ part.Name = datItemMappings[DatItemField.Part_Name];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Part_Interface))
+ part.Interface = datItemMappings[DatItemField.Part_Interface];
+
+ if (part.FeaturesSpecified)
+ {
+ foreach (PartFeature subPartFeature in part.Features)
+ {
+ SetFields(subPartFeature, datItemMappings);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// PartFeature to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(PartFeature partFeature, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Name))
+ partFeature.Name = datItemMappings[DatItemField.Part_Feature_Name];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Value))
+ partFeature.Value = datItemMappings[DatItemField.Part_Feature_Value];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Port to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Port port, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Tag))
+ port.Tag = datItemMappings[DatItemField.Tag];
+
+ if (port.AnalogsSpecified)
+ {
+ foreach (Analog subAnalog in port.Analogs)
+ {
+ SetFields(subAnalog, datItemMappings);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// RamOption to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(RamOption ramOption, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Default))
+ ramOption.Default = datItemMappings[DatItemField.Default].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Content))
+ ramOption.Content = datItemMappings[DatItemField.Content];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Release to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Release release, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Region))
+ release.Region = datItemMappings[DatItemField.Region];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Language))
+ release.Language = datItemMappings[DatItemField.Language];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Date))
+ release.Date = datItemMappings[DatItemField.Date];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Default))
+ release.Default = datItemMappings[DatItemField.Default].AsYesNo();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Rom to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Rom rom, Dictionary datItemMappings)
+ {
+ #region Common
+
+ if (datItemMappings.Keys.Contains(DatItemField.Bios))
+ rom.Bios = datItemMappings[DatItemField.Bios];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Size))
+ rom.Size = Utilities.CleanLong(datItemMappings[DatItemField.Size]);
+
+ if (datItemMappings.Keys.Contains(DatItemField.CRC))
+ rom.CRC = datItemMappings[DatItemField.CRC];
+
+ if (datItemMappings.Keys.Contains(DatItemField.MD5))
+ rom.MD5 = datItemMappings[DatItemField.MD5];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA1))
+ rom.SHA1 = datItemMappings[DatItemField.SHA1];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA256))
+ rom.SHA256 = datItemMappings[DatItemField.SHA256];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA384))
+ rom.SHA384 = datItemMappings[DatItemField.SHA384];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SHA512))
+ rom.SHA512 = datItemMappings[DatItemField.SHA512];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SpamSum))
+ rom.SpamSum = datItemMappings[DatItemField.SpamSum];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Merge))
+ rom.MergeTag = datItemMappings[DatItemField.Merge];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Region))
+ rom.Region = datItemMappings[DatItemField.Region];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Offset))
+ rom.Offset = datItemMappings[DatItemField.Offset];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Date))
+ rom.Date = datItemMappings[DatItemField.Date];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Status))
+ rom.ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Optional))
+ rom.Optional = datItemMappings[DatItemField.Optional].AsYesNo();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Inverted))
+ rom.Inverted = datItemMappings[DatItemField.Optional].AsYesNo();
+
+ #endregion
+
+ #region AttractMode
+
+ if (datItemMappings.Keys.Contains(DatItemField.AltName))
+ rom.AltName = datItemMappings[DatItemField.AltName];
+
+ if (datItemMappings.Keys.Contains(DatItemField.AltTitle))
+ rom.AltTitle = datItemMappings[DatItemField.AltTitle];
+
+ #endregion
+
+ #region OpenMSX
+
+ if (datItemMappings.Keys.Contains(DatItemField.Original))
+ rom.Original = new Original() { Content = datItemMappings[DatItemField.Original] };
+
+ if (datItemMappings.Keys.Contains(DatItemField.OpenMSXSubType))
+ rom.OpenMSXSubType = datItemMappings[DatItemField.OpenMSXSubType].AsOpenMSXSubType();
+
+ if (datItemMappings.Keys.Contains(DatItemField.OpenMSXType))
+ rom.OpenMSXType = datItemMappings[DatItemField.OpenMSXType];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Remark))
+ rom.Remark = datItemMappings[DatItemField.Remark];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Boot))
+ rom.Boot = datItemMappings[DatItemField.Boot];
+
+ #endregion
+
+ #region SoftwareList
+
+ if (datItemMappings.Keys.Contains(DatItemField.LoadFlag))
+ rom.LoadFlag = datItemMappings[DatItemField.LoadFlag].AsLoadFlag();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Value))
+ rom.Value = datItemMappings[DatItemField.Value];
+
+ if (rom.DataArea == null)
+ rom.DataArea = new DataArea();
+
+ SetFields(rom.DataArea, datItemMappings);
+
+ if (rom.Part == null)
+ rom.Part = new Part();
+
+ SetFields(rom.Part, datItemMappings);
+
+ #endregion
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Setting to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Setting setting, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Setting_Name))
+ setting.Name = datItemMappings[DatItemField.Setting_Name];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Setting_Value))
+ setting.Value = datItemMappings[DatItemField.Setting_Value];
+
+ if (datItemMappings.Keys.Contains(DatItemField.Setting_Default))
+ setting.Default = datItemMappings[DatItemField.Setting_Default].AsYesNo();
+
+ if (setting.ConditionsSpecified)
+ {
+ foreach (Condition subCondition in setting.Conditions)
+ {
+ SetFields(subCondition, datItemMappings, true);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// SharedFeature to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(SharedFeature sharedFeature, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Value))
+ sharedFeature.Value = datItemMappings[DatItemField.Value];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Slot to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Slot slot, Dictionary datItemMappings)
+ {
+ if (slot.SlotOptionsSpecified)
+ {
+ foreach (SlotOption subSlotOption in slot.SlotOptions)
+ {
+ SetFields(subSlotOption, datItemMappings);
+ }
+ }
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// SlotOption to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(SlotOption slotOption, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Name))
+ slotOption.Name = datItemMappings[DatItemField.SlotOption_Name];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SlotOption_DeviceName))
+ slotOption.DeviceName = datItemMappings[DatItemField.SlotOption_DeviceName];
+
+ if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Default))
+ slotOption.Default = datItemMappings[DatItemField.SlotOption_Default].AsYesNo();
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// SoftwareList to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(SoftwareList softwareList, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.SoftwareListStatus))
+ softwareList.Status = datItemMappings[DatItemField.SoftwareListStatus].AsSoftwareListStatus();
+
+ if (datItemMappings.Keys.Contains(DatItemField.Filter))
+ softwareList.Filter = datItemMappings[DatItemField.Filter];
+ }
+
+ ///
+ /// Set fields with given values
+ ///
+ /// Sound to remove replace fields in
+ /// DatItem mappings dictionary
+ private static void SetFields(Sound sound, Dictionary datItemMappings)
+ {
+ if (datItemMappings.Keys.Contains(DatItemField.Channels))
+ sound.Channels = Utilities.CleanLong(datItemMappings[DatItemField.Channels]);
+ }
+
#endregion
///