Android MAME performance diagnosis / 2026-08-01

Use MAME -bench on Android without mistaking it for gameplay performance

Separate raw emulation cost from video, audio, throttling, and controller overhead with one reproducible benchmark and one real-play scene.

9 minute benchmark guideMAME 0.289 behavior; Android ports that document upstream command arguments

Use MAME -bench on Android without mistaking it for gameplay performance

If the Android port passes upstream arguments, `-bench n` runs n emulated seconds with video and sound disabled and throttling off. Use it to test raw emulation headroom, then run the same authorized machine normally; a benchmark pass cannot prove correct graphics, audio, frame pacing, input, or sustained thermals.

Do this in order

  1. 01

    Record the device, Android version, port and MAME revision, machine short name, power mode, temperature state, and current settings.

  2. 02

    Audit one lawfully obtained machine and confirm it reaches a stable, repeatable scene with default settings.

  3. 03

    If the port explicitly supports arguments, cold-start it with the machine short name and `-bench 120`; save the reported average speed.

  4. 04

    Return to normal video, sound, and throttling and measure the same two-minute scene, including speed percentage, audio, and frame pacing.

  5. 05

    If bench is fast but normal play is slow, test one documented renderer or audio change at a time; if both are slow, treat CPU emulation cost or thermal limits as the lead.

  6. 06

    Restore defaults, repeat after the device cools, and keep both results with the exact build instead of comparing scores from another MAME generation.

Decision and diagnostic table

ResultWhat it isolatesNext decision
Bench fast; play full speedAdequate raw and output headroomKeep defaults and test longer
Bench fast; play slowVideo, audio, pacing, or wrapper overheadChange one output layer
Bench slow; play slowRaw emulation or thermal budgetUse a lighter verified machine or device
Port rejects -benchWrapper does not expose the upstream verbUse its documented performance tools only

The benchmark deliberately removes user-facing output

MAME documents `-bench n` as `-str n -video none -sound none -nothrottle`. That is useful precisely because it removes several layers, but it also means the result cannot validate those layers.

A normal scene is the control experiment

Pair the number with a fixed gameplay scene at default settings. Record emulation speed rather than display FPS alone, and repeat after cooldown so thermal throttling is visible.

Version and machine identity stay attached

Do not compare an upstream 0.289 number to an unidentified libretro core or old Android port. Driver changes, device definitions, dynamic recompiler availability, and wrapper behavior can all change the workload.

First-party sources

Related guides