Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

127 lines
3.3 KiB

;-----------------------------------------------------------------------------
;
; This file contains texture read functions.
; WARNING WARNING WARNING
; This asm file generated from mas file.
; EDIT THE MAS FILE.
; I warned you.
; WARNING WARNING WARNING
;
; Register useage for now.
;
; TODO Optimization: make different cases for colorkey and no colorkey since
; I cant shift to the quad word since I need to compare with colorkey
;
; Is all of these register useages still true?
;
; In all routines, address of iU and iV will come in as eax
; mm5 is reserved for border mask.
; mm6 and mm7 are reserved for bilinear calculation taking place in
; texture address routines.
;
; iShiftU will generate a multiplier to generate texture address
; it will be in mm3
;
; edi = pBits for now.
; pTex will still be in esi or whatever register I gave it for Texaddr
; routines.
;
; Output will go to mm1 for use by texaddr routines.
; TBD make sure that alpha value is always set.
; TBD make sure that color is returned in bytes from low byte to high byte
; as b, 0, g, 0, r, 0, a, 0. This will make it convient for the pmul.
;
;-----------------------------------------------------------------------------
INCLUDE iammx.inc
INCLUDE offs_acp.inc
include(`m4hdr.mh')dnl
include(`cvars.mh')dnl
include(`texread.mh')dnl
.586
.model flat
.data
; Red and Blue are masked after the shifts.
PUBLIC SetAlphato0xffff
SetAlphato0xffff dq 0ffff000000000000h
CheckLowTwo8BitSignbits dq 08080h
Val0xffff00 dq 0ffff00h
Val0x00ff00ff dq 000ff00ffh
Val0xff00ff00 dq 0ff00ff00h
PUBLIC MaskRed565to888
MaskRed565to888 dq 0000000000f80000h
PUBLIC MaskRed555to888
MaskRed555to888 dq 0000000000f80000h
PUBLIC MaskGreen565to888
MaskGreen565to888 dq 00000000000007e0h
PUBLIC MaskGreen555to888
MaskGreen555to888 dq 00000000000003e0h
PUBLIC MaskBlue565to888
MaskBlue565to888 dd 000000f8h
PUBLIC MaskBlue555to888
MaskBlue555to888 dd 000000f8h
MaskGreen444to888 dq 00000000000000f0h
MaskRedBlue444to888 dq 0000000000000f0fh
MaskAlphaGreen4444to8888 dq 000000000000f0f0h
MaskRedBlue4444to8888 dq 0000000000000f0fh
PUBLIC MaskAlpha1555to8888
MaskAlpha1555to8888 dq 0000000000008000h
PUBLIC MaskRed1555to8888
MaskRed1555to8888 dq 0000000000f80000h
PUBLIC MaskBlue1555to8888
MaskBlue1555to8888 dq 000000f8h
PUBLIC MaskGreen1555to8888
MaskGreen1555to8888 dd 0000f800h
PUBLIC MaskL8A8ALPHA
MaskL8A8ALPHA dd 000000ffh
EXTERN SetAlphato0xff:MMWORD
.code
RedShift565to888 equ 8
GreenShift565to888 equ 5
BlueShift565to888 equ 3
RedShift555to888 equ 9
GreenShift555to888 equ 6
BlueShift555to888 equ 3
AlphaShift1555to8888 equ 16
RedShift1555to8888 equ 9
GreenShift1555to8888 equ 6
BlueShift1555to8888 equ 3
EXTERN Zero:MMWORD
d_DoTex(`d_Palette8') dnl
d_DoTex(`d_Palette4') dnl
d_DoTex(`d_Palette8A') dnl
d_DoTex(`d_Palette4A') dnl
d_DoTex(`d_B8G8R8') dnl
d_DoTex(`d_B8G8R8A8') dnl
d_DoTex(`d_B5G6R5') dnl
d_DoTex(`d_B5G5R5') dnl
d_DoTex(`d_B5G5R5A1') dnl
d_DoTex(`d_B4G4R4') dnl
d_DoTex(`d_B4G4R4A4') dnl
d_DoTex(`d_L8') dnl
d_DoTex(`d_L8A8') dnl
END