Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2735 → Rev 2736

/programs/demos/3DS/B_PROCS.INC
755,8 → 755,8
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
 
psubusb xmm0,xmm5 ; importand if fire
 
movups [edi],xmm0
movaps [edi],xmm0
add edi,16
add esi,16
 
/programs/demos/3DS/DATA.INC
152,6 → 152,33
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
if Ext=SSE2
db ' (SSE2)'
end if
db ' 0.060',0
db ' 0.061',0
labellen:
STRdata db '-1 '
 
/programs/demos/3DS/History.txt
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.
/programs/demos/3DS/VIEW3DS.ASM
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
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
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
@@:
 
 
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
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 "GRD_TEX.INC"
include "TWO_TEX.INC"
 
 
alloc_buffer_mem:
movzx ecx,[size_x]
movzx eax,[size_y]