Subversion Repositories Kolibri OS

Rev

Rev 8083 | Rev 9568 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8083 Rev 8255
1
use32
1
use32
2
	org 0
2
	org 0
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
4
	dd 1, start, i_end, mem, stacktop, file_name, sys_path
4
	dd 1, start, i_end, mem, stacktop, file_name, sys_path
5
 
5
 
6
version_edit equ 1
6
version_edit equ 1
7
 
7
 
8
include '../../macros.inc'
8
include '../../macros.inc'
9
include '../../proc32.inc'
9
include '../../proc32.inc'
10
include '../../KOSfuncs.inc'
10
include '../../KOSfuncs.inc'
11
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
11
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
12
include '../../load_img.inc'
12
include '../../load_img.inc'
-
 
13
include '../../load_lib.mac'
13
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
14
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
14
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
15
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
15
include 'lang.inc'
16
include 'lang.inc'
16
include 'info_fun_float.inc'
17
include 'info_fun_float.inc'
17
include 'info_menu.inc'
18
include 'info_menu.inc'
18
include 'data.inc'
19
include 'data.inc'
19
include 'convert_stl_3ds.inc'
20
include 'convert_stl_3ds.inc'
20
 
21
 
21
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
22
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
22
 
23
 
23
ID_ICON_CHUNK_MAIN equ 0 ;¨ª®­ª  £« ¢­®£® ¡«®ª 
24
ID_ICON_CHUNK_MAIN equ 0 ;¨ª®­ª  £« ¢­®£® ¡«®ª 
24
ID_ICON_CHUNK_NOT_FOUND equ 1 ;¨ª®­ª  ­¥ ¨§¢¥áâ­®£® ¡«®ª 
25
ID_ICON_CHUNK_NOT_FOUND equ 1 ;¨ª®­ª  ­¥ ¨§¢¥áâ­®£® ¡«®ª 
25
ID_ICON_DATA equ 2 ;¨ª®­ª  ¤«ï ¤ ­­ëå ¡«®ª , ­¥ ®¯à¥¤¥«¥­­®© áâàãªâãàë
26
ID_ICON_DATA equ 2 ;¨ª®­ª  ¤«ï ¤ ­­ëå ¡«®ª , ­¥ ®¯à¥¤¥«¥­­®© áâàãªâãàë
26
ID_ICON_POINT equ 8
27
ID_ICON_POINT equ 8
27
ID_ICON_POINT_SEL equ 9
28
ID_ICON_POINT_SEL equ 9
28
 
29
 
29
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
30
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
30
 
31
 
31
include 'info_o3d.inc'
32
include 'info_o3d.inc'
32
 
33
 
33
main_wnd_height equ 460 ;¢ëá®â  £« ¢­®£® ®ª­  ¯à®£à ¬¬ë
34
main_wnd_height equ 460 ;¢ëá®â  £« ¢­®£® ®ª­  ¯à®£à ¬¬ë
34
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
35
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
35
 
36
 
36
align 4
37
align 4
37
fl255 dd 255.0
38
fl255 dd 255.0
38
open_file_data dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
39
open_file_data dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
39
open_file_size dd 0 ;à §¬¥à ®âªàë⮣® ä ©« 
40
open_file_size dd 0 ;à §¬¥à ®âªàë⮣® ä ©« 
40
image_data_toolbar dd 0
41
image_data_toolbar dd 0
41
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
42
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
42
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
43
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
43
fn_toolbar db 'toolbar.png',0
44
fn_toolbar db 'toolbar.png',0
44
 
45
 
45
align 4
46
align 4
46
level_stack dd 0
47
level_stack dd 0
47
offs_last_timer dd 0 ;¯®á«¥¤­¨© ᤢ¨£ ¯®ª § ­ë© ¢ ä㭪樨 â ©¬¥à 
48
offs_last_timer dd 0 ;¯®á«¥¤­¨© ᤢ¨£ ¯®ª § ­ë© ¢ ä㭪樨 â ©¬¥à 
48
 
49
 
49
align 4
50
align 4
50
file_3ds: ;¯¥à¥¬¥­­ë¥ ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ®âªàë⨨ ä ©« 
51
file_3ds: ;¯¥à¥¬¥­­ë¥ ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ®âªàë⨨ ä ©« 
51
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
52
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
52
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
53
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
53
rb 8*MAX_FILE_LEVEL
54
rb 8*MAX_FILE_LEVEL
54
 
55
 
55
size_one_list equ 42
56
size_one_list equ 42
56
list_offs_chunk_del equ 8 ;¬®¦¥â «¨ ¡«®ª 㤠«ïâáï
57
list_offs_chunk_del equ 8 ;¬®¦¥â «¨ ¡«®ª 㤠«ïâáï
57
list_offs_chunk_lev equ 9 ;ã஢¥­ì ¡«®ª  (¯à®¯¨á ­ ¢ ¤ ­­ë¥ 㧫 )
58
list_offs_chunk_lev equ 9 ;ã஢¥­ì ¡«®ª  (¯à®¯¨á ­ ¢ ¤ ­­ë¥ 㧫 )
58
list_offs_p_data equ 10 ;㪠§ â¥«ì ­  ¯®¤¯¨áì ¡«®ª 
59
list_offs_p_data equ 10 ;㪠§ â¥«ì ­  ¯®¤¯¨áì ¡«®ª 
59
list_offs_text equ 14 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
60
list_offs_text equ 14 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
60
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
61
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
61
 
62
 
62
txt_3ds_symb db 0,0
63
txt_3ds_symb db 0,0
63
;--------------------------------------
64
;--------------------------------------
64
 
65
 
65
include 'info_wnd_coords.inc'
66
include 'info_wnd_coords.inc'
66
 
67
 
67
align 4
68
align 4
68
start:
69
start:
69
	;--- copy cmd line ---
70
	;--- copy cmd line ---
70
	mov esi,file_name
71
	mov esi,file_name
71
	mov edi,openfile_path
72
	mov edi,openfile_path
72
@@:
73
@@:
73
	lodsd
74
	lodsd
74
	or eax,eax
75
	or eax,eax
75
	jz @f ;¢ë室, ¥á«¨ 0
76
	jz @f ;¢ë室, ¥á«¨ 0
76
	stosd
77
	stosd
77
	jmp @b
78
	jmp @b
78
@@:
79
@@:
79
	stosd
80
	stosd
80
 
81
 
81
	load_libraries l_libs_start,l_libs_end
82
	load_libraries l_libs_start,l_libs_end
82
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨
83
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨
83
	mov	ebp,lib_0
84
	mov	ebp,lib_0
84
	.test_lib_open:
85
	.test_lib_open:
85
	cmp	dword [ebp+ll_struc_size-4],0
86
	cmp	dword [ebp+ll_struc_size-4],0
86
	jz	@f
87
	jz	@f
87
		mcall SF_TERMINATE_PROCESS ;exit not correct
88
		mcall SF_TERMINATE_PROCESS ;exit not correct
88
	@@:
89
	@@:
89
	add ebp,ll_struc_size
90
	add ebp,ll_struc_size
90
	cmp ebp,l_libs_end
91
	cmp ebp,l_libs_end
91
	jl .test_lib_open
92
	jl .test_lib_open
92
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
93
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
93
	mcall SF_SET_EVENTS_MASK,0xC0000027
94
	mcall SF_SET_EVENTS_MASK,0xC0000027
94
 
95
 
95
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
96
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
96
 
97
 
97
	;kmenu initialisation
98
	;kmenu initialisation
98
	stdcall [kmenu_init],sc
99
	stdcall [kmenu_init],sc
99
	stdcall [ksubmenu_new]
100
	stdcall [ksubmenu_new]
100
	mov [main_menu], eax
101
	mov [main_menu], eax
101
 
102
 
102
	stdcall [ksubmenu_new]
103
	stdcall [ksubmenu_new]
103
	mov [main_menu_view], eax
104
	mov [main_menu_view], eax
104
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Vertexes, 5
105
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Vertexes, 5
105
	stdcall [ksubmenu_add], [main_menu_view], eax
106
	stdcall [ksubmenu_add], [main_menu_view], eax
106
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Faces, 6
107
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Faces, 6
107
	stdcall [ksubmenu_add], [main_menu_view], eax
108
	stdcall [ksubmenu_add], [main_menu_view], eax
108
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Faces_Fill, 7
109
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Faces_Fill, 7
109
	stdcall [ksubmenu_add], [main_menu_view], eax
110
	stdcall [ksubmenu_add], [main_menu_view], eax
110
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
111
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
111
	stdcall [ksubmenu_add], [main_menu_view], eax
112
	stdcall [ksubmenu_add], [main_menu_view], eax
112
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Light, 8
113
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Light, 8
113
	stdcall [ksubmenu_add], [main_menu_view], eax
114
	stdcall [ksubmenu_add], [main_menu_view], eax
114
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Smooth, 9
115
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Smooth, 9
115
	stdcall [ksubmenu_add], [main_menu_view], eax
116
	stdcall [ksubmenu_add], [main_menu_view], eax
116
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
117
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
117
	stdcall [ksubmenu_add], [main_menu_view], eax
118
	stdcall [ksubmenu_add], [main_menu_view], eax
118
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Reset, 10
119
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Reset, 10
119
	stdcall [ksubmenu_add], [main_menu_view], eax
120
	stdcall [ksubmenu_add], [main_menu_view], eax
120
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_View, [main_menu_view]
121
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_View, [main_menu_view]
121
	stdcall [ksubmenu_add], [main_menu], eax
122
	stdcall [ksubmenu_add], [main_menu], eax
122
 
123
 
123
	stdcall [ksubmenu_new]
124
	stdcall [ksubmenu_new]
124
	mov [main_menu_vertexes], eax
125
	mov [main_menu_vertexes], eax
125
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Vertexes_Select, 11
126
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Vertexes_Select, 11
126
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
127
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
127
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Vertexes_Deselect, 12
128
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Vertexes_Deselect, 12
128
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
129
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
129
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
130
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
130
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
131
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
131
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_x, 13
132
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_x, 13
132
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
133
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
133
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_y, 14
134
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_y, 14
134
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
135
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
135
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_z, 15
136
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_z, 15
136
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
137
	stdcall [ksubmenu_add], [main_menu_vertexes], eax
137
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Vertexes, [main_menu_vertexes]
138
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Vertexes, [main_menu_vertexes]
138
	stdcall [ksubmenu_add], [main_menu], eax
139
	stdcall [ksubmenu_add], [main_menu], eax
139
 
140
 
140
	mov dword[w_scr_t1.type],1
141
	mov dword[w_scr_t1.type],1
141
	stdcall [tl_data_init], tree1
142
	stdcall [tl_data_init], tree1
142
	;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
143
	;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
143
	include_image_file 'tl_sys_16.png', icon_tl_sys
144
	include_image_file 'tl_sys_16.png', icon_tl_sys
144
	;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
145
	;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
145
	;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
146
	;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
146
	mov eax,dword[icon_tl_sys]
147
	mov eax,dword[icon_tl_sys]
147
	mov dword[tree1.data_img_sys],eax
148
	mov dword[tree1.data_img_sys],eax
148
 
149
 
149
	load_image_file 'objects.png', icon_toolbar
150
	load_image_file 'objects.png', icon_toolbar
150
	mov eax,dword[icon_toolbar]
151
	mov eax,dword[icon_toolbar]
151
	mov dword[tree1.data_img],eax
152
	mov dword[tree1.data_img],eax
152
 
153
 
153
	stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
154
	stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
154
 
155
 
155
	load_image_file 'font8x9.bmp', image_data_toolbar
156
	load_image_file 'font8x9.bmp', image_data_toolbar
156
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;ᮧ¤ ¥¬ ¡ãä¥à
157
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;ᮧ¤ ¥¬ ¡ãä¥à
157
	stdcall mem.Free,[image_data_toolbar] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
158
	stdcall mem.Free,[image_data_toolbar] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
158
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
159
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
159
	stdcall [buf2d_convert_text_matrix], buf_1
160
	stdcall [buf2d_convert_text_matrix], buf_1
160
 
161
 
161
	load_image_file fn_toolbar, image_data_toolbar
162
	load_image_file fn_toolbar, image_data_toolbar
162
 
163
 
163
	;à ¡®â  á ä ©«®¬ ­ áâ஥ª
164
	;à ¡®â  á ä ©«®¬ ­ áâ஥ª
164
	copy_path ini_name,sys_path,file_name,0
165
	copy_path ini_name,sys_path,file_name,0
165
	mov dword[def_dr_mode],0
166
	mov dword[def_dr_mode],0
166
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dv,1
167
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dv,1
167
	or eax,eax
168
	or eax,eax
168
	jz @f
169
	jz @f
169
		or dword[def_dr_mode], 1 shl bit_vertexes
170
		or dword[def_dr_mode], 1 shl bit_vertexes
170
	@@:
171
	@@:
171
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_df,1
172
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_df,1
172
	or eax,eax
173
	or eax,eax
173
	jz @f
174
	jz @f
174
		or dword[def_dr_mode], 1 shl bit_faces
175
		or dword[def_dr_mode], 1 shl bit_faces
175
	@@:
176
	@@:
176
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dff,1
177
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dff,1
177
	or eax,eax
178
	or eax,eax
178
	jz @f
179
	jz @f
179
		or dword[def_dr_mode], 1 shl bit_faces_fill
