# Changes from 4.3.0 to 4.3.1 (March 2007)

- Added a new mouse and cursor API. The new functions are:
  - al_install_mouse, al_uninstall_mouse, al_get_mouse, al_get_mouse_num_buttons, al_get_mouse_num_axes, al_set_mouse_xy, al_set_mouse_z, al_set_mouse_w, al_set_mouse_axis, al_set_mouse_range, al_get_mouse_state, al_mouse_button_down, al_mouse_state_axis
  - al_create_mouse_cursor, al_destroy_mouse_cursor, al_set_mouse_cursor, al_set_system_mouse_cursor, al_show_mouse_cursor, al_hide_mouse_cursor
- Added documentation for some parts of the 4.3 API using the NaturalDocs generation system. The documentation is nowhere near as good as a proper manual, but it's still better than nothing.
- Added a commented example demonstating the new API (exnew_events.c).
- Added CMake and SCons build systems. These are mainly for use by Allegro developers at present.
- Various bug fixes and minor changes.

# Changes from 4.2 series to 4.3.0 (July 2006)

- Basically we're just wrapping up what we have in version control up to now. See the commit logs if you want details.

  This release introduces a few new subsystems. We have an event system, a new keyboard API, a new joystick API, a new timer API, and the start of a new graphics API. All of these are subject to change, as is usual for a WIP.

  We are maintaining a certain level of source compatibility with the 4.2 API. If it's easy to maintain compatibility then we do it, otherwise compatibility is dropped. Obscure features are more likely to be dropped.

  This release has had minimal testing on Linux/x86, Windows/x86 (MinGW) and Windows/x86 (MSVC). It seems to work on some Linux/x86-64 machines also. Other ports are broken or untested.

  The new functions are as follows (in no particular order). No real documentation exists at the moment but interesting header files are: altime.h, display.h, draw.h, events.h, joystick.h, keyboard.h, timer.h.

  - al_current_time al_rest
  - al_create_video_bitmap al_create_system_bitmap al_scroll_display al_request_scroll al_poll_scroll al_show_video_bitmap al_request_video_bitmap al_enable_triple_buffer al_create_display al_set_update_method al_destroy_display al_flip_display al_get_buffer al_get_update_method al_enable_vsync al_disable_vsync al_toggle_vsync al_vsync_is_enabled al_blit al_blit_region al_blit_scaled
  - al_event_source_set_mask al_event_source_mask
  - al_create_event_queue al_destroy_event_queue al_register_event_source al_unregister_event_source al_event_queue_is_empty al_get_next_event al_peek_next_event al_drop_next_event al_flush_event_queue al_wait_for_event al_wait_for_specific_event
  - al_install_joystick al_uninstall_joystick al_num_joysticks al_get_joystick al_release_joystick al_joystick_name al_joystick_num_sticks al_joystick_stick_flags al_joystick_stick_name al_joystick_num_axes al_joystick_axis_name al_joystick_button_name al_get_joystick_state
  - al_install_keyboard al_uninstall_keyboard al_get_keyboard al_set_keyboard_leds al_keycode_to_name al_get_keyboard_state al_key_down
  - al_install_timer al_uninstall_timer al_start_timer al_stop_timer al_timer_is_started al_timer_get_speed al_timer_set_speed al_timer_get_count al_timer_set_count

# Changes from 4.2.1 RC1 to 4.2.1 (November 2006)

- Peter Wang made the Unix ports query the memory page size with sysconf() when necessary, instead of using the PAGE_SIZE constant, which seems to be Linux-specific.
- Matthew Leverton gave the STATICRUNTIME builds of MSVC new names by appending _crt (c run time) to the libraries. He also fixed the problem of incorrectly setting the EMBED_MANIFEST variable when using the STATICRUNTIME.
- Andrei Ellman fixed an inverted test in pack_fopen_chunk on Windows.
- Peter Hull made 32-bit icon generation by fixbundle endian-independent (colours were incorrect on Intel Macs).
- Peter Wang fixed a long standing bug where some compressed packfiles would not be read back properly (premature EOF). Reported by jman2050.
- Andrei Ellman spotted a free() of an internal buffer returned by tmpnam().
- Peter Hull fixed a problem with mouse-related deadlock on MacOS X as reported by Mike Farrell.
- Peter Hull implemented simulation of video bitmaps on MacOS X, so that page flipping will work.
- Peter Hull fixed an endian problem in the digital sound driver on MacOS X.
- Elias Pschernig and Chris Robinson fixed problems with UTF-8 filenames under Unix, as reported by Grzegorz. Non-ASCII non-UTF-8 filenames remain broken.
- Chris Robinson fixed some problems with non-ASCII filenames under Windows.
- Elias Pschernig made the X11 driver call XInitThreads, to make Mesa-OpenGL work together with Allegro. It can be disabled at runtime through a config variable.
- Andrei Ellman fixed a bug in datedit.c that could crash the grabber.
- Elias Pschernig added file_size_ex(), which returns a 64 bit integer to handle large files.
- Ron Novy made improvements to the test program.
- Peter Hull fixed problems with set_mouse_sprite() on Intel Macs.
- Peter Hull added universal binary support to the MacOS X port.
- Peter Wang and Evert Glebbeek independently fixed a problem with dependency generation for MacOS X on non-Mac systems.
- Many smaller fixes and updates by Peter Hull, Elias Pschernig, Peter Wang and Milan Mimica.

# Changes from 4.2.0 to 4.2.1 RC1 (May 2006)

- Michal Molhanec made msvchelp.exe work on Cygwin, where there was a problem with the case-insensitivity of environment variables. Reported by Milan Mimica.
- Peter Hull fixed a bug where Allegro detected keypresses on KEY_MINUS_PAD as KEY_PLUS_PAD.
- Peter Hull made OSX work correctly with Logitech sticks, as discussed with Ultio.
- Milan Mimica fixed some spin loops in the test program.
- Chris Robinson added UTF8/Unicode support for filenames in Windows.
- Milan Mimica made the Linux console driver more robust: set_gfx_mode used to get stuck in a infinite loop when there wasn't a console available.
- Evert Glebbeek made the C blitter use memmove for normal blits, with a bugfix by Milan Mimica. This can be disabled by removing a #define USE_MEMMOVE at the top of cblit.h so that it can easliy be tested against the older versions of the code.
- Christer Sandberg worked around a problem where one-line high bitmaps would crash with Electric Fence.
- Chris Robinson fixed a crash that occurred if the sound mixer quality level was set to 0 after the mixer was already initialised.
- Evert Glebbeek fixed the window title under X11, which was broken by a previous change.
- Peter Hull updated the endian detection under OSX as recommended by Apple.
- Miguel A. Gavidia and Jay Bernardo made qtmidi.m work on both PPC and Intel.
- Milan Mimica fixed a crash when vsync() on certain drivers.
- Elias Pschernig replaced the ALLEGRO_USE_C define with ALLEGRO_NO_ASM.
- Peter Wang restored the JACK driver to compiling state.
- Milan Mimica made the new transparent fonts be recognized as color fonts with is_color_font.
- Elias Pschernig made the modules path WIP version specific, for enhanced binary compatibility.
- Stijn Wolters clarified the documentation of init_dialog.
- Hans de Goede fixed a problem with dynamically generated stretcher code not being properly marked as executable on Linux (esp. SELinux).
- Hans de Goede fixed a busy wait in the X11 vsync simulation.
- Elias Pschernig makde it so modules under Unix are now searched in libdir as passed by the build machinery. Closes bug #1401840 from SF, reported by Paul Eipper.
- Milan Mimica added a get_volume and a get_hardware_volume function, to work as pendants to set_volume and set_hardware_volume.
- Milan Mimica corrected a case where a wrong structure on the stack was being cleared in the DirectSound input driver.
- Hans de Goede added a fullscreen driver for X11 which does not need XVidMode extension, and instead simply centers the window on the desktop and draws a black border around.
- Hans de Goede fixed a problem where switching to fullscreen mode under X11.
- Serge Semashko added Enter as a fire key in the demo game.
- Serge Semashko added fixed problems with Allegro working on Nokia 770.
- Peter Wang fixed some problems with binary compatibility checking in the 4.2 branch.
- Catatonic Porpoise added OpenBSD detection (in addition to FreeBSD and NetBSD) and fixed an issue with executable rights not set on the memory for the i386 stretcher on UNIX systems.
- Hans de Goede fixed a bug preventing the ALSA driver to work on big endian systems.
- Elias Pschernig and Chris Robinson fixed binary compatibility checking in allegro_init and install_allegro.
- Catatonic Porpoise fixed the example in the documentation of stretch_sprite.
- Hans de Goede made DIGMID work with absolute paths in the patches.cfg file.
- Peter Hull added code to make Allegro work better with user-supplied Nibs under OSX, as discussed with Thomas Harte.
- Matthew Leverton added embedding of manifests to the MSVC 8 build process.
- Neil Walker and Thomas Harte implemented a hardware accelerated stretch_blit() for the Windows DX port.
- Evert Glebbeek corrected a bug when destroying sub-bitmaps under Windows.
- Evert Glebbeek fixed a bug in pack_fopen_chunk() where a temporary file would be created in a non-writable location.
- Peter Wang changed a "/lib" option to MSVC's link utility to "-lib" as reported to be problematic by Karthik Kumar.
- Peter Wang fixed a crash in dat and grabber due to the return value of pack_fopen_chunk() not being checked.
- Elias Pschernig added support for anti-aliased bitmap fonts.
- Dennis Busch fixed the short description of add_clip_rect.
- Thomas Harte and Neil Walker fixed a problem with draw_sprite() and sub-bitmaps.
- Peter Wang fixed scancode_to_name(KEY_NUMLOCK) returning "PAUSE" in Windows.
- Peter Wang fixed page flipping and triple buffering in the demo game.
- Elias Pschernig added list_config_sections and list_config_entries functions.
- Hrvoje Ban added create_datafile_index and load_datafile_object_indexed functions.
- Peter Hull allowed use of "mingw" instead of "mingw32" in fix.bat and fix.sh.
- Peter Wang fixed a bug with SWITCH_BACKAMNESIA mode with the fbcon graphics driver.
- Peter Wang made the svgalib driver save and restore the palette on VT switches.
- Peter Wang fixed a problem with the fbcon driver and VT switching.
- Milan Mimica delayed Linux console initialisation until it is required. This way the user can write command-line programs using timers without needing a real console.
- Chris Jones fixed behavior of numeric keys when NumLock is on.
- Vincent Penecherc'h worked around a problem with 24-bit bitmaps in the assembler code.
- Tobias Dammers fixed a problem with the DirectSound input driver.
- Matthew Leverton fixed Ctrl-Alt-Del mistakenly being captured by Allegro under Windows
- Vincent Penecherc'h improved the implementation of set_ramp_cmap in the fbcon driver.
- Vincent Penecherc'h implemented get_refresh_rate for the fbcon driver.
- Vincent Penecherc'h fixed problems with the fbcon driver not restoring the original video mode when the driver exits.
- Victor Williams Stafusa da Silva made OS type detection handle Windows 2003 and Windows Vista.
- Chris Jones and Vincent Penecherc'h fixed load_wav to handle degenerate stereo wave files with an odd length.
- Annie Testes fixed all sorts of problems with the linux evdev mouse driver when using a tablet as the mouse.
- Annie Testes made the linux evdev mouse driver use the correct device files.
- Vincent Penecherc'h made the linux fbcon driver set a ramp colourmap for directcolor modes, otherwise colours in those modes were all wrong.
- Vincent Penecherc'h fixed a problem with the linux fbcon driver, where it would keep using the old pitch after changing resolutions.
- Serge Semashko fixed a typo causing crashs in _linear_draw_trans_rgba_rle_sprite24.
- Annie Testes fixed cursor speed and incorrect mickey computation bugs in the Linux evdev mouse driver.
- Vincent Penecherc'h made the Linux PS/2 mouse driver try /dev/input/mice by default, in addition to /dev/mouse.
- Warnings, code formatting and minor changes to code and build system by Milan Mimica, Evert Glebbeek, Elias Pschernig, Peter Wang, Peter Hull, Thomas Harte, Vincent Penecherc'h and Chris Robinson.
- Documentation updates by Tore Halse, Elias Pschernig, Milan Mimica, Peter Wang, Physics Dave, Ryan Patterson, Grzegorz Adam Hankiewicz, Andrei Ellman and Evert Glebbeek.

# Changes from 4.2.0 RC2 to 4.2.0 (November 2005)

- Peter Wang made fixmul() detect overflows as it used to do in the 4.0.x branch.
- Peter Hull fixed a bug in the fixbundle utility.
- Dennis Busch found a bug where d_clear_proc would not work properly if the GUI target bitmap is different from screen.
- Grzegorz Adam Hankiewicz made Allegro log all TRACE output with a prefix in the format "al-system level: ". This makes it easier to grep debug logs.
- Grzegorz Adam Hankiewicz made dialogs with MSG_CHAR/MSG_UCHAR handlers honor a D_CLOSE return flag without a D_USED_CHAR.
- Peter Hull fixed problems with the mouse position as reported by Allegro and the mouse position as known to OS X.
- Peter Hull made Command-Q not close the application if no exit-button callback is registered.
- Peter Hull fixed problems with joysticks under MacOS X as reported by Thomas Harte.
- Peter Hull fixed a bug preventing more than one Allegro application from being run at a time on Mac OS X. Reported by Thomas Harte.
- Peter Hull did a lot of other things for the MacOS X port too.
- Jiri Gabriel fixed loading of multiple ranges in a single bitmap with txt fonts.
- Milan Mimica and Jiri Gabriel fixed several bugs in extract_font_range.
- Dennis Busch fixed a Unicode bug in the mode selector.
- Evert Glebbeek added FA_ALL and FA_NONE file attribute flags.
- Peter Hull fixed a deadlock in OS X when calling vsync() while the screen was acquired.
- Robert Alfonso fixed a grabber crash when importing a new font range into an existing font. Reported by Milan Mimica.
- Chris Robinson fixed the fileselector in UNIXnot properly recognising filenames containing UTF-8 characters.
- Hrvoje Ban and Peter Wang wrote a documentation section that explains several common mistakes.
- Elias Pschernig disabled DGA auto-detection under X11
- i_am_drv added support for .rmi midis to the midi reader
- Elias Pschernig fixed a fix-point overflow in pivot_sprite.
- Michal Molhanec fixed several problems with the Watcom compiler.
- Peter Hull fixed an error with 'make uninstall' on MacOS X.
- Matthew Leverton added a programs: makefile target.
- Many small fixes and improvements by Michal Molhanec, Peter Hull, Chris Robinson, Peter Wang and Elias Pschernig.
- Documentation improvements by Grzegorz Adam Hankiewicz, Tore Halse and Peter Hull.

# Changes from 4.2.0 RC1 to 4.2.0 RC2 (August 2005)

- Grady Martin made the grabber consider deleting object properties as a change to the datafile.
- Milan Mimica fixed numerous bugs in extract_font_range().
- Peter Hull moved the 'magic chdir' in the MacOS X port to earlier in the startup process, so that the config file will be looked for in the resource directory if is present.
- Chris Robinson made create_bitmap(0,0) not return a bitmap that would later crash destroy_bitmap(). Zero-sized bitmaps are still not allowed so the assertions for debug mode have not changed.
- Elias Pschernig patched the Windows keyboard driver to get key_shifts working again with KB_SHIFT_FLAG, KB_CTRL_FLAG, KB_ALT_FLAG on Win98.
- Peter Wang changed hline and vline into aliases for internal symbols to avoid a conflict with the curses API. This change should be transparent for users.
- Matthew Leverton and Michal Molhanec updated the build system for MSVC 8.
- Grzegorz Adam Hankiewicz prevented make_relative_filename() from crashing with malformed parameters.
- Hrvoje Ban made ASSERT() actually abort in Windows.
- Chris Robinson made GUI menus work with gui_screen.
- Evert Glebbeek fixed reading of 32 bit Windows .bmp files, which was not supported. These files seem to be not very standard though, so it's unclear if it will always do the right thing. Alpha channels also seem not to be standard in 32 bit BMP files, so it's possible they're not read in correctly.
- Peter Wang and Peter Hull updated the ABI compatibility document. This documents our policy for the 4.2.x series.
- Extensive documentation updates from Grzegorz Adam Hankiewicz and minor updates due to Michael Faerber, Robert Ohannessian and Milan Mimica.

# Changes from 4.2.0 beta 4 to 4.2.0 RC1 (August 2005)

- Peter Hull fixed the MacOS X port to avoid an issue with the dead bootstrap context and cleaned up the dock notification. This means command line apps (with SYSTEM_NONE) run without the dock being notified.
- Peter Wang Added a COLORCONV_KEEP_ALPHA flag, as suggested by Gideon Weems.
- Peter Wang fixed issues with OSS in OpenBSD and made the configure script print a warning if Allegro is compiled without X11 support.
- Peter Hull set the compatibility version to 4.2.0 for MacOS X and added a MacOS X help file.
- Peter Wang made the Mode-X and VBE/AF drivers fail if Allegro is compiled as a C-only library in Linux and made the Unix port install liballeg*.so and the alleg-*.so modules with the execute permission enabled.
- Grady Martin standardised some of the grabber dialog boxes and added a ``move'` command to the grabber.
- Evert Glebbeek fixed a bug when loading some old datafiles containing monochrome fonts.
- Evert Glebbeek fixed a bug that prevented system cursors from working correctly in Windows.
- Olivier Blin fixed compilation problems for the ModeX driver with newer binutils.
- Shawn Walker fixed a bug in get_executable_name under some UNIX systems.
- Shawn Walker worked around a problem with some versions of GNU AS and fixed some errors in the configure script when not using GCC.
- Elias Pschernig made create_sample not unnecessarily clear the sample to 0.
- Bobby Ferris fixed the makedoc SciTE API output.
- Elias Pschernig fixed a too strict assert that prevented set_volume from working in debug mode.
- Paavo Ahola helped fix a problem with BCC and the C implementations of fixmul.
- Elias Pschernig fixed a cosmetic bug where the listbox was drawing a too big selection rectangle, reported by dthompson.
- Documentation and example updates by Grzegorz Adam Hankiewicz, Peter Wang, Elias Pschernig Michal Molhanec and Evert Glebbeek.

# Changes from 4.2.0 beta 3 to 4.2.0 beta 4 (June 2005)

- Matthew Leverton changed the default behavior of the grabber: default color depth is now the desktop, default mode is windowed and if fullscreen is specified, then desktop resolution is used by default.
- Peter Wang fixed compilation problems related to get_modex_screen() on UNIX and deprecated it.
- Robert Ohannessian fixed compilation problems for the assembler code with newer binutils.
- Peter Wang, Thomas Harte and Evert Glebbeek optimised fixmul() for different platforms.
- Robert Alfonso fixed a couple of warnings that with DJGPP.
- Grzegorz Adam Hankiewicz made the FLIC player yield.
- Miran Amon fixed an arbitrary limit in get_config_argv(). Evert Glebbeek fixed a memory leak in same.
- Thomas Klausner fixed a problem in allegro.m4 and automake 1.8+.
- Charles Wardlaw fixed some warnings with gcc 4 on MacOS X.
- Elias Pschernig removed the `256 items' limit from the dat utility.
- Julien Cugniere fixed a crash in the GUI if a new dialog was opened while a menu was still open.
- Shawn Walker fixed crashes with the keyboard driver under Solaris.
- Elias Pschernig split the demo game into multiple files and made the makefile handle a multi-file demo game.
- Evert Glebbeek fixed a bug where the hardware mouse wasn't displayed in Windows until the mouse was moved.
- J.P. Morris fixed rest_callback() under UNIX.
- Shawn Walker and Evert Glebbeek fixed get_executable_name() under Solaris and OpenBSD.
- Peter Hull fixed compilation problems with setAppleMenu under Tiger.
- Peter Hull fixed a deadlock on MacOS X related to mouse updating.
- Peter Wang fixed a problem with compiling the VBE/AF driver using newer binutils.
- Evert Glebbeek fixed a bug with colour conversions when loading a font from a datafile.
- Many code, example and documentation updates by Grzegorz Adam Hankiewicz, Elias Pschernig, Peter Wang, Evert Glebbeek, Andrei Ellman, Victor Williams Stafusa da Silva, Matthew Leverton, AJ, Michal Molhanec and Hrvoje Ban.

# Changes from 4.2.0 beta 2 to 4.2.0 beta 3 (May 2005)

- Grzegorz Adam Hankiewicz did several documentation updates.
- Evert Glebbeek cleaned up some of the global namespace pollution in the Windows port.
- Chris Robinson made improvements to the Windows sound driver.
- Chris Robinson made the GUI multi-selection box behave a bit nicer.
- Grzegorz Adam Hankiewicz added a bunch of ASSERTs to the code to check for out-of-range arguments.
- Jakub Wasilewski fixed a bug when loading greyscale TGA images.
- Evert Glebbeek fixed a bug where the bottom and right line of pixels was not updated on show_video_bitmap, as pointed out by Thomas Harte.
- Evert Glebbeek documented JOY_TYPE_* defines for Windows and Linux.
- Dark Nation restored the ability to read old-style encrypted packfiles, i.e. those produced before Allegro 3.9.30. This was silently removed from 4.1.18 when custom packfile support / decoupled compression routines were added.
- Evert Glebbeek made the grabber and dat utilities now use Allegro's builtin load_font() function and made datafiles properly store truecolour fonts and added a datedit_select() callback to datedit.
- Evert Glebbeek fixed some unsafe assumptions on the size of integer data types.
- Arthur Huillet fixed a typo in the docs.
- Elias Pschernig restored Alt+key = ASCII code 0 behavior for the Windows keyboard driver
- Evert Glebbeek fixed a bug that caused a crash when loading Allegro 1.x datafiles containing 4 bit bitmaps.
- Peter Wang clarified the mode select documentation and made the mode selector clear the input variables before passing them on to the filter.
- Peter Wang fixed a bug in the mode selector where disabled drivers were still shown with empty resolution lists. Pointed out by Hrvoje Ban.
- Elias Pschernig fixed Allegro's internal multithreading in Windows. This fixes a deadlock on exit.
- Robert Alfonso made the MSVC makefile call `link /lib' rather than ``lib'`, which doesn't work for the free toolkit.
- Peter Hull fixed a problem with hardware cursors not working properly in MacOS X.
- Peter Hull added a missing enable_hardware_cursor vtable entry and added OS native cursors for the MacOS X port.
- Grzegorz Adam Hankiewicz documented the online Allegro patch generator.
- Evert Glebbeek renamed datafiles._tx -> datafile._tx
- StApostol updated the FAQ to use rest(0) instead of the deprecated yield_timeslice().
- Evert Glebbeek silenced some GCC4 warnings in MacOS X.
- Peter Wang fixed warnings and errors with gcc 4.0.0 on the Unix port; reported by Milan Mimica.
- Peter Wang added the preprocessor symbol ALLEGRO_NO_FIX_CLASS that the user can define to not pull in the ``fix'` class in C++ programs.
- Peter Wang removed the exdodgy example.
- Elias Pschernig fixed another X11 async reply bug.
- Elias Pschernig made the seek in expackf test work with CR/LF line endings.
- Evert Glebbeek fixed a small bug that prevented the Allegro template for Project Builder from installing correctly on MacOSX.
- Elias Pschernig enabled warnings about unused variables with --enable-strictwarn in unix.
- Peter Wang fixed a warning with Watcom 1.3.

