Programming

This page will cover whatever I think is worth the while on the topic of computer programming.

Past

This page lists what little I've managed to bring into a suitable shape for releasing to an unsuspecting public. That is, it was only at the time of release I could have any hopes that any people at all would find these tidbits even remotely interesting.

Fireball Software

I have a continuous fascination for classic computer games.  In 1988 I wrote a couple of PC games as Fireball Software - check out the link above for a peek into that meagre collection.

Introduction to Mode X

This is more of an article than a programming exercise. I released this in response to all the people asking "What is Mode X? How do I use it?" in rec.games.programmer. In short it's an undocumented 256-color graphics mode available on standard VGA cards that allowed for page flipping. It was therefore very useful for game programmers. If anybody finds it useful now, however, they must be demented.

Tweak

For me, Tweak was the natural continuation of the article above, as I had learned a lot about the hardware registers on the VGA graphics card in the process of writing the article. Tweak is an interactive DOS utility for experimenting with the registers to create new graphics modes (new resolutions) and to test them. The resulting modes can be saved and used in your own programs. My greatest accomplishment using Tweak was a 400x300-pixel 256-color mode, which was quite unheard of at the time. By then, Super VGA was the norm, so no body noticed... :-) Another, easier feat was what I termed "Mode Q" (for "Qubed") - a 256x256 256-color mode. Since each row was 256 pixels, the X and Y coordinates of a pixel could be kept in a 16-bit register: X in the low byte and Y in the high byte. This eliminated quite a few multiplications that would otherwise be neccessary for converting (X,Y) to an address in memory. Flashback was the first game I saw using this. (Though the vertical resolution was 240 or something, the concept is the same.)

Zox3D

My fascination for 3D graphics culminated temporarily with Zox3D in 1993. It reproduces the same visuals as ID Software's popular game Wolfenstein 3D had, with some additions (mirrors, texture mapped floor and moving sky) and some omissions (no objects/actors). At the time I sold the source code for this demonstration for quite a bit of money. As the technology is practically obsolete, and nobody has enquired about it for many years, it is now put in the public domain. You can download the entire source code archive (including programming tutorial) at the above link. I started work on "Zoom3D", a Doom-like engine, but lost interest as soon as I realized where developments in 3D graphics hardware were heading.

TrayPOP

Click above to go to the home page of this nifty little mail reader I wrote for Windows.

Present

Currently I'm dedicating 120% of my programming efforts to the commercial product Petrel by Technoguide. Petrel is a geological modelling and visualization tool, all in 3D on a desktop PC. The development of this product lets me dig into topics like 3D user interaction, visualization and processing of gigabytes of data, clever geometrical algorithms, ditto image and signal processing algorithms, information design, encryption, ... in short, I'm having fun.

Recommended visits

(In no particular order.)

FFTW
This seems to be the fastest implementation of the Fast Fourier Transform in existance. C library.
Blitz++
This C++ library for scientific computing claims speeds comparable to and exceeding Fortran code due to heavy use of templates.
Crypto++
As complete as any encryption library in C++ could hope to be.
The Programmer's Stone
Great thinking on the field of programming. Also check out the follow-up, Reciprocality.
Crypto-Gram
Monthly newsletter on the topic of security and cryptography by expert Bruce Schneier.
OpenGL.org
News and help on the industry standard professional 3D graphics interface.
The International Obfuscated C Code Contest
Probably one of the most useless but most entertaining contests to be found... for programmers, that is.
 

rsc@nvg.org