ckmamerc
config file for ckmame, dumpgame, and mkmamedb

The ckmamerc config file sets global or local configuration for running ckmame(1), dumpgame(1), and mkmamedb(1).

By default, the configuration is read from ~/.config/ckmame/ckmamerc and .ckmamerc in the current directory if they exist, in this order.

Many settings can also be specified on the command line.

Later settings override earlier ones.

The config file is in TOML format and consists of three types of sections. A section header consists of the name of the section enclosed in square brackets on its own line.
[global]
The “global” section contains settings that apply in general.
["set name"]
“set name” sections contain settings for a particular set (see the --set command line option).
[profile."profile name"]
Settings can be shared and referenced from multiple sets by defining them in a profile and referencing this. Use sections whose name starts with “profile.” for this. They can be referenced from other sections by using the “profiles” keyword with “profile name” (without the leading “profile.”).

Most command line options can be used as configuration variables in the config file. Take the name of the long option and use it without the leading dashes. For boolean settings and those with a value, use the
variable = value
syntax. For example, ckmame(1)'s --complete-games-only will be written in the config file as
complete-games-only = true

Options that exist as --foo and - -no-foo are mapped to a single configuration value with values “true” and “false”.

For full documentation of config file options with corresponding command line options, see the manual page of the command.

Options can use the string “$set” which will be replaced by the set name when used.

The following options are supported by all tools:

rom-db
String.
profiles
Array of strings. List of profile names (without the leading “profile.”) whose configuration variables should be merged into the current section.
sets
Array of strings. Each string is the name of a set.
sets-file
String. Points to a file that lists sets, one line per set.
update-database
Boolean.
verbose
Boolean.

The following options are supported only by ckmame(1) and mkmamedb(1):

roms-zipped
Boolean.
use-central-cache-directory
Boolean. Put the cache databases generated by ckmame(1) and mkmamedb(1) below $HOME/.cache/ckmame/. This affects the location of mkmamedb(1)'s .mkmamedb.db (--directory-cache) and ckmame(1)'s .ckmame.db files for extra-directories (but not for the roms, saved, and unknown directories).

The following options are supported only by ckmame(1):

complete-games-only
Boolean.
complete-list
String.
create-fixdat
Boolean.
delete-unknown-pattern
String.
extra-directories
Either an array of strings, or a table where the keys are directories and the values are a table of options. For the second case, the following options are supported:
move-from-extra
Boolean.
use-central-cache-directory
Boolean.
extra-directories-append
Same as “extra-directories” but does not override the previous value, but appends to it instead.
fixdat-directory
String.
keep-old-duplicates
Boolean.
missing-list
String.
move-from-extra
Boolean. Setting this to “false” is the same as using --copy-from-extra on the command line.
old-db
String.
report-changes
Boolean.
report-correct
Boolean.
report-detailed
Boolean.
report-fixable
Boolean.
report-missing
Boolean.
report-no-good-dump
Boolean.
report-summary
Boolean.
rom-directory
String.
saved-directory
String.
unknown-directory
String.
use-torrentzip
Boolean.

The following variables are only supported by mkmamedb(1):

dats
Array of strings, or table where the keys are strings and the values are tables with options. Each string is the (internal) name of a dat. The supported options in the second case are:
game-name-suffix
String. Suffix all game names in the dat with the given string argument.
use-description-as-name
Boolean.
dat-directories
Either an array of strings, or a table where the keys are directories and the values are a table of options. Each string is a directory containing dats.
use-central-cache-directory
Boolean.
use-temp-directory
Boolean.

While TOML is a relatively simple and readable format, it has some unexpected details:

Any key that contains characters other than letters, digits, “-”, and “_” must be quoted using double quotes.

Nested tables can be written in two forms:

Inline using “{” and “}”. However, the complete inline table must be on one line (unlike inline arrays, which can span multiple lines). See “extra-directories-append” in “Big Set” in EXAMPLES below.

As sections with a “.” separating the outer and inner names:

["outer table name"."inner table name"]
Note that the “.” must be outside any quotation marks. All settings in this section apply to the inner table. When using this for options that allow tables as values (like “dats”), the keys in this table are not configuration variables and need to be quoted if they contain special characters. See “extra-directories” in “Unzipped Set” in EXAMPLES below.

[global]
verbose = true
extra-directories = [ "incoming" ]
sets = [ "Set using standard settings only" ]

[profile.incomplete]
complete-only = true
report-missing = false

["Big Set"]
verbose = false
rom-directory = "Big Set ROMs"
extra-directories-append = { "another-location" = { move-from-extra = true } }
rom-db = "Big Set.db"
profiles = [ "incomplete" ]

["Unzipped Set"]
roms-unzipped = true
rom-directory = "Unzipped Set ROMs"
rom-db = "Unzipped Set.db"
["Unzipped Set".extra-directories]
"unzipped-incoming" = { use-central-cache-directory = true }

This configuration would by default report verbosely, but override this for the "Big Set" set. It would also set the rom directories and database files for both the "Big Set" and the "Unzipped Set" and not use ZIP archives for the latter.

Example run:

ckmame --set Big Set

ckmame(1), dumpgame(1), mkmamedb(1)

ckmame was written by Dieter Baron <dillo@nih.at> and Thomas Klausner <tk@giga.or.at>.