Adding ROMs
Where games and BIOS files go, supported systems
Games live in /storage/roms, one folder per system. EmulationStation only shows a system once its folder holds at least one file with an extension that system accepts.
How the card is laid out
The image writes three partitions in an MBR table:
| Label | Filesystem | What it holds |
|---|---|---|
ARCHR | FAT32, 256 MB | Kernel, device trees, boot configuration |
ARCHR_ROOT | ext4, 4.5 GB | The system image |
STORAGE | ext4, the rest of the card | Your data: roms/, settings, saves |
STORAGE is only 32 MB inside the downloaded image and grows to fill the card on first boot. ARCHR_ROOT is marked as partition type 0xDA so desktop file managers do not offer to mount it.
Three ways to copy ROMs
1. Put the card in a computer
The partition you want is STORAGE, and the folder you want is roms/. Linux mounts ext4 directly. Windows and macOS do not, so you need either Linux File Systems for Windows by Paragon, WSL with --mount, or an equivalent third-party driver.
2. SSH and SCP
Quicker than moving the card around. See SSH access.
scp ~/roms/snes/*.sfc root@<device-ip>:/storage/roms/snes/3. Samba
Samba is off by default. Turn it on in EmulationStation under Network Settings → Network Services → Enable Samba. The ROM share is called games-roms and points at /storage/roms:
- Windows: open Explorer and type
\\archr\games-roms, or use the IP address. - macOS: Finder,
Cmd-K,smb://archr.local/games-roms. - Linux: your file manager's "Connect to server",
smb://archr.local/games-roms.
The share accepts guests with no password, so only enable it on a network you trust. More detail in Samba.
A second card
If your console has a second card slot, ArchR mounts the card at /storage/games-external. The switch is System Settings → Storage → Autodetect games card, on by default.
What happens next depends on the card:
- If it has a
roms/folder, that folder is bind-mounted over/storage/romsand EmulationStation reads the second card instead of the internal one. The internal library is hidden while the card is in, and comes back when you take it out. - If you turn on Enable merged storage, the two libraries are combined with overlayfs and you see both at once. This needs the second card to be ext4 or btrfs, so FAT32, exFAT and NTFS cards fall back to the bind mount. Merged storage is off by default.
- Merged storage primary card decides which side receives new files.
Eject microSD card in the same menu unmounts everything cleanly before you pull the card.
System folders
There are 125 systems in the list. These are the ones people ask about most:
| Folder | System | Extensions |
|---|---|---|
nes | Nintendo Entertainment System | .nes .unif .unf .zip .7z |
snes | Super Nintendo | .smc .fig .sfc .swc .zip .7z |
n64 | Nintendo 64 | .z64 .n64 .v64 .zip .7z |
gb gbc gba | Game Boy family | .gb .gbc .gba .zip .7z |
nds | Nintendo DS | .nds .zip .7z |
megadrive | Mega Drive and Genesis | .bin .gen .md .sg .smd .zip .7z |
mastersystem | Master System | .bin .sms .zip .7z |
gamegear | Game Gear | .bin .gg .zip .7z |
segacd megacd | Sega CD and Mega CD | .chd .cue .iso .m3u |
sega32x | 32X | .32x .smd .bin .md .zip .7z |
saturn | Saturn | .cue .chd .iso .zip |
dreamcast | Dreamcast | .cdi .gdi .chd .m3u .cue |
psx | PlayStation | .bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso |
psp | PSP | .iso .cso .pbp .chd |
pcengine | PC Engine and TurboGrafx-16 | .pce .bin .zip .7z |
pcenginecd | PC Engine CD | .cue .ccd .chd .toc .m3u |
neogeo | Neo Geo | .7z .zip .neo |
arcade | Arcade | .zip .7z |
fbneo | FinalBurn Neo | .7z .zip |
mame | MAME | .7z .zip |
atari2600 | Atari 2600 | .a26 .bin .zip .7z |
atarilynx | Atari Lynx | .lnx .lyx .o .zip .7z |
atarijaguar | Atari Jaguar | .j64 .jag .rom .abs .cof .bin .prg |
wonderswan | WonderSwan | .ws .wsc .zip .7z |
ngp ngpc | Neo Geo Pocket | .ngp .ngc .zip .7z |
pc | DOS | .com .bat .exe .dosz |
ports | PortMaster, see Ports | .sh .appimage |
pico-8 | PICO-8 | .p8 .png |
doom | Doom engine games | .doom |
A few folder names catch people out:
- Mega Drive appears three times, as
megadrive,genesisandmegadrive-japan. They are separate entries in the list with the same extensions, so pick one and put everything there. - The same duplication exists for
nesandfamicom, and forsnesandsfc. - ColecoVision reads from
coleco, Odyssey 2 fromodyssey, SuperGrafx fromsgfx, Macintosh frommac, PC-8800 frompc88and PC-9800 frompc98. - Atari Lynx and Atari Jaguar use the long names
atarilynxandatarijaguar, notlynxandjaguar. - WonderSwan Color has its own folder,
wonderswancolor.
Four systems do not read from /storage/roms at all: ScummVM looks in /storage/.config/scummvm/games, Tools in /storage/.config/modules, the music player in /storage/.config/gmu/playlists and the image viewer in /storage/roms/screenshots.
The full list lives on the device in /usr/config/emulationstation/es_systems.cfg, with the exact path and extensions for every entry.
Making EmulationStation see new games
New files are picked up on the next boot. To do it without rebooting, use Game Settings → Update gamelists.
BIOS files
BIOS dumps go in /storage/roms/bios, flat, no subfolders, and the filename has to match exactly. ArchR ships no BIOS files, that part is on you.
There is no missing-BIOS screen in the EmulationStation menu on ArchR. Instead there is a command you can run over SSH:
archr-systemsIt walks /storage/roms/bios, compares each file against a table of known md5 sums and prints what is missing or does not match. archr-systems --filter psx narrows it to one system, and archr-systems --createReadme prints every filename and md5 it knows about, 24 systems in total.
Some common ones:
bios/scph5500.bin scph5501.bin scph5502.bin PlayStation
bios/disksys.rom Famicom Disk System
bios/gba_bios.bin Game Boy Advance
bios/neogeo.zip Neo Geo
bios/bios_CD_E.bin bios_CD_U.bin bios_CD_J.bin Sega CD
bios/dc_boot.bin dc_flash.bin Dreamcast
bios/sega_101.bin mpr-17933.bin Saturn
bios/bios7.bin bios9.bin firmware.bin Nintendo DS
bios/panafz1.bin panafz10.bin goldstar.bin 3DO
bios/pcfx.rom PC-FXCompressed ROMs
Most libretro cores open .zip and .7z without unpacking them first. ArchR builds zlib-ng in zlib-compat mode, so every program on the system uses it in place of stock zlib.
For disc-based systems, .chd is worth the conversion: it is smaller than .bin/.cue and lossless. There is no chdman on the console, so convert on your computer:
chdman createcd -i game.cue -o game.chdFor PSP, .cso takes roughly half the space of .iso at a small CPU cost.
Keeping two machines in sync
Syncthing can mirror a folder between the console and your PC over the network. Turn it on in EmulationStation under Network Settings → Network Services → Enable Syncthing, then open http://archr.local:8384 in a browser. It is paused automatically while a game is running, so it does not compete for CPU. See Cloud sync.
Scraping artwork
EmulationStation has a built-in scraper reached from the main menu. There is no headless scraper on the device. See Scraping.
Permissions
/storage is mounted rw,noatime. ROM files do not need a particular owner, emulators read them with ordinary file permissions and ArchR does not rewrite ownership on the partition.
If you delete the per-system folders by accident, they are recreated at boot. The list of directories is /usr/config/system-dirs.conf and the archr-automount service applies it with systemd-tmpfiles --create.