Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1534 → Rev 1535

/programs/games/nu_pogodi/trunk/nu_pogod.asm
0,0 → 1,1067
use32
org 0x0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
dd 0x1
dd start
dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
dd mem
dd stacktop
dd 0x0
dd sys_path
 
include '../../../macros.inc'
include '../../../proc32.inc'
include '../../../develop/libraries/box_lib/load_lib.mac'
include 'mem.inc'
include 'dll.inc'
 
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
 
;ä« £¨, ¤«ï ä㭪樨 ®¡à¥§ ­¨ï ¡ãä¥à 
BUF2D_OPT_CROP_TOP equ 1 ;®¡à¥§ª  ᢥàåã
BUF2D_OPT_CROP_LEFT equ 2 ;®¡à¥§ª  á«¥¢ 
BUF2D_OPT_CROP_BOTTOM equ 4 ;®¡à¥§ª  á­¨§ã
BUF2D_OPT_CROP_RIGHT equ 8 ;®¡à¥§ª  á¯à ¢ 
BUF2D_BIT_OPT_CROP_TOP equ 0
BUF2D_BIT_OPT_CROP_LEFT equ 1
BUF2D_BIT_OPT_CROP_BOTTOM equ 2
BUF2D_BIT_OPT_CROP_RIGHT equ 3
 
BUF_STRUCT_SIZE equ 21
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
buf2d_w equ dword[edi+8] ;è¨à¨­  ¡ãä¥à 
buf2d_h equ dword[edi+12] ;¢ëá®â  ¡ãä¥à 
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
buf2d_l equ word[edi+4] ;®âáâ㯠᫥¢ 
buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
 
struct FileInfoBlock
Function dd ?
Position dd ?
Flags dd ?
Count dd ?
Buffer dd ?
db ?
FileName dd ?
ends
 
GAME_POLE_W equ 315 ;è¨à¨­  ¯®«ï
GAME_POLE_H equ 210 ;¢ëá®â  ¯®«ï
GAME_POLE_BYTES equ GAME_POLE_W*GAME_POLE_H*3 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
OFFS_SHADOW_X equ 2 ;ᤢ¨£ ⥭¥© ¯® ®á¨ 'x'
OFFS_SHADOW_Y equ 2 ;ᤢ¨£ ⥭¥© ¯® ®á¨ 'y'
IMAGE_FONT_SIZE equ 128*144*3
 
fn_icon0 db 'curici.png',0 ;¨¬ï ä ©«  á ¤¥ª®à æ¨ï¬¨
fn_icon1 db 'wolf.png',0 ;¨¬ï ä ©«  á ¢®«ª®¬ ¨ § ©æ¥¬
fn_icon2 db 'eggs.png',0 ;¨¬ï ä ©«  á ï©æ ¬¨
fn_icon3 db 'chi.png',0 ;¨¬ï ä ©«  á 樯«ïâ ¬¨
fn_font db 'font8x9.bmp',0
 
color_fon dd 0xffffff
color_shadows dd 0xd0d0d0 ;梥â ⥭¥©
color_trees dd 0x008000 ;梥â âà ¢ë
color_wolf dd 0x800000 ;梥⠢®«ª  ¨ § ©æ 
color_egg dd 0x404080 ;梥â ï©æ 
color_chick dd 0x00d0d0 ;梥â 樯«¥­ª 
color_curici dd 0x8080d0 ;梥⠪ãà¨æë
color_perilo dd 0x000080 ;梥⠯¥à¨«  (£à¥¡­ï)
 
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax
 
copy_path path,sys_path,file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size
m2m [run_file_70.Buffer], [buf]
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
cmp ebx,0xffffffff
je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_decode], dword[buf],ebx,0
mov dword[image_data],eax
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_destroy], dword[image_data]
@@:
}
 
