diff --git a/SabreTools.Models/ClrMamePro/Rom.cs b/SabreTools.Models/ClrMamePro/Rom.cs
index 9251951..e6def48 100644
--- a/SabreTools.Models/ClrMamePro/Rom.cs
+++ b/SabreTools.Models/ClrMamePro/Rom.cs
@@ -34,6 +34,18 @@ namespace SabreTools.Models.ClrMamePro
#region Hash Extensions
+ /// md2; Appears after CRC
+ public string? MD2 { get; set; }
+
+ /// md4; Appears after MD2
+ public string? MD4 { get; set; }
+
+ /// ripemd128; Appears after MD5
+ public string? RIPEMD128 { get; set; }
+
+ /// ripemd160; Appears after RIPEMD128
+ public string? RIPEMD160 { get; set; }
+
/// sha256; Also in No-Intro spec; Appears after SHA1
public string? SHA256 { get; set; }
diff --git a/SabreTools.Models/Hashfile/Hashfile.cs b/SabreTools.Models/Hashfile/Hashfile.cs
index e1d1ae8..d3c99e1 100644
--- a/SabreTools.Models/Hashfile/Hashfile.cs
+++ b/SabreTools.Models/Hashfile/Hashfile.cs
@@ -11,6 +11,10 @@ namespace SabreTools.Models.Hashfile
public MD5[]? MD5 { get; set; }
+ public RIPEMD128[]? RIPEMD128 { get; set; }
+
+ public RIPEMD160[]? RIPEMD160 { get; set; }
+
public SHA1[]? SHA1 { get; set; }
public SHA256[]? SHA256 { get; set; }
diff --git a/SabreTools.Models/Hashfile/RIPEMD128.cs b/SabreTools.Models/Hashfile/RIPEMD128.cs
new file mode 100644
index 0000000..9e32f4c
--- /dev/null
+++ b/SabreTools.Models/Hashfile/RIPEMD128.cs
@@ -0,0 +1,14 @@
+namespace SabreTools.Models.Hashfile
+{
+ ///
+ /// RIPEMD128 File
+ ///
+ public class RIPEMD128
+ {
+ [Required]
+ public string? Hash { get; set; }
+
+ [Required]
+ public string? File { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/SabreTools.Models/Hashfile/RIPEMD160.cs b/SabreTools.Models/Hashfile/RIPEMD160.cs
new file mode 100644
index 0000000..7043144
--- /dev/null
+++ b/SabreTools.Models/Hashfile/RIPEMD160.cs
@@ -0,0 +1,14 @@
+namespace SabreTools.Models.Hashfile
+{
+ ///
+ /// RIPEMD160 File
+ ///
+ public class RIPEMD160
+ {
+ [Required]
+ public string? Hash { get; set; }
+
+ [Required]
+ public string? File { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/SabreTools.Models/Logiqx/Rom.cs b/SabreTools.Models/Logiqx/Rom.cs
index 7d87935..63d7ebd 100644
--- a/SabreTools.Models/Logiqx/Rom.cs
+++ b/SabreTools.Models/Logiqx/Rom.cs
@@ -17,9 +17,25 @@ namespace SabreTools.Models.Logiqx
[XmlAttribute("crc")]
public string? CRC { get; set; }
+ /// Hash extension
+ [XmlAttribute("md2")]
+ public string? MD2 { get; set; }
+
+ /// Hash extension
+ [XmlAttribute("md4")]
+ public string? MD4 { get; set; }
+
[XmlAttribute("md5")]
public string? MD5 { get; set; }
+ /// Hash extension
+ [XmlAttribute("ripemd128")]
+ public string? RIPEMD128 { get; set; }
+
+ /// Hash extension
+ [XmlAttribute("ripemd160")]
+ public string? RIPEMD160 { get; set; }
+
[XmlAttribute("sha1")]
public string? SHA1 { get; set; }
diff --git a/SabreTools.Models/Metadata/Rom.cs b/SabreTools.Models/Metadata/Rom.cs
index d33599d..dee62d9 100644
--- a/SabreTools.Models/Metadata/Rom.cs
+++ b/SabreTools.Models/Metadata/Rom.cs
@@ -182,6 +182,12 @@ namespace SabreTools.Models.Metadata
/// string; OpenMSX.RomBase
public const string RemarkKey = "remark";
+ /// string
+ public const string RIPEMD128Key = "ripemd128";
+
+ /// string
+ public const string RIPEMD160Key = "ripemd160";
+
/// string, possibly long; ArchiveDotOrg.File
public const string RotationKey = "rotation";