diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs
index d05fa04f..c35f5c6d 100644
--- a/SabreTools.Library/DatFiles/ClrMamePro.cs
+++ b/SabreTools.Library/DatFiles/ClrMamePro.cs
@@ -162,18 +162,18 @@ namespace SabreTools.Library.DatFiles
superdat = superdat || itemVal.Contains("SuperDAT");
break;
case "forcemerging":
- if (Header.ForceMerging == ForceMerging.None)
- Header.ForceMerging = itemVal.AsForceMerging();
+ if (Header.ForceMerging == MergingFlag.None)
+ Header.ForceMerging = itemVal.AsMergingFlag();
break;
case "forcezipping":
- if (Header.ForcePacking == ForcePacking.None)
- Header.ForcePacking = itemVal.AsForcePacking();
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = itemVal.AsPackingFlag();
break;
case "forcepacking":
- if (Header.ForcePacking == ForcePacking.None)
- Header.ForcePacking = itemVal.AsForcePacking();
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = itemVal.AsPackingFlag();
break;
}
@@ -567,26 +567,26 @@ namespace SabreTools.Library.DatFiles
switch (Header.ForcePacking)
{
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
cmpw.WriteStandalone("forcezipping", "no", false);
break;
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
cmpw.WriteStandalone("forcezipping", "yes", false);
break;
}
switch (Header.ForceMerging)
{
- case ForceMerging.Full:
+ case MergingFlag.Full:
cmpw.WriteStandalone("forcemerging", "full", false);
break;
- case ForceMerging.Split:
+ case MergingFlag.Split:
cmpw.WriteStandalone("forcemerging", "split", false);
break;
- case ForceMerging.Merged:
+ case MergingFlag.Merged:
cmpw.WriteStandalone("forcemerging", "merged", false);
break;
- case ForceMerging.NonMerged:
+ case MergingFlag.NonMerged:
cmpw.WriteStandalone("forcemerging", "nonmerged", false);
break;
}
diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs
index 4eb4c726..f5a31d4d 100644
--- a/SabreTools.Library/DatFiles/DatFile.cs
+++ b/SabreTools.Library/DatFiles/DatFile.cs
@@ -2382,14 +2382,14 @@ namespace SabreTools.Library.DatFiles
outDir = DirectoryExtensions.Ensure(outDir, create: true);
// Now we want to get forcepack flag if it's not overridden
- if (outputFormat == OutputFormat.Folder && Header.ForcePacking != ForcePacking.None)
+ if (outputFormat == OutputFormat.Folder && Header.ForcePacking != PackingFlag.None)
{
switch (Header.ForcePacking)
{
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
outputFormat = OutputFormat.TorrentZip;
break;
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
outputFormat = OutputFormat.Folder;
break;
}
@@ -2569,14 +2569,14 @@ namespace SabreTools.Library.DatFiles
}
// Now we want to get forcepack flag if it's not overridden
- if (outputFormat == OutputFormat.Folder && Header.ForcePacking != ForcePacking.None)
+ if (outputFormat == OutputFormat.Folder && Header.ForcePacking != PackingFlag.None)
{
switch (Header.ForcePacking)
{
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
outputFormat = OutputFormat.TorrentZip;
break;
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
outputFormat = OutputFormat.Folder;
break;
}
diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs
index bdb3368c..8ed1c5b1 100644
--- a/SabreTools.Library/DatFiles/DatHeader.cs
+++ b/SabreTools.Library/DatFiles/DatHeader.cs
@@ -106,21 +106,21 @@ namespace SabreTools.Library.DatFiles
///
/// TODO: Make nullable
[JsonProperty("forcemerging")]
- public ForceMerging ForceMerging { get; set; }
+ public MergingFlag ForceMerging { get; set; }
///
/// Force nodump handling when loaded
///
/// TODO: Make nullable
[JsonProperty("forcenodump")]
- public ForceNodump ForceNodump { get; set; }
+ public NodumpFlag ForceNodump { get; set; }
///
/// Force output packing when loaded
///
/// TODO: Make nullable
[JsonProperty("forcepacking")]
- public ForcePacking ForcePacking { get; set; }
+ public PackingFlag ForcePacking { get; set; }
///
/// Read or write format
@@ -206,38 +206,41 @@ namespace SabreTools.Library.DatFiles
///
/// RomCenter rom mode
///
+ /// (merged|split|unmerged) "split"
[JsonProperty("rommode")]
- public string RomMode { get; set; } // (merged|split|unmerged) "split"
+ public MergingFlag RomMode { get; set; }
///
/// RomCenter bios mode
///
+ /// (merged|split|unmerged) "split"
[JsonProperty("biosmode")]
- public string BiosMode { get; set; } // (merged|split|unmerged) "split"
+ public MergingFlag BiosMode { get; set; }
///
/// RomCenter sample mode
///
+ /// (merged|unmerged) "merged"
[JsonProperty("samplemode")]
- public string SampleMode { get; set; } // (merged|unmerged) "merged"
+ public MergingFlag SampleMode { get; set; }
///
/// RomCenter lock rom mode
///
[JsonProperty("lockrommode")]
- public bool? LockRomMode { get; set; } // (yes|no) "no"
+ public bool? LockRomMode { get; set; }
///
/// RomCenter lock bios mode
///
[JsonProperty("lockbiosmode")]
- public bool? LockBiosMode { get; set; } // (yes|no) "no"
+ public bool? LockBiosMode { get; set; }
///
/// RomCenter lock sample mode
///
[JsonProperty("locksamplemode")]
- public bool? LockSampleMode { get; set; } // (yes|no) "no"
+ public bool? LockSampleMode { get; set; }
#endregion
@@ -537,13 +540,13 @@ namespace SabreTools.Library.DatFiles
if (!string.IsNullOrWhiteSpace(datHeader.Type))
Type = datHeader.Type;
- if (datHeader.ForceMerging != ForceMerging.None)
+ if (datHeader.ForceMerging != MergingFlag.None)
ForceMerging = datHeader.ForceMerging;
- if (datHeader.ForceNodump != ForceNodump.None)
+ if (datHeader.ForceNodump != NodumpFlag.None)
ForceNodump = datHeader.ForceNodump;
- if (datHeader.ForcePacking != ForcePacking.None)
+ if (datHeader.ForcePacking != PackingFlag.None)
ForcePacking = datHeader.ForcePacking;
if (datHeader.DatFormat != 0x00)
diff --git a/SabreTools.Library/DatFiles/Enums.cs b/SabreTools.Library/DatFiles/Enums.cs
index 517e0ea6..d29de789 100644
--- a/SabreTools.Library/DatFiles/Enums.cs
+++ b/SabreTools.Library/DatFiles/Enums.cs
@@ -196,39 +196,6 @@ namespace SabreTools.Library.DatFiles
SHA512,
}
- ///
- /// Determines forcemerging tag for DAT output
- ///
- public enum ForceMerging
- {
- None = 0,
- Split,
- Merged,
- NonMerged,
- Full,
- }
-
- ///
- /// Determines forcenodump tag for DAT output
- ///
- public enum ForceNodump
- {
- None = 0,
- Obsolete,
- Required,
- Ignore,
- }
-
- ///
- /// Determines forcepacking tag for DAT output
- ///
- public enum ForcePacking
- {
- None = 0,
- Zip,
- Unzip,
- }
-
///
/// Available hashing types
///
@@ -256,6 +223,39 @@ namespace SabreTools.Library.DatFiles
#endif
}
+ ///
+ /// Determines merging tag handling for DAT output
+ ///
+ public enum MergingFlag
+ {
+ None = 0,
+ Split,
+ Merged,
+ NonMerged,
+ Full,
+ }
+
+ ///
+ /// Determines nodump tag handling for DAT output
+ ///
+ public enum NodumpFlag
+ {
+ None = 0,
+ Obsolete,
+ Required,
+ Ignore,
+ }
+
+ ///
+ /// Determines packing tag handling for DAT output
+ ///
+ public enum PackingFlag
+ {
+ None = 0,
+ Zip,
+ Unzip,
+ }
+
///
/// Determines which files should be skipped in DFD
///
diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs
index b97f0b90..a4fffea6 100644
--- a/SabreTools.Library/DatFiles/Json.cs
+++ b/SabreTools.Library/DatFiles/Json.cs
@@ -194,20 +194,20 @@ namespace SabreTools.Library.DatFiles
break;
case "forcemerging":
- if (Header.ForceMerging == ForceMerging.None)
- Header.ForceMerging = jtr.ReadAsString().AsForceMerging();
+ if (Header.ForceMerging == MergingFlag.None)
+ Header.ForceMerging = jtr.ReadAsString().AsMergingFlag();
break;
case "forcenodump":
- if (Header.ForceNodump == ForceNodump.None)
- Header.ForceNodump = jtr.ReadAsString().AsForceNodump();
+ if (Header.ForceNodump == NodumpFlag.None)
+ Header.ForceNodump = jtr.ReadAsString().AsNodumpFlag();
break;
case "forcepacking":
- if (Header.ForcePacking == ForcePacking.None)
- Header.ForcePacking = jtr.ReadAsString().AsForcePacking();
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = jtr.ReadAsString().AsPackingFlag();
break;
@@ -236,17 +236,17 @@ namespace SabreTools.Library.DatFiles
case "rommode":
content = jtr.ReadAsString();
- Header.RomMode = (Header.RomMode == null ? content : Header.RomMode);
+ Header.RomMode = (Header.RomMode == MergingFlag.None ? content.AsMergingFlag() : Header.RomMode);
break;
case "biosmode":
content = jtr.ReadAsString();
- Header.BiosMode = (Header.BiosMode == null ? content : Header.BiosMode);
+ Header.BiosMode = (Header.BiosMode == MergingFlag.None ? content.AsMergingFlag() : Header.BiosMode);
break;
case "samplemode":
content = jtr.ReadAsString();
- Header.Build = (Header.SampleMode == null ? content : Header.SampleMode);
+ Header.SampleMode = (Header.SampleMode == MergingFlag.None ? content.AsMergingFlag() : Header.SampleMode);
break;
case "lockrommode":
@@ -1083,50 +1083,50 @@ namespace SabreTools.Library.DatFiles
jtw.WritePropertyName("type");
jtw.WriteValue(Header.Type);
}
- if (Header.ForceMerging != ForceMerging.None)
+ if (Header.ForceMerging != MergingFlag.None)
{
jtw.WritePropertyName("forcemerging");
switch (Header.ForceMerging)
{
- case ForceMerging.Full:
+ case MergingFlag.Full:
jtw.WriteValue("full");
break;
- case ForceMerging.Split:
+ case MergingFlag.Split:
jtw.WriteValue("split");
break;
- case ForceMerging.Merged:
+ case MergingFlag.Merged:
jtw.WriteValue("merged");
break;
- case ForceMerging.NonMerged:
+ case MergingFlag.NonMerged:
jtw.WriteValue("nonmerged");
break;
}
}
- if (Header.ForcePacking != ForcePacking.None)
+ if (Header.ForcePacking != PackingFlag.None)
{
jtw.WritePropertyName("forcepacking");
switch (Header.ForcePacking)
{
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
jtw.WriteValue("unzip");
break;
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
jtw.WriteValue("zip");
break;
}
}
- if (Header.ForceNodump != ForceNodump.None)
+ if (Header.ForceNodump != NodumpFlag.None)
{
jtw.WritePropertyName("forcenodump");
switch (Header.ForceNodump)
{
- case ForceNodump.Ignore:
+ case NodumpFlag.Ignore:
jtw.WriteValue("ignore");
break;
- case ForceNodump.Obsolete:
+ case NodumpFlag.Obsolete:
jtw.WriteValue("obsolete");
break;
- case ForceNodump.Required:
+ case NodumpFlag.Required:
jtw.WriteValue("required");
break;
}
@@ -1171,22 +1171,52 @@ namespace SabreTools.Library.DatFiles
jtw.WriteValue(Header.Build);
}
- if (!string.IsNullOrWhiteSpace(Header.RomMode))
+ if (Header.RomMode != MergingFlag.None)
{
jtw.WritePropertyName("rommode");
- jtw.WriteValue(Header.RomMode);
+ switch (Header.RomMode)
+ {
+ case MergingFlag.Split:
+ jtw.WriteValue("split");
+ break;
+ case MergingFlag.Merged:
+ jtw.WriteValue("merged");
+ break;
+ case MergingFlag.NonMerged:
+ jtw.WriteValue("unmerged");
+ break;
+ }
}
- if (!string.IsNullOrWhiteSpace(Header.BiosMode))
+ if (Header.BiosMode != MergingFlag.None)
{
jtw.WritePropertyName("biosmode");
- jtw.WriteValue(Header.BiosMode);
+ switch (Header.BiosMode)
+ {
+ case MergingFlag.Split:
+ jtw.WriteValue("split");
+ break;
+ case MergingFlag.Merged:
+ jtw.WriteValue("merged");
+ break;
+ case MergingFlag.NonMerged:
+ jtw.WriteValue("unmerged");
+ break;
+ }
}
- if (!string.IsNullOrWhiteSpace(Header.SampleMode))
+ if (Header.SampleMode != MergingFlag.None)
{
jtw.WritePropertyName("samplemode");
- jtw.WriteValue(Header.SampleMode);
+ switch (Header.SampleMode)
+ {
+ case MergingFlag.Merged:
+ jtw.WriteValue("merged");
+ break;
+ case MergingFlag.NonMerged:
+ jtw.WriteValue("unmerged");
+ break;
+ }
}
if (Header.LockRomMode != null)
diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs
index 4679d024..616abe26 100644
--- a/SabreTools.Library/DatFiles/Logiqx.cs
+++ b/SabreTools.Library/DatFiles/Logiqx.cs
@@ -221,14 +221,14 @@ namespace SabreTools.Library.DatFiles
if (Header.HeaderSkipper == null)
Header.HeaderSkipper = reader.GetAttribute("header");
- if (Header.ForceMerging == ForceMerging.None)
- Header.ForceMerging = reader.GetAttribute("forcemerging").AsForceMerging();
+ if (Header.ForceMerging == MergingFlag.None)
+ Header.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag();
- if (Header.ForceNodump == ForceNodump.None)
- Header.ForceNodump = reader.GetAttribute("forcenodump").AsForceNodump();
+ if (Header.ForceNodump == NodumpFlag.None)
+ Header.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag();
- if (Header.ForcePacking == ForcePacking.None)
- Header.ForcePacking = reader.GetAttribute("forcepacking").AsForcePacking();
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag();
reader.Read();
break;
@@ -238,13 +238,13 @@ namespace SabreTools.Library.DatFiles
Header.System = reader.GetAttribute("plugin");
if (Header.RomMode == null)
- Header.RomMode = reader.GetAttribute("rommode");
+ Header.RomMode = reader.GetAttribute("rommode").AsMergingFlag();
if (Header.BiosMode == null)
- Header.BiosMode = reader.GetAttribute("biosmode");
+ Header.BiosMode = reader.GetAttribute("biosmode").AsMergingFlag();
if (Header.SampleMode == null)
- Header.SampleMode = reader.GetAttribute("samplemode");
+ Header.SampleMode = reader.GetAttribute("samplemode").AsMergingFlag();
if (Header.LockRomMode == null)
Header.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo();
@@ -799,47 +799,47 @@ namespace SabreTools.Library.DatFiles
if (!string.IsNullOrWhiteSpace(Header.Type))
xtw.WriteElementString("type", Header.Type);
- if (Header.ForcePacking != ForcePacking.None
- || Header.ForceMerging != ForceMerging.None
- || Header.ForceNodump != ForceNodump.None
+ if (Header.ForcePacking != PackingFlag.None
+ || Header.ForceMerging != MergingFlag.None
+ || Header.ForceNodump != NodumpFlag.None
|| !string.IsNullOrWhiteSpace(Header.HeaderSkipper))
{
xtw.WriteStartElement("clrmamepro");
switch (Header.ForcePacking)
{
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
xtw.WriteAttributeString("forcepacking", "unzip");
break;
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
xtw.WriteAttributeString("forcepacking", "zip");
break;
}
switch (Header.ForceMerging)
{
- case ForceMerging.Full:
+ case MergingFlag.Full:
xtw.WriteAttributeString("forcemerging", "full");
break;
- case ForceMerging.Split:
+ case MergingFlag.Split:
xtw.WriteAttributeString("forcemerging", "split");
break;
- case ForceMerging.Merged:
+ case MergingFlag.Merged:
xtw.WriteAttributeString("forcemerging", "merged");
break;
- case ForceMerging.NonMerged:
+ case MergingFlag.NonMerged:
xtw.WriteAttributeString("forcemerging", "nonmerged");
break;
}
switch (Header.ForceNodump)
{
- case ForceNodump.Ignore:
+ case NodumpFlag.Ignore:
xtw.WriteAttributeString("forcenodump", "ignore");
break;
- case ForceNodump.Obsolete:
+ case NodumpFlag.Obsolete:
xtw.WriteAttributeString("forcenodump", "obsolete");
break;
- case ForceNodump.Required:
+ case NodumpFlag.Required:
xtw.WriteAttributeString("forcenodump", "required");
break;
}
@@ -852,23 +852,50 @@ namespace SabreTools.Library.DatFiles
}
if (Header.System != null
- || Header.RomMode != null || Header.LockRomMode != null
- || Header.BiosMode != null || Header.LockBiosMode != null
- || Header.SampleMode != null || Header.LockSampleMode != null)
+ || Header.RomMode != MergingFlag.None || Header.LockRomMode != null
+ || Header.BiosMode != MergingFlag.None || Header.LockBiosMode != null
+ || Header.SampleMode != MergingFlag.None || 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);
+ switch (Header.RomMode)
+ {
+ case MergingFlag.Split:
+ xtw.WriteAttributeString("rommode", "split");
+ break;
+ case MergingFlag.Merged:
+ xtw.WriteAttributeString("rommode", "merged");
+ break;
+ case MergingFlag.NonMerged:
+ xtw.WriteAttributeString("rommode", "unmerged");
+ break;
+ }
- if (!string.IsNullOrWhiteSpace(Header.BiosMode))
- xtw.WriteAttributeString("biosmode", Header.BiosMode);
+ switch (Header.BiosMode)
+ {
+ case MergingFlag.Split:
+ xtw.WriteAttributeString("biosmode", "split");
+ break;
+ case MergingFlag.Merged:
+ xtw.WriteAttributeString("biosmode", "merged");
+ break;
+ case MergingFlag.NonMerged:
+ xtw.WriteAttributeString("biosmode", "unmerged");
+ break;
+ }
- if (!string.IsNullOrWhiteSpace(Header.SampleMode))
- xtw.WriteAttributeString("samplemode", Header.SampleMode);
+ switch (Header.SampleMode)
+ {
+ case MergingFlag.Merged:
+ xtw.WriteAttributeString("samplemode", "merged");
+ break;
+ case MergingFlag.NonMerged:
+ xtw.WriteAttributeString("samplemode", "unmerged");
+ break;
+ }
if (Header.LockRomMode != null)
{
diff --git a/SabreTools.Library/DatFiles/RomCenter.cs b/SabreTools.Library/DatFiles/RomCenter.cs
index 8f09bd0b..31918b85 100644
--- a/SabreTools.Library/DatFiles/RomCenter.cs
+++ b/SabreTools.Library/DatFiles/RomCenter.cs
@@ -212,15 +212,15 @@ namespace SabreTools.Library.DatFiles
break;
case "split":
- if (Header.ForceMerging == ForceMerging.None && kvp?.Value == "1")
- Header.ForceMerging = ForceMerging.Split;
+ if (Header.ForceMerging == MergingFlag.None && kvp?.Value == "1")
+ Header.ForceMerging = MergingFlag.Split;
reader.ReadNextLine();
break;
case "merge":
- if (Header.ForceMerging == ForceMerging.None && kvp?.Value == "1")
- Header.ForceMerging = ForceMerging.Merged;
+ if (Header.ForceMerging == MergingFlag.None && kvp?.Value == "1")
+ Header.ForceMerging = MergingFlag.Merged;
reader.ReadNextLine();
break;
@@ -475,8 +475,8 @@ namespace SabreTools.Library.DatFiles
iw.WriteSection("DAT");
iw.WriteKeyValuePair("version", Header.RomCenterVersion ?? "2.50");
iw.WriteKeyValuePair("plugin", Header.System);
- iw.WriteKeyValuePair("split", Header.ForceMerging == ForceMerging.Split ? "1" : "0");
- iw.WriteKeyValuePair("merge", Header.ForceMerging == ForceMerging.Full || Header.ForceMerging == ForceMerging.Merged ? "1" : "0");
+ iw.WriteKeyValuePair("split", Header.ForceMerging == MergingFlag.Split ? "1" : "0");
+ iw.WriteKeyValuePair("merge", Header.ForceMerging == MergingFlag.Full || Header.ForceMerging == MergingFlag.Merged ? "1" : "0");
iw.WriteSection("EMULATOR");
iw.WriteKeyValuePair("refname", Header.Name);
diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs
index 1efef8a4..b01f47c0 100644
--- a/SabreTools.Library/DatFiles/SabreDat.cs
+++ b/SabreTools.Library/DatFiles/SabreDat.cs
@@ -516,20 +516,20 @@ namespace SabreTools.Library.DatFiles
break;
case "forcemerging":
- if (Header.ForceMerging == ForceMerging.None)
- Header.ForceMerging = content.AsForceMerging();
+ if (Header.ForceMerging == MergingFlag.None)
+ Header.ForceMerging = content.AsMergingFlag();
break;
case "forcenodump":
- if (Header.ForceNodump == ForceNodump.None)
- Header.ForceNodump = content.AsForceNodump();
+ if (Header.ForceNodump == NodumpFlag.None)
+ Header.ForceNodump = content.AsNodumpFlag();
break;
case "forcepacking":
- if (Header.ForcePacking == ForcePacking.None)
- Header.ForcePacking = content.AsForcePacking();
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = content.AsPackingFlag();
break;
}
@@ -676,9 +676,9 @@ namespace SabreTools.Library.DatFiles
if (!string.IsNullOrWhiteSpace(Header.Comment))
xtw.WriteElementString("comment", Header.Comment);
if (!string.IsNullOrWhiteSpace(Header.Type)
- || Header.ForcePacking != ForcePacking.None
- || Header.ForceMerging != ForceMerging.None
- || Header.ForceNodump != ForceNodump.None)
+ || Header.ForcePacking != PackingFlag.None
+ || Header.ForceMerging != MergingFlag.None
+ || Header.ForceNodump != NodumpFlag.None)
{
xtw.WriteStartElement("flags");
@@ -692,13 +692,13 @@ namespace SabreTools.Library.DatFiles
switch (Header.ForcePacking)
{
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcepacking");
xtw.WriteAttributeString("value", "unzip");
xtw.WriteEndElement();
break;
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcepacking");
xtw.WriteAttributeString("value", "zip");
@@ -708,25 +708,25 @@ namespace SabreTools.Library.DatFiles
switch (Header.ForceMerging)
{
- case ForceMerging.Full:
+ case MergingFlag.Full:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "full");
xtw.WriteEndElement();
break;
- case ForceMerging.Split:
+ case MergingFlag.Split:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "split");
xtw.WriteEndElement();
break;
- case ForceMerging.Merged:
+ case MergingFlag.Merged:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "merged");
xtw.WriteEndElement();
break;
- case ForceMerging.NonMerged:
+ case MergingFlag.NonMerged:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "nonmerged");
@@ -736,19 +736,19 @@ namespace SabreTools.Library.DatFiles
switch (Header.ForceNodump)
{
- case ForceNodump.Ignore:
+ case NodumpFlag.Ignore:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", "ignore");
xtw.WriteEndElement();
break;
- case ForceNodump.Obsolete:
+ case NodumpFlag.Obsolete:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", "obsolete");
xtw.WriteEndElement();
break;
- case ForceNodump.Required:
+ case NodumpFlag.Required:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", "required");
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index 20d27c3c..77558764 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -175,15 +175,15 @@ namespace SabreTools.Library.DatFiles
break;
case "DatFile.ForceMerging":
- Header.ForceMerging = (Header.ForceMerging == ForceMerging.None ? value.AsForceMerging() : Header.ForceMerging);
+ Header.ForceMerging = (Header.ForceMerging == MergingFlag.None ? value.AsMergingFlag() : Header.ForceMerging);
break;
case "DatFile.ForceNodump":
- Header.ForceNodump = (Header.ForceNodump == ForceNodump.None ? value.AsForceNodump() : Header.ForceNodump);
+ Header.ForceNodump = (Header.ForceNodump == NodumpFlag.None ? value.AsNodumpFlag() : Header.ForceNodump);
break;
case "DatFile.ForcePacking":
- Header.ForcePacking = (Header.ForcePacking == ForcePacking.None ? value.AsForcePacking() : Header.ForcePacking);
+ Header.ForcePacking = (Header.ForcePacking == PackingFlag.None ? value.AsPackingFlag() : Header.ForcePacking);
break;
#endregion
@@ -207,15 +207,15 @@ namespace SabreTools.Library.DatFiles
break;
case "DatFile.RomMode":
- Header.RomMode = (Header.RomMode == null ? value : Header.RomMode);
+ Header.RomMode = (Header.RomMode == MergingFlag.None ? value.AsMergingFlag() : Header.RomMode);
break;
case "DatFile.BiosMode":
- Header.BiosMode = (Header.BiosMode == null ? value : Header.BiosMode);
+ Header.BiosMode = (Header.BiosMode == MergingFlag.None ? value.AsMergingFlag() : Header.BiosMode);
break;
case "DatFile.SampleMode":
- Header.SampleMode = (Header.SampleMode == null ? value : Header.SampleMode);
+ Header.SampleMode = (Header.SampleMode == MergingFlag.None ? value.AsMergingFlag() : Header.SampleMode);
break;
case "DatFile.LockRomMode":
diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs
index 8c76f0e2..cfeedf3b 100644
--- a/SabreTools.Library/DatFiles/SoftwareList.cs
+++ b/SabreTools.Library/DatFiles/SoftwareList.cs
@@ -64,14 +64,14 @@ namespace SabreTools.Library.DatFiles
case "softwarelist":
Header.Name = (Header.Name == null ? xtr.GetAttribute("name") ?? string.Empty : Header.Name);
Header.Description = (Header.Description == null ? xtr.GetAttribute("description") ?? string.Empty : Header.Description);
- if (Header.ForceMerging == ForceMerging.None)
- Header.ForceMerging = xtr.GetAttribute("forcemerging").AsForceMerging();
+ if (Header.ForceMerging == MergingFlag.None)
+ Header.ForceMerging = xtr.GetAttribute("forcemerging").AsMergingFlag();
- if (Header.ForceNodump == ForceNodump.None)
- Header.ForceNodump = xtr.GetAttribute("forcenodump").AsForceNodump();
+ if (Header.ForceNodump == NodumpFlag.None)
+ Header.ForceNodump = xtr.GetAttribute("forcenodump").AsNodumpFlag();
- if (Header.ForcePacking == ForcePacking.None)
- Header.ForcePacking = xtr.GetAttribute("forcepacking").AsForcePacking();
+ if (Header.ForcePacking == PackingFlag.None)
+ Header.ForcePacking = xtr.GetAttribute("forcepacking").AsPackingFlag();
xtr.Read();
break;
@@ -644,39 +644,39 @@ namespace SabreTools.Library.DatFiles
switch (Header.ForcePacking)
{
- case ForcePacking.Unzip:
+ case PackingFlag.Unzip:
xtw.WriteAttributeString("forcepacking", "unzip");
break;
- case ForcePacking.Zip:
+ case PackingFlag.Zip:
xtw.WriteAttributeString("forcepacking", "zip");
break;
}
switch (Header.ForceMerging)
{
- case ForceMerging.Full:
+ case MergingFlag.Full:
xtw.WriteAttributeString("forcemerging", "full");
break;
- case ForceMerging.Split:
+ case MergingFlag.Split:
xtw.WriteAttributeString("forcemerging", "split");
break;
- case ForceMerging.Merged:
+ case MergingFlag.Merged:
xtw.WriteAttributeString("forcemerging", "merged");
break;
- case ForceMerging.NonMerged:
+ case MergingFlag.NonMerged:
xtw.WriteAttributeString("forcemerging", "nonmerged");
break;
}
switch (Header.ForceNodump)
{
- case ForceNodump.Ignore:
+ case NodumpFlag.Ignore:
xtw.WriteAttributeString("forcenodump", "ignore");
break;
- case ForceNodump.Obsolete:
+ case NodumpFlag.Obsolete:
xtw.WriteAttributeString("forcenodump", "obsolete");
break;
- case ForceNodump.Required:
+ case NodumpFlag.Required:
xtw.WriteAttributeString("forcenodump", "required");
break;
}
diff --git a/SabreTools.Library/Tools/Converters.cs b/SabreTools.Library/Tools/Converters.cs
index 3bd6bd29..e86765ae 100644
--- a/SabreTools.Library/Tools/Converters.cs
+++ b/SabreTools.Library/Tools/Converters.cs
@@ -357,106 +357,6 @@ namespace SabreTools.Library.Tools
}
}
- ///
- /// Get ForceMerging value from input string
- ///
- /// String to get value from
- /// ForceMerging value corresponding to the string
- public static ForceMerging AsForceMerging(this string forcemerge)
- {
-#if NET_FRAMEWORK
- switch (forcemerge?.ToLowerInvariant())
- {
- case "split":
- return ForceMerging.Split;
- case "merged":
- return ForceMerging.Merged;
- case "nonmerged":
- return ForceMerging.NonMerged;
- case "full":
- return ForceMerging.Full;
- case "none":
- default:
- return ForceMerging.None;
- }
-#else
- return forcemerge?.ToLowerInvariant() switch
- {
- "split" => ForceMerging.Split,
- "merged" => ForceMerging.Merged,
- "nonmerged" => ForceMerging.NonMerged,
- "full" => ForceMerging.Full,
- "none" => ForceMerging.None,
- _ => ForceMerging.None,
- };
-#endif
- }
-
- ///
- /// Get ForceNodump value from input string
- ///
- /// String to get value from
- /// ForceNodump value corresponding to the string
- public static ForceNodump AsForceNodump(this string forcend)
- {
-#if NET_FRAMEWORK
- switch (forcend?.ToLowerInvariant())
- {
- case "obsolete":
- return ForceNodump.Obsolete;
- case "required":
- return ForceNodump.Required;
- case "ignore":
- return ForceNodump.Ignore;
- case "none":
- default:
- return ForceNodump.None;
- }
-#else
- return forcend?.ToLowerInvariant() switch
- {
- "obsolete" => ForceNodump.Obsolete,
- "required" => ForceNodump.Required,
- "ignore" => ForceNodump.Ignore,
- "none" => ForceNodump.None,
- _ => ForceNodump.None,
- };
-#endif
- }
-
- ///
- /// Get ForcePacking value from input string
- ///
- /// String to get value from
- /// ForcePacking value corresponding to the string
- public static ForcePacking AsForcePacking(this string forcepack)
- {
-#if NET_FRAMEWORK
- switch (forcepack?.ToLowerInvariant())
- {
- case "yes":
- case "zip":
- return ForcePacking.Zip;
- case "no":
- case "unzip":
- return ForcePacking.Unzip;
- case "none":
- default:
- return ForcePacking.None;
- }
-#else
- return forcepack?.ToLowerInvariant() switch
- {
- "yes" => ForcePacking.Zip,
- "zip" => ForcePacking.Zip,
- "no" => ForcePacking.Unzip,
- "unzip" => ForcePacking.Unzip,
- "none" => ForcePacking.None,
- _ => ForcePacking.None,
- };
-#endif
- }
-
///
/// Get ItemStatus value from input string
///
@@ -574,36 +474,138 @@ namespace SabreTools.Library.Tools
#endif
}
+ ///
+ /// Get MergingFlag value from input string
+ ///
+ /// String to get value from
+ /// MergingFlag value corresponding to the string
+ public static MergingFlag AsMergingFlag(this string merging)
+ {
+#if NET_FRAMEWORK
+ switch (merging?.ToLowerInvariant())
+ {
+ case "split":
+ return MergingFlag.Split;
+ case "merged":
+ return MergingFlag.Merged;
+ case "nonmerged":
+ case "unmerged":
+ return MergingFlag.NonMerged;
+ case "full":
+ return MergingFlag.Full;
+ case "none":
+ default:
+ return MergingFlag.None;
+ }
+#else
+ return merging?.ToLowerInvariant() switch
+ {
+ "split" => MergingFlag.Split,
+ "merged" => MergingFlag.Merged,
+ "nonmerged" => MergingFlag.NonMerged,
+ "unmerged" => MergingFlag.NonMerged,
+ "full" => MergingFlag.Full,
+ "none" => MergingFlag.None,
+ _ => MergingFlag.None,
+ };
+#endif
+ }
+
+ ///
+ /// Get NodumpFlag value from input string
+ ///
+ /// String to get value from
+ /// NodumpFlag value corresponding to the string
+ public static NodumpFlag AsNodumpFlag(this string nodump)
+ {
+#if NET_FRAMEWORK
+ switch (nodump?.ToLowerInvariant())
+ {
+ case "obsolete":
+ return NodumpFlag.Obsolete;
+ case "required":
+ return NodumpFlag.Required;
+ case "ignore":
+ return NodumpFlag.Ignore;
+ case "none":
+ default:
+ return NodumpFlag.None;
+ }
+#else
+ return nodump?.ToLowerInvariant() switch
+ {
+ "obsolete" => NodumpFlag.Obsolete,
+ "required" => NodumpFlag.Required,
+ "ignore" => NodumpFlag.Ignore,
+ "none" => NodumpFlag.None,
+ _ => NodumpFlag.None,
+ };
+#endif
+ }
+
+ ///
+ /// Get PackingFlag value from input string
+ ///
+ /// String to get value from
+ /// PackingFlag value corresponding to the string
+ public static PackingFlag AsPackingFlag(this string packing)
+ {
+#if NET_FRAMEWORK
+ switch (packing?.ToLowerInvariant())
+ {
+ case "yes":
+ case "zip":
+ return PackingFlag.Zip;
+ case "no":
+ case "unzip":
+ return PackingFlag.Unzip;
+ case "none":
+ default:
+ return PackingFlag.None;
+ }
+#else
+ return packing?.ToLowerInvariant() switch
+ {
+ "yes" => PackingFlag.Zip,
+ "zip" => PackingFlag.Zip,
+ "no" => PackingFlag.Unzip,
+ "unzip" => PackingFlag.Unzip,
+ "none" => PackingFlag.None,
+ _ => PackingFlag.None,
+ };
+#endif
+ }
+
///
/// Get SplitType value from input ForceMerging
///
/// ForceMerging to get value from
/// SplitType value corresponding to the string
- public static SplitType AsSplitType(this ForceMerging forceMerging)
+ public static SplitType AsSplitType(this MergingFlag forceMerging)
{
#if NET_FRAMEWORK
switch (forceMerging)
{
- case ForceMerging.Split:
+ case MergingFlag.Split:
return SplitType.Split;
- case ForceMerging.Merged:
+ case MergingFlag.Merged:
return SplitType.Merged;
- case ForceMerging.NonMerged:
+ case MergingFlag.NonMerged:
return SplitType.NonMerged;
- case ForceMerging.Full:
+ case MergingFlag.Full:
return SplitType.FullNonMerged;
- case ForceMerging.None:
+ case MergingFlag.None:
default:
return SplitType.None;
}
#else
return forceMerging switch
{
- ForceMerging.Split => SplitType.Split,
- ForceMerging.Merged => SplitType.Merged,
- ForceMerging.NonMerged => SplitType.NonMerged,
- ForceMerging.Full => SplitType.FullNonMerged,
- ForceMerging.None => SplitType.None,
+ MergingFlag.Split => SplitType.Split,
+ MergingFlag.Merged => SplitType.Merged,
+ MergingFlag.NonMerged => SplitType.NonMerged,
+ MergingFlag.Full => SplitType.FullNonMerged,
+ MergingFlag.None => SplitType.None,
_ => SplitType.None,
};
#endif
diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs
index 32b4fe7f..bee4df30 100644
--- a/SabreTools/Features/BaseFeature.cs
+++ b/SabreTools/Features/BaseFeature.cs
@@ -2634,6 +2634,7 @@ Some special strings that can be used:
///
private DatHeader GetDatHeader(Dictionary features)
{
+ // TODO: Sort this by region, like the actual header
DatHeader datHeader = new DatHeader
{
AddExtension = GetString(features, AddExtensionStringValue),
@@ -2645,9 +2646,9 @@ Some special strings that can be used:
Description = GetString(features, DescriptionStringValue),
Email = GetString(features, EmailStringValue),
FileName = GetString(features, FilenameStringValue),
- ForceMerging = GetString(features, ForceMergingStringValue).AsForceMerging(),
- ForceNodump = GetString(features, ForceNodumpStringValue).AsForceNodump(),
- ForcePacking = GetString(features, ForcePackingStringValue).AsForcePacking(),
+ ForceMerging = GetString(features, ForceMergingStringValue).AsMergingFlag(),
+ ForceNodump = GetString(features, ForceNodumpStringValue).AsNodumpFlag(),
+ ForcePacking = GetString(features, ForcePackingStringValue).AsPackingFlag(),
GameName = GetBoolean(features, GamePrefixValue),
HeaderSkipper = GetString(features, HeaderStringValue),
Homepage = GetString(features, HomepageStringValue),