CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

5/09 - Sprites : définition de caractères par l'utilisateurCoding Classeurs Weka

5/9 - Sprites : définition de caractères par l'utilisateur

Des caractères de la dimension d'un caractère normal (8x8 pixels) sont définissables par l'utilisateur, en BASIC ou en ASSEMBLEUR

1) En BASIC

... Les ordres SYMBOL et SYMBOL AFTER permettent d'y arriver.

SYMBOL AFTER [< entier>]

où est compris entre 0 et 255.
Cet ordre fixe le nombre de caractères redéfinissables à 255- . Par défaut, si aucun argument n'est précisé, seize caractères redéfinissables seront permis. Ils seront accessibles par CHR$(240) à CHR$(255).

Remarque :

Pour des raisons internes, la commande MEMORY interdit l'utilisation de SYMBOL AFTER (l'erreur « improper argument » sera générée si vous tentez d'utiliser SYMBOL AFTER après MEMORY).

SYMBOL < Numéro du caractère >,

Le numéro du caractère sera compris entre 0 et 255 - n, où n est l'argument de la commande SYMBOL AFTER.
Le caractère redéfini de numéro i sera accessible par CHR$(255-n + i) où n est l'argument de la commande SYMBOL AFTER.

A titre d'exemple, voici un petit programme écrit en BASIC qui vous permettra de définir vos propres caractères :

1000 REM Redéfinition de caractères
1010 CLS:DIM T(8, 8)
1020 FOR I = 1 TO 8
1030 PRINT " ....... "
1040 NEXT I
1050 X=1 : Y=1
1060 LOCATE X,Y
1070 A$ = INKEY$:IF A$ = " " THEN 1070
1080 CA = ASC(A$)
1090 IF A$ = "P" THEN T(Y, X) = 1:PRINT "*"
1100 IF A$ = "V" THEN T(Y, X) = 0:PRINT"."
1110 IF CA = 243 AND X1120 IF CA = 242 AND X>1 THEN X = X-1
1130 IF CA = 240 AND Y>1 THEN Y = Y-1
1140 IF CA = 241 AND Y1150 IF CA<>  13 THEN 1060 'Boucle de saisie
1160 LOCATE 1,15 : PRINT "Données de la commande SYMBOL : ":PRINT
1170 FOR I=1 TO 8
1180   CA = 0
1190    FOR J = 1 TO 8
1200       CA = CA + (2*(8-J))*T(l, J)
1210    NEXT J
1220    PRINT CA;
1230 NEXT I

Les lignes 1010 à 1040 affichent la grille de redéfinition du caractère.
Les lignes 1050 à 11 50 permettent de saisir le caractère par les commandes suivantes :

  • les touches-flèches permettent de se déplacer dans la grille,
  • la touche P permet d'allumer un pixel,
  • la touche V permet d'éteindre un pixel.

Les lignes 1160 à 1230 affichent les données correspondant au caractère saisi qu'il faudra entrer dans la commande SYMBOL.

2) En ASSEMBLEUR

... Vous pouvez redéfinir des caractères grâce aux routines du FIRMWARE TXT SET MATRIX et TXT SET M TABLE.

TXT SET M TABLE est l'équivalent de SYMBOL AFTER.
Le registre pair DE doit contenir le premier caractère de la table (entre 0 et 255).

Le registre pair HL doit contenir l'adresse de départ de la table de redéfinition des caractères.
L'appel à TXT SET M TABLE se fait de la manière suivante :

LD       DE, < Numéro du caractère>
LD       HL, < Adresse de la table>
CALL     #BBAB

TXT SET MATRIX est l'équivalent de SYMBOL.
Le registre A doit contenir le numéro du caractère à redéfinir. Le registre pair HL doit contenir l'adresse de la matrice où se trouvent les octets de redéfinition.

L'appel à TXT SET MATRIX se fait de la manière suivante :

LD       A, < Numéro du caractère >
LD       HL,< Adresse de la matrice de redéfinition >
CALL   #BBA8

L'adresse entrée dans HL doit pointer sur l'adresse mémoire du premier octet de redéfinition du caractère entré dans le registre A.

Page précédente : 5/08 - Caractères graphiques et signes spéciaux

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 182 millisecondes et consultée 997 fois

L'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.