Obligement - L'Amiga au maximum

Vendredi 06 juin 2025 - 12:52  

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 - 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 champs de jeu ("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 champ de jeu à n'importe quel emplacement de l'écran ; effectivement, après avoir utilisé un simple champ de jeu de trois plans de bits pour l'animation de notre logo, dont je ne doute pas que vous avez admiré avec plaisir la danse céleste, nous utilisons un double champ de jeu et quatre plans de bits 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 champs de jeu et à partir de cette ligne l'écran passe en mode double champ de jeu !

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 double champ de jeu si on peut avoir exactement le même effet à l'écran, en ayant seulement dessiné une seule image ? Eh bien parce que le mode double champ de jeu 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 double champ de jeu a un défaut : il permet au maximum huit couleurs par champ de jeu, car l'Amiga offre uniquement six plans de bits. En utilisant tous les plans de bits pairs pour un champ de jeu et les plans de bits impairs pour l'autre, ce qui fait trois plans de bits par champ de jeu, le chiffre maximal est %111=8. Dans notre intro, nous n'aurons besoin que de deux plans de bits par champ de jeu, 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 plans de bits. De la même manière que dans le numéro précédent nous repointions les plans de bits 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 plans de bits dans les registres correspondants, au moment ou le Raster atteint cette ligne "x". Mais comme dans notre programme, nous devons repointer les plans de bits (à 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 plan de bits", 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 champ de jeu avant et la partie arrière, au champ de jeu 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 champ de jeu à 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 champ de jeu à l'autre, nous mettons les couleurs à 0. Mais attention, selon le sens de rotation du tube, les copies se feront du champ de jeu 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 champ de jeu avant, vers le champ de jeu 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 champ de jeu 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]