Revenir au plan du site
Structure de l'écran, passer à la ligne suivante
Afficher un point, c'est bien, calculer son adresse, c'est très bien mais si on veut tracer des lignes verticales, afficher un caractère ou plus généralement un sprite, nous
n'allons pas calculer l'adresse de chaque ligne à chaque fois depuis zéro. Comme on le devine dans
[ L'article sur la structure écran ],
il est facile et rapide de calculer l'adresse de l'octet situé juste en dessous.
Pour rappel:
ligne 0 (bloc 0 ligne 0) : adresse=#C000
ligne 1 (bloc 1 ligne 0) : adresse=#C800 ; +2048
ligne 2 (bloc 2 ligne 0) : adresse=#D000 ; +2048
ligne 3 (bloc 3 ligne 0) : adresse=#D800 ; +2048
ligne 4 (bloc 4 ligne 0) : adresse=#E000 ; +2048
ligne 5 (bloc 5 ligne 0) : adresse=#E800 ; +2048
ligne 6 (bloc 6 ligne 0) : adresse=#F000 ; +2048
ligne 7 (bloc 7 ligne 0) : adresse=#F800 ; +2048
ligne 8 (bloc 0 ligne 1) : adresse=#C050 ; -16384 + largeur écran (80 ou #50)
ligne 9 (bloc 1 ligne 1) : adresse=#C850 ; +2048
...
|
Avec un écran type composé de blocs de 8 lignes (quelle que soit sa largeur ou sa hauteur, les blocs sont composés de 8 lignes. Si ce n'est pas le cas, c'est que vous n'avez pas besoin de mes cours et que vous
êtes ici par curiosité). En conséquence, le passage d'une ligne à l'autre se fait 7 fois sur 8 en ajoutant #800 à l'adresse en cours. Ce qui s'optimise parfois à ajouter #8 au poids fort de l'adresse en cours.
Et 1 passage de ligne sur 8, il faut rétro-pédaler pour rester dans la page de 16k comme le fait notre CRTC en temps normal (bis repetita, si vous connaissez le débordement de page, vous êtes là par curiosité).
Donc on retranche les #3800 (#800x7) qu'on vient d'ajouter et on ajoute la largeur d'une ligne (en octets) pour passer à la ligne du dessus, ici 80 octets.
Souvent, la méthode consiste à systématiquement ajouter #800, donc on ajoute #800x8=#4000. Il faut alors retrancher #4000 avant d'ajouter la largeur. Vous faites comme vous voulez. Si vous savez que vous
démarrez sur la première ligne d'un bloc, vous n'êtes pas obligé d'ajouter 8 fois #800, ça s'optimise.
Ceci étant dit, si vous ne savez pas où vous démarrez, alors il faut tester le débordement de page :
- quand on travaille dans la page située en #C000, on testera l'overflow
- quand on travaille partout, on testera avec un masque sur l'adresse, #3800 ou plus simplement #38 sur le poids fort
Pourquoi #3800 ? Et bien parce que cela correspond à #800 x 7 et que ce sont dans ces bits que le numéro de bloc est stocké. Qu'on démarre en #0000 ou en #4000, les autres bits ne font pas partie de l'info bloc.
Vous pouvez retrouver un jeu de routines sur la page dédiée aux
[ passages de ligne ].
Gardez dans un coin de votre tête que vous n'en avez pas fini avec la structure écran et qu'il faudra aborder d'autres notions lors de l'apprentissage des
[ scrollings ] mais chaque chose en son temps, apprenez à apprivoiser le passage de ligne d'abord :)