Pi Pico (RP2040) based adapter to use USB controllers on a MegaDrive console.
I've been working on this for quite some time.
It's not finished. But as I don't have much more free time to work on it, I decided to release it as is..
It supports a bunch of controllers.
Most controllers for ogXbox, x360, One, Series, PS3, PS4, PS5, Switch should work.
Wiring
All data pins must be level shifted!
Pico's GPIO runs at 3.3v and megadrive runs at 5v.
Use a USB-OTG adapter to connect a controller to the pico's usb port.
Modes
To change mode, hold the "mode change button" and press A, B, X or Y (input follows the xinput layout)
"Mode change button" changes depending on the device being used and it's buttons.
It follows this priority: HOME, START+SELECT, START.
IE: If a device contains a HOME button, use that. If the device only have START, use that.
Note: This was not tested on a megadrive console. Was only tested on a mister fpga via snac and on a sega saturn (as it's backwards compatible). If you test it on a real console, please let me know.
Advice:
I'm going to update this page later.
I'm not sure if I'm going to make any change to the firmware the short term. No time for that, please don't ask.
If you like my work, please consider supporting me via ko-fi. 🙂
I've been working on this for quite some time.
It's not finished. But as I don't have much more free time to work on it, I decided to release it as is..
It supports a bunch of controllers.
Most controllers for ogXbox, x360, One, Series, PS3, PS4, PS5, Switch should work.
Wiring
MegaDrive | GPIO |
---|---|
D0 | 0 |
D1 | 1 |
D2 | 2 |
D3 | 3 |
TL | 4 |
TR | 5 |
TH | 6 |
VCC | VBUS |
GND | GND |
All data pins must be level shifted!
Pico's GPIO runs at 3.3v and megadrive runs at 5v.
Use a USB-OTG adapter to connect a controller to the pico's usb port.
Modes
- 6 button pad (led on)
- 3 button pad (led blink fast)
- Twinstick for xenocrisis (led blink slow)
- Cyberstick (led blink slow). This mode is bugged!
To change mode, hold the "mode change button" and press A, B, X or Y (input follows the xinput layout)
"Mode change button" changes depending on the device being used and it's buttons.
It follows this priority: HOME, START+SELECT, START.
IE: If a device contains a HOME button, use that. If the device only have START, use that.
Note: This was not tested on a megadrive console. Was only tested on a mister fpga via snac and on a sega saturn (as it's backwards compatible). If you test it on a real console, please let me know.
Advice:
- NEVER connect it the console and to a usb host (ie: a PC) at the same time.
- Connect the controller and adapter to the console while the console is still powered off.
- Do not use a power hungry controller. IE: a DualSense.
- If you're going to use a controller that contains an internal battery, make sure to fully charge it before using. You don't want it to be charged by the console's controller port.
I'm going to update this page later.
I'm not sure if I'm going to make any change to the firmware the short term. No time for that, please don't ask.
If you like my work, please consider supporting me via ko-fi. 🙂