using System;
using SabreTools.Core;
namespace SabreTools.DatFiles
{
///
/// DAT output formats
///
[Flags]
public enum DatFormat
{
#region XML Formats
///
/// Logiqx XML (using machine)
///
Logiqx = 1 << 0,
///
/// Logiqx XML (using game)
///
LogiqxDeprecated = 1 << 1,
///
/// MAME Softare List XML
///
SoftwareList = 1 << 2,
///
/// MAME Listxml output
///
Listxml = 1 << 3,
///
/// OfflineList XML
///
OfflineList = 1 << 4,
///
/// SabreDAT XML
///
SabreXML = 1 << 5,
///
/// openMSX Software List XML
///
OpenMSX = 1 << 6,
///
/// Archive.org file list XML
///
ArchiveDotOrg = 1 << 7,
#endregion
#region Propietary Formats
///
/// ClrMamePro custom
///
ClrMamePro = 1 << 8,
///
/// RomCenter INI-based
///
RomCenter = 1 << 9,
///
/// DOSCenter custom
///
DOSCenter = 1 << 10,
///
/// AttractMode custom
///
AttractMode = 1 << 11,
#endregion
#region Standardized Text Formats
///
/// ClrMamePro missfile
///
MissFile = 1 << 12,
///
/// Comma-Separated Values (standardized)
///
CSV = 1 << 13,
///
/// Semicolon-Separated Values (standardized)
///
SSV = 1 << 14,
///
/// Tab-Separated Values (standardized)
///
TSV = 1 << 15,
///
/// MAME Listrom output
///
Listrom = 1 << 16,
///
/// Everdrive Packs SMDB
///
EverdriveSMDB = 1 << 17,
///
/// SabreJSON
///
SabreJSON = 1 << 18,
#endregion
#region SFV-similar Formats
///
/// CRC32 hash list
///
RedumpSFV = 1 << 19,
///
/// MD5 hash list
///
RedumpMD5 = 1 << 20,
///
/// SHA-1 hash list
///
RedumpSHA1 = 1 << 21,
///
/// SHA-256 hash list
///
RedumpSHA256 = 1 << 22,
///
/// SHA-384 hash list
///
RedumpSHA384 = 1 << 23,
///
/// SHA-512 hash list
///
RedumpSHA512 = 1 << 24,
///
/// SpamSum hash list
///
RedumpSpamSum = 1 << 25,
#endregion
// Specialty combinations
ALL = Int32.MaxValue,
}
///
/// Determines the DAT deduplication type
///
public enum DedupeType
{
None = 0,
Full,
// Force only deduping with certain types
Game,
CRC,
MD5,
SHA1,
SHA256,
SHA384,
SHA512,
}
///
/// Determines merging tag handling for DAT output
///
public enum MergingFlag
{
[Mapping("none")]
None = 0,
[Mapping("split")]
Split,
[Mapping("merged")]
Merged,
[Mapping("nonmerged", "unmerged")]
NonMerged,
/// This is not usually defined for Merging flags
[Mapping("fullmerged")]
FullMerged,
/// This is not usually defined for Merging flags
[Mapping("device", "deviceunmerged", "devicenonmerged")]
DeviceNonMerged,
/// This is not usually defined for Merging flags
[Mapping("full", "fullunmerged", "fullnonmerged")]
FullNonMerged,
}
///
/// Determines nodump tag handling for DAT output
///
public enum NodumpFlag
{
[Mapping("none")]
None = 0,
[Mapping("obsolete")]
Obsolete,
[Mapping("required")]
Required,
[Mapping("ignore")]
Ignore,
}
///
/// Determines packing tag handling for DAT output
///
public enum PackingFlag
{
[Mapping("none")]
None = 0,
///
/// Force all sets to be in archives, except disk and media
///
[Mapping("zip", "yes")]
Zip,
///
/// Force all sets to be extracted into subfolders
///
[Mapping("unzip", "no")]
Unzip,
///
/// Force sets with single items to be extracted to the parent folder
///
[Mapping("partial")]
Partial,
///
/// Force all sets to be extracted to the parent folder
///
[Mapping("flat")]
Flat,
}
}