[Sprite_TM] wanted to challenge his VHDL skills, and there’s no more satisfying way of doing this than making something that will be playable when you’re done. He decided to try his hand at creating a vector-based CRT arcade. The distinction here is that vector-based games take control of the magnetic ring that guides the electron path toward the screen. This technique allows point-to-point graphic generation rather than the pixel-based scanning that CRT televisions use.
He had a small color CRT on hand and decided to grab a VHDL version of asteroids from the Internet to see if he could get it to work. But upon further inspection of the source he found that it had a chunk of code which rasterized the vectors for use with a scanning monitor. After removing that chunk, and giving it a spin he had enough confidence that he knew what he was doing to start implementing his own game. The choice of what title really came down to the hardware the original arcade cabinets used. He was not interested in implementing a soft-process for the math chips used in games like Star Wars and Tempest. In the end he got a version of Black Widow up and running, and even built a miniature cabinet for the thing. Check out some of the gameplay in the clip after the break.
18 thoughts on “CRT Vector Graphics Arcade Game Built From An FPGA Board”
I’ed stick a quarter in that!
sprite_m is the best hacker out there.
How come the lines are stepped if they’re vectors? Also Sprite says the DAC for the X/Y is PWM. I’d think for the hi-speed he’d be better with a traditional R/2R or an analogue DAC chip. Still, seems to work, and he’s the genius after all.
My first guess as to why the lines are jagged rather smooth and straight would be the arrangement of the phosphors to make each screen pixel: they are arranged in a grid of RGB triplets, so a diagonal line will look jagged or stepped.
On a monchrome CRT monitor it would be possible to have a continuous coating (no grid) of phosphor so that displayed lines look straight no matter what their orientation.
They look stepped due to the shadow mask in the color CRT. With a bigger CRT or a finer dot pitch, e.g. a computer monitor, it wouldn’t be so noticeable.
I’ve used a sort-of hybrid between a PWM and an R-2R-network, so I get the speed of the R-2R and the low component count of the PWM-converter.
Shite, I reported instead of replied…
Anyway, I’ve seen your DAC circuit now. Clever! Best of both worlds.
I love it, oh man. Funny how he amplified the high frequencies in his earlier prototype. Good work on the CRT modding and deflection amps, I didn’t know this could work on a normal CRT but now I’m inspired.
It won’t look quite right on a normal CRT because of the color mask.
Way back in the day, when we all wore turnips on our belts, I worked in a video game arcade.
There were quite a few colour vector grapics games,
and a few I can’t remember.
But they were just like Asteroids, Battle Zone, Night Driver (poor cows).
Almost the same boards in fact.
BTW, stop referring to “the ring of magnets” controlling the electron beam!
They are deflection coils, the magnets are there to tweek for local magnetic influence and are called purity magnets!
Sam: why not? This tiny CRT has the same type of color mask as the big’uns, so I see no reason it wouldn’t work. The only reason I chose this small CRT is because I don’t want to spend room on a full-size arcade cabinet.
Cool cool cool!
IIRC, color vector games generally had tubes with a higher-pitch RGB mask, but I could be wrong. Have to check those old Electrohome manuals.
They were just normal colour CRT’s.
They didn’t bother with fancy deflection coils either.
The main difference between an Asteroids machine and Tempest was a 6502 versus a 6809.
The sound board was a bit more sophisticated with a couple of AY-xxxx chips as opposed to a 6502 and a DAC.
Best thing about vector games was they used static CMOS RAM rather than DRAM’s, which back then needed 3 supplies.
Errm, nope, there’s quite a lot of difference between Tempest and Asteroids. DVG vs AVG, Mathbox included in Tempest, B&W vs color. There are also quite a few similarities: both use the 6502 CPU (6809 was only used in Star Wars, to my knowledge) and both used Pokey chips for audio, though Asteroids uses just one and Tempest two. (Source: MAME source code).
I am also quite sure the deflection coils actually differ between a raster-scan monitor and a XY-monitor, but I’m not quite sure where I’ve read it. The fact that the display on my monitor looked like shit until I rewound one of the couls has to count for something, tho’.
I do agree that it’s unlikely they used a different RGB-mask: they probably used the same as my little monitor used, but because the monitors were much bigger, it didn’t show that much.
The Rauland tube used in the later Amplifone monitors in Star Wars and Major Havoc were the same tube used in medium resolution raster monitors, and they did have a finer phosphor pitch than the standard TV CRTs. The Wells Gardner 6100 color vector monitors used a standard resolution TV tube, although it did have an unusually shallow 100 degree deflection angle, requiring some pincussion correction in hardware to look right.
Fantastic project btw. It never occurred to me that a yoke could be rewound by hand and still provide acceptable performance. It has inspired me to attempt something similar although I think I’ll start with a B&W tube. Asteroids really makes fantastic use of a vector monitor, those bright shots just can’t be emulated. I think it would be neat to make a miniature one.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)