Obligement - L'Amiga au maximum

Mardi 14 août 2018 - 21:56  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : Assembleur - Tube-Intro (défilement multiparamétrable et multidirectionnel)
(Article écrit par Little Zeus et extrait d'Amiga News Tech - juin 1989)


Et nous revoici ensemble pour entamer le plat de résistance : le défilement multiparamétrable et multidirectionnel. Celui-ci vous est offert par le meilleur restaurant de la galaxie informatique : Commodore Revue.

Le mois dernier, vous avez certainement été très fiers de voir aboutir fructueusement le travail de plusieurs mois et d'obtenir à l'écran votre logo, enfin complètement animé. Nous achèverons le défilement seulement dans deux numéros, ceci à cause de sa longueur et de sa légère complexité. Cela ne veut pas pour autant dire que nous allons voyager à travers le Copper, le Blitter et les playfields... d'ailleurs, nous nous servons dès aujourd'hui du défilement pour illustrer un processus méconnu mais qui, dès qu'il est révélé au grand jour (ce qui est fait un peu plus bas) apparaît tellement utile qu'il en devient indispensable.

Cessons de vous mettre l'eau à la bouche. Nous nous intéressons cette fois-ci à la possibilité de changer le mode de playfield à n'importe quel emplacement de l'écran ; effectivement, après avoir utilisé un single playfield de trois bitplanes pour l'animation de notre logo, dont je ne doute pas que vous avez admiré avec plaisir la danse céleste, nous utilisons un dual playfield et quatre bitplanes pour le défilement. Tout ceci nous est possible grâce à un coprocesseur, unique apanage des Amiga, le Copper.

Le procédé est très simple pour ne pas dire évident : au moyen du Copper nous attendons une ligne ; au moment où celle-ci est atteinte, il suffit de modifier le registre relatif aux playfields et à partir de cette ligne l'écran passe en mode dual playfield !

Avant d'expliquer la nécessité de ce mode au sein du programme, attardons-nous sur son fonctionnement. Il s'agit d'avoir deux écrans pour le prix d'un ! Explication un peu laconique, n'est-ce pas ? Imaginez que vous ayez deux images (fig. 1) ; dans chacune d'entre elles, la première couleur correspond au transparent, c'est-à-dire que lors de leur superposition, l'image avant laissera apercevoir l'image arrière à travers la première couleur de sa palette.

assembleur
Figure 1

La figure 2 illustre ceci : un paysage a été dessiné sur une image et un mur de maison avec, en son milieu, une fenêtre sur une autre.

assembleur
Figure 2

A présent, nous désirons voir le paysage à travers la fenêtre : il suffit de superposer les deux images en ayant pris préalablement le soin de remplir la fenêtre de la couleur transparente (fig. 3).

assembleur
Figure 3

Mais attention ! Pourquoi ne serait-ce pas le paysage qui serait placé à l'avant du mur ? Parce qu'il existe un registre qui donne, suivant sa valeur, la priorité du mur sur le paysage ou inversement. Mais alors pourquoi utiliser le mode dual playfield si on peut avoir exactement le même effet à l'écran, en ayant seulement dessiné une seule image ? Eh bien parce que le mode dual playfield devient intéressant si nous remplaçons notre fenêtre de maison par un hublot d'avion et si nous faisons défiler le paysage ; nous avons alors, en faisant défiler l'image de derrière de droite à gauche, ou même de bas en haut, le sentiment d'être dans un avion en mouvement. N'est-ce pas merveilleux ?

Cependant, le mode dual playfield a un défaut : il permet au maximum huit couleurs par playfield, car l'Amiga offre uniquement six bitplanes. En utilisant tous les bitplanes pairs pour un playfield et les bitplanes impairs pour l'autre, ce qui fait trois bitplanes par playfield, le chiffre maximal est %111=8. Dans notre intro, nous n'aurons besoin que de deux bitplanes par playfield, la Charset utilisant seulement quatre couleurs. Nous aurons néanmoins beaucoup plus de quatre couleurs pour le défilement car nous utiliserons le Copper pour en rajouter et surtout pour renforcer l'effet de courbure du tube.

Après la théorie, la pratique. D'abord une présentation des différents mouvements possibles du scrolltext (texte défilant) : celui-ci peut monter et descendre ; il peut rouler vers le haut et vers le bas (défilement de rotation vertical) ; et bien sûr, il est animé d'un mouvement horizontal, de la droite vers la gauche. Les combinaisons de ces différents mouvements engendrent des effets que vous découvrirez, ébahis, dans deux numéros.

Descendons maintenant dans les coulisses de l'écran pour comprendre par quel moyen miraculeux nous animons le texte défilant de la sorte. Les mouvements verticaux de rotation sont exécutés à l'aide de Scrollraster, routine de la graphics.library qui permet les défilements dans le sens désiré, à l'intérieur d'un parallélogramme. Il en est de même pour le défilement horizontal.

Quant au défilement vertical, nous usons d'un subterfuge ; nous aimons cela. Nous allons avoir recours à une méthode que nous avions déjà quelque peu vue le mois dernier : le repointage des bitplanes. De la même manière que dans le numéro précédent nous repointions les bitplanes pour créer l'effet de déformation, nous allons ici les repointer pour donner une impression de défilement vertical (à ne pas confondre avec le défilement vertical de rotation).

Ne paniquez pas si ceci vous apparaît quelque peu confus, nous allons nous appuyer sur un exemple : lorsque vous avez la fenêtre du Workbench à l'écran et qu'au moyen de la souris vous faites descendre le cadre, vous avez un défilement vertical, mais celui-ci est uniquement illusoire. Imaginons que nous fassions descendre le cadre de "x" pixels, alors le système d'exploitation se charge de "poker" la valeur de base des bitplanes dans les registres correspondants, au moment ou le Raster atteint cette ligne "x". Mais comme dans notre programme, nous devons repointer les bitplanes (à cause des effets couleurs sur le tube) après avoir dépassé la position réelle du défilement ; nous devrions avoir deux défilements simultanément à l'écran ; nous éliminons donc cet effet indésirable en mettant à 0 les couleurs, lorsque le Raster balaye la partie de l'écran correspondant à l'emplacement réel du défilement.

Vous remarquerez que j'utilise le mode "un bitplane", et ce, afin d'avoir uniquement une seule couleur à mettre à 0. Il s'agit maintenant de faire tourner notre tube : notre cylindre est divisé longitudinalement de manière à ce que la partie avant du cylindre appartienne au playfield avant et la partie arrière, au playfield arrière (ce n'est pas très original). Nous animons donc les demi-cylindres avant et arrière du défilement, de deux mouvements opposés à l'aide de Scrollraster.

