For those not familiar with Unijoysticle 2, it is a device that allows you to use modern Bluetooth gamepads like Sony DualSense or Nintendo Switch controllers (to name just a few) on old computers like the Commodore 64 or Amiga.
What’s new in version 2+:
Case friendly: lower profile, LEDs & buttons are close the border and has mounting holes.
Looks nicer: Uses SMD components for almost everything
Supports buttons 2 & 3 in port #2. Some Amiga games might use them.
Cheaper to manufacture. I reduced the price from $60 to $35
It is now possible to use Bluetooth gamepads both in Arduino and CircuitPython projects.
This means that you can use your PlayStation (PS3, PS4, PS5), Nintendo (Wii, Wii U, Switch) and Xbox One S gamepads in your electronics project: control a robot, home-automation, video games, etc… everything controlled from your favorite gamepad.
The catch is that not every Arduino or CircuitPython boards are supported. In fact, only a few of them are supported.
For Arduino, the boards that have the NINA-W10x (ESP32) co-processor are supported, like:
Chosen: 64×32 LED matrix. Let’s see what we can do in this extremely low-resolution screen.
A powerful enough micro-controller:
Chosen: Matrix Portal M4, mostly for convenience since it comes with an ARM Cortex M4, ESP32, “expansion port” + header to connect to the matrix LED. It already supports CircuitPython. As a bonus it has an accelerometer.
Portability: It should be portable, no need to use an external power supply.
In other words, I’m building a Nintendo Switch killer. What will happen next is that Nintendo will run out of business. If this happens, my 7-year-old kid will kill me, since his dream is to be a video game designer at Nintendo… so probably I shouldn’t be that aggressive in my marketing campaign.
In order to create Commando 2084, I had to disassemble Commando. My original intention was to patch what was only needed and stop there. But I got carried away and I ended up analyzing and commenting the entire Commando code.
The commented code (that can be recompiled to generate the exact original binary) is here: