ARCH R

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:

LabelFilesystemWhat it holds
ARCHRFAT32, 256 MBKernel, device trees, boot configuration
ARCHR_ROOText4, 4.5 GBThe system image
STORAGEext4, the rest of the cardYour 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/roms and 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:

FolderSystemExtensions
nesNintendo Entertainment System.nes .unif .unf .zip .7z
snesSuper Nintendo.smc .fig .sfc .swc .zip .7z
n64Nintendo 64.z64 .n64 .v64 .zip .7z
gb gbc gbaGame Boy family.gb .gbc .gba .zip .7z
ndsNintendo DS.nds .zip .7z
megadriveMega Drive and Genesis.bin .gen .md .sg .smd .zip .7z
mastersystemMaster System.bin .sms .zip .7z
gamegearGame Gear.bin .gg .zip .7z
segacd megacdSega CD and Mega CD.chd .cue .iso .m3u
sega32x32X.32x .smd .bin .md .zip .7z
saturnSaturn.cue .chd .iso .zip
dreamcastDreamcast.cdi .gdi .chd .m3u .cue
psxPlayStation.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso
pspPSP.iso .cso .pbp .chd
pcenginePC Engine and TurboGrafx-16.pce .bin .zip .7z
pcenginecdPC Engine CD.cue .ccd .chd .toc .m3u
neogeoNeo Geo.7z .zip .neo
arcadeArcade.zip .7z
fbneoFinalBurn Neo.7z .zip
mameMAME.7z .zip
atari2600Atari 2600.a26 .bin .zip .7z
atarilynxAtari Lynx.lnx .lyx .o .zip .7z
atarijaguarAtari Jaguar.j64 .jag .rom .abs .cof .bin .prg
wonderswanWonderSwan.ws .wsc .zip .7z
ngp ngpcNeo Geo Pocket.ngp .ngc .zip .7z
pcDOS.com .bat .exe .dosz
portsPortMaster, see Ports.sh .appimage
pico-8PICO-8.p8 .png
doomDoom engine games.doom

A few folder names catch people out:

  • Mega Drive appears three times, as megadrive, genesis and megadrive-japan. They are separate entries in the list with the same extensions, so pick one and put everything there.
  • The same duplication exists for nes and famicom, and for snes and sfc.
  • ColecoVision reads from coleco, Odyssey 2 from odyssey, SuperGrafx from sgfx, Macintosh from mac, PC-8800 from pc88 and PC-9800 from pc98.
  • Atari Lynx and Atari Jaguar use the long names atarilynx and atarijaguar, not lynx and jaguar.
  • 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-systems

It 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-FX

Compressed 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.chd

For 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.

On this page