# Changes from 4.2.0 beta 1 to 4.2.0 beta 2 (April 2005)

- Daniel Schlyder fixed a problem with the makefile in Windows.
- Evert Glebbeek fixed a bug that prevented true colour fonts from working.
- Peter Wang fixed a possible deadlock in dialog_message.
- Elias Pschernig fixed a bug where the DJGPP version would choke on a missing variable.
- Peter Hull made makedoc return an error code if it failed to build the SciTE documentation.
- Evert Glebbeek fixed a problem with incorrect dependencies being generated for MacOS X.
- Tobi Vollebregt fixed a problem in X11 if the XRGBACursor extension was missing.
- Evert Glebbeek made configure use k8 rather than athlon64 as a compiler switch on AMD64.
- Peter Wang and Elias Pschernig added a packfile example.
- Michal Molhanec fixed a problem in the MSVC makefile.
- Evert Glebbeek removed void*-arithmetic from the colour converter.
- Evert Glebbeek fixed a bug where hardware cursors would stop working.
- Elias Pschernig, Andrew Chew fixed and Tobi Vollebregt fixed several problems with the Windows keyboard driver.
- Elias Pschernig fixed bug in unix dependency generation.
- Elias Pschernig made the GUI not mess up the hardware cursor.
- Elias Pschernig removed pckeys.c and keyconf from the windows port, since the dinput driver no longer needs pckeys.c nor uses keyboard.dat.
- Daniel Schlyder fixed a problem with the -mtune switch on older gcc based compilers.
- Matthew Leverton figured out which versions of Watcom have inttypes.h and stdint.h.
- V Karthik Kumar added a password to the Windows screensaver example.
- Cosmetic fixes, example bugfixes and spelling corrections by Jon Rafkind, Evert Glebbeek, Peter Wang, StApostol and Elias Pschernig.

# Changes from 4.1.18 to 4.2.0 beta (March 2005)

- Peter Wang fixed many problems on AMD64 in Linux - it should now work fine.
- Peter Hull added CPU detection to the MacOS X port.
- Peter Hull fixed some problems related to /usr/local/bin not existing in recent versions of MacOS X.
- Elias Pschernig and Peter Wang rewrote the Windows keyboard driver so it no longer needs keyboard.dat.
- Elias Pschernig added a show_os_cursor function as an alternative to show_mouse() for system cursors.
- Evert Glebbeek and Peter Wang added an example programme for system cursors.
- Elias Pschernig fixed a deadlocks in X11 related to scare_mouse() and keyboard repeats and fixed async replies.
- Daniel Schlyder fixed the gcc -mcpu is deprecated warnings.
- Peter Wang added an astdint.h, which provides C99 typedefs for pre-C99 compilers.
- AJ added detection for DirectX 8 and 9 to the Windows port.
- Evert Glebbeek added detection for AMD64 to the UNIX port and test programme.
- Elias Pschernig added a get_midi_length function and a midi_time variable.
- Elias Pschernig fixed a problem where Allegro would ignore a user-specified configuration file if set_config_file() was called before allegro_init().
- Evert Glebbeek added a transpose_font function.
- Evert Glebbeek added support for true colour fonts and a font example.
- Elias Pschernig fixed a problem in shutdown_dialog() reported by Tobi Vollebregt.
- Marcio Fialho fixed some issues with displaying author names in the demo game.
- Andrei Ellman fixed a problem in the MSVC makefile when building Allegro with Cygwin.
- Daniel Schlyder fixed (again) problems with creating directories in different setups in Windows.
- Elias Pschernig added documentation for the custom packfile functions.
- Jeff Mitchell fixed the location of grabber.txt in the spec file.
- Harshavardhana Reddy added a Kannada greeting to exunicod.
- Elias Pschernig cleaned up the example programmes.
- Peter Wang made it possible to disable the hardware cursor in X by passing an option to the configure script.
- AJ and Michal Molhanec added an MSVC 7 configure option and added an msvc7 switch to fix.bat. Karthik Kumar did the same for the Intel compiler icl.
- Mr_Bones fixed compilation of setup.c when --disable-ossdigi is used
- AJ fixed a beep being generated in Windows when alt+character was pressed in Windowed mode.
- Peter Wang fixed many oversights and problems in the library and examples and allowed the code to be build with stricter warnings.
- Peter Wang fixed problems compiling the Windows port with WARNMODE=1
- Tore Halse fixed compilation problems in Windows related to TITLEBARINFO.
- Daniel Schlyder made the Windows port use TITLEBARINFO if it is available.
- Grzegorz Adam Hankiewicz made many improvements to the documentation.

# Changes from 4.1.17 to 4.1.18 (January 2005)

- Peter Hull fixed a bug that caused rest() to wait too long on MacOS X.
- Tore Halse made the Allegro window always appear centred in Windows.
- Peter Wang fixed a lot of warnings in the code and did a lot of cosmetic fixes as well.
- Grzegorz Adam Hankiewicz added short description support to the MAN and HTML documentation.
- Milan Mimica fixed a bug in the keyconf utility.
- Peter Hull fixed some issues compiling Allegro for MacOS X.
- Marcio Fialho fixed a warning when compiling Allegro with DJGPP.
- Evert Glebbeek fixed a bug that prevented system cursors from working in Windows, as pointed out by Peter Johansson.
- Evert Glebbeek added a font loading routine and various other font functions to the library.
- Peter Wang added custom packfile functions and packfile vtables.
- Peter Wang decoupled the packfile compression code from the packfile routines.
- Daniel Schlyder fixed some problems with the font loading code.
- AJ added IA64, SSE3 and AMD64 detection code.
- Daniel Schlyder fixed some warnings with MinGW gcc 3.4.2
- Peter Hull made the file selector work properly with directories that have more than 2048 entries.
- Marcio Afonso Arimura Fialho fixed some problems with the DJGPP version and the VBE/AF driver.
- Phil Shenk clarified the MSVC build docs.
- Michal Molhanec fixed a problem with long filenames in the MSVC build process and added a --msvcpaths flag to the fix.bat script.
- Grzegorz Adam Hankiewicz made a lot of improvements to the documentation.
- Peter Wang made some modifications to allegro_message() in X11.
- Evert Glebbeek added blender mode defines and activated the gfx_vtable set_blender_mode() function in the source.
- Evert Glebbeek added gui_set_screen and gui_get_screen functions and a set_mouse_cursor_bitmap function.
- Peter Wang made scancode_to_name never return NULL.
- Peter Wang fixed some problems in the Linux joystick driver.
- Grzegorz Adam Hankiewicz added a lot of ASSERTions to the code.
- Elias Pschernig added special Ctrl-Alt-End and Pause key handlers to the X11 keyboard driver.
- Elias Pschernig fixed a problem with the mouse acceleration in Windows.

# Changes from 4.1.16 to 4.1.17 (December 2004)

- Sven Sandberg fixed a few problems with the sprite rotation code.
- Sven Sandberg optimized blitting between different colour depths.
- Evert Glebbeek added support for the use of native window manager cursors.
- Chris Robinson made install_allegro() check if the library version matches the version of the header files installed.
- Peter Wang fixed some problems with rest() on UNIX systems.
- Evert Glebbeek added an is_windowed_mode() function.
- Elias Pschernig added the scancode_to_name function.
- Elias Pschernig made rest use usleep() on MacOSX.
- Chris Robinson fixed the incorrect use of -export-dynamic on UNIX
- Elias Pschernig, Chris Robinson and Peter Wang fixed XOR mode leaving droppings in X11.
- Elias Pschernig fixed several dependency issues.
- James Lohr fixed a problem with mouse acceleration in fullscreen modes under Windows.
- Peter Wang fixed a problem in the TGA loader.
- Lennart Steinke contributed keyboard layout detection code for Windows.
- Peter Wang fixed a bug that caused Allegro to crash if it failed to initialize.
- Peter Wang fixed a deadlock related to X vsync emulation.
- Daniel Schlyder fixed make uninstall with mingw make.
- Elias Pschernig fixed QNX issue of not including utimer.c
- Angelo Mottola fixed compilation problems on BeOS and fixed the detection of VRAM.
- Evert Glebbeek fixed compilation problems on *BSD.
- Elias Pschernig made the X11 window hidden in GFX_TEXT mode.
- Peter Wang removed remapping of numpad keys when NumLock was off in Linux
- David A. Capello made override_config_file also be used for writing to the config file.
- Julien Cugniere added an X11 message box for allegro_message under X11.
- Vitaliy Chetverikov a small bug in the GUI where the return value of MSG_IDLE was ignored.
- Peter Wang made several improvements to the examples.
- Grzegorz Adam Hankiewicz made a lot of improvements to the documentation.
- Elias Pschernig made make-install not build examples.
- Peter Wang fixed several instances of symbols not declared static that should have been.
- Elias Pschernig replaced the X11 keyboard driver with a new XIM driver.
- Peter Wang fixed a problem with Linux headers and Allegro headers both declaring KEY_ constants, as pointed out by David A. Capello.
- Elias Pschernig fixed X11 async reply in DGA2 mode detection due to missing XLOCK/XUNLOCK
- Peter Wang fixed problems in ex3buf, which was trying to lock symbols which had been removed.
- Elias Pschernig cleaned up grabber/dat documentation.
- Daniel Schlyder added ALLEGRO_LIB_BUILD flag for gcc variants not using configure.
- Elias Pschernig fixed bugs in matrix_to_quat and get_align_matrix.
- Evert Glebbeek fixed a problem with the X11 port when ALLEGRO_MULTITHREADED was not defined.
- Matthew Leverton added support for a fourth mouse button to the Windows port.
- Michal Molhanec added a FAQ section about the giftware license.
- Elias Pschernig added the license disclaimer to the docs.
- Evert Glebbeek added missing vtable entries for AllegroGL, as requested by Robert Ohannessian.
- Dustin Dettmer spotted a typo in save_bitmap.
- Sam Hocevar removed deprecated use of init_read_test, test_byte_read, etc.
- Peter Wang fixed a bug in the Windows keyboard driver.

# Changes from 4.1.15 to 4.1.16 (October 2004)

- Peter Wang fixed two problems with the keyboard driver on Windows.
- Chris Robinson fixed a problem causing some components to wrongly initialized in Windows when the window is set.
- Elias Pschernig added chapters to the documentation.
- Chris Robinson fixed a bug where the X11 fullscreen driver would fail if no virtual screen was reported.
- Daniel Schlyder added a set_allegro_resource_path() function .
- Elias Pschernig fixed an issue with xf2pcx.
- David A. Capello made makedoc write sub-section headings for .txt output.
- Evert Glebbeek added hardware cursor support to the X11 and DirectX window drivers.
- Peter Wang made the Linux joystick driver read more than one joystick event at a time, as pointed out by Greg Lee.
- Evert Glebbeek removed the need for magic main under UNIX and added a --enable-magicmain option to the configure script.
- Evert Glebbeek fixed a crash when initializing, deinitializing and reinitializing Allegro on Windows.
- Evert Glebbeek fixed a possible memory protection problem in stretch_blit on Windows XP SP2, as suggested by Chris Robinson.
- Chris Robinson fixed set_palette() not waiting for vsync in X11.
- Peter Wang deprecated the retrace simulator.
- Daniel Verkamp contributed a MIDI input driver for the Windows port.
- Chris Robinson improved the speed of drawing primitives on X11 and implemented locking/unlocking for video bitmaps.
- Evert Glebbeek fixed a problem with the build process on non-intel UNIX systems.
- Peter Wang fixed a problem with programs aborting on exit under X11.
- Peter Wang disabled VBE/AF by default on Linux.
- Sam Hocevar fixed a bug where makedoc would crash for missing @erefs.
- Peter Wang made the mouse movement appear smoother.
- Chris Robinson made the file routines work with files containing a # in the filename.
- Peter Wang fixed a bug in remove_int().
- Bobby Ferris added SciTE .api file generation to makedoc.
- Sam Hocevar made is possible to put functions defined in assembler source files in a shared library in UNIX.
- Evert Glebbeek removed the weak declaration of allegro_icon and changed xfixicon.sh accordingly.
- Evert Glebbeek made get_executable_name() use procfs on UNIX.
- Grzegorz Adam Hankiewicz made many improvements to the documentation and to the makedoc tool.
- Many fixes to source, examples and documentation.

# Changes from 4.1.14 to 4.1.15 (July 2004)

- Chris Robinson tweaked tests/play.c slightly.
- Elias Pschernig deprecated yield_timeslice in favour of rest(0) and adjusted yield_timeslice on BeOS, QNX and MacOS X to behave the same as on other platforms.
- Eric Botcazou fixed a problem with the asm colour converter.
- Elias Pschernig fixed some gcc warnings.
- Vincent Penquerc'h added the ability to pass extra CFLAGS and LDFLAGS on the make command line.
- Elias Pschernig made ex3buf work outside of DOS.
- Chris Robinson made the alleg mixer default instead of the DirectX one in windows.
- Angelo Mottola fixed a bug where vsync() was blocking on a mutex if called when the screen was already acquired in windowed mode.
- Evert Glebbeek made triple buffering work in the demo if VRAM is a single surface.
- Jon Rafkind provided an m4 macro for Allegro.
- Eric Botcazou and Henrik Stokseth made some improvements to the build process.
- Grzegorz Adam Hankiewicz added various fixes to the documentation and to the documentation generation system.
- V Karthik Kumar added a Tamil language greeting to exunicode.
- Chris Robinson and Elias Pschernig reduced lag under X11 when X11 locks are held for too long.
- Vincent Penquerc'h fixed a problem with dependency generation under bash.
- Evert Glebbeek added an icon to the X11 port and contributed the xfixicon script.
- Angelo Mottola fixed an endianess issue when loading/saving 24 bit images from datafiles.
- Angelo Mottola made datafile plugins return FALSE on error.
- Angelo Mottola fixed the docs for pack_putc.
- Vincent Penquerc'h made the grabber choose better default menu shortcuts.
- Henrik Stokseth enabled the asm color converters for the X11 port.
- Henrik Stokseth improved buffer security in various parts of the library.
- Evert Glebbeek made strncpy use sizeof() for fixed length strings.
- Eric Botcazou made KEY_PAUSE work properly in windows.
- Chris Robinson improved the threaded UNIX timer code.
- Elias Pschernig fixed some problems with the ALSA driver.
- Angelo Mottola made Command-Q and Quit trigger the close_button_callback in OSX.
- Grady Martin fixed a bug in the handling of %n in the printf style text functions.
- Chris Robinson rewrote parts of Allegro's mixer.
- Chris Robinson increased the default volume, which was set very quiet previously.
- Grzegorz Adam Hankiewicz clarified the behavior of install_mouse.
- Elias Pschernig improved the pause key behavior.
- Vincent Penquerc'h added MSG_WANTMOUSE to the GUI.
- Vincent Penquerc'h sped up get_filename.
- Chris Robinson implemented the digmid_set_pan function
- Chris Robinson improved the performance of the DIGMID driver.

# Changes from 4.1.13 to 4.1.14 (April 2004)

- Elias Pschernig added a missing install dependency on Linux.
- Elias Pschernig fixed a couple of problems in dat2c.
- Angelo Mottola polished the MacOS X package builder script.
- Elias Pschernig added a Jack sound driver to the Unix port.
- Henrik Stokseth added support for debugging with DMalloc under Unix.
- Eric Botcazou fixed detection of the ALSA 1.0 MIDI driver.
- Eric Botcazou fixed compilation with --enable-color8=no under Unix.
- Angelo Mottola made it possible to link against the Allegro framework with the allegro-config script under MacOS X.
- Angelo Mottola changed the dynamic lib install name to major.minor to preserve binary compatibility under MacOS X.
- Angelo Mottola fixed a bug in fixbundle with 32bpp icons and alpha channel under MacOS X.
- Eric Botcazou improved the cross-compilation support on Linux.
- Eric Botcazou restored the compensation code for end-of-frame in the FLI player.
- Daniel Schlyder fixed potentially unsafe constructs in the Windows code.

# Changes from 4.1.12 to 4.1.13 (March 2004)

- Minor changes and clarifications in the docs by Sven Sandberg, Andy Goth, Jon Rafkind, Nathan Smith and Daniel Schlyder.
- Elias Pschernig extensively modified the ALSA 0.9/1.0 sound driver to make it work more nicely.
- Julien Cugniere and Eric Botcazou fixed the crash on exit with the aRts sound driver.
- Nathan Smith implemented the recursive handling of directories for the dat utility.
- Eric Botcazou renamed the new '-r' option of the dat utility into '-f'.
- Omar Cornut improved the handling of KEY_COLON2 on Japanese keyboards.
- Omar Cornut fixed the Windows joystick driver to handle a weird peculiarity of the DirectInput API.
- Elias Pschernig corrected the value of the alpha-channel depth field in the header when saving TGA image files.
- Eric Botcazou fixed again the formula giving the stride value in the Linux framebuffer console.
- Eric Botcazou restored the pixel-correct version of line() and added fastline() after Doug Eleveld had reported the problem.
- Andy Goth and Eric Botcazou fixed the constructor support in dat2s on Unix.
- Angelo Mottola revamped the MacOS X package creation process to make it work under 10.3 and create an enduser package that holds just the shared framework.
- Angelo Mottola changed the MacOS X shared library building process to have a prebound shared library separated from a small static libray holding just the magic main stuff.
- Angelo Mottola removed window shadow flickering when moving the program window around on MacOS X.
- Elias Pschernig changed the behavior of yield_timeslice() to sleeping instead of just yielding.
- Angelo Mottola made the MacOS X port reuse the screen on the first video bitmap creation and made the screen fade on mode switches faster.
- Elias Pschernig made d_menu_proc() automatically yield when the dialog is driven by do_dialog().
- Elias Pschernig added missing d_yield_proc()s to the grabber.
- Eric Botcazou fixed a bug which caused too many sliders to be reported in the presence of a POV device on Windows.
- Chris Jones added support for the bitfield compressed BMP image format.
- Eric Botcazou removed all uses of GCC's cast-expression-as-lvalue extension in preparation for GCC 3.4.
- Michal Molhanec replaced all occurences of MingW32 by MinGW in the docs.
- Omar Cornut bumped the maximum number of buttons per joystick to 32.
- Eric Botcazou implemented automatic screensaver disabling (only on Windows for the time being).
- Elias Pschernig added mode 1280x960 to the gfx mode selector.
- Elias Pschernig fixed the video mode error display in the test program.
- Eric Botcazou fixed the final animation of the demo game.
- Elias Pschernig made the X11 gfx driver ignore repeated key-events.
- Eric Botcazou added set_hardware_volume().
- Francisco Pires added an FPS counter and an option to disable vsync to the excamera example.
- Eric Botcazou and Sven Sandberg documented the limitations of getpixel() and added is_inside_bitmap().
- Eric Botcazou added i386 sincos optimization to GCC-based ports.
- David Capello fixed a bug with FLI frames containing odd-sized chunks.
- Elias Pschernig and Sven Sandberg improved the GUI focus algorithm.
- Eric Botcazou modified the dat/grabber plugins interface to expose datafile properties to plugins.
- Eric Botcazou added a new clipping API and deprecated the old one.
- Grzegorz Adam Hankiewicz updated the MSVC build instructions.

# Changes from 4.1.11 to 4.1.12 (Nov 2003)

- Many minor changes and clarifications in the docs, some of them based on suggestions by Neil Roy, Jon Rafkind, aj, Andrei Ellman and Michal Molhanec.
- Angelo Mottola made little fixes all over the place in the MacOS X port.
- Angelo Mottola removed MacOS X 10.1.x source compatibility.
- Eric Botcazou disabled keyconf on platforms that don't need it.
- Elias Pschernig shifted key name display so that all keys are visible in the keyconf utility.
- Stephan Brauss added new keysyms to the X11-to-BIOS conversion table in order to catch missing keycodes for the keypad when NumLock is on.
- Stephan Brauss corrected a few nits in the Swiss keyboard configuration file.
- Eric Botcazou disabled the close button support when a user window is registered under Windows.
- Eric Botcazou changed the default switch mode to SWITCH_BACKGROUND for the Windows port to cure the problems on exit under WinXP.
- Sven Sandberg improved the previous fix to _parallelogram_map().
- Sven Sandberg fixed an overflow in floodfill().
- Sven Sandberg fixed the dither blit mode for the Mode-X driver.
- Angelo Mottola added quality and reverberation settings support to the CoreAudio MIDI driver under MacOS X.
- Angelo Mottola added high performance CoreAudio digi/midi drivers (default on autodetect) and made little fixes to the old QT Note Allocator and Carbon Sound Manager drivers under MacOS X.
- KronomanX added a FAQ entry about the conflict between Allegro headers and the C++ 'using' directive.
- Vincent Penquerc'h let dialog_message() pass user messages to hidden objects.
- Michal Molhanec simplified the build instructions for Dev-C++.
- Annie Testes fixed a redrawing problem in the grabber.
- Vincent Penquerc'h added support for the joystick_device* config variables under Linux.
- Vincent Penquerc'h added gfx_mode_select_filter().
- Peter Wang removed the old Linux async I/O stuff, which had been out of service for a long, long time. Also simplified the Linux standard drivers stuff.
- Thomas Fjellstrom added (experimental) support for ALSA 0.9.x.
- John Utz corrected a wrong assumption about the VRAM layout in the Linux framebuffer console driver.
- Grzegorz Adam Hankiewicz tt-ized text quotes in the HTML version of the docs.
- Eric Botcazou made the Linux port compile on non-x86 platforms.
- Stephan Brauss made a few fixes to let the Linux port compile again on Linux 2.2.x systems.
- Kalle Toivonen fixed a bug in _parallelogram_map().
- Eric Botcazou cleaned up the ALSA config variables under Unix.
- David Cullen added multiple bullets and extra lives to the demo game.
- Sam Hocevar fixed a race condition in the mixer under Unix w/ threads, Windows, BeOS and MacOS X.
- Andrei Ellman improved the Windows screensaver.
- Jon Rafkind implemented the Cohen-Sutherland clipping algorithm for the line() function.
- Angelo Mottola added an application menu with a Quit item acting like the three fingers salute, in order to better integrate Allegro apps with the Aqua UI guidelines under MacOS X.
- Jon Rafkind and Vincent Penquerc'h added more ASSERTs to the code.
- Eric Botcazou added an option to disable vsync when page-flipping.
- Eric Botcazou added the detection of spaces to the MSVCDir variable for the MSVC port.
- Grzegorz Adam Hankiewicz integrated the build instructions in the HTML version of the documentation.
- Angelo Mottola fixed some nits in fixbundle for alpha channel on 32-bit icons under MacOS X.
- Lisa Parratt improved the performances of the SGI audio driver.
- Grzegorz Adam Hankiewicz updated and improved the documentation in many places.
- Grzegorz Adam Hankiewicz added HTML text substitution to the doc processor.
- Tobi Vollebregt spotted a bug in ustrerror(), which was not returning a pointer to a static buffer.
- Grzegorz Adam Hankiewicz added more documentation about return values of functions.
- Grzegorz Adam Hankiewicz added a new section about documentation to ahack._tx.
- Grzegorz Adam Hankiewicz fixed rare buffer overflows in do_uconvert with very tiny buffer sizes.
- Serge Semashko fixed a bug with the letter P in the Russian keyboard configuration file.
- Angelo Mottola let application bundles accept files dragged onto the application icon under MacOS X.
- Peter Wang fixed save_bmp for better conformance (a couple of header fields were wrong, and dots-per-metre fields were being filled with zero).
- Julien Cugniere fixed a bug related to the retrieval of the inital volume when no primary buffer was present under Windows.
- Henrik Stokseth simplified the asm detection test, removed many GNUish preprocessor constructs in the asm files and, as a consequence, let the Watcom port use its own preprocessor on assembly files.
- Peter Wang prevented non-mmapped memory from being munmapped under Linux.
- Annie Testes prevented __al_linux_shutdown_vga_helpers from being called unless the corresponding init function was first called under Linux.
- Sven Sandberg improved the misc/findtext.sh script.
- Sven Sandberg added support to produce a PDF version of the manual under Unix and to compress the various formats with bzip2.
- Sven Sandberg made some correction to the Swedish translation file.
- Eric Botcazou pluginized the new 'Change filename' menu option in the grabber.
- Eric Botcazou fixed the X11 mouse scrolling bug.
- Vincent Penquerc'h made it so that modifications to the type or color depth of an image are detected as such by the grabber.
- Henrik Stokseth added a C++ test, Eric Botcazou integrated it in the build process.
- Angelo Mottola made several fixes to let Allegro play nice with AllegroGL under MacOS X.
- Angelo Mottola added proper embeddable framework support to the MacOS X port, modified fixbundle and updated the docs accordingly.
- Angelo Mottola made external plugins scripts work under MacOS X.

