- 
   Se limpiaron algunos sitios donde la memoria no era liberada durante el
   cierre del sistema. Un detalle cosmético, ya que el SO la liberará por
   nosotros, pero es bueno hacer todas estas cosas bien.
- 
   Alessandro Monopoli tradujo al Italiano los mensajes de sistema.
- 
   Henrik Stokseth añadió código para distinguir entre win95 y win98.
- 
   Se ha quitado a Creative Labs del fichero THANKS, debido a su negativa de
   proporcionar documentación sobre la tarjeta SB Live.
- 
   Se cambió el nombre de la biblioteca de funciones. Después de años
   pensando que Allegro era una palabra sin un sentido particular, descubrí
   que de hecho es un acrónimo recursivo de "Allegro Low Level Game
   Routines".
- 
   Se estableción una nueva lista de correo (conductors@canvaslink.com) para
   las personas que trabajan en Allegro. Por favor, mande sus contribuciones
   de código a esta lista en vez de a mí directamente (Shawn Hargreaves),
   porque esto permitirá que el desarrollo de Allegro continúe aun cuando no
   esté por aquí o esté ocupado con otra cosa en el momento.
- 
   Andreas Kluge escribió un controlador para las tarjetas Ensoniq
   Soundscape.
- 
   Más localización: traducción de los mensajes de sistema al sueco por Sven
   Sandberg, Anton Ragnarsson y Erik Sandberg, traducción de los mensajes de
   sistema al finlandés por Antti Haapala, y traducción de los mensajes de
   sistema y mapa de teclado rusos por Dmitriy Kazimirow.
- 
   La función midi_out() ahora actualiza correctamente el estado de los
   controladores de pan/volumen/bend.
- 
   Kester Maddock añadió un controlador para el joystick Wingman Warrior.
- 
   Se solucionaron algunos problemas con los controladores del Sidewinder,
   Gamepad Pro y joypad SNES.
- 
   Se cambió el controlador de la SB16 para que use un modo de salida de 16
   bits con signo, en lugar del antiguo formato sin signo. Esperemos que
   esto mejore la compatibilidad con las copias baratas de hardware.
- 
   Se añadió el parámetro de entorno WARNMODE al makefile. Los
   desarrolladores de Allegro deberían usarlo para recibir mensajes de aviso
   más estrictos, pero será desactivado por defecto para que las versiones
   de distribución sean más permisivas respecto a diferentes versiones de
   compilador/biblioteca libc.
- 
   Solucionado el problema al leer las posiciones arriba e izquierda en
   joysticks digitales.
- 
   Solucionado (creo, todavía espero información detallada sobre esto :-) el
   problema con los temporizadores corriendo muy rápido en algunas placas
   madre.
- 
   Solucionado el fallo estúpido cuando get_align_matrix() no se preocupaba
   de poner ceros en el vector de translación.
- 
   Solucionado el fallo de los sprites rotados que aparecían invertidos en
   modo-X y modos hi/truecolor.
- 
   Solucionado el fallo de la utilidad dat que truncaba los nombres largos
   al formato 8.3.
- 
   Se renombró el fichero ChangeLog a CHANGES, para evitar problemas en
   sistemas 8.3.
- 
   Varias otras correcciones menores.
- 
   Cambios entre la beta 3.1 y versión final: varios fallos corregidos,
   Antoine Mathys añadió un mapa de teclado suizo, Thomas Wolf añadió una
   traducción alemana del sistema de mensajes.
- 
   Cambios entre las versiones 3.1 alpha y beta: varios fallos corregidos,
   las rutinas FLIC ahora pueden leer de ficheros de datos, se incluyeron
   las optimizaciones para rotar sprites por Ivan Baldo.
- 
   Peter Cech añadió soporte para cambiar mediante una combinación de teclas
   entre el mapa de teclado americano y el mapa de teclado personalizado.
- 
   Neil Townsend mejoró la precisión de las rutinas de temporización.
- 
   Se añadió el programa de ejemplo ex40, que enseña un modo para hacer
   efectos de luz coloreada en modo hicolor (y también porque hace que el
   número total de ejemplos sea un bonito número redondo :-)
- 
   Se añadió el programa test afinfo, que hace lo mismo que vesainfo pero
   para los controladores VBE/AF.
- 
   Michael Bukin hizo muchos parches de portabilidad y corrigió algunos
   fallos, incluyendo algunas mejoras al reproductor de ficheros FLIC y un
   sistema de manejo de ficheros más racional.
- 
   Se quitaron los controladores de chips específicos de SVGA de la
   distribución principal de la biblioteca. En su lugar, estos controladores
   estarán disponibles tanto como un paquete adicional como parte del
   proyecto FreeBE/AF.
- 
   Se añadió el soporte de extensión FreeBE/AF al controlador VBE/AF de
   Allegro (acceso farptr a la memoria de vídeo, y las exportaciones libc y
   pmode necesarias para futura compatibilidad con los controladores SciTech
   Nucleus).
- 
   Se corrigió un fallo con la función vline translúcida y dibujo con patrón
   en las profundidades de color de 15 bits.
- 
   Se corrigió un puntero NULL en las rutinas de configuración.
- 
   Se corrigió un error en el órden de proceso que causaba que los datos se
   perdiesen al llamar a set_config_file() con el mismo nombre de fichero
   que el fichero de configuración actual.
- 
   Stepan Roh añadió una traducción de los mensajes de sistema en
   Checoslovaco.
- 
   Ole Laursen añadió una traducción de los mensajes de sistema en Danés.
- 
   Grzegorz Ludorowski hizo una nueva animación introductoria para la demo.
- 
   Calin Andrian añadió rutinas de conrtrol de rendimiento de polígonos 3d
   al programa test.exe.
