Los sprites compilados se almacenan como instrucciones de código máquina que dibujan una imagen específica sobre un bitmap, usando instrucciones mov con valores de datos inmediatos. Esto es el método más rápido para dibujar una imagen con máscara: en mi máquina, dibujar sprites compilados es unas cinco veces más rápido que usando draw_sprite() con bitmaps normales. Los sprites compilados son grandes, por lo que si hay poca memoria, debería usar sprites RLE, y lo que puede hacer con ellos esta incluso más restringido que con sprites RLE, porque no soportan recorte. Si intenta dibujar uno fuera de los bordes de un bitmap, corromperá memoria y probablemente se cargará el sistema. Puede convertir bitmaps en sprites compilados en tiempo real, o puede crear complicadas estructuras de sprites compilados en los ficheros de datos con el grabber creando un objeto bitmap y marcando los botones 'Linear Compiled' o 'Mode-X Compiled'.
COMPILED_SPRITE *get_compiled_sprite(BITMAP *bitmap, int planar);
Crea un sprite compilado basándose en el bitmap especificado (que debe
ser un bitmap de memoria). Los sprites compilados son dependientes de los
dispositivos, por lo que debe especificar si compilarlo en un formato
lineal o planar. Pase FALSE como segundo parámetro si va a dibujar en
bitmaps de memoria o bitmaps de pantalla de modo 13h y SVGA, y pase TRUE
si va a dibujarlos en bitmaps de pantalla modo-X o modo Xtended.
void destroy_compiled_sprite(COMPILED_SPRITE *sprite);
Destruye una estructura de un sprite compilado previamente creado por
get_compiled_sprite().
void draw_compiled_sprite(BITMAP *bmp, COMPILED_SPRITE *sprite, int x, int y);
Dibuja un sprite compilado en un bitmap en la posición especificada. El
sprite debe ser compilado según el tipo correcto del bitmap (lineal o
planar). Esta función no soporta recorte.
Ayuda: si el no poder recortar sprites compilados es un problema, un buen truco es crear una superficie de trabajo (bitmap de memoria, pantalla virtual en modo-X o lo que sea) un poco más grande de lo que necesite, y usar el centro como su pantalla. De esta forma puede dibujar por afuera de los bordes sin ningún problema...