Android MAME persistence troubleshooting / 2026-07-29

Fix MAME high scores not saving on Android

Identify whether a game uses emulated non-volatile memory, MAME's hiscore plugin, or neither, then verify homepath, plugin data, clean exit, and version support.

11 minute persistence diagnosticMAME 0.288 concepts; Android ports may omit plugins or remap homepath and nvram_directory

Fix MAME high scores not saving on Android

First determine whether the machine preserves scores in emulated NVRAM or needs MAME's hiscore support plugin. For plugin-supported games, confirm the port includes and enables the plugin, its hiscore.dat matches the MAME generation, homepath is writable, and a shortname.hi file appears after a score and clean exit. For native NVRAM, test the nvram path instead. Save states are not proof that either persistence path works.

Do this in order

  1. 01

    Record the Android port, upstream MAME revision, machine short name, and whether the game historically stores scores in non-volatile memory.

  2. 02

    Make one recognizable score, exit through MAME's normal quit path, cold-start the same machine, and avoid save states during this baseline.

  3. 03

    For native persistence, inspect the configured nvram directory for a machine-specific write and verify the port can update it.

  4. 04

    For a game that relies on the hiscore plugin, open Plugin Options, confirm Hiscore Support is present and enabled, and check whether Save scores is configured for exit or shortly after change.

  5. 05

    Inspect homepath/plugin data for hiscore/shortname.hi and plugin.cfg; if no file appears, separate missing plugin support, an unwritable path, unsupported short name, and mismatched hiscore.dat.

  6. 06

    Retest after changing exactly one layer, keep the last working data file, and do not copy score or state files between different MAME generations without a disposable backup.

Decision and diagnostic table

EvidencePersistence pathNext check
Machine writes its own retained score/settingsEmulated NVRAMnvram directory, write access, clean exit
Hiscore plugin lists the machinePlugin datahomepath, hiscore.dat generation, shortname.hi
Only a save state restores the scoreSerialized whole-machine stateDo not treat it as NVRAM/plugin proof
No supported path is documentedPossibly no automatic persistenceDo not promise a plugin fix for every game

Native NVRAM and the hiscore plugin solve different problems

Some machines store scores in non-volatile memory as part of the emulated hardware. MAME's hiscore plugin targets supported games that did not originally preserve scores that way and changes emulated memory directly.

A missing .hi file is expected when the game uses native NVRAM. Conversely, a writable nvram folder does not prove that the hiscore plugin is installed or supports the machine.

homepath owns plugin data

MAME documents that plugins save data below homepath. The hiscore plugin uses a hiscore folder, a shortname.hi score file, and plugin.cfg for its own settings.

Android ports often hide the working directory behind app storage. Use the port's displayed or documented path instead of guessing a public /sdcard folder.

Version and exit behavior are evidence

MAME warns that hiscore.dat must stay aligned when system definitions change. A copied database can list the wrong memory location for another release, and the plugin itself may change emulated behavior.

Test both a normal exit and the configured save timing. A force-stop, crash, Android task kill, or restored save state can bypass or obscure the persistence path you are trying to prove.

First-party sources

Related guides