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 68k - utilisation d'un sprite sous interruption
(Article écrit par Jean-Marc Cazale et extrait de Génération 4 - avril 1989)
|
|
L'Amiga possède des sprites "matériels" ce qui lui autorise des animations très rapides. Rappelons le
nom des machines possédant de tels objets graphiques : TI 99/4A, Atari 800 XL, Commodore 64 et divers
MSX. L'Atari ST et L'Archimedes en sont dépourvus ! Il faut considérer le sprite comme un objet
complètement à part. Celui-ci est créé par la puce vidéo lors du balayage écran et ne fait absolument
pas partie du "bitmap". Autrement dit, le programmeur ne doit pas s'occuper du réajournement du fond,
car celui-ci n'est pas altéré par sa présence.
Chacun des huit sprites à une priorité bien définie par
rapport à ses congénères, mais possède une priorité redéfinissable au choix par rapport au fond.
Prenons par exemple une scène représentant un paysage avec des arbres. On pourra faire passer
arbitrairement les sprites 1 et 6 derrière les arbres, tandis que le sprite numéro 3 passera devant.
Cette possibilité facilite énormément la tâche du programmeur lors de l'élaboration d'un jeu d'arcade.
Il existe un registre où l'on pourra déterminer les collisions des sprites avec le décor ou entre
eux. Très pratique pour un jeu de tir.
Les limites : un sprite ne pourra pas être défini avec plus de trois couleurs, plus une transparente,
et ne fera que 16 pixels de large (hauteur indifférente). Un mode spécial permet de créer des sprites
en 16 couleurs en attachant deux sprites. Le sprite sera toujours en basse résolution, même si votre
écran fait 640 pixels de large.
Pour illustrer la théorie, voici le code source d'un programme de démonstration d'utilisation d'un sprite
sous interruption. Attention, ce programme ne fonctionne correctement que sur les machines ne possédant
que 512 ko de mémoire. Pour les possesseurs d'une extension mémoire (ou Amiga 2000), il faudra recopier
la liste Copper et les données du sprite en mémoire Chip, ou encore utiliser la routine "nofastmem"
livrée avec le Workbench. Ce programme a été écrit pour à l'aide de KSeka, mais est facilement modifiable pour
tourner sous d'autres assembleurs.
|