forked from KolibriOS/kolibrios
View3DS 0.61
git-svn-id: svn://kolibrios.org@2736 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
a2ca7586dc
commit
0e20133b51
@ -755,8 +755,8 @@ if Ext>=SSE2
|
||||
mov ecx,(SIZE_X*(SIZE_Y-3))*3/16
|
||||
.blr:
|
||||
@@:
|
||||
movups xmm0,[edi+SIZE_X*3]
|
||||
movups xmm1,[edi-SIZE_X*3]
|
||||
movaps xmm0,[edi+SIZE_X*3]
|
||||
movaps xmm1,[edi-SIZE_X*3]
|
||||
movups xmm2,[edi-3]
|
||||
movups xmm3,[edi+3]
|
||||
|
||||
@ -766,7 +766,7 @@ if Ext>=SSE2
|
||||
|
||||
psubusb xmm0,xmm5 ; importand if fire
|
||||
|
||||
movups [edi],xmm0
|
||||
movaps [edi],xmm0
|
||||
add edi,16
|
||||
add esi,16
|
||||
|
||||
|
@ -152,6 +152,33 @@ bumps_deep_flag db 3
|
||||
db 255
|
||||
map_tex_flag db ? ;1
|
||||
dd ? ;bumps_d_f
|
||||
|
||||
db 22
|
||||
db 'bright + '
|
||||
db 6
|
||||
inc_bright_flag db 0 ;1
|
||||
dd blur_f
|
||||
|
||||
db 23
|
||||
db 'bright - '
|
||||
db 6
|
||||
dec_bright_flag db 0 ;1
|
||||
dd blur_f
|
||||
|
||||
; db 24
|
||||
; db 'max '
|
||||
; db 2
|
||||
;max_flag db 0 ;1
|
||||
; dd blur_f
|
||||
;
|
||||
; db 25
|
||||
; db 'min '
|
||||
; db 2
|
||||
;min_flag db 0 ;1
|
||||
; dd blur_f
|
||||
|
||||
|
||||
|
||||
; db 21
|
||||
; db 'light No. '
|
||||
; db 3
|
||||
@ -271,7 +298,7 @@ base_vector:
|
||||
if Ext=SSE2
|
||||
db ' (SSE2)'
|
||||
end if
|
||||
db ' 0.060',0
|
||||
db ' 0.061',0
|
||||
labellen:
|
||||
STRdata db '-1 '
|
||||
|
||||
|
@ -1,6 +1,11 @@
|
||||
View3ds 0.061 - Nov 2011.
|
||||
1. Two new buttons to increase and decrease brightness.
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
View3ds 0.060 - Aug 2011.
|
||||
1. Header fix by Leency.
|
||||
2. SSE2 optimizations by me. (Most visable in BUMP_TEX mode.)
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
View3ds 0.059 - June 2011.
|
||||
1. Bump and pararell two texture mapping functions optimizations.
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
; application : View3ds ver. 0.060 - tiny .3ds files viewer.
|
||||
; application : View3ds ver. 0.061 - tiny .3ds files viewer.
|
||||
; compiler : FASM
|
||||
; system : KolibriOS
|
||||
; author : Macgub aka Maciej Guba
|
||||
@ -35,7 +35,7 @@ NON = 0 ; -/ \-
|
||||
MMX = 1
|
||||
SSE = 2
|
||||
SSE2 = 3
|
||||
Ext = MMX ;Ext={ NON | MMX | SSE | SSE2 }
|
||||
Ext = SSE2 ;Ext={ NON | MMX | SSE | SSE2 }
|
||||
|
||||
; 0 for short names (Menuet-compatible), 1 for long names (Kolibri features)
|
||||
USE_LFN = 1
|
||||
@ -93,7 +93,6 @@ START: ; start of execution
|
||||
call calc_bumpmap_coords ; bump and texture mapping
|
||||
call draw_window
|
||||
|
||||
|
||||
still:
|
||||
|
||||
mov eax,23 ; wait here for event with timeout
|
||||
@ -457,6 +456,180 @@ still:
|
||||
@@:
|
||||
|
||||
|
||||
cmp [inc_bright_flag],0 ; increase brightness
|
||||
je .no_inc_bright
|
||||
movzx ebx,[inc_bright_flag]
|
||||
shl ebx,4
|
||||
mov esi,screen
|
||||
mov ecx,SIZE_X*SIZE_Y*3
|
||||
if (Ext = MMX)|(Ext = SSE)
|
||||
mov bh,bl
|
||||
push bx
|
||||
shl ebx,16
|
||||
pop bx
|
||||
push ebx
|
||||
push ebx
|
||||
movq mm0,[esp]
|
||||
add esp,8
|
||||
else if Ext >= SSE2
|
||||
mov bh,bl
|
||||
push bx
|
||||
shl ebx,16
|
||||
pop bx
|
||||
movd xmm0,ebx
|
||||
shufps xmm0,xmm0,0
|
||||
end if
|
||||
.oop:
|
||||
if Ext=NON
|
||||
lodsb
|
||||
add al,bl
|
||||
jnc @f
|
||||
mov byte[esi-1],255
|
||||
loop .oop
|
||||
@@:
|
||||
mov [esi-1],al
|
||||
loop .oop
|
||||
else if (Ext=MMX)|(Ext=SSE)
|
||||
movq mm1,[esi]
|
||||
movq mm2,[esi+8]
|
||||
paddusb mm1,mm0
|
||||
paddusb mm2,mm0
|
||||
movq [esi],mm1
|
||||
movq [esi+8],mm2
|
||||
add esi,16
|
||||
sub ecx,16
|
||||
jnz .oop
|
||||
else
|
||||
movaps xmm1,[esi]
|
||||
paddusb xmm1,xmm0
|
||||
movaps [esi],xmm1
|
||||
add esi,16
|
||||
sub ecx,16
|
||||
jnz .oop
|
||||
end if
|
||||
|
||||
.no_inc_bright:
|
||||
|
||||
|
||||
cmp [dec_bright_flag],0
|
||||
je .no_dec_bright
|
||||
movzx ebx,[dec_bright_flag]
|
||||
shl ebx,4
|
||||
mov esi,screen
|
||||
mov ecx,SIZE_X*SIZE_Y*3
|
||||
if (Ext = MMX)|(Ext = SSE)
|
||||
mov bh,bl
|
||||
push bx
|
||||
shl ebx,16
|
||||
pop bx
|
||||
push ebx
|
||||
push ebx
|
||||
movq mm0,[esp]
|
||||
add esp,8
|
||||
else if Ext >=SSE2
|
||||
mov bh,bl
|
||||
push bx
|
||||
shl ebx,16
|
||||
pop bx
|
||||
movd xmm0,ebx
|
||||
shufps xmm0,xmm0,0
|
||||
end if
|
||||
.oop1:
|
||||
if Ext=NON
|
||||
lodsb
|
||||
sub al,bl
|
||||
jb @f
|
||||
mov [esi-1],al
|
||||
loop .oop1
|
||||
@@:
|
||||
mov byte[esi-1],0
|
||||
loop .oop1
|
||||
else if (Ext = MMX)|(Ext=SSE)
|
||||
movq mm1,[esi]
|
||||
psubusb mm1,mm0
|
||||
movq [esi],mm1
|
||||
add esi,8
|
||||
sub ecx,8
|
||||
jnz .oop1
|
||||
else
|
||||
movaps xmm1,[esi]
|
||||
psubusb xmm1,xmm0
|
||||
movaps [esi],xmm1
|
||||
add esi,16
|
||||
sub ecx,16
|
||||
jnz .oop1
|
||||
end if
|
||||
.no_dec_bright:
|
||||
;======================================commmented====================
|
||||
if 0
|
||||
if Ext >= SSE
|
||||
cmp [max_flag],0
|
||||
je .no_max
|
||||
;movzx ebx,[max_flag]
|
||||
.again_max:
|
||||
; push ecx
|
||||
mov edi,screen
|
||||
mov ecx,SIZE_X*3/4
|
||||
; ; pxor mm5,mm5
|
||||
xor eax,eax
|
||||
rep stosd
|
||||
|
||||
mov ecx,(SIZE_X*(SIZE_Y-3))*3/8
|
||||
.calc_max:
|
||||
@@:
|
||||
movq mm0,[edi+SIZE_X*3]
|
||||
movq mm1,[edi-SIZE_X*3]
|
||||
movq mm2,[edi-3]
|
||||
movq mm3,[edi+3]
|
||||
|
||||
pmaxub mm0,mm1
|
||||
pmaxub mm2,mm3
|
||||
pmaxub mm0,mm2
|
||||
|
||||
movq [edi],mm0
|
||||
add edi,8
|
||||
loop @b
|
||||
|
||||
xor eax,eax
|
||||
mov ecx,SIZE_X*3/4
|
||||
rep stosd
|
||||
end if
|
||||
|
||||
.no_max:
|
||||
|
||||
if Ext >= SSE
|
||||
cmp [min_flag],0
|
||||
je .no_min
|
||||
; push ecx
|
||||
mov edi,screen
|
||||
mov ecx,SIZE_X*3/4
|
||||
; ; pxor mm5,mm5
|
||||
xor eax,eax
|
||||
rep stosd
|
||||
|
||||
mov ecx,(SIZE_X*(SIZE_Y-3))*3/8
|
||||
@@:
|
||||
movq mm0,[edi+SIZE_X*3]
|
||||
movq mm1,[edi-SIZE_X*3]
|
||||
movq mm2,[edi-3]
|
||||
movq mm3,[edi+3]
|
||||
|
||||
pminub mm0,mm1
|
||||
pminub mm2,mm3
|
||||
pminub mm0,mm2
|
||||
|
||||
movq [edi],mm0
|
||||
add edi,8
|
||||
loop @b
|
||||
|
||||
xor eax,eax
|
||||
|
||||
mov ecx,SIZE_X*3/4
|
||||
rep stosd
|
||||
end if
|
||||
.no_min:
|
||||
end if
|
||||
;========================commented=====================================
|
||||
RDTSC
|
||||
sub eax,[esp]
|
||||
sub eax,41
|
||||
@ -478,10 +651,15 @@ still:
|
||||
mov edx,5 shl 16 + 23
|
||||
int 0x40
|
||||
|
||||
mov eax,13
|
||||
mov ebx,530*65536+60
|
||||
mov ecx,510*65536+9
|
||||
xor edx,edx
|
||||
int 40h
|
||||
|
||||
mov eax,4 ; function 4 : write text to window
|
||||
mov ebx,5*65536+23 ; [x start] *65536 + [y start]
|
||||
mov ecx,0x00ffffff ;-1
|
||||
mov ebx,530*65536+510 ; [x start] *65536 + [y start]
|
||||
mov ecx,0x00888888
|
||||
mov edx,STRdata ; pointer to text beginning
|
||||
mov esi,10 ; text length
|
||||
int 40h
|
||||
@ -508,6 +686,7 @@ include "BUMP_TEX.INC"
|
||||
include "GRD_TEX.INC"
|
||||
include "TWO_TEX.INC"
|
||||
|
||||
|
||||
alloc_buffer_mem:
|
||||
movzx ecx,[size_x]
|
||||
movzx eax,[size_y]
|
||||
|
Loading…
Reference in New Issue
Block a user