Carte microSD dressée dans un lecteur USB, console portable rétro posée à plat derrière

You copied your files, put the microSD card back in the console, switched the machine on, and the menu stays empty. Or the category appears but no games show up in it. Nine times out of ten, it is neither a fault with the console nor a defective card: the file is in the wrong place, or in a format the system can't read. Each firmware imposes its own folder structure, and a single misplaced capital letter is enough to make the scan fail.

If you are new to the subject, start with our guide How to add games to a retro handheld console. What follows is the next level up: the exact paths, firmware by firmware, the accepted formats and the pitfalls.

Game files must come from your own cartridges or discs, or from legal sources: see our Where to play legally page. We provide no links or download sources for games.

Preparing the microSD card

FAT32 or exFAT: the trade-off

FAT32 is the most universally readable format. Several firmwares require it, notably Onion OS on the Miyoo Mini and the stock cards of several Anbernic consoles. Its drawback is structural: no file can exceed 4 GB. A PS2 ISO, a GameCube image or a Dreamcast GDI rarely fits under that limit.

exFAT removes this limit. It is recommended by muOS, used by ArkOS's EASYROMS partition and offered by Knulli's built-in formatter. It is the format to choose as soon as you are aiming for PS2, GameCube or Dreamcast with uncompressed images.

What this means for your choice of card. Putting a 512 GB or 1 TB card in a machine that requires FAT32 makes no sense: you will only store files under 4 GB on it, meaning 8/16-bit systems, GBA, Nintendo DS and CDs converted to CHD. A 128 or 256 GB card is then enough. Keep large capacities for Android consoles and Linux firmwares using exFAT.

For speed and endurance, see our guide Choosing a microSD card for a retro console.

Formatting properly

  • Windows: File Explorer refuses FAT32 above 32 GB. Use SD Card Formatter, then guiformat (Fat32Format) to force FAT32 on a large card. For exFAT, Disk Management is enough.
  • macOS: Disk Utility, GUID Partition Map scheme, MS-DOS (FAT) or ExFAT format.
  • Linux: mkfs.vfat -F 32, mkfs.exfat, or GParted.

Checking a new card before filling it

Fake capacities are common. A card sold as 512 GB may really hold only 32: writing seems to work, then files silently become corrupted. Check before copying anything, with H2testw on Windows or f3write then f3read on Linux and macOS. The check takes several hours, but it saves you from rebuilding your entire library.

The folder structure, firmware by firmware

Paths checked for the most widespread firmwares. Common rule: never rename system folders that were created automatically, and respect upper and lower case.

Anbernic stock firmware (Linux: 35XX, 40XX, 34XX, CubeXX)

These machines have two slots: the system card (TF1) and an optional content card (TF2). Insert a blank card in the second slot and boot up: the console creates the folder structure itself.

Item Path
Games Roms/<system>/ (e.g. Roms/GBA/)
Box art Roms/<system>/Imgs/
BIOS bios/ at the root of the system card
Recommended format FAT32 for the second card

The exact names of the subfolders vary by model and version: let the console generate them rather than creating them by hand.

muOS

muOS doesn't impose folder names: it scans the contents of the ROMS folder and assigns an emulator to each subfolder.

Item Path
Card 1 (SD1) /mnt/mmc/
Card 2 (SD2) /mnt/sdcard/
Games /mnt/mmc/ROMS/<folder>/ or /mnt/sdcard/ROMS/<folder>/
BIOS /mnt/mmc/MUOS/bios/
Box art MUOS/info/catalogue/<System>/box/ and /preview/
Core assignment /mnt/mmc/MUOS/info/assign.json
Format FAT32 or exFAT (exFAT recommended)

The image name must match the game name exactly: Chrono Trigger (USA).zip calls Chrono Trigger (USA).png.

Knulli

Knulli expects all your data in /userdata: the SHARE partition of the main card, or the second card if you use one. The two cannot be used at the same time.

Item Path
Games /userdata/roms/<system>/ (e.g. /userdata/roms/snes/, /userdata/roms/gb/)
BIOS /userdata/bios/
Saves /userdata/saves/
Configuration /userdata/system/
Ports / PortMaster /userdata/roms/ports/
Format exFAT (volume label share) or ext4 via the built-in formatter

Knulli only scans the subfolders of roms: a file placed directly in /userdata/roms/ will never be detected.

ArkOS

On a computer, the partition appears under the name EASYROMS; on the console and over the network, it is /roms.

Item Path
Games /roms/<system>/ — e.g. /roms/psx/, /roms/snes/, /roms/gba/, /roms/arcade/
Second card /roms2/ (same structure)
BIOS /roms/bios/ or /roms2/bios/
Box art /roms/<system>/images/ + gamelist.xml in the system folder
Format exFAT

ROCKNIX (formerly JELOS)

Item Path
Games /storage/roms/<system>/ (e.g. /storage/roms/nes/)
Second card (slot 2) /storage/games-external/roms/
Internal storage /storage/games-internal/roms/
BIOS /storage/roms/bios/
Box art path declared in /storage/roms/<system>/gamelist.xml, usually an images/ subfolder

