I was able to find lots of ColecoVision-to-USB adapters, but none that supported the Roller Controller accessory.
The Roller Controller connects to the ColecoVision console using controller ports 1 and 2 simultaneously, which means a single-port USB adapter won't work. The Roller Controller also requires a bit of extra power using a curious pass-through cable with a proprietary connector. ColecoHID solves both problems in one compact adapter.
- Fully HID-compliant USB 2.0 game pad inputs, so it should work on any operating system without a driver.
- A toggle switch for "mouse mode" which combines the quadrature axes from both controller ports into an HID-compliant mouse input. (This lets you use the ColecoVision Roller Controller as a track ball mouse. This is also required for playing some games with the Roller Controller in emulators like MESS.)
- Supports 2x standard ColecoVision controllers, 2x Super Action Controllers (including their wheels), or the Roller Controller.
- Additional (untested!) support most likely includes standard Atari joysticks and Sega Genesis controllers.
The final design uses an Atmel ATmega32U2 which supports full speed USB 2.0. A 3D-printed enclosure replicates the Roller Controller's proprietary power connector. Conveniently, it only requires a small bit of current at 5V, so it's able to use USB bus power directly.
The majority of the initial technical info for the project came from Deathskull Labs. Thanks guys!
Printing the case at Shapeways in "White Strong and Flexible, Polished" created a nice result. (The current case has a small deficiency: while the retaining clips hold things in place along two dimensions, the top cover has a tendency to slide forward and backward. This makes it a little easier to open, so maybe it's a feature!)
The enclosure is made to accept crimped Molex pins, which seem to work well with the original ColecoVision hardware. I bought two sizes (14-20 and 18-22 gauge) but my notes are unclear which ended up being the correct size. (Sorry!)
This project included a lot of firsts for me: my first USB device, my first circuit board layout, my first 3D case design. So, expect some rough edges (like the sliding top of the case). That said, the code can serve as a simple HID-USB example project using the LUFA USB library.
I had a set of three PCBs made from the gerber files by OSH Park for about $12.
The firmware can be built using Atmel Studio. I programmed the ATmega32U2 using an AVRISP mkII. (The board includes the six pin programming header for the AVRISP.)
The rest of the components were from DigiKey. See the BOM below for the full list, but it ends up being somewhere in the neighborhood of $15 for single-unit quantities of all the parts.
The PCB uses some surface mount components. You can print a stencil from OSH Stencils (using the same gerber files) for about $5. That stencil, some solder paste, a pair of tweezers, and a hotplate is all it took to re-flow solder the board. None of the components are very fine-pitch, so you could probably get away with using a soldering iron or hot air tool instead.
Item | Digikey part number | Qty Required |
ATMega32U2-AU | ATMEGA32U2-AU-ND | 1 |
DSUB 9 | 609-4002-ND | 2 |
16.0 MHz 4-pad crystal, 2.5x2 mm | 644-1059-1-ND | 1 |
USB B connector | WM17113-ND | 1 |
mini SPDT switch | CKN9559-ND | 1 |
6-pin programming header | 609-3210-ND | 1 |
0603 1uF capacitor | 311-1446-1-ND | 5 |
0603 10pF capacitor | 311-1058-1-ND | 2 |
0603 22 resistor | 311-22.0HRCT-ND | 2 |
0805 10k resistor | 311-10.0KCRCT-ND | 1 |
Solder paste (leaded) | KE1507-ND | |
ColecoHID PCB v1 | from OSH Park | $12 for three |
Solider paste stencil | from OSH Stencils | $5 |
Shapeways Enclosure | from Shapeways | $21 |
Molex (14-20 or 18-22) Gauge Pins 0.093" (I'm not sure which size, sorry!) |
from Amazon.com | two male, two female |
Red / black hookup wire | a few inches |
- Use a micro-B USB connector instead of a full-size B connector.
- Push the USB port as far back onto the PCB as possible instead of having it dangling off the end, requiring a larger case.
- Strengthen the case where the Roller Controller power is plugged in. It flexes a little too much when plugging and unplugging.
- Compress the board layout a lot more. The final case volume could trivially be half what it is today.
- Fix the sliding top half of the case by adding a couple more retention clips on the other axis.
- Create a software utility (and updated firmware) to allow user control of joystick and mouse configuration and sensitivity.