Main Page | Alphabetical List | Compound List | File List | Compound Members | File Members

drawspan.c File Reference

#include <Windows.h>
#include <Assert.h>
#include <math.h>
#include "BaseType.h"
#include "Render.h"
#include "SoftDrv.h"
#include "drawspan.h"

Go to the source code of this file.

Functions

void DrawSpan16_AsmX86FPU (int32 x1, int32 x2, int32 y)
void DrawSpan16_8AsmLitX86FPU (int32 x1, int32 x2, int32 y)

Variables

double MipMagic
double MipMagic2
int32 R1
int32 B1
int32 G1
int32 R2
int32 G2
int32 B2
int32 RR1
int32 RR2
int32 GG1
int32 GG2
int32 BB1
int32 BB2
int32 StepR
int32 StepG
int32 StepB
int32 UDist
int32 VDist
int32 U1 = 0
int32 V1 = 0
int32 NumSpans = 0
int32 CKeyTest = 0
geFloat FloatTemp
geFloat FTemp0
geFloat FTemp1
geFloat FTemp2
geFloat FTemp3
geFloat FTemp4
geFloat FTemp5
geFloat FTemp6
geFloat FTemp7
geFloat FTemp8
geFloat const One = 1.0f
geFloat const Two = 2.0f
U32 UMask
U32 VShift
U32 VMask
int32 ZDelta
int32 ZVal
geFloat ZBufferPrec = (geFloat)-ZBUFFER_PREC
__int64 RedDelta
__int64 GreenDelta
__int64 BlueDelta
uint32 NumASpans
uint32 RemainingCount
double DeltaU
double DeltaV
uint32 UFixed
uint32 VFixed
uint8pTex


Function Documentation

void DrawSpan16_8AsmLitX86FPU int32  x1,
int32  x2,
int32  y
 

Definition at line 698 of file drawspan.c.

References Bucket, Bucket2, DRV_Window::Buffer, ClientWindow, DeltaU, DeltaV, FloatTemp, GBitPtr16, GHMaskShifted, GHMaskShifted16, GLMapMulU, GLMapMulV, GWMask, GWMaskShifted, MaxU, MaxV, MipMagic, MipMagic2, NumASpans, pTex, RemainingCount, U1, UAdjust, UAdjust2, UAdjustL, UDivZ16StepX, UDivZOrigin, UDivZStepX, UDivZStepY, UFixed, V1, VAdjust, VAdjust2, VAdjustL, VDivZ16StepX, VDivZOrigin, VDivZStepX, VDivZStepY, VFixed, VShift, DRV_Window::Width, y, Zi, Zi16StepX, ZiOrigin, ZiStepX, and ZiStepY.

