★ APPLICATIONS ★ CREATION GRAPHIQUE ★ CHERRY-PAINT (CPC REVUE N°5 -> 9) ★ |
CHERRY PAINT (CPC Revue n°5) | CHERRY PAINT (CPC Revue n°6) | CHERRY PAINT (CPC Revue n°7) | CHERRY PAINT (CPC Revue n°8) | CHERRY PAINT (CPC Revue n°9) |
Dans ce second article consacré à Cherry-Paint, nous allons voir comment animer des icônes sur l'écran de l'AMSTRAD, sans qu'il n'y ait aucun clignotement, mais tout d'abord, il va falloir créer ces icônes...Pour animer une forme sur l'écran, il y a plusieurs possibilités : la première solution consiste à redéfinir des caractères et à les afficher à l'endroit désiré à l'aide d'un langage tel que Basic ou Pascal. Vous avez certainement déjà expérimenté cette méthode... et constaté que c'était épouvantablement lent et saccadé ! La deuxième solution consiste à écrire les routines d'animation en assembleur : là, pas de problèmes, ça va vite. Pour les routines en assembleur, il y a de nouveau deux possibilités pour dessiner une forme : la première de ces solutions, aui est aussi la plus commune, est de faire un OU exclusif (XOR) entre le fond et la forme à animer. Pour effacer cette forme, il suffira de faire un deuxième masquage en XOR, donc pour déplacer la forme, il suffit de deux masquages ; le premier masquage en XOR à l'endroit de départ pour effacer la forme, le deuxième masquage en XOR à l'endroit d'arrivée pour réafficher cette forme. Cette méthode est très rapide mais n'est pas très belle : tant que la forme se déplace sur un fond uni, tout va bien, mais dès qu'elle passe sur un objet, on ne voit plus rien (c'est le même effet, lorsque dans Sorcery, le sorcier passe sur une porte, ou dans Jane sur Apple). Dans l'autre solution, il faut d'abord sauvegarder le fond à l'endroit où on va placer la forme, dans un bufffer, puis on pourra masquer le fond en OR avec la forme : on obtient alors une forme noire qui se superpose à l'image. Pour déplacer la forme, il faudra donc d'abord recharger l'ancien fond ; pour cette solution, on aura donc trois opérations au lieu de deux, mais c'est beaucoup plus joli I Pour le programme Cherry-Paint, cette deuxième solution n'est pas tout à fait satisfaisante non plus. Premièrement, toutes les icônes devraient être noires, deuxièmement, si une icône se déplaçait sur un fond noir, on ne pourrait plus la voir ! Pour pallier à ces inconvénients, il faut faire un masquage AND pour forcer une zone à zéro avant de faire le masquage OR. On s'arrangera pour que le masque AND soit légèrement plus grand que le masque OR : de cette manière, on crée un liseret blanc autour des icônes. En définitive, pour déplacer une forme, il faudra donc effectuer quatre opérations :
Si on utilise ce procédé tel quel, l'animation des icônes ne sera pas de bonne qualité. Comme on effectue les quatre opérations précédentes à n'importe quel moment, on risque fort bien d'effacer la forme juste avant qu'elle ne s'affiche sur le moniteur ; on aura, par conséquent, un clignotement incessant I Pour éliminer un clignotement, il faut afficher la forme pendant que le spot vidéo remonte de la dernière ligne d'une trame vidéo à la première ligne de la trame suivante, car pendant ce temps, le spot est éteint. Pour effectuer cette synchronisation, il y a de nouveau deux solutions :
Mais il y a encore un problème qui risque d'apparaître : dans le cas où les routines d'affichage sont trop lentes, le dernier masquage risque de ne pas être terminé lorsque s'affiche le haut de l'écran et, lorsqu'on déplace l'icône à cet endroit, on risque de la voir disparaître partiellement ! Il est donc nécessaire d'écrire les routines de masquage les plus rapides possibles. Etant donné que le programme Cherry-Paint fonctionne en mode 2, chaque icône a huit représentations différentes. Là encore, il y a deux méthodes pour obtenir ces huit
Le stockage en mémoire et les décalages successifs des différentes formes sont effectués par le premier programme Basic. Ce programme est formé de quatre parties :
Pour pouvoir faire fonctionner Cherry-Paint, il va falloir introduire le code hexa du programme d'animation. Pour ce faire, je vous propose un chargeur hexa (deuxième programme Basic) qui comporte des sommes de test pour chaque ligne introduite : si le total calculé ne correspond pas à la somme de test, il vous demandera de réintroduire la ligne fautive. Pour chaque ligne, il y a donc 8 nombres hexa et une somme de test à introduire. Lorsque les deux parties du code machine sont introduites, vous pourrez tester le bon fonctionnement du programme en tapant et en exécutant le troisième programme en Basic, mais auparavant, assurez-vous que votre disquette contient les fichiers : SCR.BIN, TR.BIN (ces fichiers ont été créés par le premier programme Basic de ce mois). QUELQUES CONSEILS
CPC |
|
Page précédente : Cherry-Paint |
|