The Hall of Fame

I hope I've remembered everyone who ought to be mentioned here. If your name should be included, my apologies, and please tell me so I can correct the oversight!


A.Cottrell (
Changed the grabber to use a more robust (locale-independent) date format.

Adrian Oboroc (
Wrote the LBM loader.

Alex Demko (
Suggested lots of improvements to the datafile system, and provided code for handling the 8x16 BIOS font format.

Alessandro Monopoli (
Added the Italian translation of the system messages.

Andreas Kluge (
Wrote the Ensoniq Soundscape driver and fixed division bugs in the fix class.

Andrei 'old-boy' Ellman (
Contributed the polygon_z_normal() function.

Andrew Ellem (
Wrote the original version of the digital audio streaming code.

Andrew Geers (
Added the -ppassword and -nosound options to the grabber, scrolling support in the image viewer, and the flipped rotated sprite routines.

Andy Goth (
Made the gfx_card config variable more flexible, added the 256x256 tweaked VGA mode, and wrote the d_text_list_proc() dialog object.

Angelo Mottola (
Added the BeOS joystick, MIDI and windowed graphics drivers, added mouse wheel, display switching and close button support for BeOS, and wrote the DGA2 driver and close button support for X. Contributed a bfixicon utility. Added triple buffering support to the BeOS port and added fetch_mode_list() to the BeOS and DGA2 fullscreen drivers. And, oh, contributed the QNX port too.

Annie Testes (email unknown).
Added font_height, render_char, char_length hooks to FONT_VTABLE. Fixed several glitches in the unicode support. Added a pack_fdopen() function. Caught a misordering in the X system shutdown. Found ASCII strings that needed to be converted.

Antoine Mathys (
Added the Swiss keyboard mapping.

Anton Ragnarsson (
Contributed the Swedish keyboard mapping table.

Antti Haapala (
Fixed the setup program to display the right frequency list for each type of soundcard, and contributed the Finnish translation of the system messages.

Antti Koskipaa (
Wrote the DOS driver for WSS (Windows Sound System) cards.

Arne Steinarson (
The fixed point square root routine came from his fix-float library.

Attila Szilagyi (
Fixed SVGAlib horizontal scrolling.

Ben Chauveau (
Added support for Tseng ET6000 cards (now available as part of the FreeBE/AF project).

Ben Darnell (
Put together the 2.11 release of Allegro while I was away from the net, and wrote the original version of the Allegro FAQ.

Ben Davis (
Added set_volume_per_voice(), made silent voices continue playing, and fixed other minor bugs in the mixer. Fixed a bug in create_rgb_table(). Adapted polygon functions to handle two coincident vertices. Added the set_window_close_button() and set_window_close_hook() framework. Added support for timers with parameters under Windows.

Benjamin Joel Stover (
Wrote the initial version of the fullscreen X-Windows graphics driver.

Bertrand Coconnier (
Modified routines in poly3d.c for subpixel and subtexel accuracy. Speed enhancements in polygon functions. Fixed blending in C version of atex_lit scanline functions, added scanline subdivisions in C scanline functions and Z-buffer polygon functions. Merged in Calin Andrian's P3D library.

Burton Radons (
Optimised the truecolor pixel blending function, converted the blenders to the new single-handler format, and added the range of Photoshop-compatible blender functions.

Calin Andrian (
Wrote the truecolor, MMX, 3DNow!, masked lit mode, translucent and Z-buffered polygon rendering routines, the clip3d_f() function, and also the scanline sorting functions for 3D scene rendering, and his P3D addon library was merged in.

Calvin French (
Added the -w (always update) switch to dat.exe.

Carsten Schmidt (email unknown).
Wrote the the initial version of the Linux GGI driver.

Carsten Sorensen (
Wrote the the ESS AudioDrive soundcard driver.

Cloud Wu (
Optimised the truecolor pixel blending functions.

Chris Graham.
Suggested to add a new flag for Windows NTFS compressed files.

Chris La Mantia (
Wrote the d_radio_proc(), d_icon_proc(), and d_slider_proc() dialog objects, added the D_DISABLED flag, improved the GUI handling of different font heights, and added the right aligned text functions.

Chris Robinson (
Wrote the fixed point clip3d() function.

Christian Schueler (
Changed the optimisation settings for better performance.

Daniel Nilsson (
Enlarged the starfield in exstars, and fixed an incorrect range in exlights.

David A. Capello (
Made dotted_rect() avoid bank switches. Fixed a problem with lost GUI mouse clicks. Made d_menu_proc steal/return focus when activated/deactivated and fixed a problem with submenus.

David Kuhling (
Optimised the fsqrt() routine, and added fhypot().

Dave Thomson (
Added the RGB <-> HSV conversion routines, the autocrop function to the grabber, and wrote the 3d starfield example program (exstars.exe).

David Calvin (
Wrote the original version of the sound setup utility.

Deepak T (
Fixed clipping in three C sprite drawing routines.

Dmitriy Kazimirow (
Provided the Russian keyboard mapping and message translation files.

Dominique Biesmans (
Wrote the mode-X version of draw_sprite() and the mode-X <-> linear blitting functions.

Doug Eleveld (
Wrote the d_textbox_proc() dialog object and the new grabber help system.

Eduard Bloch (
Fixed a freeze caused by the ESD detection code, fixed a bad behaviour of the config routines, and suggested better ways to find the path to the executable in Unix.

Edward Boone (
Provided scancode mapping tables for the AZERTY keyboard layout.

Elias Pschernig (
Added a COLORCONV_KEEP_TRANS mode. Contributed the wfixicon utility. Contributed several enhancements to the grabber.

Eric Botcazou (
Made the DGA driver work better in 8bpp and 32bpp modes, improved the DirectX windowed driver and Windows graphics subsystem, partially revamped the Unicode API and added uszprintf(), added file_select_ex(), the unified al_find*() interface, an Unicode example, a new filetest, rewrote the fixdll script, revamped the Borland C++ build process, fixed lots of bugs and did truckloads more work on the Windows port too.

Erik Sandberg (
Optimised the 8 bit draw_sprite() and draw_trans_sprite() functions, and helped with the Swedish message translation.

Ettore Perazzoli (
Optimised the linear -> mode-X blitting function.

Evert Glebbeek (
Put set_gfx_mode on a diet and added a config entry for specifying the card to be used for GFX_AUTODETECT_WINDOWED.

Fabian Nunez (
Added support for the CH Flightstick Pro and Logitech Wingman Extreme joysticks, 3-button mice, and the extended keys on a Microsoft keyboard.

Fabrizio Gennari (
Contributed the DB9 and TurboGraFXoystick drivers.

Francois Charton (
Wrote the Paradise graphics driver (now available as part of the FreeBE/AF project), improved the VGA palette setting code, and helped with the TexInfo conversion of the docs.

Frodo Baggins (
Made the Portuguese keyboard mapping.

Garret Thomson (
Wrote the music used in the demo game.

George Foot (
Did a great deal of work on the Linux console version. Also wrote the AWE32 driver, added the MIDI pause/seek functions, and provided the basis of the SoundFont reader used in the pat2dat utility. Fixed the C fceil() function and added the ffloor() function.

Gorka Olaizola (
Added the Redhat RPM .spec file.

Greg Hackmann (
Contributed the Borland C++ Builder port.

Grzegorz Adam Hankiewicz (
Wrote several of the example programs, suggested the "compress" makefile target, translated the docs and system error messages into Spanish, suggested the idea of embedding the setup utility into other programs, wrote some documentation and corrected the .texi generation to improve texi2dvi output, improved the makedoc utility, added reload_config_texts() and did plenty of other things too.

Grzegorz Godlewski.
Contributed a Polish localization patch and added support for lower and upper altgr tables.

Grzegorz Ludorowski (
Wrote several of the example programs, and made the intro animation and graphics for the demo game.

Guilherme Silveira (
Modified the file selector to only list valid drive letters.

Gunter Ladwig (
Wrote the OS/2 detection routines and added the three-button mouse emulation.

Haruhiko Okumura, 12-2-404 Green Heights, 580 Nagasawa, Yokosuka 239, JP.
Wrote the original version of the LZSS compression code.

Henrik Schmidt.
Found a workaround for the switching problem under Windows.

Henrik Stokseth (
Contributed a native Mingw32 build which can also be built with a cross-compiler and the Cygwin compiler. Much improved OS detection. Added get_gfx_mode_list() and methods for querying the VGA, Mode-X, Xtended, VESA, VBE/AF and DIRECTX drivers for a list of possible GFX modes. Rewrote the mode-selector to use get_gfx_mode_list(). Rewrote/updated some scripts and reworked the build system many times.

Isaac Cruz (
Fixed a bug with accelerated drawing onto sub bitmaps of DirectDraw surfaces, added the GFX_DIRECTX_WIN driver, fixed a Windows sub bitmap locking bug, added Windows desktop_color_depth and yield_timeslice routines, and made extensive modifications to other aspects of the Windows code.

Ivan Baldo (
Wrote the 15/16 bit dithering code and optimised the sprite rotation routines.

James Arthur (
Documented the Photoshop-style truecolor blender routines.

James Hyman (
Added support for quoted strings in the get_config_argv() function, and the dithering code for paletted images.

Jan Hubicka (
Vastly improved the speed of the create_rgb_table() function.

Jason Wilkins (fenix at io dot com).
Wrote the quaternion math routines, and contributed the BeOS port.

Javier Gonzalez (
Corrected mouse movement speed, made allegro_message() use title from set_window_title(), added close button hook support and improved switching in Windows, fixed bad clearing of subbitmaps, and made bug reports and suggestions for improvement. Contributed bidirectional looping and backward playing support for the DirectSound driver. Fixed a latency problem with audiostreams.

Jim Flynn (
Removed floating point calculations from the AWE32 MIDI driver.

Joaquin Hierro Diaz (
Made the mapping table for Spanish keyboards.

Joerg Rueppel (
Added more flexible wildcard matching for object names in dat.exe, and the find_datafile_object() function.

Johan Peitz (
Fixed and enhanced the Win32 joystick driver. Contributed an 'Alex the Allegator' icon.

Johan Venter (
Fixed some problems with the RSXNT and Mingw32 makefiles.

Jonas Petersen (
Added the save_bmp() function, and support for the OS/2 BMP format.

Jonathan Tarbox (
Wrote the mode-X setup code, the FLI/FLC player, and contributed parts of the joystick handler.

Jorrit Rouwe (
Provided a new and much cooler set of FM instrument definitions for the Adlib MIDI driver.

Jose Antonio Luque (
Improved the Windows joystick driver, and optimised the 16 bit blit() and masked_blit() functions.

Joshua Heyer (
Wrote the original version of the OSS sound driver.

Keith Gerdes (
Fixed the DirectDraw overlay mode driver.

Kerry High (
Contributed the SNES joypad driver.

Kester Maddock (
Wrote the Wingman Warrior joystick driver.

Knut Pape (
Improved the Mingw32 readme file.

Krzysztof Krzyzaniak (
Wrote the load_voc() function.

Laurence Withers (
Added destroy hook to font structure, worked on const-correctness throughout the library, implemented the new FONT structure and made some modules avoid linking dependencies.

Lee Killough (email unknown).
Added the low-level hook routine to the keyboard handler, and fixed a couple of bugs.

Lennart Rolland (
Contributed the Norwegian message translation.

Lorenzo Petrone (
Contributed the gfxinfo utility and added two FAQ entries.

Lucas Vignoli Reis (
Added the Portuguese (Brazil) message translation and keyboard mapping.

Maiolino Carmelo (
Added the Italian keyboard mapping table.

Manni Heumann (
Fixed some problems with the German keyboard mapping table.

Marcel de Kogel (
Not content with fixing my broken MPU-401 driver, Marcel went on to provide a set of vastly improved drum sounds for the OPL driver, to help me sort out some problems with reentrant interrupts, to supply the half of the joystick code that didn't come from Jonathan, and to locate a stupid mistake in my VESA linear framebuffer code.

Marcel Smit.
Corrected a bug that caused errors when drawing persp. correct polys facing the screen.

Marco Campinoti (
Added 15 and 24 bit support to the native Tseng ET4000 driver (now available as part of the FreeBE/AF project).

Marco Marmulla (
Added 16 bit support to the load_voc() routine.

Marian Dvorsky (
Wrote the Windows GDI interface routines.

Marius Fodor (
Added support for the Sidewinder and Gravis GamePad Pro.

Marek Habersack (
Did the original Linux console port (brave man: this was the first ever work done on porting Allegro away from DOS), which is the basis of the code we are still using today. Added support for the more recent Trident chipsets (now available as part of the FreeBE/AF project).

Mark Wodrich (
The brain behind sub-bitmaps, flicker-free mouse pointers, and the ability to import GRX .FNT files into the grabber.

Markus F.X.J. Oberhumer (
Fixed the Video-7 scrolling function (now available as part of the FreeBE/AF project), optimised the color mapping routines, and made many useful suggestions like the addition of a vid_phys_base field to the graphics driver structure.

Martijn Versteegh (
Added the config hook extension mechanism.

Mathieu Lafon (
Added the French keyboard mapping, support for the Pause/PrtScr keys, and changed the key[] table to a normal/extended bitfield.

Matthew Bowie (
Added support for 4-button joysticks.

Matthew Leverton (
Fixed a bug with mouse mickeys in windowed mode under Windows. Fixed a problem with al_find*() and NTFS partitions under Windows. Added missing header files to be installed by the Windows binary distribution.

Maxime Carey (
Contributed the Canada (French) keyboard mapping file.

Michael Bevin (
Optimised the create_trans_table() function.

Michael Bukin (
Ported the whole thing to Unix/X, and contributed a _lot_ of patches to improve the portability, robustness, and performance of pretty much the entire library.

Michael Rickmann (
Ported the Windows code to Mingw32.

Michael Tanczos (
Fixed some bugs in the FLIC player.

Michal Mertl (
Wrote all the 24 bit graphics code, the optimised palette generation function, and a fair amount of the other truecolor stuff too (bitmap scaling, image loading, etc).

Nathan Albury, aka Rubicant (
Improved the fire routine in examples/exflame.c (my original version didn't really look very much like flames :-) and gave me some extremely useful ideas about how to implement translucency.

Neil Townsend (
Improved the accuracy of the timer routines, and added the callback parameters.

Nick Kochakian (
Wrote the DirectSound input driver.

Ole Laursen (
Contributed the Danish keyboard mapping table and system message translation, and made the Unicode utolower() and utoupper() functions understand the entire 16 bit character set.

Olly Betts (
Modified the djgpp makefile to support cross-compiling on a Linux machine.

Owen Embury (
Wrote part of the translucency/lighting code.

Owen Rudge (
Contributed a DLL version resource script and a mkdata.bat script.

Ove Kaaven (
Fixed a bug in the ATI mach64 driver (now available as part of the FreeBE/AF project), added native truecolor and linear framebuffer support to the ATI driver, contributed the Norwegian keyboard mapping, and added MIDI and sample input features to the MPU and SB drivers respectively.

Patrick Hogan (
Wrote the draw_gouraud_sprite() function, and made Windows audiostreams work properly.

Paul Bartrum (
Contributed the ellipse drawing functions.

Paul Furber (
Provided the floating point apply_matrix_f() function.

Paul Hampson (Paul.Hampson@Pobox.Com).
Improved and fixed some problems in the SNES gamepad driver.

Paul Pinault (
Translated the system error messages into French.

Pavlos Touboulidis (
Made file_select() able to include or exclude files based on their attributes.

Pedro Cardoso (
Contributed the tweaked 80x80 VGA mode.

Peter Cech (
Added grabber support for the 8x8 BIOS font format, and support for hot-swapping between a custom keyboard layout and the standard US mapping. Optimised the alpha sprite blending routines. Added non-ASCII space recognition to uisspace().

Peter Monks (
Wrote the Video-7 graphics driver (now available as part of the FreeBE/AF project), and showed me how to set up the unchained 640x400 mode.

Peter Palotas (
Added the keyboard callback routine.

Peter Pavlovic (
Added the Slovak keyboard mapping and message translation, stopped the DOS file selector from listing virtual drives, did the same for the Windows file selector, improved the support for accented character maps in the keyboard driver, and made aesthetic modifications to the GUI menu system.

Peter Puck (
Helped with the Mingw32 native build.

Peter Wang (
Added the mouse_z wheel input support to the Linux code, fixed problems with the ESD sound driver, wrote the ALSA sound driver, wrote the BeOS sound driver, added OSS MIDI and sample input support, added banked mode support to the SVGAlib driver, wrote the X DGA mode switching code, improved the Linux joystick driver, X11 fullscreen, DGA2 and DGA driver, added pthread timers under Linux/Unix and did loads of other things too.

Phil Frisbie, Jr. (
Wrote the CPU type detection code.

Przemek Podsiadly (
Added hicolor versions of the 3d polygon code.

Revin Guillen (
Added the position_dialog() function.

Richard Davies (
Added support for PSX and N64 joypads.

Richard Mitton (
Added support for 6-button joysticks, and wrote the 12-bit color example program (ex12bit.c).

Richard Reeve (
Fixed a silly mistake with gcc 3.0.x detection.

Robert J. Ragno (
Wrote the Gravis GrIP driver, and made some improvements to the Wingman, PSX, and throttle input code.

Robert J. Ohannessian (
Added MMX optimisation for the 8 and 16 bit clear() functions, and fixed bad clearing of subbitmaps. Also added SSE detection and optimized some masked_blits with SSE instructions. Added some routines to the unified color convertor and made some of them more robust. Revamped the retrieval mechanism of CPU capabilities. Did plenty of other things too.

Robin Burrows (
Provided a new page flipping code for the DirectDraw subsytem, added a Windows sound driver using the Allegro mixer and another using waveOut. Fixed two glitches in the DirectDraw code.

Romano Signorelli (
Added an arc plotting routine.

Ronaldo Hideki Yamada (
Contributed the Macintosh port of Allegro.

S.Sakamaki (
Added the VESA 3.0 refresh rate control code.

S.Suzuki (
Wrote the IF-SEGA /PCI, /PCI2, and /ISA joystick interface drivers.

Salvador Eduardo Tropea (
Improved the keyboard routines (better handling of extended scancodes, keyboard LED support, capslock and numlock, and alt+numpad input), contributed the 320x100 VGA graphics mode, added support for proper 16 bit sample mixing, fixed compilation on GCC 3.x and made numerous other useful suggestions, contributions and bugfixes.

Santeri Saarimaa (
Made the Finnish keyboard mapping.

Sask Allegro (
Added support for more than two joysticks in the Windows port.

Scott Harrison (
Added the OpenDOS detection code.

Sean Gugler (
Added the set_leds() function.

Seunghwan Ji.
Made makedoc output correct html and rtf files for Korean.

Seymour Shlien (
Contributed the Windows BMP file reader, bezier spline drawer, and justified text plotting function.

Shawn Hargreaves (
Progenitor. Wrote everything that wasn't written by somebody else.

Stefan Eilert (seilert@rz.Uni-Osnabrueck.DE).
Added support for a second joystick.

Stefan Schimanski (
Wrote the Windows version pretty much single-handedly.

Stefan T. Boettner (
Wrote the Linux SVGAlib driver.

Stepan Roh (
Added a Czech keyboard mapping and system message translation, the Latin Extended-A characters in the default font, and the codepage support in the textconv utility, fixed some problems with the ESD sound driver, and helped make Allegro build better on some Unix platforms. Fixed const related problems in C versions of ASM routines.

Stephen Kittelson (
Made bugfixes and tweaks to the keyboard system.

Sven Sandberg (
Fixed a problem with save_bitmap() rounding the image widths, optimised the create_light_table() function, optimised the fixed point trig routines, provided the Swedish message translations, improved the file selector sorting algorithm, optimised the spline routines, added the ustrrchr() function, improved the usprintf() handling of floats, changed the Z-buffer API, improved rotation functions and provided other bugfixes.

Added the 320x600 and 360x600 resolutions to the mode-X driver.

Teijo Hakala (
Added wheel support to the Windows mouse driver.

Tero Parvinen (
Designed most of the new sound API.

Theuzifan Sumachingun (
Improved the cpu detection for Cyrix chips and made the file selector only list valid drive letters.

Thomas Wolf (
Corrected some errors in the German keyboard mapping, and added the German translation of the system messages.

Tim Bird (
Worked on the Linux console port.

Tim Gunn (
Wrote the TGA reading/writing routines.

Timothy Terriberry (
Fixed several bugs in the RGB <-> HSV conversion routines.

Tom Breton (
Added the functionality selection #ifndefs to allegro.h.

Tom Fjellstrom (
Wrote the ALSA MIDI driver.

Tom Novelli (
Wrote the original version of the digital MIDI driver.

Tom St Denis (
Fixed clipping of transparent objects.

Tomohiko Sugiura (
Added the KEY_ABNT_C1, KEY_YEN, KEY_KANA, KEY_CONVERT, KEY_NOCONVERT and other keys to the input handler, and organised getting the IF-SEGA joystick drivers by S.Suzuki merged into my codebase. Added more aggressive Sidewinder joystick driver.

Vincent Penquerc'h (
Added the D_DIRTY flag and mouse button press/release events to the GUI system, optimised the 256 to truecolor blitting code to avoid repeated conversions of the palette table, added scare_mouse_area(), added the yield_timeslice() function, added the update selection function to the grabber, added the XCRP and YCRP properties to datafiles in general, and made various other bugfixes and improvements. Responsible for the big header split up, and did loads other stuff too.

VolkerOth (
Integrated the concepts of scrolling and edit_proc objects.


First, a big thank you to all the people who help me test and debug this code. It sometimes gets frustrating to receive hundreds of messages saying "it doesn't work!", but they are useful all the same...

Andre Baresel (, and Craig Jackson (, provided a tremendous amount of information about SB hardware.

Benji York (
Provided hardware information for the Gravis GamePad Pro.

Charles Mac Donald (
Showed me how to set some cool tweaked VGA and mode-X resolutions.

Charles Sandmann (, DJ Delorie (, Eli Zaretskii (, and everyone else who has contributed to djgpp. I love it.

C. Schwerdtfeger (, for his help (and enourmous patience!) in getting the SB Pro-I MIDI driver to work.

Finn Thoegersen, Nordbanevej 3 C, DK-7800 Skive, Denmark.
Most of my SVGA hardware information came from his VGADOC package.

Eric Jorgensen (
Varmint's Audio Tools (VAT) gave me many useful ideas about how to play MIDI files.

Jamie O'Connell (
Several of the new Adlib drum patches, and the specifications for the .IBK file format, came from his SBTimbre package.

Jean-Paul Mikkers (
MikMod was the source of a lot of information about programming the SB, and also gave me the idea of dynamically reprogramming the PIT to get a really high resolution timer.

Joel H. Hunter (
His SB library for djgpp is excellent, and helped me a lot.

John Pollard (
The FM instrument definitions are based on his MID-KIT library.

Kendall Bennett and all the other cool people at SciTech Software.
These guys gave the world UniVBE, the VBE/AF API, and a lot of free information and example code. Plus they very kindly sent me a copy of the VBE/AF spec when I wanted one.

Kris Heidenstrom (
His PC timing FAQ was a big help.

Mark Feldman.
It goes without saying that the PCGPE was an invaluable resource.

Michael Abrash.
You just gotta love that man...

Paul Fenwick (
Various bits of the mode-X code (notably the split screen stuff) came from his XLIBDJ library.

powerjaw (
Sent me a Sidewinder gamepad so I could fix some problems with the driver for it. What a cool thing to do...

Robert Grubbs (
Provided hardware information for the Sidewinder joypad.

Robert Schmidt (
The register values for the 400x* mode-X resolutions came from his TWEAK program.

Tom Grandgent (
Organised and hosted the Allegro mailing list. Hurrah!

Vladimir Arnost (
Provided hardware specs for the OPL3 chip.

Frank Zappa, Mike Keneally, Pink Floyd, the Doors, Tori Amos, and all the other great musicians who provide me with things to listen to while I am programming.

My parents, John and Nancy.
I would never have made it through all those late night coding sessions without the cafetiere they gave me last Christmas :-)