There are a few classic video games that rely on vector graphics and special monitors. Asteroids is incomplete if you’re not playing it in its original arcade format. The same goes with Tempest, Lunar Lander, and the 1983 Star Wars arcade game. Emulation of these games is possible, even with MAME, but the display – like every display you can buy today – is still rasterized. The solution to this problem is to create a vector display output for MAME that works in conjunction with adapter boards and DACs connected to a monitor.
For this year’s Chaos Computer Congress, that’s exactly what [Trammell Hudson] and [Adelle Lin] did. They’ve created an open source vector gaming system that connects MAME to XY monitors and oscilloscopes.
The build uses a custom board equipped with a Teensy 3.1 microcontroller and a 12-bit DAC to convert XY coordinates sent by MAME to vectors that can be displayed on any XY monitor. This, of course, requires a patch to MAME, which the maintainers rejected as being an, “unacceptably hacky way to achieve the intended result.” It does achieve the intended result, though: allowing dozens of vector games playable on whatever monitor supports vector graphics.
So far, [Trammell] and [Adelle] have gotten their system working on Vectrex consoles, analog oscilloscopes set to XY mode, and vectorscopes that litter every broadcast station and surplus shop. Check out [Trammell] and [Adelle]’s talk, and if you want to build the V.st vector display driver, the board is available from OSHPark.
If there’s a science fair coming up, this trumps just about any 2D poster. It’s a 3D topographical map of an inactive Slovakian volcano, Poľana. [Peter Vojtek] came up an easy way to generate SVG topo patterns using Ruby.
Topographical data is available through the MapQuest API. You should be able to model just about any part of the world, but areas with the greatest elevation difference are going to yield the most interesting results. The work starts by defining a rectangular area using map coordinates and deciding the number of steps (sheets of paper representing this rectangle). The data are then chopped up into tables for each slice, converted to SVG points, and a file is spit out for the blade cutting machine. Of course you could up the game and laser cut these from more substantial stock. If you have tips for laser-cutting paper without singing the edges let us know. We’ve mostly seen failure when trying that.
The red model explained in [Peter’s] writeup uses small cross-pieces to hold the slices. We like the look of the Blue model which incorporates those crosses in the elevation representation. He doesn’t explain that specifically but it should be easy to figure out — rotate the rectangle and perform the slicing a second time, right?
If you’re looking for more fun with topography we’ve always been fond of [Caroline’s] bathymetric book.
While we’re sure most Hackaday readers were raised by arcade games featuring sprites, pixels, and other shiny brightly colored squares, this was not always so. Many classic arcade games – Lunar Lander, Gravitar, and Asteroids in particular – used vector displays. Instead of drawing individual pixels, these games functioned more like an oscilloscope, drawing lines. When [Todd] and [Andrew] got their hands on a monitor from an old Asteroids cabinet, they knew what they had to do: build their own vector arcade game.
The guys made their own DAC and Amplifier board that plugs right in to a Nexys2 FPGA dev board. This was after they tested out some 3D drawing code with a gnarly handmade R2R DAC they used to draw and rotate a cube on an oscilloscope screen.
Not only did the guys build a vector video card, they also connected the FPGA’s VGA out to a monochrome monitor for an in-game HUD. Awesome work that blows away anything available in the golden days of vector arcade games. It’s a beautiful piece of engineering that certainly deserves its own cabinet.
Video of the game available below.
Continue reading “Making vector arcade games with an FPGA”
Scaled down it’s not as obvious that this image isn’t a crystal clear rendering of Mortal Kombat gameplay. But we’ve linked it to the full size version (just click on the image) so that you can get a better look. Notice the scan lines? This is the result of an effort to more accurately mimic the original hardware displays used in classic games. [Jason Scott] takes a look at the initiative by describing what he thinks is missing with the picture perfect quality of modern emulators.
One such effort is being mounted for MAME (Multiple Arcade Machine Emulator). There is a series of filters available — each with their own collection of settings — that will make your modern LCD display look like it’s a run-of-the-mill CRT. This is a novelty if you’re a casual gamer who dusts off the coin-op favorites twice a year. But if you’re building a standalone game cabinet this may be a suitable alternative to sourcing a working display that’s already decades old.
Unlike the CRTs found in big old televisions, vector displays are a bit of a historical oddity. Instead of sweeping an electron beam across the screen from left to right and top to bottom, a vector display draws lines between two points on a screen. Once used in arcade games such as Asteroids, Tempest, and old FAA displays, vector monitors have fallen out of favor due to either the complexity or difficulty in acquiring the needed CRT. The folks over at NYC Resistor put up a great tutorial for getting a vector display up and running, and even managed to put a clock on an oscilloscope.
The key component of getting a vector display to work is the digital to analog converter. This DAC takes voltages from eight pins on a Teensy 2.0 dev board and converts them to a voltage anywhere in between 0 and 5 Volts. After connecting the output of this DAC to an input on an oscilloscope, the microcontroller can draw a line between any two points on an axis.
In the video after the break, you can see two of these DACs connected to an oscilloscope displaying a clock. It’s a very cool piece of work, and something that finally gives a purpose to the ancient CRT oscilloscope you might have lying around.
Continue reading “An introduction to vector displays”
[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.
Continue reading “CRT vector graphics arcade game built from an FPGA board”
[Windell] developed an Inkscape extension called Hershey Text that helps you process fonts into vector representations. If you’ve tried to 3D print, plot, or mill text in the past you may have run across the problem of generating vector paths that deal with the outline and fill of the text appropriately. The problem stems from how fonts are defined; either by the area that they enclose, or by the path that is used to draw the outline. Check out [Windell’s] tutorial for this extension where he explains each of these issues and shows how to overcome them.
The image above illustrates the stroke options, which allow you to vector multiple paths to best fill in the correct parts of each character using path-based hardware. The package includes a wide variety of interesting font sets that are in the public domain, and includes tools such as a glyph map generator that make it very user friendly.