Erf j'ai regarde un peut les sources:
void XChar_XOR(unsigned short x,register unsigned char *map,short hau,unsigned char offset,unsigned char *Plane)
{
Plane += offset; //adresse de la premiere ligne du sprite
Plane += x>>3; //adresse de la premiere colonne du sprite
x&=7;
while(hau)
{
*Plane ^= (*map)>>x; //avant la séparation du sprite entre 2 Bytes
*(Plane+1) ^= (*map)<<(8-x); //après la séparation
Plane +=30;
map++;
hau--;
}
}
Tu devrais utiliser des long ou des short ce serait plus rapide.Le mieux etant d'utiliser des short pour eviter d'avoir trop de shift (quand tu fais un << ou un >> ca correspond a un deplacement de bits que l'on appele shift.
Le mieux est donc pour obtenir la rapidite maximale:
tester l'abscisse.. si le reste est superieur a 8 alors tu incremente le pointeur de 2 (pointeur en char) et tu fais une routine avec <<
si c'est inferieur a 8 tu fais une autre routine avec >>.
si c'est egale a 0 alors tu fais une routine sans rien car aussi bisard que ce soit, si tu fais un << ou >> avec 0 comme nombre de shift c'est enormement lent
Il faut donc faire 3 boucle differentes.. cela peut te semble exagere, mais le gain de vitesse sera consequent...
Si tu veux il y a des sources ici qui sont pas tres bien programme mais ca peu t'aider: