Subversion Repositories Kolibri OS

Rev

Rev 6060 | Rev 6083 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6060 Rev 6081
Line 1... Line 1...
1
use32
1
use32
2
	org 0x0
2
	org 0x0
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
4
	dd 1, start, i_end, mem, stacktop, 0, sys_path
4
	dd 1, start, i_end, mem, stacktop, file_name, sys_path
Line 5... Line 5...
5
 
5
 
6
include '../../macros.inc'
6
include '../../macros.inc'
-
 
7
include '../../proc32.inc'
7
include '../../proc32.inc'
8
include '../../kosfuncs.inc'
8
include '../../develop/libraries/box_lib/load_lib.mac'
9
include '../../develop/libraries/box_lib/load_lib.mac'
9
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
10
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
10
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
11
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
11
include '../../dll.inc'
12
include '../../dll.inc'
Line 53... Line 54...
53
image_data_toolbar dd 0
54
image_data_toolbar dd 0
54
;
55
;
55
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
56
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
56
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
57
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
57
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
58
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
58
IMAGE_CHUNKS_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*10+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
59
IMAGE_CHUNKS_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*12+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
59
;
60
;
60
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
61
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
Line 61... Line 62...
61
 
62
 
62
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
63
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
Line 74... Line 75...
74
	end if
75
	end if
Line 75... Line 76...
75
 
76
 
76
	stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
77
	stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
Line 77... Line 78...
77
	mov [buf],eax
78
	mov [buf],eax
78
 
79
 
79
	mov [run_file_70.Function], 0
80
	mov [run_file_70.Function], SSF_READ_FILE
80
	mov [run_file_70.Position], 0
81
	mov [run_file_70.Position], 0
81
	mov [run_file_70.Flags], 0
82
	mov [run_file_70.Flags], 0
82
	mov [run_file_70.Count], dword size
83
	mov [run_file_70.Count], dword size
83
	mov [run_file_70.Buffer], eax
84
	mov [run_file_70.Buffer], eax
84
	mov byte[run_file_70+20], 0
85
	mov byte[run_file_70+20], 0
85
	mov [run_file_70.FileName], file_name
86
	mov [run_file_70.FileName], file_name
86
	mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
87
	mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
87
	cmp ebx,0xffffffff
88
	cmp ebx,0xffffffff
88
	je @f
89
	je @f
89
		;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
90
		;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
Line 118... Line 119...
118
 
119
 
Line 119... Line 120...
119
include 'info_wnd_coords.inc'
120
include 'info_wnd_coords.inc'
120
 
121
 
-
 
122
align 4
-
 
123
start:
-
 
124
	;--- copy cmd line ---
-
 
125
	mov esi,file_name
-
 
126
	mov edi,openfile_path
-
 
127
@@:
-
 
128
	lodsd
-
 
129
	cmp eax,0
-
 
130
	je @f ;¢ë室, ¥á«¨ 0
-
 
131
	stosd
-
 
132
	jmp @b
-
 
133
@@:
121
align 4
134
	stosd
122
start:
135
 
123
	load_libraries l_libs_start,l_libs_end
136
	load_libraries l_libs_start,l_libs_end
124
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨
137
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨
125
	mov	ebp,lib_0
138
	mov	ebp,lib_0
126
	.test_lib_open:
139
	.test_lib_open:
127
	cmp	dword [ebp+ll_struc_size-4],0
140
	cmp	dword [ebp+ll_struc_size-4],0
128
	jz	@f
141
	jz	@f
129
		mcall -1 ;exit not correct
142
		mcall SF_TERMINATE_PROCESS ;exit not correct
130
	@@:
143
	@@:
131
	add ebp,ll_struc_size
144
	add ebp,ll_struc_size
132
	cmp ebp,l_libs_end
145
	cmp ebp,l_libs_end
133
	jl .test_lib_open
146
	jl .test_lib_open
-
 
147
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.sys_colors_new
134
	mcall 48,3,sc,sizeof.sys_colors_new
148
	mcall SF_SET_EVENTS_MASK,0x27
Line 135... Line 149...
135
	mcall 40,0x27
149
 
136
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
150
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
137
 
151
 
Line 253... Line 267...
253
	mov [color_bk],eax
267
	mov [color_bk],eax
254
	fild dword[color_bk]
