------------------------------------------------------------------------
| UPGRADE: PLAY BUBBLES ON YOUR HACKED ROBOTRON/JOUST/STARGATE MACHINE |
------------------------------------------------------------------------
COPYRIGHT 1994
REVISION NUMBER: 1.0 (first public release)
REVISION DATE: 1 Jun 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:
-----------------
If you've seen my hack describing how to get Robotron, Joust, and
Stargate to play off the same set of Williams boards, you're probably
wondering if there aren't more games you can play...
Well, there's at least one -- Bubbles. Bubbles won't run on the hack
without an upgrade to the CPU board, but the upgrade is quick, easy,
and best of all, won't interfere with your older games.
So, if you haven't already modified your Joust or Robotron machine to
play Joust, Robotron, and Stargate, now's the time to hack it up. Then
turn back to this file to give yourself a fourth game, Bubbles.
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, hacked to play Joust, Robotron,
and Stargate as per my earlier conversion hack.
1 - Set of controls for Robotron. You should already have these due
to your previous hackery.
1 - 27512 EPROM at 450ns or faster
1 - 2732 EPROM at 450ns or faster
1 - 6514 CMOS RAM chip (these are rare, but a 2114 RAM chip will work too)
1 - 18-pin DIP socket
You will also need an EPROM programmer (or a friend who has one),
binary dumps of the Bubbles ROMs, and a soldering iron.
DETAILED INSTRUCTIONS:
----------------------
0) Read all of these instructions before you begin.
This is a fairly simple upgrade; it shouldn't take you more than an
hour from start to finish. Good luck!
1) Create the program ROM data files:
1.1) Read the Bubbles 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.
1.2) Create a dummy file of hex $FFs, 4096 bytes long.
Call this file "blank.fff".
1.3) Create the program ROM, using a 27512. The contents of the game
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 script will create the required file:
cat bubbles.01 > bubbles.512
cat bubbles.02 >> bubbles.512
cat bubbles.03 >> bubbles.512
cat bubbles.04 >> bubbles.512
cat bubbles.05 >> bubbles.512
cat bubbles.06 >> bubbles.512
cat bubbles.07 >> bubbles.512
cat bubbles.08 >> bubbles.512
cat bubbles.09 >> bubbles.512
cat blank.fff >> bubbles.512
cat blank.fff >> bubbles.512
cat blank.fff >> bubbles.512
cat blank.fff >> bubbles.512
cat bubbles.10 >> bubbles.512
cat bubbles.11 >> bubbles.512
cat bubbles.12 >> bubbles.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 wired up
an adaptor when you hacked your game to play Robotron, Stargate,
and Joust. Read in the Bubbles sound data to create "bubbles.snd",
the file for the new Bubbles sound ROM.
2) Fry up the ROMs:
2.1) Burn a 27512 with the contents of "bubbles.512".
2.2) Burn a 2732 with the contents of "bubbles.snd".
3) Okay, now you've got your chips, but you've got a bit more work left
to do before Bubbles will run. If you plug the chips in now and
power things up, you should see what appears to be a normal powerup
sequence, a couple of encouraging text messages, and then a brief
flash of color as the game resets itself.
So, what's the deal here?
[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...]
The deal is that Robotron and Joust used 4K of CMOS RAM, organized
in a 1K-by-4bit block. Bubbles, on the other hand, used the full
eight bits of the data bus, requiring a second CMOS RAM chip.
The cool part is that plunking in the second chip will make Bubbles
happy, but because none of the earlier games depended on the older
RAM architecture, it'll be completely transparent to them.
Once more, we go to the board and ask what we can use...
(Well, like what?)
Like the 6514 RAM that's already there. It's got the same pinout
as the new RAM chip we're going to install, so we can save ourselves
a lot of wiring by just sticking our new chip directly on top of the
old one.
(Yeah, but what about...)
...the upper 4 bits of the data bus? Okay, we'll bend those pins
away from the body of the old chip and hook 'em up to the data bus
somewhere else.
(Like where?)
Like on the 74LS245 that's about two inches away from our two RAM
chips. How's that?
(Sounds cool. When do we start?)
How 'bout now?
4) Safety precautions:
You're going to be soldering wires and a chip socket directly onto
some existing chips on your CPU board. For best results, you should
"tin the leads" of the both the wires and the pins of the existing
chips. This is best done by briefly touching the soldering iron to
the leg of the chip in question, and then touching some solder to
the now-heated chip leg.
The risk you run while doing this is that you may overheat the chip.
For maximum safety, do things one leg at a time, in random order
around the chip, and wait a few seconds between legs to let things
cool off a bit between tinnings.
Before you solder anything, you should remove the three batteries
from their clip; remember that messing around with powered chips is
usually a bad idea, and that the CMOS RAM is powered at all times by
these batteries.
As a final precaution, you may wish to remove the 6809 CPU chip and
the two video decode ROMs before you begin; the video decode ROMs
are difficult (if not impossible) to replace should they die, and
the 6809 is very close to the area of the circuitry on which you'll
be working. Better safe than sorry.
5) Identify your chips:
Locate chips 1C and 1G on your Robotron (or Joust) CPU board.
Chip 1C should be a 6514 (or 5114, or something ending in "14").
It will be found on the top row of chips, two chips to the left
of 1E, the 6809 CPU.
Chip 1G is the 74LS245; it will be found on the top row of chips,
immediately to the right of 1E, the 6809 CPU. The following diagram
should clear up any doubt:
______________________________________________________
| |
| ######### #### |
| _ _ |
| 1 1 1 1 | U | 1 1 1 1 [ ] |
| A B C D | | G H I J [ RAM - 1K through 1R ] |
| | 6 | [ ] |
| | 8 | |
| 2 2 2 | 0 | 2 2 2 2 [ ] |
| B C D | 9 | G H I J [ RAM - 2K through 2R ] |
| |___| [ ] |
| |
|___/\ /\ [ /\ ] _|
\ /\ /\/ \ /\ [/\/ \- 3K thr/\/\ 3R ]/
\/ \ /\/ \/ \/ \ /\/\/ \ /\/
\/ \/ \/
Tech Note: Here are the pinouts for the 6514 CMOS RAM chip at 1C.
They are identical in every way with a 2114 RAM chip,
so if you can't find a 6514, don't worry; a 2114 will
do just fine.
__ __
A6| U |+5V
A5| |A7
A4| |A8
A3| 6 2 |A9
A0| 5 1 |I/O1
A1| 1 1 |I/O2
A2| 4 4 |I/O3
!CS| |I/O4
GND|_____|!WE
5.1) Wire up the socket.
Take an 18-pin DIP socket and bend pins 11 through 14 out at
a right angle. These pins will eventually carry the upper four
bits of the data bus to the chip.
The other pins should all be soldered directly onto the existing
chip at 1C on the CPU board. When you're done, you should have
something like this when viewed from the air:
LEGEND:
-------
. = empty space on motherboard
C = 6514 CMOS RAM beneath empty socket
- = bent pin from 18-pin socket and associated wire
. . . . . . . . . .
. . . . . . . . . .
. . . . . .
. 1 . . 18 . . .
. C C . . .
. . C 6 C . . . .
. . C 5 C . . . .
. . C 1 C . . . .
. . C 4 C--- . .
. . C C--- . .
. . C 1 C--- . .
. . C C C--- . .
. . C C . . . .
. . . . . . . . . .
. . . . . . . . . .
From the side, it should look like this:
LEGEND:
-------
= = motherboard material
# = body of 18-pin DIP socket
| = uncut pins
x = the stub of the cut pin
; = the end of a bent pin, pointing towards the viewer.
################### < body of 18-pin
################### < DIP socket
! ! ! ! ! ! ! ! !
| ; ; ; ; | | | | < pins 11-14 bent at right angles
| | | | |
| | | | | < remainder of pins connected
| | | | | < directly to legs of 6514 chip
.-|---------|-|-|-|-.
| | _ _ _ _ | | | | | < body of 6514 chip
| V V V V V V V V V | < wide part of 6514 pins
`-|-|-|-|-|-|-|-|-|-' < skinny part of 6514 pins
==================================< PCB material
' ' ' ' ' ' ' ' ' < solder behind motherboard
5.2) Connect the socket to the data bus.
The four bent pins of the socket you just glommed onto the 6514
at location 1C will carry signals D4 through D7. You can get these
signals from the 74LS245 at location 1G.
Connect four thin wires directly to pins 6 through 9 of the 74LS245
at 1G. Connect these four wires to the four bent pins of the socket
you installed in step 4.1) as follows:
.----------.
| DATA BUS |
|----------------------------------------------------------------.
| 1C14 - 1G6 | D4 |
| 1C13 - 1G7 | D5 |
| 1C12 - 1G8 | D6 |
| 1C11 - 1G9 | D7 |
`----------------------------------------------------------------'
When you're done, your modified CPU board should look like this:
LEGEND:
-------
. = empty space on motherboard
C = 1C - 6514 CMOS RAM beneath empty socket
G = 1G - 74LS245
x = unrelated chips (included for reference only)
- = bent pin from 18-pin socket (and associated wire)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . 20 .
. 1 . . 18 . . . . . . . . . . . . . . . . . G G .
. C C . . x x . . . . . . . . . . . . G 7 G . .
. . C 6 C . . . x 1 x . . . x x . . G 4 G . .
. . C 5 C . . . x D x . . . x x . . G 2 G . .
. . C 1 C . . . x x . . . x x . . G 4 G . .
. . C 4 CG 5 G . .
. . C CG G . .
. . C 1 CG 1 G . .
. . C C CG G G . .
. . C C . . . . . . . . . . x x . . G G . .
. . . . . . . . . . . . . . . . x 1E - 6809 x . . . . . . . .
. . . . . . . . . . . . . . . . x CPU x . . . . . . . .
. . . . . . . . . . . . . . . . x x . . . . . . . .
6) Regression test:
You've done all the wiring, but before we go any further, let's make
sure that we haven't damaged anything in the process.
Plug your modified CPU board into the harness and power up all three
games (Robotron, Joust, and Stargate). If everything works normally,
you can go for Bubbles in a few minutes.
If you notice problems, work backwards - disconnect the four wires
and see if that fixes things. If not, chances are you've either
shorted something out with a stray glob of solder, or you've gone
and fried the CMOS RAM or the '245.
If the game powers up, but behaves erratically, odds are the fault
lies with the CMOS RAM. If the game appears dead to the world (no
evidence of CPU activity whatsoever), it's the '245. Check for solder
globs first, and as a last resort, replace the chips.
The odds of problems arising from this procedure are slim, but you
always have to be careful when soldering directly to a motherboard.
If the three older games work fine, power back down and insert your
6514 or 2114 RAM chip, and swap in the Bubbles ROMs. Power up, and
verify that Bubbles now functions normally. If something goes wrong
here, it's almost certainly a bad solder joint - you haven't shorted
out anything vital (because the other games work fine), but neither
do you have good contact to the newly-expanded RAM on which Bubbles
depends.
Finally, when you have verified that Bubbles is running, make sure the
other three games function normally with the new RAM in the system.
There should be no problems with any of the four games at this stage.
7) Control panels:
Okay, so you can run Bubbles on your console, but how the heck do
you actually play the game?
Well, pretty easily. If you've hacked your machine to play Joust,
Stargate, and Robotron, you'll be pleased to note that Robotron is
almost 100% compatible with Bubbles. If you can live with starting
2-player games with the 1-player start button and vice versa, you're
done. If you're really feeling masochistic, you can build a quick
adaptor to swap pins 15 and 16 (the P1 and P2 start buttons), or
you can just use your Robotron panel as-is.
For the record, here are the pinouts of the two interface boards:
7.1) Robotron interface board pinout
1 - P1 fire 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
11 - P1 move up
12 - P1 move down
13 - P1 move left
14 - P1 move right
15 - 1-player start
16 - 2-player start
17 - P1 fire up
18 - P1 fire down
19 - P1 fire right
20 - GND
7.2) Bubbles interface board pinout
1 -
2 - P2 move up
3 - P2 move down
4 - P2 move left
5 - P2 move right
6 -
7 -
8 -
9 -
10 - GND
11 - P1 move up
12 - P1 move down
13 - P1 move left
14 - P1 move right
15 - 2-player start
16 - 1-player start
17 -
18 -
19 -
20 - GND
8) Usage instructions:
Use the hack just like you used your hacked board set for the
other three games; the modification is completely transparent
with respect to the older games. The only difference is that
you can now run four games in the cabinet instead of three.
If you've substituted a 2114 in place of a 6514 for the CMOS
RAM extension, I'd recommend *NOT* replacing the batteries, as
the 2114 may draw too much power and drain the batteries too
quickly to be of any practical value. I don't have any hard
data on this, as I've left the batteries out of my system from
the day I completed this hack. If anyone uses a 2114 with the
batteries, let me know how it turned out and I'll add your info
to this document.
TROUBLESHOOTING:
----------------
Safety Check:
- Check *EVERYTHING* for shorts, etc... before powering up. 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 five minutes you
spend now may save you hours of debugging later.
See section 6) for additional debugging tips pertaining to wiring and
solder shorts. Good luck!
- When switching between games, wait at least 10-20 seconds before
switching chips. The power supply can still supply enough power
to damage your chips if you yank 'em out too early. Yes, you could
always burn yourself another set, but why take the chance?
Changing the control panel adaptor before changing chips is a good
way to make this habit automatic -- by the time you've changed the
panel adaptor, it'll be safe to swap the EPROMs.
Sound Check:
- If you get no sound when playing Bubbles, check your ROMs. I've
seen at least one set of Bubbles ROMs that are incompatible with
one version of the Bubbles sound chip. Your mileage shouldn't vary,
but don't be surprised if it does.