180
		or dword[def_dr_mode], 1 shl bit_faces_fill
180
	@@:
181
	@@:
181
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dl,1
182
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dl,1
182
	or eax,eax
183
	or eax,eax
183
	jz @f
184
	jz @f
184
		or dword[def_dr_mode], 1 shl bit_light
185
		or dword[def_dr_mode], 1 shl bit_light
185
	@@:
186
	@@:
186
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_ds,1
187
	stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_ds,1
187
	or eax,eax
188
	or eax,eax
188
	jz @f
189
	jz @f
189
		or dword[def_dr_mode], 1 shl bit_smooth
190
		or dword[def_dr_mode], 1 shl bit_smooth
190
	@@:
191
	@@:
191
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_ox,0x0000ff
192
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_ox,0x0000ff
192
	mov [color_ox],eax
193
	mov [color_ox],eax
193
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_oy,0xff0000
194
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_oy,0xff0000
194
	mov [color_oy],eax
195
	mov [color_oy],eax
195
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_oz,0x00ff00
196
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_oz,0x00ff00
196
	mov [color_oz],eax
197
	mov [color_oz],eax
197
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_bk,0x000000
198
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_bk,0x000000
198
	mov [color_bk],eax
199
	mov [color_bk],eax
199
	shr eax,8
200
	shr eax,8
200
	mov [color_bk+4],eax
201
	mov [color_bk+4],eax
201
	shr eax,8
202
	shr eax,8
202
	mov [color_bk+8],eax
203
	mov [color_bk+8],eax
203
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_vert,0xffffff
204
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_vert,0xffffff
204
	mov [color_vert],eax
205
	mov [color_vert],eax
205
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_face,0x808080
206
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_face,0x808080
206
	mov [color_face],eax
207
	mov [color_face],eax
207
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_select,0xffff00
208
	stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_select,0xffff00
208
	mov [color_select],eax
209
	mov [color_select],eax
209
	finit
210
	finit
210
	fild dword[color_bk+8]
211
	fild dword[color_bk+8]
211
	fdiv dword[fl255]
212
	fdiv dword[fl255]
212
	fstp dword[color_bk+8]
213
	fstp dword[color_bk+8]
213
	mov eax,[color_bk+4]
214
	mov eax,[color_bk+4]
214
	and eax,0xff
215
	and eax,0xff
215
	mov [color_bk+4],eax
216
	mov [color_bk+4],eax
216
	fild dword[color_bk+4]
217
	fild dword[color_bk+4]
217
	fdiv dword[fl255]
218
	fdiv dword[fl255]
218
	fstp dword[color_bk+4]
219
	fstp dword[color_bk+4]
219
	mov eax,[color_bk]
220
	mov eax,[color_bk]
220
	and eax,0xff
221
	and eax,0xff
221
	mov [color_bk],eax
222
	mov [color_bk],eax
222
	fild dword[color_bk]
223
	fild dword[color_bk]
223
	fdiv dword[fl255]
224
	fdiv dword[fl255]
224
	fstp dword[color_bk]
225
	fstp dword[color_bk]
225
 
226
 
226
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
227
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
227
	mov [last_time],eax
228
	mov [last_time],eax
228
 
229
 
229
	stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
230
	stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
230
	stdcall [glEnable], GL_DEPTH_TEST
231
	stdcall [glEnable], GL_DEPTH_TEST
231
	stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ­®à¬ «¨ ®¤¨­ ª®¢®© ¢¥«¨ç¨­ë ¢® ¨§¡¥¦ ­¨¥  àâ¥ä ªâ®¢
232
	stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ­®à¬ «¨ ®¤¨­ ª®¢®© ¢¥«¨ç¨­ë ¢® ¨§¡¥¦ ­¨¥  àâ¥ä ªâ®¢
232
	stdcall [glClearColor], [color_bk+8],[color_bk+4],[color_bk],0.0
233
	stdcall [glClearColor], [color_bk+8],[color_bk+4],[color_bk],0.0
233
	stdcall [glShadeModel], GL_SMOOTH
234
	stdcall [glShadeModel], GL_SMOOTH
234
	call [gluNewQuadric]
235
	call [gluNewQuadric]
235
	mov [qObj],eax
236
	mov [qObj],eax
236
 
237
 
237
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
238
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
238
	mov eax,[eax] ;eax -> ZBuffer
239
	mov eax,[eax] ;eax -> ZBuffer
239
	mov eax,[eax+ZBuffer.pbuf]
240
	mov eax,[eax+ZBuffer.pbuf]
240
	mov dword[buf_ogl],eax
241
	mov dword[buf_ogl],eax
241
 
242
 
242
	;open file from cmd line
243
	;open file from cmd line
243
	cmp dword[openfile_path],0
244
	cmp dword[openfile_path],0
244
	je @f
245
	je @f
245
		call but_open_file.no_dlg
246
		call but_open_file.no_dlg
246
	@@:
247
	@@:
247
	call draw_window
248
	call draw_window
248
 
249
 
249
align 4
250
align 4
250
still:
251
still:
251
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
252
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
252
	mov ebx,[last_time]
253
	mov ebx,[last_time]
253
	add ebx,10 ;§ ¤¥à¦ª 
254
	add ebx,10 ;§ ¤¥à¦ª 
254
	cmp ebx,eax
255
	cmp ebx,eax
255
	jge @f
256
	jge @f
256
		mov ebx,eax
257
		mov ebx,eax
257
	@@:
258
	@@:
258
	sub ebx,eax
259
	sub ebx,eax
259
	mcall SF_WAIT_EVENT_TIMEOUT
260
	mcall SF_WAIT_EVENT_TIMEOUT
260
	or eax,eax
261
	or eax,eax
261
	jz timer_funct
262
	jz timer_funct
262
 
263
 
263
	cmp al,1
264
	cmp al,1
264
	jne @f
265
	jne @f
265
		call draw_window
266
		call draw_window
266
		jmp still
267
		jmp still
267
	@@:
268
	@@:
268
	cmp al,2
269
	cmp al,2
269
	jz key
270
	jz key
270
	cmp al,3
271
	cmp al,3
271
	jz button
272
	jz button
272
	cmp al,6
273
	cmp al,6
273
	jne @f
274
	jne @f
274
		mcall SF_THREAD_INFO,procinfo,-1
275
		mcall SF_THREAD_INFO,procinfo,-1
275
		cmp ax,word[procinfo+4]
276
		cmp ax,word[procinfo+4]
276
		jne @f ;®ª­® ­¥  ªâ¨¢­®
277
		jne @f ;®ª­® ­¥  ªâ¨¢­®
277
		call mouse
278
		call mouse
278
	@@:
279
	@@:
279
	jmp still
280
	jmp still
280
 
281
 
281
align 4
282
align 4
282
mouse:
283
mouse:
283
	stdcall [tl_mouse], dword tree1
284
	stdcall [tl_mouse], dword tree1
284
	ret
285
	ret
285
 
286
 
286
align 4
287
align 4
287
timer_funct:
288
timer_funct:
288
	pushad
289
	pushad
289
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
290
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
290
	mov [last_time],eax
291
	mov [last_time],eax
291
 
292
 
292
	;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå
293
	;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå
293
	stdcall [tl_node_get_data],tree1
294
	stdcall [tl_node_get_data],tree1
294
	cmp eax,0
295
	cmp eax,0
295
	je @f
296
	je @f
296
		mov ebx,eax
297
		mov ebx,eax
297
		mov eax,dword[ebx]
298
		mov eax,dword[ebx]
298
		mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
299
		mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
299
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
300
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
300
		stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
301
		stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
301
 
302
 
302
		add eax,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
303
		add eax,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
303
		cmp dword[offs_last_timer],eax
304
		cmp dword[offs_last_timer],eax
304
		je @f
305
		je @f
305
			;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
306
			;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
306
			mov dword[offs_last_timer],eax
307
			mov dword[offs_last_timer],eax
307
			stdcall buf_draw_beg, buf_0
308
			stdcall buf_draw_beg, buf_0
308
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
309
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
309
			mov edx,dword[ebx+list_offs_p_data]
310
			mov edx,dword[ebx+list_offs_p_data]
310
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
311
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
311
			je .no_info
312
			je .no_info
312
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
313
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
313
			.no_info:
314
			.no_info:
314
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
315
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
315
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
316
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
316
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
317
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
317
	@@:
318
	@@:
318
	popad
319
	popad
319
	jmp still
320
	jmp still
320
 
321
 
321
align 4
322
align 4
322
proc buf_draw_hex_table, offs:dword, size_line:dword
323
proc buf_draw_hex_table, offs:dword, size_line:dword
323
	pushad
324
	pushad
324
	locals
325
	locals
325
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
326
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
326
	endl
327
	endl
327
		mov esi,dword[offs]
328
		mov esi,dword[offs]
328
		mov edi,dword[open_file_data]
329
		mov edi,dword[open_file_data]
329
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
330
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
330
		mov dword[txt_3ds_offs.dig],0
331
		mov dword[txt_3ds_offs.dig],0
331
		cld
332
		cld
332
		.cycle_rows:
333
		.cycle_rows:
333
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
334
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
334
			mov edx,5+10*24 ;®âáâ㯠᫥¢  ¤«ï ⥪áâ 
335
			mov edx,5+10*24 ;®âáâ㯠᫥¢  ¤«ï ⥪áâ 
335
			mov ecx,10
336
			mov ecx,10
336
			@@:
337
			@@:
337
				stdcall hex_in_str, txt_3ds_offs.dig, dword[esi],2
338
				stdcall hex_in_str, txt_3ds_offs.dig, dword[esi],2
338
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs.dig,ebx,[coord_y],0
339
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs.dig,ebx,[coord_y],0
339
 
340
 
340
				mov al,byte[esi]
341
				mov al,byte[esi]
341
				mov byte[txt_3ds_symb],al
342
				mov byte[txt_3ds_symb],al
342
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_symb,edx,[coord_y],0x808080
343
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_symb,edx,[coord_y],0x808080
343
				inc esi
344
				inc esi
344
				cmp esi,dword[size_line]
345
				cmp esi,dword[size_line]
345
				jne .end_block
346
				jne .end_block
346
					stdcall draw_block_end_line, dword[coord_y]
347
					stdcall draw_block_end_line, dword[coord_y]
347
				.end_block:
348
				.end_block:
348
				cmp esi,edi
349
				cmp esi,edi
349
				jge @f ;jg ???
350
				jge @f ;jg ???
350
				add ebx,24
351
				add ebx,24
351
				add edx,9 ;è¨à¨­  1-£® ᨬ¢®«  +1pix
352
				add edx,9 ;è¨à¨­  1-£® ᨬ¢®«  +1pix
352
				loop @b
353
				loop @b
353
			add dword[coord_y],10 ;¢ëá®â  1-£® ᨬ¢®«  (¨«¨ ¨­â¥à¢ « ¬¥¦¤ã áâப ¬¨)
354
			add dword[coord_y],10 ;¢ëá®â  1-£® ᨬ¢®«  (¨«¨ ¨­â¥à¢ « ¬¥¦¤ã áâப ¬¨)
354
			mov ebx,dword[buf_0.h]
355
			mov ebx,dword[buf_0.h]
355
			cmp dword[coord_y],ebx
356
			cmp dword[coord_y],ebx
356
			jl .cycle_rows
357
			jl .cycle_rows
357
		@@:
358
		@@:
358
	popad
359
	popad
359
	ret
360
	ret
360
endp
361
endp
361
 
362
 
362
align 4
363
align 4
363
proc draw_block_end_line uses eax ebx ecx, coord_y:dword
364
proc draw_block_end_line uses eax ebx ecx, coord_y:dword
364
	add ebx,20 ;20 = width 2.5 symbols
365
	add ebx,20 ;20 = width 2.5 symbols
365
	mov eax,[coord_y]
366
	mov eax,[coord_y]
366
	sub eax,2
367
	sub eax,2
367
	mov ecx,eax
368
	mov ecx,eax
368
	add ecx,10
369
	add ecx,10
369
	stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff
370
	stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff
370
	stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff
371
	stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff
371
	stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff
372
	stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff
372
	ret
373
	ret
373
endp
374
endp
374
 
375
 
375
align 4
376
align 4
376
draw_window:
377
draw_window:
377
pushad
378
pushad
378
	mcall SF_REDRAW,SSF_BEGIN_DRAW
379
	mcall SF_REDRAW,SSF_BEGIN_DRAW
379
	xor eax,eax
380
	xor eax,eax
380
	mov edx,[sc.work]
381
	mov edx,[sc.work]
381
	or  edx,0x33000000
382
	or  edx,0x33000000
382
	mov edi,capt
383
	mov edi,capt
383
	mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height
384
	mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height
384
 
385
 
385
	mcall SF_THREAD_INFO,procinfo,-1
386
	mcall SF_THREAD_INFO,procinfo,-1
386
	mov eax,dword[procinfo.box.height]
387
	mov eax,dword[procinfo.box.height]
387
	cmp eax,250
388
	cmp eax,250
388
	jge @f
389
	jge @f
389
		mov eax,250
390
		mov eax,250
390
	@@:
391
	@@:
391
	sub eax,65
392
	sub eax,65
392
	mov dword[tree1.box_height],eax
393
	mov dword[tree1.box_height],eax
393
	mov word[w_scr_t1.y_size],ax ;­®¢ë¥ à §¬¥àë áªà®««¨­£ 
