Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 6080 → Rev 6081

/programs/develop/info3ds/data.inc
52,16 → 52,16
block_3ds 0x0100,3,1,txt_0100
block_3ds CHUNK_ambient_color,3,0,txt_2100 ; [-] ambient color
block_3ds CHUNK_OBJMESH, 3,0,txt_3d3d
block_3ds CHUNK_OBJBLOCK,3,1,txt_4000
block_3ds CHUNK_OBJBLOCK,11,1,txt_4000
block_3ds CHUNK_TRIMESH, 3,0,txt_4100
block_3ds CHUNK_VERTLIST,3,1,txt_4110
block_3ds CHUNK_VERTLIST,8,1,txt_4110
block_3ds CHUNK_FACELIST,3,1,txt_4120
block_3ds CHUNK_FACEMAT, 3,1,txt_4130
block_3ds CHUNK_FACEMAT,10,1,txt_4130
block_3ds CHUNK_MAPLIST, 3,1,txt_4140
block_3ds CHUNK_TRMATRIX,3,1,txt_4160
block_3ds 0x4600,3,1,txt_4600
block_3ds CHUNK_CAMERA, 3,1,txt_4700
block_3ds CHUNK_MATERIAL,3,0,txt_afff
block_3ds CHUNK_MATERIAL,10,0,txt_afff
block_3ds CHUNK_MATNAME, 3,1,txt_a000
block_3ds 0xa010,4,0,txt_a010
block_3ds 0xa020,4,0,txt_a020
/programs/develop/info3ds/info3ds.asm
1,10 → 1,11
use32
org 0x0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
dd 1, start, i_end, mem, stacktop, 0, sys_path
dd 1, start, i_end, mem, stacktop, file_name, sys_path
 
include '../../macros.inc'
include '../../proc32.inc'
include '../../kosfuncs.inc'
include '../../develop/libraries/box_lib/load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
55,7 → 56,7
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
IMAGE_CHUNKS_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*10+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
IMAGE_CHUNKS_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*12+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
;
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
 
76,7 → 77,7
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax
 
mov [run_file_70.Function], 0
mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size
83,7 → 84,7
mov [run_file_70.Buffer], eax
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
cmp ebx,0xffffffff
je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
120,6 → 121,18
 
align 4
start:
;--- copy cmd line ---
mov esi,file_name
mov edi,openfile_path
@@:
lodsd
cmp eax,0
je @f ;¢ë室, ¥á«¨ 0
stosd
jmp @b
@@:
stosd
 
load_libraries l_libs_start,l_libs_end
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨
mov ebp,lib_0
126,13 → 139,14
.test_lib_open:
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
mcall SF_TERMINATE_PROCESS ;exit not correct
@@:
add ebp,ll_struc_size
cmp ebp,l_libs_end
jl .test_lib_open
mcall 48,3,sc,sizeof.sys_colors_new
mcall 40,0x27
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.sys_colors_new
mcall SF_SET_EVENTS_MASK,0x27
 
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
 
;kmenu initialisation
255,7 → 269,7
fdiv dword[fl255]
fstp dword[color_bk]
 
mcall 26,9
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax
 
stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
266,11 → 280,21
stdcall [gluNewQuadric]
mov [qObj],eax
 
mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
mov eax,[eax] ;eax -> ZBuffer
mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
mov dword[buf_ogl],eax
 
;open file from cmd line
cmp dword[openfile_path],0
je @f
call but_open_file.no_dlg
@@:
call draw_window
 
align 4
still:
mcall 26,9
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov ebx,[last_time]
add ebx,10 ;§ ¤¥à¦ª 
cmp ebx,eax
278,7 → 302,7
mov ebx,eax
@@:
sub ebx,eax
mcall 23
mcall SF_WAIT_EVENT_TIMEOUT
cmp eax,0
je timer_funct
 
293,7 → 317,7
jz button
cmp al,6
jne @f
mcall 9,procinfo,-1
mcall SF_THREAD_INFO,procinfo,-1
cmp ax,word[procinfo+4]
jne @f ;®ª­® ­¥  ªâ¨¢­®
call mouse
308,7 → 332,7
align 4
timer_funct:
pushad
mcall 26,9
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax
 
