diff --git a/README.MD b/README.MD
index b5edf963..5bdad96b 100644
--- a/README.MD
+++ b/README.MD
@@ -8,7 +8,7 @@ Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTo
## Releases
-For the most recent stable build, download the latest release where: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases)
+For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases)
For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/SabreTools.Serialization/releases/tag/rolling)
diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
index 22501218..f4bc8b55 100644
--- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
+++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
@@ -23,12 +23,12 @@ namespace SabreTools.Data.Extensions.Test
Rom? actual = self.ConvertToRom();
Assert.NotNull(actual);
- Assert.Equal(5, actual.Count);
+ Assert.Equal(4, actual.Count);
Assert.Equal(ItemType.Rom, actual.ItemType);
Assert.Null(actual.Name);
Assert.Null(actual[Rom.MergeKey]);
Assert.Null(actual[Rom.RegionKey]);
- Assert.Null(actual[Rom.StatusKey]);
+ Assert.Null(actual.Status);
Assert.Null(actual.Optional);
Assert.Null(actual[Rom.MD5Key]);
Assert.Null(actual[Rom.SHA1Key]);
@@ -42,7 +42,7 @@ namespace SabreTools.Data.Extensions.Test
Name = "XXXXXX",
[Disk.MergeKey] = "XXXXXX",
[Disk.RegionKey] = "XXXXXX",
- [Disk.StatusKey] = "XXXXXX",
+ Status = ItemStatus.Good,
Optional = true,
[Disk.MD5Key] = "XXXXXX",
[Disk.SHA1Key] = "XXXXXX",
@@ -51,12 +51,12 @@ namespace SabreTools.Data.Extensions.Test
Rom? actual = self.ConvertToRom();
Assert.NotNull(actual);
- Assert.Equal(5, actual.Count);
+ Assert.Equal(4, actual.Count);
Assert.Equal(ItemType.Rom, actual.ItemType);
Assert.Equal("XXXXXX.chd", actual.Name);
Assert.Equal("XXXXXX", actual[Rom.MergeKey]);
Assert.Equal("XXXXXX", actual[Rom.RegionKey]);
- Assert.Equal("XXXXXX", actual[Rom.StatusKey]);
+ Assert.Equal(ItemStatus.Good, actual.Status);
Assert.Equal(true, actual.Optional);
Assert.Equal("XXXXXX", actual[Rom.MD5Key]);
Assert.Equal("XXXXXX", actual[Rom.SHA1Key]);
@@ -1578,6 +1578,16 @@ namespace SabreTools.Data.Extensions.Test
#region String to Enum
+ [Theory]
+ [InlineData(null, null)]
+ [InlineData("plain", Blit.Plain)]
+ [InlineData("dirty", Blit.Dirty)]
+ public void AsBlitTest(string? field, Blit? expected)
+ {
+ Blit? actual = field.AsBlit();
+ Assert.Equal(expected, actual);
+ }
+
[Theory]
[InlineData(null, null)]
[InlineData("cpu", ChipType.CPU)]
@@ -1868,6 +1878,16 @@ namespace SabreTools.Data.Extensions.Test
#region Enum to String
+ [Theory]
+ [InlineData((Blit)int.MaxValue, null)]
+ [InlineData(Blit.Plain, "plain")]
+ [InlineData(Blit.Dirty, "dirty")]
+ public void FromBlitTest(Blit field, string? expected)
+ {
+ string? actual = field.AsStringValue();
+ Assert.Equal(expected, actual);
+ }
+
[Theory]
[InlineData((ChipType)int.MaxValue, null)]
[InlineData(ChipType.CPU, "cpu")]
diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 1be262c0..f1700a2a 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -6,6 +6,8 @@ using SabreTools.Matching;
namespace SabreTools.Data.Extensions
{
+ // TODO: Add proper enum for YesNo
+ // TODO: Combine yes/partial/no enums
public static class MetadataExtensions
{
#region Accessors
@@ -155,8 +157,13 @@ namespace SabreTools.Data.Extensions
}
else if (self is Chip selfChip && clone is Chip cloneChip)
{
+ cloneChip.ChipType = selfChip.ChipType;
cloneChip.SoundOnly = selfChip.SoundOnly;
}
+ else if (self is Condition selfCondition && clone is Condition cloneCondition)
+ {
+ cloneCondition.Relation = selfCondition.Relation;
+ }
else if (self is ConfLocation selfConfLocation && clone is ConfLocation cloneConfLocation)
{
cloneConfLocation.Inverted = selfConfLocation.Inverted;
@@ -167,8 +174,17 @@ namespace SabreTools.Data.Extensions
}
else if (self is Control selfControl && clone is Control cloneControl)
{
+ cloneControl.ControlType = selfControl.ControlType;
cloneControl.Reverse = selfControl.Reverse;
}
+ else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea)
+ {
+ cloneDataArea.Endianness = selfDataArea.Endianness;
+ }
+ else if (self is Device selfDevice && clone is Device cloneDevice)
+ {
+ cloneDevice.DeviceType = selfDevice.DeviceType;
+ }
else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation)
{
cloneDipLocation.Inverted = selfDipLocation.Inverted;
@@ -184,26 +200,47 @@ namespace SabreTools.Data.Extensions
else if (self is Disk selfDisk && clone is Disk cloneDisk)
{
cloneDisk.Optional = selfDisk.Optional;
+ cloneDisk.Status = selfDisk.Status;
cloneDisk.Writable = selfDisk.Writable;
}
else if (self is Display selfDisplay && clone is Display cloneDisplay)
{
+ cloneDisplay.DisplayType = selfDisplay.DisplayType;
cloneDisplay.FlipX = selfDisplay.FlipX;
}
else if (self is Driver selfDriver && clone is Driver cloneDriver)
{
+ cloneDriver.Blit = selfDriver.Blit;
+ cloneDriver.Cocktail = selfDriver.Cocktail;
+ cloneDriver.Color = selfDriver.Color;
+ cloneDriver.Emulation = selfDriver.Emulation;
cloneDriver.Incomplete = selfDriver.Incomplete;
cloneDriver.NoSoundHardware = selfDriver.NoSoundHardware;
cloneDriver.RequiresArtwork = selfDriver.RequiresArtwork;
+ cloneDriver.SaveState = selfDriver.SaveState;
+ cloneDriver.Sound = selfDriver.Sound;
+ cloneDriver.Status = selfDriver.Status;
cloneDriver.Unofficial = selfDriver.Unofficial;
}
+ else if (self is Feature selfFeature && clone is Feature cloneFeature)
+ {
+ cloneFeature.FeatureType = selfFeature.FeatureType;
+ cloneFeature.Overall = selfFeature.Overall;
+ cloneFeature.Status = selfFeature.Status;
+ }
else if (self is Header selfHeader && clone is Header cloneHeader)
{
+ cloneHeader.BiosMode = selfHeader.BiosMode;
cloneHeader.Debug = selfHeader.Debug;
+ cloneHeader.ForceMerging = selfHeader.ForceMerging;
+ cloneHeader.ForceNodump = selfHeader.ForceNodump;
+ cloneHeader.ForcePacking = selfHeader.ForcePacking;
cloneHeader.ForceZipping = selfHeader.ForceZipping;
cloneHeader.LockBiosMode = selfHeader.LockBiosMode;
cloneHeader.LockRomMode = selfHeader.LockRomMode;
cloneHeader.LockSampleMode = selfHeader.LockSampleMode;
+ cloneHeader.RomMode = selfHeader.RomMode;
+ cloneHeader.SampleMode = selfHeader.SampleMode;
}
else if (self is Input selfInput && clone is Input cloneInput)
{
@@ -216,6 +253,7 @@ namespace SabreTools.Data.Extensions
cloneMachine.IsDevice = selfMachine.IsDevice;
cloneMachine.IsMechanical = selfMachine.IsMechanical;
cloneMachine.Runnable = selfMachine.Runnable;
+ cloneMachine.Supported = selfMachine.Supported;
}
else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption)
{
@@ -230,14 +268,29 @@ namespace SabreTools.Data.Extensions
cloneRom.Dispose = selfRom.Dispose;
cloneRom.FileIsAvailable = selfRom.FileIsAvailable;
cloneRom.Inverted = selfRom.Inverted;
+ cloneRom.LoadFlag = selfRom.LoadFlag;
cloneRom.MIA = selfRom.MIA;
+ cloneRom.OpenMSXMediaType = selfRom.OpenMSXMediaType;
cloneRom.Optional = selfRom.Optional;
cloneRom.SoundOnly = selfRom.SoundOnly;
+ cloneRom.Status = selfRom.Status;
}
else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption)
{
cloneSlotOption.Default = selfSlotOption.Default;
}
+ else if (self is Software selfSoftware && clone is Software cloneSoftware)
+ {
+ cloneSoftware.Supported = selfSoftware.Supported;
+ }
+ else if (self is SoftwareList selfSoftwareList && clone is SoftwareList cloneSoftwareList)
+ {
+ cloneSoftwareList.Status = selfSoftwareList.Status;
+ }
+ else if (self is Video selfVideo && clone is Video cloneVideo)
+ {
+ cloneVideo.Screen = selfVideo.Screen;
+ }
// Handle known properties
clone.SetName(self.GetName());
@@ -308,7 +361,7 @@ namespace SabreTools.Data.Extensions
Name = name,
[Rom.MergeKey] = disk.ReadString(Disk.MergeKey),
[Rom.RegionKey] = disk.ReadString(Disk.RegionKey),
- [Rom.StatusKey] = disk.ReadString(Disk.StatusKey),
+ Status = disk.Status,
Optional = disk.Optional,
[Rom.MD5Key] = disk.ReadString(Disk.MD5Key),
[Rom.SHA1Key] = disk.ReadString(Disk.SHA1Key),
@@ -973,6 +1026,21 @@ namespace SabreTools.Data.Extensions
#region String to Enum
+ ///
+ /// Get the enum value for an input string, if possible
+ ///
+ /// String value to parse/param>
+ /// Enum value representing the input, null on error
+ public static Blit? AsBlit(this string? value)
+ {
+ return value?.ToLowerInvariant() switch
+ {
+ "plain" => Blit.Plain,
+ "dirty" => Blit.Dirty,
+ _ => null,
+ };
+ }
+
///
/// Get the enum value for an input string, if possible
///
@@ -1344,6 +1412,21 @@ namespace SabreTools.Data.Extensions
#region Enum to String
+ ///
+ /// Get the string value for an input enum, if possible
+ ///
+ /// Enum value to parse/param>
+ /// String value representing the input, null on error
+ public static string? AsStringValue(this Blit value)
+ {
+ return value switch
+ {
+ Blit.Plain => "plain",
+ Blit.Dirty => "dirty",
+ _ => null,
+ };
+ }
+
///
/// Get the string value for an input enum, if possible
///
@@ -1696,6 +1779,7 @@ namespace SabreTools.Data.Extensions
SupportStatus.Good => "good",
SupportStatus.Imperfect => "imperfect",
SupportStatus.Preliminary => "preliminary",
+ SupportStatus.Test => "test",
_ => null,
};
}
diff --git a/SabreTools.Data.Models/ClrMamePro/Chip.cs b/SabreTools.Data.Models/ClrMamePro/Chip.cs
index 5d9fd30b..4c9c603b 100644
--- a/SabreTools.Data.Models/ClrMamePro/Chip.cs
+++ b/SabreTools.Data.Models/ClrMamePro/Chip.cs
@@ -1,4 +1,6 @@
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.ClrMamePro
{
/// chip
@@ -6,7 +8,7 @@ namespace SabreTools.Data.Models.ClrMamePro
{
/// type, (cpu|audio)
[Required]
- public string? Type { get; set; }
+ public ChipType? Type { get; set; }
/// name
[Required]
diff --git a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs
index b9255253..772d6664 100644
--- a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs
+++ b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs
@@ -1,3 +1,5 @@
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.ClrMamePro
{
/// clrmamepro
@@ -40,12 +42,12 @@ namespace SabreTools.Data.Models.ClrMamePro
public string? Type { get; set; }
/// forcemerging
- public string? ForceMerging { get; set; }
+ public MergingFlag ForceMerging { get; set; }
/// forcezipping, (yes|no) "no"
public bool? ForceZipping { get; set; }
/// forcepacking
- public string? ForcePacking { get; set; }
+ public PackingFlag ForcePacking { get; set; }
}
}
diff --git a/SabreTools.Data.Models/ClrMamePro/Disk.cs b/SabreTools.Data.Models/ClrMamePro/Disk.cs
index af2493ba..34d9d4b9 100644
--- a/SabreTools.Data.Models/ClrMamePro/Disk.cs
+++ b/SabreTools.Data.Models/ClrMamePro/Disk.cs
@@ -1,4 +1,6 @@
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.ClrMamePro
{
/// disk
@@ -18,7 +20,7 @@ namespace SabreTools.Data.Models.ClrMamePro
public string? Merge { get; set; }
/// status
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// flags
public string? Flags { get; set; }
diff --git a/SabreTools.Data.Models/ClrMamePro/Driver.cs b/SabreTools.Data.Models/ClrMamePro/Driver.cs
index cddc19b9..07abe4a2 100644
--- a/SabreTools.Data.Models/ClrMamePro/Driver.cs
+++ b/SabreTools.Data.Models/ClrMamePro/Driver.cs
@@ -1,4 +1,6 @@
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.ClrMamePro
{
/// driver
@@ -6,18 +8,18 @@ namespace SabreTools.Data.Models.ClrMamePro
{
/// status, (good|imperfect|preliminary)
[Required]
- public string? Status { get; set; }
+ public SupportStatus? Status { get; set; }
/// color, (good|imperfect|preliminary)
- public string? Color { get; set; }
+ public SupportStatus? Color { get; set; }
/// sound, (good|imperfect|preliminary)
- public string? Sound { get; set; }
+ public SupportStatus? Sound { get; set; }
/// palettesize, Numeric?
public string? PaletteSize { get; set; }
/// blit, (plain|dirty)
- public string? Blit { get; set; }
+ public Blit? Blit { get; set; }
}
}
diff --git a/SabreTools.Data.Models/ClrMamePro/Rom.cs b/SabreTools.Data.Models/ClrMamePro/Rom.cs
index 6e64c274..b84d1b68 100644
--- a/SabreTools.Data.Models/ClrMamePro/Rom.cs
+++ b/SabreTools.Data.Models/ClrMamePro/Rom.cs
@@ -1,5 +1,7 @@
#pragma warning disable IDE1006 // Naming Styles
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.ClrMamePro
{
/// rom
@@ -26,7 +28,7 @@ namespace SabreTools.Data.Models.ClrMamePro
public string? Merge { get; set; }
/// status
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// flags
public string? Flags { get; set; }
diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs
index e8c801ca..2fd3fe5a 100644
--- a/SabreTools.Data.Models/ClrMamePro/Video.cs
+++ b/SabreTools.Data.Models/ClrMamePro/Video.cs
@@ -1,4 +1,6 @@
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.ClrMamePro
{
/// video
@@ -6,7 +8,7 @@ namespace SabreTools.Data.Models.ClrMamePro
{
/// screen, (raster|vector)
[Required]
- public string? Screen { get; set; }
+ public DisplayType? Screen { get; set; }
/// orientation, (vertical|horizontal)
[Required]
diff --git a/SabreTools.Data.Models/Listxml/Chip.cs b/SabreTools.Data.Models/Listxml/Chip.cs
index c0d48393..1b19195b 100644
--- a/SabreTools.Data.Models/Listxml/Chip.cs
+++ b/SabreTools.Data.Models/Listxml/Chip.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -16,7 +17,7 @@ namespace SabreTools.Data.Models.Listxml
/// (cpu|audio)
[Required]
[XmlAttribute("type")]
- public string? Type { get; set; }
+ public ChipType? Type { get; set; }
/// Only present in older versions
[XmlAttribute("soundonly")]
diff --git a/SabreTools.Data.Models/Listxml/Condition.cs b/SabreTools.Data.Models/Listxml/Condition.cs
index 73f4908b..5e4858a4 100644
--- a/SabreTools.Data.Models/Listxml/Condition.cs
+++ b/SabreTools.Data.Models/Listxml/Condition.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Listxml
/// (eq|ne|gt|le|lt|ge)
[Required]
[XmlAttribute("relation")]
- public string? Relation { get; set; }
+ public Relation? Relation { get; set; }
[Required]
[XmlAttribute("value")]
diff --git a/SabreTools.Data.Models/Listxml/Control.cs b/SabreTools.Data.Models/Listxml/Control.cs
index 3deb7c4e..24d2c29e 100644
--- a/SabreTools.Data.Models/Listxml/Control.cs
+++ b/SabreTools.Data.Models/Listxml/Control.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -9,7 +10,7 @@ namespace SabreTools.Data.Models.Listxml
/// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling)
[Required]
[XmlAttribute("type")]
- public string? Type { get; set; }
+ public ControlType? Type { get; set; }
/// Numeric
[XmlAttribute("player")]
diff --git a/SabreTools.Data.Models/Listxml/Device.cs b/SabreTools.Data.Models/Listxml/Device.cs
index a6790474..45a26277 100644
--- a/SabreTools.Data.Models/Listxml/Device.cs
+++ b/SabreTools.Data.Models/Listxml/Device.cs
@@ -1,14 +1,16 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
[XmlRoot("device")]
public class Device
{
+ /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile)
[Required]
[XmlAttribute("type")]
- public string? Type { get; set; }
+ public DeviceType? Type { get; set; }
[XmlAttribute("tag")]
public string? Tag { get; set; }
diff --git a/SabreTools.Data.Models/Listxml/Disk.cs b/SabreTools.Data.Models/Listxml/Disk.cs
index 79908639..b5bf0d57 100644
--- a/SabreTools.Data.Models/Listxml/Disk.cs
+++ b/SabreTools.Data.Models/Listxml/Disk.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -33,7 +34,7 @@ namespace SabreTools.Data.Models.Listxml
/// (baddump|nodump|good) "good"
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// (yes|no) "no"
[XmlAttribute("optional")]
diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs
index 420e5892..5f873dcd 100644
--- a/SabreTools.Data.Models/Listxml/Display.cs
+++ b/SabreTools.Data.Models/Listxml/Display.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -12,7 +13,7 @@ namespace SabreTools.Data.Models.Listxml
/// (raster|vector|lcd|svg|unknown)
[Required]
[XmlAttribute("type")]
- public string? Type { get; set; }
+ public DisplayType? Type { get; set; }
/// (0|90|180|270)
[XmlAttribute("rotate")]
diff --git a/SabreTools.Data.Models/Listxml/Driver.cs b/SabreTools.Data.Models/Listxml/Driver.cs
index 98f55f50..c03b7baf 100644
--- a/SabreTools.Data.Models/Listxml/Driver.cs
+++ b/SabreTools.Data.Models/Listxml/Driver.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -9,15 +10,15 @@ namespace SabreTools.Data.Models.Listxml
/// (good|imperfect|preliminary), (good|preliminary|test) in older versions
[Required]
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public SupportStatus? Status { get; set; }
/// (good|imperfect|preliminary), Only present in older versions
[XmlAttribute("color")]
- public string? Color { get; set; }
+ public SupportStatus? Color { get; set; }
/// (good|imperfect|preliminary), Only present in older versions
[XmlAttribute("sound")]
- public string? Sound { get; set; }
+ public SupportStatus? Sound { get; set; }
/// Only present in older versions
[XmlAttribute("palettesize")]
@@ -26,17 +27,17 @@ namespace SabreTools.Data.Models.Listxml
/// (good|imperfect|preliminary)
[Required]
[XmlAttribute("emulation")]
- public string? Emulation { get; set; }
+ public SupportStatus? Emulation { get; set; }
/// (good|imperfect|preliminary)
[Required]
[XmlAttribute("cocktail")]
- public string? Cocktail { get; set; }
+ public SupportStatus? Cocktail { get; set; }
/// (supported|unsupported)
[Required]
[XmlAttribute("savestate")]
- public string? SaveState { get; set; }
+ public Supported? SaveState { get; set; }
/// (yes|no) "no"
[XmlAttribute("requiresartwork")]
diff --git a/SabreTools.Data.Models/Listxml/Feature.cs b/SabreTools.Data.Models/Listxml/Feature.cs
index b4897e4c..b1a29119 100644
--- a/SabreTools.Data.Models/Listxml/Feature.cs
+++ b/SabreTools.Data.Models/Listxml/Feature.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -9,14 +10,14 @@ namespace SabreTools.Data.Models.Listxml
/// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan)
[Required]
[XmlAttribute("type")]
- public string? Type { get; set; }
+ public FeatureType? Type { get; set; }
/// (unemulated|imperfect)
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public FeatureStatus? Status { get; set; }
/// (unemulated|imperfect)
[XmlAttribute("overall")]
- public string? Overall { get; set; }
+ public FeatureStatus? Overall { get; set; }
}
}
diff --git a/SabreTools.Data.Models/Listxml/Rom.cs b/SabreTools.Data.Models/Listxml/Rom.cs
index 6448731f..a2f60acc 100644
--- a/SabreTools.Data.Models/Listxml/Rom.cs
+++ b/SabreTools.Data.Models/Listxml/Rom.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -36,7 +37,7 @@ namespace SabreTools.Data.Models.Listxml
/// (baddump|nodump|good) "good"
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// (yes|no) "no"
[XmlAttribute("optional")]
diff --git a/SabreTools.Data.Models/Listxml/SoftwareList.cs b/SabreTools.Data.Models/Listxml/SoftwareList.cs
index 31f7ed3c..b440b12d 100644
--- a/SabreTools.Data.Models/Listxml/SoftwareList.cs
+++ b/SabreTools.Data.Models/Listxml/SoftwareList.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Listxml
/// (original|compatible)
[Required]
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public SoftwareListStatus? Status { get; set; }
[XmlAttribute("filter")]
public string? Filter { get; set; }
diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs
index 7568ea9f..8db62b97 100644
--- a/SabreTools.Data.Models/Listxml/Video.cs
+++ b/SabreTools.Data.Models/Listxml/Video.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Listxml
{
@@ -9,7 +10,7 @@ namespace SabreTools.Data.Models.Listxml
/// (raster|vector)
[Required]
[XmlAttribute("screen")]
- public string? Screen { get; set; }
+ public DisplayType? Screen { get; set; }
/// (vertical|horizontal)
[Required]
diff --git a/SabreTools.Data.Models/Logiqx/ClrMamePro.cs b/SabreTools.Data.Models/Logiqx/ClrMamePro.cs
index f66596a6..ba9bf306 100644
--- a/SabreTools.Data.Models/Logiqx/ClrMamePro.cs
+++ b/SabreTools.Data.Models/Logiqx/ClrMamePro.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Logiqx
{
@@ -11,14 +12,14 @@ namespace SabreTools.Data.Models.Logiqx
/// (none|split|merged|nonmerged|fullmerged|device|full) "split"
[XmlAttribute("forcemerging")]
- public string? ForceMerging { get; set; }
+ public MergingFlag ForceMerging { get; set; }
/// (obsolete|required|ignore) "obsolete"
[XmlAttribute("forcenodump")]
- public string? ForceNodump { get; set; }
+ public NodumpFlag ForceNodump { get; set; }
/// (zip|unzip) "zip"
[XmlAttribute("forcepacking")]
- public string? ForcePacking { get; set; }
+ public PackingFlag ForcePacking { get; set; }
}
}
diff --git a/SabreTools.Data.Models/Logiqx/Disk.cs b/SabreTools.Data.Models/Logiqx/Disk.cs
index c36ef5d1..2b080f8d 100644
--- a/SabreTools.Data.Models/Logiqx/Disk.cs
+++ b/SabreTools.Data.Models/Logiqx/Disk.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Logiqx
{
@@ -21,7 +22,7 @@ namespace SabreTools.Data.Models.Logiqx
/// (baddump|nodump|good|verified) "good"
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// MAME extension
[XmlAttribute("region")]
diff --git a/SabreTools.Data.Models/Logiqx/Driver.cs b/SabreTools.Data.Models/Logiqx/Driver.cs
index 72991aea..bb1f752c 100644
--- a/SabreTools.Data.Models/Logiqx/Driver.cs
+++ b/SabreTools.Data.Models/Logiqx/Driver.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Logiqx
{
@@ -9,22 +10,22 @@ namespace SabreTools.Data.Models.Logiqx
/// (good|imperfect|preliminary)
[Required]
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public SupportStatus? Status { get; set; }
/// (good|imperfect|preliminary)
[Required]
[XmlAttribute("emulation")]
- public string? Emulation { get; set; }
+ public SupportStatus? Emulation { get; set; }
/// (good|imperfect|preliminary)
[Required]
[XmlAttribute("cocktail")]
- public string? Cocktail { get; set; }
+ public SupportStatus? Cocktail { get; set; }
/// (supported|unsupported)
[Required]
[XmlAttribute("savestate")]
- public string? SaveState { get; set; }
+ public Supported? SaveState { get; set; }
/// (yes|no) "no"
[XmlAttribute("requiresartwork")]
diff --git a/SabreTools.Data.Models/Logiqx/Rom.cs b/SabreTools.Data.Models/Logiqx/Rom.cs
index be687492..ea05a3a8 100644
--- a/SabreTools.Data.Models/Logiqx/Rom.cs
+++ b/SabreTools.Data.Models/Logiqx/Rom.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
#pragma warning disable IDE1006 // Naming Styles
namespace SabreTools.Data.Models.Logiqx
@@ -77,7 +78,7 @@ namespace SabreTools.Data.Models.Logiqx
/// (baddump|nodump|good|verified) "good"
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// No-Intro extension
[XmlAttribute("serial")]
diff --git a/SabreTools.Data.Models/Logiqx/RomCenter.cs b/SabreTools.Data.Models/Logiqx/RomCenter.cs
index 2840f518..84e4554b 100644
--- a/SabreTools.Data.Models/Logiqx/RomCenter.cs
+++ b/SabreTools.Data.Models/Logiqx/RomCenter.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Logiqx
{
@@ -11,15 +12,15 @@ namespace SabreTools.Data.Models.Logiqx
/// (none|split|merged|unmerged|fullmerged|device|full) "split"
[XmlAttribute("rommode")]
- public string? RomMode { get; set; }
+ public MergingFlag RomMode { get; set; }
/// (none|split|merged|unmerged|fullmerged|device|full) "split"
[XmlAttribute("biosmode")]
- public string? BiosMode { get; set; }
+ public MergingFlag BiosMode { get; set; }
/// (none|split|merged|unmerged|fullmerged|device|full) "merged"
[XmlAttribute("samplemode")]
- public string? SampleMode { get; set; }
+ public MergingFlag SampleMode { get; set; }
/// (yes|no) "no"
[XmlAttribute("lockrommode")]
diff --git a/SabreTools.Data.Models/Logiqx/SoftwareList.cs b/SabreTools.Data.Models/Logiqx/SoftwareList.cs
index fb06ff48..69d23183 100644
--- a/SabreTools.Data.Models/Logiqx/SoftwareList.cs
+++ b/SabreTools.Data.Models/Logiqx/SoftwareList.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.Logiqx
{
@@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Logiqx
/// (original|compatible)
[Required]
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public SoftwareListStatus? Status { get; set; }
[XmlAttribute("filter")]
public string? Filter { get; set; }
diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs
index 79d6699e..155ed6d3 100644
--- a/SabreTools.Data.Models/Metadata/Chip.cs
+++ b/SabreTools.Data.Models/Metadata/Chip.cs
@@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (cpu|audio)
+ public ChipType? ChipType { get; set; }
+
public string? Name { get; set; }
/// (yes|no) "no"
@@ -26,9 +29,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string TagKey = "tag";
- /// (cpu|audio)
- public const string ChipTypeKey = "type";
-
#endregion
public Chip() => ItemType = ItemType.Chip;
diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs
index d2a257cc..8875796b 100644
--- a/SabreTools.Data.Models/Metadata/Condition.cs
+++ b/SabreTools.Data.Models/Metadata/Condition.cs
@@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata
[JsonObject("condition"), XmlRoot("condition")]
public class Condition : DatItem
{
+ #region Properties
+
+ /// (eq|ne|gt|le|lt|ge)
+ public Relation? Relation { get; set; }
+
+ #endregion
+
#region Keys
/// string
@@ -14,9 +21,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string MaskKey = "mask";
- /// (eq|ne|gt|le|lt|ge)
- public const string RelationKey = "relation";
-
/// string
public const string TagKey = "tag";
diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs
index 28222d70..98c0fd58 100644
--- a/SabreTools.Data.Models/Metadata/Control.cs
+++ b/SabreTools.Data.Models/Metadata/Control.cs
@@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling)
+ public ControlType? ControlType { get; set; }
+
/// (yes|no) "no"
public bool? Reverse { get; set; }
@@ -36,9 +39,6 @@ namespace SabreTools.Data.Models.Metadata
/// long
public const string SensitivityKey = "sensitivity";
- /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling)
- public const string ControlTypeKey = "type";
-
/// string, possibly long
public const string WaysKey = "ways";
diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs
index 5bc474cf..07fe7cc1 100644
--- a/SabreTools.Data.Models/Metadata/DataArea.cs
+++ b/SabreTools.Data.Models/Metadata/DataArea.cs
@@ -8,15 +8,15 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (big|little) "little"
+ public Endianness? Endianness { get; set; }
+
public string? Name { get; set; }
#endregion
#region Keys
- /// (big|little) "little"
- public const string EndiannessKey = "endianness";
-
/// Rom[]
[NoFilter]
public const string RomKey = "rom";
@@ -25,6 +25,7 @@ namespace SabreTools.Data.Models.Metadata
public const string SizeKey = "size";
/// (8|16|32|64) "8"
+ /// TODO: Convert to enum
public const string WidthKey = "width";
#endregion
diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs
index 17b2076c..3d17f455 100644
--- a/SabreTools.Data.Models/Metadata/Device.cs
+++ b/SabreTools.Data.Models/Metadata/Device.cs
@@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata
[JsonObject("device"), XmlRoot("device")]
public class Device : DatItem
{
+ #region Properties
+
+ /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile)
+ public DeviceType? DeviceType { get; set; }
+
+ #endregion
+
#region Keys
/// Extension[]
@@ -23,14 +30,12 @@ namespace SabreTools.Data.Models.Metadata
public const string InterfaceKey = "interface";
/// (0|1) "0"
+ /// TODO: Convert to bool?
public const string MandatoryKey = "mandatory";
/// string
public const string TagKey = "tag";
- /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile)
- public const string DeviceTypeKey = "type";
-
#endregion
public Device() => ItemType = ItemType.Device;
diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs
index 17510762..b1c77800 100644
--- a/SabreTools.Data.Models/Metadata/Disk.cs
+++ b/SabreTools.Data.Models/Metadata/Disk.cs
@@ -13,6 +13,9 @@ namespace SabreTools.Data.Models.Metadata
/// (yes|no) "no"
public bool? Optional { get; set; }
+ /// (baddump|nodump|good|verified) "good"
+ public ItemStatus? Status { get; set; }
+
/// (yes|no) "no"
public bool? Writable { get; set; }
@@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string SHA1Key = "sha1";
- /// (baddump|nodump|good|verified) "good"
- public const string StatusKey = "status";
-
#endregion
public Disk() => ItemType = ItemType.Disk;
diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs
index e81b6ceb..71dee49e 100644
--- a/SabreTools.Data.Models/Metadata/Display.cs
+++ b/SabreTools.Data.Models/Metadata/Display.cs
@@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (raster|vector|lcd|svg|unknown)
+ public DisplayType? DisplayType { get; set; }
+
/// (yes|no) "no"
public bool? FlipX { get; set; }
@@ -34,14 +37,12 @@ namespace SabreTools.Data.Models.Metadata
public const string RefreshKey = "refresh";
/// (0|90|180|270)
+ /// TODO: Convert to enum
public const string RotateKey = "rotate";
/// string
public const string TagKey = "tag";
- /// (raster|vector|lcd|svg|unknown)
- public const string DisplayTypeKey = "type";
-
/// long
public const string VBEndKey = "vbend";
diff --git a/SabreTools.Data.Models/Metadata/Driver.cs b/SabreTools.Data.Models/Metadata/Driver.cs
index 4060acd5..8c2353e7 100644
--- a/SabreTools.Data.Models/Metadata/Driver.cs
+++ b/SabreTools.Data.Models/Metadata/Driver.cs
@@ -8,6 +8,18 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (plain|dirty)
+ public Blit? Blit { get; set; }
+
+ /// (good|imperfect|preliminary)
+ public SupportStatus? Cocktail { get; set; }
+
+ /// (good|imperfect|preliminary)
+ public SupportStatus? Color { get; set; }
+
+ /// (good|imperfect|preliminary)
+ public SupportStatus? Emulation { get; set; }
+
/// (yes|no) "no"
public bool? Incomplete { get; set; }
@@ -17,6 +29,15 @@ namespace SabreTools.Data.Models.Metadata
/// (yes|no) "no"
public bool? RequiresArtwork { get; set; }
+ /// (supported|unsupported)
+ public Supported? SaveState { get; set; }
+
+ /// (good|imperfect|preliminary)
+ public SupportStatus? Sound { get; set; }
+
+ /// (good|imperfect|preliminary|test)
+ public SupportStatus? Status { get; set; }
+
/// (yes|no) "no"
public bool? Unofficial { get; set; }
@@ -24,30 +45,9 @@ namespace SabreTools.Data.Models.Metadata
#region Keys
- /// (plain|dirty)
- public const string BlitKey = "blit";
-
- /// (good|imperfect|preliminary)
- public const string CocktailKey = "cocktail";
-
- /// (good|imperfect|preliminary)
- public const string ColorKey = "color";
-
- /// (good|imperfect|preliminary)
- public const string EmulationKey = "emulation";
-
/// string, possibly long
public const string PaletteSizeKey = "palettesize";
- /// (supported|unsupported)
- public const string SaveStateKey = "savestate";
-
- /// (good|imperfect|preliminary)
- public const string SoundKey = "sound";
-
- /// (good|imperfect|preliminary|test)
- public const string StatusKey = "status";
-
#endregion
public Driver() => ItemType = ItemType.Driver;
diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs
index cca49b14..35382d95 100644
--- a/SabreTools.Data.Models/Metadata/Enums.cs
+++ b/SabreTools.Data.Models/Metadata/Enums.cs
@@ -1,5 +1,17 @@
namespace SabreTools.Data.Models.Metadata
{
+ ///
+ /// Determine the blit type
+ ///
+ public enum Blit
+ {
+ /// "plain"
+ Plain,
+
+ /// "dirty"
+ Dirty,
+ }
+
///
/// Determine the chip type
///
@@ -541,5 +553,8 @@ namespace SabreTools.Data.Models.Metadata
/// "preliminary"
Preliminary,
+
+ /// "test"
+ Test,
}
}
diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs
index 2195c262..0193ad78 100644
--- a/SabreTools.Data.Models/Metadata/Feature.cs
+++ b/SabreTools.Data.Models/Metadata/Feature.cs
@@ -8,21 +8,21 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan)
+ public FeatureType? FeatureType { get; set; }
+
public string? Name { get; set; }
+ /// (unemulated|imperfect)
+ public FeatureStatus? Overall { get; set; }
+
+ /// (unemulated|imperfect)
+ public FeatureStatus? Status { get; set; }
+
#endregion
#region Keys
- /// (unemulated|imperfect)
- public const string OverallKey = "overall";
-
- /// (unemulated|imperfect)
- public const string StatusKey = "status";
-
- /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan)
- public const string FeatureTypeKey = "type";
-
/// string
public const string ValueKey = "value";
diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs
index f4e98ea4..b1a6ca6a 100644
--- a/SabreTools.Data.Models/Metadata/Header.cs
+++ b/SabreTools.Data.Models/Metadata/Header.cs
@@ -8,9 +8,21 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public MergingFlag BiosMode { get; set; }
+
/// (yes|no) "no"
public bool? Debug { get; set; }
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public MergingFlag ForceMerging { get; set; }
+
+ /// (obsolete|required|ignore) "obsolete"
+ public NodumpFlag ForceNodump { get; set; }
+
+ /// (zip|unzip) "zip"
+ public PackingFlag ForcePacking { get; set; }
+
/// (yes|no) "yes"
public bool? ForceZipping { get; set; }
@@ -25,6 +37,12 @@ namespace SabreTools.Data.Models.Metadata
public string? Name { get; set; }
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public MergingFlag RomMode { get; set; }
+
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public MergingFlag SampleMode { get; set; }
+
#endregion
#region Keys
@@ -32,9 +50,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string AuthorKey = "author";
- /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
- public const string BiosModeKey = "biosmode";
-
/// string
public const string BuildKey = "build";
@@ -64,15 +79,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string EmulatorVersionKey = "emulatorversion";
- /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
- public const string ForceMergingKey = "forcemerging";
-
- /// (obsolete|required|ignore) "obsolete"
- public const string ForceNodumpKey = "forcenodump";
-
- /// (zip|unzip) "zip"
- public const string ForcePackingKey = "forcepacking";
-
/// string, string[]
public const string HeaderKey = "header";
@@ -112,18 +118,12 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string RefNameKey = "refname";
- /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
- public const string RomModeKey = "rommode";
-
/// string
public const string RomTitleKey = "romTitle";
/// string
public const string RootDirKey = "rootdir";
- /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
- public const string SampleModeKey = "samplemode";
-
/// string
public const string SchemaLocationKey = "schemaLocation";
diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs
index ab98564c..2bdb8872 100644
--- a/SabreTools.Data.Models/Metadata/Machine.cs
+++ b/SabreTools.Data.Models/Metadata/Machine.cs
@@ -22,6 +22,9 @@ namespace SabreTools.Data.Models.Metadata
/// (yes|partial|no) "no"
public Runnable? Runnable { get; set; }
+ /// (yes|partial|no) "yes"
+ public Supported? Supported { get; set; }
+
#endregion
#region Keys
@@ -253,9 +256,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string StatusKey = "status";
- /// (yes|partial|no) "yes"
- public const string SupportedKey = "supported";
-
/// string
public const string SystemKey = "system";
diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs
index 39195aac..d021dcc6 100644
--- a/SabreTools.Data.Models/Metadata/Rom.cs
+++ b/SabreTools.Data.Models/Metadata/Rom.cs
@@ -17,17 +17,26 @@ namespace SabreTools.Data.Models.Metadata
/// (yes|no) "no"
public bool? Inverted { get; set; }
+ /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore)
+ public LoadFlag? LoadFlag { get; set; }
+
/// (yes|no) "no"
public bool? MIA { get; set; }
public string? Name { get; set; }
+ /// string; OpenMSX.RomBase
+ public OpenMSXSubType? OpenMSXMediaType { get; set; }
+
/// (yes|no) "no"
public bool? Optional { get; set; }
/// (yes|no) "no"
public bool? SoundOnly { get; set; }
+ /// (baddump|nodump|good|verified) "good"
+ public ItemStatus? Status { get; set; }
+
#endregion
#region Keys
@@ -128,9 +137,6 @@ namespace SabreTools.Data.Models.Metadata
/// string, possibly long; Also in ArchiveDotOrg.File
public const string LengthKey = "length";
- /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore)
- public const string LoadFlagKey = "loadflag";
-
/// string; ArchiveDotOrg.File
public const string MatrixNumberKey = "matrix_number";
@@ -143,9 +149,6 @@ namespace SabreTools.Data.Models.Metadata
/// string
public const string MD5Key = "md5";
- /// string; OpenMSX.RomBase
- public const string OpenMSXMediaType = "mediatype";
-
/// string
public const string MergeKey = "merge";
@@ -230,9 +233,6 @@ namespace SabreTools.Data.Models.Metadata
/// string, possibly long; OpenMSX.RomBase
public const string StartKey = "start";
- /// (baddump|nodump|good|verified) "good"
- public const string StatusKey = "status";
-
/// string; ArchiveDotOrg.File
public const string SummationKey = "summation";
diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs
index 18e67e4d..6819bc82 100644
--- a/SabreTools.Data.Models/Metadata/Software.cs
+++ b/SabreTools.Data.Models/Metadata/Software.cs
@@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata
public string? Name { get; set; }
+ /// (yes|partial|no) "yes"
+ public Supported? Supported { get; set; }
+
#endregion
#region Keys
@@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata
[NoFilter]
public const string SharedFeatKey = "sharedfeat";
- /// (yes|partial|no) "yes"
- public const string SupportedKey = "supported";
-
/// string
public const string YearKey = "year";
diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs
index 8b51bb32..9486f3d4 100644
--- a/SabreTools.Data.Models/Metadata/SoftwareList.cs
+++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs
@@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata
public string? Name { get; set; }
+ /// (original|compatible)
+ public SoftwareListStatus? Status { get; set; }
+
#endregion
#region Keys
@@ -27,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata
[NoFilter]
public const string SoftwareKey = "software";
- /// (original|compatible)
- public const string StatusKey = "status";
-
/// string
public const string TagKey = "tag";
diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs
index 406cb218..39754186 100644
--- a/SabreTools.Data.Models/Metadata/Video.cs
+++ b/SabreTools.Data.Models/Metadata/Video.cs
@@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata
[JsonObject("video"), XmlRoot("video")]
public class Video : DatItem
{
+ #region Properties
+
+ /// (raster|vector)
+ public DisplayType? Screen { get; set; }
+
+ #endregion
+
#region Keys
/// long
@@ -23,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata
/// double; Originally "freq"
public const string RefreshKey = "refresh";
- /// (raster|vector)
- public const string ScreenKey = "screen";
-
/// long; Originally "x"
public const string WidthKey = "width";
diff --git a/SabreTools.Data.Models/SeparatedValue/Row.cs b/SabreTools.Data.Models/SeparatedValue/Row.cs
index 15f42fca..5fed32c0 100644
--- a/SabreTools.Data.Models/SeparatedValue/Row.cs
+++ b/SabreTools.Data.Models/SeparatedValue/Row.cs
@@ -1,4 +1,6 @@
+using SabreTools.Data.Models.Metadata;
+
namespace SabreTools.Data.Models.SeparatedValue
{
///
@@ -57,6 +59,6 @@ namespace SabreTools.Data.Models.SeparatedValue
public string? SpamSum { get; set; }
/// Status, Nodump
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
}
}
diff --git a/SabreTools.Data.Models/SoftwareList/DataArea.cs b/SabreTools.Data.Models/SoftwareList/DataArea.cs
index 2ce98c0a..dfe7dfee 100644
--- a/SabreTools.Data.Models/SoftwareList/DataArea.cs
+++ b/SabreTools.Data.Models/SoftwareList/DataArea.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.SoftwareList
{
@@ -20,7 +21,7 @@ namespace SabreTools.Data.Models.SoftwareList
/// (big|little) "little"
[XmlAttribute("endianness")]
- public string? Endianness { get; set; }
+ public Endianness? Endianness { get; set; }
[XmlElement("rom")]
public Rom[]? Rom { get; set; }
diff --git a/SabreTools.Data.Models/SoftwareList/Disk.cs b/SabreTools.Data.Models/SoftwareList/Disk.cs
index 9fddd1cb..642c8ab5 100644
--- a/SabreTools.Data.Models/SoftwareList/Disk.cs
+++ b/SabreTools.Data.Models/SoftwareList/Disk.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.SoftwareList
{
@@ -18,7 +19,7 @@ namespace SabreTools.Data.Models.SoftwareList
/// (baddump|nodump|good) "good"
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// (yes|no) "no"
[XmlAttribute("writable")]
diff --git a/SabreTools.Data.Models/SoftwareList/Rom.cs b/SabreTools.Data.Models/SoftwareList/Rom.cs
index 7044ebcf..265f8127 100644
--- a/SabreTools.Data.Models/SoftwareList/Rom.cs
+++ b/SabreTools.Data.Models/SoftwareList/Rom.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.SoftwareList
{
@@ -31,10 +32,10 @@ namespace SabreTools.Data.Models.SoftwareList
/// (baddump|nodump|good) "good"
[XmlAttribute("status")]
- public string? Status { get; set; }
+ public ItemStatus? Status { get; set; }
/// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore)
[XmlAttribute("loadflag")]
- public string? LoadFlag { get; set; }
+ public LoadFlag? LoadFlag { get; set; }
}
}
diff --git a/SabreTools.Data.Models/SoftwareList/Software.cs b/SabreTools.Data.Models/SoftwareList/Software.cs
index d7baaf09..74acbd35 100644
--- a/SabreTools.Data.Models/SoftwareList/Software.cs
+++ b/SabreTools.Data.Models/SoftwareList/Software.cs
@@ -1,5 +1,6 @@
using System.Xml;
using System.Xml.Serialization;
+using SabreTools.Data.Models.Metadata;
namespace SabreTools.Data.Models.SoftwareList
{
@@ -15,7 +16,7 @@ namespace SabreTools.Data.Models.SoftwareList
/// (yes|partial|no) "yes"
[XmlAttribute("supported")]
- public string? Supported { get; set; }
+ public Supported? Supported { get; set; }
[Required]
[XmlElement("description")]
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
index 9bdc43cd..dcdc1daf 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
@@ -108,9 +108,9 @@ namespace SabreTools.Metadata.DatFiles.Test
ValidateDriver(driver);
// All other fields are tested separately
- Rom? dump = Array.Find(datItems, item => item is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType) is not null) as Rom;
+ Rom? dump = Array.Find(datItems, item => item is Rom rom && rom.OpenMSXMediaType is not null) as Rom;
Assert.NotNull(dump);
- Assert.Equal("rom", dump.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType));
+ Assert.Equal(Data.Models.Metadata.OpenMSXSubType.Rom, dump.OpenMSXMediaType);
Feature? feature = Array.Find(datItems, item => item is Feature) as Feature;
ValidateFeature(feature);
@@ -158,7 +158,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Release? release = Array.Find(datItems, item => item is Release) as Release;
ValidateRelease(release);
- Rom? rom = Array.Find(datItems, item => item is Rom rom && !rom.DataAreaSpecified && !rom.PartSpecified && rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType) is null) as Rom;
+ Rom? rom = Array.Find(datItems, item => item is Rom rom && !rom.DataAreaSpecified && !rom.PartSpecified && rom.OpenMSXMediaType is null) as Rom;
ValidateRom(rom);
Sample? sample = Array.Find(datItems, item => item is Sample) as Sample;
@@ -202,7 +202,7 @@ namespace SabreTools.Metadata.DatFiles.Test
return new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.AuthorKey] = "author",
- [Data.Models.Metadata.Header.BiosModeKey] = "merged",
+ BiosMode = Data.Models.Metadata.MergingFlag.Merged,
[Data.Models.Metadata.Header.BuildKey] = "build",
[Data.Models.Metadata.Header.CanOpenKey] = canOpen,
[Data.Models.Metadata.Header.CategoryKey] = "category",
@@ -213,9 +213,9 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Header.DescriptionKey] = "description",
[Data.Models.Metadata.Header.EmailKey] = "email",
[Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion",
- [Data.Models.Metadata.Header.ForceMergingKey] = "merged",
- [Data.Models.Metadata.Header.ForceNodumpKey] = "required",
- [Data.Models.Metadata.Header.ForcePackingKey] = "zip",
+ ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
+ ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
+ ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
ForceZipping = true,
[Data.Models.Metadata.Header.HeaderKey] = "header",
[Data.Models.Metadata.Header.HomepageKey] = "homepage",
@@ -232,10 +232,10 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Header.NotesKey] = "notes",
[Data.Models.Metadata.Header.PluginKey] = "plugin",
[Data.Models.Metadata.Header.RefNameKey] = "refname",
- [Data.Models.Metadata.Header.RomModeKey] = "merged",
+ RomMode = Data.Models.Metadata.MergingFlag.Merged,
[Data.Models.Metadata.Header.RomTitleKey] = "romtitle",
[Data.Models.Metadata.Header.RootDirKey] = "rootdir",
- [Data.Models.Metadata.Header.SampleModeKey] = "merged",
+ SampleMode = Data.Models.Metadata.MergingFlag.Merged,
[Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation",
[Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight",
[Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth",
@@ -323,7 +323,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Machine.SourceFileKey] = "sourcefile",
[Data.Models.Metadata.Machine.SourceRomKey] = "sourcerom",
[Data.Models.Metadata.Machine.StatusKey] = "status",
- [Data.Models.Metadata.Machine.SupportedKey] = "yes",
+ Supported = Data.Models.Metadata.Supported.Yes,
[Data.Models.Metadata.Machine.SystemKey] = "system",
[Data.Models.Metadata.Machine.TagsKey] = "tags",
[Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(),
@@ -409,7 +409,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Name = "name",
SoundOnly = true,
[Data.Models.Metadata.Chip.TagKey] = "tag",
- [Data.Models.Metadata.Chip.ChipTypeKey] = "cpu",
+ ChipType = Data.Models.Metadata.ChipType.CPU,
};
}
@@ -432,7 +432,7 @@ namespace SabreTools.Metadata.DatFiles.Test
{
[Data.Models.Metadata.Condition.ValueKey] = "value",
[Data.Models.Metadata.Condition.MaskKey] = "mask",
- [Data.Models.Metadata.Condition.RelationKey] = "eq",
+ Relation = Data.Models.Metadata.Relation.Equal,
[Data.Models.Metadata.Condition.TagKey] = "tag",
};
}
@@ -470,7 +470,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Control.ReqButtonsKey] = 12345L,
Reverse = true,
[Data.Models.Metadata.Control.SensitivityKey] = 12345L,
- [Data.Models.Metadata.Control.ControlTypeKey] = "lightgun",
+ ControlType = Data.Models.Metadata.ControlType.Lightgun,
[Data.Models.Metadata.Control.WaysKey] = "ways",
[Data.Models.Metadata.Control.Ways2Key] = "ways2",
[Data.Models.Metadata.Control.Ways3Key] = "ways3",
@@ -487,7 +487,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Device.InterfaceKey] = "interface",
[Data.Models.Metadata.Device.MandatoryKey] = 1L,
[Data.Models.Metadata.Device.TagKey] = "tag",
- [Data.Models.Metadata.Device.DeviceTypeKey] = "punchtape",
+ DeviceType = Data.Models.Metadata.DeviceType.PunchTape,
};
}
@@ -539,7 +539,7 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.DataArea
{
- [Data.Models.Metadata.DataArea.EndiannessKey] = "big",
+ Endianness = Data.Models.Metadata.Endianness.Big,
Name = "name",
[Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] },
[Data.Models.Metadata.DataArea.SizeKey] = 12345L,
@@ -585,7 +585,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Display.RefreshKey] = 12345L,
[Data.Models.Metadata.Display.RotateKey] = 90,
[Data.Models.Metadata.Display.TagKey] = "tag",
- [Data.Models.Metadata.Display.DisplayTypeKey] = "vector",
+ DisplayType = Data.Models.Metadata.DisplayType.Vector,
[Data.Models.Metadata.Display.VBEndKey] = 12345L,
[Data.Models.Metadata.Display.VBStartKey] = 12345L,
[Data.Models.Metadata.Display.VTotalKey] = 12345L,
@@ -597,17 +597,17 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Driver
{
- [Data.Models.Metadata.Driver.BlitKey] = "plain",
- [Data.Models.Metadata.Driver.CocktailKey] = "good",
- [Data.Models.Metadata.Driver.ColorKey] = "good",
- [Data.Models.Metadata.Driver.EmulationKey] = "good",
+ Blit = Data.Models.Metadata.Blit.Plain,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
Incomplete = true,
NoSoundHardware = true,
[Data.Models.Metadata.Driver.PaletteSizeKey] = "pallettesize",
RequiresArtwork = true,
- [Data.Models.Metadata.Driver.SaveStateKey] = "supported",
- [Data.Models.Metadata.Driver.SoundKey] = "good",
- [Data.Models.Metadata.Driver.StatusKey] = "good",
+ SaveState = Data.Models.Metadata.Supported.Yes,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
+ Status = Data.Models.Metadata.SupportStatus.Good,
Unofficial = true,
};
}
@@ -640,9 +640,9 @@ namespace SabreTools.Metadata.DatFiles.Test
return new Data.Models.Metadata.Feature
{
Name = "name",
- [Data.Models.Metadata.Feature.OverallKey] = "imperfect",
- [Data.Models.Metadata.Feature.StatusKey] = "imperfect",
- [Data.Models.Metadata.Feature.FeatureTypeKey] = "protection",
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ FeatureType = Data.Models.Metadata.FeatureType.Protection,
[Data.Models.Metadata.Feature.ValueKey] = "value",
};
}
@@ -805,7 +805,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Inverted = true,
[Data.Models.Metadata.Rom.LastModifiedTimeKey] = "mtime",
[Data.Models.Metadata.Rom.LengthKey] = "length",
- [Data.Models.Metadata.Rom.LoadFlagKey] = "load16_byte",
+ LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte,
[Data.Models.Metadata.Rom.MatrixNumberKey] = "matrix_number",
[Data.Models.Metadata.Rom.MD2Key] = HashType.MD2.ZeroString,
[Data.Models.Metadata.Rom.MD4Key] = HashType.MD4.ZeroString,
@@ -843,7 +843,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Rom.SourceKey] = "source",
[Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString,
[Data.Models.Metadata.Rom.StartKey] = "start",
- [Data.Models.Metadata.Rom.StatusKey] = "good",
+ Status = Data.Models.Metadata.ItemStatus.Good,
[Data.Models.Metadata.Rom.SummationKey] = "summation",
[Data.Models.Metadata.Rom.TitleKey] = "title",
[Data.Models.Metadata.Rom.TrackKey] = "track",
@@ -938,7 +938,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Software.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() },
[Data.Models.Metadata.Software.PublisherKey] = "publisher",
[Data.Models.Metadata.Software.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() },
- [Data.Models.Metadata.Software.SupportedKey] = true,
+ Supported = Data.Models.Metadata.Supported.Yes,
[Data.Models.Metadata.Software.YearKey] = "year",
};
}
@@ -952,7 +952,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Name = "name",
[Data.Models.Metadata.SoftwareList.NotesKey] = "notes",
[Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() },
- [Data.Models.Metadata.SoftwareList.StatusKey] = "original",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
[Data.Models.Metadata.SoftwareList.TagKey] = "tag",
};
}
@@ -1026,7 +1026,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Video.HeightKey] = 12345L,
[Data.Models.Metadata.Video.OrientationKey] = "vertical",
[Data.Models.Metadata.Video.RefreshKey] = 12345L,
- [Data.Models.Metadata.Video.ScreenKey] = "vector",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
[Data.Models.Metadata.Video.WidthKey] = 12345L,
};
}
@@ -1038,7 +1038,7 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateHeader(DatHeader datHeader)
{
Assert.Equal("author", datHeader.ReadString(Data.Models.Metadata.Header.AuthorKey));
- Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.BiosModeKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode);
Assert.Equal("build", datHeader.ReadString(Data.Models.Metadata.Header.BuildKey));
Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey));
Assert.Equal("category", datHeader.ReadString(Data.Models.Metadata.Header.CategoryKey));
@@ -1049,9 +1049,9 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("description", datHeader.ReadString(Data.Models.Metadata.Header.DescriptionKey));
Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey));
Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
- Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.ForceMergingKey));
- Assert.Equal("required", datHeader.ReadString(Data.Models.Metadata.Header.ForceNodumpKey));
- Assert.Equal("zip", datHeader.ReadString(Data.Models.Metadata.Header.ForcePackingKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging);
+ Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump);
+ Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking);
Assert.True(datHeader.ForceZipping);
Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey));
Assert.Equal("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey));
@@ -1068,10 +1068,10 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey));
Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey));
Assert.Equal("refname", datHeader.ReadString(Data.Models.Metadata.Header.RefNameKey));
- Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.RomModeKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.RomMode);
Assert.Equal("romtitle", datHeader.ReadString(Data.Models.Metadata.Header.RomTitleKey));
Assert.Equal("rootdir", datHeader.ReadString(Data.Models.Metadata.Header.RootDirKey));
- Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.SampleModeKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode);
Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey));
Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey));
Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey));
@@ -1131,7 +1131,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey));
Assert.Equal("sourcerom", machine.ReadString(Data.Models.Metadata.Machine.SourceRomKey));
Assert.Equal("status", machine.ReadString(Data.Models.Metadata.Machine.StatusKey));
- Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.SupportedKey));
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported);
Assert.Equal("system", machine.ReadString(Data.Models.Metadata.Machine.SystemKey));
Assert.Equal("tags", machine.ReadString(Data.Models.Metadata.Machine.TagsKey));
Assert.Equal("year", machine.ReadString(Data.Models.Metadata.Machine.YearKey));
@@ -1179,7 +1179,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("name", chip.GetName());
Assert.True(chip.SoundOnly);
Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey));
- Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey));
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType);
}
private static void ValidateCondition(Condition? condition)
@@ -1187,7 +1187,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(condition);
Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey));
Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey));
- Assert.Equal("eq", condition.ReadString(Data.Models.Metadata.Condition.RelationKey));
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey));
}
@@ -1242,7 +1242,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey));
Assert.True(control.Reverse);
Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey));
- Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey));
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType);
Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey));
Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key));
Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key));
@@ -1251,7 +1251,7 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateDataArea(DataArea? dataArea)
{
Assert.NotNull(dataArea);
- Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey));
+ Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness);
Assert.Equal("name", dataArea.GetName());
Assert.Equal(12345L, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey));
Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey));
@@ -1264,7 +1264,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey));
Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey));
Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey));
- Assert.Equal("punchtape", device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey));
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType);
Extension[]? extensions = device.Read(Data.Models.Metadata.Device.ExtensionKey);
Assert.NotNull(extensions);
@@ -1359,7 +1359,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey));
Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey));
Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey));
- Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey));
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBEndKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBStartKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VTotalKey));
@@ -1369,17 +1369,17 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateDriver(Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("plain", driver.ReadString(Data.Models.Metadata.Driver.BlitKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey));
+ Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
Assert.True(driver.Incomplete);
Assert.True(driver.NoSoundHardware);
Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey));
Assert.True(driver.RequiresArtwork);
- Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey));
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
Assert.True(driver.Unofficial);
}
@@ -1393,9 +1393,9 @@ namespace SabreTools.Metadata.DatFiles.Test
{
Assert.NotNull(feature);
Assert.Equal("name", feature.GetName());
- Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey));
- Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey));
- Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey));
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType);
Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey));
}
@@ -1449,9 +1449,9 @@ namespace SabreTools.Metadata.DatFiles.Test
{
Assert.NotNull(partFeature);
Assert.Equal("name", partFeature.GetName());
- Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.OverallKey));
- Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.StatusKey));
- Assert.Equal("protection", partFeature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey));
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, partFeature.FeatureType);
Assert.Equal("value", partFeature.ReadString(Data.Models.Metadata.Feature.ValueKey));
Part? part = partFeature.Read(PartFeature.PartKey);
@@ -1525,12 +1525,12 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.True(rom.Inverted);
Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey));
Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey));
- Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey));
+ Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag);
Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey));
Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key));
Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key));
Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key));
- Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test
+ Assert.Null(rom.OpenMSXMediaType); // Omit due to other test
Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey));
Assert.True(rom.MIA);
Assert.Equal("name", rom.GetName());
@@ -1563,7 +1563,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey));
Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey));
Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey));
- Assert.Equal("good", rom.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey));
Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey));
Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey));
@@ -1628,7 +1628,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("name", softwareList.GetName());
Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey));
// TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed
- Assert.Equal("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey));
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status);
Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey));
}
@@ -1663,7 +1663,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(display);
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey));
- Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey));
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey));
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
index bb8b379e..2bfb50e0 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
@@ -374,7 +374,7 @@ namespace SabreTools.Metadata.DatFiles.Test
{
Assert.NotNull(header);
Assert.Equal("author", header.ReadString(Data.Models.Metadata.Header.AuthorKey));
- Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.BiosModeKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode);
Assert.Equal("build", header.ReadString(Data.Models.Metadata.Header.BuildKey));
Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey));
Assert.Equal("category", header.ReadString(Data.Models.Metadata.Header.CategoryKey));
@@ -385,9 +385,9 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("description", header.ReadString(Data.Models.Metadata.Header.DescriptionKey));
Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey));
Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
- Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.ForceMergingKey));
- Assert.Equal("required", header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey));
- Assert.Equal("zip", header.ReadString(Data.Models.Metadata.Header.ForcePackingKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging);
+ Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump);
+ Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking);
Assert.True(header.ForceZipping);
Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey));
Assert.Equal("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey));
@@ -404,10 +404,10 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey));
Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey));
Assert.Equal("refname", header.ReadString(Data.Models.Metadata.Header.RefNameKey));
- Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.RomModeKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.RomMode);
Assert.Equal("romtitle", header.ReadString(Data.Models.Metadata.Header.RomTitleKey));
Assert.Equal("rootdir", header.ReadString(Data.Models.Metadata.Header.RootDirKey));
- Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.SampleModeKey));
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode);
Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey));
Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey));
Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey));
@@ -466,7 +466,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey));
Assert.Equal("sourcerom", machine.ReadString(Data.Models.Metadata.Machine.SourceRomKey));
Assert.Equal("status", machine.ReadString(Data.Models.Metadata.Machine.StatusKey));
- Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.SupportedKey));
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported);
Assert.Equal("system", machine.ReadString(Data.Models.Metadata.Machine.SystemKey));
Assert.Equal("tags", machine.ReadString(Data.Models.Metadata.Machine.TagsKey));
Assert.Equal("year", machine.ReadString(Data.Models.Metadata.Machine.YearKey));
@@ -686,7 +686,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("name", chip.Name);
Assert.True(chip.SoundOnly);
Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey));
- Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey));
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType);
}
private static void ValidateMetadataCondition(Data.Models.Metadata.Condition? condition)
@@ -694,7 +694,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(condition);
Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey));
Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey));
- Assert.Equal("eq", condition.ReadString(Data.Models.Metadata.Condition.RelationKey));
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey));
}
@@ -749,7 +749,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey));
Assert.True(control.Reverse);
Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey));
- Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey));
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType);
Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey));
Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key));
Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key));
@@ -758,7 +758,7 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataDataArea(Data.Models.Metadata.DataArea? dataArea)
{
Assert.NotNull(dataArea);
- Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey));
+ Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness);
Assert.Equal("name", dataArea.Name);
Assert.Equal(12345, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey));
Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey));
@@ -776,7 +776,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey));
Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey));
Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey));
- Assert.Equal("punchtape", device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey));
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType);
Data.Models.Metadata.Extension[]? extensions = device.ReadArray(Data.Models.Metadata.Device.ExtensionKey);
Assert.NotNull(extensions);
@@ -876,7 +876,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey));
Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey));
Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey));
- Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey));
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBEndKey));
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBStartKey));
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VTotalKey));
@@ -886,17 +886,17 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataDriver(Data.Models.Metadata.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("plain", driver.ReadString(Data.Models.Metadata.Driver.BlitKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey));
+ Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
Assert.True(driver.Incomplete);
Assert.True(driver.NoSoundHardware);
Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey));
Assert.True(driver.RequiresArtwork);
- Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey));
- Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey));
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
Assert.True(driver.Unofficial);
}
@@ -910,9 +910,9 @@ namespace SabreTools.Metadata.DatFiles.Test
{
Assert.NotNull(feature);
Assert.Equal("name", feature.Name);
- Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey));
- Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey));
- Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey));
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType);
Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey));
}
@@ -1070,12 +1070,12 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.True(rom.Inverted);
Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey));
Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey));
- Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey));
+ Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag);
Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey));
Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key));
Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key));
Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key));
- Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test
+ Assert.Null(rom.OpenMSXMediaType); // Omit due to other test
Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey));
Assert.True(rom.MIA);
Assert.Equal("name", rom.Name);
@@ -1108,7 +1108,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey));
Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey));
Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey));
- Assert.Equal("good", rom.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey));
Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey));
Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey));
@@ -1191,7 +1191,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey));
Assert.Equal("name", softwareList.Name);
Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey));
- Assert.Equal("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey));
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status);
Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey));
// TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed
@@ -1259,7 +1259,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey));
Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey));
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.RefreshKey));
- Assert.Equal("vector", video.ReadString(Data.Models.Metadata.Video.ScreenKey));
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.WidthKey));
}
diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs
index f5cef637..cfb8ead3 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs
@@ -1,6 +1,4 @@
-using SabreTools.Data.Extensions;
using SabreTools.Hashing;
-using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
using Xunit;
using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus;
@@ -255,7 +253,7 @@ namespace SabreTools.Metadata.DatFiles.Test
{
var disk = new Disk();
- disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Good.AsStringValue());
+ disk.Status = ItemStatus.Good;
disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
@@ -301,7 +299,7 @@ namespace SabreTools.Metadata.DatFiles.Test
{
var rom = new Rom();
- rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Good.AsStringValue());
+ rom.Status = ItemStatus.Good;
rom.Write(Data.Models.Metadata.Rom.SizeKey, 1);
rom.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString);
rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString);
diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
index 5981ecc4..2e64dcb6 100644
--- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
@@ -185,7 +185,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Chip.ChipTypeKey,
+ nameof(Data.Models.Metadata.Chip.ChipType),
nameof(Data.Models.Metadata.Chip.Name),
]));
}
@@ -200,7 +200,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Display.DisplayTypeKey,
+ nameof(Data.Models.Metadata.Display.DisplayType),
Data.Models.Metadata.Display.RotateKey,
]));
}
@@ -258,8 +258,8 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Driver.StatusKey,
- Data.Models.Metadata.Driver.EmulationKey,
+ nameof(Data.Models.Metadata.Driver.Status),
+ nameof(Data.Models.Metadata.Driver.Emulation),
]));
}
@@ -865,7 +865,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Chip.Name),
- Data.Models.Metadata.Chip.ChipTypeKey,
+ nameof(Data.Models.Metadata.Chip.ChipType),
]));
}
@@ -879,7 +879,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Display.DisplayTypeKey,
+ nameof(Data.Models.Metadata.Display.DisplayType),
Data.Models.Metadata.Display.RefreshKey,
]));
}
@@ -980,10 +980,10 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Driver.StatusKey,
- Data.Models.Metadata.Driver.EmulationKey,
- Data.Models.Metadata.Driver.CocktailKey,
- Data.Models.Metadata.Driver.SaveStateKey,
+ nameof(Data.Models.Metadata.Driver.Status),
+ nameof(Data.Models.Metadata.Driver.Emulation),
+ nameof(Data.Models.Metadata.Driver.Cocktail),
+ nameof(Data.Models.Metadata.Driver.SaveState),
]));
}
@@ -997,7 +997,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Feature.FeatureTypeKey,
+ nameof(Data.Models.Metadata.Feature.FeatureType),
]));
}
@@ -1011,7 +1011,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Device.DeviceTypeKey,
+ nameof(Data.Models.Metadata.Device.DeviceType),
]));
}
@@ -1041,7 +1041,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.True(actual.SequenceEqual([
Data.Models.Metadata.SoftwareList.TagKey,
nameof(Data.Models.Metadata.SoftwareList.Name),
- Data.Models.Metadata.SoftwareList.StatusKey,
+ nameof(Data.Models.Metadata.SoftwareList.Status),
]));
}
@@ -1210,10 +1210,10 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Driver.StatusKey,
- Data.Models.Metadata.Driver.EmulationKey,
- Data.Models.Metadata.Driver.CocktailKey,
- Data.Models.Metadata.Driver.SaveStateKey,
+ nameof(Data.Models.Metadata.Driver.Status),
+ nameof(Data.Models.Metadata.Driver.Emulation),
+ nameof(Data.Models.Metadata.Driver.Cocktail),
+ nameof(Data.Models.Metadata.Driver.SaveState),
]));
}
@@ -1229,7 +1229,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.True(actual.SequenceEqual([
Data.Models.Metadata.SoftwareList.TagKey,
nameof(Data.Models.Metadata.SoftwareList.Name),
- Data.Models.Metadata.SoftwareList.StatusKey,
+ nameof(Data.Models.Metadata.SoftwareList.Status),
]));
}
diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs
index 03f630f9..a0881d41 100644
--- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs
@@ -26,8 +26,9 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(disk, machineIndex, sourceIndex, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value;
- Assert.True(actual is Disk);
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Disk.StatusKey));
+ Disk? actualDisk = actual as Disk;
+ Assert.NotNull(actualDisk);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualDisk.Status);
}
[Fact]
@@ -45,8 +46,9 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(disk, machineIndex, sourceIndex, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value;
- Assert.True(actual is Disk);
- Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Disk.StatusKey));
+ Disk? actualDisk = actual as Disk;
+ Assert.NotNull(actualDisk);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualDisk.Status);
}
[Fact]
@@ -144,10 +146,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value;
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status);
}
[Fact]
@@ -166,10 +169,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value;
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status);
}
[Fact]
@@ -188,10 +192,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value;
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status);
}
[Fact]
@@ -209,10 +214,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value;
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status);
}
[Fact]
diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs
index 6b6bbd25..5df8f9c2 100644
--- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs
@@ -26,8 +26,9 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(disk, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
- Assert.True(actual is Disk);
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Disk.StatusKey));
+ Disk? actualDisk = actual as Disk;
+ Assert.NotNull(actualDisk);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualDisk.Status);
}
[Fact]
@@ -45,8 +46,9 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(disk, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
- Assert.True(actual is Disk);
- Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Disk.StatusKey));
+ Disk? actualDisk = actual as Disk;
+ Assert.NotNull(actualDisk);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualDisk.Status);
}
[Fact]
@@ -66,7 +68,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
Assert.True(actual is File);
- //Assert.Equal("none", actual.GetStringFieldValue(File.StatusKey));
+ //Assert.Equal(ItemStatus.None, actual.GetStringFieldValue(File.StatusKey));
}
[Fact]
@@ -85,7 +87,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
Assert.True(actual is File);
- //Assert.Equal("nodump", actual.GetStringFieldValue(File.StatusKey));
+ //Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actual.GetStringFieldValue(File.StatusKey));
}
[Fact]
@@ -105,7 +107,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
Assert.True(actual is Media);
- //Assert.Equal("none", actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey));
+ //Assert.Equal(ItemStatus.None, actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey));
}
[Fact]
@@ -124,7 +126,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
Assert.True(actual is Media);
- //Assert.Equal("nodump", actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey));
+ //Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey));
}
[Fact]
@@ -144,10 +146,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status);
}
[Fact]
@@ -166,10 +169,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status);
}
[Fact]
@@ -188,10 +192,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status);
}
[Fact]
@@ -209,10 +214,11 @@ namespace SabreTools.Metadata.DatFiles.Test
_ = dict.AddItem(rom, statsOnly: false);
DatItem actual = Assert.Single(dict.GetItemsForBucket("default"));
- Assert.True(actual is Rom);
+ Rom? actualRom = actual as Rom;
+ Assert.NotNull(actualRom);
Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey));
Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
- Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status);
}
[Fact]
diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
index cf262850..25c241ac 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
@@ -6,7 +6,6 @@ using System.Threading.Tasks;
using SabreTools.Metadata.Filter;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
-using SabreTools.Data.Extensions;
using MergingFlag = SabreTools.Data.Models.Metadata.MergingFlag;
using NodumpFlag = SabreTools.Data.Models.Metadata.NodumpFlag;
using PackingFlag = SabreTools.Data.Models.Metadata.PackingFlag;
@@ -93,8 +92,8 @@ namespace SabreTools.Metadata.DatFiles
// Selectively set all possible fields -- TODO: Figure out how to make this less manual
if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null)
Header.Write(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey));
- if (Header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None)
- Header.Write(Data.Models.Metadata.Header.BiosModeKey, header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag().AsStringValue());
+ if (Header.BiosMode == MergingFlag.None)
+ Header.BiosMode = header.BiosMode;
if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null)
Header.Write(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey));
if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null)
@@ -113,12 +112,12 @@ namespace SabreTools.Metadata.DatFiles
Header.Write(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey));
if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null)
Header.Write(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
- if (Header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None)
- Header.Write(Data.Models.Metadata.Header.ForceMergingKey, header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag().AsStringValue());
- if (Header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None)
- Header.Write(Data.Models.Metadata.Header.ForceNodumpKey, header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag().AsStringValue());
- if (Header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None)
- Header.Write(Data.Models.Metadata.Header.ForcePackingKey, header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag().AsStringValue());
+ if (Header.ForceMerging == MergingFlag.None)
+ Header.ForceMerging = header.ForceMerging;
+ if (Header.ForceNodump == NodumpFlag.None)
+ Header.ForceNodump = header.ForceNodump;
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = header.ForcePacking;
if (Header.ForceZipping is null)
Header.ForceZipping = header.ForceZipping;
if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null)
@@ -145,14 +144,14 @@ namespace SabreTools.Metadata.DatFiles
Header.Write(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey));
if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null)
Header.Write(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey));
- if (Header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None)
- Header.Write(Data.Models.Metadata.Header.RomModeKey, header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag().AsStringValue());
+ if (Header.RomMode == MergingFlag.None)
+ Header.RomMode = header.RomMode;
if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null)
Header.Write(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey));
if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null)
Header.Write(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey));
- if (Header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None)
- Header.Write(Data.Models.Metadata.Header.SampleModeKey, header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag().AsStringValue());
+ if (Header.SampleMode == MergingFlag.None)
+ Header.SampleMode = header.SampleMode;
if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null)
Header.Write(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey));
if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey) is null)
@@ -613,10 +612,10 @@ namespace SabreTools.Metadata.DatFiles
long? size = romItem.ReadLong(Data.Models.Metadata.Rom.SizeKey);
// If the rom is a continue or ignore
- string? loadFlag = rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey);
+ Data.Models.Metadata.LoadFlag? loadFlag = rom.LoadFlag;
if (loadFlag is not null
- && (loadFlag.Equals("continue", StringComparison.OrdinalIgnoreCase)
- || loadFlag.Equals("ignore", StringComparison.OrdinalIgnoreCase)))
+ && (loadFlag == Data.Models.Metadata.LoadFlag.Continue
+ || loadFlag == Data.Models.Metadata.LoadFlag.Ignore))
{
var lastRom = addRoms[addRoms.Count - 1];
long? lastSize = lastRom.ReadLong(Data.Models.Metadata.Rom.SizeKey);
diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs
index 27ebcece..723739b0 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs
@@ -358,7 +358,7 @@ namespace SabreTools.Metadata.DatFiles
else
{
aggregateDataArea = [];
- aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey);
+ aggregateDataArea.Endianness = dataArea.Endianness;
aggregateDataArea.Name = dataArea.Name;
aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey);
aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey);
@@ -784,7 +784,7 @@ namespace SabreTools.Metadata.DatFiles
else
{
aggregateDataArea = [];
- aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey);
+ aggregateDataArea.Endianness = dataArea.Endianness;
aggregateDataArea.Name = dataArea.Name;
aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey);
aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey);
@@ -937,7 +937,7 @@ namespace SabreTools.Metadata.DatFiles
[Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(),
[Data.Models.Metadata.Video.HeightKey] = displayItem.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(),
[Data.Models.Metadata.Video.RefreshKey] = displayItem.ReadDouble(Data.Models.Metadata.Display.RefreshKey).ToString(),
- [Data.Models.Metadata.Video.ScreenKey] = displayItem.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType()?.AsStringValue(),
+ Screen = displayItem.DisplayType,
[Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString()
};
@@ -977,7 +977,7 @@ namespace SabreTools.Metadata.DatFiles
var romItem = item.GetInternalClone();
// Create a Dump for every Rom that has a subtype
- switch (romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType).AsOpenMSXSubType())
+ switch (romItem.OpenMSXMediaType)
{
case OpenMSXSubType.Rom:
var dumpRom = new Data.Models.Metadata.Dump();
diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs
index 430fab85..da81e620 100644
--- a/SabreTools.Metadata.DatFiles/DatHeader.cs
+++ b/SabreTools.Metadata.DatFiles/DatHeader.cs
@@ -37,6 +37,12 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Name = value;
}
+ public MergingFlag BiosMode
+ {
+ get => _internal.BiosMode;
+ set => _internal.BiosMode = value;
+ }
+
[JsonIgnore]
public bool CanOpenSpecified
{
@@ -53,6 +59,24 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Debug = value;
}
+ public MergingFlag ForceMerging
+ {
+ get => _internal.ForceMerging;
+ set => _internal.ForceMerging = value;
+ }
+
+ public NodumpFlag ForceNodump
+ {
+ get => _internal.ForceNodump;
+ set => _internal.ForceNodump = value;
+ }
+
+ public PackingFlag ForcePacking
+ {
+ get => _internal.ForcePacking;
+ set => _internal.ForcePacking = value;
+ }
+
public bool? ForceZipping
{
get => _internal.ForceZipping;
@@ -104,6 +128,18 @@ namespace SabreTools.Metadata.DatFiles
}
}
+ public MergingFlag RomMode
+ {
+ get => _internal.RomMode;
+ set => _internal.RomMode = value;
+ }
+
+ public MergingFlag SampleMode
+ {
+ get => _internal.SampleMode;
+ set => _internal.SampleMode = value;
+ }
+
[JsonIgnore]
public bool SearchSpecified
{
@@ -152,20 +188,6 @@ namespace SabreTools.Metadata.DatFiles
{
var header = (_internal.Clone() as Data.Models.Metadata.Header)!;
- // Remove fields with default values
- if (header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None)
- header.Remove(Data.Models.Metadata.Header.ForceMergingKey);
- if (header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None)
- header.Remove(Data.Models.Metadata.Header.ForceNodumpKey);
- if (header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None)
- header.Remove(Data.Models.Metadata.Header.ForcePackingKey);
- if (header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None)
- header.Remove(Data.Models.Metadata.Header.BiosModeKey);
- if (header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None)
- header.Remove(Data.Models.Metadata.Header.RomModeKey);
- if (header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None)
- header.Remove(Data.Models.Metadata.Header.SampleModeKey);
-
// Convert subheader values
if (CanOpenSpecified)
header[Data.Models.Metadata.Header.CanOpenKey] = new Data.Models.OfflineList.CanOpen { Extension = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey) };
diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs
index ec010b03..496ea3ec 100644
--- a/SabreTools.Metadata.DatFiles/DatStatistics.cs
+++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs
@@ -1,5 +1,4 @@
using System.Collections.Generic;
-using SabreTools.Data.Extensions;
using SabreTools.Hashing;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
@@ -408,7 +407,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to add info from
private void AddItemStatistics(Disk disk)
{
- ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
+ ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -427,7 +426,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to add info from
private void AddItemStatistics(Data.Models.Metadata.Disk disk)
{
- ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
+ ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -483,7 +482,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to add info from
private void AddItemStatistics(Rom rom)
{
- ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
+ ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
@@ -514,7 +513,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to add info from
private void AddItemStatistics(Data.Models.Metadata.Rom rom)
{
- ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
+ ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
@@ -599,7 +598,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to remove info for
private void RemoveItemStatistics(Disk disk)
{
- ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
+ ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -618,7 +617,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to remove info for
private void RemoveItemStatistics(Data.Models.Metadata.Disk disk)
{
- ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
+ ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -674,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to remove info for
private void RemoveItemStatistics(Rom rom)
{
- ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
+ ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
@@ -705,7 +704,7 @@ namespace SabreTools.Metadata.DatFiles
/// Item to remove info for
private void RemoveItemStatistics(Data.Models.Metadata.Rom rom)
{
- ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
+ ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
index 7c644f29..1da9a687 100644
--- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
@@ -1,6 +1,5 @@
-using System;
+using System;
using System.Collections.Generic;
-using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
using SabreTools.Metadata.Filter;
@@ -134,15 +133,15 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Chip chip:
- if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null)
- missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey);
+ if (chip.ChipType is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType));
if (string.IsNullOrEmpty(chip.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.Chip.Name));
break;
case Display display:
- if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null)
- missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey);
+ if (display.DisplayType is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType));
if (display.ReadLong(Data.Models.Metadata.Display.RotateKey) is null)
missingFields.Add(Data.Models.Metadata.Display.RotateKey);
break;
@@ -165,10 +164,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Driver driver:
- if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.StatusKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.EmulationKey);
+ if (driver.Status is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Status));
+ if (driver.Emulation is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation));
break;
default:
diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
index 76b6a78b..57f61836 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
using SabreTools.Metadata.Filter;
@@ -304,13 +303,13 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Chip chip:
if (string.IsNullOrEmpty(chip.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.Chip.Name));
- if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null)
- missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey);
+ if (chip.ChipType is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType));
break;
case Display display:
- if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null)
- missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey);
+ if (display.DisplayType is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType));
if (display.ReadDouble(Data.Models.Metadata.Display.RefreshKey) is null)
missingFields.Add(Data.Models.Metadata.Display.RefreshKey);
break;
@@ -350,24 +349,24 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Driver driver:
- if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.StatusKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.EmulationKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.CocktailKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey);
+ if (driver.Status is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Status));
+ if (driver.Emulation is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation));
+ if (driver.Cocktail is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail));
+ if (driver.SaveState is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState));
break;
case Feature feature:
- if (feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey).AsFeatureType() is null)
- missingFields.Add(Data.Models.Metadata.Feature.FeatureTypeKey);
+ if (feature.FeatureType is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Feature.FeatureType));
break;
case Device device:
- if (device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey).AsDeviceType() is null)
- missingFields.Add(Data.Models.Metadata.Device.DeviceTypeKey);
+ if (device.DeviceType is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Device.DeviceType));
break;
case Slot slot:
@@ -380,8 +379,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey);
if (string.IsNullOrEmpty(softwarelist.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name));
- if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null)
- missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey);
+ if (softwarelist.Status == null)
+ missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status));
break;
case RamOption ramoption:
diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs
index 48c8b7f5..6282e4b3 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
@@ -344,14 +343,14 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Driver driver:
- if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.StatusKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.EmulationKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.CocktailKey);
- if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null)
- missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey);
+ if (driver.Status is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Status));
+ if (driver.Emulation is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation));
+ if (driver.Cocktail is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail));
+ if (driver.SaveState is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState));
break;
case DatItems.Formats.SoftwareList softwarelist:
@@ -359,8 +358,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey);
if (string.IsNullOrEmpty(softwarelist.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name));
- if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null)
- missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey);
+ if (softwarelist.Status == null)
+ missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status));
break;
default:
diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs
index 4ab04d2e..2f023446 100644
--- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs
+++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs
@@ -14,7 +14,6 @@ using SabreTools.Hashing;
using SabreTools.Logging;
using SabreTools.Text.Compare;
using SabreTools.Text.Extensions;
-using SabreTools.Data.Extensions;
using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus;
namespace SabreTools.Metadata.DatFiles
@@ -99,12 +98,12 @@ namespace SabreTools.Metadata.DatFiles
if (item is Disk disk)
{
// If the file has aboslutely no hashes, skip and log
- if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump
+ if (disk.Status != ItemStatus.Nodump
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
{
_logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump");
- disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue());
+ disk.Status = ItemStatus.Nodump;
}
item = disk;
@@ -167,19 +166,19 @@ namespace SabreTools.Metadata.DatFiles
}
// If the file has no size and it's not the above case, skip and log
- else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null))
+ else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null))
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
- rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
+ rom.Status = ItemStatus.Nodump;
}
// If the file has a size but aboslutely no hashes, skip and log
- else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump
+ else if (rom.Status != ItemStatus.Nodump
&& size is not null && size > 0
&& !rom.HasHashes())
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
- rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
+ rom.Status = ItemStatus.Nodump;
}
item = rom;
@@ -497,13 +496,13 @@ namespace SabreTools.Metadata.DatFiles
continue;
// If it's a nodump, add and skip
- if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump)
+ if (datItem is Rom rom && rom.Status == ItemStatus.Nodump)
{
output.Add(datItem);
nodumpCount++;
continue;
}
- else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump)
+ else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump)
{
output.Add(datItem);
nodumpCount++;
diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs
index 91813283..83080589 100644
--- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs
+++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs
@@ -16,7 +16,6 @@ using SabreTools.Hashing;
using SabreTools.Logging;
using SabreTools.Text.Compare;
using SabreTools.Text.Extensions;
-using SabreTools.Data.Extensions;
using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus;
/*
@@ -188,12 +187,12 @@ namespace SabreTools.Metadata.DatFiles
if (item is Disk disk)
{
// If the file has aboslutely no hashes, skip and log
- if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump
+ if (disk.Status != ItemStatus.Nodump
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
{
_logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump");
- disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue());
+ disk.Status = ItemStatus.Nodump;
}
item = disk;
@@ -256,19 +255,19 @@ namespace SabreTools.Metadata.DatFiles
}
// If the file has no size and it's not the above case, skip and log
- else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null))
+ else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null))
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
- rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
+ rom.Status = ItemStatus.Nodump;
}
// If the file has a size but aboslutely no hashes, skip and log
- else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump
+ else if (rom.Status != ItemStatus.Nodump
&& size is not null && size > 0
&& !rom.HasHashes())
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
- rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
+ rom.Status = ItemStatus.Nodump;
}
item = rom;
@@ -873,13 +872,13 @@ namespace SabreTools.Metadata.DatFiles
continue;
// If it's a nodump, add and skip
- if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump)
+ if (datItem is Rom rom && rom.Status == ItemStatus.Nodump)
{
output.Add(new KeyValuePair(itemIndex, datItem));
nodumpCount++;
continue;
}
- else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump)
+ else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump)
{
output.Add(new KeyValuePair(itemIndex, datItem));
nodumpCount++;
diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
index 643d5ca9..ba31f655 100644
--- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
+++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
@@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
disk.Write(Disk.DiskAreaKey, diskArea);
disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX");
disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX");
- disk.Write(Data.Models.Metadata.Disk.StatusKey, "good");
+ disk.Status = Data.Models.Metadata.ItemStatus.Good;
disk.Optional = true;
disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
@@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
Assert.Equal("XXXXXX.chd", actual.GetName());
Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey));
Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey));
- Assert.Equal("good", actual.ReadString(Data.Models.Metadata.Rom.StatusKey));
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status);
Assert.Equal(true, actual.Optional);
Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key));
Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key));
diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs
index 753d295f..4546ef29 100644
--- a/SabreTools.Metadata.DatItems/Formats/Chip.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs
@@ -12,7 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
- [JsonIgnore]
+ public Data.Models.Metadata.ChipType? ChipType
+ {
+ get => (_internal as Data.Models.Metadata.Chip)?.ChipType;
+ set => (_internal as Data.Models.Metadata.Chip)?.ChipType = value;
+ }
+
public bool? SoundOnly
{
get => (_internal as Data.Models.Metadata.Chip)?.SoundOnly;
@@ -25,13 +30,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public Chip() : base() { }
- public Chip(Data.Models.Metadata.Chip item) : base(item)
- {
- // Process flag values
- string? chipType = ReadString(Data.Models.Metadata.Chip.ChipTypeKey);
- if (chipType is not null)
- Write(Data.Models.Metadata.Chip.ChipTypeKey, chipType.AsChipType()?.AsStringValue());
- }
+ public Chip(Data.Models.Metadata.Chip item) : base(item) { }
public Chip(Data.Models.Metadata.Chip item, Machine machine, Source source) : this(item)
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs
index 93157cc2..d0d0da55 100644
--- a/SabreTools.Metadata.DatItems/Formats/Condition.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs
@@ -10,17 +10,21 @@ namespace SabreTools.Metadata.DatItems.Formats
[JsonObject("condition"), XmlRoot("condition")]
public sealed class Condition : DatItem
{
+ #region Fields
+
+ public Data.Models.Metadata.Relation? Relation
+ {
+ get => (_internal as Data.Models.Metadata.Condition)?.Relation;
+ set => (_internal as Data.Models.Metadata.Condition)?.Relation = value;
+ }
+
+ #endregion
+
#region Constructors
public Condition() : base() { }
- public Condition(Data.Models.Metadata.Condition item) : base(item)
- {
- // Process flag values
- string? condition = ReadString(Data.Models.Metadata.Condition.RelationKey);
- if (condition is not null)
- Write(Data.Models.Metadata.Condition.RelationKey, condition.AsRelation()?.AsStringValue());
- }
+ public Condition(Data.Models.Metadata.Condition item) : base(item) { }
public Condition(Data.Models.Metadata.Condition item, Machine machine, Source source) : this(item)
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs
index 1c9c611f..b4eb740e 100644
--- a/SabreTools.Metadata.DatItems/Formats/Control.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Control.cs
@@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
+ public Data.Models.Metadata.ControlType? ControlType
+ {
+ get => (_internal as Data.Models.Metadata.Control)?.ControlType;
+ set => (_internal as Data.Models.Metadata.Control)?.ControlType = value;
+ }
+
public bool? Reverse
{
get => (_internal as Data.Models.Metadata.Control)?.Reverse;
@@ -54,10 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats
long? sensitivity = ReadLong(Data.Models.Metadata.Control.SensitivityKey);
if (sensitivity is not null)
Write(Data.Models.Metadata.Control.SensitivityKey, sensitivity.ToString());
-
- string? controlType = ReadString(Data.Models.Metadata.Control.ControlTypeKey);
- if (controlType is not null)
- Write(Data.Models.Metadata.Control.ControlTypeKey, controlType.AsControlType()?.AsStringValue());
}
public Control(Data.Models.Metadata.Control item, Machine machine, Source source) : this(item)
diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs
index 1dd9191e..ef25cc90 100644
--- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs
@@ -11,6 +11,16 @@ namespace SabreTools.Metadata.DatItems.Formats
[JsonObject("dataarea"), XmlRoot("dataarea")]
public sealed class DataArea : DatItem
{
+ #region Fields
+
+ public Data.Models.Metadata.Endianness? Endianness
+ {
+ get => (_internal as Data.Models.Metadata.DataArea)?.Endianness;
+ set => (_internal as Data.Models.Metadata.DataArea)?.Endianness = value;
+ }
+
+ #endregion
+
#region Constructors
public DataArea() : base() { }
@@ -18,10 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats
public DataArea(Data.Models.Metadata.DataArea item) : base(item)
{
// Process flag values
- string? endianness = ReadString(Data.Models.Metadata.DataArea.EndiannessKey);
- if (endianness is not null)
- Write(Data.Models.Metadata.DataArea.EndiannessKey, endianness.AsEndianness()?.AsStringValue());
-
long? size = ReadLong(Data.Models.Metadata.DataArea.SizeKey);
if (size is not null)
Write(Data.Models.Metadata.DataArea.SizeKey, size.ToString());
diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs
index 3c95b8d8..57ce5981 100644
--- a/SabreTools.Metadata.DatItems/Formats/Device.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Device.cs
@@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
+ public Data.Models.Metadata.DeviceType? DeviceType
+ {
+ get => (_internal as Data.Models.Metadata.Device)?.DeviceType;
+ set => (_internal as Data.Models.Metadata.Device)?.DeviceType = value;
+ }
+
[JsonIgnore]
public bool InstancesSpecified
{
@@ -46,10 +52,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (mandatory is not null)
Write(Data.Models.Metadata.Device.MandatoryKey, mandatory.FromYesNo());
- string? deviceType = ReadString(Data.Models.Metadata.Device.DeviceTypeKey);
- if (deviceType is not null)
- Write(Data.Models.Metadata.Device.DeviceTypeKey, deviceType.AsDeviceType()?.AsStringValue());
-
// Handle subitems
var instance = item.Read(Data.Models.Metadata.Device.InstanceKey);
if (instance is not null)
diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs
index b3510c18..7a2e3d81 100644
--- a/SabreTools.Metadata.DatItems/Formats/Disk.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs
@@ -1,4 +1,4 @@
-using System.Xml.Serialization;
+using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
using SabreTools.Data.Models.Metadata;
@@ -56,6 +56,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
}
+ public ItemStatus? Status
+ {
+ get => (_internal as Data.Models.Metadata.Disk)?.Status;
+ set => (_internal as Data.Models.Metadata.Disk)?.Status = value;
+ }
+
public bool? Writable
{
get => (_internal as Data.Models.Metadata.Disk)?.Writable;
@@ -69,18 +75,13 @@ namespace SabreTools.Metadata.DatItems.Formats
public Disk() : base()
{
Write(DupeTypeKey, 0x00);
- Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.None.AsStringValue());
+ Status = ItemStatus.None;
}
public Disk(Data.Models.Metadata.Disk item) : base(item)
{
Write(DupeTypeKey, 0x00);
- // Process flag values
- string? status = ReadString(Data.Models.Metadata.Disk.StatusKey);
- if (status is not null)
- Write(Data.Models.Metadata.Disk.StatusKey, status.AsItemStatus()?.AsStringValue());
-
// Process hash values
string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key);
if (md5 is not null)
diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs
index c3462fa7..3cf87591 100644
--- a/SabreTools.Metadata.DatItems/Formats/Display.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Display.cs
@@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
+ public Data.Models.Metadata.DisplayType? DisplayType
+ {
+ get => (_internal as Data.Models.Metadata.Display)?.DisplayType;
+ set => (_internal as Data.Models.Metadata.Display)?.DisplayType = value;
+ }
+
public bool? FlipX
{
get => (_internal as Data.Models.Metadata.Display)?.FlipX;
@@ -56,10 +62,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (rotate is not null)
Write(Data.Models.Metadata.Display.RotateKey, rotate.ToString());
- string? displayType = ReadString(Data.Models.Metadata.Display.DisplayTypeKey);
- if (displayType is not null)
- Write(Data.Models.Metadata.Display.DisplayTypeKey, displayType.AsDisplayType()?.AsStringValue());
-
long? vbEnd = ReadLong(Data.Models.Metadata.Display.VBEndKey);
if (vbEnd is not null)
Write(Data.Models.Metadata.Display.VBEndKey, vbEnd.ToString());
@@ -88,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats
// TODO: Convert this block to more traditional set of if/then
Write(Data.Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectXKey)));
Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey)));
- Write(Data.Models.Metadata.Display.DisplayTypeKey, item.ReadString(Data.Models.Metadata.Video.ScreenKey).AsDisplayType()?.AsStringValue());
+ DisplayType = item.Screen;
Write(Data.Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey)));
Write(Data.Models.Metadata.Display.RefreshKey, NumberHelper.ConvertToDouble(item.ReadString(Data.Models.Metadata.Video.RefreshKey)));
Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey)));
@@ -123,10 +125,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (refresh is not null)
Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString());
- string? screen = ReadString(Data.Models.Metadata.Video.ScreenKey);
- if (screen is not null)
- Write(Data.Models.Metadata.Display.DisplayTypeKey, screen.AsDisplayType()?.AsStringValue());
-
long? width = ReadLong(Data.Models.Metadata.Video.WidthKey);
if (width is not null)
Write(Data.Models.Metadata.Display.WidthKey, width.ToString());
diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs
index 7d538da3..1756da86 100644
--- a/SabreTools.Metadata.DatItems/Formats/Driver.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs
@@ -12,6 +12,30 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
+ public Data.Models.Metadata.Blit? Blit
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.Blit;
+ set => (_internal as Data.Models.Metadata.Driver)?.Blit = value;
+ }
+
+ public Data.Models.Metadata.SupportStatus? Cocktail
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.Cocktail;
+ set => (_internal as Data.Models.Metadata.Driver)?.Cocktail = value;
+ }
+
+ public Data.Models.Metadata.SupportStatus? Color
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.Color;
+ set => (_internal as Data.Models.Metadata.Driver)?.Color = value;
+ }
+
+ public Data.Models.Metadata.SupportStatus? Emulation
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.Emulation;
+ set => (_internal as Data.Models.Metadata.Driver)?.Emulation = value;
+ }
+
public bool? Incomplete
{
get => (_internal as Data.Models.Metadata.Driver)?.Incomplete;
@@ -30,6 +54,24 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork = value;
}
+ public Data.Models.Metadata.Supported? SaveState
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.SaveState;
+ set => (_internal as Data.Models.Metadata.Driver)?.SaveState = value;
+ }
+
+ public Data.Models.Metadata.SupportStatus? Sound
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.Sound;
+ set => (_internal as Data.Models.Metadata.Driver)?.Sound = value;
+ }
+
+ public Data.Models.Metadata.SupportStatus? Status
+ {
+ get => (_internal as Data.Models.Metadata.Driver)?.Status;
+ set => (_internal as Data.Models.Metadata.Driver)?.Status = value;
+ }
+
public bool? Unofficial
{
get => (_internal as Data.Models.Metadata.Driver)?.Unofficial;
@@ -45,33 +87,9 @@ namespace SabreTools.Metadata.DatItems.Formats
public Driver(Data.Models.Metadata.Driver item) : base(item)
{
// Process flag values
- string? cocktail = ReadString(Data.Models.Metadata.Driver.CocktailKey);
- if (cocktail is not null)
- Write(Data.Models.Metadata.Driver.CocktailKey, cocktail.AsSupportStatus()?.AsStringValue());
-
- string? color = ReadString(Data.Models.Metadata.Driver.ColorKey);
- if (color is not null)
- Write(Data.Models.Metadata.Driver.ColorKey, color.AsSupportStatus()?.AsStringValue());
-
- string? emulation = ReadString(Data.Models.Metadata.Driver.EmulationKey);
- if (emulation is not null)
- Write(Data.Models.Metadata.Driver.EmulationKey, emulation.AsSupportStatus()?.AsStringValue());
-
long? paletteSize = ReadLong(Data.Models.Metadata.Driver.PaletteSizeKey);
if (paletteSize is not null)
Write(Data.Models.Metadata.Driver.PaletteSizeKey, paletteSize.ToString());
-
- string? saveState = ReadString(Data.Models.Metadata.Driver.SaveStateKey);
- if (saveState is not null)
- Write(Data.Models.Metadata.Driver.SaveStateKey, saveState.AsSupported()?.AsStringValue(useSecond: true));
-
- string? sound = ReadString(Data.Models.Metadata.Driver.SoundKey);
- if (sound is not null)
- Write(Data.Models.Metadata.Driver.SoundKey, sound.AsSupportStatus()?.AsStringValue());
-
- string? status = ReadString(Data.Models.Metadata.Driver.StatusKey);
- if (status is not null)
- Write(Data.Models.Metadata.Driver.StatusKey, status.AsSupportStatus()?.AsStringValue());
}
public Driver(Data.Models.Metadata.Driver item, Machine machine, Source source) : this(item)
diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs
index dea27133..7f8cf288 100644
--- a/SabreTools.Metadata.DatItems/Formats/Feature.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs
@@ -10,25 +10,33 @@ namespace SabreTools.Metadata.DatItems.Formats
[JsonObject("feature"), XmlRoot("feature")]
public sealed class Feature : DatItem
{
+ #region Fields
+
+ public Data.Models.Metadata.FeatureType? FeatureType
+ {
+ get => (_internal as Data.Models.Metadata.Feature)?.FeatureType;
+ set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value;
+ }
+
+ public Data.Models.Metadata.FeatureStatus? Overall
+ {
+ get => (_internal as Data.Models.Metadata.Feature)?.Overall;
+ set => (_internal as Data.Models.Metadata.Feature)?.Overall = value;
+ }
+
+ public Data.Models.Metadata.FeatureStatus? Status
+ {
+ get => (_internal as Data.Models.Metadata.Feature)?.Status;
+ set => (_internal as Data.Models.Metadata.Feature)?.Status = value;
+ }
+
+ #endregion
+
#region Constructors
public Feature() : base() { }
- public Feature(Data.Models.Metadata.Feature item) : base(item)
- {
- // Process flag values
- string? overall = ReadString(Data.Models.Metadata.Feature.OverallKey);
- if (overall is not null)
- Write(Data.Models.Metadata.Feature.OverallKey, overall.AsFeatureStatus()?.AsStringValue());
-
- string? status = ReadString(Data.Models.Metadata.Feature.StatusKey);
- if (status is not null)
- Write(Data.Models.Metadata.Feature.StatusKey, status.AsFeatureStatus()?.AsStringValue());
-
- string? featureType = ReadString(Data.Models.Metadata.Feature.FeatureTypeKey);
- if (featureType is not null)
- Write(Data.Models.Metadata.Feature.FeatureTypeKey, featureType.AsFeatureType()?.AsStringValue());
- }
+ public Feature(Data.Models.Metadata.Feature item) : base(item) { }
public Feature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item)
{
diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
index a2be2f3c..efe4f9f0 100644
--- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
+++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
@@ -21,6 +21,24 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
+ public Data.Models.Metadata.FeatureType? FeatureType
+ {
+ get => (_internal as Data.Models.Metadata.Feature)?.FeatureType;
+ set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value;
+ }
+
+ public Data.Models.Metadata.FeatureStatus? Overall
+ {
+ get => (_internal as Data.Models.Metadata.Feature)?.Overall;
+ set => (_internal as Data.Models.Metadata.Feature)?.Overall = value;
+ }
+
+ public Data.Models.Metadata.FeatureStatus? Status
+ {
+ get => (_internal as Data.Models.Metadata.Feature)?.Status;
+ set => (_internal as Data.Models.Metadata.Feature)?.Status = value;
+ }
+
/// />
/// This needs to be set to PartFeature because internally it uses Feature
public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature;
@@ -31,21 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public PartFeature() : base() { }
- public PartFeature(Data.Models.Metadata.Feature item) : base(item)
- {
- // Process flag values
- string? overall = ReadString(Data.Models.Metadata.Feature.OverallKey);
- if (overall is not null)
- Write(Data.Models.Metadata.Feature.OverallKey, overall.AsFeatureStatus()?.AsStringValue());
-
- string? status = ReadString(Data.Models.Metadata.Feature.StatusKey);
- if (status is not null)
- Write(Data.Models.Metadata.Feature.StatusKey, status.AsFeatureStatus()?.AsStringValue());
-
- string? featureType = ReadString(Data.Models.Metadata.Feature.FeatureTypeKey);
- if (featureType is not null)
- Write(Data.Models.Metadata.Feature.FeatureTypeKey, featureType.AsFeatureType()?.AsStringValue());
- }
+ public PartFeature(Data.Models.Metadata.Feature item) : base(item) { }
public PartFeature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item)
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs
index f3670a55..c791986d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Rom.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs
@@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats
&& (!string.IsNullOrEmpty(dataArea.GetName())
|| dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is not null
|| dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey) is not null
- || dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey).AsEndianness() is not null);
+ || dataArea.Endianness is not null);
}
}
@@ -60,14 +60,10 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value;
}
- [JsonIgnore]
- public bool ItemStatusSpecified
+ public LoadFlag? LoadFlag
{
- get
- {
- var status = ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
- return status is not null && status != ItemStatus.None;
- }
+ get => (_internal as Data.Models.Metadata.Rom)?.LoadFlag;
+ set => (_internal as Data.Models.Metadata.Rom)?.LoadFlag = value;
}
public bool? MIA
@@ -76,6 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.Rom)?.MIA = value;
}
+ public OpenMSXSubType? OpenMSXMediaType
+ {
+ get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType;
+ set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType = value;
+ }
+
public bool? Optional
{
get => (_internal as Data.Models.Metadata.Rom)?.Optional;
@@ -110,6 +112,12 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.Rom)?.SoundOnly = value;
}
+ public ItemStatus? Status
+ {
+ get => (_internal as Data.Models.Metadata.Rom)?.Status;
+ set => (_internal as Data.Models.Metadata.Rom)?.Status = value;
+ }
+
#endregion
#region Constructors
@@ -117,7 +125,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public Rom() : base()
{
Write(DupeTypeKey, 0x00);
- Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.None.AsStringValue());
+ Status = ItemStatus.None;
}
public Rom(Dump item, Machine machine, Source source, int index)
@@ -150,7 +158,7 @@ namespace SabreTools.Metadata.DatItems.Formats
SetName(name);
Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey));
- Write(Data.Models.Metadata.Rom.OpenMSXMediaType, subType?.AsStringValue());
+ OpenMSXMediaType = subType;
Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString());
Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey));
Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key));
@@ -229,19 +237,6 @@ namespace SabreTools.Metadata.DatItems.Formats
{
Write(DupeTypeKey, 0x00);
- // Process flag values
- string? loadFlag = ReadString(Data.Models.Metadata.Rom.LoadFlagKey);
- if (loadFlag is not null)
- Write(Data.Models.Metadata.Rom.LoadFlagKey, loadFlag.AsLoadFlag()?.AsStringValue());
-
- string? openMSXMediaType = ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType);
- if (openMSXMediaType is not null)
- Write(Data.Models.Metadata.Rom.OpenMSXMediaType, openMSXMediaType.AsOpenMSXSubType()?.AsStringValue());
-
- string? status = ReadString(Data.Models.Metadata.Rom.StatusKey);
- if (status is not null)
- Write(Data.Models.Metadata.Rom.StatusKey, status.AsItemStatus()?.AsStringValue());
-
// Process hash values
long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey);
if (size is not null)
diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
index c6516287..ac3bedbe 100644
--- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
@@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats
[JsonObject("softwarelist"), XmlRoot("softwarelist")]
public sealed class SoftwareList : DatItem
{
+ #region Fields
+
+ public Data.Models.Metadata.SoftwareListStatus? Status
+ {
+ get => (_internal as Data.Models.Metadata.SoftwareList)?.Status;
+ set => (_internal as Data.Models.Metadata.SoftwareList)?.Status = value;
+ }
+
+ #endregion
+
#region Constructors
public SoftwareList() : base() { }
public SoftwareList(Data.Models.Metadata.SoftwareList item) : base(item)
{
- // Process flag values
- string? status = ReadString(Data.Models.Metadata.SoftwareList.StatusKey);
- if (status is not null)
- Write(Data.Models.Metadata.SoftwareList.StatusKey, status.AsSoftwareListStatus()?.AsStringValue());
-
// Handle subitems
// TODO: Handle the Software subitem
}
diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs
index 8f032c47..115a492b 100644
--- a/SabreTools.Metadata.DatItems/Machine.cs
+++ b/SabreTools.Metadata.DatItems/Machine.cs
@@ -39,6 +39,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Runnable = value;
}
+ public Data.Models.Metadata.Supported? Supported
+ {
+ get => _internal.Supported;
+ set => _internal.Supported = value;
+ }
+
#endregion
#region Constructors
@@ -91,10 +97,6 @@ namespace SabreTools.Metadata.DatItems
if (im2Crc is not null)
Write(Data.Models.Metadata.Machine.Im2CRCKey, TextHelper.NormalizeCRC32(im2Crc));
- string? supported = ReadString(Data.Models.Metadata.Machine.SupportedKey);
- if (supported is not null)
- Write(Data.Models.Metadata.Machine.SupportedKey, supported.AsSupported()?.AsStringValue());
-
// Handle Trurip object, if it exists
var truripItem = machine.Read(Data.Models.Metadata.Machine.TruripKey);
if (truripItem is not null)
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index 958c73dc..0c799bbc 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -356,10 +356,17 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Default.FromYesNo();
return true;
+ case Chip item when Key.FieldName == "type":
+ checkValue = item.ChipType?.AsStringValue();
+ return true;
case Chip item when Key.FieldName == "soundonly":
checkValue = item.SoundOnly.FromYesNo();
return true;
+ case Condition item when Key.FieldName == "relation":
+ checkValue = item.Relation?.AsStringValue();
+ return true;
+
case ConfLocation item when Key.FieldName == "inverted":
checkValue = item.Inverted.FromYesNo();
return true;
@@ -368,10 +375,21 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Default.FromYesNo();
return true;
+ case Control item when Key.FieldName == "type":
+ checkValue = item.ControlType?.AsStringValue();
+ return true;
case Control item when Key.FieldName == "reverse":
checkValue = item.Reverse.FromYesNo();
return true;
+ case DataArea item when Key.FieldName == "endianness":
+ checkValue = item.Endianness?.AsStringValue();
+ return true;
+
+ case Device item when Key.FieldName == "type":
+ checkValue = item.DeviceType?.AsStringValue();
+ return true;
+
case DipLocation item when Key.FieldName == "inverted":
checkValue = item.Inverted.FromYesNo();
return true;
@@ -391,6 +409,9 @@ namespace SabreTools.Metadata.Filter
case Disk item when Key.FieldName == "optional":
checkValue = item.Optional.FromYesNo();
return true;
+ case Disk item when Key.FieldName == "status":
+ checkValue = item.Status?.AsStringValue();
+ return true;
case Disk item when Key.FieldName == "writable":
checkValue = item.Writable.FromYesNo();
return true;
@@ -398,7 +419,22 @@ namespace SabreTools.Metadata.Filter
case Display item when Key.FieldName == "flipx":
checkValue = item.FlipX.FromYesNo();
return true;
+ case Display item when Key.FieldName == "type":
+ checkValue = item.DisplayType?.AsStringValue();
+ return true;
+ case Driver item when Key.FieldName == "blit":
+ checkValue = item.Blit?.AsStringValue();
+ return true;
+ case Driver item when Key.FieldName == "cocktail":
+ checkValue = item.Cocktail?.AsStringValue();
+ return true;
+ case Driver item when Key.FieldName == "color":
+ checkValue = item.Color?.AsStringValue();
+ return true;
+ case Driver item when Key.FieldName == "emulation":
+ checkValue = item.Emulation?.AsStringValue();
+ return true;
case Driver item when Key.FieldName == "incomplete":
checkValue = item.Incomplete.FromYesNo();
return true;
@@ -408,13 +444,44 @@ namespace SabreTools.Metadata.Filter
case Driver item when Key.FieldName == "requiresartwork":
checkValue = item.RequiresArtwork.FromYesNo();
return true;
+ case Driver item when Key.FieldName == "savestate":
+ checkValue = item.SaveState?.AsStringValue();
+ return true;
+ case Driver item when Key.FieldName == "sound":
+ checkValue = item.Sound?.AsStringValue();
+ return true;
+ case Driver item when Key.FieldName == "status":
+ checkValue = item.Status?.AsStringValue();
+ return true;
case Driver item when Key.FieldName == "unofficial":
checkValue = item.Unofficial.FromYesNo();
return true;
+ case Feature item when Key.FieldName == "overall":
+ checkValue = item.Overall?.AsStringValue();
+ return true;
+ case Feature item when Key.FieldName == "status":
+ checkValue = item.Status?.AsStringValue();
+ return true;
+ case Feature item when Key.FieldName == "type":
+ checkValue = item.FeatureType?.AsStringValue();
+ return true;
+
+ case Header item when Key.FieldName == "biosmode":
+ checkValue = item.BiosMode.AsStringValue();
+ return true;
case Header item when Key.FieldName == "debug":
checkValue = item.Debug.FromYesNo();
return true;
+ case Header item when Key.FieldName == "forcemerging":
+ checkValue = item.ForceMerging.AsStringValue();
+ return true;
+ case Header item when Key.FieldName == "forcenodump":
+ checkValue = item.ForceNodump.AsStringValue();
+ return true;
+ case Header item when Key.FieldName == "forcepacking":
+ checkValue = item.ForcePacking.AsStringValue();
+ return true;
case Header item when Key.FieldName == "forcezipping":
checkValue = item.ForceZipping.FromYesNo();
return true;
@@ -427,6 +494,12 @@ namespace SabreTools.Metadata.Filter
case Header item when Key.FieldName == "locksamplemode":
checkValue = item.LockSampleMode.FromYesNo();
return true;
+ case Header item when Key.FieldName == "rommode":
+ checkValue = item.RomMode.AsStringValue();
+ return true;
+ case Header item when Key.FieldName == "samplemode":
+ checkValue = item.SampleMode.AsStringValue();
+ return true;
case Input item when Key.FieldName == "service":
checkValue = item.Service.FromYesNo();
@@ -447,6 +520,9 @@ namespace SabreTools.Metadata.Filter
case Machine item when Key.FieldName == "runnable":
checkValue = item.Runnable?.AsStringValue();
return true;
+ case Machine item when Key.FieldName == "supported":
+ checkValue = item.Supported?.AsStringValue();
+ return true;
case RamOption item when Key.FieldName == "default":
checkValue = item.Default.FromYesNo();
@@ -465,6 +541,12 @@ namespace SabreTools.Metadata.Filter
case Rom item when Key.FieldName == "inverted":
checkValue = item.Inverted.FromYesNo();
return true;
+ case Rom item when Key.FieldName == "loadflag":
+ checkValue = item.LoadFlag?.AsStringValue();
+ return true;
+ case Rom item when Key.FieldName == "mediatype":
+ checkValue = item.OpenMSXMediaType?.AsStringValue();
+ return true;
case Rom item when Key.FieldName == "mia":
checkValue = item.MIA.FromYesNo();
return true;
@@ -474,11 +556,26 @@ namespace SabreTools.Metadata.Filter
case Rom item when Key.FieldName == "soundonly":
checkValue = item.SoundOnly.FromYesNo();
return true;
+ case Rom item when Key.FieldName == "status":
+ checkValue = item.Status?.AsStringValue();
+ return true;
case SlotOption item when Key.FieldName == "default":
checkValue = item.Default.FromYesNo();
return true;
+ case Software item when Key.FieldName == "supported":
+ checkValue = item.Supported?.AsStringValue();
+ return true;
+
+ case SoftwareList item when Key.FieldName == "status":
+ checkValue = item.Status?.AsStringValue();
+ return true;
+
+ case Video item when Key.FieldName == "screen":
+ checkValue = item.Screen?.AsStringValue();
+ return true;
+
// Fallthrough to Dictionary-based checking
default: break;
}
diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs
index e6905167..5cd18192 100644
--- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs
+++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs
@@ -22,14 +22,14 @@ namespace SabreTools.Metadata.Test
{
DictionaryBase self = new Disk
{
- [Disk.StatusKey] = "nodump",
+ Status = ItemStatus.Nodump,
Name = "XXXXXX",
[Disk.MD5Key] = string.Empty,
[Disk.SHA1Key] = string.Empty,
};
DictionaryBase other = new Disk
{
- [Disk.StatusKey] = "NODUMP",
+ Status = ItemStatus.Nodump,
Name = "XXXXXX",
[Disk.MD5Key] = string.Empty,
[Disk.SHA1Key] = string.Empty,
@@ -268,7 +268,7 @@ namespace SabreTools.Metadata.Test
{
DictionaryBase self = new Rom
{
- [Rom.StatusKey] = "nodump",
+ Status = ItemStatus.Nodump,
Name = "XXXXXX",
[Rom.SizeKey] = 12345,
[Rom.CRC16Key] = string.Empty,
@@ -287,7 +287,7 @@ namespace SabreTools.Metadata.Test
};
DictionaryBase other = new Rom
{
- [Rom.StatusKey] = "NODUMP",
+ Status = ItemStatus.Nodump,
Name = "XXXXXX",
[Rom.SizeKey] = 12345,
[Rom.CRC16Key] = string.Empty,
diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs
index 04466666..f8b0a28e 100644
--- a/SabreTools.Metadata/DictionaryBaseExtensions.cs
+++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs
@@ -176,15 +176,15 @@ namespace SabreTools.Metadata
///
private static bool EqualsImpl(this Disk self, Disk other)
{
- string? selfStatus = self.ReadString(Disk.StatusKey);
- string? otherStatus = other.ReadString(Disk.StatusKey);
+ ItemStatus? selfStatus = self.Status;
+ ItemStatus? otherStatus = other.Status;
string? selfName = self.Name;
string? otherName = other.Name;
// If all hashes are empty but they're both nodump and the names match, then they're dupes
- if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase)
- && string.Equals(otherStatus, "nodump", StringComparison.OrdinalIgnoreCase)
+ if (selfStatus == ItemStatus.Nodump
+ && otherStatus == ItemStatus.Nodump
&& string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase)
&& !self.HasHashes()
&& !other.HasHashes())
@@ -218,8 +218,8 @@ namespace SabreTools.Metadata
///
private static bool EqualsImpl(this Rom self, Rom other)
{
- string? selfStatus = self.ReadString(Rom.StatusKey);
- string? otherStatus = other.ReadString(Rom.StatusKey);
+ ItemStatus? selfStatus = self.Status;
+ ItemStatus? otherStatus = other.Status;
string? selfName = self.Name;
string? otherName = other.Name;
@@ -228,8 +228,8 @@ namespace SabreTools.Metadata
long? otherSize = other.ReadLong(Rom.SizeKey);
// If all hashes are empty but they're both nodump and the names match, then they're dupes
- if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase)
- && string.Equals(otherStatus, "nodump", StringComparison.OrdinalIgnoreCase)
+ if (selfStatus == ItemStatus.Nodump
+ && otherStatus == ItemStatus.Nodump
&& string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase)
&& !self.HasHashes()
&& !other.HasHashes())
diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
index ba602350..7949b0c6 100644
--- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
@@ -73,9 +73,9 @@ namespace SabreTools.Serialization.CrossModel.Test
Comment = "XXXXXX",
Header = "XXXXXX",
Type = "XXXXXX",
- ForceMerging = "XXXXXX",
+ ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
ForceZipping = true,
- ForcePacking = "XXXXXX",
+ ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
};
var release = new Data.Models.ClrMamePro.Release
@@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test
RIPEMD160 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Flags = "XXXXXX",
Date = "XXXXXX",
SHA256 = "XXXXXX",
@@ -131,7 +131,7 @@ namespace SabreTools.Serialization.CrossModel.Test
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Flags = "XXXXXX",
};
@@ -156,7 +156,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var chip = new Data.Models.ClrMamePro.Chip
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
Name = "XXXXXX",
Flags = "XXXXXX",
Clock = "XXXXXX",
@@ -164,7 +164,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var video = new Data.Models.ClrMamePro.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
X = "XXXXXX",
Y = "XXXXXX",
@@ -197,11 +197,11 @@ namespace SabreTools.Serialization.CrossModel.Test
var driver = new Data.Models.ClrMamePro.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Blit = "XXXXXX",
+ Blit = Data.Models.Metadata.Blit.Plain,
};
// TODO: This omits Set, should that have a separate case?
@@ -262,9 +262,9 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", cmp.Comment);
Assert.Equal("XXXXXX", cmp.Header);
Assert.Equal("XXXXXX", cmp.Type);
- Assert.Equal("XXXXXX", cmp.ForceMerging);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging);
Assert.Equal(true, cmp.ForceZipping);
- Assert.Equal("XXXXXX", cmp.ForcePacking);
+ Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking);
}
///
@@ -371,7 +371,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", rom.RIPEMD160);
Assert.Equal("XXXXXX", rom.SHA1);
Assert.Equal("XXXXXX", rom.Merge);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal("XXXXXX", rom.Flags);
Assert.Equal("XXXXXX", rom.Date);
Assert.Equal("XXXXXX", rom.SHA256);
@@ -398,7 +398,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", disk.MD5);
Assert.Equal("XXXXXX", disk.SHA1);
Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal("XXXXXX", disk.Flags);
}
@@ -439,7 +439,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.ClrMamePro.Chip? chip)
{
Assert.NotNull(chip);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Flags);
Assert.Equal("XXXXXX", chip.Clock);
@@ -451,7 +451,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.ClrMamePro.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.X);
Assert.Equal("XXXXXX", video.Y);
@@ -504,11 +504,11 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.ClrMamePro.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Blit);
+ Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit);
}
///
diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
index 624dc8fb..fdfca515 100644
--- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
@@ -80,7 +80,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Merge = "XXXXXX",
Region = "XXXXXX",
Offset = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
Dispose = true,
SoundOnly = true,
@@ -95,7 +95,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Region = "XXXXXX",
Index = "XXXXXX",
Writable = true,
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
};
@@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Name = "XXXXXX",
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
SoundOnly = true,
Clock = "XXXXXX",
};
@@ -121,7 +121,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var display = new Data.Models.Listxml.Display
{
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DisplayType.Vector,
Rotate = "XXXXXX",
FlipX = true,
Width = "XXXXXX",
@@ -138,7 +138,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var video = new Data.Models.Listxml.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
@@ -154,7 +154,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var control = new Data.Models.Listxml.Control
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ControlType.Lightgun,
Player = "XXXXXX",
Buttons = "XXXXXX",
ReqButtons = "XXXXXX",
@@ -183,7 +183,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Mask = "XXXXXX",
- Relation = "XXXXXX",
+ Relation = Data.Models.Metadata.Relation.Equal,
Value = "XXXXXX",
};
@@ -257,13 +257,13 @@ namespace SabreTools.Serialization.CrossModel.Test
var driver = new Data.Models.Listxml.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -272,9 +272,9 @@ namespace SabreTools.Serialization.CrossModel.Test
var feature = new Data.Models.Listxml.Feature
{
- Type = "XXXXXX",
- Status = "XXXXXX",
- Overall = "XXXXXX",
+ Type = Data.Models.Metadata.FeatureType.Protection,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
};
var instance = new Data.Models.Listxml.Instance
@@ -290,7 +290,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var device = new Data.Models.Listxml.Device
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DeviceType.PunchTape,
Tag = "XXXXXX",
FixedImage = "XXXXXX",
Mandatory = "XXXXXX",
@@ -316,7 +316,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -492,7 +492,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", rom.Merge);
Assert.Equal("XXXXXX", rom.Region);
Assert.Equal("XXXXXX", rom.Offset);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal(true, rom.Optional);
Assert.Equal(true, rom.Dispose);
Assert.Equal(true, rom.SoundOnly);
@@ -511,7 +511,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", disk.Region);
Assert.Equal("XXXXXX", disk.Index);
Assert.Equal(true, disk.Writable);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
}
@@ -541,7 +541,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(chip);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Tag);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal(true, chip.SoundOnly);
Assert.Equal("XXXXXX", chip.Clock);
}
@@ -553,7 +553,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(display);
Assert.Equal("XXXXXX", display.Tag);
- Assert.Equal("XXXXXX", display.Type);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type);
Assert.Equal("XXXXXX", display.Rotate);
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
@@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
@@ -616,7 +616,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Control? control)
{
Assert.NotNull(control);
- Assert.Equal("XXXXXX", control.Type);
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type);
Assert.Equal("XXXXXX", control.Player);
Assert.Equal("XXXXXX", control.Buttons);
Assert.Equal("XXXXXX", control.ReqButtons);
@@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(condition);
Assert.Equal("XXXXXX", condition.Tag);
Assert.Equal("XXXXXX", condition.Mask);
- Assert.Equal("XXXXXX", condition.Relation);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("XXXXXX", condition.Value);
}
@@ -767,13 +767,13 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -786,9 +786,9 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Feature? feature)
{
Assert.NotNull(feature);
- Assert.Equal("XXXXXX", feature.Type);
- Assert.Equal("XXXXXX", feature.Status);
- Assert.Equal("XXXXXX", feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
}
///
@@ -797,7 +797,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Device? device)
{
Assert.NotNull(device);
- Assert.Equal("XXXXXX", device.Type);
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type);
Assert.Equal("XXXXXX", device.Tag);
Assert.Equal("XXXXXX", device.FixedImage);
Assert.Equal("XXXXXX", device.Mandatory);
@@ -860,7 +860,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs
index c4c50094..d375ac28 100644
--- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs
@@ -76,17 +76,17 @@ namespace SabreTools.Serialization.CrossModel.Test
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
{
Header = "XXXXXX",
- ForceMerging = "XXXXXX",
- ForceNodump = "XXXXXX",
- ForcePacking = "XXXXXX",
+ ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
+ ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
+ ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
};
var romcenter = new Data.Models.Logiqx.RomCenter
{
Plugin = "XXXXXX",
- RomMode = "XXXXXX",
- BiosMode = "XXXXXX",
- SampleMode = "XXXXXX",
+ RomMode = Data.Models.Metadata.MergingFlag.Merged,
+ BiosMode = Data.Models.Metadata.MergingFlag.Merged,
+ SampleMode = Data.Models.Metadata.MergingFlag.Merged,
LockRomMode = true,
LockBiosMode = true,
LockSampleMode = true,
@@ -165,7 +165,7 @@ namespace SabreTools.Serialization.CrossModel.Test
xxHash364 = "XXXXXX",
xxHash3128 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Serial = "XXXXXX",
Header = "XXXXXX",
Date = "XXXXXX",
@@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Region = "XXXXXX",
};
@@ -209,10 +209,10 @@ namespace SabreTools.Serialization.CrossModel.Test
var driver = new Data.Models.Logiqx.Driver
{
- Status = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -223,7 +223,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -314,9 +314,9 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(cmp);
Assert.Equal("XXXXXX", cmp.Header);
- Assert.Equal("XXXXXX", cmp.ForceMerging);
- Assert.Equal("XXXXXX", cmp.ForceNodump);
- Assert.Equal("XXXXXX", cmp.ForcePacking);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging);
+ Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, cmp.ForceNodump);
+ Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking);
}
///
@@ -326,9 +326,9 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(rc);
Assert.Equal("XXXXXX", rc.Plugin);
- Assert.Equal("XXXXXX", rc.RomMode);
- Assert.Equal("XXXXXX", rc.BiosMode);
- Assert.Equal("XXXXXX", rc.SampleMode);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.RomMode);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.BiosMode);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.SampleMode);
Assert.Equal(true, rc.LockRomMode);
Assert.Equal(true, rc.LockBiosMode);
Assert.Equal(true, rc.LockSampleMode);
@@ -481,7 +481,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", rom.xxHash364);
Assert.Equal("XXXXXX", rom.xxHash3128);
Assert.Equal("XXXXXX", rom.Merge);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal("XXXXXX", rom.Serial);
Assert.Equal("XXXXXX", rom.Header);
Assert.Equal("XXXXXX", rom.Date);
@@ -499,7 +499,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", disk.MD5);
Assert.Equal("XXXXXX", disk.SHA1);
Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal("XXXXXX", disk.Region);
}
@@ -549,10 +549,10 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Logiqx.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -567,7 +567,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
}
diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
index 8d2be43f..16e28c35 100644
--- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
@@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Merge = "XXXXXX",
Region = "XXXXXX",
Offset = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
Dispose = true,
SoundOnly = true,
@@ -91,7 +91,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Region = "XXXXXX",
Index = "XXXXXX",
Writable = true,
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
};
@@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Name = "XXXXXX",
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
SoundOnly = true,
Clock = "XXXXXX",
};
@@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var display = new Data.Models.Listxml.Display
{
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DisplayType.Vector,
Rotate = "XXXXXX",
FlipX = true,
Width = "XXXXXX",
@@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var video = new Data.Models.Listxml.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
@@ -150,7 +150,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var control = new Data.Models.Listxml.Control
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ControlType.Lightgun,
Player = "XXXXXX",
Buttons = "XXXXXX",
ReqButtons = "XXXXXX",
@@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Mask = "XXXXXX",
- Relation = "XXXXXX",
+ Relation = Data.Models.Metadata.Relation.Equal,
Value = "XXXXXX",
};
@@ -253,13 +253,13 @@ namespace SabreTools.Serialization.CrossModel.Test
var driver = new Data.Models.Listxml.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -268,9 +268,9 @@ namespace SabreTools.Serialization.CrossModel.Test
var feature = new Data.Models.Listxml.Feature
{
- Type = "XXXXXX",
- Status = "XXXXXX",
- Overall = "XXXXXX",
+ Type = Data.Models.Metadata.FeatureType.Protection,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
};
var instance = new Data.Models.Listxml.Instance
@@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var device = new Data.Models.Listxml.Device
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DeviceType.PunchTape,
Tag = "XXXXXX",
FixedImage = "XXXXXX",
Mandatory = "XXXXXX",
@@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", rom.Merge);
Assert.Equal("XXXXXX", rom.Region);
Assert.Equal("XXXXXX", rom.Offset);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal(true, rom.Optional);
Assert.Equal(true, rom.Dispose);
Assert.Equal(true, rom.SoundOnly);
@@ -505,7 +505,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", disk.Region);
Assert.Equal("XXXXXX", disk.Index);
Assert.Equal(true, disk.Writable);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
}
@@ -535,7 +535,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(chip);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Tag);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal(true, chip.SoundOnly);
Assert.Equal("XXXXXX", chip.Clock);
}
@@ -547,7 +547,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(display);
Assert.Equal("XXXXXX", display.Tag);
- Assert.Equal("XXXXXX", display.Type);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type);
Assert.Equal("XXXXXX", display.Rotate);
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
@@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
@@ -610,7 +610,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Control? control)
{
Assert.NotNull(control);
- Assert.Equal("XXXXXX", control.Type);
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type);
Assert.Equal("XXXXXX", control.Player);
Assert.Equal("XXXXXX", control.Buttons);
Assert.Equal("XXXXXX", control.ReqButtons);
@@ -652,7 +652,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(condition);
Assert.Equal("XXXXXX", condition.Tag);
Assert.Equal("XXXXXX", condition.Mask);
- Assert.Equal("XXXXXX", condition.Relation);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("XXXXXX", condition.Value);
}
@@ -761,13 +761,13 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -780,9 +780,9 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Feature? feature)
{
Assert.NotNull(feature);
- Assert.Equal("XXXXXX", feature.Type);
- Assert.Equal("XXXXXX", feature.Status);
- Assert.Equal("XXXXXX", feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
}
///
@@ -791,7 +791,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Device? device)
{
Assert.NotNull(device);
- Assert.Equal("XXXXXX", device.Type);
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type);
Assert.Equal("XXXXXX", device.Tag);
Assert.Equal("XXXXXX", device.FixedImage);
Assert.Equal("XXXXXX", device.Mandatory);
@@ -854,7 +854,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs
index 1088d26f..96911cf5 100644
--- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs
@@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Merge = "XXXXXX",
Region = "XXXXXX",
Offset = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
Dispose = true,
SoundOnly = true,
@@ -91,7 +91,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Region = "XXXXXX",
Index = "XXXXXX",
Writable = true,
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
};
@@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Name = "XXXXXX",
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
SoundOnly = true,
Clock = "XXXXXX",
};
@@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var display = new Data.Models.Listxml.Display
{
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DisplayType.Vector,
Rotate = "XXXXXX",
FlipX = true,
Width = "XXXXXX",
@@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var video = new Data.Models.Listxml.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
@@ -150,7 +150,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var control = new Data.Models.Listxml.Control
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ControlType.Lightgun,
Player = "XXXXXX",
Buttons = "XXXXXX",
ReqButtons = "XXXXXX",
@@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Mask = "XXXXXX",
- Relation = "XXXXXX",
+ Relation = Data.Models.Metadata.Relation.Equal,
Value = "XXXXXX",
};
@@ -253,13 +253,13 @@ namespace SabreTools.Serialization.CrossModel.Test
var driver = new Data.Models.Listxml.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -268,9 +268,9 @@ namespace SabreTools.Serialization.CrossModel.Test
var feature = new Data.Models.Listxml.Feature
{
- Type = "XXXXXX",
- Status = "XXXXXX",
- Overall = "XXXXXX",
+ Type = Data.Models.Metadata.FeatureType.Protection,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
};
var instance = new Data.Models.Listxml.Instance
@@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test
var device = new Data.Models.Listxml.Device
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DeviceType.PunchTape,
Tag = "XXXXXX",
FixedImage = "XXXXXX",
Mandatory = "XXXXXX",
@@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", rom.Merge);
Assert.Equal("XXXXXX", rom.Region);
Assert.Equal("XXXXXX", rom.Offset);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal(true, rom.Optional);
Assert.Equal(true, rom.Dispose);
Assert.Equal(true, rom.SoundOnly);
@@ -505,7 +505,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", disk.Region);
Assert.Equal("XXXXXX", disk.Index);
Assert.Equal(true, disk.Writable);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
}
@@ -535,7 +535,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(chip);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Tag);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal(true, chip.SoundOnly);
Assert.Equal("XXXXXX", chip.Clock);
}
@@ -547,7 +547,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(display);
Assert.Equal("XXXXXX", display.Tag);
- Assert.Equal("XXXXXX", display.Type);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type);
Assert.Equal("XXXXXX", display.Rotate);
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
@@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
@@ -610,7 +610,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Control? control)
{
Assert.NotNull(control);
- Assert.Equal("XXXXXX", control.Type);
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type);
Assert.Equal("XXXXXX", control.Player);
Assert.Equal("XXXXXX", control.Buttons);
Assert.Equal("XXXXXX", control.ReqButtons);
@@ -652,7 +652,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(condition);
Assert.Equal("XXXXXX", condition.Tag);
Assert.Equal("XXXXXX", condition.Mask);
- Assert.Equal("XXXXXX", condition.Relation);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("XXXXXX", condition.Value);
}
@@ -761,13 +761,13 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -780,9 +780,9 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Feature? feature)
{
Assert.NotNull(feature);
- Assert.Equal("XXXXXX", feature.Type);
- Assert.Equal("XXXXXX", feature.Status);
- Assert.Equal("XXXXXX", feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
}
///
@@ -791,7 +791,7 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.Listxml.Device? device)
{
Assert.NotNull(device);
- Assert.Equal("XXXXXX", device.Type);
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type);
Assert.Equal("XXXXXX", device.Tag);
Assert.Equal("XXXXXX", device.FixedImage);
Assert.Equal("XXXXXX", device.Mandatory);
@@ -854,7 +854,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
diff --git a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs
index 0725f0e3..8b1da955 100644
--- a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs
@@ -49,7 +49,7 @@ namespace SabreTools.Serialization.CrossModel.Test
DiskName = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
};
var media = new Data.Models.SeparatedValue.Row
@@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel.Test
SHA384 = "XXXXXX",
SHA512 = "XXXXXX",
SpamSum = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
};
return new Data.Models.SeparatedValue.MetadataFile
@@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Null(row.SHA384);
Assert.Null(row.SHA512);
Assert.Null(row.SpamSum);
- Assert.Equal("XXXXXX", row.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status);
}
///
@@ -176,7 +176,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", row.SHA384);
Assert.Equal("XXXXXX", row.SHA512);
Assert.Equal("XXXXXX", row.SpamSum);
- Assert.Equal("XXXXXX", row.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status);
}
}
}
diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs
index 5624c411..d6130c52 100644
--- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs
@@ -63,8 +63,8 @@ namespace SabreTools.Serialization.CrossModel.Test
SHA1 = "XXXXXX",
Offset = "XXXXXX",
Value = "XXXXXX",
- Status = "XXXXXX",
- LoadFlag = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
+ LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte,
};
var dataarea = new Data.Models.SoftwareList.DataArea
@@ -72,7 +72,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Name = "XXXXXX",
Size = "XXXXXX",
Width = "XXXXXX",
- Endianness = "XXXXXX",
+ Endianness = Data.Models.Metadata.Endianness.Big,
Rom = [rom],
};
@@ -81,7 +81,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Name = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Writeable = true,
};
@@ -120,7 +120,7 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Name = "XXXXXX",
CloneOf = "XXXXXX",
- Supported = "XXXXXX",
+ Supported = Data.Models.Metadata.Supported.Yes,
Description = "XXXXXX",
Year = "XXXXXX",
Publisher = "XXXXXX",
@@ -147,7 +147,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(software);
Assert.Equal("XXXXXX", software.Name);
Assert.Equal("XXXXXX", software.CloneOf);
- Assert.Equal("XXXXXX", software.Supported);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported);
Assert.Equal("XXXXXX", software.Description);
Assert.Equal("XXXXXX", software.Year);
Assert.Equal("XXXXXX", software.Publisher);
@@ -231,7 +231,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", dataarea.Name);
Assert.Equal("XXXXXX", dataarea.Size);
Assert.Equal("XXXXXX", dataarea.Width);
- Assert.Equal("XXXXXX", dataarea.Endianness);
+ Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness);
Assert.NotNull(dataarea.Rom);
var rom = Assert.Single(dataarea.Rom);
@@ -251,8 +251,8 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", rom.SHA1);
Assert.Equal("XXXXXX", rom.Offset);
Assert.Equal("XXXXXX", rom.Value);
- Assert.Equal("XXXXXX", rom.Status);
- Assert.Equal("XXXXXX", rom.LoadFlag);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
+ Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag);
}
///
@@ -277,7 +277,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", disk.Name);
Assert.Equal("XXXXXX", disk.MD5);
Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Writeable);
}
diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
index 89ea67f7..6ceb389c 100644
--- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
@@ -55,9 +55,9 @@ namespace SabreTools.Serialization.CrossModel
Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey),
Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey),
Type = item.ReadString(Data.Models.Metadata.Header.TypeKey),
- ForceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey),
+ ForceMerging = item.ForceMerging,
ForceZipping = item.ForceZipping,
- ForcePacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey),
+ ForcePacking = item.ForcePacking,
};
return clrMamePro;
}
@@ -167,7 +167,7 @@ namespace SabreTools.Serialization.CrossModel
{
var chip = new Chip
{
- Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey),
+ Type = item.ChipType,
Name = item.Name,
Flags = item.ReadString(Data.Models.Metadata.Chip.FlagsKey),
Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey),
@@ -200,7 +200,7 @@ namespace SabreTools.Serialization.CrossModel
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
- Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey),
+ Status = item.Status,
Flags = item.ReadString(Data.Models.Metadata.Disk.FlagsKey),
};
return disk;
@@ -213,11 +213,11 @@ namespace SabreTools.Serialization.CrossModel
{
var driver = new Driver
{
- Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey),
- Color = item.ReadString(Data.Models.Metadata.Driver.ColorKey),
- Sound = item.ReadString(Data.Models.Metadata.Driver.SoundKey),
+ Status = item.Status,
+ Color = item.Color,
+ Sound = item.Sound,
PaletteSize = item.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey),
- Blit = item.ReadString(Data.Models.Metadata.Driver.BlitKey),
+ Blit = item.Blit,
};
return driver;
}
@@ -296,7 +296,7 @@ namespace SabreTools.Serialization.CrossModel
xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key),
xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key),
Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey),
- Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey),
+ Status = item.Status,
Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey),
Flags = item.ReadString(Data.Models.Metadata.Rom.FlagsKey),
Offs = item.ReadString(Data.Models.Metadata.Rom.OffsetKey),
@@ -340,7 +340,7 @@ namespace SabreTools.Serialization.CrossModel
{
var video = new Video
{
- Screen = item.ReadString(Data.Models.Metadata.Video.ScreenKey),
+ Screen = item.Screen,
Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey),
X = item.ReadString(Data.Models.Metadata.Video.WidthKey),
Y = item.ReadString(Data.Models.Metadata.Video.HeightKey),
diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
index 25aff94f..a4291784 100644
--- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
@@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Data.Models.Metadata.Header
{
- Name = item.Name,
+ Name = item.Name,
[Data.Models.Metadata.Header.DescriptionKey] = item.Description,
[Data.Models.Metadata.Header.RootDirKey] = item.RootDir,
[Data.Models.Metadata.Header.CategoryKey] = item.Category,
@@ -47,9 +47,9 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Header.CommentKey] = item.Comment,
[Data.Models.Metadata.Header.HeaderKey] = item.Header,
[Data.Models.Metadata.Header.TypeKey] = item.Type,
- [Data.Models.Metadata.Header.ForceMergingKey] = item.ForceMerging,
+ ForceMerging = item.ForceMerging,
ForceZipping = item.ForceZipping,
- [Data.Models.Metadata.Header.ForcePackingKey] = item.ForcePacking,
+ ForcePacking = item.ForcePacking,
};
return header;
}
@@ -180,7 +180,7 @@ namespace SabreTools.Serialization.CrossModel
{
var chip = new Data.Models.Metadata.Chip
{
- [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type,
+ ChipType = item.Type,
Name = item.Name,
[Data.Models.Metadata.Chip.FlagsKey] = item.Flags,
[Data.Models.Metadata.Chip.ClockKey] = item.Clock,
@@ -213,7 +213,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
[Data.Models.Metadata.Disk.MergeKey] = item.Merge,
- [Data.Models.Metadata.Disk.StatusKey] = item.Status,
+ Status = item.Status,
[Data.Models.Metadata.Disk.FlagsKey] = item.Flags,
};
return disk;
@@ -226,11 +226,11 @@ namespace SabreTools.Serialization.CrossModel
{
var driver = new Data.Models.Metadata.Driver
{
- [Data.Models.Metadata.Driver.StatusKey] = item.Status,
- [Data.Models.Metadata.Driver.ColorKey] = item.Color,
- [Data.Models.Metadata.Driver.SoundKey] = item.Sound,
+ Status = item.Status,
+ Color = item.Color,
+ Sound = item.Sound,
[Data.Models.Metadata.Driver.PaletteSizeKey] = item.PaletteSize,
- [Data.Models.Metadata.Driver.BlitKey] = item.Blit,
+ Blit = item.Blit,
};
return driver;
}
@@ -309,7 +309,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364,
[Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128,
[Data.Models.Metadata.Rom.MergeKey] = item.Merge,
- [Data.Models.Metadata.Rom.StatusKey] = item.Status,
+ Status = item.Status,
[Data.Models.Metadata.Rom.RegionKey] = item.Region,
[Data.Models.Metadata.Rom.FlagsKey] = item.Flags,
[Data.Models.Metadata.Rom.OffsetKey] = item.Offs,
@@ -353,7 +353,7 @@ namespace SabreTools.Serialization.CrossModel
{
var video = new Data.Models.Metadata.Video
{
- [Data.Models.Metadata.Video.ScreenKey] = item.Screen,
+ Screen = item.Screen,
[Data.Models.Metadata.Video.OrientationKey] = item.Orientation,
[Data.Models.Metadata.Video.WidthKey] = item.X,
[Data.Models.Metadata.Video.HeightKey] = item.Y,
diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs
index 20d48a95..5e7d0428 100644
--- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs
@@ -60,9 +60,9 @@ namespace SabreTools.Serialization.CrossModel
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
};
- if ((item[Data.Models.Metadata.Disk.StatusKey] as string) == "nodump")
+ if (item.Status == Data.Models.Metadata.ItemStatus.Nodump)
row.NoGoodDumpKnown = true;
- else if ((item[Data.Models.Metadata.Disk.StatusKey] as string) == "baddump")
+ else if (item.Status == Data.Models.Metadata.ItemStatus.BadDump)
row.Bad = true;
return row;
@@ -81,9 +81,9 @@ namespace SabreTools.Serialization.CrossModel
SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key),
};
- if ((item[Data.Models.Metadata.Rom.StatusKey] as string) == "nodump")
+ if (item.Status == Data.Models.Metadata.ItemStatus.Nodump)
row.NoGoodDumpKnown = true;
- else if ((item[Data.Models.Metadata.Rom.StatusKey] as string) == "baddump")
+ else if (item.Status == Data.Models.Metadata.ItemStatus.BadDump)
row.Bad = true;
return row;
diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs
index c167fc22..d696ad0a 100644
--- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs
@@ -89,9 +89,9 @@ namespace SabreTools.Serialization.CrossModel
};
if (item.NoGoodDumpKnown)
- disk[Data.Models.Metadata.Disk.StatusKey] = "nodump";
+ disk.Status = Data.Models.Metadata.ItemStatus.Nodump;
else if (item.Bad)
- disk[Data.Models.Metadata.Disk.StatusKey] = "baddump";
+ disk.Status = Data.Models.Metadata.ItemStatus.BadDump;
return disk;
}
@@ -106,9 +106,9 @@ namespace SabreTools.Serialization.CrossModel
};
if (item.NoGoodDumpKnown)
- rom[Data.Models.Metadata.Rom.StatusKey] = "nodump";
+ rom.Status = Data.Models.Metadata.ItemStatus.Nodump;
else if (item.Bad)
- rom[Data.Models.Metadata.Rom.StatusKey] = "baddump";
+ rom.Status = Data.Models.Metadata.ItemStatus.BadDump;
return rom;
}
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
index 5a828b7b..02a38a83 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
@@ -194,7 +194,7 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Tag = item.ReadString(Data.Models.Metadata.Chip.TagKey),
- Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey),
+ Type = item.ChipType,
SoundOnly = item.SoundOnly,
Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey),
};
@@ -210,7 +210,7 @@ namespace SabreTools.Serialization.CrossModel
{
Tag = item.ReadString(Data.Models.Metadata.Condition.TagKey),
Mask = item.ReadString(Data.Models.Metadata.Condition.MaskKey),
- Relation = item.ReadString(Data.Models.Metadata.Condition.RelationKey),
+ Relation = item.Relation,
Value = item.ReadString(Data.Models.Metadata.Condition.ValueKey),
};
return condition;
@@ -283,7 +283,7 @@ namespace SabreTools.Serialization.CrossModel
{
var control = new Control
{
- Type = item.ReadString(Data.Models.Metadata.Control.ControlTypeKey),
+ Type = item.ControlType,
Player = item.ReadString(Data.Models.Metadata.Control.PlayerKey),
Buttons = item.ReadString(Data.Models.Metadata.Control.ButtonsKey),
ReqButtons = item.ReadString(Data.Models.Metadata.Control.ReqButtonsKey),
@@ -306,7 +306,7 @@ namespace SabreTools.Serialization.CrossModel
{
var device = new Device
{
- Type = item.ReadString(Data.Models.Metadata.Device.DeviceTypeKey),
+ Type = item.DeviceType,
Tag = item.ReadString(Data.Models.Metadata.Device.TagKey),
FixedImage = item.ReadString(Data.Models.Metadata.Device.FixedImageKey),
Mandatory = item.ReadString(Data.Models.Metadata.Device.MandatoryKey),
@@ -410,7 +410,7 @@ namespace SabreTools.Serialization.CrossModel
Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey),
Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey),
Writable = item.Writable,
- Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey),
+ Status = item.Status,
Optional = item.Optional,
};
return disk;
@@ -424,7 +424,7 @@ namespace SabreTools.Serialization.CrossModel
var display = new Display
{
Tag = item.ReadString(Data.Models.Metadata.Display.TagKey),
- Type = item.ReadString(Data.Models.Metadata.Display.DisplayTypeKey),
+ Type = item.DisplayType,
Rotate = item.ReadString(Data.Models.Metadata.Display.RotateKey),
FlipX = item.FlipX,
Width = item.ReadString(Data.Models.Metadata.Display.WidthKey),
@@ -448,13 +448,13 @@ namespace SabreTools.Serialization.CrossModel
{
var driver = new Driver
{
- Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey),
- Color = item.ReadString(Data.Models.Metadata.Driver.ColorKey),
- Sound = item.ReadString(Data.Models.Metadata.Driver.SoundKey),
+ Status = item.Status,
+ Color = item.Color,
+ Sound = item.Sound,
PaletteSize = item.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey),
- Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey),
- Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey),
- SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey),
+ Emulation = item.Emulation,
+ Cocktail = item.Cocktail,
+ SaveState = item.SaveState,
RequiresArtwork = item.RequiresArtwork,
Unofficial = item.Unofficial,
NoSoundHardware = item.NoSoundHardware,
@@ -482,9 +482,9 @@ namespace SabreTools.Serialization.CrossModel
{
var feature = new Feature
{
- Type = item.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey),
- Status = item.ReadString(Data.Models.Metadata.Feature.StatusKey),
- Overall = item.ReadString(Data.Models.Metadata.Feature.OverallKey),
+ Type = item.FeatureType,
+ Status = item.Status,
+ Overall = item.Overall,
};
return feature;
}
@@ -573,7 +573,7 @@ namespace SabreTools.Serialization.CrossModel
Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey),
Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey),
Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey),
- Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey),
+ Status = item.Status,
Optional = item.Optional,
Dispose = item.Dispose,
SoundOnly = item.SoundOnly,
@@ -633,7 +633,7 @@ namespace SabreTools.Serialization.CrossModel
{
Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey),
Name = item.Name,
- Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey),
+ Status = item.Status,
Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey),
};
return softwareList;
@@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel
{
var video = new Video
{
- Screen = item.ReadString(Data.Models.Metadata.Video.ScreenKey),
+ Screen = item.Screen,
Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey),
Width = item.ReadString(Data.Models.Metadata.Video.WidthKey),
Height = item.ReadString(Data.Models.Metadata.Video.HeightKey),
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
index 335a5866..10c5e034 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
@@ -227,7 +227,7 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
[Data.Models.Metadata.Chip.TagKey] = item.Tag,
- [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type,
+ ChipType = item.Type,
SoundOnly = item.SoundOnly,
[Data.Models.Metadata.Chip.ClockKey] = item.Clock,
};
@@ -243,7 +243,7 @@ namespace SabreTools.Serialization.CrossModel
{
[Data.Models.Metadata.Condition.TagKey] = item.Tag,
[Data.Models.Metadata.Condition.MaskKey] = item.Mask,
- [Data.Models.Metadata.Condition.RelationKey] = item.Relation,
+ Relation = item.Relation,
[Data.Models.Metadata.Condition.ValueKey] = item.Value,
};
return condition;
@@ -318,7 +318,7 @@ namespace SabreTools.Serialization.CrossModel
{
var control = new Data.Models.Metadata.Control
{
- [Data.Models.Metadata.Control.ControlTypeKey] = item.Type,
+ ControlType = item.Type,
[Data.Models.Metadata.Control.PlayerKey] = item.Player,
[Data.Models.Metadata.Control.ButtonsKey] = item.Buttons,
[Data.Models.Metadata.Control.ReqButtonsKey] = item.ReqButtons,
@@ -341,7 +341,7 @@ namespace SabreTools.Serialization.CrossModel
{
var device = new Data.Models.Metadata.Device
{
- [Data.Models.Metadata.Device.DeviceTypeKey] = item.Type,
+ DeviceType = item.Type,
[Data.Models.Metadata.Device.TagKey] = item.Tag,
[Data.Models.Metadata.Device.FixedImageKey] = item.FixedImage,
[Data.Models.Metadata.Device.MandatoryKey] = item.Mandatory,
@@ -448,7 +448,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Disk.RegionKey] = item.Region,
[Data.Models.Metadata.Disk.IndexKey] = item.Index,
Writable = item.Writable,
- [Data.Models.Metadata.Disk.StatusKey] = item.Status,
+ Status = item.Status,
Optional = item.Optional,
};
return disk;
@@ -462,7 +462,7 @@ namespace SabreTools.Serialization.CrossModel
var display = new Data.Models.Metadata.Display
{
[Data.Models.Metadata.Display.TagKey] = item.Tag,
- [Data.Models.Metadata.Display.DisplayTypeKey] = item.Type,
+ DisplayType = item.Type,
[Data.Models.Metadata.Display.RotateKey] = item.Rotate,
FlipX = item.FlipX,
[Data.Models.Metadata.Display.WidthKey] = item.Width,
@@ -486,13 +486,13 @@ namespace SabreTools.Serialization.CrossModel
{
var driver = new Data.Models.Metadata.Driver
{
- [Data.Models.Metadata.Driver.StatusKey] = item.Status,
- [Data.Models.Metadata.Driver.ColorKey] = item.Color,
- [Data.Models.Metadata.Driver.SoundKey] = item.Sound,
+ Status = item.Status,
+ Color = item.Color,
+ Sound = item.Sound,
[Data.Models.Metadata.Driver.PaletteSizeKey] = item.PaletteSize,
- [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation,
- [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail,
- [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState,
+ Emulation = item.Emulation,
+ Cocktail = item.Cocktail,
+ SaveState = item.SaveState,
RequiresArtwork = item.RequiresArtwork,
Unofficial = item.Unofficial,
NoSoundHardware = item.NoSoundHardware,
@@ -520,9 +520,9 @@ namespace SabreTools.Serialization.CrossModel
{
var feature = new Data.Models.Metadata.Feature
{
- [Data.Models.Metadata.Feature.FeatureTypeKey] = item.Type,
- [Data.Models.Metadata.Feature.StatusKey] = item.Status,
- [Data.Models.Metadata.Feature.OverallKey] = item.Overall,
+ FeatureType = item.Type,
+ Status = item.Status,
+ Overall = item.Overall,
};
return feature;
}
@@ -612,7 +612,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Rom.MergeKey] = item.Merge,
[Data.Models.Metadata.Rom.RegionKey] = item.Region,
[Data.Models.Metadata.Rom.OffsetKey] = item.Offset,
- [Data.Models.Metadata.Rom.StatusKey] = item.Status,
+ Status = item.Status,
Optional = item.Optional,
Dispose = item.Dispose,
SoundOnly = item.SoundOnly,
@@ -674,7 +674,7 @@ namespace SabreTools.Serialization.CrossModel
{
[Data.Models.Metadata.SoftwareList.TagKey] = item.Tag,
Name = item.Name,
- [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status,
+ Status = item.Status,
[Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter,
};
return softwareList;
@@ -699,7 +699,7 @@ namespace SabreTools.Serialization.CrossModel
{
var video = new Data.Models.Metadata.Video
{
- [Data.Models.Metadata.Video.ScreenKey] = item.Screen,
+ Screen = item.Screen,
[Data.Models.Metadata.Video.OrientationKey] = item.Orientation,
[Data.Models.Metadata.Video.WidthKey] = item.Width,
[Data.Models.Metadata.Video.HeightKey] = item.Height,
diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs
index 06946884..dbead2e5 100644
--- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs
@@ -57,38 +57,38 @@ namespace SabreTools.Serialization.CrossModel
};
string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey);
- string? forceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey);
- string? forceNodump = item.ReadString(Data.Models.Metadata.Header.ForceNodumpKey);
- string? forceUnpacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey);
+ Data.Models.Metadata.MergingFlag forceMerging = item.ForceMerging;
+ Data.Models.Metadata.NodumpFlag forceNodump = item.ForceNodump;
+ Data.Models.Metadata.PackingFlag forcePacking = item.ForcePacking;
if (headerVal is not null
- || forceMerging is not null
- || forceNodump is not null
- || forceUnpacking is not null)
+ || forceMerging is not Data.Models.Metadata.MergingFlag.None
+ || forceNodump is not Data.Models.Metadata.NodumpFlag.None
+ || forcePacking is not Data.Models.Metadata.PackingFlag.None)
{
header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro();
if (headerVal is not null)
header.ClrMamePro.Header = headerVal;
- if (forceMerging is not null)
+ if (forceMerging is not Data.Models.Metadata.MergingFlag.None)
header.ClrMamePro.ForceMerging = forceMerging;
- if (forceNodump is not null)
+ if (forceNodump is not Data.Models.Metadata.NodumpFlag.None)
header.ClrMamePro.ForceNodump = forceNodump;
- if (forceUnpacking is not null)
- header.ClrMamePro.ForcePacking = forceUnpacking;
+ if (forcePacking is not Data.Models.Metadata.PackingFlag.None)
+ header.ClrMamePro.ForcePacking = forcePacking;
}
string? plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey);
- string? romMode = item.ReadString(Data.Models.Metadata.Header.RomModeKey);
- string? biosMode = item.ReadString(Data.Models.Metadata.Header.BiosModeKey);
- string? sampleMode = item.ReadString(Data.Models.Metadata.Header.SampleModeKey);
+ Data.Models.Metadata.MergingFlag romMode = item.RomMode;
+ Data.Models.Metadata.MergingFlag biosMode = item.BiosMode;
+ Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode;
bool? lockRomMode = item.LockRomMode;
bool? lockBiosMode = item.LockBiosMode;
bool? lockSampleMode = item.LockSampleMode;
if (plugin is not null
- || romMode is not null
- || biosMode is not null
- || sampleMode is not null
+ || romMode is not Data.Models.Metadata.MergingFlag.None
+ || biosMode is not Data.Models.Metadata.MergingFlag.None
+ || sampleMode is not Data.Models.Metadata.MergingFlag.None
|| lockRomMode is not null
|| lockBiosMode is not null
|| lockSampleMode is not null)
@@ -96,11 +96,11 @@ namespace SabreTools.Serialization.CrossModel
header.RomCenter = new Data.Models.Logiqx.RomCenter();
if (plugin is not null)
header.RomCenter.Plugin = plugin;
- if (romMode is not null)
+ if (romMode is not Data.Models.Metadata.MergingFlag.None)
header.RomCenter.RomMode = romMode;
- if (biosMode is not null)
+ if (biosMode is not Data.Models.Metadata.MergingFlag.None)
header.RomCenter.BiosMode = biosMode;
- if (sampleMode is not null)
+ if (sampleMode is not Data.Models.Metadata.MergingFlag.None)
header.RomCenter.SampleMode = sampleMode;
if (lockRomMode is not null)
header.RomCenter.LockRomMode = lockRomMode;
@@ -236,7 +236,7 @@ namespace SabreTools.Serialization.CrossModel
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
- Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey),
+ Status = item.Status,
Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey),
};
return disk;
@@ -249,10 +249,10 @@ namespace SabreTools.Serialization.CrossModel
{
var driver = new Driver
{
- Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey),
- Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey),
- Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey),
- SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey),
+ Status = item.Status,
+ Emulation = item.Emulation,
+ Cocktail = item.Cocktail,
+ SaveState = item.SaveState,
RequiresArtwork = item.RequiresArtwork,
Unofficial = item.Unofficial,
NoSoundHardware = item.NoSoundHardware,
@@ -318,7 +318,7 @@ namespace SabreTools.Serialization.CrossModel
xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key),
xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key),
Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey),
- Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey),
+ Status = item.Status,
Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey),
Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey),
Date = item.ReadString(Data.Models.Metadata.Rom.DateKey),
@@ -349,7 +349,7 @@ namespace SabreTools.Serialization.CrossModel
{
Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey),
Name = item.Name,
- Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey),
+ Status = item.Status,
Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey),
};
return softwareList;
diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs
index b2d21245..631990fd 100644
--- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs
@@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel
var header = new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.IdKey] = item.Id,
- Name = item.Name,
+ Name = item.Name,
[Data.Models.Metadata.Header.DescriptionKey] = item.Description,
[Data.Models.Metadata.Header.RootDirKey] = item.RootDir,
[Data.Models.Metadata.Header.CategoryKey] = item.Category,
@@ -71,17 +71,17 @@ namespace SabreTools.Serialization.CrossModel
if (item.ClrMamePro is not null)
{
header[Data.Models.Metadata.Header.HeaderKey] = item.ClrMamePro.Header;
- header[Data.Models.Metadata.Header.ForceMergingKey] = item.ClrMamePro.ForceMerging;
- header[Data.Models.Metadata.Header.ForceNodumpKey] = item.ClrMamePro.ForceNodump;
- header[Data.Models.Metadata.Header.ForcePackingKey] = item.ClrMamePro.ForcePacking;
+ header.ForceMerging = item.ClrMamePro.ForceMerging;
+ header.ForceNodump = item.ClrMamePro.ForceNodump;
+ header.ForcePacking = item.ClrMamePro.ForcePacking;
}
if (item.RomCenter is not null)
{
header[Data.Models.Metadata.Header.PluginKey] = item.RomCenter.Plugin;
- header[Data.Models.Metadata.Header.RomModeKey] = item.RomCenter.RomMode;
- header[Data.Models.Metadata.Header.BiosModeKey] = item.RomCenter.BiosMode;
- header[Data.Models.Metadata.Header.SampleModeKey] = item.RomCenter.SampleMode;
+ header.RomMode = item.RomCenter.RomMode;
+ header.BiosMode = item.RomCenter.BiosMode;
+ header.SampleMode = item.RomCenter.SampleMode;
header.LockRomMode = item.RomCenter.LockRomMode;
header.LockBiosMode = item.RomCenter.LockBiosMode;
header.LockSampleMode = item.RomCenter.LockSampleMode;
@@ -230,7 +230,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
[Data.Models.Metadata.Disk.MergeKey] = item.Merge,
- [Data.Models.Metadata.Disk.StatusKey] = item.Status,
+ Status = item.Status,
[Data.Models.Metadata.Disk.RegionKey] = item.Region,
};
return disk;
@@ -243,10 +243,10 @@ namespace SabreTools.Serialization.CrossModel
{
var driver = new Data.Models.Metadata.Driver
{
- [Data.Models.Metadata.Driver.StatusKey] = item.Status,
- [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation,
- [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail,
- [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState,
+ Status = item.Status,
+ Emulation = item.Emulation,
+ Cocktail = item.Cocktail,
+ SaveState = item.SaveState,
RequiresArtwork = item.RequiresArtwork,
Unofficial = item.Unofficial,
NoSoundHardware = item.NoSoundHardware,
@@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364,
[Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128,
[Data.Models.Metadata.Rom.MergeKey] = item.Merge,
- [Data.Models.Metadata.Rom.StatusKey] = item.Status,
+ Status = item.Status,
[Data.Models.Metadata.Rom.SerialKey] = item.Serial,
[Data.Models.Metadata.Rom.HeaderKey] = item.Header,
[Data.Models.Metadata.Rom.DateKey] = item.Date,
@@ -343,7 +343,7 @@ namespace SabreTools.Serialization.CrossModel
{
[Data.Models.Metadata.SoftwareList.TagKey] = item.Tag,
Name = item.Name,
- [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status,
+ Status = item.Status,
[Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter,
};
return softwareList;
diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs
index 35121c7e..cf6ff86a 100644
--- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs
@@ -55,14 +55,14 @@ namespace SabreTools.Serialization.CrossModel
if (item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey)
|| item.ContainsKey(Data.Models.Metadata.Header.PluginKey)
- || item.ContainsKey(Data.Models.Metadata.Header.ForceMergingKey))
+ || item.ForceMerging != Data.Models.Metadata.MergingFlag.None)
{
metadataFile.Dat = new Dat
{
Version = item.ReadString(Data.Models.Metadata.Header.DatVersionKey),
Plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey),
- Split = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey) == "split" ? "yes" : "no",
- Merge = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey) == "merge" ? "yes" : "no",
+ Split = item.ForceMerging == Data.Models.Metadata.MergingFlag.Split ? "yes" : "no",
+ Merge = item.ForceMerging == Data.Models.Metadata.MergingFlag.Merged ? "yes" : "no",
};
}
diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs
index 7e77deec..ef281c82 100644
--- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs
@@ -49,9 +49,9 @@ namespace SabreTools.Serialization.CrossModel
header[Data.Models.Metadata.Header.PluginKey] = item.Dat.Plugin;
if (item.Dat.Split == "yes" || item.Dat.Split == "1")
- header[Data.Models.Metadata.Header.ForceMergingKey] = "split";
+ header.ForceMerging = Data.Models.Metadata.MergingFlag.Split;
else if (item.Dat.Merge == "yes" || item.Dat.Merge == "1")
- header[Data.Models.Metadata.Header.ForceMergingKey] = "merge";
+ header.ForceMerging = Data.Models.Metadata.MergingFlag.Merged;
}
if (item.Emulator is not null)
diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs
index 38ac7b00..a5467b35 100644
--- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs
@@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel
SHA384 = null,
SHA512 = null,
SpamSum = null,
- Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey),
+ Status = item.Status,
};
return row;
}
@@ -147,7 +147,7 @@ namespace SabreTools.Serialization.CrossModel
SHA384 = item.ReadString(Data.Models.Metadata.Rom.SHA384Key),
SHA512 = item.ReadString(Data.Models.Metadata.Rom.SHA512Key),
SpamSum = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey),
- Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey),
+ Status = item.Status,
};
return row;
}
diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs
index 5b98e28f..04b4c421 100644
--- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs
@@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel
Name = item.DiskName,
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
- [Data.Models.Metadata.Disk.StatusKey] = item.Status,
+ Status = item.Status,
},
"media" => new Data.Models.Metadata.Media
{
@@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Rom.SHA384Key] = item.SHA384,
[Data.Models.Metadata.Rom.SHA512Key] = item.SHA512,
[Data.Models.Metadata.Rom.SpamSumKey] = item.SpamSum,
- [Data.Models.Metadata.Rom.StatusKey] = item.Status,
+ Status = item.Status,
},
_ => null,
};
diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs
index 987962da..4d0cc5b2 100644
--- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs
@@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey),
- Supported = item.ReadString(Data.Models.Metadata.Machine.SupportedKey),
+ Supported = item.Supported,
Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey),
Year = item.ReadString(Data.Models.Metadata.Machine.YearKey),
Publisher = item.ReadString(Data.Models.Metadata.Machine.PublisherKey),
@@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel
Name = item.Name,
Size = item.ReadString(Data.Models.Metadata.DataArea.SizeKey),
Width = item.ReadString(Data.Models.Metadata.DataArea.WidthKey),
- Endianness = item.ReadString(Data.Models.Metadata.DataArea.EndiannessKey),
+ Endianness = item.Endianness,
};
var roms = item.Read(Data.Models.Metadata.DataArea.RomKey);
@@ -129,7 +129,7 @@ namespace SabreTools.Serialization.CrossModel
Name = item.Name,
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
- Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey),
+ Status = item.Status,
Writeable = item.Writable,
};
return disk;
@@ -222,8 +222,8 @@ namespace SabreTools.Serialization.CrossModel
SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key),
Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey),
Value = item.ReadString(Data.Models.Metadata.Rom.ValueKey),
- Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey),
- LoadFlag = item.ReadString(Data.Models.Metadata.Rom.LoadFlagKey),
+ Status = item.Status,
+ LoadFlag = item.LoadFlag,
};
return rom;
}
diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs
index 7fcdeee8..ec6a69f3 100644
--- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs
@@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
[Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf,
- [Data.Models.Metadata.Machine.SupportedKey] = item.Supported,
+ Supported = item.Supported,
[Data.Models.Metadata.Machine.DescriptionKey] = item.Description,
[Data.Models.Metadata.Machine.YearKey] = item.Year,
[Data.Models.Metadata.Machine.PublisherKey] = item.Publisher,
@@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel
Name = item.Name,
[Data.Models.Metadata.DataArea.SizeKey] = item.Size,
[Data.Models.Metadata.DataArea.WidthKey] = item.Width,
- [Data.Models.Metadata.DataArea.EndiannessKey] = item.Endianness,
+ Endianness = item.Endianness,
};
if (item.Rom is not null && item.Rom.Length > 0)
@@ -128,7 +128,7 @@ namespace SabreTools.Serialization.CrossModel
Name = item.Name,
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
- [Data.Models.Metadata.Disk.StatusKey] = item.Status,
+ Status = item.Status,
Writable = item.Writeable,
};
return disk;
@@ -216,8 +216,8 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Rom.SHA1Key] = item.SHA1,
[Data.Models.Metadata.Rom.OffsetKey] = item.Offset,
[Data.Models.Metadata.Rom.ValueKey] = item.Value,
- [Data.Models.Metadata.Rom.StatusKey] = item.Status,
- [Data.Models.Metadata.Rom.LoadFlagKey] = item.LoadFlag,
+ Status = item.Status,
+ LoadFlag = item.LoadFlag,
};
return rom;
}
diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
index e2d4abb2..d73828d0 100644
--- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
+++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
@@ -190,9 +190,9 @@ namespace SabreTools.Serialization.Readers.Test
Comment = "XXXXXX",
Header = "XXXXXX",
Type = "XXXXXX",
- ForceMerging = "XXXXXX",
+ ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
ForceZipping = true,
- ForcePacking = "XXXXXX",
+ ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
};
var release = new Data.Models.ClrMamePro.Release
@@ -225,7 +225,7 @@ namespace SabreTools.Serialization.Readers.Test
RIPEMD160 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Flags = "XXXXXX",
Date = "XXXXXX",
SHA256 = "XXXXXX",
@@ -248,7 +248,7 @@ namespace SabreTools.Serialization.Readers.Test
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Flags = "XXXXXX",
};
@@ -273,7 +273,7 @@ namespace SabreTools.Serialization.Readers.Test
var chip = new Data.Models.ClrMamePro.Chip
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
Name = "XXXXXX",
Flags = "XXXXXX",
Clock = "XXXXXX",
@@ -281,7 +281,7 @@ namespace SabreTools.Serialization.Readers.Test
var video = new Data.Models.ClrMamePro.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
X = "XXXXXX",
Y = "XXXXXX",
@@ -314,11 +314,11 @@ namespace SabreTools.Serialization.Readers.Test
var driver = new Data.Models.ClrMamePro.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Blit = "XXXXXX",
+ Blit = Data.Models.Metadata.Blit.Plain,
};
// TODO: This omits Set, should that have a separate case?
@@ -379,9 +379,9 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", cmp.Comment);
Assert.Equal("XXXXXX", cmp.Header);
Assert.Equal("XXXXXX", cmp.Type);
- Assert.Equal("XXXXXX", cmp.ForceMerging);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging);
Assert.Equal(true, cmp.ForceZipping);
- Assert.Equal("XXXXXX", cmp.ForcePacking);
+ Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking);
}
///
@@ -488,7 +488,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", rom.RIPEMD160);
Assert.Equal("XXXXXX", rom.SHA1);
Assert.Equal("XXXXXX", rom.Merge);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal("XXXXXX", rom.Flags);
Assert.Equal("XXXXXX", rom.Date);
Assert.Equal("XXXXXX", rom.SHA256);
@@ -515,7 +515,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", disk.MD5);
Assert.Equal("XXXXXX", disk.SHA1);
Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal("XXXXXX", disk.Flags);
}
@@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.ClrMamePro.Chip? chip)
{
Assert.NotNull(chip);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Flags);
Assert.Equal("XXXXXX", chip.Clock);
@@ -568,7 +568,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.ClrMamePro.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.X);
Assert.Equal("XXXXXX", video.Y);
@@ -621,11 +621,11 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.ClrMamePro.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Blit);
+ Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit);
}
///
diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
index 835a4db2..6cfd1795 100644
--- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
+++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
@@ -147,7 +147,7 @@ namespace SabreTools.Serialization.Readers.Test
Merge = "XXXXXX",
Region = "XXXXXX",
Offset = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
Dispose = true,
SoundOnly = true,
@@ -162,7 +162,7 @@ namespace SabreTools.Serialization.Readers.Test
Region = "XXXXXX",
Index = "XXXXXX",
Writable = true,
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
};
@@ -180,7 +180,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Name = "XXXXXX",
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
SoundOnly = true,
Clock = "XXXXXX",
};
@@ -188,7 +188,7 @@ namespace SabreTools.Serialization.Readers.Test
var display = new Data.Models.Listxml.Display
{
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DisplayType.Vector,
Rotate = "XXXXXX",
FlipX = true,
Width = "XXXXXX",
@@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers.Test
var video = new Data.Models.Listxml.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
@@ -221,7 +221,7 @@ namespace SabreTools.Serialization.Readers.Test
var control = new Data.Models.Listxml.Control
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ControlType.Lightgun,
Player = "XXXXXX",
Buttons = "XXXXXX",
ReqButtons = "XXXXXX",
@@ -250,7 +250,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Mask = "XXXXXX",
- Relation = "XXXXXX",
+ Relation = Data.Models.Metadata.Relation.Equal,
Value = "XXXXXX",
};
@@ -324,13 +324,13 @@ namespace SabreTools.Serialization.Readers.Test
var driver = new Data.Models.Listxml.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -339,9 +339,9 @@ namespace SabreTools.Serialization.Readers.Test
var feature = new Data.Models.Listxml.Feature
{
- Type = "XXXXXX",
- Status = "XXXXXX",
- Overall = "XXXXXX",
+ Type = Data.Models.Metadata.FeatureType.Protection,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
};
var instance = new Data.Models.Listxml.Instance
@@ -357,7 +357,7 @@ namespace SabreTools.Serialization.Readers.Test
var device = new Data.Models.Listxml.Device
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DeviceType.PunchTape,
Tag = "XXXXXX",
FixedImage = "XXXXXX",
Mandatory = "XXXXXX",
@@ -383,7 +383,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -559,7 +559,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", rom.Merge);
Assert.Equal("XXXXXX", rom.Region);
Assert.Equal("XXXXXX", rom.Offset);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal(true, rom.Optional);
Assert.Equal(true, rom.Dispose);
Assert.Equal(true, rom.SoundOnly);
@@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", disk.Region);
Assert.Equal("XXXXXX", disk.Index);
Assert.Equal(true, disk.Writable);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
}
@@ -608,7 +608,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(chip);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Tag);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal(true, chip.SoundOnly);
Assert.Equal("XXXXXX", chip.Clock);
}
@@ -620,7 +620,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(display);
Assert.Equal("XXXXXX", display.Tag);
- Assert.Equal("XXXXXX", display.Type);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type);
Assert.Equal("XXXXXX", display.Rotate);
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
@@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
@@ -683,7 +683,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Control? control)
{
Assert.NotNull(control);
- Assert.Equal("XXXXXX", control.Type);
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type);
Assert.Equal("XXXXXX", control.Player);
Assert.Equal("XXXXXX", control.Buttons);
Assert.Equal("XXXXXX", control.ReqButtons);
@@ -725,7 +725,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(condition);
Assert.Equal("XXXXXX", condition.Tag);
Assert.Equal("XXXXXX", condition.Mask);
- Assert.Equal("XXXXXX", condition.Relation);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("XXXXXX", condition.Value);
}
@@ -834,13 +834,13 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -853,9 +853,9 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Feature? feature)
{
Assert.NotNull(feature);
- Assert.Equal("XXXXXX", feature.Type);
- Assert.Equal("XXXXXX", feature.Status);
- Assert.Equal("XXXXXX", feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
}
///
@@ -864,7 +864,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Device? device)
{
Assert.NotNull(device);
- Assert.Equal("XXXXXX", device.Type);
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type);
Assert.Equal("XXXXXX", device.Tag);
Assert.Equal("XXXXXX", device.FixedImage);
Assert.Equal("XXXXXX", device.Mandatory);
@@ -927,7 +927,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs
index 0b461d03..1182957d 100644
--- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs
+++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs
@@ -141,17 +141,17 @@ namespace SabreTools.Serialization.Readers.Test
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
{
Header = "XXXXXX",
- ForceMerging = "XXXXXX",
- ForceNodump = "XXXXXX",
- ForcePacking = "XXXXXX",
+ ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
+ ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
+ ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
};
var romcenter = new Data.Models.Logiqx.RomCenter
{
Plugin = "XXXXXX",
- RomMode = "XXXXXX",
- BiosMode = "XXXXXX",
- SampleMode = "XXXXXX",
+ RomMode = Data.Models.Metadata.MergingFlag.Merged,
+ BiosMode = Data.Models.Metadata.MergingFlag.Merged,
+ SampleMode = Data.Models.Metadata.MergingFlag.Merged,
LockRomMode = true,
LockBiosMode = true,
LockSampleMode = true,
@@ -230,7 +230,7 @@ namespace SabreTools.Serialization.Readers.Test
xxHash364 = "XXXXXX",
xxHash3128 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Serial = "XXXXXX",
Header = "XXXXXX",
Date = "XXXXXX",
@@ -244,7 +244,7 @@ namespace SabreTools.Serialization.Readers.Test
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Region = "XXXXXX",
};
@@ -274,10 +274,10 @@ namespace SabreTools.Serialization.Readers.Test
var driver = new Data.Models.Logiqx.Driver
{
- Status = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -288,7 +288,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -367,9 +367,9 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(cmp);
Assert.Equal("XXXXXX", cmp.Header);
- Assert.Equal("XXXXXX", cmp.ForceMerging);
- Assert.Equal("XXXXXX", cmp.ForceNodump);
- Assert.Equal("XXXXXX", cmp.ForcePacking);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging);
+ Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, cmp.ForceNodump);
+ Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking);
}
///
@@ -379,9 +379,9 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(rc);
Assert.Equal("XXXXXX", rc.Plugin);
- Assert.Equal("XXXXXX", rc.RomMode);
- Assert.Equal("XXXXXX", rc.BiosMode);
- Assert.Equal("XXXXXX", rc.SampleMode);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.RomMode);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.BiosMode);
+ Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.SampleMode);
Assert.Equal(true, rc.LockRomMode);
Assert.Equal(true, rc.LockBiosMode);
Assert.Equal(true, rc.LockSampleMode);
@@ -529,7 +529,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", rom.xxHash364);
Assert.Equal("XXXXXX", rom.xxHash3128);
Assert.Equal("XXXXXX", rom.Merge);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal("XXXXXX", rom.Serial);
Assert.Equal("XXXXXX", rom.Header);
Assert.Equal("XXXXXX", rom.Date);
@@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", disk.MD5);
Assert.Equal("XXXXXX", disk.SHA1);
Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal("XXXXXX", disk.Region);
}
@@ -597,10 +597,10 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Logiqx.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -615,7 +615,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
}
diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs
index aa00abaf..cbff6514 100644
--- a/SabreTools.Serialization.Readers.Test/M1Tests.cs
+++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs
@@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test
Merge = "XXXXXX",
Region = "XXXXXX",
Offset = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
Dispose = true,
SoundOnly = true,
@@ -158,7 +158,7 @@ namespace SabreTools.Serialization.Readers.Test
Region = "XXXXXX",
Index = "XXXXXX",
Writable = true,
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
};
@@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Name = "XXXXXX",
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
SoundOnly = true,
Clock = "XXXXXX",
};
@@ -184,7 +184,7 @@ namespace SabreTools.Serialization.Readers.Test
var display = new Data.Models.Listxml.Display
{
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DisplayType.Vector,
Rotate = "XXXXXX",
FlipX = true,
Width = "XXXXXX",
@@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test
var video = new Data.Models.Listxml.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
@@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test
var control = new Data.Models.Listxml.Control
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ControlType.Lightgun,
Player = "XXXXXX",
Buttons = "XXXXXX",
ReqButtons = "XXXXXX",
@@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Mask = "XXXXXX",
- Relation = "XXXXXX",
+ Relation = Data.Models.Metadata.Relation.Equal,
Value = "XXXXXX",
};
@@ -320,13 +320,13 @@ namespace SabreTools.Serialization.Readers.Test
var driver = new Data.Models.Listxml.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -335,9 +335,9 @@ namespace SabreTools.Serialization.Readers.Test
var feature = new Data.Models.Listxml.Feature
{
- Type = "XXXXXX",
- Status = "XXXXXX",
- Overall = "XXXXXX",
+ Type = Data.Models.Metadata.FeatureType.Protection,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
};
var instance = new Data.Models.Listxml.Instance
@@ -353,7 +353,7 @@ namespace SabreTools.Serialization.Readers.Test
var device = new Data.Models.Listxml.Device
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DeviceType.PunchTape,
Tag = "XXXXXX",
FixedImage = "XXXXXX",
Mandatory = "XXXXXX",
@@ -379,7 +379,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", rom.Merge);
Assert.Equal("XXXXXX", rom.Region);
Assert.Equal("XXXXXX", rom.Offset);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal(true, rom.Optional);
Assert.Equal(true, rom.Dispose);
Assert.Equal(true, rom.SoundOnly);
@@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", disk.Region);
Assert.Equal("XXXXXX", disk.Index);
Assert.Equal(true, disk.Writable);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
}
@@ -602,7 +602,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(chip);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Tag);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal(true, chip.SoundOnly);
Assert.Equal("XXXXXX", chip.Clock);
}
@@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(display);
Assert.Equal("XXXXXX", display.Tag);
- Assert.Equal("XXXXXX", display.Type);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type);
Assert.Equal("XXXXXX", display.Rotate);
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
@@ -635,7 +635,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
@@ -677,7 +677,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Control? control)
{
Assert.NotNull(control);
- Assert.Equal("XXXXXX", control.Type);
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type);
Assert.Equal("XXXXXX", control.Player);
Assert.Equal("XXXXXX", control.Buttons);
Assert.Equal("XXXXXX", control.ReqButtons);
@@ -719,7 +719,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(condition);
Assert.Equal("XXXXXX", condition.Tag);
Assert.Equal("XXXXXX", condition.Mask);
- Assert.Equal("XXXXXX", condition.Relation);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("XXXXXX", condition.Value);
}
@@ -828,13 +828,13 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -847,9 +847,9 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Feature? feature)
{
Assert.NotNull(feature);
- Assert.Equal("XXXXXX", feature.Type);
- Assert.Equal("XXXXXX", feature.Status);
- Assert.Equal("XXXXXX", feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
}
///
@@ -858,7 +858,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Device? device)
{
Assert.NotNull(device);
- Assert.Equal("XXXXXX", device.Type);
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type);
Assert.Equal("XXXXXX", device.Tag);
Assert.Equal("XXXXXX", device.FixedImage);
Assert.Equal("XXXXXX", device.Mandatory);
@@ -921,7 +921,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs
index 1b4d77dd..4b798855 100644
--- a/SabreTools.Serialization.Readers.Test/MessTests.cs
+++ b/SabreTools.Serialization.Readers.Test/MessTests.cs
@@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test
Merge = "XXXXXX",
Region = "XXXXXX",
Offset = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
Dispose = true,
SoundOnly = true,
@@ -158,7 +158,7 @@ namespace SabreTools.Serialization.Readers.Test
Region = "XXXXXX",
Index = "XXXXXX",
Writable = true,
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
};
@@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Name = "XXXXXX",
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ChipType.CPU,
SoundOnly = true,
Clock = "XXXXXX",
};
@@ -184,7 +184,7 @@ namespace SabreTools.Serialization.Readers.Test
var display = new Data.Models.Listxml.Display
{
Tag = "XXXXXX",
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DisplayType.Vector,
Rotate = "XXXXXX",
FlipX = true,
Width = "XXXXXX",
@@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test
var video = new Data.Models.Listxml.Video
{
- Screen = "XXXXXX",
+ Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
@@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test
var control = new Data.Models.Listxml.Control
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.ControlType.Lightgun,
Player = "XXXXXX",
Buttons = "XXXXXX",
ReqButtons = "XXXXXX",
@@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Mask = "XXXXXX",
- Relation = "XXXXXX",
+ Relation = Data.Models.Metadata.Relation.Equal,
Value = "XXXXXX",
};
@@ -320,13 +320,13 @@ namespace SabreTools.Serialization.Readers.Test
var driver = new Data.Models.Listxml.Driver
{
- Status = "XXXXXX",
- Color = "XXXXXX",
- Sound = "XXXXXX",
+ Status = Data.Models.Metadata.SupportStatus.Good,
+ Color = Data.Models.Metadata.SupportStatus.Good,
+ Sound = Data.Models.Metadata.SupportStatus.Good,
PaletteSize = "XXXXXX",
- Emulation = "XXXXXX",
- Cocktail = "XXXXXX",
- SaveState = "XXXXXX",
+ Emulation = Data.Models.Metadata.SupportStatus.Good,
+ Cocktail = Data.Models.Metadata.SupportStatus.Good,
+ SaveState = Data.Models.Metadata.Supported.Yes,
RequiresArtwork = true,
Unofficial = true,
NoSoundHardware = true,
@@ -335,9 +335,9 @@ namespace SabreTools.Serialization.Readers.Test
var feature = new Data.Models.Listxml.Feature
{
- Type = "XXXXXX",
- Status = "XXXXXX",
- Overall = "XXXXXX",
+ Type = Data.Models.Metadata.FeatureType.Protection,
+ Status = Data.Models.Metadata.FeatureStatus.Imperfect,
+ Overall = Data.Models.Metadata.FeatureStatus.Imperfect,
};
var instance = new Data.Models.Listxml.Instance
@@ -353,7 +353,7 @@ namespace SabreTools.Serialization.Readers.Test
var device = new Data.Models.Listxml.Device
{
- Type = "XXXXXX",
+ Type = Data.Models.Metadata.DeviceType.PunchTape,
Tag = "XXXXXX",
FixedImage = "XXXXXX",
Mandatory = "XXXXXX",
@@ -379,7 +379,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Tag = "XXXXXX",
Name = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.SoftwareListStatus.Original,
Filter = "XXXXXX",
};
@@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", rom.Merge);
Assert.Equal("XXXXXX", rom.Region);
Assert.Equal("XXXXXX", rom.Offset);
- Assert.Equal("XXXXXX", rom.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
Assert.Equal(true, rom.Optional);
Assert.Equal(true, rom.Dispose);
Assert.Equal(true, rom.SoundOnly);
@@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", disk.Region);
Assert.Equal("XXXXXX", disk.Index);
Assert.Equal(true, disk.Writable);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
}
@@ -602,7 +602,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(chip);
Assert.Equal("XXXXXX", chip.Name);
Assert.Equal("XXXXXX", chip.Tag);
- Assert.Equal("XXXXXX", chip.Type);
+ Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
Assert.Equal(true, chip.SoundOnly);
Assert.Equal("XXXXXX", chip.Clock);
}
@@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(display);
Assert.Equal("XXXXXX", display.Tag);
- Assert.Equal("XXXXXX", display.Type);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type);
Assert.Equal("XXXXXX", display.Rotate);
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
@@ -635,7 +635,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Video? video)
{
Assert.NotNull(video);
- Assert.Equal("XXXXXX", video.Screen);
+ Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
@@ -677,7 +677,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Control? control)
{
Assert.NotNull(control);
- Assert.Equal("XXXXXX", control.Type);
+ Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type);
Assert.Equal("XXXXXX", control.Player);
Assert.Equal("XXXXXX", control.Buttons);
Assert.Equal("XXXXXX", control.ReqButtons);
@@ -719,7 +719,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(condition);
Assert.Equal("XXXXXX", condition.Tag);
Assert.Equal("XXXXXX", condition.Mask);
- Assert.Equal("XXXXXX", condition.Relation);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
Assert.Equal("XXXXXX", condition.Value);
}
@@ -828,13 +828,13 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Driver? driver)
{
Assert.NotNull(driver);
- Assert.Equal("XXXXXX", driver.Status);
- Assert.Equal("XXXXXX", driver.Color);
- Assert.Equal("XXXXXX", driver.Sound);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
Assert.Equal("XXXXXX", driver.PaletteSize);
- Assert.Equal("XXXXXX", driver.Emulation);
- Assert.Equal("XXXXXX", driver.Cocktail);
- Assert.Equal("XXXXXX", driver.SaveState);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
+ Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(true, driver.RequiresArtwork);
Assert.Equal(true, driver.Unofficial);
Assert.Equal(true, driver.NoSoundHardware);
@@ -847,9 +847,9 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Feature? feature)
{
Assert.NotNull(feature);
- Assert.Equal("XXXXXX", feature.Type);
- Assert.Equal("XXXXXX", feature.Status);
- Assert.Equal("XXXXXX", feature.Overall);
+ Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status);
+ Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall);
}
///
@@ -858,7 +858,7 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.Listxml.Device? device)
{
Assert.NotNull(device);
- Assert.Equal("XXXXXX", device.Type);
+ Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type);
Assert.Equal("XXXXXX", device.Tag);
Assert.Equal("XXXXXX", device.FixedImage);
Assert.Equal("XXXXXX", device.Mandatory);
@@ -921,7 +921,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(softwarelist);
Assert.Equal("XXXXXX", softwarelist.Tag);
Assert.Equal("XXXXXX", softwarelist.Name);
- Assert.Equal("XXXXXX", softwarelist.Status);
+ Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status);
Assert.Equal("XXXXXX", softwarelist.Filter);
}
diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs
index 1d7d5c4f..0c4711bd 100644
--- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs
+++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs
@@ -144,7 +144,7 @@ namespace SabreTools.Serialization.Readers.Test
DiskName = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
};
var media = new Data.Models.SeparatedValue.Row
@@ -179,7 +179,7 @@ namespace SabreTools.Serialization.Readers.Test
SHA384 = "XXXXXX",
SHA512 = "XXXXXX",
SpamSum = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
};
return new Data.Models.SeparatedValue.MetadataFile
@@ -233,7 +233,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Null(row.SpamSum);
}
- Assert.Equal("XXXXXX", row.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status);
}
///
@@ -268,7 +268,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Null(row.SpamSum);
}
- Assert.NotNull(row.Status); Assert.Empty(row.Status);
+ Assert.Null(row.Status);
}
///
@@ -304,7 +304,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Null(row.SpamSum);
}
- Assert.Equal("XXXXXX", row.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status);
}
}
}
diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs
index d90e1ded..f3ccbab4 100644
--- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs
+++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs
@@ -136,8 +136,8 @@ namespace SabreTools.Serialization.Readers.Test
SHA1 = "XXXXXX",
Offset = "XXXXXX",
Value = "XXXXXX",
- Status = "XXXXXX",
- LoadFlag = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
+ LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte,
};
var dataarea = new Data.Models.SoftwareList.DataArea
@@ -145,7 +145,7 @@ namespace SabreTools.Serialization.Readers.Test
Name = "XXXXXX",
Size = "XXXXXX",
Width = "XXXXXX",
- Endianness = "XXXXXX",
+ Endianness = Data.Models.Metadata.Endianness.Big,
Rom = [rom],
};
@@ -154,7 +154,7 @@ namespace SabreTools.Serialization.Readers.Test
Name = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
- Status = "XXXXXX",
+ Status = Data.Models.Metadata.ItemStatus.Good,
Writeable = true,
};
@@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Readers.Test
{
Name = "XXXXXX",
CloneOf = "XXXXXX",
- Supported = "XXXXXX",
+ Supported = Data.Models.Metadata.Supported.Yes,
Description = "XXXXXX",
Year = "XXXXXX",
Publisher = "XXXXXX",
@@ -220,7 +220,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(software);
Assert.Equal("XXXXXX", software.Name);
Assert.Equal("XXXXXX", software.CloneOf);
- Assert.Equal("XXXXXX", software.Supported);
+ Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported);
Assert.Equal("XXXXXX", software.Description);
Assert.Equal("XXXXXX", software.Year);
Assert.Equal("XXXXXX", software.Publisher);
@@ -304,7 +304,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", dataarea.Name);
Assert.Equal("XXXXXX", dataarea.Size);
Assert.Equal("XXXXXX", dataarea.Width);
- Assert.Equal("XXXXXX", dataarea.Endianness);
+ Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness);
Assert.NotNull(dataarea.Rom);
var rom = Assert.Single(dataarea.Rom);
@@ -324,8 +324,8 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", rom.SHA1);
Assert.Equal("XXXXXX", rom.Offset);
Assert.Equal("XXXXXX", rom.Value);
- Assert.Equal("XXXXXX", rom.Status);
- Assert.Equal("XXXXXX", rom.LoadFlag);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status);
+ Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag);
}
///
@@ -350,7 +350,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", disk.Name);
Assert.Equal("XXXXXX", disk.MD5);
Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Status);
+ Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Writeable);
}
diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs
index 75e973e1..0ce08e58 100644
--- a/SabreTools.Serialization.Readers/ClrMamePro.cs
+++ b/SabreTools.Serialization.Readers/ClrMamePro.cs
@@ -245,13 +245,15 @@ namespace SabreTools.Serialization.Readers
dat.ClrMamePro.Type = reader.Standalone?.Value;
break;
case "forcemerging":
- dat.ClrMamePro.ForceMerging = reader.Standalone?.Value;
+ dat.ClrMamePro.ForceMerging = reader.Standalone?.Value?.AsMergingFlag()
+ ?? Data.Models.Metadata.MergingFlag.None;
break;
case "forcezipping":
dat.ClrMamePro.ForceZipping = reader.Standalone?.Value?.AsYesNo();
break;
case "forcepacking":
- dat.ClrMamePro.ForcePacking = reader.Standalone?.Value;
+ dat.ClrMamePro.ForcePacking = reader.Standalone?.Value?.AsPackingFlag()
+ ?? Data.Models.Metadata.PackingFlag.None;
break;
default:
// TODO: Log invalid values
@@ -578,7 +580,7 @@ namespace SabreTools.Serialization.Readers
rom.Merge = kvp.Value;
break;
case "status":
- rom.Status = kvp.Value;
+ rom.Status = kvp.Value.AsItemStatus();
break;
case "region":
rom.Region = kvp.Value;
@@ -641,7 +643,7 @@ namespace SabreTools.Serialization.Readers
disk.Merge = kvp.Value;
break;
case "status":
- disk.Status = kvp.Value;
+ disk.Status = kvp.Value.AsItemStatus();
break;
case "flags":
disk.Flags = kvp.Value;
@@ -764,7 +766,7 @@ namespace SabreTools.Serialization.Readers
switch (kvp.Key?.ToLowerInvariant())
{
case "type":
- chip.Type = kvp.Value;
+ chip.Type = kvp.Value.AsChipType();
break;
case "name":
chip.Name = kvp.Value;
@@ -800,7 +802,7 @@ namespace SabreTools.Serialization.Readers
switch (kvp.Key?.ToLowerInvariant())
{
case "screen":
- video.Screen = kvp.Value;
+ video.Screen = kvp.Value.AsDisplayType();
break;
case "orientation":
video.Orientation = kvp.Value;
@@ -949,19 +951,19 @@ namespace SabreTools.Serialization.Readers
switch (kvp.Key?.ToLowerInvariant())
{
case "status":
- driver.Status = kvp.Value;
+ driver.Status = kvp.Value.AsSupportStatus();
break;
case "color":
- driver.Color = kvp.Value;
+ driver.Color = kvp.Value.AsSupportStatus();
break;
case "sound":
- driver.Sound = kvp.Value;
+ driver.Sound = kvp.Value.AsSupportStatus();
break;
case "palettesize":
driver.PaletteSize = kvp.Value;
break;
case "blit":
- driver.Blit = kvp.Value;
+ driver.Blit = kvp.Value.AsBlit();
break;
default:
// TODO: Log invalid values
diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs
index 11167434..2b868c56 100644
--- a/SabreTools.Serialization.Readers/Listxml.cs
+++ b/SabreTools.Serialization.Readers/Listxml.cs
@@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers
obj.Name = reader.GetAttribute("name");
obj.Tag = reader.GetAttribute("tag");
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsChipType();
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
obj.Clock = reader.GetAttribute("clock");
@@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Mask = reader.GetAttribute("mask");
- obj.Relation = reader.GetAttribute("relation");
+ obj.Relation = reader.GetAttribute("relation").AsRelation();
obj.Value = reader.GetAttribute("value");
return obj;
@@ -340,7 +340,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Control();
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsControlType();
obj.Player = reader.GetAttribute("player");
obj.Buttons = reader.GetAttribute("buttons");
obj.ReqButtons = reader.GetAttribute("reqbuttons");
@@ -365,7 +365,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Device();
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsDeviceType();
obj.Tag = reader.GetAttribute("tag");
obj.FixedImage = reader.GetAttribute("fixed_image");
obj.Mandatory = reader.GetAttribute("mandatory");
@@ -558,7 +558,7 @@ namespace SabreTools.Serialization.Readers
obj.Region = reader.GetAttribute("region");
obj.Index = reader.GetAttribute("index");
obj.Writable = reader.GetAttribute("writable").AsYesNo();
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
return obj;
@@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers
var obj = new Display();
obj.Tag = reader.GetAttribute("tag");
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsDisplayType();
obj.Rotate = reader.GetAttribute("rotate");
obj.FlipX = reader.GetAttribute("flipx").AsYesNo();
obj.Width = reader.GetAttribute("width");
@@ -600,13 +600,13 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Driver();
- obj.Status = reader.GetAttribute("status");
- obj.Color = reader.GetAttribute("color");
- obj.Sound = reader.GetAttribute("sound");
+ obj.Status = reader.GetAttribute("status").AsSupportStatus();
+ obj.Color = reader.GetAttribute("color").AsSupportStatus();
+ obj.Sound = reader.GetAttribute("sound").AsSupportStatus();
obj.PaletteSize = reader.GetAttribute("palettesize");
- obj.Emulation = reader.GetAttribute("emulation");
- obj.Cocktail = reader.GetAttribute("cocktail");
- obj.SaveState = reader.GetAttribute("savestate");
+ obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus();
+ obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus();
+ obj.SaveState = reader.GetAttribute("savestate").AsSupported();
obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo();
obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo();
obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo();
@@ -638,9 +638,9 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Feature();
- obj.Type = reader.GetAttribute("type");
- obj.Status = reader.GetAttribute("status");
- obj.Overall = reader.GetAttribute("overall");
+ obj.Type = reader.GetAttribute("type").AsFeatureType();
+ obj.Status = reader.GetAttribute("status").AsFeatureStatus();
+ obj.Overall = reader.GetAttribute("overall").AsFeatureStatus();
return obj;
}
@@ -1052,7 +1052,7 @@ namespace SabreTools.Serialization.Readers
obj.Merge = reader.GetAttribute("merge");
obj.Region = reader.GetAttribute("region");
obj.Offset = reader.GetAttribute("offset");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
obj.Dispose = reader.GetAttribute("dispose").AsYesNo();
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
@@ -1145,7 +1145,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Name = reader.GetAttribute("name");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsSoftwareListStatus();
obj.Filter = reader.GetAttribute("filter");
return obj;
@@ -1174,7 +1174,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Video();
- obj.Screen = reader.GetAttribute("screen");
+ obj.Screen = reader.GetAttribute("screen").AsDisplayType();
obj.Orientation = reader.GetAttribute("orientation");
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs
index 07ac5fae..37c05445 100644
--- a/SabreTools.Serialization.Readers/Logiqx.cs
+++ b/SabreTools.Serialization.Readers/Logiqx.cs
@@ -136,9 +136,9 @@ namespace SabreTools.Serialization.Readers
var obj = new Data.Models.Logiqx.ClrMamePro();
obj.Header = reader.GetAttribute("header");
- obj.ForceMerging = reader.GetAttribute("forcemerging");
- obj.ForceNodump = reader.GetAttribute("forcenodump");
- obj.ForcePacking = reader.GetAttribute("forcepacking");
+ obj.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag();
+ obj.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag();
+ obj.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag();
return obj;
}
@@ -278,9 +278,9 @@ namespace SabreTools.Serialization.Readers
var obj = new Data.Models.Logiqx.RomCenter();
obj.Plugin = reader.GetAttribute("plugin");
- obj.RomMode = reader.GetAttribute("rommode");
- obj.BiosMode = reader.GetAttribute("biosmode");
- obj.SampleMode = reader.GetAttribute("samplemode");
+ obj.RomMode = reader.GetAttribute("rommode").AsMergingFlag();
+ obj.BiosMode = reader.GetAttribute("biosmode").AsMergingFlag();
+ obj.SampleMode = reader.GetAttribute("samplemode").AsMergingFlag();
obj.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo();
obj.LockBiosMode = reader.GetAttribute("lockbiosmode").AsYesNo();
obj.LockSampleMode = reader.GetAttribute("locksamplemode").AsYesNo();
@@ -403,7 +403,7 @@ namespace SabreTools.Serialization.Readers
obj.MD5 = reader.GetAttribute("md5");
obj.SHA1 = reader.GetAttribute("sha1");
obj.Merge = reader.GetAttribute("merge");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Region = reader.GetAttribute("region");
return obj;
@@ -418,10 +418,10 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Driver();
- obj.Status = reader.GetAttribute("status");
- obj.Emulation = reader.GetAttribute("emulation");
- obj.Cocktail = reader.GetAttribute("cocktail");
- obj.SaveState = reader.GetAttribute("savestate");
+ obj.Status = reader.GetAttribute("status").AsSupportStatus();
+ obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus();
+ obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus();
+ obj.SaveState = reader.GetAttribute("savestate").AsSupported();
obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo();
obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo();
obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo();
@@ -706,7 +706,7 @@ namespace SabreTools.Serialization.Readers
obj.xxHash364 = reader.GetAttribute("xxh3_64");
obj.xxHash3128 = reader.GetAttribute("xxh3_128");
obj.Merge = reader.GetAttribute("merge");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Serial = reader.GetAttribute("serial");
obj.Header = reader.GetAttribute("header");
obj.Date = reader.GetAttribute("date");
@@ -741,7 +741,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Name = reader.GetAttribute("name");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsSoftwareListStatus();
obj.Filter = reader.GetAttribute("filter");
return obj;
diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs
index d578edcd..efc59aed 100644
--- a/SabreTools.Serialization.Readers/M1.cs
+++ b/SabreTools.Serialization.Readers/M1.cs
@@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers
obj.Name = reader.GetAttribute("name");
obj.Tag = reader.GetAttribute("tag");
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsChipType();
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
obj.Clock = reader.GetAttribute("clock");
@@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Mask = reader.GetAttribute("mask");
- obj.Relation = reader.GetAttribute("relation");
+ obj.Relation = reader.GetAttribute("relation").AsRelation();
obj.Value = reader.GetAttribute("value");
return obj;
@@ -338,7 +338,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Control();
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsControlType();
obj.Player = reader.GetAttribute("player");
obj.Buttons = reader.GetAttribute("buttons");
obj.ReqButtons = reader.GetAttribute("reqbuttons");
@@ -363,7 +363,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Device();
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsDeviceType();
obj.Tag = reader.GetAttribute("tag");
obj.FixedImage = reader.GetAttribute("fixed_image");
obj.Mandatory = reader.GetAttribute("mandatory");
@@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers
obj.Region = reader.GetAttribute("region");
obj.Index = reader.GetAttribute("index");
obj.Writable = reader.GetAttribute("writable").AsYesNo();
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
return obj;
@@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers
var obj = new Display();
obj.Tag = reader.GetAttribute("tag");
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsDisplayType();
obj.Rotate = reader.GetAttribute("rotate");
obj.FlipX = reader.GetAttribute("flipx").AsYesNo();
obj.Width = reader.GetAttribute("width");
@@ -598,13 +598,13 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Driver();
- obj.Status = reader.GetAttribute("status");
- obj.Color = reader.GetAttribute("color");
- obj.Sound = reader.GetAttribute("sound");
+ obj.Status = reader.GetAttribute("status").AsSupportStatus();
+ obj.Color = reader.GetAttribute("color").AsSupportStatus();
+ obj.Sound = reader.GetAttribute("sound").AsSupportStatus();
obj.PaletteSize = reader.GetAttribute("palettesize");
- obj.Emulation = reader.GetAttribute("emulation");
- obj.Cocktail = reader.GetAttribute("cocktail");
- obj.SaveState = reader.GetAttribute("savestate");
+ obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus();
+ obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus();
+ obj.SaveState = reader.GetAttribute("savestate").AsSupported();
obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo();
obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo();
obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo();
@@ -636,9 +636,9 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Feature();
- obj.Type = reader.GetAttribute("type");
- obj.Status = reader.GetAttribute("status");
- obj.Overall = reader.GetAttribute("overall");
+ obj.Type = reader.GetAttribute("type").AsFeatureType();
+ obj.Status = reader.GetAttribute("status").AsFeatureStatus();
+ obj.Overall = reader.GetAttribute("overall").AsFeatureStatus();
return obj;
}
@@ -1050,7 +1050,7 @@ namespace SabreTools.Serialization.Readers
obj.Merge = reader.GetAttribute("merge");
obj.Region = reader.GetAttribute("region");
obj.Offset = reader.GetAttribute("offset");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
obj.Dispose = reader.GetAttribute("dispose").AsYesNo();
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
@@ -1143,7 +1143,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Name = reader.GetAttribute("name");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsSoftwareListStatus();
obj.Filter = reader.GetAttribute("filter");
return obj;
@@ -1172,7 +1172,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Video();
- obj.Screen = reader.GetAttribute("screen");
+ obj.Screen = reader.GetAttribute("screen").AsDisplayType();
obj.Orientation = reader.GetAttribute("orientation");
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs
index 3549b4b3..bf568a0e 100644
--- a/SabreTools.Serialization.Readers/Mess.cs
+++ b/SabreTools.Serialization.Readers/Mess.cs
@@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers
obj.Name = reader.GetAttribute("name");
obj.Tag = reader.GetAttribute("tag");
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsChipType();
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
obj.Clock = reader.GetAttribute("clock");
@@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Mask = reader.GetAttribute("mask");
- obj.Relation = reader.GetAttribute("relation");
+ obj.Relation = reader.GetAttribute("relation").AsRelation();
obj.Value = reader.GetAttribute("value");
return obj;
@@ -338,7 +338,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Control();
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsControlType();
obj.Player = reader.GetAttribute("player");
obj.Buttons = reader.GetAttribute("buttons");
obj.ReqButtons = reader.GetAttribute("reqbuttons");
@@ -363,7 +363,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Device();
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsDeviceType();
obj.Tag = reader.GetAttribute("tag");
obj.FixedImage = reader.GetAttribute("fixed_image");
obj.Mandatory = reader.GetAttribute("mandatory");
@@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers
obj.Region = reader.GetAttribute("region");
obj.Index = reader.GetAttribute("index");
obj.Writable = reader.GetAttribute("writable").AsYesNo();
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
return obj;
@@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers
var obj = new Display();
obj.Tag = reader.GetAttribute("tag");
- obj.Type = reader.GetAttribute("type");
+ obj.Type = reader.GetAttribute("type").AsDisplayType();
obj.Rotate = reader.GetAttribute("rotate");
obj.FlipX = reader.GetAttribute("flipx").AsYesNo();
obj.Width = reader.GetAttribute("width");
@@ -598,13 +598,13 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Driver();
- obj.Status = reader.GetAttribute("status");
- obj.Color = reader.GetAttribute("color");
- obj.Sound = reader.GetAttribute("sound");
+ obj.Status = reader.GetAttribute("status").AsSupportStatus();
+ obj.Color = reader.GetAttribute("color").AsSupportStatus();
+ obj.Sound = reader.GetAttribute("sound").AsSupportStatus();
obj.PaletteSize = reader.GetAttribute("palettesize");
- obj.Emulation = reader.GetAttribute("emulation");
- obj.Cocktail = reader.GetAttribute("cocktail");
- obj.SaveState = reader.GetAttribute("savestate");
+ obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus();
+ obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus();
+ obj.SaveState = reader.GetAttribute("savestate").AsSupported();
obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo();
obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo();
obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo();
@@ -636,9 +636,9 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Feature();
- obj.Type = reader.GetAttribute("type");
- obj.Status = reader.GetAttribute("status");
- obj.Overall = reader.GetAttribute("overall");
+ obj.Type = reader.GetAttribute("type").AsFeatureType();
+ obj.Status = reader.GetAttribute("status").AsFeatureStatus();
+ obj.Overall = reader.GetAttribute("overall").AsFeatureStatus();
return obj;
}
@@ -1050,7 +1050,7 @@ namespace SabreTools.Serialization.Readers
obj.Merge = reader.GetAttribute("merge");
obj.Region = reader.GetAttribute("region");
obj.Offset = reader.GetAttribute("offset");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
obj.Dispose = reader.GetAttribute("dispose").AsYesNo();
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
@@ -1143,7 +1143,7 @@ namespace SabreTools.Serialization.Readers
obj.Tag = reader.GetAttribute("tag");
obj.Name = reader.GetAttribute("name");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsSoftwareListStatus();
obj.Filter = reader.GetAttribute("filter");
return obj;
@@ -1172,7 +1172,7 @@ namespace SabreTools.Serialization.Readers
{
var obj = new Video();
- obj.Screen = reader.GetAttribute("screen");
+ obj.Screen = reader.GetAttribute("screen").AsDisplayType();
obj.Orientation = reader.GetAttribute("orientation");
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
diff --git a/SabreTools.Serialization.Readers/SeparatedValue.cs b/SabreTools.Serialization.Readers/SeparatedValue.cs
index 7f97de47..a4b27ce8 100644
--- a/SabreTools.Serialization.Readers/SeparatedValue.cs
+++ b/SabreTools.Serialization.Readers/SeparatedValue.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.IO;
using System.Text;
+using SabreTools.Data.Extensions;
using SabreTools.Data.Models.SeparatedValue;
using SabreTools.Text.SeparatedValue;
@@ -126,7 +127,7 @@ namespace SabreTools.Serialization.Readers
MD5 = reader.Line[10],
SHA1 = reader.Line[11],
SHA256 = reader.Line[12],
- Status = reader.Line[13],
+ Status = reader.Line[13].AsItemStatus(),
};
}
else
@@ -149,7 +150,7 @@ namespace SabreTools.Serialization.Readers
SHA384 = reader.Line[13],
SHA512 = reader.Line[14],
SpamSum = reader.Line[15],
- Status = reader.Line[16],
+ Status = reader.Line[16].AsItemStatus(),
};
}
diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs
index 5a2fe176..cf3db223 100644
--- a/SabreTools.Serialization.Readers/SoftwareList.cs
+++ b/SabreTools.Serialization.Readers/SoftwareList.cs
@@ -127,7 +127,7 @@ namespace SabreTools.Serialization.Readers
obj.Name = reader.GetAttribute("name");
obj.Size = reader.GetAttribute("size");
obj.Width = reader.GetAttribute("width");
- obj.Endianness = reader.GetAttribute("endianness");
+ obj.Endianness = reader.GetAttribute("endianness").AsEndianness();
List roms = [];
@@ -242,7 +242,7 @@ namespace SabreTools.Serialization.Readers
obj.Name = reader.GetAttribute("name");
obj.MD5 = reader.GetAttribute("md5");
obj.SHA1 = reader.GetAttribute("sha1");
- obj.Status = reader.GetAttribute("status");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Writeable = reader.GetAttribute("writable").AsYesNo();
return obj;
@@ -419,8 +419,8 @@ namespace SabreTools.Serialization.Readers
obj.SHA1 = reader.GetAttribute("sha1");
obj.Offset = reader.GetAttribute("offset");
obj.Value = reader.GetAttribute("value");
- obj.Status = reader.GetAttribute("status");
- obj.LoadFlag = reader.GetAttribute("loadflag");
+ obj.Status = reader.GetAttribute("status").AsItemStatus();
+ obj.LoadFlag = reader.GetAttribute("loadflag").AsLoadFlag();
return obj;
}
@@ -451,7 +451,7 @@ namespace SabreTools.Serialization.Readers
obj.Name = reader.GetAttribute("name");
obj.CloneOf = reader.GetAttribute("cloneof");
- obj.Supported = reader.GetAttribute("supported");
+ obj.Supported = reader.GetAttribute("supported")?.AsSupported();
List infos = [];
List sharedFeats = [];
diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs
index 8f3341d3..f56bddbc 100644
--- a/SabreTools.Serialization.Writers/ClrMamePro.cs
+++ b/SabreTools.Serialization.Writers/ClrMamePro.cs
@@ -111,9 +111,11 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalStandalone("comment", header.Comment);
writer.WriteOptionalStandalone("header", header.Header);
writer.WriteOptionalStandalone("type", header.Type);
- writer.WriteOptionalStandalone("forcemerging", header.ForceMerging);
+ if (header.ForceMerging != Data.Models.Metadata.MergingFlag.None)
+ writer.WriteOptionalStandalone("forcemerging", header.ForceMerging.AsStringValue());
writer.WriteOptionalStandalone("forcezipping", header.ForceZipping.FromYesNo());
- writer.WriteOptionalStandalone("forcepacking", header.ForcePacking);
+ if (header.ForcePacking != Data.Models.Metadata.PackingFlag.None)
+ writer.WriteOptionalStandalone("forcepacking", header.ForcePacking.AsStringValue());
writer.WriteEndElement(); // clrmamepro
writer.Flush();
@@ -276,7 +278,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("xxh3_64", rom.xxHash364);
writer.WriteOptionalAttributeString("xxh3_128", rom.xxHash3128);
writer.WriteOptionalAttributeString("merge", rom.Merge);
- writer.WriteOptionalAttributeString("status", rom.Status);
+ writer.WriteOptionalAttributeString("status", rom.Status?.AsStringValue());
writer.WriteOptionalAttributeString("region", rom.Region);
writer.WriteOptionalAttributeString("flags", rom.Flags);
writer.WriteOptionalAttributeString("offs", rom.Offs);
@@ -307,7 +309,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("md5", disk.MD5);
writer.WriteOptionalAttributeString("sha1", disk.SHA1);
writer.WriteOptionalAttributeString("merge", disk.Merge);
- writer.WriteOptionalAttributeString("status", disk.Status);
+ writer.WriteOptionalAttributeString("status", disk.Status?.AsStringValue());
writer.WriteOptionalAttributeString("flags", disk.Flags);
writer.WriteEndElement(); // disk
}
@@ -388,7 +390,7 @@ namespace SabreTools.Serialization.Writers
foreach (var chip in chips)
{
writer.WriteStartElement("chip");
- writer.WriteRequiredAttributeString("type", chip.Type, throwOnError: true);
+ writer.WriteRequiredAttributeString("type", chip.Type?.AsStringValue(), throwOnError: true);
writer.WriteRequiredAttributeString("name", chip.Name, throwOnError: true);
writer.WriteOptionalAttributeString("flags", chip.Flags);
writer.WriteOptionalAttributeString("clock", chip.Clock);
@@ -410,7 +412,7 @@ namespace SabreTools.Serialization.Writers
foreach (var video in videos)
{
writer.WriteStartElement("video");
- writer.WriteRequiredAttributeString("screen", video.Screen, throwOnError: true);
+ writer.WriteRequiredAttributeString("screen", video.Screen?.AsStringValue(), throwOnError: true);
writer.WriteRequiredAttributeString("orientation", video.Orientation, throwOnError: true);
writer.WriteOptionalAttributeString("x", video.X);
writer.WriteOptionalAttributeString("y", video.Y);
@@ -495,11 +497,11 @@ namespace SabreTools.Serialization.Writers
return;
writer.WriteStartElement("driver");
- writer.WriteRequiredAttributeString("status", driver.Status, throwOnError: true);
- writer.WriteOptionalAttributeString("color", driver.Color); // TODO: Probably actually required
- writer.WriteOptionalAttributeString("sound", driver.Sound); // TODO: Probably actually required
+ writer.WriteRequiredAttributeString("status", driver.Status?.AsStringValue(), throwOnError: true);
+ writer.WriteOptionalAttributeString("color", driver.Color?.AsStringValue()); // TODO: Probably actually required
+ writer.WriteOptionalAttributeString("sound", driver.Sound?.AsStringValue()); // TODO: Probably actually required
writer.WriteOptionalAttributeString("palettesize", driver.PaletteSize);
- writer.WriteOptionalAttributeString("blit", driver.Blit);
+ writer.WriteOptionalAttributeString("blit", driver.Blit?.AsStringValue());
writer.WriteEndElement(); // driver
}
diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs
index 9d7792f8..01c8313e 100644
--- a/SabreTools.Serialization.Writers/Listxml.cs
+++ b/SabreTools.Serialization.Writers/Listxml.cs
@@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("name", obj.Name);
writer.WriteOptionalAttributeString("tag", obj.Tag);
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
writer.WriteOptionalAttributeString("clock", obj.Clock);
@@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("mask", obj.Mask);
- writer.WriteRequiredAttributeString("relation", obj.Relation);
+ writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue());
writer.WriteRequiredAttributeString("value", obj.Value);
writer.WriteEndElement();
@@ -228,7 +228,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("control");
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("player", obj.Player);
writer.WriteOptionalAttributeString("buttons", obj.Buttons);
writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons);
@@ -253,7 +253,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("device");
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("tag", obj.Tag);
writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage);
writer.WriteOptionalAttributeString("mandatory", obj.Mandatory);
@@ -373,7 +373,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteOptionalAttributeString("index", obj.Index);
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
writer.WriteEndElement();
@@ -389,7 +389,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteStartElement("display");
writer.WriteOptionalAttributeString("tag", obj.Tag);
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("rotate", obj.Rotate);
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width);
@@ -415,13 +415,13 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("driver");
- writer.WriteRequiredAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("color", obj.Color);
- writer.WriteOptionalAttributeString("sound", obj.Sound);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue());
+ writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue());
writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize);
- writer.WriteRequiredAttributeString("emulation", obj.Emulation);
- writer.WriteRequiredAttributeString("cocktail", obj.Cocktail);
- writer.WriteRequiredAttributeString("savestate", obj.SaveState);
+ writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue());
+ writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue());
+ writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue());
writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo());
writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo());
writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo());
@@ -453,9 +453,9 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("feature");
- writer.WriteRequiredAttributeString("type", obj.Type);
- writer.WriteOptionalAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("overall", obj.Overall);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue());
writer.WriteEndElement();
}
@@ -736,7 +736,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("merge", obj.Merge);
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteOptionalAttributeString("offset", obj.Offset);
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo());
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
@@ -807,7 +807,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("name", obj.Name);
- writer.WriteRequiredAttributeString("status", obj.Status);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("filter", obj.Filter);
writer.WriteEndElement();
@@ -836,7 +836,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("video");
- writer.WriteRequiredAttributeString("screen", obj.Screen);
+ writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue());
writer.WriteRequiredAttributeString("orientation", obj.Orientation);
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs
index 3211c35e..c02d18a5 100644
--- a/SabreTools.Serialization.Writers/Logiqx.cs
+++ b/SabreTools.Serialization.Writers/Logiqx.cs
@@ -77,7 +77,7 @@ namespace SabreTools.Serialization.Writers
return stream;
}
- ///
+ ///
/// Write a Datafile to an XmlTextWriter
///
/// Datafile to write
@@ -126,9 +126,12 @@ namespace SabreTools.Serialization.Writers
writer.WriteStartElement("clrmamepro");
writer.WriteOptionalAttributeString("header", obj.Header);
- writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging);
- writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump);
- writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking);
+ if (obj.ForceMerging != Data.Models.Metadata.MergingFlag.None)
+ writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging.AsStringValue());
+ if (obj.ForceNodump != Data.Models.Metadata.NodumpFlag.None)
+ writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump.AsStringValue());
+ if (obj.ForcePacking != Data.Models.Metadata.PackingFlag.None)
+ writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking.AsStringValue());
writer.WriteEndElement();
}
@@ -175,9 +178,13 @@ namespace SabreTools.Serialization.Writers
writer.WriteStartElement("romcenter");
writer.WriteOptionalAttributeString("plugin", obj.Plugin);
- writer.WriteOptionalAttributeString("rommode", obj.RomMode);
- writer.WriteOptionalAttributeString("biosmode", obj.BiosMode);
- writer.WriteOptionalAttributeString("samplemode", obj.SampleMode);
+
+ if (obj.RomMode != Data.Models.Metadata.MergingFlag.None)
+ writer.WriteOptionalAttributeString("rommode", obj.RomMode.AsStringValue());
+ if (obj.BiosMode != Data.Models.Metadata.MergingFlag.None)
+ writer.WriteOptionalAttributeString("biosmode", obj.BiosMode.AsStringValue());
+ if (obj.SampleMode != Data.Models.Metadata.MergingFlag.None)
+ writer.WriteOptionalAttributeString("samplemode", obj.SampleMode.AsStringValue());
writer.WriteOptionalAttributeString("lockrommode", obj.LockRomMode.FromYesNo());
writer.WriteOptionalAttributeString("lockbiosmode", obj.LockBiosMode.FromYesNo());
writer.WriteOptionalAttributeString("locksamplemode", obj.LockSampleMode.FromYesNo());
@@ -276,7 +283,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("md5", obj.MD5);
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
writer.WriteOptionalAttributeString("merge", obj.Merge);
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteEndElement();
@@ -291,10 +298,10 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("driver");
- writer.WriteRequiredAttributeString("status", obj.Status);
- writer.WriteRequiredAttributeString("emulation", obj.Emulation);
- writer.WriteRequiredAttributeString("cocktail", obj.Cocktail);
- writer.WriteRequiredAttributeString("savestate", obj.SaveState);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue());
+ writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue());
+ writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue());
writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo());
writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo());
writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo());
@@ -499,7 +506,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("xxh3_64", obj.xxHash364);
writer.WriteOptionalAttributeString("xxh3_128", obj.xxHash3128);
writer.WriteOptionalAttributeString("merge", obj.Merge);
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("serial", obj.Serial);
writer.WriteOptionalAttributeString("header", obj.Header);
writer.WriteOptionalAttributeString("date", obj.Date);
@@ -534,7 +541,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("name", obj.Name);
- writer.WriteRequiredAttributeString("status", obj.Status);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("filter", obj.Filter);
writer.WriteEndElement();
diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs
index d427f936..b9fcdb21 100644
--- a/SabreTools.Serialization.Writers/M1.cs
+++ b/SabreTools.Serialization.Writers/M1.cs
@@ -123,7 +123,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("name", obj.Name);
writer.WriteOptionalAttributeString("tag", obj.Tag);
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
writer.WriteOptionalAttributeString("clock", obj.Clock);
@@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("mask", obj.Mask);
- writer.WriteRequiredAttributeString("relation", obj.Relation);
+ writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue());
writer.WriteRequiredAttributeString("value", obj.Value);
writer.WriteEndElement();
@@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("control");
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("player", obj.Player);
writer.WriteOptionalAttributeString("buttons", obj.Buttons);
writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons);
@@ -251,7 +251,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("device");
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("tag", obj.Tag);
writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage);
writer.WriteOptionalAttributeString("mandatory", obj.Mandatory);
@@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteOptionalAttributeString("index", obj.Index);
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
writer.WriteEndElement();
@@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteStartElement("display");
writer.WriteOptionalAttributeString("tag", obj.Tag);
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("rotate", obj.Rotate);
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width);
@@ -413,13 +413,13 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("driver");
- writer.WriteRequiredAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("color", obj.Color);
- writer.WriteOptionalAttributeString("sound", obj.Sound);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue());
+ writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue());
writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize);
- writer.WriteRequiredAttributeString("emulation", obj.Emulation);
- writer.WriteRequiredAttributeString("cocktail", obj.Cocktail);
- writer.WriteRequiredAttributeString("savestate", obj.SaveState);
+ writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue());
+ writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue());
+ writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue());
writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo());
writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo());
writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo());
@@ -451,9 +451,9 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("feature");
- writer.WriteRequiredAttributeString("type", obj.Type);
- writer.WriteOptionalAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("overall", obj.Overall);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue());
writer.WriteEndElement();
}
@@ -734,7 +734,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("merge", obj.Merge);
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteOptionalAttributeString("offset", obj.Offset);
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo());
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
@@ -805,7 +805,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("name", obj.Name);
- writer.WriteRequiredAttributeString("status", obj.Status);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("filter", obj.Filter);
writer.WriteEndElement();
@@ -834,7 +834,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("video");
- writer.WriteRequiredAttributeString("screen", obj.Screen);
+ writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue());
writer.WriteRequiredAttributeString("orientation", obj.Orientation);
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs
index dd4e6955..0a2e83c9 100644
--- a/SabreTools.Serialization.Writers/Mess.cs
+++ b/SabreTools.Serialization.Writers/Mess.cs
@@ -123,7 +123,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("name", obj.Name);
writer.WriteOptionalAttributeString("tag", obj.Tag);
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
writer.WriteOptionalAttributeString("clock", obj.Clock);
@@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("mask", obj.Mask);
- writer.WriteRequiredAttributeString("relation", obj.Relation);
+ writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue());
writer.WriteRequiredAttributeString("value", obj.Value);
writer.WriteEndElement();
@@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("control");
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("player", obj.Player);
writer.WriteOptionalAttributeString("buttons", obj.Buttons);
writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons);
@@ -251,7 +251,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("device");
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("tag", obj.Tag);
writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage);
writer.WriteOptionalAttributeString("mandatory", obj.Mandatory);
@@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteOptionalAttributeString("index", obj.Index);
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
writer.WriteEndElement();
@@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteStartElement("display");
writer.WriteOptionalAttributeString("tag", obj.Tag);
- writer.WriteRequiredAttributeString("type", obj.Type);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
writer.WriteOptionalAttributeString("rotate", obj.Rotate);
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width);
@@ -413,13 +413,13 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("driver");
- writer.WriteRequiredAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("color", obj.Color);
- writer.WriteOptionalAttributeString("sound", obj.Sound);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue());
+ writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue());
writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize);
- writer.WriteRequiredAttributeString("emulation", obj.Emulation);
- writer.WriteRequiredAttributeString("cocktail", obj.Cocktail);
- writer.WriteRequiredAttributeString("savestate", obj.SaveState);
+ writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue());
+ writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue());
+ writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue());
writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo());
writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo());
writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo());
@@ -451,9 +451,9 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("feature");
- writer.WriteRequiredAttributeString("type", obj.Type);
- writer.WriteOptionalAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("overall", obj.Overall);
+ writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue());
writer.WriteEndElement();
}
@@ -734,7 +734,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("merge", obj.Merge);
writer.WriteOptionalAttributeString("region", obj.Region);
writer.WriteOptionalAttributeString("offset", obj.Offset);
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo());
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
@@ -805,7 +805,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("tag", obj.Tag);
writer.WriteRequiredAttributeString("name", obj.Name);
- writer.WriteRequiredAttributeString("status", obj.Status);
+ writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("filter", obj.Filter);
writer.WriteEndElement();
@@ -834,7 +834,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("video");
- writer.WriteRequiredAttributeString("screen", obj.Screen);
+ writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue());
writer.WriteRequiredAttributeString("orientation", obj.Orientation);
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
diff --git a/SabreTools.Serialization.Writers/SeparatedValue.cs b/SabreTools.Serialization.Writers/SeparatedValue.cs
index f4a96fc8..2f7a90b2 100644
--- a/SabreTools.Serialization.Writers/SeparatedValue.cs
+++ b/SabreTools.Serialization.Writers/SeparatedValue.cs
@@ -1,5 +1,6 @@
using System.IO;
using System.Text;
+using SabreTools.Data.Extensions;
using SabreTools.Data.Models.SeparatedValue;
using SabreTools.IO.Extensions;
using SabreTools.Text.SeparatedValue;
@@ -177,7 +178,7 @@ namespace SabreTools.Serialization.Writers
row.SHA384,
row.SHA512,
row.SpamSum,
- row.Status,
+ row.Status?.AsStringValue(),
];
}
else
@@ -197,7 +198,7 @@ namespace SabreTools.Serialization.Writers
row.MD5,
row.SHA1,
row.SHA256,
- row.Status,
+ row.Status?.AsStringValue(),
];
}
diff --git a/SabreTools.Serialization.Writers/SoftwareList.cs b/SabreTools.Serialization.Writers/SoftwareList.cs
index 9cd31522..57ef70c0 100644
--- a/SabreTools.Serialization.Writers/SoftwareList.cs
+++ b/SabreTools.Serialization.Writers/SoftwareList.cs
@@ -106,7 +106,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("name", obj.Name);
writer.WriteRequiredAttributeString("size", obj.Size);
writer.WriteOptionalAttributeString("width", obj.Width);
- writer.WriteOptionalAttributeString("endianness", obj.Endianness);
+ writer.WriteOptionalAttributeString("endianness", obj.Endianness?.AsStringValue());
if (obj.Rom is not null && obj.Rom.Length > 0)
{
@@ -171,7 +171,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("name", obj.Name);
writer.WriteOptionalAttributeString("md5", obj.MD5);
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
- writer.WriteOptionalAttributeString("status", obj.Status);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("writable", obj.Writeable.FromYesNo());
writer.WriteEndElement();
@@ -292,8 +292,8 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
writer.WriteOptionalAttributeString("offset", obj.Offset);
writer.WriteOptionalAttributeString("value", obj.Value);
- writer.WriteOptionalAttributeString("status", obj.Status);
- writer.WriteOptionalAttributeString("loadflag", obj.LoadFlag);
+ writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
+ writer.WriteOptionalAttributeString("loadflag", obj.LoadFlag?.AsStringValue());
writer.WriteEndElement();
}
@@ -324,7 +324,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("name", obj.Name);
writer.WriteOptionalAttributeString("cloneof", obj.CloneOf);
- writer.WriteOptionalAttributeString("supported", obj.Supported);
+ writer.WriteOptionalAttributeString("supported", obj.Supported?.AsStringValue());
writer.WriteRequiredElementString("description", obj.Description);
writer.WriteRequiredElementString("year", obj.Year);