home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / graph / fade.asm < prev    next >
Assembly Source File  |  1994-10-07  |  2KB  |  75 lines

  1. data segment public
  2.   extrn colors:word
  3. data ends
  4.  
  5. code segment public
  6. assume cs:code,ds:data
  7. public fade_set,fade_ResetPic
  8.  
  9.  
  10. col db 0                        ;segment de code pour Colors
  11.  
  12.  
  13. fade_set proc pascal near source:dword, start:word, y:word, hauteur:word
  14.   mov ax,colors       ;reporte Colors dans la variable de segment de code col
  15.   mov col,al
  16.   push ds
  17.   mov ax,word ptr Source + 2    ;ds:si doit pointer sur l'image source
  18.   mov ds,ax
  19.   mov si,word ptr Source
  20.  
  21.   mov ax,320       ;ajoute l'adresse de début à l'intérieur de l'image source
  22.   mul start
  23.   add si,ax
  24.  
  25.   mov ax,0a000h                 ;es:di doit pointer sur 0a000:0 (destination)
  26.   mov es,ax
  27.   mov ax,320                    ;ajoute l'adresse de début à l'intérieur 
  28.   mul y                         ;de l'image de destination
  29.   mov di,ax
  30.  
  31.   mov ax,320                    ;convertit la hauteur en nombre d'octets
  32.   imul hauteur
  33.   mov cx,ax
  34.  
  35. lp:                             ;boucle principale
  36.   lodsb                         ;valeur de destination en al
  37.   mul col                       ;calcule la nouvelle couleur
  38.   add al,es:[di]                ;ajoute la valeur actuelle
  39.   add al,col
  40.   stosb                         ;et écrit le résultat
  41.  
  42.   dec cx                        ;tous les pixels copiés ?
  43.   jne lp
  44.  
  45.   pop ds
  46.   ret
  47. fade_set endp
  48.  
  49. fade_ResetPic proc pascal far y:word, hauteur:word
  50.   mov ax,0a000h                 ;es:di doit pointer sur l'adresse VGA 0a000:0
  51.   mov es,ax
  52.  
  53.   mov ax,320                    ;tient compte de l'ordonnée y
  54.   mul y
  55.   mov di,ax
  56.  
  57.   mov ax,320                    ;calcule le nombre d'octets à traiter
  58.   mul hauteur
  59.   mov cx,ax
  60. res_lp:
  61.   mov al,es:[di]                ;lit une valeur
  62.   xor ah,ah                     ;annule ah pour la division!
  63.   div byte ptr colors           ;calcule le numéro de bloc
  64.   dec al                         ;extrait le bloc de Reset
  65.   stosb                         ;écrit le résultat
  66.  
  67.   dec cx                        ;tous les pixels traités?
  68.   jne res_lp                    ;non, on continue
  69.  
  70.   ret
  71. fade_ResetPic endp
  72.  
  73. code ends
  74. end
  75.