Homebrew 2600

Return to Main

2600 Sound

The 2600 was not known for its sound. The sound capabilities of the 2600 are very limited to say the least. Essentially there are two sound channels, Left and Right, which could be independently set.

There are three parts to the sound that the 2600 sound synthesizer generates. The first is the waveform or tone. The shape of the wave determines what a sound will sound like. Normally when you are talking about synthesized sound, the common waveforms are square, sine, triangle, sawtooth and white noise. Unfortunately, the 2600 doesn't exactly let you specify the wave to use (that would be too easy). Instead you are presented with 16 different "noise-tone generators" that you can select from. The Stella documentation give descriptions such as "div15->4bit poly" 1 which may mean something if you are an audio engineer building sound waves from timers but is not very useful for normal people.

The best description of what type of sounds the chip can generate are from the %quot;Atari 2600 Music and Sound Programming Guide" 2 where he has the following table:

TIA codeNameDescription
1 Saw sounds similar to a saw waveform
3 Engine many 2600 games use this for an engine sound
4 Square a high pitched square waveform
6 Bass fat bass sound
7 Pitfall log sound in pitfall, low and buzzy
8 Noise white noise
12 Lead lower pitch square wave sound
15 Buzz atonal buzz, good for percussion

Selecting the waveform is simply a matter of setting the AUDC0 or AUDC1 to the appropriate wave number (0 through 15).

Waves need a frequency. The frequency is just how many times per second the wave is generated and is measured in Hertz (Hz). This sounds simple enough, but of course, the 2600 can't make things easy so it always starts with a frequency of 30KHz (30,000Hz) and divides that value by a number between 1 and 32. This is done by putting a value between 0 and 31 (one less than the amount you are dividing by) into the AUDF0 or AIDF1 registers.

Finally, there is the volume of the sound. Volume is pretty self explanatory. The 2600 supports 16 volume levels from 0 (no sound) to 15 (full sound). These are set by putting the value into register AUDV0 or AUDV1.

While setting three registers is simple enough making it easy to get sound, actually getting something that sounds good is a totally different matter. From playing many 2600 games it is appears to me that most programmers just played around with sound enough just to get something that sounded like the effect they needed (or borrowed code from other programmers) with very few games trying to push the sound to the limits. Even the games that wanted to push the sound capabilities did not have that much to work with.