raphnet.net banner
Cette page est aussi disponible en français
N64/Gamecube controller to USB adapter
Content: Project Overview | Pictures | Schematics | Printed Circuit Board | Firmware | References | Disclaimer
Project overview [hide]
Nintendo 64 and Gamecube controllers are excellent controllers which are quite appropriate for many PC games, and of course are perfect for emulators!. The microcontroller firmware in this projet implements a standard HID joystick which means that no special device driver is required. It works perfectly well under Linux and Windows.

Features:
  • Supports Wired Gamecube controllers and dance mats (Official and clones)
  • Supports Wireless controllers (Known to work at least with the Nintendo Wavebird (since firmware version 1.2) and an Intec wireless controller).
  • Supports N64 Controllers (Official and clones)
  • NOT SUPPORTED YET: N64 Rumble Pack, N64 Memory cards or Gamecube vibration. Sorry, but I don't have an estimate about when I will add any of these features.

Why?
One of my friends wanted to play Nintendo 64 games on his PC using an original controller... so I developped an adapter for doing this. But since Gamecube controllers use a very similar protocol, it was easy to support Gamecube controllers too.

Gamecube and Nintendo 64 controllers both work at 3.3 volts. But on the USB bus, only 5 volts are available. For this reason, a voltage regulator is required. Apart from the different firmware, this is the only difference (and additional complexity) this project has with my Nes/Snes controller to USB project.

goto top Up


Pictures [hide]
N64 or Gamecube to USB with regulator on-board:



Pictures of the printed circuit board with an lm1117 adjustable voltage regulator:
Top

Top

Bottom

Bottom

small fix

small fix



Pictures taken during development with the new PCB:



Pictures of the N64 to USB prototype. I used an lm317 adjustable voltage regulator:



Here are some pictures from Declan Williams (16 years old!):

Sean Green built and used my circuit in a few projects:
The Bliss 4-pack

The Bliss 4-pack

The Bliss Worm

The Bliss Worm


goto top Up


Schematics [hide]
Here are the schematics:

Comments: Some webpages mention that the Gamecube controllers work at 3.43 volts, some other pages says it's any voltage between 3.3 and 3.8! volts... I read an old message in the comp.emulators.game-consoles news group where the author said that the Nintendo 64 supplies 5 volts to the controllers (Wrong!). I measured 3.36 volts on my N64 so personally, I choose to supply 3.3 volts to my Gamecube and N64 controllers.

In order to obtain 3.3 volts, you can use a fixed voltage regulator such as the 78M33C or an adjustable voltage regulator such as the lm317 or lm1117 (exemple). If you use an lm317 variable voltage regulator, here's a simple tool which can help you find a good value for R1. Any voltage between 3.26 and 3.40 volts should do the job.
Adjustment resistor (R2):
Fixed resistor (R1):
Output voltage (Vout):
Note: The picture comes from motorola's lm317 datasheet: lm317rev1g.pdf

goto top Up


Printed Circuit Board [hide]
Top

Top

The PCB is an improved version of the PCB used for the Nes/Snes controller to USB.. This new PCB has a voltage regulator and reprogramming contacts on the bottom side. Here are composite images of the top and bottom layers:



Bottom

Bottom

The regulator is an lm1117mp-adj. 0 ohm resistors must be installed to select the power source (USB 5 volts or regulator output) for the microcontroller and the controller. In this case, R5 and R8 must be installed:


Here is a wiring diagram for the board:


And finally, here are the gerber files which you can use produce this PCB:
multiuse.zip

Due to the fact that this board is two-sided and has numerous vias, building it at home may be a little harder than the ususal. If you want, you can get professional PCBs from my online store. The PCBs from my store, however, are a little older than the one above. I've had a huge quantity produced with a small mistake: The 5 volts supply from the USB bus does not reach the regulator!

In order to correct this, a small wire has to be installed on the bottom side:
Correction

Correction


goto top Up


Firmware [hide]
Here is the hexfile which must be programmed into the Atmega8: gc_n64_usb-1.2.hex

The fuses settings for this projet are: high_byte=0xc9 low_byte=0x9f.

For details about how to program an AVR, please visit my AVR programming page.


Source code:
The source code is available under the Objective Development license (modified GPL). Read License.txt for more information. The project compiles with avr-gcc. gc_n64_usb-1.2.tar.gz

Old versions::
gc_n64_usb-1.1.hex
gc_n64_usb-1.1.tar.gz
gc_n64_usb-1.0.hex
gc_n64_usb-1.0.tar.gz

goto top Up


References [hide]
Technical informations concerning Nintendo 64 controllers:
http://www.mixdown.ca/n64dev/

Technical information concerning the Gamecube controllers:
http://www.int03.co.uk/crema/hardware/gamecube/gc-control.htm

The N64 controller pinout appears on the following pages:
http://www.hardwarebook.info/N64_Controller
http://www.fpga-games.com/n64tst.htm

goto top Up


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 :)

goto top Up


Copyright © 2002-2009, Raphaël Assénat
Trademarks used in this site are the property of their respectives owners.
Website coded withWebsite coded with vimLast update: May 17, 2009