Subversion Repositories Kolibri OS

Rev

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