Subversion Repositories Kolibri OS

Rev

Rev 1538 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. use32
  2.         org 0x0
  3.         db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
  4.         dd 0x1
  5.         dd start
  6.         dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
  7.         dd mem
  8.         dd stacktop
  9.         dd 0x0
  10.         dd sys_path
  11.  
  12. include '../../../macros.inc'
  13. include '../../../proc32.inc'
  14. include '../../../develop/libraries/box_lib/load_lib.mac'
  15. include 'mem.inc'
  16. include 'dll.inc'
  17.  
  18. @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
  19.  
  20. ;ä« £¨, ¤«ï ä㭪樨 ®¡à¥§ ­¨ï ¡ãä¥à 
  21. BUF2D_OPT_CROP_TOP equ 1 ;®¡à¥§ª  ᢥàåã
  22. BUF2D_OPT_CROP_LEFT equ 2 ;®¡à¥§ª  á«¥¢ 
  23. BUF2D_OPT_CROP_BOTTOM equ 4 ;®¡à¥§ª  á­¨§ã
  24. BUF2D_OPT_CROP_RIGHT equ 8 ;®¡à¥§ª  á¯à ¢ 
  25. BUF2D_BIT_OPT_CROP_TOP equ 0
  26. BUF2D_BIT_OPT_CROP_LEFT equ 1
  27. BUF2D_BIT_OPT_CROP_BOTTOM equ 2
  28. BUF2D_BIT_OPT_CROP_RIGHT equ 3
  29.  
  30. BUF_STRUCT_SIZE equ 21
  31. buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
  32. buf2d_w equ dword[edi+8] ;è¨à¨­  ¡ãä¥à 
  33. buf2d_h equ dword[edi+12] ;¢ëá®â  ¡ãä¥à 
  34. buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
  35. buf2d_l equ word[edi+4] ;®âáâ㯠᫥¢ 
  36. buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
  37. buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
  38. buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
  39.  
  40. struct FileInfoBlock
  41.         Function dd ?
  42.         Position dd ?
  43.         Flags    dd ?
  44.         Count    dd ?
  45.         Buffer   dd ?
  46.                 db ?
  47.         FileName dd ?
  48. ends
  49.  
  50. GAME_POLE_W equ 315 ;è¨à¨­  ¯®«ï
  51. GAME_POLE_H equ 210 ;¢ëá®â  ¯®«ï
  52. GAME_POLE_BYTES equ GAME_POLE_W*GAME_POLE_H*3 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
  53. OFFS_SHADOW_X equ 2 ;ᤢ¨£ ⥭¥© ¯® ®á¨ 'x'
  54. OFFS_SHADOW_Y equ 2 ;ᤢ¨£ ⥭¥© ¯® ®á¨ 'y'
  55. IMAGE_FONT_SIZE equ 128*144*3
  56.  
  57. fn_icon0 db 'curici.png',0 ;¨¬ï ä ©«  á ¤¥ª®à æ¨ï¬¨
  58. fn_icon1 db 'wolf.png',0 ;¨¬ï ä ©«  á ¢®«ª®¬ ¨ § ©æ¥¬
  59. fn_icon2 db 'eggs.png',0 ;¨¬ï ä ©«  á ï©æ ¬¨
  60. fn_icon3 db 'chi.png',0 ;¨¬ï ä ©«  á 樯«ïâ ¬¨
  61. fn_font db 'font8x9.bmp',0
  62.  
  63. color_fon dd 0xffffff
  64. color_shadows dd 0xd0d0d0 ;梥â ⥭¥©
  65. color_trees dd 0x008000 ;梥â âà ¢ë
  66. color_wolf dd 0x800000 ;梥⠢®«ª  ¨ § ©æ 
  67. color_egg dd 0x404080 ;梥â ï©æ 
  68. color_chick dd 0x00d0d0 ;梥â 樯«¥­ª 
  69. color_curici dd 0x8080d0 ;梥⠪ãà¨æë
  70. color_perilo dd 0x000080 ;梥⠯¥à¨«  (£à¥¡­ï)
  71.  
  72. macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
  73.         stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
  74.         mov [buf],eax
  75.  
  76.         copy_path path,sys_path,file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
  77.         mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
  78.         mov [run_file_70.Function], 0
  79.         mov [run_file_70.Position], 0
  80.         mov [run_file_70.Flags], 0
  81.         mov [run_file_70.Count], dword size
  82.         m2m [run_file_70.Buffer], [buf]
  83.         mov byte[run_file_70+20], 0
  84.         mov [run_file_70.FileName], file_name
  85.         mov ebx,run_file_70
  86.         int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
  87.         cmp ebx,0xffffffff
  88.         je @f
  89.                 ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
  90.                 stdcall dword[img_decode], dword[buf],ebx,0
  91.                 mov dword[image_data],eax
  92.                 ;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
  93.                 stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
  94.                 ;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
  95.                 stdcall dword[img_destroy], dword[image_data]
  96.         @@:
  97. }
  98.  
  99. ;¤ ­­ë¥ ¨£àë
  100. bit_zaac equ 2 ;¡¨â § ©æ 
  101. val_zaac equ 4 ;æ¨äà  ®â¢¥ç îé ï §  ¡¨â § ©æ 
  102. bit_mig equ 3 ;¡¨â ¬¨£ ­¨ï
  103. val_mig equ 8 ;æ¨äà  ®â¢¥ç îé ï §  ¡¨â ¬¨£ ­¨ï
  104. mask_lot_lu    equ 1b ;¬ áª  ¤«ï «¥¢®£® ¢¥àå­¥£® «®âª 
  105. mask_lot_ld    equ 100000b ;¬ áª  ¤«ï «¥¢®£® ­¨¦­¥£® «®âª 
  106. mask_lot_ru    equ 10000000000b ;¬ áª  ¤«ï ¯à ¢®£® ¢¥àå­¥£® «®âª 
  107. mask_lot_rd    equ 1000000000000000b ;¬ áª  ¤«ï ¯à ¢®£® ­¨¦­¥£® «®âª 
  108. mask_clear_all equ 11111011111011110111101111011110b ;¬ áª  ¤«ï ®ç¨á⪨ ¯ ¤ îé¨å ï¨æ ¨ ¯à¨¡¥¦ ¢è¨å 樯«ïâ
  109. mask_fail_eggs equ 100001000010000100000b ;¬ áª  ¯ ¤ îé¨å ï¨æ
  110. mask_chi_left  equ 11111000000000000000000000b ;¬ áª  «¥¢ëå 樯«ïâ
  111. mask_chi_right equ 11111000000000000000000000000000b ;¬ áª  ¯à ¢ëå 樯«ïâ
  112. mask_chi_cr_l  equ 1000000000000000000000b ;¬ áª  ¤«ï ᮧ¤ ­¨ï «¥¢®£®
  113. mask_chi_cr_r  equ 1000000000000000000000000000b ;¬ áª  ¤«ï ᮧ¤ ­¨ï ¯à ¢®£®
  114. bit_chi_left  equ 21 ;1-© ¡¨â ª®â®àë© ®â¢¥ç ¥â §  ¡¥£ã饣® á«¥¢ 
  115. bit_chi_right equ 27 ;1-© ¡¨â ª®â®àë© ®â¢¥ç ¥â §  ¡¥£ã饣® ¯à ¢ 
  116.  
  117. pos_wolf db 0 ;¯®§¨æ¨ï ¢®«ª  0-© ¡¨â á«¥¢ /á¯à ¢ , 1-© ¡¨â ᢥàåã/¢­¨§
  118. ;rb 1
  119. pos_eggs dd 0 ;¯®§¨æ¨¨ à á¯®«®¦¥­¨ï ï¨æ ¨ 樯«ïâ
  120. eggs_count dw 0 ;ª®««¨ç¥á⢮ ¯®©¬ ­ëå ï¨æ
  121. game_text db 'ˆ£à  _',13
  122. some_text db '0'
  123.         rb 8 ;⥪áâ á ç¨á«®¬ ¯®©¬ ­­ëå ï¨æ
  124. count_last db 0 ;áç¥â稪 ¯à®¯ã饭­ëå ï¨æ
  125. game_spd dd 0 ;§ ¤¥à¦ª  ¨£àë
  126.  
  127. ;¤«ï £¥­¥à æ¨¨ á«ãç ©­ëå ç¨á¥«
  128. rand_x dd 0
  129.  
  130. align 4
  131. rand_next:
  132. ;x(k+1) = (a*x(k)+c) mod m
  133. ; a=22695477, c=1, m=2^32
  134. push eax
  135.         mov eax,dword[rand_x]
  136.         imul eax,22695477
  137.         inc eax
  138.         mov dword[rand_x],eax
  139. pop eax
  140.         ret
  141.  
  142. ;ᮧ¤ ¥¬ ¯à®§à ç­ë¥ ¡ãä¥à  ¯® 8 ¡¨â (âà ä à¥âë), ¤«ï à¨á®¢ ­¨ï
  143. ;£¤¥ buf - ¡ãä¥à ­  ®á­®¢¥ ª®â®à®£® ¡ã¤¥â ᮧ¤ ­ âà ä à¥â
  144. ;ä®­®¢ë© 梥⠡ãä¥à  ¤®«¦¥­ ¡ëâì 0xffffff, ¨­ ç¥ ­¥ ¯à®¨§®©¤¥â ®¡à¥§ª 
  145. ;¯® ä®­®¢®¬ã 梥âã ¨ âà ä à¥â ¡ã¤¥â § ­¨¬ â 쬭®£® ¬¥áâ  ¢ ¯ ¬ïâ¨
  146. align 4
  147. proc CreateTrapharetBuffer, buf:dword, img_data:dword
  148.         push edi
  149.         mov edi,dword[buf]
  150.         stdcall [buf2d_create_f_img], edi,[img_data] ;ᮧ¤ ¥¬ ¡ãä¥à
  151.         stdcall [buf2d_conv_24_to_8], edi,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8¡¨â
  152.         stdcall [buf2d_crop_color], edi,buf2d_color,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM+BUF2D_OPT_CROP_RIGHT
  153.         pop edi
  154.         ret
  155. endp
  156.  
  157. align 4
  158. InitBackgroundBuffer: ;ᮧ¤ ­¨¥ ä®­®¢®£® ¨§®¡à ¦¥­¨ï
  159.         pushad
  160.         mov edi,buf_fon
  161.         mov eax,[color_fon]
  162.         mov buf2d_color,eax
  163.         stdcall [buf2d_clear], edi,eax
  164.         mov esi,edi
  165.  
  166.         xor eax,eax
  167.         xor ebx,ebx
  168.  
  169.         mov edi,buf_tr_fon0
  170.         mov ax,buf2d_t
  171.         add eax,OFFS_SHADOW_Y
  172.         mov bx,buf2d_l
  173.         add ebx,OFFS_SHADOW_X
  174.         stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ¤®¬¨ª®¢
  175.         mov edi,buf_tr_fon1
  176.         mov ax,buf2d_t
  177.         add eax,OFFS_SHADOW_Y
  178.         mov bx,buf2d_l
  179.         add ebx,OFFS_SHADOW_X
  180.         stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ªãà¨æ
  181.         mov edi,buf_tr_fon2
  182.         mov ax,buf2d_t
  183.         add eax,OFFS_SHADOW_Y
  184.         mov bx,buf2d_l
  185.         add ebx,OFFS_SHADOW_X
  186.         stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ¤¥à¥¢ì¥¢
  187.  
  188.         mov edi,buf_tr_fon0
  189.         mov ax,buf2d_t
  190.         stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_perilo] ;à¨á㥬 ¤®¬¨ª¨
  191.         mov edi,buf_tr_fon1
  192.         mov ax,buf2d_t
  193.         stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_curici] ;à¨á㥬 ªãà¨æë
  194.         mov edi,buf_tr_fon2
  195.         mov ax,buf2d_t
  196.         stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_trees] ;à¨á㥬 ¤¥à¥¢ìï
  197.         popad
  198.         ret
  199.  
  200. ;à¨áã¥â ª à⨭ªã ¢ ¡ãä¥à¥ buf ¨§ ¬ áᨢ  ¡ãä¥à®¢ buf_img á ¨­¤¥ªá®¬ ind
  201. ;â. ¥. buf <- buf_img[ind]
  202. align 4
  203. proc DrawArrayImg, buf:dword, buf_img:dword, ind:dword, color:dword
  204.         pushad
  205.                 mov edi,dword[ind]
  206.                 imul edi,BUF_STRUCT_SIZE
  207.                 add edi,dword[buf_img]
  208.  
  209.                 mov esi,dword[buf]
  210.                 xor eax,eax
  211.                 mov ax,buf2d_t
  212.                 xor ebx,ebx
  213.                 mov bx,buf2d_l
  214.                 stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color]
  215.         popad
  216.         ret
  217. endp
  218.  
  219. align 4
  220. DrawZaac: ;à¨á®¢ ­¨¥ § ©æ 
  221.         push eax
  222.         bt word[pos_wolf],bit_zaac
  223.         jae .end_mig
  224.  
  225.         stdcall DrawArrayImg, buf_displ,buf_wolf,6,[color_wolf] ;à¨á㥬 ⥫® § ©æ 
  226.         mov eax,dword[pos_eggs]
  227.         and eax,mask_chi_right+mask_chi_left
  228.         cmp eax,0
  229.         je .end_mig ;¥á«¨ ­¥â ¡¥£ îé¨å 樯«ïâ, â® § ïæ à㪮© ­¥ ¬ è¥â
  230.         bt word[pos_wolf],bit_mig
  231.         jc @f
  232.                 stdcall DrawArrayImg, buf_displ,buf_wolf,7,[color_wolf] ;à¨á㥬 àãªã § ©æ  ¢¢¥àåã
  233.                 jmp .end_mig
  234.         @@:
  235.                 stdcall DrawArrayImg, buf_displ,buf_wolf,8,[color_wolf] ;à¨á㥬 àãªã § ©æ  ¢­¨§ã
  236.         .end_mig:
  237.         pop eax
  238.         ret
  239.  
  240. align 4
  241. DrawWolf: ;à¨áã¥â ¢®«ª  á ª®à§¨­ ¬¨
  242.         bt word[pos_wolf],0
  243.         jc @f
  244.                 stdcall DrawArrayImg, buf_displ,buf_wolf,0,[color_wolf]
  245.                 bt word[pos_wolf],1
  246.                 jc .corz_ldn
  247.                         stdcall DrawArrayImg, buf_displ,buf_wolf,1,[color_wolf]
  248.                         jmp .corz_lend
  249.                 .corz_ldn:
  250.                         stdcall DrawArrayImg, buf_displ,buf_wolf,2,[color_wolf]
  251.                 .corz_lend:
  252.                 jmp .wolf_b
  253.         @@:
  254.                 stdcall DrawArrayImg, buf_displ,buf_wolf,3,[color_wolf]
  255.                 bt word[pos_wolf],1
  256.                 jc .corz_rdn
  257.                         stdcall DrawArrayImg, buf_displ,buf_wolf,4,[color_wolf]
  258.                         jmp .corz_rend
  259.                 .corz_rdn:
  260.                         stdcall DrawArrayImg, buf_displ,buf_wolf,5,[color_wolf]
  261.                 .corz_rend:
  262.         .wolf_b:
  263.         ret
  264.  
  265. align 4
  266. DrawEggs: ;à¨áã¥â ï©æ 
  267.         pushad
  268.         cld
  269.  
  270.         mov eax,dword[pos_eggs]
  271.         xor ebx,ebx
  272.         mov ecx,20 ;横« ¤«ï à¨á®¢ ­¨ï ª®âïé¨åáï ï¨æ
  273.         @@:
  274.                 bt eax,ebx
  275.                 jae .draw_egg
  276.                         stdcall DrawArrayImg, buf_displ,buf_egg,ebx,[color_egg]
  277.                 .draw_egg:
  278.                 inc ebx
  279.                 loop @b
  280.  
  281.         ;mov eax,dword[pos_eggs]
  282.         and eax,mask_chi_left
  283.         cmp eax,0
  284.         je @f
  285.                 stdcall DrawArrayImg, buf_displ,buf_egg,20,[color_egg] ;à §¡¨â®¥ ï©æ® á«¥¢ 
  286.         @@:
  287.         mov eax,dword[pos_eggs]
  288.         and eax,mask_chi_right
  289.         cmp eax,0
  290.         je @f
  291.                 stdcall DrawArrayImg, buf_displ,buf_egg,21,[color_egg] ;à §¡¨â®¥ ï©æ® á¯à ¢ 
  292.         @@:
  293.  
  294.         mov eax,dword[pos_eggs]
  295.         xor edx,edx
  296.         mov ebx,bit_chi_left
  297.         mov ecx,5 ;横« ¤«ï à¨á®¢ ­¨ï «¥¢ëå 樯«ïâ
  298.         @@:
  299.                 bt eax,ebx
  300.                 jae .draw_chick_l
  301.                         stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
  302.                 .draw_chick_l:
  303.                 inc ebx
  304.                 inc edx
  305.                 loop @b
  306.         mov ebx,bit_chi_right
  307.         mov ecx,5 ;横« ¤«ï à¨á®¢ ­¨ï ¯à ¢ëå 樯«ïâ
  308.         @@:
  309.                 bt eax,ebx
  310.                 jae .draw_chick_r
  311.                         stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
  312.                 .draw_chick_r:
  313.                 inc ebx
  314.                 inc edx
  315.                 loop @b
  316.  
  317.         xor eax,eax
  318.         mov al,byte[count_last]
  319.         mov ecx,eax ;横« ¤«ï à¨á®¢ ­¨ï èâà ä­ëå ®çª®¢
  320.         shr ecx,1
  321.         mov edx,10 ;¨­¤¥ªá ­ ç «  èâà ä­ëå ¨ª®­®ª ¢ ¡ãä¥à¥ buf_chi
  322.         cmp ecx,0
  323.         je .no_unit_last
  324.         @@:
  325.                 stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
  326.                 inc edx
  327.                 loop @b
  328.         .no_unit_last:
  329.  
  330.         bt ax,0 ;¯à®¢¥à塞 ¬¨£ î饥 ­¥ ç¥â­®¥ ®çª®
  331.         jae @f
  332.                 bt word[pos_wolf],bit_mig
  333.                 jc @f
  334.                         stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick] ;¬¨£ î饥 èâà ä­®¥ ®çª®
  335.         @@:
  336.  
  337.         popad
  338.         ret
  339.  
  340. align 4
  341. CountEggsInc: ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ï¨æ ­  1
  342.         push eax edi
  343.                 xor eax,eax
  344.                 inc word[eggs_count] ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ï¨æ
  345.                 cmp word[eggs_count],200 ;¡®­ãá­ë¥ ®çª¨
  346.                 je @f
  347.                 cmp word[eggs_count],500 ;¡®­ãá­ë¥ ®çª¨
  348.                 je @f
  349.                         jmp .no_bonus
  350.                 @@:
  351.                         mov byte[count_last],0
  352.                 .no_bonus:
  353.  
  354.                 mov ax,word[eggs_count]
  355.                 mov edi,some_text
  356.                 call convert_to_str ;®¡­®¢«ï¥¬ ⥪á⮢ãî áâபã
  357.                 and ax,0xf ;ç¥à¥§ ª ¦¤ë¥ 16 ï¨æ 㬥­ìè ¥¬ ¢à¥¬ï
  358.                 cmp ax,0
  359.                 jne @f
  360.                         cmp dword[game_spd],15 ;¬¨­¨¬ «ì­ ï § ¤¥à¦ª 
  361.                         jle @f
  362.                                 dec dword[game_spd]
  363.                 @@:
  364.         pop edi eax
  365.         ret
  366.  
  367. ;input:
  368. ; eax - ¬ áª , 㪠§ë¢ îé ï á ª ª®© áâà®­ë 㯠«® ï©æ®
  369. align 4
  370. CountLastInc: ;­ ç¨á«¥­¨¥ èâà ä­ëå ®çª®¢
  371.         inc byte[count_last] ;¯®«®¢¨­ ® èâà ä­®£® ®çª 
  372.         bt word[pos_wolf],bit_zaac
  373.         jc @f
  374.                 inc byte[count_last] ;¥á«¨ ­¥â § ©æ  â® ¥é¥ 1-­  ¯®«®¢¨­  èâà ä­®£® ®çª 
  375.         @@:
  376.         cmp byte[count_last],6
  377.         jle @f
  378.                 mov byte[count_last],6 ;áâ ¢¨¬ ®£à ­¨ç¥­¨ ­  ç¨á«® èâà ä­ëå ®çª®¢
  379.         @@:
  380.         or dword[pos_eggs],eax ;ᮧ¤ ¥¬ ¡¥£ã饣® 樯«¥­ª 
  381.         ret
  382.  
  383. align 4
  384. MoveEggs:
  385.         pushad
  386.         xor byte[pos_wolf],val_mig ;¡¨â ¤«ï ¬¨£ ­¨ï
  387.  
  388.         cmp byte[count_last],6 ;¬ ªá¨¬ «ì­®¥ ç¨á«® èâà ä­ëå ®çª®¢
  389.         je .end_fun
  390.  
  391.         rol dword[pos_eggs],1
  392.         mov ecx,dword[pos_eggs]
  393.         and ecx,mask_fail_eggs
  394.         cmp ecx,0
  395.         je .no_fail ;­¥â ¯ ¤ îé¨å ï¨æ
  396.                 ;­ ç¨á«¥­¨¥ ï¨æ ¯®¯ ¢è¨å ¢ ª®à§¨­ã
  397.                 ;¨«¨ ­ ç¨á«¥­¨¥ èâà ä­ëå ®çª®¢
  398.                 xor ebx,ebx
  399.                 mov bl,byte[pos_wolf] ;¡¥à¥¬ ¯ à ¬¥âàë (¯®§¨æ¨î) ¢®«ª 
  400.                 and bl,3 ;­  ¢á直© á«ãç ©
  401.  
  402.                 bt ecx,5 ;¯à®¢¥à塞 ¢¥àå­¥¥ «¥¢®¥ ¯¥à¨«®
  403.                 jae .perilo_lu
  404.                         cmp bx,0 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  405.                         jne @f
  406.                                 call CountEggsInc
  407.                                 jmp .perilo_lu
  408.                         @@:
  409.                                 mov eax,mask_chi_cr_l
  410.                                 call CountLastInc
  411.                         .perilo_lu:
  412.                 bt ecx,10 ;¯à®¢¥à塞 ­¨¦­¥¥ «¥¢®¥ ¯¥à¨«®
  413.                 jae .perilo_ld
  414.                         cmp bx,2 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  415.                         jne @f
  416.                                 call CountEggsInc
  417.                                 jmp .perilo_ld
  418.                         @@:
  419.                                 mov eax,mask_chi_cr_l
  420.                                 call CountLastInc
  421.                 .perilo_ld:
  422.                 bt ecx,15 ;¯à®¢¥à塞 ¢¥àå­¥¥ ¯à ¢®¥ ¯¥à¨«®
  423.                 jae .perilo_ru
  424.                         cmp bx,1 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  425.                         jne @f
  426.                                 call CountEggsInc
  427.                                 jmp .perilo_ru
  428.                         @@:
  429.                                 mov eax,mask_chi_cr_r
  430.                                 call CountLastInc
  431.                 .perilo_ru:
  432.                 bt ecx,20 ;¯à®¢¥à塞 ­¨¦­¥¥ ¯à ¢®¥ ¯¥à¨«®
  433.                 jae .perilo_rd
  434.                         cmp bx,3 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  435.                         jne @f
  436.                                 call CountEggsInc
  437.                                 jmp .perilo_rd
  438.                         @@:
  439.                                 mov eax,mask_chi_cr_r
  440.                                 call CountLastInc
  441.                 .perilo_rd:
  442.         .no_fail:
  443.  
  444.         and dword[pos_eggs],mask_clear_all ;®ç¨á⪠ 㯠¢è¨å ï¨æ ¨ ¤®¡¥¦ ¢è¨å ªã३
  445.  
  446.         call rand_next
  447.         bt dword[rand_x],6
  448.         jc @f
  449.         bt dword[rand_x],8
  450.         jc @f
  451.         bt dword[rand_x],9
  452.         jc @f
  453.                 xor byte[pos_wolf],val_zaac ;¢ëᮢ뢠¥¬/§ á®¢ë¢ ¥¬ § ©æ 
  454.         @@:
  455.  
  456.         ;ᮧ¤ ­¨¥ ­®¢ëå ï¨æ
  457.         bt dword[rand_x],4 ;¯à®¢¥à塞 ¡ã¤¥¬ «¨ ᮧ¤ ¢ âì ­®¢®¥ ï©æ®
  458.         jc .end_creat
  459.         bt dword[rand_x],5 ;¯à®¢¥à塞 á ª ª®© áâ®à®­ë ¡ã¤¥¬ ᮧ¤ ¢ âì ­®¢®¥ ï©æ®
  460.         jc .creat_r
  461.                 bt dword[rand_x],7
  462.                 jc @f
  463.                         or dword[pos_eggs],mask_lot_lu
  464.                         jmp .end_creat
  465.                 @@:
  466.                         or dword[pos_eggs],mask_lot_ld
  467.                         jmp .end_creat
  468.         .creat_r:
  469.                 bt dword[rand_x],7
  470.                 jc @f
  471.                         or dword[pos_eggs],mask_lot_ru
  472.                         jmp .end_creat
  473.                 @@:
  474.                         or dword[pos_eggs],mask_lot_rd
  475.                         ;jmp .end_creat
  476.         .end_creat:
  477.  
  478.         .end_fun:
  479.         popad
  480.         ret
  481.  
  482. align 4
  483. proc InitGame, b:dword ;¯¥à¢®­ ç «ì­ë¥ ­ áâனª¨ ¨£àë
  484.         mov word[eggs_count],0 ;ª®««¨ç¥á⢮ ¯®©¬ ­ëå ï¨æ
  485.         mov byte[some_text],'0'
  486.         mov byte[some_text+1],0 ;⥪áâ á ç¨á«®¬ ¯®©¬ ­­ëå ï¨æ
  487.         mov byte[count_last],0
  488.         mov dword[pos_eggs],0
  489.  
  490.         cmp dword[b],0
  491.         jne @f
  492.                 mov byte[game_text+5],'€'
  493.                 mov dword[game_spd],65 ;§ ¤¥à¦ª  ¨£àë
  494.                 jmp .end_init
  495.         @@:
  496.                 mov byte[game_text+5],''
  497.                 mov dword[game_spd],35 ;§ ¤¥à¦ª  ¨£àë
  498.         .end_init:
  499.  
  500.         push eax ebx
  501.                 mcall 26,9
  502.                 mov dword[rand_x],eax ;§ ¯®«­ï¥¬ 1-¥ á«ãç ©­®¥ ç¨á«®
  503.         pop ebx eax
  504.  
  505.         ret
  506. endp
  507.  
  508. align 4
  509. start:
  510.         load_libraries l_libs_start,load_lib_end
  511.  
  512.         ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
  513.         mov     ebp,lib0
  514.         cmp     dword [ebp+ll_struc_size-4],0
  515.         jz      @f
  516.                 mcall -1 ;exit not correct
  517.         @@:
  518.         mov     ebp,lib1
  519.         cmp     dword [ebp+ll_struc_size-4],0
  520.         jz      @f
  521.                 mcall -1 ;exit not correct
  522.         @@:
  523.  
  524.         mcall 40,0x27
  525.         mcall 48,3,sc,sizeof.system_colors ;¯®«ãç ¥¬ á¨á⥬­ë¥ 梥â 
  526.  
  527.         load_image_file fn_icon0,image_data_gray,3*GAME_POLE_BYTES
  528.                 mov eax,[image_data_gray]
  529.                 stdcall CreateTrapharetBuffer,buf_tr_fon0,eax
  530.                 add eax,GAME_POLE_BYTES
  531.                 stdcall CreateTrapharetBuffer,buf_tr_fon1,eax
  532.                 add eax,GAME_POLE_BYTES
  533.                 stdcall CreateTrapharetBuffer,buf_tr_fon2,eax
  534.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  535.  
  536.         stdcall [buf2d_create], buf_fon ;ᮧ¤ ¥¬ ¡ãä¥à á ä®­®¢ë¬¨ ¤¥ª®à æ¨ï¬¨
  537.  
  538.         load_image_file fn_icon1,image_data_gray, 9*GAME_POLE_BYTES
  539.                 mov eax,[image_data_gray]
  540.                 mov edi,buf_wolf
  541.                 mov ecx,9
  542.                 cld
  543.                 @@: ;áç¨â뢠¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
  544.                         mov buf2d_size_lt,0
  545.                         mov buf2d_w,GAME_POLE_W
  546.                         mov buf2d_h,GAME_POLE_H
  547.                         mov buf2d_color,0xffffff
  548.                         mov buf2d_bits,24
  549.                         stdcall CreateTrapharetBuffer,edi,eax
  550.                         add eax,GAME_POLE_BYTES
  551.                         add edi,BUF_STRUCT_SIZE
  552.                         loop @b
  553.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  554.  
  555.         load_image_file fn_icon2,image_data_gray, 22*GAME_POLE_BYTES
  556.                 mov eax,[image_data_gray]
  557.                 mov edi,buf_egg
  558.                 mov ecx,22
  559.                 cld
  560.                 @@: ;áç¨â뢠¥¬ 22 ¡ãä¥à®¢ á ï©æ ¬¨
  561.                         mov buf2d_size_lt,0
  562.                         mov buf2d_w,GAME_POLE_W
  563.                         mov buf2d_h,GAME_POLE_H
  564.                         mov buf2d_color,0xffffff
  565.                         mov buf2d_bits,24
  566.                         stdcall CreateTrapharetBuffer,edi,eax
  567.                         add eax,GAME_POLE_BYTES
  568.                         add edi,BUF_STRUCT_SIZE
  569.                         loop @b
  570.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  571.  
  572.         load_image_file fn_icon3,image_data_gray, 13*GAME_POLE_BYTES
  573.                 mov eax,[image_data_gray]
  574.                 mov edi,buf_chi
  575.                 mov ecx,13
  576.                 cld
  577.                 @@: ;áç¨â뢠¥¬ 13 ¡ãä¥à®¢ á 樯«ïâ ¬¨
  578.                         mov buf2d_size_lt,0
  579.                         mov buf2d_w,GAME_POLE_W
  580.                         mov buf2d_h,GAME_POLE_H
  581.                         mov buf2d_color,0xffffff
  582.                         mov buf2d_bits,24
  583.                         stdcall CreateTrapharetBuffer,edi,eax
  584.                         add eax,GAME_POLE_BYTES
  585.                         add edi,BUF_STRUCT_SIZE
  586.                         loop @b
  587.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  588.  
  589.         load_image_file fn_font, image_data_gray,IMAGE_FONT_SIZE
  590.         stdcall [buf2d_create_f_img], buf_font,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
  591.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  592.  
  593.         stdcall [buf2d_conv_24_to_8], buf_font,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
  594.         stdcall [buf2d_convert_text_matrix], buf_font
  595.  
  596. ;¯à®¢¥àª  § ­¨¬ ¥¬®£® ¡ãä¥à®¬ ¬¥áâ 
  597. ;mov edi,buf_wolf
  598. ;add edi,BUF_STRUCT_SIZE ;¯¥à¥å®¤¨¬ ­  ¡ãä¥à ª®à§¨­ë
  599. ;stdcall [buf2d_clear],edi,0x808080 ;§ «¨¢ ¥¬ ¥£® á¥àë¬ æ¢¥â®¬
  600.  
  601.         stdcall [buf2d_create], buf_displ ;ᮧ¤ ¥¬ ¡ãä¥à ¤«ï ¢ë¢®¤  ­  íªà ­
  602.         call InitBackgroundBuffer ;§ ¯®«­ï¥¬ ¡ãä¥à á ä®­®¢ë¬¨ ¤¥ª®à æ¨ï¬¨
  603.         stdcall InitGame,0
  604.         mcall 26,9
  605.         mov [last_time],ebx
  606.  
  607.  
  608.  
  609. align 4
  610. red_win:
  611.         call draw_window
  612.  
  613. align 4
  614. still: ;£« ¢­ë© 横«
  615.         mcall 26,9
  616.         mov ebx,[last_time]
  617.         add ebx,dword[game_spd] ;delay
  618.         sub ebx,eax
  619.         cmp ebx,dword[game_spd] ;delay
  620.         ja it_is_time_now
  621.         test ebx,ebx
  622.         jz it_is_time_now
  623.         mcall 23
  624.  
  625.         cmp eax,0
  626.         je it_is_time_now
  627.  
  628.         ;mcall 10
  629.  
  630.         cmp al,0x1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
  631.         jz red_win
  632.         cmp al,0x2
  633.         jz key
  634.         cmp al,0x3
  635.         jz button
  636.  
  637.         jmp still
  638.  
  639. align 4
  640. it_is_time_now:
  641.         mcall 26,9
  642.         mov [last_time],eax
  643.  
  644.         ;...§¤¥áì ¨¤ãâ ¤¥©á⢨ï, ¢ë§ë¢ ¥¬ë¥ ª ¦¤ë¥ delay á®âëå ¤®«¥© ᥪ㭤...
  645.         call MoveEggs
  646.         call draw_display
  647.         jmp still
  648.  
  649. align 4
  650. key:
  651.         push eax ebx
  652.         mcall 2
  653.  
  654.         cmp ah,176 ;Left
  655.         jne @f
  656.                 and byte[pos_wolf],0xfe
  657.         @@:
  658.         cmp ah,179 ;Right
  659.         jne @f
  660.                 or byte[pos_wolf],1
  661.         @@:
  662.         cmp ah,178 ;Up
  663.         jne @f
  664.                 and byte[pos_wolf],0xff-2
  665.         @@:
  666.         cmp ah,177 ;Down
  667.         jne @f
  668.                 or byte[pos_wolf],2
  669.         @@:
  670.  
  671.         cmp ah,97 ;a
  672.         jne @f
  673.                 and byte[pos_wolf],0xff-3 ;00
  674.         @@:
  675.         cmp ah,122 ;z
  676.         jne @f
  677.                 and byte[pos_wolf],0xff-1
  678.                 or byte[pos_wolf],2 ;10
  679.         @@:
  680.         cmp ah,39 ;'
  681.         jne @f
  682.                 and byte[pos_wolf],0xff-2
  683.                 or byte[pos_wolf],1 ;01
  684.         @@:
  685.         cmp ah,47 ;/
  686.         jne @f
  687.                 or byte[pos_wolf],3 ;11
  688.         @@:
  689.  
  690.         pop ebx eax
  691.         jmp still
  692.  
  693.  
  694. align 4
  695. draw_window:
  696.         pushad
  697.         mcall 12,1
  698.  
  699.         xor eax,eax
  700.         mov ebx,20*65536+370
  701.         mov ecx,20*65536+280
  702.         mov edx,[sc.work]
  703.         ;or edx,0x33000000
  704.         or edx,0x73000000
  705.         mov edi,hed
  706.         mcall ;ᮧ¤ ­¨¥ ®ª­ 
  707.  
  708.         mcall 9,procinfo,-1
  709.         mov edi,buf_displ
  710.         mov eax,dword[procinfo.client_box.width]
  711.         cmp eax,GAME_POLE_W
  712.         jle @f
  713.                 sub eax,GAME_POLE_W
  714.                 shr eax,1
  715.                 mov buf2d_l,ax ;¢ë¯à ¢­¨¢ ¥¬ ¡ãä¥à ¯® 業âàã ®ª­ 
  716.         @@:
  717.  
  718.         call draw_display
  719.  
  720.         mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª 
  721.         mov edx,[sc.work]
  722.         xor esi,esi
  723.         mov si,buf2d_l
  724.         add esi,GAME_POLE_W
  725.         mov ebx,dword[procinfo.client_box.width]
  726.         inc ebx
  727.         cmp esi,ebx
  728.         jge @f
  729.                 sub ebx,esi
  730.                 rol ebx,16
  731.                 mov bx,si
  732.                 rol ebx,16
  733.                 mov ecx,dword[procinfo.client_box.height]
  734.                 inc ecx
  735.                 int 0x40 ;à¨á®¢ ­¨¥ ¯à ¢®£® ¡®ª®¢®£® ¯®«ï
  736.                 jmp .draw_s
  737.         @@:
  738.                 mov esi,dword[procinfo.client_box.width] ;ª®£¤  ¯® è¨à¨­¥ ­¥ ¢« §¨â
  739.                 inc esi
  740.         .draw_s:
  741.  
  742.         mov ebx,esi
  743.         mov ecx,dword[procinfo.client_box.height]
  744.         inc ecx
  745.         mov esi,GAME_POLE_H
  746.         cmp esi,ebx
  747.         jge @f
  748.                 sub ecx,esi
  749.                 rol ecx,16
  750.                 mov cx,si
  751.                 rol ecx,16
  752.                 int 0x40 ;à¨á®¢ ­¨¥ ­¨¦­¥£® ¯®«ï
  753.         @@:
  754.        
  755.         xor ebx,ebx
  756.         mov bx,buf2d_l
  757.         mov ecx,GAME_POLE_H
  758.         int 0x40 ;à¨á®¢ ­¨¥ «¥¢®£® ¡®ª®¢®£® ¯®«ï
  759.  
  760.         mcall 12,2
  761.         popad
  762.         ret
  763.  
  764. align 4
  765. draw_display:
  766.  
  767.         stdcall mem_copy, dword[buf_fon],dword[buf_displ],GAME_POLE_BYTES ;ª®¯¨à®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¨§ ä®­®¢®£® ¡ãä¥à 
  768.         call DrawZaac
  769.         call DrawWolf ;à¨á㥬 ¢®«ª 
  770.         call DrawEggs
  771.  
  772.         stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,GAME_POLE_W/2,OFFS_SHADOW_X,[color_curici] ;à¨á㥬 áâபã á ⥪á⮬
  773.  
  774.         stdcall [buf2d_draw], buf_displ
  775.  
  776. ;mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
  777. ;mov ebx,(GAME_POLE_W/2)*65536+OFFS_SHADOW_X
  778. ;mov ecx,[color_curici]
  779. ;or  ecx,0x80000000
  780. ;mov edx,some_text
  781. ;mcall
  782.  
  783.         ret
  784.  
  785. align 4
  786. button:
  787.         mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  788.         cmp ah,1
  789.         jne still
  790. .exit:
  791.         stdcall [buf2d_delete],buf_fon ;㤠«ï¥¬ ¡ãä¥à
  792.         stdcall [buf2d_delete],buf_displ ;㤠«ï¥¬ ¡ãä¥à
  793.  
  794.         stdcall [buf2d_delete],buf_tr_fon0
  795.         stdcall [buf2d_delete],buf_tr_fon1
  796.         stdcall [buf2d_delete],buf_tr_fon2
  797.  
  798.         stdcall [buf2d_delete],buf_font
  799.  
  800.         cld
  801.         mov ecx,9
  802.         mov edi,buf_wolf
  803.         @@: ;㤠«ï¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
  804.                 stdcall [buf2d_delete],edi
  805.                 add edi,BUF_STRUCT_SIZE
  806.                 loop @b
  807.         mov ecx,13
  808.         mov edi,buf_chi
  809.         @@: ;㤠«ï¥¬ 13 ¡ãä¥à®¢
  810.                 stdcall [buf2d_delete],edi
  811.                 add edi,BUF_STRUCT_SIZE
  812.                 loop @b
  813.         mov ecx,22
  814.         mov edi,buf_egg
  815.         @@: ;㤠«ï¥¬ 22 ¡ãä¥à 
  816.                 stdcall [buf2d_delete],edi
  817.                 add edi,BUF_STRUCT_SIZE
  818.                 loop @b
  819.  
  820.         mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  821.  
  822. head_f_i:
  823. head_f_l  db '‘¨á⥬­ ï ®è¨¡ª ',0
  824.  
  825. system_dir0 db '/sys/lib/'
  826. name_buf2d db 'buf2d.obj',0
  827. err_message_found_lib0 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0
  828. err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0
  829.  
  830. system_dir1 db '/sys/lib/'
  831. name_libimg db 'libimg.obj',0
  832. err_message_found_lib1 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
  833. err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
  834.  
  835. ;library structures
  836. l_libs_start:
  837.         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
  838.         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
  839. load_lib_end:
  840.  
  841. align 4
  842. proc mem_copy, source:dword, destination:dword, len:dword
  843.   push ecx esi edi
  844.     cld
  845.     mov esi, dword[source]
  846.     mov edi, dword[destination]
  847.     mov ecx, dword[len]
  848.     rep movsb
  849.   pop edi esi ecx
  850.   ret
  851. endp
  852.  
  853. align 4
  854. convert_to_str:
  855.         pushad
  856.         ;mov eax,dword[value]
  857.         ;mov edi,dword[text]
  858.         mov dword[edi+1],0
  859.         cld
  860.         call .str
  861.         popad
  862.         ret
  863.  
  864.  
  865. align 4
  866. .str:
  867.   mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  868.     ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  869.   cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  870.   jb @f
  871.   xor edx,edx  ;®ç¨áâ¨âì edx
  872.   div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  873.   push edx     ;¯®«®¦¨âì ¢ á⥪
  874.   ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
  875.   call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  876.   pop eax
  877.   @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  878.   ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
  879.   ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
  880.   or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  ç¥¬ ¤¢¥ ¢ëè¥
  881.   stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  882.   ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
  883.  
  884.  
  885. last_time dd ?
  886. image_data dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
  887. image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥­­ë¬¨ á¥à묨 ¨§®¡à ¦¥­¨ï¬¨ ¢ ä®à¬ â¥ 24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë
  888.  
  889. run_file_70 FileInfoBlock
  890. hed db 'Nu pogodi 29.07.10',0 ;¯®¤¯¨áì ®ª­ 
  891. sc system_colors  ;á¨á⥬­ë¥ 梥â 
  892.  
  893. align 4
  894. buf_fon: ;ä®­®¢ë© ¡ãä¥à
  895.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  896.         dw 0 ;+4 left
  897.         dw 0 ;+6 top
  898.         dd GAME_POLE_W ;+8 w
  899.         dd GAME_POLE_H ;+12 h
  900.         dd 0xffffff ;+16 color
  901.         db 24 ;+20 bit in pixel
  902.  
  903. align 4
  904. buf_font: ;¡ãä¥à á® èà¨ä⮬
  905.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  906.         dw 25 ;+4 left
  907.         dw 25 ;+6 top
  908.         dd 128 ;+8 w
  909.         dd 144 ;+12 h
  910.         dd 0 ;+16 color
  911.         db 24 ;+20 bit in pixel
  912.  
  913. align 4
  914. buf_tr_fon0: ;¡ãä¥à á ¤®¬¨ª ¬¨ ¨ ३ª ¬¨
  915.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  916.         dw 0 ;+4 left
  917.         dw 0 ;+6 top
  918.         dd GAME_POLE_W ;+8 w
  919.         dd GAME_POLE_H ;+12 h
  920.         dd 0xffffff ;+16 color
  921.         db 24 ;+20 bit in pixel
  922. align 4
  923. buf_tr_fon1: ;¡ãä¥à á ªãà¨æ ¬¨
  924.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  925.         dw 0 ;+4 left
  926.         dw 0 ;+6 top
  927.         dd GAME_POLE_W ;+8 w
  928.         dd GAME_POLE_H ;+12 h
  929.         dd 0xffffff ;+16 color
  930.         db 24 ;+20 bit in pixel
  931. align 4
  932. buf_tr_fon2: ;¡ãä¥à á à á⥭¨ï¬¨
  933.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  934.         dw 0 ;+4 left
  935.         dw 0 ;+6 top
  936.         dd GAME_POLE_W ;+8 w
  937.         dd GAME_POLE_H ;+12 h
  938.         dd 0xffffff ;+16 color
  939.         db 24 ;+20 bit in pixel
  940.  
  941. align 4
  942. buf_displ:
  943.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  944.         dw 25,0
  945.         dd GAME_POLE_W ;+8 w
  946.         dd GAME_POLE_H ;+12 h
  947.         dd 0 ;+16 color
  948.         db 24 ;+20 bit in pixel
  949.  
  950. align 4
  951. buf_wolf:
  952.         rb 9*BUF_STRUCT_SIZE
  953.  
  954. align 4
  955. buf_egg:
  956.         rb 22*BUF_STRUCT_SIZE
  957.  
  958. align 4
  959. buf_chi:
  960.         rb 13*BUF_STRUCT_SIZE
  961.  
  962. align 4
  963. import_libimg:
  964.   dd alib_init1
  965.   img_is_img  dd aimg_is_img
  966.   img_info    dd aimg_info
  967.   img_from_file dd aimg_from_file
  968.   img_to_file dd aimg_to_file
  969.   img_from_rgb dd aimg_from_rgb
  970.   img_to_rgb  dd aimg_to_rgb
  971.   img_to_rgb2 dd aimg_to_rgb2
  972.   img_decode  dd aimg_decode
  973.   img_encode  dd aimg_encode
  974.   img_create  dd aimg_create
  975.   img_destroy dd aimg_destroy
  976.   img_destroy_layer dd aimg_destroy_layer
  977.   img_count   dd aimg_count
  978.   img_lock_bits dd aimg_lock_bits
  979.   img_unlock_bits dd aimg_unlock_bits
  980.   img_flip    dd aimg_flip
  981.   img_flip_layer dd aimg_flip_layer
  982.   img_rotate  dd aimg_rotate
  983.   img_rotate_layer dd aimg_rotate_layer
  984.   img_draw    dd aimg_draw
  985.  
  986.   dd 0,0
  987.   alib_init1   db 'lib_init',0
  988.   aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
  989.   aimg_info    db 'img_info',0
  990.   aimg_from_file db 'img_from_file',0
  991.   aimg_to_file db 'img_to_file',0
  992.   aimg_from_rgb db 'img_from_rgb',0
  993.   aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
  994.   aimg_to_rgb2 db 'img_to_rgb2',0
  995.   aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
  996.   aimg_encode  db 'img_encode',0
  997.   aimg_create  db 'img_create',0
  998.   aimg_destroy db 'img_destroy',0
  999.   aimg_destroy_layer db 'img_destroy_layer',0
  1000.   aimg_count   db 'img_count',0
  1001.   aimg_lock_bits db 'img_lock_bits',0
  1002.   aimg_unlock_bits db 'img_unlock_bits',0
  1003.   aimg_flip    db 'img_flip',0
  1004.   aimg_flip_layer db 'img_flip_layer',0
  1005.   aimg_rotate  db 'img_rotate',0
  1006.   aimg_rotate_layer db 'img_rotate_layer',0
  1007.   aimg_draw    db 'img_draw',0
  1008.  
  1009. align 4
  1010. import_buf2d_lib:
  1011.         dd sz_lib_init
  1012.         buf2d_create dd sz_buf2d_create
  1013.         buf2d_create_f_img dd sz_buf2d_create_f_img
  1014.         buf2d_clear dd sz_buf2d_clear
  1015.         buf2d_draw dd sz_buf2d_draw
  1016.         buf2d_delete dd sz_buf2d_delete
  1017.         buf2d_line dd sz_buf2d_line
  1018.         buf2d_circle dd sz_buf2d_circle
  1019.         buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
  1020.         buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
  1021.         buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
  1022.         buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
  1023.         buf2d_bit_blt dd sz_buf2d_bit_blt
  1024.         buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
  1025.         buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
  1026.         buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
  1027.         buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
  1028.         buf2d_draw_text dd sz_buf2d_draw_text
  1029.         buf2d_crop_color dd sz_buf2d_crop_color
  1030.         buf2d_offset_h dd sz_buf2d_offset_h    
  1031.         dd 0,0
  1032.         sz_lib_init db 'lib_init',0
  1033.         sz_buf2d_create db 'buf2d_create',0
  1034.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  1035.         sz_buf2d_clear db 'buf2d_clear',0
  1036.         sz_buf2d_draw db 'buf2d_draw',0
  1037.         sz_buf2d_delete db 'buf2d_delete',0
  1038.         sz_buf2d_line db 'buf2d_line',0
  1039.         sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
  1040.         sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
  1041.         sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
  1042.         sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
  1043.         sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
  1044.         sz_buf2d_bit_blt db 'buf2d_bit_blt',0
  1045.         sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
  1046.         sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
  1047.         sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
  1048.         sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
  1049.         sz_buf2d_draw_text db 'buf2d_draw_text',0
  1050.         sz_buf2d_crop_color db 'buf2d_crop_color',0
  1051.         sz_buf2d_offset_h db 'buf2d_offset_h',0
  1052.  
  1053. i_end:
  1054.         rb 1024
  1055.         align 16
  1056.         procinfo process_information
  1057. stacktop:
  1058.         sys_path rb 4096
  1059.         file_name:
  1060.                 rb 4096
  1061.         plugin_path:
  1062.                 rb 4096
  1063.         openfile_path:
  1064.                 rb 4096
  1065.         filename_area:
  1066.                 rb 256
  1067. mem: