CODING ★ CRÉATION ET ANIMATION DE SPRITES ★

Graphic - CPC 29 - Création et Animation de Sprites (CPC Revue)


AFFICHAGE ET DEPLACEMENT PAR ECHANGE DE RECTANGLES ECRAN

Contrairement à la méthode XOR, ces programmes ne peuvent fonctionner que dans un mode donné (à moins de regrouper toutes les routines dans le même programme et de les appeler par le biais d'un test sur le mode écran en cours). En dehors de cette considération, toutes les précisions données sur MSPXOR concernent aussi cette partie.

MSPSUPMO

Utiliser le fichier texte de MSPXOR. Remplacer la ligne: ****(1))*** par : BUFREC DEFS 1000. Remplacer la ligne CALL AFFISP; (2) ****** par CALL AFFREC. Supprimer la section AFFISP & la remplacer par la section donnée dans le listing AJMSUPMO.DAM. Sauver le code objet sous le nom : MSSUPMO.BIN.

Principe de fonctionnement : avant chaque affichage, une seconde table est créée et stocke en mémoire l'emplacement qui sera occupé par le sprite (BUFREC).

  1. : Ranger emplacement du dessin en table AFFSIP
  2. : Afficher sprite COLON
  3. : Changer coordonnées d'affichage JOYO
  4. : Effacer sprite en rechargeant BUFSP dans écran AFFREC
  5. : Recommencer.

Fonctionnement de MSPSUPMO en mode 0

Pour éviter d'afficher notre dessin au milieu d'un superbe rectangle noir, nous devons tester chaque pixel de celui-ci. L'opérateur logique AND nous sert à séparer la paire de pixels. Si le pixel testé est égal à 0, nous laissons l'emplacement écran tel quel. Sinon, nous mettons à 0 le pixel écran et le remplaçons par celui du sprite à l'aide de l'opérateur loqique OR.

Le programme MSPSUPMO.BAS, permet de tester le code objet.

Puisque nous savons maintenant tester un pixel précis d'un octet, une autre possibilité nous est ouverte : avant l'affichage du pixel sprite, testons celui de l'octet écran qui devrait être modifié. Si celui-ci est différent de 0 (INK Utilisée pour le fond), nous n'affichons pas le pixel sprite et passons au suivant. De cette manière le sprite sera représenté en arrière plan.

Modifiez le programme obtenu ci-dessus avec les données de AJMDERMO.DAM et sauvegardez le code objet sous le nom MSPDERMO.BIN. Puis modifiez la ligne LOAD"MSPSUPMO.BIN".

Les mêmes en mode 1

Le principe des deux programmes est absolument identique en mode 1. La seule différence est que nous devons successivement tester 4 pixels au lieu de deux. Les modifications à apporter sont données dans les deux additifs AJMSUPM1 .DAM & AJMDERM1 .DAM. Sauvegarder les nouveaux codes objet et modifier le BASIC pour charger la table TM1 CPC.TSG.

En mode 2

Une animation en mode 2 présente peu d'intérêt. Pour le principe, notons que 8 tests seront nécessaires avec, de gauche à droite : 10000000,0100000,00100000,000 1000, etc. (L'instruction RRC A, vous connaissez ?)

Ces quelques lignes en finissent avec le mode 2.

Nos images peuvent maintenant se déplacer devant ou derrière le décor. Si nous voulons les afficher en plan intermédiaire, ce n'est guère plus compliqué.

Le premier test doit s'effectuer sur le pixel écran et comparer la valeur de ce pixel aux codes encres (préétablis), qui doivent masquer le sprite. N'oublions pas le codage particulier des octets écran. Il faudra d'abord décoder chaque pixel. C'est le rôle dévolu au programme PIXANAL.BAS. Choisissez le mode 0 ou 1, puis indiquez le numéro d'encre (PEN) que vous voulez tester. Le programme indique le code complet de l'octet (PI) et le code de chaque pixel de gauche à droite (PG - (PMG - PMD) - PD) . (F) = fin, (C) = continuer dans le même mode, (R) = resélectionner le mode.

NOAFFG Les mêmes instructions avec 84,81,16 pour PEN 7,13,4 pixel droit % saut en NOAFFD si 0.

Exemple:

TABLEAU 10

COLON LD A,(HL)   ;OCTET ECRAN
AND %10101010   ;EXIT PIXEL DROIT
CP 168    ;PEN 7 PIXEL GAUCHE
JR Z,NOAFFPG
CP 162    ;PEN 13
JR Z,NOAFFPG
CP 32    ;PEN 4
JR Z,NOAFFPG
LD A,(DE)     ; PIXEL GAUCHE SPRITE
AND %10101010
JR Z,NOAFFPG

COMPOSER PIXEL GAUGHE ECRAN

AFPG Les mêmes instructions avec 84, 81, 16 pour pen 7, 13, 4 pixel droit & en NOAFPD si 0.

NOTES SUR LES METHODES ETUDIEES JUSQU'ICI

Leur avantage essentiel est une programmation simple. Mais les essais révèlent une grave lacune : la synchronisation ! Ces routines ne peuvent convenir qu'à des sprites de petite taille. Supprimez donc l'instruction CALL FRAME dans la routine AFFISP. Vous verrez :

— que cette instruction ralentit considérablement le déplacement.
— que, si l'affichage des plus petits sprites s'en trouve amélioré, ce n'est pas précisément le cas pour les autres.

Synchronisation des sprites : FRAME (ou &BD19) attend le début du balayage de l'écran par le rayon, mais cela n'est intéressant que si la vitesse de la routine d'affichage est supérieure ou égale à la vitesse de balayage du rayon. Sinon, l'affichage est encore en cours et le rayon déjà loin, d'où : déformation du dessin. Cette lenteur vient du fait que jusqu'ici, nous effectuons simultanément tests, calculs et affichages, le chapitre suivant balaiera ces imperfections.

CPC Revue

★ ANNÉE: 1988
★ AUTEUR: MICHEL MAIGROT

 

Page précédente : Graphic - CPC 28 - Creation et Animation de Sprites
★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tool:
» CODING  GRAPHIC-CPC  29-Creation  et  Animation  de  Sprites    FRENCHDATE: 2019-12-19
DL: 268
TYPE: PDF
SiZE: 709Ko
NOTE: 11 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » 3D Donut (CPC Computing)
» Coding Src's » Abstracción (Amstrad Personal)
» Coding Src's » A Very Moving Experience (Sean McManus and Amstrad Computer User)
» Coding Src's » Windmill (Popular Computing Weekly)
» Coding Src's » Graphic - Fuzzy (Amstrad Computer User)
» Coding Src's » Affichage écran (Rémi VILLATEL)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 633 millisecondes et consultée 1177 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.