Gamerom - The Video Game ROM downloader

A command-line installer for game ROMs from many repositories.

It currently supports the following repositories:

Installation

Using Docker

Add this to your .bashrc, .bash_aliases, etc:

alias gamerom="docker run -e UID=$(id -u) -e GROUP_ID=$(id -g) --rm -it -v ~/.gamerom:/home/runuser/.gamerom docker.io/lucasmundim/gamerom:0.4.1"

Use it as:

gamerom help

Using Rubygems

Install it as a regular gem:

$ gem install gamerom

Use it as:

gamerom help

Using Git

Clone, cd into, bundle install, and bundle exec:

$ git clone [email protected]:lucasmundim/gamerom.git
$ cd rom/
$ bundle install

Use it as:

$ bundle exec ./exe/gamerom help

Usage

help

$ gamerom help
Commands:
  gamerom config                                                             # Show config
  gamerom help [COMMAND]                                                     # Describe available commands or one specific command
  gamerom info GAME_IDENTIFIER -p, --platform=PLATFORM -r, --repo=REPO       # Info for game GAME_IDENTIFIER (id/name)
  gamerom install GAME_IDENTIFIER -p, --platform=PLATFORM -r, --repo=REPO    # Install game GAME_IDENTIFIER (id/name)
  gamerom install_all -p, --platform=PLATFORM -r, --repo=REPO                # Install all games
  gamerom list -p, --platform=PLATFORM -r, --repo=REPO                       # List available games
  gamerom platforms -r, --repo=REPO                                          # List available platforms
  gamerom recover -p, --platform=PLATFORM -r, --repo=REPO                    # Try to recover state from already downloaded roms
  gamerom regions -p, --platform=PLATFORM -r, --repo=REPO                    # List available regions
  gamerom repo                                                               # List available repo
  gamerom search KEYWORD -p, --platform=PLATFORM -r, --repo=REPO             # Search games by KEYWORD
  gamerom stats -p, --platform=PLATFORM -r, --repo=REPO                      # Show platform stats
  gamerom stats_all -r, --repo=REPO                                          # Show stats for all platforms
  gamerom uninstall GAME_IDENTIFIER -p, --platform=PLATFORM -r, --repo=REPO  # Uninstall game GAME_IDENTIFIER (id/name)
  gamerom uninstall_all -p, --platform=PLATFORM -r, --repo=REPO              # Uninstall all games
  gamerom update_all_databases -r, --repo=REPO                               # Update all local databases
  gamerom update_database -p, --platform=PLATFORM -r, --repo=REPO            # Update local database
  gamerom version                                                            # Print program version

Options:
  -v, [--verbose], [--no-verbose]  # Show verbose backtrace

repo

List available repo

$ gamerom repo
listing available repo...
coolrom
romnation
vimm

platforms

List available platforms

$ gamerom platform --repo coolrom
listing available platforms for coolrom repo...
---
:platforms:
  atari2600: Atari 2600
  atari5200: Atari 5200
  atari7800: Atari 7800
  atarijaguar: Atari Jaguar
  atarilynx: Atari Lynx
  c64: Commodore 64
  cps1: CPS1
  cps2: CPS2
  mame: MAME
  namcosystem22: Namco System 22
  neogeo: Neo Geo
  neogeocd: Neo Geo CD
  neogeopocket: Neo Geo Pocket
  segacd: Sega CD
  dc: Sega Dreamcast
  gamegear: Sega Game Gear
  genesis: Sega Genesis
  mastersystem: Sega Master System
  model2: Sega Model 2
  saturn: Sega Saturn
  psx: Sony Playstation
  ps2: Sony Playstation 2
  psp: Sony Playstation Portable
$ gamerom platforms -r romnation
listing available platforms for romnation repo...
---
:platforms:
  amstrad: Amstrad
  atari2600: Atari 2600
  atari5200: Atari 5200
  atari7800: Atari 7800
  atarijaguar: Atari Jaguar
  atarilynx: Atari Lynx
  colecovision: ColecoVision
  commodore64: Commodore 64
  gamegear: Game Gear
  gb: Game Boy
  gbc: Game Boy Color
  gcdvectrex: Vectrex
  genesis: Genesis
  intellivision: Intellivision
  mame: MAME
  msx1: MSX
  msx2: MSX2
  mtx: MTX
  n64: N64
  neogeocd: Neo Geo CD
  neogeopocket: Neo Geo Pocket
  nes: NES
  oric: Oric
  pce: PC Engine
  radioshackcolorcomputer: TRS-80
  samcoupe: SAM Coupé
  segacd: Sega CD
  segamastersystem: Master System
  snes: SNES
  thompsonmo5: Thomson MO5
  virtualboy: Virtual Boy
  watara: Watara Supervision
  wonderswan: WonderSwan