268
	fild dword[color_bk]
255
	fdiv dword[fl255]
269
	fdiv dword[fl255]
256
	fstp dword[color_bk]
270
	fstp dword[color_bk]
Line 257... Line 271...
257
 
271
 
258
	mcall 26,9
272
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
Line 259... Line 273...
259
	mov [last_time],eax
273
	mov [last_time],eax
260
 
274
 
261
	stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
275
	stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
262
	stdcall [glEnable], GL_DEPTH_TEST
276
	stdcall [glEnable], GL_DEPTH_TEST
263
	stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ­®à¬ «¨ ®¤¨­ ª®¢®© ¢¥«¨ç¨­ë ¢® ¨§¡¥¦ ­¨¥  àâ¥ä ªâ®¢
277
	stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ­®à¬ «¨ ®¤¨­ ª®¢®© ¢¥«¨ç¨­ë ¢® ¨§¡¥¦ ­¨¥  àâ¥ä ªâ®¢
264
	stdcall [glClearColor], [color_bk+8],[color_bk+4],[color_bk],0.0
278
	stdcall [glClearColor], [color_bk+8],[color_bk+4],[color_bk],0.0
265
	stdcall [glShadeModel], GL_SMOOTH
279
	stdcall [glShadeModel], GL_SMOOTH
Line -... Line 280...
-
 
280
	stdcall [gluNewQuadric]
-
 
281
	mov [qObj],eax
-
 
282
 
-
 
283
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
-
 
284
	mov eax,[eax] ;eax -> ZBuffer
-
 
285
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
-
 
286
	mov dword[buf_ogl],eax
-
 
287
 
-
 
288
	;open file from cmd line
-
 
289
	cmp dword[openfile_path],0
266
	stdcall [gluNewQuadric]
290
	je @f
Line 267... Line 291...
267
	mov [qObj],eax
291
		call but_open_file.no_dlg
268
 
292
	@@:
269
	call draw_window
293
	call draw_window
270
 
294
 
271
align 4
295
align 4
272
still:
296
still:
273
	mcall 26,9
297
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
274
	mov ebx,[last_time]
298
	mov ebx,[last_time]
275
	add ebx,10 ;§ ¤¥à¦ª 
299
	add ebx,10 ;§ ¤¥à¦ª 
276
	cmp ebx,eax
300
	cmp ebx,eax
277
	jge @f
301
	jge @f
278
		mov ebx,eax
302
		mov ebx,eax
279
	@@:
303
	@@:
Line 280... Line 304...
280
	sub ebx,eax
304
	sub ebx,eax
281
	mcall 23
305
	mcall SF_WAIT_EVENT_TIMEOUT
Line 291... Line 315...
291
	jz key
315
	jz key
292
	cmp al,3
316
	cmp al,3
293
	jz button
317
	jz button
294
	cmp al,6
318
	cmp al,6
295
	jne @f
319
	jne @f
296
		mcall 9,procinfo,-1
320
		mcall SF_THREAD_INFO,procinfo,-1
297
		cmp ax,word[procinfo+4]
321
		cmp ax,word[procinfo+4]
298
		jne @f ;®ª­® ­¥  ªâ¨¢­®
322
		jne @f ;®ª­® ­¥  ªâ¨¢­®
299
		call mouse
323
		call mouse
300
	@@:
324
	@@:
301
	jmp still
325
	jmp still
Line 306... Line 330...
306
	ret
330
	ret
Line 307... Line 331...
307
 
331
 
308
align 4
332
align 4
309
timer_funct:
333
timer_funct:
310
	pushad
334
	pushad
311
	mcall 26,9
335
	mcall SF_SYSTEM_GET,SSF_TIME_COUNT
Line 312... Line 336...
312
	mov [last_time],eax
336
	mov [last_time],eax
313
 
337
 
314
	;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå
338
	;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå
315
	stdcall [tl_node_get_data],tree1
339
	stdcall [tl_node_get_data],tree1
316
	cmp eax,0
340
	cmp eax,0
317
	je @f
341
	je @f
318
		mov ebx,eax
342
		mov ebx,eax
319
		mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
343
		mov eax,dword[ebx]
320
		mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
344
		mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
Line 321... Line 345...
321
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
345
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
322
		stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
346
		stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
323
 
347
 
324
		add eax,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
348
		add eax,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
