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 + stickAB——L / 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.