Todas las funciones de dibujo de Allegro usan parámetros en enteros para representar colores. En las resoluciones truecolor estos números codifican el color directamente como una colección de bits rojos, verdes y azules, pero en el modo normal de 256 colores, los valores son tratados como índices de la paleta actual, que es una tabla que contiene las intensidades de rojo, verde y azul de cada uno de los 256 colores posibles.
La paleta se almacena con estructuras RGB, que contienen intensidades de rojo, verde y azul en el formato hardware de la VGA, que van de 0 a 63, y son definidas así:
typedef struct RGB
{
   unsigned char r, g, b;
} RGB;
Por ejemplo:
   RGB negro  = { 0,  0,  0  };
   RGB blanco = { 63, 63, 63 };
   RGB verde  = { 0,  63, 0  };
   RGB gris   = { 32, 32, 32 };
El tipo PALETTE es definido como un array de 256 estructuras RGB.
Puede notar que gran parte del código de Allegro escribe 'palette' como 'pallete'. Esto es porque los ficheros de cabecera de mi viejo compilador Mark Williams del Atari lo escribían con dos l's, y estoy acostumbrado a eso. Allegro aceptará sin problemas ambas escrituras, debido a algunos #defines en allegro.h.
void vsync();
   Espera a que empiece un retrazo vertical. El retrazo ocurre cuando el
   rayo de electrones de su monitor ha llegado a la parte inferior de la
   pantalla y está volviendo arriba para hacer otro barrido. Durante este
   corto periodo de tiempo la tarjeta de vídeo no manda datos al monitor,
   por lo que puede hacer cosas que de otra forma no podría, como alterar
   la paleta sin causar parpadeo (nieve). Sin embargo Allegro esperará
   automáticamente el retrazo vertical antes de alterar la paleta o hacer
   scroll por hardware, por lo que normalmente no debe preocuparse por esta
   función.
void set_color(int index, RGB *p);
   Cambia la entrada de la paleta especificada al triplete RGB dado. A
   diferencia de otras funciones de paleta, esto no hace sincronización con
   el retrazo, por lo que debería llamar vsync() antes para evitar
   problemas de nieve.
void _set_color(int index, RGB *p);
   Esta es una versión inline de set_color(), que puede usar en la función
   callback del simulador de retrazo vertical. Sólo debería ser usada en
   VGA modo 13h y modo-X, porque algunos de las recientes SVGAs no son
   compatibles con la VGA (set_color() y set_palette() usarán llamadas VESA
   en estas tarjetas, pero _set_color() no sabrá nada de eso).
void set_palette(PALETTE p);
   Ajusta la paleta entera de 256 colores. Debe pasar un array de 256
   estructuras RGB. A diferencia de set_color(), no hace falta llamar
   vsync() antes de esta función.
void set_palette_range(PALETTE p, int from, int to, int vsync);
   Ajusta las entradas de la paleta desde from hasta to (inclusivos: pase 0
   y 255 para ajustar la paleta entera). Si vsync está activado, espera un
   retrazo vertical, de otro modo cambia los colores inmediatamente.
void get_color(int index, RGB *p);
   Recupera la entrada de la paleta especificada.
void get_palette(PALETTE p);
   Recupera la paleta entera de 256 colores. Debe proveer un array de 256
   estructuras RGB para almacenar ahí los colores.
void get_palette_range(PALETTE p, int from, int to);
   Recupera las entradas de la paleta desde from hasta to (inclusivos: pase
   0 y 255 para recuperar la paleta entera).
void fade_interpolate(PALETTE source, dest, output, int pos, int from, to);
   Calcula una paleta temporal en un sitio entre source y dest,
   devolviéndola en el parámetro output. La posición entre los dos extremos
   es especificada por el valor pos: 0 devuelve una copia exacta de source,
   64 devuelve dest, 32 devuelve una paleta a medio camino entre las dos,
   etc. Esta rutina sólo afecta a los colores desde from hasta to
   (inclusivos: pase 0 y 255 para interpolar la paleta entera).
void fade_from_range(PALETTE source, dest, int speed, int from, to);
   Funde gradualmente una parte de la paleta desde la paleta source hasta la
   paleta dest. La velocidad va de 1 (lento) a 64 (instantáneo). Esta rutina
   sólo afecta los colores desde from hasta to (inclusivos: pase 0 y 255
   para fundir la paleta entera).
void fade_in_range(PALETTE p, int speed, int from, to);
   Funde gradualmente una parte de la paleta desde una pantalla negra hasta
   la paleta especificada. La velocidad va de 1 (lento) a 64 (instantáneo).
   Esta rutina sólo afecta los colores desde from hasta to (inclusivos: pase
   0 y 255 para fundir la paleta entera).
void fade_out_range(int speed, int from, to);
   Funde gradualmente una parte de la paleta desde la paleta actual hasta
   una pantalla negra. La velocidad va de 1 (lento) a 64 (instantáneo). Esta
   rutina sólo afecta los colores desde from hasta to (inclusivos: pase 0 y
   255 para fundir la paleta entera).
void fade_from(PALETTE source, PALETTE dest, int speed);
   Funde gradualmente desde la paleta source hasta la paleta dest. La
   velocidad va de 1 (lento) a 64 (instantáneo).
void fade_in(PALETTE p, int speed);
   Funde gradualmente desde una pantalla negra a la paleta especificada. La
   velocidad va de 1 (lento) a 64 (instantáneo).
void fade_out(int speed);
   Funde gradualmente la paleta actual hasta una pantalla negra. La
   velocidad va de 1 (lento) a 64 (instantáneo).
void select_palette(PALLETE p);
   Rutina fea que puede usar en algunas situaciones peculiares cuando
   necesita convertir entre formatos de imagen con paleta a truecolor.
   Ajusta la tabla de la paleta interna de la misma forma que la función
   set_palette(), para que la conversión use la paleta especificada, pero
   sin afectar de ningún modo al hardware de visualización. La paleta
   antigua es almacenada en un buffer interno, y puede ser recuperada
   llamando unselect_palette().
void unselect_palette();
   Recupera la tabla de la paleta que estaba en uso antes de la última
   llamada a select_palette().
void generate_332_palette(PALETTE pal);
   Construye una paleta truecolor falsa, usando tres bits para el rojo y el
   verde y dos para el azul. La función load_bitmap() devuelve esto si el
   fichero no contiene ninguna paleta (ej: cuando lees un bitmap truecolor).
int generate_optimized_palette(BITMAP *bmp, PALETTE pal, char rsvd[256]);
   Genera una paleta de 256 colores óptima para hacer una versión reducida
   de la imagen truecolor especificada. El parámetro rsvd apunta a una tabla
   qué indica qué colores puede usar la función: cero significa que el color
   es libre, no-cero significa que está reservado para su uso. Si rsvd es
   NULL, entonces la función usara la paleta entera.
extern PALETTE black_palette;
   Una paleta que contiene colores negros sólidos, usada por las rutinas de
   fundidos.
extern PALETTE desktop_palette;
   La paleta usada por el escritorio de baja resolución del Atari ST. No
   estoy seguro por qué esto sigue aquí, excepto porque los programas
   grabber y test la usan. Es probablemente el único código heredado del
   Atari que queda en Allegro, y sería una pena quitarlo :-)