8000 GitHub - emmercm/igir at emmercm/index-files
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ igir Public

πŸ•Ή A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

License

Notifications You must be signed in to change notification settings

emmercm/igir

Β 
Β 

Repository files navigation

igir

igir (pronounced "eager") is a platform-independent ROM collection manager to help sort collections and make one game, one rom (1G1R) sets.

CLI:Windows,macOS,Linux npm:igir GitHub:emmercm/igir License

Known Vulnerabilities Test Coverage Maintainability Score

What does igir do?

A video of an example use case:

asciicast

With a large ROM collection it can be difficult to:

  • Organize ROM files by console
  • Consistently name ROM files
  • Archive ROMs individually in mass
  • Filter out duplicate ROMs
  • Filter out ROMs for languages you don't understand
  • Know what ROMs are missing for each console

igir helps solve all of these problems!

How does igir work?

igir needs two sets of files:

  1. ROMs, including ones with headers
  2. One or more DATs (see below for where to download)

Many different input archive types are supported for both ROMs and DATs: .001, .7z, .bz2, .gz, .rar, .tar, .tgz, .xz, .z, .z01, .zip, .zipx, and more!

igir then needs one or more commands:

  • copy: copy ROMs from input directories to an output directory
  • move: move ROMs from input directories to an output directory
  • zip: create zip archives of output ROMs
  • test: test all written ROMs for accuracy
  • clean: recycle all unknown files in an output directory
  • report: generate a report on ROMs found and processed

How do I run igir?

With Node.js installed, run from the command line:

npx igir@latest [commands..] [options]

Here is the full igir --help message which shows all available options and a number of common use case examples:

 ______   ______   ______  _______
|      \ /      \ |      \|       \
 \$$$$$$|  $$$$$$\ \$$$$$$| $$$$$$$\
  | $$  | $$ __\$$  | $$  | $$__| $$
  | $$  | $$|    \  | $$  | $$    $$   ROM collection manager
  | $$  | $$ \$$$$  | $$  | $$$$$$$\
 _| $$_ | $$__| $$ _| $$_ | $$  | $$   v0.2.1
|   $$ \ \$$    $$|   $$ \| $$  | $$
 \$$$$$$  \$$$$$$  \$$$$$$ \$$   \$$


Usage: igir [commands..] [options]

Commands:
  igir copy    Copy ROM files from the input to output directory
  igir move    Move ROM files from the input to output directory
  igir zip     Create .zip archives when copying or moving ROMs
  igir test    Test ROMs for accuracy after writing them to the output directory
  igir clean   Recycle unknown files in the output directory
  igir report  Generate a report on the known ROM files found in the input directories

Path options (inputs support globbing):
  -d, --dat            Path(s) to DAT files or archives [array] [required] [default: ["*.dat"]]
  -i, --input          Path(s) to ROM files or archives, these files will not be modified
                                                                             [array] [required]
  -I, --input-exclude  Path(s) to ROM files to exclude                                  [array]
  -o, --output         Path to the ROM output directory                                [string]

Input options:
  -H, --header  Glob pattern of files to force header processing for                   [string]

Output options:
      --dir-mirror    Use the input subdirectory structure for output subdirectories  [boolean]
  -D, --dir-dat-name  Use the DAT name as the output subdirectory                     [boolean]
      --dir-letter    Append the first letter of the ROM name as an output subdirectory
                                                                                      [boolean]
  -s, --single        Output only a single game per parent (1G1R) (requires parent-clone DAT fi
                      les)                                                            [boolean]
  -Z, --zip-exclude   Glob pattern of files to exclude from zipping                    [string]
  -O, --overwrite     Overwrite any ROMs in the output directory                      [boolean]

