Raspberry Pi Pico Converts Retro Game Controllers To USB

Raspberry Pi
(Image credit: Lee, More Fun Making It)

In the 1980s and 90s the 9-pin D-Sub connector reigned supreme across the home computer scene. Atari, Commodore, Sega and many more used the ubiquitous connector for joysticks and pads. These controllers are our interface to the retro games that we love and that's why there’s nothing quite like implementing vintage hardware in your Raspberry Pi project. This project was originally from NickZero over at Instructables but we saw this via maker and developer Lee from More Fun Making It. The project relies on a Raspberry Pi Pico to convert a 9-pin D-Sub interface to USB in order to use an old-school joystick with his Raspberry Pi 400 Amiga project.

If you’re new to More Fun Making It, you’re in for a treat. Lee specializes in retro gaming and vintage tech—building arcade cabinets and pinball machines as well as repairing retro hardware, as the YouTube channel name suggests, just for the fun of it. This Pico-powered adapter is just one of many in his portfolio of projects and definitely one of the most useful when it comes to retrogaming.

Latest Videos FromTom's Hardware
Ash Hill
Contributing Writer

Ash Hill is a contributing writer for Tom's Hardware with a wealth of experience in the hobby electronics, 3D printing and PCs. She manages the Pi projects of the month and much of our daily Raspberry Pi reporting while also finding the best coupons and deals on all tech.

  • Findecanor
    A microcontroller running on 3.3V wouldn't be my first choice for a 9-pin joystick converter, but if I did I would definitely use a logic-level converter and then some external pull-up resistors.

    Many vintage joysticks with autofire are not driven by the +5V pin, but actually by the pull-up current.

    You might also be tempted to connect a Sega gamepad, but Sega also uses another pin as the +5V pin.
    Reply
  • TerryLaze
    Findecanor said:
    You might also be tempted to connect a Sega gamepad, but Sega also uses another pin as the +5V pin.
    https://github.com/ryansalerno/raspberry-pico-retro-controller-adapters#readmeSega, snes and nes version, the pinout used is in the .py for each.
    Reply
  • bp_968
    I agree about using a 5v MC. Especially if their programming it with arduino anyway.

    If someone wants to build one of these and can print a nice box/case for them ill send you a couple microcontrollers (i have the arduino mini, micro and a handful of other types in my drawer of micro controllers and SBCs. I could even russle up the resistors and stuff too and send that. I just want the printed case you end up using for my own copy :) i want to make one for SNES controllers and or sega genesis controllers.

    One of these days i need to build a arcade emulator machine to play gauntlet or xmen or TMNT on (ooh and golden axe, another epic game of the time).
    Reply
  • TerryLaze
    Findecanor said:
    A microcontroller running on 3.3V wouldn't be my first choice for a 9-pin joystick converter, but if I did I would definitely use a logic-level converter and then some external pull-up resistors.
    bp_968 said:
    I agree about using a 5v MC. Especially if their programming it with arduino anyway.
    But why?!
    The only reason 5V is the standard is because that's what the micros had back then, there is nothing in a joystick that needs any "power" (current) at all, let alone a specific amount, you just need any amount of "power" (current) to be able to distinguish if the circuit is open or closed.

    Or am I missing something here?
    Reply