diff --git a/SabreTools.Data.Models/OpenMSX/RomBase.cs b/SabreTools.Data.Models/OpenMSX/RomBase.cs
index 51254b78..7b76ef98 100644
--- a/SabreTools.Data.Models/OpenMSX/RomBase.cs
+++ b/SabreTools.Data.Models/OpenMSX/RomBase.cs
@@ -11,19 +11,27 @@ namespace SabreTools.Data.Models.OpenMSX
///
/// "hash" in older versions, "sha1" in newer versions
///
+ [XmlAttribute("sha1")]
[XmlElement("hash")]
- [XmlElement("sha1")]
public string? SHA1 { get; set; }
+ ///
+ /// Element in older versions and DTD, attribute in newer versions
+ ///
+ [XmlAttribute("type")]
[XmlElement("type")]
public string? Type { get; set; }
///
/// Only present in newer versions
///
- [XmlElement("status")]
+ [XmlAttribute("status")]
public string? Status { get; set; }
+ ///
+ /// Element in older versions and DTD, attribute in newer versions
+ ///
+ [XmlAttribute("remark")]
[XmlElement("remark")]
public string? Remark { get; set; }
diff --git a/SabreTools.Serialization.Readers/OpenMSX.cs b/SabreTools.Serialization.Readers/OpenMSX.cs
index 51fbb345..456c92d5 100644
--- a/SabreTools.Serialization.Readers/OpenMSX.cs
+++ b/SabreTools.Serialization.Readers/OpenMSX.cs
@@ -226,6 +226,11 @@ namespace SabreTools.Serialization.Readers
else
return null;
+ obj.SHA1 = reader.GetAttribute("sha1");
+ obj.Type = reader.GetAttribute("type");
+ obj.Status = reader.GetAttribute("status");
+ obj.Remark = reader.GetAttribute("remark");
+
// Handle empty elements
if (reader.IsEmptyElement)
return obj;