mkmamedbcreate database for use by ckmame

mkmamedb [-hutV] [-C hashtypes] [-F outputformat] [-o dbfile] [-x pat] [--detector file] [--exclude pat] [--hash-types types] [--help] [--no-directory-cache] [--only-files pattern] [--output dbfile] [--prog-description description] [--prog-name name] [--prog-version version] [--roms-unzipped] [--skip-files pattern] [--version] [rominfo-file ...]

mkmamedb converts ROM set descriptions from one format to another.

The ROM set description is read from the specified files (or directories) or the standard input if no files are specified. The default output file is mame.db. You can override it with the -o option or the MAMEDB environment variable.

Supported input formats are:

  • CMPro dat file
  • MAME XML file
  • MESS Softlist XML file
  • Romcenter dat file
  • ckmame(1) database format
  • directory of zip archives
  • directory with subdirectories (with -u); each sub-directory is taken as a game
Supported output formats are:

The CMPro file format is described at, the DTD for MAME xml can be found in PREFIX/share/doc/ckmame/.

mkmamedb supports the following options:

types, --hash-types types
A comma separated list of hash types to compute when creating a ROM set description from a directory of zip archives. Supported hash types are: crc, md5, sha1. Default are all.
outputformat, --format outputformat
Specify output format. Supported formats are cm (clrmamepro dat file), dat (XML datfile), db (ckmame(1) database), and mtree (mtree(8) file). The default is cm.
Use CMPro XML header skip detector description from file. This overrides any detectors given in the file itself. mkmamedb looks for the detector in the input file (if it is a zip file) or the directory of the input file.
, --help
Display a short help message.
dbfile, --output dbfile
Write to database dbfile instead of the default “mame.db”.
When mkmamedb is used to create a database from an input directory, it will by default write a .ckmame.db database file to it, caching the directory contents' hashes in it so that consecutive re-runs are faster. When mkmamedb finds such a database, it only computes the hashes for the files that have changed since the last run.
When reading files from the file system as input, only accept files matching the shell glob pattern.
Set description for the program the ROM info is from.
Set name of the program the ROM info is from.
Set version of the program the ROM info is from.
When reading files from the file system as input, skip files matching the shell glob
, --use-temp-directory
Create the output in a temporary directory and move it to the real output when finished. This might speed up the creation e.g. of mame.db when your current working directory is on a slow file system.
, --roms-unzipped
ROMs are files on the disk. Each game is represented by a directory instead of a ZIP archive. Only relevant when creating a database based on file system contents.
, --version
Display program name and version number.
pat, --exclude pat
Exclude games with names matching pat from the created database.

Location for the database file. Can be overridden with the -o option. Defaults to “mame.db”.

Get an input file for mkmamedb(1) from MAME and convert it to the internal database format:

# mame -listxml | mkmamedb

ckmame(1), dumpgame(1)

mkmamedb was written by Dieter Baron ⟨⟩ and Thomas Klausner <>.