00699 {
00700         _asm
00701         {
00702                 mov             eax,x1
00703                 mov             ecx,x2
00704                 sub             ecx,eax
00705                 jle             Return16
00706 
00707                 mov             edi,[GBitPtr16]
00708                 inc             ecx
00709                 shr             edi, 1                                  ; keep texture >>1
00710                 mov             pTex,edi
00711 
00712                 fild    [y]                                             ; y
00713 
00714                 mov             edi, ClientWindow.Buffer
00715                 mov             eax, y
00716                 imul    eax, ClientWindow.Width
00717                 add             eax, x1
00718                 shl             eax, 1
00719                 add             edi, eax
00720                 mov             eax,ecx
00721                 shr             ecx,3
00722                 and             eax,7
00723                 _emit 75h
00724                 _emit 06h
00725                 dec             ecx
00726                 mov             eax,8
00727 
00728                 mov             [NumASpans],ecx
00729                 mov             [RemainingCount],eax
00730 
00731                 fild [x1]                                               ; x    y
00732 
00733                 //decoder won't keep up with these huge instructions
00734                 //need to find some int instructions to cram in here somewhere
00735                 fld             [UDivZStepY]                    ; UZdY x    y
00736                 fld             [UDivZStepX]                    ; UZdX UZdY x    y
00737                 fmul    st,st(2)                                ; UZX  UZdY x    y
00738                 fld             [VDivZStepY]                    ; VZdY UZX  UZdY x    y
00739                 fld             [VDivZStepX]                    ; VZdX VZdY UZX  UZdY x    y
00740                 fxch    st(3)                                   ; UZdy VZdY UZX  VZdX x    y
00741                 fmul    st,st(5)                                ; UZY  VZdY UZX  VZdX x    y
00742                 fxch    st(2)                                   ; UZX  VZdY UZY  VZdX x    y
00743                 fadd    [UDivZOrigin]                   ; UZXS VZdY UZY  VZdX x    y
00744                 fxch    st(3)                                   ; VZdX VZdY UZY  UZXS x    y
00745                 fmul    st,st(4)                                ; VZX  VZdY UZY  UZXS x    y
00746                 fxch    st(2)                                   ; UZY  VZdY VZX  UZXS x    y
00747                 faddp   st(3),st                                ; VZdY VZX  UZ   x    y
00748                 fmul    st,st(4)                                ; VZY  VZX  UZ   x    y
00749                 fxch    st(1)                                   ; VZX  VZY  UZ   x    y
00750                 fadd    [VDivZOrigin]                   ; VZXS VZY  UZ   x    y
00751                 fld             [ZiStepX]                               ; ZdX  VZXS VZY  UZ   x    y
00752                 fmulp   st(4),st                                ; VZXS VZY  UZ   ZX   y
00753                 faddp   st(1),st                                ; VZ   UZ   ZX   y
00754                 fld             [ZiStepY]                               ; ZdY  VZ   UZ   ZX   y
00755                 fmulp   st(4),st                                ; VZ   UZ   ZX   ZY
00756                 fxch    st(2)                                   ; ZX   UZ   VZ   ZY
00757                 fadd    [ZiOrigin]                              ; ZXS  UZ   VZ   ZY
00758 
00759                 //room for two cycles of int instructions here
00760 
00761                 faddp   st(3),st                                ; UZ   VZ   Zi
00762                 fld1                                                    ; 1    UZ   VZ   Zi
00763                 fdiv    st,st(3)                                ; ZL   UZ   VZ   Zi
00764 
00765                 //room for 18 cycles of int instructions here
00766 
00767                 fld             st                                              ; ZL   ZL   UZ   VZ   Zi
00768                 fmul    st,st(3)                                ; VL   ZL   UZ   VZ   Zi
00769                 fxch    st(4)                                   ; Zi   ZL   UZ   VZ   VL
00770                 fadd    [Zi16StepX]                             ; ZRi  ZL   UZ   VZ   VL
00771                 fxch    st(1)                                   ; ZL   ZRi  UZ   VZ   VL
00772                 fmul    st,st(2)                                ; UL   ZRi  UZ   VZ   VL
00773                 fxch    st(3)                                   ; VZ   ZRi  UZ   UL   VL
00774                 fadd    [VDivZ16StepX]                  ; VZR  ZRi  UZ   UL   VL
00775                 fxch    st(2)                                   ; UZ   ZRi  VZR  UL   VL
00776                 fadd    [UDivZ16StepX]                  ; UZR  ZRi  VZR  UL   VL
00777                 fld1                                                    ; 1    UZR  ZRi  VZR  UL   VL
00778                 fdiv    st,st(2)                                ; ZR   UZR  ZRi  VZR  UL   VL
00779 
00780                 //room for 18 cycles of int stuff here
00781 
00782                 fld             st                                              ; ZR   ZR   UZR  ZRi  VZR  UL   VL
00783                 fmul    st,st(4)                                ; VR   ZR   UZR  ZRi  VZR  UL   VL
00784                 fxch    st(1)                                   ; ZR   VR   UZR  ZRi  VZR  UL   VL
00785                 //fmul stall one cycle
00786                 fmul    st,st(2)                                ; UR   VR   UZR  ZRi  VZR  UL   VL
00787 
00788                 test    ecx,ecx
00789                 jz              HandleLeftoverPixels16
00790 
00791 SpanLoop16:
00792                 //need one more stack spot
00793                 fstp    dword ptr[FloatTemp]    ; VR   UZR  ZRi  VZR  UL   VL
00794                 fld             st(4)                                   ; UL   VR   UZR  ZRi  VZR  UL   VL
00795                 fmul    [GLMapMulU]                             ; ULL  VR   UZR  ZRi  VZR  UL   VL
00796                 fld             st(5)                                   ; UL   ULL  VR   UZR  ZRi  VZR  UL   VL
00797                 fadd    qword ptr[MipMagic]             ; ULk  ULL  VR   UZR  ZRi  VZR  UL   VL
00798                 fxch    st(1)                                   ; ULL  ULk  VR   UZR  ZRi  VZR  UL   VL
00799                 fadd    qword ptr[MipMagic]             ; ULLk ULk  VR   UZR  ZRi  VZR  UL   VL
00800                 fxch    st(1)                                   ; ULk  ULLk VR   UZR  ZRi  VZR  UL   VL
00801                 fstp    qword ptr[Bucket]               ; ULLk VR   UZR  ZRi  VZR  UL   VL
00802                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
00803 
00804                 mov             ebx,dword ptr[Bucket]
00805                 mov             eax,dword ptr[Bucket2]
00806 
00807                 fld             st(5)                                   ; VL   VR   UZR  ZRi  VZR  UL   VL
00808                 fmul    [GLMapMulV]                             ; VLL  VR   UZR  ZRi  VZR  UL   VL
00809 
00810                 add             ebx,dword ptr[UAdjust]
00811                 add             eax,dword ptr[UAdjustL]
00812 
00813                 mov             [U1],ebx
00814                 mov             [UFixed],eax
00815 
00816                 fld             st(6)                                   ; VL   VLL  VR   UZR  ZRi  VZR  UL   VL
00817                 fadd    qword ptr[MipMagic]             ; VLk  VLL  VR   UZR  ZRi  VZR  UL   VL
00818                 fxch    st(1)                                   ; VLL  VLk  VR   UZR  ZRi  VZR  UL   VL
00819                 fadd    qword ptr[MipMagic]             ; VLLk VLk  VR   UZR  ZRi  VZR  UL   VL
00820                 fxch    st(1)                                   ; VLk  VLLk VR   UZR  ZRi  VZR  UL   VL
00821                 fstp    qword ptr[Bucket]               ; VLLk VR   UZR  ZRi  VZR  UL   VL
00822                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
00823                 fsubr   st(5),st                                ; VR   UZR  ZRi  VZR  UL   dV
00824 
00825                 mov             ebx,dword ptr[Bucket]
00826                 mov             eax,dword ptr[Bucket2]
00827 
00828                 fld             dword ptr[FloatTemp]    ; UR   VR   UZR  ZRi  VZR  UL   dV
00829 
00830                 add             ebx,dword ptr[VAdjust]
00831                 add             eax,dword ptr[VAdjustL]
00832 
00833                 mov             [V1],ebx
00834                 mov             [VFixed],eax
00835 
00836                 fsubr   st(5),st                                ; UR   VR   UZR  ZRi  VZR  dU   dV
00837                 fxch    st(6)                                   ; dV   VR   UZR  ZRi  VZR  dU   UR
00838                 fadd    qword ptr[MipMagic2]    ; dVk  VR   UZR  ZRi  VZR  dU   UR
00839                 fxch    st(5)                                   ; dU   VR   UZR  ZRi  VZR  dVk  UR
00840                 fadd    qword ptr[MipMagic2]    ; dUk  VR   UZR  ZRi  VZR  dVk  UR
00841                 fxch    st(5)                                   ; dVk  VR   UZR  ZRi  VZR  dUk  UR
00842                 fstp    qword ptr[DeltaV]               ; VR   UZR  ZRi  VZR  dUk  UR
00843                 fxch    st(5)                                   ; UR   UZR  ZRi  VZR  dUk  VR
00844                 //gotta do this to get em lined back up right
00845                 fxch    st(4)                                   ; dUk  UZR  ZRi  VZR  UR   VR
00846                 fstp    qword ptr[DeltaU]               ; UZR  ZRi  VZR  UR   VR
00847 
00848                 //right becomes left                    ; UZL  ZLi  VZL  UL   VL
00849                 fadd    [UDivZ16StepX]                  ; UZR  ZLi  VZL  UL   VL
00850                 fxch    st(1)                                   ; ZLi  UZR  VZL  UL   VL
00851                 fadd    [Zi16StepX]                             ; ZRi  UZR  VZL  UL   VL
00852                 fxch    st(2)                                   ; VZL  UZR  ZRi  UL   VL
00853                 fadd    [VDivZ16StepX]                  ; VZR  UZR  ZRi  UL   VL
00854                 fxch    st(2)                                   ; ZRi  UZR  VZR  UL   VL
00855                 fxch    st(1)                                   ; UZR  ZRi  VZR  UL   VL
00856                 //need those fxch to line things up for loops (bad)
00857 
00858                 // Clamp U/V
00859                 mov             ebx,[UFixed]
00860                 cmp             ebx,MaxU
00861                 jle             TryClampU016
00862                 mov             ecx,MaxU
00863                 mov             dword ptr[UFixed],ecx
00864                 jmp             NoClampU016
00865 
00866 TryClampU016:
00867                 cmp             ebx,0
00868                 jge             NoClampU016
00869                 mov             dword ptr[UFixed],0
00870 NoClampU016:
00871                 mov             eax,[VFixed]
00872                 cmp             eax,MaxV
00873                 jle             TryClampV016
00874                 mov             ecx,MaxV
00875                 mov             dword ptr[VFixed],ecx
00876                 jmp             NoClampV016
00877 
00878 TryClampV016:
00879                 cmp             eax,0
00880                 jge             NoClampV016
00881                 mov             dword ptr[VFixed],0
00882 
00883 NoClampV016:
00884 
00885                 fld1                                                    ; 1    UZR  ZRi  VZR  UL   VL
00886 
00887                 // Cache U1/V1
00888                 mov             ebx,dword ptr[UFixed]
00889 
00890                 fdiv    st,st(2)                        ; ZR   UZR  ZRi  VZR  UL   VL
00891 
00892 
00893                 mov             eax,dword ptr[VFixed]
00894 
00895                 mov             ebx,dword ptr[U1]
00896                 mov             eax,dword ptr[V1]
00897 
00898                 add             ebx,dword ptr[UAdjust2]
00899                 add             eax,dword ptr[VAdjust2]
00900 
00901                 mov             ecx,16
00902                 mov             dword ptr[Bucket],ebx
00903 
00904                 sub             ecx,[VShift]
00905                 mov             dword ptr[Bucket2],eax
00906 
00907                 shr             eax,cl
00908 
00909                 push    ebp
00910                 shr             ebx,16
00911 
00912                 and             eax,[GHMaskShifted]
00913                 mov             esi,[pTex]
00914 
00915                 and             ebx,[GWMask]
00916                 add             esi,eax
00917 
00918                 mov             ecx,[VShift]
00919                 add             esi,ebx
00920 
00921                 mov             edx,dword ptr[Bucket2]
00922                 mov             ebp,dword ptr[DeltaV]
00923 
00924                 mov             ebx,dword ptr[Bucket]
00925 
00926                 //do 8 pixels
00927 
00928                 add             edx,ebp
00929                 mov             ax,[2*esi]
00930 
00931                 mov             esi,edx
00932                 add             ebx,dword ptr[DeltaU]
00933 
00934                 shl             esi,cl
00935                 and             ebx,[GWMaskShifted]
00936 
00937                 and             esi,[GHMaskShifted16]
00938 
00939                 add             esi,ebx
00940                 mov             [edi+0],ax
00941 
00942                 shr             esi,16
00943                 add             edx,ebp
00944 
00945                 add             esi,pTex
00946                 add             ebx,dword ptr[DeltaU]
00947 
00948                 mov             ax,[2*esi]
00949                 mov             esi,edx
00950 
00951                 and             ebx,[GWMaskShifted]
00952                 mov             [edi+2],ax
00953 
00954                 shl             esi,cl
00955                 add             edx,ebp
00956 
00957                 and             esi,[GHMaskShifted16]
00958 
00959                 add             esi,ebx
00960                 shr             esi,16
00961 
00962                 add             ebx,dword ptr[DeltaU]
00963                 add             esi,pTex
00964 
00965                 mov             ax,[2*esi]
00966                 mov             esi,edx
00967 
00968                 and             ebx,[GWMaskShifted]
00969                 mov             [edi+4],ax
00970 
00971                 shl             esi,cl
00972                 add             edx,ebp
00973 
00974                 and             esi,[GHMaskShifted16]
00975 
00976                 add             esi,ebx
00977                 shr             esi,16
00978 
00979                 add             ebx,dword ptr[DeltaU]
00980                 add             esi,pTex
00981 
00982                 mov             ax,[2*esi]
00983                 mov             esi,edx
00984 
00985                 and             ebx,[GWMaskShifted]
00986                 mov             [edi+6],ax
00987 
00988                 shl             esi,cl
00989                 add             edx,ebp
00990 
00991                 and             esi,[GHMaskShifted16]
00992 
00993                 add             esi,ebx
00994                 shr             esi,16
00995 
00996                 add             ebx,dword ptr[DeltaU]
00997                 add             esi,pTex
00998 
00999                 mov             ax,[2*esi]
01000                 mov             esi,edx
01001 
01002                 and             ebx,[GWMaskShifted]
01003                 mov             [edi+8],ax
01004 
01005                 shl             esi,cl
01006                 add             edx,ebp
01007 
01008                 and             esi,[GHMaskShifted16]
01009 
01010                 add             esi,ebx
01011                 shr             esi,16
01012 
01013                 add             ebx,dword ptr[DeltaU]
01014                 add             esi,pTex
01015 
01016                 mov             ax,[2*esi]
01017                 mov             esi,edx
01018 
01019                 and             ebx,[GWMaskShifted]
01020                 mov             [edi+10],ax
01021 
01022                 shl             esi,cl
01023                 add             edx,ebp
01024 
01025                 and             esi,[GHMaskShifted16]
01026 
01027                 add             esi,ebx
01028                 shr             esi,16
01029 
01030                 add             ebx,dword ptr[DeltaU]
01031                 add             esi,pTex
01032 
01033                 mov             ax,[2*esi]
01034                 mov             esi,edx
01035 
01036                 and             ebx,[GWMaskShifted]
01037                 mov             [edi+12],ax
01038 
01039                 shl             esi,cl
01040                 add             edx,ebp
01041 
01042                 and             esi,[GHMaskShifted16]
01043 
01044                 add             esi,ebx
01045                 shr             esi,16
01046 
01047                 add             ebx,dword ptr[DeltaU]
01048                 add             esi,pTex
01049 
01050                 mov             ax,[2*esi]
01051                 mov             esi,edx
01052 
01053                 pop     ebp
01054                 mov             [edi+14],ax
01055 
01056                 ;get corrected right side deltas; st0  st1  st2  st3  st4  st5  st6  st7
01057                                                                                 ; ZR   UZR  ZRi  VZR  UL   VL
01058                 fld             st                                              ; ZR   ZR   UZR  ZRi  VZR  UL   VL
01059                 fmul    st,st(4)                                ; VR   ZR   UZR  ZRi  VZR  UL   VL
01060                 fxch    st(1)                                   ; ZR   VR   UZR  ZRi  VZR  UL   VL
01061                 fmul    st,st(2)                                ; UR   VR   UZR  ZRi  VZR  UL   VL
01062 
01063                 add             edi,16
01064                 dec             [NumASpans]                     ; dec num affine spans
01065                 jnz             SpanLoop16                              ; loop back
01066 
01067 HandleLeftoverPixels16:
01068 
01069                 mov             esi,[pTex]
01070 
01071 
01072                 cmp             [RemainingCount],0
01073                 jz              FPUReturn16
01074 
01075                 //need one more stack spot
01076                 fstp    dword ptr[FloatTemp]    ; VR   UZR  ZRi  VZR  UL   VL
01077                 fld             st(4)                                   ; UL   VR   UZR  ZRi  VZR  UL   VL
01078                 fmul    [GLMapMulU]                             ; ULL  VR   UZR  ZRi  VZR  UL   VL
01079                 fld             st(5)                                   ; UL   ULL  VR   UZR  ZRi  VZR  UL   VL
01080                 fadd    qword ptr[MipMagic]             ; ULk  ULL  VR   UZR  ZRi  VZR  UL   VL
01081                 fxch    st(1)                                   ; ULL  ULk  VR   UZR  ZRi  VZR  UL   VL
01082                 fadd    qword ptr[MipMagic]             ; ULLk ULk  VR   UZR  ZRi  VZR  UL   VL
01083                 fxch    st(1)                                   ; ULk  ULLk VR   UZR  ZRi  VZR  UL   VL
01084                 fstp    qword ptr[Bucket]               ; ULLk VR   UZR  ZRi  VZR  UL   VL
01085                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
01086 
01087                 mov             ebx,dword ptr[Bucket]
01088                 mov             eax,dword ptr[Bucket2]
01089 
01090                 fld             st(5)                                   ; VL   VR   UZR  ZRi  VZR  UL   VL
01091                 fmul    [GLMapMulV]                             ; VLL  VR   UZR  ZRi  VZR  UL   VL
01092 
01093                 add             ebx,dword ptr[UAdjust]
01094                 add             eax,dword ptr[UAdjustL]
01095 
01096                 mov             [U1],ebx
01097                 mov             [UFixed],eax
01098 
01099                 fld             st(6)                                   ; VL   VLL  VR   UZR  ZRi  VZR  UL   VL
01100                 fadd    qword ptr[MipMagic]             ; VLk  VLL  VR   UZR  ZRi  VZR  UL   VL
01101                 fxch    st(1)                                   ; VLL  VLk  VR   UZR  ZRi  VZR  UL   VL
01102                 fadd    qword ptr[MipMagic]             ; VLLk VLk  VR   UZR  ZRi  VZR  UL   VL
01103                 fxch    st(1)                                   ; VLk  VLLk VR   UZR  ZRi  VZR  UL   VL
01104                 fstp    qword ptr[Bucket]               ; VLLk VR   UZR  ZRi  VZR  UL   VL
01105                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
01106 
01107                 mov             ebx,dword ptr[Bucket]
01108                 mov             eax,dword ptr[Bucket2]
01109 
01110                 fld             dword ptr[FloatTemp]    ; UR   VR   UZR  ZRi  VZR  UL   dV
01111 
01112                 add             ebx,dword ptr[VAdjust]
01113                 add             eax,dword ptr[VAdjustL]
01114 
01115                 mov             [V1],ebx
01116                 mov             [VFixed],eax
01117 
01118                 dec             [RemainingCount]
01119                 jz              OnePixelSpan16
01120 
01121 
01122                 //must get rid of this wasted time
01123                 fstp    [FloatTemp]                             ; inv. inv. inv. inv. UL   VL
01124                 fstp    [FloatTemp]                             ; inv. inv. inv. UL   VL
01125                 fstp    [FloatTemp]                             ; inv. inv. UL   VL
01126                 fstp    [FloatTemp]                             ; inv. UL   VL
01127                 fstp    [FloatTemp]                             ; UL   VL
01128                 fild    [y]                                             ; y    UL   VL
01129                 fild    [x2]                                    ; xr   y    UL   VL
01130 
01131                 fld             [UDivZStepY]                    ; UZdY xr   y    UL   VL
01132                 fld             [UDivZStepX]                    ; UZdX UZdY xr   y    UL   VL
01133                 fmul    st,st(2)                                ; UZX  UZdY xr   y    UL   VL
01134                 fld             [VDivZStepY]                    ; VZdY UZX  UZdY xr   y    UL   VL
01135                 fld             [VDivZStepX]                    ; VZdX VZdY UZX  UZdY xr   y    UL   VL
01136                 fxch    st(3)                                   ; UZdy VZdY UZX  VZdX xr   y    UL   VL
01137                 fmul    st,st(5)                                ; UZY  VZdY UZX  VZdX xr   y    UL   VL
01138                 fxch    st(2)                                   ; UZX  VZdY UZY  VZdX xr   y    UL   VL
01139                 fadd    [UDivZOrigin]                   ; UZXS VZdY UZY  VZdX xr   y    UL   VL
01140                 fxch    st(3)                                   ; VZdX VZdY UZY  UZXS xr   y    UL   VL
01141                 fmul    st,st(4)                                ; VZX  VZdY UZY  UZXS xr   y    UL   VL
01142                 fxch    st(2)                                   ; UZY  VZdY VZX  UZXS xr   y    UL   VL
01143                 faddp   st(3),st                                ; VZdY VZX  UZ   xr   y    UL   VL
01144                 fmul    st,st(4)                                ; VZY  VZX  UZ   xr   y    UL   VL
01145                 fxch    st(1)                                   ; VZX  VZY  UZ   xr   y    UL   VL
01146                 fadd    [VDivZOrigin]                   ; VZXS VZY  UZ   xr   y    UL   VL
01147                 fld             [ZiStepX]                               ; ZdX  VZXS VZY  UZ   xr   y    UL   VL
01148                 fmulp   st(4),st                                ; VZXS VZY  UZ   ZX   y    UL   VL
01149                 faddp   st(1),st                                ; VZ   UZ   ZX   y    UL   VL
01150                 fld             [ZiStepY]                               ; ZdY  VZ   UZ   ZX   y    UL   VL
01151                 fmulp   st(4),st                                ; VZ   UZ   ZX   ZY   UL   VL
01152                 fxch    st(2)                                   ; ZX   UZ   VZ   ZY   UL   VL
01153                 fadd    [ZiOrigin]                              ; ZXS  UZ   VZ   ZY   UL   VL
01154 
01155                 faddp   st(3),st                                ; UZ   VZ   Zi   UL   VL
01156                 fld1                                                    ; 1    UZ   VZ   Zi   UL   VL
01157                 fdiv    st,st(3)                                ; ZR   UZ   VZ   Zi   UL   VL
01158 
01159                 fld             st                                              ; ZR   ZR   UZ   VZ   Zi   UL   VL
01160                 fmul    st,st(3)                                ; VR   ZR   UZ   VZ   Zi   UL   VL
01161                 fxch    st(1)                                   ; ZR   VR   UZ   VZ   Zi   UL   VL
01162                 fmul    st,st(2)                                ; UR   VR   UZ   VZ   Zi   UL   VL
01163 
01164                 //lazy idiv below... should 1/int mul mul
01165 
01166                 ; calculate deltas                              ; st0  st1  st2  st3  st4  st5  st6  st7
01167                 fsubr   st(5),st                                ; UR   VR   inv. inv. inv. dU   VL
01168                 fxch    st(1)                                   ; VR   UR   inv. inv. inv. dU   VL
01169                 fsubr   st(6),st                                ; VR   UR   inv. inv. inv. dU   dV
01170                 fxch    st(6)                                   ; dV   UR   inv. inv. inv. dU   VR
01171                 fidiv   dword ptr[RemainingCount];dv   UR   inv. inv. inv. dU   VR
01172                 fadd    qword ptr[MipMagic]             ; dvk  UR   inv. inv. inv. dU   VR
01173                 fxch    st(5)                                   ; dU   UR   inv. inv. inv. dvk  VR
01174                 fidiv   dword ptr[RemainingCount];du   UR   inv. inv. inv. dvk  VR
01175                 fadd    qword ptr[MipMagic]             ; duk  UR   inv. inv. inv. dvk  VR
01176                 fxch    st(5)                                   ; dvk  UR   inv. inv. inv. duk  VR
01177                 fstp    qword ptr[DeltaV]               ; UR   inv. inv. inv. duk  VR
01178                 fxch    st(4)                                   ; duk  inv. inv. inv. UR   VR
01179                 fstp    qword ptr[DeltaU]               ; inv. inv. inv. UR   VR
01180                 fld             st(1)                                   ; inv. inv. inv. inv. UR   VR
01181                 fld             st(2)                                   ; inv. inv. inv. inv. inv. UR   VR
01182 
01183                 // Clamp U/V
01184                 mov             ebx,[UFixed]
01185                 cmp             ebx,MaxU
01186                 jle             TryClampU116
01187                 mov             ecx,MaxU
01188                 mov             dword ptr[UFixed],ecx
01189                 jmp             NoClampU116
01190 
01191 TryClampU116:
01192                 cmp             ebx,0
01193                 jge             NoClampU116
01194                 mov             dword ptr[UFixed],0
01195 NoClampU116:
01196                 mov             eax,[VFixed]
01197                 cmp             eax,MaxV
01198                 jle             TryClampV116
01199                 mov             ecx,MaxV
01200                 mov             dword ptr[VFixed],ecx
01201                 jmp             NoClampV116
01202 
01203 TryClampV116:
01204                 cmp             eax,0
01205                 jge             NoClampV116
01206                 mov             dword ptr[VFixed],0
01207 
01208 NoClampV116:
01209                 // Cache U1/V1
01210                 mov             ebx,dword ptr[UFixed]
01211                 mov             eax,dword ptr[VFixed]
01212 
01213                 mov             ebx,dword ptr[U1]
01214                 mov             edx,dword ptr[V1]
01215 
01216                 mov             ecx,16
01217                 add             ebx,dword ptr[UAdjust2]
01218 
01219                 sub             ecx,[VShift]
01220                 add             edx,dword ptr[VAdjust2]
01221 
01222 //              mov             dword ptr[Bucket],ebx
01223 //              mov             dword ptr[Bucket2],eax
01224 
01225 OnePixelSpan16:
01226                 push    ebp
01227 
01228 LeftoverLoop16:
01229                 mov             eax,edx
01230                 shr             eax,cl
01231                 mov             ebp,ebx
01232                 and             eax,[GHMaskShifted]
01233                 shr             ebp,16
01234                 and             ebp,[GWMask]
01235                 add             eax,ebp
01236                 add             eax,esi
01237                 mov             ax,[2*eax]
01238                 mov             [edi],ax
01239                 add             ebx,dword ptr[DeltaU]
01240                 add             edi,2
01241                 add             edx,dword ptr[DeltaV]
01242 
01243                 dec             [RemainingCount]
01244                 jge             LeftoverLoop16
01245 
01246                 pop             ebp
01247 
01248 FPUReturn16:
01249                 ffree   st(0)
01250                 ffree   st(1)
01251                 ffree   st(2)
01252                 ffree   st(3)
01253                 ffree   st(4)
01254                 ffree   st(5)
01255                 ffree   st(6)
01256 
01257 Return16:
01258         }
01259 //      LightCachedSpan16_AsmLerpLUT(x1, x2, y);
01260 //      LightCachedSpan16_AsmLerpFPU(x1, x2, y);
01261 }

void DrawSpan16_AsmX86FPU int32  x1,
int32  x2,
int32  y
 

Definition at line 64 of file drawspan.c.

References Bucket, Bucket2, DRV_Window::Buffer, ClientWindow, DeltaU, DeltaV, FloatTemp, GBitPtr16, GHMaskShifted, GHMaskShifted16, GLMapMulU, GLMapMulV, GWMask, GWMaskShifted, MipMagic, MipMagic2, NumASpans, pTex, RemainingCount, U1, UAdjust, UAdjust2, UAdjustL, UDivZ16StepX, UDivZOrigin, UDivZStepX, UDivZStepY, UFixed, V1, VAdjust, VAdjust2, VAdjustL, VDivZ16StepX, VDivZOrigin, VDivZStepX, VDivZStepY, VFixed, VShift, DRV_Window::Width, y, Zi, Zi16StepX, ZiOrigin, ZiStepX, and ZiStepY.

00065 {
00066         _asm
00067         {
00068                 mov             eax,x1
00069                 mov             ecx,x2
00070                 sub             ecx,eax
00071                 jle             Return16
00072 
00073                 mov             edi,[GBitPtr16]
00074                 inc             ecx
00075                 shr             edi, 1                                  ; keep texture >>1
00076                 mov             pTex,edi
00077 
00078                 fild    [y]                                             ; y
00079 
00080                 mov             edi, ClientWindow.Buffer
00081                 mov             eax, y
00082                 imul    eax, ClientWindow.Width
00083                 add             eax, x1
00084                 shl             eax, 1
00085                 add             edi, eax
00086                 mov             eax,ecx
00087                 shr             ecx,4
00088                 and             eax,15
00089                 _emit 75h
00090                 _emit 06h
00091                 dec             ecx
00092                 mov             eax,16
00093 
00094                 mov             [NumASpans],ecx
00095                 mov             [RemainingCount],eax
00096 
00097                 fild [x1]                                               ; x    y
00098 
00099                 //decoder won't keep up with these huge instructions
00100                 //need to find some int instructions to cram in here somewhere
00101                 fld             [UDivZStepY]                    ; UZdY x    y
00102                 fld             [UDivZStepX]                    ; UZdX UZdY x    y
00103                 fmul    st,st(2)                                ; UZX  UZdY x    y
00104                 fld             [VDivZStepY]                    ; VZdY UZX  UZdY x    y
00105                 fld             [VDivZStepX]                    ; VZdX VZdY UZX  UZdY x    y
00106                 fxch    st(3)                                   ; UZdy VZdY UZX  VZdX x    y
00107                 fmul    st,st(5)                                ; UZY  VZdY UZX  VZdX x    y
00108                 fxch    st(2)                                   ; UZX  VZdY UZY  VZdX x    y
00109                 fadd    [UDivZOrigin]                   ; UZXS VZdY UZY  VZdX x    y
00110                 fxch    st(3)                                   ; VZdX VZdY UZY  UZXS x    y
00111                 fmul    st,st(4)                                ; VZX  VZdY UZY  UZXS x    y
00112                 fxch    st(2)                                   ; UZY  VZdY VZX  UZXS x    y
00113                 faddp   st(3),st                                ; VZdY VZX  UZ   x    y
00114                 fmul    st,st(4)                                ; VZY  VZX  UZ   x    y
00115                 fxch    st(1)                                   ; VZX  VZY  UZ   x    y
00116                 fadd    [VDivZOrigin]                   ; VZXS VZY  UZ   x    y
00117                 fld             [ZiStepX]                               ; ZdX  VZXS VZY  UZ   x    y
00118                 fmulp   st(4),st                                ; VZXS VZY  UZ   ZX   y
00119                 faddp   st(1),st                                ; VZ   UZ   ZX   y
00120                 fld             [ZiStepY]                               ; ZdY  VZ   UZ   ZX   y
00121                 fmulp   st(4),st                                ; VZ   UZ   ZX   ZY
00122                 fxch    st(2)                                   ; ZX   UZ   VZ   ZY
00123                 fadd    [ZiOrigin]                              ; ZXS  UZ   VZ   ZY
00124 
00125                 //room for two cycles of int instructions here
00126 
00127                 faddp   st(3),st                                ; UZ   VZ   Zi
00128                 fld1                                                    ; 1    UZ   VZ   Zi
00129                 fdiv    st,st(3)                                ; ZL   UZ   VZ   Zi
00130 
00131                 //room for 18 cycles of int instructions here
00132 
00133                 fld             st                                              ; ZL   ZL   UZ   VZ   Zi
00134                 fmul    st,st(3)                                ; VL   ZL   UZ   VZ   Zi
00135                 fxch    st(4)                                   ; Zi   ZL   UZ   VZ   VL
00136                 fadd    [Zi16StepX]                             ; ZRi  ZL   UZ   VZ   VL
00137                 fxch    st(1)                                   ; ZL   ZRi  UZ   VZ   VL
00138                 fmul    st,st(2)                                ; UL   ZRi  UZ   VZ   VL
00139                 fxch    st(3)                                   ; VZ   ZRi  UZ   UL   VL
00140                 fadd    [VDivZ16StepX]                  ; VZR  ZRi  UZ   UL   VL
00141                 fxch    st(2)                                   ; UZ   ZRi  VZR  UL   VL
00142                 fadd    [UDivZ16StepX]                  ; UZR  ZRi  VZR  UL   VL
00143                 fld1                                                    ; 1    UZR  ZRi  VZR  UL   VL
00144                 fdiv    st,st(2)                                ; ZR   UZR  ZRi  VZR  UL   VL
00145 
00146                 //room for 18 cycles of int stuff here
00147 
00148                 fld             st                                              ; ZR   ZR   UZR  ZRi  VZR  UL   VL
00149                 fmul    st,st(4)                                ; VR   ZR   UZR  ZRi  VZR  UL   VL
00150                 fxch    st(1)                                   ; ZR   VR   UZR  ZRi  VZR  UL   VL
00151                 //fmul stall one cycle
00152                 fmul    st,st(2)                                ; UR   VR   UZR  ZRi  VZR  UL   VL
00153 
00154                 test    ecx,ecx
00155                 jz              HandleLeftoverPixels16
00156 
00157 SpanLoop16:
00158                 //need one more stack spot
00159                 fstp    dword ptr[FloatTemp]    ; VR   UZR  ZRi  VZR  UL   VL
00160                 fld             st(4)                                   ; UL   VR   UZR  ZRi  VZR  UL   VL
00161                 fmul    [GLMapMulU]                             ; ULL  VR   UZR  ZRi  VZR  UL   VL
00162                 fld             st(5)                                   ; UL   ULL  VR   UZR  ZRi  VZR  UL   VL
00163                 fadd    qword ptr[MipMagic]             ; ULk  ULL  VR   UZR  ZRi  VZR  UL   VL
00164                 fxch    st(1)                                   ; ULL  ULk  VR   UZR  ZRi  VZR  UL   VL
00165                 fadd    qword ptr[MipMagic]             ; ULLk ULk  VR   UZR  ZRi  VZR  UL   VL
00166                 fxch    st(1)                                   ; ULk  ULLk VR   UZR  ZRi  VZR  UL   VL
00167                 fstp    qword ptr[Bucket]               ; ULLk VR   UZR  ZRi  VZR  UL   VL
00168                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
00169 
00170                 mov             ebx,dword ptr[Bucket]
00171                 mov             eax,dword ptr[Bucket2]
00172 
00173                 fld             st(5)                                   ; VL   VR   UZR  ZRi  VZR  UL   VL
00174                 fmul    [GLMapMulV]                             ; VLL  VR   UZR  ZRi  VZR  UL   VL
00175 
00176                 add             ebx,dword ptr[UAdjust]
00177                 add             eax,dword ptr[UAdjustL]
00178 
00179                 mov             [U1],ebx
00180                 mov             [UFixed],eax
00181 
00182                 fld             st(6)                                   ; VL   VLL  VR   UZR  ZRi  VZR  UL   VL
00183                 fadd    qword ptr[MipMagic]             ; VLk  VLL  VR   UZR  ZRi  VZR  UL   VL
00184                 fxch    st(1)                                   ; VLL  VLk  VR   UZR  ZRi  VZR  UL   VL
00185                 fadd    qword ptr[MipMagic]             ; VLLk VLk  VR   UZR  ZRi  VZR  UL   VL
00186                 fxch    st(1)                                   ; VLk  VLLk VR   UZR  ZRi  VZR  UL   VL
00187                 fstp    qword ptr[Bucket]               ; VLLk VR   UZR  ZRi  VZR  UL   VL
00188                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
00189                 fsubr   st(5),st                                ; VR   UZR  ZRi  VZR  UL   dV
00190 
00191                 mov             ebx,dword ptr[Bucket]
00192                 mov             eax,dword ptr[Bucket2]
00193 
00194                 fld             dword ptr[FloatTemp]    ; UR   VR   UZR  ZRi  VZR  UL   dV
00195 
00196                 add             ebx,dword ptr[VAdjust]
00197                 add             eax,dword ptr[VAdjustL]
00198 
00199                 mov             [V1],ebx
00200                 mov             [VFixed],eax
00201 
00202                 fsubr   st(5),st                                ; UR   VR   UZR  ZRi  VZR  dU   dV
00203                 fxch    st(6)                                   ; dV   VR   UZR  ZRi  VZR  dU   UR
00204                 fadd    qword ptr[MipMagic2]    ; dVk  VR   UZR  ZRi  VZR  dU   UR
00205                 fxch    st(5)                                   ; dU   VR   UZR  ZRi  VZR  dVk  UR
00206                 fadd    qword ptr[MipMagic2]    ; dUk  VR   UZR  ZRi  VZR  dVk  UR
00207                 fxch    st(5)                                   ; dVk  VR   UZR  ZRi  VZR  dUk  UR
00208                 fstp    qword ptr[DeltaV]               ; VR   UZR  ZRi  VZR  dUk  UR
00209                 fxch    st(5)                                   ; UR   UZR  ZRi  VZR  dUk  VR
00210                 //gotta do this to get em lined back up right
00211                 fxch    st(4)                                   ; dUk  UZR  ZRi  VZR  UR   VR
00212                 fstp    qword ptr[DeltaU]               ; UZR  ZRi  VZR  UR   VR
00213 
00214                 //right becomes left                    ; UZL  ZLi  VZL  UL   VL
00215                 fadd    [UDivZ16StepX]                  ; UZR  ZLi  VZL  UL   VL
00216                 fxch    st(1)                                   ; ZLi  UZR  VZL  UL   VL
00217                 fadd    [Zi16StepX]                             ; ZRi  UZR  VZL  UL   VL
00218                 fxch    st(2)                                   ; VZL  UZR  ZRi  UL   VL
00219                 fadd    [VDivZ16StepX]                  ; VZR  UZR  ZRi  UL   VL
00220                 fxch    st(2)                                   ; ZRi  UZR  VZR  UL   VL
00221                 fxch    st(1)                                   ; UZR  ZRi  VZR  UL   VL
00222                 //need those fxch to line things up for loops (bad)
00223 
00224                 fld1                                                    ; 1    UZR  ZRi  VZR  UL   VL
00225 
00226 
00227                 fdiv    st,st(2)                        ; ZR   UZR  ZRi  VZR  UL   VL
00228 
00229                 mov             ebx,dword ptr[U1]
00230                 mov             eax,dword ptr[V1]
00231 
00232                 add             ebx,dword ptr[UAdjust2]
00233                 add             eax,dword ptr[VAdjust2]
00234 
00235                 mov             ecx,16
00236                 mov             dword ptr[Bucket],ebx
00237 
00238                 sub             ecx,[VShift]
00239                 mov             dword ptr[Bucket2],eax
00240 
00241                 shr             eax,cl
00242 
00243                 push    ebp
00244                 shr             ebx,16
00245 
00246                 and             eax,[GHMaskShifted]
00247                 mov             esi,[pTex]
00248 
00249                 and             ebx,[GWMask]
00250                 add             esi,eax
00251 
00252                 mov             ecx,[VShift]
00253                 add             esi,ebx
00254 
00255                 mov             edx,dword ptr[Bucket2]
00256                 mov             ebp,dword ptr[DeltaV]
00257 
00258                 mov             ebx,dword ptr[Bucket]
00259 
00260                 //do 16 pixels
00261 
00262                 add             edx,ebp
00263                 mov             ax,[2*esi]
00264 
00265                 mov             esi,edx
00266                 add             ebx,dword ptr[DeltaU]
00267 
00268                 shl             esi,cl
00269                 and             ebx,[GWMaskShifted]
00270 
00271                 and             esi,[GHMaskShifted16]
00272 
00273                 add             esi,ebx
00274                 mov             [edi+0],ax
00275 
00276                 shr             esi,16
00277                 add             edx,ebp
00278 
00279                 add             esi,pTex
00280                 add             ebx,dword ptr[DeltaU]
00281 
00282                 mov             ax,[2*esi]
00283                 mov             esi,edx
00284 
00285                 and             ebx,[GWMaskShifted]
00286                 mov             [edi+2],ax
00287 
00288                 shl             esi,cl
00289                 add             edx,ebp
00290 
00291                 and             esi,[GHMaskShifted16]
00292 
00293                 add             esi,ebx
00294                 shr             esi,16
00295 
00296                 add             ebx,dword ptr[DeltaU]
00297                 add             esi,pTex
00298 
00299                 mov             ax,[2*esi]
00300                 mov             esi,edx
00301 
00302                 and             ebx,[GWMaskShifted]
00303                 mov             [edi+4],ax
00304 
00305                 shl             esi,cl
00306                 add             edx,ebp
00307 
00308                 and             esi,[GHMaskShifted16]
00309 
00310                 add             esi,ebx
00311                 shr             esi,16
00312 
00313                 add             ebx,dword ptr[DeltaU]
00314                 add             esi,pTex
00315 
00316                 mov             ax,[2*esi]
00317                 mov             esi,edx
00318 
00319                 and             ebx,[GWMaskShifted]
00320                 mov             [edi+6],ax
00321 
00322                 shl             esi,cl
00323                 add             edx,ebp
00324 
00325                 and             esi,[GHMaskShifted16]
00326 
00327                 add             esi,ebx
00328                 shr             esi,16
00329 
00330                 add             ebx,dword ptr[DeltaU]
00331                 add             esi,pTex
00332 
00333                 mov             ax,[2*esi]
00334                 mov             esi,edx
00335 
00336                 and             ebx,[GWMaskShifted]
00337                 mov             [edi+8],ax
00338 
00339                 shl             esi,cl
00340                 add             edx,ebp
00341 
00342                 and             esi,[GHMaskShifted16]
00343 
00344                 add             esi,ebx
00345                 shr             esi,16
00346 
00347                 add             ebx,dword ptr[DeltaU]
00348                 add             esi,pTex
00349 
00350                 mov             ax,[2*esi]
00351                 mov             esi,edx
00352 
00353                 and             ebx,[GWMaskShifted]
00354                 mov             [edi+10],ax
00355 
00356                 shl             esi,cl
00357                 add             edx,ebp
00358 
00359                 and             esi,[GHMaskShifted16]
00360 
00361                 add             esi,ebx
00362                 shr             esi,16
00363 
00364                 add             ebx,dword ptr[DeltaU]
00365                 add             esi,pTex
00366 
00367                 mov             ax,[2*esi]
00368                 mov             esi,edx
00369 
00370                 and             ebx,[GWMaskShifted]
00371                 mov             [edi+12],ax
00372 
00373                 shl             esi,cl
00374                 add             edx,ebp
00375 
00376                 and             esi,[GHMaskShifted16]
00377 
00378                 add             esi,ebx
00379                 shr             esi,16
00380 
00381                 add             ebx,dword ptr[DeltaU]
00382                 add             esi,pTex
00383 
00384                 mov             ax,[2*esi]
00385                 mov             esi,edx
00386 
00387                 and             ebx,[GWMaskShifted]
00388                 mov             [edi+14],ax
00389 
00390                 shl             esi,cl
00391                 add             edx,ebp
00392 
00393                 and             esi,[GHMaskShifted16]
00394 
00395                 add             esi,ebx
00396                 shr             esi,16
00397 
00398                 add             ebx,dword ptr[DeltaU]
00399                 add             esi,pTex
00400 
00401                 mov             ax,[2*esi]
00402                 mov             esi,edx
00403 
00404                 and             ebx,[GWMaskShifted]
00405                 mov             [edi+16],ax
00406 
00407                 shl             esi,cl
00408                 add             edx,ebp
00409 
00410                 and             esi,[GHMaskShifted16]
00411 
00412                 add             esi,ebx
00413                 shr             esi,16
00414 
00415                 add             ebx,dword ptr[DeltaU]
00416                 add             esi,pTex
00417 
00418                 mov             ax,[2*esi]
00419                 mov             esi,edx
00420 
00421                 and             ebx,[GWMaskShifted]
00422                 mov             [edi+18],ax
00423 
00424                 shl             esi,cl
00425                 add             edx,ebp
00426 
00427                 and             esi,[GHMaskShifted16]
00428 
00429                 add             esi,ebx
00430                 shr             esi,16
00431 
00432                 add             ebx,dword ptr[DeltaU]
00433                 add             esi,pTex
00434 
00435                 mov             ax,[2*esi]
00436                 mov             esi,edx
00437 
00438                 and             ebx,[GWMaskShifted]
00439                 mov             [edi+20],ax
00440 
00441                 shl             esi,cl
00442                 add             edx,ebp
00443 
00444                 and             esi,[GHMaskShifted16]
00445 
00446                 add             esi,ebx
00447                 shr             esi,16
00448 
00449                 add             ebx,dword ptr[DeltaU]
00450                 add             esi,pTex
00451 
00452                 mov             ax,[2*esi]
00453                 mov             esi,edx
00454 
00455                 and             ebx,[GWMaskShifted]
00456                 mov             [edi+22],ax
00457 
00458                 shl             esi,cl
00459                 add             edx,ebp
00460 
00461                 and             esi,[GHMaskShifted16]
00462 
00463                 add             esi,ebx
00464                 shr             esi,16
00465 
00466                 add             ebx,dword ptr[DeltaU]
00467                 add             esi,pTex
00468 
00469                 mov             ax,[2*esi]
00470                 mov             esi,edx
00471 
00472                 and             ebx,[GWMaskShifted]
00473                 mov             [edi+24],ax
00474 
00475                 shl             esi,cl
00476                 add             edx,ebp
00477 
00478                 and             esi,[GHMaskShifted16]
00479 
00480                 add             esi,ebx
00481                 shr             esi,16
00482 
00483                 add             ebx,dword ptr[DeltaU]
00484                 add             esi,pTex
00485 
00486                 mov             ax,[2*esi]
00487                 mov             esi,edx
00488 
00489                 and             ebx,[GWMaskShifted]
00490                 mov             [edi+26],ax
00491 
00492                 shl             esi,cl
00493                 add             edx,ebp
00494 
00495                 and             esi,[GHMaskShifted16]
00496 
00497                 add             esi,ebx
00498                 shr             esi,16
00499 
00500                 add             ebx,dword ptr[DeltaU]
00501                 add             esi,pTex
00502 
00503                 mov             ax,[2*esi]
00504                 mov             esi,edx
00505 
00506                 and             ebx,[GWMaskShifted]
00507                 mov             [edi+28],ax
00508 
00509                 shl             esi,cl
00510                 add             edx,ebp
00511 
00512                 and             esi,[GHMaskShifted16]
00513 
00514                 add             esi,ebx
00515                 shr             esi,16
00516 
00517                 add             ebx,dword ptr[DeltaU]
00518                 add             esi,pTex
00519 
00520                 mov             ax,[2*esi]
00521                 mov             esi,edx
00522 
00523                 pop     ebp
00524                 mov             [edi+30],ax
00525 
00526                 ;get corrected right side deltas; st0  st1  st2  st3  st4  st5  st6  st7
00527                                                                                 ; ZR   UZR  ZRi  VZR  UL   VL
00528                 fld             st                                              ; ZR   ZR   UZR  ZRi  VZR  UL   VL
00529                 fmul    st,st(4)                                ; VR   ZR   UZR  ZRi  VZR  UL   VL
00530                 fxch    st(1)                                   ; ZR   VR   UZR  ZRi  VZR  UL   VL
00531                 fmul    st,st(2)                                ; UR   VR   UZR  ZRi  VZR  UL   VL
00532 
00533                 add             edi,32
00534                 dec             [NumASpans]                     ; dec num affine spans
00535                 jnz             SpanLoop16                              ; loop back
00536 
00537 HandleLeftoverPixels16:
00538 
00539                 mov             esi,[pTex]
00540 
00541 
00542                 cmp             [RemainingCount],0
00543                 jz              FPUReturn16
00544 
00545                 //need one more stack spot
00546                 fstp    dword ptr[FloatTemp]    ; VR   UZR  ZRi  VZR  UL   VL
00547                 fld             st(4)                                   ; UL   VR   UZR  ZRi  VZR  UL   VL
00548                 fmul    [GLMapMulU]                             ; ULL  VR   UZR  ZRi  VZR  UL   VL
00549                 fld             st(5)                                   ; UL   ULL  VR   UZR  ZRi  VZR  UL   VL
00550                 fadd    qword ptr[MipMagic]             ; ULk  ULL  VR   UZR  ZRi  VZR  UL   VL
00551                 fxch    st(1)                                   ; ULL  ULk  VR   UZR  ZRi  VZR  UL   VL
00552                 fadd    qword ptr[MipMagic]             ; ULLk ULk  VR   UZR  ZRi  VZR  UL   VL
00553                 fxch    st(1)                                   ; ULk  ULLk VR   UZR  ZRi  VZR  UL   VL
00554                 fstp    qword ptr[Bucket]               ; ULLk VR   UZR  ZRi  VZR  UL   VL
00555                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
00556 
00557                 mov             ebx,dword ptr[Bucket]
00558                 mov             eax,dword ptr[Bucket2]
00559 
00560                 fld             st(5)                                   ; VL   VR   UZR  ZRi  VZR  UL   VL
00561                 fmul    [GLMapMulV]                             ; VLL  VR   UZR  ZRi  VZR  UL   VL
00562 
00563                 add             ebx,dword ptr[UAdjust]
00564                 add             eax,dword ptr[UAdjustL]
00565 
00566                 mov             [U1],ebx
00567                 mov             [UFixed],eax
00568 
00569                 fld             st(6)                                   ; VL   VLL  VR   UZR  ZRi  VZR  UL   VL
00570                 fadd    qword ptr[MipMagic]             ; VLk  VLL  VR   UZR  ZRi  VZR  UL   VL
00571                 fxch    st(1)                                   ; VLL  VLk  VR   UZR  ZRi  VZR  UL   VL
00572                 fadd    qword ptr[MipMagic]             ; VLLk VLk  VR   UZR  ZRi  VZR  UL   VL
00573                 fxch    st(1)                                   ; VLk  VLLk VR   UZR  ZRi  VZR  UL   VL
00574                 fstp    qword ptr[Bucket]               ; VLLk VR   UZR  ZRi  VZR  UL   VL
00575                 fstp    qword ptr[Bucket2]              ; VR   UZR  ZRi  VZR  UL   VL
00576 
00577                 mov             ebx,dword ptr[Bucket]
00578                 mov             eax,dword ptr[Bucket2]
00579 
00580                 fld             dword ptr[FloatTemp]    ; UR   VR   UZR  ZRi  VZR  UL   dV
00581 
00582                 add             ebx,dword ptr[VAdjust]
00583                 add             eax,dword ptr[VAdjustL]
00584 
00585                 mov             [V1],ebx
00586                 mov             [VFixed],eax
00587 
00588                 dec             [RemainingCount]
00589                 jz              OnePixelSpan16
00590 
00591 
00592                 //must get rid of this wasted time
00593                 fstp    [FloatTemp]                             ; inv. inv. inv. inv. UL   VL
00594                 fstp    [FloatTemp]                             ; inv. inv. inv. UL   VL
00595                 fstp    [FloatTemp]                             ; inv. inv. UL   VL
00596                 fstp    [FloatTemp]                             ; inv. UL   VL
00597                 fstp    [FloatTemp]                             ; UL   VL
00598                 fild    [y]                                             ; y    UL   VL
00599                 fild    [x2]                                    ; xr   y    UL   VL
00600 
00601                 fld             [UDivZStepY]                    ; UZdY xr   y    UL   VL
00602                 fld             [UDivZStepX]                    ; UZdX UZdY xr   y    UL   VL
00603                 fmul    st,st(2)                                ; UZX  UZdY xr   y    UL   VL
00604                 fld             [VDivZStepY]                    ; VZdY UZX  UZdY xr   y    UL   VL
00605                 fld             [VDivZStepX]                    ; VZdX VZdY UZX  UZdY xr   y    UL   VL
00606                 fxch    st(3)                                   ; UZdy VZdY UZX  VZdX xr   y    UL   VL
00607                 fmul    st,st(5)                                ; UZY  VZdY UZX  VZdX xr   y    UL   VL
00608                 fxch    st(2)                                   ; UZX  VZdY UZY  VZdX xr   y    UL   VL
00609                 fadd    [UDivZOrigin]                   ; UZXS VZdY UZY  VZdX xr   y    UL   VL
00610                 fxch    st(3)                                   ; VZdX VZdY UZY  UZXS xr   y    UL   VL
00611                 fmul    st,st(4)                                ; VZX  VZdY UZY  UZXS xr   y    UL   VL
00612                 fxch    st(2)                                   ; UZY  VZdY VZX  UZXS xr   y    UL   VL
00613                 faddp   st(3),st                                ; VZdY VZX  UZ   xr   y    UL   VL
00614                 fmul    st,st(4)                                ; VZY  VZX  UZ   xr   y    UL   VL
00615                 fxch    st(1)                                   ; VZX  VZY  UZ   xr   y    UL   VL
00616                 fadd    [VDivZOrigin]                   ; VZXS VZY  UZ   xr   y    UL   VL
00617                 fld             [ZiStepX]                               ; ZdX  VZXS VZY  UZ   xr   y    UL   VL
00618                 fmulp   st(4),st                                ; VZXS VZY  UZ   ZX   y    UL   VL
00619                 faddp   st(1),st                                ; VZ   UZ   ZX   y    UL   VL
00620                 fld             [ZiStepY]                               ; ZdY  VZ   UZ   ZX   y    UL   VL
00621                 fmulp   st(4),st                                ; VZ   UZ   ZX   ZY   UL   VL
00622                 fxch    st(2)                                   ; ZX   UZ   VZ   ZY   UL   VL
00623                 fadd    [ZiOrigin]                              ; ZXS  UZ   VZ   ZY   UL   VL
00624 
00625                 faddp   st(3),st                                ; UZ   VZ   Zi   UL   VL
00626                 fld1                                                    ; 1    UZ   VZ   Zi   UL   VL
00627                 fdiv    st,st(3)                                ; ZR   UZ   VZ   Zi   UL   VL
00628 
00629                 fld             st                                              ; ZR   ZR   UZ   VZ   Zi   UL   VL
00630                 fmul    st,st(3)                                ; VR   ZR   UZ   VZ   Zi   UL   VL
00631                 fxch    st(1)                                   ; ZR   VR   UZ   VZ   Zi   UL   VL
00632                 fmul    st,st(2)                                ; UR   VR   UZ   VZ   Zi   UL   VL
00633 
00634                 //lazy idiv below... should 1/int mul mul
00635 
00636                 ; calculate deltas                              ; st0  st1  st2  st3  st4  st5  st6  st7
00637                 fsubr   st(5),st                                ; UR   VR   inv. inv. inv. dU   VL
00638                 fxch    st(1)                                   ; VR   UR   inv. inv. inv. dU   VL
00639                 fsubr   st(6),st                                ; VR   UR   inv. inv. inv. dU   dV
00640                 fxch    st(6)                                   ; dV   UR   inv. inv. inv. dU   VR
00641                 fidiv   dword ptr[RemainingCount];dv   UR   inv. inv. inv. dU   VR
00642                 fadd    qword ptr[MipMagic]             ; dvk  UR   inv. inv. inv. dU   VR
00643                 fxch    st(5)                                   ; dU   UR   inv. inv. inv. dvk  VR
00644                 fidiv   dword ptr[RemainingCount];du   UR   inv. inv. inv. dvk  VR
00645                 fadd    qword ptr[MipMagic]             ; duk  UR   inv. inv. inv. dvk  VR
00646                 fxch    st(5)                                   ; dvk  UR   inv. inv. inv. duk  VR
00647                 fstp    qword ptr[DeltaV]               ; UR   inv. inv. inv. duk  VR
00648                 fxch    st(4)                                   ; duk  inv. inv. inv. UR   VR
00649                 fstp    qword ptr[DeltaU]               ; inv. inv. inv. UR   VR
00650                 fld             st(1)                                   ; inv. inv. inv. inv. UR   VR
00651                 fld             st(2)                                   ; inv. inv. inv. inv. inv. UR   VR
00652 
00653                 mov             ebx,dword ptr[U1]
00654                 mov             edx,dword ptr[V1]
00655 
00656                 mov             ecx,16
00657                 add             ebx,dword ptr[UAdjust2]
00658 
00659                 sub             ecx,[VShift]
00660                 add             edx,dword ptr[VAdjust2]
00661 
00662 OnePixelSpan16:
00663                 push    ebp
00664 
00665 LeftoverLoop16:
00666                 mov             eax,edx
00667                 shr             eax,cl
00668                 mov             ebp,ebx
00669                 and             eax,[GHMaskShifted]
00670                 shr             ebp,16
00671                 and             ebp,[GWMask]
00672                 add             eax,ebp
00673                 add             eax,esi
00674                 mov             ax,[2*eax]
00675                 mov             [edi],ax
00676                 add             ebx,dword ptr[DeltaU]
00677                 add             edi,2
00678                 add             edx,dword ptr[DeltaV]
00679 
00680                 dec             [RemainingCount]
00681                 jge             LeftoverLoop16
00682 
00683                 pop             ebp
00684 
00685 FPUReturn16:
00686                 ffree   st(0)
00687                 ffree   st(1)
00688                 ffree   st(2)
00689                 ffree   st(3)
00690                 ffree   st(4)
00691                 ffree   st(5)
00692                 ffree   st(6)
00693 
00694 Return16:
00695         }
00696 }


Variable Documentation

int32 B1
 

Definition at line 41 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), geBitmap_UpdateMips_Data(), geExtBox_Intersection(), geExtBox_Intersects(), and geExtBox_Union().

int32 B2
 

Definition at line 41 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), geBitmap_UpdateMips_Data(), geExtBox_Intersection(), geExtBox_Intersects(), geExtBox_Union(), and geQKFrame_SquadInterpolation().

int32 BB1
 

Definition at line 42 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

int32 BB2
 

Definition at line 42 of file drawspan.c.

__int64 BlueDelta
 

Definition at line 56 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), and DrawSpan16_AsmGouraudZWriteX86FPU().

int32 CKeyTest = 0
 

Definition at line 46 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), and DrawSpan16_AsmGouraudZBufferTransX86FPU().

double DeltaU
 

Definition at line 58 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

double DeltaV
 

Definition at line 58 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

geFloat FloatTemp
 

Definition at line 48 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

geFloat FTemp0
 

Definition at line 48 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

geFloat FTemp1
 

Definition at line 48 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

geFloat FTemp2
 

Definition at line 48 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

geFloat FTemp3
 

Definition at line 49 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

geFloat FTemp4
 

Definition at line 49 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

geFloat FTemp5
 

Definition at line 49 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

geFloat FTemp6
 

Definition at line 49 of file drawspan.c.

geFloat FTemp7
 

Definition at line 49 of file drawspan.c.

geFloat FTemp8
 

Definition at line 49 of file drawspan.c.

int32 G1
 

Definition at line 41 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and geBitmap_UpdateMips_Data().

int32 G2
 

Definition at line 41 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and geBitmap_UpdateMips_Data().

int32 GG1
 

Definition at line 42 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

int32 GG2
 

Definition at line 42 of file drawspan.c.

__int64 GreenDelta
 

Definition at line 56 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), and DrawSpan16_AsmGouraudZWriteX86FPU().

double MipMagic
 

Definition at line 39 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), DrawSpan16_AsmX86FPU(), and SetupMiscConstants().

double MipMagic2
 

Definition at line 39 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), DrawSpan16_AsmX86FPU(), and SetupMiscConstants().

uint32 NumASpans
 

Definition at line 57 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

int32 NumSpans = 0
 

Definition at line 45 of file drawspan.c.

geFloat const One = 1.0f
 

Definition at line 50 of file drawspan.c.

uint8* pTex
 

Definition at line 60 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

int32 R1
 

Definition at line 41 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), geBitmap_UpdateMips_Data(), and gePose_BlendMotion().

int32 R2
 

Definition at line 41 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and geBitmap_UpdateMips_Data().

__int64 RedDelta
 

Definition at line 56 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), and DrawSpan16_AsmGouraudZWriteX86FPU().

uint32 RemainingCount
 

Definition at line 57 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

int32 RR1
 

Definition at line 42 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

int32 RR2
 

Definition at line 42 of file drawspan.c.

int32 StepB
 

Definition at line 43 of file drawspan.c.

int32 StepG
 

Definition at line 43 of file drawspan.c.

int32 StepR
 

Definition at line 43 of file drawspan.c.

geFloat const Two = 2.0f
 

Definition at line 51 of file drawspan.c.

Referenced by DrawScanLineGouraudNoZ_Asm555X86FPU(), DrawScanLineGouraudNoZ_AsmX86FPU(), DrawScanLineGouraudNoZBufferZWrite_Asm555X86FPU(), DrawScanLineGouraudNoZBufferZWrite_AsmX86FPU(), DrawScanLineGouraudNoZBufferZWriteTrans_Asm555X86FPU(), DrawScanLineGouraudNoZBufferZWriteTrans_AsmX86FPU(), DrawScanLineGouraudNoZTrans_Asm555X86FPU(), DrawScanLineGouraudNoZTrans_AsmX86FPU(), DrawScanLineGouraudZBuffer_Asm555X86FPU(), DrawScanLineGouraudZBuffer_AsmX86FPU(), DrawScanLineGouraudZBufferNoZWrite_Asm555X86FPU(), DrawScanLineGouraudZBufferNoZWrite_AsmX86FPU(), DrawScanLineGouraudZBufferNoZWriteTrans_Asm555X86FPU(), DrawScanLineGouraudZBufferNoZWriteTrans_AsmX86FPU(), DrawScanLineGouraudZBufferTrans_Asm555X86FPU(), DrawScanLineGouraudZBufferTrans_AsmX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

