update programs

git-svn-id: svn://kolibrios.org@6081 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2016-01-19 20:53:55 +00:00
parent 87bab698eb
commit fc6f59584d
6 changed files with 334 additions and 161 deletions

View File

@ -52,16 +52,16 @@ block_3ds 0x0011,4,1,txt_0011
block_3ds 0x0100,3,1,txt_0100 block_3ds 0x0100,3,1,txt_0100
block_3ds CHUNK_ambient_color,3,0,txt_2100 ; [-] ambient color block_3ds CHUNK_ambient_color,3,0,txt_2100 ; [-] ambient color
block_3ds CHUNK_OBJMESH, 3,0,txt_3d3d 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_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_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_MAPLIST, 3,1,txt_4140
block_3ds CHUNK_TRMATRIX,3,1,txt_4160 block_3ds CHUNK_TRMATRIX,3,1,txt_4160
block_3ds 0x4600,3,1,txt_4600 block_3ds 0x4600,3,1,txt_4600
block_3ds CHUNK_CAMERA, 3,1,txt_4700 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 CHUNK_MATNAME, 3,1,txt_a000
block_3ds 0xa010,4,0,txt_a010 block_3ds 0xa010,4,0,txt_a010
block_3ds 0xa020,4,0,txt_a020 block_3ds 0xa020,4,0,txt_a020

View File

