A project developed to use USB controllers on the Nintendo 64 console.
Precompiled binaries can be downloaded from Releases.
NOTE: This project is still in development, PRs and ideas are welcome. See todo list for ideas.
- N64 controller emulation (up to four controllers at once!).
- Rumblepak emulation.
- Mempak emulation with four selectable banks. Technically unlimited.
- Transferpak emulation. Put Gameboy ROMS on an SD Card!
- N64 mouse emulation. Use a USB Mouse!
- N64 Randnet emulation. Use a USB keyboard!
- Configurable deadzones and sensitivity from the N64 Console.
- True dual analog sticks with GoldenEye and Perfect Dark.
- SD card driver with FATFS support for storage/backup of Gameboy ROMS, mempaks etc.
- A single hardwired controller interface for ultimate hacking.
- Optional TFT LCD Support.
Todo
- Raspberry Pi interface or equivalent for all other USB controllers.
- More inbuilt USB controller drivers. (PS3, Aftermarket Xbox One, OG Xbox, improved Generic HID).
- USB Bluetooth stack.
- Mouse/Keyboard input for controllers.
- Gamecube controller support.
- Better debug output (Flashing LED, SD card logging)
Supported Controllers
- Bluetooth 8bitdo/compatible controllers via the 8BitDo Wireless USB Adapter
- Wired 8bitdo controllers when they are started in X-input mode.
- Xbox S/X Wired
- Xbox one Wired (Genuine / PDP)
- Xbox 360 Wired
- Xbox 360 Wireless (Via PC USB Receiver)
- PS4 Wired
- A hardwired controller, use your own buttons etc.
Controls
- Back + D-Pad = Insert Mempak banks 1 to 4
- Back + LB = Insert Rumblepak
- Back + RB = Insert Transferpak
- Back + Start = Select virtual pak (Use in-game mempak managers to configure the device)
- Back + B = Switch to true dual-analog stick more for GoldenEye 007/Perfect Dark
- Back + A = Backup buffered memory to SD Card (DO THIS BEFORE POWER OFF!)
Needed Parts
Qty | Part Description | Link |
---|---|---|
1 | Teensy 4.1 | https://www.pjrc.com/store/teensy41.html |
1 | USB Host Cable | https://www.pjrc.com/store/cable_usb_host_t36.html |
3 | 0.1" Pin Header | https://www.pjrc.com/store/header_24x1.html |
2 | 64Mbit PSRAM SOIC-8 | https://www.pjrc.com/store/psram.html |
4 | N64 Controller Extensions | AliExpress |
1 | (Optional) ILI9341 TFT LCD Display 2.2" (320x240) | AliExpress |
1 | MicroSD Card | - |
1 | (Optional) Case | https://a360.co/2HPz0U0 |
1 | (Optional) PCB breakout board | Kitspace |
Note: PSRAM model numbers are IPS6404L-SQ-SPN or ESP-PSRAM64H.
Compile and Program
See COMPILE.md.
Install
See INSTALL.md.
How to Use
See USAGE.md.
License and Attribution
usb64 is shared under the MIT license, however this project includes code by others. Refer to the list below.
- mpaland/printf shared under the MIT License.
- USBHost_t36 fork shared under an 'MIT or MIT-like license'.
- Teensy cores shared under an 'MIT or MIT-like license'.
- MBC emulation code is adapted from Peanut-GB shared under an MIT License.
usb64 with optional case and TFT display.