GameCube ASCII Controller USB Retrofit
(April 2026 - )
1. THE IDEA
There is this rather obscure piece of hardware called the GameCube ASCII Controller. It was made specifically for Phantasy Star Online on the Nintendo GameCube and was only released in Japan. It's essentially a full keyboard squeezed between the two halves of a GameCube controller. I first came across this controller while browsing Reddit, where someone had replaced its original keyboard with a modern 60% mechanical keyboard. It was a pretty cool modification, but I couldn't help feeling that something was lost in the process. What I really like about this controller is how unusual it is. Rather than modifying the original shell to accommodate modern hardware, I wanted to preserve its appearance as much as possible while completely replacing the electronics inside. The goal is to make it work on a modern PC as a USB keyboard, mouse, and Xbox-compatible controller, all through a single USB-C connection. Ideally, from the outside, you wouldn't even notice that anything had changed. Well, apart from the missing original cable, which I consider an improvement!
Rather than trying to implement every USB function on a single microcontroller, I decided to use two. One handles the keyboard and mouse through QMK, while the other presents itself as an Xbox controller using XInput. A small USB hub combines both connections into a single USB-C port.
Controller architecture. Click to view full size
There are three PCBs inside the original controller: one for the left part, one for the right part (minus the C joystick), and one for the C joystick.
I created a fourth PCB to host the USB-C connector, a fuse, the ESD protection chip, and the two 5.1 kΩ resistors for CC1 and CC2.
The four PCBs in my project are:
The upstream USB connection from the USB hub, which combines the USB connections from both microcontrollers, is routed to the Synless_GameCube_ASCII_USB board, which fits neatly behind this suspiciously USB-C-looking hole, where the main cable used to be:
2. MAKING IT FIT
Since I wanted to keep the original shell completely untouched, the replacement PCBs had to match the originals as closely as possible. Even a small positioning error could prevent a button from fitting or working properly. So before ordering any electronics, I had to recreate the original PCB outlines. I desoldered every through-hole component of the left part. Then, armed with my trusty Mitutoyo caliper, I measured all around to determine the shapes and dimensions of the three PCBs in this controller. I designed the three pieces in SolidWorks and printed them in PLA to verify that they accurately replicated the original PCBs.
I planned multiple PCB revisions, starting with unpopulated boards to make sure everything would fit where expected. Once I was happy with the fit, I ordered the populated and assembled version.
3. DESIGNING THE ELECTRONICS
I drew a lot of inspiration and technical elements from the Phob project. The Phob project is a mature, open-source replacement motherboard for GameCube controllers. I used it to compare my measurements and component placements against a regular Phob board, and I took some components from the Phob libraries of components.
The basic architecture is fairly straightforward: the keyboard side runs QMK, while the controller side handles XInput. The main challenge is fitting everything onto the replacement PCBs while keeping the original mechanical layout intact. The microcontroller doesn't have enough pins to read the entire keyboard directly, so I added an I²C I/O expander. On paper, that seemed straightforward. But it took me some time to get QMK to properly address the expander through I²C. The two microcontrollers will communicate with each other over UART at 500000 baud. It's no DMA SPI, but it'll do. As long as they can exchange information without any noticeable latency, that's good enough for this project.
Schematic. Click to view full size
PCB view. Click to view full size
4. FIRST PROTOTYPE
Ordered from JLCPCB. Arrived 2 weeks later.
Left PCB. Click to view full size
Right and joystick PCB. Click to view full size
The measurements were mostly good. I had two things to fix.
The left joystick was positioned a bit too low, so I had to raise it by 0.5 mm.
The Z button was not positioned correctly. The PCB could not be inserted with the Z button in place, and the button could not be pressed.
I shifted it 1.75 mm outward.
Left joystick shift
Z button error
5. BRINGING IT TO LIFE
Ordered from JLCPCB. Only the bottom side of the left part needs assembly, keeping the cost reasonable.
BOM. Click to view full size
PCBA. Click to view full size
Arrived 3 weeks later
Soldered with the USB board
Click to view full size
After soldering the USB-C board and flashing the first firmware onto both microcontrollers Windows immediately recognized the two devices behind the internal USB hub: an Xbox 360-compatible controller and a composite keyboard/mouse device:
There is still a good amount of work to be done but here is a first test of the keyboard and the controller:
30.10.2026 - WHAT'S NEXT ?
Next, I will 3D-print a small bracket to securely hold the USB-C daughterboard inside the original shell.
After that, there's some final assembly and a bit more firmware work to do.