- 
   Peter Cech añadió al grabber soporte para la fuente 8x8 de la BIOS.
- 
   Stepan Roh añadió un mapa de teclado checoslovaco.
- 
   Se renombró el fichero de traducción español de SP a ES.
- 
   Calin Andrian añadió un conjunto completo de rutinas de renderización de
   polígonos truecolor, con soporte para optimizaciones MMX y 3DNow! y un
   nuevo modo de dibujo, junto con una nueva función de recorte de
   polígonos. Un cambio menor es que ahora el modo POLYTYPE_FLAT está
   implementado con llamadas a hline(), por lo que responderá al ajuste
   actual de drawing_mode().
- 
   Se cambiaron los números ID de controladores de gráficos/sonido/joysticks
   a una lista con cadenas descriptivas de 4 caracteres, para que sea más
   legible y flexible. Se añadrieron funciones de configuración para
   leer/escribir datos en este formato. Los datos de configuración de sonido
   son compatibles con los viejos, pero tendrá que actualizar manualmente
   cualquier número de controlador gráfico o de joystick que esté almacenado
   en su fichero de configuración.
- 
   Michael Bukin contribuyó _un montón_ de parches para mejorar la
   portabilidad y robustez de prácticamente toda la biblioteca. El único
   cambio visible externamente es que las macros usadas para declarar listas
   de controladores han sido rediseñadas a una sintáxis más portable, a
   pesar de que la antigua sigue estando disponible como una macro de
   compatibilidad.
- 
   Burton Radons hizo más optimizaciones de la función de fundido truecolor
   de pixels.
- 
   Martijn Versteegh añadió un mecanismo de enganche para extender el
   sistema de configuración, que puede ser usado para proveer información
   extendida sobre el estado del sistema o para rutinas personalizadas para
   paquetes añadidos.
- 
   Se rediseñaron las utilidades grabber y dat para soportar módulos
   "plugin" de código fuente, que pueden ser usados para extender el sistema
   con tipos de objetos adicionales, rutinas importar/exportar, y comandos
   de menú.
- 
   Ivan Baldo añadió una opción de difuminado a las rutinas de conversión de
   color de 15/16 bits.
- 
   Kerry High añadió un controlador para el pad de la SNES.
- 
   Se añadió un parámetro a los objetos GUI d_text_proc() y d_ctext_proc(),
   para que usen una fuente personalizada apuntada por el campo dp2.
- 
   Michael Tanczos solucionó algunos fallos en el reproductor de ficheros
   FLIC.
- 
   Cloud Wu optimizó las funciones de fundido de pixels truecolor.
- 
   Paul Pinault añadió una traducción francesa al sistema de mensajes de
   error.
- 
   Grzegorz Adam Hankiewicz añadió una traducción española al sistema de
   mensajes de error, y añadió un nuevo (pero no documentado :-) parámetro
   de línea de comando al juego demo.
- 
   Se solucionaron los clicks en la mezcla interpolada de samples.
- 
   Se solucionó un fallo en el que position_mouse() no actualizaba la
   variable mouse_pos.
- 
   Se solucionó un fallo de scroll horizontal en modo-X mientras el
   temporizador que simula el retrazo estaba activo.
- 
   Se añadió un fichero language.dat, que puede ser usado para proveer
   versiones traducidas de textos de sistema (ej: mensajes de error), de un
   modo similar al existente keyboard.dat. Si quiere usar este mecanismo
   para su propio código, sustuya sus cadenas constantes con llamadas a
   get_config_text("texto"). Esto permitirá que sean traducidas incluyendo
   una línea al estilo "texto=textotraducido" en la sección relevante de
   language.dat.
- 
   Se añadió un campo de nombre ASCII a los ficheros de mapas de teclado,
   para hacer el programa setup algo más amistoso.
- 
   Se incrementó el número máximo de canales de sonido de 32 a 64.
- 
   Se modificó el cargador de parches DIGMID para soportar samples de 16
   bits, para evitar la reducción automática a 8 bits.
- 
   Se añadió una opción de interpolación al mezclador de sonido (quality=2).
- 
   Salvador Eduardo Tropea añadió soporte real de 16 bits al mezclador de
   sonido (quality=1).
- 
   Lee Killough añadió una rutina de bajo nivel al controlador de teclado.
- 
   Se quitó el código en coma flotante del controlador DIGMID para evitar
   potenciales sobrecargas de la pila de la FPU.
- 
   Jim Flynn quitó los cálculos en coma flotante del controlador MIDI AWE32
   (éstos aveces podían producir sobrecargas de pila).
- 
   Salvador Eduardo Tropea mejoró el sustema de ficheros de datos para
   evitar enlazar código no usado.
- 
   Romano Signorelli contribuyó la función Bresenham de dibuado de arcos.
- 
   Thomas Wolf corrigió unos errores del mapa de teclado Alemán.
- 
   Grzegorz Adam Hankiewicz mejoró el ejemplo ex39.
- 
   Sven Sandberg optimizó las rutinas trigonométricas de punto fijo.
- 
   Solucionados algunos fallos estúpidos del código de joystick.
- 
   Se añadió la opción "compress" al makefile, basada en una sugerencia de
   Grzegorz Adam Hankiewicz.
- 
   Se añadieron funciones vacías aquire/release bitmap a allegro.h para
   mantener la compatibilidad con la versión Windows.
- 
   Se añadieron referencias cruzadas al formato Info de la documentación.
- 
   Martin Fuller arregló un fallo muy obscuro en la lectura de ficheros .bmp
   comprimidos.
- 
   El controlador de señal de salida de emergencia ahora recupera
   correctamente el controlador previo, en vez de resetear la acción por
   defecto.
- 
   Sven Sandberg optimizó la función create_light_table().
- 
   George Foot corrigió un fallo cuando la rutina get_mouse_mickeys() era
   llamada siendo ambos parámetros la misma variable.
- 
   Se cambió el término de licencia de "swapware" a "giftware". Mire la web
   de Allegro para leer una explicación de este cambio.
- 
   Se añadieron aun más operadores (esta vez de tipo long y double) a la
   clase fija.
- 
   Marius Fodor añadió soporte para el Sidewinder y el Gravis Gamepad Pro.
   ¡Lo siento por haber tardado tanto en incluir este código!
- 
   Stefan Schimanski optimizó la rutina de blit invertido (para imágenes que
   se sobreescriben)
- 
   Se añadió a las rutinas GUI el movimiento hacia atrás del foco con las
   teclas shift+tab.
- 
   Grzegorz Hankiewicz añadió un nuevo ejemplo que enseña cómo crear y usar
   una tabla de mapeado de color propia.
- 
   Se reescribió el sistema joystick (mejor API y nueva estructura driver).
- 
   Modificada la clase fija para que funcione bien con gcc 2.8.0.
- 
   Añadido el fichero help.txt "cómo conseguir soporte técnico".
- 
   La variable midi_pos ahora es negada, en vez de ajustada a -1, al final
   del fichero MIDI. Esto puede usarse para medir el tamaño del fichero.
- 
   Se añadió un gancho de render a la estructura font, para uso de los
   addons de texto.
- 
   Se mejoró la rutina VBE/AF de salida de texto.
- 
   Corregido el error en el cual el driver VBE/AF interpretaba colores de
   cursores hardware.
- 
   Pedro Cardoso contribuyó un modo trucado VGA 80x80.
- 
   El driver VBE/AF ahora soporta tanto drivers tontos con framebuffer como
   drivers acelerados.
- 
   Se añadió más soporte de aceleración al driver VBE/AF (cursores hardware,
   líneas, líneas verticales, triángulos, salida de texto de ancho fijo, y
   blits opacos/enmascarados desde memoria de sistema a la pantalla).
- 
   Se añadió la función scare_mouse(), basada en ideas de Martijn Versteegh.
- 
   Grabber ahora almacena el estado del diálogo "grab from grid" en
   allegro.cfg.
- 
   Sven Sandberg solucionó un problema con los anchos de save_bitmap() que
   eran redondeados hacia arriba.
- 
   La bandera _timer_installed es ahora globalmente visible.
- 
   Ove Kaaven añadió soporte de framebuffer lineal al driver nativo mach64.
- 
   Erik Sandberg optimizó las funciones draw_sprite() y draw_trans_sprite()
   de 8 bits.
- 
   Michal Mertl solucionó un agujero de memoria en la función
   generate_optimized_palette()
- 
   Se añadió la definición ALLEGRO_DATE a allegro.h.
- 
   Michael Bukin optimizó la rutina de dibujado de líneas y solucionó el
   problema de las funciones fadd()/fsub() inline en ensamblador.
- 
   Solucionados los problemas potenciales causados por la diferencia de
   tiempo entre las variables de estado del ratón y el puntero que estaba
   siendo redibujado.
- 
   Michal Mertl optimizó el código de área de recorte para las líneas,
   rectángulos y círculos.
- 
   Maiolino Carmelo contribuyó un mapa de teclado Italiano.
- 
   Solucionados los bloqueos causados por las funciones de LED del teclado
   en algunas plataformas/hardware.
- 
   Se añadieron las funciones nuevas create_video_bitmap() y
   show_video_bitmap().
- 
   Se añadió una opción para medir la velocidad en el programa test.
- 
   El controlador de teclado ahora actualiza correctamente el estado de las
   teclas control y alt en la BIOS cuando se cierra.
- 
   Solucionado un problema que evitaba que el driver DIGMID leyese patches
   almacenados en ficheros de datos añadidos a ficheros ejecutables.
- 
   Cambiada la prioridad por defecto de los samples de 255 a 128.
- 
   Solucionados algunos problemas con tamaños virtuales de pantalla en el
   driver VBE/AF.
- 
   Añadidos dos ejemplos nuevos.
- 
   El driver VBE/AF ahora tiene soporte total para dibujado acelerado por
   hardware.
- 
   Añadido soporte VBE 3.0, incluyendo las nuevas rutinas de triple buffer.
- 
   Se escribió una rutina para seleccionar la entrada de sonido (micrófono,
   línea o CD).
- 
   Se añadió soporte decente para samples estéreo. Esto requería un
   parámetro extra a la función play_audio_stren(), por lo que tendrás que
   cambiar todos los programas que usen esto. ¡Lo siento mucho por romper tu
   código antiguo!
- 
   Solucionados los fallos de autodetección de la SB16 y la grabación de
   samples a 16 bits.
- 
   Añadido soporte a la interfaz de driver bruto SB MIDI.
- 
   Se escribió un nuevo programa de test que demuestra las características
   de entrada de audio.
- 
   Ove Kaaven añadió soporte de entrada de audio (samples) y MIDI.
- 
   La función pack_fopen() ahora entiende los ficheros de datos anidados
   como estructuras de directorio, usando nombres de fichero como
   "graphics.dat#level1/sprites/zdurgle".
- 
   Charles Mac Donald me enseñó cómo activar el modo VGA 160x120, y
   resoluciones de modo-X 400x* de más confianza.
- 
   Guilherme Silveira y Theuzifan Sumachingun modificaron ambos
   independientemente el seleccionador de ficheros para que enseñase sólo
   letras de unidades válidas.
