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 : Assembleur - faire bouger un BOB avec le Blitter
(Article écrit par Roméo Rapido et extrait d'Amiga News - février 1991)
|
|
Comme promis le mois dernier, vous allez enfin pouvoir déplacer
un abominable BOB grâce à monsieur Blitter. Nous utiliserons, pour déplacer la bestiole, la manette
et la routine de gestion de manette d'il y a quelques mois.
Vous remarquerez que si vous déplacez rapidement ce pseudo-lutin, vous ne verrez que quatre positions alors
qu'il en est affiché environ 300 horizortalement et 230 verticalement. Ceci est dû ai fait que nous n'attendons
pas le passage du spot et que Blitter a le temps de faire moult Blits en un balayage de l'écran. Assez palabré,
envoyez la purée.
Comme d'habitude, ce bout de code est à greffer sur les morceaux que je vous est fourni les mois précédents.
Quelques définitions supplémentaires :
Il convient de modifier quelque peu l'appel de la fonction principale :
Fonction qui permet de tester l'attribut "busy" du Blitter pour savoir s'il bosse ou pas :
Attention, c'est ici que les choses sérieuses commencent.
Routine de déplacement de l'objet proprement dite.
Vous avez certainement remarqué que le "SaveBack", comme la restauration de celui-ci utilise un Blit
de deux mots de large, alors que le BOB ne fait que 16 bits de large. Cela provient du fait que ce
dernier peut être à cheval sur deux mots de 16 bits et donc, pour simplifier les opérations (calcul d'adresses,
de modulos, etc.), il est préférable de rallonger toutes les lignes du tampon mémoire de sauvegarde de
un mot.
De même, le BOB est "blitté" sur deux mots alors qu'il n'en fait qu'un de large. C'est là
que le modulo "-2" intervient. Comme il est blitté deux mots par ligne, à chaque ligne le Blitter prend
un mot d'avance. Il est donc nécessaire de le faire reculer de un mot pour que l'adresse de départ de la
ligne suivante soit correcte.
Les registres "BLTAFWM" et "BLTALWM" trouvent là une application fort intéressante, puisqu'il permettent
de masquer les octets de début et de fin du BOB qui appartiennent à la ligne précédente et à la ligne suivante
et qui ne doivent pas être transférés.
|