kolibrios-fun/programs/demos/fire2/trunk/fire2.asm
heavyiron 4daae89053 *kernel - fixes in 15.2 by Mario79 and 67 by mike.dld
updated sysfunc.txt
*programs 
         new icons and logo for CPUID and ICON
         added new version of @ICON and ICONMNGR
         fixes in iconedit and calendar from DedOK
         new algoritm of fill background in pic4
         all apps (fasm-writen only) rewriten to use common macros.inc for easy recompile in fastcall mode (there is a bug in https; run need rewrite to use common macros.inc)
         small fixes in build_all.bat script
         

git-svn-id: svn://kolibrios.org@485 a494cfbc-eb01-0410-851d-a64ba20cac60
2007-05-10 13:48:35 +00:00

220 lines
4.5 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

include '..\..\..\macros.inc'
use32
org 0x0
db 'MENUET01'
dd 0x01
dd START
dd I_END
dd mem_end
dd mem_end
dd 0x0, 0x0
START:
mov edi, my_img
mov ecx, 64001*3/4+1
xor eax, eax
rep stosd
mov al, 3
mcall
mov [curtime], eax
red:
push 12
pop eax
push 1
pop ebx
mcall
xor eax, eax
mov ebx, 200*65536+325
mov ecx, 150*65536+225
xor edx, edx
xor esi, esi
mov edi, 0x00100000
mcall
mov al, 8
mov ebx, (325-19)*65536+12
mov ecx, 5*65536+12
inc edx
mov esi, 0x00400000
mcall
mov al, 4
mov ebx, 8*65536+8
mov ecx, 0x00FFFFFF;0x00402020
mov edx, fire_label
push len00
pop esi
mcall
mov al, 12
push 2
pop ebx
mcall
still:
push 11
pop eax
mcall
dec eax
jz red
dec eax
jz key
dec eax
jz button
call image
push 3
pop eax
mcall
cmp eax, [curtime]
jz still
mov [curtime], eax
print_fps:
push 13
pop eax
mov ebx, (8+27*6)*65536+18
mov ecx, 8*65536+8
xor edx, edx
mcall
lea edx, [ebx-10]
mov al, 47
mov ebx, 30000h
xor ecx, ecx
xchg ecx, [fps]
mov esi, 0x00FFFFFF ;0x00400000
mcall
jmp still
key:
mov al, 2
mcall
cmp ah, 1Bh ;<Esc>
jne still
button:
; we have only one button, close
or eax, -1
mcall
image:
; <20>¨á㥬 ¯¥­â £p ¬¬ã
penta:
mov edi,my_img+0x540*3
mov ebx,(320)*3
mov eax,0x00fc0000
push edi
push 0x78
pop ecx
ll_3:
call put_big_point
lea edi, [edi+ebx+6]
loop ll_3
pop edi
mov cl, 0x60
ll_4:
call put_big_point
lea edi, [edi+ebx*2+3]
loop ll_4
mov cl, 0x61
ll_5:
call put_big_point
sub edi, 2*320*3-3
loop ll_5
mov edi, my_img+0x1D4F6
push edi
mov cl, 0x78
ll_6:
call put_big_point
add edi,6
sub edi,ebx
loop ll_6
pop edi
mov ecx,0x8F*2
ll_7: stosd
mov [edi+ebx-4],eax
dec edi
loop ll_7
fire:
; _HˆŒ€Hˆ…_! ‡¤¥áì á ¬®¥ ¨­â¥p¥á­®¥.
; €«£®p¨â¬ £®p¥­¨ï.
mov esi,[count1]
mov edx,[count2]
mov ecx, 10000h
Flame: cmp esi,0xFA00*3+my_img ; <20>ᥢ¤®á«ãç ©­ ï â®çª  ¢ ¯p¥¤ « å íªp
jae NxtP ; ¥á«¨ H… - ¡¥p¥¬ á«¥¤ãîéãî.
lodsd
dec esi ; ‘ç¨â뢠¥¬ ¥¥ 梥â.
; and eax,0x00ff0000
test eax, eax
; ’®çª  ç¥p­ ï? (£®p¥âì ­¥ç¥¬ã?)
jz NxtP ; ¥á«¨ „€ - ¡¥p¥¬ á«¥¤ãîéãî.
sub eax,0x00040000
; –¢¥â®¬ ­  ¥¤¨­¨æã ¬¥­ì訬
mov [esi-2*3],eax ; áâ ¢¨¬ â®çªã á«¥¢ ,
mov [esi],eax ; á¯p ¢ ,
mov [320*3+esi-1*3],eax ; á­¨§ã
mov [esi-0x141*3],eax ; ¨ ᢥpåã.
NxtP:
add esi,edx
cmp esi,0xffff*3+my_img
jbe loc_cont
sub esi,0xfffe*3
loc_cont:
; <20>¥p¥¬ á«¥¤ãîéãî
add edx,3
cmp edx,0x10000*3
jbe loc_cont2
sub edx,0xfffe*3
loc_cont2:
; ¯á¥¢¤®á«ãç ©­ãî â®çªã.
;jnz Flame ; ˆ â ª 65536 p §.
loop Flame
mov [count1],esi
mov [count2],edx
mov ebx,my_img
mov ecx,320*65536+200
mov edx,2*65536+23
push 7
pop eax
int 0x40
inc [fps]
retn
put_big_point:
mov [edi], eax
mov [edi+3], eax
mov [edi-3], eax
mov [edi+ebx], eax
ret
;DATA
align 4
count1 dd my_img
count2 dd 0
curtime dd 0
fps dd 0
fire_label db 'Pentagramm in FIRE FPS:'
len00=$-fire_label
I_END:
align 16
rb 320*3
my_img rb 320*200*3
rb 320*3
; stack
align 256
rb 256
mem_end: