Raspberry PI Retropie

Amiga Joystick & RetroPie

RetroPie

For those of us who are old retro game nostalgics, RetroPie is an amazing project! It’s very easy to install directly from an image and not too much configuration afterwards. Though there is some extra work to get Amiga games up ‘n running. Personally, I’m an Amiga fan, but also remember the good old glory days of the C64. Most people who are using RetroPie seems to be in to Nintendo and arcade.

I followed the description on RetroPie’s site. And then this guide to get Amiberry/WHDLoad installed, which makes running Amiga games a breeze! No more fuzzing around with game-specific settings like Kickstart 1.2 or 1Mb fast mem.

I wanted to get started as quick as possible so I hooked up a keyboard and a modern version of a SNES controller (this is what I bought from the Swedish store Kjell & Co). A mouse can come in handy as well, but you can do without it if you don’t want to play games where it’s needed (but who doesn’t want to play Defender of the Crown?).

Joystick Hunting

But… although it was fun to play old classics like Bubble Bobble on Amiga and Yie Ar Kung Fu on C64, you don’t get the right feel with a SNES controller. I wanted a joystick. Preferably a Red Ball! So I scoured the internet for solutions. Someone must have done this before.

The first thing I found was a remake of an old classic Amiga joystick with USB connection. But it had been out of stock for years everywhere. Not even AliExpress carried something similar (!).

I also found someone who had retrofitted a USB-connection to their old joystick. But I didn’t want to break my precious old Red Ball I found hidden away since long.

Another solution is a joystick adapter from Retronic Design. A quality product, but not quite what I was looking for. I didn’t want to loose the A/B/X/Y buttons that are more or less required to navigate in RetroPie. And I wanted the SNES control to play old Nintendo games with the right feel. I also considered connecting two controllers and two joysticks with adapters, but that would fill up my desk space and all the Raspberry ports.

The Solution

I realized I actually already had a device that converts the digital signals of antique joysticks to USB – my newly bought SNES controller. My idea was to connect the up-wire of the joystick to the up-button of the controller, down-wire to down-button etc. Time to void the warranty…

Not much space left. And the wires and solderings would possibly be in the way for the conductive buttons. But it had to be tested! A joystick of old has a wire for each direction and only one button. RetroPie has the yellow B button as default for joystick button, so I that is what I chose.

Here is the PCB seen from the other side. I soldered wires for up/down/right/left (orange, grey, red and green) and fire (brown). Except these, you also need ground (blue).

Then I just had to connect the right wire to the right pin of a joystick port. It’s a 9 pin male D-sub (I bought mine here). I searched for “Amiga joystick pinout” and found this image:

Note that some images are numbered from the left and some from the right, depending on whether it shows a male or female port. The safest way is to read the numbers on the port when soldering.

Button II is right mouse button and is not in use on joysticks. +5V DC are used for a few joysticks for auto-fire (maybe for other things like light?). Since I don’t own a joystick with auto-fire I just disregarded it. If you want to include it, just look for an appropriate +5V soldering point on the SNES controller. I don’t think a joystick will draw more current than the Raspberry can supply, but don’t take my word for it.

Time for a first test, everything still dismounted… the joystick worked. Yay! Although I had connected fire to the X button of the controller. Since I wanted to keep it simple, I resoldered the wire to the default B button. Next step was to make room for the joystick port.

I used a dremel to carve an opening for the port and a new hole for the USB cable, which I had to move. The bottom plate of the controller is not shown here, but I carved similar openings there as well. As you can see, aesthetics was not top priority.

Everything in place and everything fit! The only issue was that the port was somewhat loose. On the right side, it sits tight between two pieces of plastic. But on the left side it is completely loose. It’s on my to-do list to super glue it.

And here’s the final result! I’ve tried a bunch of games and it works really good. Some people have noticed lag with different controllers with RetroPie, but I haven’t noticed any lag. I’ve read that It can also be an effect of your display and setting your TV to “game mode” (or similar) can reduce the lag. I use an old Sony TV that doesn’t have this setting, which seems to work fine.

And the SNES controller still works as it did before. You can actually use this and the joystick at the same time now.

Learnings

If I had to do one thing over again it would be to spend more time finding a good controller. I wanted a controller with cable, not too expensive, preferably old-style and something I could buy in a store right away.

Although mine works, it’s flimsy and its buttons are not very exact. Sometimes when you press down, right is also triggered. I bought two controllers and one did this for each button press, so I had to return that one. I guess it’s just a matter of time when these cheap controllers start acting up.

Although I haven’t researched very much, it was hard to find controllers like this with good quality. Most are wireless, expensive and have a bunch of features I don’t need (extra buttons, multiple joysticks…). Maybe you could find an older used one on eBay? Please comment if you have any tips!

Shopping List

  • Raspberry Pi 3B+
  • Case
  • 2.5 A power supply
  • HDMI cable
  • Micro SD card
    I always buy SanDisk. I have a bunch and they have worked well.
    My motto is: buy a large and fast that is still affordable (usually the second most expensive).
  • A cheap keyboard
  • Mouse (optional)
  • SNES controller
  • Male 9 pin D-sub port
  • Joystick (Red Ball ftw!)

Happy gaming!