Obligement - L'Amiga au maximum

Jeudi 23 novembre 2017 - 10:07  

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 : Assembleur - défilements via la graphics.library
(Article écrit par Little Zeus et extrait d'A-News (Amiga News) - décembre 1988)


Chers Amiga-users et chers Amiga-beginners : ce mois-ci, je préconise une nouvelle méthode d'apprentissage, j'ai décidé de rassembler dans un même article la rubrique débutants et la rubrique initiés. Je m'explique : comme promis le mois dernier, nous allons étudier les défilements ("scrollings" en anglais) via la graphics.library. Mais si les initiés connaissent déjà parfaitement le rôle des bibliothèques et peuvent d'ores et déjà se rendre à la deuxième partie de l'article qui concerne la routine d'application, les débutants devront lire l'article dans sa totalité.

Rappel sur les bibliothèques et le Blitter

Les Amiga 500 et 2000 possèdent des routines en ROM classées par type d'utilisation, c'est-à-dire que, par exemple, tout ce qui concernera les accès disque sera classé dans la dos.library, les traitements écrans, fenêtres et menus dans l'intuition.library. Mais, la bibliothèque qui nous intéresse réellement c'est la graphics.library qui, comme son nom l'indique, rassemble toutes les fonctions graphiques de base ainsi que toutes les routines utilisant le Blitter.

Nous venons de prononcer le mot "Blitter", mais qu'est-ce ? En gros, c'est un coprocesseur très utile pour les défilements. Et c'est justement grâce à celui-ci que nous allons pouvoir créer ci-après de très belles choses. Afin de pouvoir utiliser les routines d'une bibliothèque, il faut d'abord ouvrir celle-ci ou autrement dit la rendre fonctionnelle.

Mais alors, allons-nous devoir taper le programme qui ouvre les bibliothèques dans sa totalité ? La réponse est non. Car il existe l'exec.library qui est ouverte en permanence et en son sein existe une routine permettant d'ouvrir et de fermer telle ou telle bibliothèque (car toute bibliothèque ouverte en début de programme doit être fermée à sa fin).

Les bibliothèques commencent toutes par une table de suite de "jumps" et à chaque jump correspond une routine spécifique. Quand nous ouvrons une bibliothèque, l'ordinateur nous renvoie dans le registre d0 l'adresse de la fin de cette table ; il apparaît donc évident que si nous désirons appeler une des routines d'une bibliothèque, nous utiliserons un "jsr" suivi d'un offset négatif... Comment, ça ne suit plus ?

Très bien, explicitons un peu : si la seule adresse de référence que nous ayions pour appeler tel ou tel jmp est la dernière adresse de la table, alors nous devrons soustraire à cette adresse le nombre d'octets correspondant au jmp désiré. Si cela paraît encore un peu vague pour certains, ils le comprendront mieux lors de l'étude de la routine.

Venons-en au fait : l'offset de la graphics.library qui nous intéresse est -396, offset qui correspond au jmp appelant la routine "Scrollraster". Nous n'aurons plus besoin, dès lors, qu'à faire un jsr-396(a6) en ayant préalablement mis l'adresse de base de la graphics en a6.

Scrollraster permet tous les défilements : verticaux, horizontaux et en diagonales. De plus, il offre aussi bien la possibilité du défilement sur une pixel que celui sur 2, 3 ou plus. Il a cependant un défaut, il rend possible uniquement les défilements sur un rectangle, c'est-à-dire qu'il déplacera tout (et sans exception) ce qui sera dessiné dans celui-ci. Cependant, comme nous le verrons peut-être prochainement, cette tare est facilement contournable.

Autant de possibilités, autant de paramètres. Avant d'appeler Scrollraster nous devons le paramétrer comme suit :
  • Rastport -> dans a1
  • Valeur du défilement vertical -> dans d0
  • Valeur du défilement horizontal -> dans d1
  • Valeur de l'abscisse minimale du rectangle -> dans d2
  • Valeur de l'ordonnée minimale du rectangle -> dans d3
  • Valeur de l'abscisse maximale du rectangle -> dans d4
  • Valeur de l'abscisse maximale du rectangle -> dans d5
Peut-être serons-nous choqués par l'apparition du mot "rastport", nous n'expliquerons ce mois-ci ni son rôle ni la routine dans laquelle il s'inscrit par faute de place.

Une fois paramétré, Scrollraster peut être appelé sans que rien ne puisse l'empêcher de bien agir. Comme exemple d'utilisation de Scrollraster, nous créerons le défilement gauche-droite d'un bob de taille inférieure à 100 pixels. Avant de lancer la routine, n'oublions pas d'ouvrir un écran ni d'afficher un bob à l'intérieur du rectangle au moyen de la routine étudiée dans un article précédent.

La routine Scrollraster

Maintenant que nous avons bien mis les points sur les i, voyons la routine :

Assembleur
Assembleur
Assembleur

Nous venons de voir différentes routines servant à notre défilement, aussi faut-il savoir appeler chacune d'entre elles au moment propice.

En début de programme doit être exécutée la séquence suivante :

jsr ouverturegraph
jsr initécran

De plus, la partie de programme testant la souris doit être modifiée comme suit :

Assembleur

Pour terminer, en fin de programme doit paraître un "jsr fermeturegraph".

Nous voici donc capables de faire des défilements de toutes sortes, et pourquoi pas un défilement de caractères !

Sur ce, je vous quitte et vous donne rendez-vous au mois de décembre et qui dit décembre dit Noël et qui dit Noël dit cadeau et qui dit cadeau dit surprise, donc vous ne saurez de quoi traite l'article du mois prochain qu'au moment de l'ouverture d'A-News 10 (Bruce Lepper : pour décembre, il faut lire janvier - merci les grévistes - mais la surprise sera la même).


[Retour en haut] / [Retour aux articles]