je sais que ca fait genre, "voila mon code corrigez le" mais c'est mon premier progr asm que j'ai fait tout seul et je ne sais pas mais vraiment pas d'où peut venir l'erreur surtout que je ne sais pas comment verifier mes resultats, c une fonction inline
on a d1=x,y=d2,void *sprite=a0,void* buffer =a1
move.w %d1,%d0 ; lsr.w #3,%d0 ;a priori d0=(short)x/8 adda.w %d0,%a1 ;on ajoute x/8 a l'adresse du buffer sub.w %d1,%d0 ;a priori d0=x%8 sub.w #32,%d0 ; d0=32-x%8 move.w %d2,%d1 ; lsl.w #5,%d2 ;on multiplie par 32 lsl.w #1,%d1 ;on multiplie par 2 sub.w %d2,%d1 ;a priori d1=y*30 adda.w %d1,%a1 ;on ajoute y*30 a l'adresse du buffer move.b (%a0)+,%d1 ; le premier byte du srpite ds %d1 move.l %d1,%d1 ; est ce que c'est comme ca pour convertir en long ?????? lsl.l %d0,%d1 ; on decale de 32-x%8 donc normalement c'est comme si on le mettait a l'adresse buffer +y*30+ x/8 +x%8, cad la ou on veut move.l %d1,(%a1) ; on l'affiche move.b (%a0)+,%d1 ; on continue encore 7 fois move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*1(%a1) move.b (%a0)+,%d1 move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*2(%a1) move.b (%a0)+,%d1 move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*3(%a1) move.b (%a0)+,%d1 move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*4(%a1) move.b (%a0)+,%d1 move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*5(%a1) move.b (%a0)+,%d1 move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*6(%a1) move.b (%a0)+,%d1 move.l %d1,%d1 lsl.l %d0,%d1 move.l %d1,30*7(%a1)