Skip to content

DAT Processing

Igir has a number of ways it can process DATs, and it processes them in the following order.

Just tell me what to do

DATs can get fairly complicated, and there are many release groups, each with their own focus areas and naming patterns. If all you want to do is organize your ROMs with Igir in some consistent way, follow these instructions:

  1. Go to the No-Intro DAT-o-MATIC daily download page
  2. Select the "P/C XML" radio option (as opposed to "standard DAT") and download the .zip to wherever you store your ROMs
  3. Every time you run Igir, specify the .zip file you downloaded with the --dat <path> option:

    igir [commands..] --dat "No-Intro*.zip" --input <input>
    

Scanning for DATs

The --dat <path> option supports files, archives, directories, and globs like any of the other file options. See the file scanning page for more information.

Igir also supports URLs to DAT files and archives. This is helpful to make sure you're always using the most up-to-date version of a DAT hosted on sites such as GitHub. For example:

igir [commands..] --dat "https://raw.githubusercontent.com/libretro/libretro-database/master/dat/DOOM.dat" --input <input>

Note

Because of the way DAT-o-MATIC prepares & serves downloads, you can't use this method for official No-Intro DATs.

Supported DAT formats

There have been a few DAT-like formats developed over the years. Igir supports the following:

  • Logiqx XML (most common) (No-Intro, Redump, TOSEC, and more)
  • MAME ListXML (XML exported by the mame -listxml command)

    Tip

    Instead of exporting the ListXML to a file yourself, you can also specify a MAME executable for the DAT path and then Igir is smart enough to parse it:

    Windows is fairly easy, MAME is officially compiled for Windows and downloads can be found on many mirror sites.

    igir [commands..] --dat "mame0258b_64bit.exe" --input <input>
    

    MAME isn't officially compiled for macOS, you will have to use a third-party release such as SDL MAME.

    igir [commands..] --dat "mame0258-x86/mame" --input <input>
    

    Most distros (Ubuntu, Debian, Fedora, etc.) have MAME in their package repositories, but some will require you to compile MAME yourself. If the mame executable is in your $PATH, you can specify its path like this:

    igir [commands..] --dat "$(which "mame")" --input <input>
    

Tip

In case you come across a DAT in a format that Igir doesn't support, SabreTools supports reading a number of obscure formats and converting them to more standard formats such as Logiqx XML.

DAT filtering

To be able to process only the DATs you want in downloaded archives, Igir has a few filtering options.

DAT name regex filtering

--dat-name-regex <pattern|filename>, --dat-name-regex-exclude <pattern|filename>

These options limit which DATs are processed. The regex is applied to the DAT's name found within its file contents, not its filename.

Regex flags can be optionally provided in the form /<pattern>/<flags>, for example:

Headerless|Encrypted
/headerless|encrypted/i

Tip

--dat-name-regex-exclude <pattern|filename> is particularly helpful for excluding some No-Intro DATs versions such as "encrypted" and "headerless".

DAT description regex filtering

--dat-description-regex <pattern|filename>, --dat-description-regex-exclude <pattern|filename>

These options limit which DATs are processed. The regex is applied to the DAT's description found within its file contents.

DAT combining

The --dat-combine option lets you combine every game from every parsed DAT into one file.

This may be desirable when creating a dir2dat, a fixdat, or other complicated situations.

Note

Using this option with the igir zip command will result in all ROMs in a DAT being archived into one file. This can work great for archiving older, cartridge-based consoles with smaller ROM sizes, but will likely not work well with larger ROMs.

To keep files organized in a human-readable way, it is not recommended to use the --dir-game-subdir never option along with igir zip --dat-combine.

Parent/clone inference

One feature that sets Igir apart from other ROM managers is its ability to infer parent/clone information when DATs don't provide it. For example, Redump DATs don't provide parent/clone information, which makes it much more difficult to create 1G1R sets.

For example, all of these Super Smash Bros. Melee releases should be considered the same game, even if a DAT doesn't provide proper information. If the releases are all considered the same game, then the --single option can be used in combination with ROM preferences to make a 1G1R set. Igir is smart enough to understand that the only differences between these releases are the regions, languages, and revisions.

Super Smash Bros. Melee (Europe) (En,Fr,De,Es,It)
Super Smash Bros. Melee (Korea) (En,Ja)
Super Smash Bros. Melee (USA) (En,Ja)
Super Smash Bros. Melee (USA) (En,Ja) (Rev 1)
Super Smash Bros. Melee (USA) (En,Ja) (Rev 2)

Note

If a DAT has any parent/clone information then Igir will use that and skip inference. If you want to ignore this information, you can provide the --dat-ignore-parent-clone option.

Note

It is unlikely that Igir will ever be perfect with inferring parent/clone information. If you find an instance where Igir made the wrong choice, please create a GitHub issue.

Tip

Retool (no longer maintained) is a DAT manipulation tool that has a set of hand-maintained parent/clone lists to supplement common DAT groups such as No-Intro and Redump. This helps cover situations such as release titles in different languages that would be hard to group together automatically.

1G1R DATs made by Retool can be used seamlessly with Igir. You won't need to supply the --single option or any ROM preferences for Igir, as you would have already applied these preferences in Retool, but you can still supply ROM filtering options if desired.