Obligement - L'Amiga au maximum

Mercredi 17 avril 2024 - 01:26  

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 - le Copper, description et fonctionnement
(Article écrit par Little Zeus et extrait d'A-News (Amiga News) - août 1988)


Chers Amiga users, chose promise, chose due : voici en exclusivité pour A-News quelques notions sur le Copper. Celui-ci étant très puissant, nous aurons besoin de plusieurs numéros pour étudier pleinement ses possibilités. Cependant, ce que nous allons voir ci-dessous va nous offrir quelques idées d'utilisation. Précisons que ce mois-ci, cet article n'est pas uniquement spécifique à l'assembleur mais à tous les langages faisant appel directement au Copper.

Utilisation du Copper

Tout d'abord, passons en revue les utilisations possibles du Copper. Son premier rôle est de garder l'image affichée, il permet aussi d'afficher plus de 32 couleurs simultanément à l'écran, il peut servir à créer des effets de couleurs en changeant la palette... son emploi se limite surtout au domaine graphique.

Le Copper ne possède que trois instructions (SKIP, WAIT et MOVE) mais elles offrent énormément de possibilités comme vous l'avez peut-être déjà deviné.
  • MOVE remplit exactement la même fonction que le MOVE en mode d'adressage immédiat que nous utilisons si souvent.
  • WAIT met le Copper en atténte jusqu'à ce que le spot de l'écran ait atteint les coordonnées précisées par l'instruction.
  • Quant à SKIP, son utilisation étant rare et assez compliquée, nous ne la verrons que dans un prochain numéro.
L'instruction MOVE

Elle permet de "poker" le contenu d'une adresse dans un des registres et uniquement dans un des registres supérieurs à $20. Attention : le premier mot de l'instruction contient l'adresse de destination et le second mot contient donc la valeur à poker. Précisons que le bit 0 du premier mot de l'instruction doit toujours être mis à 0 et qu'il est préférable de mettre à 0 les bits 9, 10, 11, 12, 13, 14 et 15 du premier mot.

L'instruction WAIT

Cette instruction seule ne sert à rien ; nous allons voir un peu plus loin son utilisation avec MOVE.

Pour différencier WAIT de MOVE et de SKIP, les bits 0 des deux mots de l'instuction WAIT doivent être mis à 0. Enfin, l'abscisse du point à attendre doit se trouver dans le deuxième octet du premier mot et l'ordonnée dans les bits 1 à 7 de ce même mot.

Attention, voici la subtilité de l'instruction WAIT qui en fait sa puissance : les bits 8 à 14 du deuxième mot, appelés bits de masque de l'abscisse et les bits 1 à 7 du deuxième mot (bits de masque de l'ordonnée) sont mis à 1 quand nous voulons que le bit du premier mot du même poids soit pris en considération, c'est-à-dire que si nous mettons à 0 les bits 1 à 7 et à 1 les bits 8 à 15 du deuxième mot, l'ordonnée sera ignorée et le Copper attendra à chaque ligne la colonne précisée dans le premier mot de l'instruction, ceci peut servir à tracer un ou plusieurs rectangles, des traits horizontaux mais pas de traits verticaux comme cela est expliqué dans le paragraphe concernant l'abscisse.

Le bit 15 du deuxième mot sera pour l'instant toujours mis à 1, nous verrons son utilité quand nous étudierons le Blitter.

Abscisses et ordonnées

Consacrons un petit paragraphe aux abscisses et ordonnées de l'instruction WAIT car ça en vaut la peine.

L'abscisse

L'abscisse doit être comprise entre $0 et $E2 mais le bit de poids le plus faible n'est pas pris en considération ce qui donne donc 113 abscisses possibles au lieu de 320. En fait, chaque abscisse du Copper correspond à quatre abscisses écran en mode basse résolution et à huit abscisses écran en mode haute résolution.

L'ordonnée

No problem for it, 255 ordonnée as ever (l'abscisse 0 compte aussi).

Résumons tout ceci par un petit tableau :

Copper

Errata : dans ce tableau, les mots "abscisse" et "ordonnée" ont été malencontreusement inversés.

Quand nous voudrons prendre en considération l'abscisse et l'ordonnée on mettra $FFFE dans le second mot de l'instruction WAIT.

Créer une liste Copper

On appelle "liste Copper" toute combinaison de plusieurs instructions Copper, en l'occurrence MOVE et WAIT. Une liste Copper peut très bien être faite de plusieurs MOVE uniquement, comme nous l'avons vu dans le numéro précédent. A ce propos, je vous avais promis quelques explications complémentaires sur le listing de la routine d'affichage d'image, les voici donc :

Vous n'ignorez pas que la graphics.library possède de nombreuses routines d'animations graphiques, mais elle permet aussi en pokant l'adresse du début de la liste Copper dans le $32 octet d'exécuter la liste Copper par le Copper évidemment.

Ceci est extrêmement important !

Toute liste Copper doit absolument se terminer par les deux mots suivant : $FFFF, $FFFE. Ceci signifie que le Copper doit attendre la ligne 255, or ceci lui est impossible car il ne peut aller plus loin que la ligne 254.

Revoyons la partie du programme du mois dernier qui nous intéresse, signalons aux nouveaux venus que ce programme permettait d'afficher une image à l'écran, mais pour cela elle devait être perpétuellement réaffichée au moyen du Copper. Nous n'expliquerons pas les lignes déjà commentées précédemment. Un petit ajout à cette routine, bien que fonctionnant parfaitement telle qu'elle est, il vaut mieux fermer la dos.lib (ce que j'avais oublié de faire) en plus de la fermeture du fichier. Enfin, une petite rectification dans le commentaire de la ligne "lsl.w #4", le décalage n'est pas d'un octet à gauche mais d'un quartet.

Copper

Maintenant que nous avons vu les éléments principaux, je vous propose d'ajouter à la liste Copper du mois dernier quelques instructions faisant des effets de couleurs au moyen du Copper. Nous allons voir les directives à prendre mais je vous laisse taper la routine par vous-même, je ne vais tout de même pas faire le travail à votre place. De toute façon, je vous montrerai la routine le mois prochain ainsi qu'une routine permettant les défilements (scrollings).

Les directives sont peu nombreuses :

1. Pour créer un changement de palette sur tout l'écran, une liste Copper de MOVE suffit.

2. Pour créer un changement de palette sur une partie d'écran, votre liste Copper doit se présenter de la façon suivante :

WAIT , MOVE (dans les registres de $180 à $1be inclus), WAIT...

3. N'oubliez pas de terminer votre liste Copper par un $FFFF, $FFFE.

4. Les WAIT WAIT doivent être mis dans l'ordre de balayage du spot sinon gare aux bogues.

Voilà

Sur ce je vous quitte et vous donne rendez-vous au mois prochain avec une rubrique pour les débutants, la routine de changement de palette et une initiation aux défilements.


[Retour en haut] / [Retour aux articles]