Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
235 lines (169 sloc) 12.4 KB

RetroSpy

Download the latest RetroSpy release here.

This is a fork of NintendoSpy. NintendoSpy provides a general solution for live-streaming your controller inputs while speedrunning, or recording inputs for tutorials on how to perform tricks. It supports tying in to NES, SNES, Nintendo 64, and GameCube controller signals to get a live view of them, as well as any gamepad connected to your PC for use with emulators. XBox 360 controllers are supported with a skin out of the box, but other gamepads will require creating a skin. My fork allows for the support of Atari/Commodore joysticks, Sega Genesis controllers, SMS controllers, the Atari 2600 Omega Race Booster Grip, Turbographx-16/PC Engine controllers, Neo Geo controllers, Sega Saturn (both standard and 3D) controllers, PSX/PS2 controllers and 3DO controllers. It also adds full support for the Super Gameboy and the Gamecube Gameboy Player, which were not correctly supported in the original NintendoSpy. Lastly, it provides experimental support for the Atari Paddles, Atari Driving Controller, Atari Keyboard Controller, Atari Kid's Controller and the Atari Video Touch Pad.

The following documentation is in addition to the original NintendoSpy documentation found here. These instructions borrow heavily from evilash25's awesome NintendoSpy build guide, which can be found here. Documentation on experimentally support devices can be found here.

Documentation

The general design of RetroSpy involves splicing the controller wire, and attaching the appropriate signal wires to an Arduino. Then you just need to install the Arduino firmware packaged in the RetroSpy release, and run the viewer software.

Components and Equipment needed for all types of cables

  1. Arduino Uno. You might be able to find this cheaper elsewhere. A clone such as Funduino works just as well.
  2. USB cable to connect the Arduino to your computer

Specific Components and Equipment needed for a Nintendo cable

  1. Controller extension cable (NES, SNES, N64, or GCN)
  2. (optional) male/female connectors with 5 pins minimum for easy controller switching
  3. Wires to solder into the controller extension cable to go to the Arduino (the Arduino sockets are very small, so you will need some smaller gauge wire to fit, so it might be best to pickup some wire after you see the socket size)
  4. Wire cutters/strippers
  5. Exacto knife or box cutters
  6. Soldering iron and solder
  7. Electrical tape
  8. Digital multimeter or a cheap continuity tester

Specific Components and Equipment needed for a Genesis/SMS/Atari cable

  1. Atari Controller extension cable
  2. Wires
  3. DB9 Male to 2 Female Splitter Cable
  4. DB9 Male Breakout Board to Screw Terminals
  5. (optional) Shield Stacking Header Set for Arduino UNO R3
  6. Wire cutters/strippers

Specific Components and Equipment needed for a NeoGeo cable

  1. NeoGeo Controller extension cable or DB15 Male to Female Extension Cable
  2. Wires
  3. DB15 Male to 2 Female Splitter Adapter
  4. DB15 Male Breakout Connector
  5. (optional) Shield Stacking Header Set for Arduino UNO R3
  6. Wire cutters/strippers

Specific Components and Equipment needed for a PSX, PS2, Turbographx-16/PC Engine or Sega Saturn cable

  1. Controller extension cable (PSX, TG16/PC Engine or Sega Saturn)
  2. (optional) male/female connectors with 5 pins minimum for easy controller switching
  3. Wires to solder into the controller extension cable to go to the Arduino (the Arduino sockets are very small, so you will need some smaller gauge wire to fit, so it might be best to pickup some wire after you see the socket size)
  4. Wire cutters/strippers
  5. Exacto knife or box cutters
  6. Soldering iron and solder
  7. Electrical tape
  8. Digital multimeter or a cheap continuity tester

Software

  1. the latest Arduino software
  2. ClassicController Arduino Library
  3. Firmware for the Arduino
  4. PC software to connect to the Arduino and display the controller

#3 and #4 above are included in the release package of RetroSpy. The firmware is located in the firmware folder and is called firmware.ino. Just run RetroSpy.exe to launch the display software.

Instructions for NES, SNES, N64 or GameCube

For building a NES, SNES, N64 or GameCube cable follow the steps found here.

