Atari Asteroids like it's 1979

For several years now, I've wanted to duplicate the original vector-display Atari Asteroids on the Gameduino. There's something about the this early monochrome vector game that I find very pleasing. This Summer it all came together. I followed the MAME-to-oscilloscope instructions and got MAME built so it outputs a vector list.
The Asteroids hardware had a clean split: the CPU generated a list of line segments, and the CRT controller drew the segments. There's no sprites, background, or even colors to think about. Just a list of lines, each with an 8-bit brightness. Once I'd captured that it was just a matter of making some code to draw that vector list on the Dazzler.

Taking the line list and rendering them on the Dazzler gave something that immediately looked promising:
This image was deleted by MailChimp when they shut down TinyLetter.
The Atari's vector display technology was additive: the screen started off dark and the beam painted the phosphor. Places that got painted twice became twice as bright. (At least in principle; nonlinearities throughout the system make the perceived brightness curve more complicated.) The EVE can be set up to do additive blending, very like in OpenGL:

gd.BlendFunc(eve.SRC_ALPHA, eve.ONE)

This image was deleted by MailChimp when they shut down TinyLetter.
Note how the spots where the vectors meet are double-brightness from being painted twice.

It's looking a bit too flat and perfect for a CRT. So the next step is to add barrel distortion, a characteristic artefact of CRTs. This is a simple scale of each point's (x,y) based on its distance from the center. Here I've rendered the display edges to make the barrel distortion clear.
This image was deleted by MailChimp when they shut down TinyLetter.
Another important CRT artifact is glow. By drawing a slight glow around each point, the accumulated brightness increase gives a suitable glowy effect. 
This image was deleted by MailChimp when they shut down TinyLetter.
This isn't very physically accurate - you'd need some desktop-GPU power to duplicate the actual gaussian glow effect. But it's close enough:

This image was deleted by MailChimp when they shut down TinyLetter.
Adding an image of an original Asteroids screen surround completes it:
This image was deleted by MailChimp when they shut down TinyLetter.
Gives the finished look. In real-life, on the LCD, it looks really authentic. It's very tempting to build a 6502 simulator to get the whole game running on Teensy, which is easily powerful enough to run the Arcade code in simulation and do the vector conversion.This image was deleted by MailChimp when they shut down TinyLetter.
More next week, thanks for reading.