Reading Archives
Igir supports scanning the contents of archives for ROMs, DATs, and ROM patches.
Supported types for reading
Igir supports most common archive formats:
Extension | Contains file CRC32s | Igir can extract without a third-party binary | Igir can checksum without temporary files |
---|---|---|---|
.7z |
✅ | ❌ 7za |
❌ |
.chd |
❌ SHA1 | ❌ chdman 1 |
❌ |
.cso , .zso , .dax |
❌ | ❌ maxcso |
⚠️ CRC32 only |
.gz , .gzip |
❌ CRC16 | ❌ 7za |
❌ |
.nkit.iso (GameCube docs) |
✅ | ❌ no extraction support | ✅ |
.rar |
✅ | ✅ | ❌ |
.tar |
❌ | ✅ | ✅ ≤64MiB |
.tar.gz , .tgz |
❌ | ✅ | ✅ ≤64MiB |
.z01 |
✅ | ❌ 7za |
❌ |
.zip (including zip64) |
✅ | ✅ | ✅ ≤64MiB |
.zip.001 |
✅ | ❌ 7za |
❌ |
.zipx |
✅ | ❌ 7za |
❌ |
1 requires you to install SDL2 manually, see the chdman-js README.
You should prefer archive formats that have CRC32 checksum information for each file.
By default, Igir uses CRC32 information to match ROMs to DAT entries. If an archive already contains CRC32 information for each file, then Igir doesn't need to extract each file and compute its CRC32. This can save a lot of time on large archives.
This is why you should use the igir zip
command when organizing your primary ROM collection. It is much faster for Igir to scan archives with CRC32 information, speeding up actions such as merging new ROMs into an existing collection.
You should prefer archive formats that Igir can extract natively.
Somewhat proprietary archive formats such as .7z
and .rar
require Igir to use an external tool to enumerate and extract files. This can greatly slow down processing speed.
This is why Igir uses .zip
as its output archive of choice, .zip
files are easy and fast to read, even if they can't offer as high of compression as other formats.
Exact archive matching
Some DAT files such as the libretro BIOS System.dat catalog archives such as zip files, rather than the contents of those archives. By default, Igir will try to detect DATs like these and calculate checksums for all archive files, in addition to the files they contain.
This adds a potentially non-trivial amount of processing time during ROM scanning, so this behavior can be turned off with the option:
If for some reason Igir isn't identifying an input file correctly as an archive, this additional processing can be forced with the option:
Checksum cache
It can be expensive to calculate checksums of files within archives, especially MD5, SHA1, and SHA256. If Igir needs to calculate a checksum not easily read from the archive (see above), it will cache the result in a file named igir.cache
. This cached result will then be used as long as the input file's size and modified timestamp remain the same.
The location of this cache file can be controlled with the --cache-path <path>
option, or caching can be disabled entirely with the --disable-cache
option. You can safely delete igir.cache
when Igir isn't running if the file becomes too large for you.