User Tools

Site Tools


Action disabled: revisions
chd

CHD

Romcenter handles chd as expected by mame (https://docs.mamedev.org/usingmame/aboutromsets.htm)

  • Unzipped
  • In a folder with the name of the game

From the mame 0.131 source

Compressed Hunks of Data header format. All numbers are stored in Motorola (big-endian) byte ordering. The header is 76 (V1), 80 (V2), 120 (V3) or 108 (V4) bytes long.

  V1 header:
  [  0] char   tag[8];        // 'MComprHD'
  [  8] UINT32 length;        // length of header (including tag and length fields)
  [ 12] UINT32 version;       // drive format version
  [ 16] UINT32 flags;         // flags (see below)
  [ 20] UINT32 compression;   // compression type
  [ 24] UINT32 hunksize;      // 512-byte sectors per hunk
  [ 28] UINT32 totalhunks;    // total # of hunks represented
  [ 32] UINT32 cylinders;     // number of cylinders on hard disk
  [ 36] UINT32 heads;         // number of heads on hard disk
  [ 40] UINT32 sectors;       // number of sectors on hard disk
  [ 44] UINT8  md5[16];       // MD5 checksum of raw data
  [ 60] UINT8  parentmd5[16]; // MD5 checksum of parent file
  [ 76] (V1 header length)
  V2 header:
  [  0] char   tag[8];        // 'MComprHD'
  [  8] UINT32 length;        // length of header (including tag and length fields)
  [ 12] UINT32 version;       // drive format version
  [ 16] UINT32 flags;         // flags (see below)
  [ 20] UINT32 compression;   // compression type
  [ 24] UINT32 hunksize;      // seclen-byte sectors per hunk
  [ 28] UINT32 totalhunks;    // total # of hunks represented
  [ 32] UINT32 cylinders;     // number of cylinders on hard disk
  [ 36] UINT32 heads;         // number of heads on hard disk
  [ 40] UINT32 sectors;       // number of sectors on hard disk
  [ 44] UINT8  md5[16];       // MD5 checksum of raw data
  [ 60] UINT8  parentmd5[16]; // MD5 checksum of parent file
  [ 76] UINT32 seclen;        // number of bytes per sector
  [ 80] (V2 header length)
  V3 header:
  [  0] char   tag[8];        // 'MComprHD'
  [  8] UINT32 length;        // length of header (including tag and length fields)
  [ 12] UINT32 version;       // drive format version
  [ 16] UINT32 flags;         // flags (see below)
  [ 20] UINT32 compression;   // compression type
  [ 24] UINT32 totalhunks;    // total # of hunks represented
  [ 28] UINT64 logicalbytes;  // logical size of the data (in bytes)
  [ 36] UINT64 metaoffset;    // offset to the first blob of metadata
  [ 44] UINT8  md5[16];       // MD5 checksum of raw data
  [ 60] UINT8  parentmd5[16]; // MD5 checksum of parent file
  [ 76] UINT32 hunkbytes;     // number of bytes per hunk
  [ 80] UINT8  sha1[20];      // SHA1 checksum of raw data
  [100] UINT8  parentsha1[20];// SHA1 checksum of parent file
  [120] (V3 header length)
  V4 header:
  [  0] char   tag[8];        // 'MComprHD'
  [  8] UINT32 length;        // length of header (including tag and length fields)
  [ 12] UINT32 version;       // drive format version
  [ 16] UINT32 flags;         // flags (see below)
  [ 20] UINT32 compression;   // compression type
  [ 24] UINT32 totalhunks;    // total # of hunks represented
  [ 28] UINT64 logicalbytes;  // logical size of the data (in bytes)
  [ 36] UINT64 metaoffset;    // offset to the first blob of metadata
  [ 44] UINT32 hunkbytes;     // number of bytes per hunk
  [ 48] UINT8  sha1[20];      // combined raw+meta SHA1
  [ 68] UINT8  parentsha1[20];// combined raw+meta SHA1 of parent
  [ 88] UINT8  rawsha1[20];   // raw data SHA1
  [108] (V4 header length)
  Flags:
      0x00000001 - set if this drive has a parent
      0x00000002 - set if this drive allows writes

CHD v4 header sample:

chd.txt · Last modified: 2019/05/15 17:14 by romcenter