$ gamerom platform -r vimm
listing available platforms for vimm repo...
---
:platforms:
  Dreamcast: Dreamcast
  DS: Nintendo DS
  GameCube: GameCube
  GB: Game Boy
  GBA: Game Boy Advance
  GBC: Game Boy Color
  Genesis: Genesis
  N64: Nintendo 64
  NES: Nintendo
  PS1: PlayStation
  PS2: PlayStation 2
  PS3: PlayStation 3
  PSP: PlayStation Portable
  Saturn: Saturn
  SNES: Super Nintendo
  Wii: Wii
  WiiWare: WiiWare

list

List available games

$ gamerom list -r coolrom -p namcosystem22
listing available games for namcosystem22 platform on coolrom repo...
ID   NAME           REGION  INSTALLED           TAGS
316  Rave Racer     USA     installed  -
318  Ridge Racer 2  USA     installed  -

Filtering by region:

$ gamerom list -r coolrom -p model2 -g Japan
listing available games for model2 platform on coolrom repo...
ID     NAME                               REGION  INSTALLED  TAGS
12952  Virtual On Cyber Troopers (Japan)  Japan   -          -
12956  Zero Gunner (Japan Model 2B)       Japan   -          -

Search games by KEYWORD

$ gamerom search -r romnation -p segamastersystem "Alex Kidd in Shinobi World"
searching available games for segamastersystem platform on romnation repo...
ID     NAME                                  REGION  INSTALLED  TAGS
39126  Alex Kidd in Shinobi World (UE) [!]   USA     -          good
39127  Alex Kidd in Shinobi World (UE) [b1]  USA     -          bad
39128  Alex Kidd in Shinobi World (UE) [b2]  USA     -          bad

regions

List available regions

$ gamerom regions -r coolrom -p genesis
listing available regions for genesis platform on coolrom repo...
Australia
Brazil
China
Europe
France
Germany
Japan
Korea
Spain
Sweden
USA

install

Install game GAME_IDENTIFIER (id/name)

$ gamerom install -r vimm -p NES 'Mega Man'
installing game 545 - Mega Man - USA on NES platform on vimm repo...
downloading single file rom
http://download4.vimm.net/download/?mediaId=530
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|  74.8KB  46.3KB/s Time: 00:00:01
Game installed

install_all

Install all games

$ gamerom install_all -r coolrom -p genesis -g Brazil
installing game 48155 - Duke Nukem 3D (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/48155/5dK3T--nRZaY8u4PI5T8cA/1621206423/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 871.7KB 947.8KB/s Time: 00:00:00
Game installed
installing game 6501 - Ferias Frustradas do Pica-Pau (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/6501/ZRVwx6lSpE6lRovr9xyEdg/1621206427/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 383.1KB 679.3KB/s Time: 00:00:00
Game installed
installing game 6358 - Mega Games 10 (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/6358/kjK-Zsuc0pr0JEqvG_G80Q/1621206429/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|   2.6MB   1.1MB/s Time: 00:00:02
Game installed
installing game 47766 - Phantasy Star II (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/47766/wH66hX5V4j3oShDXn511NA/1621206434/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 455.1KB 602.7KB/s Time: 00:00:00
Game installed
installing game 5683 - Sega Top Five (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/5683/2DjilMgmxbTPShCju0uCiA/1621206436/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|   1.2MB 998.2KB/s Time: 00:00:01
Game installed
installing game 47898 - Show do Milhao (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/47898/_T8xacEEtXt1iYsFG6MzFw/1621206439/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|   1.2MB 931.3KB/s Time: 00:00:01
Game installed
installing game 47909 - Show do Milhao Volume 2 (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/47909/O8MHNPxxA6bd3TMyaa7x_g/1621206442/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|   1.2MB 776.2KB/s Time: 00:00:01
Game installed
installing game 47747 - Sport Games (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/47747/9Ne0wIsVUErFiMNWURrjsQ/1621206445/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 745.7KB 693.8KB/s Time: 00:00:01
Game installed
installing game 5552 - Telebradesco Residencia (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/5552/Ne3f6ZBFQSGN-SXMPRWwgw/1621206448/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|  48.6KB 270.2KB/s Time: 00:00:00
Game installed
installing game 5808 - Turma da Monica na Terra dos Monstros (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/5808/iOJ8k5sD7SVnbh_FtXyAWQ/1621206450/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 546.2KB 268.1KB/s Time: 00:00:02
Game installed
installing game 48020 - Where in the World Is Carmen Sandiego (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/48020/p5HRSrsXvU_3GfO9-C1I0w/1621206453/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 713.7KB 336.5KB/s Time: 00:00:02
Game installed
installing game 47824 - Where in Time Is Carmen Sandiego (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/47824/iNkVLfIiFm30d5mPyRIO6g/1621206457/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 631.7KB 332.4KB/s Time: 00:00:01
Game installed
installing game 47770 - Yuu Yuu Hakusho - Sunset Fighters (Brazil) - Brazil on genesis platform on coolrom repo...
http://dl.coolrom.com.au/dl/47770/lygKB0n14EGKCmQkd_lHuw/1621206460/
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|   1.1MB 345.3KB/s Time: 00:00:03
Game installed

uninstall

Uninstall game GAME_IDENTIFIER (id/name)

$ gamerom uninstall -r coolrom -p gamegear 7493
uninstalling game 7493 - Zoop - USA on gamegear platform...
Game uninstalled

uninstall_all

Uninstall all games

$ gamerom uninstall_all -r coolrom -p gamegear
uninstalling game 7274 - 007 James Bond - The Duel - USA on gamegear platform...
Game uninstalled
uninstalling game 7414 - 5 in 1 Funpak - USA on gamegear platform...
Game uninstalled
uninstalling game 7545 - Addams Family - USA on gamegear platform...
Game uninstalled

info

Info for game GAME_IDENTIFIER (id/name)

$ gamerom info -r coolrom -p atari2600 adventure
showing info for game adventure on atari2600 platform on coolrom repo...
15913 - Adventure - USA (installed)
/Users/lucas/.gamerom/games/coolrom/atari2600/USA/Adventure.zip

update_database

Update local database

$ gamerom update_database -r coolrom -p atari2600
updating atari2600 platform on coolrom repo...
atari2600:     100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:13
Game database updated for platform atari2600 on coolrom repo

update_all_databases

Update all local databases

$ gamerom update_all_databases -r coolrom
updating all databases on coolrom repo...
atari2600:     100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
atari5200:     100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:10
atari7800:     100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:10
atarijaguar:   100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
atarilynx:     100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
c64:           100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:23
cps1:          100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:10
cps2:          100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
mame:          100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:01:20
namcosystem22: 100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:10
neogeo:        100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
neogeocd:      100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
neogeopocket:  100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:10
segacd:        100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
dc:            100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:12
gamegear:      100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
genesis:       100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:14
mastersystem:  100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
model2:        100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
saturn:        100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:11
psx:           100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:21
ps2:           100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:17
psp:           100% |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:16
All game databases updated

stats

Show platform stats

$ gamerom stats -r coolrom -p gamegear
stats for gamegear platform on coolrom repo...
  All: 4/337 - size: 440K
  Japan: 0/45 - size: 0
  USA: 4/292 - size: 440K

stats_all

Show stats for all platforms

$ gamerom stats_all -r coolrom
stats for atari2600 platform on coolrom repo...
  All: 645/645 - size: 3.6M
  USA: 645/645 - size: 3.6M

stats for atari5200 platform on coolrom repo...
  All: 94/94 - size: 1.2M
  USA: 94/94 - size: 1.2M

stats for atari7800 platform on coolrom repo...
  All: 58/58 - size: 2.0M
  USA: 58/58 - size: 2.0M

stats for atarijaguar platform on coolrom repo...
  All: 44/44 - size: 85M
  USA: 44/44 - size: 85M

stats for atarilynx platform on coolrom repo...
  All: 85/85 - size: 12M
  USA: 85/85 - size: 12M

stats for c64 platform on coolrom repo...
  All: 0/5649 - size: 0
  Germany: 0/2 - size: 0
  Spain: 0/9 - size: 0
  USA: 0/5638 - size: 0

stats for cps1 platform on coolrom repo...
  All: 24/24 - size: 49M
  USA: 24/24 - size: 49M

stats for cps2 platform on coolrom repo...
  All: 32/32 - size: 472M
  USA: 32/32 - size: 472M

stats for mame platform on coolrom repo...
  All: 22/29668 - size: 16M
  Australia: 0/6 - size: 0
  Brazil: 22/22 - size: 16M
  Canada: 0/5 - size: 0
  China: 0/47 - size: 0
  Europe: 0/48 - size: 0
  France: 0/136 - size: 0
  Germany: 0/230 - size: 0
  Italy: 0/174 - size: 0
  Japan: 0/1556 - size: 0
  Korea: 0/112 - size: 0
  Netherlands: 0/195 - size: 0
  Norway: 0/2 - size: 0
  Russia: 0/95 - size: 0
  Spain: 0/179 - size: 0
  Sweden: 0/2 - size: 0
  USA: 0/26859 - size: 0

stats for namcosystem22 platform on coolrom repo...
  All: 1/2 - size: 21M
  USA: 1/2 - size: 21M

stats for neogeo platform on coolrom repo...
  All: 125/125 - size: 1.5G
  USA: 125/125 - size: 1.5G

stats for neogeocd platform on coolrom repo...
  All: 94/94 - size: 5.1G
  USA: 94/94 - size: 5.1G

stats for neogeopocket platform on coolrom repo...
  All: 0/87 - size: 0
  USA: 0/87 - size: 0

stats for segacd platform on coolrom repo...
  All: 147/147 - size: 14G
  USA: 147/147 - size: 14G

stats for dc platform on coolrom repo...
  All: 0/262 - size: 0
  USA: 0/262 - size: 0

stats for gamegear platform on coolrom repo...
  All: 4/337 - size: 440K
  Japan: 0/45 - size: 0
  USA: 4/292 - size: 440K

stats for genesis platform on coolrom repo...
  All: 990/1615 - size: 637M
  Australia: 0/1 - size: 0
  Brazil: 13/13 - size: 12M
  China: 0/8 - size: 0
  Europe: 10/243 - size: 6.1M
  France: 0/4 - size: 0
  Germany: 0/5 - size: 0
  Japan: 10/373 - size: 4.4M
  Korea: 0/7 - size: 0
  Spain: 0/2 - size: 0
  Sweden: 0/2 - size: 0
  USA: 957/957 - size: 615M

stats for mastersystem platform on coolrom repo...
  All: 309/309 - size: 43M
  USA: 309/309 - size: 43M

stats for model2 platform on coolrom repo...
  All: 23/25 - size: 355M
  Japan: 0/2 - size: 0
  USA: 23/23 - size: 355M

stats for saturn platform on coolrom repo...
  All: 0/133 - size: 0
  USA: 0/133 - size: 0

stats for psx platform on coolrom repo...
  All: 84/5025 - size: 20G
  Australia: 0/1 - size: 0
  Europe: 0/796 - size: 0
  France: 0/30 - size: 0
  Germany: 0/156 - size: 0
  Italy: 0/21 - size: 0
  Japan: 0/2147 - size: 0
  Russia: 0/3 - size: 0
  Spain: 0/36 - size: 0
  USA: 84/1835 - size: 20G

stats for ps2 platform on coolrom repo...
  All: 0/3173 - size: 0
  Australia: 0/85 - size: 0
  China: 0/2 - size: 0
  Europe: 0/1170 - size: 0
  France: 0/25 - size: 0
  Germany: 0/100 - size: 0
  Italy: 0/18 - size: 0
  Japan: 0/219 - size: 0
  Korea: 0/8 - size: 0
  Netherlands: 0/1 - size: 0
  Russia: 0/1 - size: 0
  Spain: 0/47 - size: 0
  Sweden: 0/2 - size: 0
  USA: 0/1495 - size: 0

stats for psp platform on coolrom repo...
  All: 0/2808 - size: 0
  Australia: 0/4 - size: 0
  China: 0/91 - size: 0
  Europe: 0/609 - size: 0
  France: 0/43 - size: 0
  Germany: 0/45 - size: 0
  Italy: 0/35 - size: 0
  Japan: 0/1189 - size: 0
  Korea: 0/107 - size: 0
  Netherlands: 0/6 - size: 0
  Norway: 0/2 - size: 0
  Russia: 0/21 - size: 0
  Spain: 0/37 - size: 0
  Sweden: 0/3 - size: 0
  USA: 0/616 - size: 0

config

Show config

$ gamerom config
{:ROM_ROOT=>"/Users/lucas/.gamerom",
 :CACHE_DIR=>"/Users/lucas/.gamerom/cache",
 :GAME_DIR=>"/Users/lucas/.gamerom/games",
 :LOG_DIR=>"/Users/lucas/.gamerom/logs"}

version

Print program version

$ gamerom version
0.4.1

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/lucasmundim/gamerom. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Gamerom project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.