Skip to content

Best Practices

Use an installation method that auto-updates.

Downloading bundled binaries from GitHub is the most difficult way to receive updates to Igir. See the installation page for options available to you.

DATs

Use DATs.

While DATs are optional, they allow you to organize your ROMs in a human-understandable manner while trimming out unknown files. Additional metadata provided by some DAT groups allows you filter your ROM set to only what you care about.

Choose DAT groups with parent/clone information.

Parent/clone information lets you apply 1G1R preference rules. For example, prefer No-Intro's Game Boy DAT over TOSEC's, as TOSEC doesn't provide parent/clone information.

Use consistent versions across all devices.

DATs work best if you store them alongside your primary ROM collection and when you use the same DAT versions across all devices (i.e. your primary collection, handhelds, flash carts, etc.). Some DAT groups release new versions as often as daily, so keeping your collection in sync is easier with consistent DATs.

Process DATs from different groups separately.

DAT groups have some overlap between them, so using DATs from multiple groups at the same time may cause duplicate files or filename collisions. Different groups also have different conventions that may require different settings, such as filters and 1G1R preferences.

Also, keep ROM sets organized by DATs from different groups in separate directories. For example, create different directories for No-Intro, Redump, and TOSEC-organized ROM sets.

File Inputs

Keep one primary collection and then copy to other sub-collections.

Provide your output directory as one of the input directories, and then any other input directories you wish to copy or move into your primary collection. Doing so will let you clean the output directory safely.

Then, create sub-collections by copying files from your main collection to other devices, optionally applying filtering and preference rules.

Provide the output directory as an input directory when moving or cleaning.

This is for a few reasons:

  • 1G1R rules are only applied to files found & matched in the input directories, so moving files out of the input directories may change your 1G1R results on subsequent runs. Providing the output directory as an input directory will make sure you keep your preferred files.
  • The igir clean command excludes files considered for writing (either written or not overwritten). Providing the output directory as an input directory will ensure no DAT-matched files are deleted.

Prefer ROMs with headers.

Igir can remove headers automatically when needed, but it cannot add them back. Keep ROMs with headers in your primary collection and then modify them when copying to other devices as needed.

Don't use quick scanning unless you absolutely need it.

The default settings for Igir will have the best chance for you to match input files to DATs. Using the --input-checksum-quick option will reduce those chances.

Don't increase the minimum checksum level unless you absolutely need it.

The default settings for Igir will cause accurate file matching for the gross majority of cases with the least amount of processing. Additionally, most archive formats only store CRC32 checksums, so forcing any others will greatly increase scanning time. Use the --input-checksum-min <algorithm> option with caution.

File Outputs

Zip ROMs wherever possible.

Zip files generally save file space and are faster to scan, at the expense of more time to create them. For collections that will be read from more often than written to, such as a primary collection, prefer to eat the cost of archiving files once with the igir zip command.

Organize ROM sets by DAT name or description.

Ignoring arcade ROM sets, one purpose of sorting your ROM collection using DATs is to organize them in some human-understandable manner. A common way to help with this is to group ROMs from the same console together using --dir-dat-name or --dir-dat-description`

Alternatively, you can filter to only the DATs you want and then combine them and write the resulting ROMs to one directory.

Organize ROMs by letter for non-keyboard & mouse devices.

Devices that only have a D-pad to browse through files can make ROM selection tedious. Use the --dir-letter option and its --dir-letter-* modifier options to make this easier with large collections.

Use the default game name appending option.

Igir will automatically group games with multiple ROMs together into their own subfolder. Leave this --dir-game-subdir <mode> option as the default unless you know what you're doing.

Overwrite invalid files.

If you value keeping a clean and accurate ROM collection, use the --overwrite-invalid option to overwrite files in the output directory that don't match what's expected with a "valid" file.

Arcade

Use the right DAT version for your emulator version.

You must choose the right DAT for your emulator (e.g. MAME) and emulator version (e.g. MAME 0.258) or your ROMs may not work correctly. See the arcade ROM sets page for more information.

For MAME, use the official DATs or ones from progetto-SNAPS.

These DATs provide the most flexibility (i.e. can use any merge type) and the most amount of metadata (i.e. parent/clone information, ROMs & CHDs together in one DAT) for Igir to use for processing. Other DAT groups such as pleasuredome modify the official DATs quite heavily by pre-applying filters.

Pick a ROM merge type intentionally.

Igir will produce full non-merged sets by default for the highest level of compatability. However, you should understand the difference between the supported merge types and choose one that best suits your needs.

Advanced

Use an SSD or a RAM drive for the temp directory.

Igir sometimes needs to write files to a temporary directory, such as when extracting archives that it can't read natively. Using a fast hard drive for this directory can speed up processing.