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

Connecting a gamepad
Bluetooth
- Put the gamepad into pairing mode.
- Open your phone's Settings → Bluetooth.
- Select the gamepad from the discovery list.
- Pair.
Once paired, the gamepad reconnects automatically next time it's on. DOSGamePlayer recognizes it as soon as it's connected.
USB (OTG)
- 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).
- The phone shows a USB device notification.
- 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:
| System | D-pad / Left stick | A | B | X | Y | Shoulders |
|---|---|---|---|---|---|---|
| NES | D-pad | A | B | — | — | — |
| SNES | D-pad | A | B | X | Y | L / R |
| Mega Drive | D-pad | A | B | C | — | — |
| PSX | D-pad + sticks | × | ○ | □ | △ | L1/R1 + L2/R2 |
| N64 | D-pad + stick | A | B | — | — | L / R / Z |
| NDS | D-pad + stylus | A | B | X | Y | L / R |
| Arcade | D-pad | A | B | C | D | — |
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:
- Open the game's Game Detail page → Configure Input.
- The Input Devices screen shows your connected gamepad with each physical button.
- Tap a button to test it; the bar highlights the system button it currently maps to.
- Tap Edit Binding to remap.
Per-system defaults can also be edited globally:
- Settings → Input Controls → <system>.
- 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.
Related
- Input Controls settings — global controller settings
- Game Detail — per-game Configure Input entry
- Retro Player — auto-hide overlay