Subversion Repositories Kolibri OS

Rev

Rev 9568 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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