CKMAME(1)

NAME
ckmame - verify MAME ROM sets

SYNOPSIS
ckmame [-bcdFfhjKkLlnSsVvw] [-D dbfile] [-e dir] [-O dbfile] [-R dir] [-T file] [- -cleanup-extra] [- -correct] [- -db dbfile] [- -delete-duplicate] [- -delete-found] [- -delete-long] [- -delete-unknown] [- -dryrun] [- -fix] [- -games-from file] [- -help] [- -ignore-extra] [- -ignore-unknown] [- -integrity] [- -keep-duplicate] [- -keep-found] [- -move-long] [- -move-unknown] [- -nobroken] [- -nofixable] [- -nonogooddumps] [- -nosuperfluous] [- -nowarnings] [- -old-db dbfile] [- -rom-dir dir] [- -samples] [- -search dir] [- -superfluous] [- -torrentzip] [- -verbose] [- -version] [game ...]

DESCRIPTION
ckmame is a program to check ROM sets for MAME, the Multiple Arcade Machine Emulator (see http://www.mame.net/), or other emulators that provide ROM set information in a compatible way (e.g., Raine, Impact, or other emulators). This is the same format as clrmamepro dat files. ckmame tells you which ROM files are missing or have a wrong checksum, can delete unknown and unused files from the ROM sets, and rename or move files.

MAME is an emulator for numerous arcade machines (video games, ranging from the 1970s to today). Since MAME is emulating the games, it uses the original images from the arcade machines' original ROM chips. MAME's internal database contains extensive information on the ROMs, including the sizes and checksums of the used ROMs. Since some arcade games are variants of others and share some of the same ROMs, there are also internal dependencies between these so called clones. To save space, ROMs can be archived in zip files and dynamically unzipped by MAME when you play a game. ckmame does only support ROM sets stored as zip files.

ckmame tries to create a “split ROM set” from your current collection. This means that all files needed by the parent are kept in the parent's zip file, and only the files needed by the clone (or child) that are different from the parent's are kept in the child's zip file. For identifying the ROMs ckmame uses the sizes and checksums; names are only used for verification, since the MAME team often renames ROMs.

While ckmame uses MAME's ROM database, it must be converted into a more efficient format before use. See mkmamedb(1) for details.

By default, ckmame will check the games named on the command line, or all games if none are given. Shell wildcards are allowed. You can use command line options to select which type of errors to report.

  OPTIONS
Supported options:

-b, - -nobroken
    Don't report unfixable errors. See also -f and -w.

- -cleanup-extra
    Remove files already in ROM set from extra directories.

-c, - -correct
    Report correct sets. Normally they are not mentioned.

-D dbfile, - -db dbfile
    Use dbfile as database file.

-d, - -nonogooddumps
    Don't report ROMs with no known good dumps.

- -delete-duplicate
    Delete files present in old ROM database (default). See also - -keep-duplicate.

-e dir, - -search dir
    Look for missing files in directory dir and its subdirectories. Recommended for use with update sets. See also -j.

-F, - -fix
    Fix ROM sets; do as much as possible, such as renaming and moving files.

-f, - -nofixable
    Don't report fixable errors. See also -b and -w.

-h, - -help
    Display a short help message.

- -ignore-unknown
    Ignore unknown files when fixing. They will still be reported.

-i, - -integrity
    Check integrity of zip archives and disk images by computing checksums and comparing them with the internally saved ones.

-j, - -delete-found
    When using -e, delete files that are copied to the ROM set. See also - -keep-found.

- -keep-duplicate
    Keep files present in old ROM database. See also - -delete-duplicate.

- -keep-found
    When using -e, do not remove files that are copied to the ROM set (default). See also -j.

-K, - -move-unknown
    Move unknown files when fixing (default). They are moved into a zip file with the same name under roms/garbage. See also -k.

-k, - -delete-unknown
    Delete unknown files when fixing. See also -K.

-L, - -move-long
    Move too long files when fixing (default). See also -K and -l.

-l, - -delete-long
    Delete long files when fixing. See also -L.

-n, - -dryrun
    Don't actually fix anything, just report what would be done.

-O dbfile, - -old-db dbfile
    Assume that files listed in dbfile exist elsewhere.

-R dir, - -rom-dir dir
    Look for roms in dir. Default is “roms”.

-S, - -samples
    Check samples instead of ROMs.

- -superfluous
    Only check for superfluous files in ROM sets.

-s, - -nosuperfluous
    Don't report superfluous (unneeded) files.

-T file, - -games-from file
    Read list of games to check from file.

- -torrentzip
    Create TorrentZip ROM archives. This way, the archives can be more easily shared via BitTorrent. Using this flags loses information from the archive: time stamps, file and archive comments, and file order in the archive are not preserved. Only useful in combination with the -F flag.

-V, - -version
    Display program name and version number.

-v, - -verbose
    Print fixes made.

-w, - -nowarnings
    Print only unfixable error, like missing or completely incorrect ROMs. See also -b and -f.

-X, - -ignore-extra
    Do not mention extra files that are in the ROMs or samples dirs respectively. Most of the time these are ROM sets whose names have changed. Additionally, ckmame creates a roms/garbage directory (see also -K), which you will also be warned about.

ENVIRONMENT

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

MAMEDB_OLD
    Location for the database file of files that exist elsewhere. Can be overridden with the -O option. Defaults to “old.db”.

FILES
Unknown files are moved to the sub-directory unknown. Files that will be needed by other games in the ROM set are moved to the needed directory.

EXAMPLES
Print a report about the current state of your ROM sets in the roms subdir of the current dir:
    ckmame

Fix all sets and only report unfixable errors, omitting those ROMs where no good dump exists:
    ckmame -Fwd

Fix all sets using the files found in updatedir, removing files from there that are copied to the ROM set:
    ckmame -Fj -e updatedir

DIAGNOSTICS
Most messages should be straightforward. Two need special explanations:

If a file is marked as “broken”, it means that the computed checksum is not the same as the checksum stored in the zip archive, usually because there has been a decompression error.

If a ROM or disk is marked with “checksum mismatch”, the primary checksum matches, but one of the other checksums does not. The primary checksum for ROMs is CRC32, for disks MD5.

SEE ALSO
dumpgame(1), mkmamedb(1)

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