325
		cmp dword[offs_last_timer],eax
349
		cmp dword[offs_last_timer],eax
326
		je @f
350
		je @f
327
			;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
351
			;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
328
			mov dword[offs_last_timer],eax
352
			mov dword[offs_last_timer],eax
329
			call buf_draw_beg
353
			stdcall buf_draw_beg, buf_0
330
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
354
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
331
			mov edx,dword[ebx+list_offs_p_data]
355
			mov edx,dword[ebx+list_offs_p_data]
Line 339... Line 363...
339
	@@:
363
	@@:
340
	popad
364
	popad
341
	jmp still
365
	jmp still
Line 342... Line 366...
342
 
366
 
343
align 4
-
 
344
buf_draw_beg:
-
 
345
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
-
 
346
	stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
-
 
347
	stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
-
 
348
	cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
-
 
349
	jne @f
-
 
350
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
-
 
351
	@@:
-
 
352
	ret
-
 
353
 
-
 
354
align 4
367
align 4
355
proc buf_draw_hex_table, offs:dword, size_line:dword
368
proc buf_draw_hex_table, offs:dword, size_line:dword
356
	pushad
369
	pushad
357
	locals
370
	locals
358
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
371
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
Line 406... Line 419...
406
endp
419
endp
Line 407... Line 420...
407
 
420
 
408
align 4
421
align 4
409
draw_window:
422
draw_window:
410
pushad
423
pushad
411
	mcall 12,1
424
	mcall SF_REDRAW,SSF_BEGIN_DRAW
412
	xor eax,eax
425
	xor eax,eax
413
	mov edx,[sc.work]
426
	mov edx,[sc.work]
414
	or  edx,0x33000000
427
	or  edx,0x33000000
415
	mov edi,capt
428
	mov edi,capt
Line 416... Line 429...
416
	mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height
429
	mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height
417
 
430
 
418
	mcall 9,procinfo,-1
431
	mcall SF_THREAD_INFO,procinfo,-1
419
	mov eax,dword[procinfo.box.height]
432
	mov eax,dword[procinfo.box.height]
420
	cmp eax,250
433
	cmp eax,250
421
	jge @f
434
	jge @f
Line 442... Line 455...
442
	mov word[w_scr_t1.x_pos],ax
455
	mov word[w_scr_t1.x_pos],ax
443
	add ax,16+5
456
	add ax,16+5
444
	mov word[buf_0.l],ax
457
	mov word[buf_0.l],ax
Line 445... Line 458...
445
 
458
 
446
	mov esi,[sc.work_button]
459
	mov esi,[sc.work_button]
447
	mcall 8,(5 shl 16)+20,(5 shl 16)+20,3
-
 
448
 
460
	mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,3
449
	mov ebx,(30 shl 16)+20
-
 
450
	mov edx,4
-
 
Line 451... Line 461...
451
	int 0x40
461
	mcall ,(30 shl 16)+20,,4
452
 
462
 
453
	cmp byte[can_save],0
463
	cmp byte[can_save],0
454
	je @f
-
 
455
		mov ebx,(55 shl 16)+20
-
 
456
		mov edx,5
464
	je @f
457
		int 0x40
-
 
458
	@@:
465
		mcall ,(55 shl 16)+20,,5
459
 
466
	@@:
Line 460... Line 467...
460
	mcall ,(85 shl 16)+20,,6 ;®ª­® á ª®®à¤¨­ â ¬¨
467
	mcall ,(85 shl 16)+20,,6 ;®ª­® á ª®®à¤¨­ â ¬¨
Line 461... Line 468...
461
	mcall ,(110 shl 16)+20,,7 ;㤠«¥­¨¥ ¡«®ª 
468
	mcall ,(110 shl 16)+20,,7 ;㤠«¥­¨¥ ¡«®ª 
462
 
469
 
463
	mcall 7,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;new
470
	mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;new
Line 485... Line 492...
485
	mov dword[w_scr_t1.all_redraw],1
492
	mov dword[w_scr_t1.all_redraw],1
486
	stdcall [tl_draw],dword tree1
493
	stdcall [tl_draw],dword tree1
Line 487... Line 494...
487
 
494
 
Line 488... Line 495...
488
	stdcall [buf2d_draw], buf_0
495
	stdcall [buf2d_draw], buf_0
