Phasor: An Atmel-flavored nostalgic demo

The demoscene is a computer art subculture specializing in producing demos, or audio-visual presentations. For the uninitiated, the demoscene first appeared during the 8-bit era, running on systems such as the Commodore 64, ZX Spectrum, Atari 800 and Amstrad CPC. In later years, increasingly sophisticated demos were coded for the Amiga, Atari ST and, yes, even DOS/Windows PCs.

Perhaps one of the most famous demos ever written was Second Reality by Future Crew. Coded for the Assembly ’93 demoparty, Slashdot voted Second Reality one of the “Top 10 Hacks of All Time” in 1999.

futurecrew

Although it is now 2013, some of us can’t help but get nostalgic for the demoscene days of yore. Fortunately, a talented coder named Linus Akesson (aka LFT) was kind enough to pen an old-style demo dubbed “Phasor” which runs off an Atmel ATmega88.

In the demo above, the microcontroller is clocked at 17.73447 MHz, exactly four times the frequency of the color carrier wave.

“In other words, four clock cycles per ‘color pixel,’ and in those four cycles one has to generate a sine wave with controlled amplitude, phase and constant offset,” writes Akesson.

“There is no chance of generating a smooth sine wave, because the CPU is limited to a maximum output resolution of one sample per clock cycle. Even this is not really feasible to do entirely in software, except for very basic visuals, such as a bunch of static color bars. But the effort can be cut in half thanks to a loophole in the PAL encoding scheme.”

Impressive, eh? Oh, and yes, here is Second Reality by Future Crew!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s