Il convient aussi de comprendre l'affichage en mode BITMAP 4. Le tableau explicatif ci dessous provient de DefUsr :
|
Bitmap 4 (320*200) |
Le plan de RAMA regroupe les points de couleur 2
Le plan de RAMB regroupe les points de couleur 1
Un pixel (x, y) a 0 sur la RAMA et a 0 sur la RAMB prend la couleur 0
Un pixel (x, y) a 0 sur la RAMA et a 1 sur la RAMB prend la couleur 1
Un pixel (x, y) a 1 sur la RAMA et a 0 sur la RAMB prend la couleur 2
Un pixel (x, y) a 1 sur la RAMA et a 1 sur la RAMB prend la couleur 3
|
|
En d'autres termes, l'affichage va se faire sur 2 plans qui vont s'additionner. Prennons par exemple
la deuxieme ligne de notre ball car elle contient les 4 couleurs possibles (voir schema de gauche). Nous avons donc la suite de couleurs suivantes : 0,1,2,3,2,1,1,0.
En respectant le tableau ci dessus, la RAMA devrait contenir 0,0,1,1,1,0,0,0 et la RAMB devrait
contenir 0,1,0,1,0,1,1,0
D'apres la structure ci-dessus et notre utilisation de l'espace cartouche, notre écran sera positionnné en mémoire à partir de l'adresse &H0000.
La RAMA se trouvera de &H0000 a &H1FFF et la RAMB se trouvera de &H2000 a &H3FFF.
Pour afficher la deuxieme ligne aux coordonnees (0,0), il suffiera d'ecrire &b01010110 (soit &H56) en &H2000 et &b00111000 (soit &H38) en &H0000.
Nous pouvons alors calculer les valeurs de la ball pour chacune des lignes pour chacun des plans (RAMA et RAMB).
En resumé, l'affichage d'une ball s'effectuera de la facon a droite.
- X contient l'offset de la ball dans la RAMA (entre $0000 et $2000)
- Nous décalerons de 40 a chaque ligne (Une ligne de 320 pixels contient 40 blocs de 8 pixels) pour calculer l'offset de la ligne suivante. La formule du décalage est ligne * 40
|
|
LEAY |
$2000,X |
* Positionnement du pointeur * pour la RAMB |
|
|
|
|
|
LDA |
#$3C |
* Ligne 0, RAMB |
|
STA |
,Y |
|
|
LDA |
#$00 |
* Ligne 0, RAMA |
|
STA |
,X |
|
|
|
|
|
|
LDA |
#$56 |
* Ligne 1, RAMB |
|
STA |
40,Y |
|
|
LDA |
#$38 |
* Ligne 1, RAMA |
|
STA |
40,X |
|
|
|
|
|
|
LDA |
#$AF |
* Ligne 2, RAMB |
|
STA |
80,Y |
|
|
LDA |
#$70 |
* Ligne 2, RAMA |
|
STA |
80,X |
|
|
|
|
|
|
... |
|
|
|
|