Archive
Archive Index

This archive contains pages that have been retired from the main site presentation (see Article Listing, below), and programs I have written in the past, some of which are unpublished.

Contents

  • Featured Works
  • Atari 800 (8-bit, 6502)
  • Amstrad CPC (8-bit Z80)
  • Commodore Amiga (16-bit 68000)
  • PC (486 onwards)

Featured Works

Zenith
game
OpenGL
Delphi
Windows XP

A remake of The Sentinel, ‘Better than the [Psygnosis] commercial remake for the PlayStation’ — Review.

Infinite Reflections
GPU
maths
billiards solver
shader
WebGL

Featured on the Americal Math Society's Visual Insights, this is a real-time rendering of a coloured target moving around a reflective ellipsoid. The conventional ray-traced image featured on AMS took 20 hours to render a 4K-square image, 256 reflections deep; the 512-square GPU version renders 512 reflections deep at 60 frames per second on mid-range gaming hardware.

The Matrix Effect
screen saver
Windows 95
2000

Emulates the dripping green text seen in film, The Matrix. Over 1 million downloads, popular in Asia.

Raw Forge
photography
workflow
image processing
Windows 32-bit

Camera-Raw image processor, featuring NEF parser and CCD defect removal.

Pocket Universe
physics
Windows 16-bit
Windows 32-bit

Optimised simulation of galaxy collisions. 'Pixel-free' (anti-aliased) rendering.

FMC Synthesizer
audio
media
Amiga
1990

A sample-generating software synthesizer, featuring a freeform algorithm designer to create your own synthesizer designs.

Interlace
display mode
firmware
Amstrad CPC
1989

A display hack that changed the video chip timings, and switched between two display screens, every frame. This resulted in a doubling of the vertical display resolution, from 200 lines to 400 lines. Some OS calls were patched to write to the new row-ordering of the display format.

Atari 400 (8-bit, 1978)

Snake
game
joystick
1980

Everyone wrote one of those, didn't they? One to four players, joystick-controlled, levels with simple mazes, obstacles, optional wrap-around and creeping edges.

DS1
maths
graphics
chaos
1981

Math-driven pattern generator, made sponge-like coloured images, using techniques similar to a 'choas plot' or 'finite attractors' that later became popular.

Universe (codename)
astro
graphics
1981

Generated procedural mini-galaxies with star systems and planets, nearly developed into an 'occupation' strategy game. I liked Star Raiders, and wanted something more strategic, without the shooter action.

Display Writer
content
1981

Recorded text-mode editing, along with delay codes, to create 'attractor' displays. Used 4-colour 20-char text mode, or 2-colour 40-char text mode.

DLI
graphics hardware
1983

An easy way of making hardware interrupt lists for the display hardware: mode splits and palette changes

Road (codename)
game
avoidance
1983

Traverse a randomly-generated scrolling road, which occasionally branched. Edges slow you down, or cause damage. More points for crossing multiple targets.

Amstrad CPC (8-bit, 1984)

ViewFax (1986)
content
teletext
disc
interactive
emulation
1985

Disk-based teletext-like designer and viewer. (40 × 25, 4 colours). Other systems used the half-resolution 16-colour mode, which gave ugly 4px × 8px text characters.

Erode
game
maps
deformable

A game like Thrust (but before Thrust), where the objective was to land at a target with as much fuel as possible, and the ability to modify the terrain. Multi-screen levels. Later modified so save scores to disk.

Splode
game
automata

A game played on a square 10 × 10 board, players take turns dropping a token on their colour on any square that does not contain anyone else's colour. Squares fill up. When four tokens are on a square, it explodes, leaving one token and distributing one to each adjacent square. Win by eliminating your opponent. Preceded 'Meltdown' by a few months.

AGE (AGE.BAS)
GUI
graphics
utility
API

A basic windowed GUI, with list menus, drawn GEM-like windows with titles, text and graphics regions, and blit routines to preserve canvases. Used by many authors to upgrade existing FSW programs.

Disk Menu
utility
disc

Saved on a disc as the file run by RUN"DISC, Disk Menu served as a pretty menu for running the disk's contents, curated in DATA statements. The display adapted to show up to 69 items, with shortcut key access. Useful for collections of small programs this occupied one disk block, and allowed programs to be launched with only two keypresses.

Disc Menagerie II (DMII.BAS + .BIN files)
utility
disc
content

Upgrade of Alastair Scott's original app, including a conversion of fixed-address machine code (JP) to relocatable modules (JR), a unified module loader, and a layered windowed GUI. A pleasant interface was designed to run the modules, and the utilities' own interfaces were redesigned. No download available - do you have it?

DefFont (DEFFONT.BAS)
graphics
font designer
bitmaps
editor

Fully-featured 8×8 Font editor, with merging, transformations, binary and basic input and output, all-mode previews.

Also, created using a modifed DefFont, a high-res font using characters defined on a 16 × 8 grid, that fits 40-characters across a (640 × 200) mode 2. and a (slow!) 53-character variant using a 12 × 8 grid.

BigScreen
display mode
shell
command line

Built upon existing code, it managed a 256-line display (standard CPC modes were 200-line), by stitching two display bitmaps, switched mid-screen by interrupts. Included a command-line interface (DOS-like) for finding and running BigScreen programs from disk. Many programs were modified to use it, e.g. an Earth globe that filled the screen, effectively using 60% more pixels for the on-screen circle.