;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå
316,7 → 340,7
cmp eax,0
je @f
mov ebx,eax
mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
mov eax,dword[ebx]
mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
stdcall hex_in_str, txt_3ds_offs.dig, eax,8
stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
326,7 → 350,7
je @f
;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
mov dword[offs_last_timer],eax
call buf_draw_beg
stdcall buf_draw_beg, buf_0
stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
mov edx,dword[ebx+list_offs_p_data]
cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
341,17 → 365,6
jmp still
 
align 4
buf_draw_beg:
stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
jne @f
stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
@@:
ret
 
align 4
proc buf_draw_hex_table, offs:dword, size_line:dword
pushad
locals
408,7 → 421,7
align 4
draw_window:
pushad
mcall 12,1
mcall SF_REDRAW,SSF_BEGIN_DRAW
xor eax,eax
mov edx,[sc.work]
or edx,0x33000000
415,7 → 428,7
mov edi,capt
mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height
 
mcall 9,procinfo,-1
mcall SF_THREAD_INFO,procinfo,-1
mov eax,dword[procinfo.box.height]
cmp eax,250
jge @f
444,23 → 457,17
mov word[buf_0.l],ax
 
mov esi,[sc.work_button]
mcall 8,(5 shl 16)+20,(5 shl 16)+20,3
mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,3
mcall ,(30 shl 16)+20,,4
 
mov ebx,(30 shl 16)+20
mov edx,4
int 0x40
 
cmp byte[can_save],0
je @f
mov ebx,(55 shl 16)+20
mov edx,5
int 0x40
mcall ,(55 shl 16)+20,,5
@@:
 
mcall ,(85 shl 16)+20,,6 ;®ª­® á ª®®à¤¨­ â ¬¨
mcall ,(110 shl 16)+20,,7 ;㤠«¥­¨¥ ¡«®ª 
 
mcall 7,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;new
mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;new
 
add ebx,IMAGE_TOOLBAR_ICON_SIZE
mov edx,(32 shl 16)+7 ;open
487,13 → 494,13
 
stdcall [buf2d_draw], buf_0
 
mcall 12,2
mcall SF_REDRAW,SSF_END_DRAW
popad
ret
 
align 4
key:
mcall 2
mcall SF_GET_KEY
stdcall [tl_key], dword tree1
jmp still
 
500,7 → 507,7
 
align 4
button:
mcall 17
mcall SF_GET_BUTTON
cmp ah,3
jne @f
call but_new_file
538,7 → 545,7
stdcall mem.Free,[image_data_toolbar]
stdcall mem.Free,[open_file_data]
stdcall [gluDeleteQuadric], [qObj]
mcall -1
mcall SF_TERMINATE_PROCESS
 
 
align 4
559,8 → 566,11
cmp [OpenDialog_data.status],2
je .end_open_file
;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
 
mov [run_file_70.Function], 5
jmp @f
.no_dlg: ;¥á«¨ ¬¨­ã¥¬ ¤¨ «®£ ®âªàëâ¨ï ä ©« 
pushad
@@:
mov [run_file_70.Function], SSF_GET_INFO
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov dword[run_file_70.Count], 0
567,13 → 577,13
mov dword[run_file_70.Buffer], open_b
mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], openfile_path
mcall 70,run_file_70
mcall SF_FILE,run_file_70
 
mov ecx,dword[open_b+32] ;+32 qword: à §¬¥à ä ©«  ¢ ¡ ©â å
stdcall mem.ReAlloc,[open_file_data],ecx
mov [open_file_data],eax
mov [run_file_70.Function], 0
mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov dword[run_file_70.Count], ecx
580,12 → 590,12
m2m dword[run_file_70.Buffer], dword[open_file_data]
mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], openfile_path
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
cmp ebx,0xffffffff
je .end_open_file
 
mov [open_file_size],ebx
;mcall 71,1,openfile_path
;mcall SF_SET_CAPTION,1,openfile_path
 
mov byte[can_save],0
call init_tree
608,7 → 618,7
mov esi,dword[open_file_data]
cmp word[esi],CHUNK_MAIN
je @f
call buf_draw_beg
stdcall buf_draw_beg, buf_0
stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
jmp .end_open
@@:
659,6 → 669,7
 
