Subversion Repositories Kolibri OS

Rev

Rev 2051 | Rev 5911 | 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 '../../../develop/libraries/box_lib/trunk/box_lib.mac' ;¬ ªà®áë ¤«ï § ¤ ­¨ï í«¥¬¥­â®¢ box_lib
  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_l equ word[edi+4] ;®âáâ㯠᫥¢ 
  35. buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
  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. displ_w dd ? ;è¨à¨­  ¯®«ï
  51. displ_h dd ? ;¢ëá®â  ¯®«ï
  52. displ_bytes dd ? ;à §¬¥à 1-£® ä ©«  á ¨§®¡à ¦¥­¨¥¬
  53. offs_shadow_x dd ? ;ᤢ¨£ ⥭¥© ¯® ®á¨ 'x'
  54. offs_shadow_y dd ? ;ᤢ¨£ ⥭¥© ¯® ®á¨ 'y'
  55.  
  56. IMAGE_FONT_SIZE equ 128*144*3
  57.  
  58. BUT1_T equ 10 ;®âáâ㯠ᢥàåã
  59. BUT1_L equ 15 ;®âáâ㯠᫥¢ 
  60. BUT1_W equ 50 ;è¨à¨­ 
  61. BUT1_H equ 20 ;¢ëá®â 
  62. BUT1_NEXT_TOP equ (BUT1_T+BUT1_H)*65536
  63.  
  64. game_select_mode db 1 ;०¨¬ ¢ë¡®à  ¨£àë
  65.  
  66. FILE_NAME_MAX equ 20 ;¬ ªá¨¬ «ì­ ï ¤«¨­­  ¨¬¥­¨ ä ©«  (¡¥§ ¯ ¯®ª, ®â­®á¨â¥«ì­® ⥪ã饩)
  67. ;§­ ç¥­¨ï ¨¬¥­ ¯® 㬮«ç ­¨î
  68. ini_def_decorat_file db 'curici.png',0
  69. ini_def_unit_file db 'wolf.png',0
  70. ini_def_objects_file db 'eggs.png',0
  71. ini_def_lost_file db 'chi.png',0
  72. ;¨¬¥­  ä ©«®¢
  73. fn_icon0 rb FILE_NAME_MAX ;¨¬ï ä ©«  á ¤¥ª®à æ¨ï¬¨
  74. fn_icon1 rb FILE_NAME_MAX ;¨¬ï ä ©«  á ¢®«ª®¬ ¨ § ©æ¥¬
  75. fn_icon2 rb FILE_NAME_MAX ;¨¬ï ä ©«  á ï©æ ¬¨
  76. fn_icon3 rb FILE_NAME_MAX ;¨¬ï ä ©«  á 樯«ïâ ¬¨
  77.  
  78. TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
  79.  
  80. ini_m_name db 'main.ini',0
  81. key_count db 'count',0
  82. key_game db 'g'
  83.         key_game_ind db 0,0,0
  84.  
  85. ini_name rb FILE_NAME_MAX ;¨¬ï ini ä ©«  c ¢ë¡à ­­®© ¨£à®©
  86. ini_sec_files db 'Files',0
  87. key_file_decorat db 'file_decorat',0
  88. key_file_unit db 'file_unit',0
  89. key_file_objects db 'file_objects',0
  90. key_file_lost db 'file_lost',0
  91. key_displ_w db 'displ_w',0
  92. key_displ_h db 'displ_h',0
  93. key_shadow_x db 'offs_shadow_x',0
  94. key_shadow_y db 'offs_shadow_y',0
  95.  
  96. ini_sec_game db 'Game',0
  97. key_delay_a db 'delay_a',0
  98. key_delay_b db 'delay_b',0
  99. key_delay_min db 'delay_min',0
  100.  
  101. ini_sec_color db 'Colors',0
  102. ;ª«îç¨ ¤«ï áç¨â뢠­¨ï 梥⮢ ¨§ *.ini ä ©« 
  103. key_color_fon db 'background',0
  104. key_color_shadows db 'shadows',0
  105. key_color_egg db 'objects',0
  106. key_color_chick db 'lost',0
  107. key_color_decorat: db 'dec'
  108.         .ind: db '?',0
  109. key_color_unit db 'unit',0
  110.  
  111. ;æ¢¥â  ¢ ¨£à¥
  112. color_fon dd ? ;梥â ä®­ 
  113. color_shadows dd ? ;梥â ⥭¥©
  114. color_wolf dd ? ;梥⠢®«ª  ¨ § ©æ 
  115. color_egg dd ? ;梥â ï©æ 
  116. color_chick dd ? ;梥â 樯«¥­ª 
  117. color_decorat dd ?,?,? ;æ¢¥â  ¤¥ª®à æ¨© (ªãà¨æë, ¯¥à¨« , ...)
  118.  
  119. ;æ¢¥â  ¨­â¥à䥩á 
  120. color_but_sm dd 0x808080 ;梥⠬ «¥­ìª¨å ª­®¯®ª
  121. color_but_te dd 0xffffff ;梥â ⥪áâ  ­  ª­®¯ª å
  122.  
  123. macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
  124.         ;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
  125.         if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
  126.                 jmp @f
  127.                         local .path_str
  128.                         .path_str db path ;ä®à¬¨à㥬 «®ª «ì­ãî ¯¥à¥¬¥­­ãî
  129.                         db 0
  130.                 @@:
  131.                 ;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
  132.                 copy_path .path_str,[32],file_name,0x0
  133.         else
  134.                 copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
  135.         end if
  136.  
  137.         stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
  138.         mov [buf],eax
  139.  
  140.         mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
  141.         mov [run_file_70.Function], 0
  142.         mov [run_file_70.Position], 0
  143.         mov [run_file_70.Flags], 0
  144.         mov [run_file_70.Count], dword size
  145.         m2m [run_file_70.Buffer], [buf]
  146.         mov byte[run_file_70+20], 0
  147.         mov [run_file_70.FileName], file_name
  148.         mov ebx,run_file_70
  149.         int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
  150.         cmp ebx,0xffffffff
  151.         je @f
  152.                 ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
  153.                 stdcall dword[img_decode], dword[buf],ebx,0
  154.                 mov dword[image_data],eax
  155.                 ;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
  156.                 stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
  157.                 ;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
  158.                 stdcall dword[img_destroy], dword[image_data]
  159.         @@:
  160. }
  161.  
  162. ;¤ ­­ë¥ ¨£àë
  163. bit_zaac equ 2 ;¡¨â § ©æ 
  164. val_zaac equ 4 ;æ¨äà  ®â¢¥ç îé ï §  ¡¨â § ©æ 
  165. bit_mig equ 3 ;¡¨â ¬¨£ ­¨ï
  166. val_mig equ 8 ;æ¨äà  ®â¢¥ç îé ï §  ¡¨â ¬¨£ ­¨ï
  167. mask_lot_lu    equ 1b ;¬ áª  ¤«ï «¥¢®£® ¢¥àå­¥£® «®âª 
  168. mask_lot_ld    equ 100000b ;¬ áª  ¤«ï «¥¢®£® ­¨¦­¥£® «®âª 
  169. mask_lot_ru    equ 10000000000b ;¬ áª  ¤«ï ¯à ¢®£® ¢¥àå­¥£® «®âª 
  170. mask_lot_rd    equ 1000000000000000b ;¬ áª  ¤«ï ¯à ¢®£® ­¨¦­¥£® «®âª 
  171. mask_clear_all equ 11111011111011110111101111011110b ;¬ áª  ¤«ï ®ç¨á⪨ ¯ ¤ îé¨å ï¨æ ¨ ¯à¨¡¥¦ ¢è¨å 樯«ïâ
  172. mask_move_eggs equ 11111111111111111111b ;¬ áª  ¤¢¨¦ãé¨åáï ï¨æ
  173. mask_fail_eggs equ 100001000010000100000b ;¬ áª  ¯ ¤ îé¨å ï¨æ
  174. mask_chi_left  equ 11111000000000000000000000b ;¬ áª  «¥¢ëå 樯«ïâ
  175. mask_chi_right equ 11111000000000000000000000000000b ;¬ áª  ¯à ¢ëå 樯«ïâ
  176. mask_chi_cr_l  equ 1000000000000000000000b ;¬ áª  ¤«ï ᮧ¤ ­¨ï «¥¢®£®
  177. mask_chi_cr_r  equ 1000000000000000000000000000b ;¬ áª  ¤«ï ᮧ¤ ­¨ï ¯à ¢®£®
  178. bit_chi_left  equ 21 ;1-© ¡¨â ª®â®àë© ®â¢¥ç ¥â §  ¡¥£ã饣® á«¥¢ 
  179. bit_chi_right equ 27 ;1-© ¡¨â ª®â®àë© ®â¢¥ç ¥â §  ¡¥£ã饣® ¯à ¢ 
  180. val_zaac_time_y equ 5 ;ª®««¨ç¥á⢮ ⠪⮢, ª®â®à®¥ ®¡ï§ â¥«ì­® ¤®«¦¥­ ¯à®¢¨á¥âì § ïæ
  181. val_zaac_time_n equ 7 ;ª®««¨ç¥á⢮ ⠪⮢, ª®â®à®¥ ®¡ï§ â¥«ì­® ¤®«¦¥­ ¡ëâì á¯àïâ ­­ë¬ § ïæ
  182.  
  183. txt_game_a db 'ˆ£à  €',0
  184. txt_game_b db 'ˆ£à  ',0
  185.  
  186. zaac_status db 0 ;ç¨á«® ⠪⮢, ª®â®à®¥ § ïæ ­¥ ¤®«¦¥­ ¬¥­ïâì ᢮¥ ¯®«®¦¥­¨¥
  187. pos_wolf db 0 ;¯®§¨æ¨ï ¢®«ª  0-© ¡¨â á«¥¢ /á¯à ¢ , 1-© ¡¨â ᢥàåã/¢­¨§
  188. ;rb 1
  189. pos_eggs dd 0 ;¯®§¨æ¨¨ à á¯®«®¦¥­¨ï ï¨æ ¨ 樯«ïâ
  190. eggs_count dw 0 ;ª®««¨ç¥á⢮ ¯®©¬ ­ëå ï¨æ
  191. game_text db 'ˆ£à  _',13
  192. some_text db '0'
  193.         rb 8 ;⥪áâ á ç¨á«®¬ ¯®©¬ ­­ëå ï¨æ
  194. count_last db 0 ;áç¥â稪 ¯à®¯ã饭­ëå ï¨æ
  195. game_spd dd 0 ;§ ¤¥à¦ª  ¨£àë
  196. game_delay_a dd ? ;¯¥à¢®­ ç «ì­ ï § ¤¥à¦ª  ¤«ï ¨£àë €
  197. game_delay_b dd ? ;¯¥à¢®­ ç «ì­ ï § ¤¥à¦ª  ¤«ï ¨£àë 
  198. game_delay_min dd ? ;¬¨­¨¬ «ì­ ï § ¤¥à¦ª 
  199.  
  200. ;¤«ï £¥­¥à æ¨¨ á«ãç ©­ëå ç¨á¥«
  201. rand_x dd 0
  202.  
  203. align 4
  204. rand_next:
  205. ;x(k+1) = (a*x(k)+c) mod m
  206. ; a=22695477, c=1, m=2^32
  207. push eax
  208.         mov eax,dword[rand_x]
  209.         imul eax,22695477
  210.         inc eax
  211.         mov dword[rand_x],eax
  212. pop eax
  213.         ret
  214.  
  215. ;ᮧ¤ ¥¬ ¯à®§à ç­ë¥ ¡ãä¥à  ¯® 8 ¡¨â (âà ä à¥âë), ¤«ï à¨á®¢ ­¨ï
  216. ;£¤¥ buf - ¡ãä¥à ­  ®á­®¢¥ ª®â®à®£® ¡ã¤¥â ᮧ¤ ­ âà ä à¥â
  217. ;ä®­®¢ë© 梥⠡ãä¥à  ¤®«¦¥­ ¡ëâì 0xffffff, ¨­ ç¥ ­¥ ¯à®¨§®©¤¥â ®¡à¥§ª 
  218. ;¯® ä®­®¢®¬ã 梥âã ¨ âà ä à¥â ¡ã¤¥â § ­¨¬ â 쬭®£® ¬¥áâ  ¢ ¯ ¬ïâ¨
  219. align 4
  220. proc CreateTrapharetBuffer, buf:dword, img_data:dword
  221.         push eax edi
  222.         mov edi,dword[buf]
  223.  
  224.         ;§ ¯®«­¥­¨¥ ¤ ­­ëå ¡ãä¥à 
  225.         mov buf2d_size_lt,0
  226.         mov eax,dword[displ_w]
  227.         mov buf2d_w,eax
  228.         mov eax,dword[displ_h]
  229.         mov buf2d_h,eax
  230.         mov buf2d_color,0xffffff
  231.         mov buf2d_bits,24
  232.  
  233.         stdcall [buf2d_create_f_img], edi,[img_data] ;ᮧ¤ ¥¬ ¡ãä¥à
  234.         stdcall [buf2d_conv_24_to_8], edi,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8¡¨â
  235.         ;®¡à¥§ ¥¬ «¨è­¨¥ ªà ï ¡ãä¥à , ¤«ï ¡®«¥¥ ¡ëáâண® à¨á®¢ ­¨ï
  236.         stdcall [buf2d_crop_color], edi,buf2d_color,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM+BUF2D_OPT_CROP_RIGHT+BUF2D_OPT_CROP_LEFT
  237.         pop edi eax
  238.         ret
  239. endp
  240.  
  241. align 4
  242. InitBackgroundBuffer: ;ᮧ¤ ­¨¥ ä®­®¢®£® ¨§®¡à ¦¥­¨ï
  243.         pushad
  244.         mov edi,buf_fon
  245.         mov eax,[color_fon]
  246.         mov buf2d_color,eax
  247.         stdcall [buf2d_clear], edi,eax
  248.         mov esi,edi
  249.  
  250.         xor eax,eax
  251.         cld
  252.         cmp dword[offs_shadow_x],0
  253.         jne @f
  254.         cmp dword[offs_shadow_y],0
  255.         jne @f
  256.                 jmp .end_shadows
  257.         @@:
  258.                 mov edi,buf_decor
  259.                 xor ebx,ebx
  260.                 mov ecx,3
  261.                 @@:
  262.                         mov ax,buf2d_t
  263.                         add eax,[offs_shadow_y]
  264.                         mov bx,buf2d_l
  265.                         add ebx,[offs_shadow_x]
  266.                         stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;à¨á㥬 ⥭¨ ¤¥ª®à æ¨©
  267.                         add edi,BUF_STRUCT_SIZE
  268.                         loop @b
  269.         .end_shadows:
  270.  
  271.         mov edi,buf_decor
  272.         mov ebx,color_decorat
  273.         mov ecx,3
  274.         @@:
  275.                 mov ax,buf2d_t
  276.                 stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[ebx] ;à¨á㥬 ¤¥ª®à æ¨¨
  277.                 add edi,BUF_STRUCT_SIZE
  278.                 add ebx,4
  279.                 loop @b
  280.         popad
  281.         ret
  282.  
  283. ;à¨áã¥â ª à⨭ªã ¢ ¡ãä¥à¥ buf ¨§ ¬ áᨢ  ¡ãä¥à®¢ buf_img á ¨­¤¥ªá®¬ ind
  284. ;â. ¥. buf <- buf_img[ind]
  285. align 4
  286. proc DrawArrayImg, buf:dword, buf_img:dword, ind:dword, color:dword
  287.         pushad
  288.                 mov edi,dword[ind]
  289.                 imul edi,BUF_STRUCT_SIZE
  290.                 add edi,dword[buf_img]
  291.  
  292.                 mov esi,dword[buf]
  293.                 xor eax,eax
  294.                 mov ax,buf2d_t
  295.                 xor ebx,ebx
  296.                 mov bx,buf2d_l
  297.                 stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color]
  298.         popad
  299.         ret
  300. endp
  301.  
  302. align 4
  303. DrawZaac: ;à¨á®¢ ­¨¥ § ©æ 
  304.         push eax
  305.         bt word[pos_wolf],bit_zaac
  306.         jae .end_mig
  307.  
  308.         stdcall DrawArrayImg, buf_displ,buf_wolf,6,[color_wolf] ;à¨á㥬 ⥫® § ©æ 
  309.         mov eax,dword[pos_eggs]
  310.         and eax,mask_chi_right+mask_chi_left
  311.         cmp eax,0
  312.         je .end_mig ;¥á«¨ ­¥â ¡¥£ îé¨å 樯«ïâ, â® § ïæ à㪮© ­¥ ¬ è¥â
  313.         bt word[pos_wolf],bit_mig
  314.         jc @f
  315.                 stdcall DrawArrayImg, buf_displ,buf_wolf,7,[color_wolf] ;à¨á㥬 àãªã § ©æ  ¢¢¥àåã
  316.                 jmp .end_mig
  317.         @@:
  318.                 stdcall DrawArrayImg, buf_displ,buf_wolf,8,[color_wolf] ;à¨á㥬 àãªã § ©æ  ¢­¨§ã
  319.         .end_mig:
  320.         pop eax
  321.         ret
  322.  
  323. align 4
  324. DrawWolf: ;à¨áã¥â ¢®«ª  á ª®à§¨­ ¬¨
  325.         bt word[pos_wolf],0
  326.         jc @f
  327.                 stdcall DrawArrayImg, buf_displ,buf_wolf,0,[color_wolf]
  328.                 bt word[pos_wolf],1
  329.                 jc .corz_ldn
  330.                         stdcall DrawArrayImg, buf_displ,buf_wolf,1,[color_wolf]
  331.                         jmp .corz_lend
  332.                 .corz_ldn:
  333.                         stdcall DrawArrayImg, buf_displ,buf_wolf,2,[color_wolf]
  334.                 .corz_lend:
  335.                 jmp .wolf_b
  336.         @@:
  337.                 stdcall DrawArrayImg, buf_displ,buf_wolf,3,[color_wolf]
  338.                 bt word[pos_wolf],1
  339.                 jc .corz_rdn
  340.                         stdcall DrawArrayImg, buf_displ,buf_wolf,4,[color_wolf]
  341.                         jmp .corz_rend
  342.                 .corz_rdn:
  343.                         stdcall DrawArrayImg, buf_displ,buf_wolf,5,[color_wolf]
  344.                 .corz_rend:
  345.         .wolf_b:
  346.         ret
  347.  
  348. align 4
  349. DrawEggs: ;à¨áã¥â ï©æ 
  350.         pushad
  351.         cld
  352.  
  353.         mov eax,dword[pos_eggs]
  354.         xor ebx,ebx
  355.         mov ecx,20 ;横« ¤«ï à¨á®¢ ­¨ï ª®âïé¨åáï ï¨æ
  356.         @@:
  357.                 bt eax,ebx
  358.                 jae .draw_egg
  359.                         stdcall DrawArrayImg, buf_displ,buf_egg,ebx,[color_egg]
  360.                 .draw_egg:
  361.                 inc ebx
  362.                 loop @b
  363.  
  364.         ;mov eax,dword[pos_eggs]
  365.         and eax,mask_chi_left
  366.         cmp eax,0
  367.         je @f
  368.                 stdcall DrawArrayImg, buf_displ,buf_egg,20,[color_egg] ;à §¡¨â®¥ ï©æ® á«¥¢ 
  369.         @@:
  370.         mov eax,dword[pos_eggs]
  371.         and eax,mask_chi_right
  372.         cmp eax,0
  373.         je @f
  374.                 stdcall DrawArrayImg, buf_displ,buf_egg,21,[color_egg] ;à §¡¨â®¥ ï©æ® á¯à ¢ 
  375.         @@:
  376.  
  377.         mov eax,dword[pos_eggs]
  378.         xor edx,edx
  379.         mov ebx,bit_chi_left
  380.         mov ecx,5 ;横« ¤«ï à¨á®¢ ­¨ï «¥¢ëå 樯«ïâ
  381.         @@:
  382.                 bt eax,ebx
  383.                 jae .draw_chick_l
  384.                         stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
  385.                 .draw_chick_l:
  386.                 inc ebx
  387.                 inc edx
  388.                 loop @b
  389.         mov ebx,bit_chi_right
  390.         mov ecx,5 ;横« ¤«ï à¨á®¢ ­¨ï ¯à ¢ëå 樯«ïâ
  391.         @@:
  392.                 bt eax,ebx
  393.                 jae .draw_chick_r
  394.                         stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
  395.                 .draw_chick_r:
  396.                 inc ebx
  397.                 inc edx
  398.                 loop @b
  399.  
  400.         xor eax,eax
  401.         mov al,byte[count_last]
  402.         mov ecx,eax ;横« ¤«ï à¨á®¢ ­¨ï èâà ä­ëå ®çª®¢
  403.         shr ecx,1
  404.         mov edx,10 ;¨­¤¥ªá ­ ç «  èâà ä­ëå ¨ª®­®ª ¢ ¡ãä¥à¥ buf_chi
  405.         cmp ecx,0
  406.         je .no_unit_last
  407.         @@:
  408.                 stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
  409.                 inc edx
  410.                 loop @b
  411.         .no_unit_last:
  412.  
  413.         bt ax,0 ;¯à®¢¥à塞 ¬¨£ î饥 ­¥ ç¥â­®¥ ®çª®
  414.         jae @f
  415.                 bt word[pos_wolf],bit_mig
  416.                 jc @f
  417.                         stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick] ;¬¨£ î饥 èâà ä­®¥ ®çª®
  418.         @@:
  419.  
  420.         popad
  421.         ret
  422.  
  423. align 4
  424. CountEggsInc: ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ï¨æ ­  1
  425.         push eax edi
  426.                 xor eax,eax
  427.                 inc word[eggs_count] ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ï¨æ
  428.                 cmp word[eggs_count],200 ;¡®­ãá­ë¥ ®çª¨
  429.                 je @f
  430.                 cmp word[eggs_count],500 ;¡®­ãá­ë¥ ®çª¨
  431.                 je @f
  432.                         jmp .no_bonus
  433.                 @@:
  434.                         mov byte[count_last],0
  435.                 .no_bonus:
  436.  
  437.                 mov ax,word[eggs_count]
  438.                 mov edi,some_text
  439.                 call convert_to_str ;®¡­®¢«ï¥¬ ⥪á⮢ãî áâபã
  440.                 and ax,0xf ;ç¥à¥§ ª ¦¤ë¥ 16 ï¨æ 㬥­ìè ¥¬ ¢à¥¬ï
  441.                 cmp ax,0
  442.                 jne @f
  443.                         mov edi,dword[game_delay_min] ;¬¨­¨¬ «ì­ ï § ¤¥à¦ª 
  444.                         cmp dword[game_spd],edi
  445.                         jle @f
  446.                                 dec dword[game_spd]
  447.                 @@:
  448.         pop edi eax
  449.         ret
  450.  
  451. ;input:
  452. ; eax - ¬ áª , 㪠§ë¢ îé ï á ª ª®© áâà®­ë 㯠«® ï©æ®
  453. align 4
  454. CountLastInc: ;­ ç¨á«¥­¨¥ èâà ä­ëå ®çª®¢
  455.         inc byte[count_last] ;¯®«®¢¨­ ® èâà ä­®£® ®çª 
  456.         bt word[pos_wolf],bit_zaac
  457.         jc @f
  458.                 inc byte[count_last] ;¥á«¨ ­¥â § ©æ  â® ¥é¥ 1-­  ¯®«®¢¨­  èâà ä­®£® ®çª 
  459.         @@:
  460.         cmp byte[count_last],6
  461.         jle @f
  462.                 mov byte[count_last],6 ;áâ ¢¨¬ ®£à ­¨ç¥­¨ ­  ç¨á«® èâà ä­ëå ®çª®¢
  463.         @@:
  464.         or dword[pos_eggs],eax ;ᮧ¤ ¥¬ ¡¥£ã饣® 樯«¥­ª 
  465.         ret
  466.  
  467. align 4
  468. MoveEggs:
  469.         pushad
  470.         xor byte[pos_wolf],val_mig ;¡¨â ¤«ï ¬¨£ ­¨ï
  471.  
  472.         cmp byte[count_last],6 ;¬ ªá¨¬ «ì­®¥ ç¨á«® èâà ä­ëå ®çª®¢
  473.         je .end_fun
  474.  
  475.         rol dword[pos_eggs],1
  476.         mov ecx,dword[pos_eggs]
  477.         and ecx,mask_fail_eggs
  478.         cmp ecx,0
  479.         je .no_fail ;­¥â ¯ ¤ îé¨å ï¨æ
  480.                 ;­ ç¨á«¥­¨¥ ï¨æ ¯®¯ ¢è¨å ¢ ª®à§¨­ã
  481.                 ;¨«¨ ­ ç¨á«¥­¨¥ èâà ä­ëå ®çª®¢
  482.                 xor ebx,ebx
  483.                 mov bl,byte[pos_wolf] ;¡¥à¥¬ ¯ à ¬¥âàë (¯®§¨æ¨î) ¢®«ª 
  484.                 and bl,3 ;­  ¢á直© á«ãç ©
  485.  
  486.                 bt ecx,5 ;¯à®¢¥à塞 ¢¥àå­¥¥ «¥¢®¥ ¯¥à¨«®
  487.                 jae .perilo_lu
  488.                         cmp bx,0 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  489.                         jne @f
  490.                                 call CountEggsInc
  491.                                 jmp .perilo_lu
  492.                         @@:
  493.                                 mov eax,mask_chi_cr_l
  494.                                 call CountLastInc
  495.                         .perilo_lu:
  496.                 bt ecx,10 ;¯à®¢¥à塞 ­¨¦­¥¥ «¥¢®¥ ¯¥à¨«®
  497.                 jae .perilo_ld
  498.                         cmp bx,2 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  499.                         jne @f
  500.                                 call CountEggsInc
  501.                                 jmp .perilo_ld
  502.                         @@:
  503.                                 mov eax,mask_chi_cr_l
  504.                                 call CountLastInc
  505.                 .perilo_ld:
  506.                 bt ecx,15 ;¯à®¢¥à塞 ¢¥àå­¥¥ ¯à ¢®¥ ¯¥à¨«®
  507.                 jae .perilo_ru
  508.                         cmp bx,1 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  509.                         jne @f
  510.                                 call CountEggsInc
  511.                                 jmp .perilo_ru
  512.                         @@:
  513.                                 mov eax,mask_chi_cr_r
  514.                                 call CountLastInc
  515.                 .perilo_ru:
  516.                 bt ecx,20 ;¯à®¢¥à塞 ­¨¦­¥¥ ¯à ¢®¥ ¯¥à¨«®
  517.                 jae .perilo_rd
  518.                         cmp bx,3 ;¯à®¢¥à塞 ­ «¨ç¨¥ ª®à§¨­ë
  519.                         jne @f
  520.                                 call CountEggsInc
  521.                                 jmp .perilo_rd
  522.                         @@:
  523.                                 mov eax,mask_chi_cr_r
  524.                                 call CountLastInc
  525.                 .perilo_rd:
  526.         .no_fail:
  527.  
  528.         and dword[pos_eggs],mask_clear_all ;®ç¨á⪠ 㯠¢è¨å ï¨æ ¨ ¤®¡¥¦ ¢è¨å ªã३
  529.  
  530.         call rand_next
  531.         cmp byte[zaac_status],0
  532.         jle @f
  533.                 dec byte[zaac_status]
  534.                 jmp .no_zaac_move ;§ ïæ ¯®ª  ­¥ ¤¢¨£ ¥âáï
  535.         @@:
  536.        
  537.         bt dword[rand_x],6 ;§ ïæ ®â ä®­ àï ¬¥­ï¥â áâ âãá
  538.         jc @f
  539.                 xor byte[pos_wolf],val_zaac ;¢ëᮢ뢠¥¬/§ á®¢ë¢ ¥¬ § ©æ 
  540.                 bt word[pos_wolf],val_zaac
  541.                 jc .zaac_n
  542.                         mov byte[zaac_status],val_zaac_time_y ;áâ ¢¨¬ ¬¨­¨¬ «ì­®¥ ¢à¥¬ï ¤«ï ᬥ­ë áâ âãá 
  543.                         jmp @f
  544.                 .zaac_n:
  545.                         mov byte[zaac_status],val_zaac_time_n ;áâ ¢¨¬ ¬¨­¨¬ «ì­®¥ ¢à¥¬ï ¤«ï ᬥ­ë áâ âãá 
  546.         @@:
  547.         .no_zaac_move:
  548.  
  549.         ;ᮧ¤ ­¨¥ ­®¢ëå ï¨æ
  550.         cmp word[eggs_count],5 ;¯¥à¢ë¥ 5 ï¨æ ª âïâáï ¯® 1-¬ã
  551.         jge @f
  552.                 mov ecx,dword[pos_eggs]
  553.                 and ecx,mask_move_eggs
  554.                 ;cmp ecx,0
  555.                 jnz .end_creat
  556.         @@:
  557.  
  558.         bt dword[rand_x],4 ;¯à®¢¥à塞 ¡ã¤¥¬ «¨ ᮧ¤ ¢ âì ­®¢®¥ ï©æ®
  559.         jc .end_creat
  560.         bt dword[rand_x],5 ;¯à®¢¥à塞 á ª ª®© áâ®à®­ë ¡ã¤¥¬ ᮧ¤ ¢ âì ­®¢®¥ ï©æ®
  561.         jc .creat_r
  562.                 bt dword[rand_x],7
  563.                 jc @f
  564.                         or dword[pos_eggs],mask_lot_lu
  565.                         jmp .end_creat
  566.                 @@:
  567.                         or dword[pos_eggs],mask_lot_ld
  568.                         jmp .end_creat
  569.         .creat_r:
  570.                 bt dword[rand_x],7
  571.                 jc @f
  572.                         or dword[pos_eggs],mask_lot_ru
  573.                         jmp .end_creat
  574.                 @@:
  575.                         or dword[pos_eggs],mask_lot_rd
  576.                         ;jmp .end_creat
  577.         .end_creat:
  578.  
  579.         .end_fun:
  580.         popad
  581.         ret
  582.  
  583. align 4
  584. proc InitGame, b:dword ;¯¥à¢®­ ç «ì­ë¥ ­ áâனª¨ ¨£àë
  585.         mov word[eggs_count],0 ;ª®««¨ç¥á⢮ ¯®©¬ ­ëå ï¨æ
  586.         mov byte[some_text],'0'
  587.         mov byte[some_text+1],0 ;⥪áâ á ç¨á«®¬ ¯®©¬ ­­ëå ï¨æ
  588.         mov byte[count_last],0 ;èâà ä­ë¥ ®çª¨
  589.         mov dword[pos_eggs],0
  590.         mov byte[zaac_status],0
  591.  
  592.         push eax ebx
  593.         cmp dword[b],0
  594.         jne @f
  595.                 mov byte[game_text+5],'€'
  596.                 mov eax,dword[game_delay_a]
  597.                 mov dword[game_spd],eax ;§ ¤¥à¦ª  ¨£àë
  598.                 jmp .end_init
  599.         @@:
  600.                 mov byte[game_text+5],''
  601.                 mov eax,dword[game_delay_b]
  602.                 mov dword[game_spd],eax ;§ ¤¥à¦ª  ¨£àë
  603.         .end_init:
  604.  
  605.         mcall 26,9
  606.         mov dword[rand_x],eax ;§ ¯®«­ï¥¬ 1-¥ á«ãç ©­®¥ ç¨á«®
  607.         pop ebx eax
  608.  
  609.         ret
  610. endp
  611.  
  612. align 4
  613. proc LoadArrayBuffer, f_name:dword, buf_start:dword, count:dword
  614.         pushad
  615.         mov edx,dword[displ_bytes]
  616.         mov ecx,edx
  617.         imul ecx,dword[count]
  618.         mov eax,dword[f_name]
  619.         load_image_file eax,image_data_gray,ecx
  620.                 mov edx,dword[displ_bytes]
  621.                 mov eax,[image_data_gray]
  622.                 mov edi,dword[buf_start]
  623.                 mov ecx,dword[count]
  624.                 cld
  625.                 @@: ;áç¨â뢠¥¬ 3 ¡ãä¥à  á ¤¥ª®à æ¨ï¬¨
  626.                         stdcall CreateTrapharetBuffer,edi,eax
  627.                         add eax,edx
  628.                         add edi,BUF_STRUCT_SIZE
  629.                         loop @b
  630.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  631.         popad
  632.         ret
  633. endp
  634.  
  635. txt_tile_type_0 rb FILE_NAME_MAX
  636.  
  637. align 4
  638. user_is_select:
  639.         push ecx esi edi
  640.        
  641.         stdcall [tl_node_get_data], tree1
  642.         pop esi
  643.         cmp esi,0 ;¥á«¨ ¨¬ï ¨£àë ¯ãá⮥
  644.         je @f  
  645.                 mov edi,ini_name
  646.                 mov ecx,FILE_NAME_MAX
  647.                 cld
  648.                 rep movsb
  649.  
  650.                 mov byte[game_select_mode],0
  651.                 call InitAll
  652.         @@:
  653.         pop edi esi ecx
  654.  
  655.         call draw_window
  656.         ret
  657.  
  658. ;******************************************************************************
  659. ; äã­ªæ¨ï, ª®â®à ï 1 à § ¤¥« ¥â ¢á¥ ­ áâனª¨ ­ã¦­ë¥ ¤«ï ¨£àë
  660. ;******************************************************************************
  661. align 4
  662. InitAll:
  663.         pushad
  664.         ;à ¡®â  á ä ©«®¬ ­ áâ஥ª
  665.         copy_path ini_name,sys_path,file_name,0x0
  666.         stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_w,210
  667.         mov     dword[displ_w],eax
  668.         stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_h,140
  669.         mov     dword[displ_h],eax
  670.         stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_decorat,fn_icon0,FILE_NAME_MAX,ini_def_decorat_file
  671.         stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_unit,fn_icon1,FILE_NAME_MAX,ini_def_unit_file
  672.         stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_objects,fn_icon2,FILE_NAME_MAX,ini_def_objects_file
  673.         stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_lost,fn_icon3,FILE_NAME_MAX,ini_def_lost_file
  674.  
  675.         stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_x,2
  676.         mov     dword[offs_shadow_x],eax
  677.         stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_y,2
  678.         mov     dword[offs_shadow_y],eax
  679.  
  680.         ;áç¨â뢠­¨¥ ­ áâ஥ª ¢«¨ïîé¨å ­  ᪮àáâì ¨£àë
  681.         stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_a,65
  682.         mov     dword[game_delay_a],eax
  683.         stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_b,35
  684.         mov     dword[game_delay_b],eax
  685.         stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_min,15
  686.         mov     dword[game_delay_min],eax
  687.        
  688.         stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_fon,0xffffff
  689.         mov     dword[color_fon],eax
  690.         stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_shadows,0xd0d0d0
  691.         mov     dword[color_shadows],eax
  692.         stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_unit,0
  693.         mov     dword[color_wolf],eax
  694.         stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_egg,0x404080
  695.         mov     dword[color_egg],eax
  696.         stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_chick,0x00d0d0
  697.         mov     dword[color_chick],eax
  698.  
  699.         mov ebx,color_decorat
  700.         mov byte[key_color_decorat.ind],'0'
  701.         mov ecx,3
  702.         cld
  703.         @@:
  704.                 push ecx ;äã­ªæ¨ï ini_get_color ¨¬¥¥â ¯à ¢® ¬ ­ïâì ॣ¨áâà ecx
  705.                 stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_decorat,0x000080
  706.                 pop ecx
  707.                 mov dword[ebx],eax
  708.                 add ebx,4
  709.                 inc byte[key_color_decorat.ind]
  710.                 loop @b
  711.  
  712.         mov edx,dword[displ_w]
  713.         imul edx,dword[displ_h]
  714.         lea edx,[edx+edx*2]
  715.         mov dword[displ_bytes],edx ;¢ëç¨á«ï¥¬ à §¬¥à ¨£à®¢®£® ¯®«ï
  716.  
  717.         stdcall LoadArrayBuffer, fn_icon0, buf_decor,3 ;áç¨â뢠¥¬ 3 ¡ãä¥à  á ¤¥ª®à æ¨ï¬¨
  718.         stdcall LoadArrayBuffer, fn_icon1, buf_wolf,9 ;áç¨â뢠¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
  719.         stdcall LoadArrayBuffer, fn_icon2, buf_egg,22 ;áç¨â뢠¥¬ 22 ¡ãä¥à®¢ á ï©æ ¬¨
  720.         stdcall LoadArrayBuffer, fn_icon3, buf_chi,13 ;áç¨â뢠¥¬ 13 ¡ãä¥à®¢ á 樯«ïâ ¬¨
  721.  
  722.         load_image_file 'font8x9.bmp', image_data_gray,IMAGE_FONT_SIZE
  723.         stdcall [buf2d_create_f_img], buf_font,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
  724.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  725.  
  726.         stdcall [buf2d_conv_24_to_8], buf_font,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
  727.         stdcall [buf2d_convert_text_matrix], buf_font
  728.  
  729. ;¯à®¢¥àª  § ­¨¬ ¥¬®£® ¡ãä¥à®¬ ¬¥áâ 
  730. ;mov edi,buf_wolf
  731. ;add edi,BUF_STRUCT_SIZE ;¯¥à¥å®¤¨¬ ­  ¡ãä¥à ª®à§¨­ë
  732. ;stdcall [buf2d_clear],edi,0x808080 ;§ «¨¢ ¥¬ ¥£® á¥àë¬ æ¢¥â®¬
  733.  
  734.         mov ebx,dword[displ_w]
  735.         mov edx,dword[displ_h]
  736.  
  737.         mov edi,buf_displ
  738.         mov buf2d_w,ebx
  739.         mov buf2d_h,edx
  740.         stdcall [buf2d_create], buf_displ ;ᮧ¤ ¥¬ ¡ãä¥à ¤«ï ¢ë¢®¤  ­  íªà ­
  741.  
  742.         mov edi,buf_fon
  743.         mov buf2d_w,ebx
  744.         mov buf2d_h,edx
  745.         stdcall [buf2d_create], buf_fon ;ᮧ¤ ¥¬ ¡ãä¥à á ä®­®¢ë¬¨ ¤¥ª®à æ¨ï¬¨
  746.  
  747.         call InitBackgroundBuffer ;§ ¯®«­ï¥¬ ¡ãä¥à á ä®­®¢ë¬¨ ¤¥ª®à æ¨ï¬¨
  748.         stdcall InitGame,0
  749.         popad
  750.         ret
  751.  
  752. align 4
  753. start:
  754.         load_libraries l_libs_start,load_lib_end
  755.  
  756.         ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
  757.         mov     ebp,lib0
  758.         cmp     dword [ebp+ll_struc_size-4],0
  759.         jz      @f
  760.                 mcall -1 ;exit not correct
  761.         @@:
  762.         mov     ebp,lib1
  763.         cmp     dword [ebp+ll_struc_size-4],0
  764.         jz      @f
  765.                 mcall -1 ;exit not correct
  766.         @@:
  767.  
  768.         mcall 40,0x27
  769.         mcall 48,3,sc,sizeof.system_colors ;¯®«ãç ¥¬ á¨á⥬­ë¥ 梥â 
  770.  
  771. ;******************************************************************************
  772. ; ¯®¤£®â®¢ª  ᯨ᪠ ¨£®à
  773. ;******************************************************************************
  774.         stdcall dword[tl_data_init], tree1
  775.  
  776.         load_image_file 'tl_sys_16.png', image_data_gray,TREE_ICON_SYS16_BMP_SIZE
  777.         stdcall [buf2d_create_f_img], buf_tree_sys,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
  778.         stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  779.  
  780.         mov edi,buf_tree_sys
  781.         m2m dword[tree1.data_img_sys],buf2d_data
  782.  
  783.         ;à ¡®â  á £« ¢­ë¬ ä ©«®¬ ­ áâ஥ª
  784.         copy_path ini_m_name,sys_path,file_name,0x0
  785.  
  786.         stdcall dword[ini_get_int],file_name,ini_sec_files,key_count,1
  787.         mov     ecx,eax
  788.         mov dl,'0'
  789.         cld
  790.         @@:
  791.                 mov byte[key_game_ind],dl
  792.                 inc dl
  793.                 push ecx edx
  794.                 stdcall dword[ini_get_str],file_name,ini_sec_files,key_game,txt_tile_type_0,FILE_NAME_MAX,ini_def_decorat_file
  795.                 stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 ;¤®¡ ¢«ï¥¬ ­ §¢ ­¨¥ ¨£àë
  796.                 stdcall dword[tl_cur_next], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª ¨£à
  797.                 pop edx ecx
  798.         loop @b
  799.         stdcall dword[tl_cur_beg], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢¢¥àå
  800.  
  801.         mcall 26,9
  802.         mov [last_time],eax
  803.  
  804.  
  805.  
  806. align 4
  807. red_win:
  808.         call draw_window
  809.  
  810. align 4
  811. still: ;£« ¢­ë© 横«
  812.  
  813.         cmp byte[game_select_mode],0
  814.         jne .select_mode
  815.        
  816.         mcall 26,9 ;¡¥à¥¬ á¨á⥬­®¥ ¢à¥¬ï
  817.         mov ebx,[last_time]
  818.         add ebx,dword[game_spd] ;delay
  819.         sub ebx,eax
  820.         cmp ebx,dword[game_spd] ;delay
  821.         ja it_is_time_now
  822.         test ebx,ebx
  823.         jz it_is_time_now
  824.         mcall 23
  825.         cmp eax,0
  826.         je it_is_time_now
  827.  
  828.         jmp @f
  829.         .select_mode:
  830.                 mcall 10
  831.         @@:
  832.  
  833.         cmp al,1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
  834.         jz red_win
  835.         cmp al,2
  836.         jz key
  837.         cmp al,3
  838.         jz button
  839.         cmp al,6
  840.         jz mouse
  841.  
  842.         jmp still
  843.  
  844. align 4
  845. mouse:
  846.         cmp byte[game_select_mode],0
  847.         je @f
  848.                 stdcall [tl_mouse], tree1 ;¥á«¨ ¨£à  ¥é¥ ­¥ ¢ë¡à ­ 
  849.         @@:
  850.         jmp still
  851.  
  852. align 4
  853. it_is_time_now:
  854.         mcall 26,9
  855.         mov [last_time],eax
  856.  
  857.         ;cmp byte[game_select_mode],0
  858.         ;jne still
  859.  
  860.         ;...§¤¥áì ¨¤ãâ ¤¥©á⢨ï, ¢ë§ë¢ ¥¬ë¥ ª ¦¤ë¥ delay á®âëå ¤®«¥© ᥪ㭤...
  861.         call MoveEggs
  862.         call draw_display
  863.         jmp still
  864.  
  865. align 4
  866. key:
  867.         push eax ebx
  868.         mcall 2
  869.  
  870.         cmp byte[game_select_mode],0
  871.         je @f
  872.                 stdcall [tl_key], tree1
  873.         @@:
  874.  
  875.         cmp ah,176 ;Left
  876.         jne @f
  877.                 and byte[pos_wolf],0xfe
  878.         @@:
  879.         cmp ah,179 ;Right
  880.         jne @f
  881.                 or byte[pos_wolf],1
  882.         @@:
  883.         cmp ah,178 ;Up
  884.         jne @f
  885.                 and byte[pos_wolf],0xff-2
  886.         @@:
  887.         cmp ah,177 ;Down
  888.         jne @f
  889.                 or byte[pos_wolf],2
  890.         @@:
  891.  
  892.         cmp ah,97 ;a
  893.         jne @f
  894.                 and byte[pos_wolf],0xff-3 ;00
  895.         @@:
  896.         cmp ah,122 ;z
  897.         jne @f
  898.                 and byte[pos_wolf],0xff-1
  899.                 or byte[pos_wolf],2 ;10
  900.         @@:
  901.         cmp ah,39 ;'
  902.         jne @f
  903.                 and byte[pos_wolf],0xff-2
  904.                 or byte[pos_wolf],1 ;01
  905.         @@:
  906.         cmp ah,47 ;/
  907.         jne @f
  908.                 or byte[pos_wolf],3 ;11
  909.         @@:
  910.  
  911.         pop ebx eax
  912.         jmp still
  913.  
  914.  
  915. align 4
  916. draw_window:
  917.         pushad
  918.         mcall 12,1
  919.  
  920.         xor eax,eax
  921.         mov ebx,20*65536+480
  922.         mov ecx,20*65536+270
  923.         mov edx,[sc.work]
  924.         ;or edx,0x33000000
  925.         or edx,0x73000000
  926.         mov edi,hed
  927.         mcall ;ᮧ¤ ­¨¥ ®ª­ 
  928.         mcall 9,procinfo,-1
  929.  
  930.         cmp byte[game_select_mode],0
  931.         jne .select_mode
  932.  
  933.         mov edi,buf_displ
  934.         mov eax,dword[procinfo.client_box.width]
  935.         cmp eax,dword[displ_w]
  936.         jle @f
  937.                 sub eax,dword[displ_w]
  938.                 shr eax,1
  939.                 mov buf2d_l,ax ;¢ë¯à ¢­¨¢ ¥¬ ¡ãä¥à ¯® 業âàã ®ª­ 
  940.         @@:
  941.  
  942.         call draw_display
  943.  
  944.         mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª 
  945.         mov edx,[sc.work]
  946.         xor esi,esi
  947.         mov si,buf2d_l
  948.         add esi,dword[displ_w]
  949.         mov ebx,dword[procinfo.client_box.width]
  950.         inc ebx
  951.         cmp esi,ebx
  952.         jge @f
  953.                 sub ebx,esi
  954.                 rol ebx,16
  955.                 mov bx,si
  956.                 rol ebx,16
  957.                 mov ecx,dword[procinfo.client_box.height]
  958.                 inc ecx
  959.                 int 0x40 ;à¨á®¢ ­¨¥ ¯à ¢®£® ¡®ª®¢®£® ¯®«ï
  960.                 jmp .draw_s
  961.         @@:
  962.                 mov esi,dword[procinfo.client_box.width] ;ª®£¤  ¯® è¨à¨­¥ ­¥ ¢« §¨â
  963.                 inc esi
  964.         .draw_s:
  965.  
  966.         ; *** à¨á®¢ ­¨¥ ª­®¯®ª ***
  967. push esi
  968.         mov eax,8
  969.         xor ebx,ebx
  970.         mov bx,buf2d_l
  971.         add ebx,buf2d_w
  972.         add ebx,BUT1_L
  973.         shl ebx,16
  974.         mov bx,BUT1_W
  975.         mov ecx,BUT1_T*65536+BUT1_H
  976.         mov edx,5
  977.         ;or edx,0x40000000
  978.         mov esi,dword[color_but_sm]
  979.         int 0x40
  980.  
  981.         inc edx
  982.         add ecx,BUT1_NEXT_TOP
  983.         int 0x40
  984. pop esi
  985.  
  986.         mov eax,4 ; ð¡R÷ÿ-ð? ¢?ò¡¢ÿ
  987.         mov bx,BUT1_H
  988.         add ebx,3*65536;+3
  989.         mov ecx,dword[color_but_te]
  990.         or  ecx,0x80000000
  991.         mov edx,txt_game_a
  992.         int 0x40
  993.  
  994.         ror ebx,16
  995.         add ebx,BUT1_NEXT_TOP
  996.         ror ebx,16
  997.         mov edx,txt_game_b
  998.         int 0x40
  999.  
  1000.         ; *** ¢®ááâ ­®¢«¥­¨¥ ¯ à ¬¥â஢ ***
  1001.         mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª 
  1002.         mov edx,[sc.work]
  1003.  
  1004.         mov ebx,esi
  1005.         mov ecx,dword[procinfo.client_box.height]
  1006.         inc ecx
  1007.         mov esi,dword[displ_h]
  1008.         cmp esi,ebx
  1009.         jge @f
  1010.                 sub ecx,esi
  1011.                 rol ecx,16
  1012.                 mov cx,si
  1013.                 rol ecx,16
  1014.                 int 0x40 ;à¨á®¢ ­¨¥ ­¨¦­¥£® ¯®«ï
  1015.         @@:
  1016.        
  1017.         xor ebx,ebx
  1018.         mov bx,buf2d_l
  1019.         mov ecx,dword[displ_h]
  1020.         int 0x40 ;à¨á®¢ ­¨¥ «¥¢®£® ¡®ª®¢®£® ¯®«ï
  1021.  
  1022.         jmp @f
  1023.         .select_mode:
  1024.                 stdcall dword[tl_draw],dword tree1
  1025.                 mov edi,tree1
  1026.                 add edi,tl_offs_box
  1027.                 stdcall draw_rect_border, procinfo.client_box, edi
  1028.         @@:
  1029.  
  1030.         mcall 12,2
  1031.         popad
  1032.         ret
  1033.  
  1034. ; äã­ªæ¨ï à¨áã¥â ¯®«ï ¢®ªà㣠¯àאַ㣮«ì­¨ª  user_box
  1035. ; à §¬¥à ¯®«¥© ¢ëç¨á«ï¥âáï ¨áå®¤ï ¨§ à §¬¥à®¢ client_rect
  1036. ; ¯à¥¤¯®« £ ¥âáï, çâ® ¢ ¡®«ì設á⢥ á«ãç ¥¢ client_rect > user_box
  1037. align 4
  1038. proc draw_rect_border, client_rect:dword, user_box:dword
  1039.         pushad
  1040.         mov edi,dword[client_rect]
  1041.         mov esi,dword[user_box]
  1042.         cmp esi,0
  1043.         je @f
  1044.                 mov ebx,dword[edi+8] ;+8 = width
  1045.                 inc bx
  1046.                 mov ecx,dword[esi+4] ;+4 = top
  1047.                 mov edx,[sc.work]
  1048.                 mov eax,13
  1049.                 int 0x40 ;top
  1050.  
  1051.                 mov eax,dword[esi+4] ;+4 = top
  1052.                 add eax,dword[esi+12] ;+12 = height
  1053.                 cmp eax,dword[edi+12]
  1054.                 jge .no_bottom
  1055.                         mov ecx,eax
  1056.                         shl ecx,16
  1057.                         mov cx,word[edi+12] ;+12 = bottom
  1058.                         inc cx
  1059.                         sub cx,ax
  1060.                         mov eax,13
  1061.                         int 0x40 ;bottom
  1062.                 .no_bottom:
  1063.  
  1064.                 mov ebx,dword[esi] ;+0 left
  1065.                 mov ecx,dword[esi+4] ;+4 = top
  1066.                 shl ecx,16
  1067.                 mov cx,word[esi+12] ;+12 = height
  1068.                 inc cx
  1069.                 mov eax,13
  1070.                 int 0x40 ;left
  1071.  
  1072.                 mov eax,dword[esi] ;+0 left
  1073.                 add eax,dword[esi+8] ;+8 = width
  1074.                 mov ebx,eax
  1075.                 shl ebx,16
  1076.                 mov bx,word[edi+8] ;+8 = right
  1077.                 sub bx,ax
  1078.                 inc bx
  1079.                 mov eax,13
  1080.                 int 0x40 ;right
  1081.         @@:
  1082.         popad
  1083.         ret
  1084. endp
  1085.  
  1086. align 4
  1087. draw_display:
  1088.  
  1089.         stdcall mem_copy, dword[buf_fon],dword[buf_displ],dword[displ_bytes] ;ª®¯¨à®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¨§ ä®­®¢®£® ¡ãä¥à 
  1090.         call DrawZaac ;à¨á㥬 § ©æ 
  1091.         call DrawWolf ;à¨á㥬 ¢®«ª 
  1092.         call DrawEggs ;à¨á㥬 ï©æ 
  1093.  
  1094. push eax
  1095.         mov eax,dword[displ_w]
  1096.         shr eax,1
  1097.         stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,eax,[offs_shadow_x],[color_wolf] ;à¨á㥬 áâபã á ⥪á⮬
  1098. pop eax
  1099.         stdcall [buf2d_draw], buf_displ
  1100.         ret
  1101.  
  1102. align 4
  1103. button:
  1104.         mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  1105.  
  1106.         cmp ah,5
  1107.         jne @f
  1108.                 stdcall InitGame,0
  1109.         @@:
  1110.         cmp ah,6
  1111.         jne @f
  1112.                 stdcall InitGame,1
  1113.         @@:
  1114.         cmp ah,1
  1115.         jne still
  1116. .exit:
  1117.         stdcall [buf2d_delete],buf_fon ;㤠«ï¥¬ ¡ãä¥à
  1118.         stdcall [buf2d_delete],buf_displ ;㤠«ï¥¬ ¡ãä¥à
  1119.  
  1120.         stdcall [buf2d_delete],buf_tree_sys
  1121.         stdcall [buf2d_delete],buf_font
  1122.  
  1123.         cld
  1124.         mov ecx,3
  1125.         mov edi,buf_decor
  1126.         @@: ;㤠«ï¥¬ 3 ¡ãä¥à 
  1127.                 stdcall [buf2d_delete],edi
  1128.                 add edi,BUF_STRUCT_SIZE
  1129.                 loop @b
  1130.         mov ecx,9
  1131.         mov edi,buf_wolf
  1132.         @@: ;㤠«ï¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
  1133.                 stdcall [buf2d_delete],edi
  1134.                 add edi,BUF_STRUCT_SIZE
  1135.                 loop @b
  1136.         mov ecx,13
  1137.         mov edi,buf_chi
  1138.         @@: ;㤠«ï¥¬ 13 ¡ãä¥à®¢
  1139.                 stdcall [buf2d_delete],edi
  1140.                 add edi,BUF_STRUCT_SIZE
  1141.                 loop @b
  1142.         mov ecx,22
  1143.         mov edi,buf_egg
  1144.         @@: ;㤠«ï¥¬ 22 ¡ãä¥à 
  1145.                 stdcall [buf2d_delete],edi
  1146.                 add edi,BUF_STRUCT_SIZE
  1147.                 loop @b
  1148.  
  1149.         mov dword[tree1.data_img_sys],0 ;ç¨á⨬ 㪠§ â¥«ì ­  ¨§®¡à ¦¥­¨¥
  1150.         stdcall dword[tl_data_clear], tree1
  1151.         mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  1152.  
  1153. head_f_i:
  1154. head_f_l  db '‘¨á⥬­ ï ®è¨¡ª ',0
  1155.  
  1156. system_dir0 db '/sys/lib/'
  1157. lib0_name db 'buf2d.obj',0
  1158. err_message_found_lib0 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0
  1159. err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0
  1160.  
  1161. system_dir1 db '/sys/lib/'
  1162. lib1_name db 'libimg.obj',0
  1163. err_message_found_lib1 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
  1164. err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
  1165.  
  1166. system_dir2 db '/sys/lib/'
  1167. lib2_name db 'libini.obj',0
  1168. err_message_found_lib2 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libini.obj',0
  1169. err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libini.obj',0
  1170.  
  1171. system_dir3 db '/sys/lib/'
  1172. lib3_name db 'box_lib.obj',0
  1173. err_message_found_lib3 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
  1174. err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
  1175.  
  1176. ;library structures
  1177. l_libs_start:
  1178.         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
  1179.         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
  1180.         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
  1181.         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
  1182. load_lib_end:
  1183.  
  1184. align 4
  1185. proc mem_copy, source:dword, destination:dword, len:dword
  1186.   push ecx esi edi
  1187.     cld
  1188.     mov esi, dword[source]
  1189.     mov edi, dword[destination]
  1190.     mov ecx, dword[len]
  1191.     rep movsb
  1192.   pop edi esi ecx
  1193.   ret
  1194. endp
  1195.  
  1196. align 4
  1197. convert_to_str:
  1198.         pushad
  1199.         ;mov eax,dword[value]
  1200.         ;mov edi,dword[text]
  1201.         mov dword[edi+1],0
  1202.         cld
  1203.         call .str
  1204.         popad
  1205.         ret
  1206.  
  1207.  
  1208. align 4
  1209. .str:
  1210.   mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  1211.     ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  1212.   cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  1213.   jb @f
  1214.   xor edx,edx  ;®ç¨áâ¨âì edx
  1215.   div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  1216.   push edx     ;¯®«®¦¨âì ¢ á⥪
  1217.   ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
  1218.   call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  1219.   pop eax
  1220.   @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  1221.   ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
  1222.   ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
  1223.   or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  ç¥¬ ¤¢¥ ¢ëè¥
  1224.   stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  1225.   ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
  1226.  
  1227.  
  1228. last_time dd 0
  1229. image_data dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
  1230. image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥­­ë¬¨ á¥à묨 ¨§®¡à ¦¥­¨ï¬¨ ¢ ä®à¬ â¥ 24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë
  1231.  
  1232. run_file_70 FileInfoBlock
  1233. hed db 'Nu pogodi 17.09.10',0 ;¯®¤¯¨áì ®ª­ 
  1234. sc system_colors  ;á¨á⥬­ë¥ 梥â 
  1235.  
  1236. count_of_dir_list_files equ 10
  1237. el_focus dd tree1
  1238. tree1 tree_list FILE_NAME_MAX,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
  1239.         16,16, 0x8080ff,0x0000ff,0xffffff, 10,10,140,100, 0,0,0, el_focus,\
  1240.         0,user_is_select
  1241.  
  1242. align 4
  1243. buf_tree_sys:
  1244.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  1245.         dw 0 ;+4 left
  1246.         dw 0 ;+6 top
  1247.         dd 16 ;+8 w
  1248.         dd 16*11 ;+12 h
  1249.         dd 0 ;+16 color
  1250.         db 24 ;+20 bit in pixel
  1251.  
  1252. align 4
  1253. buf_font: ;¡ãä¥à á® èà¨ä⮬
  1254.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  1255.         dw 25 ;+4 left
  1256.         dw 25 ;+6 top
  1257.         dd 128 ;+8 w
  1258.         dd 144 ;+12 h
  1259.         dd 0 ;+16 color
  1260.         db 24 ;+20 bit in pixel
  1261.  
  1262. align 4
  1263. buf_displ:
  1264.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  1265.         dw 25,0
  1266.         dd ? ;+8 w
  1267.         dd ? ;+12 h
  1268.         dd 0 ;+16 color
  1269.         db 24 ;+20 bit in pixel
  1270.  
  1271. align 4
  1272. buf_fon: ;ä®­®¢ë© ¡ãä¥à
  1273.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  1274.         dw 0 ;+4 left
  1275.         dw 0 ;+6 top
  1276.         dd ? ;+8 w
  1277.         dd ? ;+12 h
  1278.         dd 0xffffff ;+16 color
  1279.         db 24 ;+20 bit in pixel
  1280.  
  1281. align 4
  1282. buf_decor: ;¡ãä¥à  á ¤¥ª®à æ¨ï¬¨: ¤®¬¨ª ¬¨ ¨ ३ª ¬¨; á ªãà¨æ ¬¨; á à á⥭¨ï¬¨
  1283.         rb 3*BUF_STRUCT_SIZE
  1284.  
  1285. align 4
  1286. buf_wolf:
  1287.         rb 9*BUF_STRUCT_SIZE
  1288.  
  1289. align 4
  1290. buf_egg:
  1291.         rb 22*BUF_STRUCT_SIZE
  1292.  
  1293. align 4
  1294. buf_chi:
  1295.         rb 13*BUF_STRUCT_SIZE
  1296.  
  1297.  
  1298.  
  1299. align 4
  1300. import_libini:
  1301.         dd alib_init0
  1302.         ini_get_str   dd aini_get_str
  1303.         ini_get_int   dd aini_get_int
  1304.         ini_get_color dd aini_get_color
  1305. dd 0,0
  1306.         alib_init0     db 'lib_init',0
  1307.         aini_get_str   db 'ini_get_str',0
  1308.         aini_get_int   db 'ini_get_int',0
  1309.         aini_get_color db 'ini_get_color',0
  1310.  
  1311. align 4
  1312. import_libimg:
  1313.   dd alib_init1
  1314.   img_is_img  dd aimg_is_img
  1315.   img_info    dd aimg_info
  1316.   img_from_file dd aimg_from_file
  1317.   img_to_file dd aimg_to_file
  1318.   img_from_rgb dd aimg_from_rgb
  1319.   img_to_rgb  dd aimg_to_rgb
  1320.   img_to_rgb2 dd aimg_to_rgb2
  1321.   img_decode  dd aimg_decode
  1322.   img_encode  dd aimg_encode
  1323.   img_create  dd aimg_create
  1324.   img_destroy dd aimg_destroy
  1325.   img_destroy_layer dd aimg_destroy_layer
  1326.   img_count   dd aimg_count
  1327.   img_lock_bits dd aimg_lock_bits
  1328.   img_unlock_bits dd aimg_unlock_bits
  1329.   img_flip    dd aimg_flip
  1330.   img_flip_layer dd aimg_flip_layer
  1331.   img_rotate  dd aimg_rotate
  1332.   img_rotate_layer dd aimg_rotate_layer
  1333.   img_draw    dd aimg_draw
  1334.  
  1335.   dd 0,0
  1336.   alib_init1   db 'lib_init',0
  1337.   aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
  1338.   aimg_info    db 'img_info',0
  1339.   aimg_from_file db 'img_from_file',0
  1340.   aimg_to_file db 'img_to_file',0
  1341.   aimg_from_rgb db 'img_from_rgb',0
  1342.   aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
  1343.   aimg_to_rgb2 db 'img_to_rgb2',0
  1344.   aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
  1345.   aimg_encode  db 'img_encode',0
  1346.   aimg_create  db 'img_create',0
  1347.   aimg_destroy db 'img_destroy',0
  1348.   aimg_destroy_layer db 'img_destroy_layer',0
  1349.   aimg_count   db 'img_count',0
  1350.   aimg_lock_bits db 'img_lock_bits',0
  1351.   aimg_unlock_bits db 'img_unlock_bits',0
  1352.   aimg_flip    db 'img_flip',0
  1353.   aimg_flip_layer db 'img_flip_layer',0
  1354.   aimg_rotate  db 'img_rotate',0
  1355.   aimg_rotate_layer db 'img_rotate_layer',0
  1356.   aimg_draw    db 'img_draw',0
  1357.  
  1358. align 4
  1359. import_buf2d_lib:
  1360.         dd sz_lib_init
  1361.         buf2d_create dd sz_buf2d_create
  1362.         buf2d_create_f_img dd sz_buf2d_create_f_img
  1363.         buf2d_clear dd sz_buf2d_clear
  1364.         buf2d_draw dd sz_buf2d_draw
  1365.         buf2d_delete dd sz_buf2d_delete
  1366.         buf2d_line dd sz_buf2d_line
  1367.         buf2d_circle dd sz_buf2d_circle
  1368.         buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
  1369.         buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
  1370.         buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
  1371.         buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
  1372.         buf2d_bit_blt dd sz_buf2d_bit_blt
  1373.         buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
  1374.         buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
  1375.         buf2d_curve_bezier dd sz_buf2d_curve_bezier
  1376.         buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
  1377.         buf2d_draw_text dd sz_buf2d_draw_text
  1378.         buf2d_crop_color dd sz_buf2d_crop_color
  1379.         buf2d_offset_h dd sz_buf2d_offset_h    
  1380.         dd 0,0
  1381.         sz_lib_init db 'lib_init',0
  1382.         sz_buf2d_create db 'buf2d_create',0
  1383.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  1384.         sz_buf2d_clear db 'buf2d_clear',0
  1385.         sz_buf2d_draw db 'buf2d_draw',0
  1386.         sz_buf2d_delete db 'buf2d_delete',0
  1387.         sz_buf2d_line db 'buf2d_line',0
  1388.         sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
  1389.         sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
  1390.         sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
  1391.         sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
  1392.         sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
  1393.         sz_buf2d_bit_blt db 'buf2d_bit_blt',0
  1394.         sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
  1395.         sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
  1396.         sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
  1397.         sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
  1398.         sz_buf2d_draw_text db 'buf2d_draw_text',0
  1399.         sz_buf2d_crop_color db 'buf2d_crop_color',0
  1400.         sz_buf2d_offset_h db 'buf2d_offset_h',0
  1401.  
  1402. align 4
  1403. import_box_lib:
  1404.         dd alib_init2
  1405.  
  1406.         ;scrollbar_ver_draw  dd aScrollbar_ver_draw
  1407.  
  1408.         tl_data_init dd sz_tl_data_init
  1409.         tl_data_clear dd sz_tl_data_clear
  1410.         tl_info_clear dd sz_tl_info_clear
  1411.         tl_key dd sz_tl_key
  1412.         tl_mouse dd sz_tl_mouse
  1413.         tl_draw dd sz_tl_draw
  1414.         tl_info_undo dd sz_tl_info_undo
  1415.         tl_info_redo dd sz_tl_info_redo
  1416.         tl_node_add dd sz_tl_node_add
  1417.         tl_node_set_data dd sz_tl_node_set_data
  1418.         tl_node_get_data dd sz_tl_node_get_data
  1419.         tl_node_delete dd sz_tl_node_delete
  1420.         tl_cur_beg dd sz_tl_cur_beg
  1421.         tl_cur_next dd sz_tl_cur_next
  1422.         tl_cur_perv dd sz_tl_cur_perv
  1423.         tl_node_close_open dd sz_tl_node_close_open
  1424.         tl_node_lev_inc dd sz_tl_node_lev_inc
  1425.         tl_node_lev_dec dd sz_tl_node_lev_dec
  1426.  
  1427. dd 0,0
  1428.         alib_init2 db 'lib_init',0
  1429.  
  1430.         ;aScrollbar_ver_draw  db 'scrollbar_v_draw',0
  1431.  
  1432.         sz_tl_data_init db 'tl_data_init',0
  1433.         sz_tl_data_clear db 'tl_data_clear',0
  1434.         sz_tl_info_clear db 'tl_info_clear',0
  1435.         sz_tl_key db 'tl_key',0
  1436.         sz_tl_mouse db 'tl_mouse',0
  1437.         sz_tl_draw db 'tl_draw',0
  1438.         sz_tl_info_undo db 'tl_info_undo',0
  1439.         sz_tl_info_redo db 'tl_info_redo',0
  1440.         sz_tl_node_add db 'tl_node_add',0
  1441.         sz_tl_node_set_data db 'tl_node_set_data',0
  1442.         sz_tl_node_get_data db 'tl_node_get_data',0
  1443.         sz_tl_node_delete db 'tl_node_delete',0
  1444.         sz_tl_cur_beg db 'tl_cur_beg',0
  1445.         sz_tl_cur_next db 'tl_cur_next',0
  1446.         sz_tl_cur_perv db 'tl_cur_perv',0
  1447.         sz_tl_node_close_open db 'tl_node_close_open',0
  1448.         sz_tl_node_lev_inc db 'tl_node_lev_inc',0
  1449.         sz_tl_node_lev_dec db 'tl_node_lev_dec',0
  1450.  
  1451.  
  1452.  
  1453. i_end:
  1454.         rb 1024
  1455.         align 16
  1456.         procinfo process_information
  1457. stacktop:
  1458.         sys_path rb 4096
  1459.         file_name:
  1460.                 rb 4096
  1461.         openfile_path:
  1462.                 rb 4096
  1463.         filename_area:
  1464.                 rb 256
  1465. mem:
  1466.