diff --git a/SabreTools.Models/Internal/Header.cs b/SabreTools.Models/Internal/Header.cs
index 4d47fdc6..fd00f0e6 100644
--- a/SabreTools.Models/Internal/Header.cs
+++ b/SabreTools.Models/Internal/Header.cs
@@ -26,10 +26,6 @@ namespace SabreTools.Models.Internal
/// string
public const string CommentKey = "comment";
- /// TODO: This needs an internal model OR mapping to fields
- /// Configuration
- public const string ConfigurationKey = "configuration";
-
/// string
public const string DateKey = "date";
diff --git a/SabreTools.Serialization/Internal.AttractMode.cs b/SabreTools.Serialization/Internal.AttractMode.cs
index 8f1b5f73..392bef5e 100644
--- a/SabreTools.Serialization/Internal.AttractMode.cs
+++ b/SabreTools.Serialization/Internal.AttractMode.cs
@@ -71,6 +71,21 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.AttractMode.MetadataFile? ConvertHeaderToAttractMode(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var metadataFile = new Models.AttractMode.MetadataFile
+ {
+ Header = item.ReadStringArray(Models.Internal.Header.HeaderKey),
+ };
+ return metadataFile;
+ }
+
///
/// Convert from to an array of
///
diff --git a/SabreTools.Serialization/Internal.ClrMamePro.cs b/SabreTools.Serialization/Internal.ClrMamePro.cs
index 45d532c6..5d68f04a 100644
--- a/SabreTools.Serialization/Internal.ClrMamePro.cs
+++ b/SabreTools.Serialization/Internal.ClrMamePro.cs
@@ -374,7 +374,36 @@ namespace SabreTools.Serialization
#region Deserialize
///
- /// Convert from to
+ /// Convert from to
+ ///
+ public static Models.ClrMamePro.ClrMamePro? ConvertHeaderToClrMamePro(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var clrMamePro = new Models.ClrMamePro.ClrMamePro
+ {
+ Name = item.ReadString(Models.Internal.Header.NameKey),
+ Description = item.ReadString(Models.Internal.Header.DescriptionKey),
+ RootDir = item.ReadString(Models.Internal.Header.RootDirKey),
+ Category = item.ReadString(Models.Internal.Header.CategoryKey),
+ Version = item.ReadString(Models.Internal.Header.VersionKey),
+ Date = item.ReadString(Models.Internal.Header.DateKey),
+ Author = item.ReadString(Models.Internal.Header.AuthorKey),
+ Homepage = item.ReadString(Models.Internal.Header.HomepageKey),
+ Url = item.ReadString(Models.Internal.Header.UrlKey),
+ Comment = item.ReadString(Models.Internal.Header.CommentKey),
+ Header = item.ReadString(Models.Internal.Header.HeaderKey),
+ Type = item.ReadString(Models.Internal.Header.TypeKey),
+ ForceMerging = item.ReadString(Models.Internal.Header.ForceMergingKey),
+ ForceZipping = item.ReadString(Models.Internal.Header.ForceZippingKey),
+ ForcePacking = item.ReadString(Models.Internal.Header.ForcePackingKey),
+ };
+ return clrMamePro;
+ }
+
+ ///
+ /// Convert from to
///
public static Models.ClrMamePro.GameBase? ConvertMachineToClrMamePro(Models.Internal.Machine? item, bool game = false)
{
diff --git a/SabreTools.Serialization/Internal.DosCenter.cs b/SabreTools.Serialization/Internal.DosCenter.cs
index 1ec947d4..2ef43386 100644
--- a/SabreTools.Serialization/Internal.DosCenter.cs
+++ b/SabreTools.Serialization/Internal.DosCenter.cs
@@ -13,7 +13,7 @@ namespace SabreTools.Serialization
///
/// Convert from to
///
- public static Models.Internal.Header ConvertHeaderFromArchiveDotOrg(Models.DosCenter.DosCenter item)
+ public static Models.Internal.Header ConvertHeaderFromDosCenter(Models.DosCenter.DosCenter item)
{
var header = new Models.Internal.Header
{
@@ -70,6 +70,27 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.DosCenter.DosCenter? ConvertHeaderToDosCenter(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var dosCenter = new Models.DosCenter.DosCenter
+ {
+ Name = item.ReadString(Models.Internal.Header.NameKey),
+ Description = item.ReadString(Models.Internal.Header.DescriptionKey),
+ Version = item.ReadString(Models.Internal.Header.VersionKey),
+ Date = item.ReadString(Models.Internal.Header.DateKey),
+ Author = item.ReadString(Models.Internal.Header.AuthorKey),
+ Homepage = item.ReadString(Models.Internal.Header.HomepageKey),
+ Comment = item.ReadString(Models.Internal.Header.CommentKey),
+ };
+ return dosCenter;
+ }
+
///
/// Convert from to
///
diff --git a/SabreTools.Serialization/Internal.Listxml.cs b/SabreTools.Serialization/Internal.Listxml.cs
index 93afdd4f..c144973c 100644
--- a/SabreTools.Serialization/Internal.Listxml.cs
+++ b/SabreTools.Serialization/Internal.Listxml.cs
@@ -810,6 +810,38 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.Listxml.M1? ConvertHeaderToListxmlM1(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var m1 = new Models.Listxml.M1
+ {
+ Version = item.ReadString(Models.Internal.Header.VersionKey),
+ };
+ return m1;
+ }
+
+ ///
+ /// Convert from to
+ ///
+ public static Models.Listxml.Mame? ConvertHeaderToListxmlMame(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var mame = new Models.Listxml.Mame
+ {
+ Build = item.ReadString(Models.Internal.Header.BuildKey),
+ Debug = item.ReadString(Models.Internal.Header.DebugKey),
+ MameConfig = item.ReadString(Models.Internal.Header.MameConfigKey),
+ };
+ return mame;
+ }
+
///
/// Convert from to
///
@@ -1081,7 +1113,7 @@ namespace SabreTools.Serialization
///
/// Convert from to
///
- private static Models.Listxml.Device ConvertToListxml(Models.Internal.Device item)
+ private static Models.Listxml.Device? ConvertToListxml(Models.Internal.Device? item)
{
if (item == null)
return null;
diff --git a/SabreTools.Serialization/Internal.Logiqx.cs b/SabreTools.Serialization/Internal.Logiqx.cs
index a28f23b5..3567df52 100644
--- a/SabreTools.Serialization/Internal.Logiqx.cs
+++ b/SabreTools.Serialization/Internal.Logiqx.cs
@@ -352,6 +352,68 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.Logiqx.Header? ConvertHeaderToLogiqx(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var header = new Models.Logiqx.Header
+ {
+ Id = item.ReadString(Models.Internal.Header.IdKey),
+ Name = item.ReadString(Models.Internal.Header.NameKey),
+ Description = item.ReadString(Models.Internal.Header.DescriptionKey),
+ RootDir = item.ReadString(Models.Internal.Header.RootDirKey),
+ Category = item.ReadString(Models.Internal.Header.CategoryKey),
+ Version = item.ReadString(Models.Internal.Header.VersionKey),
+ Date = item.ReadString(Models.Internal.Header.DateKey),
+ Author = item.ReadString(Models.Internal.Header.AuthorKey),
+ Email = item.ReadString(Models.Internal.Header.EmailKey),
+ Homepage = item.ReadString(Models.Internal.Header.HomepageKey),
+ Url = item.ReadString(Models.Internal.Header.UrlKey),
+ Comment = item.ReadString(Models.Internal.Header.CommentKey),
+ Type = item.ReadString(Models.Internal.Header.TypeKey),
+ };
+
+ if (item.ContainsKey(Models.Internal.Header.HeaderKey)
+ || item.ContainsKey(Models.Internal.Header.ForceMergingKey)
+ || item.ContainsKey(Models.Internal.Header.ForceNodumpKey)
+ || item.ContainsKey(Models.Internal.Header.ForcePackingKey))
+ {
+ header.ClrMamePro = new Models.Logiqx.ClrMamePro
+ {
+ Header = item.ReadString(Models.Internal.Header.HeaderKey),
+ ForceMerging = item.ReadString(Models.Internal.Header.ForceMergingKey),
+ ForceNodump = item.ReadString(Models.Internal.Header.ForceNodumpKey),
+ ForcePacking = item.ReadString(Models.Internal.Header.ForcePackingKey),
+ };
+ }
+
+ if (item.ContainsKey(Models.Internal.Header.PluginKey)
+ || item.ContainsKey(Models.Internal.Header.RomModeKey)
+ || item.ContainsKey(Models.Internal.Header.BiosModeKey)
+ || item.ContainsKey(Models.Internal.Header.SampleModeKey)
+ || item.ContainsKey(Models.Internal.Header.LockRomModeKey)
+ || item.ContainsKey(Models.Internal.Header.LockBiosModeKey)
+ || item.ContainsKey(Models.Internal.Header.LockSampleModeKey))
+ {
+ header.RomCenter = new Models.Logiqx.RomCenter
+ {
+ Plugin = item.ReadString(Models.Internal.Header.PluginKey),
+ RomMode = item.ReadString(Models.Internal.Header.RomModeKey),
+ BiosMode = item.ReadString(Models.Internal.Header.BiosModeKey),
+ SampleMode = item.ReadString(Models.Internal.Header.SampleModeKey),
+ LockRomMode = item.ReadString(Models.Internal.Header.LockRomModeKey),
+ LockBiosMode = item.ReadString(Models.Internal.Header.LockBiosModeKey),
+ LockSampleMode = item.ReadString(Models.Internal.Header.LockSampleModeKey),
+ };
+ }
+
+ return header;
+ }
+
///
/// Convert from to
///
diff --git a/SabreTools.Serialization/Internal.OfflineList.cs b/SabreTools.Serialization/Internal.OfflineList.cs
index 1548140a..e49fdbd1 100644
--- a/SabreTools.Serialization/Internal.OfflineList.cs
+++ b/SabreTools.Serialization/Internal.OfflineList.cs
@@ -109,6 +109,58 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.OfflineList.Dat? ConvertHeaderToOfflineList(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var dat = new Models.OfflineList.Dat
+ {
+ NoNamespaceSchemaLocation = item.ReadString(Models.Internal.Header.NoNamespaceSchemaLocationKey),
+ };
+
+ if (item.ContainsKey(Models.Internal.Header.NameKey)
+ || item.ContainsKey(Models.Internal.Header.ImFolderKey)
+ || item.ContainsKey(Models.Internal.Header.DatVersionKey)
+ || item.ContainsKey(Models.Internal.Header.SystemKey)
+ || item.ContainsKey(Models.Internal.Header.ScreenshotsWidthKey)
+ || item.ContainsKey(Models.Internal.Header.ScreenshotsHeightKey)
+ || item.ContainsKey(Models.Internal.Header.InfosKey)
+ || item.ContainsKey(Models.Internal.Header.CanOpenKey)
+ || item.ContainsKey(Models.Internal.Header.NewDatKey)
+ || item.ContainsKey(Models.Internal.Header.SearchKey)
+ || item.ContainsKey(Models.Internal.Header.RomTitleKey))
+ {
+ dat.Configuration = new Models.OfflineList.Configuration
+ {
+ DatName = item.ReadString(Models.Internal.Header.NameKey),
+ ImFolder = item.ReadString(Models.Internal.Header.ImFolderKey),
+ DatVersion = item.ReadString(Models.Internal.Header.DatVersionKey),
+ System = item.ReadString(Models.Internal.Header.SystemKey),
+ ScreenshotsWidth = item.ReadString(Models.Internal.Header.ScreenshotsWidthKey),
+ ScreenshotsHeight = item.ReadString(Models.Internal.Header.ScreenshotsHeightKey),
+ Infos = item.Read(Models.Internal.Header.InfosKey),
+ CanOpen = item.Read(Models.Internal.Header.CanOpenKey),
+ NewDat = item.Read(Models.Internal.Header.NewDatKey),
+ Search = item.Read(Models.Internal.Header.SearchKey),
+ RomTitle = item.ReadString(Models.Internal.Header.RomTitleKey),
+ };
+ }
+
+ if (item.ContainsKey(Models.Internal.Header.ImagesKey))
+ {
+ dat.GUI = new Models.OfflineList.GUI
+ {
+ Images = item.Read(Models.Internal.Header.ImagesKey),
+ };
+ }
+
+ return dat;
+ }
+
///
/// Convert from to
///
diff --git a/SabreTools.Serialization/Internal.OpenMSX.cs b/SabreTools.Serialization/Internal.OpenMSX.cs
index eaf9d5ed..ebd915f7 100644
--- a/SabreTools.Serialization/Internal.OpenMSX.cs
+++ b/SabreTools.Serialization/Internal.OpenMSX.cs
@@ -110,6 +110,21 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.OpenMSX.SoftwareDb? ConvertHeaderToOpenMSX(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var softwareDb = new Models.OpenMSX.SoftwareDb
+ {
+ Timestamp = item.ReadString(Models.Internal.Header.TimestampKey),
+ };
+ return softwareDb;
+ }
+
///
/// Convert from to
///
diff --git a/SabreTools.Serialization/Internal.RomCenter.cs b/SabreTools.Serialization/Internal.RomCenter.cs
index 53ce7d63..829a5eef 100644
--- a/SabreTools.Serialization/Internal.RomCenter.cs
+++ b/SabreTools.Serialization/Internal.RomCenter.cs
@@ -83,6 +83,62 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.RomCenter.MetadataFile? ConvertHeaderToRomCenter(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var metadataFile = new Models.RomCenter.MetadataFile();
+
+ if (item.ContainsKey(Models.Internal.Header.AuthorKey)
+ || item.ContainsKey(Models.Internal.Header.VersionKey)
+ || item.ContainsKey(Models.Internal.Header.EmailKey)
+ || item.ContainsKey(Models.Internal.Header.HomepageKey)
+ || item.ContainsKey(Models.Internal.Header.UrlKey)
+ || item.ContainsKey(Models.Internal.Header.DateKey)
+ || item.ContainsKey(Models.Internal.Header.CommentKey))
+ {
+ metadataFile.Credits = new Models.RomCenter.Credits
+ {
+ Author = item.ReadString(Models.Internal.Header.AuthorKey),
+ Version = item.ReadString(Models.Internal.Header.VersionKey),
+ Email = item.ReadString(Models.Internal.Header.EmailKey),
+ Homepage = item.ReadString(Models.Internal.Header.HomepageKey),
+ Url = item.ReadString(Models.Internal.Header.UrlKey),
+ Date = item.ReadString(Models.Internal.Header.DateKey),
+ Comment = item.ReadString(Models.Internal.Header.CommentKey),
+ };
+ }
+
+ if (item.ContainsKey(Models.Internal.Header.DatVersionKey)
+ || item.ContainsKey(Models.Internal.Header.PluginKey)
+ || item.ContainsKey(Models.Internal.Header.ForceMergingKey))
+ {
+ metadataFile.Dat = new Models.RomCenter.Dat
+ {
+ Version = item.ReadString(Models.Internal.Header.DatVersionKey),
+ Plugin = item.ReadString(Models.Internal.Header.PluginKey),
+ Split = item.ReadString(Models.Internal.Header.ForceMergingKey) == "split" ? "yes" : "no",
+ Merge = item.ReadString(Models.Internal.Header.ForceMergingKey) == "merge" ? "yes" : "no",
+ };
+ }
+
+ if (item.ContainsKey(Models.Internal.Header.RefNameKey)
+ || item.ContainsKey(Models.Internal.Header.EmulatorVersionKey))
+ {
+ metadataFile.Emulator = new Models.RomCenter.Emulator
+ {
+ RefName = item.ReadString(Models.Internal.Header.RefNameKey),
+ Version = item.ReadString(Models.Internal.Header.EmulatorVersionKey),
+ };
+ }
+
+ return metadataFile;
+ }
+
///
/// Convert from to an array of
///
diff --git a/SabreTools.Serialization/Internal.SeparatedValue.cs b/SabreTools.Serialization/Internal.SeparatedValue.cs
index 86ba4736..d238188c 100644
--- a/SabreTools.Serialization/Internal.SeparatedValue.cs
+++ b/SabreTools.Serialization/Internal.SeparatedValue.cs
@@ -13,7 +13,7 @@ namespace SabreTools.Serialization
///
/// Convert from to
///
- public static Models.Internal.Header ConvertHeaderFromArchiveDotOrg(Models.SeparatedValue.MetadataFile item)
+ public static Models.Internal.Header ConvertHeaderFromSeparatedValue(Models.SeparatedValue.MetadataFile item)
{
var header = new Models.Internal.Header
{
@@ -104,6 +104,21 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.SeparatedValue.MetadataFile? ConvertHeaderToSeparatedValue(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var metadataFile = new Models.SeparatedValue.MetadataFile
+ {
+ Header = item.ReadStringArray(Models.Internal.Header.HeaderKey),
+ };
+ return metadataFile;
+ }
+
///
/// Convert from to an array of
///
diff --git a/SabreTools.Serialization/Internal.SoftwareList.cs b/SabreTools.Serialization/Internal.SoftwareList.cs
index c2f0ad28..382e53df 100644
--- a/SabreTools.Serialization/Internal.SoftwareList.cs
+++ b/SabreTools.Serialization/Internal.SoftwareList.cs
@@ -294,6 +294,23 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.SoftwareList.SoftwareList? ConvertHeaderToSoftwareList(Models.Internal.Header? item)
+ {
+ if (item == null)
+ return null;
+
+ var softwareList = new Models.SoftwareList.SoftwareList
+ {
+ Name = item.ReadString(Models.Internal.Header.NameKey),
+ Description = item.ReadString(Models.Internal.Header.DescriptionKey),
+ Notes = item.ReadString(Models.Internal.Header.NotesKey),
+ };
+ return softwareList;
+ }
+
///
/// Convert from to
///