Introduction: How to Piggyback a Dreamcast Controller on a 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
This Instructable will go over the how's and why's of using multiple controller PCBs, walk through the simple method of connecting a Dreamcast controller to a UPCB using the guts from an Agetec arcade stick, the slightly more complicated but cleaner method I used, the construction of the UPCB cable for it, and lastly a few bonus options you have available.
Step 1: The How's and Why's
Before we get into the actual instructions, I want to take a moment to explain a bit of theory. I feel its best that if you understand how things work, you'll be better suited for building and troubleshooting those things. So before we get into how to make a piggyback PCB, I want to take a moment to explain how and why it works; we're gonna get a little electrical. Those of you who already have a decent understanding may want to correct some points like about electron holes; there is no need. The explanations given here are meant to be simple, and meant to apply to single power supply digital electronics, like video game console controller.
Other great guides to help you understand this stuff:
Don't get scared, but we need to cover something quick before we just into how this all affects you: 'voltage'. You've heard it, and may not be sure what it means. That's fine. It's just a build up of electricity, a bunch of electrons under pressure, ready to shoot out if it just had someplace to go. Someplace less crowded with electrons. High voltage: lots of electrons under lots of pressure. Low voltage, not so much. If you put the two together, those electrons from the High voltage will shoot out and intermingle with the Low voltage point, until they are all at the same pressure on both sides. Once they've evened out the pressure, there's nowhere else to go. Since they are at the same pressure, they are at the same voltage.
By itself, you can't tell how much pressure a spot it under; you have to have another spot to compare it to. That's why a voltmeter has two probes on it; one to test a point, and the other to say 'compare it to this spot'.
You've probably heard the term 'ground' before in dealing with sticks, but you may not understand what it really means. Ground is just an easy way of saying 'low voltage' or '0 volt reference point'. We're all familiar with 9 volt batteries, and how one end has the plus sign, and the other has a minus sign. If the positive side has 9 volts, what's it comparing it to? The minus side, a.k.a. Ground.
If you've looked up the pinouts of your favorite console controller online, you've probably seen one line with a certain voltage on it (+3.4 volts on Sony controllers, +5 volts on just about everything else. ) and another line marked Ground. So plugging in a controller to your console is just like plugging in a 5 volt battery to your controller, with Ground going to the minus side of the battery.
In everything we're going to do in this Instructable, when we talk about voltage, we are going to compare it to Ground. A low voltage is one really close to ground. A high voltage is one higher than ground.
We've all heard about how digital stuff is all 1's or 0's, even if we didn't really understand it. The idea is, when we check something, we're checking its voltage. It's either going to under a whole lot of pressure, or under almost no pressure. That's it. That's all we care about. We check that voltage, and we get our answer. High, or low.
The chips on your controller PCB, including the Universal PCB, have one wire for each switch in your controller: up, down, start, and every other direction and button you have. If it sees that line has High pressure, it knows that button has not been pressed. If it sees that line has low pressure, it know the button has been pressed.
But how does each line get high or low? We know that there is high pressure at the plus side of our battery. We know there is low pressure at the minus side, or ground, of our battery. So all we have to do is have the line connected to high when the button is not pressed, and have it connected to ground when the button is pressed. The line to the PCB is made high because its connected to the plus side of the battery with the resistor. When the button is pressed (closed), all of those high pressure electrons see a place to go, and shoot out to the ground connection. Because all of the pressure on the line is no longer there, the chip sees a low pressure and knows you pressed the button. Because we can connect that same ground to all of the switches, this setup is referred to as a 'common ground', because all switches has one line in common: ground.
This is how most controller PCB's work to see what you've pressed. The nice thing is we can check a line in multiple places. Checking the pressure on the line doesn't change the pressure on the line, so we can have different chips checking them all at once. As long as the PCB's all use a common ground (so it knows that high means not pressed, and low means pressed), we can have bunches and bunches of them all checking the line at the same time and working just fine.
Most chips will act funny if they aren't powered. They'll actually try and take power from any pins that have a high pressure on them. Since they're taking the power, the pressure on that line drops, and the other PCB will think you've pressed the button, even though you haven't. This is why making sure all of your PCB's are powered is important.
So, a quick recap:
1. Both PCB's must to powered, otherwise neither will operate.
2. Both the UPCB and the Piggybacked controller can check the pressure on a line at the same time with no problems.
So, all we gonna do is connect up the lines for the power, and the lines for each of the switches, and we're done. In the next step, we'll go over exactly where those lines are.
Step 2: Introducing the Piggyback Connector
First, let's get comfy with the piggyback connector on the UPCB. The first picture is straight from the schematic, and shows the labels for each of the pins.
Most of the labels should be very obvious. Up, Down, Jab, Strong, Fierce, these are all the lines for those buttons and directions.
VCC and GNG is our power and ground, respectively.
RB0 is another name for the Start button. Because we want to control the Start button for Tournament mode, we send it elsewhere. Don't worry about it, just remember RB0 is the Start button.
That leaves just two lines: DC_1 and DC_2. The actual data lines that talk to the Dreamcast will go through here. These two lines go to the 4066N chip on the UPCB. The 4066N acts like a traffic cop, directing traffic. When we know we need to use the piggybacked controller, the two DC lines are connected to the UPCB cable. If we're not using the piggybacked controller, they are disconnected from everything else.
The second picture shows a close-up of the connect that plugs into the piggyback connector, called an IDC connector. The ribbon cable that the IDC connector goes on is shown next to it. You can see the little teeth of the IDC connector; these will bite into the ribbon cable and connect to the metal wire in each strand. You'll see those teeth are staggered. The upper left most pin, DC_2, will bite into the blue strand. The upper right most pin (Ground) will bite into the green strand. The left hand side, second from the top, DC_1, will bite into the yellow strand, and so on, all the way down until the very last brown strand, which will connect to the lowest right pin, VCC.
So now we know which wire of the ribbon cable does what. Let's take a peek at the Dreamcast board and see what we're connecting them to.
Step 3: Introducing Your Dreamcast Controller.
The first picture shows the Agetec PCB exactly has I received it. A very big thanks to Urth who sold them to me and kept them in such great condition. The connectors that plug into the PCB are still in great condition and will make this job a whole lot easier.
These directions for using a Dreamcast controller will use this Agetec PCb as an example, but any Dreamcast controller will work. The Agetec is the perfect choice, based on size, mounting holes, and the easy to use connectors. In a pinch, any Dreamcast controller with six digital buttons will work fine. Official Dreamcast controllers and any other controller that doesn't have digital C and Z buttons on the face will not be covered here; take the time for find a controller with digital C and Z buttons.
Absolutely everything we need to connect to is available through those connector wires. If you're removing this PCB from a working Agetec stick, you should be able to identify all of the wires yourself, but I went ahead and wrote them all down for you.
The far left connector in the first picture is the buttons. From top (brown) to bottom (grey), the wires are:
1. X (Jab)
2. Y (Strong)
3. Z (Fierce)
4. C (Roundhouse)
5. B (Forward)
6. A (Short)
Left connector on the bottom is the stick connector. From left (black) to right (yellow), the wires are:
2. Up (brown)
3. Right (red)
4. Down (orange)
5. Left (yellow)
The right connector on the bottom is the stick connector. From left (white) to right (red), the wires are:
1. DC_2 (white)
2. Sense (green)
3. Ground (black)
4. VCC (blue)
5. DC_1 (red)
The Sense line we'll take care of in the UPCB cable, so clip it off. We now have three different wires, one on each connector, labeled Ground. We only need one, so cut and ignore the other two. Now we have 7+4+4=15 wires. Since we can ignore the Select line on the ribbon cable, we have 15 wires on the Agetec, and 15 wires in the ribbon cable. Hook them up, and you're done.
It is just that easy. The button and direction lines go to the matching button and direction lines on the Agetec. The power line's connected to the power line, the ground line's connected to the ground line, and the DC_1 and DC_2 lines are connector to their two wires on the Agetec.
The button and direction connectors can have the wire trimmed anywhere you want, but you should leave about 3" or more so you have plenty of wire to work with. The Dreamcast cable should be cut about 3" from where it plugs into the Agetec board; that gives us three inches to connect to the ribbon cable, and almost all of the cord and plug. Set the cord and plug aside, we'll need it to make the UPCB cable.
Step 4: Making Things Complicated
These few pages will describe how I wired up my piggyback controller. I didn't like the idea of soldering the ribbon cable's wires directly to the Agetec's wires; I wanted it removable and as clean as possible.
With a small piece of stripboard, or any other kind of prototyping PCB, I could mount another IDC header, and bolt it onto the Agetec, giving me a nice, solid place to connect the ribbon cable. Electrically, this is EXACTLY the same thing that connecting the Agetec wires directly to the ribbon cable wires. I'm just making it prettier.
Look through each of the image in order, and the note's will tell you what was done at each step.
Step 5: Bonus Round - Difficulty: Easy
Now that the hard part is over, there are a few things we can do to make the piggybacked controller even more useful.
For a Dreamcast, one of the obvious things we can do is include a memory card. No soldering needed, just plug that sucker in.
One recommendation I will make is to use a memory card, and NOT a true VMU. VMU's have a speaker that will buzz every time it is plugged in if the batteries are dead. Since changing those out from inside a stick isn't really an option, using a memory card instead of a VMU means no buzzing, and also less power draw from the console, since there's not LCD screen.
Step 6: Bonus Round - Difficulty: Medium
Since the Dreamcast doesn't have a Select button, we have one button that is completely unused. This and the next Bonus Rounds show you two ways to make the Select button usefull.
The first is using a memory card. Both Sega and Pelican made 4 page memory cards. Each has a small button on it to toggle between pages. There are some made that use a sliding switch to change banks; these will not work for these instructions. Only use a memory card with a button. I have used these directions on both Pelican memory cards, and the Sega memory card shown here.
Using a small screwdriver, open up the memory card to get a good peek at the board inside. You will see a small tactile switch, the one used to change banks on the card. Tactile switches work exactly like the microswitches in our arcade buttons; they connect two lines when pressed. In both of the four page VMU's I've worked on, they both work the same. When pressed, it will connect a line to Ground, exactly like what our Select button does. If we connect Select to whatever this other line is, we'll be able to change the VMU banks just by pressing the otherwise useless Select button.
Use your multimeter to figure out which line on the switch is Ground, and which is not. Connect the Select line from the ribbon cable to the line that is not, and you're done.
Step 7: Bonus Round - Difficulty: Moderate
Our last Bonus round again deals with the Select button.
Using a small piece called a diode, we can have one button press act as multiple button presses at the same time. For the kind of games I'm interested in, there's only one button combination that matters: Taunt.
In most Dreamcast fighting games, a taunt is done by pressing Short and Start at the same time. If you hit the Start a hair before the Short, you'll pause the game. At best, this is annoying, and at worst, it's a disqualification. Wiring up a taunt button that will never pause the game sounds perfect.
If we try to connect the Select button to both Start and Short with just wire, the Start and Short buttons will always be connected; you'll always taunt if you press Short OR Start. This is bad. By using two diodes, we can make Start and Short act as they should by themselves, and have the Select button press them both.
Diodes are neat little things that let electrons go through in only one direction. By using these, we prevent the electrons from connecting Short and Start directly. When Select is pressed, the electrons will be able to go through. Otherwise, Start and Short will remain separated, just how we want.
Just about any diode will work just fine for what we need. Get the cheapest, smallest ones you can, usually the N4148.
Every diode has a band around one end. This band tells you which way the electrons can go. Electrons can come out of the end with the band, but they can NOT go into the end with the band. We're going to connect them so the electrons can go TO the Select line from the Short and Start lines, but not the other way around.
On the Select line of the ribbon cable, you want to solder two diodes directly to it. Both of these diodes should have the band side connected to Select and each other. The other end of the diodes need to connect to the Short and Start lines, and you're done.
Remember, we want to connect them to the Short and Start lines, but they still need to connect their spots on the ribbon cable with their spots on the Agetec board.
You can use this Bonus Round along with the previous two, and have the Select button Taunt and change the VMU bank.
Step 8: UPCB Cable
DREAMCAST Looking at controller end that plugs into the Dreamcast ___________ | 5 3 1 | \ 4 2 / --------- Pin Description Standard Wire Color 1 Serial A red 2 +5v blue 3 GND black 4 sense green 5 Serial B white Line 4, 'sense', is connected to ground in the controller. The Dreamcast uses this line to detect when there is a controller in place. Since we can connect it to ground inside the UPCB console cable hood, there is no need to connect this to the UPCB itself. To make a UPCB cable for the Dreamcast Piggyback, match up pins like this: D-Sub 15 Pin GC Pin 1 3 (GND) 2 Low 3 Low 4 High 5 High 6 Low 7 Low 8 2 (+5v) 9 NC - Not connected to anything 10 High 11 High 12 NC - Not connected to anything 13 1 (Serial A) 14 5 (Serial B) 15 Low You'll want to also solder in the 'sense' line to any one of the 'Low' lines. I soldered mine into 15 along with the little jumper wire that connected it to the rest of the 'Low' lines.
Wiring up the Dreamcast Piggyback cable is no different from wiring up any other UPCB cable. Connect all of the High and Low pins, then connect the wires from the cable itself, and you're done. Please check out the other two Instructables on making a UPCB cable:
How to build a console cable for the Universal PCB.
Step 9: Finish
We should be all finished, but there is one test you should ALWAYS do after making changes, before plugging your stick into anything. Go ahead and connect the piggybacked controller to the UPCB via the ribbon cable and screw the UPCB cable to the back of your stick. Take a multimeter, and check the resistance between the VCC_TEST point and the GND_TEST point. The resistance should be infinite. If you see a low resistance between those two points, do NOT plug it into anything; you will fry your equipment. Find the cause of the short circuit and fix it before proceeding any further.
Once you are positive there is no short, plug it in and test it on your Dreamcast. Enjoy!