forked from KolibriOS/kolibrios
View3DS v0.60 from Macgub
git-svn-id: svn://kolibrios.org@2192 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b13687630b
commit
ffc2e1f7ca
@ -81,10 +81,10 @@ bump_triangle_z:
|
|||||||
.cz2 equ [ebp-108]
|
.cz2 equ [ebp-108]
|
||||||
.cbx1 equ dword[ebp-112]
|
.cbx1 equ dword[ebp-112]
|
||||||
.cby1 equ [ebp-116]
|
.cby1 equ [ebp-116]
|
||||||
.cbx2 equ dword[ebp-120]
|
.cex1 equ dword[ebp-120]
|
||||||
.cby2 equ [ebp-124]
|
.cey1 equ [ebp-124]
|
||||||
.cex1 equ dword[ebp-128]
|
.cbx2 equ dword[ebp-128]
|
||||||
.cey1 equ [ebp-132]
|
.cby2 equ [ebp-132]
|
||||||
.cex2 equ dword[ebp-136]
|
.cex2 equ dword[ebp-136]
|
||||||
.cey2 equ [ebp-140]
|
.cey2 equ [ebp-140]
|
||||||
|
|
||||||
@ -533,8 +533,25 @@ end if
|
|||||||
jge .loop12_done
|
jge .loop12_done
|
||||||
.loop12:
|
.loop12:
|
||||||
call .call_bump_line
|
call .call_bump_line
|
||||||
|
if Ext >= SSE2
|
||||||
|
movups xmm0,.cey2
|
||||||
|
movups xmm1,.cey1
|
||||||
|
movups xmm2,.dey12
|
||||||
|
movups xmm3,.dey13
|
||||||
|
paddd xmm0,xmm2
|
||||||
|
paddd xmm1,xmm3
|
||||||
|
movups .cey2,xmm0
|
||||||
|
movups .cey1,xmm1
|
||||||
|
movq mm4,.cz1
|
||||||
|
movq mm5,.cz2
|
||||||
|
paddd mm4,.dz13
|
||||||
|
paddd mm5,.dz12
|
||||||
|
movq .cz1,mm4
|
||||||
|
movq .cz2,mm5
|
||||||
|
end if
|
||||||
|
|
||||||
if Ext >= MMX
|
|
||||||
|
if (Ext = MMX) | (Ext = SSE)
|
||||||
movq mm0,.cby2
|
movq mm0,.cby2
|
||||||
movq mm1,.cby1
|
movq mm1,.cby1
|
||||||
movq mm2,.cey2
|
movq mm2,.cey2
|
||||||
@ -553,7 +570,7 @@ if Ext >= MMX
|
|||||||
movq .cey2,mm2
|
movq .cey2,mm2
|
||||||
movq .cz1,mm4
|
movq .cz1,mm4
|
||||||
movq .cz2,mm5
|
movq .cz2,mm5
|
||||||
else
|
else if Ext = NON
|
||||||
mov edx,.dbx13
|
mov edx,.dbx13
|
||||||
add .cbx1,edx
|
add .cbx1,edx
|
||||||
mov eax,.dbx12
|
mov eax,.dbx12
|
||||||
@ -617,8 +634,23 @@ end if
|
|||||||
|
|
||||||
.loop23:
|
.loop23:
|
||||||
call .call_bump_line
|
call .call_bump_line
|
||||||
|
if Ext >= SSE2
|
||||||
if Ext >= MMX
|
movups xmm0,.cey2
|
||||||
|
movups xmm1,.cey1
|
||||||
|
movups xmm2,.dey23
|
||||||
|
movups xmm3,.dey13
|
||||||
|
paddd xmm0,xmm2
|
||||||
|
paddd xmm1,xmm3
|
||||||
|
movups .cey2,xmm0
|
||||||
|
movups .cey1,xmm1
|
||||||
|
movq mm4,.cz1
|
||||||
|
movq mm5,.cz2
|
||||||
|
paddd mm4,.dz13
|
||||||
|
paddd mm5,.dz23
|
||||||
|
movq .cz1,mm4
|
||||||
|
movq .cz2,mm5
|
||||||
|
end if
|
||||||
|
if (Ext = MMX) | (Ext = SSE)
|
||||||
movq mm0,.cby2
|
movq mm0,.cby2
|
||||||
movq mm1,.cby1
|
movq mm1,.cby1
|
||||||
movq mm2,.cey2
|
movq mm2,.cey2
|
||||||
@ -637,7 +669,7 @@ if Ext >= MMX
|
|||||||
movq .cey2,mm2
|
movq .cey2,mm2
|
||||||
movq .cz1,mm4
|
movq .cz1,mm4
|
||||||
movq .cz2,mm5
|
movq .cz2,mm5
|
||||||
else
|
else if Ext = NON
|
||||||
mov eax,.dx13
|
mov eax,.dx13
|
||||||
add .cx1,eax
|
add .cx1,eax
|
||||||
mov ebx,.dx23
|
mov ebx,.dx23
|
||||||
|
@ -292,24 +292,6 @@ if Ext>=SSE
|
|||||||
cvtps2pi mm1,xmm1
|
cvtps2pi mm1,xmm1
|
||||||
movq .dty12,mm0
|
movq .dty12,mm0
|
||||||
movq .dz12,mm1
|
movq .dz12,mm1
|
||||||
;temporaly conversion to keep upside down
|
|
||||||
; fninit
|
|
||||||
; fld .dx12
|
|
||||||
; fistp .dx12
|
|
||||||
; fld dword .dz12
|
|
||||||
; fistp dword .dz12
|
|
||||||
; fld .dbx12
|
|
||||||
; fistp .dbx12
|
|
||||||
; fld dword .dby12
|
|
||||||
; fistp dword .dby12
|
|
||||||
; fld .dex12
|
|
||||||
; fistp .dex12
|
|
||||||
; fld dword .dey12
|
|
||||||
; fistp dword .dey12
|
|
||||||
; fld .dtx12
|
|
||||||
; fistp .dtx12
|
|
||||||
; fld dword .dty12
|
|
||||||
; fistp dword .dty12
|
|
||||||
;----
|
;----
|
||||||
; mov ax,.z2
|
; mov ax,.z2
|
||||||
; sub ax,.z1
|
; sub ax,.z1
|
||||||
@ -518,25 +500,6 @@ if Ext>=SSE
|
|||||||
movq .dty13,mm0
|
movq .dty13,mm0
|
||||||
movq .dz13,mm1
|
movq .dz13,mm1
|
||||||
|
|
||||||
;temporaly conversion to keep upside down
|
|
||||||
; fninit
|
|
||||||
; fld .dx13
|
|
||||||
; fistp .dx13
|
|
||||||
; fld dword .dz13
|
|
||||||
; fistp dword .dz13
|
|
||||||
; fld .dbx13
|
|
||||||
; fistp .dbx13
|
|
||||||
; fld dword .dby13
|
|
||||||
; fistp dword .dby13
|
|
||||||
; fld .dex13
|
|
||||||
; fistp .dex13
|
|
||||||
; fld dword .dey13
|
|
||||||
; fistp dword .dey13
|
|
||||||
; fld .dtx13
|
|
||||||
; fistp .dtx13
|
|
||||||
; fld dword .dty13
|
|
||||||
; fistp dword .dty13
|
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
mov ax,.x3
|
mov ax,.x3
|
||||||
@ -699,24 +662,6 @@ if Ext>=SSE
|
|||||||
movq .dz23,mm1
|
movq .dz23,mm1
|
||||||
|
|
||||||
|
|
||||||
;temporaly conversion to keep upside down
|
|
||||||
; fninit
|
|
||||||
; fld .dx23
|
|
||||||
; fistp .dx23
|
|
||||||
; fld dword .dz23
|
|
||||||
; fistp dword .dz23
|
|
||||||
; fld .dbx23
|
|
||||||
; fistp .dbx23
|
|
||||||
; fld dword .dby23
|
|
||||||
; fistp dword .dby23
|
|
||||||
; fld .dex23
|
|
||||||
; fistp .dex23
|
|
||||||
; fld dword .dey23
|
|
||||||
; fistp dword .dey23
|
|
||||||
; fld .dtx23
|
|
||||||
; fistp .dtx23
|
|
||||||
; fld dword .dty23
|
|
||||||
; fistp dword .dty23
|
|
||||||
else
|
else
|
||||||
mov ax,.x3
|
mov ax,.x3
|
||||||
sub ax,.x2
|
sub ax,.x2
|
||||||
@ -794,57 +739,6 @@ end if
|
|||||||
; sub esp,40
|
; sub esp,40
|
||||||
.bt_dx23_done:
|
.bt_dx23_done:
|
||||||
sub esp,64
|
sub esp,64
|
||||||
;if Ext>=SSE
|
|
||||||
; movsx eax,.x1
|
|
||||||
; shl eax,ROUND
|
|
||||||
; cvtsi2ss xmm0,eax
|
|
||||||
; movss .cx1,xmm0
|
|
||||||
; movss .cx2,xmm0
|
|
||||||
;
|
|
||||||
; movsx ebx,word[.b_x1]
|
|
||||||
; shl ebx,ROUND
|
|
||||||
; cvtsi2ss xmm0,ebx
|
|
||||||
; movss .cbx1,xmm0
|
|
||||||
; movss .cbx2,xmm0
|
|
||||||
;
|
|
||||||
; movsx ecx,word[.b_y1]
|
|
||||||
; shl ecx,ROUND
|
|
||||||
; cvtsi2ss xmm0,ecx
|
|
||||||
; movss .cby1,xmm0
|
|
||||||
; movss .cby2,xmm0
|
|
||||||
|
|
||||||
; movsx edx,word[.e_x1]
|
|
||||||
; shl edx,ROUND
|
|
||||||
; cvtsi2ss xmm0,edx
|
|
||||||
; movss .cex1,xmm0
|
|
||||||
; movss .cex2,xmm0
|
|
||||||
;
|
|
||||||
; movsx eax,word[.e_y1]
|
|
||||||
; shl eax,ROUND
|
|
||||||
; cvtsi2ss xmm0,eax
|
|
||||||
; movss .cey1,xmm0
|
|
||||||
; movss .cey2,xmm0
|
|
||||||
;
|
|
||||||
|
|
||||||
; movsx ebx,.z1
|
|
||||||
; shl ebx,CATMULL_SHIFT
|
|
||||||
; cvtsi2ss xmm0,ebx
|
|
||||||
; movss .cz1,xmm0
|
|
||||||
; movss .cz2,xmm0
|
|
||||||
;
|
|
||||||
; movsx ecx,word[.t_x1]
|
|
||||||
; shl ecx,ROUND
|
|
||||||
; cvtsi2ss xmm0,ecx
|
|
||||||
; movss .ctx1,xmm0
|
|
||||||
; movss .ctx2,xmm0
|
|
||||||
|
|
||||||
; movsx edx,word[.t_y1]
|
|
||||||
; shl edx,ROUND
|
|
||||||
; cvtsi2ss xmm0,edx
|
|
||||||
; movss .cty1,xmm0
|
|
||||||
; movss .cty2,xmm0
|
|
||||||
|
|
||||||
;else
|
|
||||||
|
|
||||||
movsx eax,.x1
|
movsx eax,.x1
|
||||||
shl eax,ROUND
|
shl eax,ROUND
|
||||||
@ -902,14 +796,8 @@ end if
|
|||||||
mov .cty2,edx
|
mov .cty2,edx
|
||||||
; push edx
|
; push edx
|
||||||
; push edx
|
; push edx
|
||||||
;end if
|
|
||||||
|
|
||||||
movsx ecx,.y1
|
;if Ext >= SSE2
|
||||||
cmp cx,.y2
|
|
||||||
jge .loop12_done
|
|
||||||
.loop12:
|
|
||||||
call .call_line
|
|
||||||
;if Ext >= SSE
|
|
||||||
; movups xmm0,.cby1
|
; movups xmm0,.cby1
|
||||||
; movups xmm1,.cty1
|
; movups xmm1,.cty1
|
||||||
; movups xmm2,.cby2
|
; movups xmm2,.cby2
|
||||||
@ -918,22 +806,36 @@ end if
|
|||||||
; movups xmm5,.dty13
|
; movups xmm5,.dty13
|
||||||
; movups xmm6,.dby12
|
; movups xmm6,.dby12
|
||||||
; movups xmm7,.dty12
|
; movups xmm7,.dty12
|
||||||
; addps xmm0,xmm4
|
|
||||||
; addps xmm1,xmm5
|
|
||||||
; addps xmm2,xmm6
|
|
||||||
; addps xmm3,xmm7
|
|
||||||
;
|
|
||||||
;; addps xmm0,.dby12
|
|
||||||
;; addps xmm1,.dty12
|
|
||||||
;; addps xmm2,.dby13
|
|
||||||
;; addps xmm3,.dty13
|
|
||||||
; movups .cby1,xmm0
|
|
||||||
; movups .cty1,xmm1
|
|
||||||
; movups .cby2,xmm2
|
|
||||||
; movups .cty2,xmm3
|
|
||||||
;end if
|
;end if
|
||||||
|
movsx ecx,.y1
|
||||||
|
cmp cx,.y2
|
||||||
|
jge .loop12_done
|
||||||
|
.loop12:
|
||||||
|
;if Ext >= SSE2
|
||||||
|
; fxsave [sse_repository]
|
||||||
|
;end if
|
||||||
|
call .call_line
|
||||||
|
if Ext >= SSE2
|
||||||
|
; fxrstor [sse_repository]
|
||||||
|
movups xmm0,.cby1
|
||||||
|
movups xmm1,.cty1
|
||||||
|
movups xmm2,.cby2
|
||||||
|
movups xmm3,.cty2
|
||||||
|
movups xmm4,.dby13
|
||||||
|
movups xmm5,.dty13
|
||||||
|
movups xmm6,.dby12
|
||||||
|
movups xmm7,.dty12
|
||||||
|
paddd xmm0,xmm4
|
||||||
|
paddd xmm1,xmm5
|
||||||
|
paddd xmm2,xmm6
|
||||||
|
paddd xmm3,xmm7
|
||||||
|
movups .cby1,xmm0
|
||||||
|
movups .cty1,xmm1
|
||||||
|
movups .cby2,xmm2
|
||||||
|
movups .cty2,xmm3
|
||||||
|
end if
|
||||||
|
|
||||||
if Ext >= MMX
|
if (Ext = MMX) | (Ext = SSE)
|
||||||
movq mm0,.cby2
|
movq mm0,.cby2
|
||||||
movq mm1,.cby1
|
movq mm1,.cby1
|
||||||
movq mm2,.cey2
|
movq mm2,.cey2
|
||||||
@ -1005,7 +907,6 @@ end if
|
|||||||
cmp cx,.y3
|
cmp cx,.y3
|
||||||
jge .loop23_done
|
jge .loop23_done
|
||||||
|
|
||||||
;if Ext < SSE
|
|
||||||
|
|
||||||
movsx eax,.z2
|
movsx eax,.z2
|
||||||
shl eax,CATMULL_SHIFT
|
shl eax,CATMULL_SHIFT
|
||||||
@ -1038,54 +939,7 @@ end if
|
|||||||
movzx ebx,word[.t_y2]
|
movzx ebx,word[.t_y2]
|
||||||
shl ebx,ROUND
|
shl ebx,ROUND
|
||||||
mov .cty2,ebx
|
mov .cty2,ebx
|
||||||
;else
|
;if Ext >= SSE2
|
||||||
; movsx eax,.z2
|
|
||||||
; shl eax,CATMULL_SHIFT
|
|
||||||
; cvtsi2ss xmm0,eax
|
|
||||||
; movss .cz2,xmm0
|
|
||||||
;
|
|
||||||
; movsx ebx,.x2
|
|
||||||
; shl ebx,ROUND
|
|
||||||
; cvtsi2ss xmm1,ebx
|
|
||||||
; movss .cx2,xmm1
|
|
||||||
;
|
|
||||||
; movzx edx,word[.b_x2]
|
|
||||||
; shl edx,ROUND
|
|
||||||
; cvtsi2ss xmm2,edx
|
|
||||||
; movss .cbx2,xmm2
|
|
||||||
;
|
|
||||||
; movzx eax,word[.b_y2]
|
|
||||||
; shl eax,ROUND
|
|
||||||
; cvtsi2ss xmm0,eax
|
|
||||||
; movss .cby2,xmm0
|
|
||||||
;
|
|
||||||
; movzx ebx,word[.e_x2]
|
|
||||||
; shl ebx,ROUND
|
|
||||||
; cvtsi2ss xmm1,ebx
|
|
||||||
; movss .cex2,xmm1
|
|
||||||
;
|
|
||||||
; movzx edx,word[.e_y2]
|
|
||||||
; shl edx,ROUND
|
|
||||||
; cvtsi2ss xmm2,edx
|
|
||||||
; movss .cey2,xmm2
|
|
||||||
;
|
|
||||||
; movzx eax,word[.t_x2]
|
|
||||||
; shl eax,ROUND
|
|
||||||
; cvtsi2ss xmm0,eax
|
|
||||||
; movss .ctx2,xmm0
|
|
||||||
;
|
|
||||||
; movzx ebx,word[.t_y2]
|
|
||||||
; shl ebx,ROUND
|
|
||||||
; cvtsi2ss xmm1,ebx
|
|
||||||
; movss .cty2,xmm1
|
|
||||||
|
|
||||||
;end if
|
|
||||||
|
|
||||||
.loop23:
|
|
||||||
call .call_line
|
|
||||||
|
|
||||||
;if Ext >= SSE
|
|
||||||
|
|
||||||
; movups xmm0,.cby1
|
; movups xmm0,.cby1
|
||||||
; movups xmm1,.cty1
|
; movups xmm1,.cty1
|
||||||
; movups xmm2,.cby2
|
; movups xmm2,.cby2
|
||||||
@ -1094,21 +948,34 @@ end if
|
|||||||
; movups xmm5,.dty13
|
; movups xmm5,.dty13
|
||||||
; movups xmm6,.dby23
|
; movups xmm6,.dby23
|
||||||
; movups xmm7,.dty23
|
; movups xmm7,.dty23
|
||||||
; addps xmm0,xmm4
|
|
||||||
; addps xmm1,xmm5
|
|
||||||
; addps xmm2,xmm6
|
|
||||||
; addps xmm3,xmm7
|
|
||||||
; ; addps xmm0,.dby13
|
|
||||||
; ; addps xmm1,.dty13
|
|
||||||
; ; addps xmm2,.dby23
|
|
||||||
; ; addps xmm3,.dty23
|
|
||||||
; movups .cby1,xmm0
|
|
||||||
; movups .cty1,xmm1
|
|
||||||
; movups .cby2,xmm2
|
|
||||||
; movups .cty2,xmm3
|
|
||||||
;
|
|
||||||
;end if
|
;end if
|
||||||
if Ext >= MMX
|
.loop23:
|
||||||
|
;if Ext >= SSE2
|
||||||
|
; fxsave [sse_repository]
|
||||||
|
;end if
|
||||||
|
call .call_line
|
||||||
|
|
||||||
|
if Ext >= SSE2
|
||||||
|
; fxrstor [sse_repository]
|
||||||
|
movups xmm0,.cby1
|
||||||
|
movups xmm1,.cty1
|
||||||
|
movups xmm2,.cby2
|
||||||
|
movups xmm3,.cty2
|
||||||
|
movups xmm4,.dby13
|
||||||
|
movups xmm5,.dty13
|
||||||
|
movups xmm6,.dby23
|
||||||
|
movups xmm7,.dty23
|
||||||
|
paddd xmm0,xmm4
|
||||||
|
paddd xmm1,xmm5
|
||||||
|
paddd xmm2,xmm6
|
||||||
|
paddd xmm3,xmm7
|
||||||
|
movups .cby1,xmm0
|
||||||
|
movups .cty1,xmm1
|
||||||
|
movups .cby2,xmm2
|
||||||
|
movups .cty2,xmm3
|
||||||
|
;
|
||||||
|
end if
|
||||||
|
if (Ext = MMX) | (Ext = SSE)
|
||||||
movq mm0,.cby2
|
movq mm0,.cby2
|
||||||
movq mm1,.cby1
|
movq mm1,.cby1
|
||||||
movq mm2,.cey2
|
movq mm2,.cey2
|
||||||
@ -1180,90 +1047,7 @@ end if
|
|||||||
ret 50
|
ret 50
|
||||||
|
|
||||||
.call_line:
|
.call_line:
|
||||||
;if Ext >= SSE
|
|
||||||
; pushad
|
|
||||||
; push .tex_ptr
|
|
||||||
; fninit
|
|
||||||
; fld dword .cty1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push dword .cty1
|
|
||||||
; fld .ctx1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push .ctx1
|
|
||||||
; fld dword .cz1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
; ; push dwod .cz1
|
|
||||||
; fld dword .cty2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
; ; push .cty2
|
|
||||||
; fld .ctx2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
; ; push dword .ctx2
|
|
||||||
; fld dword .cz2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push dword .cz2
|
|
||||||
;
|
|
||||||
; push .z_buff
|
|
||||||
; push .t_emap
|
|
||||||
; push .t_bmap
|
|
||||||
;--------------------------------------
|
|
||||||
; fld dword .cey2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push dword .cey2
|
|
||||||
;
|
|
||||||
; fld .cex2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push .cex2
|
|
||||||
;
|
|
||||||
; fld dword .cby2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
; ; push dword .cby2
|
|
||||||
|
|
||||||
; fld .cbx2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
; push .cbx2
|
|
||||||
;------------------------------------
|
|
||||||
; fld dword .cey1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push dword .cey1
|
|
||||||
; fld .cex1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
; ; push .cex1
|
|
||||||
; fld dword .cby1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push dword .cby1
|
|
||||||
; fld .cbx1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; sub esp,4
|
|
||||||
;; push .cbx1
|
|
||||||
; push ecx
|
|
||||||
|
|
||||||
; fld .cx1
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; mov eax,[esp-4]
|
|
||||||
; sar eax,ROUND
|
|
||||||
; fld .cx2
|
|
||||||
; fistp dword [esp-4]
|
|
||||||
; mov ebx,[esp-4]
|
|
||||||
; sar ebx,ROUND
|
|
||||||
|
|
||||||
; call bump_tex_line_z
|
|
||||||
;
|
|
||||||
; popad
|
|
||||||
;else
|
|
||||||
pushad
|
pushad
|
||||||
push .tex_ptr
|
push .tex_ptr
|
||||||
push dword .cty1
|
push dword .cty1
|
||||||
@ -1281,8 +1065,16 @@ ret 50
|
|||||||
push .cbx2
|
push .cbx2
|
||||||
push dword .cey1
|
push dword .cey1
|
||||||
push .cex1
|
push .cex1
|
||||||
|
;if Ext >= SSE2
|
||||||
|
; sub esp,8
|
||||||
|
; shufps xmm0,xmm0,10110100b
|
||||||
|
; movhps [esp],xmm0 ;================================
|
||||||
|
;else
|
||||||
|
|
||||||
push dword .cby1
|
push dword .cby1
|
||||||
push .cbx1
|
push .cbx1
|
||||||
|
;end if
|
||||||
|
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
mov eax,.cx1
|
mov eax,.cx1
|
||||||
|
@ -271,7 +271,7 @@ base_vector:
|
|||||||
if Ext=SSE2
|
if Ext=SSE2
|
||||||
db ' (SSE2)'
|
db ' (SSE2)'
|
||||||
end if
|
end if
|
||||||
db ' 0.059',0
|
db ' 0.060',0
|
||||||
labellen:
|
labellen:
|
||||||
STRdata db '-1 '
|
STRdata db '-1 '
|
||||||
|
|
||||||
|
@ -486,7 +486,7 @@ end if
|
|||||||
; pop ebp ebx eax
|
; pop ebp ebx eax
|
||||||
popad
|
popad
|
||||||
|
|
||||||
if Ext >= MMX
|
if (Ext = MMX)|(Ext=SSE)
|
||||||
movq mm0,.cur1b
|
movq mm0,.cur1b
|
||||||
movq mm1,.cur1r
|
movq mm1,.cur1r
|
||||||
movq mm2,.scan_y1
|
movq mm2,.scan_y1
|
||||||
@ -505,7 +505,25 @@ if Ext >= MMX
|
|||||||
movq .cur2b,mm3
|
movq .cur2b,mm3
|
||||||
movq .cur2r,mm4
|
movq .cur2r,mm4
|
||||||
movq .scan_y2,mm5
|
movq .scan_y2,mm5
|
||||||
else
|
end if
|
||||||
|
if Ext >= SSE2
|
||||||
|
movups xmm0,.cur1b
|
||||||
|
movups xmm1,.dc13b
|
||||||
|
movups xmm2,.cur2b
|
||||||
|
movups xmm3,.dc12b
|
||||||
|
movq mm2,.scan_y1
|
||||||
|
movq mm5,.scan_y2
|
||||||
|
paddd xmm0,xmm1
|
||||||
|
paddd xmm2,xmm3
|
||||||
|
paddd mm2,.tex_dy13
|
||||||
|
paddd mm5,.tex_dy12
|
||||||
|
movq .scan_y1,mm2
|
||||||
|
movq .scan_y2,mm5
|
||||||
|
movups .cur1b,xmm0
|
||||||
|
movups .cur2b,xmm2
|
||||||
|
end if
|
||||||
|
|
||||||
|
if Ext = NON
|
||||||
mov edx,.dc13b
|
mov edx,.dc13b
|
||||||
add .cur1b,edx
|
add .cur1b,edx
|
||||||
mov esi,.dc13g
|
mov esi,.dc13g
|
||||||
@ -602,7 +620,7 @@ end if
|
|||||||
|
|
||||||
popad
|
popad
|
||||||
|
|
||||||
if Ext >= MMX
|
if (Ext = MMX)|(Ext=SSE)
|
||||||
movq mm0,.cur1b
|
movq mm0,.cur1b
|
||||||
movq mm1,.cur1r
|
movq mm1,.cur1r
|
||||||
movq mm2,.scan_y1
|
movq mm2,.scan_y1
|
||||||
@ -621,7 +639,24 @@ if Ext >= MMX
|
|||||||
movq .cur2b,mm3
|
movq .cur2b,mm3
|
||||||
movq .cur2r,mm4
|
movq .cur2r,mm4
|
||||||
movq .scan_y2,mm5
|
movq .scan_y2,mm5
|
||||||
else
|
end if
|
||||||
|
if Ext >= SSE2
|
||||||
|
movups xmm0,.cur1b
|
||||||
|
movups xmm1,.dc13b
|
||||||
|
movups xmm2,.cur2b
|
||||||
|
movups xmm3,.dc23b
|
||||||
|
movq mm2,.scan_y1
|
||||||
|
movq mm5,.scan_y2
|
||||||
|
paddd xmm0,xmm1
|
||||||
|
paddd xmm2,xmm3
|
||||||
|
paddd mm2,.tex_dy13
|
||||||
|
paddd mm5,.tex_dy23
|
||||||
|
movq .scan_y1,mm2
|
||||||
|
movq .scan_y2,mm5
|
||||||
|
movups .cur1b,xmm0
|
||||||
|
movups .cur2b,xmm2
|
||||||
|
end if
|
||||||
|
if Ext = NON
|
||||||
mov edx,.dc13b
|
mov edx,.dc13b
|
||||||
add .cur1b,edx
|
add .cur1b,edx
|
||||||
mov esi,.dc13g
|
mov esi,.dc13g
|
||||||
@ -740,8 +775,8 @@ if Ext=NON
|
|||||||
mov ecx,dword .z1
|
mov ecx,dword .z1
|
||||||
xchg ecx, .z2
|
xchg ecx, .z2
|
||||||
mov dword .z1, ecx
|
mov dword .z1, ecx
|
||||||
|
end if
|
||||||
else
|
if (Ext=MMX)
|
||||||
movq mm0,.b1 ; b, g
|
movq mm0,.b1 ; b, g
|
||||||
movq mm1,.b2
|
movq mm1,.b2
|
||||||
movq .b1, mm1
|
movq .b1, mm1
|
||||||
@ -755,6 +790,16 @@ else
|
|||||||
movq .tex_x1,mm5
|
movq .tex_x1,mm5
|
||||||
movq .tex_x2,mm4
|
movq .tex_x2,mm4
|
||||||
|
|
||||||
|
end if
|
||||||
|
if Ext>=SSE
|
||||||
|
movups xmm0,.b1
|
||||||
|
movups xmm1,.b2
|
||||||
|
movups .b1,xmm1
|
||||||
|
movups .b2,xmm0
|
||||||
|
movq mm4,.tex_x1 ; x, z
|
||||||
|
movq mm5,.tex_x2
|
||||||
|
movq .tex_x1,mm5
|
||||||
|
movq .tex_x2,mm4
|
||||||
end if
|
end if
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
|
@ -88,16 +88,12 @@ two_tex_triangle_z:
|
|||||||
|
|
||||||
.cx1 equ dword[ebp-96] ; current variables
|
.cx1 equ dword[ebp-96] ; current variables
|
||||||
.cx2 equ dword[ebp-100]
|
.cx2 equ dword[ebp-100]
|
||||||
;.cbx1q equ [ebp-104]
|
|
||||||
.cbx1 equ dword[ebp-104]
|
.cbx1 equ dword[ebp-104]
|
||||||
.cby1 equ [ebp-108]
|
.cby1 equ [ebp-108]
|
||||||
;.cbx2q [ebp-112]
|
.cex1 equ dword[ebp-112]
|
||||||
.cbx2 equ dword[ebp-112]
|
.cey1 equ [ebp-116]
|
||||||
.cby2 equ [ebp-116]
|
.cbx2 equ dword[ebp-120]
|
||||||
;.cex1q equ [ebp-120]
|
.cby2 equ [ebp-124]
|
||||||
.cex1 equ dword[ebp-120]
|
|
||||||
.cey1 equ [ebp-124]
|
|
||||||
;.cex2q equ [ebp-128]
|
|
||||||
.cex2 equ dword[ebp-128]
|
.cex2 equ dword[ebp-128]
|
||||||
.cey2 equ [ebp-132]
|
.cey2 equ [ebp-132]
|
||||||
|
|
||||||
@ -579,8 +575,16 @@ end if
|
|||||||
add .cx1,eax
|
add .cx1,eax
|
||||||
mov ebx,.dx12
|
mov ebx,.dx12
|
||||||
add .cx2,ebx
|
add .cx2,ebx
|
||||||
|
if Ext>= SSE2
|
||||||
if Ext >= MMX
|
movups xmm0,.cey1
|
||||||
|
movups xmm1,.cey2
|
||||||
|
movups xmm2,.dey12q
|
||||||
|
movups xmm3,.dey13q
|
||||||
|
paddd xmm0,xmm3
|
||||||
|
paddd xmm1,xmm2
|
||||||
|
movups .cey1,xmm0
|
||||||
|
movups .cey2,xmm1
|
||||||
|
else if (Ext = MMX) | (Ext=SSE)
|
||||||
movq mm0,.cby2 ; with this optimization object
|
movq mm0,.cby2 ; with this optimization object
|
||||||
movq mm1,.cby1 ; looks bit annoying
|
movq mm1,.cby1 ; looks bit annoying
|
||||||
movq mm2,.cey2
|
movq mm2,.cey2
|
||||||
@ -658,8 +662,16 @@ end if
|
|||||||
add .cx1,eax
|
add .cx1,eax
|
||||||
mov ebx,.dx23
|
mov ebx,.dx23
|
||||||
add .cx2,ebx
|
add .cx2,ebx
|
||||||
|
if Ext>= SSE2
|
||||||
if Ext >= MMX
|
movups xmm0,.cey1
|
||||||
|
movups xmm1,.cey2
|
||||||
|
movups xmm2,.dey23q
|
||||||
|
movups xmm3,.dey13q
|
||||||
|
paddd xmm0,xmm3
|
||||||
|
paddd xmm1,xmm2
|
||||||
|
movups .cey1,xmm0
|
||||||
|
movups .cey2,xmm1
|
||||||
|
else if (Ext = MMX) | ( Ext = SSE)
|
||||||
movq mm0,.cby2 ; with this mmx optimization object looks bit
|
movq mm0,.cby2 ; with this mmx optimization object looks bit
|
||||||
movq mm1,.cby1 ; annoying
|
movq mm1,.cby1 ; annoying
|
||||||
movq mm2,.cey2
|
movq mm2,.cey2
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
; application : View3ds ver. 0.059 - tiny .3ds files viewer.
|
; application : View3ds ver. 0.060 - tiny .3ds files viewer.
|
||||||
; compiler : FASM
|
; compiler : FASM
|
||||||
; system : KolibriOS
|
; system : KolibriOS
|
||||||
; author : Macgub aka Maciej Guba
|
; author : Macgub aka Maciej Guba
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
View3ds 0.059 - tiny viewer to .3ds files.
|
View3ds 0.060 - tiny viewer to .3ds files.
|
||||||
|
|
||||||
What's new?
|
What's new?
|
||||||
1. Bump and pararell two texture mapping functions optimizations.
|
1. Header fix by Leency.
|
||||||
(files bump_cat.inc & two_tex.inc)
|
2. SSE2 optimizations by me. (Most visable in BUMP_TEX mode.)
|
||||||
On my P4 changes are rather non visable, but on dual core in KlbrInWin
|
|
||||||
optimizations runs preety nice.
|
|
||||||
|
|
||||||
|
|
||||||
Buttons description:
|
Buttons description:
|
||||||
1. rotary: choosing rotary axle: x, y, x+y.
|
1. rotary: choosing rotary axle: x, y, x+y.
|
||||||
@ -33,4 +30,4 @@ Buttons description:
|
|||||||
18. re-map tex -> re-map texture and bump map coordinates, to change spherical mapping
|
18. re-map tex -> re-map texture and bump map coordinates, to change spherical mapping
|
||||||
around axle use 'xchg' and 'mirror' buttons, then press 're-map tex' button.
|
around axle use 'xchg' and 'mirror' buttons, then press 're-map tex' button.
|
||||||
|
|
||||||
Macgub Jun 2011
|
Macgub Aug 2011
|
||||||
|
Loading…
Reference in New Issue
Block a user