Skip to content

Releases: emmercm/igir

v0.6.3

03 Dec 21:31
3268d51
Compare
Choose a tag to compare

Release Highlights

Use graceful-fs to prevent Windows filesystem errors

As reported by /u/MarketSqHero, Windows users could experience fatal EMFILE exceptions for too many open file handles. graceful-fs should help queue file handle opening to protect against these errors.

All changes

3 December 2022 - 3268d51 - v0.6.3 (#199)
3 December 2022 - 5b26609 - Fix: monkey patch 'fs' with 'graceful-fs' for Windows fixes (#198)
3 December 2022 - dea62a6 - Refactor: eliminate fs.promises (#196)

v0.6.2

03 Dec 16:01
94b7561
Compare
Choose a tag to compare

Release Highlights

This patch update has some quality-of-life fixes suggested by /u/-TheDopefish-:

Throw a fatal exception when specifying --single but no DAT has parent/clone information

This prevents igir from outputting all input ROMs without any --prefer-* options being respected, effectively a silent failure.

"World" is now a region

WORLD can now be specified as a value for the --region-filter and --prefer-region options.

All changes

3 December 2022 - 94b7561 - v0.6.2 (#197)
3 December 2022 - 911dcea - Feature: treat "world" as a filterable region (#193)
3 December 2022 - 919e4dd - Feature: fatal error when no DAT has P/C info and 1G1R is desired (#194)
1 December 2022 - af0b8ce - Update: docs (#190)
1 December 2022 - 8aa5703 - Fix: indexing preference of candidate files (#189)
1 December 2022 - 36b45f5 - Fix: only use the parent dir name for inferred DAT names (#187)
29 November 2022 - 5f2ed06 - Feature: compile and upload binaries to releases (#186)

v0.6.1

26 Nov 03:39
16ef08c
Compare
Choose a tag to compare

Release Highlights

Support for new patch types

Support has been added for:

  • Vcdiff (.vcdiff, .xdelta), but only patches without secondary compression (unfortunately most xdelta3-made patches are likely to use LZMA secondary compression)
  • NINJA 2.0 (.rup), but only patches that use raw/binary for the base file type rather than console-specific types
  • IPS32 (.ips, .ips32), a variant of the far more standard/common IPS

Full documentation can be found on the existing ROM Patching doc page.

All changes

26 November 2022 - 16ef08c - v0.6.1 (#185)
26 November 2022 - 041eee2 - Feature: NINJA patch support (#183)
26 November 2022 - ce2950b - Chore: increase test coverage (#184)
26 November 2022 - 0621ab4 - Feature: vcdiff (uncompressed xdelta) patch support (#175)
26 November 2022 - d7fd153 - Feature: IPS32 patch support (#173)

v0.6.0

25 Nov 22:42
ebdcdee
Compare
Choose a tag to compare

Release Highlights

🪄 Replaceable tokens in the output path 🪄

A few replaceable tokens in the form of {token} can now be interpreted in the --output path. This is particularly useful for Analogue Pocket and MiSTer devices which have different folders for different "cores". Supported tokens are in the --help output (and therefore README), and some personal examples are in the new Advanced Examples doc page.

All changes

25 November 2022 - ebdcdee - v0.6.0 (#182)
25 November 2022 - 31f515e - Update: README (#181)
20 November 2022 - 2dd4514 - Feature: --clean-exclude flag (#179)
20 November 2022 - 2e066e5 - Fix: globbing parentheses in input paths (#180)
20 November 2022 - 3e319d9 - Feature: support replaceable tokens in the output path (#139)
20 November 2022 - 6cd9431 - Fix: only allow one waiting message per progress bar (#167) (#178)

v0.5.0

19 Nov 20:50
4b9726c
Compare
Choose a tag to compare

Release Highlights

🩹 ROM patching 🩹

ROM patch files can now be scanned with the --patch option and will be applied to ROMs automatically. The first set of patch types supported are: .bps, .ips, .ppf, and .ups.

See the ROM Patching doc page for more information, including how patch files should be named.

All changes

19 November 2022 - 4b9726c - v0.5.0 (#176)
19 November 2022 - 1eabc48 - Feature: ROM patching documentation (#172)
13 November 2022 - 3357d2e - Feature: automatically remove/keep headers based on headered/headerless DATs (#171)
13 November 2022 - f124cfd - Feature: use the patched filename for game name (#170)
10 November 2022 - 4a551b3 - Refactor: async mkdtemp (#169)
9 November 2022 - 6faea9d - Refactor: patch parsing memory efficiency (#168)
9 November 2022 - 4495591 - Feature: hanging progress message (#167)
8 November 2022 - 9fc0799 - Refactor: FilePoly memory & disk efficiencies (#166)
7 November 2022 - dc383fe - Feature: verbose logging updates (#165)
5 November 2022 - 2594d71 - Fix: immediately render progress bars after creating them (#164)
5 November 2022 - 1d361d2 - Feature: UPS patch support (#162)
5 November 2022 - eba4a48 - Feature: ROM patching end-to-end (#160)
5 November 2022 - 325bd0e - Fix: prevent dangling file handles (#163)
4 November 2022 - fb4b21d - Feature: PPF patch support (#156)
4 November 2022 - 8e53877 - Chore: increase the default Jest timeout (#161)
4 November 2022 - 86d1184 - Feature: write ROMs with patches (#155)
4 November 2022 - fb8b9bb - Fix: misc temp folder and file fixes (#159)
3 November 2022 - e9f49b5 - Refactor: replace yazl with archiver (#157)
3 November 2022 - fc4592c - Chore: strengthen integration tests (#154)
2 November 2022 - 4f44dc5 - Chore: increase test coverage (#153)
2 November 2022 - 1cf5ecb - Feature: BPS patch support (#152)
2 November 2022 - 00d9dfd - Fix: force file deletion during cleaning (#151)
2 November 2022 - e976b18 - Feature: patch candidate generator (#150)
1 November 2022 - fcc3e56 - Feature: IPS patch support (#146)
31 October 2022 - e01fc18 - Feature: patch scanner (#145)

v0.4.0

29 Oct 00:31
525c06c
Compare
Choose a tag to compare

Release Highlights

The ability to work without DAT files

Though you'll get a warning if you don't use them because of how much value they add.

igir can now work without DATs with support for: filtering, copying, moving, and zipping.

1G1R (--single) mode won't work because it requires parent/clone information from a DAT. You also won't be able to generate a report because without a DAT we can't know what ROMs are missing.

All changes

29 October 2022 - 525c06c - v0.4.0 (#143)
28 October 2022 - 2a2796c - Feature: ability to work without DATs (#135)
28 October 2022 - 3b8cc02 - Test: unit test Node.js v14.18.0 (#33)
28 October 2022 - e7fecbe - Chore: update dependency chalk to v5.1.2 (#138)
28 October 2022 - 1da477f - Chore: update rinchsan/renovate-config-validator action to v0.0.12 (#124)
28 October 2022 - a81c44d - Chore: update Jest (#122)
28 October 2022 - 7caff65 - Chore: update dev dependencies (#116)
28 October 2022 - af38e54 - Chore: update Node.js to v18 (#137)
28 October 2022 - 2ce50e1 - Chore: update Node.js to 16.18 (#117)
28 October 2022 - 13a898d - Chore: update lockfile (#114)
28 October 2022 - dcbb9ec - Chore: turn off Codecov patch CI check (#142)
28 October 2022 - 7fdb167 - Chore: add ReportGenerator tests (#141)
26 October 2022 - 3cc2ab0 - Feature: show path count before scanning files (#140)
25 October 2022 - 62a1d61 - Chore: Pin dependencies (#113)
25 October 2022 - b9fc995 - Feature: limit how often the ETA string redraws (#136)
24 October 2022 - 554b4e2 - Feature: colorize console status output (#134)
24 October 2022 - acee792 - Feature: write report to input dir in report-only mode (#133)
23 October 2022 - fedbc29 - Feature: treat MIA as non-retail (#132)

v0.3.1

23 Oct 20:30
517d30a
Compare
Choose a tag to compare

Release Highlights

This is a fairly minor release with only one real change, but it sets up future features for working with ROMs without DATs.

Added detection for GoodTools-style ROM names

No-Intro is one of the only DAT groups that includes release & region info in their DATs, most other groups rely on a consistent naming method for region & language. The GoodTools naming scheme is one of those, and it might look familiar to those who organized ROMs before No-Intro became the dominant DAT group.

This release adds support to detect region & language info for the GoodTools style, as well as some filters for ROMs with hacks, overdumps, trainers, unofficial translations, and more.

All changes

23 October 2022 - 517d30a - v0.3.1 (#131)
21 October 2022 - 77778eb - Feature: add detection for GoodTools-style ROM names (#130)
20 October 2022 - 40c86fb - Fix: limit the number of active progress bars (#129)
20 October 2022 - ea159e9 - Feature: add detection for GoodTools-style ROM names (#128)
20 October 2022 - 3fd4c5c - Chore: add CandidateGenerator header tests (#127)

v0.3.0

17 Oct 03:47
ad1e17e
Compare
Choose a tag to compare

Release Highlights

Support for SNES SMC ROM headers

Added detection for SNES .smc ROM headers. This helps support the big feature of this release...

✂️ Ability to remove ROM headers ✂️

With the --remove-headers option you can now remove the headers from ROMs as you copy, move, and zip them. A full set of instructions can be found on the new ROM Headers docs page.

This is a big deal for SNES in particular because some emulators (e.g. the SNES openFPGA for the Analogue Pocket) can't read "headered" .smc ROMs, they will only work with "un-headered" .sfc ROMs. There are no common ROM managers like igir that offer this header removal functionality.

Header removal also works for the Atari Lynx .lnx ROMs, turning them into .lyx ROMs.

New docs pages added

  • DATs gives more detailed information than the previous README on what DATs are and what "parent/clone" means
  • ROM Dumping was moved out of the README to help with clarity
  • ROM Headers was created to help explain what headers are, how igir uses them with file detection, and how they can be removed if needed

All changes

17 October 2022 - ad1e17e - v0.3.0 (#126)
15 October 2022 - 29967a7 - Feature: de-duplicate scanned files before processing (#125)
14 October 2022 - 56c5e75 - Feature: ability to remove ROM headers (#120)
14 October 2022 - 3de74c1 - Feature: proper .tar.gz support (#123)

v0.2.2

14 Oct 04:13
bbcb52c
Compare
Choose a tag to compare

Release Highlights

Output report format changed to CSV

CSVs are much easier to open in your spreadsheet editor of choice and filter to your heart's content. The report now includes found ROMs in addition to missing ROMs, as well as other information from DATs.

Minor fixes & updates

  • CTRL-C should now exit the program as expected
  • Zip file handles are now properly closed after enumerating contents
  • The progress bar ETA formula was updated to be smoother

All changes

14 October 2022 - bbcb52c - v0.2.2 (#121)
14 October 2022 - 71a63e9 - Chore: add issue templates (#119)
14 October 2022 - f27ec79 - Feature: support SMC headers (#118)
10 October 2022 - 9fb39c2 - Update: Renovate config (#115)
10 October 2022 - a709656 - Update: README (#107)
10 October 2022 - c645522 - Update: Renovate config (#108)
10 October 2022 - 25345a9 - Feature: group games with multiple ROMs by game name (#111)
10 October 2022 - 9c288c5 - Chore: increase test coverage (#112)
10 October 2022 - 9a71c31 - Feature: add ROM filenames to report CSV (#110)
10 October 2022 - fff8c44 - Chore: add WebStorm run configuration templates (#109)
10 October 2022 - def33f4 - Chore: update dev dependencies (#103)
10 October 2022 - dc2e4eb - Chore: update Jest (#83)
9 October 2022 - 581d150 - Refactor: embed input and output files in ReleaseCandidate (#102)
9 October 2022 - 40c9075 - Chore: update dependencies (#80)
8 October 2022 - 621c0b3 - Refactor: cleanup test temp file code (#105)
8 October 2022 - 8c69324 - Fix: close zip after reading entry (#106)
8 October 2022 - a5a3a1e - Refactor: cleanup zip writing code (#104)
3 October 2022 - 1331c25 - Refactor: remove non-null assertion operators (#100)
2 October 2022 - 2eea809 - Feature: change output report format to CSV (#98)
2 October 2022 - b2ad6ce - Feature: use linear regression for progress bar ETA calculation (#97)
2 October 2022 - 565299c - Fix: CTRL-C not exiting (#96)
2 October 2022 - c7ad90e - Chore: update lockfile (#84)
2 October 2022 - 058fa2f - Chore: update dev dependencies (#81)
2 October 2022 - da848b8 - Chore: update dependency typescript to v4.8.4 (#88)
1 October 2022 - 427ae91 - Refactor: use an async factory function for file instantiation (#95)
1 October 2022 - 74802e4 - Refactor: update README on version bump, not every coommit (#94)
1 October 2022 - 5922da3 - Feature: update progress bar ETA calculation formula (#92)

v0.2.1

29 Sep 00:35
1b93e16
Compare
Choose a tag to compare

Release Highlights

ROM matching now uses filesize in addition to CRC32

This should help eliminate any false positives. This also works for headered ROMs.

Ensured support for folders within input archives

Folders in .zip files are now explicitly supported. Unit test fixtures have been added for all major archive formats.

DAT parsing is threaded

This marginally speeds up parsing a large number of DATs such as No-Intro's daily zip. DATs within archives are also counted in the progress bar now.

All changes

29 September 2022 - 1b93e16 - v0.2.1 (#91)
28 September 2022 - 7c3c2f4 - Update: README (#90)
28 September 2022 - 6c91ed7 - Feature: support folders within input archives (#82)
28 September 2022 - 58ae56a - Refactor: prep for #82 (#89)
27 September 2022 - 3a0f729 - Fix: delete input file when moving to a zip that doesn't need writing (#87)
27 September 2022 - 1dd4f12 - Feature: more verbose logging (#86)
23 September 2022 - 564f997 - Refactor: update Renovate commit message (#79)
23 September 2022 - a4697f4 - Feature: consider filesize when finding files by CRC32 (#77)
23 September 2022 - 5058a5c - Refactor: increase constants.ts test coverage (#78)
23 September 2022 - 703b23c - Feature: thread DAT scanning & parsing (#76)
23 September 2022 - 434e474 - Fix: partially invalid tests from #68 (#75)