Algunas personas se quejan de que Allegro produce ejecutables muy largos. Esto es cierto: un simple programa "hola mundo" ocupara unos 200k. Pero no se preocupe, esto es un tamaño extra fijo, y no se incrementará a la par que lo hace su programa. Tal y como George dijo concisamente, el que esté preocupado por la relación entre el código de la biblioteca y el de su programa debería ponerse manos a la obra y escribir más código para su programa :-)
Una vez dicho esto, hay algunas cosas que puede hacer para empequeñecer sus programas:
BEGIN_GFX_DRIVER_LIST driver1 driver2 etc... END_GFX_DRIVER_LISTdonde los nombres driverx son cualquiera de las definiciones:
GFX_DRIVER_VBEAF GFX_DRIVER_VGA GFX_DRIVER_MODEX GFX_DRIVER_VESA3 GFX_DRIVER_VESA2L GFX_DRIVER_VESA2B GFX_DRIVER_XTENDEDEsta construcción debe ser incluida en un sólo fichero C (¡y no en un fichero de cabecera!). El orden de los nombres es importante, porque la rutina de autodetección funciona hacia abajo desde el comienzo de la lista hasta que encuentre el primer controlador que soporta el modo requerido. Le sugiero que siga el orden dado aquí, y que simplemente borre las entradas que no vaya a usar.
Como regla general, el quitar los controladores MODEX y XTENDED salvará bastante espacio, así como el quitar los controladores VESA y VBE/AF si sólo va a usar los modos estándar VGA.
BEGIN_COLOR_DEPTH_LIST depth1 depth2 etc... END_COLOR_DEPTH_LISTdonde los nombres depth son cualquiera de los defines:
COLOR_DEPTH_8 COLOR_DEPTH_15 COLOR_DEPTH_16 COLOR_DEPTH_24 COLOR_DEPTH_32El quitar cualquier profundidad de color se ahorrará un poco de espacio, con excepción de los modos de 15 y 16 bits: estos comparten mucho código, por lo que si incluye uno, no hay razón para no usar ambos. ¡Tenga en cuenta que si intenta usar alguna profundidad de color que no está en la lista, su programa se bloqueará de una forma horrible!
BEGIN_DIGI_DRIVER_LIST driver1 driver2 etc... END_DIGI_DRIVER_LISTusando las definiciones de controladores digitales:
DIGI_DRIVER_SOUNDSCAPE DIGI_DRIVER_AUDIODRIVE DIGI_DRIVER_SBy para la música MIDI:
BEGIN_MIDI_DRIVER_LIST driver1 driver2 etc... END_MIDI_DRIVER_LISTusando las definiciones de controladores MIDI:
MIDI_DRIVER_AWE32 MIDI_DRIVER_DIGMID MIDI_DRIVER_ADLIB MIDI_DRIVER_MPU MIDI_DRIVER_SB_OUTSi va a usar alguno de éstas construcciones, debe usar las dos. Si sólo quiere incluir controladores de sonido digital, simplemente escriba DECLARE_MIDI_DRIVER_LIST() para no incluir controladores de música.
BEGIN_JOYSTICK_DRIVER_LIST driver1 driver2 etc... END_JOYSTICK_DRIVER_LISTusando las definiciones de controladores de joystick:
JOYSTICK_DRIVER_STANDARD JOYSTICK_DRIVER_SIDEWINDER JOYSTICK_DRIVER_GAMEPAD_PRO JOYSTICK_DRIVER_SNESPAD JOYSTICK_DRIVER_WINGWARRIOREl controlador estándar incluye soporte para joysticks duales, número superior de botones, Flightstick Pro, y Wingman Extreme, porque éstos son variaciones menores del código básico.
#define ALLEGRO_COLOR16 #define ALLEGRO_COLOR24 #define ALLEGRO_COLOR32Si comenta cualquiera de estas definiciones y reconstruye la librería, tendrá una versión sin soporte para las profundidades de color ausentes, lo que incluso reducirá más el ejecutable que la macro DECLARE_COLOR_DEPTH_LIST(). El quitar el define ALLEGRO_COLOR16 eliminará el soporte para los modos de 15 y 16bits, ya que éstos comparten mucho código.