; ­ «¨§ ¤ ­­ëå ¡«®ª 
;input:
; eax - stack pointer
; esi - memory pointer
;output:
; eax - new stack pointer
716,11 → 727,16
sub ecx,eax
cmp ecx,1
jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
if 0
add esi,eax
mov ecx,dword[esi+2]
stdcall add_3ds_object, 10,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
sub esi,eax
else
add esi,eax
pop eax
jmp .next_bl
;stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
;sub esi,eax ;¢®ááâ ­®¢«¥­¨¥ esi
end if
.data_3:
 
sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
929,32 → 945,6
ret
 
align 4
proc hex_in_str, buf:dword,val:dword,zif:dword
pushad
mov edi,dword[buf]
mov ecx,dword[zif]
add edi,ecx
dec edi
mov ebx,dword[val]
 
.cycle:
mov al,bl
and al,0xf
cmp al,10
jl @f
add al,'a'-'0'-10
@@:
add al,'0'
mov byte[edi],al
dec edi
shr ebx,4
loop .cycle
 
popad
ret
endp
 
align 4
but_save_file:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
964,7 → 954,7
je .end_save_file
;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
 
mov [run_file_70.Function], 2
mov [run_file_70.Function], SSF_CREATE_FILE
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov ebx, dword[open_file_data]
973,7 → 963,7
mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], openfile_path
mcall 70,run_file_70
mcall SF_FILE,run_file_70
cmp ebx,0xffffffff
je .end_save_file
;...á®®¡é¥­¨¥...
986,7 → 976,7
cmp byte[prop_wnd_run],0
jne @f
pushad
mcall 51,1,prop_start,thread_coords
mcall SF_CREATE_THREAD,1,prop_start,thread_coords
popad
@@:
ret
1006,7 → 996,7
mov edx,dword[eax+4] ;à §¬¥à ¡«®ª 
sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
mov ecx,[open_file_size]
mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
mov ebx,dword[eax]
sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
mov edi,ebx
1429,9 → 1419,9
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;  à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
 
if lang eq ru
capt db 'info 3ds ¢¥àá¨ï 16.01.16',0 ;¯®¤¯¨áì ®ª­ 
capt db 'info 3ds ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª­ 
else
capt db 'info 3ds version 16.01.16',0 ;window caption
capt db 'info 3ds version 19.01.16',0 ;window caption
end if
 
align 16
/programs/develop/info3ds/info3ds_u.asm
61,7 → 61,7
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
IMAGE_CHUNKS_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*10+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
IMAGE_CHUNKS_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*12+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
;
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
 
320,6 → 320,15
;mouse l. but. move
cmp dword[mouse_drag],1
jne .end_m
 
stdcall [tl_node_get_data],tree1
cmp eax,0
je .end_d
mov ebx,dword[eax]
add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
cmp word[ebx],CHUNK_OBJBLOCK
jne .end_d
 
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,eax
shr ebx,16 ;mouse.x
358,8 → 367,7
fstp dword[angle_y]
 
stdcall [tl_node_get_data],tree1
cmp eax,0
je .end_d
;cmp eax,0 - ­¥ ­ ¤®, ¡ë«® ᤥ« ­® ¢ëè¥
add eax,list_offs_obj3d
stdcall draw_3d, eax
jmp .end_d
410,7 → 418,7
mov edi,eax
add edi,list_offs_obj3d
mov ebx,eax
mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
mov eax,dword[ebx]
mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
stdcall hex_in_str, txt_3ds_offs.dig, eax,8
stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
434,7 → 442,22
call mnu_reset_settings ;á¡à®á 㣫®¢ ¯®¢®à®â  ¨ ०¨¬®¢ à¨á®¢ ­¨ï
jmp .end_f
.end_oblo:
call buf_draw_beg
 
cmp word[eax],CHUNK_MATERIAL
jne .end_mblo
cmp dword[edi+offs_mat_name],0
je .ini_mblo
stdcall draw_material,edi
jmp .end_f
.ini_mblo:
stdcall mat_init,edi ;¯®¯ë⪠ ­ áâநâì ¤ ­­ë¥ ¬ â¥à¨ « 
cmp dword[edi+offs_mat_name],0
je .end_f
stdcall draw_material,edi
jmp .end_f
.end_mblo:
 
stdcall buf_draw_beg, buf_ogl
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_3ds_offs,5,35,0xb000
mov edx,dword[ebx+list_offs_p_data]
cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
447,17 → 470,6
jmp still
 
