Introduction: How to Build a Console Cable for the Universal PCB.

The Universal PCB (UPCB for short) project was started to allow a single game controller, especially fighting sticks, on as many different consoles as possible. Information about the project can be found on the following thread in the Shoryuken.com forums: Shoryuken.com

The game controller with a UPCB installed will have a single DB-15 female connector. Any supported systems being used will need to have a cable made for that console with a DB-15 male connector on the UPCB end, and the console plug on the other end. Because the PIC inside the UPCB will take care of all of the hard work, the cable will, for the most part, have no components in it; just wire.

This tutorial is designed to show you how to make any of the supported system cables for a UPCB controller, using the cable for the Super Nintendo Entertainment System as our example.

Step 1: Check .H File for Cable Information.

The main, and most current, archive for the UPCB project can be found in the first post of the UPCB thread on Shoryuken.com: Shoryuken.com

Download the latest version, and extract the .zip somewhere easy to reach. Inside the main directory is the source code for the UPCB project.

Each supported console system will have a separate .H and .C file for that module. The .C file contains the actual routines for that system. These will not be of help unless you just want to see how it works. The .H file contains a large amount of comments which detail how that system communicates, what type of connector it uses, and pinouts. The current section in the SNES.H file we will be listed below.

The main information we need right now is that there are no components needed. If any were, they'd be listed in the 'How to create a UPCB cable' section.

We'll be referencing this set of information frequently during the building of the cable, so don't be afraid if it seems a bit much. The comments describe the communication in great detail and can seem a bit confusing. Just ignore then as we focus on building the cable.

