Pages : [01] [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21]


Comme nous en avons déja parlé précédement, la mémoire écran est composée de blocs de 8 pixels (soit en octets). Cela veut dire par exemple que :

  • Le point de coordonnées (0,0) se trouve à la position mémoire &H0000 (RAMA) et &H2000 (RAMB)
  • Le point de coordonnées (8,0) se trouve à la position mémoire &H0001 (RAMA) et &H2001 (RAMB)
  • Le point de coordonnées (0,1) se trouve à la position mémoire &H0028 (RAMA, &H28 = 40 en decimal) et &H2028 (RAMB)
  • Le point de coordonnées (0,2) se trouve à la position mémoire &H0029 (RAMA) et &H2029 (RAMB)
  • ...

Mais qu'en est-il alors du point (1,0) ? Et du point (2,0) ? ... etc ...

De part la structure de la mémoire, nous ne pourrons pas adresser un offset (position de la ball) autrement que par bloc de 8. Cela va nous poser un petit problàme car cela aura pour effet de déplacer nos balls de 8 points par 8 points horizontalement, au lieu de point par point. Or, notre routine d'affichage précédement établie affiche la ball ligne par ligne en traitant 8 pixels d'un coup, et non pas un par un. D'ailleur, un traitement pixel par pixel serait d'une lenteur incroyable. Il va donc falloir trouver une solution si l'on souhaite que l'animation soit fluide au niveau du déplacement de chacune des balls.

L'astuce consistera ici a définir autant de ball que de déplacement horizontaux possibles. Une ball peut se deplacer de 8 pixels avant de changer de bloc. Nous aurons donc 8 dessins des 8 balls possibles, suivant leur déplacement. Avec ces 8 balls possibles, nous aurons aussi les 8 masques adéquates. Ce que nous avons réalisé jusqu'a maintenant n'est que l'affichage de la ball numero 0 (celle dont le déplacement est de 0). Il reste donc 7 routines d'affichage à écrire pour les 7 restantes. Loin d'etre scientifique, et assez fastidieuse a mettre en place, cette méthode garantira une excellente fluidité. La rapidité d'exécution a un prix.

Cependant, puisque une ball fait 8 pixels de large, si on la déplace d'un pixel vers la droite, elle fera alors 9 pixels de large. Cette valeur n'est pas acceptable puisque nous travaillons sur des blocs de 8 pixels. Les balls 1,2,3,4,5,6 et 7 auront donc une largeur de 16 pixels pour une hauteur toujours de 7 pixels.


© PULS 2004-2019