Skip to main content

Physical Gamepad

DOSGamePlayer auto-detects Bluetooth and USB gamepads. Connect one and you can play without touching the screen.

TODO: Connected gamepad indicator and binding screen

Connecting a gamepad

Bluetooth

  1. Put the gamepad into pairing mode.
  2. Open your phone's Settings → Bluetooth.
  3. Select the gamepad from the discovery list.
  4. Pair.

Once paired, the gamepad reconnects automatically next time it's on. DOSGamePlayer recognizes it as soon as it's connected.

USB (OTG)

  1. Plug the gamepad into your phone via a USB-OTG cable (or directly if your phone has USB-C and the pad has USB-C).
  2. The phone shows a USB device notification.
  3. DOSGamePlayer recognizes the pad immediately.

Tested gamepads

DOSGamePlayer follows the Android InputDevice APIs, so any HID-class controller works. Confirmed:

  • Xbox One / Series controllers (Bluetooth or USB)
  • PlayStation 4 / 5 DualShock / DualSense controllers (Bluetooth)
  • Nintendo Switch Pro Controller (Bluetooth)
  • Most generic USB pads
  • 8BitDo SN30 Pro, SF30, M30, etc.

Auto-hiding the on-screen overlay

When a gamepad is connected, the virtual overlay can be automatically hidden to reclaim screen space. Toggle in Settings → Input Controls.

Default mapping

DOSGamePlayer ships with sensible default mappings for each system:

SystemD-pad / Left stickABXYShoulders
NESD-padAB
SNESD-padABXYL / R
Mega DriveD-padABC
PSXD-pad + sticks×L1/R1 + L2/R2
N64D-pad + stickABL / R / Z
NDSD-pad + stylusABXYL / R
ArcadeD-padABCD

The defaults match the controller's physical labels where reasonable; if your pad doesn't match (e.g., Switch Pro has reversed A/B), you can remap (see below).

Custom button mapping

For per-game tweaks:

  1. Open the game's Game Detail page → Configure Input.
  2. The Input Devices screen shows your connected gamepad with each physical button.
  3. Tap a button to test it; the bar highlights the system button it currently maps to.
  4. Tap Edit Binding to remap.

Per-system defaults can also be edited globally:

  1. Settings → Input Controls → <system>.
  2. Same UI; changes apply to all games of that system.

Multiple gamepads

If you connect two gamepads, the second is assigned to Player 2 for systems that support two-player local play (most Libretro cores). Connect order determines player order; you can swap from the Input Devices screen.

Disconnecting

The pad disconnects automatically when you turn it off, walk out of Bluetooth range, or unplug USB. The on-screen overlay reappears (if it was auto-hidden) so you can keep playing.

Troubleshooting

  • Buttons feel inverted or wrong — re-bind in Input Devices for the game. Save and you're done.
  • Vibration not working — only certain cores (mGBA, N64, PSX, NDS) support rumble, and only over wired/Bluetooth that exposes the rumble HID. Quick test: try a rumble-using game.
  • Bluetooth keeps dropping — confirm pad firmware is up to date; some Android versions need a manual battery-saver exception for stable Bluetooth audio/HID.