Diagnose Android arcade controller lag: Bluetooth, USB, touch, or video
Test the same authorized game and action first with touch, then wired USB, then Bluetooth while keeping the emulator and display settings fixed. If every input path is late, investigate emulation speed and display buffering; if only one controller path is late or misses presses, repair that device, mapping, power, or radio path before enabling run-ahead.
Do this in order
- 01
Record Android, emulator/core, controller firmware, connection type, display, refresh mode, and the exact test action.
- 02
Reset per-game input and latency overrides, confirm emulation speed is stable, and use one authorized repeatable scene.
- 03
Test touch input, then a wired controller, then Bluetooth without changing video, audio, shader, or core settings.
- 04
For each path, note missed presses, duplicate inputs, analog drift, and visible response consistency rather than guessing milliseconds.
- 05
If all paths lag, disable TV image processing and expensive emulator latency features; if one path fails, re-pair or remap only that device.
- 06
Change one latency option at a time, re-test performance headroom, and save the narrowest per-game configuration.
Decision and diagnostic table
| A/B result | Most likely layer | Next isolated test |
|---|---|---|
| Touch, USB, and Bluetooth all late | Game logic, emulator speed, or display | Speed meter and display Game Mode |
| Bluetooth late; USB and touch stable | Wireless controller/radio path | Re-pair, charge, remove interference, compare USB |
| Only one game is late | Game-internal delay or per-game override | Default profile and frame-by-frame response |
| Presses drop or axes drift | Mapping, dead zone, or device fault | Android controller test and fresh remap |
Controller support is a matrix
Android’s own controller guidance treats wired and wireless modes, menus, gameplay, and touch switching as separate cases. A device appearing in the menu does not prove every axis, button, or gameplay path is correct.
Test navigation and in-game controls independently. Preserve the default mapping before creating a game-specific remap.
Late video can look like late input
When touch, USB, and Bluetooth all feel delayed, the shared layers deserve attention first: emulation below target speed, video buffering, shaders, TV processing, or game-internal response.
Libretro’s run-ahead feature consumes CPU and depends on suitable save-state behavior. It should not be used to conceal dropped frames or a faulty wireless link.
Keep the test honest and reversible
Use a repeatable action and record observations, but do not claim a millisecond result without measurement hardware and a documented method. Phone camera footage can help compare relative paths, not establish universal latency.
After each change, repeat the baseline. Save only the narrow controller or game scope that improved the result, then verify a relaunch.
Controller testing does not change the rights status of loaded content. Use an original, public-domain, or otherwise authorized test game.