2016-09-09 14:28:00 -07:00
|
|
|
|
using System;
|
|
|
|
|
|
|
2017-05-04 02:41:11 -07:00
|
|
|
|
namespace SabreTools.Library.Data
|
2016-09-09 14:28:00 -07:00
|
|
|
|
{
|
2017-02-25 20:35:06 -08:00
|
|
|
|
#region DatFile related
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2018-10-12 15:08:07 -07:00
|
|
|
|
/// DAT output formats
|
2017-02-25 20:35:06 -08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Flags]
|
|
|
|
|
|
public enum DatFormat
|
|
|
|
|
|
{
|
2018-10-12 15:08:07 -07:00
|
|
|
|
#region XML Formats
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Logiqx XML (using machine)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Logiqx = 1 << 0,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2020-06-10 22:37:19 -07:00
|
|
|
|
/// Logiqx XML (using game)
|
2018-10-12 15:08:07 -07:00
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
LogiqxDeprecated = 1 << 1,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// MAME Softare List XML
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
SoftwareList = 1 << 2,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// MAME Listxml output
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Listxml = 1 << 3,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// OfflineList XML
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
OfflineList = 1 << 4,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// SabreDat XML
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
SabreDat = 1 << 5,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2020-06-11 11:44:46 -07:00
|
|
|
|
/// openMSX Software List XML
|
2018-10-12 15:08:07 -07:00
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
OpenMSX = 1 << 6,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Propietary Formats
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ClrMamePro custom
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
ClrMamePro = 1 << 7,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RomCetner INI-based
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RomCenter = 1 << 8,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// DOSCenter custom
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
DOSCenter = 1 << 9,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// AttractMode custom
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
AttractMode = 1 << 10,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Standardized Text Formats
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ClrMamePro missfile
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
MissFile = 1 << 11,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Comma-Separated Values (standardized)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
CSV = 1 << 12,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Semicolon-Separated Values (standardized)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
SSV = 1 << 13,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Tab-Separated Values (standardized)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
TSV = 1 << 14,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// MAME Listrom output
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Listrom = 1 << 15,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
2019-02-08 15:31:44 -08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Everdrive Packs SMDB
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
EverdriveSMDB = 1 << 16,
|
2019-02-08 15:31:44 -08:00
|
|
|
|
|
2020-06-15 22:31:46 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// JSON
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Json = 1 << 17,
|
2020-06-15 22:31:46 -07:00
|
|
|
|
|
2018-10-12 15:08:07 -07:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region SFV-similar Formats
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// CRC32 hash list
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RedumpSFV = 1 << 18,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// MD5 hash list
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RedumpMD5 = 1 << 19,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
2020-07-15 09:41:59 -07:00
|
|
|
|
#if NET_FRAMEWORK
|
2020-06-05 22:26:44 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RIPEMD160 hash list
|
|
|
|
|
|
/// </summary>
|
2020-06-15 22:31:46 -07:00
|
|
|
|
RedumpRIPEMD160 = 1 << 20,
|
2020-07-15 09:41:59 -07:00
|
|
|
|
#endif
|
2020-06-05 22:26:44 -07:00
|
|
|
|
|
2018-10-12 15:08:07 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// SHA-1 hash list
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RedumpSHA1 = 1 << 21,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// SHA-256 hash list
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RedumpSHA256 = 1 << 22,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// SHA-384 hash list
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RedumpSHA384 = 1 << 23,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// SHA-512 hash list
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
RedumpSHA512 = 1 << 24,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
// Specialty combinations
|
|
|
|
|
|
ALL = Int32.MaxValue,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Available hashing types
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Flags]
|
|
|
|
|
|
public enum Hash
|
|
|
|
|
|
{
|
2020-07-15 09:41:59 -07:00
|
|
|
|
CRC = 1 << 0,
|
|
|
|
|
|
MD5 = 1 << 1,
|
|
|
|
|
|
#if NET_FRAMEWORK
|
2020-06-06 13:53:31 -07:00
|
|
|
|
RIPEMD160 = 1 << 2,
|
2020-07-15 09:41:59 -07:00
|
|
|
|
#endif
|
|
|
|
|
|
SHA1 = 1 << 3,
|
|
|
|
|
|
SHA256 = 1 << 4,
|
|
|
|
|
|
SHA384 = 1 << 5,
|
|
|
|
|
|
SHA512 = 1 << 6,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
// Special combinations
|
|
|
|
|
|
Standard = CRC | MD5 | SHA1,
|
2020-07-15 09:41:59 -07:00
|
|
|
|
#if NET_FRAMEWORK
|
2020-07-23 14:32:35 -07:00
|
|
|
|
DeepHashes = RIPEMD160 | SHA256 | SHA384 | SHA512,
|
2020-07-15 09:41:59 -07:00
|
|
|
|
SecureHashes = MD5 | RIPEMD160 | SHA1 | SHA256 | SHA384 | SHA512,
|
|
|
|
|
|
#else
|
|
|
|
|
|
DeepHashes = SHA256 | SHA384 | SHA512,
|
|
|
|
|
|
SecureHashes = MD5 | SHA1 | SHA256 | SHA384 | SHA512,
|
|
|
|
|
|
#endif
|
2018-10-12 15:08:07 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Determine which format to output Stats to
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Flags]
|
|
|
|
|
|
public enum StatReportFormat
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Only output to the console
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
None = 0x00,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Console-formatted
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Textfile = 1 << 0,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ClrMamePro HTML
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
HTML = 1 << 1,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Comma-Separated Values (Standardized)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
CSV = 1 << 2,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Semicolon-Separated Values (Standardized)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
SSV = 1 << 3,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Tab-Separated Values (Standardized)
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
TSV = 1 << 4,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
All = Int32.MaxValue,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-02-25 20:35:06 -08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region DatItem related
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Determines which type of duplicate a file is
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Flags]
|
2018-10-12 15:08:07 -07:00
|
|
|
|
public enum DupeType
|
|
|
|
|
|
{
|
|
|
|
|
|
// Type of match
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Hash = 1 << 0,
|
|
|
|
|
|
All = 1 << 1,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
|
|
|
|
|
// Location of match
|
2020-07-15 09:41:59 -07:00
|
|
|
|
Internal = 1 << 2,
|
|
|
|
|
|
External = 1 << 3,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Determine the status of the item
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Flags]
|
|
|
|
|
|
public enum ItemStatus
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// This is a fake flag that is used for filter only
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
NULL = 0x00,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
2020-07-15 09:41:59 -07:00
|
|
|
|
None = 1 << 0,
|
|
|
|
|
|
Good = 1 << 1,
|
|
|
|
|
|
BadDump = 1 << 2,
|
|
|
|
|
|
Nodump = 1 << 3,
|
|
|
|
|
|
Verified = 1 << 4,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Determine what type of machine it is
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Flags]
|
|
|
|
|
|
public enum MachineType
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// This is a fake flag that is used for filter only
|
|
|
|
|
|
/// </summary>
|
2020-07-15 09:41:59 -07:00
|
|
|
|
NULL = 0x00,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
|
2020-07-15 09:41:59 -07:00
|
|
|
|
None = 1 << 0,
|
|
|
|
|
|
Bios = 1 << 1,
|
|
|
|
|
|
Device = 1 << 2,
|
|
|
|
|
|
Mechanical = 1 << 3,
|
2018-10-12 15:08:07 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
2016-09-09 14:28:00 -07:00
|
|
|
|
}
|