# Changes from 4.1.10 to 4.1.11 (Jun 2003)

- Eric Botcazou temporarily reverted the fix for the mouse bug when scrolling with the X11 driver under Unix.
- Eric Botcazou fixed the invocation of non-GNU make in the configure script, a few compilation warnings in tools/dat2c.c and made it possible to pass libraries to the misc/deplexe.sh script, so as to let Allegro build again under Solaris.
- Grzegorz Adam Hankiewicz removed all direct references to Canvaslink and credited SourceForge for current services.
- Eric Botcazou reworked the configure check for sched_yield() under Unix.
- Sam Hocevar fixed a Bashism in fix.sh that makes Solaris' sh choke.
- Angelo Mottola made sure mouse buttons are initialized to 0 at startup under MacOS X.
- Eric Botcazou added a blurb about the new behaviour of d_ctext_proc().
- Eric Botcazou corrected several inadequacies in the documentation of makefile targets.
- Grzegorz Adam Hankiewicz did some housekeeping work in the docs.
- Angelo Mottola added a missing item to the list of installed files under MacOS X.
- Angelo Mottola added a script to automate the enduser MacOS X package creation.
- Angelo Mottola made it possible to compile apps if just the Allegro framework is installed under MacOS X.
- Vincent Penquerc'h corrected an inefficiency in select_palette() and unselect_palette().
- Eric Botcazou fixed the build failure with MSVC.
- Andrei Ellman added a few missing items to the list of uninstalled files for the MinGW and MSVC ports.
- Vincent Penquerc'h fixed a bug in _fill_3d_edge_structure().

# Changes from 4.1.9 to 4.1.10 (Jun 2003)

- Many minor changes and clarifications in the docs.
- Hein Zelle reworked the paragraph on the location of shared libraries under Unix in the docs and added a FAQ entry on the same subject.
- Martijn Van Lersel fixed an overflow in create_light_table().
- Chris Jones and Eric Botcazou made the MIDI player handle the 'All Sound Off' controller message.
- Angelo Mottola made the MacOS X port play nice with 10.1.x.
- Eric Botcazou made the menus not block on exit when mouse buttons are still being held down.
- Grzegorz Adam Hankiewicz improved the description of set_gfx_mode about virtual screen sizes and hardware scrolling by suggestion of Lothar May.
- Chris Jones let the MIDI player pass controller events to the raw player by default.
- Angelo Mottola added the platform-dependent AL_RAND() macro.
- Angelo Mottola added a HID joystick driver to the MacOS X port.
- Henrik Stokseth spotted non-standard constructs in the Windows port.
- Henrik Stokseth spotted unused variables throughout the library.
- Jim Grainger spotted a broken link in the docs and updated it.
- Javier Gonzalez fixed some problems in the DirectSound streaming.
- Andrei Ellman improved the exrgbhsv example.
- Andrei Ellman corrected a rounding issue in hsv_to_rgb().
- Angelo Mottola added _al_rand() and replaced rand() with it throughout the library.
- Elias Pschernig moved the big font example from exgui to excustom and fixed d_edit_box string length.
- Angelo Mottola added the 'fixbundle' utility to the MacOS X port.
- Eric Botcazou added the possibility to fold/unfold nested datafiles in the grabber.
- Angelo Mottola fixed a couple of color conversion bugs.
- Elias Pschernig replaced exgui with a more thorough version.
- Vincent Penquerc'h added support for debugging with Fortify under Unix.
- Vincent Penquerc'h added the 'Replace' option to the grabber.
- Vincent Penquerc'h added the 'Force Update Selection' command to the grabber and refactored a fair amount of duplicated code.
- Eric Botcazou made exunicod endian-safe.
- Eric Botcazou fixed the behaviour of the C version of draw_trans_sprite() with 32-bit RGBA sprites.
- Angelo Mottola fixed the behaviour of the C version of draw_trans_sprite() in 8bpp mode.
- Angelo Mottola added system bitmaps support to the MacOS X port.
- Eric Botcazou enabled full support of relative filenames in the dat/grabber utilities.
- Angelo Mottola made exlights endian-safe.
- Christer Sandberg fixed a bug in the 24-bit graphics code of fixup_datafile().
- Angelo Mottola added hw-accelerated VRAM->VRAM blit support under MacOS X.
- Angelo Mottola added an install-template makefile target to install an Allegro application Project Builder template under MacOS X.
- Angelo Mottola added a digital sound driver to the MacOS X port.
- John Holden fixed a bug in load_wav().
- Angelo Mottola added a MIDI driver to the MacOS X port.
- Angelo Mottola added proper mouse buttons detection via HID Manager and buttons emulation if needed under MacOS X.
- Eric Botcazou added canonicalize_filename() and deprecated fix_filename_path().
- Evert Glebbeek added the support for relative filenames to the grabber.
- Eric Botcazou made it possible to pass CC on the command line to make on non-Unix systems.
- Angelo Mottola added support for bundled applications under MacOS X.
- Javier Gonzalez devised a simpler fix for the WinXP black screen bug.
- Javier Gonzalez prevented some artifacts from being left on the screen when moving fast the window under Windows.
- Angelo Mottola contributed the MacOS X port.
- Angelo Mottola fixed various things in preparation for the MacOS X port.
- Eric Botcazou uncoupled link options for libraries and programs.
- Evert Glebbeek added the support for relative filenames by means of three new API functions.
- Elias Pschernig made the allegro.devhelp work with devhelp 0.6.0.
- Eric Botcazou made file_select_ex() honor the '(+)d' attribute character in the extension string.
- Eric Botcazou removed the remaining occurences of ustrcpy() from the library code.
- Christer Sandberg fixed a problem with the include guard generated by dat2c.
- Eric Botcazou removed the remaining calls to deprecated functions from the distribution.
- Eric Botcazou optimized the handling of the extension string in the file selector.
- Eric Botcazou implemented the AL_*_DEPRECATED macros and enabled them for GCC 3.1 or later.
- Sven Sandberg improved the performance of the rgb_to_hsv() function.
- Christer Sandberg and Eric Botcazou made dat2c correctly detect the native line ending.
- Christer Sandberg and Eric Botcazou made dat2c work better with ISO C90 compilers.
- Henrik Stokseth updated the installation and configuration instructions of both MinGW and Dev-C++ and documented the support of MSYS.
- Andrei Ellman improved the performance of the hsv_to_rgb() function.
- Peter Wang made the makefile not pass the -s switch to ld on Unix for non-optimized builds.
- Evert Glebbeek added the 'New' command to the grabber.
- Eric Botcazou made the grabber save previous modified data when loading new data.
- Eric Botcazou unified and fixed the support for ALLEGRO_USE_C on all GCC-based ports.
- Eric Botcazou unified the autodetection and handling of Unix-like tools on non-Unix systems.
- Andrei Ellman got Allegro for MSVC to build with Cygwin.
- Elias Pschernig made the programs be linked with -pg in profile mode under Unix.
- Andrei Ellman updated the Cygwin section in docs/build/mingw32.txt.
- Magnus Henoch fixed a problem when compiling without 8bpp support.
- James Ponder and Hein Zelle clarified a requirement when cross-compiling from Linux.
- James Ponder suggested to remove the DJGPP makefile from the Unix tar archive.
- Grzegorz Adam Hankiewicz improved the docs on allegro_exit().
- Grzegorz Adam Hankiewicz documented the bunch of packfile functions.
- Eric Botcazou fixed the profile build on BeOS.
- Eric Botcazou updated the FAQ about DJGPP's va_list problem (thanks to aj for spotting this).
- Andrei Ellman suggested some additions to the docs.
- Grzegorz Adam Hankiewicz added a chapter on available examples to the docs, the ability to cross-reference them and display the references with a specific layout in the HTML docs, and a Python script to automate the updating process when new examples are added.
- Eric Botcazou fixed an asm locking bug under Windows spotted by Omar Cornut.
- EvilTypeGuy cleaned up and fixed the RPM spec file for RedHat 9.
- Ville Skyttä fixed a problem with make install libdir= and modules on Unix systems.
- Peter Wang added a hack to not unload the SVGAlib module if SVGAlib installs an atexit() handler.
- Elias Pschernig updated xf2pcx and integrated it in the build process under Unix/X11.
- Grzegorz Adam Hankiewicz added support for dumping the configure settings under Unix.
- Javier Gonzalez added get_color_depth() to the API.
- Julien Cugniere and Eric Botcazou improved the support for non-blocking menus.
- Grzegorz Adam Hankiewicz corrected several nits in the documentation.
- Grzegorz Adam Hankiewicz documented the END_OF_MAIN macro.
- Javier Gonzalez added get_color_conversion() to the API.
- Lennart Steinke added the exconfig example.
- Eric Botcazou added big-endian support to the BMP, PCX and TGA loaders as well as to the X11 driver.
- Eric Botcazou fixed the 'uninstall' target and a problem with Mingw32's make for the Watcom port.
- Charles Bilyue suggested to not force yielding timeslice with non-blocking menus.
- Annie Testes fixed a bug with asynchronous I/O mode restoring under Linux.
- Annie Testes made the screen be cleared before setting the default palette when calling set_gfx_mode().
- Annie Testes fixed a bug with patterned drawing in the C version.
- Vincent Penquerc'h spotted an off-by-one problem when building the list of color depths in the gfx mode selector.
- Peter Wang made the Intellimouse PS/2 driver work for USB mice in Linux.
- Elias Pschernig integrated xkeymap in the build process under Unix/X11.
- Oscar Giner fixed a conflict between the magic main and the MFC.
- Matthew Leverton fixed a bug with pack_fgets().
- Eric Botcazou fixed broken and missing dependencies for make -j2 builds.
- Hein Zelle revamped the cross-compilation section of docs/build/mingw32.txt.
- Marcel Smit and Eric Botcazou made the show_video_bitmap() method of the Windows windowed driver wait for a vsync.
- Eric Botcazou made the test program really time the fixed math functions.
- Eric Botcazou clarified the limitations of Allegro's interrupts regarding the FPU state under DOS.
- Peter Wang fixed a bug in stretch_blit() where the first column or row can get an extra pixel, reported by David Gowers and AJ.
- Eric Botcazou made the linux mouse detection code really empty the buffer before proceeding in the setup program.
- Eric Botcazou made the Watcom port compile in warnmode with Open Watcom.
- Elias Pschernig fixed the build with the Unix->MinGW cross-compiler.
- Magnus Henoch made the gfx mode selector keep the current selection as much as possible.
- Eric Botcazou fixed the mouse not being scared over alert boxes.
- Eric Botcazou added -Wstrict-prototypes to the build warnmode under DOS, Windows and BeOS.
- Annie Testes updated the mouse autodetection code under Linux to take into account her EVDEV driver.
- Philipp Thomas added multi-arch support, DESTDIR support and the German translation to the RPM spec file.
- Philipp Thomas converted the configure machinery to autoconf 2.53 or later.
- Philipp Thomas fixed all function prototypes, thus allowing to build with -Wstrict-prototypes on Unix systems.
- Philipp Thomas fixed the compilation on x86-64.
- Philipp Thomas fixed all comparisons between signed and unsigned types, thus allowing to build with -W -Wno-unused on Unix systems.
- Eric Botcazou reworked the truecolor subsection of the 'Transparency and patterned drawing' section.
- Eric Botcazou clarified the return value on failure of file_time(), following AJ's suggestion.
- Eric Botcazou fixed the build in strictwarn mode on Unix systems.
- Eric Botcazou fixed a mouse bug when the screen is scrolled with the X11 fullscreen driver.
- Eric Botcazou fixed a bug with resolution and color depth not being taken into account by gfx_mode_select_ex().
- Vincent Penquerc'h fixed the compilation breakage on Linux kernels 2.2.x.
- Eric Botcazou defined ALLEGRO_LIB_BUILD for debug and profile releases as well on Unix systems.
- Eric Botcazou forced the exstream example to abort if no real sound driver is found.
- Eric Botcazou clarified the limitations of the stretching functions.
- Acho A. Tang added a Sidewinder Precision Pro joystick driver to the DOS port.
- Eric Botcazou re-enabled the autodetection of joysticks in the setup program.

# Changes from 4.1.8 to 4.1.9 (Jan 2003)

- Many minor changes and clarifications in the docs.
- Annie Testes fixed some device name strings in the setup program.
- Annie Testes added a mouse driver based on the event interface (EVDEV) to the Linux port.
- Eric Botcazou added for_each_file_ex() and deprecated for_each_file().
- Eric Botcazou disabled hackish centering code in fullscreen mode under X11 which caused some artifacts to appear on KDE desktops.
- Elias Pschernig fixed a pasto in the sample reading code.
- Eric Botcazou fixed a bug with Alt+TAB under X11.
- Eric Botcazou added a configure check for the include prefix problem with gcc 3.1 or later on Unix systems.
- Eric Botcazou reverted the latest patch applied to the joystick code.
- Matt Witherspoon and Eric Botcazou fixed a bug in the scroll() method of the Linux SVGAlib driver so as to make it wait for the vertical retrace.
- Eric Botcazou added a stop/resume option to the exstream.c example.
- Ben Davis documented the non-standard behaviour of pack_feof().
- Eric Botcazou worked around a weird problem with some X11 window managers that prevented the fullscreen driver from setting up.
- Eric Botcazou disabled the new timer synchronization code.
- Grzegorz Adam Hankiewicz added a warning about DJGPP stability under some Windows versions.
- Eric Botcazou made it so that the window is centered at startup under Windows.
- Chris Jones and Eric Botcazou worked around a problem with DOS file attributes under Win2k.
- Eric Botcazou made the filetest work better with the keyboard.
- Eric Botcazou fixed shifted help sections in the grabber.
- Eric Botcazou fixed the mishandling of TAB characters in menu bar entries.
- Eric Botcazou added a new DEBUGMODE level so that debuggers will not be flooded by internal debug messages any more under Windows.
- Eric Botcazou fixed a weird compilation bug under MacOS X.

# Changes from 4.1.7 to 4.1.8 (Dec 2002)

- Eric Botcazou fixed a bug with nested datafiles in the dat/grabber code spotted by Thomas Klausner.
- Eric Botcazou clarified the wording about ABI/API compatibility.
- Thomas Klausner added NetBSD detection.
- Ben Davis constified the parameter of set_window_title.
- Lisa Parratt added IRIX detection.
- Robert J. Ohannessian clarified the docs for play_audio_stream.
- Sven Sandberg fixed the makedoc linking problem with Watcom spotted by Glenn Jarvis.
- Ben Davis fixed a compilation warning for set_window_close_button.
- Eric Botcazou fixed a buffer overflow in the Windows debug version spotted by aj.

# Changes from 4.1.6 to 4.1.7 (Dec 2002)

- Eric Botcazou made the joystick initialization routine correctly handle zero as the joytype.
- Eric Botcazou fixed the compile-time check for the MMX asm support.
- Eric Botcazou fixed the non-MMX asm color copy routine.
- Eric Botcazou implemented the synchronization routines for the BeOS port.
- Eric Botcazou turned the set_window_close_* macros into inline functions.
- Eric Botcazou fixed an oversight that caused the SGI AL audio driver not to be built as a module on Unix.
- Stepan Roh fixed a glitch with autoconf 2.53 on Unix.
- Eric Botcazou fixed the compilation bug with MinGW.

# Changes from 4.1.5 to 4.1.6 (Nov 2002)

- Grzegorz Adam Hankiewicz added informations on the FLI format provided by Kronoman X to the FAQ.
- Eric Botcazou revived the two former set_window_close_* functions as deprecated functions.
- Elias Pschernig contributed an improved xkeymap utility, based on the original code by Michael Bukin.
- Eric Botcazou added synchronization to the timer code on multi-threaded platforms (except BeOS for the time being).
- Eric Botcazou made the new 'save' method of plugins use the same return value convention as the 'export' method (see tools/plugins/plugins.txt).
- Eric Botcazou added the support for plugin scripts to the MinGW port.
- Peter Wang changed the default sound mixing quality to 2 (highest).
- Matthew Leverton added the detection of left-hand mouse configuration under Windows.
- Oscar Giner fixed a bug with binary data exporting in the grabber, introduced in the 4.1.4 release.
- Eric Botcazou fixed a crash when Alt+Tabbing under WinXP.
- Eric Botcazou reverted his patch changing the behaviour at startup under Windows.
- Grzegorz Adam Hankiewicz added infrastructure for properly documenting the return value of the API calls.

# Changes from 4.1.4 to 4.1.5 (Nov 2002)

- Grzegorz Adam Hankiewicz updated the docs about mailing lists/contacts.
- Grzegorz Adam Hankiewicz added instructions on how to create and submit patches to the Allegro developers.
- Eric Botcazou implemented the support for non-blocking menus.
- Lisa Parratt spotted a BSDism that IRIX doesn't like at all.
- Daniel Schlyder fixed a problem with set_window_title() under BeOS.
- Lisa Parratt contributed the SGI Audio Library sound driver.
- Eric Botcazou completely revamped the close button support.
- Eric Botcazou simplified fullscreen mode initialization under Windows.
- Elias Pschernig and Eric Botcazou made the GUI code scare the mouse, when drawing, only if it is necessary to do so, thus reducing cursor flicker.
- Eric Botcazou fixed a bug in scare_mouse_area().
- Elias Pschernig optimized the load_bitmap() function family when no palette is specified and documented the feature.
- Grzegorz Adam Hankiewicz aliased the stylesheet to the default CSS style, allowing The Big Lizard(tm) and other web browsers to disable CSS.
- Eric Botcazou fixed an ill-behaviour at startup under Windows.
- Elias Pschernig added the Euro character to the default font and to the German and French keyboard configuration files.
- Eric Botcazou made _ustrdup() set *allegro_errno to ENOMEM on failures.
- Annie Testes lifted several hardcoded length limitations in the configuration routines.
- Eric Botcazou prevented set_gfx_mode() from resetting the layout of all color depths.
- Eric Botcazou moved #include directives out of the range of extern "C" directives (fixing the C++ compilation bug with Borland C++).
- Vincent Penquerc'h added the ALLEGRO_NO_COMPATIBILITY symbol and moved all the deprecated stuff from allegro._tx to api._tx .
- Grzegorz Adam Hankiewicz reformatted monospaced text blocks to fit page in Postscript output.
- Oscar Giner added the Catalan translation.
- Oscar Giner corrected the Spanish translation.
- Grzegorz Adam Hankiewicz added a new command to the doc processor for email mangling: me@serv.com -> me at serv dot com. It is applied to all documentation output formats.
- Grzegorz Adam Hankiewicz made all source files use the external CSS.
- Chris Jones fixed a bug with 16-bit samples loading introduced in the previous release.

# Changes from 4.1.3 to 4.1.4 (Oct 2002)

- Eric Botcazou prevented the linker from choking on Solaris because of a static library with no symbols.
- Eric Botcazou removed joystick control from main part of the setup program.
- Eric Botcazou documented the workaround needed for C++ programs compiled with Borland C++ (in docs/build/bcc32.txt).
- Eric Botcazou unified the magic main for the 3 Windows compilers and fixed the WinMain() linkage for Borland C++.
- Henrik Schmidt made gcc pass '-h' instead of '-soname' to the linker and replaced '-L' by '-h' in shell comparisons so as not to break on Solaris.
- Eric Botcazou fixed the bogus check for GNU ar on Unix systems.
- Elias Pschernig made load_datafile_object() load the properties attached to the object.
- Javier Gonzalez and Eric Botcazou fixed the infamous blank screen problem under Win2k/WinXP.
- Eric Botcazou cleaned up the use of errno/allegro_errno throughout the library and removed all occurences of errno in the grabber/plugins code.
- Grzegorz Adam Hankiewicz embedded readme.txt into the Allegro manual.
- Eric Botcazou made the Windows port set the NULL mouse cursor in fullscreen mode instead of hiding it.
- Vincent Penquerc'h ASSERTed a bunch of C drawing routines.
- Robert J. Ohannessian did some cosmetic improvements to the HTML output and separated the CSS file.
- Evert Glebbeek added configure options for x86 processor optimizations on Unix systems.
- Benny Colyn added a Dutch translation.
- Evert Glebbeek added the detection of SunOS/Solaris.
- Javier Gonzalez fixed a graphics bug with always-on-top applications.
- Igor Gnip added the detection of MSYS via the SHELL variable to the MingW32 port.
- Eric Botcazou made the mouse use the exclusive foreground cooperative level in fullscreen mode under Windows.
- Eric Botcazou fixed a bug than had prevented ALT+F4 from being properly handled under Windows and cleaned up the low-level scancode handler.
- Eric Botcazou updated the description of the layout of header files in the aHack file.
- Grzegorz Adam Hankiewicz corrected the docs about 'ulimit' in the Help file.
- Laurence Withers converted the core library and the whole distribution to use the new text API.
- Laurence Withers added a new text API and deprecated the old one.
- Eric Botcazou made the Windows port stop triggering SWITCH_IN events when restoring the DirectDraw surfaces.
- Eric Botcazou re-enabled screensavers and powerdowns under Windows.
- Eric Botcazou made the deprecated file_select() an inline function.
- Eric Botcazou cleaned up set_gfx_mode() and made it so that GFX_SAFE selects a windowed mode in windowed environments.
- Vincent Penquerc'h added a container header file graphics.h for all the graphics stuff.
- Vincent Penquerc'h added an indexing option to the grabber.
- Evert Glebbeek added an option menu to the grabber.
- Evert Glebbeek and Eric Botcazou cleaned up the grabber/plugins code; in particular, the 'save' method of plugins got a new prototype.
- Peter Wang made fix.sh and zipup.sh not destroy timestamps when just changing EOL markers.
- Peter Wang fixed a misuse of the -I option with gcc 3.0 and later.
- Robert J. Ohannessian added more caveats to docs/build/mingw32.txt.

