Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 531 → Rev 532

/programs/media/pic4/trunk/pic4.asm
13,6 → 13,7
 
include 'lang.inc'
include '..\..\..\macros.inc'
purge mov ; decrease kpack'ed size
 
START:
mov eax,48
21,7 → 22,9
mov edx,sizeof.system_colors
mcall
 
call check_parameters
cmp dword [I_Param], 'BOOT'
jz OnBoot
 
call draw_window
 
call load_texture
53,51 → 56,41
 
shr eax,8
 
cmp eax,101 ; tiled
cmp al,101 ; tiled
jne no101
mov ecx,1
setbgrmode:
mov eax,15
mov ebx,4
mov ecx,1
mcall
mov eax,15
mov ebx,3
dec ebx
mcall
jmp still
no101:
 
cmp eax,102 ; stretch
jne no102
mov eax,15
mov ebx,4
mov ecx,2
mcall
mov eax,15
mov ebx,3
mcall
jmp still
mov ecx, 2
cmp al, 102
jz setbgrmode
no102:
 
cmp eax,1 ; end program
cmp al,1 ; end program
jnz no_end
or eax,-1
mcall
no_end:
 
cmp eax,11
cmp al,11
jz bg
cmp eax,12
cmp al,12
jz bg
cmp eax,13
cmp al,13
jz bg
 
cmp eax,121
cmp al,121
jb no_bg_select
cmp eax,133
jg no_bg_select
sub eax,121
shl eax,2
add eax,arrays
mov eax,[eax]
cmp al,133
ja no_bg_select
mov eax,[arrays + (eax-121)*4]
mov [usearray],eax
call load_texture
call draw_image
104,19 → 97,14
jmp still
no_bg_select:
 
cmp eax,14+20
cmp al,14+20
jge bg4
 
jmp bg2
 
 
check_parameters:
OnBoot:
 
cmp [I_Param],dword 'BOOT'
je @f
ret
@@:
 
call load_texture
 
mov eax,15
125,7 → 113,6
mov edx,256
mcall
 
mov eax,15
mov ebx,5
mov ecx,0x40000 ; <<< 0x40000 for blue, 0x40000+1 for red,
; <<< 0x40000+2 for green background at boot
133,13 → 120,11
mov esi,256*3*256
mcall
 
mov eax,15
mov ebx,4
dec ebx
mov ecx,2
mcall
 
mov eax,15
mov ebx,3
dec ebx
mcall
 
mov eax,-1
178,13 → 163,13
 
mov edi,0x40000
 
cmp eax,12
cmp al,12
jnz bb1
mov edi,0x40000+1
inc edi
bb1:
cmp eax,13
cmp al,13
jnz bb2
mov edi,0x40000+2
inc edi
bb2:
 
mov eax,15
193,7 → 178,6
mov edx,256
mcall
 
mov eax,15
mov ebx,5
mov ecx,edi
mov edx,0
200,7 → 184,6
mov esi,256*256*3
mcall
 
mov eax,15
mov ebx,3
mcall
 
210,34 → 193,13
; colored background
 
bg2:
mov edi, eax
mcall 15,4,1
mcall ,1,,1
lea ecx, [(edi-14)*3+fill]
mcall ,5,,0,3*1*1
mcall ,3
 
push eax
 
mcall 15,4,1
 
mov eax,15
mov ebx,1
mov ecx,1
mov edx,1
mcall
 
pop eax
sub eax,14
imul eax,3
 
mov ecx,fill
add ecx,eax
 
mov eax,15
mov ebx,5
xor edx,edx
mov esi,3*1*1
mcall
 
mov eax,15
mov ebx,3
mcall
 
jmp still
 
 
245,9 → 207,8
 
bg4:
 
sub eax,14+20
shl eax,3
add eax,shape
add eax,shape - (14+20)*8
mov ecx,[eax+0]
mov edx,[eax+4]
 
255,7 → 216,6
mov ebx,1
mcall
 
mov eax,15
mov ebx,3
mcall
 
275,17 → 235,17
 
gentexture:
 
mov ecx,0 ; ycounter
mov edi,0 ; pixel counter
xor ecx,ecx ; ycounter
xor edi,edi ; pixel counter
 
mov ebp,[usearray]
 
ylup:
mov ebx,0
xor ebx,ebx
 
xlup:
push edi
mov edi, 0
xor edi, edi
mov esi, 512000000 ; abnormous initial value :)
 
pixlup: