This repository is now deprecated, will no longer be updated and is being archived.
RA ROM Processor is a Docker container that is used to aquire/orgainze/process/verify/dedupe/scrape a ROMs library automatically by matching ROMs to the RetroAchievement.org website Hash database. This was inspired by other projects such as: hascheevos
The script must run one time to generate the platform input folders: /input/<platform_rom_folder>
With AutoStart enabled, all you have to do is copy/move your ROMs into the /input/<platform_rom_folder>
volume.
The script will then automatically process all of the files in the volume, by matching/validating them against the RetroAchievements DB (Hash List) using the official RAHasher applicatoin via a automated script process.
Then the files will be processed using skyscraper to gather/download metadata from screenscraper and saved into the /output
volume.
Lastly, ROMs that have no metadata will be removed from the final /output
list/directories. This will ensure a completely clean library.
FEAR NOT, all ROMs that are processed are backed up to the /backup
volume. This will allow you to verify the end result before deciding to remove the original data used for import/processing.
- Amiga (Tested - RA Unsupported Platform)
- Amstrad CPC (Tested)
- Apple II
- Arcade
- Atari 2600 (Tested)
- Atari 5200 (Tested - RA Unsupported Platform)
- Atari 7800 (Tested)
- Atari Jaguar (Tested)
- Atari Lynx (Tested)
- Atari ST (Tested - RA Unsupported Platform)
- ColecoVision (Tested)
- Commodore 64 (Tested - RA Unsupported Platform)
- Fairchild Channel F (Tested - RA Unsupported Platform)
- Intellivision (Tested)
- NEC TurboGrafx-16 (Tested - Unsupported by Skyscraper)
- Neo Geo CD (Tested - RA Unsupported Platform)
- Nintendo: 64 (Tested)
- Nintendo: DS
- Nintendo: GameBoy (Tested)
- Nintendo: GameBoy Advance (Tested)
- Nintendo: GameBoy Color (Tested)
- Nintendo: Nintendo Entertainment System (Tested)
- Nintendo: Pokemon Mini (Tested)
- Nintendo: Super Nintendo Entertainment System (Tested)
- Nintendo: VirtualBoy (Tested)
- Sega 32X (Tested)
- Sega Dreamcast
- Sega CD
- Sega Game Gear (Tested)
- Sega Mega Drive (Tested)
- Sega Master System (Tested)
- Sega Saturn
- SG-1000 (Tested)
- Sharp X68000 (Tested - RA Unsupported Platform)
- SNK Neo Geo Pocket (Tested)
- SNK Neo Geo Pocket Color (Tested)
- Magnavox Odyssey 2 (Tested - Unsupported by Skyscraper)
- MSX (Tested)
- MSX2 (Tested)
- PC Engine
- PlayStation
- PlayStation Portable
- Vectrex (Tested)
- WonderSwan (Tested)
- WonderSwan [Color] (Tested)
- ZX Spectrum (Tested - RA Unsupported Platform)
The architectures supported by this image are:
Architecture | Tag |
---|---|
x86-64 | latest |
Tag | Description |
---|---|
latest | Newest release code |
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal>
respectively. For example, -p 8080:80
would expose port 80
from inside the container to be accessible from the host's IP on port 8080
outside the container.
Parameter | Function |
---|---|
-e PUID=1000 |
for UserID - see below for explanation |
-e PGID=1000 |
for GroupID - see below for explanation |
-v /config |
Configuration files for hascheevos. |
-v /cache |
cache location for skyscraper. |
-v /input |
Place ROMs to be processed in this directory |
-v /backup |
Processed ROMs are backed up to this directory |
-v /output |
ROMs that have been processed will end up here |
-e AutoStart=true |
true = Enabled :: Runs script automatically on startup |
-e ScriptInterval=1h |
When AutoStart is enabled, script will loop indefinitely, this allows the script to pause between loops, via sleep command |
-e DeDupe=false |
true = Enabled :: This setting further reduces the final ROMs list per platrom, by removing duplicates with the priority of: USA > Europe > World > Japan, and then by shortest filename when multiples exist |
-e AquireRomSets=false |
true = Enabled :: Enabling this will have the script attempt to pull valid ROM sets from archive.org for processing :: Not all systems supported... |
-e ConcurrentDownloadThreads=5 |
Number of concurrent threads to increase download speed... only aplicable if AquireRomSets is enabled (true) |
-e EnableUnsupportedPlatforms=true |
true = Enabled :: Enabling this will allow the script to import and scrape ROMs for platforms without RA hashes, no deduping/validation is performed |
-e ScrapeMetadata=false |
true = Enabled :: Enabling this will allow the script to process the ROMs with skyscraper |
-e keepBackupsOfImportedRoms=true |
false = Enabled :: This setting will only keep a single copy of each ROM, reduces the required amount of storage space... |
-e skyscraperLanguagePreference=en |
Set to preferred language for Metadata, for more info visit: skyscraper |
-e ScreenscraperUsername=Username |
Username for https://screenscraper.fr/ |
-e ScreenscraperPassword=Password |
Password for https://screenscraper.fr/ |
docker create \
--name=raromprocessor \
-v /path/to/config/files:/config \
-v /path/to/skyscraper_cache:/cache \
-v /path/to/rom_input_folder:/input \
-v /path/to/rom_backup_folder:/backup \
-v /path/to/rom_output_folder:/output \
-e PUID=1000 \
-e PGID=1000 \
-e AutoStart=true \
-e ScriptInterval=1h \
-e DeDupe=false \
-e AquireRomSets=false \
-e ConcurrentDownloadThreads=5 \
-e EnableUnsupportedPlatforms=true \
-e ScrapeMetadata=false \
-e keepBackupsOfImportedRoms=true \
-e ScreenscraperUsername=Username \
-e ScreenscraperPassword=Password \
-e skyscraperLanguagePreference=en \
--restart unless-stopped \
randomninjaatk/raromprocessor
Compatible with docker-compose v2 schemas.
version: "2.1"
services:
raromprocessor:
image: randomninjaatk/raromprocessor
container_name: raromprocessor
volumes:
- /path/to/config/files:/config:rw
- /path/to/skyscraper_cache:/cache:rw
- /path/to/rom_input_folder:/input:rw
- /path/to/rom_backup_folder:/backup:rw
- /path/to/rom_output_folder:/output:rw
environment:
- PUID=1000
- PGID=1000
- AutoStart=true
- ScriptInterval=1h
- DeDupe=false
- AquireRomSets=false
- ConcurrentDownloadThreads=5
- EnableUnsupportedPlatforms=true
- ScrapeMetadata=false
- keepBackupsOfImportedRoms=true
- ScreenscraperUsername=Username
- ScreenscraperPassword=Password
- skyscraperLanguagePreference=en
restart: unless-stopped
- RetroAchievements (Used for validation)
- RAHasher (Used for Hashing)
- hascheevos (Used for inspiration)
- skyscraper (Tool used for scraping ROM metadata)
- screenscraper (DB used for ROM metadata)
- Rom icons created by phatplus - Flaticon
- Internet Archive