945 lines
39 KiB
Plaintext
945 lines
39 KiB
Plaintext
|
|
-----------------------------------------------------------------
|
|
| SWITCHABLE CONVERSION BETWEEN GRAVITAR AND BLACK WIDOW |
|
|
-----------------------------------------------------------------
|
|
|
|
COPYRIGHT 1993
|
|
|
|
REVISION NUMBER: 1.1 (first public release)
|
|
REVISION DATE: 17 March 1994
|
|
CREATED BY: Doug Jefferys
|
|
|
|
|
|
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:
|
|
-----------------
|
|
|
|
Once upon a time there was a game called Gravitar. Best described
|
|
as "Lunar Lander with guns", it was a good game, and lots of fun.
|
|
|
|
Once upon a time there was also a game called Black Widow. Best
|
|
described as "a cross between Robotron:2084 and Centipede, but played
|
|
on a vector monitor", it was also good, and lots of fun.
|
|
|
|
Black Widow boards have a cute little sticker on 'em. If you own
|
|
such a board, and you peel back this sticker, you'll be greeted with
|
|
a neat surprise: they're actually Gravitar boards in disguise.
|
|
|
|
Okay, so the control panels are a little different -- you might
|
|
want to add two four-directional joysticks to your Gravitar panel,
|
|
or you might want to add five buttons to your Black Widow panel,
|
|
but considering that you can save yourself the trouble of buying
|
|
a whole new cabinet, it's a small price to pay.
|
|
|
|
Now that you've gotten the control panels out of the way, there
|
|
still remains the subject of the boards. A simple ROM swap will
|
|
do the trick, but won't help you much if you want to switch back
|
|
and forth on a regular basis. You're looking at either a lot of
|
|
ROM swapping, or finding a new board to plug in. One method is
|
|
time-consuming and potentially damaging to the components, and
|
|
the other requires a considerable hardware investment.
|
|
|
|
Wouldn't it be nice if it were just a matter of flicking a switch
|
|
and swapping control panels? Why bother swapping an army of ROMs
|
|
when both games can be held on a single chip? People have designed
|
|
multi-carts for home video game systems before, so why can't the
|
|
same idea be applied here?
|
|
|
|
Unlike home games, most arcade games from the early '80s ran on
|
|
proprietary hardware architectures which were unique from game to
|
|
game. It turns out, however, that the multi-cart technology *can*
|
|
be applied in some rare instances. This is one of them.
|
|
|
|
At the end of this project, you'll have two small daughterboards and
|
|
a few small connectors. Plugging the daughterboards into sockets on
|
|
the main board and soldering the wires from the connectors onto some
|
|
test points (also on the main board) will give you the ability to
|
|
convert back and forth between the two games at the flick of a switch.
|
|
|
|
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 Gravitar/Black Widow machine (kinda helps :-)
|
|
1 - Set of controls for whichever game you don't currently own
|
|
1 - 27512 EPROM at 450ns or faster
|
|
1 - 27256 EPROM at 450ns or faster
|
|
3 - 7408 quad AND chips
|
|
2 - chunks of blank breadboard, .100" spacing, about 2.5 inches square
|
|
2 - 12-pin female .100" MTA connectors
|
|
2 - 12-pin male .100" strip headers
|
|
1 - 4-pin female .100" MTA connector
|
|
1 - 4-pin male .100" strip header
|
|
2 - 28-pin chip sockets
|
|
2 - 24-pin chip sockets
|
|
3 - 14-pin chip sockets
|
|
4 - 14-pin male .100" strip headers
|
|
|
|
You will also need an EPROM programmer (or a friend who has one),
|
|
binary dumps of the original Gravitar and Black Widow ROMs, a wire-
|
|
wrapping tool and a soldering iron.
|
|
|
|
|
|
DETAILED INSTRUCTIONS:
|
|
----------------------
|
|
|
|
0) Read all of these instructions before you begin.
|
|
|
|
Steps 1 and 2 can be done at your desk in about half an hour.
|
|
|
|
Step 3 is just background information, but you should probably
|
|
understand the material as the hack won't make much sense without
|
|
some background information.
|
|
|
|
Step 4 should take about half an hour.
|
|
|
|
If you get tired, *STOP* and take a break. Half an hour spent
|
|
lounging around the house and finishing off last night's pizza
|
|
will make you feel better and will save you at least two hours
|
|
of debugging time later :-)
|
|
|
|
|
|
1) Create the ROM data files:
|
|
|
|
|
|
1.1) Read the Gravitar and Black Widow ROMs (All 2532s except for
|
|
the one 2716) and store the data on disk. We will assume, in
|
|
this example, that you name the data files after the chips'
|
|
part numbers.
|
|
|
|
|
|
1.2) Create a dummy file of $FFs, 2048 bytes long.
|
|
Call this file "blank.fff"
|
|
|
|
|
|
1.3) Create the program ROM, a 27512. The contents of the Gravitar
|
|
and Black Widow program ROMs will be mapped onto the following
|
|
addresses relative to the 64K of memory available on the chip:
|
|
|
|
$0000-$0FFF = BLANK
|
|
$1000-$6FFF = GR 201..206
|
|
$6FFF-$7FFF = GR 206 (may only need to copy $6FFA..$6FFF)
|
|
$8000-$8FFF = BLANK
|
|
$9000-$EFFF = BW 101..106
|
|
$F000-$FFFF = BW 106 (may only need to copy $EFFA..$EFFF)
|
|
|
|
Executing the following script will create the required file:
|
|
|
|
cat blank.fff > 27512.dat
|
|
cat blank.fff >> 27512.dat
|
|
cat 136010.201 >> 27512.dat
|
|
cat 136010.202 >> 27512.dat
|
|
cat 136010.203 >> 27512.dat
|
|
cat 136010.204 >> 27512.dat
|
|
cat 136010.205 >> 27512.dat
|
|
cat 136010.206 >> 27512.dat
|
|
cat 136010.206 >> 27512.dat
|
|
cat blank.fff >> 27512.dat
|
|
cat blank.fff >> 27512.dat
|
|
cat 136017.101 >> 27512.dat
|
|
cat 136017.102 >> 27512.dat
|
|
cat 136017.103 >> 27512.dat
|
|
cat 136017.104 >> 27512.dat
|
|
cat 136017.105 >> 27512.dat
|
|
cat 136017.106 >> 27512.dat
|
|
cat 136017.106 >> 27512.dat
|
|
|
|
Tech Note: No, you can't use $0000-$0FFF for storing your
|
|
own hacks unless you want to modify the address
|
|
decoding considerably. This hack is designed to
|
|
use the game's on-board address decoding to do
|
|
most of the work, and the low $1000 bytes of the
|
|
27512 ($8000..$8FFF in Gravitar's memory map)
|
|
don't map onto any existing ROM space.
|
|
|
|
Tech Note: You probably *CAN* use $7000-$7FF9 (and $E000..$EFF9)
|
|
as blank space for your own hacks. I suspect that
|
|
only the last six bytes of this memory are required
|
|
to hold the 6502's reset vectors. No guarantees,
|
|
as I haven't had time to test this theory, but it's
|
|
a good guess.
|
|
|
|
|
|
1.4) Create the vector ROM, a 27256:
|
|
|
|
$0000-$07FF = BLANK
|
|
$0800-$0FFF = GR 210
|
|
$1000-$3FFF = GR 207..209
|
|
$4000-$47FF = BLANK
|
|
$4800-$4FFF = BW 107
|
|
$5000-$7FFF = BW 108..110
|
|
|
|
Tech Note: Again, since we're using the on-board address
|
|
decoding and chip selection signals, you can't
|
|
use the low $0800 bytes for storing your own hacks.
|
|
|
|
Executing the following script will create the required file:
|
|
|
|
cat blank.fff > 27256.dat
|
|
cat 136010.210 >> 27256.dat
|
|
cat 136010.207 >> 27256.dat
|
|
cat 136010.208 >> 27256.dat
|
|
cat 136010.209 >> 27256.dat
|
|
cat blank.fff >> 27256.dat
|
|
cat 136017.107 >> 27256.dat
|
|
cat 136017.108 >> 27256.dat
|
|
cat 136017.109 >> 27256.dat
|
|
cat 136017.110 >> 27256.dat
|
|
|
|
|
|
2) Fry up the ROMs:
|
|
|
|
|
|
2.1) Burn a 27512 with the contents of "27512.dat", and burn a 27256
|
|
with the contents of "27256.dat".
|
|
|
|
Tech Note: In case you're wondering why we didn't put the vector
|
|
ROMs and program ROMs onto the same chip, there's a
|
|
catch in the game's architecture: the machine has
|
|
separate address and data buses for program and vector
|
|
RAM and ROM. We are therefore forced to have two sets
|
|
of address and data lines, and consequently, two chips.
|
|
|
|
Tech Note: When we're done everything, flicking a switch will
|
|
pull the A15 line of the 27512 high or low, resulting
|
|
in data being read from the top or bottom (Gravitar
|
|
or Black Widow) halves of the chip. The same idea
|
|
will be applied to the 27256 and A14. It's now just
|
|
a matter of figuring out when to enable/disable the
|
|
chips' outputs -- address decoding.
|
|
|
|
|
|
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...]
|
|
|
|
Figuring out *when* to read data is fairly simple. The game PCB
|
|
has test points on all chip selection lines, marked !ROM[0..5] and
|
|
!VROM[0..3]. Figuring out *where* to read from is a bit more fun;
|
|
we will use the chip-selection signals to *deduce* the addresses
|
|
from which we're going to read our data.
|
|
|
|
The cute part of this technique is that we only have to deduce
|
|
a few address lines, as A0..A11 and D0..D8 are all supplied to
|
|
us from the existing chip sockets. This greatly reduces the
|
|
amount of wiring involved and, as an added bonus, allows us to
|
|
plug the "final product" into any socket we feel like.
|
|
|
|
So, our inputs are the !ROMx and !VROMx chip selection lines,
|
|
and our outputs are going to be a set of address lines above
|
|
A11, and one chip selection signal to enable/disable the main
|
|
chip. A little muddling with the schematics and game memory
|
|
map produces the following logic functions:
|
|
|
|
PGM: A12 = !ROM1 && !ROM3
|
|
A13 = !ROM0 && !ROM3 && !ROM4
|
|
A14 = !ROM0 && !ROM1 && !ROM2
|
|
!CS = !ROM0 && !ROM1 && !ROM2 && !ROM3 && !ROM4 && !ROM5
|
|
= A13 && A14 && !ROM5
|
|
|
|
VEC: A12 = !VROM0 && !VROM2
|
|
A13 = !VROM0 && !VROM1
|
|
!CS = !VROM0 && !VROM1 && !VROM2 && !VROM3
|
|
= A12 && A13 && !VROM3
|
|
|
|
What we will eventually want to do is hook up a bunch of 7408
|
|
quad-AND chips to evaluate these functions and pass their results
|
|
on to the ROMs.
|
|
|
|
There's one other catch. We're using 28-pin 27xx-series EPROMs,
|
|
and the board is set for 24-pin 25xx-series EPROMs. We have to
|
|
integrate an adaptor into the circuit in order to allow us to use
|
|
the address and data lines as they come from the socket without
|
|
doing extra wiring.
|
|
|
|
|
|
4) Here's where the fun begins. Build the adaptor to allow you to
|
|
plug the big EPROMs into the 2532 sockets on the two pieces of
|
|
daughterboard.
|
|
|
|
Tech Note: Here are the pinouts for a 2532, a 27256, and a 27512.
|
|
We want to build something that will let us plug the
|
|
27xxx-series chips into the game's existing 2532
|
|
sockets.
|
|
__ __ __ __
|
|
+5V| U |+5V A15| U |+5V
|
|
__ __ A12| |A14 A12| |A14
|
|
A7| U |+5V A7| |A13 A7| |A13
|
|
A6| |A8 A6| |A8 A6| |A8
|
|
A5| |A9 A5| |A9 A5| |A9
|
|
A4| |+5V A4| 2 |A11 A4| 2 |A11
|
|
A3| 2 |!CS A3| 7 |!CS A3| 7 |!CS
|
|
A2| 5 |A10 A2| 2 |A10 A2| 5 |A10
|
|
A1| 3 |A11 A1| 5 |!CE A1| 1 |!CE
|
|
A0| 2 |D7 A0| 6 |D7 A0| 2 |D7
|
|
D0| |D6 D0| |D6 D0| |D6
|
|
D1| |D5 D1| |D5 D1| |D5
|
|
D2| |D4 D2| |D4 D2| |D4
|
|
GND|_____|D3 GND|_____|D3 GND|_____|D3
|
|
|
|
Note the similarities between these pinouts. We can
|
|
ignore the !CS signal on the 2532, as it no longer
|
|
has any relevance to us, and we'll also have to move
|
|
the +5V and A11 lines. 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.
|
|
|
|
|
|
4.1) Start by putting the 14-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 14-pin male strip header
|
|
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . * * * * * * * * * * * * * * . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . PIN 15 .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . * * * * * * * * * * * * * * . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. PIN 1 . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
|
|
|
|
The view from the side should look like this:
|
|
|
|
| | | | | | | | | | | | | | < pin
|
|
| | | | | | | | | | | | | | < pin
|
|
| | | | | | | | | | | | | | < pin
|
|
| | | | | | | | | | | | | | < pin
|
|
| | | | | | | | | | | | | | < pin
|
|
| | | | | | | | | | | | | | < pin
|
|
=========================================== < breadboard
|
|
* * * * * * * * * * * * * * < plastic surrounding pins
|
|
| | | | | | | | | | | | | | < pin
|
|
| | | | | | | | | | | | | | < pin
|
|
|
|
|
|
4.2) Cut off pin 22 (!CS) of the strip header; it won't be used
|
|
by anything in the circuit.
|
|
|
|
|
|
4.3) Bend pins 23 and 26 at right angles. These will eventually
|
|
supply the circuit with its +5V power.
|
|
|
|
|
|
4.4) Also bend down pin 20. This pin will supply the chip with
|
|
the A11 signal from the 2532 socket.
|
|
|
|
When you have completed the preceding three steps, both boards
|
|
should look something like this when viewed from the top...
|
|
|
|
LEGEND:
|
|
-------
|
|
. = empty hole on breadboard
|
|
* = a pin from a 14-pin male strip header
|
|
x = a *cut* pin from the strip header
|
|
| = a *bent* pin from the strip header
|
|
|
|
. . . . . . | . . | . . | . . . . . . . . .
|
|
. . . . * * | * * | x * | * * * * * . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . PIN 15 .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . * * * * * * * * * * * * * * . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. PIN 1 . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
|
|
|
|
...and something like this when viewed from the side.
|
|
|
|
LEGEND:
|
|
-------
|
|
= = breadboard material
|
|
* = the plastic that surrounds the row of pins in the strip header
|
|
| = uncut pins
|
|
x = the stub of the cut pin
|
|
. = the end of a bent pin, pointing towards the viewer.
|
|
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
PIN 15 | | | | | . | x . | | . | | PIN 28 < pin (also bent/cut pins)
|
|
===========================================
|
|
* * * * * * * * * * * * * *
|
|
| | | | | | | | | | | | | |
|
|
| | | | | | | | | | | | | |
|
|
|
|
|
|
4.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
|
|
the next step infinitely easier to perform, and make the final
|
|
product considerably more reliable.
|
|
|
|
|
|
4.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
|
|
! ! ! ! ! ! ! ! ! ! ! ! ! ! < pins from 28-pin socket
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
PIN 15 | | | | | . | x . | | . | | PIN 28
|
|
===========================================
|
|
* * * * * * * * * * * * * *
|
|
| | | | | | | | | | | | | |
|
|
| | | | | | | | | | | | | |
|
|
|
|
|
|
4.7) You're almost done. Now you want to wire up the last few pins to
|
|
complete the adaptors, specifically the A11 line and the +5V lines.
|
|
|
|
Going back to our side view, we've labeled the appropriate pins
|
|
with "A" and "B". Connect the two "A" pins to connect A11, and
|
|
connect the three pins marked "B" to supply +5V to the chip.
|
|
|
|
###########################
|
|
###########################
|
|
! ! ! ! ! ! ! ! ! ! ! ! ! !
|
|
| | | | | | A | | | | < A = A11 to the 27xxx
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | A | B | | B | | < A = A11 from the 2532
|
|
PIN 15 | | | | | . | x . | | . | | PIN 28 < B = +5V from the 2532
|
|
===========================================
|
|
* * * * * * * * * * * * * *
|
|
| | | | | | | | | | | | | |B < B = +5V to the 27xxx
|
|
| | | | | | | | | | | | | |
|
|
|
|
|
|
4.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 the previous step)
|
|
|
|
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.
|
|
|
|
###########################
|
|
###########################
|
|
! ! ! ! ! ! ! ! ! ! ! ! ! !
|
|
| | | | | | A | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | A | B | | B | |
|
|
PIN 15 | | | | | . | x . | | . | | PIN 28
|
|
===========================================
|
|
* * * * * * * * * * * * * *
|
|
| | | | | | | | | | | | | |B
|
|
####################### | | < 24-pin socket body
|
|
####################### < 24-pin socket body
|
|
! ! ! ! ! ! ! ! ! ! ! ! < pins from 24-pin socket
|
|
|
|
Test-fit the completed adaptors by plugging them into the 24-pin
|
|
sockets on the main board. You will probably have to bend the
|
|
test points down to give yourself enough clearance. Just be
|
|
gentle when bending the test points out of the way and be sure
|
|
not to bend them down so far that they short out the traces
|
|
on the main board. When you are done, the test points should
|
|
probably be at about a 30-degree angle relative to the board.
|
|
|
|
|
|
5) Lay out the rest of parts as shown in the diagrams below.
|
|
|
|
The EPROM sockets will already be present from the adaptor work
|
|
you performed in step 4) above. You still have to add the 14-pin
|
|
sockets for the 7408 quad-AND chips and the 12- and 4-pin connectors
|
|
which will be used to connect the hack to the main board.
|
|
|
|
Now it's time to start wrapping!
|
|
|
|
The wrap lists will be in the form "Xn - Ym", where "X" and "Y"
|
|
denote components as depicted in steps 5.1) and 5.2) below, and
|
|
"n" and "m" denote pin numbers. Explanatory notes and/or signal
|
|
names are shown off to the right of the list.
|
|
|
|
For example:
|
|
|
|
E28 - X14 | +5V
|
|
|
|
means to connect pin 28 of the EPROM to pin 14 of the first 7408,
|
|
and that the connection carries +5VDC.
|
|
|
|
Remember that the wrap lists are from the point of view of the
|
|
pin numbers on the ICs -- i.e. that the diagrams shown above
|
|
depict the boards as shown from the *PARTS* side, not the *WIRING*
|
|
side. You will have to mentally flip things around if you want to
|
|
use the diagrams to do the wrapping.
|
|
|
|
This bears repeating, especially for inexperienced wire-wrappers.
|
|
Make absolutely sure that if you're connecting something to "the
|
|
second pin from the leftmost" on some chip on the diagrams above,
|
|
that you actually connect it to the second pin from the RIGHT on
|
|
the chip when you're looking at it from below. It's an easy
|
|
mistake to make, and it can be very frustrating.
|
|
|
|
If you've got small labels to stick on the bottom of your board
|
|
to prevent this kind of mistake, by all means use 'em.
|
|
|
|
Okay, you're ready to wrap. Grab your tools and wire, get comfy,
|
|
and go to work!
|
|
|
|
|
|
5.1) Program (27512) board:
|
|
|
|
LEGEND:
|
|
-------
|
|
. = empty hole on breadboard
|
|
P = 27512 EPROM
|
|
X = 7408 quad-AND chip
|
|
Y = 7408 quad-AND chip
|
|
C = 12-pin connector
|
|
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . P P P P P P P P P P P P P P . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
PIN 1 P P P P P P P P P P P P P P . . . .
|
|
. . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . C PIN 1 . .
|
|
. . . . X X X X X X X . . . . . C . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
PIN 1 X X X X X X X . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . Y Y Y Y Y Y Y . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
PIN 1 Y Y Y Y Y Y Y . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
|
|
.---------------------.
|
|
| POWER / MISCELLANY: |
|
|
|-------------------------------------------------------------------.
|
|
| P28 - X14 | +5V |
|
|
| X14 - Y14 | +5V |
|
|
| P14 - X7 | GND |
|
|
| X7 - Y7 | GND |
|
|
| P14 - P20 | !CE should be low; the chip should always be active |
|
|
| C2 - P1 | GAME_SELECT connects to A15 on the 27512 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
.---------------------.
|
|
| CHIP SELECT INPUTS: |
|
|
|-------------------------------------------------------------------.
|
|
| C5 - X2 | !ROM0 |
|
|
| C5 - X9 | !ROM0 |
|
|
| C6 - X10 | !ROM1 |
|
|
| C6 - X12 | !ROM1 |
|
|
| C7 - X4 | !ROM2 |
|
|
| C8 - X1 | !ROM3 |
|
|
| C8 - X13 | !ROM3 |
|
|
| C9 - Y12 | !ROM4 |
|
|
| C10 - Y5 | !ROM5 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
.--------------------------.
|
|
| INTERMEDIATE PROCESSING: |
|
|
|-------------------------------------------------------------------.
|
|
| X8 - X5 | !ROM0 && !ROM1 |
|
|
| X6 - Y2 | A14 == (!ROM0 && !ROM1) && !ROM2 |
|
|
| X3 - Y13 | !ROM0 && !ROM3 |
|
|
| Y11 - Y1 | A13 == (!ROM0 && !ROM3) && !ROM4 |
|
|
| Y3 - Y4 | A13 && A14 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
.------------------.
|
|
| ADDRESS OUTPUTS: |
|
|
|-------------------------------------------------------------------.
|
|
| X6 - P27 | A14 |
|
|
| X11 - P2 | A12 |
|
|
| Y11 - P26 | A13 |
|
|
| Y6 - P22 | !CS == (A13 && A14) && !ROM5 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
|
|
5.2) Vector (27256) board:
|
|
|
|
LEGEND:
|
|
-------
|
|
. = empty hole on breadboard
|
|
V = 27256 EPROM
|
|
Z = 7408 quad-AND chip
|
|
C = 12-pin connector
|
|
D = 4-pin connector
|
|
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . V V V V V V V V V V V V V V . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . . .
|
|
PIN 1 V V V V V V V V V V V V V V . . . .
|
|
. . . . . . . . . . . . . . .
|
|
. . . . . . . . . . . . . . . . C PIN 1 . .
|
|
. . . . Z Z Z Z Z Z Z . . . . . C . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
PIN 1 Z Z Z Z Z Z Z . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
. . . PIN 1 D D D D . . . . . C . . . . .
|
|
. . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . C . . . . .
|
|
. . . . . . . . . . . . . . . . . . . . . .
|
|
|
|
.---------------------.
|
|
| POWER / MISCELLANY: |
|
|
|-------------------------------------------------------------------.
|
|
| V28 - V1 | +5V |
|
|
| V1 - Z14 | +5V |
|
|
| Z14 - D3 | +5V |
|
|
| V14 - Z7 | GND |
|
|
| Z7 - D1 | GND |
|
|
| V14 - V20 | !CE should be low; the chip should always be active |
|
|
| C2 - V27 | GAME_SELECT connects to A14 on the 27256 |
|
|
| D2 - C2 | GAME_SELECT originates at the 4-pin connector |
|
|
`-------------------------------------------------------------------'
|
|
|
|
.---------------------.
|
|
| CHIP SELECT INPUTS: |
|
|
|-------------------------------------------------------------------.
|
|
| C5 - Z1 | !VROM0 |
|
|
| C5 - Z5 | !VROM0 |
|
|
| C6 - Z4 | !VROM1 |
|
|
| C7 - Z2 | !VROM2 |
|
|
| C8 - Z9 | !VROM3 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
.--------------------------.
|
|
| INTERMEDIATE PROCESSING: |
|
|
|-------------------------------------------------------------------.
|
|
| Z3 - Z13 | A12 == (!VROM0 && !VROM2) |
|
|
| Z6 - Z12 | A13 == (!VROM0 && !VROM1) |
|
|
| Z11 - Z10 | A12 && A13 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
.------------------.
|
|
| ADDRESS OUTPUTS: |
|
|
|-------------------------------------------------------------------.
|
|
| Z3 - V2 | A12 |
|
|
| Z6 - V26 | A13 |
|
|
| Z8 - V22 | !CS == (A12 && A13) && !VROM3 |
|
|
`-------------------------------------------------------------------'
|
|
|
|
|
|
6) Wire the connectors:
|
|
|
|
Congratulations! You are now the proud owner of two cute little
|
|
daughterboards with cute little connectors on 'em. Maybe now would
|
|
be a good time to turn them into something useful, eh?
|
|
|
|
For the easiest "fit" in terms of wiring, the vector daughterboard
|
|
should be plugged into location M7, and the program daughterboard
|
|
should go into E/F1.
|
|
|
|
Plunk your daughterboards into the suggested locations, and imagine
|
|
a single wire connecting the daughterboards to each other, and lots
|
|
of wires connecting the daughterboards to the nearby !ROMx and !VROMx
|
|
test points on the game PCB. Finally, imagine some wires going from
|
|
the vector daughterboard to a switch, either in your cabinet, or on
|
|
the control panel, which will be used to switch between the two games.
|
|
This gives you a rough idea of what the final setup will look like.
|
|
|
|
|
|
6.1) Program (27512) board:
|
|
|
|
One of your .100" female MTA 12-pin connectors should be labeled
|
|
as follows:
|
|
|
|
1 - GND
|
|
2 - GAME_SELECT
|
|
3 - +5V
|
|
4 - N/C (key)
|
|
5 - !ROM0
|
|
6 - !ROM1
|
|
7 - !ROM2
|
|
8 - !ROM3
|
|
9 - !ROM4
|
|
10 - !ROM5
|
|
11 - N/C
|
|
12 - N/C
|
|
|
|
GND and +5V are actually redundant -- they are artifacts of a
|
|
previous design, and can be included for completeness, or can
|
|
be omitted.
|
|
|
|
!ROM0 through !ROM5 should be filled with medium-length wires.
|
|
Insert one end of the wire into the connector, and make sure
|
|
you have enough length to connect to the appropriate !ROMx test
|
|
point on the game PCB.
|
|
|
|
GAME_SELECT should hold a long wire; long enough to connect it
|
|
to the other daughterboard in the vector ROM area of the main
|
|
board.
|
|
|
|
|
|
6.2) Vector (27256) board:
|
|
|
|
The other .100" female MTA 12-pin connectors should be labeled
|
|
as follows:
|
|
|
|
1 - GND
|
|
2 - GAME_SELECT
|
|
3 - +5V
|
|
4 - N/C (key)
|
|
5 - !VROM0
|
|
6 - !VROM1
|
|
7 - !VROM2
|
|
8 - !VROM3
|
|
9 - N/C
|
|
10 - N/C
|
|
11 - N/C
|
|
12 - N/C
|
|
|
|
GND and +5V are actually redundant -- they are artifacts of a
|
|
previous design, and can be included for completeness, or can
|
|
be omitted.
|
|
|
|
!VROM0 through !VROM5 should be filled with medium-length wires.
|
|
Insert one end of the wire into the connector, and make sure
|
|
you have enough length to connect to the appropriate !VROMx
|
|
test point on the game PCB.
|
|
|
|
GAME_SELECT should hold a long wire; long enough to connect it
|
|
to the other daughterboard in the program ROM area of the main
|
|
board.
|
|
|
|
|
|
6.3) 4-pin connector:
|
|
|
|
The final .100" female MTA 4-pin connector should be labeled
|
|
as follows:
|
|
|
|
1 - GND
|
|
2 - GAME_SELECT
|
|
3 - +5V
|
|
4 - N/C (key)
|
|
|
|
If you're using an external switch, GND and +5V *NOT* redundant
|
|
here; you'll need a way of turning GAME_SELECT high or low at
|
|
the flick of a switch.
|
|
|
|
If you're mounting the GAME_SELECT switch on the control panel,
|
|
however, you only need to wire up GAME_SELECT, as GND and +5V
|
|
are already present on the control panel.
|
|
|
|
See section 8) below for more details; you should decide which
|
|
choice you will take before completing this step, as the choice
|
|
affects the amount and style of wiring you'll have to do.
|
|
|
|
|
|
7) Wire up the test points:
|
|
|
|
|
|
7.1) Plug the 12-pin and 4-pin connectors into the daughterboards.
|
|
|
|
|
|
7.2) Tin the leads of the !ROMx and !VROMx wires coming from the
|
|
connectors. Also, tin the "leads" created by the !ROMx and
|
|
!VROMx test points on the main PCB.
|
|
|
|
|
|
7.3) Solder the !ROMx wires onto the !ROMx test points, and the
|
|
!VROMx wires to the !VROMx test points.
|
|
|
|
Check everything twice, and wiggle the soldered wires to make
|
|
sure your joints are solid. A broken solder joint here can
|
|
send a loose wire shorting across dozens of nearby PCB traces,
|
|
with potentially catastrophic results. If you've tinned your
|
|
leads properly and done a good job of soldering, you'll never
|
|
have to worry about it.
|
|
|
|
|
|
8) Connect the game selection switch:
|
|
|
|
First, decide what kind of a switch you want to use. You can either
|
|
mount a switch externally, connecting it to the game PCB through the
|
|
4-pin connector, or you can mount it on the control panel for a more
|
|
finished appearance.
|
|
|
|
|
|
8.1) External switch:
|
|
|
|
The 4-pin female connector in section 6.3) should have three
|
|
wires coming out of it; GND, +5V, and GAME_SELECT. Connect
|
|
these to a toggle switch such that one switch position forces
|
|
GAME_SELECT to +5V, and the opposite position forces GAME_SELECT
|
|
to GND. You're done!
|
|
|
|
|
|
8.2) Control-panel-mounted switch:
|
|
|
|
For maximum ease of use, and a lot less strain on the connectors
|
|
to boot, you don't have to hook your switch directly to the 4-pin
|
|
connector. Instead, hook things up directly to the game's wiring
|
|
harness and mount the switch on the control panel.
|
|
|
|
This is especially useful if you've added joysticks (or buttons,
|
|
depending on what you started with) to your existing control panel
|
|
to avoid the need for panel-swapping. If you're going to modify
|
|
your control panel, why not go all the way? A toggle switch mounted
|
|
directly below the P1 and P2 start buttons is easy to access and
|
|
gives your cabinet a finished, professional appearance.
|
|
|
|
If you decide to go this route, you only need the GAME_SELECT pin
|
|
on the 4-pin connector from section 6.3). Connect the wire coming
|
|
from the 4-pin connector to one of the unused pins on the PCB.
|
|
Then, add a pin to the main wiring harness to carry the GAME_SELECT
|
|
signal to the main control panel, the utility panel, or any other
|
|
area of your cabinet. If you use the control panel, for instance,
|
|
you only have one wire to worry about, as you can use the +5V (LED
|
|
driver) and GND lines already present on the panel connector to
|
|
hook up your switch.
|
|
|
|
Connect GND, +5V, and GAME_SELECT to your toggle switch such that
|
|
one switch position forces GAME_SELECT to +5V, and the opposite
|
|
position forces GAME_SELECT to GND. You're done!
|
|
|
|
|
|
TROUBLESHOOTING:
|
|
----------------
|
|
|
|
- When working directly the main PCB (wiring up the !ROM and !VROM
|
|
test points), be careful about static. If you've got an ESD-safe
|
|
workstation, use it. The probability of damaging your board while
|
|
soldering is low, but there's no point in taking unnecessary chances.
|
|
|
|
- Check *EVERYTHING* for shorts, etc... before powering up your
|
|
converted board. Go over it and look for little bits of solder
|
|
that went to the wrong place, strands of wire, *anything* that
|
|
could cause trouble. If you've got a multimeter with a continuity
|
|
checker, use it. The fifteen minutes you spend now may save your
|
|
boards later.
|
|
|
|
- The test points on the PCB are fairly tall. Once you've plugged
|
|
the hack into your board, you may notice that the test points come
|
|
into contact with the bottom of the daughterboards, either shorting
|
|
out pins, or pushing the daughterboards out of their sockets. As
|
|
you can probably guess, both of these possibilities are Bad Things.
|
|
|
|
If it happens on your hack, bend the test points down to about
|
|
a 45-degree angle. This will solve the problem. Just use gentle
|
|
pressure, and be careful not to bend the test points down all the
|
|
way, or you'll run the risk of shorting out the traces on the PCB,
|
|
which is an Even Worse Thing!
|
|
|
|
- Solder is brittle and can crack easily. If you've bent the test
|
|
points as described above, you might want to reflow the solder
|
|
joints connecting the wire to the test point, and the test point
|
|
to the PCB. You should also pay close attention to the quality
|
|
of the solder joints that form the connection between the various
|
|
layers of your adaptors, and be gentle when plugging in or removing
|
|
the daughterboards.
|
|
|
|
- When switching between games, power things off and wait for a few
|
|
seconds before flicking the switch. Switching "on the fly" will
|
|
confuse the hell out of the machine. In most cases, the program
|
|
will crash, leading to an immediate reset, but it's conceivable
|
|
that there are portions of code during which a switch could lead
|
|
to sufficient confusion to cause hardware damage. Why take the
|
|
chance?
|
|
|
|
Good luck building this gadget, and happy hacking!
|
|
|