What is it?
...a remake demake of Unreal Tournament, developed by Megga. Unlike the original, UT2600 was
developed for only one platform: the Atari 2600, hence the name.
The Atari 2600 (also known as VCS prior to 1982) is a home video console that was released in 1977. You probably have seen one and if you haven't, it suffices to say that this machine is why early video games are credited to be heavily blinking, epilepsy inducing beepfests. The limitations imposed by its technical specifications are such that for the remake of this classic first person shooter a whole dimension had to be dropped from the games presentation (namely the third one).
So what "minor annoyances" can one expect when creating a soundtrack for such a system?
#1: Limited voices
The Atari 2600 can output sound through its Television Interface Adaptor (TIA)-chip. This TIA can output two channels of audio simultaneously.
To be clear: we're talking one sound per channel as there is no way to mix multiple sources. At most you can only play two note chords by using both channels to play a different note on each. By playing these two notes, you have now exhausted the amount of available sounds for the duration of those notes.
Now to be honest, this limitation isn't too bad and actually quite interesting in that it challenges your creativity. How can you give the illusion of a drum part with kick, hi-hat and snare while at the same time playing a bass line and a melody ?
#2: Tunelessness
Long story short: it is not possible to use notes that sound in tune with their real life renditions. Due to the mere 5 bits available to define pitch, the resulting frequencies (in Hertz) are of insufficient resolution to be representative (also differing in accuracy between PAL and NTSC systems). To make matters (even) worse, the notes are also out of tune with each other!!
This limits the amount of scales you can use as well as the amount of usable notes available within a scale. The best compromise is to find a set of notes that work well enough in relation to one another to keep a sense of musicality going on.
You can view this impressive map to get an idea of the available notes and by how many cents they drift off from their intended frequency.
#3: Memory space
The average Atari cartridge has 4K of ROM. That is a whopping 4,096 bytes. By contrast, 1 second of CD quality stereo sound requires 176,400 bytes!! Keep in mind that apart from the music, the actual game code also has to fit in that size. You'll actually end up using the term "squeezing" more often than "fitting" in this context.
It's not wholly bad, with a technique known as bank switching, up to 64K can be used in an Atari ROM, though it does complicate the programming of the software. For UT2600, seven additional banks are used, bringing a total of 32,768 bytes at our disposal. Luxury!
The music for UT2600 is not a pre-fabricated recording (e.g. "sample"), but rather a series of instructions to be synthesized by the TIA at runtime. As such, the size for a typical track is much more forgiving, averaging between 413 to 956 bytes (yes, you keep track of individual digits here...).
#4: Assembly code
Programming music from code isn't wholly bad either, but when you need to talk directly to the hardware instead of through the abstraction layer of a programming language, things get more interesting. But who needs interesting when you're trying to be creative and try out an idea within the already limiting constraints of the Atari 2600?
Instead of dealing with actual machine language, you can luckily program the 6502 microprocessor through assembly language. Also, a gentleman known as Paul Slocum has created a ready to use audio driver.
While Lady Luck seems to be on our side again, a typical musical composition ends up looking like the text in the following image:
Coming up with solutions
UT2600 is a labour of love and as is often the case with these projects, their development span usually lasts for a long period. With this comes the time to experiment.
After having had a lot of happy accidents using a text editor and listening to the results after compiling the code, the need for a more efficient workflow arose. The result is Slocum Tracker*, a web based frontend that provides a graphical user interface to sketch out ideas, which can be exported for use with Paul Slocums driver, and in turn be built into a binary.
*Slocum Tracker was split from the source code of Efflux which was under development at the same time allowing to create this "nice spin-off" quickly.
Soundtrack
Gameplay teaser
Release date?
UT2600 is feature complete: you can download binaries (or play online) on the archived UT2600 project page.
As you can deduce from the "archived" title, promotion for UT2600 has been dropped. The game is complete though a potential cartridge release allowing you to play on actual hardware is still under consideration.
A remastered version of the soundtrack has been released under the VECTOR_TABLE moniker.