j'ai un nouveau petit probleme, voila, normalement la fonction suivante doit calculer le nombre de ligne que prend une chaîne de caractere en font 4x6 quant on l'affiche, mais ca marche pas du tout , j'ai beau chercher ds tous les sens, ca marche pas ... j'ai l'impression que ca vient de mon cmp.b #156,%d0 blt ... car dans mon tableau j'ai les numero de tous les caractere de ma chaîne...
quand on a :
cmp X,Y
blt label
ca correspond a : si Y<X , on blt non ?
| Assembly Source File
| Created 05/08/2004; 16:56:45
.text
xdef getnblignes_fsmall
| Input :
| a0 = addresse de la chaîne
| a1 = pointeur vers un tableau unsigned char resultant d'un malloc(50)
| a2 = adresse du sprite de la 1ere lettre ds la rom
getnblignes_fsmall:
movem.l %d0-%d3/%a3,-(%a7)
moveq.l #0 ,%d0 |=x
moveq.l #0 ,%d3 |=compteur
getnblines_boucle:
tst.b 1(%a0) |si on arrive a la fin de la chaîne, on part
bne getnblines_pas_fin
movem.l (%a7)+,%d0-%d3/%a3
rts
getnblines_pas_fin:
add.b #1,%d3 |compteur++
moveq.l #0 ,%d1 |a3=a2+6*a0
move.b (%a0)+,%d1 |*(a3+1)==sprite du caractere
move.w %d1 ,%d2 |
lsl.w #3 ,%d1 |
lsl.w #1 ,%d2 |
sub.w %d2 ,%d1 |
move.l %d1 ,%a3 |
adda.l %a2 ,%a3 |
add.b (%a3) ,%d0 |x+=taille du caractere
cmpi.b #156 ,%d0 | si x > 156 ca fait une ligne
blt getnblines_boucle
moveq.l #0 ,%d0 | on remet x a 0
|sub.b #1 ,%d3 |dans notre tableau on stocke le numero
move.b %d3, (%a1)+ |du dernier caractere de la ligne
bra getnblines_boucle
pour info, si vous avez une ams 2.09 , mettez dans a2 (void*)0x207C78 et le prototype pour un fnc inline est :
void getnblignes_fsmall(void * string asm("a0"),void *dest asm("a1"),void * table asm("a2"))
et je veux pas utiliser FontCharWidth ni DrawStrWidthP