Joypad OS¶
Universal controller firmware for adapters, controllers, and input systems.
Joypad OS translates any input device into any output protocol. Connect USB, Bluetooth, or WiFi controllers to retro consoles, or bridge native retro controllers to USB. It runs on RP2040, ESP32-S3, and nRF52840 microcontrollers.
Understand the System¶
-
The 4-layer model: inputs, core, outputs, and apps
-
How controller input travels from device to console
-
Key terms: input_event_t, router, profiles, PIO, and more
Browse by Layer¶
-
USB HID, XInput, Bluetooth, WiFi, SNES, N64, GameCube, NES, Neo Geo, LodgeNet, and more
-
GameCube, PCEngine, Dreamcast, Nuon, 3DO, N64, Loopy, USB Device, BLE, UART
-
Router, profiles, players, storage, LEDs, hotkeys, and other shared services
-
30+ firmware configurations: usb2gc, bt2usb, snes2usb, n642dc, and more
Getting Started¶
-
Flash firmware to your adapter in minutes
-
Set up a development environment and compile from source
-
RP2040, ESP32-S3, and nRF52840 boards
-
USB, Bluetooth, keyboards, mice, and hubs
-
Configure your adapter from the browser -- no install required
Console Adapters¶
| Console | App | Highlights |
|---|---|---|
| PCEngine / TurboGrafx-16 | usb2pce | Multitap (5 players), mouse, 2/3/6-button |
| GameCube / Wii | usb2gc | Profiles, rumble, keyboard mode |
| Sega Dreamcast | usb2dc | Rumble, analog triggers, 4 players |
| Nuon | usb2nuon | Controller, Tempest 3000 spinner, IGR |
| 3DO | usb23do | 8-player support, mouse, extension passthrough |
| Neo Geo / SuperGun | usb2neogeo | 7 profiles, 1L6B arcade layouts |
| Casio Loopy | usb2loopy | 4-player (experimental) |
| N64 (wireless) | bt2n64 | BT controllers, rumble, profiles |
Native Input Adapters¶
Convert retro controllers to USB or bridge them to other consoles:
- SNES to USB -- SNES/NES controller to USB gamepad
- N64 to USB -- N64 controller to USB gamepad
- GameCube to USB -- GameCube controller to USB gamepad
- NES to USB -- NES controller to USB gamepad
- Neo Geo to USB -- Arcade stick to USB gamepad
- LodgeNet to USB -- LodgeNet hotel controllers (N64/GC/SNES) to USB
- LodgeNet to N64 -- LodgeNet hotel controllers to N64 console
- LodgeNet to GameCube -- LodgeNet hotel controllers to GameCube console
- N64 to Dreamcast, SNES to 3DO, N64 to Nuon -- Cross-console bridges
Platforms¶
| Platform | Apps | Documentation |
|---|---|---|
| RP2040 | All adapters | Build Guide |
| ESP32-S3 | bt2usb (BLE) | ESP32-S3 Docs |
| nRF52840 | bt2usb, usb2usb (BLE) | nRF52840 Docs |
For Developers¶
- Development Guide -- How to add inputs, outputs, apps, and drivers
- Architecture -- The 4-layer model and dual-core execution
- Data Flow -- Input-to-output pipeline walkthrough
- Router -- Routing modes, merge, transforms
Protocol Reference¶
Dive into the low-level console protocols that Joypad OS implements:
Community & Support¶
- Discord: community.joypad.ai -- Community chat
- Issues: GitHub Issues -- Bug reports
- Source: GitHub -- Contributions welcome
Joypad OS is licensed under the Apache-2.0 License.