These sources have been released to the public domain without any warranty. All I wish is that you would send me an email if you use any of them. I will consider releasing more code if there is interest. Or when I feel like it.

(Funny thing that; you ask for a postcard, you get email. You ask for email, you get nothing).

Major Projects

SoLoud Audio Engine

Downloads and information

Free (more free than GPL), easy c/c++ audio engine for games.

TextFX Text Mode Graphics Library

Downloads and information

The "famous" TextFX textmode graphics library, converting graphics to NT console art.


More info and downloads

Extremely Simple Capture API

Simple DLL interface to use video capture devices (i.e. webcams), along with a simple example that uses SDL, as well as a couple even simpler examples that don't even require SDL.

Compressed File Library (CFL)

Information and downloads

Compressed File Library

A DOOM .wad like virtual filesystem.

The Rest


String tokenizer

One of the tasks I find myself doing over and over again is tokenization, or lexer work. So I figured I'd just dust off my old 'tokenwad' from CFL, clean it up, add all the out of memory checks, and re-release it.

DialogTree (D3) Editor / Engine

dialog tree middleware

Dialog tree engine and editor. A bit under construction, but already usable. Outputs in XML and JSON formats as well as proprietary binaries.

The Hershey Fonts

in vertex buffer friendly format

The Hershey Fonts

I've written a converter for the Hershey fonts to a vertex buffer friendly format. The page contains all the fonts in both original and converted formats, font previews and the converter itself.


Sol's 2d gl basecode 2.1

Slight clean-up, as well as a little functionality update to support mixing of 2d and 3d content. Also ditched sdl_image, replacing it with public domain image loading functions.


Boom! Boom! Driller! Source release

Source dump of Boom! Boom! Driller!, sans audio code. Couldn't get it to compile with a little effort, but the sources should be complete. If you get it to compile, toss me a mail =)


DirectDraw wrapper 0.1

Wrapper for DirectDraw, DirectDraw2, DirectDrawSurface and DirectDrawPalette. Does logging of the calls to a file and forwards the calls to real ddraw.dll. Made to analyse what the heck a game is doing, and possibly to work as a base for a better ddraw.dll replacement for said game.

Rather unfinished and unstable. Only the bits are implemented that the game used, and other apps may or may not work. In any case this is more of a research / base code for further development, and nothing really finished.

I'm releasing this in case someone has use for it. Based on these guys code, but largely reworked (their code only cared about ddraw7).


Sol's 2d gl basecode 2.0

Updated to include all improvements from the Atanua project. Better IMGUI widgets (esp. slider), portability to linux and OSX (including different endianess), some simple collision routines added, etc.


Sol's 2d gl basecode 1.0

Pile of source including bunch of routines handy for quick 2d game programming. Features include particles, sprites, fonts, IMGUI widgets (button, scrollbar, text field), etc.


Theremincampoop 1.0

A webcam-based musical instrument using ESCAPI. Show your camera some colorful objects and enjoy the noise.


Attractor Explorer 1.0

Tool to play around with strange attractors, along with source. To compile the source you need wxwidgets configured with opengl enabled (and a lot of patience). Win32 binaries included.


MIDI parser

A parser for MIDI files that I wrote when I was doing a small softsynth for an AVR microcontroller.


Interjector 1.0

Simple C preprocessor that inserts macros at all function entry- and exit points. These macros can then be defined to perform different things, such as call flow logging, performance analysis, and similar diagnostics.


L-system fractals in OpenGL using SDL.

I had a l-system engine in "gateways". I re-built an l-system engine with more or less the same features for "the line age". This zip contains the sources, a bunch of the l-systems from the demo, as well as win32 binaries.


PQ-torus knots in OpenGL using SDL.

Early 2004, I decided to give PQ-torus knots a spin based on the theory on this blackpawn site. The code uses SDL as the basis and renders single-strip texture-wrapping-corrected PQ torus knots using OpenGL. And it generates normals and everything. For one reason or another I never got to release this earlier. Zip contains all sources and pre-built win32 binaries.


PCXLite - lossless PCX compressor.

A PCX compressor I made in 1998, now ported to windows. Analyses PCX files and rearranges the palette in order to get most out of the PCX compression. Due to the way photoshop saves PCXes, this tool can chop as much as 25% off PCX sizes. It's another question whether anyone finds any use for it these days =) All source etc. included.


Median cut color reduction source. Re-entrant, completely dynamic, optimized for speed. Uses radix sort.


Deluxe paint animator PC player source. This player has pretty much same interface as the fli player. I'm pretty sure someone wants this source pretty badly, as it gets called after every now and then.. based on someone elses' work which was very horrible, but completely recoded.

Also includes a fun rant regarding the format.


Picket fence malloc debugger v1.4, designed to help hunting down pointer-specific bugs in C programs.

Like the name implies, this is a very bad imitation of electric fence on linux. As dos4gw environment does not support any kind of memory protection, I had to cope otherwise.. download it and read the manual.


Textmode fli animation player: includes re-entrant output device independent fli/flc player, truecolor buffer to textmode converting routines, and examples of fli players in 13h (320x200x256c) and textmode.

Fli and flc animations can be made at least with autodesk animator, 3d studio and Dave's Targa Animator; fli files are 320x200, flc:s vary in resolution. All flc/flc files are 256c. Flx and flh variants exist which use true- and highcolor, respectively, but I haven't found any information of these.