Configure multiple MAME ROM folders on Android without losing CHDs
First confirm that the Android port exposes upstream MAME's rompath or an equivalent folder picker. Add only folders the app can reopen, preserve each machine's short-name archive or directory and CHD subfolder, then audit one authorized game after every path change. Upstream MAME separates multiple search paths with semicolons, but an Android wrapper may store document-tree URIs or its own list instead of accepting desktop path syntax.
Do this in order
- 01
Inventory each candidate folder by purpose, device, free space, backup status, and rights basis; remove downloads or bundles with unknown provenance from the test surface.
- 02
Open the port's directory settings and confirm whether it exposes rompath, a repeatable Add Folder action, or Android's document-tree picker; do not paste a desktop path into an undocumented field.
- 03
Grant the narrowest persistent folder access offered by Android and add one location at a time, using the port's save action before leaving settings.
- 04
Keep ROM folders or archives under exact machine short names and keep each CHD as a file inside the expected short-name directory rather than recompressing it inside ZIP or 7-Zip.
- 05
Cold-restart the app, inspect the effective path list if available, then run a named audit or launch one authorized known-good machine from each location.
- 06
Record path order, app/MAME version, audit output, and Android volume identity; after moving a card or document tree, reselect it instead of assuming an old grant now points to the new location.
Decision and diagnostic table
| Observed state | Likely layer | Proof before changing files |
|---|---|---|
| First folder works; second is invisible | Port did not save or support multiple paths | Reopen effective directory settings |
| ROM is found; CHD is missing | Short-name subfolder or disk identity | Read the exact searched locations and disk name |
| Path worked before card move | Android volume or persisted URI changed | Reselect the document tree and cold-start |
| Desktop semicolon string is ignored | Wrapper uses its own picker or URI list | Use only the port's documented storage flow |
Upstream syntax is a boundary, not an Android promise
MAME documents that many search-path options accept multiple directories separated by semicolons. It also resolves relative paths from the current working directory, a detail that desktop launch methods can change.
Android ports may translate a system picker into persisted document URIs, copy selected paths into private storage, or expose only one library root. Confirm the port's effective configuration instead of assuming that a visible `/storage/...` string is readable.
ROM archives and CHDs have different storage costs
MAME searches each rompath for folders, ZIP archives, and 7-Zip archives named for systems and dependencies. It can technically find CHDs inside some archives, but the official guide warns that random access then requires loading the archive in an inefficient way.
Keep CHDs as CHD files in the expected short-name folder. This preserves their random-access format, makes parent relationships auditable, and avoids turning a storage change into an apparent performance or disk-integrity fault.
Path order cannot repair the wrong set
Adding more folders expands the places MAME searches; it does not convert a file from another MAME version or manufacture a missing parent, BIOS, device ROM, or disk.
Use one known authorized set to prove each path, then keep the complete audit message. Searching anonymous packs until a launch succeeds destroys provenance and can hide the actual version mismatch.
A configured rompath is not permission to index or retain every file it contains. Add only material you dumped lawfully or obtained from an explicitly authorized first-party source, and never share a folder, archive, BIOS, CHD, artwork, or soundtrack merely because MAME can read it.