394
	mov word[w_scr_t1.y_size],ax ;­®¢ë¥ à §¬¥àë áªà®««¨­£ 
394
	cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à 
395
	cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à 
395
	jle @f
396
	jle @f
396
		stdcall [buf2d_resize],buf_0,0,eax,1
397
		stdcall [buf2d_resize],buf_0,0,eax,1
397
		mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡ãä¥à  ¢ â ©¬¥à¥
398
		mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡ãä¥à  ¢ â ©¬¥à¥
398
	@@:
399
	@@:
399
 
400
 
400
	mov eax,dword[procinfo.box.width]
401
	mov eax,dword[procinfo.box.width]
401
	cmp eax,400
402
	cmp eax,400
402
	jge @f
403
	jge @f
403
		mov eax,400
404
		mov eax,400
404
	@@:
405
	@@:
405
	sub eax,[buf_0.w]
406
	sub eax,[buf_0.w]
406
	sub eax,41
407
	sub eax,41
407
	mov dword[tree1.box_width],eax
408
	mov dword[tree1.box_width],eax
408
	add ax,word[tree1.box_left]
409
	add ax,word[tree1.box_left]
409
	mov word[w_scr_t1.x_pos],ax
410
	mov word[w_scr_t1.x_pos],ax
410
	add ax,16+5
411
	add ax,16+5
411
	mov word[buf_0.l],ax
412
	mov word[buf_0.l],ax
412
 
413
 
413
	mov esi,[sc.work_button]
414
	mov esi,[sc.work_button]
414
	mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,0x40000003
415
	mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,0x40000003
415
	mcall ,(30 shl 16)+20,,0x40000004
416
	mcall ,(30 shl 16)+20,,0x40000004
416
 
417
 
417
	cmp byte[can_save],0
418
	cmp byte[can_save],0
418
	je @f
419
	je @f
419
		mcall ,(55 shl 16)+20,,0x40000005
420
		mcall ,(55 shl 16)+20,,0x40000005
420
	@@:
421
	@@:
421
	mcall ,(85 shl 16)+20,,0x40000006 ;®ª­® á ª®®à¤¨­ â ¬¨
422
	mcall ,(85 shl 16)+20,,0x40000006 ;®ª­® á ª®®à¤¨­ â ¬¨
422
	mcall ,(110 shl 16)+20,,0x40000007 ;㤠«¥­¨¥ ¡«®ª 
423
	mcall ,(110 shl 16)+20,,0x40000007 ;㤠«¥­¨¥ ¡«®ª 
423
 
424
 
424
	mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+5 ;new
425
	mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+5 ;new
425
 
426
 
426
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
427
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
427
	mov edx,(30 shl 16)+5 ;open
428
	mov edx,(30 shl 16)+5 ;open
428
	int 0x40
429
	int 0x40
429
 
430
 
430
	cmp byte[can_save],0
431
	cmp byte[can_save],0
431
	je @f
432
	je @f
432
		add ebx,IMAGE_TOOLBAR_ICON_SIZE
433
		add ebx,IMAGE_TOOLBAR_ICON_SIZE
433
		mov edx,(55 shl 16)+5 ;save
434
		mov edx,(55 shl 16)+5 ;save
434
		int 0x40
435
		int 0x40
435
		sub ebx,IMAGE_TOOLBAR_ICON_SIZE
436
		sub ebx,IMAGE_TOOLBAR_ICON_SIZE
436
	@@:
437
	@@:
437
 
438
 
438
	add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
439
	add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
439
	mov edx,(85 shl 16)+5
440
	mov edx,(85 shl 16)+5
440
	int 0x40
441
	int 0x40
441
 
442
 
442
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
443
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
443
	mov edx,(110 shl 16)+5
444
	mov edx,(110 shl 16)+5
444
	int 0x40
445
	int 0x40
445
 
446
 
446
	mov dword[w_scr_t1.all_redraw],1
447
	mov dword[w_scr_t1.all_redraw],1
447
	stdcall [tl_draw], tree1
448
	stdcall [tl_draw], tree1
448
 
449
 
449
	stdcall [buf2d_draw], buf_0
450
	stdcall [buf2d_draw], buf_0
450
 
451
 
451
	mcall SF_REDRAW,SSF_END_DRAW
452
	mcall SF_REDRAW,SSF_END_DRAW
452
popad
453
popad
453
	ret
454
	ret
454
 
455
 
455
align 4
456
align 4
456
key:
457
key:
457
	mcall SF_GET_KEY
458
	mcall SF_GET_KEY
458
	stdcall [tl_key], dword tree1
459
	stdcall [tl_key], dword tree1
459
	jmp still
460
	jmp still
460
 
461
 
461
 
462
 
462
align 4
463
align 4
463
button:
464
button:
464
	mcall SF_GET_BUTTON
465
	mcall SF_GET_BUTTON
465
	cmp ah,3
466
	cmp ah,3
466
	jne @f
467
	jne @f
467
		call but_new_file
468
		call but_new_file
468
		jmp still
469
		jmp still
469
	@@:
470
	@@:
470
	cmp ah,4
471
	cmp ah,4
471
	jne @f
472
	jne @f
472
		call but_open_file
473
		call but_open_file
473
		jmp still
474
		jmp still
474
	@@:
475
	@@:
475
	cmp ah,5
476
	cmp ah,5
476
	jne @f
477
	jne @f
477
		call but_save_file
478
		call but_save_file
478
		jmp still
479
		jmp still
479
	@@:
480
	@@:
480
	cmp ah,6
481
	cmp ah,6
481
	jne @f
482
	jne @f
482
		call but_wnd_coords
483
		call but_wnd_coords
483
		jmp still
484
		jmp still
484
	@@:
485
	@@:
485
	cmp ah,7
486
	cmp ah,7
486
	jne @f
487
	jne @f
487
		call but_delete_chunk
488
		call but_delete_chunk
488
		jmp still
489
		jmp still
489
	@@:
490
	@@:
490
 
491
 
491
	cmp ah,1
492
	cmp ah,1
492
	jne still
493
	jne still
493
.exit:
494
.exit:
494
	mov dword[tree1.data_img],0
495
	mov dword[tree1.data_img],0
495
	mov dword[tree1.data_img_sys],0
496
	mov dword[tree1.data_img_sys],0
496
	stdcall [tl_data_clear], tree1
497
	stdcall [tl_data_clear], tree1
497
	stdcall [buf2d_delete],buf_0
498
	stdcall [buf2d_delete],buf_0
498
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
499
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
499
	stdcall mem.Free,[image_data_toolbar]
500
	stdcall mem.Free,[image_data_toolbar]
500
	stdcall mem.Free,[open_file_data]
501
	stdcall mem.Free,[open_file_data]
501
	stdcall [gluDeleteQuadric], [qObj]
502
	stdcall [gluDeleteQuadric], [qObj]
502
	mcall SF_TERMINATE_PROCESS
503
	mcall SF_TERMINATE_PROCESS
503
 
504
 
504
 
505
 
505
align 4
506
align 4
506
but_new_file:
507
but_new_file:
507
	mov byte[can_save],0
508
	mov byte[can_save],0
508
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
509
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
509
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
510
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
510
	stdcall [tl_draw], tree1
511
	stdcall [tl_draw], tree1
511
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
512
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
512
	ret
513
	ret
513
 
514
 
514
align 4
515
align 4
515
but_open_file:
516
but_open_file:
516
	copy_path open_dialog_name,communication_area_default_path,file_name,0
517
	copy_path open_dialog_name,communication_area_default_path,file_name,0
517
	pushad
518
	pushad
518
	mov [OpenDialog_data.type],0
519
	mov [OpenDialog_data.type],0
519
	stdcall [OpenDialog_Start],OpenDialog_data
520
	stdcall [OpenDialog_Start],OpenDialog_data
520
	cmp [OpenDialog_data.status],2
521
	cmp [OpenDialog_data.status],2
521
	je .end_open_file
522
	je .end_open_file
522
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
523
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
523
	jmp .end0
524
	jmp .end0
524
.no_dlg: ;¥á«¨ ¬¨­ã¥¬ ¤¨ «®£ ®âªàëâ¨ï ä ©« 
525
.no_dlg: ;¥á«¨ ¬¨­ã¥¬ ¤¨ «®£ ®âªàëâ¨ï ä ©« 
525
		pushad
526
		pushad
526
		mov esi,openfile_path
527
		mov esi,openfile_path
527
		stdcall str_len,esi
528
		stdcall str_len,esi
528
		add esi,eax
529
		add esi,eax
529
		@@: ;横« ¤«ï ¯®¨áª  ­ ç «  ¨¬¥­¨ ä ©« 
530
		@@: ;横« ¤«ï ¯®¨áª  ­ ç «  ¨¬¥­¨ ä ©« 
530
			dec esi
531
			dec esi
531
			cmp byte[esi],'/'
532
			cmp byte[esi],'/'
532
			je @f
533
			je @f
533
			cmp byte[esi],0x5c ;'\'
534
			cmp byte[esi],0x5c ;'\'
534
			je @f
535
			je @f
535
			cmp esi,openfile_path
536
			cmp esi,openfile_path
536
			jg @b
537
			jg @b
537
		@@:
538
		@@:
538
		inc esi
539
		inc esi
539
		stdcall [OpenDialog_Set_file_name],OpenDialog_data,esi ;ª®¯¨à㥬 ¨¬ï ä ©«  ¢ ¤¨ «®£ á®åà ­¥­¨ï
540
		stdcall [OpenDialog_Set_file_name],OpenDialog_data,esi ;ª®¯¨à㥬 ¨¬ï ä ©«  ¢ ¤¨ «®£ á®åà ­¥­¨ï
540
	.end0:
541
	.end0:
541
    mov [run_file_70.Function], SSF_GET_INFO
542
    mov [run_file_70.Function], SSF_GET_INFO
542
    mov [run_file_70.Position], 0
543
    mov [run_file_70.Position], 0
543
    mov [run_file_70.Flags], 0
544
    mov [run_file_70.Flags], 0
544
    mov dword[run_file_70.Count], 0
545
    mov dword[run_file_70.Count], 0
545
    mov dword[run_file_70.Buffer], open_b
546
    mov dword[run_file_70.Buffer], open_b
546
    mov byte[run_file_70+20], 0
547
    mov byte[run_file_70+20], 0
547
    mov dword[run_file_70.FileName], openfile_path
548
    mov dword[run_file_70.FileName], openfile_path
548
    mcall SF_FILE,run_file_70
549
    mcall SF_FILE,run_file_70
549
 
550
 
550
    mov ecx,dword[open_b+32] ;+32 qword: à §¬¥à ä ©«  ¢ ¡ ©â å
551
    mov ecx,dword[open_b+32] ;+32 qword: à §¬¥à ä ©«  ¢ ¡ ©â å
551
    stdcall mem.ReAlloc,[open_file_data],ecx
552
    stdcall mem.ReAlloc,[open_file_data],ecx
552
    mov [open_file_data],eax
553
    mov [open_file_data],eax
553
    
554
    
554
    mov [run_file_70.Function], SSF_READ_FILE
555
    mov [run_file_70.Function], SSF_READ_FILE
555
    mov [run_file_70.Position], 0
556
    mov [run_file_70.Position], 0
556
    mov [run_file_70.Flags], 0
557
    mov [run_file_70.Flags], 0
557
    mov dword[run_file_70.Count], ecx
558
    mov dword[run_file_70.Count], ecx
558
    m2m dword[run_file_70.Buffer], dword[open_file_data]
559
    m2m dword[run_file_70.Buffer], dword[open_file_data]
559
    mov byte[run_file_70+20], 0
560
    mov byte[run_file_70+20], 0
560
    mov dword[run_file_70.FileName], openfile_path
561
    mov dword[run_file_70.FileName], openfile_path
561
    mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
562
    mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
562
    cmp ebx,0xffffffff
563
    cmp ebx,0xffffffff
563
    je .end_open_file
564
    je .end_open_file
564
 
565
 
565
	mov [open_file_size],ebx
566
	mov [open_file_size],ebx
566
		;mcall SF_SET_CAPTION,1,openfile_path
567
		;mcall SF_SET_CAPTION,1,openfile_path
567
 
568
 
568
	mov byte[can_save],0
569
	mov byte[can_save],0
569
	call init_tree
570
	call init_tree
570
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
571
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
571
	stdcall obj_clear_param, o3d ;ç¨á⨬ ¯ à ¬¥âàë ®ª­  á ª®®à¤¨­ â ¬¨
572
	stdcall obj_clear_param, o3d ;ç¨á⨬ ¯ à ¬¥âàë ®ª­  á ª®®à¤¨­ â ¬¨
572
	cmp byte[prop_wnd_run],0
573
	cmp byte[prop_wnd_run],0
573
	je @f
574
	je @f
574
		;ç¨á⨬ ®ª­® á ª®®à¤¨­ â ¬¨
575
		;ç¨á⨬ ®ª­® á ª®®à¤¨­ â ¬¨
575
		stdcall [tl_info_clear], tree3
576
		stdcall [tl_info_clear], tree3
576
	@@:
577
	@@:
577
 
578
 
578
	.end_open_file:
579
	.end_open_file:
579
	popad
580
	popad
580
	ret
581
	ret
581
 
582
 
582
align 4
583
align 4
583
init_tree:
584
init_tree:
584
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
585
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
585
 
586
 
586
	mov esi,[open_file_data]
587
	mov esi,[open_file_data]
587
	stdcall convert_stl_3ds, esi,[open_file_size] ;¯à®¢¥à塞 ä ©« ä®à¬ â  *.stl ?
588
	stdcall convert_stl_3ds, esi,[open_file_size] ;¯à®¢¥à塞 ä ©« ä®à¬ â  *.stl ?
588
	or eax,eax
589
	or eax,eax
589
	jz @f
590
	jz @f
590
		;¥á«¨ ä ©« ¢ ä®à¬ â¥ *.stl
591
		;¥á«¨ ä ©« ¢ ä®à¬ â¥ *.stl
591
		mov [open_file_size],ecx
592
		mov [open_file_size],ecx
592
		mov esi,eax
593
		mov esi,eax
593
		stdcall mem.Free,[open_file_data]
594
		stdcall mem.Free,[open_file_data]
594
		mov [open_file_data],esi
595
		mov [open_file_data],esi
595
		mov byte[can_save],1
596
		mov byte[can_save],1
596
	@@:
597
	@@:
597
	cmp word[esi],CHUNK_MAIN
598
	cmp word[esi],CHUNK_MAIN
598
	je @f
599
	je @f
599
		stdcall buf_draw_beg, buf_0
600
		stdcall buf_draw_beg, buf_0
600
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
601
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
601
		jmp .end_open
602
		jmp .end_open
602
	@@:
603
	@@:
603
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
604
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
604
	mov eax,file_3ds
605
	mov eax,file_3ds
605
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
606
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
606
	mov dword[offs_last_timer],0
607
	mov dword[offs_last_timer],0
607
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
608
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
608
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
609
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
609
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
610
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
610
 
611
 
611
	mov edi,[file_3ds.offs]
612
	mov edi,[file_3ds.offs]
612
	add edi,[file_3ds.size]
613
	add edi,[file_3ds.size]
613
	.cycle_main:
614
	.cycle_main:
614
		cmp dword[level_stack],0
615
		cmp dword[level_stack],0
615
		jle .end_cycle
616
		jle .end_cycle
616
		
617
		
617
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
618
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
618
		jge .end_cycle
619
		jge .end_cycle
619
 
620
 
620
		mov edx,[esi+2] ;à §¬¥à ¡«®ª 
621
		mov edx,[esi+2] ;à §¬¥à ¡«®ª 
621
		call block_analiz
622
		call block_analiz
622
		cmp dword[bl_found],0
623
		cmp dword[bl_found],0
623
		jne @f
624
		jne @f
624
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
625
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
625
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
626
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
626
			call block_next
627
			call block_next
627
			jmp .cycle_main
628
			jmp .cycle_main
628
		@@:
629
		@@:
629
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
630
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
630
			mov ecx,dword[bl_found]
631
			mov ecx,dword[bl_found]
631
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
632
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
632
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
633
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
633
			cmp byte[ecx+4],1
634
			cmp byte[ecx+4],1
634
			je .bl_data
635
			je .bl_data
635
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
636
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
636
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
637
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
637
				jmp .cycle_main
638
				jmp .cycle_main
638
			.bl_data:
639
			.bl_data:
639
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
640
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
640
				call block_analiz_data
641
				call block_analiz_data
641
				jmp .cycle_main
642
				jmp .cycle_main
642
	.end_cycle:
643
	.end_cycle:
643
		stdcall [tl_cur_beg], tree1
644
		stdcall [tl_cur_beg], tree1
644
		stdcall [tl_draw], tree1
645
		stdcall [tl_draw], tree1
645
	.end_open:
646
	.end_open:
646
	ret
647
	ret
647
 
648
 
648
; ­ «¨§ ¤ ­­ëå ¡«®ª 
649
; ­ «¨§ ¤ ­­ëå ¡«®ª 
649
;input:
650
;input:
650
; eax - stack pointer
651
; eax - stack pointer
651
; esi - memory pointer
652
; esi - memory pointer
652
;output:
653
;output:
653
; eax - new stack pointer
654
; eax - new stack pointer
654
; esi - new memory pointer
655
; esi - new memory pointer
655
align 4
656
align 4
656
block_analiz_data:
657
block_analiz_data:
657
	push ebx ecx edx edi
658
	push ebx ecx edx edi
658
		mov dx,word[esi]
659
		mov dx,word[esi]
659
		mov ecx,dword[esi+2]
660
		mov ecx,dword[esi+2]
660
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
661
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
661
		add esi,6
662
		add esi,6
662
		mov ebx,dword[level_stack]
663
		mov ebx,dword[level_stack]
663
		inc ebx
664
		inc ebx
664
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
665
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
665
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
666
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
666
		jne @f
667
		jne @f
667
			push ax
668
			push ax
668
				cld
669
				cld
669
				xor al,al
670
				xor al,al
670
				mov edi,esi
671
				mov edi,esi
671
				repne scasb
672
				repne scasb
672
			pop ax
673
			pop ax
673
			sub edi,esi ;edi - strlen
674
			sub edi,esi ;edi - strlen
674
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
675
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
675
			add esi,edi
676
			add esi,edi
676
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
677
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
677
			jmp .next_bl
678
			jmp .next_bl
678
		@@:
679
		@@:
679
		cmp dx,CHUNK_VERTLIST ;ᯨ᮪ ¢¥à設
680
		cmp dx,CHUNK_VERTLIST ;ᯨ᮪ ¢¥à設
680
		je .vertexes
681
		je .vertexes
681
		cmp dx,0x4111 ;ä« £¨ ¢¥à設
682
		cmp dx,0x4111 ;ä« £¨ ¢¥à設
682
		je .vertexes
683
		je .vertexes
683
		cmp dx,CHUNK_MAPLIST ;⥪áâãà­ë¥ ª®®à¤¨­ âë
684
		cmp dx,CHUNK_MAPLIST ;⥪áâãà­ë¥ ª®®à¤¨­ âë
684
		je .vertexes
685
		je .vertexes
685
		jmp @f
686
		jmp @f
686
		.vertexes: ;®¡à ¡®âª  ¡«®ª®¢, ᮤ¥à¦ é¨å ¤ ­­ë¥ ¢¥à設
687
		.vertexes: ;®¡à ¡®âª  ¡«®ª®¢, ᮤ¥à¦ é¨å ¤ ­­ë¥ ¢¥à設
687
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® ¢¥à設
688
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® ¢¥à設
688
			add esi,2
689
			add esi,2
689
			sub ecx,2
690
			sub ecx,2
690
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¢¥à設
691
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¢¥à設
691
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
692
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
692
			call block_next
693
			call block_next
693
			jmp .end_f		
694
			jmp .end_f		
694
		@@:
695
		@@:
695
		cmp dx,CHUNK_FACELIST ;ᯨ᮪ £à ­¥©
696
		cmp dx,CHUNK_FACELIST ;ᯨ᮪ £à ­¥©
696
		jne @f
697
		jne @f
697
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
698
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
698
			push eax
699
			push eax
699
			movzx eax,word[esi]
700
			movzx eax,word[esi]
700
			shl eax,3
701
			shl eax,3
701
			add esi,2
702
			add esi,2
702
			sub ecx,2
703
			sub ecx,2
703
			stdcall add_3ds_object, ID_ICON_DATA,ebx,eax,0 ;¤ ­­ë¥ £à ­¥©
704
			stdcall add_3ds_object, ID_ICON_DATA,ebx,eax,0 ;¤ ­­ë¥ £à ­¥©
704
 
705
 
705
			sub ecx,eax
706
			sub ecx,eax
706
			cmp ecx,1
707
			cmp ecx,1
707
			jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
708
			jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
708
if 0
709
if 0
709
				add esi,eax
710
				add esi,eax
710
				mov ecx,dword[esi+2]
711
				mov ecx,dword[esi+2]
711
				stdcall add_3ds_object, 10,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
712
				stdcall add_3ds_object, 10,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
712
				sub esi,eax
713
				sub esi,eax
713
else
714
else
714
				add esi,eax
715
				add esi,eax
715
				pop eax
716
				pop eax
716
				jmp .next_bl
717
				jmp .next_bl
717
end if
718
end if
718
			.data_3:
719
			.data_3:
719
 
720
 
720
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
721
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
721
			pop eax
722
			pop eax
722
			call block_next
723
			call block_next
723
			jmp .end_f		
724
			jmp .end_f		
724
		@@:
725
		@@:
725
		cmp dx,CHUNK_FACEMAT ;¬ â¥à¨ «ë £à ­¥©
726
		cmp dx,CHUNK_FACEMAT ;¬ â¥à¨ «ë £à ­¥©
726
		jne @f
727
		jne @f
727
			push ax
728
			push ax
728
				cld
729
				cld
729
				xor al,al
730
				xor al,al
730
				mov edi,esi
731
				mov edi,esi
731
				repne scasb
732
				repne scasb
732
			pop ax
733
			pop ax
733
			sub edi,esi ;edi - strlen
734
			sub edi,esi ;edi - strlen
734
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
735
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
735
			add esi,edi
736
			add esi,edi
736
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
737
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
737
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
738
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
738
			add esi,2
739
			add esi,2
739
			sub ecx,2
740
			sub ecx,2
740
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;­®¬¥à  £à ­¥©, ª ª®â®àë¬ ¯à¨¬¥­¥­ ¬ â¥à¨ «
741
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;­®¬¥à  £à ­¥©, ª ª®â®àë¬ ¯à¨¬¥­¥­ ¬ â¥à¨ «
741
			sub esi,edi ;¢®ááâ ­®¢«¥­¨¥ esi (1)
742
			sub esi,edi ;¢®ááâ ­®¢«¥­¨¥ esi (1)
742
			sub esi,8   ;¢®ááâ ­®¢«¥­¨¥ esi (2)
743
			sub esi,8   ;¢®ááâ ­®¢«¥­¨¥ esi (2)
743
			call block_next
744
			call block_next
744
			jmp .end_f
745
			jmp .end_f
745
		@@:
746
		@@:
746
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
747
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
747
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
748
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
748
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
749
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
749
			call block_next
750
			call block_next
750
			jmp .end_f
751
			jmp .end_f
751
		.next_bl:
752
		.next_bl:
752
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
753
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
753
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
754
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
754
			mov ebx,dword[esi+2]
755
			mov ebx,dword[esi+2]
755
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
756
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
756
			inc dword[level_stack]
757
			inc dword[level_stack]
757
			add eax,8
758
			add eax,8
758
		.end_f:
759
		.end_f:
759
	pop edi edx ecx ebx
760
	pop edi edx ecx ebx
760
	ret
761
	ret
761
 
762
 
762
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
763
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
763
;input:
764
;input:
764
; eax - 㪠§ â¥«ì ­  ¢à¥¬¥­­ë© á⥪ ä ©«  file_3ds
765
; eax - 㪠§ â¥«ì ­  ¢à¥¬¥­­ë© á⥪ ä ©«  file_3ds
765
; esi - ­ ç «® த¨â¥«ì᪮£® ¡«®ª 
766
; esi - ­ ç «® த¨â¥«ì᪮£® ¡«®ª 
766
;output:
767
;output:
767
; ebx - destroy
768
; ebx - destroy
768
; esi - ­ ç «® ¤ ­­ëå த¨â¥«ì᪮£® ¡«®ª 
769
; esi - ­ ç «® ¤ ­­ëå த¨â¥«ì᪮£® ¡«®ª 
769
align 4
770
align 4
770
block_children:
771
block_children:
771
	push ecx
772
	push ecx
772
		;¯à®¢¥àª  ¯à ¢¨«ì­®á⨠ࠧ¬¥à®¢ ¤®ç¥à­¥£® ¡«®ª 
773
		;¯à®¢¥àª  ¯à ¢¨«ì­®á⨠ࠧ¬¥à®¢ ¤®ç¥à­¥£® ¡«®ª 
773
		mov ebx,esi
774
		mov ebx,esi
774
		add ebx,6 ;¯¥à¥å®¤ ­  ­ ç «® ¤®ç¥à­¥£® ¡«®ª 
775
		add ebx,6 ;¯¥à¥å®¤ ­  ­ ç «® ¤®ç¥à­¥£® ¡«®ª 
775
		add ebx,dword[ebx+2] ;¤®¡ ¢«ï¥¬ à §¬¥à ¤®ç¥à­¥£® ¡«®ª 
776
		add ebx,dword[ebx+2] ;¤®¡ ¢«ï¥¬ à §¬¥à ¤®ç¥à­¥£® ¡«®ª 
776
		mov ecx,esi
777
		mov ecx,esi
777
		add ecx,dword[esi+2] ;¤®¡ ¢«ï¥¬ à §¬¥à த¨â¥«ì᪮£® ¡«®ª 
778
		add ecx,dword[esi+2] ;¤®¡ ¢«ï¥¬ à §¬¥à த¨â¥«ì᪮£® ¡«®ª 
778
		cmp ebx,ecx ;ãç¨â뢠âì § £®«®¢ª¨ ­¥ ­ã¦­®, â. ª. áà ¢­¨¢ îâáï ⮫쪮 ¤ ­­ë¥ ¡«®ª®¢
779
		cmp ebx,ecx ;ãç¨â뢠âì § £®«®¢ª¨ ­¥ ­ã¦­®, â. ª. áà ¢­¨¢ îâáï ⮫쪮 ¤ ­­ë¥ ¡«®ª®¢
