Gamecube controller to NES adapter
Contents
Introduction

At the opposite of most adapters I have designed until now, this
one is not meant to use old game controllers on modern hardware.
Instead, it allows one to control our good old NES with a
controller that came out 15 years later.
Having been contacted to make a Gamecube to NES adapter, I spent a few
evenings on this project and a lot more time in testing (It's a
pleasure to rediscover old games with a Wavebird).
Specifications:
- Connects directly to a standard NES port.
- Supports most Gamecube controllers. Tested with normal controllers, with the
white japanese imports with very long cable, with the popular Nintendo Wavebird and
an Intec wireless controller.
- Turbo feature. While L is pressed, A and B become turbos.
- Special mode for Mario Bros. (autorun).
Ready to use adapters available!
Complete adapter (ready to play)
Pictures
Here are a few pictures. Please send me yours!
Note: The 2 NES systems that can be seen above are my regular
modded NES
and my
heavily modified NES
for Super Mario Bros arcade version.
Usage
The button mapping quite straight forward:
Gamecube | NES |
A | A |
B | B |
Start | Start |
Z | Select |
D-Pad | D-Pad |
Joystick | D-Pad |
L | Turbo A/B |
Special modes
- If 'A' is held when turning on the NES, the 'auto run' mapping is
enabled. In this mode, the analog stick will press B automatically
above a certain threshold. Try playing Super Mario in this mode,
the only button you need to use is Jump!
- If 'B' is held when turning on the NES, the gamecube joystick
will use a lower threshold (i.e. less deflection required to trigger
the corresponding D-Pad direction).
Compatibility
The adapter should work with most games. Up to now, the following have
been tested. Don't hesitate to contact me if you try other games with the adapter!
Baseball,
Battle Tank,
Blades of steel,
Bubble Bobble,
Ikari Warriors,
Kid Icarus,
Legendary Wings,
Lifeforce,
MetalStorm,
Metroid,
Paperboy,
R.C. Pro-AM,
Super Mario Bros,
Super Mario Bros II,
Super Mario Bros III,
Turtles II,
Zelda II.
Note: The pause screen in Paperboy does not work because of the way the game
is coded. With release 1.0, you cannot exit the pause screen. In firmware 1.1,
changes have been made which unpauses the game automatically. (Sorry, with the
current hardware, nothing better can be done. If the projet gets popular enough,
I will design new hardware to provide 100% compatiblity)
Electronics
I once again used my
multiuse pcb2 circuit with an Atmega8a. I use a linear
regulator to obtain the 3.3 volt power required for the Gamecube
controller from the 5 volt available at the NES controller port.
For this project, the MCU needs a crystal to run at 12Mhz.
Atmega8 pin | NES/Gamecube signal |
PD2 / INT0 | NES Latch |
PC0 | NES Data |
PC1 | NES Clock |
PC5 | Gamecube data (install external 1k pull-up resistor to 3.3 volt) |
Important: Make sure the MCU has a 5 volt supply (3.3 volt is too low for 12 Mhz). Also,
make sure you supply both 3.3 volt and 5 volt to the gamecube controller.
Here is the pinout for the NES and Gamecube connectors:
Careful! The colors above are NOT representative of the wire colors (depends on the brand).
Only use the signal names!
Firmware
The firmware is available as a source code package (GPL License) and pre-compiled
.hex file.
Important!
For the controller to run at the correct speed (12Mhz), setting the
fuse bytes to the appropriate values is mandatory. In this
case, this means the following:
- Atmega8: high_byte=0xc9 low_byte=0x9f
- Atmega168: ext_byte=0x01, high_byte=0xD5, low_byte=0xD7
For more information about programming an Atmel AVR microcontroller,
you may refer to my short
AVR programming
page.
Now here are the files:
Version v1.2 October 23, 2016 (Sunday) |
---|
Updated gamecube IO code (transplanted from gcn64usb v2.9.2). Fixes some compatibility issues. |
File(s): gc_to_nes-1.2.tar.gz (30.4 KB)
gc_to_nes-1.2-atmega8.hex (18.3 KB)
gc_to_nes-1.2-atmega168.hex (16.9 KB)
|
Version v1.1.1 September 2, 2013 |
---|
Atmega168 support |
File(s): gamecube_to_nes-1.1.1.tar.gz (24.2 KB)
gc_to_nes-1.1.1-atmega168.hex (16.8 KB)
|
Version v1.1 April 15, 2012 |
---|
This new version fixes problems with Mario Bros 3. |
File(s): gc_to_nes-1.1.tar.gz (23.4 KB)
gc_to_nes-1.1.hex (18.3 KB)
|
Version v1.0 February 2012 |
---|
Initial release. |
File(s): gc_to_nes-1.0.tar.gz (21.2 KB)
gc_to_nes-1.0.hex (8.7 KB)
|
Disclaimer
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 :)