Is this hard? / Will it damage my stuff?
This will not modify your controller in any way, and the wiring is extremely simple, so if you do everything carefully there should be no risk to your controller, and you can unhook it at any time to use with a N64 console.
What you will need:
Arduino - $30
Processing 1.0 - free
Arduino Software - free
3 pieces of wire - free (I hope)
USB cable
Remove these ads by
Signing UpStep 1: Wiring the controller
The controller only uses three leads: +3.3V, signal, and ground.
Looking directly at the plug, ground is farthest left, signal is in the middle, and +3.3V is on the right. Using the wire, connect ground and +3.3V to the respective pins on the Arduino, and connect the signal lead to the Digital 2 pin on the Ardunio.
NOTE: If you have other code on your Arduino, you should disconnect the controller and upload the new code from the next page to the Arduino before powering it up with the controller attached.
Connect the Arduino
Connect the USB cable and the Arduino will have power.







































Visit Our Store »
Go Pro Today »




With the new version of Arduion-1.0 i did have to include the "import" stuff & as well take care of RXTX-2.2pre1 / RXTX-2.2pre2 (see below)
Minor Issue:
Has anyone made a patch yet for the controller's sensitivity? With a lot of games this is a HUGE problem.
Overall, great job throwing together the documentation
Fix the RXTX errors:
http://rxtx.qbang.org/wiki/index.php/Download
just pull back the latest RxTx 2.2 preview version & you should be good
Arduino code can be found here: https://dl.dropboxusercontent.com/u/8225581/N64_Arduino.rar
Project64 plugin source: https://dl.dropboxusercontent.com/u/8225581/ArduiN64.rar
If that doesn't work, you could try and find the old version of processing that I used to write this tutorial. I think it was 1.0
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.1-7
and something about a stale lock file, if anyone has any ideas, your help would be greatly appreciated :)
I tried changing #define N64_PIN 2 to #define N64_PIN 13, but this seems to do nothing; the controller does not work on pin 13 but it still works on pin 2.
The reason I ask is because I wan't to connect 4 controllers at the same time, allowing 4 people to control 4 controllers.
#define N64_HIGH DDRD &= ~0x04
#define N64_LOW DDRD |= 0x04
#define N64_QUERY (PIND & 0x04)
to 2 raised to the power of the pin that you want (so if I wanted pin 4, I would put 2^4 which is 16. Make sure the 16 is in decimal, not hex though.)
However, I want to add multiple controllers. I tried a few ways of doing this by changing numbers around values and stuff around, but what I have tried is unstable (player one always works, two sometimes, but can never go down, three is good 3/4s the time, and I have yet to have a problem with 4.)
Does anyone know how to make the code stably support at least 4 players?
However, I wanted analog stick support, so I wrote a plugin for Project64 and other emulators.
The only thing that's missing is Memory Pak, Rumble Pak and Transfer Pak support (like the Adaptoid has)
I have no idea how to implement either of them and there doesn't seem to be much of help on google, nor can I find the source code of the Adaptoid plugin/driver, so if anyone could point me in the right direction that would be great.
The source is very helpful, but I am running into problems when compiling it.
Thanks
Only one controller is supported at the moment, but adding support for more would be easy. Mempaks work however by letting the emulator handle them (but that means you can't use physical mempaks)
You will probably have to change the COM port in Controller.cpp to match your Arduino's COM port (it's hardcoded for COM4 at the moment, I would add a configuration dialog to choose COM port, but I'm not sure how to make dialogs in C/C++)
If it's an easy 3 wires to hook the controller up to an arduino, it's an easy 3 wires to plug it into your console.
Thanks woodmaster
"import java.awt.Robot;"
"import java.awt.AWTException;"
"import java.awt.event.ImputEvent;"
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2
error, disabling serialEvent() for /dev/cu.usbmodem621
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at processing.serial.Serial.serialEvent(Serial.java:238)
at gnu.io.RXTXPort.sendEvent(RXTXPort.java:772)
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1641)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 12
at java.lang.String.charAt(String.java:686)
at N64_Controller_mouse.serialEvent(N64_Controller_mouse.java:81)
... 8 more
any ideas?
http://rxtx.qbang.org/wiki/index.php/Download