Subversion Repositories Kolibri OS

Rev

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