779
		jle @f
780
		jle @f
780
			;¤¨ £­®áâ¨à®¢ «¨ ®è¨¡ªã ä ©« , ¤®ç¥à­¨© ¡«®ª ¢ë室¨â §  ¯à¥¤¥«ë த¨â¥«ì᪮£®
781
			;¤¨ £­®áâ¨à®¢ «¨ ®è¨¡ªã ä ©« , ¤®ç¥à­¨© ¡«®ª ¢ë室¨â §  ¯à¥¤¥«ë த¨â¥«ì᪮£®
781
			mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
782
			mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
782
			jmp .end_f
783
			jmp .end_f
783
		@@:
784
		@@:
784
		mov [eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
785
		mov [eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
785
		mov ebx,[esi+2]
786
		mov ebx,[esi+2]
786
		mov [eax+4],ebx ;à §¬¥à ¡«®ª 
787
		mov [eax+4],ebx ;à §¬¥à ¡«®ª 
787
		add esi,6 ;¯¥à¥å®¤¨¬ ª ¤ ­­ë¬ ¡«®ª 
788
		add esi,6 ;¯¥à¥å®¤¨¬ ª ¤ ­­ë¬ ¡«®ª 
788
		inc dword[level_stack]
789
		inc dword[level_stack]
789
		add eax,8
790
		add eax,8
790
	.end_f:
791
	.end_f:
791
	pop ecx
792
	pop ecx
792
	ret
793
	ret
793
 
794
 
794
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
795
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
795
;input:
796
;input:
796
; eax -  ¤à¥á áâàãªâãàë á ¯¥à¥¬¥­­ë¬¨
797
; eax -  ¤à¥á áâàãªâãàë á ¯¥à¥¬¥­­ë¬¨
797
align 4
798
align 4
798
block_next:
799
block_next:
799
push ebx
800
push ebx
800
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
801
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
801
 
802
 
802
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
803
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
803
	@@:
804
	@@:
804
	mov ebx,dword[eax-8]
805
	mov ebx,dword[eax-8]
805
	add ebx,dword[eax-4]
806
	add ebx,dword[eax-4]
806
	cmp esi,ebx
807
	cmp esi,ebx
807
	jl @f
808
	jl @f
808
		dec dword[level_stack]
809
		dec dword[level_stack]
809
		sub eax,8
810
		sub eax,8
810
		cmp dword[level_stack],0
811
		cmp dword[level_stack],0
811
		jg @b
812
		jg @b
812
	@@:
813
	@@:
813
pop ebx
814
pop ebx
814
	ret
815
	ret
815
 
816
 
816
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
817
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
817
;input:
818
;input:
818
;esi - memory pointer
819
;esi - memory pointer
819
;output:
820
;output:
820
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
821
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
821
align 4
822
align 4
822
bl_found dd 0
823
bl_found dd 0
823
block_analiz:
824
block_analiz:
824
pushad
825
pushad
825
	mov dword[bl_found],0
826
	mov dword[bl_found],0
826
	mov ecx,type_bloks
827
	mov ecx,type_bloks
827
	@@:
828
	@@:
828
		mov bx,word[ecx]
829
		mov bx,word[ecx]
829
		cmp word[esi],bx
830
		cmp word[esi],bx
830
		je .found
831
		je .found
831
		add ecx,sizeof.block_3ds
832
		add ecx,sizeof.block_3ds
832
		cmp ecx,type_bloks.end
833
		cmp ecx,type_bloks.end
833
		jl @b
834
		jl @b
834
	jmp .no_found
835
	jmp .no_found
835
	.found:
836
	.found:
836
		mov dword[bl_found],ecx
837
		mov dword[bl_found],ecx
837
	.no_found:
838
	.no_found:
838
popad
839
popad
839
	ret
840
	ret
840
 
841
 
841
;input:
842
;input:
842
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
843
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
843
; icon - ­®¬¥à ¨ª®­ª¨
844
; icon - ­®¬¥à ¨ª®­ª¨
844
; level - ã஢¥­ì ¢«®¦¥­­®á⨠㧫 
845
; level - ã஢¥­ì ¢«®¦¥­­®á⨠㧫 
845
; size_bl - à §¬¥à ¡«®ª 
846
; size_bl - à §¬¥à ¡«®ª 
846
; info_bl - áâப  á ®¯¨á ­¨¥¬ ¡«®ª 
847
; info_bl - áâப  á ®¯¨á ­¨¥¬ ¡«®ª 
847
align 4
848
align 4
848
proc add_3ds_object, icon:dword, level:dword, size_bl:dword, info_bl:dword
849
proc add_3ds_object, icon:dword, level:dword, size_bl:dword, info_bl:dword
849
	pushad
850
	pushad
850
		mov bx,word[icon]
851
		mov bx,word[icon]
851
		shl ebx,16
852
		shl ebx,16
852
		mov bx,word[level]
853
		mov bx,word[level]
853
 
854
 
854
		mov eax,esi
855
		mov eax,esi
855
		sub eax,dword[open_file_data]
856
		sub eax,dword[open_file_data]
856
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
857
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
857
		mov ecx,dword[size_bl]
858
		mov ecx,dword[size_bl]
858
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
859
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
859
		mov ecx,dword[bl_found]
860
		mov ecx,dword[bl_found]
860
		or ecx,ecx
861
		or ecx,ecx
861
		jz @f
862
		jz @f
862
			;... §¤¥áì ­ã¦¥­ ¤à㣮©  «£®à¨â¬ § é¨âë ®â 㤠«¥­¨ï
863
			;... §¤¥áì ­ã¦¥­ ¤à㣮©  «£®à¨â¬ § é¨âë ®â 㤠«¥­¨ï
863
			mov cl,byte[ecx+4]
864
			mov cl,byte[ecx+4]
864
		@@:
865
		@@:
865
		mov byte[buffer+list_offs_chunk_del],cl
866
		mov byte[buffer+list_offs_chunk_del],cl
866
		mov ecx,[level]
867
		mov ecx,[level]
867
		mov byte[buffer+list_offs_chunk_lev],cl
868
		mov byte[buffer+list_offs_chunk_lev],cl
868
		mov ecx,dword[info_bl]
869
		mov ecx,dword[info_bl]
869
		mov dword[buffer+list_offs_p_data],ecx
870
		mov dword[buffer+list_offs_p_data],ecx
870
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
871
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
871
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
872
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
872
		or ecx,ecx
873
		or ecx,ecx
873
		jnz @f
874
		jnz @f
874
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­æ  áâப¨
875
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­æ  áâப¨
875
			jmp .no_capt
876
			jmp .no_capt
876
		@@:
877
		@@:
877
			mov byte[buffer+list_offs_text+4],' '
878
			mov byte[buffer+list_offs_text+4],' '
878
			mov esi,ecx
879
			mov esi,ecx
879
			mov edi,buffer+list_offs_text+5
880
			mov edi,buffer+list_offs_text+5
880
			mov ecx,size_one_list-(list_offs_text+5)
881
			mov ecx,size_one_list-(list_offs_text+5)
881
			cld
882
			cld
882
			rep movsb
883
			rep movsb
883
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­æ  áâப¨
884
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­æ  áâப¨
884
		.no_capt:
885
		.no_capt:
885
		stdcall [tl_node_add], tree1, ebx, buffer
886
		stdcall [tl_node_add], tree1, ebx, buffer
886
		stdcall [tl_cur_next], tree1
887
		stdcall [tl_cur_next], tree1
887
	popad
888
	popad
888
	ret
889
	ret
889
endp
890
endp
890
 
891
 
891
;input:
892
;input:
892
; eax - value
893
; eax - value
893
; buf - string buffer
894
; buf - string buffer
894
; len - buffer len
895
; len - buffer len
895
;output:
896
;output:
896
align 4
897
align 4
897
proc convert_int_to_str, buf:dword, len:dword
898
proc convert_int_to_str, buf:dword, len:dword
898
pushad
899
pushad
899
	mov edi,[buf]
900
	mov edi,[buf]
900
	mov esi,[len]
901
	mov esi,[len]
901
	add esi,edi
902
	add esi,edi
902
	dec esi
903
	dec esi
903
	call .str
904
	call .str
904
popad
905
popad
905
	ret
906
	ret
906
endp
907
endp
907
 
908
 
908
align 4
909
align 4
909
.str:
910
.str:
910
	mov ecx,10
911
	mov ecx,10
911
	cmp eax,ecx
912
	cmp eax,ecx
912
	jb @f
913
	jb @f
913
		xor edx,edx
914
		xor edx,edx
914
		div ecx
915
		div ecx
915
		push edx
916
		push edx
916
		call .str
917
		call .str
917
		pop eax
918
		pop eax
918
	@@:
919
	@@:
919
	cmp edi,esi
920
	cmp edi,esi
920
	jge @f
921
	jge @f
921
		or al,0x30
922
		or al,0x30
922
		stosb
923
		stosb
923
		mov byte[edi],0
924
		mov byte[edi],0
924
	@@:
925
	@@:
925
	ret
926
	ret
926
 
927
 
927
align 4
928
align 4
928
but_save_file:
929
but_save_file:
929
	pushad
930
	pushad
930
	copy_path open_dialog_name,communication_area_default_path,file_name,0
931
	copy_path open_dialog_name,communication_area_default_path,file_name,0
931
	mov [OpenDialog_data.type],1
932
	mov [OpenDialog_data.type],1
932
	stdcall [OpenDialog_Set_file_ext],OpenDialog_data,Filter.1 ;.3ds
933
	stdcall [OpenDialog_Set_file_ext],OpenDialog_data,Filter.1 ;.3ds
933
	stdcall [OpenDialog_Start],OpenDialog_data
934
	stdcall [OpenDialog_Start],OpenDialog_data
934
	cmp [OpenDialog_data.status],2
935
	cmp [OpenDialog_data.status],2
935
	je .end_save_file
936
	je .end_save_file
936
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
937
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
937
 
938
 
938
	mov [run_file_70.Function], SSF_CREATE_FILE
939
	mov [run_file_70.Function], SSF_CREATE_FILE
939
	mov [run_file_70.Position], 0
940
	mov [run_file_70.Position], 0
940
	mov [run_file_70.Flags], 0
941
	mov [run_file_70.Flags], 0
941
	mov ebx, dword[open_file_data]
942
	mov ebx, dword[open_file_data]
942
	mov [run_file_70.Buffer], ebx
943
	mov [run_file_70.Buffer], ebx
943
	mov ebx,dword[ebx+2]
944
	mov ebx,dword[ebx+2]
944
	mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
945
	mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
945
	mov byte[run_file_70+20], 0
946
	mov byte[run_file_70+20], 0
946
	mov dword[run_file_70.FileName], openfile_path
947
	mov dword[run_file_70.FileName], openfile_path
947
	mcall SF_FILE,run_file_70
948
	mcall SF_FILE,run_file_70
948
	cmp ebx,0xffffffff
949
	cmp ebx,0xffffffff
949
	je .end_save_file
950
	je .end_save_file
950
		;...á®®¡é¥­¨¥...
951
		;...á®®¡é¥­¨¥...
951
	.end_save_file:
952
	.end_save_file:
952
	popad
953
	popad
953
	ret
954
	ret
954
 
955
 
955
align 4
956
align 4
956
but_wnd_coords:
957
but_wnd_coords:
957
	cmp byte[prop_wnd_run],0
958
	cmp byte[prop_wnd_run],0
958
	jne @f
959
	jne @f
959
		pushad
960
		pushad
960
		mcall SF_CREATE_THREAD,1,prop_start,thread_coords
961
		mcall SF_CREATE_THREAD,1,prop_start,thread_coords
961
		popad
962
		popad
962
	@@:
963
	@@:
963
	ret
964
	ret
964
 
965
 
965
;description:
966
;description:
966
; 㤠«¥­¨¥ ¢ë¡à ­­®£® ¡«®ª  ¨§ ®âªàë⮣® ä ©« 
967
; 㤠«¥­¨¥ ¢ë¡à ­­®£® ¡«®ª  ¨§ ®âªàë⮣® ä ©« 
967
align 4
968
align 4
968
but_delete_chunk:
969
but_delete_chunk:
969
	pushad
970
	pushad
970
	stdcall [tl_node_get_data],tree1
971
	stdcall [tl_node_get_data],tree1
971
	cmp eax,0
972
	cmp eax,0
972
	je .end_f
973
	je .end_f
973
	cmp byte[eax+list_offs_chunk_del],0 ;¥á«¨ ¡«®ª § é¨é¥­ ®â 㤠«¥­¨ï
974
	cmp byte[eax+list_offs_chunk_del],0 ;¥á«¨ ¡«®ª § é¨é¥­ ®â 㤠«¥­¨ï
974
	jne .notify
975
	jne .notify
975
 
976
 
976
	;(1) ª®¯¨à®¢ ­¨¥ ­¨¦­¥© ç á⨠䠩« 
977
	;(1) ª®¯¨à®¢ ­¨¥ ­¨¦­¥© ç á⨠䠩« 
977
	mov edx,dword[eax+4] ;à §¬¥à ¡«®ª 
978
	mov edx,dword[eax+4] ;à §¬¥à ¡«®ª 
978
	sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
979
	sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
979
	mov ecx,[open_file_size]
980
	mov ecx,[open_file_size]
980
	mov ebx,dword[eax]
981
	mov ebx,dword[eax]
981
	sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
982
	sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
982
	add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
983
	add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
983
	mov edi,ebx
984
	mov edi,ebx
984
	mov esi,ebx
985
	mov esi,ebx
985
	add esi,edx
986
	add esi,edx
986
	mov bl,byte[eax+list_offs_chunk_lev] ;¡¥à¥¬ ã஢¥­ì ⥪ã饣® 㧫 
987
	mov bl,byte[eax+list_offs_chunk_lev] ;¡¥à¥¬ ã஢¥­ì ⥪ã饣® 㧫 
987
	rep movsb
988
	rep movsb
988
	mov byte[can_save],1
989
	mov byte[can_save],1
989
 
990
 
990
	;(2) ¨§¬¥­¥­¨¥ à §¬¥à®¢ த¨â¥«ìáª¨å ¡«®ª®¢
991
	;(2) ¨§¬¥­¥­¨¥ à §¬¥à®¢ த¨â¥«ìáª¨å ¡«®ª®¢
991
	cmp bl,0
992
	cmp bl,0
992
	je .end_2
993
	je .end_2
993
	.cycle_2:
994
	.cycle_2:
994
	stdcall [tl_cur_perv], tree1
995
	stdcall [tl_cur_perv], tree1
995
	stdcall [tl_node_get_data],tree1
996
	stdcall [tl_node_get_data],tree1
996
	cmp eax,0
997
	cmp eax,0
997
	je .end_2
998
	je .end_2
998
		cmp byte[eax+list_offs_chunk_lev],bl
999
		cmp byte[eax+list_offs_chunk_lev],bl
999
		jge .cycle_2
1000
		jge .cycle_2
1000
		mov bl,byte[eax+list_offs_chunk_lev]
1001
		mov bl,byte[eax+list_offs_chunk_lev]
1001
		mov ecx,[eax]
1002
		mov ecx,[eax]
1002
		add ecx,[open_file_data]
1003
		add ecx,[open_file_data]
1003
		sub dword[ecx+2],edx
1004
		sub dword[ecx+2],edx
1004
		cmp bl,0 ;¥á«¨ á ¬ë© ¢¥àå­¨© 㧥«, â® bl=0
1005
		cmp bl,0 ;¥á«¨ á ¬ë© ¢¥àå­¨© 㧥«, â® bl=0
1005
		jne .cycle_2
1006
		jne .cycle_2
1006
	.end_2:
1007
	.end_2:
1007
	
1008
	
1008
	;(3) ®¡­®¢«¥­¨¥ ᯨ᪠ tree1
1009
	;(3) ®¡­®¢«¥­¨¥ ᯨ᪠ tree1
1009
	call init_tree
1010
	call init_tree
1010
	call draw_window
1011
	call draw_window
1011
 
1012
 
1012
	jmp .end_f
1013
	jmp .end_f
1013
	.notify:
1014
	.notify:
1014
	notify_window_run txt_not_delete
1015
	notify_window_run txt_not_delete
1015
	.end_f:
1016
	.end_f:
1016
	popad
1017
	popad
1017
	ret
1018
	ret
1018
 
1019
 
1019
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
1020
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
1020
align 4
1021
align 4
1021
OpenDialog_data:
1022
OpenDialog_data:
1022
.type			dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
1023
.type			dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
1023
.procinfo		dd procinfo ;+4
1024
.procinfo		dd procinfo ;+4
1024
.com_area_name	dd communication_area_name ;+8
1025
.com_area_name	dd communication_area_name ;+8
1025
.com_area		dd 0 ;+12
1026
.com_area		dd 0 ;+12
1026
.opendir_path	dd plugin_path ;+16
1027
.opendir_path	dd plugin_path ;+16
1027
.dir_default_path	dd default_dir ;+20
1028
.dir_default_path	dd default_dir ;+20
1028
.start_path		dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
1029
.start_path		dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
1029
.draw_window	dd draw_window ;+28
1030
.draw_window	dd draw_window ;+28
1030
.status 		dd 0 ;+32
1031
.status 		dd 0 ;+32
1031
.openfile_path	dd openfile_path ;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
1032
.openfile_path	dd openfile_path ;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
1032
.filename_area	dd filename_area ;+40
1033
.filename_area	dd filename_area ;+40
1033
.filter_area	dd Filter
1034
.filter_area	dd Filter
1034
.x:
1035
.x:
1035
.x_size 		dw 420 ;+48 ; Window X size
1036
.x_size 		dw 420 ;+48 ; Window X size
1036
.x_start		dw 10 ;+50 ; Window X position
1037
.x_start		dw 10 ;+50 ; Window X position
1037
.y:
1038
.y:
1038
.y_size 		dw 320 ;+52 ; Window y size
1039
.y_size 		dw 320 ;+52 ; Window y size
1039
.y_start		dw 10 ;+54 ; Window Y position
1040
.y_start		dw 10 ;+54 ; Window Y position
1040
 
1041
 
1041
default_dir db '/rd/1',0
1042
default_dir db '/rd/1',0
1042
 
1043
 
1043
communication_area_name:
1044
communication_area_name:
1044
	db 'FFFFFFFF_open_dialog',0
1045
	db 'FFFFFFFF_open_dialog',0
1045
open_dialog_name:
1046
open_dialog_name:
1046
	db 'opendial',0
1047
	db 'opendial',0
1047
communication_area_default_path:
1048
communication_area_default_path:
1048
	db '/rd/1/File managers/',0
1049
	db '/rd/1/File managers/',0
1049
 
1050
 
1050
Filter:
1051
Filter:
1051
dd Filter.end - Filter.1
1052
dd Filter.end - Filter.1
1052
.1:
1053
.1:
1053
db '3DS',0
1054
db '3DS',0
1054
db 'STL',0
1055
db 'STL',0
1055
.3:
1056
.3:
1056
db 'PNG',0
1057
db 'PNG',0
1057
.end:
1058
.end:
1058
db 0
1059
db 0
1059
 
1060
 
1060
 
1061
 
1061
align 4
1062
align 4
1062
system_dir_0 db '/sys/lib/'
1063
system_dir_0 db '/sys/lib/'
1063
lib_name_0 db 'proc_lib.obj',0
1064
lib_name_0 db 'proc_lib.obj',0
1064
system_dir_1 db '/sys/lib/'
1065
system_dir_1 db '/sys/lib/'
1065
lib_name_1 db 'libimg.obj',0
1066
lib_name_1 db 'libimg.obj',0
1066
system_dir_2 db '/sys/lib/'
1067
system_dir_2 db '/sys/lib/'
1067
lib_name_2 db 'box_lib.obj',0
1068
lib_name_2 db 'box_lib.obj',0
1068
system_dir_3 db '/sys/lib/'
1069
system_dir_3 db '/sys/lib/'
1069
lib_name_3 db 'buf2d.obj',0
1070
lib_name_3 db 'buf2d.obj',0
1070
system_dir_4 db '/sys/lib/'
1071
system_dir_4 db '/sys/lib/'
1071
lib_name_4 db 'kmenu.obj',0
1072
lib_name_4 db 'kmenu.obj',0
1072
system_dir_5 db '/sys/lib/'
1073
system_dir_5 db '/sys/lib/'
1073
lib_name_5 db 'tinygl.obj',0
1074
lib_name_5 db 'tinygl.obj',0
1074
system_dir_6 db '/sys/lib/'
1075
system_dir_6 db '/sys/lib/'
1075
lib_name_6 db 'libini.obj',0
1076
lib_name_6 db 'libini.obj',0
1076
 
-
 
1077
if lang eq ru
-
 
1078
	head_f_i:
-
 
1079
	head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0
-
 
1080
	err_msg_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,'" -tE',0
-
 
1081
	err_msg_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,'" -tW',0
-
 
1082
	err_msg_found_lib_1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,'" -tE',0
-
 
1083
	err_msg_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,'" -tW',0
-
 
1084
	err_msg_found_lib_2 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,'" -tE',0
-
 
1085
	err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,'" -tW',0
-
 
1086
	err_msg_found_lib_3 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,'" -tE',0
-
 
1087
	err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,'" -tW',0
-
 
1088
	err_msg_found_lib_4 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'kmenu.obj',39,'" -tE',0
-
 
1089
	err_msg_import_4 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,'" -tW',0
-
 
1090
	err_msg_found_lib_5 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'tinygl.obj',39,'" -tE',0
-
 
1091
	err_msg_import_5 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,'" -tW',0
-
 
1092
	err_msg_found_lib_6 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libini.obj',39,'" -tE',0
-
 
1093
	err_msg_import_6 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libini',39,'" -tW',0
-
 
1094
else
-
 
1095
	head_f_i:
-
 
1096
	head_f_l db '"System error',0
-
 
1097
	err_msg_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0
-
 
1098
	err_msg_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tW',0
-
 
1099
	err_msg_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0
-
 
1100
	err_msg_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tW',0
-
 
1101
	err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'box_lib.obj',39,'" -tE',0
-
 
1102
	err_msg_import_2 db 'Error on load import library ',39,'box_lib.obj',39,'" -tW',0
-
 
1103
	err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'buf2d.obj',39,'" -tE',0
-
 
1104
	err_msg_import_3 db 'Error on load import library ',39,'buf2d.obj',39,'" -tW',0
-
 
1105
	err_msg_found_lib_4 db 'Sorry I cannot found library ',39,'kmenu.obj',39,'" -tE',0
-
 
1106
	err_msg_import_4 db 'Error on load import library ',39,'kmenu.obj',39,'" -tW',0
-
 
1107
	err_msg_found_lib_5 db 'Sorry I cannot found library ',39,'tinygl.obj',39,'" -tE',0
-
 
1108
	err_msg_import_5 db 'Error on load import library ',39,'tinygl',39,'" -tW',0
-
 
1109
	err_msg_found_lib_6 db 'Sorry I cannot found library ',39,'libini.obj',39,'" -tE',0
-
 
1110
	err_msg_import_6 db 'Error on load import library ',39,'libini',39,'" -tW',0
-
 
1111
end if
-
 
1112
 
1077
 
1113
align 4
1078
align 4
1114
l_libs_start:
1079
l_libs_start:
1115
	lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
-
 
1116
		err_msg_found_lib_0, head_f_l, proclib_import,err_msg_import_0,head_f_i
1080
	lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib
1117
	lib_1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
-
 
1118
		err_msg_found_lib_1, head_f_l, import_libimg, err_msg_import_1,head_f_i
1081
	lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg
1119
	lib_2 l_libs lib_name_2, sys_path, file_name,  system_dir_2,\
-
 
1120
		err_msg_found_lib_2, head_f_l, import_box_lib,err_msg_import_2,head_f_i
1082
	lib_2 l_libs lib_name_2, file_name, system_dir_2, import_box_lib
1121
	lib_3 l_libs lib_name_3, sys_path, file_name,  system_dir_3,\
-
 
1122
		err_msg_found_lib_3, head_f_l, import_buf2d,  err_msg_import_3,head_f_i
1083
	lib_3 l_libs lib_name_3, file_name, system_dir_3, import_buf2d
1123
	lib_4 l_libs lib_name_4, sys_path, file_name,  system_dir_4,\
-
 
1124
		err_msg_found_lib_4, head_f_l, import_libkmenu,err_msg_import_4,head_f_i
1084
	lib_4 l_libs lib_name_4, file_name, system_dir_4, import_libkmenu
1125
	lib_5 l_libs lib_name_5, sys_path, file_name,  system_dir_5,\
-
 
1126
		err_msg_found_lib_5, head_f_l, import_lib_tinygl,err_msg_import_5,head_f_i
1085
	lib_5 l_libs lib_name_5, file_name, system_dir_5, import_lib_tinygl
1127
	lib_6 l_libs lib_name_6, sys_path, file_name,  system_dir_6,\
-
 
1128
		err_msg_found_lib_6, head_f_l, import_libini, err_msg_import_6,head_f_i		
1086
	lib_6 l_libs lib_name_6, file_name, system_dir_6, import_libini	
1129
l_libs_end:
1087
l_libs_end:
1130
 
1088
 
1131
align 4
1089
align 4
1132
import_libimg:
1090
import_libimg:
1133
	dd alib_init1
1091
	dd alib_init1
1134
	img_is_img  dd aimg_is_img
1092
	img_is_img  dd aimg_is_img
1135
	img_info    dd aimg_info
1093
	img_info    dd aimg_info
1136
	img_from_file dd aimg_from_file
1094
	img_from_file dd aimg_from_file
1137
	img_to_file dd aimg_to_file
1095
	img_to_file dd aimg_to_file
1138
	img_from_rgb dd aimg_from_rgb
1096
	img_from_rgb dd aimg_from_rgb
1139
	img_to_rgb  dd aimg_to_rgb
1097
	img_to_rgb  dd aimg_to_rgb
1140
	img_to_rgb2 dd aimg_to_rgb2
1098
	img_to_rgb2 dd aimg_to_rgb2
1141
	img_decode  dd aimg_decode
1099
	img_decode  dd aimg_decode
1142
	img_encode  dd aimg_encode
1100
	img_encode  dd aimg_encode
1143
	img_create  dd aimg_create
1101
	img_create  dd aimg_create
1144
	img_destroy dd aimg_destroy
1102
	img_destroy dd aimg_destroy
1145
	img_destroy_layer dd aimg_destroy_layer
1103
	img_destroy_layer dd aimg_destroy_layer
1146
	img_count   dd aimg_count
1104
	img_count   dd aimg_count
1147
	img_lock_bits dd aimg_lock_bits
1105
	img_lock_bits dd aimg_lock_bits
1148
	img_unlock_bits dd aimg_unlock_bits
1106
	img_unlock_bits dd aimg_unlock_bits
1149
	img_flip    dd aimg_flip
1107
	img_flip    dd aimg_flip
1150
	img_flip_layer dd aimg_flip_layer
1108
	img_flip_layer dd aimg_flip_layer
1151
	img_rotate  dd aimg_rotate
1109
	img_rotate  dd aimg_rotate
1152
	img_rotate_layer dd aimg_rotate_layer
1110
	img_rotate_layer dd aimg_rotate_layer
1153
	img_draw    dd aimg_draw
1111
	img_draw    dd aimg_draw
1154
 
1112
 
1155
	dd 0,0
1113
	dd 0,0
1156
	alib_init1   db 'lib_init',0
1114
	alib_init1   db 'lib_init',0
1157
	aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
1115
	aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
1158
	aimg_info    db 'img_info',0
1116
	aimg_info    db 'img_info',0
1159
	aimg_from_file db 'img_from_file',0
1117
	aimg_from_file db 'img_from_file',0
1160
	aimg_to_file db 'img_to_file',0
1118
	aimg_to_file db 'img_to_file',0
1161
	aimg_from_rgb db 'img_from_rgb',0
1119
	aimg_from_rgb db 'img_from_rgb',0
1162
	aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
1120
	aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
1163
	aimg_to_rgb2 db 'img_to_rgb2',0
1121
	aimg_to_rgb2 db 'img_to_rgb2',0
1164
	aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
1122
	aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
1165
	aimg_encode  db 'img_encode',0
1123
	aimg_encode  db 'img_encode',0
1166
	aimg_create  db 'img_create',0
1124
	aimg_create  db 'img_create',0
1167
	aimg_destroy db 'img_destroy',0
1125
	aimg_destroy db 'img_destroy',0
1168
	aimg_destroy_layer db 'img_destroy_layer',0
1126
	aimg_destroy_layer db 'img_destroy_layer',0
1169
	aimg_count   db 'img_count',0
1127
	aimg_count   db 'img_count',0
1170
	aimg_lock_bits db 'img_lock_bits',0
1128
	aimg_lock_bits db 'img_lock_bits',0
1171
	aimg_unlock_bits db 'img_unlock_bits',0
1129
	aimg_unlock_bits db 'img_unlock_bits',0
1172
	aimg_flip    db 'img_flip',0
1130
	aimg_flip    db 'img_flip',0
1173
	aimg_flip_layer db 'img_flip_layer',0
1131
	aimg_flip_layer db 'img_flip_layer',0
1174
	aimg_rotate  db 'img_rotate',0
1132
	aimg_rotate  db 'img_rotate',0
1175
	aimg_rotate_layer db 'img_rotate_layer',0
1133
	aimg_rotate_layer db 'img_rotate_layer',0
1176
	aimg_draw    db 'img_draw',0
1134
	aimg_draw    db 'img_draw',0
1177
 
1135
 
1178
align 4
1136
align 4
1179
proclib_import:
1137
import_proclib:
1180
	OpenDialog_Init dd aOpenDialog_Init
1138
	OpenDialog_Init dd aOpenDialog_Init
1181
	OpenDialog_Start dd aOpenDialog_Start
1139
	OpenDialog_Start dd aOpenDialog_Start
1182
	OpenDialog_Set_file_name dd aOpenDialog_Set_file_name
1140
	OpenDialog_Set_file_name dd aOpenDialog_Set_file_name
1183
	OpenDialog_Set_file_ext dd aOpenDialog_Set_file_ext
1141
	OpenDialog_Set_file_ext dd aOpenDialog_Set_file_ext
1184
dd 0,0
1142
dd 0,0
1185
	aOpenDialog_Init db 'OpenDialog_init',0
1143
	aOpenDialog_Init db 'OpenDialog_init',0
1186
	aOpenDialog_Start db 'OpenDialog_start',0
1144
	aOpenDialog_Start db 'OpenDialog_start',0
1187
	aOpenDialog_Set_file_name db 'OpenDialog_set_file_name',0
1145
	aOpenDialog_Set_file_name db 'OpenDialog_set_file_name',0
1188
	aOpenDialog_Set_file_ext db 'OpenDialog_set_file_ext',0
1146
	aOpenDialog_Set_file_ext db 'OpenDialog_set_file_ext',0
1189
 
1147
 
1190
align 4
1148
align 4
1191
import_buf2d:
1149
import_buf2d:
1192
	dd sz_init0
1150
	dd sz_init0
1193
	buf2d_create dd sz_buf2d_create
1151
	buf2d_create dd sz_buf2d_create
1194
	buf2d_create_f_img dd sz_buf2d_create_f_img
1152
	buf2d_create_f_img dd sz_buf2d_create_f_img
1195
	buf2d_clear dd sz_buf2d_clear
1153
	buf2d_clear dd sz_buf2d_clear
1196
	buf2d_draw dd sz_buf2d_draw
1154
	buf2d_draw dd sz_buf2d_draw
1197
	buf2d_delete dd sz_buf2d_delete
1155
	buf2d_delete dd sz_buf2d_delete
1198
	buf2d_resize dd sz_buf2d_resize
1156
	buf2d_resize dd sz_buf2d_resize
1199
	buf2d_line dd sz_buf2d_line
1157
	buf2d_line dd sz_buf2d_line
1200
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1158
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1201
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1159
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1202
	buf2d_circle dd sz_buf2d_circle
1160
	buf2d_circle dd sz_buf2d_circle
1203
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1161
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1204
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1162
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1205
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1163
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1206
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1164
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1207
	buf2d_bit_blt dd sz_buf2d_bit_blt
1165
	buf2d_bit_blt dd sz_buf2d_bit_blt
1208
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1166
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1209
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1167
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1210
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1168
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1211
	buf2d_draw_text dd sz_buf2d_draw_text
1169
	buf2d_draw_text dd sz_buf2d_draw_text
1212
	buf2d_crop_color dd sz_buf2d_crop_color
1170
	buf2d_crop_color dd sz_buf2d_crop_color
1213
	buf2d_offset_h dd sz_buf2d_offset_h
1171
	buf2d_offset_h dd sz_buf2d_offset_h
1214
	buf2d_set_pixel dd sz_buf2d_set_pixel
1172
	buf2d_set_pixel dd sz_buf2d_set_pixel
1215
	dd 0,0
1173
	dd 0,0
1216
	sz_init0 db 'lib_init',0
1174
	sz_init0 db 'lib_init',0
1217
	sz_buf2d_create db 'buf2d_create',0
1175
	sz_buf2d_create db 'buf2d_create',0
1218
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1176
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1219
	sz_buf2d_clear db 'buf2d_clear',0
1177
	sz_buf2d_clear db 'buf2d_clear',0
1220
	sz_buf2d_draw db 'buf2d_draw',0
1178
	sz_buf2d_draw db 'buf2d_draw',0
1221
	sz_buf2d_delete db 'buf2d_delete',0
1179
	sz_buf2d_delete db 'buf2d_delete',0
1222
	sz_buf2d_resize db 'buf2d_resize',0
1180
	sz_buf2d_resize db 'buf2d_resize',0
1223
	sz_buf2d_line db 'buf2d_line',0
1181
	sz_buf2d_line db 'buf2d_line',0
1224
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
1182
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
1225
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1183
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1226
	sz_buf2d_circle db 'buf2d_circle',0
1184
	sz_buf2d_circle db 'buf2d_circle',0
1227
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1185
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1228
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1186
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1229
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1187
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1230
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1188
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1231
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1189
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1232
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1190
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1233
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1191
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1234
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1192
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1235
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1193
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1236
	sz_buf2d_crop_color db 'buf2d_crop_color',0
1194
	sz_buf2d_crop_color db 'buf2d_crop_color',0
1237
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1195
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1238
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
1196
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
1239
 
1197
 
1240
align 4
1198
align 4
1241
import_box_lib:
1199
import_box_lib:
1242
	dd sz_init1
1200
	dd sz_init1
1243
	edit_box_draw dd sz_edit_box_draw
1201
	edit_box_draw dd sz_edit_box_draw
1244
	edit_box_key dd sz_edit_box_key
1202
	edit_box_key dd sz_edit_box_key
1245
	edit_box_mouse dd sz_edit_box_mouse
1203
	edit_box_mouse dd sz_edit_box_mouse
1246
	edit_box_set_text dd sz_edit_box_set_text
1204
	edit_box_set_text dd sz_edit_box_set_text
1247
	scrollbar_ver_draw dd sz_scrollbar_ver_draw
1205
	scrollbar_ver_draw dd sz_scrollbar_ver_draw
1248
	scrollbar_hor_draw dd sz_scrollbar_hor_draw
1206
	scrollbar_hor_draw dd sz_scrollbar_hor_draw
1249
 
1207
 
1250
	tl_data_init dd sz_tl_data_init
1208
	tl_data_init dd sz_tl_data_init
1251
	tl_data_clear dd sz_tl_data_clear
1209
	tl_data_clear dd sz_tl_data_clear
1252
	tl_info_clear dd sz_tl_info_clear
1210
	tl_info_clear dd sz_tl_info_clear
1253
	tl_key dd sz_tl_key
1211
	tl_key dd sz_tl_key
1254
	tl_mouse dd sz_tl_mouse
1212
	tl_mouse dd sz_tl_mouse
1255
	tl_draw dd sz_tl_draw
1213
	tl_draw dd sz_tl_draw
1256
	tl_info_undo dd sz_tl_info_undo
1214
	tl_info_undo dd sz_tl_info_undo
1257
	tl_info_redo dd sz_tl_info_redo
1215
	tl_info_redo dd sz_tl_info_redo
1258
	tl_node_add dd sz_tl_node_add
1216
	tl_node_add dd sz_tl_node_add
1259
	tl_node_set_data dd sz_tl_node_set_data
1217
	tl_node_set_data dd sz_tl_node_set_data
1260
	tl_node_get_data dd sz_tl_node_get_data
1218
	tl_node_get_data dd sz_tl_node_get_data
1261
	tl_node_delete dd sz_tl_node_delete
1219
	tl_node_delete dd sz_tl_node_delete
1262
	tl_node_move_up dd sz_tl_node_move_up
1220
	tl_node_move_up dd sz_tl_node_move_up
1263
	tl_node_move_down dd sz_tl_node_move_down
1221
	tl_node_move_down dd sz_tl_node_move_down
1264
	tl_cur_beg dd sz_tl_cur_beg
1222
	tl_cur_beg dd sz_tl_cur_beg
1265
	tl_cur_next dd sz_tl_cur_next
1223
	tl_cur_next dd sz_tl_cur_next
1266
	tl_cur_perv dd sz_tl_cur_perv
1224
	tl_cur_perv dd sz_tl_cur_perv
1267
	tl_node_close_open dd sz_tl_node_close_open
1225
	tl_node_close_open dd sz_tl_node_close_open
1268
	tl_node_lev_inc dd sz_tl_node_lev_inc
1226
	tl_node_lev_inc dd sz_tl_node_lev_inc
1269
	tl_node_lev_dec dd sz_tl_node_lev_dec
1227
	tl_node_lev_dec dd sz_tl_node_lev_dec
1270
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1228
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1271
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1229
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1272
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1230
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1273
 
1231
 
1274
	dd 0,0
1232
	dd 0,0
1275
	sz_init1 db 'lib_init',0
1233
	sz_init1 db 'lib_init',0
1276
	sz_edit_box_draw db 'edit_box',0
1234
	sz_edit_box_draw db 'edit_box',0
1277
	sz_edit_box_key db 'edit_box_key',0
1235
	sz_edit_box_key db 'edit_box_key',0
1278
	sz_edit_box_mouse db 'edit_box_mouse',0
1236
	sz_edit_box_mouse db 'edit_box_mouse',0
1279
	sz_edit_box_set_text db 'edit_box_set_text',0
1237
	sz_edit_box_set_text db 'edit_box_set_text',0
1280
	sz_scrollbar_ver_draw db 'scrollbar_v_draw',0
1238
	sz_scrollbar_ver_draw db 'scrollbar_v_draw',0
1281
	sz_scrollbar_hor_draw db 'scrollbar_h_draw',0
1239
	sz_scrollbar_hor_draw db 'scrollbar_h_draw',0
1282
 
1240
 
1283
	sz_tl_data_init db 'tl_data_init',0
1241
	sz_tl_data_init db 'tl_data_init',0
1284
	sz_tl_data_clear db 'tl_data_clear',0
1242
	sz_tl_data_clear db 'tl_data_clear',0
1285
	sz_tl_info_clear db 'tl_info_clear',0
1243
	sz_tl_info_clear db 'tl_info_clear',0
1286
	sz_tl_key db 'tl_key',0
1244
	sz_tl_key db 'tl_key',0
1287
	sz_tl_mouse db 'tl_mouse',0
1245
	sz_tl_mouse db 'tl_mouse',0
1288
	sz_tl_draw db 'tl_draw',0
1246
	sz_tl_draw db 'tl_draw',0
1289
	sz_tl_info_undo db 'tl_info_undo',0
1247
	sz_tl_info_undo db 'tl_info_undo',0
1290
	sz_tl_info_redo db 'tl_info_redo',0
1248
	sz_tl_info_redo db 'tl_info_redo',0
1291
	sz_tl_node_add db 'tl_node_add',0
1249
	sz_tl_node_add db 'tl_node_add',0
1292
	sz_tl_node_set_data db 'tl_node_set_data',0
1250
	sz_tl_node_set_data db 'tl_node_set_data',0
1293
	sz_tl_node_get_data db 'tl_node_get_data',0
1251
	sz_tl_node_get_data db 'tl_node_get_data',0
1294
	sz_tl_node_delete db 'tl_node_delete',0
1252
	sz_tl_node_delete db 'tl_node_delete',0
1295
	sz_tl_node_move_up db 'tl_node_move_up',0
1253
	sz_tl_node_move_up db 'tl_node_move_up',0
1296
	sz_tl_node_move_down db 'tl_node_move_down',0
1254
	sz_tl_node_move_down db 'tl_node_move_down',0
1297
	sz_tl_cur_beg db 'tl_cur_beg',0
1255
	sz_tl_cur_beg db 'tl_cur_beg',0
1298
	sz_tl_cur_next db 'tl_cur_next',0
1256
	sz_tl_cur_next db 'tl_cur_next',0
1299
	sz_tl_cur_perv db 'tl_cur_perv',0
1257
	sz_tl_cur_perv db 'tl_cur_perv',0
1300
	sz_tl_node_close_open db 'tl_node_close_open',0
1258
	sz_tl_node_close_open db 'tl_node_close_open',0
1301
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1259
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1302
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1260
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1303
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1261
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1304
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1262
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1305
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1263
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1306
 
1264
 
1307
align 4
1265
align 4
1308
import_libkmenu:
1266
import_libkmenu:
1309
	kmenu_init		       dd akmenu_init
1267
	kmenu_init		       dd akmenu_init
1310
	kmainmenu_draw		       dd akmainmenu_draw
1268
	kmainmenu_draw		       dd akmainmenu_draw
1311
	kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent
1269
	kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent
1312
	ksubmenu_new		       dd aksubmenu_new
1270
	ksubmenu_new		       dd aksubmenu_new
1313
	ksubmenu_delete 	       dd aksubmenu_delete
1271
	ksubmenu_delete 	       dd aksubmenu_delete
1314
	ksubmenu_draw		       dd aksubmenu_draw
1272
	ksubmenu_draw		       dd aksubmenu_draw
1315
	ksubmenu_add		       dd aksubmenu_add
1273
	ksubmenu_add		       dd aksubmenu_add
1316
	kmenuitem_new		       dd akmenuitem_new
1274
	kmenuitem_new		       dd akmenuitem_new
1317
	kmenuitem_delete	       dd akmenuitem_delete
1275
	kmenuitem_delete	       dd akmenuitem_delete
1318
	kmenuitem_draw		       dd akmenuitem_draw
1276
	kmenuitem_draw		       dd akmenuitem_draw
1319
dd 0,0
1277
dd 0,0
1320
	akmenu_init			db 'kmenu_init',0
1278
	akmenu_init			db 'kmenu_init',0
1321
	akmainmenu_draw 		db 'kmainmenu_draw',0
1279
	akmainmenu_draw 		db 'kmainmenu_draw',0
1322
	akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0
1280
	akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0
1323
	aksubmenu_new			db 'ksubmenu_new',0
1281
	aksubmenu_new			db 'ksubmenu_new',0
1324
	aksubmenu_delete		db 'ksubmenu_delete',0
1282
	aksubmenu_delete		db 'ksubmenu_delete',0
1325
	aksubmenu_draw			db 'ksubmenu_draw',0
1283
	aksubmenu_draw			db 'ksubmenu_draw',0
1326
	aksubmenu_add			db 'ksubmenu_add',0
1284
	aksubmenu_add			db 'ksubmenu_add',0
1327
	akmenuitem_new			db 'kmenuitem_new',0
1285
	akmenuitem_new			db 'kmenuitem_new',0
1328
	akmenuitem_delete		db 'kmenuitem_delete',0
1286
	akmenuitem_delete		db 'kmenuitem_delete',0
1329
	akmenuitem_draw 		db 'kmenuitem_draw',0
1287
	akmenuitem_draw 		db 'kmenuitem_draw',0
1330
 
1288
 
1331
align 4
1289
align 4
1332
import_lib_tinygl:
1290
import_lib_tinygl:
1333
macro E_LIB n
1291
macro E_LIB n
1334
{
1292
{
1335
	n dd sz_#n
1293
	n dd sz_#n
1336
}
1294
}
1337
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
1295
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
1338
	dd 0,0
1296
	dd 0,0
1339
macro E_LIB n
1297
macro E_LIB n
1340
{
1298
{
1341
	sz_#n db `n,0
1299
	sz_#n db `n,0
1342
}
1300
}
1343
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
1301
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
1344
 
1302
 
1345
align 4
1303
align 4
1346
import_libini:
1304
import_libini:
1347
	dd alib_init0
1305
	dd alib_init0
1348
	ini_get_str   dd aini_get_str
1306
	ini_get_str   dd aini_get_str
1349
	ini_get_int   dd aini_get_int
1307
	ini_get_int   dd aini_get_int
1350
	ini_get_color dd aini_get_color
1308
	ini_get_color dd aini_get_color
1351
dd 0,0
1309
dd 0,0
1352
	alib_init0     db 'lib_init',0
1310
	alib_init0     db 'lib_init',0
1353
	aini_get_str   db 'ini_get_str',0
1311
	aini_get_str   db 'ini_get_str',0
1354
	aini_get_int   db 'ini_get_int',0
1312
	aini_get_int   db 'ini_get_int',0
1355
	aini_get_color db 'ini_get_color',0
1313
	aini_get_color db 'ini_get_color',0
1356
 
1314
 
1357
align 4
1315
align 4
1358
mouse_dd dd 0
1316
mouse_dd dd 0
1359
last_time dd 0
1317
last_time dd 0
1360
 
1318
 
1361
align 4
1319
align 4
1362
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1320
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1363
.l: dw 205 ;+4 left
1321
.l: dw 205 ;+4 left
1364
.t: dw 35 ;+6 top
1322
.t: dw 35 ;+6 top
1365
.w: dd 340 ;+8 w
1323
.w: dd 340 ;+8 w
1366
.h: dd main_wnd_height-65 ;+12 h
1324
.h: dd main_wnd_height-65 ;+12 h
1367
.color: dd 0xffffd0 ;+16 color
1325
.color: dd 0xffffd0 ;+16 color
1368
	db 24 ;+20 bit in pixel
1326
	db 24 ;+20 bit in pixel
1369
 
1327
 
1370
align 4
1328
align 4
1371
buf_ogl:
1329
buf_ogl:
1372
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1330
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1373
	dw 3d_wnd_l,3d_wnd_t ;+4 left,top
1331
	dw 3d_wnd_l,3d_wnd_t ;+4 left,top
1374
.w: dd 3d_wnd_w
1332
.w: dd 3d_wnd_w
1375
.h: dd 3d_wnd_h
1333
.h: dd 3d_wnd_h
1376
	dd 0,24 ;+16 color,bit in pixel
1334
	dd 0,24 ;+16 color,bit in pixel
1377
 
1335
 
1378
align 4
1336
align 4
1379
buf_1:
1337
buf_1:
1380
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1338
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1381
	dw 0,0 ;+4 left,top
1339
	dw 0,0 ;+4 left,top
1382
	dd 128,144 ;+8 w,h
1340
	dd 128,144 ;+8 w,h
1383
	dd 0,24 ;+16 color,bit in pixel
1341
	dd 0,24 ;+16 color,bit in pixel
1384
 
1342
 
1385
align 4
1343
align 4
1386
el_focus dd tree1
1344
el_focus dd tree1
1387
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
1345
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
1388
	16,16, 0xffffff,0xb0d0ff,0x400040, 5,35,195-16,250, 16,list_offs_text,0,\
1346
	16,16, 0xffffff,0xb0d0ff,0x400040, 5,35,195-16,250, 16,list_offs_text,0,\
1389
	el_focus,w_scr_t1,0
1347
	el_focus,w_scr_t1,0
1390
 
1348
 
1391
align 4
1349
align 4
1392
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0,0,0, 1
1350
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0,0,0, 1
1393
 
1351
 
1394
align 4
1352
align 4
1395
qObj dd 0
1353
qObj dd 0
1396
 
1354
 
1397
light_position dd 0.0, 0.0, -2.0, 1.0 ;  á¯®«®¦¥­¨¥ ¨áâ®ç­¨ª  [0][1][2]
1355
light_position dd 0.0, 0.0, -2.0, 1.0 ;  á¯®«®¦¥­¨¥ ¨áâ®ç­¨ª  [0][1][2]
1398
	;[3] = (0.0 - ¡¥áª®­¥ç­® 㤠«¥­­ë© ¨áâ®ç­¨ª, 1.0 - ¨áâ®ç­¨ª á¢¥â  ­  ®¯à¥¤¥«¥­­®¬ à ááâ®ï­¨¨)
1356
	;[3] = (0.0 - ¡¥áª®­¥ç­® 㤠«¥­­ë© ¨áâ®ç­¨ª, 1.0 - ¨áâ®ç­¨ª á¢¥â  ­  ®¯à¥¤¥«¥­­®¬ à ááâ®ï­¨¨)
1399
light_dir dd 0.0,0.0,0.0 ;­ ¯à ¢«¥­¨¥ « ¬¯ë
1357
light_dir dd 0.0,0.0,0.0 ;­ ¯à ¢«¥­¨¥ « ¬¯ë
1400
 
1358
 
1401
mat_specular dd 0.3, 0.3, 0.3, 1.0 ; –¢¥â ¡«¨ª 
1359
mat_specular dd 0.3, 0.3, 0.3, 1.0 ; –¢¥â ¡«¨ª 
1402
mat_shininess dd 3.0 ;  §¬¥à ¡«¨ª  (®¡à â­ ï ¯à®¯®àæ¨ï)
1360
mat_shininess dd 3.0 ;  §¬¥à ¡«¨ª  (®¡à â­ ï ¯à®¯®àæ¨ï)
1403
white_light dd 0.8, 0.8, 0.8, 1.0 ; –¢¥â ¨ ¨­â¥­á¨¢­®áâì ®á¢¥é¥­¨ï, £¥­¥à¨à㥬®£® ¨áâ®ç­¨ª®¬
1361
white_light dd 0.8, 0.8, 0.8, 1.0 ; –¢¥â ¨ ¨­â¥­á¨¢­®áâì ®á¢¥é¥­¨ï, £¥­¥à¨à㥬®£® ¨áâ®ç­¨ª®¬
1404
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;  à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
1362
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;  à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
1405
 
1363
 
1406
if lang eq ru
1364
if lang eq ru
1407
capt db 'info 3ds ¢¥àá¨ï 29.09.20',0 ;¯®¤¯¨áì ®ª­ 
1365
capt db 'info 3ds ¢¥àá¨ï 29.09.20',0 ;¯®¤¯¨áì ®ª­ 
1408
else
1366
else
1409
capt db 'info 3ds version 29.09.20',0 ;window caption
1367
capt db 'info 3ds version 29.09.20',0 ;window caption
1410
end if
1368
end if
1411
 
1369
 
1412
align 16
1370
align 16
1413
i_end:
1371
i_end:
1414
	ctx1 rb 28 ;sizeof.TinyGLContext = 28
1372
	ctx1 rb 28 ;sizeof.TinyGLContext = 28
1415
	procinfo process_information
1373
	procinfo process_information
1416
	run_file_70 FileInfoBlock
1374
	run_file_70 FileInfoBlock
1417
	sc system_colors
1375
	sc system_colors
1418
	angle_x rd 1 ;ã£«ë ¯®¢®à®â  á業ë
1376
	angle_x rd 1 ;ã£«ë ¯®¢®à®â  á業ë
1419
	angle_y rd 1
1377
	angle_y rd 1
1420
	angle_z rd 1
1378
	angle_z rd 1
1421
	color_ox rd 1
1379
	color_ox rd 1
1422
	color_oy rd 1
1380
	color_oy rd 1
1423
	color_oz rd 1
1381
	color_oz rd 1
1424
	color_bk rd 3
1382
	color_bk rd 3
1425
	color_vert rd 1
1383
	color_vert rd 1
1426
	color_face rd 1
1384
	color_face rd 1
1427
	color_select rd 1
1385
	color_select rd 1
1428
	obj_poi_sel_c rd 1
1386
	obj_poi_sel_c rd 1
1429
	o3d obj_3d
1387
	o3d obj_3d
1430
	rb 2048
1388
	rb 2048
1431
align 16
1389
align 16
1432
thread_coords:
1390
thread_coords:
1433
	rb 2048
1391
	rb 2048
1434
align 16
1392
align 16
1435
stacktop:
1393
stacktop:
1436
	sys_path rb 2048
1394
	sys_path rb 2048
1437
	file_name rb 4096
1395
	file_name rb 4096
1438
	plugin_path rb 4096
1396
	plugin_path rb 4096
1439
	openfile_path rb 4096
1397
	openfile_path rb 4096
1440
	filename_area rb 256
1398
	filename_area rb 256
1441
mem:
1399
mem: