10-2
Création des graphismes
10-2-1 Les
écrans de jeu
Les écrans
de jeu sont au nombre de 4 (l’intro + les 3 circuits). L’intro étant basée sur
les 3 autres, il a fallut créer les circuits avant. Ce jeu est inspiré d’un
autre en BASIC, que l’on trouve dans le livre suivant :
Toutefois
l’original ne fonctionnait qu’en mode texte et n’était pas aussi poussé
techniquement. Mais les circuits qui le composent ont été repris pour ce jeu.
Ainsi, les écrans sont maintenant entièrement graphiques. Cependant, et on se
souvient de la structure de la mémoire vidéo, il était préférable de continuer
à aligner les divers scores (tours, temps, vies) sur le texte CPC. Le meilleurs
moyen de construire les circuits était donc de passer d’abord par un écran
texte :
L’image a
ensuite été capturée sur émulateur puis retravaillée sous Paint. Le circuit a
été légèrement déplacé puis redessiné puis un titre et des cadres ont été
rajoutés pour donner le résultat suivant :
Une fois
toutes les images créées, il a fallut les sauvegarder au format de la mémoire
vidéo CPC. C’est le fameux format binaire qui donne des images de 17ko si
reconnaissables. Il existe 2 bons convertisseurs de format pour le CPC :
La même
palette a été utilisée pour toutes les images afin de simplifier les choses
(surtout au niveau du sprite de la voiture). Les couleurs sont les
suivantes :
N° |
Couleur |
Valeur
BASIC |
0 |
|
15 |
1 |
|
9 |
2 |
|
26 |
3 |
|
6 |
Cette
palette comprend bien 4 couleurs puisqu’on se trouve en mode 1. Celle-ci sera
définie tout au début du programme et sera active tout le temps du jeu.
10-2-2 Les
sprites
Les
sprites sont de 2 types :
Nous
verrons le cas des chiffres avec l’étude du chronomètre, donc attardons nous
sur la voiture et l’explosion.
La voiture possède 8 angles possibles, il fallait donc au moins un sprite par angle. Maintenant on se rappelle bien le codage des octets de mémoire vidéo (sinon reportez-vous sur la partie 9 traitant de la vidéo). Vu que la voiture peut-être n’importe où à l’écran, elle ne s’aligne pas sur les octets ou sur le texte. Il faut donc prévoir 4 positions de sprites selon que l’on est à octet + 0, + 1, + 2 ou + 3 pixels. Ainsi les huit angles de voiture sont encore multipliés par 4. Il en va de même avec l’explosion qui suit les coordonnées de la voiture.
Ensuite la
taille des sprites est uniformisée pour en simplifier le traitement, même si
certains prennent moins. Ici la taille affichée de la voiture et de l’explosion
sont de 10x10 pixels, mais leur taille réelle est de 16x10 pixels, soient 4x10
octets.
Les
sprites ont été convertis en hexadécimal et intégrés au programme assembleur.
Pour ce faire, on peut utiliser ConvImgCpc (sous Win2000 et WinXP seulement).
Les sprites doivent alors être placés de haut en bas sur une image 320x200, enregistrée
dans un format standard :
Sous
ConvImgCpc, il faut ensuite sélectionner Mode 1, pas de tramage, les couleurs
dans l’ordre indiqué plus haut, puis lire l’image. Ensuite il faut cliquer sur
calculer, puis sélectionner l’option sprite et faire sauvegarder au format
assembleur. La voiture en haut à gauche (position octet + 0), donne par exemple
le résultat suivant (avec quelques retouches au niveau de la syntaxe) :
VOITURE DB &00,&00,&00,&00
DB
&70,&00,&00,&00
DB &78,&30,&80,&00
DB
&0B,&0D,&40,&00
DB
&0F,&CF,&48,&00
DB
&0F,&CF,&48,&00
DB
&0B,&0D,&40,&00
DB &78,&30,&80,&00
DB &70,&00,&00,&00
DB &00,&00,&00,&00
On a bien
4x10 octets, même si dans ce cas il n’y a que 3x10 octets d’utilisés.