Skip to content

Internal Operations

Information about the inner workings of Igir.

Order of operations

Igir runs these steps in the following order:

  1. Scan each DAT input path for every file and parse them, if provided (--dat <path>)
  2. Scan each ROM input path for every file (--input <path>)
    • Detect headers in those files, if applicable (see header docs)
  3. Scan each patch input path for every file (--patch <path>) (see patching docs)
  4. Then for each DAT:
    • Parent/clone information is inferred if the DAT has none (see DATs docs)
    • Parent/clone ROMs sets are merged or split (--merge-roms <type>) (see arcade docs)
    • ROMs in the DAT are filtered to only those desired (--filter-* options) (see filtering & preference docs)
    • Input files are matched to ROMs in the DAT (see matching docs)
    • Patch files are matched to ROMs found (see patching docs)
    • ROM preferences are applied (--single, see filtering & preference docs)
    • ROMs without a potentially bad extension have their extension corrected using its file signature
    • ROM archives that aren't being extracted have their checksums calculated
    • ROMs are combined (--zip-dat-name)
    • ROMs are written to the output directory, if specified (copy, move, link)
      • Written ROMs are tested for accuracy, if specified (test)
    • A "dir2dat" DAT is created, if specified (dir2dat) (see dir2dat docs)
    • A "fixdat" is created, if specified (fixdat) (see fixdats docs)
  5. Leftover "moved" input ROMs are deleted (move)
  6. Unknown files are recycled from the output directory, if specified (clean, see cleaning docs)
  7. An output report is written to the output directory, if specified (report, see reporting docs)