align 4
buf_draw_beg:
stdcall [buf2d_clear], buf_ogl, [buf_ogl.color] ;ç¨á⨬ ¡ãä¥à
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_open_3ds,5,5,0xff
stdcall [buf2d_draw_text], buf_ogl, buf_1,openfile_path,5,15,0xff
cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
jne @f
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_3ds_err_sizes,5,25,0xff0000
@@:
ret
 
align 4
draw_window:
pushad
mcall SF_REDRAW,SSF_BEGIN_DRAW
715,7 → 727,7
mov esi,dword[open_file_data]
cmp word[esi],CHUNK_MAIN
je @f
call buf_draw_beg
stdcall buf_draw_beg, buf_ogl
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
jmp .end_open
@@:
738,8 → 750,8
 
mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
call block_analiz
;cmp word[esi],CHUNK_MATERIAL
;je @f
cmp word[esi],CHUNK_MATERIAL
je @f
cmp word[esi],CHUNK_OBJMESH
je @f
cmp word[esi],CHUNK_OBJBLOCK
760,10 → 772,19
add esi,6
push esi
sub esi,6
jmp .pod2
jmp .pod3
.pod1:
cmp word[esi],CHUNK_MATERIAL
jne .pod2
cmp word[esi+6],CHUNK_MATNAME
jne .pod2
add esi,12
push esi
sub esi,12
jmp .pod3
.pod2:
push dword[ecx+5] ;áâ ­¤ àâ­®¥ ­ §¢ ­¨¥ ¡«®ª 
.pod2:
.pod3:
stdcall add_3ds_object, ebx,dword[level_stack],edx
cmp byte[ecx+4],1
je .bl_data
782,6 → 803,7
 
; ­ «¨§ ¤ ­­ëå ¡«®ª 
;input:
; eax - stack pointer
; esi - memory pointer
;output:
; eax - new stack pointer
833,9 → 855,16
sub ecx,eax
cmp ecx,1
jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
if 1
add esi,eax
mov ecx,dword[esi+2]
stdcall add_3ds_object, 10,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
sub esi,eax
else
add esi,eax
pop eax
jmp .next_bl
end if
.data_3:
 
sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
1044,31 → 1073,6
@@:
ret
 
align 4
proc hex_in_str, buf:dword,val:dword,zif:dword
pushad
mov edi,dword[buf]
mov ecx,dword[zif]
add edi,ecx
dec edi
mov ebx,dword[val]
 
.cycle:
mov al,bl
and al,0xf
cmp al,10
jl @f
add al,'a'-'0'-10
@@:
add al,'0'
mov byte[edi],al
dec edi
shr ebx,4
loop .cycle
popad
ret
endp
 
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
align 4
OpenDialog_data:
1448,9 → 1452,9
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;  à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
 
if lang eq ru
capt db 'info 3ds [user] ¢¥àá¨ï 16.01.16',0 ;¯®¤¯¨áì ®ª­ 
capt db 'info 3ds [user] ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª­ 
else
capt db 'info 3ds [user] version 16.01.16',0 ;window caption
capt db 'info 3ds [user] version 19.01.16',0 ;window caption
end if
 
align 16
/programs/develop/info3ds/info_o3d.inc
48,7 → 48,18
offs_obj_z_centr equ 72
offs_obj_z_scale equ 76
 
struct material
name dd ?
col_ambient dd ? ;梥⠬ â¥à¨ « 
col_diffuse dd ?
col_specular dd ?
ends
 
offs_mat_name equ 0
offs_mat_col_ambient equ 4
offs_mat_col_diffuse equ 8
offs_mat_col_specular equ 12
 
bit_vertexes equ 0
bit_faces equ 1
bit_faces_fill equ 2
71,7 → 82,31
 
rad_c dd 150 ;¤«ï ¢ëç¨á«¥­¨ï à ¤¨ãá 
 
align 4
proc hex_in_str, buf:dword,val:dword,zif:dword
pushad
mov edi,dword[buf]
mov ecx,dword[zif]
add edi,ecx
dec edi
mov ebx,dword[val]
 
.cycle:
mov al,bl
and al,0xf
cmp al,10
jl @f
add al,'a'-'0'-10
@@:
add al,'0'
mov byte[edi],al
dec edi
shr ebx,4
loop .cycle
popad
ret
endp
 
