People like to argue over which controller is the all time best. John Milner decided to side-step that debate entirely and just hook them all up.
Milner, who goes by jfrmilner online, liked being able to play old games on his RetroPie, a modded Raspberry Pi mini-computer, but didn't like needing to use an Xbox 360 controller to do so.
Where some might have simply resigned themselves to the first world problems of contemporary gaming, however, Milner decided to do something about it.
Specifically, he decided to reverse engineer each one and upload code to his RetroPie so inputs from the old controllers would register properly. From there, he went about creating a hub to connect them all to,
With this experience, I designed a circuit board and selector system so they could all be connected and used on one system. The board acts as a shield for an Arduino Micro that expands the available pins allowing all the controllers to be connected.
This works by using a series of Shift-in Registers, Shift-out Registers and some Multiplexers. The Shift-in's handle the simple switch based controllers like the C64 joystick, the Shift-out's control the Multiplexers (one nibble per IC) and some LEDs on the selector, and the Multiplexers connect the controllers that require direct access to the Arduino's digital pins.
The latter is required to meet the response times of ICs in the controllers which are usually Shift Register(s) or Multiplexer(s).
For the case, he simply ordered something off Ebay and then milled out slots for each of the buttons and proprietary cord inputs.
Going above and beyond the simple idea of adding ports for each retro control-type, Milner also added some spiffy buttons for the console commands, like "save game" that make the entire thing look like a cool, low-budget, futuristic prop from an old episode of Doctor Who.
The end result lights up and everything, although the mess of wires involved means you'll want to have a good stock of cable ties available before your dreams of multi-controller bliss get all tangled up.
You can see Milner talk about the project in some detail, and also give a demonstration of how easily it works, over at his YouTube channel.