Each dump contains the contents of RAM from $0000-BFFF, then zero padding from $C000-CBFF (I wish I could read the color palettes at $C000-C015!), then SRAM settings from CC00-CFFF. The files continue to $DFFF, but only Sinistar has RAM there. Interestingly, the Sinistar fonts are decompressed there from ROM.
Here's some info to decode the screen images in these dumps:
the screens are from $0000-97FF; $0000 is the upper left corner of the screen (lower left of Sinistar). There are 304 columns of 256 pixels. Since each pixel requires 4 bits, that's 152 * 256 bytes (=$9800 bytes total). 2 columns and 1 row are unused, leaving a screen size of 302x255.
To display the pictures correctly, you need a color palette. Unfortunately, the color register RAM cannot be read by the CPU. Luckily, with a little searching, palettes can be found in the ROM images and the RAM dumps. Each game has a default 'reset' palette that gets loaded very soon after a reset. These are all the same except for Defender, which creates a palette. (The Defender 'rug' memory test patterns are the same as the other games except for the palette.) Here are the palette locations:
Game RAM location ROM location Splat $9800 $DD2F Defender $A026 $F8BE Stargate $9C26 $1FD2 Robotron $9800 $DA51/$F60B Joust $A00F $E5FA Bubbles $99F1 $0D7F Sinistar $981E $50CB
NOTE: due to a logic error, the CMOS values at $CC00-$CFFF are not correct. The bookkeeping files have the correct default CMOS values except for Sinistar and Robotron.
Defender Bookkeeping/Game Adjustment RAM Dump
ROM Checksum Calculator for Williams games (2/7/95)
Pic of my Williams graphics dumper
Patcher for Joust, Robotron and Defender Patches
Patcher that uses the output of the DOS fc/b command as a patchfile
Patch to allow more than 5 high scores on Robotron
Original patch to use SC1s on Splat instead of SC2s (1995)
Optimized patch to use SC1s on Splat instead of SC2s (2015)
Bug-fixed Robotron patches for combined Blue ROM image
Bug-fixed Robotron patches for single Blue ROM image SB5
Bug-fixed Robotron patches for single Blue ROM image SBB
Patchfile to play 'pterodactyl-bug' version of Joust on WAC
Joiner for ROM images I used this on my Amiga. On the PC, just use the DOS command 'copy/b src1+src2+src3+src4 dest'
Uncompresser for Williams Arcade Classics ROM images
Better uncompressor by Jonathan Wolf (does Defender!)
Patches needed to run WAC games on a real Williams machine:
Bubbles and Sinistar: no changes required Defender: Offset $B0DE: 11 53 to AF B4, Offset $E7C5: 11 13 to 27 FC Defender II: Offset $13: 11 12 to 27 FC Robotron: Offset $D19F: 11 0E to 25 FA Joust: Offset $E0F2: 11 11 to 26 FC, Offset $E451: 10 B4 to 9E 25, Offset $E520: 95 to 96
Scott Tunstall has spent lots of hours disassembling arcade game code. If you'd like to show appreciation for this work by buying him a coffee: https://ko-fi.com/scotttunstall
He'd be equally happy if you donated to Parkinsons UK or Chest Heart And Stroke (CHAS) Scotland.
Michael Archer's Commando disassembly
Michael Archer's Commando GitHub
Scott Tunstall ripped the Galaxian sprites hover over a sprite to see the sprite number (or code)
Some projects that have used Scott's disassemblies:
Scramble 500 by jotd666 (itch.io) Amiga 500 port of Scramble
Galaxian DX (C64) by Arlasoft (itch.io) Commodore 64 Port of Galaxian
Retro Ports: Scrambled Priorities Neo Geo Port of Scramble
Retro Ports: Galaxian Part 1 - Introduction Neo Geo Port of Galaxian
Graham Toal is adding a lot of features to my old 6809 disassembler
6809dasm.c 6809 disassembler v1.6 (12/27/95)
Robotron blue data file (1/19/96)
Robotron orange/yellow ROM data file (10/7/95)
Joust green ROM data file (1/23/96)
My old RAM DUMP/ROM Switcher code (2/11/96)
My old RAM DUMP/ROM Switcher data file (2/11/96)
This code is my software ROM switcher code. It lets me select a game to play by hitting the 1 player start. Then I start the game by hitting 2 player start. If the auto-up/manual-down button is down, my code jumps to the RAM dump code, that dumps all memory from $0000-BFFF, $CC00-CFFF and $D000-DFFF. If that button is down and advance is also down, the CMOS load code is run. This reloads the CMOS RAM. If these 2 buttons and h/s reset is down, the CMOS trash code is run, which writes garbage to the CMOS RAM to make the game reset everything to defaults.
The Williams sound boards use the Motorola 6800 CPU. Here is a disassembler for that processor, based off 6809dasm.
6800dasm.c 6800 disassembler v1.0 (1/1/05)
Sinistar sound board data file