De la meme facon, toutes les lignes de toutes les balls subieront des optimisations similaires
dans la mesure du possible. Il reste maintenant a définir quelle boule afficher et faire le branchement vers
la routine correspondante.
De facon à eviter les calculs, le fichier binaire qui contiendra les offsets de chacune des balls
de chacunes des images contiendra aussi le numéro de ball à afficher. Nos offset dans notre fichier oscillent au
maximum entre &H0000 et &H1FFF, soit en binaire &b0001111111111111. Nous decouvrons alors que nos avons 3 bits
de libre a gauche de ce mot (rappel : 1 mot = 2 octets). Alors, plutot que d'utiliser un octet supplémentaire
pour définir le numéro d'image (qui oscille entre 0 et 7), autant utiliser ces 3 bits qui nous permettent de plus
des valeurs entre 0 et 7 ! Cela nous permet d'optimiser aussi le fichier binaire, et donc de sauver de la place
en mémoire, ce qui permettra plus d'images, ou un temps de chargement plus court.
Le travail sera donc ici d'extracter d'un mot le numero de ball ainsi que son offset, ce qui nous
permettra au final de l'afficher a la place souhaitée au pixel pret. La routine consistera alors en masque et en
décalages logiques.
|
* D contient une information offset+num ball |
|
PSHS |
A |
|
|
ANDA |
#$1F |
|
|
TFR |
D,Y |
* Y contient l'offset uniquement |
|
PULS |
A |
|
|
ASRA |
|
|
|
ASRA |
|
|
|
ASRA |
|
|
|
ASRA |
|
|
|
ASRA |
|
* A est decale a droite de 5 bits |
|
ANDA |
#$07 |
* A contient le numero de ball |
|