@ -1,10 +1,11 @@
use32 use32
org 0x0 org 0x0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â 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 '../../macros.inc'
include '../../proc32.inc' include '../../proc32.inc'
include '../../kosfuncs.inc'
include '../../develop/libraries/box_lib/load_lib.mac' include '../../develop/libraries/box_lib/load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc' include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
@ -55,7 +56,7 @@ image_data_toolbar dd 0
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨ TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
icon_toolbar 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 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬ IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
@ -76,14 +77,14 @@ macro load_image_file path,buf,size { ;
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax 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.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size mov [run_file_70.Count], dword size
mov [run_file_70.Buffer], eax mov [run_file_70.Buffer], eax
mov byte[run_file_70+20], 0 mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name mov [run_file_70.FileName], file_name
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
cmp ebx,0xffffffff cmp ebx,0xffffffff
je @f je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
@ -120,19 +121,32 @@ include 'info_wnd_coords.inc'
align 4 align 4
start: 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 load_libraries l_libs_start,l_libs_end
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨ ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨
mov ebp,lib_0 mov ebp,lib_0
.test_lib_open: .test_lib_open:
cmp dword [ebp+ll_struc_size-4],0 cmp dword [ebp+ll_struc_size-4],0
jz @f jz @f
mcall -1 ;exit not correct mcall SF_TERMINATE_PROCESS ;exit not correct
@@: @@:
add ebp,ll_struc_size add ebp,ll_struc_size
cmp ebp,l_libs_end cmp ebp,l_libs_end
jl .test_lib_open jl .test_lib_open
mcall 48,3,sc,sizeof.sys_colors_new mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.sys_colors_new
mcall 40,0x27 mcall SF_SET_EVENTS_MASK,0x27
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£  stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
;kmenu initialisation ;kmenu initialisation
@ -255,7 +269,7 @@ start:
fdiv dword[fl255] fdiv dword[fl255]
fstp dword[color_bk] fstp dword[color_bk]
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax mov [last_time],eax
stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1 stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
@ -266,11 +280,21 @@ start:
stdcall [gluNewQuadric] stdcall [gluNewQuadric]
mov [qObj],eax 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 call draw_window
align 4 align 4
still: still:
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov ebx,[last_time] mov ebx,[last_time]
add ebx,10 ;§ ¤¥à¦ª  add ebx,10 ;§ ¤¥à¦ª 
cmp ebx,eax cmp ebx,eax
@ -278,7 +302,7 @@ still:
mov ebx,eax mov ebx,eax
@@: @@:
sub ebx,eax sub ebx,eax
mcall 23 mcall SF_WAIT_EVENT_TIMEOUT
cmp eax,0 cmp eax,0
je timer_funct je timer_funct
@ -293,7 +317,7 @@ still:
jz button jz button
cmp al,6 cmp al,6
jne @f jne @f
mcall 9,procinfo,-1 mcall SF_THREAD_INFO,procinfo,-1
cmp ax,word[procinfo+4] cmp ax,word[procinfo+4]
jne @f ;®ª­® ­¥  ªâ¨¢­® jne @f ;®ª­® ­¥  ªâ¨¢­®
call mouse call mouse
@ -308,7 +332,7 @@ mouse:
align 4 align 4
timer_funct: timer_funct:
pushad pushad
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax mov [last_time],eax
;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå
@ -316,7 +340,7 @@ timer_funct:
cmp eax,0 cmp eax,0
je @f je @f
mov ebx,eax mov ebx,eax
mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©«  mov eax,dword[ebx]
mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª  mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
stdcall hex_in_str, txt_3ds_offs.dig, eax,8 stdcall hex_in_str, txt_3ds_offs.dig, eax,8
stdcall hex_in_str, txt_3ds_offs.siz, ecx,8 stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
@ -326,7 +350,7 @@ timer_funct:
je @f je @f
;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬ ;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
mov dword[offs_last_timer],eax 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 stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
mov edx,dword[ebx+list_offs_p_data] mov edx,dword[ebx+list_offs_p_data]
cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª  cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
@ -340,17 +364,6 @@ timer_funct:
popad popad
jmp still 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 align 4
proc buf_draw_hex_table, offs:dword, size_line:dword proc buf_draw_hex_table, offs:dword, size_line:dword
pushad pushad
@ -408,14 +421,14 @@ endp
align 4 align 4
draw_window: draw_window:
pushad pushad
mcall 12,1 mcall SF_REDRAW,SSF_BEGIN_DRAW
xor eax,eax xor eax,eax
mov edx,[sc.work] mov edx,[sc.work]
or edx,0x33000000 or edx,0x33000000
mov edi,capt mov edi,capt
mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height 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] mov eax,dword[procinfo.box.height]
cmp eax,250 cmp eax,250
jge @f jge @f
@ -444,23 +457,17 @@ pushad
mov word[buf_0.l],ax mov word[buf_0.l],ax
mov esi,[sc.work_button] 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 cmp byte[can_save],0
je @f je @f
mov ebx,(55 shl 16)+20 mcall ,(55 shl 16)+20,,5
mov edx,5
int 0x40
@@: @@:
mcall ,(85 shl 16)+20,,6 ;®ª­® á ª®®à¤¨­ â ¬¨ mcall ,(85 shl 16)+20,,6 ;®ª­® á ª®®à¤¨­ â ¬¨
mcall ,(110 shl 16)+20,,7 ;㤠«¥­¨¥ ¡«®ª  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 add ebx,IMAGE_TOOLBAR_ICON_SIZE
mov edx,(32 shl 16)+7 ;open mov edx,(32 shl 16)+7 ;open
@ -487,20 +494,20 @@ pushad
stdcall [buf2d_draw], buf_0 stdcall [buf2d_draw], buf_0
mcall 12,2 mcall SF_REDRAW,SSF_END_DRAW
popad popad
ret ret
align 4 align 4
key: key:
mcall 2 mcall SF_GET_KEY
stdcall [tl_key], dword tree1 stdcall [tl_key], dword tree1
jmp still jmp still
align 4 align 4
button: button:
mcall 17 mcall SF_GET_BUTTON
cmp ah,3 cmp ah,3
jne @f jne @f
call but_new_file call but_new_file
@ -538,7 +545,7 @@ button:
stdcall mem.Free,[image_data_toolbar] stdcall mem.Free,[image_data_toolbar]
stdcall mem.Free,[open_file_data] stdcall mem.Free,[open_file_data]
stdcall [gluDeleteQuadric], [qObj] stdcall [gluDeleteQuadric], [qObj]
mcall -1 mcall SF_TERMINATE_PROCESS
align 4 align 4
@ -559,33 +566,36 @@ but_open_file:
cmp [OpenDialog_data.status],2 cmp [OpenDialog_data.status],2
je .end_open_file je .end_open_file
;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£  ;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
jmp @f
mov [run_file_70.Function], 5 .no_dlg: ;¥á«¨ ¬¨­ã¥¬ ¤¨ «®£ ®âªàëâ¨ï ä ©« 
pushad
@@:
mov [run_file_70.Function], SSF_GET_INFO
mov [run_file_70.Position], 0 mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov dword[run_file_70.Count], 0 mov dword[run_file_70.Count], 0
mov dword[run_file_70.Buffer], open_b mov dword[run_file_70.Buffer], open_b
mov byte[run_file_70+20], 0 mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], openfile_path 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: à §¬¥à ä ©«  ¢ ¡ ©â å mov ecx,dword[open_b+32] ;+32 qword: à §¬¥à ä ©«  ¢ ¡ ©â å
stdcall mem.ReAlloc,[open_file_data],ecx stdcall mem.ReAlloc,[open_file_data],ecx
mov [open_file_data],eax 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.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov dword[run_file_70.Count], ecx mov dword[run_file_70.Count], ecx
m2m dword[run_file_70.Buffer], dword[open_file_data] m2m dword[run_file_70.Buffer], dword[open_file_data]
mov byte[run_file_70+20], 0 mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], openfile_path mov dword[run_file_70.FileName], openfile_path
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« 3ds
cmp ebx,0xffffffff cmp ebx,0xffffffff
je .end_open_file je .end_open_file
mov [open_file_size],ebx mov [open_file_size],ebx
;mcall 71,1,openfile_path ;mcall SF_SET_CAPTION,1,openfile_path
mov byte[can_save],0 mov byte[can_save],0
call init_tree call init_tree
@ -608,7 +618,7 @@ init_tree:
mov esi,dword[open_file_data] mov esi,dword[open_file_data]
cmp word[esi],CHUNK_MAIN cmp word[esi],CHUNK_MAIN
je @f 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 ;à¨á㥬 áâபã á ⥪á⮬ stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
jmp .end_open jmp .end_open
@@: @@:
@ -659,6 +669,7 @@ init_tree:
; ­ «¨§ ¤ ­­ëå ¡«®ª  ; ­ «¨§ ¤ ­­ëå ¡«®ª 
;input: ;input:
; eax - stack pointer
; esi - memory pointer ; esi - memory pointer
;output: ;output:
; eax - new stack pointer ; eax - new stack pointer
@ -716,11 +727,16 @@ block_analiz_data:
sub ecx,eax sub ecx,eax
cmp ecx,1 cmp ecx,1
jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã 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 add esi,eax
pop eax pop eax
jmp .next_bl jmp .next_bl
;stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ «  end if
;sub esi,eax ;¢®ááâ ­®¢«¥­¨¥ esi
.data_3: .data_3:
sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
@ -928,32 +944,6 @@ align 4
@@: @@:
ret 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 align 4
but_save_file: but_save_file:
pushad pushad
@ -964,7 +954,7 @@ but_save_file:
je .end_save_file 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.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov ebx, dword[open_file_data] mov ebx, dword[open_file_data]
@ -973,7 +963,7 @@ but_save_file:
mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©«  mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
mov byte[run_file_70+20], 0 mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], openfile_path mov dword[run_file_70.FileName], openfile_path
mcall 70,run_file_70 mcall SF_FILE,run_file_70
cmp ebx,0xffffffff cmp ebx,0xffffffff
je .end_save_file je .end_save_file
;...á®®¡é¥­¨¥... ;...á®®¡é¥­¨¥...
@ -986,7 +976,7 @@ but_wnd_coords:
cmp byte[prop_wnd_run],0 cmp byte[prop_wnd_run],0
jne @f jne @f
pushad pushad
mcall 51,1,prop_start,thread_coords mcall SF_CREATE_THREAD,1,prop_start,thread_coords
popad popad
@@: @@:
ret ret
@ -1006,7 +996,7 @@ but_delete_chunk:
mov edx,dword[eax+4] ;à §¬¥à ¡«®ª  mov edx,dword[eax+4] ;à §¬¥à ¡«®ª 
sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©«  sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
mov ecx,[open_file_size] mov ecx,[open_file_size]
mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©«  mov ebx,dword[eax]
sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩«  sub ecx,ebx ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ï⨠add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
mov edi,ebx mov edi,ebx
@ -1429,9 +1419,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
if lang eq ru if lang eq ru
capt db 'info 3ds ¢¥àá¨ï 16.01.16',0 ;¯®¤¯¨áì ®ª­  capt db 'info 3ds ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª­ 
else 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 end if
align 16 align 16

