10-15-3
Restitution du fond de la voiture
La
restitution du fond d’écran intervient à plusieurs reprises dans le programme
et c’est pour cela qu’elle est mise en sous-programme. On peut dire qu’elle s’apparente
à au dessin d’un sprite qui se trouverait mémorisé à l’adresse FOND. Sauf que
là il est dessiné d’un bloc sans aucun contrôle sur les octets. L’algorithme
est le même que pour le dessin de la voiture ou de l’explosion, il est donc
inutile de le rappeler ici. DE pointe l’adresse écran de la ligne du haut du
fond à restituer. La taille du fond est celle de la voiture, donc LOSPRITE x
HSPRITE (4 x 10 octets).
RESTFOND
LD DE,(PLFOND) ; DE =
pointeur sur la ligne écran du fond
LD
HL,FOND ; HL pointe le fond du
sprite
LD
B,HSPRITE ; B = nombre de lignes du fond
à copier
RESTFON2
PUSH DE ;
mémorisation du pointeur sur la ligne écran du fond
PUSH
HL ; mémorisation du pointeur
sur le fond du sprite
EX
DE,HL
LD E,(HL)
INC
HL
LD
D,(HL) ; DE =
adresse de la ligne de fond courante
LD
HL,(SEGMENT) ; HL = segment du fond d'écran
ADD
HL,DE
EX
DE,HL ; DE
= bord gauche de la zone écran à restituer
POP
HL ; HL = pointeur sur le
fond
PUSH
BC
LD
C,LOSPRITE ; BC = nombres d'octets à
restituer en largeur
LD
B,0
LDIR ;
Restitution de la ligne de fond courante
POP BC
POP DE
INC DE
INC
DE ; DE pointe l'adresse de
la ligne écran suivante
DJNZ
RESTFON2 ; Lignes terminées? non => RESTFOND
RET