Cependant, cela ne suffit pas pour avoir notre défilement en rotation autour du tube, car il manque la copie des lignes extrêmes d'un playfield à l'autre. Soyons un peu plus explicites : si vous désirez voir réapparaître à l'arrière la ligne supérieure (en admettant que le cylindre tourne vers le haut) de votre message de la partie avant du cylindre, il faut le recopier ligne par ligne. Pour ne pas avoir de parasites à la ligne où nous copions d'un playfield à l'autre, nous mettons les couleurs à 0. Mais attention, selon le sens de rotation du tube, les copies se feront du playfield avant vers l'arrière, ou inversement. Par exemple, si le tube prend un sens de rotation vers le haut, la partie avant du haut du tube subira une copie du playfield avant, vers le playfield arrière. Le bas du tube subira le sort contraire (fig. 4).

assembleur
Figure 4

En ce qui concerne l'effet des couleurs sur le tube, nous l'expliquerons clairement le mois prochain. Si dans la routine, vous vous êtes étonné de voir que le playfield avant est décalé de 16 pixels vers la droite, sachez que cela concerne la forme du tube et nous en verrons l'explication la fois prochaine.

N'essayez pas d'assembler la routine puisqu'elle est encore incomplète et donc inexécutable. Ne soyez pas pris de court le jour où nous publierons la dernière partie de la routine du défilement. Préparez une police de caractères de 40 pixels de largeur sur 32 de hauteur ? Dernière chose, cette fois-ci, nous avons vu le principe de fonctionnement du défilement un peu grossièrement ; dans le prochain numéro, nous reviendrons sur des parties de routines publiées ici, en les éclairant.

Sur ce, je vous quitte et vous donne rendez-vous dans le prochain numéro pour la suite de la Tube-Intro. Je vous rappelle que toutes vos suggestions, critiques ou questions sont les bienvenues.

assembleur
assembleur
assembleur


[Retour en haut] / [Retour aux articles] [Article suivant]