Use MAME configuration files safely on Android
Back up the active INI and CFG directories, use the exact port's own Save Configuration or `-showconfig` output as evidence, and change the narrowest applicable file. In upstream MAME, command-line values override INI files, while progressively specific INI files can refine global values. Android ports may hide or replace this hierarchy, so verify support and the writable path before assuming a desktop filename works.
Do this in order
- 01
Record the app or core version, back up every visible INI and CFG directory, and note whether the Android port exposes Save Configuration, inipath, or a command line.
- 02
Capture the current effective values with the port's UI or upstream `mame -showconfig`; do not generate a new default file over an unreviewed working file.
- 03
Choose the narrowest scope: global `mame.ini`, orientation or machine-class file, source file, BIOS/parent file, or exact system INI.
- 04
Change one option and record the old value, target file, reason, and expected systems; avoid mixing input CFG files with INI option files.
- 05
Cold-start one authorized system inside and outside the intended scope, then confirm the changed value and the unaffected control case.
- 06
If the value does not stick, inspect command-line overrides, inipath order, write permission, and port limitations before creating duplicate files.
Decision and diagnostic table
| Configuration layer | Best use | Diagnostic risk |
|---|---|---|
| Command line or wrapper launch option | One controlled launch or enforced frontend value | It can override every INI silently |
| Global `mame.ini` | Defaults intended for all systems | A broad tweak can create unrelated regressions |
| Orientation/source/parent INI | A documented group of related systems | Scope can be wider than its filename suggests |
| Exact system INI | One machine-specific exception | A later saved CFG value may still affect runtime behavior |
Effective configuration is an ordered result
MAME documents a load order rather than a single settings file. Command-line values have highest precedence over INI values, and system-specific files can refine values inherited from broader scopes.
Use `-listsource` when upstream MAME is available to identify a driver's source file. Never invent a source INI name from the game's marketing title.
INI options and saved machine state are different
INI files hold options such as paths, video, and performance settings. MAME also saves per-system configuration and bookkeeping under its CFG directory; a UI change can therefore survive even when the INI looks unchanged.
Back up both families and change only one layer per test. Deleting every configuration file removes evidence and makes the original conflict impossible to reproduce.
Android wrappers define the reachable surface
A standalone port may expose part of upstream MAME's hierarchy, while a libretro core receives many settings through RetroArch core options and overrides. The upstream manual explains concepts, not the storage contract of every wrapper.
If a port does not display a writable path or support the relevant option, document that boundary and use its supported UI. Do not write into guessed app-private directories or weaken Android storage protections.
Configuration files are safe to back up when they contain settings only, but inspect any bundle before sharing it. Do not include ROM, BIOS, CHD, NVRAM copied from commercial systems, artwork, music, credentials, or private storage exports.