[DatFile, FileTools] Tweak SL and SD types

This commit is contained in:
Matt Nadareski
2016-09-27 11:26:55 -07:00
parent 729e47f1d6
commit ec34b91942
3 changed files with 79 additions and 5 deletions

View File

@@ -29,6 +29,7 @@ namespace SabreTools.Helper
RedumpMD5 = 0x040, RedumpMD5 = 0x040,
RedumpSHA1 = 0x080, RedumpSHA1 = 0x080,
RedumpSFV = 0x100, RedumpSFV = 0x100,
SoftwareList = 0x200,
} }
/// <summary> /// <summary>

View File

@@ -1213,12 +1213,14 @@ namespace SabreTools.Helper
switch (FileTools.GetOutputFormat(filename, logger)) switch (FileTools.GetOutputFormat(filename, logger))
{ {
case OutputFormat.ClrMamePro: case OutputFormat.ClrMamePro:
case OutputFormat.DOSCenter:
ParseCMP(filename, sysid, srcid, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, itemStatus, trim, single, root, logger, keep, clean); ParseCMP(filename, sysid, srcid, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, itemStatus, trim, single, root, logger, keep, clean);
break; break;
case OutputFormat.RomCenter: case OutputFormat.RomCenter:
ParseRC(filename, sysid, srcid, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, itemStatus, trim, single, root, logger, clean); ParseRC(filename, sysid, srcid, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, itemStatus, trim, single, root, logger, clean);
break; break;
case OutputFormat.SabreDat: case OutputFormat.SabreDat:
case OutputFormat.SoftwareList:
case OutputFormat.Xml: case OutputFormat.Xml:
ParseXML(filename, sysid, srcid, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, itemStatus, trim, single, root, logger, keep, clean, softlist); ParseXML(filename, sysid, srcid, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, itemStatus, trim, single, root, logger, keep, clean, softlist);
break; break;
@@ -2130,6 +2132,48 @@ namespace SabreTools.Helper
{ {
Description = (String.IsNullOrEmpty(Description) ? xtr.GetAttribute("description") : Description); Description = (String.IsNullOrEmpty(Description) ? xtr.GetAttribute("description") : Description);
} }
if (xtr.GetAttribute("forcemerging") != null)
{
switch (xtr.GetAttribute("forcemerging"))
{
case "split":
ForceMerging = ForceMerging.Split;
break;
case "none":
ForceMerging = ForceMerging.None;
break;
case "full":
ForceMerging = ForceMerging.Full;
break;
}
}
if (xtr.GetAttribute("forceitemStatus") != null)
{
switch (xtr.GetAttribute("forceitemStatus"))
{
case "obsolete":
ForceNodump = ForceNodump.Obsolete;
break;
case "required":
ForceNodump = ForceNodump.Required;
break;
case "ignore":
ForceNodump = ForceNodump.Ignore;
break;
}
}
if (xtr.GetAttribute("forcepacking") != null)
{
switch (xtr.GetAttribute("forcepacking"))
{
case "zip":
ForcePacking = ForcePacking.Zip;
break;
case "unzip":
ForcePacking = ForcePacking.Unzip;
break;
}
}
xtr.Read(); xtr.Read();
break; break;
// Handle M1 DATs since they're 99% the same as a SL DAT // Handle M1 DATs since they're 99% the same as a SL DAT
@@ -3202,7 +3246,7 @@ namespace SabreTools.Helper
break; break;
case OutputFormat.SabreDat: case OutputFormat.SabreDat:
header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE datafile PUBLIC \"-//Logiqx//DTD ROM Management Datafile//EN\" \"http://www.logiqx.com/Dats/datafile.dtd\">\n\n" + "<!DOCTYPE sabredat SYSTEM \"newdat.xsd\">\n\n" +
"<datafile>\n" + "<datafile>\n" +
"\t<header>\n" + "\t<header>\n" +
"\t\t<name>" + HttpUtility.HtmlEncode(Name) + "</name>\n" + "\t\t<name>" + HttpUtility.HtmlEncode(Name) + "</name>\n" +

View File

@@ -69,26 +69,55 @@ namespace SabreTools.Helper
try try
{ {
// Get the first two lines to check
StreamReader sr = File.OpenText(filename); StreamReader sr = File.OpenText(filename);
string first = sr.ReadLine(); string first = sr.ReadLine().ToLowerInvariant();
string second = sr.ReadLine().ToLowerInvariant();
sr.Dispose(); sr.Dispose();
if (first.Contains("<") && first.Contains(">"))
// If we have an XML-based DAT
if (first.StartsWith("<?xml") && first.EndsWith("?>"))
{ {
return OutputFormat.Xml; if (second.StartsWith("<!doctype datafile"))
{
return OutputFormat.Xml;
}
else if (second.StartsWith("<!doctype softwarelist"))
{
return OutputFormat.SoftwareList;
}
else if (second.StartsWith("<!doctype sabredat"))
{
return OutputFormat.SabreDat;
}
} }
// If we have an INI-based DAT
else if (first.Contains("[") && first.Contains("]")) else if (first.Contains("[") && first.Contains("]"))
{ {
return OutputFormat.RomCenter; return OutputFormat.RomCenter;
} }
else
// If we have a CMP-based DAT
else if (first.StartsWith("clrmamepro"))
{ {
return OutputFormat.ClrMamePro; return OutputFormat.ClrMamePro;
} }
else if (first.StartsWith("romvault"))
{
return OutputFormat.ClrMamePro;
}
else if (first.StartsWith("doscenter"))
{
return OutputFormat.DOSCenter;
}
} }
catch (Exception) catch (Exception)
{ {
return 0; return 0;
} }
return 0;
} }
/// <summary> /// <summary>