|
||||||||
|
||||||||
| Cette page est aussi disponible en français | ||||||||
| Project overview | [hide] |
Nintendo's idea of implementing support for NES, SNES and N64 games in their new console,
the Wii, is in my opinion one of their greatest ideas. As soon as I learned that
it would be possible to use Gamecube controllers to play those games, I started
thinking about designing an Snes/Nes controllers to Gamecube adapter which would
be compatible with the Wii.As soon as I got access to a Wii (I still dont have mine), I started testing my code which I had prepared in advance. I started by doing the NES and SNES adapter. Later, since a friend kept insisting that I should also design a N64 to Gamecube/Wii adapter, I implemented such an adapter. Because of the complexity of the Gamecube's controller protocol, it's not possible to build a simple conversion circuit without using programmable components. For this project, I used an atmel Atmega8 microcontroller. Maybe it's a little overkill, but using this chip allowed me to use my Multiuse tiny 1 PCB. Given the small size of this circuit, it's possible to fit it inside an original controller. Here are a few example of what can be done with this circuit: (for more pictures, visit the pictures section) |
| Button mappings |
| Schematic | [hide] |
| Printed circuit board (PCB) | [hide] |
| As I said in the overview, I used my
Multiuse tiny1 PCB. Refer to the Multiuse
tiny1 page for more information. If you dont feel like building it yourself, I sell
fully assembled PCBs with the MCU pre-programmed in my
online shop. Here are pictures and wiring diagrams: When using the Multiuse tiny1 PCB for this project, only the following components are needed. Suggested Digikey part numbers are included:
|
| Firmware | [hide] |
The atmega8 must be programmed with one of these firmwares:
For details about how to program an AVR, visit my AVR programming page. |
| Source code | [hide] |
| For those who are interested, here is the source code. It is released
under the GPL license: Nes and Snes version 1.1: snes2wii-1.1.tar.gz Nes and Snes version 1.0: snes2wii-1.0.tar.gz Nintendo 64 version 1.2: n64_to_wii-1.2.tar.gz Nintendo 64 version 1.3: n64_to_wii-1.3.tar.gz Nintendo 64 version 1.4: n64_to_wii-1.4.tar.gz I coded the project in avr-as (gnu) assembler. A makefile is included. Why I used assembly language? Mostly for speed and timing control. The smallest time unit in the gamecube controller protocol is of 1us, which corresponds to only 16 cpu cycles at 16 mhz. Not much time to waste at that speed. Because I used assembly, many optimisations tricks were possible. |
| Pictures | [hide] |
| Converting a NES controller: (Beware: Clone controllers use different colors) Converting an SNES controller: (Beware: Clone controllers use different colors) Nintendo 64 version: Pictures taken during the development and debugging: Pictures taken during tests, when it was finally working: The prototype: |
| User pictures | [hide] |
| I like to see how others build my projects. It also makes good assembly examples.
Please send me your pictures and I'll add them here. Andrew Jalics has posted pictures of the NES to Wii box he build using my PCB on his web site.:
Declan Williams, from Autralia, built the Nes/Snes and N64 versions. He used pre-programmed chips from my store and created his own PCBs. He also built his own SNES style connector ( details visible on his 4nes4snes pictures): June 5, 2009: Andrew Kay sent me the following pictures of the adapter he has built: |
| Links | [hide] |
| This document clearly explains the low level communication of the gamecube controllers: Nintendo Gamecube Controller Protocol This document contains a section (#9) with information on the bit significations of the controller replies to various commands: Yet Another Gamecube Documentation This page contains documentation about the snes controller 'protocol': Sci.Electronics FAQ: Super Nintendo Entertainment System: pinouts & protocol |
| Disclaimer | [hide] |
|
I cannot be held responsible for any damages that could occur to you
or your equipment while following the procedures present on this page.
Also, I GIVE ABSOLUTELY NO WARRANTY on the correctness and usability
of the informations on this page. Please note, however, that the procedures
above have worked in my case without any damages or problems. Now you cannot say that I did not warn you :) |
Website coded with![]() | Last update: July 01, 2009 |