Subversion Repositories Kolibri OS

Rev

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