Subversion Repositories Kolibri OS

Rev

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

Rev 2052 Rev 2080
Line 18... Line 18...
18
include 'lang.inc'
18
include 'lang.inc'
Line 19... Line 19...
19
 
19
 
Line 20... Line 20...
20
debug equ 0
20
debug equ 0
21
 
21
 
Line 22... Line 22...
22
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
22
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
23
capt db 'info 3ds 18.08.11',0 ;¯®¤¯¨áì ®ª­ 
23
capt db 'info 3ds 20.08.11',0 ;¯®¤¯¨áì ®ª­ 
24
 
24
 
25
struct FileInfoBlock
25
struct FileInfoBlock
Line 43... Line 43...
43
image_data_toolbar dd 0
43
image_data_toolbar dd 0
44
;
44
;
45
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
45
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
46
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
46
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
47
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
47
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
48
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*6+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
48
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
49
;
49
;
50
IMAGE_FILE1_SIZE equ 128*144*3 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬ 640 x 480
50
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
Line 51... Line 51...
51
 
51
 
52
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
52
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
53
	;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
53
	;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
54
	if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
54
	if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
Line 87... Line 87...
87
		stdcall dword[img_destroy], dword[image_data]
87
		stdcall dword[img_destroy], dword[image_data]
88
	@@:
88
	@@:
89
}
89
}
Line 90... Line 90...
90
 
90
 
91
;--------------------------------------
91
;--------------------------------------
Line 92... Line 92...
92
sizeof.block_3ds equ 5
92
sizeof.block_3ds equ 9
93
 
93
 
94
macro block_3ds id,icon,par
94
macro block_3ds id,icon,par,caption
95
{
95
{
96
	dw id ;¨¤¥­â¨ä¨ª â®à ¡«®ª  ¢ ä ©«¥ 3ds
96
	dw id ;+0 ¨¤¥­â¨ä¨ª â®à ¡«®ª  ¢ ä ©«¥ 3ds
-
 
97
	dw icon ;+2 ­®¬¥à ¨ª®­ª¨ ¤«ï ¡«®ª 
97
	dw icon ;­®¬¥à ¨ª®­ª¨ ¤«ï ¡«®ª 
98
	db par ;+4 ᮤ¥à¦¨â «¨ ¡«®ª ¯®¤¡«®ª¨ (0-¤  1-­¥â)
Line 98... Line 99...
98
	db par ;ᮤ¥à¦¨â «¨ ¡«®ª ¯®¤¡«®ª¨ (0-¤  1-­¥â)
99
	dd caption+0 ;+5 ®¯¨á ­¨¥ ¡«®ª 
99
}
100
}
100
 
101
 
Line 139... Line 140...
139
 
140
 
Line 140... Line 141...
140
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
141
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
141
 
142
 
142
align 4
143
align 4
143
type_bloks:
144
type_bloks:
144
block_3ds 0x0002,5,1 ;¨­ä®à¬ æ¨ï ® ¢¥àᨨ ä ©« 
145
block_3ds 0x0002,5,1,txt_0002
145
block_3ds 0x3d3e,5,1 ;mesh version
146
block_3ds 0x3d3e,5,1 ;mesh version
146
block_3ds 0xA010,4,0 ;material ambient color
147
block_3ds 0xA010,4,0 ;material ambient color
147
block_3ds 0xA020,4,0 ;material diffuse color
148
block_3ds 0xA020,4,0 ;material diffuse color
148
block_3ds 0xA030,4,0 ;material specular color
149
block_3ds 0xA030,4,0 ;material specular color
149
block_3ds CHUNK_color_1,     4,1 ; [+] 梥â rgb (byte format)
150
block_3ds CHUNK_color_1,     4,1 ; [+] 梥â rgb (byte format)
150
block_3ds CHUNK_ambient_color,3,0 ; [-] ambient color
151
block_3ds CHUNK_ambient_color,3,0 ; [-] ambient color
151
block_3ds CHUNK_OBJMESH,     3,0 ; [-] ¢áïç¥áª¨¥ ®¡ê¥ªâë
152
block_3ds CHUNK_OBJMESH,     3,0 ; [-] ¢áïç¥áª¨¥ ®¡ê¥ªâë
152
block_3ds CHUNK_OBJBLOCK,    3,1 ; [+] ®¡ê¥ªâ
153
block_3ds CHUNK_OBJBLOCK,    3,1,txt_4000
153
block_3ds CHUNK_TRIMESH,     3,0 ; [-] trimesh-®¡ê¥ªâ
154
block_3ds CHUNK_TRIMESH,     3,0 ; [-] trimesh-®¡ê¥ªâ
154
block_3ds CHUNK_VERTLIST,    3,1 ; [+] ᯨ᮪ ¢¥à設
155
block_3ds CHUNK_VERTLIST,    3,1,txt_4110
155
block_3ds CHUNK_FACELIST,    3,1 ; [+] ᯨ᮪ £à ­¥©
156
block_3ds CHUNK_FACELIST,    3,1,txt_4120
156
block_3ds CHUNK_FACEMAT,     3,1 ; [+] ¬ â¥à¨ «ë £à ­¥©
157
block_3ds CHUNK_FACEMAT,     3,1 ; [+] ¬ â¥à¨ «ë £à ­¥©
157
block_3ds CHUNK_MAPLIST,     3,1 ; [+] ⥪áâãà­ë¥ ª®®à¤¨­ âë
158
block_3ds CHUNK_MAPLIST,     3,1 ; [+] ⥪áâãà­ë¥ ª®®à¤¨­ âë
-
 
159
block_3ds CHUNK_TRMATRIX,    3,1 ; [+] ¬ âà¨æ  ¯¥à¥¢®¤ 
158
block_3ds CHUNK_TRMATRIX,    3,1 ; [+] ¬ âà¨æ  ¯¥à¥¢®¤ 
160
block_3ds CHUNK_CAMERA,      3,1 ; [+] ®¡ê¥ªâ-ª ¬¥à 
159
block_3ds CHUNK_CAMERA,      3,1 ; [+] ®¡ê¥ªâ-ª ¬¥à 
161
block_3ds 0x4600,3,1,txt_4600
160
block_3ds CHUNK_MATERIAL,    3,0 ; [-] ¬ â¥à¨ «
162
block_3ds CHUNK_MATERIAL,    3,0,txt_afff
161
block_3ds CHUNK_MATNAME,     3,1 ; [+] ­ §¢ ­¨¥ ¬ â¥à¨ « 
163
block_3ds CHUNK_MATNAME,     3,1,txt_a000
162
block_3ds CHUNK_TEXTURE,     3,0 ; [-] ⥪áâãà  ¬ â¥à¨ « 
164
block_3ds CHUNK_TEXTURE,     3,0,txt_a200
163
block_3ds CHUNK_MAPFILE,     3,1 ; [+] ¨¬ï ä ©«  ⥪áâãàë
165
block_3ds CHUNK_MAPFILE,     6,1,txt_a300
164
block_3ds CHUNK_KEYFRAMER,   3,0 ; [-] ¨­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨
166
block_3ds CHUNK_KEYFRAMER,   3,0,txt_b000
165
block_3ds CHUNK_TRACKINFO,   3,0 ; [-] ¯®¢¥¤¥­¨¥ ®¡ê¥ªâ 
167
block_3ds CHUNK_TRACKINFO,   3,0,txt_b002
166
block_3ds CHUNK_TRACKOBJNAME,3,1 ; [+] ­ §¢ ­¨¥ í⮣® ®¡ê¥ªâ 
168
block_3ds CHUNK_TRACKOBJNAME,3,1,txt_b010
167
block_3ds CHUNK_TRACKPIVOT,  3,1 ; [+] 業âà ¢à é¥­¨ï ®¡ê¥ªâ 
169
block_3ds CHUNK_TRACKPIVOT,  3,1,txt_b013
168
block_3ds CHUNK_TRACKPOS,    3,1 ; [+] âà ¥ªâ®à¨ï ®¡ê¥ªâ 
170
block_3ds CHUNK_TRACKPOS,    3,1 ; [+] âà ¥ªâ®à¨ï ®¡ê¥ªâ 
169
block_3ds CHUNK_TRACKROTATE, 3,1 ; [+] âà ¥ªâ®à¨ï ¢à é¥­¨ï ®¡ê¥ªâ 
171
block_3ds CHUNK_TRACKROTATE, 3,1 ; [+] âà ¥ªâ®à¨ï ¢à é¥­¨ï ®¡ê¥ªâ 
170
block_3ds CHUNK_TRACKCAMERA, 3,0 ; [-] ¯®¢¥¤¥­¨¥ ª ¬¥àë
172
block_3ds CHUNK_TRACKCAMERA, 3,0 ; [-] ¯®¢¥¤¥­¨¥ ª ¬¥àë
171
block_3ds CHUNK_TRACKFOV,    3,1 ; [+] ¯®¢¥¤¥­¨¥ FOV ª ¬¥àë
173
block_3ds CHUNK_TRACKFOV,    3,1 ; [+] ¯®¢¥¤¥­¨¥ FOV ª ¬¥àë
172
block_3ds CHUNK_TRACKROLL,   3,1 ; [+] ¯®¢¥¤¥­¨¥ roll ª ¬¥àë
174
block_3ds CHUNK_TRACKROLL,   3,1 ; [+] ¯®¢¥¤¥­¨¥ roll ª ¬¥àë
Line -... Line 175...
-
 
175
block_3ds CHUNK_TRACKCAMTGT, 3,0 ; [-] ¯®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë
-
 
176
.end:
-
 
177
 
-
 
178
if lang eq ru
-
 
179
txt_0002 db '3ds ¢¥àá¨ï',0
-
 
180
txt_4000 db 'Ž¡ê¥ªâ (á ¨¬¥­¥¬)',0
-
 
181
txt_4110 db '‘¯¨á®ª ¢¥à設',0
-
 
182
txt_4120 db '‘¯¨á®ª £à ­¥©',0
-
 
183
txt_4600 db '‘¢¥â',0
-
 
184
txt_a000 db ' §¢ ­¨¥ ¬ â¥à¨ « ',0
-
 
185
txt_a200 db '’¥ªáâãà  ¬ â¥à¨ «  1',0
-
 
186
txt_a300 db 'ˆ¬ï ä ©«  ⥪áâãàë',0
-
 
187
txt_afff db 'Œ â¥à¨ «',0
-
 
188
txt_b000 db 'ˆ­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨',0
-
 
189
txt_b002 db '®¢¥¤¥­¨¥ ®¡ê¥ªâ ',0
-
 
190
txt_b010 db ' §¢ ­¨¥ ®¡ê¥ªâ ',0
-
 
191
txt_b013 db '–¥­âà ¢à é¥­¨ï ®¡ê¥ªâ ',0
-
 
192
else
-
 
193
txt_0002 db '3ds version',0
-
 
194
txt_4000 db 'Object (with name)',0
-
 
195
txt_4110 db 'Vertices list',0
-
 
196
txt_4120 db 'Faces description',0
-
 
197
txt_4600 db 'Light',0
-
 
198
txt_a000 db 'Material name',0
-
 
199
txt_a200 db 'Texture map 1',0
-
 
200
txt_a300 db 'Mapping filename',0
-
 
201
txt_afff db 'Meterial',0
-
 
202
txt_b000 db 'Keyframer',0
-
 
203
txt_b002 db 'Mesh information',0
-
 
204
txt_b010 db 'Object name',0
173
block_3ds CHUNK_TRACKCAMTGT, 3,0 ; [-] ¯®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë
205
txt_b013 db 'Object pivot point',0
174
.end:
206
end if
175
 
207
 
176
align 4
208
align 4
177
file_3ds:
209
file_3ds:
Line 178... Line 210...
178
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
210
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
-
 
211
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
179
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
212
rb 8*MAX_FILE_LEVEL
Line 180... Line 213...
180
rb 8*MAX_FILE_LEVEL+4
213
 
181
 
214
size_one_list equ 40
182
size_one_list equ 14
215
list_offs_text equ 12 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
Line 286... Line 319...
286
	ret
319
	ret
Line 287... Line 320...
287
 
320
 
288
align 4
321
align 4
289
timer_funct:
322
timer_funct:
-
 
323
	pushad
-
 
324
if debug
-
 
325
	mov eax,4
-
 
326
	mov ebx,(5 shl 16)+8
-
 
327
	mov ecx,0xff+0x80000000
-
 
328
	mov edx,txt_0002
-
 
329
	int 0x40
290
	pushad
330
end if
291
	mcall 26,9
331
	mcall 26,9
Line 292... Line 332...
292
	mov [last_time],eax
332
	mov [last_time],eax
293
 
333
 
Line 303... Line 343...
303
		add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
343
		add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
304
		cmp dword[offs_last_timer],eax
344
		cmp dword[offs_last_timer],eax
305
		je @f
345
		je @f
306
			mov dword[offs_last_timer],eax
346
			mov dword[offs_last_timer],eax
307
			call buf_draw_beg
347
			call buf_draw_beg
308
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xd000
348
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
-
 
349
			mov edx,dword[ebx+8]
-
 
350
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
-
 
351
			je .no_info
-
 
352
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
-
 
353
			.no_info:
309
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
354
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
310
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
355
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
311
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
356
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
312
	@@:
357
	@@:
313
	popad
358
	popad
Line 326... Line 371...
326
 
371
 
327
align 4
372
align 4
328
proc buf_draw_hex_table, offs:dword, size_line:dword
373
proc buf_draw_hex_table, offs:dword, size_line:dword
329
	pushad
374
	pushad
330
	locals
375
	locals
331
		coord_y dd 45
376
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
332
	endl
377
	endl
333
		mov esi,dword[offs]
378
		mov esi,dword[offs]
334
		mov edi,dword[open_file_lif]
379
		mov edi,dword[open_file_lif]
335
		add edi,dword[file_3ds+4] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
380
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
336
		mov dword[txt_3ds_offs.dig],0
381
		mov dword[txt_3ds_offs.dig],0
337
		cld
382
		cld
338
		.cycle_rows:
383
		.cycle_rows:
339
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
384
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
Line 523... Line 568...
523
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
568
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
524
	mov eax,file_3ds
569
	mov eax,file_3ds
525
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
570
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
526
	mov dword[offs_last_timer],0
571
	mov dword[offs_last_timer],0
527
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
572
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
528
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2]
573
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
529
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
574
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
Line 530... Line 575...
530
 
575
 
531
	mov edi,dword[file_3ds.offs]
576
	mov edi,dword[file_3ds.offs]
532
	add edi,dword[file_3ds.size]
577
	add edi,dword[file_3ds.size]
Line 535... Line 580...
535
		jle .end_cycle
580
		jle .end_cycle
Line 536... Line 581...
536
		
581
		
537
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
582
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
Line 538... Line -...
538
		jge .end_cycle
-
 
539
 
583
		jge .end_cycle
540
		call block_analiz
-
 
-
 
584
 
541
		mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
585
		mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
542
 
586
		call block_analiz
543
		cmp dword[eax],0
587
		cmp dword[bl_found],0
544
		jne @f
588
		jne @f
545
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
589
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
546
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx
590
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
547
			call block_next
591
			call block_next
548
			jmp .cycle_main
592
			jmp .cycle_main
549
		@@:
593
		@@:
550
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
594
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
551
			mov ecx,dword[eax]
595
			mov ecx,dword[bl_found]
552
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
596
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
553
			stdcall add_3ds_object, ebx,dword[level_stack],edx
597
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
554
			cmp byte[ecx+4],1
598
			cmp byte[ecx+4],1
555
			je .bl_data
599
			je .bl_data
556
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
600
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
557
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
601
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
558
				jmp .cycle_main
602
				jmp .cycle_main
559
			.bl_data:
603
			.bl_data:
560
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
-
 
561
				call block_analiz_data
604
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
562
				call block_next
605
				call block_analiz_data
563
				jmp .cycle_main
606
				jmp .cycle_main
564
	.end_cycle:
607
	.end_cycle:
565
		stdcall [tl_cur_beg], tree1
608
		stdcall [tl_cur_beg], tree1
Line 572... Line 615...
572
	ret
615
	ret
Line 573... Line 616...
573
 
616
 
574
; ­ «¨§ ¤ ­­ëå ¡«®ª 
617
; ­ «¨§ ¤ ­­ëå ¡«®ª 
575
;input:
618
;input:
-
 
619
; esi - memory pointer
-
 
620
;output:
-
 
621
; eax - new stack pointer
576
; esi - memory pointer
622
; esi - new memory pointer
577
align 4
623
align 4
578
block_analiz_data:
624
block_analiz_data:
579
	pushad
625
	push ebx ecx edx edi
580
		mov ax,word[esi]
626
		mov dx,word[esi]
581
		mov ecx,dword[esi+2]
627
		mov ecx,dword[esi+2]
582
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
628
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
583
		add esi,6
629
		add esi,6
584
		mov ebx,dword[level_stack]
630
		mov ebx,dword[level_stack]
-
 
631
		inc ebx
585
		inc ebx
632
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
586
		;cmp ax,CHUNK_color_1
633
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
587
		;jne @f
634
		jne @f
-
 
635
			.cycle_0:
-
 
636
				push ax
588
		;	.cycle_0:
637
					cld
589
		;		stdcall add_3ds_object, ID_ICON_DATA,ebx,3
638
					xor al,al
590
		;		add esi,3
639
					mov edi,esi
591
		;		sub ecx,3
640
					repne scasb
-
 
641
				pop ax
-
 
642
				sub edi,esi ;edi - strlen
-
 
643
				stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
592
		;		cmp ecx,0
644
				add esi,edi
593
		;		jg .cycle_0
645
				sub ecx,edi
594
		;	jmp .end_f
646
			jmp .next_bl
-
 
647
		@@:
595
		;@@:
648
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
-
 
649
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
-
 
650
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
-
 
651
			call block_next
-
 
652
			jmp .end_f
-
 
653
		.next_bl:
-
 
654
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
-
 
655
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
-
 
656
			mov ebx,dword[esi+2]
-
 
657
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
-
 
658
			inc dword[level_stack]
596
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx
659
			add eax,8
597
		.end_f:
660
		.end_f:
598
	popad
661
	pop edi edx ecx ebx
Line 599... Line 662...
599
	ret
662
	ret
600
 
663
 
601
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
664
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
Line 631... Line 694...
631
block_next:
694
block_next:
632
push ebx
695
push ebx
633
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
696
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
Line 634... Line 697...
634
 
697
 
-
 
698
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
635
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
699
	@@:
636
	mov ebx,dword[eax-8]
700
	mov ebx,dword[eax-8]
637
	add ebx,dword[eax-4]
701
	add ebx,dword[eax-4]
638
	cmp esi,ebx
702
	cmp esi,ebx
639
	jl @f
703
	jl @f
640
		dec dword[level_stack]
704
		dec dword[level_stack]
-
 
705
		sub eax,8
-
 
706
		cmp dword[level_stack],0
641
		sub eax,8
707
		jg @b
642
	@@:
708
	@@:
643
pop ebx
709
pop ebx
Line -... Line 710...
-
 
710
	ret
644
	ret
711
 
645
 
-
 
646
;input:
712
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
647
;eax - pointer to stack
713
;input:
648
;esi - memory pointer
714
;esi - memory pointer
649
;output:
715
;output:
-
 
716
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
650
;dword[eax] - pointer to chunk struct (= 0 if not found)
717
align 4
651
align 4
718
bl_found dd 0
652
block_analiz:
719
block_analiz:
653
pushad
720
pushad
654
	mov dword[eax],0
721
	mov dword[bl_found],0
655
	mov ecx,type_bloks
722
	mov ecx,type_bloks
656
	@@:
723
	@@:
657
		mov bx,word[ecx]
724
		mov bx,word[ecx]
658
		cmp word[esi],bx
725
		cmp word[esi],bx
659
		je .found
726
		je .found
660
		add ecx,sizeof.block_3ds
727
		add ecx,sizeof.block_3ds
661
		cmp ecx,type_bloks.end
728
		cmp ecx,type_bloks.end
662
		jl @b
729
		jl @b
663
	jmp .no_found
730
	jmp .no_found
664
	.found:
731
	.found:
665
		mov dword[eax],ecx
732
		mov dword[bl_found],ecx
666
	.no_found:
733
	.no_found:
Line 667... Line 734...
667
popad
734
popad
668
	ret
735
	ret
669
 
736
 
670
;input:
737
;input:
671
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
738
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
672
align 4
739
align 4
673
proc add_3ds_object, icon:dword,level:dword,size_bl:dword
740
proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
674
	pushad
741
	pushad
Line 675... Line 742...
675
		mov bx,word[icon]
742
		mov bx,word[icon]
676
		shl ebx,16
743
		shl ebx,16
677
		mov bx,word[level]
744
		mov bx,word[level]
678
 
745
 
679
		mov eax,esi
746
		mov eax,esi
-
 
747
		sub eax,dword[open_file_lif]
-
 
748
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
680
		sub eax,dword[open_file_lif]
749
		mov ecx,dword[size_bl]
681
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
750
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
-
 
751
		mov ecx,dword[info_bl]
-
 
752
		mov dword[buffer+8],ecx
-
 
753
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
-
 
754
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
-
 
755
		cmp ecx,0
682
		mov ecx,dword[size_bl]
756
		jne @f
-
 
757
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
-
 
758
			jmp .no_capt
-
 
759
		@@:
-
 
760
			mov byte[buffer+list_offs_text+4],' '
-
 
761
			mov esi,ecx
-
 
762
			mov edi,buffer+list_offs_text+5
-
 
763
			mov ecx,size_one_list-(list_offs_text+5)
683
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
764
			cld
684
		stdcall hex_in_str, buffer+8,dword[esi+1],2
765
			rep movsb
685
		stdcall hex_in_str, buffer+10,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
766
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
686
		mov byte[buffer+12],0
767
		.no_capt:
687
		stdcall [tl_node_add], buffer, ebx, tree1
768
		stdcall [tl_node_add], buffer, ebx, tree1
688
		stdcall [tl_cur_next], tree1
769
		stdcall [tl_cur_next], tree1
689
		if debug
770
		if debug
690
			stdcall print_err,sz_add_3ds_object,buffer+8
771
			stdcall print_err,sz_add_3ds_object,buffer+list_offs_text
Line 1126... Line 1207...
1126
	dd 144 ;+12 h
1207
	dd 144 ;+12 h
1127
	dd 0 ;+16 color
1208
	dd 0 ;+16 color
1128
	db 24 ;+20 bit in pixel
1209
	db 24 ;+20 bit in pixel
Line 1129... Line 1210...
1129
 
1210
 
1130
el_focus dd tree1
1211
el_focus dd tree1
1131
tree1 tree_list size_one_list,100+2, tl_key_no_edit+tl_draw_par_line,\
1212
tree1 tree_list size_one_list,200+2, tl_key_no_edit+tl_draw_par_line,\
1132
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 0,8,0, el_focus,\
1213
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\
Line 1133... Line 1214...
1133
	w_scr_t1,0
1214
	w_scr_t1,0
1134
 
1215
 
1135
align 4
1216
align 4