int32 U1 = 0
 

Definition at line 45 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), DrawSpan16_AsmX86FPU(), and geBody_AddFace().

int32 UDist
 

Definition at line 44 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

uint32 UFixed
 

Definition at line 59 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

U32 UMask
 

Definition at line 53 of file drawspan.c.

Referenced by while().

int32 V1 = 0
 

Definition at line 45 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), DrawSpan16_AsmX86FPU(), geBody_AddFace(), gePlane_SetFromVerts(), geTClip_Split(), geVec3d_Add(), geVec3d_AddScaled(), geVec3d_Compare(), geVec3d_CrossProduct(), geVec3d_DistanceBetween(), geVec3d_DotProduct(), geVec3d_Length(), geVec3d_LengthSquared(), geVec3d_MA(), geVec3d_Normalize(), geVec3d_Subtract(), geVKFrame_HermiteRecompute(), and geXForm3d_TransposeTransform().

int32 VDist
 

Definition at line 44 of file drawspan.c.

Referenced by DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

uint32 VFixed
 

Definition at line 59 of file drawspan.c.

Referenced by DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), and DrawSpan16_AsmX86FPU().

U32 VMask
 

Definition at line 53 of file drawspan.c.

Referenced by while().

U32 VShift
 

Definition at line 53 of file drawspan.c.

