August 2017: Many years ago I implemented a static binary translation of Tailgunner in C, but the generated code was way too big to be compilable for the Vectrex. Obvious solution... rewrite Tailgunner from scratch in C. Unfortunately the only C compiler that existed at the time for the Vectrex was very buggy and all sorts of trivial things would crash the Vectrex. After that, I took a small detour and resurrected a compiler for a language called "Skimp" that I had written as my 3rd year University project... Since the compiler really only supported 8 bit variables, and I didn't have the enthusiasm to bring it up to a full 16 and 32 bit implementation, it wasn't a great success :-) However I did develop the C code a little farther and got some reasonable approximation to the look of Tailgunner running under OpenGL and a few other graphics libraries. However I was still struggling with the algorithms describing motion for the attacking spaceships, and never got convincing flight paths with that code. (From what I read, I needed to use quaternions to get the roll parameters correct. To be frank, the maths was too difficult for me...) Many years later I got involved with teaching programming to kids where I would write small programs in the Scratch language (scratch.mit.edu), and once again I decided to write a version of Tailgunner... Of course I still had the same problems to solve with quaternion maths. Although I plugged away at it, I wasn't very hopeful. Until one day it occurred to me to ask the kids for help! They're pretty smart kids at that site, and one of them came up with a much simpler algorithm that did what was needed! No quaternions :-) I'm pretty sure in hindsight that his trick is the same as Dan Sunday used in the original Tailgunner code. (I did ask Dan once how his code worked but he couldn't remember) So in this directory you will find: tg.c which is the first C version I wrote, with bad flight mechanics and tgvectrex.c which is an assisted translation of the Scratch project At this point tgvectrex.c compiles, but doesn't yet even pretend to implement the game at all. But it's very close and I can take anything I need from tg.c to finish it off. (tg does compile and run under Linux + OpenGL) (I'm looking at using the subset of C implemented in the 'cmoc' compiler (originally for the Coco) which seems to be sufficient for the sort of code I write. I do have quite a bit of restructuring to do first though, to remove all long and unsigned varables.) Once I get Tailgunner working convincingly on Linux or PCs using OpenGL, I want to port it to the Vectrex itself. The code is very small - currently the tgvectrex.o file is about 5000 bytes on X86 architecture, so it is ballpark for an 8K rom. It looks like a better port of GCC now exists, at malban.de, who I may need to ask for porting help. It's been a *long* time since I powered up my Vectrex! At least 20 years... I'm trying hard to code it using 16 bit ints whenever possible and certainly no floating point. I don't know what GCC does with 32 bit variables or floats but even if they are supported, I'm fairly sure that the library code to support them will make the program too big for a rom - currently the C code uses no header files or libraries - all I expect to need is the line drawing primitive and 'wait for vsync'. Graham -- The Scratch version can be played here: https://sulfurous.aau.at/versions/v0.86/html/app.html?id=33089150&turbo=false&full-screen=true&aspect-x=4&aspect-y=3&resolution-x=&resolution-y= View the source at: https://scratch.mit.edu/projects/33089150/#editor The static binary translation of the original Cinematronics code can be played at: http://gtoal.com/athome/tailgunner/java/norbert/Tailgunner.html - that's actually a quick hack of the C into java, which will probably not run any more since Java is disabled by default nowadays the java source code is at: http://gtoal.com/athome/tailgunner/java/norbert/Tailgunner.java The original C code (or at least one version of it) can be seen at: http://gtoal.com/athome/tailgunner/opengl - the thing about that implementation was that I had to break the main emulation code down into 8 segments so that each segment could fit in the available space in an old 68000 Palm Pilot! I got it running on Windows, Linux, and the GP32 handheld... ( at http://gtoal.com/athome/tailgunner/gp32/ ) and since its only graphics consists of drawing lines, I've used SDL, OpenGL and Allegro (and maybe others I've forgotten!) in various implementations. The Skimp attempt: http://gtoal.com/athome/tailgunner/newgame.imp.txt Looks like maybe I had 16 bit ints working, I really can't remember in detail.. It was a long time ago! The early Vectrex C code that crashed looked something like this Allegro version... http://gtoal.com/athome/tailgunner/newgame.c =============================================================================================== UPDATE: November 2017: After starting to write for the Vectrex platform specifically, it became difficult to maintain compatibility with other platforms such as the PC and OpenGL, or the cmoc compiler. The current source is in http://gtoal.com/athome/tailgunner/main.c and although far from complete, does now run on a Vectrex when installed on a suitable cartridge. See the discussion at: http://vectorgaming.proboards.com/thread/2003/working-on-tailgunner-again