home *** CD-ROM | disk | FTP | other *** search
- data segment public
- extrn colors:word
- data ends
-
- code segment public
- assume cs:code,ds:data
- public fade_set,fade_ResetPic
-
-
- col db 0 ;segment de code pour Colors
-
-
- fade_set proc pascal near source:dword, start:word, y:word, hauteur:word
- mov ax,colors ;reporte Colors dans la variable de segment de code col
- mov col,al
- push ds
- mov ax,word ptr Source + 2 ;ds:si doit pointer sur l'image source
- mov ds,ax
- mov si,word ptr Source
-
- mov ax,320 ;ajoute l'adresse de début à l'intérieur de l'image source
- mul start
- add si,ax
-
- mov ax,0a000h ;es:di doit pointer sur 0a000:0 (destination)
- mov es,ax
- mov ax,320 ;ajoute l'adresse de début à l'intérieur
- mul y ;de l'image de destination
- mov di,ax
-
- mov ax,320 ;convertit la hauteur en nombre d'octets
- imul hauteur
- mov cx,ax
-
- lp: ;boucle principale
- lodsb ;valeur de destination en al
- mul col ;calcule la nouvelle couleur
- add al,es:[di] ;ajoute la valeur actuelle
- add al,col
- stosb ;et écrit le résultat
-
- dec cx ;tous les pixels copiés ?
- jne lp
-
- pop ds
- ret
- fade_set endp
-
- fade_ResetPic proc pascal far y:word, hauteur:word
- mov ax,0a000h ;es:di doit pointer sur l'adresse VGA 0a000:0
- mov es,ax
-
- mov ax,320 ;tient compte de l'ordonnée y
- mul y
- mov di,ax
-
- mov ax,320 ;calcule le nombre d'octets à traiter
- mul hauteur
- mov cx,ax
- res_lp:
- mov al,es:[di] ;lit une valeur
- xor ah,ah ;annule ah pour la division!
- div byte ptr colors ;calcule le numéro de bloc
- dec al ;extrait le bloc de Reset
- stosb ;écrit le résultat
-
- dec cx ;tous les pixels traités?
- jne res_lp ;non, on continue
-
- ret
- fade_ResetPic endp
-
- code ends
- end
-