Navigation banner Lost Valley Discovered Kingdom City of the Future OS X Ports

Sometimes a project may not be interesting in itself but may be interesting because of the new or developing ideas it demonstrates prior to their use elsewhere. Occasionally it is fun to develop a mini-program simply to demonstrate an idea or an algorithm.

Convex Minkowski Sum Demo
(c. 2005)

A small program, demonstrating the use of Minkowski Sums to perform collision detection and minimum separation calculations for convex 2d polygons.

Source Code (Allegro required) (3.2 kB)

Atari Lynx "Mode 7"
(c. 2003)

I've always sort of wanted to get a game done for a genuine old fashioned, low end machine. The Atari Lynx is a very well specified old fashioned, low end machine that could certainly do with some decent games so for a while I tried to create something interesting for it. This is my implementation of a SNES-style Mode 7 floor that subverts the hardware multiply and the stack page with a little bit of dynamic reprogramming to get a fairly decent frame rate. Definitely better than some of the old commercial games (Hard Drivin', Steel Tallons - I'm talking to you), anyway. To my knowledge this is the only Lynx Mode 7 demo in the whole world.

This version comes as a cartridge image suitable for use in the Handy emulator or on real hardware.

Cartridge image (6.5 kB)

Ant Attack Visualiser
(c. 2002)

Never a serious attempt to produce a game, just a proof for the forums that overdraw needn't be endemic in isometric engines. This small demo reproduces Antescher from Spectrum classic Ant Attack with zero overdraw.


  • cursors - scroll display
  • escape - quit

Source Code (Allegro required) (10.5 kB)
Win32 binary (225.6 kB)
Mac OS X binary (17.8 kB)

Early Portal Raycaster
(c. 2003)

My first real experiment with ray casting through portals - a proof of concept that Wolfenstein style grid casting is not the fastest way to handle uniform height walls. Following this I developed a Mophun version of the engine suitable for mobile phones but ended up being given a non-Mophun compatible handset by my carrier so dropped it.

Source Code (Allegro required) (7.1 kB)
Win32 binary (218 kB)
Mac OS X binary (20.9 kB)

Old School Driving Game - First Attempt
(c. 2001)

My first attempt at writing an old school style driving game, I was never happy with the way corners approach. I attempted hills using a simple heightmap approach, but have commented out that code here as I never adapted object drawing for it.

Source Code (Allegro required) (121.0 kB)
Win32 binary (518.1 kB)
Mac OS X binary (196.1 kB)

Anarchy: 1995/6 QBASIC attempt

My first attempt at writing Anarchy for our swanky new 486 PC, being already competent in BASIC this is written with DOS 6.0 freebie QBASIC, although it was my only QBASIC program.

This uses the weird EGA resolution of 640x350 and a pseudo 3d rotating isometric appearance. As I had no real guide to how things are done and at the time had not even begun GCSE maths I had to figure out a lot myself. I remember having to figure out basis vectors, which was a severe effort for me then.

QBASIC Source (many versions) (33.4 kB)

Anarchy: Early 1996 Turbo C attempt
Turbo C screenshot

2005 Allegro update
Allegro screenshot

Having decided that QBASIC was not for me, I obtained a copy of Turbo C and began an attempt at Anarchy in that.

The weird EGA resolution of 640x350 is retained, as is the weird pseudo 3d appearance. In many respects this is a direct translation of large portions of the QBASIC code, albeit now channeled through Borland's BGI graphics interface.

For the benefit of site visitors, I have adapted the original Turbo C source code to use Allegro in a platform neutral manner, including several memory bug fixes. This adapted version runs in 640x480 resolution. For various reasons a slightly different screen font has had to be used.

KEYS (adapted version):

  • Q/W/E/D/C/X/Z/A - movement pad
  • F - switch between board rotation and cursor movement modes
  • S - select player for movement
  • I - display stats for player on cursor
  • TAB - end turn
  • L - toggle grid lines
  • F1 - toggle action camera
  • F2 - toggle overhead/side view

Turbo C Source (two versions - Turbo C required) (13.8 kB)
Adapted Source (Allegro required) (16.5 kB)
DOS binary (built with Turbo C) (60.5 kB)
Win32 binary (245.3 kB)
Mac OS X binary (31.5 kB)

Anarchy: Late 1996 DJGPP attempt

Moving from Turbo C to DJGPP and a variety of libraries including Allegro, this is my third attempt at Anarchy. It is the first to use polygons and proper perspective, but I have not yet sorted out polygon clipping.

Everything is drawn with single colour filled polygons, all my own maths (this predates the 3d routines in Allegro), no reverse face removal and some decidedly dodgy polygon sorting. There also seems to be some quite low precision maths at play.

I was still essentially inventing all the maths for myself at this point.

Included in the downloads are quite a few sound files that aren't used, but in my mind they are irrevocably linked to this version of Anarchy (except the one I reused in Deathchase 3d a few years later).

Source Code (Allegro required) (710 kB)
Win32 binary (934.2 kB)
Mac OS X binary (726 kB)

Anarchy: 1997 DJGPP attempt

A final aborted attempt, I have now picked up polygon clipping (worked it out myself) and Gouroud fills (read about it on the internet).

This is the first time that I am able to use the mouse for input and map its movement back into the 3d world - although only by using a lookup BITMAP as the ultimately successful 1998 Anarchy does. Unlike earlier attempts this version of Anarchy features no gameplay whatsoever and the motivation for it may was probably to do with a 3d graphics library I was developing at the time.

This code seems to contain some sort of memory error that can cause crashes on the Windows platform. Until that can be fixed, no binary is provided for that platform.

Source Code (Allegro required) (29.6 kB)
Mac OS X binary (35.4 kB)
DOS binary (153.7 kB)

All projects on this page are distributed under the GNU Public License version 2. Email the author.

Valid HTML 4.01 Transitional