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 |