Bob's packed programming page

My Projects:

Allegro is a game programming library for C/C++ developers distributed freely, supporting the following platforms: DOS, Unix (Linux, FreeBSD, Irix, Solaris), Windows, QNX, and BeOS (MacOS port is in alpha stage). It provides many functions for graphics, sounds, player input (keyboard, mouse and joystick) and timers. It also provides fixed and floating point mathematical functions, 3d functions, file management functions, compressed datafile and a GUI.

I am currently leading the development of the Allegro 5 graphics API.

AllegroGL is an add-on for the Allegro game programming library, which provides functions to allow you to use OpenGL alongside the regular Allegro functionality: you use OpenGL for your rendering, and Allegro for miscellaneous tasks such as window management, gathering input, doing timers, getting cross-platform portability, loading data, and drawing your textures. So this library fills the same hole that things like glut do.

FBlend is an add-on for the Allegro game programming library to make software color blending super-fast. The code is up to 13 times faster than Allegro's blenders, and comprises routines made in MMX and SSE, as well as a C version for older CPUs.

D.U.M.B. is a tracker/mod player started by Ben Davis and me. It's still in early planning stages, but it can play its own digital music format (.duh). It can also play Impulse Tracker files (*.it) better than ModPlug and MikMod (used in Winamp). Currently supports all IT effects, playing samples at various pitches, a low-pass freqency filter, aliasing, linear, quadratic and cubic spline sample interpolation. for playback. It also supports other tracker formats, such as MOD, XM and S3M.

(Description by Kreed, the original author) Images rendered by most emulators are lo-res, and when put on a hi-res monitor, the image is either really small, or really blocky when stretched. Today's computers are fast, so why not use some of that horsepower to make a beautiful, big, scaled image from the small one??? 2xSaI tries to do just that. Kreed wasn't quite satisfied with Eagle (another good engine with similar goals), so he started with his own engine, 2xSaI. 2xSaI is a one-pass engine which scales bitmap images by a factor of 2, while trying to keep the orginal smoothness and brightness of the original bitmap (in other words: reducing blockiness and bluriness to a minimum). 2xSaI borrows some ideas from Dirk Stevens' Eagle Engine, but is (fundamentally) a lot different. It was originally created for (and is currently used in the dos port of) Snes9x.

I have updated Kreed's Super2xSaI and SuperEagle engines to be portable and work with the new Allegro WIPs. I also added a 32bpp rendering mode, added makefiles, fixed a few bugs, wrote some docs and converted the whole thing to C.
Currently, Kreed's original code is still faster, but that is likely to change :-P

Set Up Us the Bomb! is the TeamHack compeition entry by Team Zig (Ben Davis, CJ and me). I'm not sure how to describe this game. It's sort of a cross in between Mario Kart's battle mode, Bomberman, and Worms. You control a hovercraft pod, and run around an arena trying to blast your opponents to oblivion! Hit animals to get powerups, and watch them splatter blood all over the place. Pick up bombs, magnetic bombs, bomb launchers, or seeking bombs and try to blow up other players while evading their own aresenals. Supports 1-4 players (via split screen), A.I. (artificial idiocy), fully 3D, multi-lingual (English, French, and Spanish).

Zasx is my SpeedHack 2001 entry, which means it's been done in less than 72 hours :-) Zasx is an improved Asteroids clone. The goal is simple: clear the asteroid field wave after wave. Sounds easy? Think again. Features 640x480x8 with full frame animations, color additive effects and multiplayer support!
Source code and Windows binary are available, although it's compilable (and runs!) in DOS, Linux, X-Window, BeOS, and MacOS.

Sunrise is my outdoor 3D engine. Its been mainly built as a technology demo, to try out new things, and to gain experience in the world of 3D. Sunrise provides a simple way of loading and displaying meshes and sprites, removing hidden surfaces (backface), managing textures, lights, fog, the camera, world mesh data, terrain rendering (via hightfields, color maps and detail maps), quaternion orientation for meshes and cameras, axis-aligned bounding boxes, and drawing text.
The current demo shows off the terrain engine with detail map, color map and height map. Alpha-tested sprites are also included (the trees), as well as alpha-blended sprites (the sun). The sky is a Mesh consisting of a half-dome, slightly stretched, and textured. The introduction texts are provided by the system (the font is Arial) thus are drawn as a series of solid polygons and polylines instead of proper textures. Finally, the night-dawn-day effect is acheived by variying the color and thinkness of the fog.

Graviton is my French Baccalaureat's computer project. It's an (incomplete) 3D space simulator game (FreeSpace style). Intertia, Collision response, energy consumption, heat management, and distance targetting are all features of Graviton engine.

AGLF - AllegroGL Font and text add-on. This library makes it trivial to use text in OpenGL programs. Load system fonts, and convert Allegro fonts. Can use display lists, textured quads, bitmaps, vector fonts, etc. Draw text in 3D! Designed for minimal API and maximum flexibility.
AGLF has now been merged into AllegroGL (see below), so this implementation is now deprecated.

-- Robert J Ohannessian