489
 
496
 
490
	mcall 12,2
497
	mcall SF_REDRAW,SSF_END_DRAW
Line 491... Line 498...
491
popad
498
popad
492
	ret
499
	ret
493
 
500
 
494
align 4
501
align 4
495
key:
502
key:
Line 496... Line 503...
496
	mcall 2
503
	mcall SF_GET_KEY
497
	stdcall [tl_key], dword tree1
504
	stdcall [tl_key], dword tree1
498
	jmp still
505
	jmp still
499
 
506
 
500
 
507
 
501
align 4
508
align 4
502
button:
509
button:
503
	mcall 17
510
	mcall SF_GET_BUTTON
Line 536... Line 543...
536
	stdcall [buf2d_delete],buf_0
543
	stdcall [buf2d_delete],buf_0
537
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
544
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
538
	stdcall mem.Free,[image_data_toolbar]
545
	stdcall mem.Free,[image_data_toolbar]
539
	stdcall mem.Free,[open_file_data]
546
	stdcall mem.Free,[open_file_data]
540
	stdcall [gluDeleteQuadric], [qObj]
547
	stdcall [gluDeleteQuadric], [qObj]
541
	mcall -1
548
	mcall SF_TERMINATE_PROCESS
Line 542... Line 549...
542
 
549
 
543
 
550
 
544
align 4
551
align 4
Line 557... Line 564...
557
	mov [OpenDialog_data.type],0
564
	mov [OpenDialog_data.type],0
558
	stdcall [OpenDialog_Start],OpenDialog_data
565
	stdcall [OpenDialog_Start],OpenDialog_data
559
	cmp [OpenDialog_data.status],2
566
	cmp [OpenDialog_data.status],2
560
	je .end_open_file
567
	je .end_open_file
561
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
568
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
-
 
569
	jmp @f
-
 
570
.no_dlg: ;¥á«¨ ¬¨­ã¥¬ ¤¨ «®£ ®âªàëâ¨ï ä ©« 
-
 
571
		pushad
562
 
572
	@@:
563
    mov [run_file_70.Function], 5
573
    mov [run_file_70.Function], SSF_GET_INFO
564
    mov [run_file_70.Position], 0
574
    mov [run_file_70.Position], 0
565
    mov [run_file_70.Flags], 0
575
    mov [run_file_70.Flags], 0
566
    mov dword[run_file_70.Count], 0
576
    mov dword[run_file_70.Count], 0
567
    mov dword[run_file_70.Buffer], open_b
577
    mov dword[run_file_70.Buffer], open_b
568
    mov byte[run_file_70+20], 0
578
    mov byte[run_file_70+20], 0
569
    mov dword[run_file_70.FileName], openfile_path
579
    mov dword[run_file_70.FileName], openfile_path
570
    mcall 70,run_file_70
580
    mcall SF_FILE,run_file_70
Line 571... Line 581...
571
 
581
 
572
    mov ecx,dword[open_b+32] ;+32 qword: à §¬¥à ä ©«  ¢ ¡ ©â å
582
    mov ecx,dword[open_b+32] ;+32 qword: à §¬¥à ä ©«  ¢ ¡ ©â å
573
    stdcall mem.ReAlloc,[open_file_data],ecx
583
    stdcall mem.ReAlloc,[open_file_data],ecx
Line 574... Line 584...
574
    mov [open_file_data],eax
584
    mov [open_file_data],eax
575
    
585
    
576
    mov [run_file_70.Function], 0
586
    mov [run_file_70.Function], SSF_READ_FILE
577
    mov [run_file_70.Position], 0
587
    mov [run_file_70.Position], 0
578
    mov [run_file_70.Flags], 0
588
    mov [run_file_70.Flags], 0
579
    mov dword[run_file_70.Count], ecx
589
    mov dword[run_file_70.Count], ecx
580
    m2m dword[run_file_70.Buffer], dword[open_file_data]
590
    m2m dword[run_file_70.Buffer], dword[open_file_data]
581
    mov byte[run_file_70+20], 0
591
    mov byte[run_file_70+20], 0
582
    mov dword[run_file_70.FileName], openfile_path
592
    mov dword[run_file_70.FileName], openfile_path
583
    mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
593
    mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
Line 584... Line 594...
584
    cmp ebx,0xffffffff
