32C3: Vector Video Games

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.

Replacing The CRT In A Vectrex

The Vectrex is a rare beast in the world of retro video games. Introduced in 1982, this was the only video game system to put a monitor right in the console, and it did so for good reason. This was a games system with vector graphics and rotating 3D objects, something that just couldn’t happen on the TV in the family room. A while ago, [John] dug his old Vectrex out of his basement and replaced a faulty logic board. The CRT was still broken, but with a little bit of research and a not-so-ugly kludge, he managed to replace the CRT in a Vectrex.

[John] found someone willing to part with an old CRT online, and after whipping out his credit card, the tube was on his way to his front door. This new tube wasn’t a direct drop in; The original Vectrex had small ears around the edges of the screen that served as mounting points. The new tube had no such ears. Now, a bit of plastic strapping holds the CRT in the chassis. It’s a bit of a kludge, but at least now [John] has a source of Vectrex CRTs.

While the rest of [John]’s repair work didn’t go as well – the Vectrex in question still has all the logic board problems it had when it was taken out of storage. This Vectrex does have a new CRT, and with a bit more work on rehabbing this old machine, it should keep on working for another thirty years.

Whenever you come cross an interesting CRT, make sure you snatch it up. Here’s another offering that uses a tiny screen for some classic MAME action.

3D Printed Mini Vectrex

With the more common availability of 3D printers, making miniature models of retro computer and video game gear is one way to nerd out and not fill the house up. [Jason] was looking around and noticed that no one has modeled the Vectrex video game system and stepped right in to fill the void with a working 3d printed miniature model of the unique early 80’s video game system.

For those who don’t live and breathe retro game systems, the Vectrex is a 1982 8 bit game machine unique in the fact that it comes with its own monochrome vector graphics CRT in the console. [Jasons] model features a 2.2 inch LCD with a SPI interface.

Emulation is powered by a VoCore SBC sporting a 360Mhz MIPS CPU and a modest 32 megs of ram, which is more than enough to handle the 8 bit math and wireframe graphics. The emulator used is a port 0f VECX with the display rerouted to the LCD screen instead of using standard SDL interfaces.

The case was modeled in Sketchup, and the whole lot is powered by a 3v3 lipo battery.  Join us after the break for a quick video of the mini model running the introduction to “Mine Storm” which was the onboard game original to the machine.

Continue reading “3D Printed Mini Vectrex”

Extreme Vectrex Multicart Plays Bad Apple

[Sprite_TM] had a Vectrex console that he wanted to play with. Alas, his makeshift multicart had fallen into disrepair. Rolling up his hacking sleeves, he set about making a new one, a better one. His PCB design included his microcontroller of choice: the ST STM32F411, a 32-bit 100Mhz ARM Cortex M4, along with a 16MB SPI flash chip. [Sprite_TM] wanted to make programming games onto the multicart simple. Using the libopencm3 firmware library for the STM in conjunction with Elm-Chans FatFS, the multicart could be plugged into a computer’s USB port and have any game data dragged and dropped onto it like a USB stick. The PCB then connects directly into the Vectrex’s cartridge port. The first cartridge file is a basic menu that lists all of the game ROMs stored in the flash memory. When the user selects the game the STM loads that ROM file which the menu software then boots.

After loading his entire Vectrex ROM library onto the multicart, [Sprite_TM] realized he had far too much space left over – so he decided to add some extras. His first choice was Bad Apple (YouTube link), a music video made by fans of the Touhou Project game series. The video features black and white silhouettes of the many game characters in a shadow art style. Since its debut, Bad Apple has been ported from everything from the Sega Genesis (YouTube link) to laser scanners (YouTube link). It was time for the Vectrex to join the list.

After ripping the video from YouTube, [Sprite_TM] used MPlayer to save each frame as a PNG along with a wave file of the music. Next, he ran Potrace on the PNG files to get vector versions. Using a custom PHP script, the resulting JSON file was post-processed into relative vectors the Vectrex uses. Digital audio was possible by having the Vectrex’s 8-bit DA-converter perform double duty both for the video circuit and the audio. However, the volume must be turned to the max in order to hear the music. Incidentally, the DAC can only output audio in this scenario when vectors are not being drawn, so the event timing needed to be adjusted. The video and audio data was re-parsed after a modified version of VecX was used to get the timing events synchronized before transferring Bad Apple onto the multicart.

You can see the Vectrex version of Bad Apple after the break, along with a 3D-engine based on Doom levels. The engine is written in C and makes use of the Z-buffer, creating the effect of solid 3D-objects in front of each other.  There are no weapons or enemies to dispatch here, but the effect is impressive nonetheless.

Continue reading “Extreme Vectrex Multicart Plays Bad Apple”