home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Party 1994: Try This At Home
/
disk_image.bin
/
source
/
vexsrc
/
colors2.asm
< prev
next >
Wrap
Assembly Source File
|
1995-03-29
|
3KB
|
183 lines
comment #
/*****************************************************************************
ATTENTION!
this source is VOTEWARE,
you may only use it to the conditions listed below:
-You may modify it, or use parts of it in your own source as long as
this header stays on top of all files containing this source.
-You must give proper credit to the author, Niklas Beisert / pascal.
-You may not use it in commercial productions without the written
permission of the author.
-AND MOST IMPORTANT: you have to buy an Assembly '94 CD-ROM
by Sound Solutions (if you don't have it already) and vote for VEX-InTrO
in the PC-64k-Intro-Compo! (if you have already sent your voting card,
buy another one and fill it out CORRECTLY!!!)
*****************************************************************************/
#
;// palette set and interpolate functions
.model large, c
.386
locals
.code
public GetColors
public SetColors
public SetColorsBlack
public SetColor
public MakeFadeStep
public InterpolCols
MakeFadeStep proc uses ds si di, cols:dword, colss:dword, colsd:dword, n:word, s:word
cld
lds si,colsd
lfs bx,colss
sub bx,si
les di,cols
mov cx,n
shl cx,1
add n,cx
jz @@end
mov dx,s
mov dh,128
sub dh,dl
@@lp:
mov al,fs:[bx+si]
mul dh
mov cx,ax
lodsb
mul dl
add ax,cx
shr ax,7
stosb
dec n
jne @@lp
@@end:
ret
endp
InterpolCols proc uses si di, cols:dword, n:word, crs:word, cgs:word, cbs:word, crd:word, cgd:word, cbd:word
cld
les di,cols
mov cx,n
jcxz @@end
mov ax,32768
xor dx,dx
div cx
mov cx,ax
xor bx,bx
mov dx,128
@@lp:
mov al,byte ptr crs
mul dl
mov si,ax
mov al,byte ptr crd
mul dh
add ax,si
shr ax,7
stosb
mov al,byte ptr cgs
mul dl
mov si,ax
mov al,byte ptr cgd
mul dh
add ax,si
shr ax,7
stosb
mov al,byte ptr cbs
mul dl
mov si,ax
mov al,byte ptr cbd
mul dh
add ax,si
shr ax,7
stosb
add bx,cx
mov dh,bh
mov dl,128
sub dl,dh
dec n
jne @@lp
@@end:
ret
endp
GetColors proc uses di, cols:dword, c0:word, n:word
cld
les di,cols
mov cx,n
shl cx,1
add cx,n
mov dx,3C7h
mov al,byte ptr c0
out dx,al
add dx,2
jcxz @@end
@@lp:
in al,dx
shl al,2
stosb
loop @@lp
@@end:
ret
endp
SetColors proc uses ds si, cols:dword, c0:word, n:word
cld
lds si,cols
mov cx,n
shl cx,1
add cx,n
mov dx,3C8h
mov al,byte ptr c0
out dx,al
inc dx
jcxz @@end
@@lp:
lodsb
shr al,2
out dx,al
loop @@lp
@@end:
ret
endp
SetColorsBlack proc
mov cx,300h
mov dx,3C8h
xor al,al
out dx,al
inc dx
@@sc:
out dx,al
loop @@sc
ret
endp
SetColor proc n:word, r:word, g:word, b:word
mov dx,3C8h
mov ax,n
out dx,al
inc dx
mov al,byte ptr r
shr al,2
out dx,al
mov al,byte ptr g
shr al,2
out dx,al
mov al,byte ptr b
shr al,2
out dx,al
ret
endp
end