# Changes from 4.1.2 to 4.1.3 (Sep 2002)

- Grzegorz Adam Hankiewicz fixed a bug in the HTML rendering code.
- Eric Botcazou modified the querying of DirectSound devices under Windows.
- Evert Glebbeek added a '-fullscreen' switch to the grabber, Laurence Withers a '-windowed' switch.
- Eric Botcazou temporarily disabled screensavers and power downs under Windows.
- Daniel Schlydler fixed problems with get_executable_name() under Windows.
- Eric Botcazou added a FAQ entry on the C++ headers problem with gcc 3.x and Mingw32, summarizing findings by Robert J. Ohannessian.
- Robert J. Ohannessian fixed the compilation problem with MSVC.

# Changes from 4.1.1 to 4.1.2 (Sep 2002)

- Many minor changes in the code and the docs.
- Grzegorz Adam Hankiewicz fixed a crash in the exmouse example when no mouse is present.
- Angelo Mottola made the exunicod example welcome Italian programmers too.
- Grzegorz Adam Hankiewicz documented new structures.
- Eric Botcazou added a native DirectX window test.
- Eric Botcazou re-enabled the 1 ms accuracy limitation for timers under Windows.
- Elias Pschernig added support for the Devhelp documentation format.
- Marcel Smit corrected an error in the packfile format write-up.
- Eric Botcazou fixed a conflict between Allegro headers and standard C++ headers of gcc 3.x under Mingw32.
- Matthew Leverton made the DOS/Windows makefiles use 'copy /B' instead of 'copy' for file concatenation.
- Eric Botcazou wrote another new page flipping/triple buffering code for the Windows port.
- Eric Botcazou made it so that win_set_window() restores the state of the joystick module as well.
- Grzegorz Adam Hankiewicz ASSERTed a bunch of public functions.
- Eric Botcazou made it so that restoring the DirectDraw surfaces always triggers a SWITCH_IN event under Windows.
- Peter Wang fixed a problem linking with the debug version under linux, due to missing "inline" functions.
- Robert J. Ohannessian fixed the docs for pivot_scaled_sprite_v_flip().
- Eric Botcazou fixed a race condition when registering input events at startup under Windows.
- Roberto Alfonso added an srand() call in the demo game.
- Elias Pschernig removed (seemingly) arbitrary window size checks in the Unix X11 driver.
- Roberto Alfonso fixed a couple of memory problems in the dat2c utility.
- Matthew Leverton pointed out a C99 idiom in the dat2c utility that Borland C++ doesn't like.
- Angelo Mottola changed the BeOS gfx driver IDs/constants to more pertinent ones.
- Angelo Mottola added a safe BWindow-based windowed driver and a fullscreen overlay driver to the BeOS port.
- Angelo Mottola reorganized and commented all the BeOS gfx subsystem.
- Sven Sandberg fixed a bug in create_trans_table().
- Javier Gonzaled fixed a bug with volume and pan not properly set in loop mode by the DirectSound driver.
- Laurence Withers added two fixed point ratios for converting to and from radians.
- Eric Botcazou fixed the documented prototype of fixtof() and ftofix().
- Laurence Withers fixed the 'inline' compilation bug in the dat2c utility.
- Eric Botcazou fixed a bug that causes timers to restart permanently when Allegro is switched out under Windows.
- Eric Botcazou fixed a bug with switch mode setting under Windows he had introduced in the 4.1.1 release.
- Grzegorz Adam Hankiewicz improved the legibility of the HTML code generated by the doc processor and reduced its size in the process.

# Changes from 4.1.0 to 4.1.1 (Aug 2002)

- Many minor changes and clarifications in the docs and the FAQ.
- Eric Botcazou fixed a bug with graphics mode switching using a ALT+key combination under Windows.
- Laurence Withers contributed the dat2c utility.
- Grzegorz Adam Hankiewicz made it so that chapters can be referenced in the documentation and added a new one on the types and structures defined by the library.
- Eric Botcazou improved win_set_window() so that it can be called after the library has been initialized.
- Elias Pschernig fixed a bug in midi_seek().
- Eric Botcazou wrote a new page flipping/triple buffering code for the Windows port.
- Grzegorz Adam Hankiewicz added a linux specific debug help section.
- Eric Botcazou made the constructors of the fix class from integer and floating point values explicit.
- Eric Botcazou fixed a dat2s bug with dynamically linked programs under Windows.
- Jan Bruun Andersen fixed a compilation problem with Cygwin.
- Jeremiah Blanchard updated the build instructions for Darwin.
- Vincent Penquerc'h added sample loader/saver registration and a save_sample() function. Peter Wang documented it.
- George Foot added (preliminary) non-FM support to the OSS MIDI driver.
- Ben Davis and Robert J. Ohannessian put in (void *) casts for the LOCK_* macros on DJGPP and Mac.
- Nicholas Davies made the fix class not trigger warnings with gcc -Weffc++.
- Angelo Mottola fixed a keyboard focus problem under BeOS.
- Peter Wang fixed the detection of ESD and aRts on Unix systems.
- Peter Wang made files be opened with as permissive as possible permissions on Unix systems.
- Stepan Roh added support for a automake-style DESTDIR variable in the Unix makefile.
- Grzegorz Adam Hankiewicz made the doc processor output valid HMTL 4.0 in some corner cases for which it previously didn't.
- Grzegorz Adam Hankiewicz fixed a crash of the doc processor with very long lines.
- Peter Wang did some housekeeping work throughout the code and the documentation.

# Changes from 4.0.2 to 4.1.0 (Jul 2002)

- Charles Bilyue optimized the i386 blitters.
- Peter Wang fixed the mis-treatment of empty files by the library and the 'pack' utility.
- Eric Botcazou simplified pack_f{read,write} and cleaned up several uses of pack_feof().
- Eric Botcazou split USE_CONSOLE into ALLEGRO_USE_CONSOLE and ALLEGRO_NO_MAGIC_MAIN.
- Eric Botcazou simplified and cleaned up the asm bank switchers.
- Peter Wang added support for the environment variable ALLEGRO_MODULES under Unix.
- Peter Wang made 'configure --disable-vga' remove more stuff out of the core under Unix.
- Eric Botcazou made the DirectDraw code try to restore its surfaces as soon as it detects they have been lost.
- Peter Wang added a description of the packfile format.
- Peter Wang added an aRts sound driver to the Unix port.
- Sven Sandberg optimized create_video_bitmap() for systems with a single video memory surface.
- Grzegorz Adam Hankiewicz reindented the documentation sources, improving the text/info/html output in the process.
- Grzegorz Adam Hankiewicz improved chm output for the documentation.
- Sven Sandberg optimized and reduced numeric errors in create_trans_table().
- Lorenzo Petrone added a xwin_set_window_name() function to the X11 port.
- Peter Wang made install_allegro()/allegro_init() not abort the program on failure.
- Sven Sandberg and Grzegorz Adam Hankiewicz added backward compatibility to the new doc processor.
- Sven Sandberg fixed various problem in the makefiles.
- Elias Pschernig made it so that the COLORCONV_KEEP_TRANS flag is checked when converting bitmaps out of datafiles.
- Eric Botcazou added preliminary support for hardware acceleration and video bitmaps to the QNX port.
- Elias Pschernig added a window position saving feature to the Windows port.
- Vincent Penquerc'h added a -s-PROP option to the dat utility in order to preserve properties when stripping.
- Henrik Stokseth made the zipwin.sh script for packaging the Windows binary distribution work with Cygwin.
- Peter Wang and Eric Botcazou made it so that Allegro C programs can compile with gcc -ansi -pedantic.
- Vincent Penquerc'h added a 'sort' option to the grabber and the dat utility.
- Eric Botcazou added preliminary support for native windows under Windows.
- Vincent Penquerc'h made gcc use pipes on Unix when building the library.
- Lorenzo Petrone added support for switch callbacks under X11 and refactored the display switching code.
- Javier Gonzalez changed the default value of emulate_three to no in all cases.
- Eric Botcazou modified the behaviour of the retrace_* objects to take into account the refresh rate if known.
- Eric Botcazou fixed the 'configure --disable-constructor' problem.
- Elias Pschernig fixed menu dimensions in the GUI engine.
- Eric Botcazou added documentation on API compatibility.
- Elias Pschernig and Eric Botcazou fixed the get_camera_matrix*() functions.
- Igor Gnip removed the requirements for fileutils on DOS/Windows platforms.
- Jeremiah Blanchard contributed modifications in order for Allegro to compile on Darwin/MacOS X.
- Henrik Stokseth merged standard and extended mode-selectors.
- Elias Pschernig added chm ouput support for the documentation.
- Eric Botcazou merged the three input threads into a single one under Windows.
- Mike Pichagin contributed the ustrnicmp() function.
- Grzegorz Adam Hankiewicz contributed a new documentation format for better html output.
- Eric Botcazou added a DirectInput joystick driver to the Windows port.

# Changes from 4.0.1 to 4.0.2 (Jun 2002)

- Many clarifications in the docs.
- Sven Sandberg improved accuracy and fixed bugs in do_arc().
- Matthew Leverton added missing header files to be installed by the Windows binary distribution.
- Grzegorz Adam Hankiewicz fixed a problem with the TOC of the FAQ.
- Eric Botcazou fixed a bug with stretch_blit() under Windows XP.
- Peter Wang fixed various configure machinery problems under Unix.
- Sven Sandberg updated the Swedish translation file.
- Sven Sandberg fixed a crash in the exswitch example when compiled by Watcom C/C++ and also made if faster.
- Maxime Carey added a Canada (French) keyboard mapping file.
- Henrik Stokseth updated instructions and fixed installation for Cygwin.
- Eric Botcazou added an option to disable direct updating in color conversion mode under Windows.
- Eric Botcazou (presumably) fixed the bug in the emergency exit mechanism under Windows when called from the DLL.
- Angelo Mottola made it so that the sound doesn't block the main thread anymore under BeOS.
- Deepak T and Eric Botcazou fixed clipping in three C sprite drawing routines.
- Peter Wang fixed a deadlock that occurred under Unix when Allegro received an X11 close event.
- Eric Botcazou added a --cppflags option to allegro-config and fixed C++ compilation under QNX.
- Vincent Penquerc'h added a --version= option to allegro-config.
- Robert J. Ohannessian made the 32->24 color convertors more robust and improved the MMX one in the process.
- Robert J. Ohannessian, Eric Botcazou and Sven Sandberg fixed a bug in the hue blender and the hsv_to_rgb() routine.
- Matthew Leverton fixed another problem with al_find*() and NTFS partitions under Windows.
- Peter Wang fixed a bug in ALSA device detection.
- Peter Wang fixed a bug in al_find* under Unix when running as root.
- Matthew Leverton and Eric Botcazou fixed a bug with mouse mickeys in windowed mode under Windows.

# Changes from 4.0.0 to 4.0.1 (Mar 2002)

- Many minor changes, many clarifications in the docs.
- Peter Wang fixed the installation of shared libs under FreeBSD.
- Peter Wang and Eric Botcazou fixed autodetection glitches for VGA and SVGAlib.
- Eric Botcazou fixed a problem under X11 when the MIT X-SHM extension is used.
- Eric Botcazou fixed a deadlock on exit when an user window is used in conjunction with timers under Windows.
- Eric Botcazou disabled useless backbuffers for the DirectX safe driver.
- Peter Wang made the Alsa sound driver use non-blocking mode when detecting if ALSA PCM available.
- Sven Sandberg added support for long long integers to usprintf() and al.
- Robert J. Ohannessian fixed the difference blender.
- Peter Wang fixed a race condition when closing the X display.
- Elias Pschernig made all active dialogs redraw themselves after a switch.
- Peter Wang made fbcon a priority driver, so that it can appear above VGA.
- Javier Gonzalez fixed a glitch in the DirectSound input code.
- Eric Botcazou fixed the SIGSEGV on exit with the three-finger salute under QNX.
- Eric Botcazou fixed the C-to-asm calling problem for Borland C++ compiled programs.
- Eric Botcazou cleaned up the messy (and somewhat incorrect) DirectDraw bitmap management code.
- Sven Sandberg improved the video bitmap subdivision algorithm.
- Sven Sandberg fixed problems in the Windows makefiles (especially Borland) when building Allegro under Win98.
- Peter Wang removed the hack which switched off fix aliases under IRIX.
- Vincent Penquerc'h fixed a problem with the SIGALRM timer and SWITCH_PAUSE.
- Javier Gonzalez fixed a latency problem with audiostreams.
- Laurence Withers made the font exporter use the current palette for the output.
- Elias Pschernig made some changes to grabber: added a close hook; keeps track if anything has been modified; when you exit the grabber and the file was modified, the popup now has a 3rd option for save+exit; window title displays the current filename, and if the file has been modified; fixed multicolour font exports.
- Sven Sandberg optimized again the create_light_table() function.
- Attila Szilagyi fixed SVGAlib horizontal scrolling.
- Eric Botcazou fixed synchronization problems under QNX.
- Grzegorz Adam Hankiewicz made the TOC at the top of sections alphabetically sorted.
- Eric Botcazou fixed the screen not restored after a wake-up in the Windows windowed and overlay drivers.
- Richard Reeve fixed a silly mistake with gcc 3.0.x detection.
- Angelo Mottola fixed static keyconf compilation problem on BeOS due to pckeys keyboard driver.
- Eric Botcazou fixed the not-returning-focus-on-exit bug under Windows.
- Michael Bukin fixed a bug with C-version textprintf on 24-bpp bitmaps, reported by Bertrand Coconnier.
- Eric Botcazou fixed a bug in the 32->15 MMX color conversion routine.
- Eric Botcazou fixed the DLL linking problem with Borland C++ Builder 4.
- Sven Sandberg made exaccel more responsive.
- Sven Sandberg fixed a glitch with short filenames under DOS.

# Changes from 3.9.40 to 4.0.0 (Dec 2001)

- Many minor changes.
- Eric Botcazou modularised the VGA/Mode-X drivers under Linux.
- Peter Wang fixed the segfault bug in Mode-X under Linux with threads.
- Peter Wang made the X11 port use SIGTERM signal instead of exit() when invoking the three finger salute. This solves a problem where programs with sound hang when they are killed.
- Eric Botcazou added os_version and os_revision support to the QNX port and added a QNX specific section to the docs.
- Peter Wang added a deadzone for digital readings of joystick axes under Linux, as suggested by George Foot and made the driver look for /dev/input/js# before /dev/js#.
- Peter Wang renamed fixed point functions to be prefixed with "fix" instead of "f", to avoid clashes with some libcs. Backwards compatibility is provided using static inline functions.
- Peter Wang fixed two problems with emergency exits under Linux/Unix.
- Eric Botcazou changed the updating logic of the QNX Photon graphics driver.
- Eric Botcazou added a doc for the wfixicon utility, with the help of Laurence Withers.
- Angelo Mottola unicodified allegro_message on BeOS and wrote a new BeOS keyboard driver (using the shared pckeys system).
- Eric Botcazou fixed a problem with David Capello's d_menu_proc steal/return mouse focus patch.
- Peter Wang made passing NULL to install_allegro() as the atexit_ptr parameter mean allegro_exit() won't be installed as an atexit() callback, as suggested by Javier Gonzalez.
- Lorenzo Petrone added a gfxinfo utility.
- Eric Botcazou added fetch_mode_list() to the QNX Photon Direct driver.
- Peter Wang made X desktop_color_depth() able to return 15 bpp.
- Grzegorz Adam Hankiewicz updated Spanish translation strings.
- Peter Wang fixed a problem with X shutdown sequence.
- Eric Botcazou repaired the QNX build process, revamped the layout of the QNX port sources and made some fixes.
- Peter Wang disabled the SVGAlib mode fetching code as it was causing problems with other drivers.
- Angelo Mottola added BeOS notes to the ABI compatibility doc.
- Eric Botcazou fixed a bug in the Windows locking code that caused the grabber to crash on switch out.
- Eric Botcazou fixed a bug in the handling of recursive sub-bitmaps under Windows.
- Eric Botcazou fixed a bug preventing old style password-protected packfiles from loading in the grabber.
- Lorenzo Petrone added two FAQ entries on DGA2 problems.
- Grzegorz Adam Hankiewicz revamped the structure of the docs directory.
- Stepan Roh updated the Czech translation.
- Javier Gonzalez fixed a bug in the DirectSound driver related to the loop playing modes.
- David Capello fixed a problem with submenus which overlapped their parents, where focus would pop back to the parent instead of the child.

# Changes from 3.11 to 3.9.40 (Nov 2001)

