Official B0XX Controllers
B0XX R1
First generation B0XX controller with ATMega32U4 (Arduino Leonardo)
- Platform: AVR (Leonardo)
- Config:
b0xx_r1
B0XX R2
Second generation B0XX controller with improved design
- Platform: AVR (Leonardo)
- Config:
b0xx_r2
B0XX R4
Latest generation B0XX with RP2040 processor and advanced features
- Platform: RP2040 (Raspberry Pi Pico)
- Dual-core processing
- Config:
b0xx_r4
Third-Party Controllers
Fight Sticks and Rectangles
LBX
Low Budget Box - DIY-friendly rectangle controller
- Platform: AVR (Leonardo)
- Brook board support with mode switching
- Config:
lbx
Smash Box
Hit Box Arcade’s Smash Box controller
- Platform: AVR (Arduino Mega)
- Additional thumb cluster buttons
- Config:
smashbox
C53
Compact 53-key layout controller
- Platform: RP2040
- Config:
c53
Schism
Advanced rectangle controller design
- Platform: RP2040
- Config:
schism
GameCube PCBs
GCCPCB1
Crane’s GameCube controller PCB (Version 1)
- Platform: AVR (Leonardo)
- Drop-in GameCube shell replacement
- Config:
gccpcb1
GCCPCB2
Crane’s GameCube controller PCB (Version 2)
- Platform: AVR (Leonardo)
- Improved revision with better routing
- Config:
gccpcb2
GCCMX
GameCube MX-style mechanical switch PCB
- Platform: AVR (Leonardo)
- Cherry MX switch compatibility
- Brook board mode support
- Config:
gccmx
HTangl V1
HTangl’s custom GameCube PCB
- Platform: RP2040
- Config:
htangl_v1
Development Boards
Raspberry Pi Pico
Generic RP2040 development board configuration
- Platform: RP2040
- 22 GPIO buttons mapped
- Ideal for prototyping
- Config:
pico
Arduino Boards
Generic Arduino configurations for testing
- Uno (ATmega328P, no USB)
- Nano (ATmega328P, no USB)
- Leonardo (ATMega32U4, USB)
- Micro (ATMega32U4, USB)
- Mega (ATmega2560, no USB)
- Config:
arduino
Platform Comparison
| Feature | RP2040 (Pico) | AVR (ATMega32U4) |
|---|---|---|
| Clock Speed | 133-200 MHz | 16 MHz |
| Cores | Dual-core | Single-core |
| RAM | 264 KB | 2.5 KB |
| Flash | 2 MB | 32 KB |
| Input Latency | ~0.5ms | ~1-2ms |
| USB Stack | TinyUSB | LUFA |
| Console Support | Joybus (PIO) | Joybus (bit-bang) |
| Advanced Features | Display, RGB LEDs, Config storage | Limited |
RP2040-based controllers offer significantly better performance and more features, but AVR-based controllers are well-tested and reliable for most use cases.
Choosing a Configuration
When selecting a configuration for your controller:- Check your PCB documentation - Most PCBs will specify which config to use
- Identify your microcontroller - Look for markings like “ATMega32U4” or “RP2040”
- Browse the configs - Check the
config/directory for your hardware - Verify pin mappings - Ensure the button mappings match your hardware layout
Creating Custom Configurations
If your hardware isn’t listed, you can create a custom configuration:- Copy an existing config directory (e.g.,
config/pico) - Modify
config.cppwith your button mappings - Update
env.iniwith the correct platform settings - Build and flash your custom firmware
