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 '../../../develop/libraries/box_lib/trunk/box_lib.mac' ;¬ ªà®áë ¤«ï § ¤ ¨ï í«¥¬¥â®¢ box_lib 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_l equ word[edi+4] ;®âáâ㯠᫥¢ buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã 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 displ_w dd ? ;è¨à¨ ¯®«ï displ_h dd ? ;¢ëá®â ¯®«ï displ_bytes dd ? ;à §¬¥à 1-£® ä ©« á ¨§®¡à ¦¥¨¥¬ offs_shadow_x dd ? ;ᤢ¨£ ⥥© ¯® ®á¨ 'x' offs_shadow_y dd ? ;ᤢ¨£ ⥥© ¯® ®á¨ 'y' IMAGE_FONT_SIZE equ 128*144*3 BUT1_T equ 10 ;®âáâ㯠ᢥàåã BUT1_L equ 15 ;®âáâ㯠᫥¢ BUT1_W equ 50 ;è¨à¨ BUT1_H equ 20 ;¢ëá®â BUT1_NEXT_TOP equ (BUT1_T+BUT1_H)*65536 game_select_mode db 1 ;०¨¬ ¢ë¡®à ¨£àë FILE_NAME_MAX equ 20 ;¬ ªá¨¬ «ì ï ¤«¨ ¨¬¥¨ ä ©« (¡¥§ ¯ ¯®ª, ®â®á¨â¥«ì® ⥪ã饩) ;§ ç¥¨ï ¨¬¥ ¯® 㬮«ç ¨î ini_def_decorat_file db 'curici.png',0 ini_def_unit_file db 'wolf.png',0 ini_def_objects_file db 'eggs.png',0 ini_def_lost_file db 'chi.png',0 ;¨¬¥ ä ©«®¢ fn_icon0 rb FILE_NAME_MAX ;¨¬ï ä ©« á ¤¥ª®à æ¨ï¬¨ fn_icon1 rb FILE_NAME_MAX ;¨¬ï ä ©« á ¢®«ª®¬ ¨ § ©æ¥¬ fn_icon2 rb FILE_NAME_MAX ;¨¬ï ä ©« á ï©æ ¬¨ fn_icon3 rb FILE_NAME_MAX ;¨¬ï ä ©« á 樯«ïâ ¬¨ fn_font db 'font8x9.bmp',0 fn_icon_tl_sys db 'tl_sys_16.png',0 TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;à §¬¥à bmp ä ©« á á¨á⥬묨 ¨ª®ª ¬¨ ini_m_name db 'main.ini',0 key_count db 'count',0 key_game db 'g' key_game_ind db 0,0,0 ini_name rb FILE_NAME_MAX ;¨¬ï ini ä ©« c ¢ë¡à ®© ¨£à®© ini_sec_files db 'Files',0 key_file_decorat db 'file_decorat',0 key_file_unit db 'file_unit',0 key_file_objects db 'file_objects',0 key_file_lost db 'file_lost',0 key_displ_w db 'displ_w',0 key_displ_h db 'displ_h',0 key_shadow_x db 'offs_shadow_x',0 key_shadow_y db 'offs_shadow_y',0 ini_sec_game db 'Game',0 key_delay_a db 'delay_a',0 key_delay_b db 'delay_b',0 key_delay_min db 'delay_min',0 ini_sec_color db 'Colors',0 ;ª«îç¨ ¤«ï áç¨âë¢ ¨ï 梥⮢ ¨§ *.ini ä ©« key_color_fon db 'background',0 key_color_shadows db 'shadows',0 key_color_egg db 'objects',0 key_color_chick db 'lost',0 key_color_decorat: db 'dec' .ind: db '?',0 key_color_unit db 'unit',0 ;梥⠢ ¨£à¥ color_fon dd ? ;梥â ä® color_shadows dd ? ;梥â ⥥© color_wolf dd ? ;梥⠢®«ª ¨ § ©æ color_egg dd ? ;梥â ï©æ color_chick dd ? ;梥â 樯«¥ª color_decorat dd ?,?,? ;梥⠤¥ª®à 権 (ªãà¨æë, ¯¥à¨« , ...) ;梥⠨â¥à䥩á color_but_sm dd 0x808080 ;梥⠬ «¥ìª¨å ª®¯®ª color_but_te dd 0xffffff ;梥â ⥪áâ ª®¯ª å macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥¨© copy_path path,sys_path,file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï mov [buf],eax 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_move_eggs equ 11111111111111111111b ;¬ ᪠¤¢¨¦ãé¨åáï ï¨æ 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-© ¡¨â ª®â®àë© ®â¢¥ç ¥â § ¡¥£ã饣® ¯à ¢ val_zaac_time_y equ 5 ;ª®««¨ç¥á⢮ ⠪⮢, ª®â®à®¥ ®¡ï§ â¥«ì® ¤®«¦¥ ¯à®¢¨á¥âì § ïæ val_zaac_time_n equ 7 ;ª®««¨ç¥á⢮ ⠪⮢, ª®â®à®¥ ®¡ï§ â¥«ì® ¤®«¦¥ ¡ëâì á¯àïâ ë¬ § ïæ txt_game_a db 'ˆ£à €',0 txt_game_b db 'ˆ£à ',0 zaac_status db 0 ;ç¨á«® ⠪⮢, ª®â®à®¥ § ïæ ¥ ¤®«¦¥ ¬¥ïâì ᢮¥ ¯®«®¦¥¨¥ 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 ;§ ¤¥à¦ª ¨£àë game_delay_a dd ? ;¯¥à¢® ç «ì ï § ¤¥à¦ª ¤«ï ¨£àë € game_delay_b dd ? ;¯¥à¢® ç «ì ï § ¤¥à¦ª ¤«ï ¨£àë game_delay_min dd ? ;¬¨¨¬ «ì ï § ¤¥à¦ª ;¤«ï £¥¥à 樨 á«ãç ©ëå ç¨á¥« 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 eax edi mov edi,dword[buf] ;§ ¯®«¥¨¥ ¤ ëå ¡ãä¥à mov buf2d_size_lt,0 mov eax,dword[displ_w] mov buf2d_w,eax mov eax,dword[displ_h] mov buf2d_h,eax mov buf2d_color,0xffffff mov buf2d_bits,24 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+BUF2D_OPT_CROP_LEFT pop edi eax 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 cld cmp dword[offs_shadow_x],0 jne @f cmp dword[offs_shadow_y],0 jne @f jmp .end_shadows @@: mov edi,buf_decor xor ebx,ebx mov ecx,3 @@: 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] ;à¨á㥬 ⥨ ¤¥ª®à 権 add edi,BUF_STRUCT_SIZE loop @b .end_shadows: mov edi,buf_decor mov ebx,color_decorat mov ecx,3 @@: mov ax,buf2d_t stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[ebx] ;à¨á㥬 ¤¥ª®à 樨 add edi,BUF_STRUCT_SIZE add ebx,4 loop @b 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 mov edi,dword[game_delay_min] ;¬¨¨¬ «ì ï § ¤¥à¦ª cmp dword[game_spd],edi 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 cmp byte[zaac_status],0 jle @f dec byte[zaac_status] jmp .no_zaac_move ;§ ïæ ¯®ª ¥ ¤¢¨£ ¥âáï @@: bt dword[rand_x],6 ;§ ïæ ®â ä® àï ¬¥ï¥â áâ âãá jc @f xor byte[pos_wolf],val_zaac ;¢ëá®¢ë¢ ¥¬/§ á®¢ë¢ ¥¬ § ©æ bt word[pos_wolf],val_zaac jc .zaac_n mov byte[zaac_status],val_zaac_time_y ;áâ ¢¨¬ ¬¨¨¬ «ì®¥ ¢à¥¬ï ¤«ï ᬥë áâ âãá jmp @f .zaac_n: mov byte[zaac_status],val_zaac_time_n ;áâ ¢¨¬ ¬¨¨¬ «ì®¥ ¢à¥¬ï ¤«ï ᬥë áâ âãá @@: .no_zaac_move: ;ᮧ¤ ¨¥ ®¢ëå ï¨æ cmp word[eggs_count],5 ;¯¥à¢ë¥ 5 ï¨æ ª âïâáï ¯® 1-¬ã jge @f mov ecx,dword[pos_eggs] and ecx,mask_move_eggs ;cmp ecx,0 jnz .end_creat @@: 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 mov byte[zaac_status],0 push eax ebx cmp dword[b],0 jne @f mov byte[game_text+5],'€' mov eax,dword[game_delay_a] mov dword[game_spd],eax ;§ ¤¥à¦ª ¨£àë jmp .end_init @@: mov byte[game_text+5],'' mov eax,dword[game_delay_b] mov dword[game_spd],eax ;§ ¤¥à¦ª ¨£àë .end_init: mcall 26,9 mov dword[rand_x],eax ;§ ¯®«ï¥¬ 1-¥ á«ãç ©®¥ ç¨á«® pop ebx eax ret endp align 4 proc LoadArrayBuffer, f_name:dword, buf_start:dword, count:dword pushad mov edx,dword[displ_bytes] mov ecx,edx imul ecx,dword[count] mov eax,dword[f_name] load_image_file eax,image_data_gray,ecx mov edx,dword[displ_bytes] mov eax,[image_data_gray] mov edi,dword[buf_start] mov ecx,dword[count] cld @@: ;áç¨âë¢ ¥¬ 3 ¡ãä¥à á ¤¥ª®à æ¨ï¬¨ stdcall CreateTrapharetBuffer,edi,eax add eax,edx add edi,BUF_STRUCT_SIZE loop @b stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì popad ret endp txt_tile_type_0 rb FILE_NAME_MAX align 4 user_is_select: push ecx esi edi stdcall [tl_node_get_data], tree1 pop esi cmp esi,0 ;¥á«¨ ¨¬ï ¨£àë ¯ãá⮥ je @f mov edi,ini_name mov ecx,FILE_NAME_MAX cld rep movsb mov byte[game_select_mode],0 call InitAll @@: pop edi esi ecx call draw_window ret ;****************************************************************************** ; äãªæ¨ï, ª®â®à ï 1 à § ¤¥« ¥â ¢á¥ áâனª¨ ã¦ë¥ ¤«ï ¨£àë ;****************************************************************************** align 4 InitAll: pushad ;à ¡®â á ä ©«®¬ áâ஥ª copy_path ini_name,sys_path,file_name,0x0 stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_w,210 mov dword[displ_w],eax stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_h,140 mov dword[displ_h],eax stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_decorat,fn_icon0,FILE_NAME_MAX,ini_def_decorat_file stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_unit,fn_icon1,FILE_NAME_MAX,ini_def_unit_file stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_objects,fn_icon2,FILE_NAME_MAX,ini_def_objects_file stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_lost,fn_icon3,FILE_NAME_MAX,ini_def_lost_file stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_x,2 mov dword[offs_shadow_x],eax stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_y,2 mov dword[offs_shadow_y],eax ;áç¨âë¢ ¨¥ áâ஥ª ¢«¨ïîé¨å ᪮àáâì ¨£àë stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_a,65 mov dword[game_delay_a],eax stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_b,35 mov dword[game_delay_b],eax stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_min,15 mov dword[game_delay_min],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_fon,0xffffff mov dword[color_fon],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_shadows,0xd0d0d0 mov dword[color_shadows],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_unit,0 mov dword[color_wolf],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_egg,0x404080 mov dword[color_egg],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_chick,0x00d0d0 mov dword[color_chick],eax mov ebx,color_decorat mov byte[key_color_decorat.ind],'0' mov ecx,3 cld @@: push ecx ;äãªæ¨ï ini_get_color ¨¬¥¥â ¯à ¢® ¬ ïâì ॣ¨áâà ecx stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_decorat,0x000080 pop ecx mov dword[ebx],eax add ebx,4 inc byte[key_color_decorat.ind] loop @b mov edx,dword[displ_w] imul edx,dword[displ_h] lea edx,[edx+edx*2] mov dword[displ_bytes],edx ;¢ëç¨á«ï¥¬ à §¬¥à ¨£à®¢®£® ¯®«ï stdcall LoadArrayBuffer, fn_icon0, buf_decor,3 ;áç¨âë¢ ¥¬ 3 ¡ãä¥à á ¤¥ª®à æ¨ï¬¨ stdcall LoadArrayBuffer, fn_icon1, buf_wolf,9 ;áç¨âë¢ ¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬ stdcall LoadArrayBuffer, fn_icon2, buf_egg,22 ;áç¨âë¢ ¥¬ 22 ¡ãä¥à®¢ á ï©æ ¬¨ stdcall LoadArrayBuffer, fn_icon3, buf_chi,13 ;áç¨âë¢ ¥¬ 13 ¡ãä¥à®¢ á 樯«ïâ ¬¨ 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 ;§ «¨¢ ¥¬ ¥£® á¥àë¬ æ¢¥â®¬ mov ebx,dword[displ_w] mov edx,dword[displ_h] mov edi,buf_displ mov buf2d_w,ebx mov buf2d_h,edx stdcall [buf2d_create], buf_displ ;ᮧ¤ ¥¬ ¡ãä¥à ¤«ï ¢ë¢®¤ íªà mov edi,buf_fon mov buf2d_w,ebx mov buf2d_h,edx stdcall [buf2d_create], buf_fon ;ᮧ¤ ¥¬ ¡ãä¥à á ä®®¢ë¬¨ ¤¥ª®à æ¨ï¬¨ call InitBackgroundBuffer ;§ ¯®«ï¥¬ ¡ãä¥à á ä®®¢ë¬¨ ¤¥ª®à æ¨ï¬¨ stdcall InitGame,0 popad ret 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 ;¯®«ãç ¥¬ á¨áâ¥¬ë¥ æ¢¥â ;****************************************************************************** ; ¯®¤£®â®¢ª ᯨ᪠¨£®à ;****************************************************************************** stdcall dword[tl_data_init], tree1 load_image_file fn_icon_tl_sys, image_data_gray,TREE_ICON_SYS16_BMP_SIZE stdcall [buf2d_create_f_img], buf_tree_sys,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì mov edi,buf_tree_sys m2m dword[tree1.data_img_sys],buf2d_data ;à ¡®â á £« ¢ë¬ ä ©«®¬ áâ஥ª copy_path ini_m_name,sys_path,file_name,0x0 stdcall dword[ini_get_int],file_name,ini_sec_files,key_count,1 mov ecx,eax mov dl,'0' cld @@: mov byte[key_game_ind],dl inc dl push ecx edx stdcall dword[ini_get_str],file_name,ini_sec_files,key_game,txt_tile_type_0,FILE_NAME_MAX,ini_def_decorat_file stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 ;¤®¡ ¢«ï¥¬ §¢ ¨¥ ¨£àë stdcall dword[tl_cur_next], tree1 ;¯¥à¥®á¨¬ ªãàá®à ¢¨§, çâ®-¡ë ¥ ¯®¬¥ï«áï ¯®à冷ª ¨£à pop edx ecx loop @b stdcall dword[tl_cur_beg], tree1 ;¯¥à¥®á¨¬ ªãàá®à ¢¢¥àå mcall 26,9 mov [last_time],ebx align 4 red_win: call draw_window align 4 still: ;£« ¢ë© 横« cmp byte[game_select_mode],0 jne .select_mode 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 jmp @f .select_mode: mcall 10 @@: cmp al,1 ;¨§¬¥¨«®áì ¯®«®¦¥¨¥ ®ª jz red_win cmp al,2 jz key cmp al,3 jz button cmp al,6 jz mouse jmp still align 4 mouse: cmp byte[game_select_mode],0 je @f stdcall [tl_mouse], tree1 ;¥á«¨ ¨£à ¥é¥ ¥ ¢ë¡à @@: jmp still align 4 it_is_time_now: mcall 26,9 mov [last_time],eax cmp byte[game_select_mode],0 jne still ;...§¤¥áì ¨¤ãâ ¤¥©á⢨ï, ¢ë§ë¢ ¥¬ë¥ ª ¦¤ë¥ delay á®âëå ¤®«¥© ᥪã¤... call MoveEggs call draw_display jmp still align 4 key: push eax ebx mcall 2 cmp byte[game_select_mode],0 je @f stdcall [tl_key], tree1 @@: 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+480 mov ecx,20*65536+270 mov edx,[sc.work] ;or edx,0x33000000 or edx,0x73000000 mov edi,hed mcall ;ᮧ¤ ¨¥ ®ª mcall 9,procinfo,-1 cmp byte[game_select_mode],0 jne .select_mode mov edi,buf_displ mov eax,dword[procinfo.client_box.width] cmp eax,dword[displ_w] jle @f sub eax,dword[displ_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,dword[displ_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: ; *** à¨á®¢ ¨¥ ª®¯®ª *** push esi mov eax,8 xor ebx,ebx mov bx,buf2d_l add ebx,buf2d_w add ebx,BUT1_L shl ebx,16 mov bx,BUT1_W mov ecx,BUT1_T*65536+BUT1_H mov edx,5 ;or edx,0x40000000 mov esi,dword[color_but_sm] int 0x40 inc edx add ecx,BUT1_NEXT_TOP int 0x40 pop esi mov eax,4 ; ð¡R÷ÿ-ð? ¢?ò¡¢ÿ mov bx,BUT1_H add ebx,3*65536;+3 mov ecx,dword[color_but_te] or ecx,0x80000000 mov edx,txt_game_a int 0x40 ror ebx,16 add ebx,BUT1_NEXT_TOP ror ebx,16 mov edx,txt_game_b int 0x40 ; *** ¢®ááâ ®¢«¥¨¥ ¯ à ¬¥â஢ *** mov eax,13 ;à¨á®¢ ¨¥ ¯àאַ㣮«ì¨ª mov edx,[sc.work] mov ebx,esi mov ecx,dword[procinfo.client_box.height] inc ecx mov esi,dword[displ_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,dword[displ_h] int 0x40 ;à¨á®¢ ¨¥ «¥¢®£® ¡®ª®¢®£® ¯®«ï jmp @f .select_mode: stdcall dword[tl_draw],dword tree1 mov edi,tree1 add edi,tl_offs_box stdcall draw_rect_border, procinfo.client_box, edi @@: mcall 12,2 popad ret ; äãªæ¨ï à¨áã¥â ¯®«ï ¢®ªà㣠¯àאַ㣮«ì¨ª user_box ; à §¬¥à ¯®«¥© ¢ëç¨á«ï¥âáï ¨áå®¤ï ¨§ à §¬¥à®¢ client_rect ; ¯à¥¤¯®« £ ¥âáï, çâ® ¢ ¡®«ìè¨á⢥ á«ãç ¥¢ client_rect > user_box align 4 proc draw_rect_border, client_rect:dword, user_box:dword pushad mov edi,dword[client_rect] mov esi,dword[user_box] cmp esi,0 je @f mov ebx,dword[edi+8] ;+8 = width inc bx mov ecx,dword[esi+4] ;+4 = top mov edx,[sc.work] mov eax,13 int 0x40 ;top mov eax,dword[esi+4] ;+4 = top add eax,dword[esi+12] ;+12 = height cmp eax,dword[edi+12] jge .no_bottom mov ecx,eax shl ecx,16 mov cx,word[edi+12] ;+12 = bottom inc cx sub cx,ax mov eax,13 int 0x40 ;bottom .no_bottom: mov ebx,dword[esi] ;+0 left mov ecx,dword[esi+4] ;+4 = top shl ecx,16 mov cx,word[esi+12] ;+12 = height inc cx mov eax,13 int 0x40 ;left mov eax,dword[esi] ;+0 left add eax,dword[esi+8] ;+8 = width mov ebx,eax shl ebx,16 mov bx,word[edi+8] ;+8 = right sub bx,ax inc bx mov eax,13 int 0x40 ;right @@: popad ret endp align 4 draw_display: stdcall mem_copy, dword[buf_fon],dword[buf_displ],dword[displ_bytes] ;ª®¯¨à®¢ ¨¥ ¨§®¡à ¦¥¨ï ¨§ ä®®¢®£® ¡ãä¥à call DrawZaac ;à¨á㥬 § ©æ call DrawWolf ;à¨á㥬 ¢®«ª call DrawEggs ;à¨á㥬 ï©æ push eax mov eax,dword[displ_w] shr eax,1 stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,eax,[offs_shadow_x],[color_wolf] ;à¨á㥬 áâபã á ⥪á⮬ pop eax stdcall [buf2d_draw], buf_displ ret align 4 button: mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ cmp ah,5 jne @f stdcall InitGame,0 @@: cmp ah,6 jne @f stdcall InitGame,1 @@: cmp ah,1 jne still .exit: stdcall [buf2d_delete],buf_fon ;㤠«ï¥¬ ¡ãä¥à stdcall [buf2d_delete],buf_displ ;㤠«ï¥¬ ¡ãä¥à stdcall [buf2d_delete],buf_tree_sys stdcall [buf2d_delete],buf_font cld mov ecx,3 mov edi,buf_decor @@: ;㤠«ï¥¬ 3 ¡ãä¥à stdcall [buf2d_delete],edi add edi,BUF_STRUCT_SIZE loop @b 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 mov dword[tree1.data_img_sys],0 ;ç¨á⨬ 㪠§ â¥«ì ¨§®¡à ¦¥¨¥ stdcall dword[tl_data_clear], tree1 mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë head_f_i: head_f_l db '‘¨á⥬ ï ®è¨¡ª ',0 system_dir0 db '/sys/lib/' lib0_name db 'buf2d.obj',0 err_message_found_lib0 db '¥ 㤠«®áì ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0 err_message_import0 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0 system_dir1 db '/sys/lib/' lib1_name db 'libimg.obj',0 err_message_found_lib1 db '¥ 㤠«®áì ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0 err_message_import1 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0 system_dir2 db '/sys/lib/' lib2_name db 'libini.obj',0 err_message_found_lib2 db '¥ 㤠«®áì ©â¨ ¡¨¡«¨®â¥ªã libini.obj',0 err_message_import2 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libini.obj',0 system_dir3 db '/sys/lib/' lib3_name db 'box_lib.obj',0 err_message_found_lib3 db '¥ 㤠«®áì ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0 err_message_import3 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0 ;library structures l_libs_start: lib0 l_libs lib0_name, 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 lib1_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i lib2 l_libs lib2_name, sys_path, file_name, system_dir2, err_message_found_lib2, head_f_l, import_libini, err_message_import2, head_f_i lib3 l_libs lib3_name, sys_path, file_name, system_dir3, err_message_found_lib3, head_f_l, import_box_lib, err_message_import3, 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 17.09.10',0 ;¯®¤¯¨áì ®ª sc system_colors ;á¨áâ¥¬ë¥ æ¢¥â count_of_dir_list_files equ 10 el_focus dd tree1 tree1 tree_list FILE_NAME_MAX,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ 16,16, 0x8080ff,0x0000ff,0xffffff, 10,10,140,100, 0,0,0, el_focus,\ 0,user_is_select align 4 buf_tree_sys: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï dw 0 ;+4 left dw 0 ;+6 top dd 16 ;+8 w dd 16*11 ;+12 h dd 0 ;+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_displ: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï dw 25,0 dd ? ;+8 w dd ? ;+12 h dd 0 ;+16 color db 24 ;+20 bit in pixel align 4 buf_fon: ;ä®®¢ë© ¡ãä¥à dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï dw 0 ;+4 left dw 0 ;+6 top dd ? ;+8 w dd ? ;+12 h dd 0xffffff ;+16 color db 24 ;+20 bit in pixel align 4 buf_decor: ;¡ãä¥à á ¤¥ª®à æ¨ï¬¨: ¤®¬¨ª ¬¨ ¨ ३ª ¬¨; á ªãà¨æ ¬¨; á à á⥨ﬨ rb 3*BUF_STRUCT_SIZE 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_libini: dd alib_init0 ini_get_str dd aini_get_str ini_get_int dd aini_get_int ini_get_color dd aini_get_color dd 0,0 alib_init0 db 'lib_init',0 aini_get_str db 'ini_get_str',0 aini_get_int db 'ini_get_int',0 aini_get_color db 'ini_get_color',0 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 align 4 import_box_lib: dd alib_init2 ;scrollbar_ver_draw dd aScrollbar_ver_draw tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec dd 0,0 alib_init2 db 'lib_init',0 ;aScrollbar_ver_draw db 'scrollbar_v_draw',0 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 i_end: rb 1024 align 16 procinfo process_information stacktop: sys_path rb 4096 file_name: rb 4096 openfile_path: rb 4096 filename_area: rb 256 mem: