206Fermer208
PolluxLe 31/10/2003 à 10:50
./204> C'est vraiment pas malin... Pourquoi? L'allocateur de registre de la fonction qui appelle DrawSquareUp a deux possibilités :

- ne pas utiliser les registres An : ouille ouille ouille côté performance...
- ou bien les utiliser, mais alors il faut les restaurer au dessus de l'appel de la fonction :

movem.l a2-a6,-(a7)
move.l Plane0(pc),a0
move.l Plane1(pc),a1
lea sprite1(pc),a2
lea sprite2(pc),a3
lea sprite3(pc),a4
lea sprite4(pc),a5
lea sprite5(pc),a6
jsr DrawSquareUp
movem.l (a7)+,a2-a6
...

DrawSquareUp:
  movem.l *,-(a7)
  ...
  movem.l (a7)+,*
  rts


Alors que ce serait tellement plus simple de faire :
move.l Plane0(pc),a0
move.l Plane1(pc),a1
jsr DrawSquareUp
...

DrawSquareUp:
  movem.l */a2-a6,-(a7)
  lea sprite1(pc),a2
  lea sprite2(pc),a3
  lea sprite3(pc),a4
  lea sprite4(pc),a5
  lea sprite5(pc),a6
  ...
  movem.l (a7)+,*/a2-a6
  rts


En gros, même si le compilo ne fait pas la bêtise de réserver a2-a6 et de ne pas les utiliser, tu économises quand même deux movem, soit 8 octets et pas mal de cycles. Donc non, ton idée n'est pas bonne, surtout que si le compilo réserve a2-a6, tu vas avoir du code à proprement parler horrible.


A part ça, le screenshot a l'air pas mal, quoique je me méfierais du fond foncé qui risque de baver horriblement on-calc et qui empêchera peut-être de distinguer les balles dans certains cas.