Hardware Differences Between Williams Games


The older Williams games (Defender, Stargate, Robotron, Joust, Bubbles and Sinistar) have very similar hardware inside.

Here is an overview of the hardware differences between these games:

Defender:

This is the oldest of these games and although it is very similar to the others, there are many significant differences. Most of the hardware addresses (such as PIA and watchdog) are at different locations. Also, many of the ROM images were bank-switched into the same memory locations.
The ROM board does not have the special chips that are required to run Robotron, Joust, Bubbles and Sinistar.

Stargate:

This board set is very similar to the later ones with only a few differences. The CPU board needs a slight modification in order to be compatible with the later ones. It also includes a small PCB that was used to allow a different type of SRAM to be used.
Also, the ROM board does not have the special chips required to run the later games.

Robotron and Joust

These board sets are almost identical. If you want to make a multi-game, you should start with one of these or (better yet) Bubbles.

Splat

This board set is very similar to Joust and Robotron, except that the ROM board uses Special Chip 2s instead of SC1s.

Bubbles

This board set is nearly the same as Robotron/Joust. The major difference is the extra SRAM included on the CPU board, making the battery-backed memory 8 bits wide instead of 4. This is easy to hack onto an older board, and is ignored by the other games.

Sinistar

This board set has many slight differences from the others.
The ROM board includes a blitter clipper circuit that stops the special chips from accessing the top part of the screen, and two SRAMs have been added in place of ROM $Dxxx.
The interface board is substantially different from the other games.
There is a second sound board wired in parallel with the normal one, used in the cockpit game for stereo effects. There is also a speech board wired to one of the sound boards.

So what does Sinistar use the SRAM at $Dxxx for? It's easy to use MAME to find out. Compile the source with the DEBUG option, and you can open a window to view memory and even set watchpoints to see when different memory locations are accessed or changed. The first half (approximately) holds the large and small fonts, uncompressed from the ROM. The second half holds the Sinistar itself. As parts are added or you shoot parts off, the image in the SRAM is changed, then blitted to the screen.