using System; namespace SabreTools.Data.Models.CHD { /// public enum AVHuffCodec { DECOMPRESS_CONFIG = 1, } /// public enum CodecType : uint { CHD_CODEC_NONE = 0, #region General Codecs /// "zlib" ZLIB = 0x7a6c6962, /// "zstd" ZSTD = 0x7a737464, /// "lzma" LZMA = 0x6c7a6d61, /// "huff" HUFFMAN = 0x68756666, /// "flac" FLAC = 0x666c6163, #endregion #region General Codecs with CD Frontend /// "cdzl" CD_ZLIB = 0x63647a6c, /// "cdzs" CD_ZSTD = 0x63647a73, /// "cdlz" CD_LZMA = 0x63646c7a, /// "cdfl" CD_FLAC = 0x6364666c, #endregion #region A/V Codecs /// "avhu" AVHUFF = 0x61766875, #endregion #region Pseudo-Codecs Returned by hunk_info /// /// Copy of another hunk /// CHD_CODEC_SELF = 1, /// /// Copy of a parent's hunk /// CHD_CODEC_PARENT = 2, /// /// Legacy "mini" 8-byte repeat /// CHD_CODEC_MINI = 3, #endregion } /// public enum CompressionType : uint { #region V1 CHDCOMPRESSION_NONE = 0, CHDCOMPRESSION_ZLIB = 1, #endregion #region V3 CHDCOMPRESSION_ZLIB_PLUS = 2, #endregion #region V4 CHDCOMPRESSION_AV = 3, #endregion } /// public enum Error : uint { NO_INTERFACE = 1, NOT_OPEN, ALREADY_OPEN, INVALID_FILE, INVALID_DATA, REQUIRES_PARENT, FILE_NOT_WRITEABLE, CODEC_ERROR, INVALID_PARENT, HUNK_OUT_OF_RANGE, DECOMPRESSION_ERROR, COMPRESSION_ERROR, CANT_VERIFY, METADATA_NOT_FOUND, INVALID_METADATA_SIZE, UNSUPPORTED_VERSION, VERIFY_INCOMPLETE, INVALID_METADATA, INVALID_STATE, OPERATION_PENDING, UNSUPPORTED_FORMAT, UNKNOWN_COMPRESSION, WALKING_PARENT, COMPRESSING } /// [Flags] public enum Flags : uint { /// /// Set if this drive has a parent /// DriveHasParent = 0x00000001, /// /// Set if this drive allows writes /// DriveAllowsWrites = 0x00000002, } /// [Flags] public enum MetadataFlags : byte { /// /// Indicates data is checksummed /// CHD_MDFLAGS_CHECKSUM = 0x01, } /// public enum MetadataTag : uint { CHDMETATAG_WILDCARD = 0, #region Hard Disk /// /// Standard hard disk metadata /// /// "GDDD" HARD_DISK_METADATA_TAG = 0x47444444, /// /// Hard disk identify information /// /// "IDNT" HARD_DISK_IDENT_METADATA_TAG = 0x49444e54, /// /// Hard disk key information /// /// "KEY " HARD_DISK_KEY_METADATA_TAG = 0x4b455920, #endregion #region PCMCIA /// /// PCMCIA CIS information /// /// "CIS " PCMCIA_CIS_METADATA_TAG = 0x43495320, #endregion #region CD-ROM /// "CHCD" CDROM_OLD_METADATA_TAG = 0x43484344, /// "CHTR" CDROM_TRACK_METADATA_TAG = 0x43485452, /// "CHT2" CDROM_TRACK_METADATA2_TAG = 0x43485432, #endregion #region GD-ROM /// "CHGT" GDROM_OLD_METADATA_TAG = 0x43484754, /// "CHGD" GDROM_TRACK_METADATA_TAG = 0x43484744, #endregion #region DVD /// /// Standard DVD metadata /// /// "DVD " DVD_METADATA_TAG = 0x44564420, #endregion #region A/V /// /// Standard A/V metadata /// /// "AVAV" AV_METADATA_TAG = 0x41564156, /// /// A/V laserdisc frame metadata /// /// "AVLD" AV_LD_METADATA_TAG = 0x41564c44, #endregion } /// public enum V34EntryType : uint { /// /// Invalid type /// V34_MAP_ENTRY_TYPE_INVALID = 0, /// /// Standard compression /// V34_MAP_ENTRY_TYPE_COMPRESSED = 1, /// /// Uncompressed data /// V34_MAP_ENTRY_TYPE_UNCOMPRESSED = 2, /// /// Mini: use offset as raw data /// V34_MAP_ENTRY_TYPE_MINI = 3, /// /// Same as another hunk in this file /// V34_MAP_ENTRY_TYPE_SELF_HUNK = 4, /// /// Same as a hunk in the parent file /// V34_MAP_ENTRY_TYPE_PARENT_HUNK = 5, /// /// Compressed with secondary algorithm (usually FLAC CDDA) /// V34_MAP_ENTRY_TYPE_2ND_COMPRESSED = 6, } /// public enum V5CompressionType : uint { // These types are live when running /// /// Codec #0 /// COMPRESSION_TYPE_0 = 0, /// /// Codec #1 /// COMPRESSION_TYPE_1 = 1, /// /// Codec #2 /// COMPRESSION_TYPE_2 = 2, /// /// Codec #3 /// COMPRESSION_TYPE_3 = 3, /// /// No compression; implicit length = hunkbytes /// COMPRESSION_NONE = 4, /// /// Same as another block in this CHD /// COMPRESSION_SELF = 5, /// /// Same as a hunk's worth of units in the parent CHD /// COMPRESSION_PARENT = 6, // These additional pseudo-types are used for compressed encodings /// /// Start of small RLE run (4-bit length) /// COMPRESSION_RLE_SMALL, /// /// Start of large RLE run (8-bit length) /// COMPRESSION_RLE_LARGE, /// /// Same as the last COMPRESSION_SELF block /// COMPRESSION_SELF_0, /// /// Same as the last COMPRESSION_SELF block + 1 /// COMPRESSION_SELF_1, /// /// Same block in the parent /// COMPRESSION_PARENT_SELF, /// /// Same as the last COMPRESSION_PARENT block /// COMPRESSION_PARENT_0, /// /// Same as the last COMPRESSION_PARENT block + 1 /// COMPRESSION_PARENT_1 } }