View File

@ -61,7 +61,7 @@ image_data_toolbar dd 0
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨ TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
icon_toolbar 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 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬ IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
@ -320,6 +320,15 @@ mouse:
;mouse l. but. move ;mouse l. but. move
cmp dword[mouse_drag],1 cmp dword[mouse_drag],1
jne .end_m 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 mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,eax mov ebx,eax
shr ebx,16 ;mouse.x shr ebx,16 ;mouse.x
@ -358,8 +367,7 @@ mouse:
fstp dword[angle_y] fstp dword[angle_y]
stdcall [tl_node_get_data],tree1 stdcall [tl_node_get_data],tree1
cmp eax,0 ;cmp eax,0 - ­¥ ­ ¤®, ¡ë«® ᤥ« ­® ¢ëè¥
je .end_d
add eax,list_offs_obj3d add eax,list_offs_obj3d
stdcall draw_3d, eax stdcall draw_3d, eax
jmp .end_d jmp .end_d
@ -410,7 +418,7 @@ timer_funct:
mov edi,eax mov edi,eax
add edi,list_offs_obj3d add edi,list_offs_obj3d
mov ebx,eax mov ebx,eax
mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©«  mov eax,dword[ebx]
mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª  mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
stdcall hex_in_str, txt_3ds_offs.dig, eax,8 stdcall hex_in_str, txt_3ds_offs.dig, eax,8
stdcall hex_in_str, txt_3ds_offs.siz, ecx,8 stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
@ -434,7 +442,22 @@ timer_funct:
call mnu_reset_settings ;á¡à®á 㣫®¢ ¯®¢®à®â  ¨ ०¨¬®¢ à¨á®¢ ­¨ï call mnu_reset_settings ;á¡à®á 㣫®¢ ¯®¢®à®â  ¨ ०¨¬®¢ à¨á®¢ ­¨ï
jmp .end_f jmp .end_f
.end_oblo: .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 stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_3ds_offs,5,35,0xb000
mov edx,dword[ebx+list_offs_p_data] mov edx,dword[ebx+list_offs_p_data]
cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª  cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
@ -446,17 +469,6 @@ timer_funct:
popad popad
jmp still 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 align 4
draw_window: draw_window:
pushad pushad
@ -715,7 +727,7 @@ init_tree:
mov esi,dword[open_file_data] mov esi,dword[open_file_data]
cmp word[esi],CHUNK_MAIN cmp word[esi],CHUNK_MAIN
je @f 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 ;à¨á㥬 áâபã á ⥪á⮬ stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
jmp .end_open jmp .end_open
@@: @@:
@ -738,14 +750,14 @@ init_tree:
mov edx,dword[esi+2] ;à §¬¥à ¡«®ª  mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
call block_analiz call block_analiz
;cmp word[esi],CHUNK_MATERIAL cmp word[esi],CHUNK_MATERIAL
;je @f je @f
cmp word[esi],CHUNK_OBJMESH cmp word[esi],CHUNK_OBJMESH
je @f je @f
cmp word[esi],CHUNK_OBJBLOCK cmp word[esi],CHUNK_OBJBLOCK
je @f je @f
mov dword[bl_found],0 mov dword[bl_found],0
@@: @@:
cmp dword[bl_found],0 cmp dword[bl_found],0
jne @f jne @f
;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤  ;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
@ -760,10 +772,19 @@ mov dword[bl_found],0
add esi,6 add esi,6
push esi push esi
sub esi,6 sub esi,6
jmp .pod2 jmp .pod3
.pod1: .pod1:
push dword[ecx+5] ;áâ ­¤ àâ­®¥ ­ §¢ ­¨¥ ¡«®ª  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: .pod2:
push dword[ecx+5] ;áâ ­¤ àâ­®¥ ­ §¢ ­¨¥ ¡«®ª 
.pod3:
stdcall add_3ds_object, ebx,dword[level_stack],edx stdcall add_3ds_object, ebx,dword[level_stack],edx
cmp byte[ecx+4],1 cmp byte[ecx+4],1
je .bl_data je .bl_data
@ -782,6 +803,7 @@ mov dword[bl_found],0
; ­ «¨§ ¤ ­­ëå ¡«®ª  ; ­ «¨§ ¤ ­­ëå ¡«®ª 
;input: ;input:
; eax - stack pointer
; esi - memory pointer ; esi - memory pointer
;output: ;output:
; eax - new stack pointer ; eax - new stack pointer
@ -833,9 +855,16 @@ proc block_analiz_data uses ebx ecx edx edi
sub ecx,eax sub ecx,eax
cmp ecx,1 cmp ecx,1
jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã 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 add esi,eax
pop eax pop eax
jmp .next_bl jmp .next_bl
end if
.data_3: .data_3:
sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
@ -1044,31 +1073,6 @@ align 4
@@: @@:
ret 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 align 4
OpenDialog_data: OpenDialog_data:
@ -1448,9 +1452,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
if lang eq ru if lang eq ru
capt db 'info 3ds [user] ¢¥àá¨ï 16.01.16',0 ;¯®¤¯¨áì ®ª­  capt db 'info 3ds [user] ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª­ 
else 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 end if
align 16 align 16