Referenced by CalcGradients(), DrawScanLineGouraudNoZ_Asm555X86FPU(), DrawScanLineGouraudNoZ_AsmX86FPU(), DrawScanLineGouraudNoZBufferZWrite_Asm555X86FPU(), DrawScanLineGouraudNoZBufferZWrite_AsmX86FPU(), DrawScanLineGouraudNoZBufferZWriteTrans_Asm555X86FPU(), DrawScanLineGouraudNoZBufferZWriteTrans_AsmX86FPU(), DrawScanLineGouraudNoZTrans_Asm555X86FPU(), DrawScanLineGouraudNoZTrans_AsmX86FPU(), DrawScanLineGouraudZBuffer_Asm555X86FPU(), DrawScanLineGouraudZBuffer_AsmX86FPU(), DrawScanLineGouraudZBufferNoZWrite_Asm555X86FPU(), DrawScanLineGouraudZBufferNoZWrite_AsmX86FPU(), DrawScanLineGouraudZBufferNoZWriteTrans_Asm555X86FPU(), DrawScanLineGouraudZBufferNoZWriteTrans_AsmX86FPU(), DrawScanLineGouraudZBufferTrans_Asm555X86FPU(), DrawScanLineGouraudZBufferTrans_AsmX86FPU(), DrawSpan16_8AsmLitX86FPU(), DrawSpan16_AsmGouraudX86FPU(), DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLit555X86FPU(), DrawSpan16_AsmLitX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), DrawSpan16_AsmX86FPU(), and RenderMiscTexturePoly().

geFloat ZBufferPrec = (geFloat)-ZBUFFER_PREC
 

Definition at line 55 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

int32 ZDelta
 

Definition at line 54 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), and DrawSpan16_AsmLitZWriteX86FPU().

int32 ZVal
 

Definition at line 54 of file drawspan.c.

Referenced by DrawSpan16_AsmGouraudZBuffer555X86FPU(), DrawSpan16_AsmGouraudZBufferTrans555X86FPU(), DrawSpan16_AsmGouraudZBufferTransX86FPU(), DrawSpan16_AsmGouraudZBufferX86FPU(), DrawSpan16_AsmGouraudZWrite555X86FPU(), DrawSpan16_AsmGouraudZWriteX86FPU(), DrawSpan16_AsmLitZBuffer555X86FPU(), DrawSpan16_AsmLitZBufferX86FPU(), DrawSpan16_AsmLitZWrite555X86FPU(), DrawSpan16_AsmLitZWriteX86FPU(), ElectricFx_ElectricZLine_r(), ElectricFx_PutZ(), ElectricFx_ZLine(), and ElectricFx_ZLine2().


Generated on Tue Sep 30 12:37:26 2003 for GTestAndEngine by doxygen 1.3.2