Projects
This is a fairly candid look at some of the projects I’ve undertaken for the purposes of educating myself in the various topics under computer programming. I hope to document some of the up’s and down’s I had during these times.
(Note: This page is currently in progress as of Oct 8th 12:05. New content is in the process of being added during this time. When the page gets a bit too full to handle, separate pages will be created and this page will serve as a portal to them)
Quake III Renderer
Given id Software’s relatively open nature, the Quake series of engines were ideal to learn from to see exactly how a game engine works. All of the file formats are easy to work with, which lends themselves very well to self-education. With a simple rundown of the headers for the file formats, it’s essentially quite easy to get the gist of how the file formats work.

Features:
- Geometry is culled using PVS and Frustum Culling
- Lightmaps
- Meshes
3DS Renderer

MD2 Renderer

A renderer for the Quake II model format.
- Animation
- Linear Keyframe Interpolation
- Automatic Bounding Volumes Calculation (Spherical and Box)
MD3 Renderer
A renderer for the Quake III model format.

T3D Renderer
The Epic Games Unreal Editor (UnrealEd) exports its own native ASCII-based format. This is a loader and renderer for the format.

Ray Caster
Showing a basic indent into the wall:

Showing a corridor:

Now with textures:

Added some coloured ceilings, similar in style to Wolf-3D (1992):

Funny colour gradient for the ceiling to give a sunset look:

Testing some floor/ceiling textures (1):

Testing some floor/ceiling textures (2):

Terrain Chunk Based Culling

Terrain Chunk Based Culling is a method for splitting a terrain into a preset number of chunks that are tested against the view frustum to see if they are visible and renders those chunks if necessary.
While this method does increase performance dramatically (From roughly 4fps for a brute force render to 240fps) a 1025×1025 terrain split into 32×32 chunks however needs to perform a total of 1024 frustum checks. This in itself wasted too much performance. A hierarchical culling algorithm such as a quadtree should be incorporated to cull out large amounts of geometry with only several checks.
Doom Map Viewer

Doom Map Viewer is the forerunner to a top-down 2D geometry editor wrote in C++ / Win32 API. It currently displays the maps and allows navigation of the map, zoom feature, etc.
It comes equipped with an image viewer supporting all known Doom formats such as textures, sprites and patches for Doom WADs, as well as a sound player for PC Speaker and Digital Audio effects.
WinProcInfo (August 2004)

WinProcInfo was a utility for providing information about the user’s processor and general system information. I had never before used C++, Object Orientated (OO) software development, or assembly. It was decided that the development of WinProcInfo would be how I would learn the aforementioned skills.
The biggest downfall of the application that disallowed it any chance of competing with the similar applications out in the wild was my lack of ability to create a device driver that would allow reading of the Model Specific Registers (MSRs) that provide detailed processor information, such as multiplier, temperature, etc.
While my ability to learn C++, OO and basic Assembly on the fly was achievable, writing a device driver to handle the above was unachievable at the time.
OPN64 (Originally OPN-462) (April 2003)

The idea for OPN-462, which later became known as OPN64 was conceived in April 2003 as a just-turned-17 year old novices first attempt at programming. The idea behind OPN64 was to provide detailed information about an AMD based processor going by the three Ordering Part Number (OPN) codes on or around the processor’s core.
OPN64 eventually appeared in several computer magazines around the world as freeware and was featured for download on many major sites