View File

@ -48,6 +48,17 @@ offs_obj_z_min equ 68
offs_obj_z_centr equ 72 offs_obj_z_centr equ 72
offs_obj_z_scale equ 76 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_vertexes equ 0
bit_faces equ 1 bit_faces equ 1
@ -71,6 +82,30 @@ key_select db 'col_select',0
rad_c dd 150 ;¤«ï ¢ëç¨á«¥­¨ï à ¤¨ãá  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 align 4
@ -503,6 +538,151 @@ end if
ret ret
endp 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 ;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
align 4 align 4
proc draw_3d uses eax ebx ecx edi, o_data:dword proc draw_3d uses eax ebx ecx edi, o_data:dword
@ -730,14 +910,18 @@ else
align 4 align 4
update_obj: update_obj:
push eax push eax ebx
stdcall [tl_node_get_data],tree1 stdcall [tl_node_get_data],tree1
cmp eax,0 cmp eax,0
je @f je @f
add eax,14 ;14=list_offs_obj3d mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
stdcall draw_3d, 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 ret
end if end if

View File

@ -37,18 +37,13 @@ dq 0,0
align 4 align 4
prop_start: prop_start:
pushad pushad
mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩ mcall SF_SET_EVENTS_MASK,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
inc byte[prop_wnd_run] inc byte[prop_wnd_run]
mov dword[w_scr_t3.type],1 mov dword[w_scr_t3.type],1
mov edi,o3d mov edi,o3d
stdcall obj_clear_param, edi stdcall obj_clear_param, edi
call mnu_reset_settings 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 stdcall [tl_node_get_data],tree1
xor edx,edx xor edx,edx
mov dword[capt_p],txt_q mov dword[capt_p],txt_q
@ -170,7 +165,7 @@ align 4
prop_still: prop_still:
pushad pushad
mcall 23,10 mcall SF_WAIT_EVENT_TIMEOUT,10
or eax,eax or eax,eax
jnz @f jnz @f
call prop_timer_funct call prop_timer_funct
@ -200,7 +195,7 @@ prop_still:
align 4 align 4
prop_red_win: prop_red_win:
pushad pushad
mcall 12,1 mcall SF_REDRAW,SSF_BEGIN_DRAW
xor eax,eax xor eax,eax
mov edi,dword[capt_p] ;children window caption mov edi,dword[capt_p] ;children window caption
@ -218,12 +213,12 @@ pushad
int 0x40 int 0x40
mov esi,[sc.work_button] 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 mcall , (30 shl 16)+20, (266 shl 16)+20, 4
mov ebx,[image_data_toolbar] mov ebx,[image_data_toolbar]
add ebx,3*IMAGE_TOOLBAR_ICON_SIZE 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 sub ebx,IMAGE_TOOLBAR_ICON_SIZE
mov edx,(32 shl 16)+268 ;save mov edx,(32 shl 16)+268 ;save
@ -238,13 +233,13 @@ pushad
stdcall [kmainmenu_draw], [main_menu] stdcall [kmainmenu_draw], [main_menu]
stdcall draw_3d, o3d stdcall draw_3d, o3d
mcall 12,2 mcall SF_REDRAW,SSF_END_DRAW
popad popad
ret ret
align 4 align 4
proc prop_key uses eax ebx proc prop_key uses eax ebx
mcall 2 mcall SF_GET_KEY
test word [edit1.flags],10b ;ed_focus test word [edit1.flags],10b ;ed_focus
je @f je @f
@ -306,13 +301,13 @@ endp
align 4 align 4
prop_mouse: prop_mouse:
push eax ebx push eax ebx
mcall 37,3 mcall SF_MOUSE_GET,SSF_BUTTON_EXT
bt eax,0 bt eax,0
jnc .end_m jnc .end_m
;mouse l. but. move ;mouse l. but. move
cmp dword[mouse_drag],1 cmp dword[mouse_drag],1
jne .end_m jne .end_m
mcall 37,1 ;get mouse coords mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;get mouse coords
mov ebx,eax mov ebx,eax
shr ebx,16 ;mouse.x shr ebx,16 ;mouse.x
cmp ebx,3d_wnd_l cmp ebx,3d_wnd_l
@ -361,7 +356,7 @@ prop_mouse:
bt eax,8 bt eax,8
jnc .end_d jnc .end_d
;mouse l. but. press ;mouse l. but. press
mcall 37,1 ;get mouse coords mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;get mouse coords
mov ebx,eax mov ebx,eax
shr ebx,16 ;mouse.x shr ebx,16 ;mouse.x
cmp ebx,3d_wnd_l cmp ebx,3d_wnd_l
@ -390,7 +385,7 @@ prop_mouse:
align 4 align 4
prop_button: prop_button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨ mcall SF_GET_BUTTON
cmp ah,3 cmp ah,3
jne @f jne @f
@ -528,7 +523,7 @@ prop_button:
mov dword[edi+offs_obj_normals_tri_data],0 mov dword[edi+offs_obj_normals_tri_data],0
mov dword[edi+offs_obj_normals_poi_data],0 mov dword[edi+offs_obj_normals_poi_data],0
mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­ mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë mcall SF_TERMINATE_PROCESS ;¢ë室 ¨§ ¯à®£à ¬¬ë
align 4 align 4
get_point_coords: get_point_coords:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB