Ya que los bitmaps pueden ser usados de tantas maneras diferentes, la estructura bitmap es bastante complicada y contiene muchos datos. En muchas ocasiones, sin embargo, se encontrar� almacenando im�genes que s�lo son copiadas en la pantalla, en vez de pintar en ellas o usarlas como patrones de relleno, etc. Si este es el caso, ser�a mejor que usase estas im�genes en estructuras RLE_SPRITE o COMPILED_SPRITE en vez de bitmaps normales.
Los sprites RLE almacenan la imagen en un formato simple run-length, donde los pixels cero repetidos son sustituidos por un contador de longitud, y las series de pixels, que no son cero, son precedidos por un contador que da la longitud del recorrido s�lido. Los sprites RLE son normalmente m�s peque�os que los bitmaps, tanto por la compresi�n run length como porque evitan la mayor�a de sobrecarga de la estructura bitmap. Tambi�n son normalmente m�s r�pidos que bitmaps normales, porque en vez de tener que comparar cada pixel individual con cero para determinar si hay que dibujarlo, es posible saltarse una serie de ceros con una simple suma, o copiar una serie larga de pixels que no son cero con r�pidas instrucciones de cadena.
Sin embargo no es oro todo lo que reluce, y hay una falta de flexibilidad con los sprites RLE. No puede dibujar en ellos, y no puede invertirlos, rotarlos o modificar su tama�o. De hecho, lo �nico que puede hacer con ellos es copiarlos en un bitmap con la funci�n draw_rle_sprite(), que es equivalente a usar draw_sprite() con un bitmap normal. Puede convertir bitmaps en sprites RLE en tiempo real, o puede crear estructuras de sprites RLE en los ficheros de datos con el grabber, creando un objeto bitmap y pulsando el bot�n 'RLE'.
RLE_SPRITE *get_rle_sprite(BITMAP *bitmap);
Crea un sprite RLE bas�ndose en el bitmap especificado (que debe ser un
bitmap de memoria).
void destroy_rle_sprite(RLE_SPRITE *sprite);
Destruye una estructura de sprite RLE previamente creada por
get_rle_sprite().
void draw_rle_sprite(BITMAP *bmp, RLE_SPRITE *sprite, int x, int y);
Dibuja un sprite RLE en el bitmap en la posici�n especificada.
void draw_trans_rle_sprite(BITMAP *bmp, RLE_SPRITE *sprite, int x, int y);
Versi�n translucente de draw_rle_sprite(). Lea la descripci�n de
draw_trans_sprite(). Esto s�lo lo puede usar despu�s de haber creado una
tabla de colores (para modos de 256 colores) o un mapa de fundido (para
modos truecolor).
void draw_lit_rle_sprite(BITMAP *bmp, RLE_SPRITE *sprite, int x, y, color);
Versi�n entintada de draw_rle_sprite(). Lea la descripci�n de
draw_lit_sprite(). Esto s�lo lo puede usar despu�s de haber creado una
tabla de colores (para modos de 256 colores) o un mapa de fundido (para
modos truecolor).