bidooLe 24/07/2004 à 20:46
ca y'est j'ai reussi, pour tout les newbies en asm comme moi (doit pas y'en avoir bcoup) , voila mon code :
void sprite8_w(short decalage asm("%d0"),void *sprite asm("a0"),void *buffer asm("a1"))
{
asm("
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*1(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*2(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*3(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*4(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*5(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*6(%a1)
clr.w %d1
move.b (%a0)+,%d1
lsl.w %d0,%d1
move.w %d1,30*7(%a1)");
}
void sprite8_l(short decalage asm("%d0"),void *sprite asm("a0"),void *buffer asm("a1"))
{
asm(" clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*1(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*2(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*3(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*4(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*5(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*6(%a1)
clr.l %d1
move.b (%a0)+,%d1
lsl.l %d0,%d1
move.l %d1,30*7(%a1)");
}
void sprite8_b(void *sprite asm("a0"),void *buffer asm("a1"))
{
asm("move.b (%a0)+,(%a1)
move.b (%a0)+,30*1(%a1)
move.b (%a0)+,30*2(%a1)
move.b (%a0)+,30*3(%a1)
move.b (%a0)+,30*4(%a1)
move.b (%a0)+,30*5(%a1)
move.b (%a0)+,30*6(%a1)
move.b (%a0)+,30*7(%a1)");
}
void sprite8(short x, short y,void *sprite, void * buffer)
{
short xo=(x>>3),xb=x%8;
if(xo%2!=0 && xb!=0)xo--,xb+=8;
void *offset = buffer+(y<<5)-(y<<1)+xo;
if(xb>0 && xb<8)
{
sprite8_w(8-xb,sprite,offset);
return;
}
if(xb>8)
{
sprite8_l(24-xb,sprite,offset);return;
}
sprite8_b(sprite,offset);
}
mais maintenant faut que je la fasse en or parce que sa remplace tout zone de l'ecran si on utilise sprite8_w ou l
en tout cas merci infiniment sasume et kevin