- 
   Carsten Sorensen añadió un driver para la tarjeta de sonido ESS
   AudioDrive.
- 
   Przemek Podsiadly añadió versiones hicolor de las rutinas de polígonos
   3d.
- 
   Ove Kaaven añadió soporte truecolor al driver nativo ATI mach64.
- 
   Patrick Hogan añadió una función draw_goraud_sprite().
- 
   Ben Chauveau añadió el driver para tarjetas Tseng ET6000.
- 
   Marco Campinoti añadió soporte truecolor al driver nativo Tseng ET4000.
- 
   Marco Marmulla añadió soporte de 16 bits a la rutina load_voc().
- 
   Se añadieron mapas de teclado Daneses, Suecos y Noruegos.
- 
   Se añadió un gancho a las funciones GUI para escalar u offsetting la
   posición del ratón.
- 
   Se solucionó un fallo que causaba un bloqueo cuando llamabas
   set_leds(-1).
- 
   Michael Bevin optimizó la función create_trans_table().
- 
   Ahora es posible enseñar un puntero de ratón sin tener que instalar el
   controlador de ratón.
- 
   Se añadió la función create_sample().
- 
   Se hizo que las funciones de fundido _blender_map y las banderas
   _mouse_installed, _keyboard_installed, y _sound_installed sean visibles
   globalmente.
- 
   Se añadió un modo joystick de 8 botones.
- 
   Chris La Mantia solucionó un problema visual menor de d_icon_proc().
- 
   Se añadió el formato de texto enriquecido (.rtf) a la documentación.
- 
   Se añadieron operadores de incremento/decremento postfix a la clase fija
   de C++, y el operador de negación unary es ahora correcto.
- 
   La utilidad pat2dat ahora puede importar instrumentos de ficheros
   SoundFont de la AWE32.
- 
   Optimizado el cargador de patches DIGMID y corregidos varios fallos.
- 
   Ove Kaaven corrigió el driver de la ATI Mach64.
- 
   El fichero de configuración ahora puede mencionar varios drivers de video
   posibles, usando líneas de la forma gfx_driver=x, gfx_driver2=x, etc.
- 
   Mejoradas las funciones de ayuda del controlador nativo SVGA, haciendo
   más fácil el añadir soporte truecolor a los drivers de nivel de registro.
- 
   Hacer doble click en un objeto de fuente en el grabber the permite ahora
   ver los carácteres extendidos así como los ASCII normales.
- 
   Markus Oberhumer corrigió el problema potencial de la Video-7 del código
   de inicialización.
- 
   Markus Oberhumer, Bitland y Sormuras me enviaron las tablas de los mapas
   de teclado alemanes. Coordinación de esfuerzo: ¿quién la necesita? :-)
- 
   Mathieu Lafon mejoró el mapa de teclado francés.
- 
   Corregidos algunos fallos del sistema de reserva de voces MIDI.
- 
   Añadida ls opción -k (guarda nombres) a la utilidad dat.
- 
   El programa de setup ahora usa la variable de entorno ALLEGRO para
   localizar el fichero keyboard.dat.
- 
   Solucionado un problema con los carácteres < y > de la documentación
   HTML.
- 
   Se añadieron los parámetros de intrumentos de George mejorados para el
   driver AWE32.
- 
   La utilidad pat2dat ahora puede reducir samples de 16 a 8 bits (salva
   espacio, y el driver DIGMID en todo caso sólo usa 8 bits).
- 
   Se añadió otra versión del controlador del raton, esta vez en un intento
   de que funcione mejor bajo Windows NT.
- 
   Frodo Baggins añadió un mapa de teclado portugués.
- 
   Se añadió la función "shell" como herramienta externa al grabber.
- 
   Se añadió la función "box grab" al grabber, la cual usa el color #255
   para determinar los bordes de un sprite a seleccionar.
- 
   Santeri Saarimaa añadió un mapa de teclado finlandés.
- 
   La utilidad pat2dat por fin está completa, y el driver DIGMID ahora
   funciona mucho mejor.
- 
   Mathieu Lafon añadió soporte para las teclas Pausa e Imprime Pantalla, y
   cambió el array key[] a un campo de bits que indica si una o varias
   teclas normales y extendidas están siendo pulsadas. Esto sigue siendo
   compatible con la sintaxis "if (key[KEY_*])", pero también permite
   distinguir entre, por ejemplo, la tecla Enter del teclado numérico y la
   que está al lado de la tecla shift (mayúsculas).
- 
   Solucionado un fallo con el manejo de las variables de configuración que
   no corresponden a ninguna sección.
- 
   El fichero makefile ahora intenta detectar y avisar a la gente de los
   errores de instalación más comunes.
- 
   La versión HTML de la documentación ahora usa la extensión corta .htm si
   es creada en un sistema con LFN desactivado.
- 
   Los ficheros de mapas de teclado ahora solo salvan las teclas que son
   diferentes del mapa de teclado de EE.UU. ¡Esto hace los mapas de teclado
   mucho más pequeños!
- 
   Se ha cambiado la fuente y el mapa de teclado por defecto que usa la
   página de códigos 437 del DOS al estándar ISO (primera parte de Unicode).
   Si tienes una configuración de teclado usando la página de códigos
   antigua, ésta tendrá que ser actualizada, pero no te preocupes, tengo un
   script que puede hacer esto fácilmente.
- 
   Corregido un fallo con la detección de los formatos de fuentes (fijas o
   proporcionales) cuando se recogen desde un fichero bitmap.
- 
   Se ha añadido un punto modificable de repetición al reproductor MIDI
   (gracias a George por solucionar esto...)
