thoduv
01/04/2006, 16h35
Salut !
Voilà 3 jours que j'essaie de faire marcher cette fonction et je sens que je vais bientot sauter par la fenetre parce qu'il se trouve que ca marche toujours pas correctement...
J'explique à quoi ca doit servir :
On a une image bitmap -pointée par "bitmap"- en 256 couleurs dont on connait la taille : c'est un multiple de 8.
On veut afficher cette image sur un fond en tiles, pointé par "tiles".
En gros la fonction transforme le bitmap en tiles de 8*8
Visiblement la fonction marche, mais pas parfaitement, à savoir qu'il y a des décalages, et que la fonction recopie plus que la taille demandée ...
void bitmap_to_tiles_8(u8 *tiles, const u8 *bitmap, u16 size_x, u16 size_y)
{
u8 *ptiles = tiles;
const u8 *pbitmap = bitmap;
int i;
int t = 0;
for(t = 0; t < ((size_y * size_x) >> 6); t++)
{
for(i = 0; i < 8; i++)
{
zdsMem_dma3Copy(ptiles, pbitmap, 8); /* Copie DMA de 8 bits de pbitmap vers ptiles */
ptiles += 8;
pbitmap += size_x;
}
if((t % (size_x >> 3)) == 0) pbitmap -= size_x;
else pbitmap -= (size_x << 3);
pbitmap += 8;
//t++;
}
}
Si vous arrivez à la faire marcher parfaitement ou si vous en avez une autre qui marche ... :(
Help ! :(
Voilà 3 jours que j'essaie de faire marcher cette fonction et je sens que je vais bientot sauter par la fenetre parce qu'il se trouve que ca marche toujours pas correctement...
J'explique à quoi ca doit servir :
On a une image bitmap -pointée par "bitmap"- en 256 couleurs dont on connait la taille : c'est un multiple de 8.
On veut afficher cette image sur un fond en tiles, pointé par "tiles".
En gros la fonction transforme le bitmap en tiles de 8*8
Visiblement la fonction marche, mais pas parfaitement, à savoir qu'il y a des décalages, et que la fonction recopie plus que la taille demandée ...
void bitmap_to_tiles_8(u8 *tiles, const u8 *bitmap, u16 size_x, u16 size_y)
{
u8 *ptiles = tiles;
const u8 *pbitmap = bitmap;
int i;
int t = 0;
for(t = 0; t < ((size_y * size_x) >> 6); t++)
{
for(i = 0; i < 8; i++)
{
zdsMem_dma3Copy(ptiles, pbitmap, 8); /* Copie DMA de 8 bits de pbitmap vers ptiles */
ptiles += 8;
pbitmap += size_x;
}
if((t % (size_x >> 3)) == 0) pbitmap -= size_x;
else pbitmap -= (size_x << 3);
pbitmap += 8;
//t++;
}
}
Si vous arrivez à la faire marcher parfaitement ou si vous en avez une autre qui marche ... :(
Help ! :(