SYSFPGA - A Williams all-in-one Design & Multigame


System FPGA

After messing around with CPLDs to implement hardware compatible with the original Williams hardware, then building separate CPU, ROM and I/O boards, the next logical step was to integrate as much as possible into a single larger logic device. While retaining the overall design goal of an original CPU and keeping the display and hardware timings the same as the original equipment, otherwise I might as well just use an emulator...

So it was time to use an FPGA. Selection of a device was pretty easy as I wanted 5v tolerant inputs and the best device for my needs is the Xilinx Spartan II series. There's the downside of needing two supply voltages of 3.3v and 2.5v but that's only a PCB routing issue. The device used on these boards is an XC2S50, which is cost effective and fits all the logic which was required.

The end result is designed to support all the first generator hardware with the FPGA handling system clocking, display generation, support for the special-chip 'blitters', ( SC01 and SC02 ),  ROM/RAM/NVRAM address decoding and the PIA's.

WSF ( williams system FPGA ) supports all the first generation Williams hardware which shared a close common base. The supported games are Defender, Stargate, Joust, Robotron, Bubbles, Splat, Sinistar and Blaster. Although Blaster is more of a generation 1 "plus-a-bit" in terms of what the hardware can do.   Out of that list Sinistar is the oddball as it has a vertical screen, so it's included only to complete the set and for use in a vertical cabinet as a replacement for an original boardset. Although there's nothing to stop it being used in a JAMMA cab.

One of the design goals was to allow for the use of the SysFGPA as a straight replacement for an original boardset. To do this I've also built a couple of different JAMMA to Williams harness adapters specifically for the board. They plug into the original harness and seamlessly allow the use of the board in a dedicated cabinet. I've personally been testing in a dedicated Defender cabinet and, although I might be biased, I can't tell the difference.

Sound support is handled by an Atmel AVR emulating a 6800 cpu and the 6821 PIA from the original soundboard. The 6800 is a simple micro-controller so the AVR can handles op-code execution cycle-for-cycle identically to the original.  Plus there's a header for running an original soundboard in case someone really didn't want to go with the on board sound. The sound micro-controller also performs the CVSD decoding of the speech in Sinistar.

NVRAM is handled by an Ferroelectric RAM, it has all the characteristics of an SRAM but is non-volatile in nature and does not require a battery. It's an 8k x 8 device and a couple of other parts can work in it's place, the Dallas DS1225 or the Simtek STK16C68.
 

The Beta test board v0.01

SYSFPGA beta test board

 


Feature List

  • Runs original unmodified game code
  • Non-emulated. Game code runs on an original 6809 CPU
  • VGA monitor support - jumper enabled
  • Game selection menu can be disabled for boot to single game mode
  • No battery for non-volatile memory
  • Video blanking at side and top of screen ( no video noise )
  • 49 way joystick support ( Blaster & Sinistar only )
  • External soundboard support
  • Upright or Cocktail mode supported ( with flip screen )
  • JAMMA pinout connector + 2 addition buttons per player
  • Multi-WMS pinout option using only 6 button input
  • Separate Horizontal & Vertical sync outputs
  • Configuration options for Bubbles, Robotron & Splat joysticks
  • Hold 1P & 2P start button to return to game select menu
  • Optional dedicated return to menu button
  • Optional Sinistar support, enable or disable from menu
  • Only 5V power supply is required

 


System Options Setup

Setting the JAMMA Test switch at boot, or on the menu display, allows changing of the board hardware options.

What are the options ?

Option Name Value Function

 
Testing VGA mode

 BOOT TO: Game or Menu Select the game the hardware boots into.

After self test it can either display the selection menu or start a specific game up automatically.

 SINISTAR  ON/OFF Show Sinistar as an option on the menu
 MACHINE TYPE  UPRIGHT/COCKTAIL Set the type of cabinet the game is running in.

Sinistar and Blaster do not support a cocktail mode.
 HOLD 1P+2P TO MENU  OFF/1,2,4 seconds  How many seconds the 1P + 2P start buttons should be held down before the game restarts back at the selection menu
 SCREEN SAVER  ON/OFF After 10 minutes of inactivity on the menu, the game goes in to the running ostrich screen saver mode. 
Moving the joysticks or any button clears the screen saver
 REFRESH RATE  AUTHENTIC / NTSC 59.9HZ The authentic vertical refresh rate of the original hardware is 16.640 milliseconds, this gives a refresh rate of 61.0096Hz.  When running with a dedicated RGB monitor, or a VGA screen, this works without any problem. HOWEVER.. for some TV sets and video capture cards, they reject this frequency and either roll the display or display nothing !

This option adds an additional 1 video lines to the display, this results in a vertical sync of approximately 59.86Hz which is close enough to the NTSC frame to keep these displays happy.

HOWEVER.. this causes the fame time to be 0.38% longer, so the game runs just slightly slower. 

For normal operation this option should be set to "Authentic"

 BUBBLES JOYSTICK 1P STICK / 2P STICK Use either the left side, 1P joystick or right side 2P joystick for bubbles
 49 WAY JOYSTICK  ON/OFF Enable use of a 49 way joystick  with blaster or sinistar.
When OFF the behavior of a 49 way joystick is simulated using the standard 8 way stick and passed to the game.

When enabled the sysfpga expects a 49-way williams or Midway/Happ joystick to be connected to the pin header on the board.
ROBOTRON 1P FIRE BUTTONS / 2P STICK In upright mode player 2 stick is used for the up/down/left/right firing for Robotron.

Buttons mode, button 1,2,3,4 is used for firing.

This option has no effect in cocktail mode.
SPLAT 1P FIRE BUTTONS/ 2P STICK In upright mode player 2 stick is used for the up/down/left/right throw for splat.
HOWEVER this is only useful in a 1 player game as in a 2 player game their stick control the throwing (!) 

This option has no effect in cocktail mode

 


Game Specific Pinouts

This grid shows the JAMMA pinout of the board and the game controls.

  • In cocktail mode the option "ROBOTRON 1P FIRE" and "SPLAT 1P FIRE" have no effect. The player two inputs follow the normal input for.. player 2.
  • In upright mode most only Joust and Splat use player 2 inputs, the other games expect player 1 & 2 to use the same controls.
  • Sinistar & Blaster when the when 49 way stick is 'OFF' then the standard 8-way joystick input is translated into a 49 way directions for the game.

 


What's Next ?

  • Current status as of August 25th is the beta testers will be getting their boards
  • Wiring of JAMMA to Williams harness for use in a dedicated cabinet is being tested
  • Production boards will follow after the beta test completes

 


A few video captures

These videos are captured s-video output from one my RGB to NTSC video encoder boards using a generic Philips SAA7130 based PCI capture card.

Options Menu Stargate Blaster