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
- 01
Record the Android port, MAME revision, machine short name, controller or touch input, and current machine-button assignments.
- 02
Enable global plugins and the included Autofire plugin, then exit the MAME process completely and restart it.
- 03
During emulation open Plugin Options → Autofire and add only the intended digital machine input.
- 04
Assign a separate activation hotkey or combination that is not mapped to another emulated input for that machine.
- 05
Test a moderate On frames / Off frames cadence and verify visible press and release behavior before making it faster.
- 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
| Symptom | Likely cause | Safest correction |
|---|---|---|
| Holding hotkey gives no pulses | Same control also holds regular fire | Remove the overlapping machine assignment |
| Game misses some pulses | Cadence is faster than input polling | Increase on/off frame counts |
| Charged attack no longer works | Autofire replaced held input | Keep a separate normal fire control |
| Setting disappears | Plugin data path is not writable | Verify 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.
Autofire changes input only; it grants no rights to game, firmware, artwork, or audio data. Use an authorized title and do not share ROM, BIOS, CHD, or plugin-data bundles with a controller report.