- 3.9.40: Eric Botcazou enabled SSE support under Linux. Also reduced the delay in the DOS Sidewinder init code. Made the definition of _AL_DLL for MinGW32 consistent with other Windows ports.
- 3.9.40: Henrik Stokseth improved make install to install only the needed headers from the include/allegro/platform directory.
- 3.9.40: Vincent Penquerc'h updated 7 makefiles after his header splitting patch.
- 3.9.40: Robert J. Ohannessian added two new entries to the GFX_VTABLE structure.
- 3.9.40: Eric Botcazou replaced sprintf() by snprintf() in the Linux/Unix code. Increased the delay in the Windows switch handling code. Unicodified the GFX mode selector and fixed some glitches. Added a new test dubbed filetest. Fixed more unicode string problems. Unified the handling of system directory variables in the Windows makefiles. Made two strings translatable in the GFX mode selector.
- 3.9.40: Ben Davis added support for timers with parameters under Windows.
- 3.9.40: Eric Botcazou fixed the bug in the asm sprite functions when used with sub-bitmaps. Fixed a problem of the new header layout for platforms not supporting asm.
- 3.9.40: George Foot and Eric Botcazou fixed the C fceil() function and added the ffloor() function.
- 3.9.40: Chris Graham suggested to add a new flag for Windows NTFS compressed files.
- 3.9.40: Henrik Schmidt and Eric Botcazou found a workaround for the switching problem under Windows.
- 3.9.40: Eric Botcazou revamped the Borland C++ build process. Now it targets BC++ 5.5. Made pack_fdopen() an exported internal function. Reverted to the 3.9.38 code for 16-bit audio streaming with DirectSound.
- 3.9.40: Vincent Penquerc'h contributed a rather large split-up/ reorganization of the Allegro header files. Henrik and Eric did some related clean-up and fixing.
- 3.9.40: Peter Wang updated put_backslash() docs.
- 3.9.40: Eric Botcazou modified the way DirectDraw surfaces are enumerated. Fixed compilation errors/warnings with BC++. Made generate_optimized_palette_ex() a static function. Worked around the DOS limitations for al_findfirst() and for_each_file(). Moved platform-dependent stuff out of src/fsel.c.
- 3.9.40: Peter Wang updated timer docs for non-DOS. Added ABI compatibility readme.
- 3.9.40: Javier Gonzalez removed all references to the RSXNT build.
- 3.9.40: Vincent Penquerc'h made it so that users can provide their own ustrdup().
- 3.9.40: Robin Burrows fixed two glitches in the DirectDraw code.
- 3.9.40: Peter Wang fixed a problem where XUnlockDisplay was called after XCloseDisplay.
- 3.9.40: Eric Botcazou removed old Sidewinder asm driver. Cleaned up buffer usage in DIGMID. Fixed unicode support in the DIGMID driver. Replaced all occurrences of SEND_MESSAGE() by object_message().
- 3.9.40: Annie Testes caught a misordering in the X system shutdown.
- 3.9.40: Eric Botcazou increased the size of filename buffers to 1024 bytes.
- 3.9.40: Sven Sandberg improved fix.bat script.
- 3.9.40: David Capello fixed a problem with lost GUI mouse clicks.
- 3.9.40: Vincent Penquerc'h removed two hard-coded list sizes in grabber.
- 3.9.40: Peter Wang added a little clarification regarding mouse_accel_factor.
- 3.9.40: Eric Botcazou made debugging functions revert to ASCII strings. Added some defines for backwards compatibility with former cpu_* flags. Fixed a compilation problem under DJGPP.
- 3.9.40: Henrik Stokseth added VBE/AF fetch_mode_list().
- 3.9.40: Robert J. Ohannessian revamped the retrieval mechanism of CPU capabilities and added some new flags.
- 3.9.40: Eric Botcazou fixed various mouse cursor problems under Windows. Updated docs about the DIGI_DIRECTX drivers.
- 3.9.40: Javier Gonzalez fixed audio streams in Windows.
- 3.9.40: Peter Wang improved the XDGA2 driver by removing unneccessary scrolling, which also resulted in speed-ups due to less locking/unlocking. The original fix was by Michael Bukin.
- 3.9.40: Eric Botcazou and Javier Gonzalez added some documentation on static linking with MSVC/MinGW32.
- 3.9.40: Peter Wang fixed sonames for debug and profile libs. Also added a 'configure' check that ld supports -export-modules before enabling modules.
- 3.9.40: Annie Testes found ASCII strings that needed to be converted. Also added a pack_fdopen() function.
- 3.9.40: Robert J. Ohannessian clarified some Dev-C++ instructions. Fixed fix.bat script under MinGW32/Win2k.
- 3.9.40: Marcel Smit corrected a bug that caused errors when drawing perspective-correct polygons facing the screen. (dz=0)
- 3.9.40: Peter Wang made install_timer_int static. Also moved allegro_404_char into public API.
- 3.9.40: Laurence Withers added docs for allegro_404_char.
- 3.9.40: Eric Botcazou fixed a little glitch with menu auto-opening. Also fixed a color glitch in the Windows windowed driver on 8-bit desktops.
- 3.9.40: Salvador Eduardos Tropea fixed inline friend declarations with bodies. (gcc 3.0.x problem)
- 3.9.40: Peter Wang improved behaviour between mouse auto-opening menus and navigating with keyboard. Also unspartanised the ustrtok_r() docs.
- 3.9.40: Henrik Stokseth replaced the mmxtest with a more advanced assembler capabilities testing.
- 3.9.40: Eric Botcazou re-enabled full pairing on Pentium for five color conversion routines. Applied xor vs. mov instruction-length optimization to the non-MMX code. Applied %ecx vs. %edx instruction-length optimization to the non-MMX code. Updated the mouse_accel_factor docs.
- 3.9.40: Peter Wang eliminated use of static buffers by uconvert() in several places.
- 3.9.40: David A. Capello made d_menu_proc steal/return focus when activated/deactivated.
- 3.9.40: Henrik Stokseth added Out of Environment space detection on the fix.bat script.
- 3.9.40: Eric Botcazou fixed a non ANSI C compliant behaviour in usprintf().
- 3.9.40: Seunghwan Ji made makedoc output correct html and rtf files for Korean.
- 3.9.39: Robert J. Ohannessian added -? and --help options to dat.
- 3.9.39: Sven Sandberg and Grzegorz Adam Hankiewicz fixed some errors in the documentation.
- 3.9.39: Annie Testes fixed several glitches related to unicode support.
- 3.9.39: Henrik Stokseth added an internal _al_sane_realloc() function with guaranteed behaviour. Used this to fix a memory leak and updated the FAQ.
- 3.9.39: Eric Botcazou and Peter Wang updated the documentation on: file attribute flags, request_scroll and request_video_bitmap.
- 3.9.39: Eric Botcazou unified the use of internal timers in Windows drivers. Also let digitest use max volume of Allegro mixer.
- 3.9.39: Paul Hampson improved again the DOS SNESpad joystick driver.
- 3.9.39: Eric Botcazou revamped the locking mechanism of the DGA2 driver. Also fixed some memory leaks.
- 3.9.39: Peter Wang added mode fetching for X11 fullscreen and DGA fullscreen drivers.
- 3.9.39: Robert J. Ohannessian fixed 16bit masked blit SSE code and removed unused instruction in the other blitters.
- 3.9.39: Salvador Eduardos Tropea added some GCC 3.x fixes.
- 3.9.39: Peter Wang added a check if a module listed in modules.lst exist before trying to load it.
- 3.9.39: Charles Wardlaw made alert/alert3 use transparent background for text label.
- 3.9.39: Eric Botcazou added a flush_config_file() API function. Also added a hfill() method to the GFX_VTABLE structure.
- 3.9.39: Peter Wang fixed some memory leaks.
- 3.9.39: Eric Botcazou fixed two compilation warnings with gcc > 2.95.
- 3.9.39: Johan Peitz contributed 'Alex the Allegator' icon.
- 3.9.39: Angelo Mottola fixed safe fullscreen bug and fetch_mode_list() for BeOS.
- 3.9.39: Peter Wang updated XDGA2 and SVGAlib driver's fetch_mode_list() function.
- 3.9.39: Henrik Stokseth rewrote the mode-list API, updated the code and updated the documentation.
- 3.9.39: Grzegorz Adam Hankiewicz updated all URLs in the Allegro sources and documentation.
- 3.9.39: Eric Botcazou fixed cmplog script for perl 5.6.1.
- 3.9.39: Peter Wang added a FAQ entry.
- 3.9.39: Peter Wang fixed up the sound subsystem which he accidentally broke when he introduced the dynamic modules.
- 3.9.39: Eric Botcazou fixed a compilation warning. Also added support for 8-bit desktops to the windows windowed driver. Fixed color shifts in the color convertors from 8-bit. Fixed a bug in the 8->8 color conversion routine.
- 3.9.39: Javier Gonzalez contributed bidirectional looping support for the directsound driver.
- 3.9.39: Robert J. Ohannessian and Henrik Stokseth did a large update on the installation instructions for Mingw32.
- 3.9.39: Eric Botcazou cleaned up windows dll version info sheet and let the windows makefiles use implicit rules on some file targets. Fixed a compilation glitch with MSVC.
- 3.9.39: Henrik Stokseth added support for building RPMs with SuSE Linux.
- 3.9.39: Peter Wang fixed some off-by-one errors. Fixed unix makefile. Fixed disabling of dynamic modules.
- 3.9.39: Eric Botcazou and Grzegorz Adam Hankiewicz finished translation of the allegro.spec file.
- 3.9.39: Eric Botcazou re-added a faq entry on DirectX version problem.
- 3.9.39: Grzegorz made fbcon a module.
- 3.9.39: Peter Wang removed allegro-enduser.spec as it is no longer needed. Also contributed a rewrite of the allegro.spec file, and updated the scripts to make the rpm. The new allegro.spec file was based on one contributed by Osvaldo Santana Neto. Peter also allowed configure to give linker flags to allegro-config (for modules). Also let _unix_find_resource search in /usr/[local/]share/allegro for .dat files.
- 3.9.39: Javier Gonzalez contributed backward playing support for the directsound driver.
- 3.9.39: Eric Botcazou fixed a glitch with backward playing in the digitest test.
- 3.9.39: Salvador Eduardos Tropea made a small update on the cygwin section of readme.mgw.
- 3.9.39: Peter Wang fixed a problem with BSD make and Mac directory separators ':'. Documented gfx_cardw variable.
- 3.9.39: Sven Sandberg fixed a nasty side-effect of clear() inlining on Watcom.
- 3.9.39: Laurence Withers fixed a crash bug in the mode-selector.
- 3.9.39: Peter Wang removed SIGIO asynch stuff since it's not needed when we have pthreads. Updated documentation to mention dynamic modules. Added configure option to disable threads.
- 3.9.39: Burton Radons fixed a bug in his dissolve blender.
- 3.9.39: Eric Botcazou fixed a bug in the menus caused by auto-opening.
- 3.9.39: Henrik Stokseth updated the makefiles to use -mcpu=pentium instead of the depreciated -mpentium gcc option. Also let the packaging scripts run autoconf and remove hidden or leftover files.
- 3.9.39: Eric Botcazou cleaned up the windows sound code. Also clarified the code in the core menu function. Corrected a unicode glitch. Removed remaining references to ALLEGRO_NO_FINDFIRST. Added a unified al_find*() interface. Made the Portuguese translation file of the former Portuguese (Br) file. Fixed a few keyboard configuration files. Changed pl.cfg EOLN delimiter to \r\n.
- 3.9.39: Grzegorz Godlewski contributed a Polish localization patch. Also added support for lower and upper altgr tables.
- 3.9.39: Eric Botcazou fixed a bug in the keyconf utility caused by the sectionification.
- 3.9.38: Robert J. Ohannessian added the following to the color convertor: color copy routines needed by the BeOS port, support for cross-conversion between 15-bit and 16-bit colors, support for conversion to 8-bit color, support for rectangles of any width and added two new MMX routines.
- 3.9.38: Henrik Stokseth rewrote get_gfx_mode_list() likewise rewrote the mode-selector to use get_gfx_mode_list(). Also added fetch_mode_list() functions on the DirectX, VGA, Mode-X and Xtended GFX drivers.
- 3.9.38: Angelo Mottola fixed problems with SMP on the BeOS port.
- 3.9.38: Eric Botcazou fixed some problems with the non-MMX code in the color convertor.
- 3.9.38: Sven Sandberg improved spline() for DRAW_MODE_TRANS
- 3.9.38: Peter Wang renamed clear() to clear_bitmap(). clear() is still provided for backwards compatibility.
- 3.9.38: Stepan Roh made fractal generator work under non-Intel processors.
- 3.9.38: Eric Botcazou made a valid display switch mode of SWITCH_NONE under DOS.
- 3.9.38: Angelo Mottola made the BeOS port use the new unified color conversion routines.
- 3.9.38: Peter Wang added check to see if display is local under X11.
- 3.9.38: Eric Botcazou and Sven Sandberg fixed compilation under Watcom 10.6.
- 3.9.38: Elias Pschernig contributed an icon resource fixer for the Windows port and added support for shared library under BeOS.
- 3.9.38: Angelo Mottola added a bfixicon utility.
- 3.9.38: Stepan Roh made the native Allegro time format of ANSI time_t.
- 3.9.38: Peter Wang added an ustrtok_r() function.
- 3.9.38: Robert J. Ohannessian optimized some masked_blits with SSE instructions.
- 3.9.38: Angelo Mottola did a sound fix for audiostream output and SMP machines and added triple buffering support on the BeOS port.
- 3.9.38: Angelo Mottola added fetch_mode_list() support to the BeOS fullscreen driver.
- 3.9.38: Eric Botcazou changed the acceleration scheme for the mouse under Windows.
- 3.9.38: Peter Wang added fetch_mode_list() support to the svgalib driver.
- 3.9.38: Peter Wang added pthread timer and removed dependancy to SIGALRM.
- 3.9.38: Henrik Stokseth added Windows XP detection.
- 3.9.38: Andreas Kluge fixed a bug with volume setting in the DOS Soundscape driver.
- 3.9.38: Angelo Mottola rewrote the BeOS sound driver to use the BSoundPlayer class.
- 3.9.38: Robert J. Ohannessian added SSE and SSE2 detection.
- 3.9.38: Connelly Barnes fixed a bug with the DirectSound pan.
- 3.9.38: Eric Botcazou added support of switch modes to the test program.
- 3.9.38: Eric Botcazou modified the Windows switch mechanism.
- 3.9.38: Angelo Mottola added fullscreen display switching support and did many fixes and cleanups on the BeOS port.
- 3.9.38: Henrik Stokseth added code to get more os info under unix.
- 3.9.38: Nimrod Abing fixed a bug in the config routines related to the NULL section.
- 3.9.38: Eric Botcazou fixed a crash in the Windows windowed driver on fast machines.
- 3.9.38: Ronaldo Hideki Yamada did a large update on the PowerMac port and added a midi driver.
- 3.9.38: Henrik Stokseth generalised the support for processor specific optimisations in some makefiles.
- 3.9.38: Evert Glebbeek put set_gfx_mode on a diet and added config entry for specifying the card to use for GFX_AUTODETECT_WINDOWED.
- 3.9.38: Robert J. Ohannessian made blit not convert between colordepths for video bitmaps. (for AllegroGL)
- 3.9.38: Peter Wang made fix_filename_slashes() handle both types of slashes.
- 3.9.38: Grzegorz Adam Hankiewicz implemented a switch in makedoc to check for long (>77) doc lines.
- 3.9.38: Owen Rudge contributed a DLL version resource script.
- 3.9.38: Sven Sandberg made the rotation functions faster, more accurate and working with any type of bitmap. Also removed rotate_scaled_sprite_flip().
- 3.9.38: Angelo Mottola added fetch_mode_list() support to DGA2.
- 3.9.38: David A. Capello made test program use transparent polygon types.
- 3.9.38: Owen Rudge contributed a mkdata.bat script.
- 3.9.38: Grzegorz Adam Hankiewicz added reload_config_texts().
- 3.9.38: Eric Botcazou added an enhanced building mechanism for DLL export definition files.
- 3.9.38: Eric Botcazou added a new unicode example program and did a ton of small fixes.
- 3.9.37: Johan Peitz fixed and enhanced the Win32 joystick driver.
- 3.9.37: Sven Sandberg added Ctrl + arrow keys to d_edit_proc().
- 3.9.37: Eric Botcazou changed the color key for the Windows overlay driver to bright pink.
- 3.9.37: Eric Botcazou reverted some changes he made to the timer core last release which were causing problems with the MIDI player, and removed the Windows multithreaded timer driver.
- 3.9.37: Henrik Stokseth made some updates to the OS detection code, and added a os_multitasking variable.
- 3.9.37: Eric Botcazou fixed a problem in the config routines, where entries in the NULL section were hiding duplicate entries in other sections.
- 3.9.37: Eric Botcazou made the setup program use Unicode functions.
- 3.9.37: Henrik Stokseth unified the fix* scripts, and gave them new options.
- 3.9.37: Peter Wang added support for dynamically loaded modules under Unix. The SVGAlib, ALSA digital, ALSA MIDI, ESD and DGA2 drivers will be built as modules when possible. This removes external dependencies on the main library and improves binary transportability under Linux.
- 3.9.37: Eric Botcazou made many changes and bug fixes to the Unicode string functions, and their use in the library. The old functions now behave exactly like the libc equivalents, while the new functions (the 'z' functions) behave more sanely. This change affects most code which uses the Unicode functions.
- 3.9.37: Bertrand Coconnier changed the recently merged scene rendering API, fixed a bug, and provided a new example program. The API change will affect all code which uses the scene functions.
- 3.9.37: Laurence Withers wrapped registration of the bitmap file types in a constructor. Where constructors are supported, this should reduce the executable size when statically linking (unless you use the bitmap loaders, of course).
- 3.9.37: Ben Davis modified the set_volume_per_voice scale. Please see the docs for this function if you have used it in the past.
- 3.9.37: Eric Botcazou worked around a DOS mouse bug under Win2k.
- 3.9.37: Eric Botcazou added VGA Mode 13h support under DirectX 5 or greater.
- 3.9.37: Henrik Stokseth added a get_gfx_mode_list() function, and the implementation of it for the VESA driver.
- 3.9.37: Eric Botcazou and Annie Testes toiled hard to avoid buffer overflows (particularly with regards to the Unicode functions).
- 3.9.37: Eric Botcazou fixed a mouse mickeys bug and cleaned up the input subsystem under Windows.
- 3.9.37: Eric Botcazou made two minor changes in the handling of index 0 in paletted modes.
- 3.9.37: Eric Botcazou added a transparency preserving feature to the grabber and dat utility.
- 3.9.37: Eric Botcazou fixed a crash when alt-tabbing in page flipping under Windows.
- 3.9.37: Peter Wang added gui_menu_draw_menu and gui_menu_draw_menu_item to allow customising the look of the GUI menus (to a certain extent).
- 3.9.37: Angelo Mottola added support for the new GFX_AUTODETECT_FULLSCREEN and GFX_AUTODETECT_WINDOWED constants, which we _all_ wholeheartedly agreed upon :-)
- 3.9.37: Eduard Bloch made config vars which exist but are empty return defaults.
- 3.9.37: Elias Pschernig added a COLORCONV_KEEP_TRANS mode.
- 3.9.37: Henrik Stokseth added support for compiling with Cygwin. It works in Mingw compatibility mode.
- 3.9.37: Angelo Mottola made GUI submenus automatically open when the mouse hovers for long enough. (This was an old patch that finally got merged.) Eric made some related modifications to it later.
- 3.9.37: Eric Botcazou made clear_keybuf() not clear the key[] array.
- 3.9.37: Sven Sandberg added a --quick option to fix scripts.
- 3.9.37: Angelo Mottola did _loads_ of work on the QNX port (much too much to document here).
- 3.9.37: Eric Botcazou made the Win32 asm color conversion code for windowed drivers available for other ports, and added a few other converters. Isaac Cruz added one too.
- 3.9.37: Eric Botcazou restructured the config file format. Some previously unsectioned variables are now in sections.
- 3.9.37: George Foot added a threading system to handle asynchronous events, instead of using SIGALRM (under Unix).
- 3.9.37: George Foot fixed some problems with pack_fgets().
- 3.9.36: Eric Botcazou made it so that set_keyboard_rate(0, 0) will disable keyboard repeat, as in the documentation.
- 3.9.36: Annie Testes added font_height, render_char, char_length hooks to FONT_VTABLE.
- 3.9.36: Eric Botcazou made some minor changes related to AllegroGL in the window management code, and fixed two little mouse bugs Javier Gonzalez had found (both under Windows).
- 3.9.36: Eric Botcazou added a get_desktop_resolution() function for Windows and X. Joshua Haberman added a BeOS version.
- 3.9.36: Angelo Mottola comprehensively started a QNX port.
- 3.9.36: Robert Ohannessian corrected src/dest ordering in additive blenders.
- 3.9.36: Eric Botcazou improved support of external windows in Windows.
- 3.9.36: Peter Wang updated the SVGAlib driver for version 2.
- 3.9.36: Peter Wang added a fullscreen version of the X-Windows graphics driver. The original was by Benjamin Joel Stover.
- 3.9.36: Peter Wang made grabber use file_select_ex(). This is just here so you don't get a shock :-)
- 3.9.36: Eric Botcazou fixed some small bugs in the DirectSound input code.
- 3.9.36: Eric Botcazou fixed the NumLock state in X not matching keyboard LEDs.
- 3.9.36: Eric Botcazou reenabled the multi-threaded timer under Windows.
- 3.9.36: Eric Botcazou and Javier Gonzalez made the keyboard repeat system more efficient.
- 3.9.36: Eric Botcazou fixed some asm blitters, and also a bug with changing timer speeds.
- 3.9.36: Peter Wang made the keypad return / * - + ASCII values even if NumLock is off, under Linux console.
- 3.9.36: Ronaldo Hideki Yamada made a big update of the Mac port, including some new PPC files.
- 3.9.36: The GGI driver was removed, due to its inability to actually work. It is no longer supported, unless someone rewrites it.
- 3.9.36: Eric Botcazou fixed a problem with the GDI driver when compiled with MSVC.
- 3.9.36: Some MIDI fixes by Javier Gonzalez and Eric Botcazou.
- 3.9.36: Grzegorz Adam Hankiewicz improved the fb.modes line parsing function in the fbcon driver.
- 3.9.36: Grzegorz Adam Hankiewicz changed the behaviour of GFX_SAFE. This means that "set_gfx_mode(GFX_SAFE, ...)" now returns an error if it is unable to set a video mode, just like any other video driver.
- 3.9.36: Eric Botcazou fixed volume setting in Windows.
- 3.9.36: Eric Botcazou added DirectX 3 compatibility.
- 3.9.36: Nick Kochakian added input routines to the DirectSound driver. It was also modified by Javier Gonzalez.
- 3.9.35: Eric Botcazou made Windows restore the original sound volume after an Allegro program quits.
- 3.9.35: Eric Botcazou fixed sample looping in DirectSound driver.
- 3.9.35: Grzegorz Adam Hankiewicz solved some color problems in the demo game.
- 3.9.35: Angelo Mottola implemented a close button hook for X11.
- 3.9.35: Eric Botcazou fixed _the_ Windows 2000 keyboard bug.
- 3.9.35: Eric Botcazou made some changes to the locking/unlocking mechanism in the Windows port.
- 3.9.35: Laurence Withers made some modules avoid linking dependencies.
- 3.9.35: Javier Gonzalez added close button support for Windows.
- 3.9.35: Eric Botcazou improved mouse handling in the GFX_GDI driver and fixed some other mouse glitches.
- 3.9.35: Peter Wang made set_mouse_sprite(NULL) regenerate the default arrow bitmap (using the current palette).
- 3.9.35: Eric Botcazou made hardware accelerated primitives stop when the user switches out in Windows.
- 3.9.35: Tom St Denis fixed clipping of transparent objects.
- 3.9.35: Eric Botcazou and Javier Gonzalez improved switching in Windows and other things.
- 3.9.35: Peter Wang made the Linux joystick driver use standard constants.
- 3.9.35: Sven Sandberg changed the Z-buffer API.
- 3.9.35: Peter Wang made the default mouse sprite independent of the palette in 8 bpp modes.
- 3.9.35: Bertrand Coconnier added documentation for the P3D merge.
- 3.9.35: Angelo Mottola fixed desktop_color_depth() and added window close button support for the BeOS port.
- 3.9.35: Ben Davis added the set_window_close_button() and set_window_close_hook() framework.
- 3.9.35: Peter Wang exposed the mouse_sprite, mouse_x_focus and mouse_y_focus variables.
- 3.9.35: Robert Ohannessian and Javier Gonzalez fixed bad clearing of subbitmaps.
- 3.9.35: Peter Wang renamed GFX_XDFS to GFX_XDGA_FULLSCREEN.
- 3.9.35: Henrik Stokseth updated the cross-compilation system.
- 3.9.35: Tomohiko Sugiura added some keys and renamed some JP keys.
- 3.9.35: Eric Botcazou added a DirectDraw2 interface, with support for refresh rates.
- 3.9.35: Bertrand Coconnier merged in Calin Andrian's P3D library.
- 3.9.35: Javier Gonzalez made allegro_message() use the title from set_window_title() in Windows.
- 3.9.35: Andreas Kluge fixed division bugs in the fix class.
- 3.9.35: Stepan Roh documented the FA_* flags.
- 3.9.35: Peter Wang added hooks to allow overriding the look of standard dialogs.
- 3.9.35: Peter Wang changed X window placement and mapping behaviour.
- 3.9.35: David A. Capello made dotted_rect() avoid bank switches.
- 3.9.35: Eric Botcazou fixed a freezing problem under Window with locking/unlocking bitmaps under heavy load. He received help tracking down the bug from Javier Gonzalez.
- 3.9.35: Stepan Roh fixed a bug with FA_RDONLY constant under Unix.
- 3.9.35: Eric Botcazou cleaned up the Windows graphics subsystem.
- 3.9.35: "Sask Allegro" added support for more than two joysticks in the Windows port.
- 3.9.34: Ben Davis made close button in Windows windowed modes not simulate Escape key, in preparation for new behaviour (in next WIP).
- 3.9.34: Laurence Withers fixed a problem with accents in keyconf.
- 3.9.34: Javier Gonzalez added DIGMID to the Windows MIDI drivers list.
- 3.9.34: Eric Botcazou cleaned up the DirectDraw subsystem.
- 3.9.34: Eric Botcazou made the DirectDraw overlay driver comply with page flipping and triple buffering code, amongst other things.
- 3.9.34: Bertrand Coconnier improved subtexel accuracy for texture mapping.
- 3.9.34: Javier Gonzalez corrected mouse movement speed in Windows.
- 3.9.34: Ben Davis adapted polygon functions to handle two coincident vertices, and changed and clarified texture coordinate alignment in code and documentation.
- 3.9.34: Grzegorz Adam Hankiewicz fleshed out the docs for Unicode functions, adapting from djgpp and gcc docs.
- 3.9.34: Eric Botcazou fixed a triple buffering problem in the DirectDraw accelerated driver.
- 3.9.34: Henrik Stokseth added support for cross-compilation in the mingw32 build.
- 3.9.34: Grzegorz Adam Hankiewicz updated more examples for GFX_SAFE.
- 3.9.34: Ben Davis added set_volume_per_voice(), made silent voices continue playing and fixed other minor bugs.
- 3.9.34: Ben Davis fixed a bug in create_rgb_table().
- 3.9.34: Angelo Mottola added display switching routines for BeOS and fixed some bugs.
- 3.9.34: Laurence Withers updated documentation about ``const'`.
- 3.9.34: Ronaldo Hideki Yamada contributed a macintosh port of Allegro.
- 3.9.34: Grzegorz Adam Hankiewicz changed and documented new GFX_SAFE behaviour (that color depth is undefined), updated the fbcon driver to take advantage of this and updated example programs.
- 3.9.34: Peter Pavlovic fixed a bug caused by file selector stretching.
- 3.9.34: Bertrand Coconnier fixed bugs related to poly3d(); removed never-called C versions of scanline functions for POLYTYPE_FLAT and non-8bpp POLYTYPE_GCOL; and made clip3d() and clip3d_f() functions compliant with Z-buffered polygons.
- 3.9.34: Stepan Roh added C version of masked_stretch_blit().
- 3.9.34: Angelo Mottola did more work on BeOS: hardware acceleration (rect, hline, vline, clear_to_color, blit); mouse fix in windowed mode; desktop_color_depth(); yield_timeslice();
- 3.9.34: Peter Wang retroactively updated CHANGES and AUTHORS from late 3.9.33 to present using CVS logs and email archives, and possibly messed up.
- 3.9.34: Angelo Mottola added a BeOS windowed driver (originally by Peter Wang), a BeOS MIDI driver, mouse wheel support under BeOS and made many bug fixes and changes to other BeOS code and documentation.
- 3.9.34: Laurence Withers fixed dat2s output of fonts for new font subsystem.
- 3.9.34: Peter Wang made the SVGAlib driver more robust.
- 3.9.34: Peter Wang changed the way Intellimouse protocols are selected under Linux console.
- 3.9.34: Eric Botcazou added file_select_ex and reverted file_select to old behaviour.
- 3.9.34: Laurence Withers added ugetcx() function.
- 3.9.34: Laurence Withers designed and implemented a new FONT structure, which should provide many advantages over the old one.
- 3.9.34: Eric Botcazou made more fixes to Windows code.
- 3.9.34: Bertrand Coconnier added a z-buffer rendering mode for 3D polygons (derived from Calin Andrian's P3D library) and an example program for it.
- 3.9.34: Michael Bukin added customization for keycode to scancode mapping in X.
- 3.9.34: Peter Wang added mouse wheel support to d_textbox_proc and d_slider_proc, and made file selector dialog stretch.
- 3.9.34: Tom Fjellstrom added an ALSA MIDI driver.
- 3.9.34: Eric Botcazou made some changes to the Windows windowed driver.
- 3.9.34: Grzegorz Adam Hankiewicz updated the documentation and the makedoc program to produce better .texi output. The new version works very well with the texi2dvi program, which produces fine ready to print device independent output. Also documented the new unix makefile targets.
- 3.9.34: George Foot added --env option to allegro-config script.
- 3.9.34: Benjamin Stover made some vararg fixes in unicode.c and added a workaround for missing defines in fbcon.c.
- 3.9.34: Robin Burrows added a Windows waveOut sound driver.
- 3.9.34: Eric Botcazou changed desktop_color_depth() for Windows.
- 3.9.34: Angelo Mottola added line switching and refresh rate support to DGA2 driver.
- 3.9.34: Bertrand Coconnier added scanline subdivisions and fixed 3D polygon drawing.
- 3.9.34: Angelo Mottola added BeOS joystick driver.
- 3.9.34: Angelo Mottola added DGA2 driver.
- 3.9.34: Robin Burrows added Windows sound driver using Allegro mixer.
- 3.9.34: Stepan Roh added workaround for fceil defined in Irix headers.
- 3.9.34: Michael Bukin changed DGA screen clearing.
- 3.9.34: Tomohiko Sugiura added a more aggressive Sidewinder driver.
- 3.9.34: Tomohiko Sugiura added three Japanese keys.
- 3.9.34: Stepan Roh made C functions const-correct.
- 3.9.34: Bertrand Coconnier fixed blending in atex_lit scanline functions.
- 3.9.34: Michael Bukin modified text_mode to return previous mode.
- 3.9.34: Peter Pavlovic fixed scrollbar display in grabber and improved scrolling in GUI objects.
- 3.9.34: anarko made GUI objects restore textmode.
- 3.9.34: Laurence Withers added font destroy hook.
- 3.9.34: Vincent Penquerc'h modified the mouse button press/release events so they have higher priority than double-click events.
- 3.9.34: Eric Botcazou improved colormap handling in XDGA.
- 3.9.34: Robin Burrows provided a new page flipping code for the DirectDraw subsytem, which now works on every graphic card.
- 3.9.33: Henrik Stokseth updated the mingw32 makefile, the documentation and sent in some other related fixes and updates. You will never again need MSVC to compile the Allegro DLLs. ;o)
- 3.9.33: Peter Puck contributed some updates to Allegro's win32 code which got the native mingw32 build fully working.
- 3.9.33: Michael Bukin changed the auto-repeat handling in X, sched_yield handling for Unix, fixed _add_exit_func, and added list of active dialogs to the GUI.
- 3.9.33: Vincent Penquerc'h sped up the C versions of the RLE sprite drawing routines by quite a bit.
- 3.9.33: Peter Wang improved TGA palette loading.
- 3.9.33: Laurence Withers made more functions const-correct.
- 3.9.33: Isaac Cruz moved Windows bitmap locking to a separate .S file, changed the update logic for the windowed driver, and added an accelerated vline implementation.
- 3.9.33: Stephen Kittelson fixed a bug in pckeys.c, and changed the ASCII values returned for a few weird key combinations.
- 3.9.33: Peter Wang made various functions const-correct.
- 3.9.33: Peter Pavlovic made aesthetic modifications to the GUI menu system.
- 3.9.33: Javier Gonzalez suggested that the file and mode selector dialogs should use popup_dialog.
- 3.9.33: Vincent Penquerc'h added the install-gzipped-man makefile target, patched some of the EINTR handling, and made the OSS driver detect whether the device is 16 bit or not.
- 3.9.33: Peter Pavlovic modified the Slovak keyboard mapping and made the file selector detect available drives in Windows.
- 3.9.33: Peter Wang added a sound (output only) driver for BeOS.
- 3.9.33: Sven Sandberg fixed a typo in the definition of ustrdup, added the uwidth_max function, provided the d_yield_proc function, and made various dialogs use it.
- 3.9.33: Michael Bukin made the DGA driver clear video memory and centre the screen, if it's not fullscreen.
- 3.9.33: Eduard Bloch suggested better ways to find the executable in Unix.
- 3.9.33: Andrew Geers added flipped rotated sprites.
- 3.9.33: George Foot made the Unix makefile work for non-root users.
- 3.9.33: Grzegorz Adam Hankiewicz made language config files be forced to lower case.
- 3.9.33: Grzegorz Adam Hankiewicz added documentation for findfirst(), findnext(), and findclose(), and corrected the documentation for get_executable_name().
- 3.9.33: Stepan Roh made patches to allow compilation on IRIX.
- 3.9.33: John Harger made a change to improve the stability of AllegroGL in Windows.
- 3.9.33: Sven Sandberg fixed a bug in the plain C 16bpp stretched blitter.
- 3.9.33: George Foot fixed a bug in the i386 8bpp masked blit routines, reported by Damian Yerrick.
- 3.9.33: Eduard Bloch fixed a freeze caused by the ESD detection code.
- 3.9.33: Vincent Penquerc'h added mouse button press/release events to the GUI system.
- 3.9.33: Peter Wang solved a conflict with SVGAlib.
- 3.9.33: Vincent Penquerc'h added the XCRP and YCRP properties to bitmap objects in datafiles.
- 3.9.33: Vincent Penquerc'h made the GUI system not send MSG_DRAW to hidden objects.
- 3.9.33: Chris La Mantia pointed out that his code for textprintf_right had mutated somehow.
- 3.9.33: Peter Wang added a workaround for a mouse motion reporting bug in some X servers.
- 3.9.33: Eric Botcazou altered the DGA code to work better in 32bpp modes.
- 3.9.33: Daniel Nilsson tweaked exstars and exlights
- 3.9.33: Isaac Cruz fixed a nasty bug with subbitmap locking, and added desktop_color_depth and yield_timeslice support to the Windows version.
- 3.9.33: Peter Cech made uisspace() recognise non-ASCII space characters.
- 3.9.32: S.Sakamaki added a function for controlling the refresh rate when using the DOS VESA 3.0 driver (this could also be supported by some other drivers if anyone wants to implement that).
- 3.9.32: S.Suzuki added DOS drivers for the IF-SEGA /PCI, /PCI2, and /ISA joystick interface cards.
- 3.9.32: Fabrizio Gennari added DOS drivers for multisystem joysticks with 9-pin connectors (Atari, Commodore 64, MSX).
- 3.9.32: Peter Pavlovic improved the support for accented character maps in the keyboard driver.
- 3.9.32: Sven Sandberg optimised the GUI listbox scrolling to skip redraws if it can't keep up with the update speed.
- 3.9.32: Olly Betts did some work to make cross-compiling the djgpp version work on Linux.
- 3.9.32: Isaac Cruz improved the windowed mode ddraw driver, adding support for many different color depth conversions.
- 3.9.32: Vincent Penquerc'h added an update selection function to the grabber.
- 3.9.32: many bugfixes from various people.
- 3.9.32: zipup.sh now generates dependencies entirely using standard Unix tools and gcc, so it can setup all the supported platforms without needing those compilers to be available (ie. I can create Watcom, BeOS, and Mingw32 dependencies all from my Linux machine). This does require a bit of cooperation from the different targets, though: they have to set up their "make depend" target to override the standard gcc defines, and wrap any non-standard header includes with "#ifndef SCAN_DEPEND".
- 3.9.32: fixed (I hope :-) bug with non-GMT timezones in the datafile update code.
- 3.9.32: rewrote the Unicode usprintf() to piggyback on libc when converting floating point data (too hard to get this right ourselves :-)
- 3.9.31: Henrik Stokseth did some work on a native Mingw32 build. This is currently incomplete, and unlikely to work right now since there have been other changes in the Windows code since the version he started from. At the moment this version is statically linked, using makefile.mgs, and makefile.mgw still exists for the MSVC-piggyback version. The ultimate goal is to get this native version building as a DLL in addition to statically linked, at which point we can merge both makefiles into makefile.mgw and remove makefile.mgs. Oh yeah, and there are currently no docs for the native version.
- 3.9.31: Greg Hackmann contributed a Borland C++ Builder port. Like the RSXNT and Mingw32 versions, this is a client for the MSVC DLL, and not able to compile Allegro directly itself, but allows you to build Allegro programs using the Borland compiler.
- 3.9.31: Robert Ohannessian added MMX optimisation for the 8 and 16 bit clear() functions, and Jose Antonio Luque optimised the 16 bit blit() and masked_blit() routines.
- 3.9.31: Vincent Penquerc'h added a yield_timeslice() function (currently implemented in DOS and Unix).
- 3.9.31: added a desktop_color_depth() function (currently only implemented in X: a Windows version will follow).
- 3.9.31: Isaac Cruz added support for windowed modes in color depths other than the current Windows desktop, and hardware accelerated system bitmaps.
- 3.9.31: Jose Antonio Luque improved the Windows joystick driver.
- 3.9.31: James Hyman added support for dithering truecolor down to paletted images.
- 3.9.31: Chris La Mantia added textout_right(), textprintf_right(), and textprintf_justify() functions.
- 3.9.31: Sven Sandberg added a ustrrchr() function, and improved the usprintf() handling of large floating point values.
- 3.9.31: Peter Pavlovic added a Slovak keyboard mapping and message translation.
- 3.9.31: Manni Heumann fixed some problems with the German keyboard mapping.
- 3.9.31: Michael Bukin improved the X keyboard and mouse handling, and fixed some problems with building on non-GNU Unix systems.
- 3.9.31: many bugfixes and tweaks from various people (sorry, my typing patience has run out so you don't get a full list :-)
- 3.9.31: Peter Wang added input support to the Linux OSS sound driver.
- 3.9.31: David Kuhling optimised the i386/gcc fsqrt() code, and added an fhypot() routine.
- 3.9.30: fixed the double XOR that was making datafile passwords so easy to reverse. The new code can still read old-style encrypted files, but data written by this version can't be accessed by older copies of Allegro.
- 3.9.30: made load_datafile(), load_datafile_object(), and the file.dat#object syntax work correctly in all possible combinations.
- 3.9.30: Vincent Penquerc'h added a scare_mouse_area() function.
- 3.9.30: changed the DirectX surface locking mechanism, to improve the performance of hardware accelerated drawing.
- 3.9.30: George Foot improved the Linux LED code, and made the internal X driver state visible via xalleg.h.
- 3.9.30: added EINTR retry handling to read/write calls. I hope I got this right: if anyone who properly groks this stuff could check over file.c, that would be cool.
- 3.9.30: made the Windows mouse driver work correctly in windowed mode.
- 3.9.30: fixed various problems with Windows foreground/background switching (keys were getting stuck down, timers weren't being paused, and not all the right switching modes were being reported to the caller).
- 3.9.30: made the X keyboard handler release all keys when it loses the input focus, to avoid stuck buttons when you alt+tab between windows.
- 3.9.30: made the allegro-lib script arguments compatible with the standard used by GTK, ESD, etc, and renamed it to allegro-config. This changes the syntax for linking Allegro programs on Unix: see readme.uni for details of the new method.
- 3.9.30: George Foot improved the Unix shared library system.
- 3.9.30: Joerg Rueppel added a find_datafile_object() function.
- 3.9.30: Peter Wang improved the SVGAlib driver.
- 3.9.30: Peter Wang improved the Linux joystick driver.
- 3.9.29: made the Windows code agree with other platforms about how video bitmaps are supposed to behave.
- 3.9.29: fixed some problems with the Windows mouse wheel support.
- 3.9.29: added set_write_alpha_blender(), set_add_blender() and create_blender_table() functions, and made the 32 bit version of draw_trans_sprite() able to use 8 bit source images in conjunction with set_write_alpha_blender(). In addition to being generally useful, using these routines makes the sources for my SpeedHack entry much smaller :-)
- 3.9.29: added uninstall targets to the Linux makefile.
- 3.9.29: made the X windowed mouse driver hide the Allegro cursor when the mouse moves out of our window.
- 3.9.29: added a simple timer delay emulation of vsync() to the X code, so that eg. the demo worms game runs sensibly.
- 3.9.29: Isaac Cruz added a GFX_DIRECTX_WIN driver.
- 3.9.29: Keith Gerdes made some more improvements to the DirectX overlay driver.
- 3.9.29: Andrew Geers added scrolling support to the grabber image viewer.
- 3.9.29: Peter Wang added an alternative X DGA driver, that includes mode switching support to run in fullscreen mode.
- 3.9.29: Peter Wang added a MSG_WHEEL event to the GUI, and made d_list_proc() use it.
- 3.9.29: Lucas Vignoli Reis added a Portuguese (Brazil) message translation and keyboard mapping.
- 3.9.29: Peter Wang added a Linux OSS MIDI driver for FM synth devices, and mixer support for the OSS digital driver.
- 3.9.29: George Foot added scripts for building various Linux distribution formats.
- 3.9.29: Michael Bukin fixed the portability problems in quantize.c.
- 3.9.29: added a zipwin.sh script for making Windows binary distributions, including a batch file that can compile the MSVC support programs without having any GNU tools installed.
- 3.9.29: fixed bug with color font rendering in the Windows version.
- 3.9.29: added hardware accelerated rectfill() and hline() to the Windows version, and fixed a couple of accel related bugs (clears were being clipped wrongly, and it was claiming to support XOR drawing even though that isn't supported).
- 3.9.29: Michael Bukin fixed bug with X drawing onto screen sub-bitmaps.
- 3.9.28: various documentation updates.
- 3.9.28: added parameter autodetection to the Unix OSS sound driver.
- 3.9.28: made it possible to nest calls to the Unix for_each_file() routine.
- 3.9.28: added a load_datafile_callback() function.
- 3.9.28: rationalised the sound config variables, so they can be shared between drivers more easily. For instance sb_freq has been renamed to sound_freq.
- 3.9.28: Antti Koskipaa added a DOS driver for WSS (Windows Sound System) cards.
- 3.9.28: the audiosteam code is now able to merge multiple buffers into a single larger one, so it will still work correctly even if the user supplies a buffer smaller than the current soundcard transfer size. You can even play streams with single byte buffers now, as long as you refill them often enough!
- 3.9.28: made the Windows timer code more robust, so it will no longer lock up when you install extremely high frequency callbacks.
- 3.9.28: Teijo Hakala added wheel support to the Windows mouse driver.
- 3.9.28: Peter Wang added wheel support to the X mouse driver.
- 3.9.28: Andrew Geers added -ppassword and -nosound options to the grabber.
- 3.9.28: Keith Gerdes fixed the DirectDraw overlay mode driver.
- 3.9.28: Isaac Cruz fixed the bug with accelerated drawing onto sub bitmaps of DirectDraw surfaces.
- 3.9.28: Peter Wang added banked mode support to the SVGAlib driver.
- 3.9.28: Peter Wang fixed some problems with the ESD sound driver, and added an ALSA driver.
- 3.9.28: palette fading speed is now timer regulated, to avoid problems with some systems (eg. DGA with non-matching color depth) where it can be excessively slow.
- 3.9.28: fixed a couple of different overflow bugs that were causing timers to run slow on heavily loaded Unix systems.
- 3.9.28: added a display of author credits to the demo game.
- 3.9.28: changed the info page installation system. It now creates a dir file in the same directory as the info page, rather than messing around with symlinks, and autoconf is used to locate the install-info program.
- 3.9.28: added an allegro-lib script to the Unix installation, which can be run by makefiles to find the right linker commandline for building Allegro programs.
- 3.9.28: added a manpage output format to the makedoc utility. It doesn't work terribly well with apropos due to the lack of a one-line summary for each function, but the basic formatting seems to be ok: please let me know if you see any problems.
- 3.9.28: patches from George Foot for Linux console handing, keyboard, and filename manipulations.
- 3.9.28: many improvements by Michael Bukin, in particular enhanced performance in X, better X mouse behaviour, and DGA graphics support.
- 3.9.27: Robert J. Ragno made some improvements to the Wingman, PSX, and throttle joystick input code.
- 3.9.27: Peter Wang added wheel input support to the Linux mouse code (this shows up as a new mouse_z state variable).
- 3.9.27: Patrick Hogan made Windows audiostreams work properly.
- 3.9.27: Sven Sandberg optimised the spline routines.
- 3.9.27: Tomohiko Sugiura added KEY_YEN and KEY_YEN2 Japanese keys to the input handler.
- 3.9.27: Chris Robinson wrote a fixed point version of clip3d_f(), called (surprise!) clip3d().
- 3.9.27: Sven Sandberg improved the file selector sorting algorithm.
- 3.9.27: Henrik Stokseth improved the OS detection in the Windows lib.
- 3.9.27: Sven Sandberg made more accurately rounded lookup tables for the fixed point trig routines.
- 3.9.27: George Foot made the fbcon driver reset the palette on exit.
- 3.9.27: much new X code from Michael Bukin: this stuff is working brilliantly now!
- 3.9.27: added the X library path to the Linux liballeg.a wrapper. I think I prefer Michael's idea of having a script to return this info, though, so perhaps we should change across to doing it that way.
- 3.9.27: fixed various bugs in both the C and i386 RLE sprite code (mostly relating to lit modes and hicolor formats).
- 3.9.27: front-ported various fixes from the 3.12 release, to make WARNMODE=1 compile cleanly with gcc 2.95.
- 3.9.27: Knut Pape improved the Mingw32 readme file.
- 3.9.26: rewrote the DOS Sidewinder driver, after powerjaw sent me a pad to test it with. It still doesn't work for me in DOS mode, but it is ok under Windows, which is better than before, and as good as any of the other Sidewinder code that I've been able to locate. If anyone has or knows of code that works better than this, please let me know!
- 3.9.26: more flexible mode flags for set_color_conversion().
- 3.9.26: Robert J. Ragno added a driver for Gravis GrIP devices.
- 3.9.26: Gorka Olaizola added a Redhat RPM .spec file.
- 3.9.26: Stepan Roh updated the Czech translation and added multiple codepage support to the textconv utility, and a Unicode-aware ustrtod() function.
- 3.9.26: added ustrdup() to the Unicode support functions.
- 3.9.26: Sven Sandberg optimised the gcc fixed point math routines to collapse constant expressions at compile time.
- 3.9.26: Stefan T. Boettner added a proper Linux SVGAlib driver.
- 3.9.26: several tweaks from Vincent Penquerc'h (added a datafile merge function to the grabber, GUI bugfixes, optimised spline calculation, fix for 24 bit version of the C drawing code).
- 3.9.26: Linux patches from Michael Bukin improve the OSS sound driver, SIGALRM handling, and X keyboard driver.
- 3.9.26: many Linux patches from George Foot (fixes to the mouse driver, shared library and configure script, and assorted other stuff).
- 3.9.25: fixed pckeys.c to leave sensible data in the key[] array when doing numeral vs. arrow key numlock fakery.
- 3.9.25: fixed a bunch of problems with the SWITCH_BACKGROUND mode (I'd stupidly forgotten to disable a lot of graphics driver functions that could do bad things if called when the Allegro console isn't active).
- 3.9.25: added pivot_sprite() and pivot_scaled_sprite() functions (thanks to Matt Jallo for the suggestion).
- 3.9.25: added ustrerror() to the standard Unicode support functions.
- 3.9.25: fixed the d_edit_proc() GUI object to handle shift+tab focus movement properly.
- 3.9.25: lots of Linux patches from George Foot (proper fbcon mode setting, different mouse types and setup program support for configuring them, fixes to the shared library support, exedat no longer destroys the file permissions, and probably some other stuff that I forgot about).
- 3.9.24: assorted bugfixes to the Linux fbcon and sound code (this is mostly an emergency release because these were broken in 3.9.23).
- 3.9.24: James Arthur wrote some docs for the Photoshop-style truecolor blender routines.
- 3.9.23: Michael Bukin added an OSS sound driver to the Linux code, and the beginnings of an ESD driver.
- 3.9.23: many Linux patches from George Foot, including shared library support.
- 3.9.23: Ole Laursen made the Unicode utolower() and utoupper() functions understand the entire 16 bit character set.
- 3.9.23: Pavlos Touboulidis made file_select() able to include or exclude files based on their attributes.
- 3.9.23: the d_check_proc() GUI object can now print the text to the right of the check, selected by having a non-zero d1 field.
- 3.9.23: changed my mind about how GFX_SAFE should work, and removed the color depth emulation bodges. Now, the GFX_SAFE driver may simply change the color depth if it doesn't like what you are requesting, and it is up to the caller to deal with this.
- 3.9.23: fixed problems with MMX polygon rendering code in the MSVC version.
- 3.9.23: added a strictwarn option to the configure script, and fixed everything that it moaned about. The warnings still aren't all that strict: at some point I want to sit down and make it build cleanly with -W, as well as -Wall -Werror.
- 3.9.22: fixed some potential race conditions introduced by my previous fixes to the Windows timer code.
- 3.9.22: made set_display_switch_callback() able to install multiple hook functions, added a remove_display_switch_callback() routine, and wrote an exswitch example program.
- 3.9.22: adjusted MSVC inline asm syntax in an attempt to work around compiler version conflicts.
- 3.9.22: more flexible GFX_SAFE system. As well as defining fixed safe values for each platform, you can now leave out those definitions to get zeros passed through to the actual hardware drivers, and if your driver sets a color depth other than the requested one, graphics.c will hook up some emulation routines so that everything still works in a sensible way.
- 3.9.22: George Foot added a scancode to ASCII conversion function to the keyboard driver (implemented for DOS, Windows, Linux, and X). This is needed to handle alt+key input sensibly when using unusual mappings like the Dvorak layout.
- 3.9.22: Linux patches from George add better console switching, shared library support, and various other nice things.
- 3.9.22: Windows patch from Stefan adds much cool new stuff, including windowed mode support.
- 3.9.22: Peter Wang made the Linux GGI driver work properly.
- 3.9.22: Johan Venter made some more improvements to the RSXNT and Mingw32 makefiles.
- 3.9.22: updated the Watcom makefile to allow manual override of the 10.6 vs. 11.0 version detection, in case it guesses wrong.
- 3.9.21: Windows patch from Stefan adds support for the new screen mode switching system.
- 3.9.21: more BeOS patches from Jason Wilkins.
- 3.9.21: Johan Venter fixed some problems with the RSXNT and Mingw32 makefiles.
- 3.9.21: ran "configure --enable-asm=no", and fixed all the reasons why this didn't work. In particular there was a bug in patterned drawing modes, RLE sprites were broken, and I'd forgotten to add C versions of the RGBA sprite functions. Those of you who are interested in such things will be interested to know that the test program thinks the C drawing code is 20% slower at hline(), 10% slower at rectfill(), 50% slower at blitting, and 40% slower at draw_sprite(), which is not at all bad going. It's actually a bit faster at drawing translucent and lit sprites, so we need to have a look at that!
- 3.9.21: many new Linux patches from George Foot.
- 3.9.21: added VBE/AF support to the Linux code.
- 3.9.21: finished the Linux fbcon driver.
- 3.9.21: made Linux console switching work in a more complete manner, with a set of helper functions in dispsw.c. The background mode should work now, but is untested.
- 3.9.21: added Linux GGI driver by Carsten Schmidt (this is somewhat out of date, and doesn't work yet, but a good start if anyone wants to hack on it).
- 3.9.21: improved the Unix configure and build system. Moved more things into makefile.lst, so there are no file lists anywhere else now. Made it understand how to build the datafile tools, and convert the documentation (this may cause problems for systems without makeinfo: it would be good if someone who groks autoconf could try to do this better). Made the Linux VGA drivers (vga and modex) configurable.
- 3.9.21: added ctrl+alt+end abort sequence to the Linux keyboard driver.
- 3.9.21: directory structure changes: moved ufile.c into the misc directory, so BeOS can share it. Moved various helper scripts into the misc directory, including a cmplog.pl that compares two test.exe profile logs.
- 3.9.21: made the Linux PS2 mouse driver understand the middle button. Added a scaling factor to make it go at a more sensible speed in SVGA modes.
- 3.9.20: started working on a driver for the Linux fbcon device. It works, but can't change video mode yet.
- 3.9.20: Windows patch from Stefan adds joystick input, and the beginnings of a windowed mode driver.
- 3.9.20: moved all filename lists (even the platform specific ones) into makefile.lst, to avoid any duplication and give us a nice centralised place that mentions every single source file we use.
- 3.9.20: removed the install_lost_bitmap_callback() function, in favour of the more generic set_display_switch_mode(). Updated the Windows code to use these new routines.
- 3.9.20: merged X patch from Michael Bukin (adds mouse support).
- 3.9.20: Vincent Penquerc'h optimised the 256 to truecolor graphics blitting code to avoid repeated conversions of the palette table.
- 3.9.20: James Hyman added quoting support to get_config_argv().
- 3.9.20: Peter Cech optimised the alpha sprite blending routines. Shawn optimised them a bit more by expanding out specialised versions for common pixel formats.
- 3.9.20: Richard Davies made some improvements to the PSX joypad driver.
- 3.9.20: added a system driver parameter to allegro.cfg, and hooks to make the Unix version look for config data in /etc/ and ~/.
- 3.9.20: moved the Posix findfirst() emulation into libc.c, removing it from the autoconf and BeOS specific builds.
- 3.9.20: more BeOS patches from Jason Wilkins. The graphics stuff be working there now!
- 3.9.20: improved the VBE/AF driver to know that vertical lines can be implemented as a rectfill. This enables hardware acceleration for patterned vertical lines, and with drivers that don't have hardware support for the VBE/AF line draw routine.
- 3.9.20: George Foot did some major work on the Linux console version, getting it up and running in a fairly convincing way.
- 3.9.20: the Windows sound driver lists are now dynamically generated based on the available devices, so you can select which ones to use.
- 3.9.19: wrote the first part of an Allegro Hacker's Guide, which is my (probably futile :-) attempt to document at least a few of the more gory parts of the Allegro code.
- 3.9.19: finally got around to documenting the Unicode functions.
- 3.9.19: more BeOS patches from Jason Wilkins.
- 3.9.19: Michael Bukin made some more patches to the X code (timers are implemented now), and added a complete (?) C implementation of all the drawing code. Non-Intel machines, here we come! If you define ALLEGRO_USE_C before building the djgpp library, you can actually test out a pure C version of test.exe, the demo game, etc.
- 3.9.19: added a findtext.sh script, which scans the source code and creates a list of all the strings that are available for translation. It can also compare this list against an existing translation file, to see if any new messages need to be added.
- 3.9.19: Stepan Roh updated the Czech keyboard mapping for Unicode support, added support for keyconf to use a non-standard font, and added the Latin Extended-A characters (U+0100 to U+017F) to the default font.
- 3.9.19: Grzegorz Adam Hankiewicz updated the Spanish translation with UTF-8 format (ie. properly accented) strings. Converted the setup program font into Latin-1 ordering so that this will display correctly. Fixed bug with dat2s not correctly converting the resulting multiple-range font.
- 3.9.19: Chris La Mantia made some cosmetic fixes to the d_slider_proc() GUI object.
- 3.9.19: Richard Davies added support for N64 joypads.
- 3.9.19: added keyboard_ucallback() (I missed this one when I first added the Unicode support).
- 3.9.19: made some changes to setup.c so that it can easily be embedded into other programs (thanks to Grzegorz Adam Hankiewicz for the suggestion).
- 3.9.18: added support for 32 bit RGBA images. You can now read TGA files with an alpha channel into the grabber, or you can import a normal image and then overlay alpha data from any greyscale bitmap. You can save these alpha channels as part of a datafile, call the makeacol(r, g, b, a) function, and most importantly, call set_alpha_blender() and then draw_trans_sprite() to display them. Check out exalpha.c. There is much room to optimise the 15, 16, and 24 bit versions of _blender_alpha*(), if anyone wants to have a go at this. I think it would be profitable to write specific versions for common pixel orderings, and only keep the current generic implementation around as an emergency fallback.
- 3.9.18: more Unix patches from Michael Bukin. It builds flawlessly now, even if it doesn't do anything very interesting yet.
- 3.9.18: Jason Wilkins contributed the beginnings of a BeOS port (not yet functional, but it does compile).
- 3.9.18: Revin Guillen added a position_dialog() function.
- 3.9.18: portability improvements: changed makefile to be a generated stub, which normally just includes makefile.all, but can be completely replaced when using autoconf, and moved the emulation for missing libc functions into the shared sources.
- 3.9.18: numerous bugfixes.
- 3.9.17: Burton Radons changed the truecolor pixel blending functions to use a single callback function rather than the previous table. This may break some old code, but should remain largely backward compatible, and the new way is much more flexible. He also added a more complete set of blender functions, including Photoshop modes like burn, difference, lumincance, etc.
- 3.9.17: Richard Davies added support for PSX joypads.
- 3.9.17: fixed bug in dat2s handling of truecolor images.
- 3.9.17: Jason Wilkins improved the quaternion math routines, and added some documentation for them.
- 3.9.17: Neil Townsend added callback parameters to the timer handlers.
- 3.9.17: Gunter Ladwig added three-button mouse emulation, which can be enabled using the config file (it defaults to on if you have a two button mouse).
- 3.9.16: applied some patches from Michael Bukin, which add the basics of a Unix build system. It doesn't actually work yet, though :-)
- 3.9.16: merged new code from Stefan. Lots more cool things are working in the Windows version now, eg. hardware acceleration, triple buffering, sound...
- 3.9.16: added an example of how to write a Windows screensaver using Allegro. If anyone knows how to get a proper name to show up in the Windows selection dialog, please let me know! (I've made the stringtable entry that MSDN says you need, but it doesn't work).
- 3.9.16: Andy Goth added a d_text_list_proc() dialog object, that lets you alter the selection by typing the first few characters of a list entry.
- 3.9.16: Ole Laursen updated the Danish message translation.
- 3.9.16: Calvin French added a -w (always update) switch to dat.exe.
- 3.9.16: Joerg Rueppel added more flexible wildcard matching for object names in dat.exe.
- 3.9.16: added GFX_HW_SYS_TO_VRAM_BLIT and GFX_HW_SYS_TO_VRAM_BLIT_MASKED capabilities flags, and more flexible blitting functions in the vtable.
- 3.9.16: added lock_voice() and unlock_voice() methods to the digital sound driver, for implementing audiostreams under Windows.
- 3.9.16: _handle_timer_tick() now returns the desired gap until the next interrupt.
- 3.9.15: Michael Rickmann added a Mingw32 port. This currently works the same way as the RSXNT version, using MSVC to build the DLL, but will become a full gcc port after the core Windows code stabilises a bit.
- 3.9.15: Vincent Penquerc'h added a D_DIRTY flag for GUI objects, and I extended this with a new D_REDRAWME return code for the handlers.
- 3.9.15: changed the syntax of the create_color_table() callback. This breaks the API, but is the only way to make it work reliably with different compiler calling conventions.
- 3.9.15: added a sub bitmap creation hooks to the vtable structure (so the parent bitmap can be told when it is being cloned).
- 3.9.15: "make install" is now a separate target, not run automatically. This means that you now have to run "make" and "make install" as two separate operations, or if you want all three versions of the library, "make all" and then "make installall".
- 3.9.15: added an END_OF_MAIN() macro, which makes the WinMain() magic work correctly in any combination of C and C++ code.
- 3.9.15: Olly Betts modified the djgpp makefile to support cross-compiling on a Linux machine.
- 3.9.15: Andy Goth added a 256x256 tweaked VGA mode.
- 3.9.15: major documentation update (from now on I'll be adding a version number to each changelog comment).
- Merged new code from Stefan. Windows version is getting much closer to completion, including mouse support and video bitmaps, although the mouse code isn't working quite right for me at the moment.
- Rewrote fix_filename_path() to avoid calling _fixpath(). The new version is much more portable, although things like reading the current directory across multiple drives need some tweaking to work with different compilers.
- Fixed oodles of things that were stopping the Watcom version from working. It now runs everything without any trouble at all, including such gems as exdodgy and the grabber shell edit! According to test.exe, gcc 2.8.1 is about 10% faster than Watcom 10.6 for most things, although for some reason textout() is about twice as fast in the Watcom version.
- Fixed a bunch of stuff to make the RSXNT version work. All the tests and examples now build with RSXNT, and work identically to the MSVC originals.
- Added quaternion math routines by Jason Wilkins.
- Added more flexible gfx_card config support by Andy Goth.
- Added a masked_stretch_blit() function (trivial change, the code could do it, but the API entry point was missing).
- Added Windows GDI routines by Marian Dvorsky.
- Added a DMA poll to the Soundscape driver, to make sure it can never get out of sync with the transfer.
- Merged various bits and pieces that have been sitting around my hard drive for ages (Swedish and Norwegian translations, various patches from Michael Bukin, new palette generation code by Michal Mertl, Soundscape driver fixes by Andreas Kluge).
- Grabber now knows about and can manipulate Unicode fonts.
- Now passing atexit() as a parameter to install_allegro(), to avoid problems with DLL shutdown.
- Made FLIC player set the dirty variables when clearing the bitmap at the start/loop point (this was sometimes causing the screen not to be cleared from previous contents).
- Fixed several bugs in the grabber.
- Changed the datafile utilities to link the datedit and plugin routines as a proper library. This will make life easier for third parties that want to use those routines (duplicating the plugin linkage isn't much fun).
- Replaced errno references with allegro_errno pointer, to avoid problems with multiple runtimes when linking as a DLL. The MSVC version of dat now works perfectly!
- Added a system_none driver for commandline utilities and other platform neutral situations.
- Made new demo intro animation. My first ever Max rendering!
- Merged Windows patches from Stefan. Whoah! This thing is cool. It works (sort of :-) on two platforms. Now I can die happy....
- The file selector now adjusts for platforms without any directory list (eg. Unix).
- Added a global default_palette (the normal IBM BIOS one), and made set_gfx_mode() select it.
- Modified DIGMID driver to avoid using 64 bit ints or floating point in the interrupt handler.
- Added ASSERT() and TRACE() debugging routines, and lots of asserts throughout the library code.
- The default truecolor pixel format before setting a video mode is now BGR rather than RGB. This should help to shake out bugs in BGR support, and catch any errors where people load graphics before setting a video mode.
- Fixed fmul() overflow detection bug.
- Rewrote gpro.c and sw.c to avoid using inline asm. The SW code is currently very ugly (literal translation of the asm routine), but I'm keen to improve it given some testing feedback. If you have a Gamepad Pro or Sidewinder, and were able to use it with the Allegro 3.11 driver, I would _really_ like to hear whether this current code works for you or not...
- Numerous changes to make the support programs more portable.
- Added a get_executable_name() function.
- The sound.cfg file is no longer supported. Use allegro.cfg instead.
- Added versions of the inline _putpixel() and _getpixel() for all color depths.
- The check_cpu() function is now called automatically by allegro_init().
- Added system bitmap objects, which exist in system memory but are accessed in a similar way to video memory surfaces (this can enable better hardware acceleration on some platforms).
- Added enable_triple_buffer(), timer_can_simulate_retrace(), and timer_is_using_retrace() functions. This enables programs to correctly handle the interrelationship between mode-X triple buffering, the retrace sync mode, and the current OS, without having to include any DOS specific code.
- GUI routines now call the input polling functions and acquire/release the screen as appropriate.
- Fixed a real show-stopping error that was causing VBE/AF crashes on some machines (calling driver functions with non-flat memory selector in %es).
- Added an allegro_message() function.
- Added dummy bank switch routines that can emulate linear access to a mode-X screen, albeit rather slowly. The only practical result from this is that polygon routines work in mode-X now, but it helps to make things more robust in general (if a routine doesn't know about mode-X, now it will just run more slowly than usual, rather than not working at all).
- The SB, Adlib, and standard joystick drivers now properly have a separate instance for each variant of the hardware, rather than a single driver pretending to exist under multiple different ID codes.
- Rewrote joystick polling to avoid inline asm.
- Converted translation files into UTF-8 format. These can now use any Unicode characters they like, so accented vowels etc. can safely be used.
- Keyboard scancodes have changed from the hardware format to an abstract, Allegro-specific encoding. This simplifies the code a great deal, and avoids hassles with two different keys generating the same scancode.
- Added generic find_allegro_resource() function, which removes a lot of duplicated code from config.c, digmid.c, and pckeys.c.
- Timer module now autoinstalls whenever someone tries to use it.
- Keyboard functions can now alter the repeat rate.
- Watcom port.
- Added a special GFX_SAFE driver ID.
- Now using VDS to detect win95 even when in stealth mode.
- Added fixver.sh for patching version numbers and dates when releasing a new version (requires bash, fileutils, shutils, etc, to run on DOS).
- Added zipup.sh for building a distribution zip and diffs, which automatically cleans up the tree ready for this (eg. pregenerating the dependency files for all supported compilers).
- Added input polling functions.
- Major code restucturing, added system drivers, new framework for input handling, timers, keyboard scancode conversion, file access, etc.
- Added full support for Unicode text, including string manipulation functions, a new font format, the textconv utility, a new GUI MSG_UCHAR, and a ureadkey() function.
- Added variable sized monochrome fonts, replacing the the old 8x8 fixed size format. As a result, the GFX_HW_TEXTOUT_FIXED capabilities flag has been renamed to GFX_HW_GLYPH.
- New system for accessing video memory, using bmp_select(), bmp_write*(), and bmp_unwrite_line(). This is equivalent to the djgpp farptr functions, but portable to different platforms.
- Drastic reorganisation of directory structure, makefile system, etc.
- Enhanced the makedoc utility to simplify adding links and email addresses to the docs.
- Added a bodge to make the VESA code work with broken S3 Trio64 drivers.
- Removed the 386DX vs. 386SX processor detection code (it was sometimes crashing).

# Changes from 3.11 to 3.12 (Aug 1999)

- Fixed a few incompatibilities with gcc 2.95. This release is otherwise identical to 3.11.

# Changes from 3.1 to 3.11 (Feb 1999)

- Cleaned up a few places where memory wasn't getting freed during the system shutdown. A cosmetic detail since the OS will free it for us, but it is nice to get these things right.
- Alessandro Monopoli added an Italian translation of the system messages.
- Henrik Stokseth added code to distinguish between win95 and win98.
- Creative Labs have been removed from the THANKS file, because of their refusal to release any specs on the SB Live soundcard.
- Changed the name of the library. After years of thinking that Allegro was a word with no particular meaning, I realised that it is in fact a recursive acronym for "Allegro Low Level Game Routines".
- Established a new mailing list for use by the people currently working on Allegro. Please send code contributions to this list rather than directly to me (Shawn Hargreaves), because this will allow Allegro development to continue even if I'm not around or am busy with something else at the moment.
- Andreas Kluge wrote a driver for Ensoniq Soundscape cards.
- More localisation: Swedish message translation by Sven Sandberg, Anton Ragnarsson, and Erik Sandberg, Finnish message translation by Antti Haapala, and Russian message translation and keyboard mapping by Dmitriy Kazimirow.
- The midi_out() function now correctly updates the pan/volume/bend controller status.
- Kester Maddock added a Wingman Warrior joystick driver.
- Fixed some problems with the Sidewinder, Gamepad Pro, and SNES joypad drivers.
- Changed the SB16 driver to use signed 16 bit output mode, rather than the previous unsigned format. Hopefully this will improve compatibility with crappy clone hardware.
- Added a new WARNMODE environment switch to the makefile. Allegro developers should all set this to get strict warnings, but it will be left off by default so that the distributed version will be more forgiving about different compiler/libc versions.
- Fixed problem with reading the top and left positions on digital joystick devices.
- Fixed (I think, still waiting accurate confirmation on this one :-) problem with timers running too fast on some motherboards.
- Fixed stupid bug where get_align_matrix() wasn't bothering to zero the translation vector.
- Fixed stupid bug where rotated sprites were coming out upside down in mode-X and hi/truecolor modes.
- Fixed bug where dat utility was truncating long filenames to 8.3 format.
- Renamed the ChangeLog file to CHANGES, to avoid problems on 8.3 systems.
- Various other minor bugfixes.

# Changes from 3.0 to 3.1 (Jan 1999)

- Changes between the 3.1 beta and final releases: assorted bugfixes, Antoine Mathys added a Swiss keyboard mapping, Thomas Wolf added a German translation of the system messages.
- Changes between the 3.1 alpha and beta releases: assorted bugfixes, FLIC routines can now read from datafiles, included rotation optimisations by Ivan Baldo.
- Peter Cech added support for hot-swapping between a custom keyboard layout and the standard US mapping.
- Neil Townsend improved the accuracy of the timer routines.
- Added exlights.c example program, showing one way to do colored lighting effects in a hicolor mode (and also because it makes the total number of examples a nice round number :-)
- Added an afinfo test program, which does the same thing as vesainfo but for VBE/AF drivers.
- Michael Bukin made a lot more portability patches and some bug fixes, including some improvements to the FLIC player and a much more rational filename handling system.
- Removed the chipset-specific SVGA hardware drivers from the main library distribution. Instead, these will now be available both as an optional addon package, and reformatted as part of the FreeBE/AF project.
- Added FreeBE/AF extensions support to the Allegro VBE/AF driver (farptr access to video memory, and the libc and pmode exports needed for future compatibility with the SciTech Nucleus drivers).
- Fixed a bug with the patterned and translucent vline() function in 15 bit color depths.
- Fixed a NULL pointer dereference bug in the config routines.
- Fixed an order of processing bug that was causing data to be lost when calling set_config_file() with the same filename as the current config.
- Stepan Roh added a Czech translation of the system messages.
- Ole Laursen added a Danish translation of the system messages.
- Grzegorz Ludorowski made a new demo game intro animation.
- Calin Andrian added 3d polygon timing routines to test.exe.
- Peter Cech added grabber support for the 8x8 BIOS font format.
- Stepan Roh added a Czech keyboard mapping.
- Renamed the Spanish language translation file from SP to ES.
- Calin Andrian added a complete set of truecolor polygon rendering routines, with support for MMX and 3DNow! optimisations and a new masked lit drawing mode, along with a new polygon clipping function. One minor change is that POLYTYPE_FLAT mode is now implemented by calling hline(), so it will respond to the current drawing_mode() settings.
- Changed the graphics/sound/joystick driver ID numbers from a zero based list to a descriptive 4-character string, to make them more readable and flexible. Added config functions to read/write data in this format. The sound config data is backwardly compatible, but you will need to manually update any graphics or joystick driver numbers that are stored in your config files.
- Michael Bukin contributed a _lot_ of patches to improve the portability and robustness of pretty much the entire library. The only externally visible change is that the macros used for declaring hardware driver lists have been redesigned to use a more portable syntax, although the old syntax is still available as a compatibility macro.
- Burton Radons did some more optimisation of the truecolor pixel blending functions.
- Martijn Versteegh added a hook mechanism for extending the config file system, which can be used to provide extended system status information or customisation routines for addon packages.
- Redesigned the grabber and dat utilities to support source-code "plugin" modules, which can be used to extend the system with additional object types, import/export routines, and menu commands.
- Ivan Baldo added a dithering option to the 15/16 bit color conversion routines.
- Kerry High added a SNES joypad driver.
- Added a font override to the d_text_proc() and d_ctext_proc() GUI objects, using the dp2 field to specify a custom font.
- Michael Tanczos fixed some bugs in the FLIC player.
- Cloud Wu optimised the truecolor pixel blending functions.
- Paul Pinault added a French translation of the system error messages.
- Grzegorz Adam Hankiewicz added a Spanish translation of the system error messages, and added a new (but undocumented :-) command line option to the demo game.
- Fixed clicks in the interpolated sample mixing.
- Fixed a bug with position_mouse() not updating the mouse_pos variable.
- Fixed a bug in mode-X horizontal scrolling while the timer retrace simulator is active.
- Added a language.dat file, which can be used to provide translated versions of system strings (eg. error messages), in a similar way to the existing keyboard.dat. If you want to use this mechanism from your own code, replace all your constant strings with calls to get_config_text("string"). This allows them to be translated by including a line of the form "string=foreignstring" in the relevant section of language.dat.
- Added an ASCII name field to the keyboard mapping files, in order to make the setup program a bit more friendly.
- Increased the maximum number of sound channels from 32 to 64.
- Modified the DIGMID patch loader to support 16 bit samples, rather than just reducing everything to 8 bit.
- Added an interpolation option to the sample mixer (quality=2).
- Salvador Eduardo Tropea added support for proper 16 bit sample mixing (quality=1).
- Lee Killough added a lower level hook routine to the keyboard handler.
- Removed floating point code from the DIGMID driver, to avoid potential FPU stack overflows.
- Jim Flynn removed floating point calculations from the AWE32 MIDI driver (these could sometimes cause stack overflows).
- Salvador Eduardo Tropea improved the datafile system to avoid linking of unused code.
- Romano Signorelli contributed a Bresenham arc plotting function.
- Thomas Wolf corrected some errors in the German keyboard mapping file.
- Grzegorz Adam Hankiewicz improved the excolmap example program.
- Sven Sandberg optimised the fixed point trig routines.
- Fixed some silly crash bugs in the joystick code.
- Added a "compress" target to the makefile, based on a suggestion by Grzegorz Adam Hankiewicz.
- Added dummy bitmap acquire/release functions to allegro.h, for compatibility with the Windows version.
- Added a cross-reference facility to the Info format documentation.
- Martin Fuller fixed an obscure bug in the reading of compressed .bmp files.
- The emergency exit signal handler now correctly restores the previous handler, rather than resetting to the default action.
- Sven Sandberg optimised the create_light_table() function.
- George Foot fixed a bug when the get_mouse_mickeys() routine was called with both parameters pointing to the same value.
- Changed the licensing terms from "swapware" to "giftware". See the Allegro website for an explanation of the reasons for this change.
- Added yet more overloaded operators (this time for long and double types) to the fix class.
- Marius Fodor added support for the Sidewinder and Gravis GamePad Pro. Many apologies for my taking so long to merge in this code!
- Stefan Schimanski optimised the reverse blitting routine (for overlapping images).
- Added a shift+tab reverse focus movement key to the GUI routines.
- Grzegorz Adam Hankiewicz added a new example showing how to create and use a custom color mapping table.
- Totally revamped the joystick system (better API and new driver structure).
- Modified the fix class to work properly with gcc 2.8.0.
- Added a help.txt "how to get tech support" file.
- The midi_pos variable is now negated, rather than cleared to -1, at the end of a MIDI file. This can be used for measuring the length of a file.
- Added a rendering hook to the font structure, for use by text addon packages.
- Improved the VBE/AF text output routine.
- Corrected an error in the way the VBE/AF driver interprets hardware cursor colors.
- Pedro Cardoso contributed a tweaked 80x80 VGA mode.
- The VBE/AF driver now supports dumb framebuffer drivers as well as accelerated ones.
- Added more accelerator support to the VBE/AF driver (hardware cursors, lines, vertical lines, triangles, fixed width text output, and opaque/masked blitting from system memory to the screen).
- Added a scare_mouse() function, based on ideas by Martijn Versteegh.
- The grabber now stores the "grab from grid" dialog state in allegro.cfg.
- Sven Sandberg fixed a problem with save_bitmap() widths being rounded upwards.
- Made the _timer_installed flag globally visible.
- Ove Kaaven added linear framebuffer support to the native mach64 driver.
- Erik Sandberg optimised the 8 bit draw_sprite() and draw_trans_sprite() functions.
- Michal Mertl fixed a memory leak in the generate_optimized_palette() function.
- Added an ALLEGRO_DATE version define to allegro.h.
- Michael Bukin optimised the line drawing routine and fixed problem with the inline asm constraints for fadd()/fsub().
- Fixed potential problems caused by a lag between the mouse state variables changing and the pointer being redrawn.
- Michal Mertl optimised the clipping code for lines, rectangles, and circles.
- Maiolino Carmelo contributed an Italian keyboard mapping.
- Fixed lockup problems caused by the keyboard LED functions on some platforms/hardware.
- Added new create_video_bitmap() and show_video_bitmap() functions.
- Added a profile option to the test program.
- The keyboard handler now correctly updates the BIOS state for the right control and alt keys when it shuts down.
- Fixed a problem that was preventing the DIGMID driver from reading patch sets stored in executable appended datafiles.
- Changed the default sample priority from 255 to 128.
- Fixed some problems with virtual screen sizes in the VBE/AF driver.
- Added two new example programs.
- The VBE/AF driver now has full support for hardware accelerated drawing.
- Added VBE 3.0 support, including new triple buffering routines.
- Wrote a routine to select the sound input source (microphone, line input or CD audio).
- Added proper support for stereo samples. This requires an extra parameter to the play_audio_stream() function, so you will need to change any programs that use this. I'm very sorry for breaking your old code!
- Fixed bugs with the SB16 autodetection and 16 bit sample recording.
- Added input support to the raw SB MIDI interface driver.
- Wrote a new test program to demonstrate the audio input features.
- Ove Kaaven added support for MIDI and audio (sampled sound) input.
- The pack_fopen() function now understands nested datafiles as directory structures, using filenames like "graphics.dat#level1/sprites/zdurgle".
- Charles Mac Donald showed me how to set a 160x120 VGA mode, and more reliable 400x* mode-X resolutions.
- Guilherme Silveira and Theuzifan Sumachingun both independently modified the file selector to only list valid drive letters.
- Carsten Sorensen added a driver for the ESS AudioDrive soundcard.
- Przemek Podsiadly added hicolor versions of the 3d polygon routines.
- Ove Kaaven added truecolor support to the native ATI mach64 driver.
- Patrick Hogan added a draw_gouraud_sprite() function.
- Ben Chauveau added a driver for Tseng ET6000 cards.
- Marco Campinoti added truecolor support to the native Tseng ET4000 driver.
- Marco Marmulla added 16 bit support to the load_voc() routine.
- Added Danish, Swedish, and Norwegian keyboard mappings.
- Added GUI hook functions for scaling or offsetting the mouse position.
- Fixed bug which was causing a lockup when calling set_leds(-1).
- Michael Bevin optimised the create_trans_table() function.
- It is now possible to display a mouse pointer without the mouse handler needing to be installed.
- Added a create_sample() function.
- Made the _blender_map pixel blending functions and the _mouse_installed, _keyboard_installed, and _sound_installed flags globally visible.
- Added an 8-button joystick mode.
- Chris La Mantia fixed a minor visual problem with the d_icon_proc().
- Added a Rich Text Format (.rtf) version of the documentation.
- Added postfix increment and decrement operators to the C++ fix class, and the unary negation operator is now const-correct.

# Changes from 3.0 beta to release (Dec 1997)

- The pat2dat utility can now import instruments from AWE32 SoundFont files.
- Optimised the DIGMID patch loader and fixed a couple of bugs.
- Ove Kaaven fixed the ATI mach64 driver.
- The config file can now mention several possible video drivers, using lines in the form gfx_driver=x, gfx_driver2=x, etc.
- Improved the native SVGA driver helper functions, making it easier to add truecolor support to the register level drivers.
- Double-clicking on a font object in the grabber now allows you to view the extended characters as well as normal ASCII.
- Markus Oberhumer corrected a potential problem with the Video-7 initialisation code.
- Markus Oberhumer, Bitland, and Sormuras all sent me mapping tables for the German keyboard layout. Coordination of effort: who needs it? :-)
- Mathieu Lafon improved the French keyboard mapping.
- Fixed some bugs in the MIDI voice allocation system.
- Added a -k (keep names) option to the dat utility.
- The setup program now uses the ALLEGRO environment variable to locate the keyboard.dat file.
- Fixed a problem with < and > characters in the HTML documentation.

# Changes from 2.2 to 3.0 beta (Nov 1997)

- Merged in George's improved instrument parameters for the AWE32 driver.
- The pat2dat utility can now reduce sample data from 16 to 8 bits (saves space, and the DIGMID driver only uses 8 bits in any case).
- Added yet another version of the mouse handler, this time in an attempt to make it work more reliably under Windows NT.
- Frodo Baggins added a mapping table for Portuguese keyboards.
- Added an external tool "shell" function to the grabber.
- Added a "box grab" function to the grabber, which uses a color #255 bounding box to determine the extent of the sprite to grab.
- Santeri Saarimaa added a Finnish keyboard mapping.
- Finished writing the pat2dat utility, and the DIGMID driver is working a lot better now.
- Mathieu Lafon added support for the Pause and PrtScr keys, and changed the key[] array to a bitfield indicating whether either or both of the normal and extended versions of the key are pressed. This remains compatible with the "if (key[KEY_*])" syntax, but also allows you to distinguish between, for example, the Enter key on the numeric pad and the one next to the right shift key.
- Fixed a bug in the handling of config variables that don't belong to any section.
- The makefile now tries to detect and warn people about some of the more common installation errors.
- The HTML version of the documentation now uses a short .htm file extension if it is built on a system with LFN disabled.
- Keyboard mapping files now only bother saving the entries that differ from the default US mapping. This makes the maps a great deal smaller!
- Changed the default font and keyboard mapping tables from DOS codepage 437 to the standard ISO charset (first part of Unicode). If you have made a keyboard config using the old codepage it will need to be updated, but don't worry, I have a script that can do this very easily.
- Fixed a bug in the detection of font formats (fixed or proportional) when grabbing from a bitmap font.
- Added an editable loop point to the MIDI player (thanks to George for sorting out how to do this...)
- Rewrote the mouse handler to track the position itself, using only the mickey counters from the int 0x33 driver. Hopefully this will fix the problem with buggy Logitech drivers...
- Added a mouse_pos variable containing both the X and Y values in one 32 bit location, to allow a single instruction read during tight polling loops.
- The grabber now supports multiple selection, and has a new "ungrab" command that copies from a bitmap object into the scratch buffer (you can use this to generate palettes from truecolor images, or to re-grab a smaller area from the image).
- Added multiple selection abilities to the GUI listbox object.
- Theuzifan improved the cpu detection for Cyrix chips.
- Mathieu Lafon added a French keyboard mapping.
- Richard Mitton wrote an example program demonstrating how to fake a 12 bit truecolor display on an 8 bit card.
- Michal Mertl added a routine for generating optimised palettes for a specific truecolor image.
- Optimised the getr/g/b() functions. Converting between different color depths should be much faster now...
- Scott Harrison added code to detect OpenDOS, and use the i_love_bill mode if their version of EMM386 is in use.
- Added some new example programs.
- The makedoc utility now converts between the DOS and Windows extended character sets when producing HTML output files.
- Ettore Perazzoli made a spectacular optimisation to the linear -> mode-X blitting function.
- Added a grid option to the dat utility, to specify which region of a bitmap you want to grab.
- Fixed a bug in blitting truecolor bitmaps onto mode-X destinations.
- Fixed a bug that was preventing the Adlib volume from being changed when only MIDI sound drivers were installed.
- The grabber can now be run in video modes other than 640x480 (it doesn't look very nice in lower resolutions, though :-)
- Added a new fake scancode for the extended / key (the one on the numeric keypad) so that the two keys can be distinguished from each other.
- Joaquin Hierro Diaz made a mapping table for Spanish keyboards.
- The setup utility can now be used to select a keyboard layout and to calibrate the joystick, as well as for the sound hardware.
- Moved some of the documentation to different locations, so hopefully people will now be less likely to miss the faq.txt, and to bring it closer in line with the standard GNU distribution format.
- Better keyboard configuration system. There is now a proper utility for setting up the mapping tables, the tables can be read from external files, and it properly supports the alt-gr and accent escape keys.
- Menu items can now be disabled, have check marks next to them, and support right aligned text eg. for displaying keyboard shortcuts, there is a new "void *dp" field in the menu structure, and the click callback routines can now use the global pointer "active_menu" to determine which option they were called by, if a single routine is shared by several menu items.
- Peter Palotas added an input callback to the keyboard routines, and event flags to the mouse callback.
- Added a -pal option to the dat utility.
- Grzegorz Ludorowski made some new graphics for the demo game.
- Moved some code to new files and added a bunch of macros so you can remove unused graphics and sound drivers at link time.
- Fabian Nunez added support for the Logitech Wingman Extreme joystick.
- Chris La Mantia contributed a d_slider_proc() dialog object.
- Sean Gugler added a routine for changing the keyboard LED state.
- George Foot added pause and seek functions to the MIDI player.
- Added the ability to append datafiles (in fact any files at all) onto the end of your program executable.
- Merged in the AWE32 driver. Long live George!
- Can now read RLE compressed TGA files.
- Added a mouse movement callback function (useful for detecting double click events).
- Stefan Eilert added support for dual joysticks.
- Seymour Shlien contributed a routine for drawing justified text.
- Krzysztof Krzyzaniak contributed a loader for .VOC sample files.
- Added a rotate_scaled_sprite() function.
- Now supports the Dvorak keyboard layout.
- Salvador Eduardo Tropea added a 320x100 VGA mode.
- Implemented translucent and lit sprite and RLE sprite drawing functions for the truecolor modes.
- Updated the sound setup utility.
- The dat utility can now output makefile dependencies for automatically rebuilding the file when any of the source data changes.
- Fixed some problems with the RGB <-> HSV conversion functions.
- Truecolor image loading and grabber support.
- Phil Frisbie provided some code to detect the CPU type.
- Michal Mertl added 24 bit graphics modes. Hurrah!
- Added functions for playing streams of digital audio data.
- Chris La Mantia contributed a bitmap icon GUI object.
- Doug Eleveld added a text box GUI object, plus an improved help system for the grabber.
- Added support for UK and AZERTY keyboard layouts. More can easily be added if you send me the appropriate scancode -> ASCII mapping tables...
- Added get_align_matrix(), qtranslate_matrix(), and qscale_matrix() functions.
- Added a draw_character() function for using sprites as monochrome pixel masks.
- It is now safe to pass the same matrix as both input and output to the matrix_mul() function.
- Paul Bartrum contributed some ellipse drawing functions.
- Added some callbacks to the MIDI driver, allowing you to hook your own code into MIDI notes or marker events.
- Added a function to measure mouse movement in terms of mickeys (difference since the last call) as well as in absolute screen coordinates.
- VolkerOth made the d_edit_proc objects able to scroll, if the string is larger than the available space.
- Added the ability to distinguish between the left and right Control and Alt keys.
- Fabian Nunez added support for the extra keys on a Microsoft keyboard.
- Added void *dp2 and void *dp3 fields to the dialog structure. This ought not to break any existing code, but will let you store a lot more data when creating custom objects.
- The packfile functions can now directly open and read from datafile member objects, using fake filenames in the form "filename.dat#obj_name". This means that all the Allegro file access routines (eg. load_pcx() and set_config_file()) can now read from datafile objects as well as separate files.
- Added miditest and digitest programs to allow more rigorous testing of the sound routines and patch sets, and a vesainfo program to check which video modes are available on any given card.
- Jan Hubicka wrote a faster version of create_rgb_table().
- The grabber now scales the bitmap preview if the image is too large to fit onto the screen.
- Jorrit Rouwe provided a new and much cooler set of FM instrument definitions for the Adlib MIDI driver.
- Added a function to load .IBK patch sets for use by the Adlib driver.
- Added a wrapper allegro/ directory around the contents of the zip file, so it can now be safely unzipped into the main djgpp directory.
- Richard Mitton added support for 6-button joysticks.
- Truecolor (15, 16, and 32 bit) graphics modes.
- Vastly improved sound routines (more flexible API, now supports up to 32 simultaneous voices on the SB, sample-based MIDI playback driver, can reverse samples, volume/pan/pitch sweep effects, MIDI commands can be output on the fly as well as played from MIDI files, and lots of other goodies).
- It is now possible to update the status of GUI dialogs incrementally from your own control loops, with an update_dialog() function, rather than completely transferring control to do_dialog().
- Compressed files (including grabber datafiles) can now be encypted with a password.
- Added a masked_blit() function, that skips zero pixels.
- Added code to detect being run under Linux DOSEMU, and use the less demanding version of the timer code if this is the case.
- Added a standardised configuration mechanism. The format for saved joystick calibration information has changed, so existing joystick files are no longer valid.
- Added a textprintf() routine, which uses a printf() style format string.
- Added a TexInfo version of the documentation (thanks for the help, Francois!)
- Jonas Petersen added a save_bmp() function, and support for the OS/2 BMP format.

# Changes from 2.11 to 2.2 (Feb 1997)

- TBD/FeR added tweaked 320x600 and 360x600 resolutions to the mode-X driver.
- Matthew Bowie added support for 4-button joysticks.
- Dave Thomson added RGB <-> HSV conversion functions.
- Added a 'freeze_mouse_flag' variable, that can be used to lock the pointer to a specific position.
- Added a 'key_led_flag' variable, that can be used to prevent the keyboard LED's updating in response to the capslock, numlock, and scroll-lock keys.
- The midi player now resets midi_pos to -1 when the music finishes playing.
- Adrian Oboroc wrote an LBM loader.
- Fonts can now contain characters above ASCII 127.
- Chris Wigman made a better intro animation for the demo game.
- Added translucency, color blending, and lighting routines (based on code by Owen Embury and ideas by Nathan Albury).
- Added 3d math and matrix manipulation functions.
- Added texture mapped and gouraud shaded polygon drawers.
- Tim Gunn contributed code for reading and writing TGA files.
- Fixed clamping problems with rotating non-circular sprites.
- Added scrollbars to the GUI listbox object.
- Seymour Shlien wrote a bezier spline drawing function.
- Added fixed point fadd() and fsub() functions, which check for overflow.
- Added pack_fseek() and chunk manipulation functions to the file routines.
- Improved datafile structure and grabber program.
- Wrote a utility to convert grabber datafiles into linkable asm code.
- Salvador Eduardo Tropea improved the keyboard routines (better handling of extended scancodes, keyboard LED support, capslock and numlock, and alt+numpad input).
- Fixed the packfile functions and file selector to work with long filenames under win95.
- Seymour Shlien contributed a BMP reader.
- Added a hook function to the keyboard code, allowing you to use the GUI code without installing the keyboard handler.
- Fixed a lockup caused by trying to access non-existent floppy drives.
- Francois Charton wrote a driver for Paradise graphics cards.
- Chris La Mantia contributed a radio button GUI dialog object and added a D_DISABLED object flag.
- Markus F.X.J. Oberhumer fixed the Video-7 scrolling function.
- Converted the docs into HTML format.
- Added code to detect Windows NT.
- Mark Habersack added support for newer Trident chipsets.
- Did some more work on the VBE/AF driver (it now works, but still doesn't support accelerated hardware features).
- Fixed bugs in the WAV sample reader and FLIC player.
- Added special 'windows friendly' mode to the timer code. You can now even run demo.exe under Windows 3.1!
- Reorganised directory structure, to allow for a Linux version. The output liballeg.a is now found in lib/djgpp.
- Added support for 8x16 BIOS format fonts.
- Fixed a problem with overflow when rotating large sprites.
- Fixed a problem with restoring the text mode screen height after running Allegro programs.

# Changes from 2.1 to 2.11 (Nov 1996)

- Fixed bug in bank.S.
- install_mouse() now sets the range to (0,0,SCREEN_W,SCREEN_H).
- install_sound() does not automatically set the volume to maximum.
- Added ++ and -- operators to class fix.
- Makefile now copies liballeg.a to lib, and allegro.h to include.
- Made a few changes to work under LFN=y (if you use unzip or winzip instead of pkunzip).
- Added manifest.
- Clarified installation instructions.

# Changes from 2.0 to 2.1 (June 1996)

- Mode-X support (thanks to Jonathan Tarbox and Dominique Biesmans for suggesting and then helping to implement this).
- Compiled sprites.
- Jonathan Tarbox contributed an FLI/FLC player.
- Added patterned drawing modes.
- Added a vertical retrace interrupt simulator.
- polygon() can now handle concave and self-intersecting shapes. I also changed the parameters a bit. Sorry if this breaks your old code, but it's more efficient the new way...
- Added stretch_sprite().
- Wrote a floodfill() routine.
- More flexible palette fade routines.
- Added set_volume() to the sound code.
- David Calvin wrote a sound setup utility.
- Improved the GUI. Added popup/dropdown menus, joystick input, three button alert boxes, better handling of arrow key focus movement, a new keyboard shortcut object (d_keyboard_proc()), and '&' markers in strings to display keyboard shortcuts. The GUI can also now be used with fonts other than the standard 8x8 default, by altering the global 'font' pointer.
- Fabian Nunez added support for the CH Flightstick Pro joystick (looks cool: I want one :-) and 3-button mice.
- The keyboard handler now responds to the state of the ctrl and alt keys, and there is a new simulate_keypress() function.
- Mark Wodrich added sub-bitmaps, which share their memory with a parent bitmap but can be positioned anywhere within it, and have their own clipping rectangles.
- Mark also modified the mouse driver to double-buffer the pointer (so it doesn't flicker any more), and added a set_mouse_sprite_focus() function.
- Added set_mouse_range() and set_mouse_speed() functions.
- Thanks (again) to Mark Wodrich, the grabber can now import GRX .FNT files.
- The grabber can now make backups when saving datafiles, and it only writes the datafile headers if their contents have changed, to prevent unnecessary recompilation.
- Added a text_height() function.
- The fixed point inverse sin and inverse cos functions now use lookup tables, which makes them a lot faster.
- Reorganised the directory structure, added some example programs, and improved the documentation.

# Changes from 2.0 beta to release (March 1996)

- Marcel de Kogel fixed some problems with the MPU-401 driver. It now actually works :-)
- Marcel also provided some better drum sounds for the Adlib driver.
- Inlined the fmul() and fdiv() functions.
- Much faster fsqrt(), taken from Arne Steinarson's fix-float library.
- Added inline bmp_write_line(), bmp_read_line(), and _putpixel() functions.
- The keyboard routines now support the emergency abort sequence ctrl+alt+del, and there are signal handlers to make sure Allegro will shut down cleanly if your program crashes.
- Wrote new irq wrappers that can deal with reentrant interrupts.
- Added joystick routines (based on code provided by Jonathan Tarbox and Marcel de Kogel).
- Moved some functions to different files and juggled things about so the linker can do a better job. If you don't use the sound stuff, or don't use any graphics functions, now they won't be linked into your executable.
- Marcel de Kogel manged to locate my (embarrassingly stupid :-) mistake which was preventing the VESA 2.0 linear framebuffer driver from working.
- Various other performance enhancements and bug fixes.

# Changes from 1.x to 2.0 beta (Jan/Feb 1996)

- Dropped all the Borland code. A couple of months ago I ran out of disk space, and it was with great satisfaction the I executed the command 'deltree /y c:\bc4'. It was a horrible compiler, and I'm glad it's dead.
- Added SVGA support. As a result it no longer makes sense for allegro_init() to put the system into mode 13h, so you will be in text mode until you call set_gfx_mode().
- Added sound code (background MIDI music and sample mixing).
- Added support for proportional fonts (of any size) as well as the old 8x8 fixed size ones.
- XOR drawing mode.
- There is no longer such a thing as a SPRITE structure. The sprite drawing code now draws bitmaps onto other bitmaps, which is a much more flexible way of doing things. The datafile reader will convert all your old sprites to bitmaps as it loads them in, so the only practical difference this is likely to make is that the sprite drawing routines can't draw opaque sprites any more (but you can use a blit instead).
- show() and get_sprite() no longer exist: use blit() instead.
- Added flipped and rotated sprite draw routines.
- Added bitmap scaling.
- Added RLE sprites.
- drawsprite() has been renamed to draw_sprite().
- textmode() has been renamed to text_mode(), to avoid conflicts with definitions in conio.h.
- All the file access functions have been renamed from the stdio syntax to pack_fopen(), pack_getc(), etc, so they can now be mixed with stdio code.
- Added pack_fgets() and pack_fputs().
- The port_callback pointer no longer exists.
- Removed polyline() (who ever used it?), and added a polygon(), which draws a filled convex polygon with an arbitrary number of vertices.
- Added do_line() and do_circle() functions, which call a user-supplied function for each pixel that needs to be drawn.
- Added a default keyboard interface to the GUI routines, allowing the selection of objects with the arrow keys and <enter>.
- Added several new GUI messages and flags. In particular there are now messages for tracking mouse cursor movement, an idle message, a special return value for the MSG_CHAR message which allows an object to override the default keyboard handling, and a flag which hides the object.
- There are new GUI routines to centre a dialog on the screen and to alter the colors used by the standard alert and file selector dialogs.
- The file selector now takes a third parameter specifying which file extensions to display.
- The timer routines now have better than millisecond accuracy, and it is possible to alter the speed of a user timer callback in realtime (by reinstalling it with a different speed value).
- Removed the _RGB struct and paltorgb() functions. RGB's are now stored directly in the hardware format, with each value in the range 0-63.
- Added functions to get and set single palette entries as well as entire palettes.
- Added DPMI memory locking code.
- Wrote a C++ 'fix' class which overloads a lot of operators, providing an easy way to use the fixed point routines.
- There are probably lots of other things that I have forgotten about.