La police de caractères
La police de caractères est gérée par le circuit ANTIC. (cf. le circuit ANTIC). En effet, si vous déclarez une ligne en mode texte, il suffit d'indiquer le caractère à afficher pour que le circuit dessine automatiquement le dessin du caractère correspondant à l'écran.
Exemple : POKE 40000, 33 va afficher un A en haut à gauche de l'écran si vous êtes dans le graphique 0.
Ce qui est très intéressant, c'est que vous n'avez donc pas à vous occuper du dessin de la lettre à afficher. De plus, envoyer le code du caractère plutôt que son dessin ne consomme pas trop de mémoire vidéo (40*24=960 octets, de nos jours, avec les systèmes fenêtrés proposant plusieurs polices, on en est bien loin) et cela n'occupe pas trop de temps CPU pour l'afficher.
Cependant, même si ce n'est pas nous qui gérons le dessin, il faut quand même que le circuit ANTIC sache où trouver l'ensemble des dessins pour tous les caractères affichables. C'est le rôle du vecteur 756. Ce vecteur pointe sur une table qui se trouve en ROM. Cette table contient tous les dessins des caractères. Le format est le suivant: un caractère occupe 8x8 pixels. Le dessin va donc occuper 8 octets en mémoire. Il y a 128 caractères, cette table va donc occuper 128x8=1024 octets.
Ce qui est intéressant, c'est que le vecteur est modifiable. On peut alors se créer sa propre police de caractères.
Exemple de programme recopiant la ROM en RAM:
Pour redéfinir un caractère en RAM, rien de plus simple: il suffit de multiplier son code par 8
Exemple le A vaut 33, sa définition en RAM commencera à CHRAM+33*8.
Petit exercice:
Inclure des hélices à la lettre A en reprenant le code redefcar.lst
Petite aide : POKE CHRAM+33*8,255 qu'il faudra mettre après la copie de ROM en RAM...
Bien entendu, pour un jeu, il vaut mieux redéfinir les caractères graphiques ou tous autres caractères que ceux liés à l'alphabet ou des chiffres !!!
Avec ce principe de fonctionnement, on peut imaginer faire du graphisme en mode texte, enfin ne poussez pas trop quand même, cela doit rester simple...sinon en change de mode (de texte on passe à graphique !).
Petit rappel:
Les lettres en majuscule, les chiffres et les ponctuations vont de 0 à 63.
Les lettres graphiques vont de 64 à 95.
Les lettres en minuscule et le restant de 96 à 127.
Remarque: dans les modes textes couleurs (exemple GRAPHIC 2), la lettre A est répétée en majuscule dans la zone habituellement en majuscule (normal jusque là !), mais aussi dans celle habituellement en minuscule. Par contre, à l'affichage, il y a un changement de couleur...
Autre remarque: comme nous connaissons la zone mémoire où sont définis les caractères (que ce soit en ROM ou en RAM), rien ne nous empêche en mode graphique de pointer sur cette zone pour dessiner nous même les lettres.