ROM Filtering & Preferences
Igir offers many options for filtering as well as 1G1R preferences/priorities (when combined with the --single
option).
ROM filters cut down the list of games desired for a set, and any games filtered out will not appear in reports. ROM preferences decide what duplicates to eliminate (1G1R).
Filters
Multiple filter options can be specified at once.
Game name filter
Only include or exclude games based if their DAT name (or filename if not using DATs) matches a regular expression.
Regex flags can be optionally provided in the form /<pattern>/<flags>
, for example:
A filename can be provided to a file that contains one or more lines of patterns. Multiple patterns will be combined in a logical "or" fashion. For example:
# patterns.txt
^Mario
/kirby|zelda/i
# --filter-regex patterns.txt would match:
Mario's Picross (USA, Europe) (SGB Enhanced)
Kirby's Dream Land (USA, Europe)
Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2)
# --filter-regex patterns.txt would NOT match:
Dr. Mario (World) (Rev 1)
Super Mario Land (World) (Rev 1)
Tetris (World) (Rev 1)
Wario Land II (USA, Europe) (SGB Enhanced)
Language filter
Languages are two-letter codes, and multiple languages can be specified with commas between them. See the --help
message for the full list of understood languages.
If a game doesn’t have language information specified, it will be inferred from the region.
Here are some example game names that Igir can parse languages from, including ones with multiple languages:
English:
Donkey Kong (Japan, USA) (En) (SGB Enhanced)
Dr. Franken (USA)
Dragon's Lair - The Legend (Europe)
Gear Works (U) [!]
Japanese:
Final Reverse (Japan)
Makai Toushi Sa-Ga (World) (Ja) (Rev 1) (Collection of SaGa)
Ohasuta Dance Dance Revolution GB (J) [C][!]
Spanish:
Humans, The (Europe) (En,Fr,De,Es,It)
Pokemon - Edicion Azul (Spain) (SGB Enhanced)
Rugrats en Paris - La Pelicula (S) (M2) [C][!]
A game can have many languages, and all of them are considered during filtering.
Region filter
Regions are two or three-letter codes, and you can specify multiple regions with commas between them. See the --help
message for the full list of understood regions.
Here are some example game names that Igir can parse regions from:
USA:
10-Pin Bowling (USA)
Addams Family, The - Pugsley's Scavenger Hunt (USA, Europe)
Castelian (U) [!]
Japan:
Dragon Quest I & II (J) [C][!]
Taikyoku Renju (Japan) (En,Ja)
Europe:
Adventures of Lolo (Europe) (SGB Enhanced)
Castlevania Adventure, The (E) [!]
Soccer (Europe, Australia) (En,Fr,De) (SGB Enhanced)
Spain:
Dragon Ball Z - Guerreros de Leyenda (S) [C][!]
Star Trek - The Next Generation (Spain)
A game can only have one primary region. The first region detected is what is used.
BIOS
Filter out, or only include games that are marked bios="yes"
in the DAT, or contain [BIOS]
in their name, e.g.:
[BIOS] Nintendo Game Boy Boot ROM (World) (Rev 1)
[BIOS] Nintendo Game Boy Color Boot ROM (World) (Rev 1)
Tip
--only-bios
is a great option to collate all BIOS files across all consoles to one directory.
MAME devices
Filter out or only include MAME devices. MAME devices typically represent physical devices, such as microcontrollers, video display controllers, sounds boards, and more. Many MAME devices don't have any associated ROM files.
Unlicensed
Filter out, or only include games that contain (Unl)
or (Unlicensed)
in their name, e.g.:
These games are still considered "retail" releases (below).
Only retail
Enables all the following --no-*
options, as well as filtering out games that are:
-
Alphas: games that contain
(Alpha)
in their name, e.g.:
-
Cracked: games that contain
[cr]
or[cr *]
in their name, e.g.:
-
Fixed: games that contain
[f]
or[f#]
in their name, e.g.:
-
Non-public "MIA": games that contain
[MIA]
in their name, e.g.:
-
Overdumps: games that contain
[o]
or[o#]
in their name, e.g.:
-
Pending dumps: games that contain
[!p]
in their name, e.g.:
-
Pirated: games that contain
(Pirate)
,[p]
, or[p#]
in their name, e.g.:
-
Unofficial translations: games that contain
[T-*]
or[T+*]
in their name, e.g.:
-
Games with hacks: games that contain
(Hack)
or[h*]
in their name, e.g.:
-
Games with trainers: games that contain
[t]
or[t#]
in their name, e.g.:
Debug
Filter out, or only include games that contain (Debug)
in their name, e.g.:
Demos
Filter out or only include games that contain one of the following in their name:
(Demo[a-z0-9. -]*)
(regex)@barai
(Kiosk[a-z0-9. -]*)
(regex)(Preview)
GameCube Preview
Kiosk Demo Disc
PS2 Kiosk
PSP System Kiosk
Taikenban
Trial Edition
or has the game category of Demos
, e.g.:
Betas
Filter out, or only include games that contain (Beta)
in their name, e.g.:
Samples
Filter out, or only include games that contain (Sample)
in their name, e.g.:
Prototypes
Filter out, or only include games that contain (Proto)
or (Prototype)
in their name, or has the game category of Preproduction
, e.g.:
Program application ROMS
Filter out or only include games that contain one of the following in their name
([a-z0-9. ]*Program)
(regex)Check Program
Sample Program
AGB Aging Cartridge (World) (v1.0) (Test Program)
AGB-Parallel Interface Cartridge (Japan) (En) (Program)
Homebrew
Filter out, or only include games that contain (Homebrew)
in their name, e.g.:
Game Boy Camera Gallery 2022, The (World) (Aftermarket) (Homebrew)
GB-Wordyl (World) (Aftermarket) (Homebrew)
Unverified dumps
Only include, or filter out games that contain [!]
in their name.
For example, --no-unverified
would filter out the following:
and --only-unverified
would filter out the following:
Kirby & The Amazing Mirror (U) [!]
Legend of Zelda, The - A Link To The Past with Four Swords (E) (M5) [!]
Mario & Luigi - Superstar Saga (U) [!]
Warning
This is a GoodTools naming convention, other groups such as No-Intro never include [!]
in their names!
Bad dumps
Filter out, or only include games that contain [b]
or [b#]
in their name, e.g.:
[MIA] Aprilia - DiTech Interface (Unknown) (Unl) [b]
Great Greed (U) [b1]
Gremlins 2 - The New Batch (W) [b2]
as well as games that contain [c]
or [x]
and are not verified dumps (above), e.g.:
Preferences (for 1G1R)
The --single
option is required for all --prefer-*
options, otherwise there would be no effect.
Multiple --prefer-*
options can be specified at once, and they will be applied in the following order of importance (most important to least important).
Warning
Be careful when using the igir move
command! 1G1R preferences are only applied to files found & matched in the input directories. Because moving files will change what files are in your input directories, different games may be preferred if you run the same command multiple times.
It is a best practice to include your output directory as an input directory when moving files. This will ensure any previously moved games remain the preferred version when applying 1G1R rules again.
Prefer game names
Prefer games if their DAT name (or filename if not using DATs) matches a regular expression.
Regex flags can be optionally provided in the form /<pattern>/<flags>
, for example:
Prefer ROM filenames
Prefer games if any of their ROM filenames matches a regular expression.
Regex flags can be optionally provided in the form /<pattern>/<flags>
, for example:
Prefer verified
Prefer games that contain [!]
in their name over those that don't.
Warning
This is a GoodTools naming convention, other groups such as No-Intro never include [!]
in their names!
Prefer good
Prefer games that don't contain [b]
or [b#]
in their name over those that do.
See the bad dumps section for more information about "good" and "bad" ROMs.
Prefer language
Prefer games of certain languages over those in other languages. Multiple languages can be specified, in priority order, with commas between them. See the --help
message for the full list of understood languages.
If a game doesn’t have language information specified, it will be inferred from the region.
For example, to prefer games in English and then Japanese, the command would be:
Prefer region
Prefer games from certain regions over those from other regions. Multiple regions can be specified, in priority order, with commas between them. See the --help
message for the full list of understood regions.
For example, to prefer games from: USA (highest priority), "world," and then Europe, the command would be:
Prefer revision
Prefer newer or older revisions, versions, or ring codes of a game.
Revisions can be numeric:
Frogger (Europe) (En,Fr,De,Es,It,Nl) (GB Compatible)
Frogger (USA) (Rev 1) (GB Compatible)
Frogger (USA) (Rev 2) (GB Compatible)
or alphabetical:
MSR - Metropolis Street Racer (Europe) (En,Fr,De,Es)
MSR - Metropolis Street Racer (Europe) (En,Fr,De,Es) (Rev A)
MSR - Metropolis Street Racer (Europe) (En,Fr,De,Es) (Rev B)
Versions can be semantic:
F1 World Grand Prix for Dreamcast v1.011 (1999)(Video System)(JP)(en)[!]
F1 World Grand Prix for Dreamcast v1.000 (1999)(Video System)(PAL)(M4)[!]
F1 World Grand Prix v1.006 (2000)(Video System)(US)(M4)[!]
Ring codes can be numeric:
Prefer retail
Prefer games that are considered "retail" releases over those that aren't.
See the only retail section for more information on what games are considered "retail."
Prefer parent
Prefer games that DATs consider the "parent" of other game clones, over the clones themselves.
It is unlikely you will often use this option, it is more likely other preference options will accomplish what you want.