Subversion Repositories Kolibri OS

Rev

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

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