


A direct-type SI device connects to the joybus or the external joybus and communicates directly with the PIF. *2 Controllers inserted into ports 0,1,2,3 are designated as Controllers 1,2,3,4. *1 PIF is the name of the IC chip which plays an intermediary role when the CPU accesses an SI device. These SI devices are attached using the joyport connector which is located on the back of the Controller. The joyport is the signal line located inside the Controller at the insertion site for other SI devices, such as the Controller Pak and the Rumble Pak. An example of an SI device connected via this line is the EEPROM inside the Game Pak. The external joybus is the name for the joybus signal line exiting from the Game Pak. The ports are designated starting from the left as **Port 0, Port 1, Port 2 and Port 3 *2. These devices are used by inserting them into the Controller Socket on the front face Examples of SI devices that connect via the joybus are the Standard Controller and the Voice Recognition System. The joybus is a signal line that directly connects the SI device to the *PIF. An SI device is the name for any type of peripheral device that is connected to the joybus, external joybus or joyport, and accessed by the PIF *1 via the serial interface (SI). 1.7 includes precautions when using SI devices.1.6 provides detailed explanations about the library functions common to all SI devices.1.5 explains the error codes that can arise when using the library functions.1.4 briefly describes the library functions used to control each SI device.1.3 explains the various types of commands used with SI devices.1.2 provides a brief explanation of each SI device.This section provides an introduction to SI devices. SI devices include the Standard Controller, Controller Pak, etc.

The next plans in the project are to interface with a XBox 360 controller on my laptop, and I’ve already gotten button presses on that controller to work with this microcontroller - but need to workaround some lag issues.An SI device is a peripheral device, which is connected to the N64 SI (serial interface). The microcontroller itself exposes a serial port over the USB connection, and I’ve been playing around with python code, sending individual button presses over serial, to the microcontroller, to the N64 console - Super Mario 64 has been a good test game! I attached the connectors to the cable with solder, used heat shrink wraps on the individual connections and wrapped those individual connections together using electrical tape. This is so that I could swap out the microcontroller more easily later on if I wanted to. Wiring the cable up to a microcontroller, I decided to use a JST SM connector (with one of the 4 wires cut out). Linked above, these N64 controller extension cables are cheap and can easily be found on. I decided to use an N64 controller extension cable instead of a real N64 controller, so that I did not have to destroy and real hardware. The GitHub project page contains a good overview of the protocol, and more detail can be found by searching for “n64 controller protocol” on the web.
#N64 CONTROLLER SERIAL PROTOCOL INTERFACE FULL#
The awesome work on the existing n64-controller-emulator project provided a full implementation for the n64 controller protocol already - so I didn’t have to do anything there (unfortunately).