- 
   Se reescribió el controlador del ratón para que dé la posición usando
   sólo los contadores mickey del driver con int 0x33. Ojalá esto solucione
   el problema de los drivers defectuosos de Logitech...
- 
   Añadida la variable mouse_pos conteniendo los valores de los ejes X e Y
   en un espacio de 32 bits, para permitir leerlos de una vez durante bucles
   rápidos.
- 
   El grabber ahora puede hacer selecciones múltiples y tiene un nuevo
   comando "ungrab" que copia de un objeto bitmap al portapapeles (puedes
   usar esto para hacer paletas de imágenes truecolor, o para re-grabar un
   área más pequeña de la imagen).
- 
   Se añadió la posibilidad de hacer múltiples selecciones en el objeto
   lista GUI.
- 
   Theuzifan mejoró la detección de cpu para chips Cyrix.
- 
   Mathieu Lafon añadió un mapa de teclado francés.
- 
   Richard Mitton escribió un programa de ejemplo demostrando como emular un
   modo de color de 12 bits truecolor en una tarjeta de 8 bits.
- 
   Michal Mertl añadió una rutina para generar paletas optimizadas para una
   imagen truecolor específica.
- 
   Se han optimizado las funciones getr/g/b(). Convertir ahora imágenes de
   diferentes profundidades de color debería de ser mucho más rápido ahora.
- 
   Scott Harrison añadió código para detectar OpenDOS, y se usa el modo
   i_love_bill si su versión de EMM386 está en uso.
- 
   Se añadieron algunos programas de ejemplo.
- 
   La utilidad makedoc ahora convierte los códigos de caracteres de DOS a
   los extendidos de Windows al crear ficheros HTML.
- 
   Ettore Perazzoli optimizó espectacularmente la función blit lineal del
   modo-X.
- 
   Se añadió una opción grid a la utilidad dat, para especificar que región
   del bitmap quieres coger.
- 
   Arreglado el fallo al dibujar bitmaps truecolor en bitmaps de modo-X.
- 
   Arreglado el fallo que impedía cambiar el volumen de la tarjeta Adlib
   cuando sólo los drivers MIDI estaban instalados.
- 
   El grabber se puede ejecutar en otros modos de vídeo que 64x480 (sin
   embargo, no es muy bonito en resoluciones bajas :-)
- 
   Se añadió un nuevo scancode falso para la tecla extendida / (la del
   teclado numérico) para que las dos teclas puedan ser distinguibles.
- 
   Joaquin Hierro Díaz hizo un mapa de teclado español.
- 
   La utilidad de setup se puede usar ahora para seleccionar un mapa de
   teclado y para calibrar el joystick, así como para el hardware de sonido.
- 
   Moví algunos documentos a otros sitios, para que la gente ojalá encuentre
   más rápido el fichero faq.txt, y para acercarme al modo de distribución
   estándar de GNU.
- 
   Mejorado el sistema de configuración de teclado. Ahora hay una utilidad
   para seleccionar el mapa de teclado, y éstos pueden ser leídos desde
   ficheros externos, y soportan correctamente las teclas alt-gr y los
   acentos.
- 
   Los ítems de los menús ahora se pueden desactivar, tienen ahora signos de
   marcado, pueden alinearse el texto a la derecha para enseñar atajos de
   teclado, hay un nuevo campo "void *dp" en la estructura del menú, y hay
   rutinas de clickeado callback usan el puntero global "active_menu" para
   determinar qué opción fue llamada, si alguna rutina es compartida por
   varios ítems de menú.
- 
   Peter Palotas añadió un callback de entrada a las rutinas de teclado, y
   banderas de evento al callback del ratón.
- 
   Se añadió la opción -pal a la utilidad dat.
- 
   Grzegorz Ludorowski hizo algunos gráficos nuevos para la demo.
- 
   Se movió parte del código a nuevos ficheros y se añadieron varios macros
   para que puedas quitar drivers de gráficos y sonido en el momento de
   enlazar tu programa.
- 
   Fabian Nuñez añadió soporte para el joystick Logitech Wingman Extreme.
- 
   Chris La Mantia contribuyó con un objeto de diálogo d_slider_proc().
- 
   Sean Gugler añadió una rutina para cambiar el estado de los LEDs del
   teclado.
- 
   Gearge Foot añadió funciones de pausa y búsqueda al reproductor MIDI.
- 
   Se añadió la posibilidad de unir ficheros de datos (de hecho, cualquier
   fichero) al final de tu programa ejecutable.
- 
   Se incluyó del driver de la AWE32. ¡Larga vida a George!
- 
   Ahora se pueden leer ficheros TGA con compresión RLE.
- 
   Se añadió una función de callback de movimiento para el ratón (útil para
   detectar eventos de doble click).
- 
   Stefan Eilert añadió soporte para dos joysticks.
- 
   Seymour Shlien contribuyó una rutina para dibujar texto justificado.
- 
   Krzysztof Krzyzaniak contribuyó un cargador de ficheros .VOC.
- 
   Se añadió la función rotate_scaled_sprite().
- 
   Ahora hay soporte para teclados Dvorak.
- 
   Salvador Eduardo Tropea añadió el modo VGA 320x100.
- 
   Se implementaron funciones para dibujar ficheros RLE translúcidos e
   iluminados en los modos truecolor.
- 
   Se actualizó el la utilidad de setup de sonido.
- 
   La utilidad dat puede crear ficheros makefile para poder reconstruir un
   fichero automáticamente cuando un fichero fuente cambia.
- 
   Se solucionaron algunos problemas de las funciones de conversión
   RGB <-> HSV.
- 
   Soporte truecolor añadido al grabber y al cargar imágenes.
- 
   Phil Frisbie añadió código para detectar el tipo de CPU.
