GT Turbo (./20) :
move.l (a6)+,d5 ; 1 point dans d5 ; 12 cycles
move.w d5,d6 ; y dans d6 ; 4 cycles
swap d5 ; x dans d5 ; 4 cycles
ce qui nous fait 20 cycles pour récupéré ton X et ton Y alors que :
move.w (a6)+,d5
move.w (a6)+,d6
fait 2 * 8 = 16 cycles ce qui fait un code plus court et plus rapide. ( Fait juste gaffe je sais pas si d5 et d6 sont dans le bon ordre (Sinon ton X et on Y seront permutés))
Ça parait tellement évident après coup ^^
GT Turbo (./20) :
on cmp.W #0,D1 est inutile et oui !! Car toute operation mathematique normale positionne les flags conditions (En gros fait un test en 'douce') donc tous tes sub avant font le test en meme apres la soustraction directement donc tu peux le viré 
Bien vu, je vais garder ça à l'esprit pour la suite
GT Turbo (./20) :
Il y a des grosses optims possibles mais comme écrit avant ca sera pour plus tard a moins que tu veuilles quelque explications.
J'imagine que sur un petit programme comme celui ci le gain ne sera pas énorme mais je suis toujours preneur pour de nouvelles techniques.
Autant essayer d'optimiser au fur et à mesure au lieu d'y revenir après coup pour optimiser.