Universal controller firmware foundation for adapters, controllers, and input systems.
Joypad Core is a modular, high-performance firmware platform for building controller adapters, custom controllers, and input/output bridges across USB, Bluetooth, and native game console protocols.
Formerly known as USBRetro, this project now serves as the foundational firmware layer of the Joypad ecosystem — a universal platform for extending how controllers work, connect, and evolve.
Joypad Core focuses on real-time controller I/O, protocol translation, and flexible routing, making it easy to build everything from classic console adapters to next-generation, assistive, and AI-augmented input devices.
- Universal input/output translation — Convert USB HID devices into native console protocols and vice versa.
- Modular firmware apps — Build specific bridges like
usb2usb,usb2gc,snes2usb, passthrough adapters, merged inputs, and hybrid devices — all on a shared core. - Flexible routing & passthrough — Support multi-output controllers, input merging, chaining devices, and advanced mods.
- Hardware-agnostic foundation — Designed to run across RP2040 today, with future portability to ESP32 and nRF platforms.
- Foundation for accessibility & assistive play — Enables custom controllers and input extensions for gamers with diverse needs.
Joypad Core is the real-time nervous system of the Joypad platform.
| Output | Features | Documentation |
|---|---|---|
| USB Device | HID Gamepad, XInput, Xbox OG, Xbox One, PS3, PS4, PS Classic, Switch | Docs |
| PCEngine / TurboGrafx-16 | Multitap (5 players), Mouse, 2/3/6-button | Docs |
| GameCube / Wii | Profiles, Rumble, Keyboard mode | Docs |
| Nuon DVD Players | Controller, Spinner (Tempest 3000), IGR | Docs |
| 3DO Interactive Multiplayer | 8 players, Mouse, Extension passthrough | Docs |
| Casio Loopy | 4 players (experimental) | Docs |
Pre-built adapters available at controlleradapter.com:
- USB-2-PCE - PCEngine/TurboGrafx-16 adapter
- GC USB - GameCube/Wii adapter with profiles
- NUON USB - Nuon DVD player adapter
Controllers:
- Xbox (OG/360/One/Series X|S)
- PlayStation (Classic/DS3/DS4/DualSense)
- Nintendo Switch (Pro/Joy-Cons)
- 8BitDo (PCE 2.4g, M30, Adapters)
- Generic HID gamepads
Peripherals:
- USB Keyboards (full HID support)
- USB Mice (PCEngine mouse, Nuon spinner, 3DO mouse)
- USB Hubs (up to 8 devices for 3DO)
Complete hardware compatibility list
- Download latest
.uf2from Releases - Enter bootloader:
- USB-2-PCE / NUON / 3DO: Hold BOOT + connect USB-C
- GC USB: Just connect USB-C (no button)
- Drag
.uf2file toRPI-RP2drive - Done! Drive auto-ejects when complete
# Install ARM toolchain (macOS)
brew install --cask gcc-arm-embedded cmake git
# Clone and initialize
git clone https://github.com/joypad-ai/joypad-core.git
cd joypad-core && make init
# Build specific product
make usb2gc # GameCube adapter
make usb2pce # PCEngine adapter
make usb2nuon # Nuon adapter
make usb23do # 3DO adaptermake init # Initialize submodules (one-time setup)
make all # Build all products
make clean # Clean build artifacts
# Build specific products
make usb2pce # USB2PCE (KB2040 + PCEngine)
make usb2gc # USB2GC (KB2040 + GameCube)
make usb2nuon # USB2Nuon (KB2040 + Nuon)
make usb23do # USB23DO (KB2040 + 3DO)
make usb2loopy # USB2Loopy (KB2040 + Casio Loopy)
make snes23do # SNES23DO (SNES→3DO bridge)Output firmware files appear in releases/ directory.
- Installation Guide - Flashing firmware, troubleshooting
- Hardware Compatibility - Supported controllers, boards, DIY builds
- Build Guide - Developer setup, architecture
- GameCube/Wii - Profiles, keyboard mode, rumble
- PCEngine/TurboGrafx-16 - Multitap, mouse, button modes
- Nuon - Controller, Tempest 3000 spinner, IGR
- 3DO - 8-player support, mouse, profiles
- Casio Loopy - Experimental support
Joypad Core uses a modular architecture:
- RP2040 - Dual-core ARM Cortex-M0+ microcontroller
- TinyUSB - USB host stack for polling USB devices
- PIO - Programmable I/O for timing-critical console protocols
- Dual-Core: Core 0 handles USB input, Core 1 runs console output
- Router - Flexible input→output routing (SIMPLE/MERGE/BROADCAST)
- Apps - Per-product configuration (router, profiles, features)
See CLAUDE.md for detailed architecture
- Discord: discord.joypad.com - Community chat
- Issues: GitHub Issues - Bug reports
- Email: support@controlleradapter.com - Product support
- Ha Thach - TinyUSB
- David Shadoff - PCEMouse foundation
- FCare - USBTo3DO 3DO protocol implementation
- Ryzee119 - tusb_xinput
- SelvinPL - lufa-hid-parser
- JonnyHaystack - joybus-pio
Joypad Core is licensed under the Apache-2.0 License.
The Joypad name and branding are trademarks of Joypad Inc.