- 
   Michal Mertl añadió los modos gráficos de 24 bits. ¡Hurra!
- 
   Se añadieron funciones para reproducir canales de datos de audio digital.
- 
   Chris La Mantia contribuyó un objeto de icono bitmap GUI.
- 
   Doug Eleveld añadió un objeto de caja de texto GUI, y un sistema mejorado
   de ayuda para el grabber.
- 
   Ahora se soportan los mapas de teclado UK y AZERTY. Se pueden añadir más
   fácilmente si me mandas la tabla scancode->ASCII apropiada...
- 
   Se añadieron las funciones get_align_matrix(), qtranslate_matrix(), y
   qscale_matrix().
- 
   Se añadió la función draw_character() para usar sprites como máscaras
   monocromas de pixel.
- 
   Ahora es seguro pasar la misma matriz como entrada y salida de la función
   matrix_mul().
- 
   Paul Bartrum contribuyó algunas funciones para dibujar elipses.
- 
   Se añadieron callbacks al driver MIDI, permitiéndote introducir tu propio
   código en las notas midi o marcas de eventos.
- 
   Se añadió una función para medir el movimiento del ratón en mickeys
   (diferencia desde la última llamada) así como en coordenadas absolutas de
   pantalla.
- 
   VolkerOth posibilitó el scroll de los objetos d_edit_proc, si la cadena
   de texto es más larga que el espacio disponible.
- 
   Se añadió la habilidad de distinguir entre las teclas izquierda y derecha
   de Control y Alt.
- 
   Fabian Nuñez añadió soporte para las teclas extra del teclado Microsoft.
- 
   Se añadieron los campos *dp2 y *dp3 a la estructura de diálogo. Esto no
   debería romper código existente, pero te permitirá almacenar más datos
   cuando crees objetos propios.
- 
   Las funciones packfile ahora pueden abrir y leer objetos de un fichero de
   datos, usando nombres falsos de la forma "nombre.dat#nom_objeto". Esto
   significa que todas las rutinas de Allegro de acceso a ficheros (como
   load_pcx() o set_config_file()) pueden leer de objetos de ficheros de
   datos al igual que de ficheros individuales.
- 
   Se añadieron los programas miditest y digitest para permitir un testeo
   más riguroso de las rutinas de sonido y los patches, y el programa
   vesainfo para chequear a qué resoluciones se puede acceder en una tarjeta
   de vídeo.
- 
   Jan Hubicka escribió una versión más rápida de create_rgb_table().
- 
   La utilidad grabber ahora escala la vista previa de un bitmap si la
   imagen es demasiado larga para caber en la pantalla.
- 
   Jorrit Rouwe incorporó nuevas y mejores definiciones de instrumentos FM
   al driver MIDI de Adlib.
- 
   Se añadió una función para cargar patches .IBK para uso del driver Adlib.
- 
   Se añadió el directorio allegro/ a la estructura del árbol del fichero
   zip, por lo que ahora puedes descomprimir Allegro en tu directorio djgpp.
- 
   Richard Mitton añadió soporte para joysticks con 6 botones.
- 
   Modos gráficos truecolor (15, 16, y 32 bits).
- 
   Rutinas de sonido vastamente mejoradas (API más flexible, ahora soporta
   hasta 32 voces simultáneas en la SB, driver MIDI basado en samples, puede
   invertir samples, hacer efectos de volumen/pan/pitch, los comandos MIDI
   se pueden ejecutar en tiempo real así como desde un fichero, y muchas más
   cosas).
- 
   Ahora se puede actualizar el estado de los diálogos GUI de forma
   ascendente desde tus propios bucles de control, con la función
   update_dialog(), en vez de pasar el control totalmente a do_dialog().
- 
   Los ficheros comprimidos (incluyendo ficheros de datos) pueden ser
   encriptados con un password.
- 
   Añadida la función masked_blit(), que ignora los pixels cero.
- 
   Se añadió código para detectar la ejecución bajo Linux DOSEMU, y en ese
   caso se usa una versión del código de temporización que usa menos
   recursos.
- 
   Se añadió un mecanismo de configuración estandarizado. El formato para la
   información salvada de calibración de joystick ha cambiado, por lo que
   los ficheros de joystick existentes ya no son válidos.
- 
   Se añadió la rutina textprintf(), que usa un formato de cadena como
   printf().
