LE
SCROLLING
LES TYPES DE SCROLLING
PROGRAMMATION D'UN SCROLLING
Le scrolling désigne tout défilement d'écran. Le concept est
venu avec les premiers jeux d'arcade de fêtes foraines ou de
bar. Avant son apparition, les jeux étaient des jeux à écrans
fixes: Pong, Pac-man, Galaga, Galaxian.
L'avantage du scrolling est d'agrandir le terrain de jeu du
joueur. Le jeu comme Scramble en est un exemple.
Les différents types de scrolling:
Note: Les scrolling parallax comme dans Totalwar sont les mêmes que ceux cités précédemment mais sont transparents. Les scrolling diagonaux sont quant à eux, des scrolling verticaux et horizontaux.
La programmation d'un scrolling diffère suivant la taille du terrain de jeux et avant, avec la taille de la mémoire.
Utiliser un grand écran virtuel:
Le graphique suivant en montre le principe:
L'écran virtuel fait 4 fois l'écran réel. Le décor de fond peut être crée par 4 images PCX que l'on chargera puis copiera aux offsets 0, 128000 (200*640), 320 et 128320 (200*640+320). Ces offsets correspondent aux coins supérieure gauche, gauche moitié bas, haut droit, droite moitié bas. Les fonctions de copies d'écran fournies (réf:Transfert d'écran) ne peuvent effectuées ce travail. La source est basée sur 320 pts mais la destination sur 640 !. Il suffit tout simplement de copier les 200 lignes en sautant 320 octets ou points après chacune.
Dans cet exemple, il suffit de déplacer le pt P pour visualiser, après copie dans la carte VGA, l'endroit visible.
Cette méthode est très rapide mais elle limite la taille du
terrain. Si j'avais utilisé cette technique dans Totalwar il
m'aurait fallu prés de 3Mo pour les deux scrolling alors que
j'utilise que 128Ko !!!. C'est vrai que le PC a un minimum de
32Mo maintenant, mais je ne pense pas que ce soit une raison pour
en gaspiller autant. Il ne faut pas oublier aussi que la gestion
des sprites doit être effectuée sur 640 points et non sur 320 points. L'Amiga utilisait ce principe pour ses scrolling fluides.
Cette méthode est donc à réserver à des jeux ayant un terrain
limité (Skweek...).
Déplacer le contenu de la page écran:
Cette technique, bien que plus coûteuse en temps machine est
et a été la plus utilisée sur les ordinateurs comme sur
certaines bornes d'arcade. Il suffit de déplacer le contenu de
la mémoire dans un sens ou dans l'autre. J'ai utilisé cette
méthode sur l'Amstrad CPC ainsi que sur l'Atari ST (aussi pour
Totalwar !)
Sur le graphique, un ligne blanche apparaît sur le deuxième
écran rouge. En fait, le contenu de la première ligne a été
placé sur la ligne deux et ainsi de suite. Cette opération se
fait en mémoire dans un buffer et non directement dans la carte
VGA.
Pour un scrolling vers le bas, il faut la déplacer en partant de
la ligne 198 et en allant vers le haut. C'est le contraire pour
le scrolling vers le haut.
Pour le scrolling horizontal, il faut procéder ligne par ligne. Il faut, dans le cas d'un scrolling droite/gauche partir du point 1 et le mettre en 0 jusqu'au point 319 en 318. C'est le contraire dans l'autre sens. C'est plus lent car on ne peut le faire en une fois par une instruction rep; movsl, mais comme les processeurs sont de plus en plus puissants, ce défaut devient caduque.
En ce qui concerne l'apparition d'un décor sur la nouvelle ligne, cette fonction est traitée sur la page concernant Le scrolling avec insertion de décor.