Suivez-nous sur X

|
|
|
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
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : GFA Basic - chargement d'une animation
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News - novembre 1991)
|
|
Le codage de ce mois propose le défilement ("scrolling" en anglais) de trois textes ayant chacun une
vitesse différente. En réalité, ce n'est pas un vrai défilement mais plutôt l'utilisation judicieuse des
commandes TEXT et GET/PUT. Pour éviter les surprises, j'ai dû insérer un délais de 1/50e seconde.
Cette pause devient obligatoire lorsque vous travaillez sous compilation ou avec une carte accélératrice.
Simultanément, je provoque une interruption tous les 2/10e seconde afin de changer périodiquement l'image de la
girafe. Cette girafe a été dessinée sous Deluxe Paint par Cathy. Comme l'animation comprend ici trois images, elle
a d'abord dessiné trois rectangles identiques. En examinant le codage, vous verrez qu'il faut prendre garde à laisser
une bordure vide de 5 points sur tous les côtés. Elle a ensuite dessiné les trois aspects de la girafe en faisant
attention à garder certaines parties communes grâce à l'option "Brosse" de Deluxe Paint.
Il ne lui restait plus qu'à utiliser le programme Démo/IFF TO BOB pour charger l'image de base.
Je lui ai demandé de sauver ses trois girafes sous la forme de chaîne GET/PUT et avec les noms
GIRAFFE0.LPP, GIRAFFE1.LPP et GIRAFFE2.LPP.
Au fait, cela devient une habitude, il y a encore et toujours trois erreurs qui résistent encore et toujours à
l'envahisseur. La première erreur est une faute de syntaxe que vous signalera aussitôt l'éditeur. La
deuxième est une absurdité logique tant que n'aura pas été découvert le voyage intertemporel. La
troisième est la mauvaise compréhension du système des interruptions sous compilation. Ceux qui ne possèdent
que le tiers de l'outil de développement (le GFA Basic 3.042 seul, sans GFA Compiler 3.52F et sans un assembleur
tel que Devpac 2.34+ ou ASMOne) ne s'apercevront pas de ce troisième bogue.
Tout langage évolué (GFA, C, BCPL, AMAL...) sait gérer les interruptions. La gestion de celles-ci est
cependant mieux réalisée quand on s'amuse directement sur un codage écrit en assembleur.
Une interruption est une situation de crise de l'Amiga. Amiga et toutes les machines à base de
microprocesseurs 680x0 tournent sans arrêt en rond jusqu'à la perception d'un événement insolite :
le son, le début d'une nouvelle ligne écran, etc. La page 417 de la nouvelle Bible de l'Amiga est très
explicite. Quand survient ce changement dans le ron-ron des calculs, le microprocesseur examine quelle
est le type de la perturbation. Il se dirige alors sur une table où sont répertoriées toutes les
adresses de chacune des routines d'interruption. Certaines interruptions reviennent tout le temps comme
par exemple le changement de ligne lors du dessin de l'écran sur le moniteur. Mieux, l'électronique les
provoque à une fréquence constante.
Quand vous voulez réaliser une animation fluide (ici la girafe), il suffit donc de modifier périodiquement
l'adresse d'une telle routine. Vous lui faites faire un détour par une procédure de votre cru qui consiste
en l'affichage de votre nouveau dessin. En GFA, il suffit d'écrire :
Ou bien :
Le farfadet long "tick%" est un multiple de l'intervalle de temps 50 hertz soit 0,02 seconde.
Je préfère "AFTER" qui permet une plus grande souplesse mais qui oblige à rajouter de nouveau "AFTER"
dans la routine d'interruption (ici la procédure animation).
|