Professional Documents
Culture Documents
STANDARD DISCLAIMER:
--------------------
The author hereby grants permission to reproduce and distribute this
document for personal use, subject to the condition that the document
(along with any copyright and disclaimer notices) is not modified in
any way. The opinions expressed within this document are those of the
author only and not necessarily those of the author's employer. This
document is provided for informational purposes only. Although the
author has made every effort to provide accurate information, he cannot
guarantee the accuracy or usefulness of any of the information contained
herein due to the complexity of the issues involved. The author takes
no responsibility for anything arising as a result of anyone using the
information provided in this document, and the reader hereby absolves
the author of any and all liability arising from any activities
resulting from the use of any information contained herein.
GENERAL OVERVIEW:
-----------------
Okay, so there's been a lot of talk among us collectors about what
can and cannot be done with Williams games. The theory has been
discussed; now it's time for some application.
What we want to do is get three Williams games to play within the
same cabinet. What we don't want to do is hunt for any new hardware.
We look at the Williams games out there, and note that Robotron and
Joust use common parts, except for the ROMs. We note that Stargate's
ROMs will also work in a Robotron or Joust cabinet. Sadly, we note
that we can't run Robotron or Joust off a Stargate setup, but, as they
say, life is hard.
Swapping control panels isn't too bad, but we're really sick and tired
of swapping all 12 program ROMs (and the sound ROM) every time we want
to switch games. Wouldn't it be nice if all we had to do was use a
ZIF (Zero-Insertion-Force) socket and a single chip? It'd be cleaner,
easier, safer, and infinitely more convenient. Heck, it'd even be
quicker than swapping ROM boards. All in all, a real win.
At the end of this project, you'll have a funny-looking adaptor with
a ZIF socket that you can plug into your sound board, and a small
daughterboard (also with a ZIF socket) plugged onto your ROM board.
You'll have a few pairs of chips which you wan swap in and out of the
sockets to swap games, and as a bonus, you'll have a pile of spare
ROMs you can use for hacking.
As with my previous conversions, sections labeled "Tech Note" are
primarily for people who want to know *WHY* the hack works, and how
it was designed. If you're only interested in building the unit,
you can skim over these sections.
INGREDIENTS:
------------
1 - Working Joust or Robotron machine.
1 - Set of controls for whichever two (Joust/Robotron/Stargate) games
you don't have yet. How you obtain or create these is up to you.
3 - 27512 EPROMs at 450ns or faster
3 - 2732 EPROMs at 450ns or faster
1 - 7404 hex inverter chip
1 - 74133 single 13-input NAND chip (no, that's not a typo :-)
1 - 28-pin ZIF (Zero-Insertion Force) socket
1 - 24-pin ZIF (Zero-Insertion Force) socket
1 - 16-pin socket
1 - 14-pin socket
1 - 28-pin socket
3 - 24-pin sockets
1 - 4-pin .100" male strip header
5 - 12-pin .100" male strip headers
1 - 12-pin .100" female MTA plug
1 - 4-pin .100" female MTA plug
1 - chunk of blank breadboard, .100" spacing, about 2.5 inches square
You will also need an EPROM programmer (or a friend who has one),
binary dumps of Robotron, Joust, and Stargate ROMs, a wire-wrapping
tool and a soldering iron.
DETAILED INSTRUCTIONS:
----------------------
0) Read all of these instructions before you begin.
Steps 1) through 4) can be done at your desk in about half an hour.
Steps 5) and 6) are the toughest and will take a fair bit of
patience and care with the soldering iron; the EPROM socket
adaptors can be a real pain to build. Take your time and don't
be afraid to take breaks.
Steps 7) and 8) are a little less tedious, but should still be done
with care, as you'll be soldering directly to the circuit board in
step 8). Again, take your time and take some breaks.
Steps 9) and 10) are a nice wind-down and can be done in another
half-hour or so. The frustration level here will depend on your
luck in getting connectors that co-operate with your wire and tools,
but even the most persnickety combination of equipment shouldn't
take you more than an hour.
1.1) Read the Robotron, Joust, and Stargate ROMs and store the data
on disk. When reading ROMs, make sure your programmer is set
to the correct chip type (2732 or 2532). As long as you get
the data in, the rest doesn't matter.
Due to the multiplicity of ROM sets out there, I can't guarantee
that every ROM set will work with this hack. I can, however,
guarantee that "Solid Blue" ROMs will work for Robotron, and that
the "Solid Red" ROMs will work for Joust. I don't know about
which sets of Stargate ROMs will work, as I only had one set
(which had been burned by a third party) to work from.
As an added note, the "Solid Red" Joust ROMs are an older version
of the program. The "Pterodactyl Trick" will work on these ROMs.
1.3) Create the program ROMs, using 27512s. The contents of the three
games will be mapped onto each ROM as follows:
$0000-$0FFF = ROM 1
$1000-$1FFF = ROM 2
$2000-$1FFF = ROM 3
$3000-$1FFF = ROM 4
$4000-$1FFF = ROM 5
$5000-$1FFF = ROM 6
$6000-$1FFF = ROM 7
$7000-$1FFF = ROM 8
$8000-$1FFF = ROM 9
$9000-$CFFF = BLANK
$D000-$DFFF = ROM 10
$E000-$EFFF = ROM 11
$F000-$FFFF = ROM 12
Executing the following scripts will create the required files:
cat joust.01 > joust.512
cat joust.02 >> joust.512
cat joust.03 >> joust.512
cat joust.04 >> joust.512
cat joust.05 >> joust.512
cat joust.06 >> joust.512
cat joust.07 >> joust.512
cat joust.08 >> joust.512
cat joust.09 >> joust.512
cat blank.fff >> joust.512
cat blank.fff >> joust.512
cat blank.fff >> joust.512
cat blank.fff >> joust.512
cat joust.10 >> joust.512
cat joust.11 >> joust.512
cat joust.12 >> joust.512
cat robotron.01 > robotron.512
cat robotron.02 >> robotron.512
cat robotron.03 >> robotron.512
cat robotron.04 >> robotron.512
cat robotron.05 >> robotron.512
cat robotron.06 >> robotron.512
cat robotron.07 >> robotron.512
cat robotron.08 >> robotron.512
cat robotron.09 >> robotron.512
cat blank.fff >> robotron.512
cat blank.fff >> robotron.512
cat blank.fff >> robotron.512
cat blank.fff >> robotron.512
cat robotron.10 >> robotron.512
cat robotron.11 >> robotron.512
cat robotron.12 >> robotron.512
cat stargate.01 > stargate.512
cat stargate.02 >> stargate.512
cat stargate.03 >> stargate.512
cat stargate.04 >> stargate.512
cat stargate.05 >> stargate.512
cat stargate.06 >> stargate.512
cat stargate.07 >> stargate.512
cat stargate.08 >> stargate.512
cat stargate.09 >> stargate.512
cat blank.fff >> stargate.512
cat blank.fff >> stargate.512
cat blank.fff >> stargate.512
cat blank.fff >> stargate.512
cat stargate.10 >> stargate.512
cat stargate.11 >> stargate.512
cat stargate.12 >> stargate.512
Tech Note: The address space between $9000 and $CFFF is used
by the machine for I/O and other goodies, so you
can't use it for your own hacks. Sorry...
1.4) If your sound board uses 2532s (as it probably does), and you only
have 2732s to program for the missing games, you'll have to wire
up an adaptor later. You should, however, still read in the data.
This will give you the ".snd" files needed for the sound ROMs.
Note that Stargate actually uses 2K for its sound data, not 4K
like Robotron and Joust. Read in its data and save it to disk
as "stargate.raw".
NOTE: If you have a 4K data file for Stargate, examine it more
closely. You may find that only the first half of the file
contains data and that the second half is composed solely of
$FFs. If this is the case, you'll have to split off the first
2K of the file to create "stargate.raw". To create the 4K
"stargate.snd" file which will be used in this hack, you'll want
to have two copies of this data, one after the other. Execute
the following script to create "stargate.snd":
cat stargate.raw > stargate.snd
cat stargate.raw >> stargate.snd
You may now discard the "stargate.raw" file.
Tech Note: We're saving ourselves a lot of trouble; re-strapping
a sound board is a real pain. See the discussion on
the various strapping options in step 4) for more
details.
2.1) Burn a 27512 with the contents of "joust.512", another with the
contents of "robotron.512", and a third with the contents of
"stargate.512".
Tech Note: My EPROM programmer won't conveniently handle
anything larger than a 27512. Thus, I'm going
with the "switchable chip" design, rather than
trying to consolidate all three games on one
larger chip. If you've read through this file
and grok how this version of the hack works,
then you should be able to figure out how to
extend it appropriately. Have fun!
3) Okay, you've got your chips. Now we have to figure out when to
read data from the chips, and from what addresses we should do
the reading.
[Editor's Note: This whole section is basically an extended tech
note, but it's probably worth reading, just to
get a feel for what we're trying to accomplish
with all of this...]
Or not. Most of this has already been figured out for us by the
gang at Williams. The 74154 on the ROM board takes the four high
bits of a 16-bit address and turns it into sixteen separate signals.
Twelve of those signals are the !CS signals for the old ROMs, and
the other four can be ignored, as they don't have anything to do
with this hack.
(So, what can we use that's already on the board?)
Well, for starters, the 2732 (or 2532) sockets on the ROM board
are directly connected to the data bus, and are also connected to
the lower 12 bits of the address bus. If we construct our adaptor
wisely, that's a *big* pile of signals we won't have to worry about
on the 27512.
(Yeah, but what about...)
...the upper 4 bits of the address bus? According to the game's
schematics, these are sitting on the inputs of the aforementioned
74154. All we have to do is connect them to the high 4 bits of
the 27512's address pins, and voila -- our 27512 can be used to
access the entire ROM address space.
Okay, so when do we turn it on? Simple. We read from the 27512
by pulling its !CS pin low whenever we want to read. We *want*
to read whenever any of the *original* twelve !CS pins on the ROM
board is pulled low by the 74154. Confused yet?
(Yes!)
Okay, look at it this way. If all twelve !CS pins on the ROM board
are high, then all chips are deselected. Don't read anything. The
!CS on the 27512 should remain high.
If any of the twelve !CS pins on the ROM board are low (and by
definition, only one of them can be low at any given time), then
the game must be trying to read from a ROM chip, so !CS on the
27512 should be low.
If we call the !CS on the 27512 "!CS512", and the !CS signals to
the original ROMs "!CS1" through "!CS12", we see that:
(!CS512) == (!CS1) && (!CS2) && ... && (!CS 11) && (!CS12)
So, where do we get a 12-input AND gate? We could make one out
of a whole mess of 4-input AND gates, but there's an easier way,
namely the 74LS133. This chip is a 13-input NAND gate. A truly
odd duck in the TTL world, but downright invaluable in this
situation. Get the NAND of all 12 inputs (and a surplus "1"),
invert it to get the AND of the inputs, and you're done. Since
all the logic is done on one chip, and since the order isn't
important, the wiring will be a cinch!
5.1) Start by building the adaptor to allow you to plug the big EPROM
into one of the 2732 sockets on the ROM board. This will allow
us to use the address and data lines already present on the board,
thereby saving us some wiring work.
Tech Note: Here are the pinouts for a 2732 and a 27512. We want
to build something that will let us plug the 27512
into the game's existing 2732 socket.
__ __
A15| U |+5V
__ __ A12| |A14
A7| U |+5V A7| |A13
A6| |A8 A6| |A8
A5| |A9 A5| |A9
A4| |A11 A4| 2 |A11
A3| 2 |!CS A3| 7 |!CS
A2| 7 |A10 A2| 5 |A10
A1| 3 |!CE A1| 1 |!CE
A0| 2 |D7 A0| 2 |D7
D0| |D6 D0| |D6
D1| |D5 D1| |D5
D2| |D4 D2| |D4
GND|_____|D3 GND|_____|D3
Note the similarities between these pinouts. We can
ignore the !CS signal on the 2732, as we're creating
our own from the other logic, and we'll have to move
the +5V line. The rest of the pins can go straight
through to the chip; no wiring required.
We'll use strip headers for those "straight through"
connections, cutting off any lines we don't need, and
bending any lines we'd like to reroute away from the
chip, again simplifying the wiring job ahead.
5.2) Start by putting the 12-pin strip headers into both boards,
as shown below. Note that you want the longer pins of the
strip header to stick out of the top side of the boards, and
the shorter pins to be on the bottom.
Viewed from the top, the boards should look like this:
LEGEND:
-------
. = empty hole on breadboard
* = a pin from a 12-pin male strip header
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . * . . . . . * . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
The view from the side should look like this:
| | | | | | | | | | | | < pin
| | | | | | | | | | | | < pin
| | | | | | | | | | | | < pin
| | | | | | | | | | | | < pin
| | | | | | | | | | | | < pin
| | | | | | | | | | | | < pin
=========================================== < breadboard
* * * * * * * * * * * * < plastic surrounding pins
| | | | | | | | | | | | < pin
| | | | | | | | | | | | < pin
5.3) Cut off pin 20 (!CS) of the strip header; it won't be used
by anything in the circuit.
5.5) Using a soldering iron, tin the leads of the tops of the strip
header pins and the pins of a 28-pin socket. This will make
step 5.6) infinitely easier to perform, and make the final
product considerably more reliable.
5.6) Place the 28-pin socket on *top* of the strip header pins and
solder all connecting pins in place. Probably the best way
to start is to solder the four pins on the corners of the chip
first. This will hold things in place solidly enough to do the
rest of the soldering job. When you're done, finish up by
reflowing the solder on the four corner pins you started with.
When you are done, you should have something that looks like this:
LEGEND:
-------
# = body of 28-pin socket
! = pins from 28-pin socket
= = breadboard material
* = the plastic that surrounds the row of pins in the strip header
| = uncut pins from the strip header
x = the stub of the cut pin
. = the end of a bent pin, pointing towards the viewer.
########################### < 28-pin socket body
########################### < 28-pin socket body
! ! ! ! ! ! ! ! ! ! ! ! ! ! PIN 28 < pins from 28-pin socket
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
PIN 15 | | | | | | | x | | | . PIN 24
===========================================
* * * * * * * * * * * *
| | | | | | | | | | | |
| | | | | | | | | | | |
5.7) You're almost done. Now you want to wire up the last few pins to
complete the adaptor, specifically +5V line.
Going back to our side view, connect a thin wire to pin 28 of the
adaptor. Run it down to the bent pin 24 to supply +5V to the chip.
###########################
###########################
! ! ! ! ! ! ! ! ! ! ! ! ! !
| | | | | | | | | | ' PIN 28 < +5V to the 27512
| | | | | | | | | | /
| | | | | | | | | | /
| | | | | | | | | | /
| | | | | | | | | | ,
PIN 15 | | | | | | | x | | | . PIN 24 < +5V from the 2732
===========================================
* * * * * * * * * * * *
| | | | | | | | | | | |
| | | | | | | | | | | |
5.8) Complete the adaptors by plugging them into the two 24-pin sockets
you obtained earlier, as shown in the diagram below. (Due to the
limitations of ASCII drawings, we have not shown the wiring you
performed during step 5.7) above...)
LEGEND:
-------
# = body of 28- or 24-pin socket
! = pins from 28- or 24-pin socket
= = breadboard material
* = the plastic that surrounds the row of pins in the strip header
| = uncut pins from the strip header
x = the stub of the cut pin
. = the end of a bent pin, pointing towards the viewer.
###########################
###########################
! ! ! ! ! ! ! ! ! ! ! ! ! !
| | | | | | | | | | '
| | | | | | | | | | /
| | | | | | | | | | /
| | | | | | | | | | /
| | | | | | | | | | ,
PIN 15 | | | | | | | x | | | .
===========================================
* * * * * * * * * * * *
| | | | | | | | | | | |
####################### < 24-pin socket body
####################### < 24-pin socket body
! ! ! ! ! ! ! ! ! ! ! ! < pins from 24-pin socket
5.9) Cram the 24-pin ZIF socket into the top socket of the daughterboard.
You could have done this whole hack using the ZIF socket *as*
the top socket of the daughterboard, but ZIF sockets are expensive,
and there's no point in wasting a ZIF socket if you make a mistake.
Also, the pins on some models of ZIF sockets move fractionally
when chips are inserted and extracted. As the solder joints on
the adaptor are already of fairly marginal quality, we want to
reduce the risk of cracking over the long term.
At any rate, test-fit the completed board by plugging it into
one of the 24-pin sockets on the main board. It should insert
smoothly and seat firmly. Lay the partially-constructed board
aside and proceed to the next step:
6) Create the adaptor for the sound board:
Tech Note: Here are the pinouts for a 2532 and 2732. We want to
build something that will let us plug the 2732 into the
sound board's existing 2532 socket.
__ __ __ __
A7| U |+5V A7| U |+5V
A6| |A8 A6| |A8
A5| |A9 A5| |A9
A4| |A11 A4| |+5V
A3| 2 |!CS A3| 2 |!CS
A2| 7 |A10 A2| 5 |A10
A1| 3 |!CE A1| 3 |A11
A0| 2 |D7 A0| 2 |D7
D0| |D6 D0| |D6
D1| |D5 D1| |D5
D2| |D4 D2| |D4
GND|_____|D3 GND|_____|D3
Note the similarities between these pinouts. All
we have to do is move A11 over to the proper pin,
and bring a GND signal to the 2732's !CE pin (as
the chip should always be enabled).
Just as before, we'll use strip headers for the
"straight through" connections, cutting off any
lines we don't need, and bending any lines we'd
like to reroute away from the chip before rerouting
them.
6.2) As in step 5.5), use your soldering iron to tin the leads of
the tops of the strip header pins and the pins of a 24-pin
socket. This will make step 6.3) infinitely easier to perform,
and make the final product considerably more reliable.
6.3) Again, just as in step 5.6), place the 24-pin socket on *top*
of the strip header pins and solder all connecting pins in place.
When you are done, you should have something that looks like this:
LEGEND:
-------
# = body of 24-pin socket
! = pins from 24-pin socket
= = breadboard material
* = the plastic that surrounds the row of pins in the strip header
| = uncut pins from the strip header
x = the stub of the cut pin
####################### < 24-pin socket body
####################### < 24-pin socket body
! ! ! ! ! ! ! ! ! ! ! ! < pins from 24-pin socket
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | x | | | | |
| | | | | | | | | | |
PIN 13 | | | | | | | | x | | | < top of strip header
* * * * * * * * * * * * < plastic surrounding pins
| | | | | | | | | | | | < bottom of strip header
####################### < 24-pin socket body
####################### < 24-pin socket body
! ! ! ! ! ! ! ! ! ! ! ! < pins from 24-pin socket
6.4) This is the tricky bit. You want to connect pin 18 of the
*bottom* socket to pin 21 of the *top* socket. You also
want to connect pin 14 of the adaptor to pin 18 of the top
socket.
This step involves some very tricky and delicate placement of
wires, fingers, and a soldering iron. It can be by one person
without burned fingers, but a third set of hands will probably
make things go a little easier. Just be careful and it'll all
work out. (And come to think of it, it was harder to come up
with these ASCII pictures than it was to do the wiring :-)
What you will end up is something like this, when viewed from
the side:
####################### < 24-pin socket body
####################### < 24-pin socket body
~! ! ! ! ! ! ! ! ! ! ! ! < pins from 24-pin socket
|~|-|-|-|-' | | | | | |
| | | | | ----' | | |
| | | | | /| | | | |
| | | | | x | | | | |
| | | | | | | | | | |
PIN 13 | | | | | | | | x | | | < top of strip header
* * * * * * * * * * * * < plastic surrounding pins
| | | | | | | | | | | | < bottom of strip header
####################### < 24-pin socket body
####################### < 24-pin socket body
! ! ! ! ! ! ! ! ! ! ! ! < pins from 24-pin socket
Finally, just to exhaust the limitations of ASCII art, here's
an oblique X-ray view, with the body of the top socket cut away
and the body of the bottom socket eliminated.
Connect "A" (on pin 14 == GND) to "A" (pin 18 on the top socket),
and connect "B" (pin 18 on the bottom socket) to "B" (pin 21 on
the top socket).
# # # # # # # # # # # # < pin 1 on top socket
A /|||||||||||||||||||||||
/ ||| / / / / / / / / ||| < |||
/ /|||/ / / / / / / / /||| < ||| = top socket material
/ / ||| / / / / / / / / ||| < |||
/ / /|||/ / / / / / / / |||
* * * ||| * * * * * * * ||| < pin 1 on bottom socket
/ / / /|||/ / / / / / / |||
||| |||
|||||||||||||||||||||||
# # # # # # # # # # # # < pin 24 on top socket
/ / / / / / / / / / / /
/ / / / / A / / B / / /
/ / / / / / / / / /
/ / / / / B / / / / /
/ / / / / / / / / / / /
* * * * * * * * * * * * < pin 24 on bottom socket
/ / / / / / / / / / / /
You now have an adaptor which you can plug into any 2532 socket
and use a 2732 chip. If you're feeling masochistic, you can whip
up a few more of these; you never know when one will come in handy.
Tech Note: No, you can't use these to program 2532s in a burner
configured for 2732s, but you can use it to read 'em,
which is good enough for most purposes.
6.5) Cram the 24-pin ZIF socket into the top socket of your adaptor.
Once you've got the ZIF socket in the adaptor, and have verified
that you can indeed insert/extract chips with zero force, the
assembly is complete. Plug the completed assembly into the
empty 24-pin socket on the sound board which used to hold the
sound ROM.
We will now turn our attention back to our half-constructed
daughterboard...
10.3) Joust was the interesting case; I had two joysticks and plenty
of space on the Robotron panel, so I modified it to support Joust
directly by adding two buttons and fiddling with the internal
wiring. No swapping of panels required, just the insertion and
removal of an adaptor.
Yes, I cringed as the drill bit worked its way through the
original panel, but once the new buttons were installed, they
blended in nicely with the original panel. If I didn't know
better, I'd say they'd been installed at the factory myself.
I then added a piece of wire connecting the right stick's "UP"
switch to the right button, and another piece of wire connecting
the left stick's "UP" switch to the left button. Two more pieces
of wire to ground the buttons completed the circuit.
When playing Robotron, there would thus be two ways to move or
fire upwards; either by pressing up on the joystick or by pressing
the newly-installed "FLAP" button. Since buttons are not normally
used in Robotron, this mod is completely unobtrusive to the player
when in Robotron mode.
When in Joust mode, there would be two ways to flap; either by
pressing the "FLAP" button or by moving up on the joystick. It's
possible, while moving side to side, to activate this switch by
accident, but I've found it to be a relatively minor problem. If
you find it to be a pain, try arranging the wiring so that pulling
"DOWN" on the stick activates "FLAP" instead -- you might find it
more to your liking.
I then constructed an adaptor to connect the Player 1 control panel
harness to the game's interface board as follows, using the pinouts
described above in section 9).
10.4) Assuming you did the same thing that I did (namely adding a couple
of buttons to the Robotron control panel as duplicates of the "UP"
joystick directions), your adaptor should look like this:
Robotron Harness Connect to Interface Board
(Pin # and meaning) (Pin # and meaning for Joust)
1 (P1 fire left) ----> 2 (P2 move left)
2 (P2 move up)
3 (P2 move down)
4 (P2 move left)
5 (P2 move right)
6 (P2 fire right)
7 (P2 fire up)
8 (P2 fire down)
9 (P2 fire left)
10 (GND) -------------> 10 (GND)
11 (P1 move up) ------> 13 (P1 flap)
12 (P1 move down)
13 (P1 move left) ----> 11 (P1 move left)
14 (P1 move right) ---> 12 (P1 move right)
15 (1-player start) --> 16 (2-player start)
16 (2-player start) --> 15 (1-player start)
17 (P1 fire up) ------> 4 (P2 flap)
18 (P1 fire down)
19 (P1 fire right) ---> 3 (P2 move right)
20 (GND) -------------> 20 (GND)
Reality Check:
- Are you running off a Joust or Robotron CPU board? A Sinistar
or Bubbles CPU board will also work, but a Stargate CPU board
will *NOT* work unless it's been upgraded to at least the Joust
or Robotron level. ("WHAT THIS HACK ISN'T")
- Is your ROM board strapped for 2732s? (Step 4.1)
- Is your sound board strapped for 2532s? (Step 4.2)
Sound Check:
- If you get no sound when playing Stargate, verify that both halves
of the 2732 contain the same data; you should have two exact copies
of Stargate's 2K sound ROM in this chip.