Software_Ports
- Edit
- Recent Changes
- Advanced Search
- All Pages
- Administration
- Index
Software_Ports
A key part of the PiTrex project is porting games and emulators designed to run on PC and display vector graphics on a regular raster computer monitor. This page will list software that might be easily adapted for use with the PiTrex to display on the Vectrex screen. We don't expect to port all these ourselves, but hope that when the PiTrex is released, the developers within our user community might take some of these on.
For information on the process of porting this software, see Software_Porting_Methods.
At the moment running on Linux causes graphics glitches on the Vectrex display. This may or may not be a fixable problem, and currently best results are obtained using Bare-Metal builds. These require aditional modification to the program code, so in some cases only Linux builds are available. See Software_Environments for more info on this.
Front-end
VMMenu
Environment | Ported? |
Linux | yes |
Bare-Metal | no |
There was once a vector-based menu for the Zektor Vector Generator (ZVG) system written by Ian Boffin, but the source for that was lost. Chad Gray rewrote the menu system from scratch as and has recently released his sources for the benefit of our project. This menu system allows the user to select one of the known vector arcade games, and then it invokes an emulator to play the game. We have got this working well for launching games in Linux and it is now used in the PiTrexCore Linux-based SD card package. The version modified for the PiTrex is available in the PiTrex Git repo.
MUCAREX
We might also want to have a look at Alex Kazik 's menu system...
Emulators
As the Vectrex is the only home video game console produced with a vector display, the main focus here is arcade emulators that can emulate vector arcade games . There are several emulators that we have identified and have source code for, but we are only listing here the minimal set that gives us full coverage of all the known games. There is no point at the moment in implementing emulators such as AAE or Cinemu which would duplicate games emulable by MAME.
We are also emulating the Vectrex itself; because, even though PiTrex users obviously have the real hardware, this will allow games to be loaded from the Raspberry Pi SD card or USB drive and therefore work like a Vectrex multicart.
AAE
Environment | Ported? |
Linux | no |
Bare-Metal | yes |
'Another Arcade Emulator' - one specifically targetted at all the vector games. We looked at this early in the project thinking it would be the ideal emulator to port - no raster junk to get rid of - but put it to one side when we discovered that the z80 and 68000 cores were written in X86 assembler. We didn't think at that time that replacing those cores with compatible C versions was a task that we could easily take on. Well, Malban has proven us wrong by shoe-horning in replacement cores from other projects, and AAE is now looking to be a strong contender for our primary source of arcade games. A Windows implementation of AAE is at this site and the last known sources are at our mirror
Cinemu
Environment | Ported? |
Linux | yes |
Bare-Metal | yes |
This was another emulator that was written in x86 assembler, but Graham was familiar enough with it from his Tailgunner binary translation project from some years ago, to know that the Cinematronics core out of Retrocade was compatible, so we now have a portable all-in-C version of Cinemu at github
Retrocade
The Pitrex team has recently been given access to the source of Retrocade which is the emulator from which a lot of the Vector drivers in MAME was derived. It may be an easier emulator to port to the PiTrex than Mame which we have turned out to have a little difficulty with. The code in Retrocade is compatible with the emulation routines called by the Orion static binary translator system (6502 and z80), so currently our roadmap is to get individual games running first under emulation with Retrocade and then move them to static binary translated versions with the help of Orion, while keeping the game harness (buttons, sound, joystick support etc) from Retrocade.
MAME
Environment | Ported? |
Linux | yes |
Bare-Metal | no |
MAME is the most popular arcade emulator for PC, and supports a majority of vector arcade games as well as the Vectrex.
Although MAME has been previously modified for output to a custom DAC board for controlling the Vectrex and oscilloscopes by direct connection to the display circuitry, that port no longer compiles on the latest Raspberry Pi OS and the method of adding vector support to it is very much not supported, so we will be basing our port on AdvanceMAME (3.8) which is the last version of MAME to include semi-supported hooks for vector drawing (vector_aux_renderer). Our vector module is adapted from the old DOS port of VectorMAME , targeted at the ZVG vector DAC board. AdvanceMAME is based on the ROM sets for MAME 0.106.
Graham has made some progress with porting MAME, and packaged the code for his incomplete port which has problems with flicker and incomplete replacement of the SDL library calls.
Modified versions of XMAME 37b16 and 0.106 in the Git repo are able to display reliably on the Vectrex via the 'Xvectrex' modified version of the XFree86 X server while running in Linux. XMAME 0.106 can run remotely on a PC and display over LAN on the Vectrex for increased emulation performance. This can be used in the PiTrexCore Linux environment.
Programming Language: C
Graphics Library: Internal (direct), xlib, SDL 1, or SVGAlib (raster data only)
VecSim
Environment | Ported? |
Linux | partial |
Bare-Metal | yes |
VecSim is an earlier/simpler arcade emulator designed specifically for vector arcade game emulation. Far fewer arcade games are supported than by MAME, and there is no sound support, but the primary reason for interest in vecsim is that it includes a rudimentary static binary translator. This is the same package that was used as the basis of all of the SBT translations on the VecFever other than Tailgunner. It may be easier to modify games to fit the Vectrex aspect ratio (4:3 vertical format rather than 3:4 horizontal format) using a translated source rather than making tweaks to the emulation on the fly. Otherwise, we don't really need vecsim and could use MAME for all the arcade emulations.
This has now been adapted so that a number of arcade games can be run with the PiTrex using Static Binary Translations. Malban is working on improving these in his Bare-Metal environment .
Latest Release: 2003
Programming Language: C
Graphics Library: Xlib
VecX
Environment | Ported? |
Linux | yes |
Bare-Metal | yes |
VecX is an open-source Vectrex emulator. It has already been modified to work with the PiTrex and successfully runs games, as noted in the Software_Description. Our version of vecx disables the emulation of the VIA chip, and instead uses the real chip inside the Vectrex, which improves performance. Doing the same for the sound chip has allowed sounds to be produced exactly as they would running on the Vectrex normally. This style of emulation may also allow us to add virtual hardware to the Vectrex such as a VecVox speech chip, although effort may have to be made to support real hardware on the user's Vectrex, such as the 3D Imager.
Malban has made many improvements in his his Bare-Metal environment including:
- Position in Vectrex games is saved during exit and can be resumed later.
- "Speedy" emulation runs games faster than on the standard Vectrex, resulting in a less flickery display as well as faster gameplay.
Latest Release: 2013
Programming Language: C
Graphics Library: SDL 1
Spectrum sound chip emulator
Spectrum Sound Chip Emulator In the same way that vecx can drive the sound and graphics chips of the vectrex directly, this emulator for AY-3-8912 music ought to be able to drive the sound chip directly... Several old micros used the same chip (eg Amstrad, Oric) and there are several file formats available. You can find music files here .
Games
A number of open-source games have been developed using display systems based on vectors, and these may be modified for display on the Vectrex screen using the PiTrex. Usually the original design of the games is to plot the vectors in a software display for use with a normal raster computer monitor.
Classic Space Wars
Classic Space Wars by respected old school video game coder and emulator author, Peter Hirschberg.
Latest Release: 1997?
Programming Language: MS Visual C++
Graphics Library: MS Windows
Gyrocks
Environment | Ported? |
Linux | yes |
Bare-Metal | yes |
Gyrocks is a simple vector game specifically designed for playing on an oscilloscope using a modified V.St arduino driver.
An initial port of Gyrocks has been made to the PiTrex, though text display is disabled due to the impact on speed. It isn't really all that playable and isn't included in Malban's Bare-Metal environment .
Latest Release: 2019
Programming Language: Processing (C)
Graphics Library: Internal (direct)
Agendaroids
Agendaroids is an Asteroids clone by New Breed Software. It is simple, and optimized for low-powered Linux computers such as PDAs. We have compiled both Agendaroids and Vectoroids and they do not appear to be completed playable games. [Agendaroids plays well enough for me on PC - Kevin Koster]
Latest Release: 2002
Programming Language: C
Graphics Library: Xlib
Vectoroids
Vectoroids Is another Asteroids clone from New Breed Software, with more features.
Latest Release: 2002
Programming Language: C
Graphics Library: SDL 1
Wordwarvi
Environment | Ported? |
Linux | no |
Bare-Metal | yes |
Wordwarvi Word War vi is a retro-styled old school side scrolling shooter reminiscent of Defender or Scramble, with an "Emacs vs. vi" theme.
This game is of interest to us because it has also been ported to the OpenLase API. We have also located the equivalent MAME vector driver for OpenLase which uses some hacks to reduce the number of vectors being drawn, which we may need to adopt ourselves if the display load is too high for the Vectrex hardware.
Latest Release: 2011
Programming Language: C
Graphics Library: gtk+-2.0
3D Pong
3D Pong is an adaptation of Pong in 3D by New Breed Software. Uses a PC mouse for control, so may not be easily adapted for use with the Vectrex controller (though a USB mouse could be connected to the Raspberry Pi for control).
Programming Language: C
Graphics Library: Xlib
ICBM3D
ICBM3D is a 3D adaptation of Missile Command by New Breed Software. Again, this uses the mouse for control as standard.
Programming Language: C
Graphics Library: Xlib
zblast
Environment | Ported? |
Linux | yes |
Bare-Metal | yes |
zblast is a "simple but fairly manic shoot-em-up" which uses a depth effect and has multiple levels. Originally released in the early 90's. Original runs with SVGAlib or X.
A port of the SVGAlib version has now been made using the SVGAlib-Vectrex translation library so that this game can be run via the PiTrex. Video . Original sound effects can be played in Linux using a USB or Bluetooth audio adapter, via the ALSA-OSS library.
A Bare-Metal port by Malban adapts the graphics to reduce flicker and improve visibility of game objects as well as replacing the original sampled sound effects with sounds that can be played via the Vectrex speaker. This is included in his Bare-Metal environment .
Latest Release: 2003
Programming Language: C
Graphics Library: SVGAlib or Xlib
xhyperoid
Environment | Ported? |
Linux | yes |
Bare-Metal | yes |
xhyperoid Is a Linux port of an Asteroids clone written in the 90s for Windows 3.x. It adds a number of variations on the original Asteroids gameplay including shields, and multiple types of enemy ships. Original runs with SVGAlib or X.
A port of the SVGAlib version has now been made using the SVGAlib-Vectrex translation library so that this game can be run via the PiTrex. Original sound effects can be played in Linux using a USB or Bluetooth audio adapter, via the ALSA-OSS library.
Graham Toal adapted the game to suit the Vectrex display and a Bare-Metal port by Malban replaces the original sampled sound effects with sounds that can be played via the Vectrex speaker. This is included in his Bare-Metal environment .
SDLRoids (Wayback Machine, download from Sourceforge ) is a modified version of xhyperoid which runs with SDL instead of SVGAlib or X. The modifications don't sound like they would be very helpful for us.
Latest Release: 2000 (orig.), 2001 (SDLRoids)
Programming Language: C
Graphics Library: SVGAlib or GTK1
Xinvaders 3D
Environment | Ported? |
Linux | yes |
Bare-Metal | in progress |
Xinvaders 3D is a vector-based 3D clone of Space Invaders. Uses vector text as well as graphics. Disappeared from Sourceforge fairly recently for some reason (but GPL, so don't need permission to distribute or anything).
Latest Release: 2000
Programming Language: C
Graphics Library: Xlib
cbzone
A neat clone of Battlezone based on an earlier version written in Fortran. Runs fine under Linux. Uses the mouse, which makes it pretty tricky to get a good screenshot because I need that to control the screenshot program! I'm guessing that it wouldn't be too hard to convert to joystick control. Also uses circles for drawing the radar screen and direction indicator.
There are some bitmaps included with the source code in the bitmaps directory. I'm guessing that these are for some of the control panel images, but I haven't figured out the code well enough to be completely sure. -- Actually they're just in XBM format and can be converted to PNG with Image Magick, after which I can clearly see that they're all icons used in the control panel.
Note: Replace the spaces at the start of lines 100 and 101 in "Imakefile" with a tab, before running xmkmf and make, otherwise make gets upset (or at least my version did). I used the version with sound, but haven't heard anything out of it yet...
Latest Release: 1991 (official), 1993 (sound mod.)
Programming Language: C
Graphics Library: Xlib
- The Linux Game Tome
- Download at Ibiblio - seems to be corrupted.
- Download at GitHub
- Download sound version
xlander
A 3D lunar lander clone. Seems to be running way too fast on my PC, perhaps possible to tweak this by changing some of the settings via the command line parameters. The 3D landscape looks good anyway - like something you'd expect to see on a computer display in a movie from the 1980's.
The "control panel" part of the screen doesn't look to be very vectory, so it might need to be redesigned for the Vectrex.
Latest Release: 1992
Programming Language: C
Graphics Library: Xlib
xasteroids
The first UNIX asteroids clone. No fancy features besides shields, but runs quite well and has nice explosions (though they might not work too well on the Vectrex). Code and binary a little smaller than Agenderoids, for what it's worth.
From the days when people with email addresses at nasa.gov contributed to video games :).
Latest Release: 1993
Programming Language: C
Graphics Library: Xlib
- http://linux.psu.ru/debian/pool/main/x/xasteroids/xasteroids_5.0.orig.tar.gz
- http://www.ibiblio.org/pub/linux/games/arcade/asteroids/xasteroids.tgz
XSC
XSC is a clone of Star Castle. Runs quite well. New Breed Software made a version called ZSC that adds sound and uses SDL instead of X, though the original has been updated since the release of the latest modified version.
Latest Release: 2013 (orig.), 2006 (ZSC)
Programming Language: C++
Graphics Library: Xlib
OldSkoolGravityGame
OldSkoolGravityGame game is similar to the likes of Lunar Lander and Thrust. All vector graphics. The view area scales and moves around to follow the player's space ship in a way that would be quite novel to see on the Vectrex.
Latest Release: 2016
Programming Language: C++
Graphics Library: SDL 1
Gammarace
Gammarace (Wayback Machine link) is a clone of Omega Race which appears to use entirely vector graphics and at least some vector text. Requires a compiling environment for the D programming language, and the binary download is no longer online anywhere, so it hasn't been tested on PC yet.
Latest Release: 2007
Programming Language: D
Graphics Library: SDL 1
Java Star Castle
Java Star Castle (Wayback Machine link) is an accurate clone of the Star Castle arcade game written in Java, from the same author as Gammarace. It uses vector graphics and text. Runs well on PC (tested with Java V. 7.0).
Uses the LWJGL and JOGL libraries. Maybe possible to insert the vector graphics library at that level? Or maybe not worth it given then XSC is probably an easier option (assuming no other need for Java support with the PiTrex)?
Latest Release: 2005
Programming Language: Java
Graphics Library: LWJGL & JOGL
Hypernova
A java-based game in the style of an extended Asteroids - unfinished.
Programming Language: Java
Graphics Library: Java2D
Space game
Space game - some code written by a flatmate of gtoal way back when! Fixed point 16 bit maths, written for the BBC Micro. It wasn't actually developed into an actual game, but there's enough here to build on. Probably more suited to the Vectrex itself but included here for completeness. I've lost touch with the guy who wrote it - Aardvark, if you're out there, say hello!
Programming Language: C
Graphics Library: Internal (direct)
Kuklomenos
Kuklomenos is a unique game where a ship fixed in the middle of the screen rotates to fire at various enemies and prevent them from taking control of "nodes".
The colour of enemies is important to the gameplay, so this would have to be substituted-for somehow on the standard Vectrex.
Latest Release: 2012
Programming Language: C
Graphics Library: SDL 1
Bitfighter
Bitfighter is a multiplayer-orientated maze-based shoot 'em up game.
The source code is very complex compared to the other games here. Most of the game code seems to be in the "zap" directory, and best confirmation that it's mainly vector based seems to be in files like "ShipShape.cpp".
Latest Release: 2018
Programming Language: C++
Graphics Library: SDL 2
Xspacewars
This is a clone of space wars which adds features such as shootable asteroids and a (very dumb) AI opponent. It also has metered damage, energy, etc. which recharges with time. It is designed as a multiplayer game, where the view follows a single player's ship and the location of other objects in the arena are shown on a map. Each player has their own window, which can also be run on on another display (which allows networking).
For the Vectrex, the game would have to be modified to show two player's views in a split-screen arrangement. Or the game could be modified to implement a lower-level networking system. Alternatively the X window system could be modified to display window contents on the Vectrex and convert controller inputs to keyboard/mouse events, also allowing the many other X-based games to work without modification, but this would be quite difficult.
A good basis for further work, but not really finished. Noticably missing a star in the middle of the game area. Some code from Xasteroids is used.
Latest Release: 1994
Programming Language: C
Graphics Library: Xlib
Rebel Defender
Environment | Ported? |
Linux | no |
Bare-Metal | yes |
Rebel Defender is a simple 3D shooter game where you defend a base against attacking waves of space ships.
Uses a combination of mouse and keyboard controls, though should still be well adaptable for joystick/buttons on the Vectrex controller.
Latest Release: 2015
Programming Language: C
Graphics Library: Xlib
Rocks
Rocks turns out not to be another straight clone of Asteroids. Instead of shooting asteroids, you have to "pop" the circles with the pointy end of your "spacecraft", and hitting them from any other angle is a crash. Gravity effects of circles on your craft, as well as between circles, complicate the process. A very simple little game, but can be quite fun.
This game is available in a number of versions. One in C++ and using Xlib, another written as a BBx script which somehow also uses Xlib, and a Python version using Tk via Tkinter. There's also a rocks2 for Python and BBx though the Python version doesn't seem to work quite right.
Latest Release: 2004
Programming Language: C++ or Python or BBx
Graphics Library: Xlib (C++, BBx), Tk (Python)
Worship Vector
Worship Vector is a tower defence type game which uses vector graphics for the main display, able to be viewed from two perspectives. Text and the game field map are done with raster graphics, though that shouldn't be a major issue.
It appears to have been written mainly for the GCW Zero Linux-based open-source games console from 2013, as a built-in game. But the code also compiles for Linux on PC, or for Windows. Controls are correspondingly well suited to the Vectrex controller.
Latest Release: 2014
Programming Language: C
Graphics Library: SDL 1
Maybe Suitable
These are games that have indications that they might be vector from looking at the source code, but we haven't got them compiled/running on PC yet to confirm if they would suit the Vectrex.
- tenmado - SDL, probably mostly vector.
- dangen - SDL, probably mostly vector.
- Crazy Lines - Python using pygame.
- Xpilot - Probably not.
- Titanion - Even more probably not, but possibly a target for a 3D library mod because it has a vectory sort of theme. The Linux Games Tome
- Malaga , a vector port of a Galaga type game.
- Asteroids II - Python using pygame.
- unknown space game - Java, doesn't look easy to adapt for PiTrex.
- Celesteroids
- Another asteroids
- ES - Java game probably using 3D library. Also other vectory Java games by the same author but without a source code package.
- Woody Tigerbaums Interplanetary Package Delivery - Python using pygame / openGL.
- Asteroids Infinity - Python using pygame.
- Vecron - Python using pygame.
- SpaceWarpy and Vektoriods - Python using pygame.
- Dstar - Only partially vector, but maybe possible to replace texture maps with lines?
- Lunar Lander clone. Source available.
PonGL Is a 3D Pong clone. Screenshots show a vector-type display mode, though unlike most other games this uses a 3D graphics library rather than direct vector line drawing instructions. See the Limited Features for more detail on this. The source code download link is broken and the corresponding "PonGL-src.zip" file can't be found anywhere, but the Wayback Machine has a copy of "PonGL.zip" which appears to contain the source code and the Windows binary. Presumably it's the latest version given that it was archived in 2014 and it looks like the latest version was published in or before 2007.
PonGL at The Linux Games Tome
Quake has been mofified to display on an oscilloscope . This approach should be applicable to the PiTrex, and hopefully also for other 3D game engines that provide some access to "wireframe" data.
Laser Projector Games
There are some open-source games available for laser projectors. These shouldn't present many problems with too many Vectors on screen because laser porjector hardware is more limited than the Vectrex screen/DAC. However they're often not very polished - more tech demos than completed games.
- Laser Gunner - Based on Tailgunner, though not very authentically. Forum thread , YouTube video .
- Laser Asteroids - Basic clone of Asteroids, apparantly doesn't implement the physics as well as the original. Forum thread , YouTube video .
- cullr - Unique game that involves matching colours, so there's an obvious problem with adapting it for the Vectrex (different patters/brightness instead maybe?). Would probably work best on the Vectrex using the alternative curved-line drawing method, though that would require a lot of new code. Best approach might be to just rewrite it from scratch to run natively on the Vectrex (which would be pretty neat) rather than via the PiTrex. Forum Thread , YouTube video .
- Asteroids (YouTube video). The library used is open-source, but it isn't obvious whether the code for the game itself is available somewhere.
- LaserBoy is a program for displaying laser projector animations in DXF or ILDA format. It uses internal vector rendering, but could probably be modified fairly easily for displaying laser projector animations on the Vectrex.
- The author of Laser Arcade plans to support the PiTrex.
Graphics Libraries
- SVGAlib games can be ported with minimal modification required using the svgalib-vectrex translation library. Main line drawing functions: vga_drawline, gl_line
- Xlib (usually Xorg these days, in the past XFree86 ) - a x-vectrex translation library is currently in development. Main line drawing functions: XDrawLine
- SDL 1.2 or earlier did not include any line drawing functions, so games must be directly modified without a translation library (besides maybe for controller inputs).
- SDL 2 includes line drawing functions , but is used by fewer of the vector games found. Main line drawing functions: SDL_RenderDrawLine, SDL_RenderDrawLines
- GTK is a moving target with GTK1, GTK2, and GTK3 all lacking backwards compatibility. GTK in turn displays on X, so if it uses XDrawLine, it might be possible to compile GTK against x-vectrex and then have games using it able to run without any code modification at all. GTK 2 and later use the Cairo vector rendering library. Line drawing in GTK3 , example .
- Most other graphics libraries will probably be similar to GTK in terms of potential and confusion at the same time.
- "Internal (direct)" means that the game was designed to write directly to the video hardware without using any external library. Here there is no option to use a translation library, and the game code must be modified directly for use with the PiTrex.
Graphics Library Usage
Library | Total Games | Total Games Ported | Translation Library | Games (-p = ported) |
SVGAlib | 3 | 2 | svgalib-vectrex | zblast-p, vhyperoid-p, MAME(note 1) |
Xlib | 15 | 4 | Xvectrex | vecsim-p, Agendaroids, 3D Pong, ICBM3D, xzb, Xinvaders 3D-p, cbzone, xlander, xasteroids, XSC, Xspacewars, Rocks, Rebel Defender-p, XMAME-p |
SDL 1 | 8 | 1 | N/A | VecX-p, Vectoroids, SDLRoids, ZSC, OldSkoolGravityGame, Gammarace, Kuklomenos, Worship Vector |
SDL 2 | 1 | 0 | none | Bitfighter |
GTK 1 | 1 | 0 | none | xhyperoid |
GTK 2 | 1 | 1 | none | Wordwarvi-p |
MS Windows | 1 | 0 | none | Classic Space Wars |
Java | 2 | 0 | none | Java Star Castle, Hypernova |
Internal (direct) | 3 | 1 | N/A | Gyrocks-p, Space game, MAME(note 1) |
Total Games: 33 (inc. 5 duplicates of games with versions for multiple libraries)
Total Ported: 9
Note 1: Some versions of MAME can be built with SVGAlib support instead of direct access to the graphics hardware, however the line drawing functions aren't used (a pre-rendered bitmap is drawn via the graphics library) so direct modification is still required to adapt for the PiTrex. Maybe svgalib-vectrex is still useful for translating the keyboard inputs?
For notes on porting games using translation libraries or direct modification, see Software_Porting_Methods.
Places to find more
Some more vector-based open-source games may have been developed, probably in the 90's or early 2000's. Like zblast and xhyperoid though, they probably aren't labeled anywhere as being vector, because this was an internal aspect of their implementation, which was always intended to be used with a software renderer to display the picture on a raster display. Many software display libraries support plotting vector data.
Here are some places which list old Linux games. Some of them potentially vector-based, but I don't know an easy way of weeding those ones out (screenshots help):
- Github
- Sourceforge
- The Linux Games Tome
- Libre Game Wiki
- The Linux Gamers Game List
- LinuxHotBox Linux Game Index (Wayback Machine)
- Moby Games Linux Directory
- Ibiblio Linux Games Directory
- Giant Bomb
- IndieRetroNews
- Tardis Remakes (click the 'vector' pull-down menu)
- Stiggys blog
- Internet Archive
- Linux distribution package repositories (the old archived ones from the early 2000s might have more hits, though the Debian one isn't very browsable anymore)
- Mobile-Online-Downloadable vector games forum at Proboards
- Miscellaneous vector games forum at Proboards
- pygame - Games written in Python using "pygame" library which interfaces with SDL1.2 (note that some games might use another library for the line drawing)
- Linux Links games directory
Any game written with libcrtxy seems highly likely to be adaptable to work with the PiTrex. Unfortunately it doesn't look like there ever have been any. We might provide this library as the interface for user programs to write to the PiTrex, however the code appears to be heavily biased towards an SDL-based raster target, so we need to use it a bit to determine how good a fit is will be.
Besides "vector", look for "wireframe", "line-art", "3D" (for a certain period in history).
There are also several vector-style remakes of old games for which the source code is not available, so we won't bother listing the ones we know about here. (And we have at times emailed several authors asking for the source to be released for porting to the Vectrex world, with no success.)
Vector Mace isn't open source as far as I can see but maybe once the PiTrex is released we might invite the author to port it to our platform to get a larger audience than the two or three people who've managed to build TRMM's vector interface.
Similarly anything for the Ocelot ...
Limited Features
Some features of the software vector displays used by vector games and emulators on PC are difficult to reproduce with the Vectrex.
Colour
Many games use coloured vectors and while many could be equally playable with in black and white, some attribute meaning to the colours of objects on screen. One possible solution may be to use the shift register control of the Vectrex #BLANK signal to make different patterns in the vector lines in place of different colours. This may only work if the objects drawn in colour are fairly large.
A simpler solution is to vary the brightness/intensity of lines drawn instead of changing their colour. This has been tried with the Battlezone arcade emulation, and is also possible with SVGAlib-Vectrex.
While experiments with LCD displays have outlined a potential method that could be used with the PiTrex to add colour to the Vectrex display, this is another project entirely.
Curves
While most games use traditional straight vectors, some games use curves and circles [do emulators?]. These could either be converted into straight segments, or the vector drawing library could be expanded to implement the method of changing the integrator values while #RAMP is active in order to "bend" lines as they are drawn on the screen.
Filled Vectors
Some vector games fill/colour the inside of drawn objects. As there is unlikely to be enough vector drawing time available to run a equivalent routine that fills the inside of objects with some sort of vector pattern, only the outline can be drawn with the vectrex. The effect of this on the playability of each affected game is likely to vary.
Drawing Time
The Vectrex is limited with regards to how long it can spend drawing lines on the screen before the frame rate drops. This also slows the execution of the game because the vector drawing library does not return until a draw operation is complete (unless the IRQ LATCH feature is used to disable #RAMP, at the expense of the beam needing to be zeroed after every vector is drawn).
In some cases, objects in games may have to be simplified in order to reduce the time required to draw them. Alternatively, some automatic means of lowering the number of drawn vectors as the limit is reached could be implemented in the vector drawing library, and this could also be used with the emulators.
Processing Power
This may be a significant problem with the emulators, with the vector drawing library taking up a significant amount of processing time as described in the last section. The bare-metal environment should run faster without the Linux processes competing for CPU time as well. Using faster Pi boards like the Banana Pi Zero, or a recent full-size Raspberry Pi board connected via a cable (and external power supply even more recommended than before) is another solution. Some advantage may be gained from overclocking.
Most of the Linux (or UNIX) vector games are from the 90s and therefore designed to run fast on computers with a fraction of the speed of the Raspberry Pi Zero, so they are unlikely to present a problem with regards to processing power.
Raster Graphics
Most of the games, although primarily vector based, use some bitmaps or other raster elements such as text. These are usually for score-keeping and related features, so bitmaps could probably be replaced by vector objects with fairly minimal modification to the game.
The Vectrex BIOS does have limited support for raster graphics in the form of a simple text display routine. Unfortunately this requires an implementation with cycle-exact timing, which even on the 6809 Vectrex is hard to achieve, as can be seen by the infamous slanted text on many Vectrexes. Duplicating this on the PiTrex where our hardware can insert an extra cycle even if the Linux itself can handle accurate timing (which is not guaranteed) is extremely difficult and we may not end up supporting it.
Single points (or pixels, as they are more usually referred to in the game code) are also often plotted on the software display as stars, or as part of explosion effects. While the Vectrex can display such points, the time required to move the beam in order to draw stars, for example, may be prohibitive. These elements may have to be removed from the game, or substituted with routines optimized for the Vectrex hardware. The OpenLASE project vector driver for arcade games already removes some of the features that contribute drawing overhead.
3D Libraries
While most 3D games rely heavily on textures to make sense of the environment, some simpler ones, such as PonGL above, could be playable with only the vector outlines of the 3D objects visible. Here it may be that the 3D engine rather than the games themselves should be the primary task for modification. Mesa is commonly used on Linux.
Perhaps the GPU acceleration of games would be impossible while using the vector drawing library for output, in which case there may be serious issues with performance. Especially considering that these are more modern games, probably designed with computers faster than the Raspberry Pi Zero in mind.