Obligement - L'Amiga au maximum

Mardi 03 juin 2025 - 20:50  

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 - Déplacements de la souris
(Article écrit par Max et extrait d'Amiga News Tech - octobre 1990)


Dans le but toujours poursuivi de mieux découvrir notre machine, nous allons aujourd'hui voir comment l'on gère depuis l'assembleur les déplacements de ce petit animal sympathique que l'on nomme "souris".

La théorie

Mais d'abord, un peu de théorie sur son fonctionnement. Lorsqu'on la déplace sur la table, la souris émet des impulsions électriques en direction de l'Amiga, par l'intermédiaire du câble les reliant l'une à l'autre. Sans entrer dans les détails des "quadrature pulse" et autres gâteries typiquement Amiga, il faut savoir que la souris est incapable de signaler à l'ordinateur dans quelle direction précisément elle s'est déplacée, mais simplement si le mouvement fut horizontal ou vertical, ou bien les deux (diagonal, quoi). C'est au logiciel par la suite de déterminer la direction exacte en fonction de cette information, ainsi que la vitesse du déplacement.

On se sert pour cela du registre matériel JOY0DAT pour le port 1, ou JOY1DAT pour le port 2. Notez au passage que ces registres sont également ceux utilisés pour tester les manettes, et qu'ils s'adaptent parfaitement à l'un ou l'autre de ces périphériques, sans aucun besoin de programmation particulière. Après lecture de JOYxDAT, on obtient un mot de 16 bits à décomposer comme suit :
  • Bit : 15 14 13 12 11 10 9 8 7 6 4 5 3 2 1 0
  • Sens : V7 V6 V5 V4 V3 V2 V1 V0 H7 H6 H5 H4 H3 H2 H1 H0
En d'autres termes, les 8 bits supérieurs contiennent le nombre d'impulsions électriques "horizontales" et les 8 bits inférieurs, le nombre d'impulsions électriques "verticales".

Reste maintenant à déterminer la direction du mouvement, c'est-à-dire vers la gauche ou vers la droite dans le cas de l'horizontal, et vers le "haut" ou vers le "bas" dans le cas du vertical (un mouvement diagonal étant obtenu, il ne paraît pas superflu de le rappeler, par un déplacement à la fois horizontal et vertical). Il n'existe qu'un seul moyen d'y parvenir, c'est de mémoriser l'ancienne valeur de JOYxDAT et de lui soustraire la nouvelle. Si le résultat est positif, le déplacement était vers la droite (respectivement, le haut), sinon, il était vers la gauche (respectivement, le bas).

Un dernier piège est à éviter les compteurs JOYxDAT sont circulaires, c'est-à-dire qu'une fois arrivés à 255, ils bouclent sur 0. Pour éviter tout problème de lecture, il faut donc lire ces compteurs de manière régulière, et quoi de mieux pour ce faire que l'interruption VBL survenant tous les 1/50e de seconde, franchement, je vous le demande, quoi de mieux ? Hein ?

Je ne vous ferai pas l'affront de vous rappeler que le bouton gauche se teste par le 6e bit du port A du CIA A (adresse $bfe001), ni que le droit se teste par l'intermédiaire du 10e bit du registre matériel POTGOR (adresse $dff016). De même que je ne dirais pas que si l'un de ces deux bits est à 0, c'est que le bouton correspondant est appuyé : vous saviez déjà tout cela.

Un exemple, un exemple !

Le petit programme d'exemple que voici met tout ceci en pratique. Il déplace le sprite matériel numéro 0 au gré des mouvements de la souris, sous l'interruption VBL. Pour le plaisir, il teste également la manette, juste histoire que vous puissiez comparer le mode de gestion de ces deux périphériques. Et pour encore plus de plaisir, l'interruption générée par le Copper est utilisée pour changer la couleur du fond suivant la position du sprite. Vous reconnaîtrez sûrement la routine de positionnement d'un sprite, elle est quasiment identique à celle donnée dans l'exceeeeelllllente série "Animation de sprites sous IRQ".

Le programme a été écrit pour Devpac 2 de HiSoft, est-il besoin de le préciser, et ne fonctionnera pas sous K-Seka. Et ce n'est pas la peine d'appeler pour demander les modifications à effectuer.

assembleur
assembleur
assembleur
assembleur
assembleur


[Retour en haut] / [Retour aux articles]