Interlace
display mode
firmware

A display hack that changed the video chip timings, and switched between two display screens, every frame. This resulted in a doubling of the vertical display resolution, from 200 lines to 400 lines. Some OS calls were patched to write to the new row-ordering of the display format.

AArt
graphics
editor
bitmaps

Monochrome art software. Included pens, paths, textures, airbrushes, selections, cut/copy-and-paste, fonts any size, dithered gradient (simple error distribution), an outline font, compressed image format.

WACCI FSW

I contributed many titles to the WACCI FSW library. I'd be interested to get a copy of the library (please use the Contact Form to get in touch), as I cannot locate any of it on the Web, and have long since sold off my CPC and accompanying software. Some can be found in the CPC Power archive.

Amiga (16-bit, 1989)

Pocket Universe
physics
n-body
maths
graphics

The first of a long line of versions, this was an n-body simulation of a bunch of particles that were attracted at distance, and repelled close-up. Used to find configuration patterns of lowest potential. Included bond lines, setup-randomize-simulate-repeat.

AstroChase
game
action
arcade

A rewrite of the 8-bit game of the same name.

NetSim
physics
maths
linkages

Physical simulation of elastic rods-and-points networks, with material properties, gravity, and contraints: fixed points, walls.

FMC (1990)
audio
synthesizer
emulation

Freeform algorithm synthesizer. Emulated most of the synths around in the late 1980s and early 1990s. Included an early implementation of hypertext with diagrams. [More...]

Teletext emulation: Amiga (1991)
display mode
emulation
content

Implemented a true hardware text mode, using the graphics co-processor's timings to change colours ($180, $182) or read-address (dc.w BPL1PTL,address) within 1 character width.

Two storage areas were used: a text buffer (1 kB), and a font bitmap buffer. Characters were displayed by changing the bitmap read address just before the character was needed. All font bitmaps fitted within the least-significant bits of the read-address pointer, when the font bitmap is aligned to begin at LSB = 0, and BPL1PTH is set at the beginning of the list. Final display used 640 px × 25 interlaced lines, exactly emulating the look of the original Teletext display.

8 colours were used, and indeed the Amiga was capable of a 16-colour display at 640 px × 512 px using the OS, but OS text display was slow because it explicitly drew fonts bitmaps into the display bitmap (four times for 16 colours), and any programs running in chip memory slowed significantly. The 8 colours were chosen by 16 dedicated character codes in the text buffer (8 foreground and 8 background). We could have diverged from the Teletext specification, to use a separate colour buffer (like the ZX Spectrum), and switch to any arbitrary colour within half a character cell.

The 'Copper List' was re-compiled (twice - for long and short interlaced frames) every time new characters were registered with the text buffer. Using this technique, it would have been possible to prepare display lists in advance (double buffering, and so on).

We didn't implement double height, nor did we properly implement the 'graphics character' switch, but could have done so with this architecture. Interlace support was imperfect, but looked like it could be fixed. By that point, the project had run its course.

PC (1992 onwards)

These are a few that I remember while writing this article.

FieldsP (Windows 95+)
maths
graphics

Download: complex phase views of summed waves.

Wave
simulation
graphics
Windows 16-bit

Simulated waves on a surface.

Immerse
simulation
audio
acoustics
Windows 32-bit

Constructed binaural FIR filters for spatializing sounds into simple environments, and ran dry audio through them.

Immerse: Rain
simulation
audio
acoustics
Windows 32-bit
2004

Live simulation of (90k/sec) raindrop impacts on surfaces, binaural rendering for each drop, up to 6th order reflections in different enviroments. Weather changed over time. Options for tuning the dynamic range of the output, environment, next weather, and high-frequency filtering.

Splode
game
graphics
DOS

Made again for the Amiga (see CPC version, above). Evolved into Flame (not a game) then FlameBlit (again not a game)

Flame
automata
text
DOS
Turbo Pascal

Played the Splode rules very quickly, on an 80 × 50-ish VGA text-mode screen.

FlameBlit
simulation
graphics
Windows 3.1
Delphi

An analogue version of Flame, which evolved into a fluid dynamic simulation of burning gases.

Fireworks
simulation
graphics
Windows 32-bit
GDI
Turbo Pascal

Screensaver that used evolving particles and triggers to render fireworks.

Thwart
simulation
game
graphics
Windows 32-bit
Delphi
2003

Marble Maze generator with many differently-sized balls, targets, and holes. Tilt the maze using the mouse. Featured some optimised physics processing.

EAKey
mobility
Windows
Delphi
2003

A diary that could be operated using a mouse or keyboard nipple. Auto-saving, RTF format

Crossmines
game
Windows 32-bit
Delphi

A development of the minesweeper game, where cells are shaped, and may link with other cells.

Pocket Universe Stars
astro
simulation
graphics
Windows 95
Delphi
2001

Pan and zoom star maps. Supported popular formats like Tycho, YaleHIP, and other segmented datasets. I liked it because it looked real (understated, anti-aliased points), variable dynamic range, rather than pixelated like the current star maps were.

...Others

(there are many others; we'll write more here soon).