Obligement - L'Amiga au maximum

Samedi 22 juillet 2017 - 12:38  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · 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 in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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 : AMOS - manipulation des bitplanes
(Article écrit par Denis Bernard et extrait d'Amiga News - décembre 1993)


Ce mois-ci, nous allons aborder la programmation d'effets en manipulant directement les bitplanes. Pas de panique, ce n'est pas très compliqué, et bien utilisé, on peut obtenir des effets très rigolos.

Ceux qui utilisent l'économiseur d'écran SuperDark (programmé par Thomas Landspurg et disponible sur disquettes Fish ou CAM) verront tout de suite de quoi je parle si je cite le module "Spots", qui, comme son nom l'indique, déplace des spots sur l'écran du Workbench. L'effet est obtenu par assombrissement de l'écran (qui devient presque noir), et seules deux ou trois zones circulaires (et mobiles) apparaissent avec des couleurs normales. Dans certains jeux, on utilise cet effet pour simuler l'éclairage du décor par les phares d'une voiture, ou encore pour ne montrer que la zone visible par un personnage perdu dans un labyrinthe, etc.

L'application que je vous propose est "Comment simuler la vision d'un décor à travers des lunettes à intensification de lumière en pleine obscurité". Allez, pour qu'il n'y ait plus d'ambiguïté possible sur le sujet de cet article, tapez le programme dans votre éditeur et lancez-le.

Comment ça marche ?

Sur Amiga, les graphiques sont organisés en mémoire sous la forme de bitplanes. En "superposant" ces bitplanes on obtient la couleur de chaque pixel. Prenons l'exemple de la figure ci-dessous :

AMOS

La couleur du pixel de coordonnées 0,0 est "%101" en binaire, soit "5" en décimal. Celle des pixels suivants sont respectivement : %001 (1), %011 (3) et %110 (6). Vous comprendrez aisément qu'avec trois bitplanes on obtient des valeurs entre 0 et 7 (%111) soit un total de huit couleurs. Un écran 16 couleurs est donc composé de quatre bitplanes (valeurs de 0 à %1111 = 15).

Prenons maintenant une image huit couleurs qu'on place dans un écran 16 couleurs. Les huit dernières couleurs (de 8 à 15), ne sont donc pas utilisées par l'image et on peut en faire ce qu'on veut. Plus précisément, c'est le bitplane n°3 qui est libre, et c'est avec celui-ci qu'on va jouer. Supposons maintenant que pour un pixel donné de notre image, on mette la valeur du troisième bit (plane) à 1, et voyons ce qui se passe pour quelques valeurs prises au hasard entre 0 et 7 :

Valeur initiale -> Nouvelle Valeur (après mise à un du troisième bit)
%0110 (6) -> %1110 (14)
%0101 (5) -> %1101 (13)
%0011 (3) -> %1011 (11)
%0000 (0) -> %1000 (8)

Tout pixel de couleur entre 0 et 7 prend une couleur, entre 8 et 15 (plus exactement : sa couleur initiale plus 8). Rappelez-vous que lorsque je parle d'un numéro de couleur, registre de couleur, ou simplement couleur, je parle bien du registre de couleurs, sans tenir compte de la valeur rouge/vert/bleu de ce registre.

Et c'est là que ça devient intéressant : si on recopie la valeur RVB des huit registres inférieurs dans les huit registres supérieurs (8->15) et qu'on initialise les huit registres inférieurs à 0 (noir), on aura un écran noir, puisque notre image huit couleurs utilise les huit registres inférieurs (couleurs 0->7). D'accord, j'avoue que la formulation de cette dernière phrase n'est pas très claire, qu'il y a beaucoup de répétitions, mais relisez-la attentivement, car c'est là que se trouve toute l'astuce !

Après cette manipulation sur les registres de couleurs et comme nous l'avons vu quelques lignes plus haut, si on met à un le troisième bit de la couleur d'un pixel quelconque, celle-ci sera augmentée de 8 et passera donc dans les huit couleurs supérieures, le pixel deviendra donc visible ! Il nous faut maintenant trouver un moyen de dessiner uniquement dans le troisième bitplane... Les bobs ! Grâce à la commande "Set Bob", on peut définir dans quel(s) bitplane(s) tracer l'image d'un bob. Il suffit de dire que le tracé se fera dans le bitplane n°3 et que l'image de notre bob utilise ce même bitplane (couleur n°8). Il ne reste plus qu'à mettre tout cela en application.

Le programme

Après avoir ouvert un écran 16 couleurs, utilisé la couleur n°8 pour dessiner deux cercles accolés qu'on saisit comme image de sprite (ou bob) n°1, on charge une image 320x256 8 couleurs (ou moins). Si vous n'avez pas d'image de ce type, cliquez sur "Annuler" ou "Cancel" dans la requête de fichiers et le programme en construira une pour vous. La partie du dessin de l'image huit couleurs n'est pas commentée, elle dessine des barres entrecroisées (le résultat n'est pas fameux...).

Pour donner l'effet "Lunettes à intensification de lumière", on ne recopie que les composantes rouge et verte des huit couleurs inférieures dans les huit supérieures. On met un coup de double tampon mémoire pour éviter que l'affichage scintille. Vous pouvez enlever cette commande, mais l'affichage de bobs sans double tampon... Aïe Aïe Aïe. Sans commentaires !

Nous arrivons enfin à cette fameuse commande "Set Bob" :
  • Paramètre 1 : numéro du bob affecté.
  • Paramètre 2 : mode de tracé de l'arrière-plan. Laissez-le à 0 sans aucun scrupule, ce n'est pas l'objet de notre exercice.
  • Paramètre 3 : chaque bit de ce paramètre correspond à un bitplane, la valeur par défaut est %111111 (le bob est dessiné dans tous les bitplanes), or seul le numéro 3 nous intéresse, donc la valeur donnée est %1000. Les bits 0, 1 et 2 étant à 0, les bitplanes correspondants ne seront pas affectés parle dessin de notre bob.
  • Paramètre 4 : ignorez-le !
On déclare ensuite notre bob, attaché à un canal Amal qui va se charger de lui faire suivre la souris. On lance Amal, et voilà, ça bouge tout seul !

Pour que la démonstration soit vraiment réussie, je vous conseille de trouver une image huit couleurs 320x256 à donner au programme. Notez que vous pouvez faire la même chose sur une image 16 couleurs, en la chargeant dans un écran 32 couleurs. La manipulation se fera par tranche de 16 couleurs et il s'agira de modifier le quatrième bitplane. Notez enfin qu'en modifiant la manipulation sur les registres de couleurs, vous pouvez obtenir bien d'autres effets. Par exemple, pour reproduire l'effet de spots dont je parlais au début de cet article, remplacer la boucle de copie des registres, ainsi que les trois lignes suivantes, par :

For I=0 To 7
  Colour I+8,Colour(I)
  Colour I,Colour(1)/2 : On assombrit la couleur originale
Next I

Etc.
Atchao !


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]