Worklog GCShuffle

Jul 5, 2018
Sydney, Australia
Hey all,

I've been gone a while and was only here very briefly. Life got busy and my previous project (a Wii portable) was put on hold until I am inspired.

My current project may interest many of you though! I call it GCShuffle, a fun little board that is capable of mixing up Gamecube controller inputs and outputs, as well as (should all go well) controls.

To mix up controller inputs and outputs, I use 4 low on-resistance analog multiplexers (SN74LV4051A), each receiving data from all controller inputs, with the COM pin going to the output data line of a single controller port.

To mix up the controls, I am planning on leveraging the RP2040's PIO (which is sweet for real-time applications - people use it to make VGA drivers, but I'm starting a bit smaller) to deal with the Gamecube communication protocol (detailed here). The RP2040 will take in raw Gamecube serial data and output altered serial data - another 4 multiplexers allow you to choose between the altered and raw signals.

I'm using a Pi 0 as a master for the RP2040 - it probably all could have been handled by the RP2040 (including the input/output switching, technically), but I'm thinking I will make either a web interface or similar to allow for easy (and cool) switching between modes.

A couple other neat features include:
  • USB-C to both the Pi 0 and and RP2040, using a USB switch (MAX4983E)
    • I'm using the Sparkfun breakout board, because I'm scared of USB-C :'(
    • RP2040 allows for drag and drop programming, which is dope AF
  • Buzzer for some feedback regarding switches
Potential modes include:
  • 1 controller in, 4 controllers out (1 physical player controls 4 virtual players)
  • 4 controllers in, 1 controller out (periodically selected from the 4 inputs)
  • If you press a certain button, all controllers are shuffled
  • 2v2, but you swap with your teammate periodically
  • Any many many more.


I'm currently waiting on the first board revision, which only implemented switching controllers. I'll try to keep you all posted regarding progress past that.