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
|
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
|
|