- 
   Se añadió una versión TexInfo de la documentación ((gracias por la ayuda,
   Francois!)
- 
   Jonas Petersen añadió la función save_bmp(), y añadió soporte para el
   formato BMP de OS/2.
- 
   TBD/FeR añadió las resoluciones 320x600 y 360x600 al driver de modo-X.
- 
   Matthew Bowie añadió soporte para joysticks de 4 botones.
- 
   Dave Thomson añadió funciones de conversión RGB <-> HSV.
- 
   Se añadió la variable ''freeze_mouse_flag', que puede ser usada para
   congelar el puntero a una posición específica.
- 
   Se añadió la variable 'key_led_flag', que ahora puede ser usada para
   evitar que el LED de estado de las teclas bloq.mayús, bloq.num y
   scroll-lock cambie.
- 
   El reproductor midi ahora inicializa midi_pos a -1 cuando la música acaba
   de tocar.
- 
   Adrian Oboroc escribió una función para cargar LBM.
- 
   Las fuentes ahora pueden contener caracteres ASCII por encima de 127.
- 
   Chris Wigman hizo una intro mejor para el juego demo.
- 
   Se añadieron rutinas de translucencia, mezcla de color e iluminación
   (basadas en código de Owen Embury e ideas de Nathan Albury).
- 
   Se añadieron funciones matemáticas 3d y de manipulación de matrices.
- 
   Se añadieron dibujadores de polígonos texturizados y con sombreado
   goraud.
- 
   Tim Gunn contribuyó código para leer y escribir ficheros TGA.
- 
   Se arreglaron los problemas de los sprites rotatorios no circulares.
- 
   Se añadieron barras de desplazamiento al objeto GUI listbox.
- 
   Seymour Shlien escribió una función para dibujar curvas bezier.
- 
   Se añadieron las funciones de punto fijo fadd() y fsub(), que chequean el
   desbordamiento.
- 
   Se añadieron las funciones pack_fseek() y manipulación de chunks a las
   rutinas de ficheros.
- 
   Se mejoró la estructura de los ficheros de datos y el programa grabber.
- 
   Se escribió una utilidad para convertir ficheros de datos del grabber en
   código asm enlazable.
- 
   Salvador Eduardo Tropea mejoró las rutinas de teclado (mejor manejo de
   scancodes extendidos, soporte de LED del teclado, y detección de
   bloq.mayús, bloq.num y alt+teclado numérico).
- 
   Se arreglaron las funciones packfile y el selector de ficheros para que
   funcionen con los nombres largos de win95.
- 
   Seymour Shlien contribuyó un lector de ficheros BMP.
- 
   Añadida una función de enganche al código de teclado, permitiéndote usar
   código GUI sin instalar el controlador de teclado.
- 
   Solucionado el cuelgue producido por intentar acceder a unidades de disco
   no existentes.
- 
   Francois Charton escribió un driver para la tarjeta gráfica Paradise.
- 
   Chris La Mantia contribuyó el botón de radio de diálogo GUI y añadió la
   bandera de objeto D_DISABLED.
- 
   Markus F.X.J. Oberhumer arregló las funciones de scroll de Video-7.
- 
   Se convirtió la documentación en formato HTML.
- 
   Se añadió código para detectar Windows NT.
- 
   Mark Habersack añadió soporte para nuevos chipsets Trident.
- 
   Se trabajó más en el driver VBA/AF (ahora funciona, pero todavía no
   soporta funciones de aceleración por hardware).
- 
   Arreglados los fallos del reproductor FLIC y cargador de samples WAV.
- 
   Se añadió el modo especial 'windows friendly' al código del temporizador.
   ¡Ahora incluso puedes ejecutar demo.exe bajo Windows 3.1!
- 
   Se reorganizó la estructura de directorios para permitir una versión
   Linux. El fichero liballeg.a ahora se encuentra en lib/djgpp.
- 
   Se añadió soporte para las fuentes de formato BIOS 8x16.
- 
   Solucionado un problema de desbordamiento al rotar sprites grandes.
- 
   Se arregló un problema con la recuperación del modo texto después de
   ejecutar programas que usan Allegro.
- 
   Arreglado el fallo en el banco.S.
- 
   install_mouse() ahora ajusta el rango a (0,0,SCREEN_W,SCREEN_H).
- 
   install_sound() no ajusta automáticamente el volumen al máximo.
- 
   Se añadieron los operadores ++ y -- a la clase fija.
- 
   Makefile ahora copia liballeg.a a lib, y allegro.h a include.
- 
   Se hicieron algunos cambios para trabajar con LFN=y (por si usas unzip o
   winzip en vez de pkunzip).
- 
   Se añadió el fichero manifest.
- 
   Instrucciones de instalación clarificadas.
- 
   Soporte de modo-X (gracias a Jonathan Tarbox y Dominique Biesmans por
   sugerir esto y luego ayudar a implementarlo).
- 
   Sprites compilados.
- 
   Jonathan Tarbox contribuyó un reproductor FLI/FLC.
- 
   Se añadieron modos de dibujo con patrón.
- 
   Se añadió un simulador de la interrupción de retrazo vertical.
- 
   polygon() ahora puede manejar figuras cóncavas o con intersecciones.
   También se cambiaron los parámetros un poco. Perdón si esto estropea tu
   código viejo, pero es más eficiente de este modo.
- 
   Añadido stretch_sprite().
- 
   Se escribió la rutina floodfill().
- 
   Rutinas de fundido de paleta más flexibles.
- 
   Se añadió set_volume() al código de sonido.
- 
   David Calvin escribió una utilidad para configurar el sonido.
- 
   Mejorado el GUI. Se añadieron menús emergentes/de persiana, entrada de
   joystick, cajas de alerta de tres botones, mejor manejo del foco con los
   cursores, un nuevo objeto de atajo de teclado (d_keyboard_proc()), y el
   carácter '&' para marcar los atajos de teclado. El GUI ahora puede ser
   usado con otras fuentes que no sean 8x8 al alterar el puntero global
   'font'.
- 
   Fabian Nuñez añadió soporte para el joystick CH Flightstick Pro (me
   gusta: quiero uno :-) y el botón central del ratón.
- 
   El mánager de teclado ahora responde al estado de las teclas ctrl y alt,
   y hay una nueva función simulate_keypress().
- 
   Mark Wodrich añadió sub-bitmaps, que comparten memoria con bitmaps padre
   y pueden ser posicionados en cualquier lugar dentro de ellos, y tienen
   sus propios rectángulos de clipping.
- 
   Mask modificó el driver de ratón para hacer doble-buffer con el puntero
   (para que no parpadeé más), y añadió la función set_mouse_sprite_focus().
- 
   Se añadieron las funciones set_mouse_range() y set_mouse_speed().
- 
   Gracias (de nuevo) a Mark Wodrich, el grabber ahora puede importar
   ficheros GRX .FNT.
- 
   El grabber ahora puede hacer backups al salvar ficheros de datos, y sólo
   escribe el fichero de cabecera si el contenido ha cambiado, para prevenir
   la recompilación innecesaria.
- 
   Añadida la función text_height().
- 
   Mejoradas las funciones de punto fijo de cosecante y secante. Ahora usan
   tablas precalculadas, por lo que sin mucho más rápidas.
- 
   Reorganizada la estructura de directorios, añadidos algunos programas de
   ejemplo y mejorada la documentación.
- 
   Marcel de Kogel arregló algunos problemas con el driver MPU-401. Ahora
   realmente funciona :-)