The recognised systems are defined in /storage/.emulationstation/es_systems.cfg.

Batocera

Item Path
Partition SHARE, separate from the boot partition
Games /userdata/roms/<system>/
BIOS /userdata/bios/
Box art and metadata /userdata/roms/<system>/images/ + gamelist.xml

Each system folder contains an _info.txt listing the accepted formats: it is the reference when in doubt. After adding games, go to START → GAME SETTINGS → UPDATE GAMELISTS.

TrimUI stock firmware (Smart Pro, Brick)

Item Path
Games Roms/<SYSTEM>/ at the root of the card (e.g. Roms/GBA/, Roms/N64/)
Box art Imgs/<SYSTEM>/ — at the root, not inside Roms
BIOS RetroArch/.retroarch/system/
Other folders Emus/, Apps/, Themes/

The .retroarch folder starts with a dot: it is hidden by default, so you need to enable the display of hidden files.

Miyoo stock firmware (Mini, Mini Plus) and Onion OS

Item Stock firmware Onion OS
Games Roms/<SYSTEM>/ Roms/<SYSTEM>/ (e.g. Roms/FC/, Roms/SFC/, Roms/GB/)
Box art to be confirmed depending on the firmware version Roms/<SYSTEM>/Imgs/ — PNG, 250 × 360 px maximum
BIOS RetroArch/.retroarch/system/ /BIOS/ at the root
Format FAT32 FAT32
Different case and names. Onion's folders are case-sensitive and differ from those on the stock Miyoo card: Imgs must have a capital I. Don't reuse the supplied folder structure as it is.
On MinUI or NextUI, the convention changes: the folder carries a tag in brackets, for example Roms/Game Boy Advance (GBA)/, and the BIOS goes in Bios/GBA/. This tag must never be removed. See our comparison of alternative firmwares.

Android: RetroArch and standalone emulators

No path is imposed: the folder is up to you, what matters is that the app scans it. Create it at the root of the internal storage or the card, for example /storage/emulated/0/Roms/, and avoid Android/data, where access has been restricted since Android 11.

  • RetroArch: Import Content → Scan Directory. The scan is recursive. The generated lists are .lpl files in playlists/.
  • Box art: thumbnails/<Playlist name>/Named_Boxarts/, as well as Named_Snaps/ and Named_Titles/. The image name must match the label displayed in the list.
  • Standalone emulators (Dolphin, DuckStation, PPSSPP, AetherSX2 and its forks): you specify one or more folders in the settings, then refresh the library.

For what comes next, see RetroArch: the essential settings.

File formats

Extension System Note
.gb .gbc Game Boy, Game Boy Color .zip archive accepted
.gba Game Boy Advance .zip archive accepted
.sfc .smc Super Nintendo Two equivalent extensions, archive accepted
.nes Nintendo NES / Famicom Archive accepted
.n64 .z64 Nintendo 64 .z64 is the native byte order, the one to prefer
.md Mega Drive Archive accepted
.bin + .cue PS1, Mega CD, PC Engine CD, Saturn The .cue is the file to launch, never the .bin
.chd PS1, Saturn, Dreamcast, Mega CD, PS2 Lossless compressed format, a single file
.iso PS2, PSP, Dreamcast, GameCube Large, often exceeds 4 GB
.pbp PS1 (PSP format) Can contain several discs in a single file
.m3u All multi-disc games Simple text file listing the discs
.zip .7z Varies See below

When an archive works, and when it doesn't

It all depends on how the core loads games.

  • It works for cartridges loaded into memory: NES, SNES, Game Boy, GBC, GBA, Master System, Mega Drive, PC Engine. The emulator decompresses on the fly.
  • Arcade is a special case: the .zip is the game. FinalBurn Neo and MAME expect an archive whose name exactly matches the set (sf2ce.zip). Never unzip, rename or re-zip it: a regenerated archive breaks the expected checksums.
  • It doesn't work for anything disc-based: PS1, PS2, Saturn, Dreamcast, Mega CD, PSP. These emulators access the image file directly, particularly to switch tracks. A CD image inside a .zip will not be read.
  • .7z is only supported by some cores and decompresses more slowly. When in doubt, go for .zip.

Converting to CHD

This is the most worthwhile operation for a library. CHD is a lossless compressed disc image format, developed for MAME and supported by almost every emulator for CD-based consoles.

A single file instead of a .cue with ten or twenty .bin files, a lighter library, and less wear on the card. On a PlayStation CD, you can commonly expect to recover between a third and half of the space, more on games rich in audio tracks.

Systems concerned: PlayStation, Saturn, Dreamcast, Mega CD, PC Engine CD, Neo Geo CD, 3DO, CD-i, and PS2 on emulators that accept it. GameCube and Wii are the exception, with Dolphin's RVZ.

The tools

  • chdman, supplied with MAME: the reference, on the command line. chdman createcd -i game.cue -o game.chd for a CD, chdman createdvd for a PS2 DVD image.
  • namDHC: Windows graphical interface, accepts .cue, .toc, .gdi, .iso and .zip files, and handles batch conversions.
  • tochd on Linux, or the MAME tools via Homebrew on macOS.
PAL PS1 games protected by LibCrypt. If the game comes with an .sbi file, converting to CHD does not include it. Keep the .sbi next to the .chd, with the same base name.

The .m3u file for multi-disc games

A three-disc game appears as three entries in the menu, and swapping discs mid-game is tedious. The .m3u solves both problems: it is a text file placed in the same folder as the discs, listing the files one per line.

  • Final Fantasy VII (France) (Disc 1).chd
  • Final Fantasy VII (France) (Disc 2).chd
  • Final Fantasy VII (France) (Disc 3).chd

Save it as Final Fantasy VII (France).m3u, making sure your editor doesn't add a .txt extension. You launch the .m3u and swap discs via the emulator's option, without leaving the game, with saves shared across all three discs.

Box art and metadata

Scraping automatically retrieves box art, description, year, publisher and genre from an online database. Across several hundred titles, this is what turns a list of file names into a readable interface.

  • Built-in scrapers: EmulationStation-based firmwares (Batocera, Knulli, ArkOS, ROCKNIX) include one, usable from the console when connected to Wi-Fi.
  • Skraper (Windows): processing from the computer, with control over the image type and output folder. It is the usual tool for stock firmwares, which have no built-in scraper.
  • Skyscraper: a cross-platform command-line equivalent.

Summary of locations:

Firmware Image location
Batocera, Knulli /userdata/roms/<system>/images/ + gamelist.xml
ArkOS /roms/<system>/images/ + gamelist.xml
ROCKNIX /storage/roms/<system>/, path declared in gamelist.xml
muOS MUOS/info/catalogue/<System>/box/
Anbernic stock Roms/<system>/Imgs/
Onion OS Roms/<SYSTEM>/Imgs/
TrimUI stock Imgs/<SYSTEM>/ at the root
RetroArch (Android) thumbnails/<Playlist>/Named_Boxarts/

In every case, the image name must match the game file name, excluding the extension. Box art that doesn't show up is almost always wrongly named.

The six most common mistakes

  1. Wrong folder. A game placed at the root of roms or in a folder created by hand won't be seen. Copy it into a recognised system subfolder, respecting upper and lower case.
  2. Wrong format. Check the accepted extensions: on Batocera, the _info.txt in each system folder lists them. Convert rather than persist.
  3. Unsupported archive. A CD image inside a .zip won't work: unzip it, then convert it to CHD. Conversely, never unzip an arcade set.
  4. Badly formatted card. A card in NTFS or APFS will not be mounted by a Linux firmware. Reformat it to FAT32 or exFAT, after backing up its contents.
  5. File over 4 GB on FAT32. The copy fails halfway or the file appears truncated. Two solutions: convert the image to CHD to get back under the limit, or reformat to exFAT if the firmware accepts it.
  6. Cache not refreshed. The games are there, but the interface shows the old list. On Batocera and Knulli, run UPDATE GAMELISTS; on RetroArch, run the scan again; on stock firmwares, a restart is usually enough.

Frequently asked questions

Can I reuse the same microSD card from one console to another?

Your game files, yes: they are the same. The folder structure, however, changes from one firmware to another, so you will need to reorganise the folders. Saves can't always be carried over, as each emulator writes to its own location.

Do I really need to convert my whole collection to CHD?

Only CD or DVD games: PS1, Saturn, Dreamcast, Mega CD, PC Engine CD, possibly PS2. Cartridges gain nothing, as CHD isn't designed for them: a .zip is enough where it is accepted.

My console recognises the card but no games appear. What should I check first?

Check the case and spelling of the system folder, then the file extension. Then force the library to refresh. If nothing changes, try a single game in the system's most common format: this separates a folder problem from a format problem.

What card capacity should I choose?

It depends on your firmware's limit. On FAT32, 128 or 256 GB covers 8, 16 and 32-bit systems with CDs in CHD. Beyond that, extra capacity is only useful for PS2, GameCube or Dreamcast on exFAT, or on Android. Our microSD cards show the recommended capacity for each machine.

Can I put my games on a second card rather than on the system card?

Yes on most machines with two slots, and it is recommended: you can change firmware without touching your library. The paths differ: /mnt/sdcard/ROMS on muOS, /roms2 on ArkOS, /storage/games-external/roms on ROCKNIX. On Knulli, the second card replaces the SHARE partition.

Where should BIOS files go?

Each firmware has its own location: /userdata/bios for Batocera and Knulli, /roms/bios for ArkOS, /mnt/mmc/MUOS/bios for muOS, RetroArch/.retroarch/system on the TrimUI and Miyoo stock firmwares. File names must exactly match what the emulator expects. These files are protected by copyright and must come from your own machines.

Once this organisation is in place, it carries over from one machine to the next. Our selection of retro handheld consoles specifies the stock firmware and compatible alternative firmwares for each model.

Arkos, Batocera, Chd, Knulli, Microsd, Muos, Rocknix, Rubrique-technique, Transfert

Leave a comment