;¤ ­­ë¥ ¨£àë
bit_zaac equ 2 ;¡¨â § ©æ 
val_zaac equ 4 ;æ¨äà  ®â¢¥ç îé ï §  ¡¨â § ©æ 
bit_mig equ 3 ;¡¨â ¬¨£ ­¨ï
val_mig equ 8 ;æ¨äà  ®â¢¥ç îé ï §  ¡¨â ¬¨£ ­¨ï
mask_lot_lu equ 1b ;¬ áª  ¤«ï «¥¢®£® ¢¥àå­¥£® «®âª 
mask_lot_ld equ 100000b ;¬ áª  ¤«ï «¥¢®£® ­¨¦­¥£® «®âª 
mask_lot_ru equ 10000000000b ;¬ áª  ¤«ï ¯à ¢®£® ¢¥àå­¥£® «®âª 
mask_lot_rd equ 1000000000000000b ;¬ áª  ¤«ï ¯à ¢®£® ­¨¦­¥£® «®âª 
mask_clear_all equ 11111011111011110111101111011110b ;¬ áª  ¤«ï ®ç¨á⪨ ¯ ¤ îé¨å ï¨æ ¨ ¯à¨¡¥¦ ¢è¨å 樯«ïâ
mask_fail_eggs equ 100001000010000100000b ;¬ áª  ¯ ¤ îé¨å ï¨æ
mask_chi_left equ 11111000000000000000000000b ;¬ áª  «¥¢ëå 樯«ïâ
mask_chi_right equ 11111000000000000000000000000000b ;¬ áª  ¯à ¢ëå 樯«ïâ
mask_chi_cr_l equ 1000000000000000000000b ;¬ áª  ¤«ï ᮧ¤ ­¨ï «¥¢®£®
mask_chi_cr_r equ 1000000000000000000000000000b ;¬ áª  ¤«ï ᮧ¤ ­¨ï ¯à ¢®£®
bit_chi_left equ 21 ;1-© ¡¨â ª®â®àë© ®â¢¥ç ¥â §  ¡¥£ã饣® á«¥¢ 
bit_chi_right equ 27 ;1-© ¡¨â ª®â®àë© ®â¢¥ç ¥â §  ¡¥£ã饣® ¯à ¢ 
 
pos_wolf db 0 ;¯®§¨æ¨ï ¢®«ª  0-© ¡¨â á«¥¢ /á¯à ¢ , 1-© ¡¨â ᢥàåã/¢­¨§
;rb 1
pos_eggs dd 0 ;¯®§¨æ¨¨ à á¯®«®¦¥­¨ï ï¨æ ¨ 樯«ïâ
eggs_count dw 0 ;ª®««¨ç¥á⢮ ¯®©¬ ­ëå ï¨æ
game_text db 'ˆ£à  _',13
some_text db '0'
rb 8 ;⥪áâ á ç¨á«®¬ ¯®©¬ ­­ëå ï¨æ
count_last db 0 ;áç¥â稪 ¯à®¯ã饭­ëå ï¨æ
game_spd dd 0 ;§ ¤¥à¦ª  ¨£àë
 
;¤«ï £¥­¥à æ¨¨ á«ãç ©­ëå ç¨á¥«
rand_x dd 0
 
align 4
rand_next:
;x(k+1) = (a*x(k)+c) mod m
; a=22695477, c=1, m=2^32
push eax
mov eax,dword[rand_x]
imul eax,22695477
inc eax
mov dword[rand_x],eax
pop eax
ret
 
;ᮧ¤ ¥¬ ¯à®§à ç­ë¥ ¡ãä¥à  ¯® 8 ¡¨â (âà ä à¥âë), ¤«ï à¨á®¢ ­¨ï
;£¤¥ buf - ¡ãä¥à ­  ®á­®¢¥ ª®â®à®£® ¡ã¤¥â ᮧ¤ ­ âà ä à¥â
;ä®­®¢ë© 梥⠡ãä¥à  ¤®«¦¥­ ¡ëâì 0xffffff, ¨­ ç¥ ­¥ ¯à®¨§®©¤¥â ®¡à¥§ª 
;¯® ä®­®¢®¬ã 梥âã ¨ âà ä à¥â ¡ã¤¥â § ­¨¬ â 쬭®£® ¬¥áâ  ¢ ¯ ¬ïâ¨
align 4
proc CreateTrapharetBuffer, buf:dword, img_data:dword
push edi
mov edi,dword[buf]
stdcall [buf2d_create_f_img], edi,[img_data] ;ᮧ¤ ¥¬ ¡ãä¥à
stdcall [buf2d_conv_24_to_8], edi,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8¡¨â
stdcall [buf2d_crop_color], edi,buf2d_color,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM+BUF2D_OPT_CROP_RIGHT
pop edi
ret
endp
 
align 4
InitBackgroundBuffer: ;ᮧ¤ ­¨¥ ä®­®¢®£® ¨§®¡à ¦¥­¨ï
pushad
mov edi,buf_fon
mov eax,[color_fon]
mov buf2d_color,eax
stdcall [buf2d_clear], edi,eax
mov esi,edi
 
xor eax,eax
xor ebx,ebx
 
mov edi,buf_tr_fon0
mov ax,buf2d_t
add eax,OFFS_SHADOW_Y
mov bx,buf2d_l
add ebx,OFFS_SHADOW_X
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ¤®¬¨ª®¢
mov edi,buf_tr_fon1
mov ax,buf2d_t
add eax,OFFS_SHADOW_Y
mov bx,buf2d_l
add ebx,OFFS_SHADOW_X
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ªãà¨æ
mov edi,buf_tr_fon2
mov ax,buf2d_t
add eax,OFFS_SHADOW_Y
mov bx,buf2d_l
add ebx,OFFS_SHADOW_X
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ¤¥à¥¢ì¥¢
 
mov edi,buf_tr_fon0
mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_perilo] ;à¨á㥬 ¤®¬¨ª¨
mov edi,buf_tr_fon1
mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_curici] ;à¨á㥬 ªãà¨æë
mov edi,buf_tr_fon2
mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_trees] ;à¨á㥬 ¤¥à¥¢ìï
popad
ret
 
;à¨áã¥â ª à⨭ªã ¢ ¡ãä¥à¥ buf ¨§ ¬ áᨢ  ¡ãä¥à®¢ buf_img á ¨­¤¥ªá®¬ ind
;â. ¥. buf <- buf_img[ind]
align 4
proc DrawArrayImg, buf:dword, buf_img:dword, ind:dword, color:dword
pushad
mov edi,dword[ind]
imul edi,BUF_STRUCT_SIZE
add edi,dword[buf_img]
 
mov esi,dword[buf]
xor eax,eax
mov ax,buf2d_t
xor ebx,ebx
mov bx,buf2d_l
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color]
popad
ret
endp
 
align 4
DrawZaac: ;à¨á®¢ ­¨¥ § ©æ 
push eax
bt word[pos_wolf],bit_zaac
jae .end_mig
 
stdcall DrawArrayImg, buf_displ,buf_wolf,6,[color_wolf] ;à¨á㥬 ⥫® § ©æ 
mov eax,dword[pos_eggs]
and eax,mask_chi_right+mask_chi_left
cmp eax,0
je .end_mig ;¥á«¨ ­¥â ¡¥£ îé¨å 樯«ïâ, â® § ïæ à㪮© ­¥ ¬ è¥â
bt word[pos_wolf],bit_mig
jc @f
stdcall DrawArrayImg, buf_displ,buf_wolf,7,[color_wolf] ;à¨á㥬 àãªã § ©æ  ¢¢¥àåã
jmp .end_mig
@@:
stdcall DrawArrayImg, buf_displ,buf_wolf,8,[color_wolf] ;à¨á㥬 àãªã § ©æ  ¢­¨§ã
.end_mig:
pop eax
ret
 
align 4
DrawWolf: ;à¨áã¥â ¢®«ª  á ª®à§¨­ ¬¨
bt word[pos_wolf],0
jc @f
stdcall DrawArrayImg, buf_displ,buf_wolf,0,[color_wolf]
bt word[pos_wolf],1
jc .corz_ldn
stdcall DrawArrayImg, buf_displ,buf_wolf,1,[color_wolf]
jmp .corz_lend
.corz_ldn:
stdcall DrawArrayImg, buf_displ,buf_wolf,2,[color_wolf]
.corz_lend:
jmp .wolf_b
@@:
stdcall DrawArrayImg, buf_displ,buf_wolf,3,[color_wolf]
bt word[pos_wolf],1
jc .corz_rdn
stdcall DrawArrayImg, buf_displ,buf_wolf,4,[color_wolf]
jmp .corz_rend
.corz_rdn:
stdcall DrawArrayImg, buf_displ,buf_wolf,5,[color_wolf]
.corz_rend:
.wolf_b:
ret
 
align 4
DrawEggs: ;à¨áã¥â ï©æ 
pushad
cld
 
mov eax,dword[pos_eggs]
xor ebx,ebx
mov ecx,20 ;横« ¤«ï à¨á®¢ ­¨ï ª®âïé¨åáï ï¨æ
@@:
bt eax,ebx
jae .draw_egg
stdcall DrawArrayImg, buf_displ,buf_egg,ebx,[color_egg]
.draw_egg:
inc ebx
loop @b
 
;mov eax,dword[pos_eggs]
and eax,mask_chi_left
cmp eax,0
je @f
stdcall DrawArrayImg, buf_displ,buf_egg,20,[color_egg] ;à §¡¨â®¥ ï©æ® á«¥¢ 
@@:
mov eax,dword[pos_eggs]
and eax,mask_chi_right
cmp eax,0
je @f
stdcall DrawArrayImg, buf_displ,buf_egg,21,[color_egg] ;à §¡¨â®¥ ï©æ® á¯à ¢ 
@@:
 
mov eax,dword[pos_eggs]
xor edx,edx
mov ebx,bit_chi_left
mov ecx,5 ;横« ¤«ï à¨á®¢ ­¨ï «¥¢ëå 樯«ïâ
@@:
bt eax,ebx
jae .draw_chick_l
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
.draw_chick_l:
inc ebx
inc edx
loop @b
mov ebx,bit_chi_right
mov ecx,5 ;横« ¤«ï à¨á®¢ ­¨ï ¯à ¢ëå 樯«ïâ
@@:
bt eax,ebx
jae .draw_chick_r
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
.draw_chick_r:
inc ebx
inc edx
loop @b
 
xor eax,eax
mov al,byte[count_last]
mov ecx,eax ;横« ¤«ï à¨á®¢ ­¨ï èâà ä­ëå ®çª®¢
shr ecx,1
mov edx,10 ;¨­¤¥ªá ­ ç «  èâà ä­ëå ¨ª®­®ª ¢ ¡ãä¥à¥ buf_chi
cmp ecx,0
je .no_unit_last
@@:
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
inc edx
loop @b
.no_unit_last:
 
bt ax,0 ;¯à®¢¥à塞 ¬¨£ î饥 ­¥ ç¥â­®¥ ®çª®
jae @f
bt word[pos_wolf],bit_mig
jc @f
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick] ;¬¨£ î饥 èâà ä­®¥ ®çª®
@@:
 
popad
ret
 
align 4
CountEggsInc: ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ï¨æ ­  1
push eax edi
xor eax,eax
inc word[eggs_count] ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ï¨æ
cmp word[eggs_count],200 ;¡®­ãá­ë¥ ®çª¨
je @f
cmp word[eggs_count],500 ;¡®­ãá­ë¥ ®çª¨
je @f
jmp .no_bonus
@@:
mov byte[count_last],0
.no_bonus:
 
mov ax,word[eggs_count]
mov edi,some_text
call convert_to_str ;®¡­®¢«ï¥¬ ⥪á⮢ãî áâபã
and ax,0xf ;ç¥à¥§ ª ¦¤ë¥ 16 ï¨æ 㬥­ìè ¥¬ ¢à¥¬ï
cmp ax,0
jne @f
cmp dword[game_spd],15 ;¬¨­¨¬ «ì­ ï § ¤¥à¦ª 
jle @f
dec dword[game_spd]
@@:
pop edi eax
ret
 
;input:
; eax - ¬ áª , 㪠§ë¢ îé ï á ª ª®© áâà®­ë 㯠«® ï©æ®
align 4
CountLastInc: ;­ ç¨á«¥­¨¥ èâà ä­ëå ®çª®¢
inc byte[count_last] ;¯®«®¢¨­ ® èâà ä­®£® ®çª 
bt word[pos_wolf],bit_zaac
jc @f
inc byte[count_last] ;¥á«¨ ­¥â § ©æ  â® ¥é¥ 1-­  ¯®«®¢¨­  èâà ä­®£® ®çª 
@@:
cmp byte[count_last],6
jle @f
mov byte[count_last],6 ;áâ ¢¨¬ ®£à ­¨ç¥­¨ ­  ç¨á«® èâà ä­ëå ®çª®¢
@@:
or dword[pos_eggs],eax ;ᮧ¤ ¥¬ ¡¥£ã饣® 樯«¥­ª 
ret
 
align 4
MoveEggs:
pushad
xor byte[pos_wolf],val_mig ;¡¨â ¤«ï ¬¨£ ­¨ï
 
cmp byte[count_last],6 ;¬ ªá¨¬ «ì­®¥ ç¨á«® èâà ä­ëå ®çª®¢
je .end_fun
 
rol dword[pos_eggs],1
mov ecx,dword[pos_eggs]
and ecx,mask_fail_eggs
cmp ecx,0
je .no_fail ;­¥â ¯ ¤ îé¨å ï¨æ
;­ ç¨á«¥­¨¥ ï¨æ ¯®¯ ¢è¨å ¢ ª®à§¨­ã
;¨«¨ ­ ç¨á«¥­¨¥ èâà ä­ëå ®çª®¢
xor ebx,ebx
mov bl,byte[pos_wolf] ;¡¥à¥¬ ¯ à ¬¥âàë (¯®§¨æ¨î) ¢®«ª 
and bl,3 ;­  ¢á直© á«ãç ©
 
bt ecx,5 ;¯à®¢¥à塞 ¢¥àå­¥¥ «¥¢®¥ ¯¥à¨«®
jae .perilo_lu
cmp bx,0 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
jne @f
call CountEggsInc
jmp .perilo_lu
@@:
mov eax,mask_chi_cr_l
call CountLastInc
.perilo_lu:
bt ecx,10 ;¯à®¢¥à塞 ­¨¦­¥¥ «¥¢®¥ ¯¥à¨«®
jae .perilo_ld
cmp bx,2 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
jne @f
call CountEggsInc
jmp .perilo_ld
@@:
mov eax,mask_chi_cr_l
call CountLastInc
.perilo_ld:
bt ecx,15 ;¯à®¢¥à塞 ¢¥àå­¥¥ ¯à ¢®¥ ¯¥à¨«®
jae .perilo_ru
cmp bx,1 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
jne @f
call CountEggsInc
jmp .perilo_ru
@@:
mov eax,mask_chi_cr_r
call CountLastInc
.perilo_ru:
bt ecx,20 ;¯à®¢¥à塞 ­¨¦­¥¥ ¯à ¢®¥ ¯¥à¨«®
jae .perilo_rd
cmp bx,3 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
jne @f
call CountEggsInc
jmp .perilo_rd
@@:
mov eax,mask_chi_cr_r
call CountLastInc
.perilo_rd:
.no_fail:
 
