/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 |