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/AMOS - créer un plasma
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News - janvier 1992)
|
|
Ce mois-ci, nous allons coder un plasma comme je les faisais déjà sur ordinateur
DAI en 1984 en langage machine. Devrons-nous alors intégrer de l'assembleur dans
le codage AMOS ou GFA ? Absolument pas car les exécutables produits par ces
compilateurs sont vraiment très rapides.
Le plasma
Le codage commence par réserver un peu de place pour stocker les 16 couleurs plus
une de la palette. Il ouvre alors un écran puis une fenêtre et pose un nouveau
lutin de souris tandis que la procédure "Biffure" prépare l'image du plasma.
J'ai cependant du remplacer le "PELLIPSE" GFA inexistant en AMOS par un rectangle.
C'est un peu complexe aussi, si vous souhaitez mieux comprendre les instructions utilisées,
je vous demande de mettre "DISPLAY_OFF" en remarque en faisant précéder "PROC" (AMOS)
ou "DISPLAY" (GFA) par un "'" (apostrophe). La procédure "Efflorescence"
calcule alors la palette de couleurs en créant un dégradé progressif. Et on arrive à
la fin : j'ai recodé le Shift AMOS inexistant en GFA pour arriver sur "Facile".
Nous avons notre plasma. Spectaculaire n'est-il pas ?
En fait, c'est un faux plasma qui consiste à prendre la première couleur de cyclage (n°2),
la mettre en dernière position plus 1 (n°17), supprimer alors la première couleur (n°2)
et recalculer la palette.
Avant le cyclage nous avions les couleurs (0, 1, 2, 3, 4... 15, x),
puis nous aurons (0, 1, 2, 3, 4... 15, 2) puis (0, 1, 3, 4... 15, 2, x)
et ainsi de suite.
Bien sûr, il y a encore et toujours les trois
erreurs. Une de syntaxe, une de logique et une due à la limitation des logiciels.
Pour en savoir plus
Ce ne sont évidemment pas de vrais plasmas.
Comment programmer une palette de couleur ? Chaque structure d'écran possède sa propre palette de
couleur. Ainsi, on peut afficher plusieurs images en même temps avec Deluxe Paint et passer
très rapidement d'un écran à un autre. AMOS et GFA procèdent aussi de la même façon. Un écran
possède une ou plusieurs fenêtres que reconnaît l'Amiga grâce à un système ressemblant à celui
des boîtes à lettres. La première boîte à lettres recevra tout ce qui est destiné au concierge.
La deuxième recevra ce qui est destiné au locataire du premier et ainsi de suite. Il y a également
une boîte à lettre destinée à recevoir toutes les publicités. Chaque boîte à lettre contient donc
plusieurs messages que devra aller chercher la personne concernée. Évidemment, le contenu de chaque
boîte n'est pas illimité et devra être vidé régulièrement. On peut généraliser en disant que
chaque entrée de résidence ne reçoit que le lot des lettres qui lui sont destinées. Et on peut
remonter très loin dans ce système très structuré avec les quartiers, villes, pays...
C'est la logique de l'Amiga. La structure d'écran fait partie d'une autre structure : les ViewPorts.
Chaque ViewPort comprend lui-même des pointeurs (le nom de la boîte aux lettres) sur plusieurs
structures (les familles comprenant plusieurs résidents repérés par un même nom de famille). Ces
pointeurs sont notamment la liste des structures de fenêtres et la structure de la palette de couleurs
de l'écran.
Quand nous sommes sur une fenêtre, nous recherchons donc l'adresse de base du ViewPort de façon à
retrouver l'adresse de la carte des couleurs ColorMap. Cette ColorMap correspond à la famille
dans laquelle nous devrons trouver le bon résident. Ici cela sera adresse de la table des
couleurs ColorTab. ColorTab est notre palette. Chaque couleur y est alors écrite en format RougeVertBleu
comme sous Deluxe Paint.
Ouf. En résumé, en GFA nous écrirons :
viewport%=ViewPortAdress(WINDOW(1))
wcolormap%=LONG{viewport%+4}
wcolortab%=LONG{wcolormap%+4}
couleur%=CARD{wcolortab%+(...*2)}
|
Remplacer "+" et "*" par "ADD" et "MUL" et la boucle est bouclée.
Listings
Pseudo-plasma en AMOS
Pseudo-plasma en GFA Basic
|