26,22 → 26,14 |
.y3 equ word[ebp-16] |
|
.dx12 equ dword[ebp-20] |
;.dz12 equ dword[ebp-24] |
.dx13 equ dword[ebp-24] |
.dz13 equ dword[ebp-28] |
.dz12 equ dword[ebp-32] |
;.dz13 equ dword[ebp-32] |
.dz12 equ dword[ebp-24] |
.dx13 equ dword[ebp-28] |
.dz13 equ dword[ebp-32] |
.dx23 equ dword[ebp-36] |
.dz13M equ [ebp-40] |
.dz23 equ dword[ebp-44] |
.zz1 equ dword[ebp-48] |
.zz2 equ dword[ebp-52] |
.zz2M equ qword[ebp-52] |
.dz12M equ qword[ebp-32] |
.dz23M equ qword[ebp-44] |
;if Ext>=MMX |
; emms |
;end if |
.dz23 equ dword[ebp-40] |
.zz1 equ dword[ebp-44] |
.zz2 equ dword[ebp-48] |
|
mov ebp,esp |
|
push edx ; store edx in variable .col |
87,13 → 79,13 |
; jle @f |
; jmp .ft_loop2_end |
;@@: |
sub esp,52-12 |
; sub esp,52-12 |
|
mov bx,.y2 ; calc delta 12 |
sub bx,.y1 |
jnz .ft_dx12_make |
mov .dx12,0 |
mov .dz12,0 |
push dword 0 |
push dword 0 |
jmp .ft_dx12_done |
.ft_dx12_make: |
mov ax,.x2 |
103,7 → 95,7 |
shl eax,ROUND |
cdq |
idiv ebx |
mov .dx12,eax |
push eax |
|
mov ax,.z2 |
sub ax,.z1 |
111,14 → 103,13 |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
mov .dz12,eax |
push eax |
.ft_dx12_done: |
mov bx,.y3 ; calc delta 13 |
sub bx,.y1 |
jnz .ft_dx13_make |
mov .dx13,0 |
mov .dz13,0 |
mov dword .dz13M,0 |
push dword 0 |
push dword 0 |
jmp .ft_dx13_done |
.ft_dx13_make: |
mov ax,.x3 |
128,7 → 119,7 |
shl eax,ROUND |
cdq |
idiv ebx |
mov .dx13,eax |
push eax |
|
mov ax,.z3 |
sub ax,.z1 |
136,14 → 127,17 |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
mov .dz13,eax |
mov dword .dz13M,eax |
push eax |
|
.ft_dx13_done: |
; sub esp,48 |
mov bx,.y3 ; calc delta 23 |
sub bx,.y2 |
jnz .gt_dx23_make |
mov .dx23,0 |
mov .dz23,0 |
push dword 0 |
push dword 0 |
; mov .dx23,0 |
; mov .dz23,0 |
jmp .gt_dx23_done |
.gt_dx23_make: |
mov ax,.x3 |
153,7 → 147,7 |
shl eax,ROUND |
cdq |
idiv ebx |
mov .dx23,eax |
push eax |
|
mov ax,.z3 |
sub ax,.z2 |
161,19 → 155,18 |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
mov .dz23,eax |
push eax |
; mov .dz23,eax |
.gt_dx23_done: |
|
movsx edx,.z1 |
shl edx,CATMULL_SHIFT |
mov .zz1,edx |
mov .zz2,edx |
push edx |
push edx |
|
movsx eax,.x1 |
shl eax,ROUND ; eax - x1 |
mov ebx,eax ; ebx - x2 |
;if Ext>=MMX |
; movq mm0,.zz2M |
;end if |
mov cx,.y1 |
cmp cx,.y2 |
jge .ft_loop1_end |
187,13 → 180,9 |
push bx ; x2 |
sar eax,ROUND |
push ax ; x1 |
;if Ext>=MMX |
; sub esp,8 |
; movq [esp],mm0 |
;else |
push .zz2 ; z2 shl CATMULL_SHIFT |
push .zz1 ; z1 shl CATMULL_SHIFT |
;end if |
|
call flat_line_z |
|
popad |
200,9 → 189,6 |
|
add eax,.dx13 |
add ebx,.dx12 |
;if Ext>=MMX |
; paddd mm0,.dz12M |
;else |
|
mov edx,.dz13 |
add .zz1,edx |
219,13 → 205,7 |
mov .zz2,edx |
movsx ebx,.x2 |
shl ebx,ROUND |
;if Ext>=MMX |
; movq mm0,.zz2M |
;; push .dz13 ; exchange |
;; pop .dz12 |
;; push .dz23 ; exchange |
;; pop .dz13 |
;end if |
|
mov cx,.y2 |
cmp cx,.y3 |
jge .ft_loop2_end |
238,13 → 218,10 |
push bx |
sar eax,ROUND |
push ax ; x1 |
;if Ext>=MMX |
; sub esp,8 |
; movq [esp],mm0 |
;else |
|
push .zz2 ; z2 shl CATMULL_SHIFT |
push .zz1 ; z1 shl CATMULL_SHIFT |
;end if |
|
call flat_line_z |
|
popad |
251,19 → 228,12 |
|
add eax,.dx13 |
add ebx,.dx23 |
;if Ext>=MMX |
; paddd mm0,.dz23M |
;else |
|
mov edx,.dz13 |
add .zz1,edx |
mov edx,.dz23 |
add .zz2,edx |
|
; mov edx,.dz13 |
; add .zz1,edx |
; mov edx,.dz12 |
; add .zz2,edx |
;end if |
inc cx |
cmp cx,.y3 |
jl .ft_loop2 |
374,13 → 344,15 |
; cmovl [edi],eax |
; cmovl [esi],ebx |
jge @f |
stosd |
dec edi |
mov dword[esi],ebx |
jmp .no_skip |
mov [edi],eax |
mov [esi],ebx |
; stosd ; less branches |
; dec edi |
; mov dword[esi],ebx |
; jmp .no_skip |
@@: |
add edi,3 |
.no_skip: |
; .no_skip: |
add esi,4 |
add ebx,edx |
loop .ddraw |