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 - Dual Playfield
(Article écrit par François Fleuret et extrait de Génération 4 - avril 1989)
|
|
Continuons aujourd'hui notre découverte du matériel de l'Amiga avec un mode graphique très particulier,
le "Dual Playfield", alias "double plan", qui permet de réaliser des défilements superposés à peu de frais.
Le mode Dual Playfield que l'on sélectionne avec le bit numéro 10 de BPLCON0 ($dff100), permet de travailler sur deux plans
totalement indépendants et comportant chacun jusqu'à trois plans de bits et donc huit couleurs. Dans ce mode,
un des plans utilise les plans impairs et les couleurs 0 à 7 (c'est le plan 1) et l'autre les plans
pairs et les couleurs 8 à 15 (le plan 2). La première couleur de chaque plan (la 0 pour le plan 1 et la
8 pour l'autre) est dite "transparente" et permet de voir le plan placé au-dessous. On sélectionne la priorité
des plans (lequel se trouve devant l'autre) avec le bit numéro 6 de BPLCON2 ($dff102) ; si ce bit est à 0,
le plan 1 a priorité, sinon, c'est le plan 2.
Le nombre de plans de bits par plan dépend du nombre total de plans de bits indiqué dans BPLCON0,
il y en aura toujours le même nombre dans les deux sauf si le nombre total est impair, dans ce cas,
le plan 1 en aura un de plus que le 2.
Dans le programme qui suit, nous allons faire rebondir verticalement une image en huit couleurs tout en
la déplaçant horizontalement de gauche à droite devant (ou derrière) une autre, également en huit
couleurs, sans utiliser le Blitter, outil lourd et lent réservé aux travaux beaucoup plus complexes.
De plus, notre image qui bouge passera devant l'autre image lors de la descente et derrière lors
de la montée. Pour faire cela, il faut placer la première image dans un des plans et l'autre dans
le second. On considère que l'image qui doit se déplacer se trouve placée dans la partie du haut des
plans de bits du plan 1, pour l'afficher à l'ordonnée voulue, on place les pointeurs vidéo au début de
la VBL sur le bas des plans de bits (après la zone où se trouve l'image) afin qu'ils affichent une
image vide, puis on attend la position du faisceau correspondant à la position où l'on veut afficher notre
image. C'est à ce moment-là que l'on place dans les pointeurs vidéo la véritable adresse du début des
plans de bits.
Pour afficher l'image à l'abscisse choisie, il suffit de modifier l'adresse de départ des pointeurs en haut
du plan de bits ainsi que le décalage horizontal dans BPLCON1; afin que ces variations dans le décalage
n'apparaissent pas à l'écran sur le bord gauche, on fait une fenêtre plus étroite de 16 points tout en
gardant les mêmes valeurs pour DDFSTRT et DDFSTOP. On doit placer une image vide avant et après la partie
qui bouge afin qu'il n'y ait pas de superposition des plans quand la priorité change au moment du rebond
(ce serait très laid).
Toutes ces manipulations sont réalisées avec le Copper qui, contrairement au Blitter, ne travaille pas
sur les mêmes cycles que le 68000 et ne lui en prend donc aucun. Comme très peu de cycles sont utilisés,
rien ne vous empêche de réaliser en plus un défilement de texte avec le Blitter dans le plan
fixe ou même dans celui qui bouge.
Les images utilisées dans ce programme sont au format 320x256 et huit couleursmasi pas en IFF, il
faut les convertir à l'aide d'un petit programme en BASIC donné ci-dessous qui reconstitue les plans
de bits et la palette afin qu'ils soient plus facilement utilisables. Le programme en assembleur
est toujours au format du KSeka mais comme d'habitude il n'a rien de particulier dans sa syntaxe
et vous pourrez sans mal l'adapter à un autre assembleur. Seule l'insertion des images peut vous
poser un petit problème.
A présent, voici le petit programme en BASIC qui permet de convertir une image IFF 320x256 huit
couleurs en un fichier qui a un format bien plus simple, les 16 premiers octets contiennent la
palette de couleurs (un mot par couleur) puis viennent les trois plans de 10 240 octets.
Mon programme de conversion n'est pas un exemple de bonne programmation, mais le peu de mémoire
disponible avec le BASIC force à faire du bricolage.
Et voilà, le Dual Playfield est vaincu, vous pouvez maintenant réaliser vous-même des défilements
différentiels époustouflants qui ne manqueront pas d'étonner vos ami(e)s.
|