Galaxian's digital oscillator explained.

The Namco Galaxian arcade PCB generates a few different types of sounds:

  1. Analog Fire sound.
  2. Analog Explosion sound
  3. Three Analog 'Rack Noises' (alien drones)
  4. Monophonic Digital Oscillator, which does the quirky intro tune and the aliens being destroyed.

The latter being digitally controlled and generated, it makes it a perfect candidate for the chipsounds bandlimited oscillator generators. The following explains how the digital part is generated:


First, a variable speed pulse is created by using two cascaded 4-bit counters (74LS161) (B). The input clock (2H @ 1.536MHz) is divided by a variable amount according to the last 8-bit value received from the 74LS273 (A)  flip flop. This is done by the Z80 CPU (which runs the game code) when it indirectly sets the !PITCH signal and the required pitch value into the "I/0 & Ram Data Bus" by writing to a specific address in external memory.

This pulse then drives pin 13 of a 74LS393 binary counter (C) which in turn outputs a 4-bit (16 step) binary pattern: 0000, 0001,0010,0011,(...),1111  or  0,1,2,3,(...),15 in decimal.
If those 4 output bits were to be sent to a 4-bit DAC, the result would have been a pretty standard saw waveform with no volume control. But this is obviously not what the Namco engineers wanted...

In this particular design, only 3 output bits of the '393 are used (QA, QC and QD, but NOT QB).
Resistors (D) (15k, 22k, 10k and 33k) are inserted onto the bits to create a weird R-2R 'esque ladder DAC. Also some 'components' of the signal are only added into the DAC depending on two extra
CPU controlled bits (Vol1 and Vol2).  Each driving two of the four available analog gates in the 4066 (E)


If you are following so far you understand that this can generate 4 different waveforms. Once you know this, its relatively trivial using voltage divider maths to figure out what those waveforms would look like.
I used an excel sheet for these maths:




From tests on my board the Vol1 bit is always 0 during gameplay, so logically only the [0,0] and [0,1] waveforms are actually ever used in the game. My guess its that vol1 never gets to be 1 to match the volume of the analog sounds this PCB also generates.

I successfully compared the two available waveforms with actual recordings of the board:



And they were included as oscillators definitions in chipsounds 1.6 under "05 - Arcade/Galax"

Comments