From 905aacf28ca0c88915172dc28d69cf26b328f714 Mon Sep 17 00:00:00 2001 From: Christian Emmer <10749361+emmercm@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:20:35 -0800 Subject: [PATCH] v2.4.1 (#932) --- README.md | 230 ++++++++++++++++++++++++---------------------- package-lock.json | 4 +- package.json | 2 +- 3 files changed, 125 insertions(+), 111 deletions(-) diff --git a/README.md b/README.md index 839bb0ca5..30210e564 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ $ igir --help | $$ | $$| \ | $$ | $$ $$ ROM collection manager | $$ | $$| \ | $$ | $$ $$ https://igir.io/ | $$ | $$ \$$$$ | $$ | $$$$$$$\ - _| $$_ | $$__| $$ _| $$_ | $$ | $$ v2.4.0 + _| $$_ | $$__| $$ _| $$_ | $$ | $$ v2.4.1 | $$ \ \$$ $$| $$ \| $$ | $$ \$$$$$$ \$$$$$$ \$$$$$$ \$$ \$$ @@ -72,134 +72,146 @@ Commands (can specify multiple): igir zip Create zip archives of ROMs when copying or moving igir test Test ROMs for accuracy after writing them to the output directory igir dir2dat Generate a DAT from all input files - igir fixdat Generate a fixdat of any missing games for every DAT processed (requires --dat) + igir fixdat Generate a fixdat of any missing games for every DAT processed (requires --dat + ) igir clean Recycle unknown files in the output directory - igir report Generate a CSV report on the known & unknown ROM files found in the input directo - ries (requires --dat) + igir report Generate a CSV report on the known & unknown ROM files found in the input dire + ctories (requires --dat) Input options (supports globbing): - -i, --input Path(s) to ROM files or archives [array] [required] - -I, --input-exclude Path(s) to ROM files or archives to exclude from processing [array] - -p, --patch Path(s) to ROM patch files or archives (supported: .aps, .bps, .dps, .ebp, - .ips, .ips32, .ppf, .rup, .ups, .vcdiff, .xdelta) [array] - -P, --patch-exclude Path(s) to ROM patch files or archives to exclude from processing [array] + -i, --input Path(s) to ROM files or archives [array] [required] + -I, --input-exclude Path(s) to ROM files or archives to exclude from processing [array] + -p, --patch Path(s) to ROM patch files or archives (supported: .aps, .bps, .dps, .e + bp, .ips, .ips32, .ppf, .rup, .ups, .vcdiff, .xdelta) [array] + -P, --patch-exclude Path(s) to ROM patch files or archives to exclude from processing + [array] DAT input options: -d, --dat Path(s) to DAT files or archives (supports globbing) - [array] - --dat-exclude Path(s) to DAT files or archives to exclude from processin - g (supports globbing) [array] - --dat-name-regex Regular expression of DAT names to process [string] - --dat-name-regex-exclude Regular expression of DAT names to exclude from processing - [string] - --dat-description-regex Regular expression of DAT descriptions to process [string] - --dat-description-regex-exclude Regular expression of DAT descriptions to exclude from pro - cessing [string] - --dat-combine Combine every game from every found & filtered DAT into on - e DAT [boolean] - --dat-ignore-parent-clone Ignore any parent/clone information found in DATs[boolean] + [array] + --dat-exclude Path(s) to DAT files or archives to exclude from proces + sing (supports globbing) [array] + --dat-name-regex Regular expression of DAT names to process [string] + --dat-name-regex-exclude Regular expression of DAT names to exclude from process + ing [string] + --dat-description-regex Regular expression of DAT descriptions to process + [string] + --dat-description-regex-exclude Regular expression of DAT descriptions to exclude from + processing [string] + --dat-combine Combine every game from every found & filtered DAT into + one DAT [boolean] + --dat-ignore-parent-clone Ignore any parent/clone information found in DATs + [boolean] ROM output options (processed in order): - -o, --output Path to the ROM output directory (supports replaceable symbols, see - below) [string] + -o, --output Path to the ROM output directory (supports replaceable symbols, s + ee below) [string] --dir-mirror Use the input subdirectory structure for the output directory - [boolean] - -D, --dir-dat-name Use the DAT name as the output subdirectory [boolean] - --dir-dat-description Use the DAT description as the output subdirectory [boolean] - --dir-letter Group games in an output subdirectory by the first --dir-letter-coun - t letters in their name [boolean] + [boolean] + -D, --dir-dat-name Use the DAT name as the output subdirectory [boolean] + --dir-dat-description Use the DAT description as the output subdirectory [boolean] + --dir-letter Group games in an output subdirectory by the first --dir-letter-c + ount letters in their name [boolean] --dir-letter-count How many game name letters to use for the subdirectory name - [number] [default: 1] - --dir-letter-limit Limit the number of games in letter subdirectories, splitting into m - ultiple subdirectories if necessary [number] - --dir-letter-group Group letter subdirectories into ranges, combining multiple letters - together (requires --dir-letter-limit) [boolean] - --dir-game-subdir Append the name of the game as an output subdirectory depending on i - ts ROMs - [choices: "never", "multiple", "always"] [default: "multiple"] - -O, --overwrite Overwrite any files in the output directory [boolean] - --overwrite-invalid Overwrite files in the output directory that are the wrong filesize, - checksum, or zip contents [boolean] - -C, --clean-exclude Path(s) to files to exclude from cleaning (supports globbing)[array] + [number] [default: 1] + --dir-letter-limit Limit the number of games in letter subdirectories, splitting int + o multiple subdirectories if necessary [number] + --dir-letter-group Group letter subdirectories into ranges, combining multiple lette + rs together (requires --dir-letter-limit) [boolean] + --dir-game-subdir Append the name of the game as an output subdirectory depending o + n its ROMs + [choices: "never", "multiple", "always"] [default: "multiple"] + -O, --overwrite Overwrite any files in the output directory [boolean] + --overwrite-invalid Overwrite files in the output directory that are the wrong filesi + ze, checksum, or zip contents [boolean] + -C, --clean-exclude Path(s) to files to exclude from cleaning (supports globbing) + [array] ROM zip command options: - -Z, --zip-exclude Glob pattern of files to exclude from zipping [string] - --zip-dat-name Group all ROMs from the same DAT into the same zip archive, if not excluded - from zipping (enforces --dat-threads 1) [boolean] + -Z, --zip-exclude Glob pattern of files to exclude from zipping [string] + --zip-dat-name Group all ROMs from the same DAT into the same zip archive, if not exclu + ded from zipping (enforces --dat-threads 1) [boolean] ROM symlink command options: - --symlink-relative Create symlinks as relative to the target path, as opposed to absolute - [boolean] + --symlink-relative Create symlinks as relative to the target path, as opposed to absolu + te [boolean] ROM header options: - --header Glob pattern of files to force header processing for [string] - -H, --remove-headers Remove known headers from ROMs, optionally limited to a list of comma-sep - arated file extensions (supported: .a78, .fds, .lnx, .nes, .smc) [string] + --header Glob pattern of files to force header processing for [string] + -H, --remove-headers Remove known headers from ROMs, optionally limited to a list of comma- + separated file extensions (supported: .a78, .fds, .lnx, .nes, .smc) + [string] ROM set options: - --merge-roms ROM merge/split mode (requires DATs with parent/clone information) - [choices: "fullnonmerged", "nonmerged", "split", "merged"] [default: "fullnonmerged"] - --allow-incomplete-sets Allow writing games that don't have all of their ROMs [boolean] + --merge-roms ROM merge/split mode (requires DATs with parent/clone informati + on) + [choices: "fullnonmerged", "nonmerged", "split", "merged"] [default: "fullnonmerged"] + --allow-incomplete-sets Allow writing games that don't have all of their ROMs [boolean] ROM filtering options: - -x, --filter-regex Regular expression of game names to filter to [string] - -X, --filter-regex-exclude Regular expression of game names to exclude [string] - -L, --filter-language List of comma-separated languages to filter to (supported: DA, DE, - EL, EN, ES, FI, FR, IT, JA, KO, NL, NO, PT, RU, SV, ZH) [string] - -R, --filter-region List of comma-separated regions to filter to (supported: ARG, ASI, - AUS, BEL, BRA, CAN, CHN, DAN, EUR, FRA, FYN, GER, GRE, HK, HOL, ITA - , JPN, KOR, MEX, NOR, NZ, POR, RUS, SPA, SWE, TAI, UK, UNK, USA, WO - RLD) [string] - --no-bios Filter out BIOS files, opposite of --only-bios [boolean] - --no-device Filter out MAME devies, opposite of --only-device [boolean] - --no-unlicensed Filter out unlicensed ROMs, opposite of --only-unlicensed [boolean] - --only-retail Filter to only retail releases, enabling all the following "no" opt - ions [boolean] - --no-debug Filter out debug ROMs, opposite of --only-debug [boolean] - --no-demo Filter out demo ROMs, opposite of --only-demo [boolean] - --no-beta Filter out beta ROMs, opposite of --only-beta [boolean] - --no-sample Filter out sample ROMs, opposite of --only-sample [boolean] - --no-prototype Filter out prototype ROMs, opposite of --only-prototype [boolean] - --no-test-roms Filter out test ROMs, opposite of --only-test-roms [boolean] + -x, --filter-regex Regular expression of game names to filter to [string] + -X, --filter-regex-exclude Regular expression of game names to exclude [string] + -L, --filter-language List of comma-separated languages to filter to (supported: DA, D + E, EL, EN, ES, FI, FR, IT, JA, KO, NL, NO, PT, RU, SV, ZH) + [string] + -R, --filter-region List of comma-separated regions to filter to (supported: ARG, AS + I, AUS, BEL, BRA, CAN, CHN, DAN, EUR, FRA, FYN, GER, GRE, HK, HO + L, ITA, JPN, KOR, MEX, NOR, NZ, POR, RUS, SPA, SWE, TAI, UK, UNK + , USA, WORLD) [string] + --no-bios Filter out BIOS files, opposite of --only-bios [boolean] + --no-device Filter out MAME devies, opposite of --only-device [boolean] + --no-unlicensed Filter out unlicensed ROMs, opposite of --only-unlicensed + [boolean] + --only-retail Filter to only retail releases, enabling all the following "no" + options [boolean] + --no-debug Filter out debug ROMs, opposite of --only-debug [boolean] + --no-demo Filter out demo ROMs, opposite of --only-demo [boolean] + --no-beta Filter out beta ROMs, opposite of --only-beta [boolean] + --no-sample Filter out sample ROMs, opposite of --only-sample [boolean] + --no-prototype Filter out prototype ROMs, opposite of --only-prototype[boolean] + --no-test-roms Filter out test ROMs, opposite of --only-test-roms [boolean] --no-aftermarket Filter out aftermarket ROMs, opposite of --only-aftermarket - [boolean] - --no-homebrew Filter out homebrew ROMs, opposite of --only-homebrew [boolean] - --no-unverified Filter out unverified ROMs, opposite of --only-unverified [boolean] - --no-bad Filter out bad ROM dumps, opposite of --only-bad [boolean] + [boolean] + --no-homebrew Filter out homebrew ROMs, opposite of --only-homebrew [boolean] + --no-unverified Filter out unverified ROMs, opposite of --only-unverified + [boolean] + --no-bad Filter out bad ROM dumps, opposite of --only-bad [boolean] One game, one ROM (1G1R) options: - -s, --single Output only a single game per parent (1G1R) (required for all opti - ons below, requires DATs with parent/clone information) [boolean] - --prefer-game-regex Regular expression of game names to prefer [string] - --prefer-rom-regex Regular expression of ROM filenames to prefer [string] - --prefer-verified Prefer verified ROM dumps over unverified [boolean] - --prefer-good Prefer good ROM dumps over bad [boolean] - -l, --prefer-language List of comma-separated languages in priority order (supported: DA - , DE, EL, EN, ES, FI, FR, IT, JA, KO, NL, NO, PT, RU, SV, ZH) - [string] - -r, --prefer-region List of comma-separated regions in priority order (supported: ARG, - ASI, AUS, BEL, BRA, CAN, CHN, DAN, EUR, FRA, FYN, GER, GRE, HK, H - OL, ITA, JPN, KOR, MEX, NOR, NZ, POR, RUS, SPA, SWE, TAI, UK, UNK, - USA, WORLD) [string] - --prefer-revision-newer Prefer newer ROM revisions over older [boolean] - --prefer-revision-older Prefer older ROM revisions over newer [boolean] - --prefer-retail Prefer retail releases (see --only-retail) [boolean] - --prefer-ntsc Prefer NTSC ROMs over others [boolean] - --prefer-pal Prefer PAL ROMs over others [boolean] - --prefer-parent Prefer parent ROMs over clones [boolean] + -s, --single Output only a single game per parent (1G1R) (required for all o + ptions below, requires DATs with parent/clone information) + [boolean] + --prefer-game-regex Regular expression of game names to prefer [string] + --prefer-rom-regex Regular expression of ROM filenames to prefer [string] + --prefer-verified Prefer verified ROM dumps over unverified [boolean] + --prefer-good Prefer good ROM dumps over bad [boolean] + -l, --prefer-language List of comma-separated languages in priority order (supported: + DA, DE, EL, EN, ES, FI, FR, IT, JA, KO, NL, NO, PT, RU, SV, ZH + ) [string] + -r, --prefer-region List of comma-separated regions in priority order (supported: A + RG, ASI, AUS, BEL, BRA, CAN, CHN, DAN, EUR, FRA, FYN, GER, GRE, + HK, HOL, ITA, JPN, KOR, MEX, NOR, NZ, POR, RUS, SPA, SWE, TAI, + UK, UNK, USA, WORLD) [string] + --prefer-revision-newer Prefer newer ROM revisions over older [boolean] + --prefer-revision-older Prefer older ROM revisions over newer [boolean] + --prefer-retail Prefer retail releases (see --only-retail) [boolean] + --prefer-ntsc Prefer NTSC ROMs over others [boolean] + --prefer-pal Prefer PAL ROMs over others [boolean] + --prefer-parent Prefer parent ROMs over clones [boolean] Report options: --report-output Report output location (formatted with moment.js) - [string] [default: "./igir_%YYYY-%MM-%DDT%HH:%mm:%ss.csv"] + [string] [default: "./igir_%YYYY-%MM-%DDT%HH:%mm:%ss.csv"] Help & debug options: - --dat-threads Number of DATs to process in parallel [number] [default: 3] - --reader-threads Maximum number of ROMs to read in parallel per disk[number] [default: 10] - --writer-threads Maximum number of ROMs to write in parallel [number] [default: 10] - -v, --verbose Enable verbose logging, can specify up to three times (-vvv) [count] - -h, --help Show help [boolean] + --dat-threads Number of DATs to process in parallel [number] [default: 3] + --reader-threads Maximum number of ROMs to read in parallel per disk + [number] [default: 10] + --writer-threads Maximum number of ROMs to write in parallel [number] [default: 10] + -v, --verbose Enable verbose logging, can specify up to three times (-vvv) [count] + -h, --help Show help [boolean] -------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------- Advanced usage: @@ -220,12 +232,14 @@ Advanced usage: {funkeyos} The ROM's emulator-specific /* directory for FunKey OS (e.g. "Game Boy") {jelos} The ROM's emulator-specific /roms/* directory for JELOS (e.g. "gb") {minui} The ROM's emulator-specific /Roms/* directory for MinUI (e.g. "Game Boy (GB)") - {mister} The ROM's core-specific /games/* directory for the MiSTer FPGA (e.g. "Gameboy") + {mister} The ROM's core-specific /games/* directory for the MiSTer FPGA (e.g. "Gameboy" + ) {miyoocfw} The ROM's emulator-specific /roms/* directory for MiyooCFW (e.g. "GB") {onion} The ROM's emulator-specific /Roms/* directory for OnionOS/GarlicOS (e.g. "GB") - {pocket} The ROM's core-specific /Assets/* directory for the Analogue Pocket (e.g. "gb") - {twmenu} The ROM's emulator-specific /roms/* directory for TWiLightMenu++ on the DSi/3DS ( - e.g. "gb") + {pocket} The ROM's core-specific /Assets/* directory for the Analogue Pocket (e.g. "gb" + ) + {twmenu} The ROM's emulator-specific /roms/* directory for TWiLightMenu++ on the DSi/3D + S (e.g. "gb") Example use cases: @@ -239,8 +253,8 @@ Example use cases: igir report --dat "*.dat" --input ROMs/ Produce a 1G1R set per console, preferring English ROMs from USA>WORLD>EUR>JPN: - igir copy --dat "*.dat" --input "**/*.zip" --output 1G1R/ --dir-dat-name --single --prefer-la - nguage EN --prefer-region USA,WORLD,EUR,JPN + igir copy --dat "*.dat" --input "**/*.zip" --output 1G1R/ --dir-dat-name --single --prefer + -language EN --prefer-region USA,WORLD,EUR,JPN Copy all Mario, Metroid, and Zelda games to one directory: igir copy --input ROMs/ --output Nintendo/ --filter-regex "/(Mario|Metroid|Zelda)/i" @@ -255,8 +269,8 @@ Example use cases: igir copy zip --dat "MAME 0.258.dat" --input MAME/ --output MAME-0.258/ --merge-roms split Copy ROMs to an Analogue Pocket and test they were written correctly: - igir copy extract test --dat "*.dat" --input ROMs/ --output /Assets/{pocket}/common/ --dir-le - tter + igir copy extract test --dat "*.dat" --input ROMs/ --output /Assets/{pocket}/common/ --dir + -letter ``` ## Feature requests, bug reports, and contributing diff --git a/package-lock.json b/package-lock.json index 5edbd5ffe..bcc1d98e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "igir", - "version": "2.4.0", + "version": "2.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "igir", - "version": "2.4.0", + "version": "2.4.1", "hasInstallScript": true, "license": "GPL-3.0-or-later", "dependencies": { diff --git a/package.json b/package.json index a936b8cb8..3172d08ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "igir", - "version": "2.4.0", + "version": "2.4.1", "description": "🕹 A video game ROM collection manager to help filter, sort, patch, archive, and report on collections on any OS.", "keywords": [ "1g1r",