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

 

 

<< RETOUR  ---  SUITE : Boucle de temporisation >>