Subversion Repositories Kolibri OS

Rev

Rev 6259 | Rev 7861 | Go to most recent revision | 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, openfile_path, sys_path
  5.  
  6. include '../../../../programs/macros.inc'
  7. include '../../../../programs/proc32.inc'
  8. include '../../../../programs/KOSfuncs.inc'
  9. include '../../../../programs/load_img.inc'
  10. include '../trunk/vox_draw.inc'
  11. include '../trunk/vox_rotate.inc'
  12. include '../trunk/str.inc'
  13.  
  14. @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
  15. caption db 'Voxel mover 22.03.18',0 ;¯®¤¯¨áì ®ª­ 
  16.  
  17. run_file_70 FileInfoBlock
  18.  
  19. IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
  20. image_data_toolbar dd 0
  21.  
  22. ;§­ ç¥­¨ï § ¤ ¢ ¥¬ë¥ ¯® 㬮«ç ­¨î, ¡¥§ ini ä ©« 
  23. ini_def_window_t equ 10
  24. ini_def_window_l equ 10
  25. ini_def_window_w equ 550
  26. ini_def_window_h equ 415
  27. ini_def_buf_w equ 198 ;=192+6
  28. ini_def_buf_h equ 231 ;=224+7
  29. ini_def_s_zoom equ 5
  30. ini_def_t_size equ 10
  31. ini_def_color_b equ 0xffffff
  32. ;®¯¨á ­¨¥ ¯ à ¬ â஢ ¤«ï ini ä ©« 
  33. ini_name db 'vox_mover.ini',0
  34. ini_sec_window db 'Window',0
  35. key_window_t db 't',0
  36. key_window_l db 'l',0
  37. key_window_w db 'w',0
  38. key_window_h db 'h',0
  39. key_buf_w db 'buf_w',0
  40. key_buf_h db 'buf_h',0
  41. ini_sec_options db 'Options',0
  42. key_s_zoom db 's_zoom',0
  43. key_t_size db 'tile_size',0
  44. key_f_size db 'file_size',0
  45. key_col_b db 'c_background',0
  46.  
  47. OT_MAP_X  equ  0
  48. OT_MAP_Y  equ  0
  49. OT_CAPT_X_COLOR equ  5 ;®âáâ㯠¤«ï ¯®¤¯¨á¨ 梥â 
  50. OT_CAPT_Y_COLOR equ 30
  51. PEN_MODE_NONE equ -1
  52. PEN_MODE_CLEAR equ 0 ;०¨¬ áâ¨à ­¨ï
  53. PEN_MODE_SELECT_COLOR equ 2 ;०¨¬ ¢ë¡®à  梥â 
  54.  
  55. align 4
  56. start:
  57.         load_libraries l_libs_start,l_libs_end
  58.         ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ¡¨¡«¨®â¥ª 
  59.         mov     ebp,lib_2
  60.         cmp     dword [ebp+ll_struc_size-4],0
  61.         jz      @f
  62.                 mcall SF_TERMINATE_PROCESS
  63.         @@:
  64.         mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  65.         mcall SF_SET_EVENTS_MASK,0xC0000027
  66.         stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
  67.  
  68. ;--- load ini file ---
  69.         copy_path ini_name,sys_path,file_name,0
  70.         ;window startup pozition
  71.         stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_l,ini_def_window_l
  72.         mov word[wnd_s_pos+2],ax
  73.         stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_w,ini_def_window_w
  74.         mov word[wnd_s_pos],ax
  75.         stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_t,ini_def_window_t
  76.         mov word[wnd_s_pos+6],ax
  77.         stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_h,ini_def_window_h
  78.         mov word[wnd_s_pos+4],ax
  79.         ;image buffer size
  80.         stdcall dword[ini_get_int],file_name,ini_sec_window,key_buf_w,ini_def_buf_w
  81.         mov [buf_0.w],eax
  82.         mov [buf_0z.w],eax
  83.         add ax,15
  84.         mov [buf_pl.l],ax ;®âáâ㯠¤«ï ¯à ¢®£® ®ª­ 
  85.         stdcall dword[ini_get_int],file_name,ini_sec_window,key_buf_h,ini_def_buf_h
  86.         mov [buf_0.h],eax
  87.         mov [buf_0z.h],eax
  88.         ;梥â ä®­ 
  89.         stdcall dword[ini_get_color],file_name,ini_sec_window,key_col_b,ini_def_color_b
  90.         mov [buf_0.color],eax
  91.         mov [buf_pl.color],eax
  92.  
  93.         ;¬ áâ ¡, ¯®á«¥ ª®â®à®£® ¡ã¤¥â 㢥«¨ç¥­¨¥
  94.         stdcall dword[ini_get_int],file_name,ini_sec_options,key_s_zoom,ini_def_s_zoom
  95.         mov [scaled_zoom],eax
  96.         ;à §¬¥à ª¢ ¤à â¨ª  ­  ¯«®áª®á⨠á¥ç¥­¨ï
  97.         stdcall dword[ini_get_int],file_name,ini_sec_options,key_t_size,ini_def_t_size
  98.         mov [tile_size],eax
  99.  
  100.         stdcall dword[ini_get_int],file_name,ini_sec_options,key_f_size,64
  101.         shl eax,10
  102.         mov [max_open_file_size],eax
  103.  
  104.         mov ecx,[scaled_zoom]
  105.         xor eax,eax
  106.         inc eax
  107.         shl eax,cl
  108.         imul eax,[tile_size]
  109.         mov [buf_pl.w],eax
  110.         add eax,[tile_size]
  111.         mov [buf_pl.h],eax
  112.  
  113.  
  114.         stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
  115.         stdcall [buf2d_create], buf_0z ;ᮧ¤ ­¨¥ ¡ãä¥à  £«ã¡¨­ë
  116.         stdcall [buf2d_create], buf_pl ;ᮧ¤ ­¨¥ ¡ãä¥à  ¤«ï á¥ç¥­¨ï
  117.  
  118.         stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
  119.  
  120.         include_image_file 'toolbar_m.png', image_data_toolbar
  121.  
  122.         stdcall mem.Alloc,[max_open_file_size]
  123.         mov dword[open_file_vox],eax
  124.         stdcall mem.Alloc,[max_open_file_size]
  125.         mov dword[moved_file_vox],eax
  126.  
  127.         stdcall but_new_file, [open_file_vox]
  128.         stdcall but_new_file, [moved_file_vox]
  129.         ;¯à®¢¥àª  ª®¬ ­¤­®© áâப¨
  130.         cmp dword[openfile_path],0
  131.         je @f
  132.                 call but_open_file_cmd_lin
  133.         @@:
  134.  
  135. align 4
  136. red_win:
  137.         call draw_window
  138.  
  139. align 4
  140. still:
  141.         mcall SF_WAIT_EVENT
  142.  
  143.         cmp al,1
  144.         jz red_win
  145.         cmp al,2
  146.         jz key
  147.         cmp al,3
  148.         jz button
  149.         cmp al,6
  150.         jne @f
  151.                 mcall SF_THREAD_INFO,procinfo,-1
  152.                 cmp ax,word[procinfo+4]
  153.                 jne @f ;®ª­® ­¥  ªâ¨¢­®
  154.                 call mouse
  155.         @@:
  156.         jmp still
  157.  
  158. align 4
  159. mouse:
  160.         pushad
  161.         mcall SF_MOUSE_GET,SSF_BUTTON
  162.         bt eax,1 ;right button
  163.         jnc @f
  164.                 mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
  165.                 mov ebx,eax
  166.                 shr ebx,16
  167.                 and eax,0xffff
  168.                 stdcall get_buf_color, buf_0
  169.                 stdcall get_buf_color, buf_pl
  170.                 jmp .end_f
  171.         @@:
  172.         bt eax,0 ;left button
  173.         jnc .end_f
  174.                 mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
  175.                 mov ebx,eax
  176.                 shr ebx,16
  177.                 and eax,0xffff
  178.  
  179.                 push eax ebx
  180.                 mov edx,[v_zoom]
  181.                 cmp edx,[scaled_zoom]
  182.                 jle @f
  183.                 ;०¨¬ ¬ áèâ ¡¨à®¢ ­¨ï ¨§®¡à ¦¥­¨ï
  184.                 sub edx,[scaled_zoom]
  185.                 sub ax,word[buf_0.t]
  186.                 sub bx,word[buf_0.l]
  187.                 stdcall get_mouse_ev_scale, buf_vox, ebx, eax, [scaled_zoom],edx
  188.                 cmp eax,0
  189.                 je @f
  190.                         mov ebx,eax
  191.                         and eax,0x3fffffff
  192.                         rol ebx,2
  193.                         and ebx,3
  194.                         dec ebx
  195.  
  196.                         shl ebx,2
  197.                         add ebx,cam_x
  198.                         mov dword[ebx],eax ;change [cam_x] or [cam_y] or [cam_z]
  199.                         call draw_objects
  200.  
  201.                         pop ebx eax
  202.                         jmp .end_f
  203.                 @@:
  204.                 pop ebx eax
  205.  
  206.  
  207.                 ;eax - mouse coord y
  208.                 ;ebx - mouse coord x
  209.                 movzx edx,word[buf_pl.t]
  210.                 add edx,OT_MAP_Y
  211.                 cmp eax,edx
  212.                 jl .end_f
  213.                         sub eax,edx
  214.                         xor edx,edx
  215.                         mov ecx,[tile_size] ;H
  216.                         div ecx
  217.                 movzx edx,word[buf_pl.l]
  218.                 add edx,OT_MAP_X
  219.                 cmp ebx,edx
  220.                 jl .end_f
  221.                         call convert_y ;¯à¥®¡à §®¢ ­¨¥ ª®®à¤¨­ âë y
  222.                         cmp eax,0
  223.                         jge .end_0 ;®£à ­¨ç¥­¨¥ ¯® ­¨¦­¥© ª®®à¤¨­ â¥ y
  224.                                 cmp eax,-1
  225.                                 jne .end_f
  226.                                 ;¬¥­ï¥¬ á¥ç¥­¨¥, ¯®¯ «¨ ­  ª¢ ¤à â¨ª
  227.                                 sub ebx,edx
  228.                                 mov eax,ebx
  229.                                 xor edx,edx
  230.                                 mov ecx,[tile_size] ;W
  231.                                 div ecx
  232.                                 mov [n_plane],eax
  233.                                 jmp .end_1
  234.                         .end_0:
  235.                         mov [v_cur_y],eax ;Y-coord
  236.                         sub ebx,edx
  237.                         mov eax,ebx
  238.                         xor edx,edx
  239.                         mov ecx,[tile_size] ;W
  240.                         div ecx
  241.                         mov [v_cur_x],eax ;X-coord
  242.  
  243.                         .end_1:
  244.                         call draw_objects
  245.                         call draw_pok
  246.         .end_f:
  247.         popad
  248.         ret
  249.  
  250. ;input:
  251. ; eax - coord y
  252. ; ebx - coord x
  253. align 4
  254. proc get_buf_color, buf:dword
  255. pushad
  256.         mov edi,[buf]
  257.         cmp ax,buf2d_t
  258.         jl .end_f
  259.         sub ax,buf2d_t
  260.         cmp eax,buf2d_h
  261.         jg .end_f
  262.         cmp bx,buf2d_l
  263.         jl .end_f
  264.         sub bx,buf2d_l
  265.         cmp ebx,buf2d_w
  266.         jg .end_f
  267.                 stdcall [buf2d_get_pixel], edi,ebx,eax
  268.                 mov [v_color],eax
  269.                 call on_change_color ;®â®¡à ¦ ¥¬ ¨§¬¥­¥­¨ï 梥â 
  270.         .end_f:
  271. popad
  272.         ret
  273. endp
  274.  
  275. ;¯à¥®¡à §®¢ë¢ ¥¬ ª®®à¤¨­ âã y (§­ ç¥­¨¥ ¤®«¦­® 㢥«¨ç¨¢ âìáï á ­¨§ã ¢¢¥àå)
  276. align 4
  277. convert_y:
  278.         push ecx edx
  279.         mov ecx,[v_zoom]
  280.         cmp ecx,[scaled_zoom]
  281.         jle @f
  282.                 mov ecx,[scaled_zoom]
  283.         @@:
  284.         mov edx,1
  285.         cmp ecx,1
  286.         jl @f
  287.                 shl edx,cl
  288.         @@:
  289.         sub edx,eax
  290.         dec edx
  291.         mov eax,edx
  292.         pop edx ecx
  293.         ret
  294.  
  295. align 4
  296. draw_window:
  297. pushad
  298.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  299.  
  300.         ; *** à¨á®¢ ­¨¥ £« ¢­®£® ®ª­  (¢ë¯®«­ï¥âáï 1 à § ¯à¨ § ¯ã᪥) ***
  301.         mov edx,[sc.work]
  302.         or  edx,(3 shl 24)+0x30000000
  303.         mcall SF_CREATE_WINDOW,dword[wnd_s_pos],dword[wnd_s_pos+4],,,caption
  304.  
  305.         ; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì ***
  306.         mov esi,[sc.work_button]
  307.         mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,3
  308.  
  309.         mov ebx,(30 shl 16)+20
  310.         mov edx,4
  311.         int 0x40
  312.         add ebx,25 shl 16
  313.         mov edx,5
  314.         int 0x40
  315.         add ebx,30 shl 16
  316.         mov edx,6
  317.         int 0x40
  318.         add ebx,25 shl 16
  319.         mov edx,7
  320.         int 0x40
  321.         add ebx,25 shl 16
  322.         mov edx,8
  323.         int 0x40
  324.         add ebx,25 shl 16
  325.         mov edx,9
  326.         int 0x40
  327.         add ebx,25 shl 16
  328.         mov edx,10
  329.         int 0x40
  330.         add ebx,25 shl 16
  331.         mov edx,11
  332.         int 0x40
  333.         add ebx,25 shl 16
  334.         mov edx,12
  335.         int 0x40
  336.         add ebx,25 shl 16
  337.         mov edx,13
  338.         int 0x40
  339.         add ebx,25 shl 16
  340.         mov edx,14
  341.         int 0x40
  342.         add ebx,25 shl 16
  343.         mov edx,15
  344.         int 0x40
  345.         add ebx,25 shl 16
  346.         mov edx,16
  347.         int 0x40
  348.         add ebx,25 shl 16
  349.         mov edx,17
  350.         int 0x40
  351.         add ebx,25 shl 16
  352.         mov edx,18
  353.         int 0x40
  354.         add ebx,25 shl 16
  355.         mov edx,19
  356.         int 0x40
  357.         add ebx,25 shl 16
  358.         mov edx,20
  359.         int 0x40
  360.  
  361.         ; *** à¨á®¢ ­¨¥ ¨ª®­®ª ­  ª­®¯ª å ***
  362.         mov edx,(7 shl 16)+7 ;icon new
  363.         mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16
  364.  
  365.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  366.         add edx,(25 shl 16) ;icon open
  367.         int 0x40
  368.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  369.         add edx,(25 shl 16) ;icon save
  370.         int 0x40
  371.  
  372.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  373.         add edx,(30 shl 16) ;㢥«¨ç. ¬ áèâ ¡
  374.         int 0x40
  375.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  376.         add edx,(25 shl 16) ;㬥­ìè. ¬ áèâ ¡
  377.         int 0x40
  378.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  379.         add edx,(25 shl 16) ;¯®¢®à®â 1
  380.         int 0x40
  381.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  382.         add edx,(25 shl 16) ;¯®¢®à®â 2
  383.         int 0x40
  384.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  385.         add edx,(25 shl 16) ;ᤢ¨£ ¯«®áª®á⨠+
  386.         int 0x40
  387.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  388.         add edx,(25 shl 16) ;ᤢ¨£ ¯«®áª®á⨠-
  389.         int 0x40
  390.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  391.         add edx,(25 shl 16) ;®á¢¥é¥­¨¥
  392.         int 0x40
  393.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  394.         add edx,(25 shl 16) ;७¤¥à 2*2
  395.         int 0x40
  396.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  397.         add edx,(25 shl 16) ;
  398.         int 0x40
  399.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  400.         add edx,(25 shl 16) ;
  401.         int 0x40
  402.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  403.         add edx,(25 shl 16) ;
  404.         int 0x40
  405.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  406.         add edx,(25 shl 16) ;
  407.         int 0x40
  408.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  409.         add edx,(25 shl 16) ;
  410.         int 0x40
  411.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  412.         add edx,(25 shl 16) ;
  413.         int 0x40
  414.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  415.         add edx,(25 shl 16) ;
  416.         int 0x40
  417.  
  418.         ; *** à¨á®¢ ­¨¥ ¡ãä¥à®¢ ***
  419.         call draw_objects
  420.         call draw_pok
  421.  
  422.         mcall SF_REDRAW,SSF_END_DRAW
  423. popad
  424.         ret
  425.  
  426. align 4
  427. draw_pok:
  428.         mov esi,[sc.work_button_text]
  429.         or  esi,(1 shl 30)
  430.         mov edi,[sc.work_button]
  431.         mcall SF_DRAW_NUMBER, (3 shl 16)+(1 shl 31), [v_zoom], ((350+6*9) shl 16)+OT_CAPT_Y_COLOR+2 ;¬ áèâ ¡
  432.         mov ecx,[n_plane]
  433.         add edx,115 shl 16 ;9
  434.         int 0x40 ;­®¬¥à á¥ç¥­¨ï
  435.  
  436.         ;®¡­®¢«¥­¨¥ ¯ à ¬¥â஢ ªãàá®à 
  437.         mov dword[txt_curor.size],0
  438.         mov eax,dword[v_cur_x]
  439.         mov edi,txt_curor.size
  440.         stdcall convert_int_to_str,10
  441.         stdcall str_cat, edi,txt_mull
  442.         mov eax,dword[v_cur_y]
  443.         mov edi,txt_buf
  444.         stdcall convert_int_to_str,16
  445.         stdcall str_cat, txt_curor.size,edi
  446.         stdcall str_cat, txt_curor.size,txt_space ;§ ¢¥àè î騩 ¯à®¡¥«
  447.  
  448.         ;®¡­®¢«¥­¨¥ ¯ à ¬¥â஢ ª¨áâ¨
  449.         mov dword[txt_mov_offs.size],0
  450.         mov eax,dword[mov_x]
  451.         mov edi,txt_mov_offs.size
  452.         stdcall convert_int_to_str,30
  453.         stdcall str_cat, edi,txt_space
  454.         mov eax,dword[mov_y]
  455.         mov edi,txt_buf
  456.         stdcall convert_int_to_str,16
  457.         stdcall str_cat, txt_mov_offs.size,edi
  458.         stdcall str_cat, txt_mov_offs.size,txt_space
  459.         mov eax,dword[mov_z]
  460.         mov edi,txt_buf
  461.         stdcall convert_int_to_str,16
  462.         stdcall str_cat, txt_mov_offs.size,edi
  463.         stdcall str_cat, txt_mov_offs.size,txt_space ;§ ¢¥àè î騩 ¯à®¡¥«
  464.  
  465.         ;à¨á®¢ ­¨¥ ⥪áâ 
  466.         mov ecx,[sc.work_text]
  467.         or  ecx,0x80000000 ;or (1 shl 30)
  468.         mcall SF_DRAW_TEXT, (OT_CAPT_X_COLOR shl 16)+OT_CAPT_Y_COLOR+2,,txt_color
  469.  
  470.         mov edx,txt_curor
  471.         add ebx,115 shl 16
  472.         or  ecx,(1 shl 30)
  473.         mov edi,[sc.work]
  474.         int 0x40
  475.  
  476.         mov edx,txt_mov_offs
  477.         add ebx,115 shl 16
  478.         int 0x40
  479.  
  480.         mov edx,txt_zoom
  481.         add ebx,115 shl 16
  482.         int 0x40
  483.  
  484.         mov edx,txt_n_plane
  485.         add ebx,115 shl 16
  486.         int 0x40
  487.  
  488.         call on_change_color
  489.         ret
  490.  
  491. align 4
  492. on_change_color:
  493. pushad
  494.         mov ebx,((OT_CAPT_X_COLOR+35) shl 16)+16 ;¯® ®á¨ x
  495.         mov ecx,(OT_CAPT_Y_COLOR shl 16)+12 ;¯® ®á¨ y
  496.         mcall SF_DRAW_RECT,,,[v_color]
  497.  
  498.         mov ecx,edx
  499.         mov edx,((OT_CAPT_X_COLOR+55) shl 16)+OT_CAPT_Y_COLOR+2
  500.         mov esi,[sc.work_text]
  501.         add esi,(1 shl 30)
  502.         mov edi,[sc.work]
  503.         mcall SF_DRAW_NUMBER,(1 shl 8)+(6 shl 16)
  504. popad
  505.         ret
  506.  
  507. align 4
  508. key:
  509.         mcall SF_GET_KEY
  510.         jmp still
  511.  
  512.  
  513. align 4
  514. button:
  515.         mcall SF_GET_BUTTON
  516.         cmp ah,3
  517.         jne @f
  518.                 stdcall but_new_file, [open_file_vox]
  519.                 call draw_objects
  520.                 call draw_pok
  521.         @@:
  522.         cmp ah,4
  523.         jne @f
  524.                 call but_open_file
  525.         @@:
  526.         cmp ah,5
  527.         jne @f
  528.                 call but_save_file
  529.         @@:
  530.         cmp ah,6
  531.         jne @f
  532.                 call but_zoom_p
  533.         @@:
  534.         cmp ah,7
  535.         jne @f
  536.                 call but_zoom_m
  537.         @@:
  538.         cmp ah,8
  539.         jne @f
  540.                 call but_3
  541.         @@:
  542.         cmp ah,9
  543.         jne @f
  544.                 call but_4
  545.         @@:
  546.         cmp ah,10
  547.         jne @f
  548.                 call but_plane_inc
  549.         @@:
  550.         cmp ah,11
  551.         jne @f
  552.                 call but_plane_dec
  553.         @@:
  554.         cmp ah,12
  555.         jne @f
  556.                 call but_light
  557.         @@:
  558.         cmp ah,13
  559.         jne @f
  560.                 call but_rend_2_2
  561.         @@:
  562.         cmp ah,14
  563.         jne @f
  564.                 call but_move
  565.         @@:
  566.         cmp ah,15
  567.         jne @f
  568.                 dec dword[mov_x]
  569.                 call draw_pok
  570.         @@:
  571.         cmp ah,16
  572.         jne @f
  573.                 inc dword[mov_x]
  574.                 call draw_pok
  575.         @@:
  576.         cmp ah,17
  577.         jne @f
  578.                 dec dword[mov_y]
  579.                 call draw_pok
  580.         @@:
  581.         cmp ah,18
  582.         jne @f
  583.                 inc dword[mov_y]
  584.                 call draw_pok
  585.         @@:
  586.         cmp ah,19
  587.         jne @f
  588.                 dec dword[mov_z]
  589.                 call draw_pok
  590.         @@:
  591.         cmp ah,20
  592.         jne @f
  593.                 inc dword[mov_z]
  594.                 call draw_pok
  595.         @@:
  596.         cmp ah,1
  597.         jne still
  598. .exit:
  599.         stdcall [buf2d_delete],buf_0
  600.         stdcall [buf2d_delete],buf_0z
  601.         cmp dword[buf_r_img],0
  602.         je @f
  603.                 stdcall [buf2d_delete],buf_r_img
  604.                 stdcall [buf2d_delete],buf_r_z
  605.         @@:
  606.         stdcall [buf2d_vox_brush_delete], buf_vox
  607.         stdcall mem.Free,[image_data_toolbar]
  608.         stdcall mem.Free,[open_file_vox]
  609.         stdcall mem.Free,[moved_file_vox]
  610.         mcall SF_TERMINATE_PROCESS
  611.  
  612. ;¤ ­­ë¥ ¤«ï ¨­¨æ¨ «¨§ æ¨¨ ¢®ªá¥«ì­®£® ®¡ê¥ªâ 
  613. align 4
  614. vox_new_data:
  615.         db 2,0,0,0
  616.         db 0,1,2,3, 4,5,6,7 ;default table
  617.         dd 0 ;null node
  618.  
  619. ;¨­¨æ¨ «¨§ æ¨ï ¢®ªá¥«ì­®£® ®¡ê¥ªâ 
  620. align 4
  621. proc but_new_file uses ecx edi esi, file_data:dword
  622.         mov ecx,vox_offs_data+4
  623.         mov esi,vox_new_data
  624.         mov edi,[file_data]
  625.         cld
  626.         rep movsb
  627.         ret
  628. endp
  629.  
  630. align 4
  631. open_file_vox dd 0 ;㪠§ â¥«ì ­  ®¡« áâì ¤«ï ®âªàëâ¨ï ä ©«®¢
  632. moved_file_vox dd 0
  633.  
  634. align 4
  635. but_open_file:
  636. pushad
  637.         copy_path open_dialog_name,communication_area_default_path,file_name,0
  638.         mov [OpenDialog_data.type],0
  639.         stdcall [OpenDialog_Start],OpenDialog_data
  640.         cmp [OpenDialog_data.status],2
  641.         je @f
  642.                 ;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
  643.                 call but_open_file_cmd_lin
  644.         @@:
  645. popad
  646.         ret
  647.  
  648. align 4
  649. but_open_file_cmd_lin:
  650. pushad
  651.         mov [run_file_70.Function], SSF_READ_FILE
  652.         mov [run_file_70.Position], 0
  653.         mov [run_file_70.Flags], 0
  654.         m2m dword[run_file_70.Count], dword[max_open_file_size]
  655.         m2m [run_file_70.Buffer], [open_file_vox]
  656.         mov byte[run_file_70+20], 0
  657.         mov dword[run_file_70.FileName], openfile_path
  658.         mcall SF_FILE,run_file_70
  659.         cmp ebx,0xffffffff
  660.         je .end_open_file
  661.  
  662.         mcall SF_SET_CAPTION,1,openfile_path
  663.  
  664.         ;---
  665.         mov eax,[open_file_vox]
  666.         movzx eax,byte[eax]
  667.         and eax,0xff ;¡¥à¥¬ ¬ áèâ ¡ ¯® 㬮«ç ­¨î
  668.         mov dword[v_zoom],eax ;¡¥à¥¬ ¬ áèâ ¡ ¯® 㬮«ç ­¨î
  669.         mov dword[cam_x],0
  670.         mov dword[cam_y],0
  671.         mov dword[cam_z],0
  672.         call draw_objects
  673.         .end_open_file:
  674. popad
  675.         ret
  676.  
  677. align 4
  678. but_save_file:
  679.         pushad
  680.                 copy_path open_dialog_name,communication_area_default_path,file_name,0
  681.                 mov [OpenDialog_data.type],1
  682.                 stdcall [OpenDialog_Start],OpenDialog_data
  683.                 cmp [OpenDialog_data.status],2
  684.                 je .end_save_file
  685.                 ;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
  686.  
  687.                 mov eax,dword[v_zoom] ;§ ¤ ¥¬ ¬ áèâ ¡ ¯® 㬮«ç ­¨î
  688.                 mov ebx,[moved_file_vox]
  689.                 mov byte[ebx],al
  690.  
  691.                 stdcall buf2d_vox_obj_get_size, ebx
  692.                 mov dword[run_file_70.Count], eax ;à §¬¥à ä ©« 
  693.                 mov [run_file_70.Function], SSF_CREATE_FILE
  694.                 mov [run_file_70.Position], 0
  695.                 mov [run_file_70.Flags], 0
  696.                 mov ebx, dword[moved_file_vox]
  697.                 mov [run_file_70.Buffer], ebx
  698.                 mov byte[run_file_70+20], 0
  699.                 mov dword[run_file_70.FileName], openfile_path
  700.                 mcall SF_FILE,run_file_70
  701.                 cmp ebx,0xffffffff
  702.                 je .end_save_file
  703.  
  704.                 .end_save_file:
  705.         popad
  706.         ret
  707.  
  708. ;㢥«¨ç¥­¨¥ ¬ áèâ ¡ 
  709. align 4
  710. but_zoom_p:
  711.         cmp dword[v_zoom],10 ;¬ ªá¨¬ «ì­ë© à §¬¥à, ¤® ª®â®à®£® ¬®¦­® 㢥«¨ç¨âì 2^10=1024
  712.         jge @f
  713.                 inc dword[v_zoom]
  714.                 shl dword[n_plane],1
  715.                 push eax
  716.                 mov eax,[v_zoom]
  717.                 cmp eax,[scaled_zoom]
  718.                 jl .end_0
  719.                         push ecx
  720.                         mov ecx,[scaled_zoom]
  721.                         xor eax,eax
  722.                         inc eax
  723.                         shl eax,cl
  724.                         shl dword[cam_x],1
  725.                         shl dword[cam_y],1
  726.                         shl dword[cam_z],1
  727.                         cmp eax,[n_plane]
  728.                         jg .end_1
  729.                                 ;ª®à¥ªâ¨à®¢ª  ¯®«§ã­ª 
  730.                                 sub [n_plane],eax
  731.                                 inc dword[cam_y]
  732.                         .end_1:
  733.                         pop ecx
  734.                 .end_0:
  735.                 pop eax
  736.                 call draw_objects
  737.                 call draw_pok
  738.         @@:
  739.         ret
  740.  
  741. ;㬥­ì襭¨¥ ¬ áèâ ¡ 
  742. align 4
  743. but_zoom_m:
  744.         cmp dword[v_zoom],1
  745.         jl @f
  746.                 dec dword[v_zoom]
  747.                 shr dword[n_plane],1
  748.                 push eax
  749.                 mov eax,[v_zoom]
  750.                 cmp eax,[scaled_zoom]
  751.                 jl .end_0
  752.                         shr dword[cam_x],1
  753.                         shr dword[cam_y],1
  754.                         jnc .end_1
  755.                                 ;ª®à¥ªâ¨à®¢ª  ¯®«§ã­ª 
  756.                                 push ecx
  757.                                 mov ecx,[scaled_zoom]
  758.                                 dec ecx
  759.                                 xor eax,eax
  760.                                 inc eax
  761.                                 shl eax,cl
  762.                                 add [n_plane],eax
  763.                                 pop ecx
  764.                         .end_1:
  765.                         shr dword[cam_z],1
  766.                 .end_0:
  767.                 pop eax
  768.                 call draw_objects
  769.                 call draw_pok
  770.         @@:
  771.         ret
  772.  
  773. align 4
  774. but_3:
  775.         stdcall vox_obj_rot_z, [open_file_vox]
  776.         call draw_objects
  777.         ret
  778.  
  779. align 4
  780. but_4:
  781.         stdcall vox_obj_rot_x, [open_file_vox]
  782.         call draw_objects
  783.         ret
  784.  
  785. ;ᤢ¨£ ¥¬ ¯«®áª®áâì á१ 
  786. align 4
  787. but_plane_inc:
  788. push eax ecx
  789.         inc dword[n_plane]
  790.         mov eax,[v_zoom]
  791.         cmp eax,[scaled_zoom]
  792.         jle .end_0
  793.                 ;¯à®¨á室¨â ¬ áèâ ¡¨à®¢ ­¨¥
  794.                 mov ecx,[scaled_zoom]
  795.                 xor eax,eax
  796.                 inc eax
  797.                 shl eax,cl
  798.                 cmp eax,[n_plane]
  799.                 jg @f
  800.                         mov dword[n_plane],0
  801.                         inc dword[cam_y] ;¯¥à¥å®¤¨¬ ¢ á®á¥¤­¨© ªã¡
  802.                         neg ecx
  803.                         ;inc ecx
  804.                         add ecx,[v_zoom]
  805.                         xor eax,eax
  806.                         inc eax
  807.                         shl eax,cl
  808.                         cmp eax,[cam_y]
  809.                         jg @f
  810.                                 mov dword[cam_y],0 ;§ æ¨ª«¨¢ ¥¬ ¥á«¨ ¢ë«¥§«¨ §  ¯à¥¤¥«ë ¯®á«¥¤­¥£® ªã¡ 
  811.                 @@:
  812.                 jmp .end_1
  813.         .end_0:
  814.                 ;¬ áèâ ¡¨à®¢ ­¨¥ ­¥ ¯à®¨á室¨â
  815.                 mov ecx,eax
  816.                 xor eax,eax
  817.                 inc eax
  818.                 shl eax,cl
  819.                 cmp eax,[n_plane]
  820.                 jg .end_1
  821.                         mov dword[n_plane],0
  822.         .end_1:
  823.         call draw_objects
  824.         call draw_pok
  825. pop ecx eax
  826.         ret
  827.  
  828. ;ᤢ¨£ ¥¬ ¯«®áª®áâì á१ 
  829. align 4
  830. but_plane_dec:
  831.         dec dword[n_plane]
  832.         cmp dword[n_plane],0
  833.         jge .end_f
  834. push eax ecx
  835.         mov ecx,[scaled_zoom]
  836.         xor eax,eax
  837.         inc eax
  838.         shl eax,cl
  839.         dec eax
  840.         mov dword[n_plane],eax
  841.  
  842.         mov eax,[v_zoom]
  843.         cmp eax,[scaled_zoom]
  844.         jle .end_0
  845.                 ;¯à®¨á室¨â ¬ áèâ ¡¨à®¢ ­¨¥
  846.                 dec dword[cam_y] ;¯¥à¥å®¤¨¬ ¢ á®á¥¤­¨© ªã¡
  847.                 cmp dword[cam_y],0
  848.                 jge .end_0
  849.  
  850.                 mov ecx,eax
  851.                 sub ecx,[scaled_zoom]
  852.                 xor eax,eax
  853.                 inc eax
  854.                 shl eax,cl
  855.                 dec eax
  856.                 mov dword[cam_y],eax ;¥á«¨ ­®¬¥à ªã¡  ®ª § «áï ¬¥­ìè¥ 0 ¨á¯à ¢«ï¥¬ ­  ¬ ªá¨¬ «ì­®¥ §­ ç¥­¨¥
  857.         .end_0:
  858. pop ecx eax
  859.         .end_f:
  860.         call draw_objects
  861.         call draw_pok
  862.         ret
  863.  
  864. align 4
  865. but_light:
  866.         xor dword[mode_light],1
  867.         call draw_objects
  868.         ret
  869.  
  870. align 4
  871. but_rend_2_2:
  872. push edi
  873.         cmp dword[buf_r_img],0
  874.         jne @f
  875.                 ;ᮧ¤ ­¨¥ ¡ãä¥à  ¤«ï ७¤¥à 
  876.                 push ecx esi
  877.                 mov edi,buf_r_img
  878.                 mov esi,buf_0
  879.                 mov ecx,BUF_STRUCT_SIZE
  880.                 cld
  881.                 rep movsb ;ª®¯¨à㥬 ¢á¥ ¯ à ¬¥âàë á ®á­®¢­®£® ¡ãä¥à 
  882.                 mov edi,buf_r_img
  883.                 mov buf2d_data,0
  884.                 shl buf2d_w,1 ;㢥«¨ç¨¢ ¥¬ à §¬¥à ¡ãä¥à 
  885.                 shl buf2d_h,1
  886.                 stdcall [buf2d_create],buf_r_img
  887.  
  888.                 mov edi,buf_r_z
  889.                 mov esi,buf_0z
  890.                 mov ecx,BUF_STRUCT_SIZE
  891.                 cld
  892.                 rep movsb ;ª®¯¨à㥬 ¢á¥ ¯ à ¬¥âàë á ®á­®¢­®£® ¡ãä¥à 
  893.                 mov edi,buf_r_z
  894.                 mov buf2d_data,0
  895.                 shl buf2d_w,1 ;㢥«¨ç¨¢ ¥¬ à §¬¥à ¡ãä¥à 
  896.                 shl buf2d_h,1
  897.                 stdcall [buf2d_create],buf_r_z
  898.                 pop esi ecx
  899.         @@:
  900.         stdcall [buf2d_clear], buf_r_img, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
  901.         stdcall [buf2d_clear], buf_r_z, 0 ;ç¨á⨬ ¡ãä¥à
  902.  
  903.         push eax ebx ecx
  904.                 mov eax,[v_zoom]
  905.                 cmp eax,[scaled_zoom]
  906.                 jle .end_scaled
  907.                         ;७¤¥à 㢥«¨ç¥­­®© ç á⨠®¡ê¥ªâ 
  908.                         mov ebx,[scaled_zoom]
  909.                         sub eax,ebx
  910.                         inc ebx
  911.                         stdcall [buf2d_vox_obj_draw_3g_scaled], buf_r_img, buf_r_z, buf_vox,\
  912.                                 [open_file_vox], 0,0, 0, ebx, [cam_x],[cam_y],[cam_z],eax, [sc.work_graph]
  913.                         bt dword[mode_light],0
  914.                         jnc @f
  915.                                 stdcall [buf2d_vox_obj_draw_3g_shadows], buf_r_img, buf_r_z, buf_vox, 0,0, 0, ebx, 3
  916.                         @@:
  917.                         xor ebx,ebx
  918.                         xor ecx,ecx
  919.                         mov edi,buf_r_img
  920.                         stdcall [buf2d_img_hdiv2], edi
  921.                         shr buf2d_h,1
  922.                         stdcall [buf2d_img_wdiv2], edi
  923.                         shr buf2d_w,1
  924.                         jmp .show
  925.                 .end_scaled:
  926.  
  927.                 inc eax
  928.                 stdcall [buf2d_vox_obj_draw_3g], buf_r_img, buf_r_z, buf_vox, [open_file_vox], 0,0, 0, eax
  929.                 stdcall [buf2d_vox_obj_draw_1g], buf_r_img, buf_r_z, [open_file_vox], 0,0, eax
  930.                 bt dword[mode_light],0
  931.                 jnc @f
  932.                         stdcall [buf2d_vox_obj_draw_3g_shadows], buf_r_img, buf_r_z, buf_vox, 0,0, 0, eax, 3
  933.                 @@:
  934.  
  935.                 mov edi,buf_r_img
  936.                 stdcall [buf2d_img_hdiv2], edi
  937.                 shr buf2d_h,1
  938.                 stdcall [buf2d_img_wdiv2], edi
  939.                 shr buf2d_w,1
  940.  
  941.                 stdcall [buf2d_vox_obj_get_img_w_3g], buf_vox,[v_zoom]
  942.                 mov ebx,[buf_0.w]
  943.                 sub ebx,eax
  944.                 shr ebx,1 ;ebx - ¤«ï 業â஢ª¨ ¬ «¥­ìª¨å ¨§®¡à ¦¥­¨© ¯® £®à¨§®­â «¨
  945.                 stdcall [buf2d_vox_obj_get_img_h_3g], buf_vox,[v_zoom]
  946.                 cmp eax,[buf_0.h]
  947.                 jg @f
  948.                         mov ecx,[buf_0.h]
  949.                         sub ecx,eax
  950.                         shr ecx,1 ;ecx - ¤«ï 業â஢ª¨ ¬ «¥­ìª¨å ¨§®¡à ¦¥­¨© ¯® ¢¥à⨪ «¨
  951.                 @@:
  952.                 .show:
  953.                 stdcall [buf2d_bit_blt], buf_0, ebx,ecx, edi
  954.                 shl buf2d_h,1
  955.                 shl buf2d_w,1
  956.         pop ecx ebx eax
  957. pop edi
  958.         stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
  959.         ret
  960.  
  961. align 4
  962. but_move:
  963. push eax
  964.         stdcall but_new_file, [moved_file_vox]
  965.         mov eax,[v_zoom]
  966.         stdcall buf_vox_obj_recreat, [open_file_vox], [moved_file_vox],\
  967.                 [mov_x],[mov_y],[mov_z], eax
  968.  
  969.         stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
  970.         stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à
  971.         cmp eax,[scaled_zoom]
  972.         jle @f
  973.                 mov eax,[scaled_zoom]
  974.         @@:
  975.         stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, buf_vox, [moved_file_vox],              0,0,0, eax
  976. pop eax
  977.         stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
  978.         ret
  979.  
  980. ;description:
  981. ; äã­ªæ¨ï à¨áãîé ï ¢®ªá¥«ì­ë© ®¡ê¥ªâ (¢¨¤­® 3 £à ­¨)
  982. ;input:
  983. ; v_obj - ¢®ªá¥«ì­ë© ®¡ê¥ªâ
  984. ; k_scale - ª®íä. ¤«ï ¬ áèâ ¡¨à®¢ ­¨ï ¨§®¡à ¦¥­¨ï
  985. align 4
  986. proc buf_vox_obj_recreat, v_obj:dword, obj_n:dword,\
  987. coord_x:dword, coord_y:dword, coord_z:dword, k_scale:dword
  988. pushad
  989.         mov edi,[v_obj]
  990.         mov ecx,[k_scale]
  991.         mov ebx,[coord_x]
  992.         mov edx,[coord_y]
  993.         add edi,vox_offs_data
  994.         mov esi,[coord_z]
  995.         stdcall vox_go_in_node, [v_obj], [obj_n]
  996. popad
  997.         ret
  998. endp
  999.  
  1000. ;input:
  1001. ; ebx - coord_x
  1002. ; edx - coord_y
  1003. ; esi - coord_z
  1004. ; ecx - ã஢¥­ì ⥪ã襣® 㧫 
  1005. ; edi - 㪠§ â¥«ì ­  ¤ ­­ë¥ ¢®ªá¥«ì­®£® ®¡ê¥ªâ 
  1006. align 4
  1007. proc vox_go_in_node, v_obj:dword, obj_n:dword
  1008.         cmp byte[edi+3],0 ;ᬮâਬ ¥áâì «¨ ¯®¤¤¥à¥¢ìï
  1009.         je .sub_trees
  1010.                 ;४ãàᨢ­ë© ¯¥à¥¡®à ¯®¤¤¥à¥¢ì¥¢
  1011.                 push eax edx
  1012.  
  1013.                 ;¯à®à¨á®¢ª  à ¬ª¨ ¥á«¨ à §¬¥à 㧫  = 1
  1014.                 cmp ecx,0
  1015.                 jne @f
  1016.                         stdcall buf2d_vox_obj_create_node, [obj_n], ebx,edx,esi, [v_zoom], [edi]
  1017.                 @@:
  1018.  
  1019.                 ;¢å®¤ ¢­ãâàì 㧫 
  1020.                 dec ecx
  1021.                 mov ah,byte[edi+3]
  1022.                 add edi,4
  1023.                 mov al,8
  1024.                 .cycle:
  1025.                         bt ax,8 ;â¥áâ¨à㥬 ⮫쪮 ah
  1026.                         jnc .c_next
  1027.                                 push ebx edx esi
  1028.                                 stdcall vox_corect_coords, [v_obj]
  1029.                                 stdcall vox_go_in_node, [v_obj], [obj_n]
  1030.                                 pop esi edx ebx
  1031.                         .c_next:
  1032.                         shr ah,1
  1033.                         dec al
  1034.                         jnz .cycle
  1035.  
  1036.                 ;¢ë室 ¨§ 㧫 
  1037.                 inc ecx
  1038.                 pop edx eax
  1039.  
  1040.                 jmp .end_f
  1041.         .sub_trees:
  1042.                 ;à¨á㥬 㧥«
  1043.                 cmp ecx,0
  1044.                 jne @f
  1045.                         stdcall buf2d_vox_obj_create_node, [obj_n], ebx,edx,esi, [v_zoom], [edi]
  1046.                 @@:
  1047.  
  1048.                 add edi,4
  1049.         .end_f:
  1050.         ret
  1051. endp
  1052.  
  1053. ;description:
  1054. ;äã­ªæ¨ï ¤«ï ª®à¥ªâ¨à®¢ª¨ ª®®à¤¨­ â
  1055. ;­ ¯à ¢«¥­¨ï ®á¥© ª®®à¤¨­ â ¢ ¢®ªá¥«¥:
  1056. ;*z
  1057. ;|
  1058. ;+
  1059. ;  * y
  1060. ; /
  1061. ;+
  1062. ; \
  1063. ;  * x
  1064. ;input:
  1065. ;  al - ­®¬¥à 㧫  ¢ ¤¥à¥¢¥ (®â 1 ¤® 8)
  1066. ; ebx - ª®®à¤¨­ â  x
  1067. ; edx - ª®®à¤¨­ â  y
  1068. ; esi - ª®®à¤¨­ â  z
  1069. ; ecx - ã஢¥­ì ⥪ã襣® 㧫 
  1070. ;output:
  1071. ; ebx - ­®¢ ï ª®®à¤¨­ â  x
  1072. ; edx - ­®¢ ï ª®®à¤¨­ â  y
  1073. ; esi - ­®¢ ï ª®®à¤¨­ â  z
  1074. align 4
  1075. proc vox_corect_coords, v_obj:dword
  1076.         cmp ecx,0
  1077.         jl .end_f ;¤«ï ã᪮७¨ï ®âà¨á®¢ª¨
  1078.  
  1079.         push eax edi
  1080.         and eax,15 ;¢ë¤¥«ï¥¬ ­®¬¥à 㧫  ¢ ¤¥à¥¢¥
  1081.         mov edi,[v_obj]
  1082.         add edi,vox_offs_tree_table
  1083.         add edi,8
  1084.         sub edi,eax
  1085.  
  1086.         xor eax,eax
  1087.         inc eax
  1088.         cmp ecx,1
  1089.         jl .no_scale ;¢® ¨§¡¥¦ ­¨¥ § æ¨ª«¨¢ ­¨ï
  1090.                 shl eax,cl
  1091.         .no_scale:
  1092.  
  1093.         bt word[edi],0 ;test voxel coord x
  1094.         jnc @f
  1095.                 add ebx,eax
  1096.         @@:
  1097.         bt word[edi],1 ;test voxel coord y
  1098.         jnc @f
  1099.                 add edx,eax
  1100.         @@:
  1101.         bt word[edi],2 ;test voxel coord z
  1102.         jnc @f
  1103.                 add esi,eax
  1104.         @@:
  1105.         pop edi eax
  1106.         .end_f:
  1107.         ret
  1108. endp
  1109.  
  1110. align 4
  1111. v_zoom dd 3 ;⥪ã騩 ¬ áèâ ¡
  1112. v_cur_x dd 0 ;ª®®à¤¨­ â  ªãàá®à  x
  1113. v_cur_y dd 0 ;ª®®à¤¨­ â  ªãàá®à  y (­® ®áì ¢ ®¡ê¥ªâ¥ z)
  1114. n_plane dd 0 ;¯«®áª®áâì á¥ç¥­¨ï
  1115. v_color dd 0xff ;梥⠪ à ­¤ è 
  1116. mode_light dd 1 ;०¨¬ ®á¢¥é¥­¨ï
  1117. cam_x dd 0
  1118. cam_y dd 0
  1119. cam_z dd 0
  1120. ;ᤢ¨£¨ ®¡ê¥ªâ  ¯à¨ ¯¥à¥á®§¤ ­¨¨ (¯¥à¥¤¢¨¦¥­¨¨)
  1121. mov_x dd 0
  1122. mov_y dd 0
  1123. mov_z dd 0
  1124. scaled_zoom dd 5 ;¬ áèâ ¡ ¯®á«¥ ª®â®à®£® ­ ç¨­ ¥âáï à¨á®¢ ­¨¥ ç á⨠¨§®¡à ¦¥­¨ï
  1125. tile_size dd ? ;à §¬¥à ª¢ ¤à â¨ª  ­  ¯«®áª®á⨠á á¥ç¥­¨¥¬
  1126. max_open_file_size dd ?
  1127. brush_w dd 5 ;è¨à¨­  ª¨áâ¨
  1128. brush_h dd 5 ;¢ëá®â  ª¨áâ¨
  1129. brush_data dd 1 shl 31,1 shl 30,1 shl 30,1 shl 30,1 shl 31
  1130. dd 1 shl 30,1 shl 30,1 shl 30,1 shl 30,1 shl 30
  1131. dd 1 shl 30,1 shl 30,1 shl 30,1 shl 30,1 shl 30
  1132. dd 1 shl 30,1 shl 30,1 shl 30,1 shl 30,1 shl 30
  1133. dd 1 shl 31,1 shl 30,1 shl 30,1 shl 30,1 shl 31
  1134. rd 999 ;32*32-25
  1135.  
  1136. txt_zoom db 'Œ áèâ ¡:',0
  1137. txt_curor: db 'Šãàá®à: '
  1138. .size: rb 10
  1139. txt_n_plane db '‘¥ç¥­¨¥:',0
  1140. txt_color db '–¢¥â:',0
  1141. txt_mov_offs: db '‘¬¥é¥­¨¥: '
  1142. .size: rb 30
  1143. txt_mull db '*',0
  1144. txt_space db ' ',0
  1145. txt_buf rb 16
  1146.  
  1147. align 4
  1148. draw_objects:
  1149.         stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
  1150.         stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à
  1151.         stdcall [buf2d_clear], buf_pl, [buf_pl.color] ;ç¨á⨬ ¡ãä¥à
  1152.  
  1153.         push eax ebx ecx
  1154.         stdcall [buf2d_vox_obj_get_img_w_3g], buf_vox,[v_zoom]
  1155.         mov ebx,[buf_0.w]
  1156.         sub ebx,eax
  1157.         shr ebx,1 ;ebx - ¤«ï 業â஢ª¨ ¬ «¥­ìª¨å ¨§®¡à ¦¥­¨© ¯® £®à¨§®­â «¨
  1158.  
  1159.         xor ecx,ecx
  1160.         stdcall [buf2d_vox_obj_get_img_h_3g], buf_vox,[v_zoom]
  1161.         cmp eax,[buf_0.h]
  1162.         jg @f
  1163.                 mov ecx,[buf_0.h]
  1164.                 sub ecx,eax
  1165.                 shr ecx,1 ;ecx - ¤«ï 業â஢ª¨ ¬ «¥­ìª¨å ¨§®¡à ¦¥­¨© ¯®
  1166.         @@:
  1167.  
  1168.         mov eax,[v_zoom]
  1169.         cmp eax,[scaled_zoom]
  1170.         jg @f
  1171.                 ;®¡ëç­ë© ०¨¬ ¨§®¡à ¦¥­¨ï
  1172.                 stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, buf_vox,\
  1173.                         [open_file_vox], ebx,ecx, 0, eax
  1174.                 stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox],\
  1175.                         OT_MAP_X,OT_MAP_Y,[tile_size], eax, [n_plane], [sc.work_graph]
  1176.                 stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_0z,\
  1177.                         [open_file_vox], 0,0, eax
  1178.                 bt dword[mode_light],0
  1179.                 jnc .end_1
  1180.                         stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, buf_vox, ebx,ecx, 0, eax, 3
  1181.                 .end_1:
  1182.                 jmp .end_0
  1183.         @@:
  1184.                 ;०¨¬ ¬ áèâ ¡¨à®¢ ­¨ï ¨§®¡à ¦¥­¨ï
  1185.                 sub eax,[scaled_zoom]
  1186.                 stdcall [buf2d_vox_obj_draw_3g_scaled], buf_0, buf_0z, buf_vox,\
  1187.                         [open_file_vox], 0,0, 0, [scaled_zoom], [cam_x],[cam_y],[cam_z],eax, [sc.work_graph] ;scroll -> 2^eax
  1188.                 stdcall [buf2d_vox_obj_draw_pl_scaled], buf_pl, [open_file_vox],\
  1189.                         OT_MAP_X,OT_MAP_Y,[tile_size], [scaled_zoom], [n_plane], [sc.work_graph],[cam_x],[cam_y],[cam_z],eax
  1190.                 bt dword[mode_light],0
  1191.                 jnc .end_2
  1192.                         stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, buf_vox, 0,0, 0, [scaled_zoom], 3
  1193.                 .end_2:
  1194.         .end_0:
  1195.         pop ecx ebx eax
  1196.  
  1197.         call draw_vox_cursor
  1198.         stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
  1199.         stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
  1200.         .end_f:
  1201.         ret
  1202.  
  1203. ;à¨á®¢ ­¨¥ ªãàá®à 
  1204. align 4
  1205. draw_vox_cursor:
  1206. pushad
  1207.         mov ecx,[v_zoom]
  1208.         cmp ecx,[scaled_zoom]
  1209.         jle @f
  1210.                 mov ecx,[scaled_zoom]
  1211.         @@:
  1212.         xor edx,edx
  1213.         inc edx
  1214.         shl edx,cl
  1215.  
  1216.         mov eax,[v_cur_x]
  1217.         cmp eax,edx
  1218.         jge .end_f ;ªãàá®à §  ¯à¥¤¥« ¬¨ ¯®«ï
  1219.         mov edi,[tile_size]
  1220.         imul eax,edi
  1221.         add eax,OT_MAP_X
  1222.         mov ebx,edx
  1223.         dec ebx
  1224.         sub ebx,[v_cur_y]
  1225.         imul ebx,edi
  1226.         add ebx,OT_MAP_Y
  1227.         inc eax
  1228.         inc ebx
  1229.         sub edi,2
  1230.         stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,edi,[sc.work_graph]
  1231.         dec ebx
  1232.         add edi,2
  1233.  
  1234.         ;£®à¨§®­â «ì­ë¥ «¨­¨¨
  1235.         sub eax,2
  1236.         mov ecx,edi
  1237.         imul edi,edx
  1238.         shr ecx,1
  1239.         add ebx,ecx ;業â஢ª  ¯® á¥à¥¤¨­¥ ª«¥âª¨
  1240.         mov ecx,OT_MAP_X
  1241.         add edi,ecx
  1242.         stdcall [buf2d_line], buf_pl, ecx,ebx, eax,ebx,[sc.work_graph]
  1243.         add eax,[tile_size]
  1244.         inc eax
  1245.         cmp eax,edi
  1246.         jge @f ;¥á«¨ ªãàá®à ­  ªà î ¯®«ï
  1247.                 dec edi
  1248.                 stdcall [buf2d_line], buf_pl, eax,ebx, edi,ebx,[sc.work_graph]
  1249.         @@:
  1250.  
  1251.         .end_f:
  1252. popad
  1253.         ret
  1254.  
  1255.  
  1256. ;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
  1257. align 4
  1258. OpenDialog_data:
  1259. .type                   dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
  1260. .procinfo               dd procinfo     ;+4
  1261. .com_area_name          dd communication_area_name      ;+8
  1262. .com_area               dd 0    ;+12
  1263. .opendir_path           dd plugin_path  ;+16
  1264. .dir_default_path       dd default_dir ;+20
  1265. .start_path             dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
  1266. .draw_window            dd draw_window  ;+28
  1267. .status                 dd 0    ;+32
  1268. .openfile_path          dd openfile_path        ;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
  1269. .filename_area          dd filename_area        ;+40
  1270. .filter_area            dd Filter
  1271. .x:
  1272. .x_size                 dw 420 ;+48 ; Window X size
  1273. .x_start                dw 10 ;+50 ; Window X position
  1274. .y:
  1275. .y_size                 dw 320 ;+52 ; Window y size
  1276. .y_start                dw 10 ;+54 ; Window Y position
  1277.  
  1278. default_dir db '/rd/1',0
  1279.  
  1280. communication_area_name:
  1281.         db 'FFFFFFFF_open_dialog',0
  1282. open_dialog_name:
  1283.         db 'opendial',0
  1284. communication_area_default_path:
  1285.         db '/rd/1/File managers/',0
  1286.  
  1287. Filter:
  1288. dd Filter.end - Filter ;.1
  1289. .1:
  1290. db 'VOX',0
  1291. .end:
  1292. db 0
  1293.  
  1294.  
  1295.  
  1296. head_f_i:
  1297. head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
  1298.  
  1299. system_dir_0 db '/sys/lib/'
  1300. lib_name_0 db 'proc_lib.obj',0
  1301. err_message_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
  1302. err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
  1303.  
  1304. system_dir_1 db '/sys/lib/'
  1305. lib_name_1 db 'libimg.obj',0
  1306. err_message_found_lib_1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
  1307. err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
  1308.  
  1309. system_dir_2 db '/sys/lib/'
  1310. lib_name_2 db 'buf2d.obj',0
  1311. err_msg_found_lib_2 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
  1312. err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
  1313.  
  1314. system_dir_3 db '/sys/lib/'
  1315. lib_name_3 db 'libini.obj',0
  1316. err_msg_found_lib_3 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libini.obj',39,0
  1317. err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libini',39,0
  1318.  
  1319. l_libs_start:
  1320.         lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
  1321.                 err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
  1322.         lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
  1323.                 err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
  1324.         lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\
  1325.                 err_msg_found_lib_2,head_f_l,import_buf2d,err_msg_import_2,head_f_i
  1326.         lib_3 l_libs lib_name_3, sys_path, library_path, system_dir_3,\
  1327.                 err_msg_found_lib_3,head_f_l,import_libini,err_msg_import_3,head_f_i
  1328. l_libs_end:
  1329.  
  1330. align 4
  1331. import_libimg:
  1332.         dd alib_init1
  1333.         img_is_img  dd aimg_is_img
  1334.         img_info    dd aimg_info
  1335.         img_from_file dd aimg_from_file
  1336.         img_to_file dd aimg_to_file
  1337.         img_from_rgb dd aimg_from_rgb
  1338.         img_to_rgb  dd aimg_to_rgb
  1339.         img_to_rgb2 dd aimg_to_rgb2
  1340.         img_decode  dd aimg_decode
  1341.         img_encode  dd aimg_encode
  1342.         img_create  dd aimg_create
  1343.         img_destroy dd aimg_destroy
  1344.         img_destroy_layer dd aimg_destroy_layer
  1345.         img_count   dd aimg_count
  1346.         img_lock_bits dd aimg_lock_bits
  1347.         img_unlock_bits dd aimg_unlock_bits
  1348.         img_flip    dd aimg_flip
  1349.         img_flip_layer dd aimg_flip_layer
  1350.         img_rotate  dd aimg_rotate
  1351.         img_rotate_layer dd aimg_rotate_layer
  1352.         img_draw    dd aimg_draw
  1353.  
  1354.         dd 0,0
  1355.         alib_init1   db 'lib_init',0
  1356.         aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
  1357.         aimg_info    db 'img_info',0
  1358.         aimg_from_file db 'img_from_file',0
  1359.         aimg_to_file db 'img_to_file',0
  1360.         aimg_from_rgb db 'img_from_rgb',0
  1361.         aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
  1362.         aimg_to_rgb2 db 'img_to_rgb2',0
  1363.         aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
  1364.         aimg_encode  db 'img_encode',0
  1365.         aimg_create  db 'img_create',0
  1366.         aimg_destroy db 'img_destroy',0
  1367.         aimg_destroy_layer db 'img_destroy_layer',0
  1368.         aimg_count   db 'img_count',0
  1369.         aimg_lock_bits db 'img_lock_bits',0
  1370.         aimg_unlock_bits db 'img_unlock_bits',0
  1371.         aimg_flip    db 'img_flip',0
  1372.         aimg_flip_layer db 'img_flip_layer',0
  1373.         aimg_rotate  db 'img_rotate',0
  1374.         aimg_rotate_layer db 'img_rotate_layer',0
  1375.         aimg_draw    db 'img_draw',0
  1376.  
  1377. align 4
  1378. proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
  1379.         OpenDialog_Init dd aOpenDialog_Init
  1380.         OpenDialog_Start dd aOpenDialog_Start
  1381. dd 0,0
  1382.         aOpenDialog_Init db 'OpenDialog_init',0
  1383.         aOpenDialog_Start db 'OpenDialog_start',0
  1384.  
  1385. align 4
  1386. import_buf2d:
  1387.         init dd sz_init
  1388.         buf2d_create dd sz_buf2d_create
  1389.         buf2d_create_f_img dd sz_buf2d_create_f_img
  1390.         buf2d_clear dd sz_buf2d_clear
  1391.         buf2d_draw dd sz_buf2d_draw
  1392.         buf2d_delete dd sz_buf2d_delete
  1393.         buf2d_line dd sz_buf2d_line
  1394.         buf2d_rect_by_size dd sz_buf2d_rect_by_size
  1395.         buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
  1396.         buf2d_circle dd sz_buf2d_circle
  1397.         buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
  1398.         buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
  1399.         buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
  1400.         buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
  1401.         buf2d_bit_blt dd sz_buf2d_bit_blt
  1402.         buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
  1403.         buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
  1404.         buf2d_curve_bezier dd sz_buf2d_curve_bezier
  1405.         buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
  1406.         buf2d_draw_text dd sz_buf2d_draw_text
  1407.         buf2d_crop_color dd sz_buf2d_crop_color
  1408.         buf2d_offset_h dd sz_buf2d_offset_h
  1409.         buf2d_flood_fill dd sz_buf2d_flood_fill
  1410.         buf2d_set_pixel dd sz_buf2d_set_pixel
  1411.         buf2d_get_pixel dd sz_buf2d_get_pixel
  1412.         buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
  1413.         buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
  1414.         buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
  1415.         buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
  1416.         buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
  1417.         buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
  1418.         buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
  1419.         buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
  1420.         buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
  1421.         buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
  1422.  
  1423.         dd 0,0
  1424.         sz_init db 'lib_init',0
  1425.         sz_buf2d_create db 'buf2d_create',0
  1426.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  1427.         sz_buf2d_clear db 'buf2d_clear',0
  1428.         sz_buf2d_draw db 'buf2d_draw',0
  1429.         sz_buf2d_delete db 'buf2d_delete',0
  1430.         sz_buf2d_line db 'buf2d_line',0
  1431.         sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
  1432.         sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
  1433.         sz_buf2d_circle db 'buf2d_circle',0
  1434.         sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
  1435.         sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
  1436.         sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
  1437.         sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
  1438.         sz_buf2d_bit_blt db 'buf2d_bit_blt',0
  1439.         sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
  1440.         sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
  1441.         sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
  1442.         sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
  1443.         sz_buf2d_draw_text db 'buf2d_draw_text',0
  1444.         sz_buf2d_crop_color db 'buf2d_crop_color',0
  1445.         sz_buf2d_offset_h db 'buf2d_offset_h',0
  1446.         sz_buf2d_flood_fill db 'buf2d_flood_fill',0
  1447.         sz_buf2d_set_pixel db 'buf2d_set_pixel',0
  1448.         sz_buf2d_get_pixel db 'buf2d_get_pixel',0
  1449.         sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
  1450.         sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
  1451.         sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
  1452.         sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
  1453.         sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
  1454.         sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
  1455.         sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
  1456.         sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
  1457.         sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
  1458.         sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
  1459.  
  1460. align 4
  1461. import_libini:
  1462.         dd alib_init2
  1463.         ini_get_str   dd aini_get_str
  1464.         ini_get_int   dd aini_get_int
  1465.         ini_get_color dd aini_get_color
  1466. dd 0,0
  1467.         alib_init2     db 'lib_init',0
  1468.         aini_get_str   db 'ini_get_str',0
  1469.         aini_get_int   db 'ini_get_int',0
  1470.         aini_get_color db 'ini_get_color',0
  1471.  
  1472. mouse_dd dd 0x0
  1473. sc system_colors
  1474.  
  1475. align 16
  1476. procinfo process_information
  1477.  
  1478. ;¡ãä¥à ®á­®¢­®£® ¨§®¡à ¦¥­¨ï
  1479. align 4
  1480. buf_0: dd 0 ;㪠§ â¥«ì ­  ¤a­ë¥ ¨§®¡à ¦¥­¨ï
  1481. .l: dw 5 ;+4 left
  1482. .t: dw 45 ;+6 top
  1483. .w: dd 192+6 ;+8 w
  1484. .h: dd 224+7 ;+12 h
  1485. .color: dd 0xffffff ;+16 color
  1486.         db 24 ;+20 bit in pixel
  1487.  
  1488. ;¡ãä¥à £«ã¡¨­ë ®á­®¢­®£® ¨§®¡à ¦¥­¨ï
  1489. align 4
  1490. buf_0z: dd 0
  1491.         dw 0 ;+4 left
  1492.         dw 0 ;+6 top
  1493. .w: dd 192+6 ;+8 w
  1494. .h: dd 224+7 ;+12 h
  1495. .color: dd 0 ;+16 color
  1496.         db 32 ;+20 bit in pixel
  1497.  
  1498. ;¡ãä¥à ¤«ï à¨á®¢ ­¨ï á१  ®¡ê¥ªâ 
  1499. align 4
  1500. buf_pl: dd 0
  1501. .l: dw 15+192+6 ;+4 left
  1502. .t: dw 45 ;+6 top
  1503. .w: dd 320 ;+8 w
  1504. .h: dd 330 ;+12 h
  1505. .color: dd 0xffffff ;+16 color
  1506.         db 24 ;+20 bit in pixel
  1507.  
  1508. ;¡ãä¥à ¤«ï ã«ãç襭®£® ७¤¥à 
  1509. align 4
  1510. buf_r_img:
  1511.         rb BUF_STRUCT_SIZE
  1512. align 4
  1513. buf_r_z:
  1514.         rb BUF_STRUCT_SIZE
  1515.  
  1516. align 4
  1517. cursor_pointer dd 0 ;㪠§ â¥«ì ­  ¤ ­­ë¥ ¤«ï ªãàá®à 
  1518.  
  1519.  
  1520. ;¤ ­­ë¥ ¤«ï ᮧ¤ ­¨ï ¬¨­¨¬ «ì­®£® ¥¤¨­¨ç­®£® ¢®ªá¥«ï
  1521. align 4
  1522. vox_6_7_z:
  1523. dd 0,0,1,1,0,0,\
  1524.    0,2,2,2,2,0,\
  1525.    2,2,2,2,2,2,\
  1526.    2,3,2,2,3,2,\
  1527.    2,3,3,3,3,2,\
  1528.    0,3,3,3,3,0,\
  1529.    0,0,3,3,0,0
  1530.  
  1531. align 4
  1532. buf_vox:
  1533.         db 6,7,4,3 ;w,h,h_osn,n
  1534.         rb BUF_STRUCT_SIZE*(3+1)
  1535.  
  1536. align 16
  1537. i_end:
  1538.         wnd_s_pos: ;¬¥áâ® ¤«ï ­ áâ஥ª áâ à⮢®© ¯®§¨æ¨¨ ®ª­ 
  1539.                 rq 0
  1540.         rb 4096 ;2048
  1541. stacktop:
  1542.         sys_path rb 1024
  1543.         file_name:
  1544.                 rb 1024 ;4096
  1545.         library_path rb 1024
  1546.         plugin_path rb 1024 ;4096
  1547.         openfile_path rb 1024 ;4096
  1548.         filename_area rb 256
  1549. mem:
  1550.