594
    cmp ebx,0xffffffff
585
    je .end_open_file
595
    je .end_open_file
Line 586... Line 596...
586
 
596
 
587
	mov [open_file_size],ebx
597
	mov [open_file_size],ebx
588
	;mcall 71,1,openfile_path
598
		;mcall SF_SET_CAPTION,1,openfile_path
589
 
599
 
Line 606... Line 616...
606
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
616
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
Line 607... Line 617...
607
 
617
 
608
	mov esi,dword[open_file_data]
618
	mov esi,dword[open_file_data]
609
	cmp word[esi],CHUNK_MAIN
619
	cmp word[esi],CHUNK_MAIN
610
	je @f
620
	je @f
611
		call buf_draw_beg
621
		stdcall buf_draw_beg, buf_0
612
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
622
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
613
		jmp .end_open
623
		jmp .end_open
614
	@@:
624
	@@:
615
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
625
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
Line 657... Line 667...
657
	.end_open:
667
	.end_open:
658
	ret
668
	ret
Line 659... Line 669...
659
 
669
 
660
; ­ «¨§ ¤ ­­ëå ¡«®ª 
670
; ­ «¨§ ¤ ­­ëå ¡«®ª 
-
 
671
;input:
661
;input:
672
; eax - stack pointer
662
; esi - memory pointer
673
; esi - memory pointer
663
;output:
674
;output:
664
; eax - new stack pointer
675
; eax - new stack pointer
665
; esi - new memory pointer
676
; esi - new memory pointer
Line 714... Line 725...
714
			stdcall add_3ds_object, ID_ICON_DATA,ebx,eax,0 ;¤ ­­ë¥ £à ­¥©
725
			stdcall add_3ds_object, ID_ICON_DATA,ebx,eax,0 ;¤ ­­ë¥ £à ­¥©
Line 715... Line 726...
715
 
726
 
716
			sub ecx,eax
727
			sub ecx,eax
717
			cmp ecx,1
728
			cmp ecx,1
-
 
729
			jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
-
 
730
if 0
-
 
731
				add esi,eax
-
 
732
				mov ecx,dword[esi+2]
-
 
733
				stdcall add_3ds_object, 10,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
-
 
734
				sub esi,eax
718
			jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
735
else
719
				add esi,eax
736
				add esi,eax
720
				pop eax
737
				pop eax
721
				jmp .next_bl
-
 
722
				;stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
-
 
-
 
738
				jmp .next_bl
723
				;sub esi,eax ;¢®ááâ ­®¢«¥­¨¥ esi
739
end if
Line 724... Line 740...
724
			.data_3:
740
			.data_3:
725
 
741
 
726
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
742
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
Line 927... Line 943...
927
		mov byte[edi],0
943
		mov byte[edi],0
928
	@@:
944
	@@:
929
	ret
945
	ret
Line 930... Line 946...
930
 
946
 
931
align 4
-
 
932
proc hex_in_str, buf:dword,val:dword,zif:dword
-
 
933
	pushad
-
 
934
		mov edi,dword[buf]
-
 
935
		mov ecx,dword[zif]
-
 
936
		add edi,ecx
-
 
937
		dec edi
-
 
938
		mov ebx,dword[val]
-
 
939
 
-
 
940
		.cycle:
-
 
941
			mov al,bl
-
 
942
			and al,0xf
-
 
943
			cmp al,10
-
 
944
			jl @f
-
 
945
				add al,'a'-'0'-10
-
 
946
			@@:
-
 
947
			add al,'0'
-
 
948
			mov byte[edi],al
-
 
949
			dec edi
-
 
950
			shr ebx,4
-
 
951
		loop .cycle
-
 
952
 
-
 
953
	popad
-
 
954
	ret
-
 
955
endp
-
 
956
 
-
 
957
align 4
947
align 4
958
but_save_file:
948
but_save_file:
959
	pushad
949
	pushad
960
	copy_path open_dialog_name,communication_area_default_path,file_name,0
950
	copy_path open_dialog_name,communication_area_default_path,file_name,0
961
	mov [OpenDialog_data.type],1
951
	mov [OpenDialog_data.type],1
962
	stdcall [OpenDialog_Start],OpenDialog_data
952
	stdcall [OpenDialog_Start],OpenDialog_data
963
	cmp [OpenDialog_data.status],2