and dword[pos_eggs],mask_clear_all ;®ç¨á⪠ 㯠¢è¨å ï¨æ ¨ ¤®¡¥¦ ¢è¨å ªã३
 
call rand_next
bt dword[rand_x],6
jc @f
bt dword[rand_x],8
jc @f
bt dword[rand_x],9
jc @f
xor byte[pos_wolf],val_zaac ;¢ëᮢ뢠¥¬/§ á®¢ë¢ ¥¬ § ©æ 
@@:
 
;ᮧ¤ ­¨¥ ­®¢ëå ï¨æ
bt dword[rand_x],4 ;¯à®¢¥à塞 ¡ã¤¥¬ «¨ ᮧ¤ ¢ âì ­®¢®¥ ï©æ®
jc .end_creat
bt dword[rand_x],5 ;¯à®¢¥à塞 á ª ª®© áâ®à®­ë ¡ã¤¥¬ ᮧ¤ ¢ âì ­®¢®¥ ï©æ®
jc .creat_r
bt dword[rand_x],7
jc @f
or dword[pos_eggs],mask_lot_lu
jmp .end_creat
@@:
or dword[pos_eggs],mask_lot_ld
jmp .end_creat
.creat_r:
bt dword[rand_x],7
jc @f
or dword[pos_eggs],mask_lot_ru
jmp .end_creat
@@:
or dword[pos_eggs],mask_lot_rd
;jmp .end_creat
.end_creat:
 
.end_fun:
popad
ret
 
align 4
proc InitGame, b:dword ;¯¥à¢®­ ç «ì­ë¥ ­ áâனª¨ ¨£àë
mov word[eggs_count],0 ;ª®««¨ç¥á⢮ ¯®©¬ ­ëå ï¨æ
mov byte[some_text],'0'
mov byte[some_text+1],0 ;⥪áâ á ç¨á«®¬ ¯®©¬ ­­ëå ï¨æ
mov byte[count_last],0
mov dword[pos_eggs],0
 
cmp dword[b],0
jne @f
mov byte[game_text+5],'€'
mov dword[game_spd],65 ;§ ¤¥à¦ª  ¨£àë
jmp .end_init
@@:
mov byte[game_text+5],''
mov dword[game_spd],35 ;§ ¤¥à¦ª  ¨£àë
.end_init:
 
push eax ebx
mcall 26,9
mov dword[rand_x],eax ;§ ¯®«­ï¥¬ 1-¥ á«ãç ©­®¥ ç¨á«®
pop ebx eax
 
ret
endp
 
align 4
start:
load_libraries l_libs_start,load_lib_end
 
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
mov ebp,lib0
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
@@:
mov ebp,lib1
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
@@:
 
mcall 40,0x27
mcall 48,3,sc,sizeof.system_colors ;¯®«ãç ¥¬ á¨á⥬­ë¥ 梥â 
 
load_image_file fn_icon0,image_data_gray,3*GAME_POLE_BYTES
mov eax,[image_data_gray]
stdcall CreateTrapharetBuffer,buf_tr_fon0,eax
add eax,GAME_POLE_BYTES
stdcall CreateTrapharetBuffer,buf_tr_fon1,eax
add eax,GAME_POLE_BYTES
stdcall CreateTrapharetBuffer,buf_tr_fon2,eax
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
 
stdcall [buf2d_create], buf_fon ;ᮧ¤ ¥¬ ¡ãä¥à á ä®­®¢ë¬¨ ¤¥ª®à æ¨ï¬¨
 
load_image_file fn_icon1,image_data_gray, 9*GAME_POLE_BYTES
mov eax,[image_data_gray]
mov edi,buf_wolf
mov ecx,9
cld
@@: ;áç¨â뢠¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
mov buf2d_size_lt,0
mov buf2d_w,GAME_POLE_W
mov buf2d_h,GAME_POLE_H
mov buf2d_color,0xffffff
mov buf2d_bits,24
stdcall CreateTrapharetBuffer,edi,eax
add eax,GAME_POLE_BYTES
add edi,BUF_STRUCT_SIZE
loop @b
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
 
load_image_file fn_icon2,image_data_gray, 22*GAME_POLE_BYTES
mov eax,[image_data_gray]
mov edi,buf_egg
mov ecx,22
cld
@@: ;áç¨â뢠¥¬ 22 ¡ãä¥à®¢ á ï©æ ¬¨
mov buf2d_size_lt,0
mov buf2d_w,GAME_POLE_W
mov buf2d_h,GAME_POLE_H
mov buf2d_color,0xffffff
mov buf2d_bits,24
stdcall CreateTrapharetBuffer,edi,eax
add eax,GAME_POLE_BYTES
add edi,BUF_STRUCT_SIZE
loop @b
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
 
load_image_file fn_icon3,image_data_gray, 13*GAME_POLE_BYTES
mov eax,[image_data_gray]
mov edi,buf_chi
mov ecx,13
cld
@@: ;áç¨â뢠¥¬ 13 ¡ãä¥à®¢ á 樯«ïâ ¬¨
mov buf2d_size_lt,0
mov buf2d_w,GAME_POLE_W
mov buf2d_h,GAME_POLE_H
mov buf2d_color,0xffffff
mov buf2d_bits,24
stdcall CreateTrapharetBuffer,edi,eax
add eax,GAME_POLE_BYTES
add edi,BUF_STRUCT_SIZE
loop @b
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
 
load_image_file fn_font, image_data_gray,IMAGE_FONT_SIZE
stdcall [buf2d_create_f_img], buf_font,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
 
stdcall [buf2d_conv_24_to_8], buf_font,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
stdcall [buf2d_convert_text_matrix], buf_font
 
;¯à®¢¥àª  § ­¨¬ ¥¬®£® ¡ãä¥à®¬ ¬¥áâ 
;mov edi,buf_wolf
;add edi,BUF_STRUCT_SIZE ;¯¥à¥å®¤¨¬ ­  ¡ãä¥à ª®à§¨­ë
;stdcall [buf2d_clear],edi,0x808080 ;§ «¨¢ ¥¬ ¥£® á¥àë¬ æ¢¥â®¬
 
stdcall [buf2d_create], buf_displ ;ᮧ¤ ¥¬ ¡ãä¥à ¤«ï ¢ë¢®¤  ­  íªà ­
call InitBackgroundBuffer ;§ ¯®«­ï¥¬ ¡ãä¥à á ä®­®¢ë¬¨ ¤¥ª®à æ¨ï¬¨
stdcall InitGame,0
mcall 26,9
mov [last_time],ebx
 
 
 
align 4
red_win:
call draw_window
 
align 4
still: ;£« ¢­ë© 横«
mcall 26,9
mov ebx,[last_time]
add ebx,dword[game_spd] ;delay
sub ebx,eax
cmp ebx,dword[game_spd] ;delay
ja it_is_time_now
test ebx,ebx
jz it_is_time_now
mcall 23
 
cmp eax,0
je it_is_time_now
 
;mcall 10
 
cmp al,0x1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
jz red_win
cmp al,0x2
jz key
cmp al,0x3
jz button
 
jmp still
 
align 4
it_is_time_now:
mcall 26,9
mov [last_time],eax
 
;...§¤¥áì ¨¤ãâ ¤¥©á⢨ï, ¢ë§ë¢ ¥¬ë¥ ª ¦¤ë¥ delay á®âëå ¤®«¥© ᥪ㭤...
call MoveEggs
call draw_display
jmp still
 
align 4
key:
push eax ebx
mcall 2
 
cmp ah,176 ;Left
jne @f
and byte[pos_wolf],0xfe
@@:
cmp ah,179 ;Right
jne @f
or byte[pos_wolf],1
@@:
cmp ah,178 ;Up
jne @f
and byte[pos_wolf],0xff-2
@@:
cmp ah,177 ;Down
jne @f
or byte[pos_wolf],2
@@:
 
cmp ah,97 ;a
jne @f
and byte[pos_wolf],0xff-3 ;00
@@:
cmp ah,122 ;z
jne @f
and byte[pos_wolf],0xff-1
or byte[pos_wolf],2 ;10
@@:
cmp ah,39 ;'
jne @f
and byte[pos_wolf],0xff-2
or byte[pos_wolf],1 ;01
@@:
cmp ah,47 ;/
jne @f
or byte[pos_wolf],3 ;11
@@:
 
pop ebx eax
jmp still
 
 
align 4
draw_window:
pushad
mcall 12,1
 
xor eax,eax
mov ebx,20*65536+370
mov ecx,20*65536+280
mov edx,[sc.work]
;or edx,0x33000000
or edx,0x73000000
mov edi,hed
mcall ;ᮧ¤ ­¨¥ ®ª­ 
 
mcall 9,procinfo,-1
mov edi,buf_displ
mov eax,dword[procinfo.client_box.width]
cmp eax,GAME_POLE_W
jle @f
sub eax,GAME_POLE_W
shr eax,1
mov buf2d_l,ax ;¢ë¯à ¢­¨¢ ¥¬ ¡ãä¥à ¯® 業âàã ®ª­ 
@@:
 
call draw_display
 
mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª 
mov edx,[sc.work]
xor esi,esi
mov si,buf2d_l
add esi,GAME_POLE_W
mov ebx,dword[procinfo.client_box.width]
inc ebx
cmp esi,ebx
jge @f
sub ebx,esi
rol ebx,16
mov bx,si
rol ebx,16
mov ecx,dword[procinfo.client_box.height]
inc ecx
int 0x40 ;à¨á®¢ ­¨¥ ¯à ¢®£® ¡®ª®¢®£® ¯®«ï
jmp .draw_s
@@:
mov esi,dword[procinfo.client_box.width] ;ª®£¤  ¯® è¨à¨­¥ ­¥ ¢« §¨â
inc esi
.draw_s:
 
mov ebx,esi
mov ecx,dword[procinfo.client_box.height]
inc ecx
mov esi,GAME_POLE_H
cmp esi,ebx
jge @f
sub ecx,esi
rol ecx,16
mov cx,si
rol ecx,16
int 0x40 ;à¨á®¢ ­¨¥ ­¨¦­¥£® ¯®«ï
@@:
xor ebx,ebx
mov bx,buf2d_l
mov ecx,GAME_POLE_H
int 0x40 ;à¨á®¢ ­¨¥ «¥¢®£® ¡®ª®¢®£® ¯®«ï
 
mcall 12,2
popad
ret
 
align 4
draw_display:
 
stdcall mem_copy, dword[buf_fon],dword[buf_displ],GAME_POLE_BYTES ;ª®¯¨à®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¨§ ä®­®¢®£® ¡ãä¥à 
call DrawZaac
call DrawWolf ;à¨á㥬 ¢®«ª 
call DrawEggs
 
stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,GAME_POLE_W/2,OFFS_SHADOW_X,[color_curici] ;à¨á㥬 áâபã á ⥪á⮬
 
stdcall [buf2d_draw], buf_displ
 
;mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
;mov ebx,(GAME_POLE_W/2)*65536+OFFS_SHADOW_X
;mov ecx,[color_curici]
;or ecx,0x80000000
;mov edx,some_text
;mcall
 
ret
 
align 4
button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
cmp ah,1
jne still
.exit:
stdcall [buf2d_delete],buf_fon ;㤠«ï¥¬ ¡ãä¥à
stdcall [buf2d_delete],buf_displ ;㤠«ï¥¬ ¡ãä¥à
 
stdcall [buf2d_delete],buf_tr_fon0
stdcall [buf2d_delete],buf_tr_fon1
stdcall [buf2d_delete],buf_tr_fon2
 
stdcall [buf2d_delete],buf_font
 
cld
mov ecx,9
mov edi,buf_wolf
@@: ;㤠«ï¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
stdcall [buf2d_delete],edi
add edi,BUF_STRUCT_SIZE
loop @b
mov ecx,13
mov edi,buf_chi
@@: ;㤠«ï¥¬ 13 ¡ãä¥à®¢
stdcall [buf2d_delete],edi
add edi,BUF_STRUCT_SIZE
loop @b
mov ecx,22
mov edi,buf_egg
@@: ;㤠«ï¥¬ 22 ¡ãä¥à 
stdcall [buf2d_delete],edi
add edi,BUF_STRUCT_SIZE
loop @b
 
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
 
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
 
system_dir0 db '/sys/lib/'
name_buf2d db 'buf2d.obj',0
err_message_found_lib0 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0
err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0
 
system_dir1 db '/sys/lib/'
name_libimg db 'libimg.obj',0
err_message_found_lib1 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
 
;library structures
l_libs_start:
lib0 l_libs name_buf2d, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, import_buf2d_lib, err_message_import0, head_f_i
lib1 l_libs name_libimg, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i
load_lib_end:
 
align 4
proc mem_copy, source:dword, destination:dword, len:dword
push ecx esi edi
cld
mov esi, dword[source]
mov edi, dword[destination]
mov ecx, dword[len]
rep movsb
pop edi esi ecx
ret
endp
 
align 4
convert_to_str:
pushad
;mov eax,dword[value]
;mov edi,dword[text]
mov dword[edi+1],0
cld
call .str
popad
ret
 
 
align 4
.str:
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
cmp eax,ecx ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
jb @f
xor edx,edx ;®ç¨áâ¨âì edx
div ecx ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
push edx ;¯®«®¦¨âì ¢ á⥪
;dec edi ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
pop eax
@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
;sbb al,$69 ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
;das ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
or al,0x30 ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
stosb ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
ret ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
 
 
last_time dd ?
image_data dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥­­ë¬¨ á¥à묨 ¨§®¡à ¦¥­¨ï¬¨ ¢ ä®à¬ â¥ 24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë
 
run_file_70 FileInfoBlock
hed db 'Nu pogodi 29.07.10',0 ;¯®¤¯¨áì ®ª­ 
sc system_colors ;á¨á⥬­ë¥ 梥â 
 
