10-15-5 Les dialogues

Dessin de la « boite à message »

 

Avant d’afficher un message blanc sur fond vert, on affiche un rectangle vert entouré de blanc. Ceci permet de donner une meilleure présentation aux textes. Cependant, cette boite possède ici une taille et un emplacement fixe à l’écran, mais il n’en faudrait pas beaucoup plus pour paramétrer cette taille et sa position. Le rectangle n’est pas créé par interruption, mais avec l’aide du tableau des adresses de ligne écran. HL commence le pointage de la ligne 87 dans le tableau de ligne (octet LIGNES + 174). Le compteur C permet ensuite de dessiner 11 lignes de la manière suivante :

 

2

1

1

1

1 x &78

1

1

1

1

33 x &F0

1

1

1

2

1 x &E1

 

Pour compléter le tout, on dessine ensuite une ligne blanche au-dessus et en-dessous.

 

BOITE    PUSH AF               ; Sauvegarde des registres généraux

         PUSH BC

         PUSH DE

         PUSH HL  

 

         LD HL,LIGNES + 174    ; HL pointe la ligne 87

         LD BC,&210B

 

BOITE1   PUSH HL

         LD E,(HL)

         INC HL

         LD D,(HL)              ; DE = adresse écran de la ligne

         LD HL,22               ; colonne texte 11

         ADD HL,DE

         LD (HL),&78            ; Blanc à gauche de la boite

         INC HL

BOITE2   LD (HL),&F0            ; Remplissage de vert

         INC HL

         DJNZ BOITE2

         LD (HL),&E1            ; Blanc à droite de la boite

         LD B,&21

         POP HL

         INC HL

         INC HL

         DEC C

         JR NZ,BOITE1

 

         LD HL,&F336            ; HL = ligne 86, octet 11

         LD DE,&CBD6            ; DE = ligne 97, octet 11

         LD B,&23

         LD A,&0F

BOITE3   LD (HL),A              ; ligne blanche / fond vert en 86

         LD (DE),A              ; ligne blanche / fond vert en 97

         INC HL

         INC DE

         DJNZ BOITE3

 

         POP HL                 ; Restauration des registres

         POP DE

         POP BC

         POP AF

         RET     

 

 

Affichage des textes

 

Pour finir, l’affichage des textes se fait avec la fameuse fonction étudiée depuis la partie 7. On initialise quand même les couleurs d’encre et de papier.

 

PRINTF   PUSH AF        ; sauvegarde de AF et HL

         PUSH HL

 

         LD A,2         ; PEN 2 (blanc)

         CALL &BB90

         LD A,1         ; PAPER 1 (vert)

         CALL &BB96

 

         POP HL         ; HL pointe le texte à écrire

 

PRINT1   LD A,(HL)      ; A <- caractère pointé pas HL.

         OR A           ; A <- A OU A (détection de 0)

         JR Z,PRINT2    ; Si A=0 => PRINT2

         CALL &BB5A     ; vecteur d'affichage d'un caractère

         INC HL         ; HL pointe le caractère suivant

         JP PRINT1      ; revient à PRINT1

PRINT2   POP AF         ; AF restitué

         RET            ; Retour de sous-programme

 

 

TEXTE1   DB "GAGNE !",0         ; Textes de fin de partie

TEXTE2   DB "MEILLEUR TEMPS !",0

TEXTE3   DB "PERDU !",0

TEXTE4   DB "A BIENTOT !",0

 

 

<< RETOUR  ---  SUITE : Les sons >>