Wireless/Wii Hack for SNES and NES Controllers – Overview

Copyright © 2007 Mark Feldman. All Rights Reserved.

Design Considerations

My primary design goal for this mod was to wind up with a controller that was as close as possible to the original in terms of both weight and shape. This did, unfortunately, result in it being somewhat more expensive than it otherwise could have been. The main changes to the shape, apart from the obvious lack of a cable, have been the addition of a power switch, a LED to show when it's turned on, and a mono socket for recharging with a standard DC adapter. All other components are internal.

Controllers

The first component is the controller itself, which are the only components you can't walk into any retail outlet and buy. Fortunately there are still plenty of second-hand controllers to be found. I bought mine off EBay for about $10 each, although shipping costs bumped that up by a few extra dollars. I also could have gotten them cheaper by bidding instead of using the buy-it-now feature. If you go to swap-meets then you can sometimes find people selling second-hand controllers for a few bucks each...look for the box full of tangled wires under a table in the most inaccessible corner of the stall!

   

Microcontrollers

The NES and SNES controllers are effectively “dumb” devices that rely on clocking signals sent from the console to drive logic chips. This mod includes a PIC16F84A microcontroller inside the controller to effectively emulate the behavior of the console, encode the button states in a custom packet format and send it to the ASK transmitter chip. The PIC is programmed to do this once every 7ms exactly, i.e. roughly 142 times a second.

A second PIC16F84A is located inside the receiver which interprets the signals coming in from the ASK receiver chip. It is also responsible for communicating with the GameCube/Wii console and impersonating a regular GameCube controller. The PIC also controls a red/green LED on the receiver to show when power is on and whether or not a valid wireless signal is being received.

Wireless Chip

The decision to use off-the shelf wireless chips was made for the simple reason that I don't know the Wiimote protocol details. Even if I did, it would undoubtedly add significantly to the cost, size and especially complexity of the transmitter electronics. The GameCube controller protocol, on the other hand, is well documented on numerous public sites and is relatively easy to implement...all you need to do is somehow get the button state data to a controller box that can plug into the console.

The transmitter chip itself is the TX-C1 (spec sheet), a handy little device that worked flawlessly as soon as I hooked it up. The chips are rated at 4-5kbps, although during testing I did manage to push them as high as 6.5kbs and still maintain a cohesive signal. For this project I drive them at exactly 4kbs, although they are idle for 14 out of every 28 cycles. This allows the controller to send roughly 142 "packets" per second, each containing all 12 button states plus start/stop bits.

One downside to this project is that the transmitter operates at a fixed frequency, so only one controller can be used at a time. A second controller could be made by replacing the wireless chip with another that operates on a different frequency. A second receiver would also have to be made...the microcontroller inside might be fast enough to handle two wireless signals but it's not fast enough to talk to two GameCube ports.

Update: Jaycar are apparently refusing to ship the RX and TX chips to US modders, probably due to FCC regulations. I know of at least one person who's used the almost-identical chips sold by SparkFun and reports they work fine. Wherever you source your chips from make sure you get ones that can support at least 4000bps. The 2400bps versions are slightly cheaper but unlikely to work.

Power

Battery weight was the one thing I was most concerned about at the start of this project, and it turned out a lot better than I was expecting. After much deliberation I settled on using a replacement battery for an IPod-Mini. At AU$30 (US$22) each they're not exactly cheap, but they're lightweight, extremely small, and they pack a powerful 600mAH punch that can in theory power the controller for over 85 hours. One of their most attractive features, however, is the fact that they have tiny regulator electronics included inside the battery itself. These chips are designed to automatically protect against damaging and dangerous conditions of over-charge and over-discharge.

In the end I managed to get the total weight of battery and components down to just 25 grams (about an ounce). As it turns out, this is roughly the same weight as the amount of cabling that normally hangs from the controller down to the ground. The battery is installed somewhat off-center due to internal space constraints, but it's so light that it's not noticeable. If you really wanted to be pedantic then it would be easy enough to install a small metal slug or something on the other side to keep an even balance.

If the cost and limited lifespan of an IPod-Mini battery doesn't appeal to you and you don't mind a bulky battery pack then replacing the battery with a 3xAAA battery holder will work just as well.


Back to the main page...