I'm writing an emulator, a bit of a way through and thought I'd write keep a development log of what I'm doing. First let's have a look at what I'm emulating, an early eighties Williams arcade game sound board.
I love William's arcade machines, in the early eighties these rock hard assault on the senses were utterly unlike everything else in the arcades and a beautiful blend of incredibly tasteful design decisions coupled with stone cold technical precision. Defender, Stargate, Robotron, all works of a team at the top of their game.
And in particular the audio is truly wonderful. Written by Eugene Jarvis the audio system lives on it's own board and the most mature aspect of the early Williams titles having been created for their pin tables a few years before. This is the little beauty:
So what is It
So how does it make those amazing sounds? Well it's a separate little single board computer around a Motorola 6808. It doesn't have any specific hardware but just a DAC to pump samples out of:
- 4K ROM - SFX code
- 128 bytes RAM - temp store
- 800khz 6808 - CPu
- 6820 PIA - IO to main game + DAC
That's pretty sweet but with only 4K of ROM there's no space to store any samples. There's not really enough space for small wavetables. So instead of playing samples it just makes them up as it goes along. The ROM has a bunch of little programs in that store values to the DAC as fast as they can. Simples.
So it's a simple system and a good one to start with for a nascent emulator coder like myself :)