Gaming Legacy – Technical Achievements
Dave Lowe talks us through a simplified explanations of some of the techniques he pioneered during the early Uncle Art days. As a machine-code programmer and a life long musician and composer, it was the combination of these two very different skills that made it possible to progress through the technologies of getting recorded music to play out of computers to where we are today, where the only limitation is imagination.
“To create a title piece like the one for the Starglider Loading screen, I composed and recorded a piece of music, usually to a 24-track analogue tape machine. The multitrack would be mixed to a stereo master and then digitised in either 16- or 8-bit mode
To get this to run on the Atari ST a lookup table had to be created that could scale the 16- and 8- bit samples to a 4-bit sample, i.e. 16bit binary number %1111111111111111 (FFFF hex 65535 dec. ) would be scaled to %1111 ( 0F hex /15 decimal). This 4-bit table was then used as the actual sample. It was 4-bit because the Atari ST had no sampling chip. The only sound facility consisted of a three channel sine sound chip that could send volume levels between 0 and 15 to the onboard speaker – 0 = off / 15 = loudest. Each level sent moved the cone a certain amount and produced a click. We realised that sending the scaled values from the newly created 4-bit sample to the volume control at the correct speed would move the speaker cone in a 4-bit representation of the initial 16- bit waveform. This only allowed a 15 second piece of music to be recorded due to the memory constraints of the 1040 ST. Once it was all in place we had a groundbreaking Starglider soundtrack.
When we came to Afterburner I created a composition that was recorded as a fifteen second piece with a full band, vocals etc. which was then broken up into separate sections that fitted together musically. By using a separate run time data table the processor could pick sections from the full sample ranging from demi semi quavers to full bars. This allowed me to create a continuous piece of music that could last an indeterminate length without repeating. The actual piece used lasted about 7 – 8 minutes, a huge improvement over the original Starglider technique. This process was used in several other games at the time.
On the question of in-game music/sfx, the practice was to utilise the computer’s interrupt system on the raster flyback. This was at 50 hz. (50 times a second). The processor could store its current memory address on the stack and then be diverted to an interrupt table. This would send it to its last position in the music data table and it would then resume processing the in-game music /sfx data, usually over three available channels. In those days all code was assembled, as it was the only way to achieve the speed and memory optimisation required.
When the sound processing was finished the processor would store its position in the sound data, retrieve its original address from the stack and return to the game code. The 50hz code had to be fast enough to trick the ear into believing the sound was continuous and not inhibit the game or graphics output.”