RomM handles multi-file games by treating any sub-folder found directly inside a platform directory as a single game entry. All files inside that sub-folder are scanned and categorised as individualDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/rommapp/romm/llms.txt
Use this file to discover all available pages before exploring further.
RomFile records, each carrying a category field drawn from the RomFileCategory enum. This allows a three-disc PlayStation game, its manual, its DLC, and an IPS patch to all live under one ROM record with distinct download and display options in the UI.
Multi-Disc Games
Place all disc images and their associated cue/toc files in a named sub-folder directly under the platform directory:Final Fantasy VII sub-folder as one ROM entry. All six files are stored as RomFile records with the game category and are bundled together for download. If an .m3u playlist file is present, the built-in EmulatorJS player uses it to switch discs automatically; the has_m3u_file() property on the Rom model is used to surface this in the UI.
File Categories
RomM automatically assigns a category to every file in a multi-file game by matching the sub-folder name against theRomFileCategory enum values. The full set of recognised categories is:
| Category | Enum value | Matched folder names |
|---|---|---|
| Game | game | (top-level files; no sub-folder) |
| DLC | dlc | dlc, dlcs |
| Hack | hack | hack, hacks |
| Manual | manual | manual, manuals |
| Patch | patch | patch, patches |
| Update | update | update, updates |
| Mod | mod | mod, mods |
| Demo | demo | demo, demos |
| Translation | translation | translation, translations |
| Prototype | prototype | prototype, prototypes |
| Cheat | cheat | cheat, cheats |
| Soundtrack | soundtrack | soundtrack, soundtracks |
| Screenshot | screenshot | screenshot, screenshots |
DLC and Updates
Place DLC content or update packages in adlc or update sub-folder respectively:
dlc and update sub-folders is stored as a RomFile with the corresponding category. They appear in the game’s detail page under separate tabs, can be downloaded individually, and are included in bulk downloads of the full game entry.
Mods, Hacks, and Patches
Mods, hacks, and patch files (.ips, .bps, .xdelta, and other supported formats) stored in a patch, hack, or mod sub-folder are assigned the appropriate category and displayed in the game’s detail view:
POST /api/roms/{id}/patch in the API reference.
Manuals
PDF or image manuals placed in amanual sub-folder are stored with the manual category and surfaced in the game’s detail page as a readable document:
has_manual_files property on the Rom model reflects whether at least one file with the manual category exists, allowing the UI to show or hide the manual viewer tab accordingly.
Soundtracks
Audio files in asoundtrack sub-folder are assigned the soundtrack category. RomM extracts embedded cover art from audio files at scan time and stores it alongside the ROM’s other resources:
Excluding ES-DE and Other Media Folders
Front-end loaders like ES-DE create their own sub-folders (media, downloaded_media, videos, screenshots, etc.) inside the ROM directories. Without exclusion RomM would treat these as multi-file game entries and attempt to scan them. Add them to the exclude.roms.multi_file.names list in config.yml to prevent this:
._* to skip macOS resource-fork directories).
You can similarly exclude specific file names or extensions from within multi-file game folders using exclude.roms.multi_file.parts: