Hay gente que se queja de que Allegro produce ejecutables muy grandes. Esto es cierto: con la versión DJGPP, un simple programa "hola mundo" ocupará unas 200k, aunque este tamaño por ejecutable es mucho menor en plataformas que soportan enlazado dinámico. Pero no se preocupe, Allegro ocupa un tamaño relativamente fijo, y no aumentará a medida que lo hace su programa. Tal y como George Foot dijo sin tapujos, quien esté preocupado por la relación entre código de biblioteca y programa debería ponerse manos a la obra y escribir más código de programa para equilibrar la cosa :-)
Dicho esto, hay varias cosas que puede hacer para reducir el tamaño de sus ejecutables:
donde los nombres driverx son cualquiera de las definiciones:BEGIN_GFX_DRIVER_LIST driver1 driver2 etc... END_GFX_DRIVER_LIST
Esta construcción debe ser incluida sólo en uno de sus ficheros C. El orden de los nombres es importante, porque la rutina de auto detección funciona de arriba a abajo hasta encontrar un controlador capaz de soportar el modo solicitado. Yo le sugiero que use la lista de arriba ordenada por defecto, y borre simplemente las líneas que no vaya a necesitar.GFX_DRIVER_VBEAF GFX_DRIVER_VGA GFX_DRIVER_MODEX GFX_DRIVER_VESA3 GFX_DRIVER_VESA2L GFX_DRIVER_VESA2B GFX_DRIVER_XTENDED GFX_DRIVER_VESA1
donde los nombres de profundidades de color son cualquiera de los defines:BEGIN_COLOR_DEPTH_LIST depth1 depth2 etc... END_COLOR_DEPTH_LIST
Quitar cualquier profundidad de color le ahorrará un poco de espacio, con la excepción de los modos de 15 y 16 bits: éstos comparten una buena porción de código, así que si está incluyendo uno, no hay razón para quitar el otro. Esté avisado de que si intenta usar una profundidad de color no incluida en esta lista, ¡su programa se colgará de forma horrible!COLOR_DEPTH_8 COLOR_DEPTH_15 COLOR_DEPTH_16 COLOR_DEPTH_24 COLOR_DEPTH_32
usando las definiciones de controladores digitales:BEGIN_DIGI_DRIVER_LIST driver1 driver2 etc... END_DIGI_DRIVER_LIST
y para la música MIDI:DIGI_DRIVER_SOUNDSCAPE DIGI_DRIVER_AUDIODRIVE DIGI_DRIVER_WINSOUNDSYS DIGI_DRIVER_SB
usando las definiciones de controladores MIDI:BEGIN_MIDI_DRIVER_LIST driver1 driver2 etc... END_MIDI_DRIVER_LIST
Si 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.MIDI_DRIVER_AWE32 MIDI_DRIVER_DIGMID MIDI_DRIVER_ADLIB MIDI_DRIVER_MPU MIDI_DRIVER_SB_OUT
usando las definiciones de controladores de joystick:BEGIN_JOYSTICK_DRIVER_LIST driver1 driver2 etc... END_JOYSTICK_DRIVER_LIST
El 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.JOYSTICK_DRIVER_WINGWARRIOR JOYSTICK_DRIVER_SIDEWINDER JOYSTICK_DRIVER_GAMEPAD_PRO JOYSTICK_DRIVER_GRIP JOYSTICK_DRIVER_STANDARD JOYSTICK_DRIVER_SNESPAD JOYSTICK_DRIVER_PSXPAD JOYSTICK_DRIVER_N64PAD JOYSTICK_DRIVER_DB9 JOYSTICK_DRIVER_TURBOGRAFX JOYSTICK_DRIVER_IFSEGA_ISA JOYSTICK_DRIVER_IFSEGA_PCI JOYSTICK_DRIVER_IFSEGA_PCI_FAST
Si 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.#define ALLEGRO_COLOR8 #define ALLEGRO_COLOR16 #define ALLEGRO_COLOR24 #define ALLEGRO_COLOR32
Si está distribuyendo una copia del programa setup junto con su juego, puede conseguir una reducción de tamaño dramática mezclando el código del programa setup con su programa principal, para que sólo sea necesario enlazar una copia de Allegro. Lea setup.txt para más detalles. En la versión DJGPP, tras comprimir su ejecutable, esto le ahorrará unos 200k en comparación con tener dos programas separados para setup y el propio juego.