Folder Structure
RomM expects your library to be organised in one of two layouts. It tries Structure A first, and falls back to Structure B if A isn't found. This auto-detection is per-library (not per-platform), so if you don't pick one up front, just arrange files the way you prefer and it'll figure it out.
The two layouts
Both layouts separate ROMs from BIOS files, and they differ on whether the split lives at the top of the tree or inside each platform.
- Structure A (recommended): one top-level
roms/, one top-levelbios/, platforms nested inside each
- Structure B (fallback): one folder per platform at the top,
roms/andbios/inside each
As the BIOS/firmware tree is optional, only platforms that require firmware for emulation need it.
Mount point
The path you mount into the container as /romm/library depends on which structure you pick:
- Structure A: mount the parent of the
roms/folder. - Structure B: mount the parent of the platform folders.
See the reference Docker Compose for where /romm/library lives.
Platform folder names
The platform folder name has to match a known slug from the full list in Supported Platforms. If your existing folder names don't match (say, super_nintendo/ instead of snes/), override the mapping via system.platforms in config.yml.
Multi-file games
Some games come as folders instead of single files, which could include multiple disc, DLCs, manuals, or patches. These sub-folder names are recognised and surfaced as tags in the UI: dlc, hack, manual, mod, patch, update, demo, translation, prototype.
Visual reference
| Structure A (recommended) | Structure B (fallback) |
|---|---|
library/roms/{platform}/{game}
|
library/{platform}/roms/{game}
|
library/
├─ roms/
│ ├─ gbc/
│ │ ├─ game_1.gbc
│ │ └─ game_2.gbc
│ │
│ ├─ gba/
│ │ ├─ game_3.gba
│ │ └─ game_4/
│ │ ├─ game_4.gba
│ │ ├─ dlc
│ │ │ ├─ game_4_dlc_1.7z
│ │ │ └─ game_4_dlc_2.7z
│ │ ├─ hack
│ │ │ └─ game_4_hardmode.rar
│ │ ├─ manual
│ │ │ └─ game_4_manual.pdf
│ │ ├─ mod
│ │ │ └─ game_4_crazy_mode.zip
│ │ ├─ patch
│ │ │ └─ game_4_patch_v1.1.zip
│ │ ├─ update
│ │ ├─ demo
│ │ ├─ translation
│ │ └─ prototype
│ │
│ └─ ps/
│ ├─ game_5/
│ │ ├─ game_5_cd_1.iso
│ │ └─ game_5_cd_2.iso
│ │
│ └─ game_6.iso
│
└─ bios/
├─ gba/
│ └─ gba_bios.bin
│
└─ ps/
├─ scph1001.bin
├─ scph5501.bin
└─ scph5502.bin
|
library/
├─ gbc/
│ └─ roms/
│ ├─ game_1.gbc
│ └─ game_2.gbc
│
├─ gba/
│ ├─ roms/
│ │ ├─ game_3.gba
│ │ └─ game_4/
│ │ ├─ game_4.gba
│ │ ├─ dlc
│ │ ├─ hack
│ │ ├─ manual
│ │ ├─ mod
│ │ ├─ patch
│ │ ├─ update
│ │ ├─ demo
│ │ ├─ translation
│ │ └─ prototype
│ │
│ └─ bios/
│ └─ gba_bios.bin
│
└─ ps/
├─ roms/
│ ├─ game_5/
│ │ ├─ game_5_cd_1.iso
│ │ └─ game_5_cd_2.iso
│ │
│ └─ game_6.iso
│
└─ bios/
├─ scph1001.bin
├─ scph5501.bin
└─ scph5502.bin
|
Starting from scratch?
If you upload files through the web UI without any existing structure, it'll create Structure A on your behalf.
Naming convention
Filenames are parsed for region, language, revision, and arbitrary tags, with both [] and () delimiters supported:
- Region/language: both ISO-like codes and full names. Add a custom region or language by prefixing with
reg/reg-(e.g.reg MyOwnLangorreg-MyOwnLang). - Revision: prefix with
rev/rev-(e.g.rev v1,rev-1) - Arbitrary tags: anything else in brackets is imported verbatim (e.g.
tetris [1.0001](HACK)[!].gba)
Inline tags like (igdb-1234) in filenames can be used to force a match to a specific provider entry, covered in Metadata Providers → Filename tags.
Supported languages
| Code | Language |
|---|---|
| Ar | Arabic |
| Da | Danish |
| De | German |
| El | Greek |
| En | English |
| Es | Spanish |
| Fi | Finnish |
| Fr | French |
| It | Italian |
| Ja | Japanese |
| Ko | Korean |
| Nl | Dutch |
| No | Norwegian |
| Pl | Polish |
| Pt | Portuguese |
| Ru | Russian |
| Sr | Serbian |
| Sv | Swedish |
| Zh | Chinese |
| nolang | No Language |
Supported regions
| Code | Region |
|---|---|
| A | Australia |
| AS | Asia |
| B | Brazil |
| C | Canada |
| CH | China |
| E | Europe |
| F | France |
| FN | Finland |
| G | Germany |
| GR | Greece |
| H | Holland |
| HK | Hong Kong |
| I | Italy |
| J | Japan |
| K | Korea |
| NL | Netherlands |
| NO | Norway |
| PD | Public Domain |
| R | Russia |
| S | Spain |
| SW | Sweden |
| T | Taiwan |
| U | USA |
| UK | England |
| UNK | Unknown |
| UNL | Unlicensed |
| W | World |