Configuration File
Below is a breakdown of each section of the config.yml file and its purpose. You can find a full example of the file in the config.example.yml file.
Exclude Section
Control which platforms, ROMs, or files to ignore during scanning.
Platforms
Exclude entire platforms (folders) from being scanned.
ROMs
Fine-tune which ROMs or files are excluded.
Single File ROMs
Applies to ROMs that are single files (not in subfolders).
- extensions: Exclude files by extension
- Defaults to
["db", "ini", "tmp", "bak", "lock", "log", "cache", "crdownload"]
- Defaults to
- names: Exclude files by name or pattern (supports Unix wildcards)
- Defaults to
[".DS_Store", ".localized", ".Trashes", ".stfolder", "@SynoResource", "gamelist.xml"]
- Defaults to
Multi-File ROMs
Applies to ROMs stored as folders (multi-disc, with DLC, etc.).
- names: Exclude entire folders by name
- Defaults to
["@eaDir", "__MACOSX", "$RECYCLE.BIN", ".Trash-*", ".stfolder", ".Spotlight-V100", ".fseventsd", ".DocumentRevisions-V100", "System Volume Information"]
- Defaults to
- parts.names: Exclude files by name or pattern from within multi-file ROM folders
- Defaults to
[".DS_Store", ".localized", ".Trashes", ".stfolder", "@SynoResource", "gamelist.xml"]
- Defaults to
- parts.extensions: Exclude files by extension from within multi-file ROM folders
- Defaults to
["db", "ini", "tmp", "bak", "lock", "log", "cache", "crdownload"]
- Defaults to
exclude:
roms:
multi_file:
names: ["final fantasy VII", "DLC"]
parts:
names: ["data.xml", "._*"]
extensions: ["xml", "txt"]
System Section
Customize how RomM interprets your folder and platform names.
Custom Folder Names
Map your custom folder names to RomM's recognized platform names.
system:
platforms:
gc: "ngc" # Treats 'gc' folder as GameCube
psx: "ps" # Treats 'psx' folder as PlayStation
Versions
Associate a platform with its main version. This also tells RomM to fetch metadata from the main version source.
Filesystem Section
Specify the folder name where your ROMs are located if it differs from the default.
If your ROMs folder is named my_roms instead of roms:
Disable file hash calculation for low power devices (e.g. Raspberry PI).
Scan Section
Configure metadata scanning priorities and media assets to download.
Priority
Customize the order in which metadata providers are queried during scans.
Metadata
Controls metadata provider priority order.
Provider list in default order:
igdb- IGDB (highest priority)moby- MobyGamesss- Screenscraperra- RetroAchievementslaunchbox- Launchboxgamelist- ES-DE gamelist.xmlhasheous- Hasheousflashpoint- Flashpoint Projecthltb- HowLongToBeat (lowest priority)
Artwork
Controls artwork provider priority order for cover art and screenshots.
Default: Same as priority.metadata
Region
Sets preferred region for cover art and game title (Screenscraper only).
Default: ["us", "wor", "ss", "eu", "jp"]
Language
Sets preferred language for cover art and game title (Screenscraper only).
Default: ["en", "fr"]
Media
Configures which media assets to download (Screenscraper and ES-DE gamelist.xml only).
Media types:
box2d- Normal cover art (always enabled)box3d- 3D box artmiximage- Mixed image of multiple mediaphysical- Disc, cartridge, etc.screenshot- Screenshot (enabled by default)title_screen- Title screenmarquee- Transparent logofanart- User uploaded artworkbezel- Bezel displayed around the EmulatorJS windowmanual- Manual in PDF format (enabled by default)video- Gameplay video (warning: large file size)
Export gamelist.xml
Automatically generate an ES-DE compatible gamelist.xml file placed in the platform folder for selected/discovered platforms.
EmulatorJS Section
Configure EmulatorJS per-core options and controls.
Debug
Enable debug mode to log available options to the browser console.
Cache Limit
Cache limit per ROM in bytes. Set to null for unlimited.
Disable batch bootup
Skips the step that runs a batch file that sets soundcard information, mounts file systems, and attempts to run an autorun.bat file (try this if DOS games fail to boot).
Disable auto-unload
The emulator stops/shuts itself down when you navigate to a new page; this setting stops that behaviour (if that's something you want).
Netplay
Enable netplay and configure STUN/TURN servers. We recommend Google's public servers or Metered's free tier.
emulatorjs:
netplay:
enabled: true
ice_servers:
- urls: "stun:stun.l.google.com:19302"
- urls: "stun:stun1.l.google.com:19302"
- urls: "stun:stun2.l.google.com:19302"
- urls: "turn:openrelay.metered.ca:80"
username: "openrelayproject"
credential: "openrelayproject"
- urls: "turn:openrelay.metered.ca:443"
username: "openrelayproject"
credential: "openrelayproject"
Note
When netplay is enabled, EmulatorJS loads some assets (including localization files) from the nightly CDN (https://cdn.emulatorjs.org/nightly/...). This differs from stable mode, which uses local/bundled assets. Occasional temporary issues (e.g., 404 errors or untranslated UI elements) can occur if the nightly CDN has mismatches, but these usually resolve with the next EmulatorJS stable release integrated into RomM.
Settings
Configure core-specific settings. Use default to apply settings to all cores.
emulatorjs:
settings:
parallel_n64: # Use the exact core name
vsync: disable
snes9x:
snes9x_region: ntsc
default: # These settings apply to all cores
fps: show
Controls
Map keyboard and controller controls for each player.
Example (2-player SNES):
emulatorjs:
controls:
snes9x:
0: # Player 1
0: # Button mapping
value: x # Keyboard mapping
value2: BUTTON_2 # Controller mapping
1: # Player 2
0:
value: /
value2: BUTTON_2
See EmulatorJS documentation for control mapping details.
Warning
Only uncomment or add the lines you need. Any omitted or empty sections will use RomM's defaults.
For a full example, see the config.example.yml file.