Instructions for PSX, Turbographx-16/PC Engine or Sega Saturn

The building of PSX, Turbographx-16 or Sega Saturn cable is very similar to building a Nintendo cable, so for the most part follow the steps found here. The pinout of the cables is as follows.

PSX and PS2

NOTE/WARNING: PIN 4 usually does not need to be connected, but I have encountered controllers that will behave oddly without it connected to the Arduino's GND.

PSX Arduino Digital Pin
1 6
2 5
3 Not Connected
4 Not Connected or GND
5 Not Connected
6 2
7 3
8 Not Connected
9 4

Turbografx-16/PC Engine

TG16 Arduino Digital Pin
1 Not Connected
2 2
3 3
4 4
5 5
6 6
7 Not Connected
8 Not Connected

Sega Saturn

Saturn Arduino Digital Pin
1 Not Connected
2 3
3 2
4 6
5 7
6 8
7 5
8 4
9 Not Connected

Instructions for Genesis/SMS/Atari cable

Wiring

It is possible to simply solder 9 jumper wires onto each wire of the Atari extension cable and be done, but since Genesis/SMS/Atari/etc use a standarded DB9 port we can build a cable with no soldering required.

  1. Take the Atari extension cable, wires, DB9 Breakout Board, DB9 Y cable and optional headers you have acquired and put them together in this configuration:

Hardware Setup

For Sega Genesis controllers you will need to make the following connections:

DB9 Pin Arduino Digital Pin
1 2
2 3
3 4
4 5
5 Not Connected
6 6
7 8
8 Not Connected
9 7

For Atari Joysticks, Sega Master System controllers and the Atari Omega Race Booster Grip you will need to make the following connections:

DB9 Pin Arduino Digital Pin
1 2
2 3
3 4
4 5
5 6
6 7
7 Not Connected
8 Not Connected
9 8

For 3DO controllers you will need to make the following connections:

DB9 Pin Arduino Digital Pin
1 Not Connected
2 Not Connected
3 Not Connected
4 Not Connected
5 Not Connected
6 2
7 3
8 Not Connected
9 4

Instructions for NeoGeo

Wiring

It is possible to simply solder 10 jumper wires onto each wire of the NeoGeo extension cable and be done, but since NeoGeo uses a standarded DB15 port we can build a cable with no soldering required.

  1. Take the NeoGeo extension cable, wires, DB15 Breakout Board, DB15 Y adapter and optional headers you have acquired and put them together in this configuration (ignoring the fact that the cable pictured is actually an Atari cable):

Hardware Setup

You will need to make the following connections:

DB15 Pin Arduino Digital Pin
1 Not Connected
2 Not Connected
3 2
4 3
5 4
6 5
7 6
8 Not Connected
9 Not Connected
10 Not Connected
11 7
12 8
13 9
14 10
15 11

Software and Setup

Once the wiring is done, hook everything up to your game system and computer, now for the easy part.

  1. Plug in the USB connector to your Arduino and PC.

  2. Install the latest Arduino software, download the Windows Installer option.

  3. Once installed, open the Arduino software, you should see "Arduino Uno on COMX" at the bottom right corner if everything is working. If not, you may need to restart and/or replug the USB connector.

  1. Install my Arduino ClassicControllerSpy library. Installation directions are here.

  2. Download and unzip the latest release of RetroSpy somewhere.

  3. Select File->Open and open the firmware.ino file from the firmware folder of the unzipped RetroSpy release.

  4. Now uncomment the option for the operation mode (which controller) you will use. Note I am using a SNES controller here. MODE_SEGA is for Genesis & MODE_CLASSIC is for SMS/Atari.

  1. Hit the upload button (right pointing arrow) located just under the 'Edit' menu, this will upload and run the software on the Arduino. It should look like the following image. Once successfully uploaded, you won't have to upload software again to the Arduino again unless you want to change controller modes.

  1. Run RetroSpy.exe.

  2. The selection here should be pretty straightforward, select the 'COMX' port that the Arduino is on, select the controller you are using, select a skin, and hit 'Go'. If everything is hooked up correctly you should see your controller and inputs displaying.