;ãáâ ­®¢ª  ¢á¥å ®á­®¢­ëå ¯¥à¥¬¥­­ëå ¯® 㬮«ç ­¨î
align 4
proc obj_clear_param uses edi, o_data:dword
503,6 → 538,151
ret
endp
 
;­ áâனª  ¬ â¥à¨ « 
align 4
proc mat_init, m_data:dword
pushad
mov edi,[m_data]
 
;... clear edi ...
mov dword[edi+offs_mat_name],0
mov dword[edi+offs_mat_col_ambient],0
mov dword[edi+offs_mat_col_diffuse],0
mov dword[edi+offs_mat_col_specular],0
 
stdcall [tl_node_get_data],tree1
xor edx,edx
cmp eax,0
je .no_material
mov ebx,[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
add ebx,[open_file_data]
xor ecx,ecx
cmp word[ebx],CHUNK_MATERIAL
jne .no_material
mov ecx,ebx
add ecx,dword[ecx+2] ;£à ­¨æ  ¡«®ª 
add ebx,6
cmp word[ebx],CHUNK_MATNAME
jne .no_material
;*** (0) ***
mov esi,ebx
add ebx,6
mov [edi+offs_mat_name],ebx
sub ebx,6
;*** (1) ***
.cycle_0: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
add esi,dword[esi+2]
cmp word[esi],0xa010
je @f
cmp ecx,esi
jg .cycle_0 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
@@:
;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
add esi,6
cmp word[esi],0x0011
jne .end_material
add esi,6
mov dl,byte[esi]
mov [edi+offs_mat_col_ambient+2],dl
mov dx,word[esi+1]
ror dx,8
mov [edi+offs_mat_col_ambient],dx
;*** (2) ***
mov esi,ebx
.cycle_1: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
add esi,dword[esi+2]
cmp word[esi],0xa020
je @f
cmp ecx,esi
jg .cycle_1 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
@@:
;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
add esi,6
cmp word[esi],0x0011
jne .end_material
add esi,6
mov dl,byte[esi]
mov [edi+offs_mat_col_diffuse+2],dl
mov dx,word[esi+1]
ror dx,8
mov [edi+offs_mat_col_diffuse],dx
;*** (3) ***
mov esi,ebx
.cycle_2: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
add esi,dword[esi+2]
cmp word[esi],0xa030
je @f
cmp ecx,esi
jg .cycle_2 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
@@:
;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
add esi,6
cmp word[esi],0x0011
jne .end_material
add esi,6
mov dl,byte[esi]
mov [edi+offs_mat_col_specular+2],dl
mov dx,word[esi+1]
ror dx,8
mov [edi+offs_mat_col_specular],dx
 
.end_material:
.no_material:
popad
ret
endp
 
align 4
proc buf_draw_beg uses eax, buf:dword
mov eax,[buf]
stdcall [buf2d_clear], eax, [eax+16] ;ç¨á⨬ ¡ãä¥à
stdcall [buf2d_draw_text], eax, buf_1,txt_open_3ds,5,5,0xff
stdcall [buf2d_draw_text], eax, buf_1,openfile_path,5,15,0xff
cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
jne @f
stdcall [buf2d_draw_text], eax, buf_1,txt_3ds_err_sizes,5,25,0xff0000
@@:
ret
endp
 
;à¨á®¢ ­¨¥ ¬ â¥à¨ « 
align 4
proc draw_material uses edi, m_data:dword
mov edi,[m_data]
stdcall buf_draw_beg, buf_ogl
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_afff,5,35,0xff
 
stdcall [buf2d_draw_text], buf_ogl,buf_1,[edi+offs_mat_name],15,45,0 ;¨¬ï ¬ â¥à¨ « 
stdcall draw_color, [edi+offs_mat_col_ambient], txt_a010,2,55 ;®ªà㦠î騩 梥â
stdcall draw_color, [edi+offs_mat_col_diffuse], txt_a020,2,75 ;¤¨äã§­ë© æ¢¥â
stdcall draw_color, [edi+offs_mat_col_specular],txt_a030,2,95 ;§¥àª «ì­ë© 梥â
 
stdcall [buf2d_draw], buf_ogl
ret
endp
 
align 4
proc draw_color uses eax ebx, color:dword, text:dword, c_x:dword, c_y:dword
mov eax,[c_x]
mov ebx,[c_y]
; ¯àאַ㣮«ì­¨ª
inc ebx
stdcall [buf2d_filled_rect_by_size], buf_ogl,eax,ebx,30,17,[color]
dec ebx
stdcall [buf2d_rect_by_size], buf_ogl,eax,ebx,30,19, 0
; ¯®¤¯¨á¨
add eax,33
stdcall [buf2d_draw_text], buf_ogl, buf_1,[text],eax,ebx,0
add ebx,10
stdcall hex_in_str, buffer,[color],6
mov byte[buffer+6],0
stdcall [buf2d_draw_text], buf_ogl, buf_1,buffer,eax,ebx,0
ret
endp
 
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
align 4
proc draw_3d uses eax ebx ecx edi, o_data:dword
730,14 → 910,18
 
align 4
update_obj:
push eax
push eax ebx
stdcall [tl_node_get_data],tree1
cmp eax,0
je @f
mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
cmp word[ebx],CHUNK_OBJBLOCK
jne @f
add eax,14 ;14=list_offs_obj3d
stdcall draw_3d, eax
@@:
pop eax
pop ebx eax
ret
 
end if
/programs/develop/info3ds/info_wnd_coords.inc
37,7 → 37,7
align 4
prop_start:
pushad
mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
mcall SF_SET_EVENTS_MASK,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
inc byte[prop_wnd_run]
mov dword[w_scr_t3.type],1
mov edi,o3d
44,11 → 44,6
stdcall obj_clear_param, edi
call mnu_reset_settings
 
mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
mov eax,[eax] ;eax -> ZBuffer
mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
mov dword[buf_ogl],eax
 
stdcall [tl_node_get_data],tree1
xor edx,edx
mov dword[capt_p],txt_q
170,7 → 165,7
prop_still:
pushad
 
mcall 23,10
mcall SF_WAIT_EVENT_TIMEOUT,10
or eax,eax
jnz @f
call prop_timer_funct
200,7 → 195,7
align 4
prop_red_win:
pushad
mcall 12,1
mcall SF_REDRAW,SSF_BEGIN_DRAW
 
xor eax,eax
mov edi,dword[capt_p] ;children window caption
218,12 → 213,12
int 0x40
 
mov esi,[sc.work_button]
mcall 8, (5 shl 16)+20, (266 shl 16)+20, 3
mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (266 shl 16)+20, 3
mcall , (30 shl 16)+20, (266 shl 16)+20, 4
 
mov ebx,[image_data_toolbar]
add ebx,3*IMAGE_TOOLBAR_ICON_SIZE
mcall 7, , (16 shl 16)+16, (7 shl 16)+268 ;load
mcall SF_PUT_IMAGE, , (16 shl 16)+16, (7 shl 16)+268 ;load
 
sub ebx,IMAGE_TOOLBAR_ICON_SIZE
mov edx,(32 shl 16)+268 ;save
238,13 → 233,13
 
stdcall [kmainmenu_draw], [main_menu]
stdcall draw_3d, o3d
mcall 12,2
mcall SF_REDRAW,SSF_END_DRAW
popad
ret
 
align 4
proc prop_key uses eax ebx
mcall 2
mcall SF_GET_KEY
 
test word [edit1.flags],10b ;ed_focus
je @f
306,13 → 301,13
align 4
prop_mouse:
push eax ebx
mcall 37,3
mcall SF_MOUSE_GET,SSF_BUTTON_EXT
bt eax,0
jnc .end_m
;mouse l. but. move
cmp dword[mouse_drag],1
jne .end_m
mcall 37,1 ;get mouse coords
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;get mouse coords
mov ebx,eax
shr ebx,16 ;mouse.x
cmp ebx,3d_wnd_l
361,7 → 356,7
bt eax,8
jnc .end_d
;mouse l. but. press
mcall 37,1 ;get mouse coords
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;get mouse coords
mov ebx,eax
shr ebx,16 ;mouse.x
cmp ebx,3d_wnd_l
390,7 → 385,7
 
align 4
prop_button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
mcall SF_GET_BUTTON
 
cmp ah,3
jne @f
528,7 → 523,7
mov dword[edi+offs_obj_normals_tri_data],0
mov dword[edi+offs_obj_normals_poi_data],0
mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
mcall SF_TERMINATE_PROCESS ;¢ë室 ¨§ ¯à®£à ¬¬ë
 
align 4
get_point_coords:
/programs/develop/info3ds/objects.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream