Infos.txt Auteur :Plissken Date :25/02/02
Bonjour,voici des informations concernant cette petite demo:l'ondulation
en haut de l'ecran n'est pas de moi,j'avais essaye de le faire mais mes essais
ne me donnait pas satisfaction,alors j'ai repris cette routine que j'ai trouve
dans amstrad cent pour cent numero 39,je l'ai etudier,puis rajoute a mon code.
Je souhaite expliquer cette routine pour montrer que j'ai compris le
fonctionnement de la routine et que je suis capable de la refaire.
Le principe de l'ondulation,dit aussi "screen waggle",est de changer
les valeurs contenues dans le registre 2 du crtc.Le registre 2 du crtc permet
d'indiquer au crtc le moment de l'impulsion Hsync,c'est a dire la
synchronisation horizontale.En modifiant la valeur du registre 2,on change
l'instant ou l'ecran va commencer,ce qui se traduit visuelement par un decalage
de l'ecran.
Explication de la routine :on va changer la valeur du registre 2 du
crtc suivant une table de valeur et a l'aide d'un decalage du pointeur,ce qui
se traduira visuellement par une ondulation
ld b,5
synchro djnz synchro ;la boucle synchro nous permet d'etre synchronise avec
;la HBL
ld hl,color ;HL pointe vers la table des couleurs
var ld de,ondul :DE lui,pointe vers la table d'ondulation
ld b,40 ;Nous souhaitons un raster de 40 lignes,donc on
;charge b avec le nombre de lignes desire,il nous
;servira de compteur
mloop ;
push bc ;on sauvegarde le contenu de b,car bc va nous servir
;pour le raster
ld bc,&7f04 ;c'est le crayon 4 qui va accueillir le raster
out (c),c ;on valide
outi ;on va afficher le raster avec des outi
ld bc,&bc02 ;on va s'occuper du registre 2 du crtc
out (c),c ;on valide
inc b ;b contient &bd au lieu de &bc
ld a,(de) ;on met dans A la valeur de l'octet pointe par DE
inc de ;on incremente de
out (c),a ;on valide
ld b,6 ;on continue la boucle jusqu'a ce que b=0
tempo djnz tempo
pop bc ;on ressort b de la pile
djnz mloop ;on decremente le contenu du registre b et on
;reboucle s'il n'est pas egal a 0
ld bc,&7f01 ;
out (c),c
ld a,&5c
out (c),c
out (c),a
ld bc,&bc02 ;on remet dans le registre 2 sa valeur normale
out (c),c
ld bc,&bd00+46
out (c),c
ld hl,(var+1) ;on se deplace d'un cran dans la table d'ondulation
inc hl ;
varcom ld a,1 ;
dec a ;a=a-1
jp nz,noreset ;si le contenu de a est 0 alors on va a noreset
;qui remetra la valeur d'origine dans a
ld a,30
ld hl,ondulecran
noreset ld (varcom+1),a ;on met la valeur de a dans varcom+1 :automodif
ld (var+1),hl ;on met dans var+1,le contenu de HL
ondulecran ;variable pour le registre 2 du crtc
defb 46,47,47,48,48,48
defb 49,49,49,49,48,48,48
defb 47,47,46,45,45,44
defb 44,44,43,43,43,43
defb 44,44,44,45,45
defb 46,47,47,48,48,48
defb 49,49,49,49,48,48,48
defb 47,47,46,45,45,44
defb 44,44,43,43,43,43
defb 44,44,44,45,45
defb 46,47,47,48,48,48
defb 49,49,49,49,48,48,48
defb 47,47,46,45,45,44
defb 44,44,43,43,43,43
defb 44,44,44,45,45
color ;couleur pour le raster dans le logo plissken
defb &5c,&4c,&5c,&4c,&4c
defb &4e,&4c,&4e,&4e,&4a
defb &4e,&4a,&4a,&43,&43
defb &43,&43,&4b,&43,&4b
defb &43,&43,&4a,&4a,&4e
defb &4b,&43,&4b,&43,&43
defb &4a,&4e,&4e,&4c,&4e
defb &4c,&4c,&5c,&4c,&54