Priority options (requires --single):
      --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: AR
                               G, ASI, AUS, 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)                                                  [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-parent          Prefer parent ROMs over clones (requires parent-clone DAT files)
                                                                                      [boolean]

Filtering options:
  -L, --language-filter  List of comma-separated languages to limit to (supported: DA, DE, EL,
                         EN, ES, FI, FR, IT, JA, KO, NL, NO, PT, RU, SV, ZH)           [string]
  -R, --region-filter    List of comma-separated regions to limit to (supported: ARG, ASI, AUS,
                          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)          [string]
      --only-bios        Filter to only BIOS files                                    [boolean]
      --no-bios          Filter out BIOS files                                        [boolean]
      --no-unlicensed    Filter out unlicensed ROMs                                   [boolean]
      --only-retail      Filter to only retail releases, enabling all the following flags
                                                                                      [boolean]
      --no-demo          Filter out demo ROMs                                         [boolean]
      --no-beta          Filter out beta ROMs                                         [boolean]
      --no-sample        Filter out sample ROMs                                       [boolean]
      --no-prototype     Filter out prototype ROMs                                    [boolean]
      --no-test-roms     Filter out test ROMs                                         [boolean]
      --no-aftermarket   Filter out aftermarket ROMs                                  [boolean]
      --no-homebrew      Filter out homebrew ROMs                                     [boolean]
      --no-bad           Filter out bad ROM dumps                                     [boolean]

Help options:
  -v, --verbose  Enable verbose logging, can specify twice (-vv)                        [count]
  -h, --help     Show help                                                            [boolean]

Examples:
  igir copy -i **/*.zip -o 1G1R/ -D -s -l EN -r U  Produce a 1G1R set per console, preferring E
  SA,EUR,JPN                                       nglish from USA>EUR>JPN

  igir copy report -i **/*.zip -i ROMs/ -o ROMs/   Merge new ROMs into an existing ROM collecti
                                                   on and generate a report

  igir move zip -i ROMs/ -o ROMs/                  Organize and zip an existing ROM collection

  igir copy -i **/*.zip -o BIOS/ --only-bios       Collate all BIOS files

  igir copy -i ROMs/ -o /media/SDCard/ROMs/ -D --  Copy ROMs to a flash cart and test them
  dir-letter -t

What are DATs?

DATs are catalogs of every known ROM per console. A number of different release groups maintain these catalogs, the most popular are:

  • No-Intro P/C XML (cartridge-based consoles)
    • Note: you can download every console at once from the daily page, but you need to manually select "P/C XML" from the dropdown
  • Redump (optical media-based consoles)

And some less popular release groups are:

These catalogs help igir distinguish known ROM files in input directories from other files and helps generate reports on ROM collections.

igir can currently process DAT files in the XML format only.

How do I obtain ROMs?

Emulators are generally legal, as long as they don't include copyrighted software such as a console BIOS. Downloading ROM files that you do not own is piracy and is illegal in many countries.

Dumping.Guide and Emulation General Wiki are some of the best resources for legally creating ROM files from games you own. Here is a condensed version that isn't guaranteed to be up-to-date:

Dumpable with special hardware Open Source Cartridge Reader
(Save the Hero Builders)
INLretro Dumper Retrode Other hardware
Nintendo - GB, GBC, GBA βœ… βœ… βœ… (w/ adapter) GB Operator
Nintendo - NES/Famicom βœ… (V3 w/ adapter) βœ…
Nintendo - Nintendo 64 βœ… including controller pak saves (V3 w/ addon for EEPROM saves) βœ… βœ… including controller park saves (w/ adapter)
Nintendo - SNES/SFC βœ… (V3 w/ addon for some) βœ… βœ…
Sega - Game Gear βœ… (w/ Retrode Master System adapter) βœ… (w/ Master System adapter)
Sega - Genesis/MD βœ… βœ… βœ…
Sega - Master System βœ… (V3 w/ adapter) βœ… (w/ adapter)
Dumpable without special hardware Media Preservation Frontend (MPF) (w/ PC) With a console
Microsoft - Xbox, 360, One βœ…
Nintendo - 3DS GodMode9 (w/ 3DS)
Nintendo - DS, DSi GodMode9 (w/ 3DS), GodMode9i (w/ DSi), wooddumper (w/ DS)
Nintendo - Famicom Disk FDSStick
Nintendo - Gamecube ⚠️ with specific drives and workarounds CleanRip (w/ Wii)
Nintendo - Switch nxdumptool
Nintendo - Wii ⚠️ with specific drives and workarounds CleanRip
Nintendo - Wii U ❌ wudump
Sega - Dreamcast ⚠️ with specific drives and workarounds SD Rip
Sega - Saturn βœ…
Sony - PlayStation 1, 2 βœ…
Sony - PlayStation 3 ❌ ManaGunZ, multiMAN
Sony - PSP PSP Filer
Sony - PlayStation Vita psvgamesd

Why choose igir?

There a few different popular ROM managers that have similar features:

Each manager has its own pros, but most share the same cons:

  • Windows-only (sometimes with Wine support), making management on macOS and Linux difficult
  • Limited CLI support, making batching and repeatable actions difficult
  • UIs that don't clearly state what actions can, will, or are being performed
  • Required proprietary database setup step
  • Limited or nonexistent archive extraction support
  • Limited or nonexistent ROM header support
  • Limited or nonexistent parent/clone, region, language, version, and ROM type filtering
  • Limited or nonexistent priorities when creating a 1G1R set
  • Limited or nonexistent folder management options
  • Limited or nonexistent report-only modes

About

πŸ•Ή A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

Topics

Resources

License

Stars

Watchers

Forks

Languages

0