Android MAME controller and accessibility tutorial / 2026-08-03

Set up MAME's Autofire plugin on Android without double-mapping a button

Configure a digital input, separate activation hotkey, and frame cadence while avoiding conflicts with the regular machine controls.

9 minute controller guideOfficial MAME 0.289 Autofire plugin as packaged and exposed by an Android port

Set up MAME's Autofire plugin on Android without double-mapping a button

Enable MAME's included Autofire plugin, completely restart the port, and add one digital machine input under Plugin Options → Autofire. Use a hotkey that is not also mapped to a regular emulated input. Begin with a conservative on/off cadence, confirm the game recognizes both press and release, and keep a normal non-autofire fire button when a game needs charging or held input.

Do this in order

  1. 01

    Record the Android port, MAME revision, machine short name, controller or touch input, and current machine-button assignments.

  2. 02

    Enable global plugins and the included Autofire plugin, then exit the MAME process completely and restart it.

  3. 03

    During emulation open Plugin Options → Autofire and add only the intended digital machine input.

  4. 04

    Assign a separate activation hotkey or combination that is not mapped to another emulated input for that machine.

  5. 05

    Test a moderate On frames / Off frames cadence and verify visible press and release behavior before making it faster.

  6. 06

    Keep a normal button for held or charged actions, then confirm the per-machine JSON setting persists after a cold restart.

Decision and diagnostic table

SymptomLikely causeSafest correction
Holding hotkey gives no pulsesSame control also holds regular fireRemove the overlapping machine assignment
Game misses some pulsesCadence is faster than input pollingIncrease on/off frame counts
Charged attack no longer worksAutofire replaced held inputKeep a separate normal fire control
Setting disappearsPlugin data path is not writableVerify Plugin Data / homepath

Autofire is wired beside normal controls

MAME describes the plugin as acting in parallel with regular inputs. If the same physical button also holds the machine input continuously, the plugin cannot create a release interval. That conflict is mapping, not performance.

Frame cadence must match the game

On frames and Off frames count emulated video frames. A lower number is faster, but some machines will not recognize a release that is too brief. Adjust one value at a time and test the actual action.

The Android wrapper remains a packaging boundary

Upstream MAME includes the plugin and saves per-machine JSON under plugin data. An Android port may omit plugins, hide the menu, or use app-private storage; this page does not claim an unnamed port exposes every upstream control.

First-party sources

Related guides