- 
   Marcel también mejoró los sonidos de batería del driver Adlib.
- 
   Funciones fmul() y fdic() ahora en ensamblador.
- 
   Función fsqrt() mucho más rápida, cogida de la librería de punto
   fijo/coma flotante de Arne Steinarson.
- 
   Funciones bmp_write_line(), bmp_read_line(), y _putpixel() en
   ensamblador.
- 
   Las rutinas de teclado ahora soportan la secuencia de escape de
   emergencia ctrl+alt+del, y hay mánagers de señales para asegurarse de que
   Allegro se cerrará limpiamente si tu programa se bloquea.
- 
   Nuevas funciones irq que ahora pueden tratar con interrupciones
   reentrantes.
- 
   Se añadieron rutinas de joystick (basadas en código de Jonathan Tarbox y
   Marcel de Kogel).
- 
   Se movieron algunas funciones a otros ficheros y se cambiaron cosas para
   que el enlazador haga un trabajo mejor. Si ahora no usas funciones de
   sonido o de gráficos, no serán enlazadas a tu ejecutable.
- 
   Marcel de Kogel consiguió localizar mi (terriblemente estúpido :-) error
   que no permitía trabajar al driver lineal VESA 2.0.
- 
   Varios correcciones de fallos y mejoras de rendimiento.
- 
   Dejé todo el código Borland. Hace unos meses se me acabó el espacio en el
   disco duro, y ejecuté con gran satisfacción el comando 'deltree /y
   c:\bc4'. Era un compilador horrible, y estoy orgulloso de que esté muerto.
- 
   Se añadió soporte SVGA. Como resultado, ya no hay motivo para poner el
   sistema en modo 13h con allegro_init(), por lo que estarás en modo texto
   hasta llamar set_gfx_mode().
- 
   Se añadió código de sonido (mezcla de samples y música MIDI de fondo).
- 
   Se añadió soporte para fuentes proporcionales (de cualquier tamaño) al
   igual que las antiguas fuentes fijas de 8x8.
- 
   Modo de dibujo XOR.
- 
   Ahora ya no existe la estructura SPRITE. El código de dibujo de sprites
   ahora dibuja bitmaps sobre otros bitmaps, lo cual es un modo más flexible
   de hacer las cosas. El lector de ficheros de datos convertirá tus viejos
   sprites a bitmaps al cargarlos, por lo que la única diferencia práctica
   es que ahora las funciones de dibujado de sprites no pueden dibujar
   sprites opacos (pero sigues pudiendo hacer un blit).
- 
   show() y get_sprite() ya no existen: usa blit() en su lugar.
- 
   Se añadieron las funciones de dibujo de sprites rotados e invertidos.
- 
   Se añadió el escalado de bitmaps.
- 
   Se añadieron sprites RLE.
- 
   drawsprite() ahora se llama draw_sprite().
- 
   textmode() ahora se llama text_mode() para evitar conflictos con las
   definiciones de conio.h.
- 
   Todas las funciones de acceso a ficheros se han renombrado de la sintaxis
   de stdio a pack_fopen(), pack_getc(), etc, para que puedan ser mezcladas
   con código que use stdio.
- 
   Se añadió pack_fgets() y pack_fputs().
- 
   El puntero port_callback ya no existe.
- 
   Eliminado polyline() (¿quién lo usaba?), y se añadió polygon(), que dibuja
   un polígono convexo relleno con un número arbitrario de vértices.
- 
   Se añadieron las funciones do_line() y do_circle(), que llaman una
   función del usuario por cada pixel que necesita ser dibujado.
- 
   Se añadió un interfaz de teclado por defecto a las rutinas GUI,
   permitiendo la selección de objetos con los cursores y <enter>.
- 
   Se añadieron algunos mensajes y banderas GUI. En particular ahora hay
   mensajes para seguir el movimiento del ratón, un mensaje de espera, un
   valor especial de retorno del mensaje MSG_CHAR que permite a un objeto
   ignorar el manejo por defecto del teclado, y una bandera que oculta un
   objeto.
- 
   Hay nuevas rutinas GUI para centrar el diálogo en la pantalla y para
   alterar los colores usados por los diálogos estándar de alerta y
   selección de ficheros.
- 
   El selector de ficheros ahora acepta un tercer parámetro que especifica
   el tipo de extensión a enseñar.
- 
   Las rutinas de reloj ahora tienen mejor grado de precisión que un
   milisegundo, y ahora es posible alterar la velocidad de una rutina
   callback de reloj en tiempo real (reinstalándola con un nuevo valor de
   velocidad).
- 
   Se eliminó la estructura _RGB y las funciones paltorgb(). Los RGB's ahora
   se almacenan directamente en el formato de hardware, cada uno con un
   valor en el rango 0-63.
- 
   Se añadieron funciones para coger y escribir entradas de paleta
   individuales al igual que paletas enteras.
- 
   Se añadió código para fijar (lock) memoria DPMI.
- 
   Se escribió la clase 'fija' C++ que sobrecarga muchos operadores,
   permitiéndote usar las rutinas de punto fijo fácilmente.
- 
   Probablemente hay muchas más cosas que he olvidado.