cb6852bc2c
memory requirements 1Mb -> 200Kb. git-svn-id: svn://kolibrios.org@80 a494cfbc-eb01-0410-851d-a64ba20cac60
220 lines
4.6 KiB
NASM
220 lines
4.6 KiB
NASM
use32
|
||
org 0x0
|
||
|
||
db 'MENUET01'
|
||
dd 0x01
|
||
dd START
|
||
dd I_END
|
||
dd mem_end
|
||
dd mem_end
|
||
dd 0x0, 0x0
|
||
|
||
;include 'lang.inc'
|
||
START:
|
||
|
||
mov edi, my_img
|
||
mov ecx, 64001*3/4+1
|
||
xor eax, eax
|
||
rep stosd
|
||
|
||
mov al, 3
|
||
int 0x40
|
||
mov [curtime], eax
|
||
|
||
red:
|
||
push 12
|
||
pop eax
|
||
push 1
|
||
pop ebx
|
||
int 0x40
|
||
|
||
xor eax, eax
|
||
mov ebx, 200*65536+325
|
||
mov ecx, 150*65536+225
|
||
xor edx, edx
|
||
xor esi, esi
|
||
mov edi, 0x00100000
|
||
int 0x40
|
||
|
||
mov al, 8
|
||
mov ebx, (325-19)*65536+12
|
||
mov ecx, 5*65536+12
|
||
inc edx
|
||
mov esi, 0x00400000
|
||
int 0x40
|
||
|
||
mov al, 4
|
||
mov ebx, 8*65536+8
|
||
mov ecx, 0x00FFFFFF;0x00402020
|
||
mov edx, fire_label
|
||
push len00
|
||
pop esi
|
||
int 0x40
|
||
|
||
mov al, 12
|
||
push 2
|
||
pop ebx
|
||
int 0x40
|
||
|
||
still:
|
||
|
||
push 11
|
||
pop eax
|
||
int 0x40
|
||
|
||
dec eax
|
||
jz red
|
||
dec eax
|
||
jz key
|
||
dec eax
|
||
jz button
|
||
|
||
call image
|
||
push 3
|
||
pop eax
|
||
int 0x40
|
||
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
|
||
int 0x40
|
||
lea edx, [ebx-10]
|
||
mov al, 47
|
||
mov ebx, 30000h
|
||
xor ecx, ecx
|
||
xchg ecx, [fps]
|
||
mov esi, 0x00FFFFFF ;0x00400000
|
||
int 0x40
|
||
jmp still
|
||
|
||
key:
|
||
mov al, 2
|
||
int 0x40
|
||
cmp ah, 1Bh ;<Esc>
|
||
jne still
|
||
button:
|
||
; we have only one button, close
|
||
or eax, -1
|
||
int 0x40
|
||
|
||
image:
|
||
|
||
; <20><><EFBFBD>㥬 <20><><EFBFBD>⠣p<E2A0A3><70><EFBFBD><EFBFBD>
|
||
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<EFBFBD><48><EFBFBD>H<EFBFBD><48>_! <20><><EFBFBD><EFBFBD><EFBFBD> ᠬ<><E1A0AC> <20><><EFBFBD><EFBFBD>p<EFBFBD>᭮<EFBFBD>.
|
||
; <20><><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD> <20><>p<EFBFBD><70><EFBFBD><EFBFBD>.
|
||
mov esi,[count1]
|
||
mov edx,[count2]
|
||
mov ecx, 10000h
|
||
Flame: cmp esi,0xFA00*3+my_img ; <20>ᥢ<EFBFBD><E1A5A2><EFBFBD><EFBFBD><EFBFBD>砩<EFBFBD><E7A0A9><EFBFBD> <20><>窠 <20> <20>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>p
|
||
jae NxtP ; <20> H<><48> - <20><>p<EFBFBD><70> <><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||
lodsd
|
||
dec esi ; <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><> 梥<>.
|
||
; and eax,0x00ff0000
|
||
test eax, eax
|
||
; <20><>窠 <20><>p<EFBFBD><70><EFBFBD>? (<28><>p<EFBFBD><70><EFBFBD> <20><>祬<EFBFBD>?)
|
||
jz NxtP ; <20> <20><> - <20><>p<EFBFBD><70> <><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||
sub eax,0x00040000
|
||
; <20><><EFBFBD>⮬ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>訬
|
||
mov [esi-2*3],eax ; <20>⠢<EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5>,
|
||
mov [esi],eax ; <20><>p<EFBFBD><70><EFBFBD>,
|
||
mov [320*3+esi-1*3],eax ; ᭨<><E1ADA8>
|
||
mov [esi-0x141*3],eax ; <20> ᢥp<E1A2A5><70>.
|
||
NxtP:
|
||
add esi,edx
|
||
cmp esi,0xffff*3+my_img
|
||
jbe loc_cont
|
||
sub esi,0xfffe*3
|
||
loc_cont:
|
||
; <20><>p<EFBFBD><70> <><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
add edx,3
|
||
cmp edx,0x10000*3
|
||
jbe loc_cont2
|
||
sub edx,0xfffe*3
|
||
loc_cont2:
|
||
; <20>ᥢ<EFBFBD><E1A5A2><EFBFBD><EFBFBD><EFBFBD>砩<EFBFBD><E7A0A9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||
;jnz Flame ; <20> ⠪ 65536 p<><70>.
|
||
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:
|