953
	cmp [OpenDialog_data.status],2
964
	je .end_save_file
954
	je .end_save_file
Line 965... Line 955...
965
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
955
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
966
 
956
 
967
	mov [run_file_70.Function], 2
957
	mov [run_file_70.Function], SSF_CREATE_FILE
968
	mov [run_file_70.Position], 0
958
	mov [run_file_70.Position], 0
969
	mov [run_file_70.Flags], 0
959
	mov [run_file_70.Flags], 0
970
	mov ebx, dword[open_file_data]
960
	mov ebx, dword[open_file_data]
971
	mov [run_file_70.Buffer], ebx
961
	mov [run_file_70.Buffer], ebx
972
	mov ebx,dword[ebx+2]
962
	mov ebx,dword[ebx+2]
973
	mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
963
	mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
974
	mov byte[run_file_70+20], 0
964
	mov byte[run_file_70+20], 0
975
	mov dword[run_file_70.FileName], openfile_path
965
	mov dword[run_file_70.FileName], openfile_path
976
	mcall 70,run_file_70
966
	mcall SF_FILE,run_file_70
977
	cmp ebx,0xffffffff
967
	cmp ebx,0xffffffff
978
	je .end_save_file
968
	je .end_save_file
979
		;...á®®¡é¥­¨¥...
969
		;...á®®¡é¥­¨¥...
Line 984... Line 974...
984
align 4
974
align 4
985
but_wnd_coords:
975
but_wnd_coords:
986
	cmp byte[prop_wnd_run],0
976
	cmp byte[prop_wnd_run],0
987
	jne @f
977
	jne @f
988
		pushad
978
		pushad
989
		mcall 51,1,prop_start,thread_coords
979
		mcall SF_CREATE_THREAD,1,prop_start,thread_coords
990
		popad
980
		popad
991
	@@:
981
	@@:
992
	ret
982
	ret
Line 993... Line 983...
993
 
983
 
Line 1004... Line 994...
1004
 
994
 
1005
	;(1) ª®¯¨à®¢ ­¨¥ ­¨¦­¥© ç á⨠䠩« 
995
	;(1) ª®¯¨à®¢ ­¨¥ ­¨¦­¥© ç á⨠䠩« 
1006
	mov edx,dword[eax+4] ;à §¬¥à ¡«®ª 
996
	mov edx,dword[eax+4] ;à §¬¥à ¡«®ª 
1007
	sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
997
	sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
1008
	mov ecx,[open_file_size]
998
	mov ecx,[open_file_size]
1009
	mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
999
	mov ebx,dword[eax]
1010
	sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
1000
	sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
1011
	add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
1001
	add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
1012
	mov edi,ebx
1002
	mov edi,ebx
1013
	mov esi,ebx
1003
	mov esi,ebx
Line 1427... Line 1417...
1427
mat_shininess dd 3.0 ;  §¬¥à ¡«¨ª  (®¡à â­ ï ¯à®¯®àæ¨ï)
1417
mat_shininess dd 3.0 ;  §¬¥à ¡«¨ª  (®¡à â­ ï ¯à®¯®àæ¨ï)
1428
white_light dd 0.8, 0.8, 0.8, 1.0 ; –¢¥â ¨ ¨­â¥­á¨¢­®áâì ®á¢¥é¥­¨ï, £¥­¥à¨à㥬®£® ¨áâ®ç­¨ª®¬
1418
white_light dd 0.8, 0.8, 0.8, 1.0 ; –¢¥â ¨ ¨­â¥­á¨¢­®áâì ®á¢¥é¥­¨ï, £¥­¥à¨à㥬®£® ¨áâ®ç­¨ª®¬
1429
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;  à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
1419
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;  à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
Line 1430... Line 1420...
1430
 
1420
 
1431
if lang eq ru
1421
if lang eq ru
1432
capt db 'info 3ds ¢¥àá¨ï 16.01.16',0 ;¯®¤¯¨áì ®ª­ 
1422
capt db 'info 3ds ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª­ 
1433
else
1423
else
1434
capt db 'info 3ds version 16.01.16',0 ;window caption
1424
capt db 'info 3ds version 19.01.16',0 ;window caption
Line 1435... Line 1425...
1435
end if
1425
end if
1436
 
1426
 
1437
align 16
1427
align 16