diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs
index 0cd12f12..bdb3368c 100644
--- a/SabreTools.Library/DatFiles/DatHeader.cs
+++ b/SabreTools.Library/DatFiles/DatHeader.cs
@@ -203,14 +203,41 @@ namespace SabreTools.Library.DatFiles
[JsonProperty("build")]
public string Build { get; set; }
- // TODO: Implement the following header values:
- // - romcenter.plugin
- // - romcenter.rommode (merged|split|unmerged) "split"
- // - romcenter.biosmode (merged|split|unmerged) "split"
- // - romcenter.samplemode (merged|unmerged) "merged"
- // - romcenter.lockrommode (yes|no) "no"
- // - romcenter.lockbiosmode (yes|no) "no"
- // - romcenter.locksamplemode (yes|no) "no"
+ ///
+ /// RomCenter rom mode
+ ///
+ [JsonProperty("rommode")]
+ public string RomMode { get; set; } // (merged|split|unmerged) "split"
+
+ ///
+ /// RomCenter bios mode
+ ///
+ [JsonProperty("biosmode")]
+ public string BiosMode { get; set; } // (merged|split|unmerged) "split"
+
+ ///
+ /// RomCenter sample mode
+ ///
+ [JsonProperty("samplemode")]
+ public string SampleMode { get; set; } // (merged|unmerged) "merged"
+
+ ///
+ /// RomCenter lock rom mode
+ ///
+ [JsonProperty("lockrommode")]
+ public bool? LockRomMode { get; set; } // (yes|no) "no"
+
+ ///
+ /// RomCenter lock bios mode
+ ///
+ [JsonProperty("lockbiosmode")]
+ public bool? LockBiosMode { get; set; } // (yes|no) "no"
+
+ ///
+ /// RomCenter lock sample mode
+ ///
+ [JsonProperty("locksamplemode")]
+ public bool? LockSampleMode { get; set; } // (yes|no) "no"
#endregion
@@ -229,7 +256,7 @@ namespace SabreTools.Library.DatFiles
///
/// System
///
- /// Known as "plugin" in RomCenter
+ /// Known as "plugin" in Logiqx and RomCenter
[JsonProperty("system")]
public string System { get; set; }
@@ -260,7 +287,7 @@ namespace SabreTools.Library.DatFiles
// TODO: Implement the following header values:
// - newdat.datversionurl (currently reads and writes to Header.Url, not strictly correct)
// - newdat.daturl (currently writes to Header.Url, not strictly correct)
- // - newdat.daturl[fileName] (currently writes to Header.FileName, not strictly correct)
+ // - newdat.daturl[fileName] (currently writes to Header.FileName + ".zip", not strictly correct)
// - newdat.imurl (currently writes to Header.Url, not strictly correct)
// - search[...].to.find[operation, value (Int32?)]
// - search[...].to[value, default (true|false), auto (true, false)]
diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs
index 0c240066..b97f0b90 100644
--- a/SabreTools.Library/DatFiles/Json.cs
+++ b/SabreTools.Library/DatFiles/Json.cs
@@ -234,6 +234,36 @@ namespace SabreTools.Library.DatFiles
Header.Build = (Header.Build == null ? content : Header.Build);
break;
+ case "rommode":
+ content = jtr.ReadAsString();
+ Header.RomMode = (Header.RomMode == null ? content : Header.RomMode);
+ break;
+
+ case "biosmode":
+ content = jtr.ReadAsString();
+ Header.BiosMode = (Header.BiosMode == null ? content : Header.BiosMode);
+ break;
+
+ case "samplemode":
+ content = jtr.ReadAsString();
+ Header.Build = (Header.SampleMode == null ? content : Header.SampleMode);
+ break;
+
+ case "lockrommode":
+ content = jtr.ReadAsString();
+ Header.LockRomMode = (Header.LockRomMode == null ? content.AsYesNo() : Header.LockRomMode);
+ break;
+
+ case "lockbiosmode":
+ content = jtr.ReadAsString();
+ Header.LockBiosMode = (Header.LockBiosMode == null ? content.AsYesNo() : Header.LockBiosMode);
+ break;
+
+ case "locksamplemode":
+ content = jtr.ReadAsString();
+ Header.LockSampleMode = (Header.LockSampleMode == null ? content.AsYesNo() : Header.LockSampleMode);
+ break;
+
#endregion
#region OfflineList
@@ -1141,6 +1171,69 @@ namespace SabreTools.Library.DatFiles
jtw.WriteValue(Header.Build);
}
+ if (!string.IsNullOrWhiteSpace(Header.RomMode))
+ {
+ jtw.WritePropertyName("rommode");
+ jtw.WriteValue(Header.RomMode);
+ }
+
+ if (!string.IsNullOrWhiteSpace(Header.BiosMode))
+ {
+ jtw.WritePropertyName("biosmode");
+ jtw.WriteValue(Header.BiosMode);
+ }
+
+ if (!string.IsNullOrWhiteSpace(Header.SampleMode))
+ {
+ jtw.WritePropertyName("samplemode");
+ jtw.WriteValue(Header.SampleMode);
+ }
+
+ if (Header.LockRomMode != null)
+ {
+ switch (Header.LockRomMode)
+ {
+ case true:
+ jtw.WritePropertyName("lockrommode");
+ jtw.WriteValue("yes");
+ break;
+ case false:
+ jtw.WritePropertyName("lockrommode");
+ jtw.WriteValue("no");
+ break;
+ }
+ }
+
+ if (Header.LockBiosMode != null)
+ {
+ switch (Header.LockBiosMode)
+ {
+ case true:
+ jtw.WritePropertyName("lockbiosmode");
+ jtw.WriteValue("yes");
+ break;
+ case false:
+ jtw.WritePropertyName("lockbiosmode");
+ jtw.WriteValue("no");
+ break;
+ }
+ }
+
+ if (Header.LockSampleMode != null)
+ {
+ switch (Header.LockSampleMode)
+ {
+ case true:
+ jtw.WritePropertyName("locksamplemode");
+ jtw.WriteValue("yes");
+ break;
+ case false:
+ jtw.WritePropertyName("locksamplemode");
+ jtw.WriteValue("no");
+ break;
+ }
+ }
+
#endregion
#region OfflineList
diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs
index b09c1cca..4679d024 100644
--- a/SabreTools.Library/DatFiles/Logiqx.cs
+++ b/SabreTools.Library/DatFiles/Logiqx.cs
@@ -237,35 +237,23 @@ namespace SabreTools.Library.DatFiles
if (Header.System == null)
Header.System = reader.GetAttribute("plugin");
- if (reader.GetAttribute("rommode") != null)
- {
- // (merged|split|unmerged) "split"
- }
+ if (Header.RomMode == null)
+ Header.RomMode = reader.GetAttribute("rommode");
- if (reader.GetAttribute("biosmode") != null)
- {
- // (merged|split|unmerged) "split"
- }
+ if (Header.BiosMode == null)
+ Header.BiosMode = reader.GetAttribute("biosmode");
- if (reader.GetAttribute("samplemode") != null)
- {
- // (merged|unmerged) "merged"
- }
+ if (Header.SampleMode == null)
+ Header.SampleMode = reader.GetAttribute("samplemode");
- if (reader.GetAttribute("lockrommode") != null)
- {
- // (yes|no) "no"
- }
+ if (Header.LockRomMode == null)
+ Header.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo();
- if (reader.GetAttribute("lockbiosmode") != null)
- {
- // (yes|no) "no"
- }
+ if (Header.LockBiosMode == null)
+ Header.LockBiosMode = reader.GetAttribute("lockbiosmode").AsYesNo();
- if (reader.GetAttribute("locksamplemode") != null)
- {
- // (yes|no) "no"
- }
+ if (Header.LockSampleMode == null)
+ Header.LockSampleMode = reader.GetAttribute("locksamplemode").AsYesNo();
reader.Read();
break;
@@ -863,6 +851,68 @@ namespace SabreTools.Library.DatFiles
xtw.WriteEndElement();
}
+ if (Header.System != null
+ || Header.RomMode != null || Header.LockRomMode != null
+ || Header.BiosMode != null || Header.LockBiosMode != null
+ || Header.SampleMode != null || Header.LockSampleMode != null)
+ {
+ xtw.WriteStartElement("romcenter");
+
+ if (!string.IsNullOrWhiteSpace(Header.System))
+ xtw.WriteAttributeString("plugin", Header.System);
+
+ if (!string.IsNullOrWhiteSpace(Header.RomMode))
+ xtw.WriteAttributeString("rommode", Header.RomMode);
+
+ if (!string.IsNullOrWhiteSpace(Header.BiosMode))
+ xtw.WriteAttributeString("biosmode", Header.BiosMode);
+
+ if (!string.IsNullOrWhiteSpace(Header.SampleMode))
+ xtw.WriteAttributeString("samplemode", Header.SampleMode);
+
+ if (Header.LockRomMode != null)
+ {
+ switch (Header.LockRomMode)
+ {
+ case true:
+ xtw.WriteAttributeString("lockrommode", "yes");
+ break;
+ case false:
+ xtw.WriteAttributeString("lockrommode", "no");
+ break;
+ }
+ }
+
+ if (Header.LockBiosMode != null)
+ {
+ switch (Header.LockBiosMode)
+ {
+ case true:
+ xtw.WriteAttributeString("lockbiosmode", "yes");
+ break;
+ case false:
+ xtw.WriteAttributeString("lockbiosmode", "no");
+ break;
+ }
+ }
+
+ if (Header.LockSampleMode != null)
+ {
+ switch (Header.LockSampleMode)
+ {
+ case true:
+ xtw.WriteAttributeString("locksamplemode", "yes");
+ break;
+ case false:
+ xtw.WriteAttributeString("locksamplemode", "no");
+ break;
+ }
+ }
+
+ // End romcenter
+ xtw.WriteEndElement();
+ }
+
// End header
xtw.WriteEndElement();
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index 86611b5d..20d27c3c 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -206,6 +206,30 @@ namespace SabreTools.Library.DatFiles
Header.Build = (Header.Build == null ? value : Header.Build);
break;
+ case "DatFile.RomMode":
+ Header.RomMode = (Header.RomMode == null ? value : Header.RomMode);
+ break;
+
+ case "DatFile.BiosMode":
+ Header.BiosMode = (Header.BiosMode == null ? value : Header.BiosMode);
+ break;
+
+ case "DatFile.SampleMode":
+ Header.SampleMode = (Header.SampleMode == null ? value : Header.SampleMode);
+ break;
+
+ case "DatFile.LockRomMode":
+ Header.LockRomMode = (Header.LockRomMode == null ? value.AsYesNo() : Header.LockRomMode);
+ break;
+
+ case "DatFile.LockBiosMode":
+ Header.LockBiosMode = (Header.LockBiosMode == null ? value.AsYesNo() : Header.LockBiosMode);
+ break;
+
+ case "DatFile.LockSampleMode":
+ Header.LockSampleMode = (Header.LockSampleMode == null ? value.AsYesNo() : Header.LockSampleMode);
+ break;
+
#endregion
#region OfflineList
@@ -810,6 +834,36 @@ namespace SabreTools.Library.DatFiles
case "build":
return "DatFile.Build";
+ case "rommode":
+ case "rom mode":
+ case "rom-mode":
+ return "DatFile.RomMode";
+
+ case "biosmode":
+ case "bios mode":
+ case "bios-mode":
+ return "DatFile.BiosMode";
+
+ case "samplemode":
+ case "sample mode":
+ case "sample-mode":
+ return "DatFile.SampleMode";
+
+ case "lockrommode":
+ case "lock rom mode":
+ case "lock-rom-mode":
+ return "DatFile.LockRomMode";
+
+ case "lockbiosmode":
+ case "lock bios mode":
+ case "lock-bios-mode":
+ return "DatFile.LockBiosMode";
+
+ case "locksamplemode":
+ case "lock sample mode":
+ case "lock-sample-mode":
+ return "DatFile.LockSampleMode";
+
#endregion
#region OfflineList