
==============================================================
============ 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 (conductors@canvaslink.com) 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 an ex40 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 ex39 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 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.