align 4
buf_fon: ;ä®­®¢ë© ¡ãä¥à
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd GAME_POLE_W ;+8 w
dd GAME_POLE_H ;+12 h
dd 0xffffff ;+16 color
db 24 ;+20 bit in pixel
 
align 4
buf_font: ;¡ãä¥à á® èà¨ä⮬
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 25 ;+4 left
dw 25 ;+6 top
dd 128 ;+8 w
dd 144 ;+12 h
dd 0 ;+16 color
db 24 ;+20 bit in pixel
 
align 4
buf_tr_fon0: ;¡ãä¥à á ¤®¬¨ª ¬¨ ¨ ३ª ¬¨
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd GAME_POLE_W ;+8 w
dd GAME_POLE_H ;+12 h
dd 0xffffff ;+16 color
db 24 ;+20 bit in pixel
align 4
buf_tr_fon1: ;¡ãä¥à á ªãà¨æ ¬¨
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd GAME_POLE_W ;+8 w
dd GAME_POLE_H ;+12 h
dd 0xffffff ;+16 color
db 24 ;+20 bit in pixel
align 4
buf_tr_fon2: ;¡ãä¥à á à á⥭¨ï¬¨
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd GAME_POLE_W ;+8 w
dd GAME_POLE_H ;+12 h
dd 0xffffff ;+16 color
db 24 ;+20 bit in pixel
 
align 4
buf_displ:
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 25,0
dd GAME_POLE_W ;+8 w
dd GAME_POLE_H ;+12 h
dd 0 ;+16 color
db 24 ;+20 bit in pixel
 
align 4
buf_wolf:
rb 9*BUF_STRUCT_SIZE
 
align 4
buf_egg:
rb 22*BUF_STRUCT_SIZE
 
align 4
buf_chi:
rb 13*BUF_STRUCT_SIZE
 
align 4
import_libimg:
dd alib_init1
img_is_img dd aimg_is_img
img_info dd aimg_info
img_from_file dd aimg_from_file
img_to_file dd aimg_to_file
img_from_rgb dd aimg_from_rgb
img_to_rgb dd aimg_to_rgb
img_to_rgb2 dd aimg_to_rgb2
img_decode dd aimg_decode
img_encode dd aimg_encode
img_create dd aimg_create
img_destroy dd aimg_destroy
img_destroy_layer dd aimg_destroy_layer
img_count dd aimg_count
img_lock_bits dd aimg_lock_bits
img_unlock_bits dd aimg_unlock_bits
img_flip dd aimg_flip
img_flip_layer dd aimg_flip_layer
img_rotate dd aimg_rotate
img_rotate_layer dd aimg_rotate_layer
img_draw dd aimg_draw
 
dd 0,0
alib_init1 db 'lib_init',0
aimg_is_img db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
aimg_info db 'img_info',0
aimg_from_file db 'img_from_file',0
aimg_to_file db 'img_to_file',0
aimg_from_rgb db 'img_from_rgb',0
aimg_to_rgb db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
aimg_to_rgb2 db 'img_to_rgb2',0
aimg_decode db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
aimg_encode db 'img_encode',0
aimg_create db 'img_create',0
aimg_destroy db 'img_destroy',0
aimg_destroy_layer db 'img_destroy_layer',0
aimg_count db 'img_count',0
aimg_lock_bits db 'img_lock_bits',0
aimg_unlock_bits db 'img_unlock_bits',0
aimg_flip db 'img_flip',0
aimg_flip_layer db 'img_flip_layer',0
aimg_rotate db 'img_rotate',0
aimg_rotate_layer db 'img_rotate_layer',0
aimg_draw db 'img_draw',0
 
align 4
import_buf2d_lib:
dd sz_lib_init
buf2d_create dd sz_buf2d_create
buf2d_create_f_img dd sz_buf2d_create_f_img
buf2d_clear dd sz_buf2d_clear
buf2d_draw dd sz_buf2d_draw
buf2d_delete dd sz_buf2d_delete
buf2d_line dd sz_buf2d_line
buf2d_circle dd sz_buf2d_circle
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
buf2d_offset_h dd sz_buf2d_offset_h
dd 0,0
sz_lib_init db 'lib_init',0
sz_buf2d_create db 'buf2d_create',0
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
sz_buf2d_clear db 'buf2d_clear',0
sz_buf2d_draw db 'buf2d_draw',0
sz_buf2d_delete db 'buf2d_delete',0
sz_buf2d_line db 'buf2d_line',0
sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0
sz_buf2d_offset_h db 'buf2d_offset_h',0
 
i_end:
rb 1024
align 16
procinfo process_information
stacktop:
sys_path rb 4096
file_name:
rb 4096
plugin_path:
rb 4096
openfile_path:
rb 4096
filename_area:
rb 256
mem: