bulle_de_parole: ld hl,buffer_ecran-1444d ; sprite de premier plan ld (dessine_hl),hl ld hl,buffer_ecran-second_buffer ld (dessine_ix),hl ld bc,768 ; fait une copie de l'ecran ld de,ecran3 ld hl,buffer_ecran ldir ld bc,768 ld de,ecran4 ld hl,second_buffer ldir ld a,136 ld (tete_ga_avance),a ld a,255 ld (tete_dr_avance),a ld a,0 ld (tete_de_droite),a ld (tete_de_gauche),a parole_suivante: ld bc,768 ; reinitialise l'ecran ld de,buffer_ecran ld hl,ecran3 ldir ld bc,768 ld de,second_buffer ld hl,ecran4 ldir ld a,0 ld (tete_sera_droite),a ld (tete_sera_gauche),a ; ***************** Extirpe les data ld hl,(dialogue) ; HAUTEUR DES BULLES ld a,(hl) inc hl ld (dialogue),hl cp 75 jr c,bulle_en_fonction sub 75 ld b,a jp passe_bulle_hauteur bulle_en_fonction: cp 50 jr c,bulle_bas sub 50 ld b,a ld a,0 ld (hauteur_bulle),a jp passe_bulle_hauteur bulle_bas: cp 25 jr c,bulle_haut sub 25 ld b,a ld a,1 ld (hauteur_bulle),a bulle_haut: passe_bulle_hauteur: ld a,b ; tete et autre flag_entrer = var temporaire de tete cp 20 jr c,pas_tete sub 20 ld b,a ld a,0 ld (flag_entrer),a jp tete_ga pas_tete: cp 15 jr c,tete_en_fonction sub 15 ld b,a ld a,1 ld (flag_entrer),a jp tete_ga tete_en_fonction: cp 10 jr c,tete_deux_cote sub 10 ld b,a ld a,2 ld (flag_entrer),a jp tete_ga tete_deux_cote: cp 5 jr c,tete_dr sub 5 ld b,a ld a,3 ld (flag_entrer),a jr tete_ga tete_dr: ld a,4 ld (flag_entrer),a tete_ga: ld a,b ld (ligne_bulle),a cp 0 ; PLUS DE DIALOGUE ****** jr nz,termine_bulle_dialogue call drawcarte ret termine_bulle_dialogue: ; copie les data sur les tetes ld a,(flag_entrer) cp 0 jp z,pas_data_tete cp 2 jr z,data_tete_deux_cote cp 3 jr nz,data_tete_dr data_tete_deux_cote: ld b,a ld hl,(dialogue) ld a,(hl) inc hl ld (dialogue),hl ld (tete_sera_droite),a ld a,b data_tete_dr: cp 2 jr z,data_tete_deux_cote2 cp 4 jr nz,data_tete_ga data_tete_deux_cote2: ld b,a ld hl,(dialogue) ld a,(hl) inc hl ld (dialogue),hl ld (tete_sera_gauche),a ld a,b data_tete_ga: pas_data_tete: ; ***************** DESSINE BULLE ld a,1 ld (flag_entrer),a ld a,(hauteur_bulle) cp 1 jr z,bulle_1 ld a,2 ld (textex),a ld a,37 ld (textey),a ld hl,buffer_ecran+432 jr bulle_0 bulle_1: ld a,2 ld (textex),a ld a,1 ld (textey),a ld hl,buffer_ecran bulle_0: ld bc,336 dessine_bulle: ld (hl),0 inc hl dec bc ld a,b cp 1 jr z,dessine_bulle ld a,c cp 0 jr nz,dessine_bulle ; ***************** Fait une enluminure a la bulle ld b,12 bulle_trait1: dec hl ld (hl),%11111111 djnz bulle_trait1 ld b,27 ld de,12 bulle_trait2: sbc hl,de ld (hl),%10000000 djnz bulle_trait2 ld b,12 bulle_trait3: ld (hl),%11111111 inc hl djnz bulle_trait3 ld b,26 dec hl bulle_trait4: add hl,de ld (hl),%00000001 djnz bulle_trait4 ; ***************** AFFICHE LES TEXTES boucle_bulle: ld hl,(dialogue) ld b,0 ld c,(hl) push bc inc hl ld (dialogue),hl B_CALL(affiche_texte) ld a,(textey) ld b,6 add a,b ld (textey),a ld a,2 ld (textex),a ld hl,(dialogue) pop bc add hl,bc ld (dialogue),hl ld a,(ligne_bulle) dec a ld (ligne_bulle),a cp 0 jp nz,boucle_bulle ; ***************** COPIE DE LA BULLE SUR LE SECOND BUFFER ld a,(hauteur_bulle) cp 1 jr z,bulle2_1 ld hl,buffer_ecran+432 ld de,second_buffer+432 jr bulle2_0 bulle2_1: ld hl,buffer_ecran ld de,second_buffer bulle2_0: ld bc,336 ldir ; ***************** LAISSE LE TEMPS DE LIRE attend_lecture: ; ***************** AFFICHE LA TETE ld a,(reman_flag) ; copie l'ecran en dehors de la bulle cp 0 jr z,remanence3_0 ld de,buffer_ecran ld hl,ecran3 jr remanence3_1 remanence3_0: ld de,second_buffer ld hl,ecran4 remanence3_1: ld a,(hauteur_bulle) cp 1 jr z,bulle3_1 ld b,100 jr bulle3_0 bulle3_1: ld bc,336 add hl,bc push hl ld h,d ld l,e add hl,bc ld d,h ld e,l pop hl ld b,128 bulle3_0: push bc ld bc,432 ldir pop bc ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ld a,(tete_de_droite) ; tete a droite ld d,a ld a,(tete_dr_avance) ld c,a ld a,(tete_sera_droite) cp d jp z,tete_vient ld a,c inc a cp 255 jr nz,change_tete ld d,a ld a,(tete_sera_droite) ld (tete_de_droite),a ld a,d change_tete: jp tete_part tete_vient: ld a,c cp 233 jr c,tete_vient_plus dec a tete_vient_plus: tete_part: ld (tete_dr_avance),a ld a,(tete_de_droite) cp 0 jp z,pas_affiche_tete_dr cp 1 ; tete du roi jr nz,pas_tete_roi ld hl,tete_roi pas_tete_roi: cp 2 ; tete tigre rouge jr nz,pas_tete_tigre ld hl,Tigre pas_tete_tigre: cp 3 ; tete du heros jr nz,pas_tete_hero ld hl,Heros_dialogue pas_tete_hero: call dessine ld a,c add a,8 ld c,a call dessine ld a,c add a,8 ld c,a call dessine jr affiche_tete_dr pas_affiche_tete_dr: ld a,254 ld (tete_dr_avance),a affiche_tete_dr: ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ld a,(tete_de_gauche) ; tete a gauche ld d,a ld a,(tete_ga_avance) ld c,a ld a,(tete_sera_gauche) cp d jp z,tete_vient2 ld a,c dec a cp 136 jr nz,change_tete2 ld d,a push de ld a,(tete_sera_gauche) ld (tete_de_gauche),a ; RETOURNE LES IMAGES cp 1 ; tete du roi jr nz,pas_tete_roi2 ld de,tete_roi pas_tete_roi2: cp 2 ; tete tigre rouge jr nz,pas_tete_tigre2 ld de,Tigre pas_tete_tigre2: cp 3 ; tete du heros jr nz,pas_tete_hero2 ld de,Heros_dialogue pas_tete_hero2: ld hl,tete_retourne ld (hl),36 ld b,3 tourne_total: push bc ld b,72 tourne_image: push bc ld b,8 tourne_octet: push hl ld h,d ld l,e ; de > hl rlc (hl) ld d,h ld e,l pop hl ; hl > de & remove hl rr (hl) djnz tourne_octet inc hl inc de pop bc djnz tourne_image pop bc djnz tourne_total pop de ld a,d change_tete2: jp tete_part2 tete_vient2: ld a,c cp 160 jr nc,tete_vient_plus2 inc a tete_vient_plus2: tete_part2: ld (tete_ga_avance),a ld a,(tete_de_gauche) cp 0 jp z,pas_affiche_tete_ga ld hl,tete_retourne+146 push hl call dessine pop hl or a ; reset carry flag ld de,73 sbc hl,de ld a,c add a,8 ld c,a push hl call dessine pop hl or a ; reset carry flag ld de,73 sbc hl,de ld a,c add a,8 ld c,a call dessine jr affiche_tete_ga pas_affiche_tete_ga: ld a,137 ld (tete_ga_avance),a affiche_tete_ga: ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ld a,0ffh out (1),a ;met à 0 le clavier ld a,0fdh out (1),a ;actif in a,(1) cp kClear jp z,quit ld b,a ld a,(flag_entrer) cp 1 jr z,entrer_deja_enfonce ld a,b cp KEnter jp z,parole_suivante entrer_deja_enfonce: ld a,b cp KEnter jr z,entrer_encore_enfonce ld a,0 ld (flag_entrer),a entrer_encore_enfonce: ld a,(reman_flag) cp 0 jr z,remanence2_0 ld hl,buffer_ecran-12-(-(12*64)+1) ld a,0 jr remanence2_1 remanence2_0: ld hl,second_buffer-12-(-(12*64)+1) ld a,1 remanence2_1: ld (reman_flag),a call affiche jp attend_lecture