/* UPCB module for the Super Nintendo Entertainment System	Pinout and explanation from GameSX.com	For US SNES	 ________	|1234|567)	---------		Pin		Description	1		VCC	2		Clock	3		Latch	4		Data	5		N/C	6		N/C	7		GND	---Lengthy explanation of the protocol snipped from here---To make a UPCB cable for SNES, follow the mapping belowD-Sub 15 Pin		SNES Pin1					7 (GND)2					Low3					Low4					Low5					Low6					Low7					Low8					1 (VCC)9					NC - Not connected to anything10					High11					High12					2 (Clock)	13					3 (Latch)14					4 (Data)15					High

Step 2: Gather Tools and Parts

The tools required here are only the most basic of soldering tools.
- Soldering iron
- Solder
- Multimeter or Continuity tester

Other items can certainly help with soldering, but are almost never required for building a cable such as this:
- Flux
- Desolder pump or copper braid
- 'Helping Hands'

The parts we need are extremely simple
- Cable for the console cable to be created. This can come from a sacrifice controller or from a cheap extension cable for that system. The SNES cable used in this example came from a controller that would no longer register a 'down' direction, and was bought as a dead controller for $1 from a local game store.
- DB-15 male plug with solder cup connectors. Digikey Part No. 215ME-ND , or available at any good electronics store. The chance of it being a good electronics store is directly, inversely, proportional to the number of HDTV's they sell. This is one of the few electronics parts that you can still find at some Radio Shacks.
- DB-15 Hood. The one used in the pictures here is Digikey Part No. 972-15SY-ND , but there are tons of D-Sub hoods made. You can also find these for cheap in most good electronics stores. I highly recommend that whatever hood you get, make sure to get thumbscrews to go with.
- Wire. The wire used here is 30 AWG Kynar wire, available from Fry's. Just about any kind of wire can be used, but using a very small guage will make things much easier.

Components other than these are needed for some consoles, however they are the exception, not the rule. As of this writing, the only systems that require anything more than wire are the FM-Towns system (detailed in neogeo.h) and the 3DO system (detailed in 3do.h)

Step 3: Prep the Plug With Solder

All of the pines except one, pin 9, will have wires soldered to them. Since we only have two hands, it is easiest to fill the empty points with solder first, and then add the needed wires.

Step 4: Jumper the 'System Select' Wires

Every UPCB cable will have the main power (VCC) going into pin 8, and the main ground (GND) going into pin 1. There will also be a number of pins tied high or low (connected to VCC or GND) to tell the UPCB what system we are communicating with. These pins are the ones called High or Low in the 'How to make a UPCB cable' description in the console's .H file. Let's look at the one for the SNES, SNES.H

To make a UPCB cable for SNES, follow the mapping belowD-Sub 15 Pin		SNES Pin1					7 (GND)2					Low3					Low4					Low5					Low6					Low7					Low8					1 (VCC)9					NC - Not connected to anything10					High11					High12					2 (Clock)	13					3 (Latch)14					4 (Data)15					High

Before we start adding the system's cable, it is much easier to go ahead and take care of the system select lines now, without the massive console cable in the way. The only pins that say Low are pins 2-7. We are going to connect all of these so that they are electricly connected to what will be GND, pin 1. The only pins that say High are 10, 11, and 15. We are going to connect all of these so that they are electricly connected to what will be VCC, pin 8.

To do this, we are going to daisy chain a wire from one pin to the next. Using small (< 1") pieces of 30 guage wire with the ends stripped, this becomes rather easy compared to larger wires. In the picture you will see the first such connection, from pin 1 (GND) to pin 2 (Low). Next is an identical piece of wire connecting pin 2 to pin 3, another connecting pin 3 to pin 4, pin 4 to 5, pin 5 to 6, and lastly pin 6 to 7.

Next, we'll do the Highs. With another short piece of 30 guage wire, connect pin 8 (VCC) to pin 15 (high). Follow up with another wire connecting pin 15 to pin 11, and lastly one more wire connecting pin 11 to pin 12.

Now all of the pins that should be tied High or Low are connected to either GND (pin 1) for low, or VCC (pin 8) for high.

Step 5: Testing Part 1

No matter how good you are, or how certain your work, you always want to test early and often. If there are any failures in the soldering, it is much easier to correct now, before the large cable is in our way.

We will be doing continuity tests. If you're multimeter doesnt have a function for checking continuity, set it for checking resistances at its lowest setting. Just remember that infinite resistance means no connection, and almost no resistance means connected.

First, check the lines ties Low. For our SNES example, that would be pins 2-7. Place one probe on pin 1 (GND). Take the other probe and check pins 2-7 in order. Each one should show almost no resistance to pin 1.

Repeat for the High lines. For out SNES example, that would be pins 10, 11, and 15. Place one probe tip on pin 8 (VCC), and check the continuity with pins 10, 11, and 15. Each should show almost no resistance.

Lastly, check for shorts. Place one probe on pin 1, and the other on pin 8. There should be NO continuity. Infinite resistance. If these two lines are electrically connected, there is a short somewhere in your work. You MUST fix these before ever trying to use the cable. Using a shorted cable on a console may blow fuses, may cause fires, may fry your console and stick. It's bad, so fix it NOW.

If everything test correct, let's start work on the console cable.

Step 6: Pinout the Console Cable

Now we need to find out what wires in the console cable do what. Once again, we need information about the console cable from the appropriate .H file.

	 ________	|1234|567)	---------		Pin		Description	1		VCC	2		Clock	3		Latch	4		Data	5		N/C	6		N/C	7		GND

If you are using an extension cable, cut the extra connector off as far from the end that plugs into the console as possible. If you are using a sacrifice controller, cut the cable as close to the game pad as possible. In either case, we can as much cable length as we can get.

Remove some cable insulation from the now-exposed end. DO NOT REMOVE TOO MUCH. You want to remove about 1" of cable insulation; enough to make sure you can solder any of the wires to any of the DB-15 pins, and leave the wires short enough that the pull-stop on the D-Sub hood is grabbing onto the thick cable insulation.

We are looking for the individual wires that make up the cable, so we can identify what each does. In our SNES example, there are only five wires actually used by the controller, and only five wires in the cable.

Each wire should be a different color. We cannot trust the wire's color to tell us anything for certain about their function, even between otherwise identical padds. We must test them against the pinout in the .H file. For this, we need a multimeter/continuity tester.

For each wire in your cable, you need to know which pin on the console connector it goes to. The SNES was a little difficult because the contacts are far inside the connector. The picture below shows me using a bare piece of wire held by a probe hook. The contact inside the connector would touch the bare wire, which touched the hook. When the other probe touched the correct wire on the other end of the cable, I would know because the resistance would drop to almost nothing. This needs to be repeated for each pin.

The picture below shows the index card I used to write down the results. I copied the pinout and pin descriptions from the .H file. When I found a matching pin and wire combination, I would write down the wire's color next to the pin.

Now that we know what wire is what, we can begin connecting them to the UPCB plug.

Step 7: Connect Console Cable to Plug

The results of our last test should tell us which color wire has which function. For the cable I used, the end results were:
1 - White - VCC
2 - Yellow - Clock
3 - Orange - Latch
4 - Red - Data
7 - Brown - GND

Now we just to to see which pin on the DB-15 each one goes to. Again, that information is in the .H file. For brevity's sake, I've remove the ones we tied High and Low in the earlier steps.

D-Sub 15 Pin		          SNES Pin1					7 (GND)8					1 (VCC)12					2 (Clock)	13					3 (Latch)14					4 (Data)

So now we know where each wire goes.:

D-Sub Pin Color
1 Brown
8 White
12 Yellow
13 Orange
14 Rad

Only 5 more connections to solder. For each wire in the cable, strip a very small amount of insulation off of the end to expose the bare metal wire, and solder it into the proper D-Sub pin.

In the case of VCC and GND (D-Sub pins 8 and 1), there is already a small piece of wire in there. That's why you should use thin wire. Melting the solder and inserting the new wire should not dislodge the existing wire. If you need to hold them steady in the port while the solder cools, a pair of fine tipped needle nose pliers does the job very well. This is also why you want to daisy chain the system select wires; trying to keep 3 or more wires inside the port while the solder cools can be very frustrating.

Step 8: Testing Part 2

Now let's check all of the solder connections, as well as the wire inside the cable.

For each pin in the console plug, use a multimeter/continuity tester to check each wire and solder joint. One probe should be on the console plug end, while the other should be on the male pin of the D-Sub plug. Make sure they all work with almost no resistance between the two.

Next, re-check the system select pins. Keep one probe touching the VCC pin on the console plug, and use to other to test all of the pins that should be tied high. Make sure they all show almost no resistance. Move the probe to the GND pin on the console plug, and use the other probe to test each D-Sub pin that should be tied low.

Lastly, the dangerous short test. With one probe on the GND pin of the console plug, and the other probe on the VCC pin of the console plug, check the resistance. If the resistance is infinite, everything is good. If there is low resistance, you have a dangerous short and need to check and redo your soldering.

Once you have made sure there are no errors in your soldering, it is time to assemble the hood.

Step 9: Assemble Hood

Each hood is assembled differently, so I can't give specific instructions for every hood. I will describe the steps needed in general that should apply to every hood, and then step-by-step the assembly of the specific hood I used in this example.

The most important part of assembling the hood is to understand and use the 'pull-stop'. Every hood should have a method of holding on to the cable. You do not want to use this to hold onto the individual wires because they cannot take much strain without possibly being pulled out. The pull-stop on your hood is made to grab the actual cable where it is strongest, with all of the wires together and covered in strong insulation. In the case of any force pulling on the cable, the force is transfered to the hood and the DB-15 plug, instead of the weak solder points connecting the cable to the plug.

Most pull-stops use two small bolts and two small pieces of metal. The bolts are used to tighten the metal clamps around the cable. Once the clamps are on securely, they are placed in an area of the hood that prevents them from moving. This method seems to be the most common, and so I have picture of them below.

When securing the cable in the pull-stop, it is very important that it is secure! This is the single most important part of keeping the cable long lasting and useful. If the clamps trying to hold onto the cable seem too large to grip, please start wrapping the cable with electrical tape the make it thicker and easier for the clamps to grasp. If there is a pull-stop gasket on the controller you took the cable from, check to see if you can use it as well for the clamps to grab onto.

If the pull-stop is not securely holding onto the cable, the thin wires inside will break over time, come loose, short against other wires, fry your entertainment center, cause fires, and kill your cat. Do it right the first time.

The assembly of all of the hoods I have seen is fairly similar:
1. Place the DB plug into the little tabs that will hold it in place.
2. Place the pull-stop clamps on the wire and secure, and close as possible to where the pull-stops will be permanently at.
3. Put the pull-stop in its place and double check the clamps are on tight.
4. Place the mounting hardware such as thumbscrews in place.
5. Close the hood. Usually this means a couple of bolts, but the example hood here is a snap enclosure.

We will follow these steps exactly with our example hood.
1. Place the DB plug into the holding tabs.
2. Place the black pull-stop clamp over the wire, making sure it is gripping the insulated cable and not wires.
3. Add the securing metal piece and screw down tight.
4. Add thumbscrews
5. Close the hood.

Step 10: Testing Part 3

After all of that work, I know you are itching to plug the cable into your console and stick and get some gaming in. I understand. Don't. Setting everything into the hood could easily have knocked a wire loose, and shorts are bad. Let's take a moment with the multimeter to make sure everything is safe one last time before we plug it in.

The steps we take here are identical to 'Testing Part 2':

For each pin in the console plug, use a multimeter/continuity tester to check each wire and solder joint. One probe should be on the console plug end, while the other should be on the male pin of the D-Sub plug. Make sure they all work with almost no resistance between the two.

Next, re-check the system select pins. Keep one probe touching the VCC pin on the console plug, and use to other to test all of the pins that should be tied high. Make sure they all show almost no resistance. Move the probe to the GND pin on the console plug, and use the other probe to test each D-Sub pin that should be tied low.

Lastly, the dangerous short test. With one probe on the GND pin of the console plug, and the other probe on the VCC pin of the console plug, check the resistance. If the resistance is infinite, everything is good. If there is low resistance, you have a dangerous short and need to check and redo your soldering.

Step 11: Play

Now plug your new UPCB cable into your stick and console, and let's see it work!