While there’s an argument to be made that retro games should be experienced with whatever input device they were designed around, there’s no debating that modern game controllers are a lot more ergonomic and enjoyable to use than some of those early 8-bit entries.
Now, thanks to the PicoNtrol project from [Reogen], you can use the latest Xbox and PlayStation controllers with the Atari 2600 via Bluetooth. Looking a bit farther down the road the project is aiming to support the Nintendo Entertainment System, and there’s work being done to bring the Switch Pro Controller into the fold as well.
Building your own version is about as easy as it gets. You need to get your hands on the appropriate 9-pin connector, which can be bought new or salvaged from an old controller, and solder it up to a Raspberry Pi Pico W.
These old-school digital controllers were extremely simplistic, with each pin in the connector corresponding to either a joystick direction or a button press. From the Pico side, that means virtually pressing a button on the controller is as simple as bringing the corresponding pin high. To complete the project, [Paul Taylor] designed a 3D printable enclosure that hides away the Pi Pico and all those solder joints.
Simple and effective. While we do enjoy diving into the big and complex builds, the easy route certainly has its appeal. We’ve seen NES controllers grafted to the 2600 before, but you could argue that’s not really an improvement.
im of the opinion that modern controllers are not very good. retrocontrollers are also not very good. there was a sweet spot somewhere around the mid to late 90s where you could get some really awesome controllers (eg the sidewinder lineup from ms). there was a decline in the usb era where they cost cut down to single chip solutions. you took a major hit to precision from the low spec microcontrollers used at the time with low resolution adcs. harkens back to the days when controllers just had a shift register.
while ms had excellent controllers in the late gameport era. they are also the ones that killed the joystick in the early usb era. not with any hardware they made but with their atrocious xinput api and their one size fits all standardized controllers. this pushed pc gaming into a stricly mouse and keyboard space and an era where every game is another quaternion with a gun type shooter or some other kind of point and click game.
fortunately the sim space still has great controllers, if you were willing to pay for it. ranging from entry level to prosim gear. you can spend a lot of money on a racing simpit (even more than it would cost to get into some entry level motorsport), flight sims can be even more expensive, maybe not just go buy a plane expensive, but well out of the reach of the typical gamer.
The steam controller seemed pretty neat, when it was a thing. As did some of the hacks to use Wii controllers on a PC. Might not have the best precision or accuracy though.
You busted the Pinata open 50,000 times with your comments LordNothing…nothing else to say.
“pressing a button on the controller is as simple as bringing the corresponding pin high” Atari used active low logic on controller port. The inputs are floating high until someone presses a button which pulls to ground. It should read “the corresponding pin low”
It’s far more complex and flexible than that.
The 4 directional pins (8 total) are bidirectional GPIO on the RIOT chip, the button(s) and paddles are analog inputs (on the TIA)
So they aren’t technically active low, but for joystick usage they are detecting if there is a path to ground (RIOT = Ram, IO, Timer)
The steering wheel uses them with pull-downs to detect a path to 5v. The keypad uses them as outputs as column scan lines, detected by the analog inputs.
Using another micro with pins as outputs will work fine, so long as you never put in a cart that does some fancy controller detection and has the atari controller port set as output at the same time (Yes, these exist)
Existing microcontroller projects emulating a controller tend to drive FETs or have other protections in place, having already learned this lesson long ago :)
It’s been a while but I seem to remember one of the Sega systems (either master or genesis) had the same connector as the Atari 2600, and the pin-out matched the Sega D-pad to the Atari joystick and one of the buttons to the Atari button. I’m guessing it was the Master System since that’s the older one. Anyway I remember playing a lot of games that way after we discovered that because the Sega controller was just more comfortable.
Actually it was both the Genesis and Master System. My dad’s Commodore 64 also used a compatible joystick port so I used to use my Genesis controllers on it to play games. From memory, I think my cousin’s Atari 800 also used that port and I think he used his Master System controllers on it as well. They could only read one of the buttons, but those old systems only had one button on their controllers anyway. The D pads worked just fine. I had a friend who owned the 2600, but I can’t remember if it also used the same DE9 connector or not. That connector seemed to be somewhat of a standard across many systems at the time which was was really nice, though I remember being irritated with Nintendo that they didn’t follow this standard.
I may be misremembering the compatibility on these systems, but I remember them mostly being compatible.
I’m guessing this project would also work with any retro console/computer that also used the Atari standard e.g. Sinclair/Kempston standard on the Spectrum? What about the Sega Master System?
Amiga 500 used the same DB9 connector, but not sure it was compatible.
I don’t think it was 100% compatible, but it was very close. I remember seeing joysticks that had a selector switch on the side to choose between Amiga and Sega.
I did something similar a few weeks ago for the Vectrex console, except that mine uses a digipot to also support analog joysticks like the sidewinder mentioned above. I used a Pi rather than one of the small MCU’s – an MCU would certainly work as it does in this project, but taking advantage of Linux on a Pi which makes supporting multiple joysticks and mice and more extremely simple. There’s a bit of a writeup at https://gtoal.com/vectrex/joystick/USB-to-Vectrex.html – I would imagine the underlying principle could be applied to any retro console with analog X/Y inputs.