diff --git a/SabreTools.Serialization/Internal.Deserializer.cs b/SabreTools.Serialization/Internal.Deserializer.cs index f134d130..82caef94 100644 --- a/SabreTools.Serialization/Internal.Deserializer.cs +++ b/SabreTools.Serialization/Internal.Deserializer.cs @@ -449,5 +449,50 @@ namespace SabreTools.Serialization } #endregion + + #region Listrom + + /// + /// Convert from to + /// + public static Models.Listrom.Row ConvertToListrom(Models.Internal.Disk item) + { + var row = new Models.Listrom.Row + { + Name = item.ReadString(Models.Internal.Disk.NameKey), + MD5 = item.ReadString(Models.Internal.Disk.MD5Key), + SHA1 = item.ReadString(Models.Internal.Disk.SHA1Key), + }; + + if (item[Models.Internal.Disk.StatusKey] as string == "nodump") + row.NoGoodDumpKnown = true; + else if (item[Models.Internal.Disk.StatusKey] as string == "baddump") + row.Bad = true; + + return row; + } + + /// + /// Convert from to + /// + public static Models.Listrom.Row ConvertToListrom(Models.Internal.Rom item) + { + var row = new Models.Listrom.Row + { + Name = item.ReadString(Models.Internal.Rom.NameKey), + Size = item.ReadString(Models.Internal.Rom.SizeKey), + CRC = item.ReadString(Models.Internal.Rom.CRCKey), + SHA1 = item.ReadString(Models.Internal.Rom.SHA1Key), + }; + + if (item[Models.Internal.Rom.StatusKey] as string == "nodump") + row.NoGoodDumpKnown = true; + else if (item[Models.Internal.Rom.StatusKey] as string == "baddump") + row.Bad = true; + + return row; + } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Internal.Serializer.cs b/SabreTools.Serialization/Internal.Serializer.cs index 7e99bfa5..c624feb5 100644 --- a/SabreTools.Serialization/Internal.Serializer.cs +++ b/SabreTools.Serialization/Internal.Serializer.cs @@ -334,7 +334,7 @@ namespace SabreTools.Serialization } #endregion - + #region EverdriveSMDB /// @@ -355,7 +355,7 @@ namespace SabreTools.Serialization } #endregion - + #region Hashfile /// @@ -450,5 +450,49 @@ namespace SabreTools.Serialization } #endregion + + #region Listrom + + /// + /// Convert from to or + /// + public static Models.Internal.DatItem ConvertFromListrom(Models.Listrom.Row item) + { + if (item.Size == null) + { + var disk = new Models.Internal.Disk + { + [Models.Internal.Disk.NameKey] = item.Name, + [Models.Internal.Disk.MD5Key] = item.MD5, + [Models.Internal.Disk.SHA1Key] = item.SHA1, + }; + + if (item.NoGoodDumpKnown) + disk[Models.Internal.Disk.StatusKey] = "nodump"; + else if (item.Bad) + disk[Models.Internal.Disk.StatusKey] = "baddump"; + + return disk; + } + else + { + var rom = new Models.Internal.Rom + { + [Models.Internal.Rom.NameKey] = item.Name, + [Models.Internal.Rom.SizeKey] = item.Size, + [Models.Internal.Rom.CRCKey] = item.CRC, + [Models.Internal.Rom.SHA1Key] = item.SHA1, + }; + + if (item.NoGoodDumpKnown) + rom[Models.Internal.Rom.StatusKey] = "nodump"; + else if (item.Bad) + rom[Models.Internal.Rom.StatusKey] = "baddump"; + + return rom; + } + } + + #endregion } } \ No newline at end of file