Structure de l'écran, passer à la ligne suivanteAfficher 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, nousn'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 vousdé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 :) Roudoudou CPCrulez[Content Management System] v8.732-desktop Page créée en 278 millisecondes et consultée 13 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|