Hola,soy nuevo en el foro y en allegro ,me meti a aprender allegro de un manual  de Daniel Acuña y no esta bien explicado por ejemplo utiliza la funcion BLIT pero no la explica y la verdad me quede atorado ahi sin poder avanzar alguien me podria explicar que es lo que hace, y sacarme unas dudas que tengo 
 
#include <allegro.h>
#include <iostream.h>
 
int iniciar ()
{
    allegro_init();
    install_keyboard();
    set_color_depth(16);
    if(set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0) < 0 )
    {
       cout<<"Error al iniciar modo grafico"<<endl;
       allegro_exit();
       exit(-1);
    }
}
 
void terminar()
{
     allegro_exit();
}
 
void realizar_juego()
{
     BITMAP *nave;
     BITMAP *buffer;
     int x,y, x_anterior,y_anterior;
     
     nave=load_bitmap("C:/nave.bmp",0);
 
     if(nave==NULL)terminar();
     
     buffer=create_bitmap(nave->w,nave->h);   //Que es lo que hace el create_bitmap?
     clear(buffer);
     if(buffer==NULL)terminar();
     
     x=SCREEN_W/2;
     y=SCREEN_H/2;
     
     
    while(!key[KEY_ESC])
{
    
    if(key[KEY_UP])
    {
        y--;
    }
    
    if(key[KEY_DOWN])
    {
        y++;
    }
    
    if(key[KEY_RIGHT])
    {
        x++;
    }
    
    if(key[KEY_LEFT])
    {
        x--;
    }
    
    if(x<0) x=x_anterior;
    if(x>SCREEN_W-nave->w) x=x_anterior;
    if(y<0)y=y_anterior;
    if(y>SCREEN_H-nave->h) y=y_anterior;
 
//Aca viene el problemon que no se que hace esto 
    if ((x_anterior !=x) || (y_anterior!=y))  //aca esta diciendo que si X_anterior no es igual a X que se cumpla lo siguiente NO?
    {
       blit(buffer,screen,0,0,x_anterior,y_anterior,buffer->w,buffer->h); // aca ya estoy perdido xq no se que hace esta funcion
       draw_sprite(screen,nave,x,y); //aca dibuja el sprite en pantalla verdad?
    }
    x_anterior=x;
    y_anterior=y;
}
  
}
 
int main()
{
    iniciar();  
    realizar_juego();
    terminar();
}
END_OF_MAIN()
 
 
Y tambien cuando lo ejecuto que muevo al sprite x pantalla tiene el fondo de color azul (el sprite no la pantalla ) como puedo quitarle o acerle transparente el fonde del sprite con Allegro, y tambien tiene un parpadeo cuando muevo al sprite en pantalla ,alguien me podria explicar por favor como solucionar estas cosas? o  me podrian decir algun manual que este bien explicado para poder avanzar en Allegro??
Saludos.