mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Fix JSON read/write, XML write
This commit is contained in:
@@ -721,19 +721,19 @@ namespace SabreTools.Library.DatFiles
|
||||
cmpw.WriteStartElement("disk");
|
||||
cmpw.WriteAttributeString("name", disk.Name);
|
||||
if (!string.IsNullOrWhiteSpace(disk.MD5))
|
||||
cmpw.WriteAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("md5", disk.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(disk.RIPEMD160))
|
||||
cmpw.WriteAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("ripemd160", disk.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(disk.SHA1))
|
||||
cmpw.WriteAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha1", disk.SHA1?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(disk.SHA256))
|
||||
cmpw.WriteAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(disk.SHA384))
|
||||
cmpw.WriteAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(disk.SHA512))
|
||||
cmpw.WriteAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
if (disk.ItemStatus != ItemStatus.None)
|
||||
cmpw.WriteAttributeString("flags", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
@@ -761,21 +761,21 @@ namespace SabreTools.Library.DatFiles
|
||||
if (rom.Size != -1)
|
||||
cmpw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(rom.CRC))
|
||||
cmpw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("crc", rom.CRC?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.MD5))
|
||||
cmpw.WriteAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("md5", rom.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(rom.RIPEMD160))
|
||||
cmpw.WriteAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("ripemd160", rom.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(rom.SHA1))
|
||||
cmpw.WriteAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha1", rom.SHA1?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.SHA256))
|
||||
cmpw.WriteAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha256", rom.SHA256?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.SHA384))
|
||||
cmpw.WriteAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.SHA512))
|
||||
cmpw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.Date))
|
||||
cmpw.WriteAttributeString("date", rom.Date);
|
||||
if (rom.ItemStatus != ItemStatus.None)
|
||||
|
||||
@@ -2166,7 +2166,7 @@ namespace SabreTools.Library.DatFiles
|
||||
});
|
||||
|
||||
// Now find all folders that are empty, if we are supposed to
|
||||
if (!Header.OutputDepot.IsActive && addBlanks)
|
||||
if (!(Header.OutputDepot?.IsActive ?? false) && addBlanks)
|
||||
{
|
||||
List<string> empties = DirectoryExtensions.ListEmpty(basePath);
|
||||
Parallel.ForEach(empties, Globals.ParallelOptions, dir =>
|
||||
@@ -2245,7 +2245,7 @@ namespace SabreTools.Library.DatFiles
|
||||
bool copyFiles)
|
||||
{
|
||||
// Special case for if we are in Depot mode (all names are supposed to be SHA-1 hashes)
|
||||
if (Header.OutputDepot.IsActive)
|
||||
if (Header.OutputDepot?.IsActive ?? false)
|
||||
{
|
||||
GZipArchive gzarc = new GZipArchive(item);
|
||||
BaseFile baseFile = gzarc.GetTorrentGZFileInfo();
|
||||
@@ -3841,7 +3841,7 @@ namespace SabreTools.Library.DatFiles
|
||||
string post = CreatePrefixPostfix(item, false);
|
||||
|
||||
// If we're in Depot mode, take care of that instead
|
||||
if (Header.OutputDepot.IsActive)
|
||||
if (Header.OutputDepot?.IsActive ?? false)
|
||||
{
|
||||
if (item.ItemType == ItemType.Rom)
|
||||
{
|
||||
@@ -3928,27 +3928,27 @@ namespace SabreTools.Library.DatFiles
|
||||
// Ensure we have the proper values for replacement
|
||||
if (item.ItemType == ItemType.Rom)
|
||||
{
|
||||
crc = ((Rom)item).CRC;
|
||||
md5 = ((Rom)item).MD5;
|
||||
crc = ((Rom)item).CRC ?? string.Empty;
|
||||
md5 = ((Rom)item).MD5 ?? string.Empty;
|
||||
#if NET_FRAMEWORK
|
||||
ripemd160 = ((Rom)item).RIPEMD160;
|
||||
ripemd160 = ((Rom)item).RIPEMD160 ?? string.Empty;
|
||||
#endif
|
||||
sha1 = ((Rom)item).SHA1;
|
||||
sha256 = ((Rom)item).SHA256;
|
||||
sha384 = ((Rom)item).SHA384;
|
||||
sha512 = ((Rom)item).SHA512;
|
||||
sha1 = ((Rom)item).SHA1 ?? string.Empty;
|
||||
sha256 = ((Rom)item).SHA256 ?? string.Empty;
|
||||
sha384 = ((Rom)item).SHA384 ?? string.Empty;
|
||||
sha512 = ((Rom)item).SHA512 ?? string.Empty;
|
||||
size = ((Rom)item).Size.ToString();
|
||||
}
|
||||
else if (item.ItemType == ItemType.Disk)
|
||||
{
|
||||
md5 = ((Disk)item).MD5;
|
||||
md5 = ((Disk)item).MD5 ?? string.Empty;
|
||||
#if NET_FRAMEWORK
|
||||
ripemd160 = ((Disk)item).RIPEMD160;
|
||||
ripemd160 = ((Disk)item).RIPEMD160 ?? string.Empty;
|
||||
#endif
|
||||
sha1 = ((Disk)item).SHA1;
|
||||
sha256 = ((Disk)item).SHA256;
|
||||
sha384 = ((Disk)item).SHA384;
|
||||
sha512 = ((Disk)item).SHA512;
|
||||
sha1 = ((Disk)item).SHA1 ?? string.Empty;
|
||||
sha256 = ((Disk)item).SHA256 ?? string.Empty;
|
||||
sha384 = ((Disk)item).SHA384 ?? string.Empty;
|
||||
sha512 = ((Disk)item).SHA512 ?? string.Empty;
|
||||
}
|
||||
|
||||
// Now do bulk replacement where possible
|
||||
@@ -3956,9 +3956,9 @@ namespace SabreTools.Library.DatFiles
|
||||
.Replace("%game%", game)
|
||||
.Replace("%machine%", game)
|
||||
.Replace("%name%", name)
|
||||
.Replace("%manufacturer%", item.Machine.Manufacturer)
|
||||
.Replace("%publisher%", item.Machine.Publisher)
|
||||
.Replace("%category%", item.Machine.Category)
|
||||
.Replace("%manufacturer%", item.Machine.Manufacturer ?? string.Empty)
|
||||
.Replace("%publisher%", item.Machine.Publisher ?? string.Empty)
|
||||
.Replace("%category%", item.Machine.Category ?? string.Empty)
|
||||
.Replace("%crc%", crc)
|
||||
.Replace("%md5%", md5)
|
||||
.Replace("%ripemd160%", ripemd160)
|
||||
|
||||
@@ -21,106 +21,103 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <summary>
|
||||
/// External name of the DAT
|
||||
/// </summary>
|
||||
[JsonProperty("filename")]
|
||||
[JsonProperty("filename", DefaultValueHandling = DefaultValueHandling.Include)]
|
||||
public string FileName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Internal name of the DAT
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
[JsonProperty("name", DefaultValueHandling = DefaultValueHandling.Include)]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DAT description
|
||||
/// </summary>
|
||||
[JsonProperty("description")]
|
||||
[JsonProperty("description", DefaultValueHandling = DefaultValueHandling.Include)]
|
||||
public string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Root directory for the files; currently TruRip/EmuARC-exclusive
|
||||
/// </summary>
|
||||
[JsonProperty("rootdir")]
|
||||
[JsonProperty("rootdir", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string RootDir { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// General category of items found in the DAT
|
||||
/// </summary>
|
||||
[JsonProperty("category")]
|
||||
[JsonProperty("category", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Version of the DAT
|
||||
/// </summary>
|
||||
[JsonProperty("version")]
|
||||
[JsonProperty("version", DefaultValueHandling = DefaultValueHandling.Include)]
|
||||
public string Version { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Creation or modification date
|
||||
/// </summary>
|
||||
[JsonProperty("date")]
|
||||
[JsonProperty("date", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// List of authors who contributed to the DAT
|
||||
/// </summary>
|
||||
[JsonProperty("author")]
|
||||
[JsonProperty("author", DefaultValueHandling = DefaultValueHandling.Include)]
|
||||
public string Author { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Email address for DAT author(s)
|
||||
/// </summary>
|
||||
[JsonProperty("email")]
|
||||
[JsonProperty("email", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Author or distribution homepage name
|
||||
/// </summary>
|
||||
[JsonProperty("homepage")]
|
||||
[JsonProperty("homepage", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Homepage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Author or distribution URL
|
||||
/// </summary>
|
||||
[JsonProperty("url")]
|
||||
[JsonProperty("url", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Url { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Any comment that does not already fit an existing field
|
||||
/// </summary>
|
||||
[JsonProperty("comment")]
|
||||
[JsonProperty("comment", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Header skipper to be used when loading the DAT
|
||||
/// </summary>
|
||||
[JsonProperty("header")]
|
||||
[JsonProperty("header", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string HeaderSkipper { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Classification of the DAT. Generally only used for SuperDAT
|
||||
/// </summary>
|
||||
[JsonProperty("type")]
|
||||
[JsonProperty("type", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Force a merging style when loaded
|
||||
/// </summary>
|
||||
/// TODO: Make nullable
|
||||
[JsonProperty("forcemerging")]
|
||||
[JsonProperty("forcemerging", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public MergingFlag ForceMerging { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Force nodump handling when loaded
|
||||
/// </summary>
|
||||
/// TODO: Make nullable
|
||||
[JsonProperty("forcenodump")]
|
||||
[JsonProperty("forcenodump", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public NodumpFlag ForceNodump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Force output packing when loaded
|
||||
/// </summary>
|
||||
/// TODO: Make nullable
|
||||
[JsonProperty("forcepacking")]
|
||||
[JsonProperty("forcepacking", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public PackingFlag ForcePacking { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@@ -185,13 +182,13 @@ namespace SabreTools.Library.DatFiles
|
||||
/// Debug build flag
|
||||
/// </summary>
|
||||
/// <remarks>Also in Logiqx</remarks>
|
||||
[JsonProperty("debug")]
|
||||
public bool? Debug { get; set; } = false;
|
||||
[JsonProperty("debug", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public bool? Debug { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// MAME configuration name
|
||||
/// </summary>
|
||||
[JsonProperty("mameconfig")]
|
||||
[JsonProperty("mameconfig", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string MameConfig { get; set; }
|
||||
|
||||
#endregion
|
||||
@@ -201,46 +198,46 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <summary>
|
||||
/// Build version
|
||||
/// </summary>
|
||||
[JsonProperty("build")]
|
||||
[JsonProperty("build", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string Build { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomCenter rom mode
|
||||
/// </summary>
|
||||
/// <remarks>(merged|split|unmerged) "split"</remarks>
|
||||
[JsonProperty("rommode")]
|
||||
[JsonProperty("rommode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public MergingFlag RomMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomCenter bios mode
|
||||
/// </summary>
|
||||
/// <remarks>(merged|split|unmerged) "split"</remarks>
|
||||
[JsonProperty("biosmode")]
|
||||
[JsonProperty("biosmode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public MergingFlag BiosMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomCenter sample mode
|
||||
/// </summary>
|
||||
/// <remarks>(merged|unmerged) "merged"</remarks>
|
||||
[JsonProperty("samplemode")]
|
||||
[JsonProperty("samplemode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public MergingFlag SampleMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomCenter lock rom mode
|
||||
/// </summary>
|
||||
[JsonProperty("lockrommode")]
|
||||
[JsonProperty("lockrommode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public bool? LockRomMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomCenter lock bios mode
|
||||
/// </summary>
|
||||
[JsonProperty("lockbiosmode")]
|
||||
[JsonProperty("lockbiosmode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public bool? LockBiosMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomCenter lock sample mode
|
||||
/// </summary>
|
||||
[JsonProperty("locksamplemode")]
|
||||
[JsonProperty("locksamplemode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public bool? LockSampleMode { get; set; }
|
||||
|
||||
#endregion
|
||||
@@ -261,31 +258,31 @@ namespace SabreTools.Library.DatFiles
|
||||
/// System
|
||||
/// </summary>
|
||||
/// <remarks>Known as "plugin" in Logiqx and RomCenter</remarks>
|
||||
[JsonProperty("system")]
|
||||
[JsonProperty("system", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string System { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Screenshots width
|
||||
/// </summary>
|
||||
[JsonProperty("screenshotswidth")]
|
||||
[JsonProperty("screenshotswidth", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string ScreenshotsWidth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Screenshots height
|
||||
/// </summary>
|
||||
[JsonProperty("screenshotsheight")]
|
||||
[JsonProperty("screenshotsheight", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string ScreenshotsHeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// OfflineList info list
|
||||
/// </summary>
|
||||
[JsonProperty("infos")]
|
||||
[JsonProperty("infos", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public List<OfflineListInfo> Infos { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// OfflineList can-open extensions
|
||||
/// </summary>
|
||||
[JsonProperty("canopen")]
|
||||
[JsonProperty("canopen", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public List<string> CanOpen { get; set; }
|
||||
|
||||
// TODO: Implement the following header values:
|
||||
@@ -299,7 +296,7 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <summary>
|
||||
/// Rom title
|
||||
/// </summary>
|
||||
[JsonProperty("romtitle")]
|
||||
[JsonProperty("romtitle", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string RomTitle { get; set; }
|
||||
|
||||
#endregion
|
||||
@@ -309,7 +306,7 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <summary>
|
||||
/// RomCenter DAT format version
|
||||
/// </summary>
|
||||
[JsonProperty("rcversion")]
|
||||
[JsonProperty("rcversion", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string RomCenterVersion { get; set; }
|
||||
|
||||
#endregion
|
||||
@@ -575,8 +572,8 @@ namespace SabreTools.Library.DatFiles
|
||||
ReplaceExtension = datHeader.ReplaceExtension;
|
||||
|
||||
RemoveExtension = datHeader.RemoveExtension;
|
||||
InputDepot = datHeader.InputDepot.Clone() as DepotInformation;
|
||||
OutputDepot = datHeader.OutputDepot.Clone() as DepotInformation;
|
||||
InputDepot = datHeader.InputDepot?.Clone() as DepotInformation;
|
||||
OutputDepot = datHeader.OutputDepot?.Clone() as DepotInformation;
|
||||
GameName = datHeader.GameName;
|
||||
Quotes = datHeader.Quotes;
|
||||
UseRomName = datHeader.UseRomName;
|
||||
|
||||
@@ -477,7 +477,7 @@ namespace SabreTools.Library.DatFiles
|
||||
if (!string.IsNullOrWhiteSpace(rom.Date))
|
||||
cmpw.WriteAttributeString("date", rom.Date);
|
||||
if (!string.IsNullOrWhiteSpace(rom.CRC))
|
||||
cmpw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
cmpw.WriteAttributeString("crc", rom.CRC?.ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -190,12 +190,12 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
string[] fields = new string[]
|
||||
{
|
||||
rom.SHA256,
|
||||
$"{rom.Machine.Name}/",
|
||||
rom.Name,
|
||||
rom.SHA1,
|
||||
rom.MD5,
|
||||
rom.CRC,
|
||||
rom.SHA256 ?? string.Empty,
|
||||
$"{rom.Machine.Name ?? string.Empty}/",
|
||||
rom.Name ?? string.Empty,
|
||||
rom.SHA1 ?? string.Empty,
|
||||
rom.MD5 ?? string.Empty,
|
||||
rom.CRC ?? string.Empty,
|
||||
};
|
||||
|
||||
svw.WriteValues(fields);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -445,7 +445,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Otherwise, write out the SHA-1 hash
|
||||
else if (!string.IsNullOrWhiteSpace(disk.SHA1))
|
||||
sw.Write($" SHA1({disk.SHA1})");
|
||||
sw.Write($" SHA1({disk.SHA1 ?? string.Empty})");
|
||||
|
||||
// If we have a baddump, put the second indicator
|
||||
if (disk.ItemStatus == ItemStatus.BadDump)
|
||||
@@ -480,9 +480,9 @@ namespace SabreTools.Library.DatFiles
|
||||
else
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(rom.CRC))
|
||||
sw.Write($" CRC({rom.CRC})");
|
||||
sw.Write($" CRC({rom.CRC ?? string.Empty})");
|
||||
if (!string.IsNullOrWhiteSpace(rom.SHA1))
|
||||
sw.Write($" SHA1({rom.SHA1})");
|
||||
sw.Write($" SHA1({rom.SHA1 ?? string.Empty})");
|
||||
}
|
||||
|
||||
// If we have a baddump, put the second indicator
|
||||
|
||||
@@ -1138,14 +1138,14 @@ namespace SabreTools.Library.DatFiles
|
||||
var disk = datItem as Disk;
|
||||
xtw.WriteStartElement("disk");
|
||||
xtw.WriteRequiredAttributeString("name", disk.Name);
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("merge", disk.MergeTag);
|
||||
xtw.WriteOptionalAttributeString("region", disk.Region);
|
||||
xtw.WriteOptionalAttributeString("index", disk.Index);
|
||||
@@ -1160,15 +1160,15 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteRequiredAttributeString("name", rom.Name);
|
||||
if (rom.Size != -1) xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom?.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("bios", rom.Bios);
|
||||
xtw.WriteOptionalAttributeString("merge", rom.MergeTag);
|
||||
xtw.WriteOptionalAttributeString("region", rom.Region);
|
||||
|
||||
@@ -1057,14 +1057,14 @@ namespace SabreTools.Library.DatFiles
|
||||
var disk = datItem as Disk;
|
||||
xtw.WriteStartElement("disk");
|
||||
xtw.WriteRequiredAttributeString("name", disk.Name);
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -1085,15 +1085,15 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteRequiredAttributeString("name", rom.Name);
|
||||
if (rom.Size != -1) xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("date", rom.Date);
|
||||
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("inverted", rom.Inverted.FromYesNo());
|
||||
|
||||
@@ -136,7 +136,7 @@ namespace SabreTools.Library.DatFiles
|
||||
ProcessItemName(datItem, false, forceRomName: false);
|
||||
|
||||
// Romba mode automatically uses item name
|
||||
if (Header.OutputDepot.IsActive || Header.UseRomName)
|
||||
if ((Header.OutputDepot?.IsActive ?? false) || Header.UseRomName)
|
||||
{
|
||||
sw.Write($"{datItem.Name}\n");
|
||||
}
|
||||
|
||||
@@ -925,14 +925,14 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
xtw.WriteStartElement("romMD5");
|
||||
xtw.WriteAttributeString("extension", ".chd");
|
||||
xtw.WriteString(disk.MD5.ToUpperInvariant());
|
||||
xtw.WriteString(disk.MD5?.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(disk.SHA1))
|
||||
{
|
||||
xtw.WriteStartElement("romSHA1");
|
||||
xtw.WriteAttributeString("extension", ".chd");
|
||||
xtw.WriteString(disk.SHA1.ToUpperInvariant());
|
||||
xtw.WriteString(disk.SHA1?.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
@@ -949,21 +949,21 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
xtw.WriteStartElement("romCRC");
|
||||
xtw.WriteRequiredAttributeString("extension", tempext);
|
||||
xtw.WriteString(rom.CRC.ToUpperInvariant());
|
||||
xtw.WriteString(rom.CRC?.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(rom.MD5))
|
||||
{
|
||||
xtw.WriteStartElement("romMD5");
|
||||
xtw.WriteRequiredAttributeString("extension", tempext);
|
||||
xtw.WriteString(rom.MD5.ToUpperInvariant());
|
||||
xtw.WriteString(rom.MD5?.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(rom.SHA1))
|
||||
{
|
||||
xtw.WriteStartElement("romSHA1");
|
||||
xtw.WriteRequiredAttributeString("extension", tempext);
|
||||
xtw.WriteString(rom.SHA1.ToUpperInvariant());
|
||||
xtw.WriteString(rom.SHA1?.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
|
||||
@@ -740,7 +740,7 @@ namespace SabreTools.Library.DatFiles
|
||||
case OpenMSXSubType.Rom:
|
||||
case OpenMSXSubType.NULL:
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("start", rom.Offset);
|
||||
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
@@ -749,7 +749,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
case OpenMSXSubType.MegaRom:
|
||||
xtw.WriteStartElement("megarom");
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("start", rom.Offset);
|
||||
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
@@ -759,7 +759,7 @@ namespace SabreTools.Library.DatFiles
|
||||
case OpenMSXSubType.SCCPlusCart:
|
||||
xtw.WriteStartElement("sccpluscart");
|
||||
xtw.WriteOptionalElementString("boot", rom.Boot);
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
@@ -532,18 +532,18 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
|
||||
iw.WriteString($"¬{rom.Machine.CloneOf}");
|
||||
iw.WriteString($"¬{rom.Machine.CloneOf}");
|
||||
iw.WriteString($"¬{rom.Machine.Name}");
|
||||
if (string.IsNullOrWhiteSpace(rom.Machine.Description))
|
||||
iw.WriteString($"¬{rom.Machine.Name}");
|
||||
iw.WriteString($"¬{rom.Machine.CloneOf ?? string.Empty}");
|
||||
iw.WriteString($"¬{rom.Machine.CloneOf ?? string.Empty}");
|
||||
iw.WriteString($"¬{rom.Machine.Name ?? string.Empty}");
|
||||
if (string.IsNullOrWhiteSpace(rom.Machine.Description ?? string.Empty))
|
||||
iw.WriteString($"¬{rom.Machine.Name ?? string.Empty}");
|
||||
else
|
||||
iw.WriteString($"¬{rom.Machine.Description}");
|
||||
iw.WriteString($"¬{rom.Name}");
|
||||
iw.WriteString($"¬{rom.CRC}");
|
||||
iw.WriteString($"¬{rom.Machine.Description ?? string.Empty}");
|
||||
iw.WriteString($"¬{rom.Name ?? string.Empty}");
|
||||
iw.WriteString($"¬{rom.CRC ?? string.Empty}");
|
||||
iw.WriteString($"¬{rom.Size}");
|
||||
iw.WriteString($"¬{rom.Machine.RomOf}");
|
||||
iw.WriteString($"¬{rom.MergeTag}");
|
||||
iw.WriteString($"¬{rom.Machine.RomOf ?? string.Empty}");
|
||||
iw.WriteString($"¬{rom.MergeTag ?? string.Empty}");
|
||||
iw.WriteString("¬");
|
||||
iw.WriteLine();
|
||||
|
||||
|
||||
@@ -902,14 +902,14 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "disk");
|
||||
xtw.WriteRequiredAttributeString("name", disk.Name);
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
if (disk.ItemStatus != ItemStatus.None)
|
||||
{
|
||||
xtw.WriteStartElement("flags");
|
||||
@@ -943,15 +943,15 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("type", "rom");
|
||||
xtw.WriteRequiredAttributeString("name", rom.Name);
|
||||
if (rom.Size != -1) xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("date", rom.Date);
|
||||
if (rom.ItemStatus != ItemStatus.None)
|
||||
{
|
||||
|
||||
@@ -1723,11 +1723,11 @@ namespace SabreTools.Library.DatFiles
|
||||
fields[8] = string.Empty;
|
||||
fields[9] = string.Empty;
|
||||
fields[10] = disk.MD5.ToLowerInvariant();
|
||||
//fields[11] = disk.GetField(Field.RIPEMD160, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
//fields[11] = disk.RIPEMD160?.ToLowerInvariant();
|
||||
fields[11] = disk.SHA1.ToLowerInvariant();
|
||||
fields[12] = disk.SHA256.ToLowerInvariant();
|
||||
//fields[13] = disk.GetField(Field.SHA384, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
//fields[14] = disk.GetField(Field.SHA512, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
//fields[13] = disk.SHA384?.ToLowerInvariant();
|
||||
//fields[14] = disk.SHA512?.ToLowerInvariant();
|
||||
fields[13] = disk.ItemStatus.ToString();
|
||||
break;
|
||||
|
||||
@@ -1737,13 +1737,13 @@ namespace SabreTools.Library.DatFiles
|
||||
fields[6] = rom.Name;
|
||||
fields[7] = string.Empty;
|
||||
fields[8] = rom.Size.ToString();
|
||||
fields[9] = rom.CRC.ToLowerInvariant();
|
||||
fields[10] = rom.MD5.ToLowerInvariant();
|
||||
//fields[11] = rom.GetField(Field.RIPEMD160, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[11] = rom.SHA1.ToLowerInvariant();
|
||||
fields[12] = rom.SHA256.ToLowerInvariant();
|
||||
//fields[13] = rom.GetField(Field.SHA384, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
//fields[14] = rom.GetField(Field.SHA512, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[9] = rom.CRC?.ToLowerInvariant();
|
||||
fields[10] = rom.MD5?.ToLowerInvariant();
|
||||
//fields[11] = rom.RIPEMD160?.ToLowerInvariant();
|
||||
fields[11] = rom.SHA1?.ToLowerInvariant();
|
||||
fields[12] = rom.SHA256?.ToLowerInvariant();
|
||||
//fields[13] = rom.SHA384?.ToLowerInvariant();
|
||||
//fields[14] = rom.SHA512?.ToLowerInvariant();
|
||||
fields[13] = rom.ItemStatus.ToString();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -952,14 +952,14 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteStartElement("disk");
|
||||
xtw.WriteRequiredAttributeString("name", disk.Name);
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", disk.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", disk.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", disk.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("writable", disk.Writable.FromYesNo());
|
||||
xtw.WriteEndElement();
|
||||
@@ -982,15 +982,15 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteRequiredAttributeString("name", rom.Name);
|
||||
if (rom.Size != -1) xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5?.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("ripemd160", rom.RIPEMD160?.ToLowerInvariant());
|
||||
#endif
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha1", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha256", rom.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("offset", rom.Offset);
|
||||
xtw.WriteOptionalAttributeString("value", rom.Value);
|
||||
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
|
||||
Reference in New Issue
Block a user