The original 1980’s Asteroids Deluxe hardware recreated in a single FPGA.
Asteroids, along with several other games of the time, used a vector monitor to display high resolution images – in this case 1024 x 788, avoiding the large cost of a video frame buffer. This was achieved with some clever hardware called a Vector Generator, which was essentially a specialised graphics coprocessor built out of standard parts, and capable of drawing several million points a second. This was connected to three analogue stages which drove the x,y and brightness of the electron gun in the monitor. It was absolutely ground breaking.
Today however, vector monitors are rare, and memory is cheap, so we can use the resources of our FPGA, and some external memory, to build up the picture as the beam draws out the image, and raster it out to a standard VGA monitor.
The image quality is not as bright or smooth as the original – and we are going to get some tearing because the vertical refresh of the raster monitor cannot easily be synced to the Vector Generator.
That said, I think it looks a lot better than the PC emulators as we can decay each point as soon as the raster monitor has displayed them.
The vector rasteriser size is approx 360 dffs (dtype flip-flop) and 260 luts (4 input gate, the basic logic building block in most FPGAs). The rest of the hardware is around 651 dffs and 1203 luts, including the cpu’s (6502) 140 dffs and 640 luts.
Self test picture. The ERROR message has now been fixed (a small POKEY bug)