2016-01-15 23:51:03 +01:00
use32
2017-04-19 16:07:11 +02:00
org 0
2016-01-15 23:51:03 +01:00
db 'MENUET01' ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> . <20> ᯮ<EFBFBD> <E1AFAE> 塞<EFBFBD> <EFA5AC> <EFBFBD> 䠩<> <E4A0A9> <20> ᥣ<EFBFBD> <E1A5A3> 8 <20> <> <EFBFBD> <EFBFBD>
dd 1 , start , i_end , mem , stacktop , file_name , sys_path
2016-09-05 22:55:35 +02:00
version_edit equ 0
2016-01-15 23:51:03 +01:00
include '../../macros.inc'
include '../../proc32.inc'
2016-01-20 05:30:33 +01:00
include '../../KOSfuncs.inc'
2017-04-19 16:07:11 +02:00
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
2016-02-13 01:08:46 +01:00
include '../../load_img.inc'
2016-01-15 23:51:03 +01:00
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
include 'lang.inc'
include 'info_fun_float.inc'
include 'info_menu.inc'
include 'data.inc'
2019-03-14 12:41:53 +01:00
include 'convert_stl_3ds.inc'
2016-01-15 23:51:03 +01:00
3 d_wnd_l equ 205 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> tinygl <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <> <E1ABA5>
3 d_wnd_t equ 47 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> tinygl <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᢥ<> <E1A2A5> <EFBFBD>
3 d_wnd_w equ 344
3 d_wnd_h equ 312
2020-11-26 23:02:39 +01:00
@ use_library mem.Alloc , mem.Free , mem.ReAlloc , dl l.Load
2016-01-15 23:51:03 +01:00
ID_ICON_CHUNK_MAIN equ 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
ID_ICON_CHUNK_NOT_FOUND equ 1 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⭮<EFBFBD> <E2ADAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
ID_ICON_DATA equ 2 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <20> <> ।<EFBFBD> <E0A5A4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
ID_ICON_POINT equ 8
ID_ICON_POINT_SEL equ 9
FILE_ERROR_CHUNK_SIZE equ - 3 ;<3B> 訡<EFBFBD> <E8A8A1> <20> ࠧ<> <E0A0A7> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-09-02 11:26:04 +02:00
size_one_list equ 42 + si zeof.obj_3d
list_offs_chunk_del equ 8 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD>
list_offs_chunk_lev equ 9 ;<3B> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> (<28> ய<EFBFBD> ᠭ <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> )
list_offs_p_data equ 10 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
list_offs_obj3d equ 14 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 3d <20> <> ꥪ<EFBFBD> <EAA5AA>
list_offs_text equ 14 + si zeof.obj_3d ;ᤢ<> <E1A4A2> <20> <> 砫<EFBFBD> ⥪<> <E2A5AA> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
include 'info_o3d.inc'
align 4
fl255 dd 255.0
open_file_data dd 0 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9> <EFBFBD> 3ds
open_file_size dd 0 ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮣<EFBFBD> 䠩<> <E4A0A9>
;
main_wnd_height equ 460 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ணࠬ<E0AEA3> <E0A0AC>
fn_toolbar db 'toolbar.png' , 0
2016-02-02 16:05:58 +01:00
IMAGE_TOOLBAR_ICON_SIZE equ 21 * 21 * 3
2016-01-15 23:51:03 +01:00
image_data_toolbar dd 0
;
2016-02-13 01:08:46 +01:00
icon_tl_sys dd 0 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
icon_toolbar dd 0 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ꥪ⮢
2016-01-15 23:51:03 +01:00
;--------------------------------------
level_stack dd 0
offs_last_timer dd 0 ;<3B> <> <EFBFBD> <E1ABA5> <EFBFBD> <EFBFBD> ᤢ<> <E1A4A2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> 㭪樨 ⠩<> <E2A0A9> <EFBFBD> <EFBFBD>
align 4
file_3ds: ;<3B> <> ६<EFBFBD> <E0A5AC> <EFBFBD> <EFBFBD> <EFBFBD> <20> ᯮ<EFBFBD> <E1AFAE> <EFBFBD> 㥬<EFBFBD> <E3A5AC> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⨨ 䠩<> <E4A0A9>
.offs: dd 0 ;+0 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
.size: dd 0 ;+4 ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> 1-<2D> <> <20> <> ࠬ<EFBFBD> <E0A0AC> <EFBFBD> <EFBFBD> = ࠧ<> <E0A0A7> <EFBFBD> 䠩<> <E4A0A9> 3ds)
rb 8 * MAX_FILE_LEVEL
buffer rb si ze_one_list ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ᯨ᮪ tree1
txt_3ds_symb db 0 , 0
;--------------------------------------
align 4
start:
;--- copy cmd line ---
mov esi , file_name
mov edi , openfile_path
@ @ :
lodsd
2019-03-14 12:41:53 +01:00
or eax , eax
jz @ f ;<3B> <> 室, <20> 0
2016-01-15 23:51:03 +01:00
stosd
jmp @ b
@ @ :
stosd
load_libraries l_libs_start , l_libs_end
;<3B> <EFBFBD> ઠ <20> <> <> 쪮 㤠筮 <20> <> <EFBFBD> 㧨<EFBFBD> <E3A7A8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD>
mov ebp , lib_0
.test_lib_open:
cmp dword [ ebp + ll_struc_size - 4 ], 0
jz @ f
mcall SF_TERMINATE_PROCESS ;exit not correct
@ @ :
add ebp , ll_struc_size
cmp ebp , l_libs_end
jl .test_lib_open
2016-02-07 19:37:13 +01:00
mcall SF_STYLE_SETTINGS , SS F_GET_COLORS , sc , si zeof.system_colors
2016-02-18 22:02:58 +01:00
mcall SF_SET_EVENTS_MASK , 0xC0000027
2016-01-15 23:51:03 +01:00
stdcall [ OpenDialog_Init ], OpenDialog_data ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮢<EFBFBD> <E2AEA2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
;kmenu initialisation
stdcall [ kmenu_init ], sc
stdcall [ ksubmenu_new ]
mov [ main_menu ], eax
stdcall [ ksubmenu_new ]
mov [ main_menu_view ], eax
2016-09-05 22:55:35 +02:00
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Vertexes , 5
2016-01-15 23:51:03 +01:00
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Faces , 6
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Faces_Fill , 7
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
2016-09-05 22:55:35 +02:00
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Faces_Mat , 8
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
stdcall [ kmenuitem_new ], KMENUITEM_SEPARATOR , 0 , 0
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
2016-09-02 11:26:04 +02:00
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Light , 9
2016-01-15 23:51:03 +01:00
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
2016-09-05 22:55:35 +02:00
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Smooth , 10
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
2016-01-15 23:51:03 +01:00
stdcall [ kmenuitem_new ], KMENUITEM_SEPARATOR , 0 , 0
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
2016-09-05 22:55:35 +02:00
stdcall [ kmenuitem_new ], KMENUITEM_NORMAL , sz_main_menu_Veiw_Reset , 11
2016-01-15 23:51:03 +01:00
stdcall [ ksubmenu_add ], [ main_menu_view ], eax
stdcall [ kmenuitem_new ], KMENUITEM_SUBMENU , sz_main_menu_View , [ main_menu_view ]
stdcall [ ksubmenu_add ], [ main_menu ], eax
mov dword [ w_scr_t1.type ], 1
2019-03-14 12:41:53 +01:00
stdcall [ tl_data_init ], tree1
2016-01-15 23:51:03 +01:00
;<3B> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 16*16 <20> <> <EFBFBD> tree_list
2019-03-14 12:41:53 +01:00
include_image_file 'tl_sys_16.png' , icon_tl_sys
2016-01-15 23:51:03 +01:00
;<3B> <20> <> <EFBFBD> <EFBFBD> ࠦ<EFBFBD> <E0A0A6> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> 뫮<EFBFBD> <EBABAE> , <20> <> <20> icon_tl_sys <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
;<3B> <> <20> <> <EFBFBD> 樠<EFBFBD> <E6A8A0> <EFBFBD> <EFBFBD> <EFBFBD> <E0AEA2> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <20> 訡<EFBFBD> <E8A8A1> <20> <> <20> 㤥<EFBFBD> , <20> . <20> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> 㦭<EFBFBD> <E3A6AD> <EFBFBD> ࠧ<> <E0A0A7> <EFBFBD> <EFBFBD>
mov eax , dword [ icon_tl_sys ]
mov dword [ tree1.data_img_sys ], eax
2016-02-13 01:08:46 +01:00
load_image_file 'objects.png' , icon_toolbar
2016-01-15 23:51:03 +01:00
mov eax , dword [ icon_toolbar ]
mov dword [ tree1.data_img ], eax
2016-02-13 01:08:46 +01:00
load_image_file 'font8x9.bmp' , image_data_toolbar
2016-01-15 23:51:03 +01:00
stdcall [ buf2d_create_f_img ], buf_1 ,[ image_data_toolbar ] ;ᮧ<> <E1AEA7> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall mem.Free ,[ image_data_toolbar ] ;<3B> <EFBFBD> <E1A2AE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall [ buf2d_conv_24_to_8 ], buf_1 , 1 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <EFBFBD> <E0AEA7> 筮<EFBFBD> <E7ADAE> <EFBFBD> 8 <20> <> <EFBFBD>
stdcall [ buf2d_convert_text_matrix ], buf_1
2016-02-13 01:08:46 +01:00
load_image_file fn_toolbar , image_data_toolbar
2016-01-15 23:51:03 +01:00
;ࠡ<> <E0A0A1> <EFBFBD> <20> 䠩<> <E4A0A9> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
copy_path ini_name , sys_path , file_name , 0
mov dword [ def_dr_mode ], 0
stdcall dword [ ini_get_int ], file_name , ini_sec_w3d , key_dv , 1
or eax , eax
jz @ f
or dword [ def_dr_mode ], 1 shl bit_vertexes
@ @ :
stdcall dword [ ini_get_int ], file_name , ini_sec_w3d , key_df , 1
or eax , eax
jz @ f
or dword [ def_dr_mode ], 1 shl bit_faces
@ @ :
stdcall dword [ ini_get_int ], file_name , ini_sec_w3d , key_dff , 1
or eax , eax
jz @ f
or dword [ def_dr_mode ], 1 shl bit_faces_fill
@ @ :
2016-09-05 22:55:35 +02:00
stdcall dword [ ini_get_int ], file_name , ini_sec_w3d , key_dfm , 1
or eax , eax
jz @ f
or dword [ def_dr_mode ], 1 shl bit_faces_mat
@ @ :
2016-01-15 23:51:03 +01:00
stdcall dword [ ini_get_int ], file_name , ini_sec_w3d , key_dl , 1
or eax , eax
jz @ f
or dword [ def_dr_mode ], 1 shl bit_light
@ @ :
2016-09-05 22:55:35 +02:00
stdcall dword [ ini_get_int ], file_name , ini_sec_w3d , key_ds , 1
or eax , eax
jz @ f
or dword [ def_dr_mode ], 1 shl bit_smooth
@ @ :
2016-01-15 23:51:03 +01:00
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_ox , 0x0000ff
mov [ color_ox ], eax
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_oy , 0xff0000
mov [ color_oy ], eax
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_oz , 0x00ff00
mov [ color_oz ], eax
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_bk , 0x000000
mov [ color_bk ], eax
shr eax , 8
mov [ color_bk + 4 ], eax
shr eax , 8
mov [ color_bk + 8 ], eax
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_vert , 0xffffff
mov [ color_vert ], eax
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_face , 0x808080
mov [ color_face ], eax
stdcall dword [ ini_get_color ], file_name , ini_sec_w3d , key_select , 0xffff00
mov [ color_select ], eax
finit
fild dword [ color_bk + 8 ]
fdiv dword [ fl255 ]
fstp dword [ color_bk + 8 ]
mov eax ,[ color_bk + 4 ]
and eax , 0xff
mov [ color_bk + 4 ], eax
fild dword [ color_bk + 4 ]
fdiv dword [ fl255 ]
fstp dword [ color_bk + 4 ]
mov eax ,[ color_bk ]
and eax , 0xff
mov [ color_bk ], eax
fild dword [ color_bk ]
fdiv dword [ fl255 ]
fstp dword [ color_bk ]
mcall SF_SYSTEM_GET , SS F_TIME_COUNT
mov [ last_time ], eax
stdcall [ kosglMakeCurrent ], 3 d_wnd_l , 3 d_wnd_t , 3 d_wnd_w , 3 d_wnd_h , ctx1
stdcall [ glEnable ], GL_DEPTH_TEST
stdcall [ glEnable ], GL_NORMALIZE ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ଠ <EFBFBD> <E0ACA0> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 稭<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 䠪⮢
stdcall [ glClearColor ], [ color_bk + 8 ],[ color_bk + 4 ],[ color_bk ], 0.0
stdcall [ glShadeModel ], GL_SMOOTH
2020-09-29 21:58:14 +02:00
call [ gluNewQuadric ]
2016-01-15 23:51:03 +01:00
mov [ qObj ], eax
mov eax , dword [ ctx1 ] ;eax -> TinyGLContext.GLContext
mov eax ,[ eax ] ;eax -> ZBuffer
2020-09-29 21:58:14 +02:00
mov eax ,[ eax + ZBuffer.pbuf ]
2016-01-15 23:51:03 +01:00
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 SF_SYSTEM_GET , SS F_TIME_COUNT
mov ebx ,[ last_time ]
add ebx , 10 ;<3B> <> <EFBFBD> <EFBFBD> প<EFBFBD>
cmp ebx , eax
jge @ f
mov ebx , eax
@ @ :
sub ebx , eax
mcall SF_WAIT_EVENT_TIMEOUT
2019-03-14 12:41:53 +01:00
or eax , eax
jz timer_funct
2016-01-15 23:51:03 +01:00
cmp al , 1
jne @ f
call draw_window
jmp still
@ @ :
cmp al , 2
jz key
cmp al , 3
jz button
cmp al , 6
jne @ f
mcall SF_THREAD_INFO , procinfo , - 1
cmp ax , word [ procinfo + 4 ]
jne @ f ;<3B> <> <EFBFBD> <EFBFBD> <20> <> <20> <> ⨢<EFBFBD> <E2A8A2>
call mouse
@ @ :
jmp still
align 4
mouse:
push eax ebx
mcall SF_MOUSE_GET , SS F_BUTTON_EXT
bt eax , 0
jnc .end_m
;mouse l. but. move
cmp dword [ mouse_drag ], 1
jne .end_m
2016-01-19 21:53:55 +01:00
stdcall [ tl_node_get_data ], tree1
2019-03-14 12:41:53 +01:00
or eax , eax
jz .end_d
2020-09-29 21:58:14 +02:00
mov ebx ,[ eax ]
2016-01-19 21:53:55 +01:00
add ebx , dword [ open_file_data ] ;<3B> <> <EFBFBD> <EFBFBD> 砥<EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD> ᤢ<> <E1A4A2> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp word [ ebx ], CH UNK_OBJBLOCK
jne .end_d
2016-01-15 23:51:03 +01:00
mcall SF_MOUSE_GET , SS F_WINDOW_POSITION
mov ebx , eax
2020-09-29 21:58:14 +02:00
sar ebx , 16 ;mouse.x
2016-01-15 23:51:03 +01:00
cmp ebx , 3 d_wnd_l
jg @ f
mov ebx , 3 d_wnd_l
@ @ :
sub ebx , 3 d_wnd_l
cmp ebx , 3 d_wnd_w
jle @ f
mov ebx , 3 d_wnd_w
@ @ :
2020-09-29 21:58:14 +02:00
movsx eax , ax ;mouse.y
2016-01-15 23:51:03 +01:00
cmp eax , 3 d_wnd_t
jg @ f
mov eax , 3 d_wnd_t
@ @ :
sub eax , 3 d_wnd_t
cmp eax , 3 d_wnd_h
jle @ f
mov eax , 3 d_wnd_h
@ @ :
finit
fild dword [ mouse_y ]
mov [ mouse_y ], eax
fisub dword [ mouse_y ]
fdiv dword [ angle_dxm ] ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> y (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ) <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> x
fadd dword [ angle_x ]
fstp dword [ angle_x ]
fild dword [ mouse_x ]
mov [ mouse_x ], ebx
fisub dword [ mouse_x ]
fdiv dword [ angle_dym ] ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> x (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ) <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> y
fadd dword [ angle_y ]
fstp dword [ angle_y ]
stdcall [ tl_node_get_data ], tree1
2016-01-19 21:53:55 +01:00
;cmp eax,0 - <20> <> <20> <> <EFBFBD> <EFBFBD> , <20> 뫮 ᤥ<> <E1A4A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
add eax , list_offs_obj3d
stdcall draw_3d , eax
jmp .end_d
.end_m:
bt eax , 16
jnc @ f
;mouse l. but. up
mov dword [ mouse_drag ], 0
jmp .end_d
@ @ :
bt eax , 8
jnc .end_d
;mouse l. but. press
mcall SF_MOUSE_GET , SS F_WINDOW_POSITION
mov ebx , eax
2020-09-29 21:58:14 +02:00
sar ebx , 16 ;mouse.x
2016-01-15 23:51:03 +01:00
cmp ebx , 3 d_wnd_l
jl .end_d
sub ebx , 3 d_wnd_l
cmp ebx , 3 d_wnd_w
jg .end_d
2020-09-29 21:58:14 +02:00
movsx eax , ax ;mouse.y
2016-01-15 23:51:03 +01:00
cmp eax , 3 d_wnd_t
jl .end_d
sub eax , 3 d_wnd_t
cmp eax , 3 d_wnd_h
jg .end_d
mov dword [ mouse_drag ], 1
mov dword [ mouse_x ], ebx
mov dword [ mouse_y ], eax
.end_d:
2020-09-29 21:58:14 +02:00
stdcall [ tl_mouse ], tree1
2016-01-15 23:51:03 +01:00
stdcall [ kmainmenu_dispatch_cursorevent ], [ main_menu ]
pop ebx eax
ret
align 4
timer_funct:
pushad
mcall SF_SYSTEM_GET , SS F_TIME_COUNT
mov [ last_time ], eax
;<3B> <> <EFBFBD> ᬠ<EFBFBD> ਢ<EFBFBD> <E0A8A2> <EFBFBD> <20> 뤥<EFBFBD> <EBA4A5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall [ tl_node_get_data ], tree1
2019-03-14 12:41:53 +01:00
or eax , eax
jz .end_f
2020-09-29 21:58:14 +02:00
lea edi ,[ eax + list_offs_obj3d ]
2016-01-15 23:51:03 +01:00
mov ebx , eax
2020-09-29 21:58:14 +02:00
mov eax ,[ ebx ]
mov ecx ,[ ebx + 4 ] ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
stdcall hex_in_str , txt_3ds_offs.dig , eax , 8
stdcall hex_in_str , txt_3ds_offs.siz , ecx , 8
2020-09-29 21:58:14 +02:00
add eax ,[ open_file_data ] ;<3B> <> <EFBFBD> <EFBFBD> 砥<EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD> ᤢ<> <E1A4A2> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp [ offs_last_timer ], eax
2016-01-15 23:51:03 +01:00
je .end_f
;<3B> <20> 뤥<EFBFBD> <EBA4A5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ᮢ<> <E1AEA2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <E1ABA5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2020-09-29 21:58:14 +02:00
mov [ offs_last_timer ], eax
2016-01-15 23:51:03 +01:00
cmp word [ eax ], CH UNK_OBJBLOCK
jne .end_oblo
2017-04-19 16:07:11 +02:00
cmp dword [ edi + obj_3d.poi_count ], 2
2016-01-15 23:51:03 +01:00
jl .ini_oblo
stdcall draw_3d , edi
jmp .end_f
.ini_oblo:
stdcall obj_init , edi ;<3B> <> <EFBFBD> <EFBFBD> ⪠ <20> <> <EFBFBD> <EFBFBD> ந<EFBFBD> <E0AEA8> <20> <> ६<EFBFBD> <E0A5AC> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ꥪ<EFBFBD> <EAA5AA>
2017-04-19 16:07:11 +02:00
cmp dword [ edi + obj_3d.poi_count ], 2
2016-01-15 23:51:03 +01:00
jl .end_f
call mnu_reset_settings ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㣫<> <E3A3AB> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ० <> <E0A5A6> <EFBFBD> <EFBFBD> <20> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD>
jmp .end_f
.end_oblo:
2016-01-19 21:53:55 +01:00
cmp word [ eax ], CH UNK_MATERIAL
jne .end_mblo
2017-04-19 16:07:11 +02:00
cmp dword [ edi + material.name ], 0
2016-01-19 21:53:55 +01:00
je .ini_mblo
stdcall draw_material , edi
jmp .end_f
.ini_mblo:
2016-09-02 11:26:04 +02:00
stdcall mat_init , edi , eax ;<3B> <> <EFBFBD> <EFBFBD> ⪠ <20> <> <EFBFBD> <EFBFBD> ந<EFBFBD> <E0AEA8> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ਠ<EFBFBD> <E0A8A0>
2017-04-19 16:07:11 +02:00
cmp dword [ edi + material.name ], 0
2016-01-19 21:53:55 +01:00
je .end_f
stdcall draw_material , edi
jmp .end_f
.end_mblo:
stdcall buf_draw_beg , buf_ogl
2016-01-15 23:51:03 +01:00
stdcall [ buf2d_draw_text ], buf_ogl , buf_1 , txt_3ds_offs , 5 , 35 , 0xb000
2020-09-29 21:58:14 +02:00
mov edx ,[ ebx + list_offs_p_data ]
2019-03-14 12:41:53 +01:00
or edx , edx ;ᬮ<> ਬ <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> ᠭ<EFBFBD> <E1A0AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
jz .no_info
2016-01-15 23:51:03 +01:00
stdcall [ buf2d_draw_text ], buf_ogl , buf_1 , edx , 5 , 45 , 0xb000
.no_info:
stdcall [ buf2d_draw ], buf_ogl ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD>
.end_f:
popad
jmp still
align 4
draw_window:
pushad
mcall SF_REDRAW , SS F_BEGIN_DRAW
mov edx ,[ sc.work ]
or edx , 0x33000000
mcall SF_CREATE_WINDOW , ( 20 shl 16 ) + 560 , ( 20 shl 16 ) + main_wnd_height ,,, capt
mcall SF_THREAD_INFO , procinfo , - 1
mov eax , dword [ procinfo.box.height ]
cmp eax , 250
jge @ f
mov eax , 250
@ @ :
sub eax , 30
sub eax ,[ tree1.box_top ]
mov [ tree1.box_height ], eax
mov word [ w_scr_t1.y_size ], ax ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> ࠧ<> <E0A0A7> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall [ kmainmenu_draw ], [ main_menu ]
mov esi ,[ sc.work_button ]
2016-02-02 16:05:58 +01:00
mcall SF_DEFINE_BUTTON ,( 5 shl 16 ) + 20 ,( 24 shl 16 ) + 20 , 0x40000003
mcall ,( 30 shl 16 ) + 20 ,, 0x40000004 ;open
2016-09-02 11:26:04 +02:00
mcall ,( 3 d_wnd_l shl 16 ) + 20 ,, 0x40000005 ;<3B> <> <EFBFBD> 設<EFBFBD> <20> <> <EFBFBD> .
mcall ,(( 3 d_wnd_l + 25 ) shl 16 ) + 20 ,, 0x40000006 ;<3B> <> ઠ<EFBFBD> <E0AAA0> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <20> <> <EFBFBD> .
mcall ,(( 3 d_wnd_l + 50 ) shl 16 ) + 20 ,, 0x40000007 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <20> <> <EFBFBD> .
mcall ,(( 3 d_wnd_l + 75 ) shl 16 ) + 20 ,, 0x40000008 ;<3B> ࠭<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> ਠ<EFBFBD> <E0A8A0> <EFBFBD> <20> <> <EFBFBD> .
mcall ,(( 3 d_wnd_l + 100 ) shl 16 ) + 20 ,, 0x40000009 ;ᢥ<> <20> <> <EFBFBD> ./<2F> 몫.
2016-09-05 22:55:35 +02:00
mcall ,(( 3 d_wnd_l + 125 ) shl 16 ) + 20 ,, 0x4000000a ;ᣫ<> <E1A3AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
mcall ,(( 3 d_wnd_l + 150 ) shl 16 ) + 20 ,, 0x4000000b ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD>
2017-04-19 16:07:11 +02:00
mcall ,(( 3 d_wnd_l + 175 ) shl 16 ) + 20 ,, 0x4000000c ;<3B> <> ਭ <20> <> 3d <20> <> <EFBFBD> <EFBFBD>
2016-02-02 16:05:58 +01:00
mcall SF_PUT_IMAGE ,[ image_data_toolbar ],( 21 shl 16 ) + 21 ,( 5 shl 16 ) + 24 ;new
2016-01-15 23:51:03 +01:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
2016-02-02 16:05:58 +01:00
mcall ,,,( 30 shl 16 ) + 24 ;open
2016-01-15 23:51:03 +01:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE * 6
2016-09-02 11:26:04 +02:00
mcall ,,,(( 3 d_wnd_l ) shl 16 ) + 24 ;<3B> <> <EFBFBD> 設<EFBFBD> <20> <> <EFBFBD> .
2016-01-15 23:51:03 +01:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
2016-09-02 11:26:04 +02:00
mcall ,,,(( 3 d_wnd_l + 25 ) shl 16 ) + 24 ;<3B> <> ઠ<EFBFBD> <E0AAA0> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <20> <> <EFBFBD> .
2016-01-15 23:51:03 +01:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
2016-09-02 11:26:04 +02:00
mcall ,,,(( 3 d_wnd_l + 50 ) shl 16 ) + 24 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <20> <> <EFBFBD> .
2016-01-15 23:51:03 +01:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
2016-09-02 11:26:04 +02:00
mcall ,,,(( 3 d_wnd_l + 100 ) shl 16 ) + 24 ;ᢥ<> <20> <> <EFBFBD> ./<2F> 몫.
2016-01-15 23:51:03 +01:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
2016-09-05 22:55:35 +02:00
mcall ,,,(( 3 d_wnd_l + 150 ) shl 16 ) + 24 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-09-02 11:26:04 +02:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
mcall ,,,(( 3 d_wnd_l + 75 ) shl 16 ) + 24 ;<3B> ࠭<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> ਠ<EFBFBD> <E0A8A0> <EFBFBD> <20> <> <EFBFBD> .
2016-09-05 22:55:35 +02:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
mcall ,,,(( 3 d_wnd_l + 125 ) shl 16 ) + 24 ;ᣫ<> <E1A3AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2017-04-19 16:07:11 +02:00
add ebx , IMAGE_TOOLBAR_ICON_SIZE
mcall ,,,(( 3 d_wnd_l + 175 ) shl 16 ) + 24 ;<3B> <> ਭ <20> <> 3d <20> <> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
mov dword [ w_scr_t1.all_redraw ], 1
stdcall [ tl_draw ], tree1
stdcall [ buf2d_draw ], buf_ogl
mcall SF_REDRAW , SS F_END_DRAW
popad
ret
align 4
key:
mcall SF_GET_KEY
cmp dword [ el_focus ], tree1
jne @ f
stdcall [ tl_key ], tree1
jmp .end
@ @ :
cmp ah , 178 ;Up
jne @ f
fld dword [ angle_x ]
fadd dword [ delt_size ]
fstp dword [ angle_x ]
stdcall [ tl_node_get_data ], tree1
2019-03-14 12:41:53 +01:00
or eax , eax
jz .end
2016-01-15 23:51:03 +01:00
add eax , list_offs_obj3d
stdcall draw_3d , eax
jmp .end
@ @ :
cmp ah , 177 ;Down
jne @ f
fld dword [ angle_x ]
fsub dword [ delt_size ]
fstp dword [ angle_x ]
stdcall [ tl_node_get_data ], tree1
2019-03-14 12:41:53 +01:00
or eax , eax
jz .end
2016-01-15 23:51:03 +01:00
add eax , list_offs_obj3d
stdcall draw_3d , eax
jmp .end
@ @ :
cmp ah , 176 ;Left
jne @ f
fld dword [ angle_y ]
fadd dword [ delt_size ]
fstp dword [ angle_y ]
stdcall [ tl_node_get_data ], tree1
2019-03-14 12:41:53 +01:00
or eax , eax
jz .end
2016-01-15 23:51:03 +01:00
add eax , list_offs_obj3d
stdcall draw_3d , eax
jmp .end
@ @ :
cmp ah , 179 ;Right
jne @ f
fld dword [ angle_y ]
fsub dword [ delt_size ]
fstp dword [ angle_y ]
stdcall [ tl_node_get_data ], tree1
2019-03-14 12:41:53 +01:00
or eax , eax
jz .end
2016-01-15 23:51:03 +01:00
add eax , list_offs_obj3d
stdcall draw_3d , eax
;jmp .end
@ @ :
.end:
jmp still
align 4
button:
mcall SF_GET_BUTTON
cmp ah , 3
jne @ f
call but_new_file
jmp still
@ @ :
cmp ah , 4
jne @ f
call but_open_file
jmp still
@ @ :
;menu functions
cmp ah , 5
jne @ f
call mnu_vertexes_on
jmp still
@ @ :
cmp ah , 6
jne @ f
call mnu_edges_on
jmp still
@ @ :
cmp ah , 7
jne @ f
call mnu_faces_on
jmp still
@ @ :
cmp ah , 8
jne @ f
2016-09-02 11:26:04 +02:00
call mnu_faces_mat
2016-01-15 23:51:03 +01:00
jmp still
@ @ :
cmp ah , 9
2016-09-02 11:26:04 +02:00
jne @ f
call mnu_light_on_off
jmp still
@ @ :
cmp ah , 10
2016-09-05 22:55:35 +02:00
jne @ f
call mnu_smooth_on_off
jmp still
@ @ :
cmp ah , 11
2016-01-15 23:51:03 +01:00
jne @ f
call mnu_reset_settings
jmp still
@ @ :
2017-04-19 16:07:11 +02:00
cmp ah , 12
jne @ f
call mnu_make_scrshot
jmp still
@ @ :
2016-01-15 23:51:03 +01:00
cmp ah , 1
jne still
.exit:
mov dword [ tree1.data_img ], 0
mov dword [ tree1.data_img_sys ], 0
stdcall [ tl_data_clear ], tree1
stdcall [ buf2d_delete ], buf_1 ;㤠<> 塞 <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall mem.Free ,[ image_data_toolbar ]
stdcall mem.Free ,[ open_file_data ]
stdcall [ gluDeleteQuadric ], [ qObj ]
mcall SF_TERMINATE_PROCESS
align 4
but_new_file:
push eax ebx
2019-03-14 12:41:53 +01:00
stdcall [ tl_node_poi_get_info ], tree1 , 0
2016-01-15 23:51:03 +01:00
@ @ :
2019-03-14 12:41:53 +01:00
or eax , eax
jz @ f
2016-01-15 23:51:03 +01:00
mov ebx , eax
stdcall [ tl_node_poi_get_data ], tree1 , ebx
add eax , list_offs_obj3d
stdcall obj_clear_param , eax
2019-03-14 12:41:53 +01:00
stdcall [ tl_node_poi_get_next_info ], tree1 , ebx
or eax , eax
jnz @ b
2016-01-15 23:51:03 +01:00
@ @ :
pop ebx eax
stdcall [ tl_info_clear ], tree1 ;<3B> <> <EFBFBD> <EFBFBD> ⪠ ᯨ᪠ <20> <> ꥪ⮢
stdcall [ buf2d_clear ], buf_ogl , [ buf_ogl.color ] ;<3B> <> <EFBFBD> ⨬ <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall [ tl_draw ], tree1
stdcall [ buf2d_draw ], buf_ogl ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD>
ret
align 4
but_open_file:
copy_path open_dialog_name , communication_area_default_path , file_name , 0
pushad
mov [ OpenDialog_data.type ], 0
stdcall [ OpenDialog_Start ], OpenDialog_data
cmp [ OpenDialog_data.status ], 2
je .end_open_file
;<3B> <> <EFBFBD> <20> <> <EFBFBD> 㤠筮<E3A4A0> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⨨ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-03-23 09:31:59 +01:00
jmp .end0
2016-01-15 23:51:03 +01:00
.no_dlg: ;<3B> <20> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9>
pushad
2019-03-23 09:31:59 +01:00
mov esi , openfile_path
stdcall str_len , esi
add esi , eax
@ @ : ;横<> <20> <> <EFBFBD> <20> <> <EFBFBD> ᪠ <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9>
dec esi
cmp byte [ esi ], '/'
je @ f
cmp byte [ esi ], 0x5c ;'\'
je @ f
cmp esi , openfile_path
jg @ b
@ @ :
inc esi
stdcall [ OpenDialog_Set_file_name ], OpenDialog_data , esi ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㥬 <20> <> <EFBFBD> 䠩<> <E4A0A9> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD>
.end0:
2016-01-15 23:51:03 +01:00
mov [ run_file_70.Function ], SS F_GET_INFO
mov [ run_file_70.Position ], 0
mov [ run_file_70.Flags ], 0
mov dword [ run_file_70.Count ], 0
mov dword [ run_file_70.Buffer ], open_b
mov byte [ run_file_70 + 20 ], 0
mov dword [ run_file_70.FileName ], openfile_path
mcall SF_FILE , run_file_70
mov ecx , dword [ open_b + 32 ] ;+32 qword: ࠧ<> <E0A0A7> <EFBFBD> 䠩<> <E4A0A9> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall mem.ReAlloc ,[ open_file_data ], ecx
mov [ open_file_data ], eax
mov [ run_file_70.Function ], SS F_READ_FILE
mov [ run_file_70.Position ], 0
mov [ run_file_70.Flags ], 0
mov dword [ run_file_70.Count ], ecx
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 SF_FILE , run_file_70 ;<3B> <> <EFBFBD> <EFBFBD> 㦠<EFBFBD> <E3A6A0> 䠩<> 3ds
cmp ebx , 0xffffffff
je .end_open_file
mov [ open_file_size ], ebx
;mcall SF_SET_CAPTION,1,openfile_path
call init_tree
stdcall [ buf2d_draw ], buf_ogl ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD>
.end_open_file:
popad
ret
align 4
init_tree:
;<3B> <> <EFBFBD> ⨬ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ꥪ⠬<EAA5AA>
2019-03-14 12:41:53 +01:00
stdcall [ tl_node_poi_get_info ], tree1 , 0
2016-01-15 23:51:03 +01:00
@ @ :
2019-03-14 12:41:53 +01:00
or eax , eax
jz @ f
2016-01-15 23:51:03 +01:00
mov ebx , eax
stdcall [ tl_node_poi_get_data ], tree1 , ebx
2019-03-14 12:41:53 +01:00
or eax , eax
jz @ f
2016-01-15 23:51:03 +01:00
add eax , list_offs_obj3d
stdcall obj_clear_param , eax
2019-03-14 12:41:53 +01:00
stdcall [ tl_node_poi_get_next_info ], tree1 , ebx
or eax , eax
jnz @ b
2016-01-15 23:51:03 +01:00
@ @ :
stdcall [ tl_info_clear ], tree1 ;<3B> <> <EFBFBD> <EFBFBD> ⪠ ᯨ᪠ <20> <> ꥪ⮢
2019-03-14 12:41:53 +01:00
mov esi ,[ open_file_data ]
stdcall convert_stl_3ds , esi ,[ open_file_size ] ;<3B> <EFBFBD> <E0AEA2> 塞 䠩<> <20> <> ଠ <EFBFBD> <E0ACA0> *.stl ?
or eax , eax
jz @ f
;<3B> 䠩<> <20> <20> <> ଠ <EFBFBD> <E0ACA0> *.stl
mov [ open_file_size ], ecx
mov esi , eax
stdcall mem.Free ,[ open_file_data ]
mov [ open_file_data ], esi
mov byte [ can_save ], 1
@ @ :
2016-01-15 23:51:03 +01:00
cmp word [ esi ], CH UNK_MAIN
je @ f
2019-03-14 12:41:53 +01:00
mov eax ,[ esi ]
bswap eax
stdcall hex_in_str , txt_no_3ds.zag , eax , 8
2016-01-19 21:53:55 +01:00
stdcall buf_draw_beg , buf_ogl
2016-01-15 23:51:03 +01:00
stdcall [ buf2d_draw_text ], buf_ogl , buf_1 , txt_no_3ds , 5 , 25 , 0xff0000 ;<3B> <> <EFBFBD> 㥬 <20> <> ப<EFBFBD> <20> ⥪<> ⮬
jmp .end_open
@ @ :
;--- <20> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮣<EFBFBD> *.3ds 䠩<> <E4A0A9>
mov eax , file_3ds
mov dword [ level_stack ], 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> ⥪<EFBFBD>
mov dword [ offs_last_timer ], 0
;--- <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> ᯨ᮪
stdcall add_3ds_object , ID_ICON_CHUNK_MAIN , 0 , dword [ esi + 2 ], 0
call bl ock_children ;<3B> 室 <20> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2019-03-14 12:41:53 +01:00
mov edi ,[ file_3ds.offs ]
add edi ,[ file_3ds.size ]
2016-01-15 23:51:03 +01:00
.cycle_main:
cmp dword [ level_stack ], 0
jle .end_cycle
cmp esi , edi ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9>
jge .end_cycle
2019-03-14 12:41:53 +01:00
mov edx ,[ esi + 2 ] ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
call bl ock_analiz
2016-01-19 21:53:55 +01:00
cmp word [ esi ], CH UNK_MATERIAL
je @ f
cmp word [ esi ], CH UNK_OBJMESH
je @ f
cmp word [ esi ], CH UNK_OBJBLOCK
je @ f
mov dword [ bl _found ], 0
@ @ :
2016-01-15 23:51:03 +01:00
cmp dword [ bl _found ], 0
jne @ f
;<3B> <> ꥪ<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⭮<EFBFBD> <E2ADAE> <20> <> <EFBFBD> <EFBFBD>
call bl ock_next
jmp .cycle_main
@ @ :
;<3B> <> ꥪ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⭮<EFBFBD> <E2ADAE> <20> <> <EFBFBD> <EFBFBD>
mov ecx , dword [ bl _found ]
mov bx , word [ ecx + 2 ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> ꥪ<EFBFBD> <EAA5AA>
cmp word [ esi ], CH UNK_OBJBLOCK
jne .pod1
add esi , 6
push esi
sub esi , 6
2016-01-19 21:53:55 +01:00
jmp .pod3
2016-01-15 23:51:03 +01:00
.pod1:
2016-01-19 21:53:55 +01:00
cmp word [ esi ], CH UNK_MATERIAL
jne .pod2
cmp word [ esi + 6 ], CH UNK_MATNAME
jne .pod2
add esi , 12
push esi
sub esi , 12
jmp .pod3
2016-01-15 23:51:03 +01:00
.pod2:
2016-01-19 21:53:55 +01:00
push dword [ ecx + 5 ] ;<3B> ⠭<EFBFBD> <E2A0AD> <EFBFBD> ⭮<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
.pod3:
2016-01-15 23:51:03 +01:00
stdcall add_3ds_object , ebx , dword [ level_stack ], edx
cmp byte [ ecx + 4 ], 1
je .bl_data
;<3B> <> <EFBFBD> <EFBFBD> ᮤ<> ন<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
call bl ock_children ;<3B> 室 <20> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
jmp .cycle_main
.bl_data:
;<3B> <> <EFBFBD> <EFBFBD> ᮤ<> ন<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
call bl ock_analiz_data
jmp .cycle_main
.end_cycle:
stdcall [ tl_cur_beg ], tree1
stdcall [ tl_draw ], tree1
.end_open:
ret
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
;input:
2016-01-19 21:53:55 +01:00
; eax - stack pointer
2016-01-15 23:51:03 +01:00
; esi - memory pointer
;output:
; eax - new stack pointer
; esi - new memory pointer
align 4
proc bl ock_analiz_data uses ebx ecx edx edi
2019-03-14 12:41:53 +01:00
mov dx ,[ esi ]
mov ecx ,[ esi + 2 ]
2016-01-15 23:51:03 +01:00
sub ecx , 6 ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
add esi , 6
mov ebx , dword [ level_stack ]
inc ebx
; *** <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠧ<> 묨 <20> <> <EFBFBD> <EFBFBD> 묨 <20> <20> 뤥<EFBFBD> <EBA4A5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp dx , CH UNK_OBJBLOCK ;<3B> <> ꥪ<EFBFBD>
jne @ f
push ax
cld
xor al , al
mov edi , esi
repne scasb
pop ax
sub edi , esi ;edi - strlen
add esi , edi
;sub ecx,edi ;㦥 ᤥ<> <E1A4A5> <EFBFBD> <EFBFBD> <20> repne
jmp .next_bl
@ @ :
cmp dx , CH UNK_VERTLIST ;ᯨ᮪ <20> <> <EFBFBD> 設
je .vertexes
cmp dx , 0x4111 ;䫠<> <E4ABA0> <20> <> <EFBFBD> 設
je .vertexes
cmp dx , CH UNK_MAPLIST ;⥪<> <E2A5AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD>
je .vertexes
jmp @ f
.vertexes: ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , ᮤ<> ঠ<EFBFBD> <E0A6A0> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 設
add esi , 2
sub ecx , 2
sub esi , 8 ;<3B> <> <EFBFBD> <EFBFBD> ⠭<EFBFBD> <E2A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> esi
call bl ock_next
jmp .end_f
@ @ :
cmp dx , CH UNK_FACELIST ;ᯨ᮪ <20> ࠭<EFBFBD> <E0A0AD>
jne @ f
push eax
movzx eax , word [ esi ]
shl eax , 3
add esi , 2
sub ecx , 2
sub ecx , eax
cmp ecx , 1
jl .data_3 ;<3B> <EFBFBD> <E0AEA2> 塞 <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 뢠<EFBFBD> 騩 <20> <> <EFBFBD> <EFBFBD> ਠ<EFBFBD> , <20> ਬ<EFBFBD> <E0A8AC> 塞<EFBFBD> <EFA5AC> <20> <20> <> ꥪ<EFBFBD> <EAA5AA>
2016-01-19 21:53:55 +01:00
if 1
add esi , eax
mov ecx , dword [ esi + 2 ]
stdcall add_3ds_object , 10 , ebx , ecx , 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ਠ<EFBFBD> <E0A8A0>
sub esi , eax
else
2016-01-15 23:51:03 +01:00
add esi , eax
pop eax
jmp .next_bl
2016-01-19 21:53:55 +01:00
end if
2016-01-15 23:51:03 +01:00
.data_3:
sub esi , 8 ;<3B> <> <EFBFBD> <EFBFBD> ⠭<EFBFBD> <E2A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> esi
pop eax
call bl ock_next
jmp .end_f
@ @ :
cmp dx , CH UNK_FACEMAT ;<3B> <> <EFBFBD> <EFBFBD> ਠ<EFBFBD> <E0A8A0> <20> ࠭<EFBFBD> <E0A0AD>
jne @ f
push ax
cld
xor al , al
mov edi , esi
repne scasb
pop ax
sub edi , esi ;edi - strlen
stdcall add_3ds_object , ID_ICON_DATA , ebx , edi , 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ꥪ<EFBFBD> <EAA5AA>
add esi , edi
add esi , 2
sub ecx , 2
sub esi , edi ;<3B> <> <EFBFBD> <EFBFBD> ⠭<EFBFBD> <E2A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> esi (1)
sub esi , 8 ;<3B> <> <EFBFBD> <EFBFBD> ⠭<EFBFBD> <E2A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> esi (2)
call bl ock_next
jmp .end_f
@ @ :
; *** <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> 묨 <20> <> 㬮<> 砭<EFBFBD> <E7A0AD> (<28> <> <EFBFBD> <20> 뤥<EFBFBD> <EBA4A5> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
sub esi , 6 ;<3B> <> <EFBFBD> <EFBFBD> ⠭<EFBFBD> <E2A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> esi
call bl ock_next
jmp .end_f
.next_bl:
; *** <20> <> <EFBFBD> <EFBFBD> ன<EFBFBD> <E0AEA9> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ⠢<EFBFBD> <E2A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
mov dword [ eax ], esi ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
mov ebx , dword [ esi + 2 ]
mov dword [ eax + 4 ], ebx ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
inc dword [ level_stack ]
add eax , 8
.end_f:
ret
endp
;<3B> 室 <20> 1-<2D> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
;input:
; eax - 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> ६<EFBFBD> <E0A5AC> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⥪ 䠩<> <E4A0A9> file_3ds
; esi - <20> <> 砫<EFBFBD> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
;output:
; ebx - destroy
; esi - <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
align 4
block_children:
push ecx
;<3B> <EFBFBD> ઠ <20> ࠢ<EFBFBD> <E0A0A2> 쭮<EFBFBD> <ECADAE> <EFBFBD> ࠧ<> <E0A0A7> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <E0ADA5> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2019-03-14 12:41:53 +01:00
lea ebx ,[ esi + 6 ] ;<3B> <> <EFBFBD> <EFBFBD> 室 <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <E0ADA5> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
add ebx ,[ ebx + 2 ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <E0ADA5> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
mov ecx , esi
2019-03-14 12:41:53 +01:00
add ecx ,[ esi + 2 ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 ࠧ<> <E0A0A7> <EFBFBD> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
cmp ebx , ecx ;<3B> <> <EFBFBD> <EFBFBD> 뢠<EFBFBD> <EBA2A0> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> 㦭<EFBFBD> , <20> . <20> . <20> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⮫쪮 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
jle @ f
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <E0AEA2> <EFBFBD> <20> 訡<EFBFBD> <E8A8A1> 䠩<> <E4A0A9> , <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> 室<EFBFBD> <E5AEA4> <20> <> <20> ।<EFBFBD> <E0A5A4> <EFBFBD> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE>
mov dword [ level_stack ], FILE_ERROR_CHUNK_SIZE
jmp .end_f
@ @ :
2019-03-14 12:41:53 +01:00
mov [ eax ], esi ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
mov ebx ,[ esi + 2 ]
mov [ eax + 4 ], ebx ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
add esi , 6 ;<3B> <> <EFBFBD> <EFBFBD> 室<EFBFBD> <E5AEA4> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
inc dword [ level_stack ]
add eax , 8
.end_f:
pop ecx
ret
;<3B> <> <EFBFBD> <EFBFBD> 室 <20> <> <E1ABA5> 饬<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<> 饣<EFBFBD> <20> <EFBFBD> <E0AEA2>
;input:
; eax - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> ६<EFBFBD> <E0A5AC> <EFBFBD> 묨
align 4
block_next:
push ebx
add esi , dword [ esi + 2 ] ;<3B> ய<EFBFBD> ᪠<EFBFBD> <E1AAA0> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
;<3B> <EFBFBD> ઠ ࠧ<> <E0A0A7> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 室<EFBFBD> <20> <> <20> <> <EFBFBD> 孨<EFBFBD> <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
@ @ :
mov ebx , dword [ eax - 8 ]
add ebx , dword [ eax - 4 ]
cmp esi , ebx
jl @ f
dec dword [ level_stack ]
sub eax , 8
cmp dword [ level_stack ], 0
jg @ b
@ @ :
pop ebx
ret
;<3B> 㭪<EFBFBD> <E3ADAA> <EFBFBD> <20> <> <EFBFBD> ᪠ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 뢠<EFBFBD> 饩 <20> <> <EFBFBD> <EFBFBD>
;input:
;esi - memory pointer
;output:
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
align 4
bl_found dd 0
block_analiz:
pushad
mov dword [ bl _found ], 0
mov ecx , type_bloks
@ @ :
mov bx , word [ ecx ]
cmp word [ esi ], bx
je .found
add ecx , si zeof.block_3ds
cmp ecx , type_bloks.end
jl @ b
jmp .no_found
.found:
mov dword [ bl _found ], ecx
.no_found:
popad
ret
;input:
; esi - 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㥬<EFBFBD> <E3A5AC> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-03-14 12:41:53 +01:00
; icon - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
; level - <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<>
; size_bl - ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2019-03-14 12:41:53 +01:00
; info_bl - <20> <> ப<EFBFBD> <20> <20> <> <EFBFBD> ᠭ<EFBFBD> <E1A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
align 4
2019-03-14 12:41:53 +01:00
proc add_3ds_object , icon : dword , level : dword , si ze_bl : dword , info_bl : dword
2016-01-15 23:51:03 +01:00
pushad
mov bx , word [ icon ]
shl ebx , 16
mov bx , word [ level ]
mov eax , esi
sub eax , dword [ open_file_data ]
mov dword [ buffer ], eax ;ᬥ饭<E1ACA5> <E9A5AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
mov ecx , dword [ si ze_bl ]
mov dword [ buffer + 4 ], ecx ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> (<28> ᯮ<EFBFBD> <E1AFAE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> 㭪樨 buf_draw_hex_table <20> <> <EFBFBD> <20> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> )
mov ecx , dword [ bl _found ]
2019-03-14 12:41:53 +01:00
or ecx , ecx
jz @ f
2016-01-15 23:51:03 +01:00
;... <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> 㦥<EFBFBD> <20> <> 㣮<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD>
mov cl , byte [ ecx + 4 ]
@ @ :
mov byte [ buffer + list_offs_chunk_del ], cl
mov ecx ,[ level ]
mov byte [ buffer + list_offs_chunk_lev ], cl
mov ecx , dword [ info_bl ]
mov dword [ buffer + list_offs_p_data ], ecx
stdcall hex_in_str , buffer + list_offs_text , dword [ esi + 1 ], 2
stdcall hex_in_str , buffer + list_offs_text + 2 , dword [ esi ], 2 ;<3B> <> <EFBFBD> 3ds <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2019-03-14 12:41:53 +01:00
or ecx , ecx
jnz @ f
2016-01-15 23:51:03 +01:00
mov byte [ buffer + list_offs_text + 4 ], 0 ;0 - ᨬ<> <E1A8AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ப<EFBFBD>
jmp .no_capt
@ @ :
mov byte [ buffer + list_offs_text + 4 ], ' '
mov esi , ecx
mov edi , buffer + list_offs_text + 5
mov ecx , si ze_one_list - ( list_offs_text + 5 )
cld
rep movsb
mov byte [ buffer + si ze_one_list - 1 ], 0 ;0 - ᨬ<> <E1A8AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ப<EFBFBD>
.no_capt:
mov ecx ,( si zeof.obj_3d ) / 4
xor eax , eax
2020-09-29 21:58:14 +02:00
mov edi , buffer + list_offs_obj3d
2016-01-15 23:51:03 +01:00
rep stosd
stdcall [ tl_node_add ], tree1 , ebx , buffer
stdcall [ tl_cur_next ], tree1
popad
ret
endp
;input:
; eax - value
; buf - string buffer
; len - buffer len
;output:
align 4
proc convert_int_to_str , buf : dword , len : dword
pushad
mov edi ,[ buf ]
mov esi ,[ len ]
add esi , edi
dec esi
call .str
popad
ret
endp
align 4
.str:
2019-03-14 12:41:53 +01:00
mov ecx , 10
2016-01-15 23:51:03 +01:00
cmp eax , ecx
jb @ f
xor edx , edx
div ecx
push edx
call .str
pop eax
@ @ :
cmp edi , esi
jge @ f
or al , 0x30
stosb
mov byte [ edi ], 0
@ @ :
ret
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9> <EFBFBD>
align 4
OpenDialog_data:
.type dd 0 ;0 - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 1 - <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> , 2 - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ४<EFBFBD> <E0A5AA> <EFBFBD> <EFBFBD> <EFBFBD>
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_path dd plugin_path ;+16
.dir_default_path dd default_dir ;+20
.start_path dd file_name ;+24 <20> <> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9> <EFBFBD>
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_path dd openfile_path ;+36 <20> <> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> 뢠<EFBFBD> <EBA2A0> <EFBFBD> <EFBFBD> <EFBFBD> 䠩<> <E4A0A9>
.filename_area dd filename_area ;+40
.filter_area dd Filter
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
default_dir db '/rd/1' , 0
communication_area_name:
db 'FFFFFFFF_open_dialog' , 0
open_dialog_name:
db 'opendial' , 0
communication_area_default_path:
db '/rd/1/File managers/' , 0
Filter:
dd Filter.end - Filter.1
.1:
db '3DS' , 0
2019-03-14 12:41:53 +01:00
db 'STL' , 0
2019-03-23 09:31:59 +01:00
.3:
2017-04-19 16:07:11 +02:00
db 'PNG' , 0
2016-01-15 23:51:03 +01:00
.end:
db 0
align 4
system_dir_0 db '/sys/lib/'
lib_name_0 db 'proc_lib.obj' , 0
system_dir_1 db '/sys/lib/'
lib_name_1 db 'libimg.obj' , 0
system_dir_2 db '/sys/lib/'
lib_name_2 db 'box_lib.obj' , 0
system_dir_3 db '/sys/lib/'
lib_name_3 db 'buf2d.obj' , 0
system_dir_4 db '/sys/lib/'
lib_name_4 db 'kmenu.obj' , 0
2017-04-19 16:07:11 +02:00
system_dir_5 db '/sys/lib/'
2016-01-15 23:51:03 +01:00
lib_name_5 db 'tinygl.obj' , 0
system_dir_6 db '/sys/lib/'
lib_name_6 db 'libini.obj' , 0
if lang eq ru
head_f_i:
2019-03-14 12:41:53 +01:00
head_f_l db '"<22> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> 訡<EFBFBD> <E8A8A1> ' , 0
err_msg_found_lib_0 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'proc_lib.obj' , 39 , '" -tE' , 0
err_msg_import_0 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'proc_lib.obj' , 39 , '" -tW' , 0
err_msg_found_lib_1 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'libimg.obj' , 39 , '" -tE' , 0
err_msg_import_1 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'libimg.obj' , 39 , '" -tW' , 0
err_msg_found_lib_2 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'box_lib.obj' , 39 , '" -tE' , 0
err_msg_import_2 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'box_lib' , 39 , '" -tW' , 0
err_msg_found_lib_3 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'buf2d.obj' , 39 , '" -tE' , 0
err_msg_import_3 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'buf2d' , 39 , '" -tW' , 0
err_msg_found_lib_4 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'kmenu.obj' , 39 , '" -tE' , 0
err_msg_import_4 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'kmenu' , 39 , '" -tW' , 0
err_msg_found_lib_5 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'tinygl.obj' , 39 , '" -tE' , 0
err_msg_import_5 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'tinygl' , 39 , '" -tW' , 0
err_msg_found_lib_6 db '<27> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'libini.obj' , 39 , '" -tE' , 0
err_msg_import_6 db '<27> 訡<EFBFBD> <E8A8A1> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ' , 39 , 'libini' , 39 , '" -tW' , 0
2016-01-15 23:51:03 +01:00
else
head_f_i:
2019-03-14 12:41:53 +01:00
head_f_l db '"System error' , 0
err_msg_found_lib_0 db 'Sorry I cannot found library ' , 39 , 'proc_lib.obj' , 39 , '" -tE' , 0
err_msg_import_0 db 'Error on load import library ' , 39 , 'proc_lib.obj' , 39 , '" -tW' , 0
err_msg_found_lib_1 db 'Sorry I cannot found library ' , 39 , 'libimg.obj' , 39 , '" -tE' , 0
err_msg_import_1 db 'Error on load import library ' , 39 , 'libimg.obj' , 39 , '" -tW' , 0
err_msg_found_lib_2 db 'Sorry I cannot found library ' , 39 , 'box_lib.obj' , 39 , '" -tE' , 0
err_msg_import_2 db 'Error on load import library ' , 39 , 'box_lib.obj' , 39 , '" -tW' , 0
err_msg_found_lib_3 db 'Sorry I cannot found library ' , 39 , 'buf2d.obj' , 39 , '" -tE' , 0
err_msg_import_3 db 'Error on load import library ' , 39 , 'buf2d.obj' , 39 , '" -tW' , 0
err_msg_found_lib_4 db 'Sorry I cannot found library ' , 39 , 'kmenu.obj' , 39 , '" -tE' , 0
err_msg_import_4 db 'Error on load import library ' , 39 , 'kmenu.obj' , 39 , '" -tW' , 0
err_msg_found_lib_5 db 'Sorry I cannot found library ' , 39 , 'tinygl.obj' , 39 , '" -tE' , 0
err_msg_import_5 db 'Error on load import library ' , 39 , 'tinygl' , 39 , '" -tW' , 0
err_msg_found_lib_6 db 'Sorry I cannot found library ' , 39 , 'libini.obj' , 39 , '" -tE' , 0
err_msg_import_6 db 'Error on load import library ' , 39 , 'libini' , 39 , '" -tW' , 0
2016-01-15 23:51:03 +01:00
end if
align 4
l_libs_start:
lib_0 l_libs lib_name_0 , sys_path , file_name , system_dir_0 , \
2016-02-18 14:08:33 +01:00
err_msg_found_lib_0 , head_f_l , proclib_import , err_msg_import_0 , head_f_i
2016-01-15 23:51:03 +01:00
lib_1 l_libs lib_name_1 , sys_path , file_name , system_dir_1 , \
2016-02-18 14:08:33 +01:00
err_msg_found_lib_1 , head_f_l , import_libimg , err_msg_import_1 , head_f_i
2016-02-13 01:08:46 +01:00
lib_2 l_libs lib_name_2 , sys_path , file_name , system_dir_2 , \
2016-01-15 23:51:03 +01:00
err_msg_found_lib_2 , head_f_l , import_box_lib , err_msg_import_2 , head_f_i
2016-02-13 01:08:46 +01:00
lib_3 l_libs lib_name_3 , sys_path , file_name , system_dir_3 , \
2016-01-15 23:51:03 +01:00
err_msg_found_lib_3 , head_f_l , import_buf2d , err_msg_import_3 , head_f_i
2016-02-13 01:08:46 +01:00
lib_4 l_libs lib_name_4 , sys_path , file_name , system_dir_4 , \
2016-01-15 23:51:03 +01:00
err_msg_found_lib_4 , head_f_l , import_libkmenu , err_msg_import_4 , head_f_i
2016-02-13 01:08:46 +01:00
lib_5 l_libs lib_name_5 , sys_path , file_name , system_dir_5 , \
2016-02-18 22:02:58 +01:00
err_msg_found_lib_5 , head_f_l , import_lib_tinygl , err_msg_import_5 , head_f_i
2016-02-13 01:08:46 +01:00
lib_6 l_libs lib_name_6 , sys_path , file_name , system_dir_6 , \
2016-01-15 23:51:03 +01:00
err_msg_found_lib_6 , head_f_l , import_libini , err_msg_import_6 , head_f_i
l_libs_end:
align 4
import_libimg:
dd al ib_init1
img_is_img dd aimg_is_img
img_info dd aimg_info
img_from_file dd aimg_from_file
img_to_file dd aimg_to_file
img_from_rgb dd aimg_from_rgb
img_to_rgb dd aimg_to_rgb
img_to_rgb2 dd aimg_to_rgb2
img_decode dd aimg_decode
img_encode dd aimg_encode
img_create dd aimg_create
img_destroy dd aimg_destroy
img_destroy_layer dd aimg_destroy_layer
img_count dd aimg_count
img_lock_bits dd aimg_lock_bits
img_unlock_bits dd aimg_unlock_bits
img_flip dd aimg_flip
img_flip_layer dd aimg_flip_layer
img_rotate dd aimg_rotate
img_rotate_layer dd aimg_rotate_layer
img_draw dd aimg_draw
dd 0 , 0
alib_init1 db 'lib_init' , 0
aimg_is_img db 'img_is_img' , 0 ;<3B> <> ।<EFBFBD> <E0A5A4> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> ᤥ<> <E1A4A5> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ࠦ<EFBFBD> <E0A0A6> <EFBFBD> <EFBFBD>
aimg_info db 'img_info' , 0
aimg_from_file db 'img_from_file' , 0
aimg_to_file db 'img_to_file' , 0
aimg_from_rgb db 'img_from_rgb' , 0
aimg_to_rgb db 'img_to_rgb' , 0 ;<3B> ८<EFBFBD> ࠧ<EFBFBD> <E0A0A7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ࠦ<EFBFBD> <E0A0A6> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> RGB
aimg_to_rgb2 db 'img_to_rgb2' , 0
aimg_decode db 'img_decode' , 0 ;<3B> <> ⮬<EFBFBD> <E2AEAC> <EFBFBD> <EFBFBD> <EFBFBD> ᪨ <20> <> ।<EFBFBD> <E0A5A4> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ଠ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᪨<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
aimg_encode db 'img_encode' , 0
aimg_create db 'img_create' , 0
aimg_destroy db 'img_destroy' , 0
aimg_destroy_layer db 'img_destroy_layer' , 0
aimg_count db 'img_count' , 0
aimg_lock_bits db 'img_lock_bits' , 0
aimg_unlock_bits db 'img_unlock_bits' , 0
aimg_flip db 'img_flip' , 0
aimg_flip_layer db 'img_flip_layer' , 0
aimg_rotate db 'img_rotate' , 0
aimg_rotate_layer db 'img_rotate_layer' , 0
aimg_draw db 'img_draw' , 0
align 4
2019-03-23 09:31:59 +01:00
proclib_import:
2016-01-15 23:51:03 +01:00
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
2019-03-23 09:31:59 +01:00
OpenDialog_Set_file_name dd aOpenDialog_Set_file_name
OpenDialog_Set_file_ext dd aOpenDialog_Set_file_ext
2016-01-15 23:51:03 +01:00
dd 0 , 0
aOpenDialog_Init db 'OpenDialog_init' , 0
aOpenDialog_Start db 'OpenDialog_start' , 0
2019-03-23 09:31:59 +01:00
aOpenDialog_Set_file_name db 'OpenDialog_set_file_name' , 0
aOpenDialog_Set_file_ext db 'OpenDialog_set_file_ext' , 0
2016-01-15 23:51:03 +01:00
align 4
import_buf2d:
dd sz_init0
buf2d_create dd sz_buf2d_create
buf2d_create_f_img dd sz_buf2d_create_f_img
buf2d_clear dd sz_buf2d_clear
buf2d_draw dd sz_buf2d_draw
buf2d_delete dd sz_buf2d_delete
buf2d_resize dd sz_buf2d_resize
buf2d_line dd sz_buf2d_line
buf2d_rect_by_size dd sz_buf2d_rect_by_size
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
buf2d_circle dd sz_buf2d_circle
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
buf2d_offset_h dd sz_buf2d_offset_h
buf2d_set_pixel dd sz_buf2d_set_pixel
dd 0 , 0
sz_init0 db 'lib_init' , 0
sz_buf2d_create db 'buf2d_create' , 0
sz_buf2d_create_f_img db 'buf2d_create_f_img' , 0
sz_buf2d_clear db 'buf2d_clear' , 0
sz_buf2d_draw db 'buf2d_draw' , 0
sz_buf2d_delete db 'buf2d_delete' , 0
sz_buf2d_resize db 'buf2d_resize' , 0
sz_buf2d_line db 'buf2d_line' , 0
sz_buf2d_rect_by_size db 'buf2d_rect_by_size' , 0
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size' , 0
sz_buf2d_circle db 'buf2d_circle' , 0
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2' , 0
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2' , 0
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8' , 0
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32' , 0
sz_buf2d_bit_blt db 'buf2d_bit_blt' , 0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp' , 0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha' , 0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix' , 0
sz_buf2d_draw_text db 'buf2d_draw_text' , 0
sz_buf2d_crop_color db 'buf2d_crop_color' , 0
sz_buf2d_offset_h db 'buf2d_offset_h' , 0
sz_buf2d_set_pixel db 'buf2d_set_pixel' , 0
align 4
import_box_lib:
dd sz_init1
edit_box_draw dd sz_edit_box_draw
edit_box_key dd sz_edit_box_key
edit_box_mouse dd sz_edit_box_mouse
edit_box_set_text dd sz_edit_box_set_text
scrollbar_ver_draw dd sz_scrollbar_ver_draw
scrollbar_hor_draw dd sz_scrollbar_hor_draw
tl_data_init dd sz_tl_data_init
tl_data_clear dd sz_tl_data_clear
tl_info_clear dd sz_tl_info_clear
tl_key dd sz_tl_key
tl_mouse dd sz_tl_mouse
tl_draw dd sz_tl_draw
tl_info_undo dd sz_tl_info_undo
tl_info_redo dd sz_tl_info_redo
tl_node_add dd sz_tl_node_add
tl_node_set_data dd sz_tl_node_set_data
tl_node_get_data dd sz_tl_node_get_data
tl_node_delete dd sz_tl_node_delete
tl_node_move_up dd sz_tl_node_move_up
tl_node_move_down dd sz_tl_node_move_down
tl_cur_beg dd sz_tl_cur_beg
tl_cur_next dd sz_tl_cur_next
tl_cur_perv dd sz_tl_cur_perv
tl_node_close_open dd sz_tl_node_close_open
tl_node_lev_inc dd sz_tl_node_lev_inc
tl_node_lev_dec dd sz_tl_node_lev_dec
tl_node_poi_get_info dd sz_tl_node_poi_get_info
tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
tl_node_poi_get_data dd sz_tl_node_poi_get_data
dd 0 , 0
sz_init1 db 'lib_init' , 0
sz_edit_box_draw db 'edit_box' , 0
sz_edit_box_key db 'edit_box_key' , 0
sz_edit_box_mouse db 'edit_box_mouse' , 0
sz_edit_box_set_text db 'edit_box_set_text' , 0
sz_scrollbar_ver_draw db 'scrollbar_v_draw' , 0
sz_scrollbar_hor_draw db 'scrollbar_h_draw' , 0
sz_tl_data_init db 'tl_data_init' , 0
sz_tl_data_clear db 'tl_data_clear' , 0
sz_tl_info_clear db 'tl_info_clear' , 0
sz_tl_key db 'tl_key' , 0
sz_tl_mouse db 'tl_mouse' , 0
sz_tl_draw db 'tl_draw' , 0
sz_tl_info_undo db 'tl_info_undo' , 0
sz_tl_info_redo db 'tl_info_redo' , 0
sz_tl_node_add db 'tl_node_add' , 0
sz_tl_node_set_data db 'tl_node_set_data' , 0
sz_tl_node_get_data db 'tl_node_get_data' , 0
sz_tl_node_delete db 'tl_node_delete' , 0
sz_tl_node_move_up db 'tl_node_move_up' , 0
sz_tl_node_move_down db 'tl_node_move_down' , 0
sz_tl_cur_beg db 'tl_cur_beg' , 0
sz_tl_cur_next db 'tl_cur_next' , 0
sz_tl_cur_perv db 'tl_cur_perv' , 0
sz_tl_node_close_open db 'tl_node_close_open' , 0
sz_tl_node_lev_inc db 'tl_node_lev_inc' , 0
sz_tl_node_lev_dec db 'tl_node_lev_dec' , 0
sz_tl_node_poi_get_info db 'tl_node_poi_get_info' , 0
sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info' , 0
sz_tl_node_poi_get_data db 'tl_node_poi_get_data' , 0
align 4
import_libkmenu:
kmenu_init dd akmenu_init
kmainmenu_draw dd akmainmenu_draw
kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent
ksubmenu_new dd aksubmenu_new
ksubmenu_delete dd aksubmenu_delete
ksubmenu_draw dd aksubmenu_draw
ksubmenu_add dd aksubmenu_add
kmenuitem_new dd akmenuitem_new
kmenuitem_delete dd akmenuitem_delete
kmenuitem_draw dd akmenuitem_draw
dd 0 , 0
akmenu_init db 'kmenu_init' , 0
akmainmenu_draw db 'kmainmenu_draw' , 0
akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent' , 0
aksubmenu_new db 'ksubmenu_new' , 0
aksubmenu_delete db 'ksubmenu_delete' , 0
aksubmenu_draw db 'ksubmenu_draw' , 0
aksubmenu_add db 'ksubmenu_add' , 0
akmenuitem_new db 'kmenuitem_new' , 0
akmenuitem_delete db 'kmenuitem_delete' , 0
akmenuitem_draw db 'kmenuitem_draw' , 0
align 4
import_lib_tinygl:
macro E_LIB n
{
n dd sz_#n
}
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
dd 0 , 0
macro E_LIB n
{
sz_#n db ` n , 0
}
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
align 4
import_libini:
dd al ib_init0
ini_get_str dd aini_get_str
ini_get_int dd aini_get_int
ini_get_color dd aini_get_color
dd 0 , 0
alib_init0 db 'lib_init' , 0
aini_get_str db 'ini_get_str' , 0
aini_get_int db 'ini_get_int' , 0
aini_get_color db 'ini_get_color' , 0
align 4
mouse_dd dd 0
last_time dd 0
angle_dxm dd 1.9111 ;~ 3d_wnd_w/180 - <20> ਡ<EFBFBD> <E0A8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㣫<> <E3A3AB> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 業<EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> 饭<EFBFBD> <E9A5AD> <20> <> 襩
angle_dym dd 1.7333 ;~ 3d_wnd_h/180
ratio dd 1.1025 ;~ 3d_wnd_w/3d_wnd_h
align 4
buf_ogl:
dd 0 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ࠦ<EFBFBD> <E0A0A6> <EFBFBD> <EFBFBD>
dw 3 d_wnd_l , 3 d_wnd_t ;+4 left,top
2017-04-19 16:07:11 +02:00
.w: dd 3 d_wnd_w
.h: dd 3 d_wnd_h
2016-01-15 23:51:03 +01:00
.color: dd 0xffffd0
dd 24 ;+16 color,bit in pixel
align 4
buf_1:
dd 0 ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ࠦ<EFBFBD> <E0A0A6> <EFBFBD> <EFBFBD>
2016-02-13 01:08:46 +01:00
dw 0 , 0 ;+4 left,top
2016-01-15 23:51:03 +01:00
dd 128 , 144 ;+8 w,h
dd 0 , 24 ;+16 color,bit in pixel
align 4
el_focus dd tree1
tree1 tree_list si ze_one_list , 300 + 2 , tl_key_no_edit + tl_draw_par_line , \
1 6 , 1 6 , 0 xffffff , 0xb0d0ff , 0x400040 , 5 , 47 , 195 - 16 , 250 , 16 , list_offs_text , 0 , el_focus , \
w_scr_t1 , 0
align 4
w_scr_t1 scrollbar 16 , 0 , 3 , 0 , 15 , 100 , 0 , 0 , 0 , 0 , 0 , 1
align 4
qObj dd 0
light_position dd 0.0 , 0.0 , - 2.0 , 1.0 ; <20> <> ᯮ<EFBFBD> <E1AFAE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 筨<EFBFBD> <E7ADA8> [0][1][2]
;[3] = (0.0 - <20> <> <EFBFBD> <E1AAAE> 筮 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 筨<EFBFBD> , 1.0 - <20> <> <EFBFBD> <EFBFBD> 筨<EFBFBD> ᢥ<> <E1A2A5> <20> <> <20> <> ।<EFBFBD> <E0A5A4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ﭨ<EFBFBD> )
light_dir dd 0.0 , 0.0 , 0.0 ;<3B> <> <EFBFBD> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
mat_specular dd 0.3 , 0.3 , 0.3 , 1.0 ; <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
mat_shininess dd 3.0 ; <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> ⭠<EFBFBD> <20> ய<EFBFBD> <E0AEAF> <EFBFBD> <EFBFBD> <EFBFBD> )
white_light dd 0.8 , 0.8 , 0.8 , 1.0 ; <20> <> <EFBFBD> <EFBFBD> <20> <20> <> ⥭ᨢ<E2A5AD> <E1A8A2> <EFBFBD> <EFBFBD> <EFBFBD> <20> ᢥ饭<E1A2A5> <E9A5AD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㥬<EFBFBD> <E3A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 筨<EFBFBD> <E7ADA8> <EFBFBD>
lmodel_ambient dd 0.3 , 0.3 , 0.3 , 1.0 ; <20> <> ࠬ<EFBFBD> <E0A0AC> <EFBFBD> <EFBFBD> 䮭<> <E4AEAD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ᢥ饭<E1A2A5> <E9A5AD>
if lang eq ru
2020-09-29 21:58:14 +02:00
capt db 'info 3ds [user] <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 29.09.20' , 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2016-01-15 23:51:03 +01:00
else
2020-09-29 21:58:14 +02:00
capt db 'info 3ds [user] version 29.09.20' , 0 ;window caption
2016-01-15 23:51:03 +01:00
end if
align 16
i_end:
2020-09-29 21:58:14 +02:00
ctx1 rb 28 ;sizeof.TinyGLContext = 28
2016-01-15 23:51:03 +01:00
procinfo process_information
run_file_70 FileInfoBlock
sc system_colors
angle_x rd 1 ;㣫<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 業<EFBFBD>
angle_y rd 1
angle_z rd 1
color_ox rd 1
color_oy rd 1
color_oz rd 1
color_bk rd 3
color_vert rd 1
color_face rd 1
color_select rd 1
align 16
2016-09-02 11:26:04 +02:00
rb 4096
2016-01-15 23:51:03 +01:00
stacktop:
sys_path rb 2048
2016-09-02 11:26:04 +02:00
file_name rb 4096
2016-01-15 23:51:03 +01:00
plugin_path rb 4096
openfile_path rb 4096
filename_area rb 256
mem: