diff --git a/SabreTools.Models/OpenMSX/Dump.cs b/SabreTools.Models/OpenMSX/Dump.cs
index 8574d4cd..286b521b 100644
--- a/SabreTools.Models/OpenMSX/Dump.cs
+++ b/SabreTools.Models/OpenMSX/Dump.cs
@@ -9,14 +9,10 @@ namespace SabreTools.Models.OpenMSX
[XmlElement("original")]
public Original? Original { get; set; }
- [XmlElement("rom")]
- public Rom? Rom { get; set; }
-
- [XmlElement("megarom")]
- public MegaRom? MegaRom { get; set; }
-
- [XmlElement("sccpluscart")]
- public SCCPlusCart? SCCPlusCart { get; set; }
+ [XmlElement("rom", typeof(Rom))]
+ [XmlElement("megarom", typeof(MegaRom))]
+ [XmlElement("sccpluscart", typeof(SCCPlusCart))]
+ public RomBase? Rom { get; set; }
#region DO NOT USE IN PRODUCTION
diff --git a/SabreTools.Models/OpenMSX/MegaRom.cs b/SabreTools.Models/OpenMSX/MegaRom.cs
index 828b9657..78fa13ac 100644
--- a/SabreTools.Models/OpenMSX/MegaRom.cs
+++ b/SabreTools.Models/OpenMSX/MegaRom.cs
@@ -1,30 +1,7 @@
-using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX
{
[XmlRoot("megarom")]
- public class MegaRom
- {
- [XmlElement("type")]
- public string? Type { get; set; }
-
- [XmlElement("hash")]
- public string? Hash { get; set; }
-
- [XmlElement("remark")]
- public string? Remark { get; set; }
-
- #region DO NOT USE IN PRODUCTION
-
- /// Should be empty
- [XmlAnyAttribute]
- public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
-
- /// Should be empty
- [XmlAnyElement]
- public object[]? ADDITIONAL_ELEMENTS { get; set; }
-
- #endregion
- }
+ public class MegaRom : RomBase { }
}
\ No newline at end of file
diff --git a/SabreTools.Models/OpenMSX/Rom.cs b/SabreTools.Models/OpenMSX/Rom.cs
index cd837009..bfa03810 100644
--- a/SabreTools.Models/OpenMSX/Rom.cs
+++ b/SabreTools.Models/OpenMSX/Rom.cs
@@ -1,33 +1,7 @@
-using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX
{
[XmlRoot("rom")]
- public class Rom
- {
- [XmlElement("start")]
- public string? Start { get; set; }
-
- [XmlElement("type")]
- public string? Type { get; set; }
-
- [XmlElement("hash")]
- public string? Hash { get; set; }
-
- [XmlElement("remark")]
- public string? Remark { get; set; }
-
- #region DO NOT USE IN PRODUCTION
-
- /// Should be empty
- [XmlAnyAttribute]
- public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
-
- /// Should be empty
- [XmlAnyElement]
- public object[]? ADDITIONAL_ELEMENTS { get; set; }
-
- #endregion
- }
+ public class Rom : RomBase { }
}
\ No newline at end of file
diff --git a/SabreTools.Models/OpenMSX/RomBase.cs b/SabreTools.Models/OpenMSX/RomBase.cs
new file mode 100644
index 00000000..a15d9d02
--- /dev/null
+++ b/SabreTools.Models/OpenMSX/RomBase.cs
@@ -0,0 +1,35 @@
+using System.Xml;
+using System.Xml.Serialization;
+
+namespace SabreTools.Models.OpenMSX
+{
+ ///
+ /// Base class to unify the various rom types
+ ///
+ public abstract class RomBase
+ {
+ [XmlElement("start")]
+ public string? Start { get; set; }
+
+ [XmlElement("type")]
+ public string? Type { get; set; }
+
+ [XmlElement("hash")]
+ public string? Hash { get; set; }
+
+ [XmlElement("remark")]
+ public string? Remark { get; set; }
+
+ #region DO NOT USE IN PRODUCTION
+
+ /// Should be empty
+ [XmlAnyAttribute]
+ public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
+
+ /// Should be empty
+ [XmlAnyElement]
+ public object[]? ADDITIONAL_ELEMENTS { get; set; }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/SabreTools.Models/OpenMSX/SCCPlusCart.cs b/SabreTools.Models/OpenMSX/SCCPlusCart.cs
index ad65749e..9d108317 100644
--- a/SabreTools.Models/OpenMSX/SCCPlusCart.cs
+++ b/SabreTools.Models/OpenMSX/SCCPlusCart.cs
@@ -1,30 +1,7 @@
-using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX
{
[XmlRoot("sccpluscart")]
- public class SCCPlusCart
- {
- [XmlElement("boot")]
- public string? Boot { get; set; }
-
- [XmlElement("hash")]
- public string? Hash { get; set; }
-
- [XmlElement("remark")]
- public string? Remark { get; set; }
-
- #region DO NOT USE IN PRODUCTION
-
- /// Should be empty
- [XmlAnyAttribute]
- public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
-
- /// Should be empty
- [XmlAnyElement]
- public object[]? ADDITIONAL_ELEMENTS { get; set; }
-
- #endregion
- }
+ public class SCCPlusCart : RomBase { }
}
\ No newline at end of file
diff --git a/SabreTools.Test/Parser/SerializationTests.cs b/SabreTools.Test/Parser/SerializationTests.cs
index f182772e..8978d694 100644
--- a/SabreTools.Test/Parser/SerializationTests.cs
+++ b/SabreTools.Test/Parser/SerializationTests.cs
@@ -671,18 +671,6 @@ namespace SabreTools.Test.Parser
Assert.Null(dump.Rom.ADDITIONAL_ATTRIBUTES);
Assert.Null(dump.Rom.ADDITIONAL_ELEMENTS);
}
-
- if (dump.MegaRom != null)
- {
- Assert.Null(dump.MegaRom.ADDITIONAL_ATTRIBUTES);
- Assert.Null(dump.MegaRom.ADDITIONAL_ELEMENTS);
- }
-
- if (dump.SCCPlusCart != null)
- {
- Assert.Null(dump.SCCPlusCart.ADDITIONAL_ATTRIBUTES);
- Assert.Null(dump.SCCPlusCart.ADDITIONAL_ELEMENTS);
- }
}
}
}