Obligement - L'Amiga au maximum

Samedi 24 mai 2025 - 13:13  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : Assembleur 68k - défilement avec déplacements de pointeurs
(Article écrit par François Fleuret et extrait de Génération 4 - mars 1989)


Consacrons-nous à la subtile programmation des défilements. Ceux-ci peuvent être réalisés de deux manières différentes : la première fait le déplacement avec le Blitter. Cette technique souffre d'un gros défaut : elle est lente, même avec un processeur spécialisé comme Agnus. La seconde est plus élégante et consiste à déplacer les pointeurs vidéo dans la mémoire afin de donner une impression de mouvement. C'est ce que nous allons voir aujourd'hui.

Comme vous pouvez le constater, le programme est court car il ne s'encombre pas des initialisations multiples du Blitter.

Le programme gère cinq plans monochromes qui ont chacun une taille de 320x256 pixels. Chacun de ces plans possède son propre pointeur vidéo ; le Copper place dans ces pointeurs l'adresse du premier mot à lire au début de la VBL. Pour donner l'impression de rebond, on fait varier cette valeur en fonction du temps, de plus, on modifie l'amplitude du rebond en fonction du numéro du plan pour donner un effet de perspective. Pour cela, on divise la coordonnée du rebond par deux à chaque plan que l'on traite (le premier a une amplitude de 128 points, le second de 64 points, le troisième de 32, etc.).

Le dernier détail un peu "particulier" de cette méthode est la palette de couleur. En effet, pour donner une priorité à l'affichage (quel plan sera devant quel autre), on doit choisir une bonne palette. Pour comprendre le principe du choix des couleurs, il faut savoir comment le coprocesseur vidéo détermine la couleur d'un pixel à afficher. Pour chaque point, le coprocesseur prend un bit dans le plan 0, un dans le plan 1, un dans le plan 2, etc. et constitue ainsi un groupe de cinq bits qui définit une couleur parmi 32 (on trouve la valeur de cette couleur dans les 32 registres couleurs). On a donc ce tableau (le premier chiffre donne la valeur en décimal de la couleur d'un point, le second cette même valeur en binaire et il y a un petit commentaire sur la structure de la couleur) :
  • 0 = 00000 Aucun plan n'a de point.
  • 1 = 00001 Le plan 0 a un point.
  • 2 = 00010 Le plan 1 a un point.
  • 3 = 00011 Les plans 0 et 1 ont des points.
  • 4 = 00100 Le plan 2 a un point.
  • etc.
Donc, si on veut que le plan 0 soit devant le plan 1, il suffit de mettre la couleur du plan 0 dans les registres couleur 1 et 3, et la couleur du plan 1 dans le registre 2. Dans le programme que je vous donne aujourd'hui, les plans sont bleus avec un dégradé entre les plans éloignés et ceux rapprochés. Le plan 4 (le cinquième) est le plus proche, il est plus clair et a une amplitude de rebond de 128 pixels), évidemment, le plan 0 est le plus loin...

L'action se déroule ainsi : au début du programme, on fait les initialisations qui s'imposent (IRQ, DMA, fenêtre d'affichage et couleurs) puis le programme est bloqué par un BRA car on ne fait l'animation que pendant l'IRQ afin d'être parfaitement synchronisé avec le balayage. Pendant l'IRQ, on incrémente un compteur de temps puis on calcule la position verticale des pointeurs sur les plans de bits avec la formule : Y=(((T and 63)-32)^2)/8 (vous pouvez vérifier, ça fait bien "des paraboles périodiques").

Après, on multiplie cette position par 40 pour obtenir l'adresse où l'on va placer le pointeur de plan de bits. On divise ensuite cette valeur par deux pour obtenir la position du pointeur du plan de bits suivant.

Assembleur
Assembleur
Assembleur
Assembleur

Erratum : trois lignes ont disparu à la mise en page, sans cela, le programme ne peut pas fonctionner (il manque le retour d'interruption). Après la ligne "MOVE.W #$10,$DFFO9C", il faut rajouter :

FIN_IRQ:
 MOVE.L (SP)+,D0
 RTE

C'est dans ces zones qu'il faut changer les cinq images monochromes non compactées et en 320x256. Pour cela, il faut faire cinq RI [nom_image] [ImageX].

Assembleur

Ce défilement ne demande que quelques centaines de cycles à la machine à chaque VBL, vous pouvez donc le faire fonctionner en même temps que la plupart des autres animations.


[Retour en haut] / [Retour aux articles]