6Fermer8
jackiechanLe 27/08/2003 à 17:38
Bon, j'ai pas tout regardé, mais il y a des petits détails optimisables : par exemple, dès le début, tu testes la visibilité du sprite ; ce serait plus malin de faire ces tests plus tard, par exemple, pour le test y<=-16 il vaut mieux le faire après avoir remarqué que y est négatif. Comme en général les sprites sont affichés à des coordonnées positives, ça fera que ce test ne sera fait que dans quelques cas minoritaires. Et c'est comme ça pour chacun de tes tests de visibilité du début.
Ensuite, ta multiplication par 30 peut être remplacée par des décalages + additions qui seraient plus rapides.
Sinon, j'ai vu pas mal d'instructions (ou suites d'instructions) optimisables, comme adda.l #30,a0 en adda.w #30,a0, voire en lea.l 30(a0),a0. lsl.w #1,d1 en add.w d1,d1. move.l #$FFFF0000,d0 en moveq.l #-1,d3 ; clr.w d3 (je n'ai pas vérifié, mais c'est certainement plus rapide). Et quelques autres...

Ton format de sprite n'est pas pratique, tu devrais mieux adopter un format entrelacé.

Enfin, tu devrais passer tes arguments directement dans les registres plutôt que d'utiliser la pile.

Sinon, une question, pourquoi tu effaces la partie haute de d1 au début ?