0,0 → 1,219 |
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: |
|
; ¨á㥬 ¯¥â £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: |
; _HH
_! ¤¥áì á ¬®¥ ¨â¥p¥á®¥. |
; «£®p¨â¬ £®p¥¨ï. |
mov esi,[count1] |
mov edx,[count2] |
mov ecx, 10000h |
Flame: cmp esi,0xFA00*3+my_img ; ᥢ¤®á«ãç © ï â®çª ¢ ¯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: |
; ¥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: |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |