Voici l'histoire. Hier soir, je bossais sur mon jeu. Je débugue toujours mes progs on-calc, donc après
une enième recompilation, j'envoie b_bobble dans ma calto.
Je lance, tire quelques bulles, mais il se trouvâ () qu'un petit oubli de ma part dans la fonction de
supression des bulles fit tourner une boucle à l'infini (c'est pas très exact mais bon). En gros, cette
in: movem.l (a7)+,d1/a0-a3 rts ; *************************************************************************************
boucle décale de 1 octet vers le la "gauche" chaque octet d'une zone de mémoire. Si je ne suis pas clair, voici la routine :; ************************************************************************************* ; *** Retire une bulle d'une liste de... bulles *** ; ************************************************************************************* ; *** Entrées : ; *** a0 : adresse de la liste de bulles ; *** d0.w : numéro de la bulle à retirer ; ************************************************************************************* RetirerBulle: movem.l d1/a0-a3,-(a7) subq.w #1,(a0) beq.s RetirerBulle_Fin move.w (a0),d1 lea 2(a0,d0.w),a0 lea 64(a0),a1 lea 128(a0),a2 lea 192(a0),a3 sub.w d0,d1 beq.s RetirerBulle_Fin ; C'est cette ligne que j'avais ommise. Sans elle, lorsque la bulle à retirer est la première, alors qu'il n'y a que deux bulles dans la liste, la boucle tourne 65535 fois... Ces conditions ont été réunies hier soir :( subq.w #1,d1 RetirerBulle_Loop: move.b 1(a0),(a0)+ move.b 1(a1),(a1)+ move.b 1(a2),(a2)+ move.b 1(a3),(a3)+ dbf d1,RetirerBulle_Loop RetirerBulle_F
Evidemment, mon "PDA" a planté. C'est ici que ça devient intéressant...
[edit]La suite au prochain post, j'"allège" un peu la description sinon ça va être désagréable à lire[/edit]
[edit]Edité par Thibaut le 09-08-2001 à 19:53:01[/edit]