forked from KolibriOS/kolibrios
update programs
git-svn-id: svn://kolibrios.org@6081 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
87bab698eb
commit
fc6f59584d
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 |
Loading…
Reference in New Issue
Block a user