From 08e0aa5b775bf0eda142ced5914d7ed3ee025034 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 00:04:11 -0400 Subject: [PATCH] Convert refresh rates to properties, fix format --- SabreTools.Data.Extensions/MetadataExtensions.cs | 2 ++ SabreTools.Data.Models/ClrMamePro/Video.cs | 2 +- SabreTools.Data.Models/Listxml/Display.cs | 3 +-- SabreTools.Data.Models/Listxml/Video.cs | 2 +- SabreTools.Data.Models/Metadata/Display.cs | 5 ++--- SabreTools.Data.Models/Metadata/Video.cs | 6 +++--- .../DatFileTests.FromMetadata.cs | 8 ++++---- .../DatFileTests.ToMetadata.cs | 4 ++-- .../FormatsTests.cs | 2 +- .../DatFile.ToMetadata.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Listxml.cs | 4 ++-- SabreTools.Metadata.DatItems/Formats/Display.cs | 16 +++++++--------- SabreTools.Metadata.Filter/FilterObject.cs | 6 ++++++ SabreTools.Metadata/ModelBackedItemT.cs | 2 ++ .../ClrMameProTests.cs | 4 ++-- .../ListxmlTests.cs | 8 ++++---- .../M1Tests.cs | 8 ++++---- .../MessTests.cs | 8 ++++---- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 4 ++-- .../Listxml.Serializer.cs | 4 ++-- .../ClrMameProTests.cs | 4 ++-- .../ListxmlTests.cs | 8 ++++---- SabreTools.Serialization.Readers.Test/M1Tests.cs | 8 ++++---- .../MessTests.cs | 8 ++++---- SabreTools.Serialization.Readers/ClrMamePro.cs | 2 +- SabreTools.Serialization.Readers/Listxml.cs | 4 ++-- SabreTools.Serialization.Readers/M1.cs | 4 ++-- SabreTools.Serialization.Readers/Mess.cs | 4 ++-- SabreTools.Serialization.Writers/ClrMamePro.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 4 ++-- SabreTools.Serialization.Writers/M1.cs | 4 ++-- SabreTools.Serialization.Writers/Mess.cs | 4 ++-- 34 files changed, 83 insertions(+), 77 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index cfdcb275..f299e141 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -234,6 +234,7 @@ namespace SabreTools.Data.Extensions { cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; + cloneDisplay.Refresh = selfDisplay.Refresh; cloneDisplay.Tag = selfDisplay.Tag; } else if (self is Driver selfDriver && clone is Driver cloneDriver) @@ -377,6 +378,7 @@ namespace SabreTools.Data.Extensions } else if (self is Video selfVideo && clone is Video cloneVideo) { + cloneVideo.Refresh = selfVideo.Refresh; cloneVideo.Screen = selfVideo.Screen; } diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index 2fd3fe5a..1cfec8b7 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -27,6 +27,6 @@ namespace SabreTools.Data.Models.ClrMamePro public string? AspectY { get; set; } /// freq, Numeric? - public string? Freq { get; set; } + public double? Freq { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 5f873dcd..92994746 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -31,10 +31,9 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("height")] public string? Height { get; set; } - /// Numeric [Required] [XmlAttribute("refresh")] - public string? Refresh { get; set; } + public double? Refresh { get; set; } /// Numeric [XmlAttribute("pixclock")] diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 8db62b97..015a1b90 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -35,6 +35,6 @@ namespace SabreTools.Data.Models.Listxml /// Numeric [XmlAttribute("refresh")] - public string? Refresh { get; set; } + public double? Refresh { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index c9e8d06e..58586060 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -14,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? FlipX { get; set; } + public double? Refresh { get; set; } + public string? Tag { get; set; } #endregion @@ -35,9 +37,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string PixClockKey = "pixclock"; - /// double - public const string RefreshKey = "refresh"; - /// (0|90|180|270) /// TODO: Convert to enum public const string RotateKey = "rotate"; diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 39754186..421eb4c7 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// Originally "freq" + public double? Refresh { get; set; } + /// (raster|vector) public DisplayType? Screen { get; set; } @@ -27,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata /// (vertical|horizontal) public const string OrientationKey = "orientation"; - /// double; Originally "freq" - public const string RefreshKey = "refresh"; - /// long; Originally "x" public const string WidthKey = "width"; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 09812fb1..961c3976 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -582,7 +582,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Display.HeightKey] = 12345L, [Data.Models.Metadata.Display.HTotalKey] = 12345L, [Data.Models.Metadata.Display.PixClockKey] = 12345L, - [Data.Models.Metadata.Display.RefreshKey] = 12345L, + Refresh = 123.45, [Data.Models.Metadata.Display.RotateKey] = 90, Tag = "tag", DisplayType = Data.Models.Metadata.DisplayType.Vector, @@ -1025,7 +1025,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Video.AspectYKey] = 12345L, [Data.Models.Metadata.Video.HeightKey] = 12345L, [Data.Models.Metadata.Video.OrientationKey] = "vertical", - [Data.Models.Metadata.Video.RefreshKey] = 12345L, + Refresh = 123.45, Screen = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Video.WidthKey] = 12345L, }; @@ -1356,7 +1356,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HTotalKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); + Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); @@ -1665,7 +1665,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); 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(123.45, display.Refresh); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index f286010a..8bf51cf1 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -873,7 +873,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HTotalKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); + Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); @@ -1258,7 +1258,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectYKey)); 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(123.45, video.Refresh); 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/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 8ebb40fb..25af40d0 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -880,7 +880,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Display.DisplayType), - Data.Models.Metadata.Display.RefreshKey, + nameof(Data.Models.Metadata.Display.Refresh), ])); } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 59a833ec..97a9d6b4 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -936,7 +936,7 @@ namespace SabreTools.Metadata.DatFiles [Data.Models.Metadata.Video.AspectXKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectXKey).ToString(), [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(), + Refresh = displayItem.Refresh, Screen = displayItem.DisplayType, [Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString() }; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 711ea24c..9f902b1a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -310,8 +310,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Display display: 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); + if (display.Refresh is null) + missingFields.Add(nameof(Data.Models.Metadata.Display.Refresh)); break; case Sound sound: diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index e83ac235..fbdfe243 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -29,6 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Display; + public double? Refresh + { + get => (_internal as Data.Models.Metadata.Display)?.Refresh; + set => (_internal as Data.Models.Metadata.Display)?.Refresh = value; + } + public string? Tag { get => (_internal as Data.Models.Metadata.Display)?.Tag; @@ -64,10 +70,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (pixClock is not null) Write(Data.Models.Metadata.Display.PixClockKey, pixClock.ToString()); - double? refresh = ReadDouble(Data.Models.Metadata.Display.RefreshKey); - if (refresh is not null) - Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString()); - long? rotate = ReadLong(Data.Models.Metadata.Display.RotateKey); if (rotate is not null) Write(Data.Models.Metadata.Display.RotateKey, rotate.ToString()); @@ -102,7 +104,7 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey))); 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))); + Refresh = item.Refresh; Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey))); switch (item.ReadString(Data.Models.Metadata.Video.OrientationKey)) @@ -131,10 +133,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (height is not null) Write(Data.Models.Metadata.Display.HeightKey, height.ToString()); - double? refresh = ReadDouble(Data.Models.Metadata.Video.RefreshKey); - if (refresh is not null) - Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString()); - 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.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 7e6f844d..4119d9fa 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -476,6 +476,9 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; + case Display item when fieldName == "refresh": + checkValue = item.Refresh?.ToString(); + return true; case Display item when fieldName == "type": checkValue = item.DisplayType?.AsStringValue(); return true; @@ -749,6 +752,9 @@ namespace SabreTools.Metadata.Filter checkValue = item.Channels?.ToString(); return true; + case Video item when fieldName == "refresh": + checkValue = item.Refresh?.ToString(); + return true; case Video item when fieldName == "screen": checkValue = item.Screen?.AsStringValue(); return true; diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs index cd7fd26f..fb3ecef3 100644 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ b/SabreTools.Metadata/ModelBackedItemT.cs @@ -40,6 +40,7 @@ namespace SabreTools.Metadata /// /// Field to retrieve /// Value from the field, if possible + /// TODO: Determine if this can be removed public bool? ReadBool(string fieldName) => _internal.ReadBool(fieldName); @@ -48,6 +49,7 @@ namespace SabreTools.Metadata /// /// Field to retrieve /// Value from the field, if possible + /// TODO: Determine if this can be removed public double? ReadDouble(string fieldName) => _internal.ReadDouble(fieldName); diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 5077fd63..67cdb08c 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -170,7 +170,7 @@ namespace SabreTools.Serialization.CrossModel.Test Y = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Freq = "XXXXXX", + Freq = 123.45, }; var sound = new Data.Models.ClrMamePro.Sound @@ -457,7 +457,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Y); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Freq); + Assert.Equal(123.45, video.Freq); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index fbc8d6c6..80b6682e 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -144,7 +144,7 @@ namespace SabreTools.Serialization.CrossModel.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -558,7 +558,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -580,7 +580,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 57eb1005..d4a5ec0d 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -122,7 +122,7 @@ namespace SabreTools.Serialization.CrossModel.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index d1fedb5e..0bc11c0e 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -122,7 +122,7 @@ namespace SabreTools.Serialization.CrossModel.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index a18265e7..27aa5c67 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -346,7 +346,7 @@ namespace SabreTools.Serialization.CrossModel Y = item.ReadString(Data.Models.Metadata.Video.HeightKey), AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey), AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey), - Freq = item.ReadString(Data.Models.Metadata.Video.RefreshKey), + Freq = item.Refresh, }; return video; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index f333c50f..66c50528 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -359,7 +359,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Video.HeightKey] = item.Y, [Data.Models.Metadata.Video.AspectXKey] = item.AspectX, [Data.Models.Metadata.Video.AspectYKey] = item.AspectY, - [Data.Models.Metadata.Video.RefreshKey] = item.Freq, + Refresh = item.Freq, }; return video; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 40e0bc67..bc686163 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -429,7 +429,7 @@ namespace SabreTools.Serialization.CrossModel FlipX = item.FlipX, Width = item.ReadString(Data.Models.Metadata.Display.WidthKey), Height = item.ReadString(Data.Models.Metadata.Display.HeightKey), - Refresh = item.ReadString(Data.Models.Metadata.Display.RefreshKey), + Refresh = item.Refresh, PixClock = item.ReadString(Data.Models.Metadata.Display.PixClockKey), HTotal = item.ReadString(Data.Models.Metadata.Display.HTotalKey), HBEnd = item.ReadString(Data.Models.Metadata.Display.HBEndKey), @@ -664,7 +664,7 @@ namespace SabreTools.Serialization.CrossModel Height = item.ReadString(Data.Models.Metadata.Video.HeightKey), AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey), AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey), - Refresh = item.ReadString(Data.Models.Metadata.Video.RefreshKey), + Refresh = item.Refresh, }; return video; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 2d05c97e..506ad714 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -467,7 +467,7 @@ namespace SabreTools.Serialization.CrossModel FlipX = item.FlipX, [Data.Models.Metadata.Display.WidthKey] = item.Width, [Data.Models.Metadata.Display.HeightKey] = item.Height, - [Data.Models.Metadata.Display.RefreshKey] = item.Refresh, + Refresh = item.Refresh, [Data.Models.Metadata.Display.PixClockKey] = item.PixClock, [Data.Models.Metadata.Display.HTotalKey] = item.HTotal, [Data.Models.Metadata.Display.HBEndKey] = item.HBEnd, @@ -705,7 +705,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Video.HeightKey] = item.Height, [Data.Models.Metadata.Video.AspectXKey] = item.AspectX, [Data.Models.Metadata.Video.AspectYKey] = item.AspectY, - [Data.Models.Metadata.Video.RefreshKey] = item.Refresh, + Refresh = item.Refresh, }; return video; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index d39a222c..3fab116b 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.Readers.Test Y = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Freq = "XXXXXX", + Freq = 123.45, }; var sound = new Data.Models.ClrMamePro.Sound @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Y); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Freq); + Assert.Equal(123.45, video.Freq); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index a540749f..e061a3b8 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Readers.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.Readers.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -625,7 +625,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -647,7 +647,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index b4bc6e9c..05e64fba 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 1d3f4744..c325136e 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 68ebc68b..f2454b1d 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Readers video.AspectY = kvp.Value; break; case "freq": - video.Freq = kvp.Value; + video.Freq = NumberHelper.ConvertToDouble(kvp.Value); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index b2fa98bb..ff1c7632 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -580,7 +580,7 @@ namespace SabreTools.Serialization.Readers obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); obj.PixClock = reader.GetAttribute("pixclock"); obj.HTotal = reader.GetAttribute("htotal"); obj.HBEnd = reader.GetAttribute("hbend"); @@ -1181,7 +1181,7 @@ namespace SabreTools.Serialization.Readers obj.Height = reader.GetAttribute("height"); obj.AspectX = reader.GetAttribute("aspectx"); obj.AspectY = reader.GetAttribute("aspecty"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 308a17b8..fff3aadd 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); obj.PixClock = reader.GetAttribute("pixclock"); obj.HTotal = reader.GetAttribute("htotal"); obj.HBEnd = reader.GetAttribute("hbend"); @@ -1179,7 +1179,7 @@ namespace SabreTools.Serialization.Readers obj.Height = reader.GetAttribute("height"); obj.AspectX = reader.GetAttribute("aspectx"); obj.AspectY = reader.GetAttribute("aspecty"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 5b93bf45..ef0719a1 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); obj.PixClock = reader.GetAttribute("pixclock"); obj.HTotal = reader.GetAttribute("htotal"); obj.HBEnd = reader.GetAttribute("hbend"); @@ -1179,7 +1179,7 @@ namespace SabreTools.Serialization.Readers obj.Height = reader.GetAttribute("height"); obj.AspectX = reader.GetAttribute("aspectx"); obj.AspectY = reader.GetAttribute("aspecty"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; } diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 0a6ee433..1a066d65 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -418,7 +418,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("y", video.Y); writer.WriteOptionalAttributeString("aspectx", video.AspectX); writer.WriteOptionalAttributeString("aspecty", video.AspectY); - writer.WriteOptionalAttributeString("freq", video.Freq); + writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000")); writer.WriteEndElement(); // video } } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index d32b5bb2..cd9e4498 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -395,7 +395,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteOptionalAttributeString("pixclock", obj.PixClock); writer.WriteOptionalAttributeString("htotal", obj.HTotal); writer.WriteOptionalAttributeString("hbend", obj.HBEnd); @@ -843,7 +843,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteOptionalAttributeString("aspectx", obj.AspectX); writer.WriteOptionalAttributeString("aspecty", obj.AspectY); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index fe698b6d..cd05a5a8 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteOptionalAttributeString("pixclock", obj.PixClock); writer.WriteOptionalAttributeString("htotal", obj.HTotal); writer.WriteOptionalAttributeString("hbend", obj.HBEnd); @@ -841,7 +841,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteOptionalAttributeString("aspectx", obj.AspectX); writer.WriteOptionalAttributeString("aspecty", obj.AspectY); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 19f7d305..ff2e2190 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteOptionalAttributeString("pixclock", obj.PixClock); writer.WriteOptionalAttributeString("htotal", obj.HTotal); writer.WriteOptionalAttributeString("hbend", obj.HBEnd); @@ -841,7 +841,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteOptionalAttributeString("aspectx", obj.AspectX); writer.WriteOptionalAttributeString("aspecty", obj.AspectY); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); }