Subversion Repositories Kolibri OS

Rev

Rev 3105 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. use32
  2.         org 0
  3.         db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
  4.         dd 1,start,i_end,mem,stacktop,0,cur_dir_path
  5.  
  6. include '../../../../../macros.inc'
  7. include '../../../../../proc32.inc'
  8. include '../../../../../KOSfuncs.inc'
  9. include '../../../../../load_lib.mac'
  10. include '../../../../../dll.inc'
  11.  
  12. @use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
  13.  
  14. struct FileInfoBlock
  15.         Function dd ?
  16.         Position dd ?
  17.         Flags    dd ?
  18.         Count    dd ?
  19.         Buffer   dd ?
  20.                 db ?
  21.         FileName dd ?
  22. ends
  23.  
  24. max_open_file_size equ 64*1024 ;64 Kb
  25.  
  26. align 4
  27. open_file_vox dd 0 ;㪠§ â¥«ì ­  ®¡« áâì ¤«ï ®âªàëâ¨ï ä ©«®¢
  28. run_file_70 FileInfoBlock
  29. f_name db 'vaz2106.vox',0
  30.  
  31. vox_offs_tree_table equ 4
  32.  
  33. ;¯®¢®à®â ®¡ê¥ªâ  ­  90 £à ¤ãᮢ
  34. ;x0y0 - x1y0
  35. ;x1y0 - x1y1
  36. ;x0y1 - x0y0
  37. ;x1y1 - x0y1
  38. align 4
  39. proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword
  40.         mov ebx,[v_obj]
  41.         add ebx,vox_offs_tree_table
  42.         mov ecx,2
  43.         cld
  44.         @@:
  45.                 mov eax,dword[ebx]
  46.                 mov byte[ebx+1],al
  47.                 mov byte[ebx+3],ah
  48.                 shr eax,16
  49.                 mov byte[ebx],al
  50.                 mov byte[ebx+2],ah
  51.                 add ebx,4
  52.                 loop @b
  53.         ret
  54. endp
  55.  
  56.  
  57.  
  58. align 4
  59. start:
  60.         load_library name_buf2d, library_path, system_path, import_buf2d_lib
  61.         cmp eax,-1
  62.         jz button.exit
  63.  
  64.         mcall SF_SET_EVENTS_MASK,0x27
  65.         stdcall [buf2d_create], buf_0 ;ᮧ¤ ¥¬ ¡ãä¥à
  66.         stdcall [buf2d_create], buf_z
  67.  
  68.         stdcall mem.Alloc,max_open_file_size
  69.         mov dword[open_file_vox],eax
  70.  
  71.         copy_path f_name,[32],file_name,0
  72.  
  73.         mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
  74.         mov [run_file_70.Function], 0
  75.         mov [run_file_70.Position], 0
  76.         mov [run_file_70.Flags], 0
  77.         mov dword[run_file_70.Count], max_open_file_size
  78.         m2m [run_file_70.Buffer], [open_file_vox]
  79.         mov byte[run_file_70+20], 0
  80.         mov dword[run_file_70.FileName], file_name
  81.         mov ebx,run_file_70
  82.         int 0x40 ;§ £à㦠¥¬ ¢®ªá¥«ì­ë© ®¡ê¥ªâ
  83.  
  84.         stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,0, 7
  85.         stdcall vox_obj_rot_z, [open_file_vox]
  86.         stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,0, 7
  87.         stdcall vox_obj_rot_z, [open_file_vox]
  88.         stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,128, 7
  89.         stdcall vox_obj_rot_z, [open_file_vox]
  90.         stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,128, 7
  91.  
  92. align 4
  93. red_win:
  94.         call draw_window
  95.  
  96. align 4
  97. still:
  98.         mcall SF_WAIT_EVENT
  99.         cmp al,1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
  100.         jz red_win
  101.         cmp al,2
  102.         jz key
  103.         cmp al,3
  104.         jz button
  105.         jmp still
  106.  
  107. align 4
  108. draw_window:
  109.         pushad
  110.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  111.  
  112.         mov edx,0x33000000
  113.         mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+295,,,caption
  114.  
  115.         stdcall [buf2d_draw], buf_0
  116.  
  117.         mcall SF_REDRAW,SSF_END_DRAW
  118.         popad
  119.         ret
  120.  
  121. align 4
  122. key:
  123.         mcall SF_GET_KEY
  124.  
  125.         cmp ah,27 ;Esc
  126.         je button.exit
  127.  
  128.         jmp still
  129.  
  130. align 4
  131. button:
  132.         mcall SF_GET_BUTTON
  133.         cmp ah,1
  134.         jne still
  135. .exit:
  136.         stdcall [buf2d_delete],buf_0 ;㤠«ï¥¬ ¡ãä¥à
  137.         stdcall [buf2d_delete],buf_z
  138.         stdcall mem.Free,[open_file_vox]
  139.         mcall SF_TERMINATE_PROCESS
  140.  
  141. caption db 'Test buf2d library, [Esc] - exit',0
  142.  
  143. ;--------------------------------------------------
  144. align 4
  145. import_buf2d_lib:
  146.         dd sz_lib_init
  147.         buf2d_create dd sz_buf2d_create
  148.         buf2d_clear dd sz_buf2d_clear
  149.         buf2d_draw dd sz_buf2d_draw
  150.         buf2d_delete dd sz_buf2d_delete
  151.  
  152.         ;¢®ªá¥«ì­ë¥ ä㭪樨:
  153.         ;buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
  154.         ;buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
  155.         buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
  156.         ;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
  157.         ;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
  158.         ;buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
  159.         ;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
  160.         ;buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
  161.         ;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
  162.         ;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
  163.  
  164.         dd 0,0
  165.         sz_lib_init db 'lib_init',0
  166.         sz_buf2d_create db 'buf2d_create',0
  167.         sz_buf2d_clear db 'buf2d_clear',0
  168.         sz_buf2d_draw db 'buf2d_draw',0
  169.         sz_buf2d_delete db 'buf2d_delete',0
  170.  
  171.         ;¢®ªá¥«ì­ë¥ ä㭪樨:
  172.         ;sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
  173.         ;sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
  174.         sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
  175.         ;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
  176.         ;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
  177.         ;sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
  178.         ;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
  179.         ;sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
  180.         ;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
  181.         ;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
  182.  
  183. align 4
  184. buf_0:
  185.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  186.         dw 20 ;+4 left
  187.         dw 5 ;+6 top
  188.         dd 256 ;+8 w
  189.         dd 256 ;+12 h
  190.         dd 0xffffff ;+16 color
  191.         db 24 ;+20 bit in pixel
  192.  
  193. align 4
  194. buf_z:
  195.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  196.         dw 20 ;+4 left
  197.         dw 5 ;+6 top
  198.         dd 256 ;+8 w
  199.         dd 256 ;+12 h
  200.         dd 0 ;+16 color
  201.         db 32 ;+20 bit in pixel
  202.  
  203. ;--------------------------------------------------
  204. system_path db '/sys/lib/'
  205. name_buf2d db 'buf2d.obj',0
  206. ;--------------------------------------------------
  207.  
  208. align 16
  209. i_end: ;ª®­¥æ ª®¤ 
  210. file_name:
  211.         rb 4096
  212. cur_dir_path:
  213.         rb 4096
  214. library_path:
  215.         rb 4096
  216.         rb 1024
  217. stacktop:
  218. mem:
  219.  
  220.