mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add writing of all ListXML machine fields
This commit is contained in:
@@ -290,8 +290,8 @@ namespace SabreTools.Library.DatFiles
|
||||
chip.Clock = reader.GetAttribute("clock");
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Chips == null)
|
||||
machine.Chips = new List<ListXmlChip>();
|
||||
|
||||
machine.Chips.Add(chip);
|
||||
|
||||
@@ -310,14 +310,14 @@ namespace SabreTools.Library.DatFiles
|
||||
display.PixClock = reader.GetAttribute("pixclock");
|
||||
display.HTotal = reader.GetAttribute("htotal");
|
||||
display.HBEnd = reader.GetAttribute("hbend");
|
||||
display.HBStart = reader.GetAttribute("hstart");
|
||||
display.HBStart = reader.GetAttribute("hbstart");
|
||||
display.VTotal = reader.GetAttribute("vtotal");
|
||||
display.VBEnd = reader.GetAttribute("vbend");
|
||||
display.VBStart = reader.GetAttribute("vstart");
|
||||
display.VBStart = reader.GetAttribute("vbstart");
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Displays == null)
|
||||
machine.Displays = new List<ListXmlDisplay>();
|
||||
|
||||
machine.Displays.Add(display);
|
||||
|
||||
@@ -329,8 +329,8 @@ namespace SabreTools.Library.DatFiles
|
||||
sound.Channels = reader.GetAttribute("channels");
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Sounds == null)
|
||||
machine.Sounds = new List<ListXmlSound>();
|
||||
|
||||
machine.Sounds.Add(sound);
|
||||
|
||||
@@ -345,8 +345,8 @@ namespace SabreTools.Library.DatFiles
|
||||
condition.Value = reader.GetAttribute("value");
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Conditions == null)
|
||||
machine.Conditions = new List<ListXmlCondition>();
|
||||
|
||||
machine.Conditions.Add(condition);
|
||||
|
||||
@@ -364,8 +364,8 @@ namespace SabreTools.Library.DatFiles
|
||||
ReadInput(reader.ReadSubtree(), input);
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Inputs == null)
|
||||
machine.Inputs = new List<ListXmlInput>();
|
||||
|
||||
machine.Inputs.Add(input);
|
||||
|
||||
@@ -383,8 +383,8 @@ namespace SabreTools.Library.DatFiles
|
||||
ReadDipSwitch(reader.ReadSubtree(), dipSwitch);
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.DipSwitches == null)
|
||||
machine.DipSwitches = new List<ListXmlDipSwitch>();
|
||||
|
||||
machine.DipSwitches.Add(dipSwitch);
|
||||
|
||||
@@ -402,8 +402,8 @@ namespace SabreTools.Library.DatFiles
|
||||
ReadConfiguration(reader.ReadSubtree(), configuration);
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Configurations == null)
|
||||
machine.Configurations = new List<ListXmlConfiguration>();
|
||||
|
||||
machine.Configurations.Add(configuration);
|
||||
|
||||
@@ -419,8 +419,8 @@ namespace SabreTools.Library.DatFiles
|
||||
ReadPort(reader.ReadSubtree(), port);
|
||||
|
||||
// Ensure the list exists
|
||||
if (machine.DeviceReferences == null)
|
||||
machine.DeviceReferences = new List<ListXmlDeviceReference>();
|
||||
if (machine.Ports == null)
|
||||
machine.Ports = new List<ListXmlPort>();
|
||||
|
||||
machine.Ports.Add(port);
|
||||
|
||||
@@ -1105,10 +1105,393 @@ namespace SabreTools.Library.DatFiles
|
||||
if (!string.Equals(datItem.Machine.Name, datItem.Machine.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteOptionalAttributeString("sampleof", datItem.Machine.SampleOf);
|
||||
|
||||
xtw.WriteOptionalAttributeString("description", datItem.Machine.Description);
|
||||
xtw.WriteOptionalAttributeString("year", datItem.Machine.Year);
|
||||
xtw.WriteOptionalAttributeString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteOptionalAttributeString("category", datItem.Machine.Category);
|
||||
xtw.WriteOptionalElementString("description", datItem.Machine.Description);
|
||||
xtw.WriteOptionalElementString("year", datItem.Machine.Year);
|
||||
xtw.WriteOptionalElementString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteOptionalElementString("category", datItem.Machine.Category);
|
||||
|
||||
if (datItem.Machine.DeviceReferences != null)
|
||||
{
|
||||
foreach (var deviceReference in datItem.Machine.DeviceReferences)
|
||||
{
|
||||
xtw.WriteStartElement("device_ref");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", deviceReference.Name);
|
||||
|
||||
// End device_ref
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Chips != null)
|
||||
{
|
||||
foreach (var chip in datItem.Machine.Chips)
|
||||
{
|
||||
xtw.WriteStartElement("chip");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", chip.Name);
|
||||
xtw.WriteOptionalAttributeString("tag", chip.Tag);
|
||||
xtw.WriteOptionalAttributeString("type", chip.Type);
|
||||
xtw.WriteOptionalAttributeString("clock", chip.Clock);
|
||||
|
||||
// End chip
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Displays != null)
|
||||
{
|
||||
foreach (var display in datItem.Machine.Displays)
|
||||
{
|
||||
xtw.WriteStartElement("display");
|
||||
|
||||
xtw.WriteOptionalAttributeString("tag", display.Tag);
|
||||
xtw.WriteOptionalAttributeString("type", display.Type);
|
||||
xtw.WriteOptionalAttributeString("rotate", display.Rotate);
|
||||
xtw.WriteOptionalAttributeString("flipx", display.FlipX.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("width", display.Width);
|
||||
xtw.WriteOptionalAttributeString("height", display.Height);
|
||||
xtw.WriteOptionalAttributeString("refresh", display.Refresh);
|
||||
xtw.WriteOptionalAttributeString("pixclock", display.PixClock);
|
||||
xtw.WriteOptionalAttributeString("htotal", display.HTotal);
|
||||
xtw.WriteOptionalAttributeString("hbend", display.HBEnd);
|
||||
xtw.WriteOptionalAttributeString("hstart", display.HBStart);
|
||||
xtw.WriteOptionalAttributeString("vtotal", display.VTotal);
|
||||
xtw.WriteOptionalAttributeString("vbend", display.VBEnd);
|
||||
xtw.WriteOptionalAttributeString("vbstart", display.VBStart);
|
||||
|
||||
// End display
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Sounds != null)
|
||||
{
|
||||
foreach (var sound in datItem.Machine.Sounds)
|
||||
{
|
||||
xtw.WriteStartElement("sound");
|
||||
|
||||
xtw.WriteOptionalAttributeString("channels", sound.Channels);
|
||||
|
||||
// End sound
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Conditions != null)
|
||||
{
|
||||
foreach (var condition in datItem.Machine.Conditions)
|
||||
{
|
||||
xtw.WriteStartElement("condition");
|
||||
|
||||
xtw.WriteOptionalAttributeString("tag", condition.Tag);
|
||||
xtw.WriteOptionalAttributeString("mask", condition.Mask);
|
||||
xtw.WriteOptionalAttributeString("relation", condition.Relation);
|
||||
xtw.WriteOptionalAttributeString("value", condition.Value);
|
||||
|
||||
// End condition
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Inputs != null)
|
||||
{
|
||||
foreach (var input in datItem.Machine.Inputs)
|
||||
{
|
||||
xtw.WriteStartElement("input");
|
||||
|
||||
xtw.WriteOptionalAttributeString("service", input.Service.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("tilt", input.Tilt.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("players", input.Players);
|
||||
xtw.WriteOptionalAttributeString("coins", input.Coins);
|
||||
|
||||
if (input.Controls != null)
|
||||
{
|
||||
foreach (var control in input.Controls)
|
||||
{
|
||||
xtw.WriteStartElement("control");
|
||||
|
||||
xtw.WriteOptionalAttributeString("type", control.Type);
|
||||
xtw.WriteOptionalAttributeString("player", control.Player);
|
||||
xtw.WriteOptionalAttributeString("buttons", control.Buttons);
|
||||
xtw.WriteOptionalAttributeString("regbuttons", control.RegButtons);
|
||||
xtw.WriteOptionalAttributeString("minimum", control.Minimum);
|
||||
xtw.WriteOptionalAttributeString("maximum", control.Maximum);
|
||||
xtw.WriteOptionalAttributeString("sensitivity", control.Sensitivity);
|
||||
xtw.WriteOptionalAttributeString("keydelta", control.KeyDelta);
|
||||
xtw.WriteOptionalAttributeString("reverse", control.Reverse.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("ways", control.Ways);
|
||||
xtw.WriteOptionalAttributeString("ways2", control.Ways2);
|
||||
xtw.WriteOptionalAttributeString("ways3", control.Ways3);
|
||||
|
||||
// End control
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End input
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.DipSwitches != null)
|
||||
{
|
||||
foreach (var dipSwitches in datItem.Machine.DipSwitches)
|
||||
{
|
||||
xtw.WriteStartElement("dipswitch");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", dipSwitches.Name);
|
||||
xtw.WriteOptionalAttributeString("tag", dipSwitches.Tag);
|
||||
xtw.WriteOptionalAttributeString("mask", dipSwitches.Mask);
|
||||
|
||||
if (dipSwitches.Locations != null)
|
||||
{
|
||||
foreach (var location in dipSwitches.Locations)
|
||||
{
|
||||
xtw.WriteStartElement("diplocation");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", location.Name);
|
||||
xtw.WriteOptionalAttributeString("number", location.Number);
|
||||
xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo());
|
||||
|
||||
// End diplocation
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (dipSwitches.Values != null)
|
||||
{
|
||||
foreach (var value in dipSwitches.Values)
|
||||
{
|
||||
xtw.WriteStartElement("dipvalue");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", value.Name);
|
||||
xtw.WriteOptionalAttributeString("value", value.Value);
|
||||
xtw.WriteOptionalAttributeString("default", value.Default.FromYesNo());
|
||||
|
||||
// End dipvalue
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End dipswitch
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Configurations != null)
|
||||
{
|
||||
foreach (var configuration in datItem.Machine.Configurations)
|
||||
{
|
||||
xtw.WriteStartElement("configuration");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", configuration.Name);
|
||||
xtw.WriteOptionalAttributeString("tag", configuration.Tag);
|
||||
xtw.WriteOptionalAttributeString("mask", configuration.Mask);
|
||||
|
||||
if (configuration.Locations != null)
|
||||
{
|
||||
foreach (var location in configuration.Locations)
|
||||
{
|
||||
xtw.WriteStartElement("conflocation");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", location.Name);
|
||||
xtw.WriteOptionalAttributeString("number", location.Number);
|
||||
xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo());
|
||||
|
||||
// End conflocation
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (configuration.Settings != null)
|
||||
{
|
||||
foreach (var setting in configuration.Settings)
|
||||
{
|
||||
xtw.WriteStartElement("confsetting");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", setting.Name);
|
||||
xtw.WriteOptionalAttributeString("value", setting.Value);
|
||||
xtw.WriteOptionalAttributeString("default", setting.Default.FromYesNo());
|
||||
|
||||
// End confsetting
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End configuration
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Ports != null)
|
||||
{
|
||||
foreach (var port in datItem.Machine.Ports)
|
||||
{
|
||||
xtw.WriteStartElement("port");
|
||||
|
||||
xtw.WriteOptionalAttributeString("tag", port.Tag);
|
||||
|
||||
if (port.Analogs != null)
|
||||
{
|
||||
foreach (var analog in port.Analogs)
|
||||
{
|
||||
xtw.WriteStartElement("analog");
|
||||
|
||||
xtw.WriteOptionalAttributeString("mask", analog.Mask);
|
||||
|
||||
// End analog
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End port
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Adjusters != null)
|
||||
{
|
||||
foreach (var adjuster in datItem.Machine.Adjusters)
|
||||
{
|
||||
xtw.WriteStartElement("adjuster");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", adjuster.Name);
|
||||
xtw.WriteOptionalAttributeString("default", adjuster.Default.FromYesNo());
|
||||
|
||||
if (adjuster.Conditions != null)
|
||||
{
|
||||
foreach (var condition in adjuster.Conditions)
|
||||
{
|
||||
xtw.WriteStartElement("condition");
|
||||
|
||||
xtw.WriteOptionalAttributeString("tag", condition.Tag);
|
||||
xtw.WriteOptionalAttributeString("mask", condition.Mask);
|
||||
xtw.WriteOptionalAttributeString("relation", condition.Relation);
|
||||
xtw.WriteOptionalAttributeString("value", condition.Value);
|
||||
|
||||
// End condition
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End adjuster
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Drivers != null)
|
||||
{
|
||||
foreach (var driver in datItem.Machine.Drivers)
|
||||
{
|
||||
xtw.WriteStartElement("driver");
|
||||
|
||||
xtw.WriteOptionalAttributeString("status", driver.Status);
|
||||
xtw.WriteOptionalAttributeString("emulation", driver.Emulation);
|
||||
xtw.WriteOptionalAttributeString("cocktail", driver.Cocktail);
|
||||
xtw.WriteOptionalAttributeString("savestate", driver.SaveState);
|
||||
|
||||
// End driver
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Features != null)
|
||||
{
|
||||
foreach (var feature in datItem.Machine.Features)
|
||||
{
|
||||
xtw.WriteStartElement("feature");
|
||||
|
||||
xtw.WriteOptionalAttributeString("type", feature.Type);
|
||||
xtw.WriteOptionalAttributeString("status", feature.Status);
|
||||
xtw.WriteOptionalAttributeString("overall", feature.Overall);
|
||||
|
||||
// End feature
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Devices != null)
|
||||
{
|
||||
foreach (var device in datItem.Machine.Devices)
|
||||
{
|
||||
xtw.WriteStartElement("device");
|
||||
|
||||
xtw.WriteOptionalAttributeString("type", device.Type);
|
||||
xtw.WriteOptionalAttributeString("tag", device.Tag);
|
||||
xtw.WriteOptionalAttributeString("fixed_image", device.FixedImage);
|
||||
xtw.WriteOptionalAttributeString("mandatory", device.Mandatory);
|
||||
xtw.WriteOptionalAttributeString("interface", device.Interface);
|
||||
|
||||
if (device.Instances != null)
|
||||
{
|
||||
foreach (var instance in device.Instances)
|
||||
{
|
||||
xtw.WriteStartElement("instance");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", instance.Name);
|
||||
xtw.WriteOptionalAttributeString("briefname", instance.BriefName);
|
||||
|
||||
// End instance
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (device.Extensions != null)
|
||||
{
|
||||
foreach (var extension in device.Extensions)
|
||||
{
|
||||
xtw.WriteStartElement("extension");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", extension.Name);
|
||||
|
||||
// End extension
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End device
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.Slots != null)
|
||||
{
|
||||
foreach (var slot in datItem.Machine.Slots)
|
||||
{
|
||||
xtw.WriteStartElement("slot");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", slot.Name);
|
||||
|
||||
if (slot.SlotOptions != null)
|
||||
{
|
||||
foreach (var slotOption in slot.SlotOptions)
|
||||
{
|
||||
xtw.WriteStartElement("slotoption");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", slotOption.Name);
|
||||
xtw.WriteOptionalAttributeString("devname", slotOption.DeviceName);
|
||||
xtw.WriteOptionalAttributeString("default", slotOption.Default.FromYesNo());
|
||||
|
||||
// End slotoption
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
// End slot
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.SoftwareLists != null)
|
||||
{
|
||||
foreach (var softwarelist in datItem.Machine.SoftwareLists)
|
||||
{
|
||||
xtw.WriteStartElement("softwarelist");
|
||||
|
||||
xtw.WriteOptionalAttributeString("name", softwarelist.Name);
|
||||
xtw.WriteOptionalAttributeString("status", softwarelist.Status);
|
||||
xtw.WriteOptionalAttributeString("filter", softwarelist.Filter);
|
||||
|
||||
// End softwarelist
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
if (datItem.Machine.RamOptions != null)
|
||||
{
|
||||
foreach (var ramOption in datItem.Machine.RamOptions)
|
||||
{
|
||||
xtw.WriteStartElement("ramoption");
|
||||
|
||||
xtw.WriteOptionalAttributeString("default", ramOption.Default.FromYesNo());
|
||||
|
||||
// End softwarelist
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
xtw.Flush();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user