|
||||||||
|
||||||||
| Cette page est aussi disponible en français | ||||||||
| Project overview | [hide] |
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.Nintendo 64 and Gamecube controllers are excellent controllers which are quite appropriate for many PC games. The microcontroller firmware in this projet implements a standard HID joystick. This means that no special device driver is required. It works perfectly well under Linux and Windows with the operating system's drivers. 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. |
| Pictures | [hide] |
| 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. |
| Printed Circuit Board | [hide] |
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:
![]() 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: |
| Firmware | [hide] |
| Here is the hexfile which must be programmed into the Atmega8:
gc_n64_usb-1.1.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.1.tar.gz Old versions:: gc_n64_usb-1.0.hex gc_n64_usb-1.0.tar.gz |
| 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 |
| 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: January 26, 2008 |