• ColecoVision Fix + Wireless Controller Hack

    10/30/2022 at 13:07 0 comments

    This project falls in the "can I just get this working" category. No real intention of making it "nice", or even using it...!

    A while ago, I recovered my childhood ColecoVision from storage in a barn. It had been sitting there for a few decades, along with a some game cartridges. Let's just say it wasn't in the greatest of shapes! The following had to be fixed to get the console running:

    • Power supply 5V rail not working. Fixed by replacing faulty ceramic cap somewhere in the power brick (this is a destructive process, since the brick is ultrasonically welded shut):
    • Clock crystal leg corroded away. Found a 7.159 MHz crystal on eBay, and (partially!) removed resistor bodge from original console
    • 7404 chip legs corroded away (replaced as well)

    Next, I had to modify the output section to get a composite signal out (instead of RF modulation), using Ben Heck's hack.

    Great, we have a working console with video out! 

    Unfortunately (fortunately?!), none of the recovered controllers could be repaired, due to excessive corrosion and crud. I thought it would be cool to reuse the 802.15.4 boards I use for my main projects and create a wireless controller. To that end, I designed a couple of host boards, one for the joystick itself, a pretty simple GPIO board, with allowances for an encoder and numeric display to simulate the CV's keypad (didn't actually bother with the encoder and display, in the end):

    The cool part is on the receiver end, where I ended up using digital switches (MAX14662 and MAX14761) to simulate the original Joystick inputs. Wasn't sure this was going to work (especially since I didn't bother with diodes), but it did!

    I didn't want to spend too much time with the keypad stuff, so I hacked the console a little to bypass the built-in keypad/joystick toggle. The mod just provides ground to both types of inputs at all times. Joystick pins are pulled high to 2.5V, and inputs are detected when one of the pins is brought low. This way, the joystick can partially simulate keypad presses (eg, joystick right = keypad press 1). Here, I bypass the circuitry by grounding two resistors:

    Having gained a better understanding of the controller circuitry, it seems I could have simplified the emulator a great deal (avoiding the need for digital switches completely in favor of plain GPIOs). If anyone knows why the original ColecoVision designers used -5V (as opposed to ground) on the 74LS00 for keypad/joystick toggle, I'd love to know.

    As stated, this is only a "make it work" project, so please forgive the crudity of everything shown here!

    In the end, everything worked really well. Below, the receiver end, transmitter and the "arcade" joystick I slapped together from spare MDF.

    I'd be happy to discuss this with any real ColecoVision fans looking to implement something similar, but that's it for now!