update 'info3ds', add new button

git-svn-id: svn://kolibrios.org@6889 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2017-04-19 14:07:11 +00:00
parent c162817dfc
commit 11fcf4b4ff
7 changed files with 266 additions and 218 deletions

View File

@@ -8,6 +8,7 @@ version_edit equ 1
include '../../macros.inc' include '../../macros.inc'
include '../../proc32.inc' include '../../proc32.inc'
include '../../KOSfuncs.inc' include '../../KOSfuncs.inc'
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
include '../../load_img.inc' include '../../load_img.inc'
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'
@@ -1022,7 +1023,7 @@ Filter:
dd Filter.end - Filter.1 dd Filter.end - Filter.1
.1: .1:
db '3DS',0 db '3DS',0
db 'TXT',0 db 'PNG',0
.end: .end:
db 0 db 0
@@ -1038,7 +1039,7 @@ system_dir_3 db '/sys/lib/'
lib_name_3 db 'buf2d.obj',0 lib_name_3 db 'buf2d.obj',0
system_dir_4 db '/sys/lib/' system_dir_4 db '/sys/lib/'
lib_name_4 db 'kmenu.obj',0 lib_name_4 db 'kmenu.obj',0
system_dir_5 db '/kolibrios/lib/' system_dir_5 db '/sys/lib/'
lib_name_5 db 'tinygl.obj',0 lib_name_5 db 'tinygl.obj',0
system_dir_6 db '/sys/lib/' system_dir_6 db '/sys/lib/'
lib_name_6 db 'libini.obj',0 lib_name_6 db 'libini.obj',0
@@ -1336,7 +1337,8 @@ align 4
buf_ogl: buf_ogl:
dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD>
dw 3d_wnd_l,3d_wnd_t ;+4 left,top dw 3d_wnd_l,3d_wnd_t ;+4 left,top
dd 3d_wnd_w,3d_wnd_h ;+8 w,h .w: dd 3d_wnd_w
.h: dd 3d_wnd_h
dd 0,24 ;+16 color,bit in pixel dd 0,24 ;+16 color,bit in pixel
align 4 align 4
@@ -1371,9 +1373,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD><><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD> 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 if lang eq ru
capt db 'info 3ds <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 05.09.16',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> capt db 'info 3ds <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 18.04.17',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
else else
capt db 'info 3ds version 05.09.16',0 ;window caption capt db 'info 3ds version 18.04.17',0 ;window caption
end if end if
align 16 align 16

View File

@@ -1,5 +1,5 @@
use32 use32
org 0x0 org 0
db 'MENUET01' ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><EFBFBD><E1AFAE><EFBFBD><EFA5AC><EFBFBD><><E4A0A9> <20><EFBFBD><E1A5A3> 8 <20><><EFBFBD><EFBFBD> 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 dd 1, start, i_end, mem, stacktop, file_name, sys_path
@@ -8,6 +8,7 @@ version_edit equ 0
include '../../macros.inc' include '../../macros.inc'
include '../../proc32.inc' include '../../proc32.inc'
include '../../KOSfuncs.inc' include '../../KOSfuncs.inc'
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
include '../../load_img.inc' include '../../load_img.inc'
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'
@@ -392,13 +393,13 @@ timer_funct:
cmp word[eax],CHUNK_OBJBLOCK cmp word[eax],CHUNK_OBJBLOCK
jne .end_oblo jne .end_oblo
cmp dword[edi+offs_obj_poi_count],2 cmp dword[edi+obj_3d.poi_count],2
jl .ini_oblo jl .ini_oblo
stdcall draw_3d,edi stdcall draw_3d,edi
jmp .end_f jmp .end_f
.ini_oblo: .ini_oblo:
stdcall obj_init,edi ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><E0AEA8> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EAA5AA> stdcall obj_init,edi ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><E0AEA8> <20><><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EAA5AA>
cmp dword[edi+offs_obj_poi_count],2 cmp dword[edi+obj_3d.poi_count],2
jl .end_f 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> 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 jmp .end_f
@@ -406,13 +407,13 @@ timer_funct:
cmp word[eax],CHUNK_MATERIAL cmp word[eax],CHUNK_MATERIAL
jne .end_mblo jne .end_mblo
cmp dword[edi+offs_mat_name],0 cmp dword[edi+material.name],0
je .ini_mblo je .ini_mblo
stdcall draw_material,edi stdcall draw_material,edi
jmp .end_f jmp .end_f
.ini_mblo: .ini_mblo:
stdcall mat_init,edi,eax ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><E0AEA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8A0> stdcall mat_init,edi,eax ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><E0AEA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8A0>
cmp dword[edi+offs_mat_name],0 cmp dword[edi+material.name],0
je .end_f je .end_f
stdcall draw_material,edi stdcall draw_material,edi
jmp .end_f jmp .end_f
@@ -461,6 +462,7 @@ pushad
mcall ,((3d_wnd_l+100) shl 16)+20,,0x40000009 ;ᢥ<> <20><><EFBFBD>./<2F>몫. mcall ,((3d_wnd_l+100) shl 16)+20,,0x40000009 ;ᢥ<> <20><><EFBFBD>./<2F>몫.
mcall ,((3d_wnd_l+125) shl 16)+20,,0x4000000a ;ᣫ<><E1A3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mcall ,((3d_wnd_l+125) shl 16)+20,,0x4000000a ;ᣫ<><E1A3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcall ,((3d_wnd_l+150) shl 16)+20,,0x4000000b ;<3B><><EFBFBD><EFBFBD><EFBFBD> mcall ,((3d_wnd_l+150) shl 16)+20,,0x4000000b ;<3B><><EFBFBD><EFBFBD><EFBFBD>
mcall ,((3d_wnd_l+175) shl 16)+20,,0x4000000c ;<3B><><20><> 3d <20><><EFBFBD><EFBFBD>
mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+24 ;new mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+24 ;new
add ebx,IMAGE_TOOLBAR_ICON_SIZE add ebx,IMAGE_TOOLBAR_ICON_SIZE
@@ -479,6 +481,8 @@ pushad
mcall ,,,((3d_wnd_l+75) shl 16)+24 ;<3B><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8A0><EFBFBD> <20><><EFBFBD>. mcall ,,,((3d_wnd_l+75) shl 16)+24 ;<3B><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E0A8A0><EFBFBD> <20><><EFBFBD>.
add ebx,IMAGE_TOOLBAR_ICON_SIZE add ebx,IMAGE_TOOLBAR_ICON_SIZE
mcall ,,,((3d_wnd_l+125) shl 16)+24 ;ᣫ<><E1A3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mcall ,,,((3d_wnd_l+125) shl 16)+24 ;ᣫ<><E1A3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
add ebx,IMAGE_TOOLBAR_ICON_SIZE
mcall ,,,((3d_wnd_l+175) shl 16)+24 ;<3B><><20><> 3d <20><><EFBFBD><EFBFBD>
mov dword[w_scr_t1.all_redraw],1 mov dword[w_scr_t1.all_redraw],1
stdcall [tl_draw], tree1 stdcall [tl_draw], tree1
@@ -601,6 +605,11 @@ button:
call mnu_reset_settings call mnu_reset_settings
jmp still jmp still
@@: @@:
cmp ah,12
jne @f
call mnu_make_scrshot
jmp still
@@:
cmp ah,1 cmp ah,1
jne still jne still
@@ -1085,7 +1094,7 @@ Filter:
dd Filter.end - Filter.1 dd Filter.end - Filter.1
.1: .1:
db '3DS',0 db '3DS',0
db 'TXT',0 db 'PNG',0
.end: .end:
db 0 db 0
@@ -1101,7 +1110,7 @@ system_dir_3 db '/sys/lib/'
lib_name_3 db 'buf2d.obj',0 lib_name_3 db 'buf2d.obj',0
system_dir_4 db '/sys/lib/' system_dir_4 db '/sys/lib/'
lib_name_4 db 'kmenu.obj',0 lib_name_4 db 'kmenu.obj',0
system_dir_5 db '/kolibrios/lib/' system_dir_5 db '/sys/lib/'
lib_name_5 db 'tinygl.obj',0 lib_name_5 db 'tinygl.obj',0
system_dir_6 db '/sys/lib/' system_dir_6 db '/sys/lib/'
lib_name_6 db 'libini.obj',0 lib_name_6 db 'libini.obj',0
@@ -1393,7 +1402,8 @@ align 4
buf_ogl: buf_ogl:
dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD>
dw 3d_wnd_l,3d_wnd_t ;+4 left,top dw 3d_wnd_l,3d_wnd_t ;+4 left,top
dd 3d_wnd_w,3d_wnd_h ;+8 w,h .w: dd 3d_wnd_w
.h: dd 3d_wnd_h
.color: dd 0xffffd0 .color: dd 0xffffd0
dd 24 ;+16 color,bit in pixel dd 24 ;+16 color,bit in pixel
@@ -1429,9 +1439,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD><><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD> 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 if lang eq ru
capt db 'info 3ds [user] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 05.09.16',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> capt db 'info 3ds [user] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 18.04.17',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
else else
capt db 'info 3ds [user] version 05.09.16',0 ;window caption capt db 'info 3ds [user] version 18.04.17',0 ;window caption
end if end if
align 16 align 16

View File

@@ -28,28 +28,6 @@ struct obj_3d
mat1_data dd ? ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> mat1_data dd ? ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ends ends
offs_obj_poi_data equ 0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
offs_obj_poi_count equ 4 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
offs_obj_tri_data equ 8 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
offs_obj_tri_count equ 12 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
offs_obj_normals_poi_data equ 16
offs_obj_normals_poi_count equ 20
offs_obj_normals_tri_data equ 24
offs_obj_normals_tri_count equ 28
offs_obj_x_max equ 32
offs_obj_x_min equ 36
offs_obj_x_centr equ 40
offs_obj_x_scale equ 44
offs_obj_y_max equ 48
offs_obj_y_min equ 52
offs_obj_y_centr equ 56
offs_obj_y_scale equ 60
offs_obj_z_max equ 64
offs_obj_z_min equ 68
offs_obj_z_centr equ 72
offs_obj_z_scale equ 76
offs_obj_mat1_data equ 80
struct material struct material
name dd ? name dd ?
col_ambient dd ? ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> col_ambient dd ? ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -57,11 +35,6 @@ struct material
col_specular dd ? col_specular dd ?
ends 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 ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bit_faces equ 1 ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bit_faces_fill equ 2 ;<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bit_faces_fill equ 2 ;<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -85,8 +58,17 @@ key_vert db 'col_vertices',0
key_face db 'col_faces',0 key_face db 'col_faces',0
key_select db 'col_select',0 key_select db 'col_select',0
txt_err_save_img_file:
if lang eq ru
db '<27><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><>.',0
else
db 'Can',39,'t save file.',0
end if
align 4
rad_c dd 150 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> rad_c dd 150 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
png_data dd ?
png_size dd ?
align 4 align 4
proc hex_in_str, buf:dword,val:dword,zif:dword proc hex_in_str, buf:dword,val:dword,zif:dword
@@ -118,22 +100,22 @@ align 4
proc obj_clear_param uses edi, o_data:dword proc obj_clear_param uses edi, o_data:dword
mov edi,[o_data] mov edi,[o_data]
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ꥪ⮢ ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ꥪ⮢
mov dword[edi+offs_obj_poi_data],0 mov dword[edi+obj_3d.poi_data],0
mov dword[edi+offs_obj_poi_count],0 mov dword[edi+obj_3d.poi_count],0
mov dword[edi+offs_obj_tri_data],0 mov dword[edi+obj_3d.tri_data],0
mov dword[edi+offs_obj_tri_count],0 mov dword[edi+obj_3d.tri_count],0
mov dword[edi+offs_obj_normals_tri_count],0 mov dword[edi+obj_3d.normals_tri_count],0
mov dword[edi+offs_obj_normals_poi_count],0 mov dword[edi+obj_3d.normals_poi_count],0
mov dword[edi+offs_obj_mat1_data],0 mov dword[edi+obj_3d.mat1_data],0
cmp dword[edi+offs_obj_normals_tri_data],0 cmp dword[edi+obj_3d.normals_tri_data],0
je @f je @f
stdcall mem.Free,[edi+offs_obj_normals_tri_data] stdcall mem.Free,[edi+obj_3d.normals_tri_data]
mov dword[edi+offs_obj_normals_tri_data],0 mov dword[edi+obj_3d.normals_tri_data],0
@@: @@:
cmp dword[edi+offs_obj_normals_poi_data],0 cmp dword[edi+obj_3d.normals_poi_data],0
je @f je @f
stdcall mem.Free,[edi+offs_obj_normals_poi_data] stdcall mem.Free,[edi+obj_3d.normals_poi_data]
mov dword[edi+offs_obj_normals_poi_data],0 mov dword[edi+obj_3d.normals_poi_data],0
@@: @@:
ret ret
endp endp
@@ -167,43 +149,43 @@ endp
align 4 align 4
proc obj_set_sizes uses eax ebx esi edi, o_data:dword proc obj_set_sizes uses eax ebx esi edi, o_data:dword
mov edi,[o_data] mov edi,[o_data]
cmp dword[edi+offs_obj_poi_count],0 cmp dword[edi+obj_3d.poi_count],0
je .end je .end
finit finit
mov eax,[edi+offs_obj_poi_data] mov eax,[edi+obj_3d.poi_data]
mov ebx,dword[eax] mov ebx,dword[eax]
mov [edi+offs_obj_x_min],ebx mov [edi+obj_3d.x_min],ebx
mov [edi+offs_obj_x_max],ebx mov [edi+obj_3d.x_max],ebx
mov ebx,dword[eax+4] mov ebx,dword[eax+4]
mov [edi+offs_obj_y_min],ebx mov [edi+obj_3d.y_min],ebx
mov [edi+offs_obj_y_max],ebx mov [edi+obj_3d.y_max],ebx
mov ebx,dword[eax+8] mov ebx,dword[eax+8]
mov [edi+offs_obj_z_min],ebx mov [edi+obj_3d.z_min],ebx
mov [edi+offs_obj_z_max],ebx mov [edi+obj_3d.z_max],ebx
mov ebx,[edi+offs_obj_poi_data] mov ebx,[edi+obj_3d.poi_data]
mov esi,[edi+offs_obj_poi_count] mov esi,[edi+obj_3d.poi_count]
align 4 align 4
.cycle_0: ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x .cycle_0: ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x
fld dword[ebx] fld dword[ebx]
fld dword[edi+offs_obj_x_min] fld dword[edi+obj_3d.x_min]
fcomp fcomp
fstsw ax fstsw ax
sahf sahf
jb @f jb @f
mov eax,[ebx] mov eax,[ebx]
mov [edi+offs_obj_x_min],eax mov [edi+obj_3d.x_min],eax
ffree st0 ffree st0
fincstp fincstp
jmp .next_x jmp .next_x
@@: @@:
fld dword[edi+offs_obj_x_max] fld dword[edi+obj_3d.x_max]
fcompp fcompp
fstsw ax fstsw ax
sahf sahf
ja .next_x ja .next_x
mov eax,[ebx] mov eax,[ebx]
mov [edi+offs_obj_x_max],eax mov [edi+obj_3d.x_max],eax
.next_x: .next_x:
add ebx,12 add ebx,12
@@ -211,44 +193,44 @@ align 4
jnz .cycle_0 jnz .cycle_0
fld1 fld1
fld dword[edi+offs_obj_x_max] fld dword[edi+obj_3d.x_max]
fsub dword[edi+offs_obj_x_min] fsub dword[edi+obj_3d.x_min]
fst dword[edi+offs_obj_x_centr] fst dword[edi+obj_3d.x_centr]
fdivp ;1/size.x fdivp ;1/size.x
fstp dword[edi+offs_obj_x_scale] fstp dword[edi+obj_3d.x_scale]
fld dword[edi+offs_obj_x_centr] fld dword[edi+obj_3d.x_centr]
fld1 fld1
fld1 fld1
faddp faddp
fdivp ;centr.x = size.x/2 fdivp ;centr.x = size.x/2
fadd dword[edi+offs_obj_x_min] fadd dword[edi+obj_3d.x_min]
fchs fchs
fstp dword[edi+offs_obj_x_centr] fstp dword[edi+obj_3d.x_centr]
mov ebx,[edi+offs_obj_poi_data] mov ebx,[edi+obj_3d.poi_data]
mov esi,[edi+offs_obj_poi_count] mov esi,[edi+obj_3d.poi_count]
align 4 align 4
.cycle_1: ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> y .cycle_1: ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> y
fld dword[ebx+4] fld dword[ebx+4]
fld dword[edi+offs_obj_y_min] fld dword[edi+obj_3d.y_min]
fcomp fcomp
fstsw ax fstsw ax
sahf sahf
jb @f jb @f
mov eax,[ebx+4] mov eax,[ebx+4]
mov [edi+offs_obj_y_min],eax mov [edi+obj_3d.y_min],eax
ffree st0 ffree st0
fincstp fincstp
jmp .next_y jmp .next_y
@@: @@:
fld dword[edi+offs_obj_y_max] fld dword[edi+obj_3d.y_max]
fcompp fcompp
fstsw ax fstsw ax
sahf sahf
ja .next_y ja .next_y
mov eax,[ebx+4] mov eax,[ebx+4]
mov [edi+offs_obj_y_max],eax mov [edi+obj_3d.y_max],eax
.next_y: .next_y:
add ebx,12 add ebx,12
@@ -256,44 +238,44 @@ align 4
jnz .cycle_1 jnz .cycle_1
fld1 fld1
fld dword[edi+offs_obj_y_max] fld dword[edi+obj_3d.y_max]
fsub dword[edi+offs_obj_y_min] fsub dword[edi+obj_3d.y_min]
fst dword[edi+offs_obj_y_centr] fst dword[edi+obj_3d.y_centr]
fdivp ;1/size.y fdivp ;1/size.y
fstp dword[edi+offs_obj_y_scale] fstp dword[edi+obj_3d.y_scale]
fld dword[edi+offs_obj_y_centr] fld dword[edi+obj_3d.y_centr]
fld1 fld1
fld1 fld1
faddp faddp
fdivp ;centr.y = size.y/2 fdivp ;centr.y = size.y/2
fadd dword[edi+offs_obj_y_min] fadd dword[edi+obj_3d.y_min]
fchs fchs
fstp dword[edi+offs_obj_y_centr] fstp dword[edi+obj_3d.y_centr]
mov ebx,[edi+offs_obj_poi_data] mov ebx,[edi+obj_3d.poi_data]
mov esi,[edi+offs_obj_poi_count] mov esi,[edi+obj_3d.poi_count]
align 4 align 4
.cycle_2: ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> z .cycle_2: ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> z
fld dword[ebx+8] fld dword[ebx+8]
fld dword[edi+offs_obj_z_min] fld dword[edi+obj_3d.z_min]
fcomp fcomp
fstsw ax fstsw ax
sahf sahf
jb @f jb @f
mov eax,[ebx+8] mov eax,[ebx+8]
mov [edi+offs_obj_z_min],eax mov [edi+obj_3d.z_min],eax
ffree st0 ffree st0
fincstp fincstp
jmp .next_z jmp .next_z
@@: @@:
fld dword[edi+offs_obj_z_max] fld dword[edi+obj_3d.z_max]
fcompp fcompp
fstsw ax fstsw ax
sahf sahf
ja .next_z ja .next_z
mov eax,[ebx+8] mov eax,[ebx+8]
mov [edi+offs_obj_z_max],eax mov [edi+obj_3d.z_max],eax
.next_z: .next_z:
add ebx,12 add ebx,12
@@ -301,48 +283,48 @@ align 4
jnz .cycle_2 jnz .cycle_2
fld1 fld1
fld dword[edi+offs_obj_z_max] fld dword[edi+obj_3d.z_max]
fsub dword[edi+offs_obj_z_min] fsub dword[edi+obj_3d.z_min]
fst dword[edi+offs_obj_z_centr] fst dword[edi+obj_3d.z_centr]
fdivp ;1/size.z fdivp ;1/size.z
fstp dword[edi+offs_obj_z_scale] fstp dword[edi+obj_3d.z_scale]
fld dword[edi+offs_obj_z_centr] fld dword[edi+obj_3d.z_centr]
fld1 fld1
fld1 fld1
faddp faddp
fdivp ;centr.z = size.z/2 fdivp ;centr.z = size.z/2
fadd dword[edi+offs_obj_z_min] fadd dword[edi+obj_3d.z_min]
fchs fchs
fstp dword[edi+offs_obj_z_centr] fstp dword[edi+obj_3d.z_centr]
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fld dword[edi+offs_obj_x_max] fld dword[edi+obj_3d.x_max]
fsub dword[edi+offs_obj_x_min] fsub dword[edi+obj_3d.x_min]
fld dword[edi+offs_obj_y_max] fld dword[edi+obj_3d.y_max]
fsub dword[edi+offs_obj_y_min] fsub dword[edi+obj_3d.y_min]
faddp faddp
fild dword[rad_c] fild dword[rad_c]
fdivp ;radius=(size.x+size.y)/rad_c fdivp ;radius=(size.x+size.y)/rad_c
fstp dword[sph_radius] fstp dword[sph_radius]
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> x <EFBFBD> y, <EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> x <EFBFBD> y, <EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fld dword[edi+offs_obj_y_scale] fld dword[edi+obj_3d.y_scale]
fdiv dword[ratio] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> y <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fdiv dword[ratio] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> y <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fcomp dword[edi+offs_obj_x_scale] fcomp dword[edi+obj_3d.x_scale]
fstsw ax fstsw ax
sahf sahf
jb @f jb @f
;ᦠ⨥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> y ;ᦠ⨥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> y
fld dword[edi+offs_obj_x_scale] fld dword[edi+obj_3d.x_scale]
fmul dword[ratio] fmul dword[ratio]
fstp dword[edi+offs_obj_y_scale] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> y = <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> x fstp dword[edi+obj_3d.y_scale] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> y = <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> x
jmp .end jmp .end
@@: @@:
;ᦠ⨥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> x >...< ;ᦠ⨥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> x >...<
fld dword[edi+offs_obj_x_scale] fld dword[edi+obj_3d.x_scale]
fdiv dword[ratio] fdiv dword[ratio]
fstp dword[edi+offs_obj_x_scale] fstp dword[edi+obj_3d.x_scale]
.end: .end:
ret ret
endp endp
@@ -358,20 +340,20 @@ locals
endl endl
pushad pushad
mov ecx,[o_data] mov ecx,[o_data]
cmp dword[ecx+offs_obj_poi_count],0 cmp dword[ecx+obj_3d.poi_count],0
je .end je .end
mov eax,[ecx+offs_obj_tri_count] mov eax,[ecx+obj_3d.tri_count]
mov [ecx+offs_obj_normals_tri_count],eax ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> mov [ecx+obj_3d.normals_tri_count],eax ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cmp eax,0 cmp eax,0
je .end je .end
finit finit
imul eax,12 imul eax,12
stdcall mem.Alloc, eax stdcall mem.Alloc, eax
mov [ecx+offs_obj_normals_tri_data],eax mov [ecx+obj_3d.normals_tri_data],eax
mov edx,[ecx+offs_obj_tri_data] mov edx,[ecx+obj_3d.tri_data]
mov ebx,[ecx+offs_obj_tri_count] mov ebx,[ecx+obj_3d.tri_count]
mov ecx,[ecx+offs_obj_poi_data] mov ecx,[ecx+obj_3d.poi_data]
align 4 align 4
@@: @@:
mov edi,ebp mov edi,ebp
@@ -462,24 +444,24 @@ align 4
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov ebx,[o_data] mov ebx,[o_data]
mov ecx,[ebx+offs_obj_poi_count] mov ecx,[ebx+obj_3d.poi_count]
mov [ebx+offs_obj_normals_poi_count],ecx mov [ebx+obj_3d.normals_poi_count],ecx
cmp ecx,0 cmp ecx,0
je .end je .end
imul ecx,12 imul ecx,12
stdcall mem.Alloc,ecx stdcall mem.Alloc,ecx
mov [ebx+offs_obj_normals_poi_data],eax mov [ebx+obj_3d.normals_poi_data],eax
mov edi,eax mov edi,eax
mov eax,0.0 mov eax,0.0
shr ecx,2 shr ecx,2
rep stosd ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<EFBFBD><EFBFBD> float rep stosd ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-<EFBFBD><EFBFBD> float
mov edx,[ebx+offs_obj_tri_count] mov edx,[ebx+obj_3d.tri_count]
mov edi,[ebx+offs_obj_tri_data] mov edi,[ebx+obj_3d.tri_data]
mov eax,[ebx+offs_obj_normals_tri_data] mov eax,[ebx+obj_3d.normals_tri_data]
mov ecx,[ebx+offs_obj_poi_data] mov ecx,[ebx+obj_3d.poi_data]
mov ebx,[ebx+offs_obj_normals_poi_data] mov ebx,[ebx+obj_3d.normals_poi_data]
align 4 align 4
.cycle_0: ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> .cycle_0: ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
movzx esi,word[edi] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx esi,word[edi] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -636,8 +618,8 @@ proc obj_init, o_data:dword
mov esi,ebx mov esi,ebx
movzx edx,word[ebx+6] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> movzx edx,word[ebx+6] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
add ebx,8 add ebx,8
mov [edi+offs_obj_poi_data],ebx mov [edi+obj_3d.poi_data],ebx
mov [edi+offs_obj_poi_count],edx mov [edi+obj_3d.poi_count],edx
.cycle_0: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .cycle_0: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
add esi,dword[esi+2] add esi,dword[esi+2]
@@ -649,16 +631,16 @@ proc obj_init, o_data:dword
@@: @@:
;<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
movzx edx,word[esi+6] movzx edx,word[esi+6]
mov [edi+offs_obj_tri_count],edx mov [edi+obj_3d.tri_count],edx
add esi,8 ;2+4+2 (chunk+size+count) add esi,8 ;2+4+2 (chunk+size+count)
mov [edi+offs_obj_tri_data],esi mov [edi+obj_3d.tri_data],esi
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
shl edx,3 shl edx,3
add esi,edx add esi,edx
cmp word[esi],CHUNK_FACEMAT cmp word[esi],CHUNK_FACEMAT
jne .end_points jne .end_points
mov [edi+offs_obj_mat1_data],esi mov [edi+obj_3d.mat1_data],esi
.end_points: .end_points:
stdcall obj_set_sizes, edi stdcall obj_set_sizes, edi
@@ -681,10 +663,10 @@ proc mat_init, m_data:dword, f_data:dword
mov edi,[m_data] mov edi,[m_data]
;... clear edi ... ;... clear edi ...
mov dword[edi+offs_mat_name],0 mov dword[edi+material.name],0
mov dword[edi+offs_mat_col_ambient],0 mov dword[edi+material.col_ambient],0
mov dword[edi+offs_mat_col_diffuse],0 mov dword[edi+material.col_diffuse],0
mov dword[edi+offs_mat_col_specular],0 mov dword[edi+material.col_specular],0
xor edx,edx xor edx,edx
mov ebx,[f_data] mov ebx,[f_data]
@@ -699,7 +681,7 @@ proc mat_init, m_data:dword, f_data:dword
;*** (0) *** ;*** (0) ***
mov esi,ebx mov esi,ebx
add ebx,6 add ebx,6
mov [edi+offs_mat_name],ebx mov [edi+material.name],ebx
sub ebx,6 sub ebx,6
;*** (1) *** ;*** (1) ***
.cycle_0: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .cycle_0: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -716,10 +698,10 @@ proc mat_init, m_data:dword, f_data:dword
jne .end_material jne .end_material
add esi,6 add esi,6
mov dl,byte[esi] mov dl,byte[esi]
mov [edi+offs_mat_col_ambient+2],dl mov byte[edi+material.col_ambient+2],dl
mov dx,word[esi+1] mov dx,word[esi+1]
ror dx,8 ror dx,8
mov [edi+offs_mat_col_ambient],dx mov word[edi+material.col_ambient],dx
;*** (2) *** ;*** (2) ***
mov esi,ebx mov esi,ebx
.cycle_1: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .cycle_1: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -736,10 +718,10 @@ proc mat_init, m_data:dword, f_data:dword
jne .end_material jne .end_material
add esi,6 add esi,6
mov dl,byte[esi] mov dl,byte[esi]
mov [edi+offs_mat_col_diffuse+2],dl mov byte[edi+material.col_diffuse+2],dl
mov dx,word[esi+1] mov dx,word[esi+1]
ror dx,8 ror dx,8
mov [edi+offs_mat_col_diffuse],dx mov word[edi+material.col_diffuse],dx
;*** (3) *** ;*** (3) ***
mov esi,ebx mov esi,ebx
.cycle_2: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .cycle_2: ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -756,10 +738,10 @@ proc mat_init, m_data:dword, f_data:dword
jne .end_material jne .end_material
add esi,6 add esi,6
mov dl,byte[esi] mov dl,byte[esi]
mov [edi+offs_mat_col_specular+2],dl mov byte[edi+material.col_specular+2],dl
mov dx,word[esi+1] mov dx,word[esi+1]
ror dx,8 ror dx,8
mov [edi+offs_mat_col_specular],dx mov word[edi+material.col_specular],dx
.end_material: .end_material:
.no_material: .no_material:
@@ -787,10 +769,10 @@ proc draw_material uses edi, m_data:dword
stdcall buf_draw_beg, buf_ogl 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,txt_afff,5,35,0xff
stdcall [buf2d_draw_text], buf_ogl,buf_1,[edi+offs_mat_name],15,45,0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> stdcall [buf2d_draw_text], buf_ogl,buf_1,[edi+material.name],15,45,0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
stdcall draw_color, [edi+offs_mat_col_ambient], txt_a010,2,55 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> stdcall draw_color, [edi+material.col_ambient], txt_a010,2,55 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
stdcall draw_color, [edi+offs_mat_col_diffuse], txt_a020,2,75 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> stdcall draw_color, [edi+material.col_diffuse], txt_a020,2,75 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
stdcall draw_color, [edi+offs_mat_col_specular],txt_a030,2,95 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> stdcall draw_color, [edi+material.col_specular],txt_a030,2,95 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
stdcall [buf2d_draw], buf_ogl stdcall [buf2d_draw], buf_ogl
ret ret
@@ -819,7 +801,7 @@ endp
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
mov edi,[o_data] mov edi,[o_data]
cmp dword[edi+offs_obj_poi_count],2 cmp dword[edi+obj_3d.poi_count],2
jl .end_f jl .end_f
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
stdcall [glPushMatrix] stdcall [glPushMatrix]
@@ -831,18 +813,18 @@ proc draw_3d uses eax ebx ecx edi, o_data:dword
stdcall [glDisable],GL_LIGHTING stdcall [glDisable],GL_LIGHTING
.end_l: .end_l:
stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z
stdcall [glScalef], [edi+offs_obj_x_scale],[edi+offs_obj_y_scale],[edi+offs_obj_z_scale] stdcall [glScalef], [edi+obj_3d.x_scale],[edi+obj_3d.y_scale],[edi+obj_3d.z_scale]
stdcall [glScalef], 1.0,1.0,0.7 ;correct for z stdcall [glScalef], 1.0,1.0,0.7 ;correct for z
stdcall [glRotatef], [angle_z],0.0,0.0,1.0 stdcall [glRotatef], [angle_z],0.0,0.0,1.0
stdcall [glRotatef], [angle_y],0.0,1.0,0.0 stdcall [glRotatef], [angle_y],0.0,1.0,0.0
stdcall [glRotatef], [angle_x],1.0,0.0,0.0 stdcall [glRotatef], [angle_x],1.0,0.0,0.0
stdcall [glTranslatef], [edi+offs_obj_x_centr],[edi+offs_obj_y_centr],[edi+offs_obj_z_centr] stdcall [glTranslatef], [edi+obj_3d.x_centr],[edi+obj_3d.y_centr],[edi+obj_3d.z_centr]
if version_edit eq 0 if version_edit eq 0
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥⮢ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥⮢ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bt dword[draw_mode],bit_faces_mat bt dword[draw_mode],bit_faces_mat
jnc @f jnc @f
mov eax,[edi+offs_obj_mat1_data] mov eax,[edi+obj_3d.mat1_data]
.b_found: .b_found:
cmp eax,0 cmp eax,0
je .end_points je .end_points
@@ -857,9 +839,9 @@ end if
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 梥⮢ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 梥⮢ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bt dword[draw_mode],bit_faces bt dword[draw_mode],bit_faces
jnc .end_triangles jnc .end_triangles
cmp dword[edi+offs_obj_tri_count],0 cmp dword[edi+obj_3d.tri_count],0
je .end_triangles je .end_triangles
cmp dword[edi+offs_obj_poi_count],0 cmp dword[edi+obj_3d.poi_count],0
je .end_triangles je .end_triangles
bt dword[draw_mode],bit_faces_fill bt dword[draw_mode],bit_faces_fill
jc @f jc @f
@@ -877,31 +859,31 @@ end if
jnc .triangles_flat jnc .triangles_flat
;triangles smooth ;triangles smooth
stdcall [glBegin],GL_TRIANGLES stdcall [glBegin],GL_TRIANGLES
mov eax,[edi+offs_obj_tri_data] mov eax,[edi+obj_3d.tri_data]
mov ecx,[edi+offs_obj_tri_count] mov ecx,[edi+obj_3d.tri_count]
mov edx,[edi+offs_obj_normals_tri_data] mov edx,[edi+obj_3d.normals_tri_data]
align 4 align 4
@@: @@:
movzx ebx,word[eax] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ebx,word[eax] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul ebx,12 imul ebx,12
add ebx,[edi+offs_obj_normals_poi_data] add ebx,[edi+obj_3d.normals_poi_data]
stdcall [glNormal3fv], ebx stdcall [glNormal3fv], ebx
sub ebx,[edi+offs_obj_normals_poi_data] sub ebx,[edi+obj_3d.normals_poi_data]
add ebx,[edi+offs_obj_poi_data] add ebx,[edi+obj_3d.poi_data]
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
movzx ebx,word[eax+2] ;2-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ebx,word[eax+2] ;2-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul ebx,12 imul ebx,12
add ebx,[edi+offs_obj_normals_poi_data] add ebx,[edi+obj_3d.normals_poi_data]
stdcall [glNormal3fv], ebx stdcall [glNormal3fv], ebx
sub ebx,[edi+offs_obj_normals_poi_data] sub ebx,[edi+obj_3d.normals_poi_data]
add ebx,[edi+offs_obj_poi_data] add ebx,[edi+obj_3d.poi_data]
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
movzx ebx,word[eax+4] ;3-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ebx,word[eax+4] ;3-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul ebx,12 imul ebx,12
add ebx,[edi+offs_obj_normals_poi_data] add ebx,[edi+obj_3d.normals_poi_data]
stdcall [glNormal3fv], ebx stdcall [glNormal3fv], ebx
sub ebx,[edi+offs_obj_normals_poi_data] sub ebx,[edi+obj_3d.normals_poi_data]
add ebx,[edi+offs_obj_poi_data] add ebx,[edi+obj_3d.poi_data]
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
add eax,8 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = (3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> 2<EFBFBD>) + <EFBFBD><EFBFBD> (2<EFBFBD>)) add eax,8 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = (3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> 2<EFBFBD>) + <EFBFBD><EFBFBD> (2<EFBFBD>))
dec ecx dec ecx
@@ -911,9 +893,9 @@ align 4
.triangles_flat: .triangles_flat:
stdcall [glBegin],GL_TRIANGLES stdcall [glBegin],GL_TRIANGLES
mov eax,[edi+offs_obj_tri_data] mov eax,[edi+obj_3d.tri_data]
mov ecx,[edi+offs_obj_tri_count] mov ecx,[edi+obj_3d.tri_count]
mov edx,[edi+offs_obj_normals_tri_data] mov edx,[edi+obj_3d.normals_tri_data]
align 4 align 4
@@: @@:
; ;
@@ -924,15 +906,15 @@ align 4
.norm1: .norm1:
movzx ebx,word[eax] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ebx,word[eax] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul ebx,12 imul ebx,12
add ebx,[edi+offs_obj_poi_data] add ebx,[edi+obj_3d.poi_data]
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
movzx ebx,word[eax+2] ;2-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ebx,word[eax+2] ;2-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul ebx,12 imul ebx,12
add ebx,[edi+offs_obj_poi_data] add ebx,[edi+obj_3d.poi_data]
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
movzx ebx,word[eax+4] ;3-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ebx,word[eax+4] ;3-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul ebx,12 imul ebx,12
add ebx,[edi+offs_obj_poi_data] add ebx,[edi+obj_3d.poi_data]
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
add eax,8 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = (3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> 2<EFBFBD>) + <EFBFBD><EFBFBD> (2<EFBFBD>)) add eax,8 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = (3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> 2<EFBFBD>) + <EFBFBD><EFBFBD> (2<EFBFBD>))
dec ecx dec ecx
@@ -946,9 +928,9 @@ align 4
jnc .end_points jnc .end_points
stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert] stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert]
stdcall [glBegin],GL_POINTS stdcall [glBegin],GL_POINTS
mov eax,[edi+offs_obj_poi_data] mov eax,[edi+obj_3d.poi_data]
mov ebx,[edi+offs_obj_poi_count] mov ebx,[edi+obj_3d.poi_count]
mov edx,[edi+offs_obj_normals_poi_data] mov edx,[edi+obj_3d.normals_poi_data]
align 4 align 4
@@: @@:
bt dword[draw_mode],bit_light bt dword[draw_mode],bit_light
@@ -973,14 +955,14 @@ if version_edit eq 1
stdcall [glBegin],GL_LINES stdcall [glBegin],GL_LINES
stdcall [glColor3ub], [color_ox+2],[color_ox+1],[color_ox] stdcall [glColor3ub], [color_ox+2],[color_ox+1],[color_ox]
stdcall [glVertex3f], [edi+offs_obj_x_min],[eax+4],[eax+8] stdcall [glVertex3f], [edi+obj_3d.x_min],[eax+4],[eax+8]
stdcall [glVertex3f], [edi+offs_obj_x_max],[eax+4],[eax+8] stdcall [glVertex3f], [edi+obj_3d.x_max],[eax+4],[eax+8]
stdcall [glColor3ub], [color_oy+2],[color_oy+1],[color_oy] stdcall [glColor3ub], [color_oy+2],[color_oy+1],[color_oy]
stdcall [glVertex3f], [eax],[edi+offs_obj_y_min],[eax+8] stdcall [glVertex3f], [eax],[edi+obj_3d.y_min],[eax+8]
stdcall [glVertex3f], [eax],[edi+offs_obj_y_max],[eax+8] stdcall [glVertex3f], [eax],[edi+obj_3d.y_max],[eax+8]
stdcall [glColor3ub], [color_oz+2],[color_oz+1],[color_oz] stdcall [glColor3ub], [color_oz+2],[color_oz+1],[color_oz]
stdcall [glVertex3f], [eax],[eax+4],[edi+offs_obj_z_min] stdcall [glVertex3f], [eax],[eax+4],[edi+obj_3d.z_min]
stdcall [glVertex3f], [eax],[eax+4],[edi+offs_obj_z_max] stdcall [glVertex3f], [eax],[eax+4],[edi+obj_3d.z_max]
stdcall [glEnd] stdcall [glEnd]
stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select] stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select]
@@ -1093,6 +1075,64 @@ mnu_reset_settings:
call update_obj call update_obj
ret ret
align 4
mnu_make_scrshot:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
mov [OpenDialog_data.type],1
stdcall [OpenDialog_Start],OpenDialog_data
cmp [OpenDialog_data.status],2
je .end_save_file
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 㤠筮<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov dword[png_data],0
;create image struct
stdcall [img_create], [buf_ogl.w], [buf_ogl.h], Image.bpp24
mov ebx,eax
test eax,eax
jz @f
;copy foto to image buffer
mov edi,[eax+Image.Data]
mov esi,[buf_ogl]
mov ecx,[buf_ogl.w]
mov edx,[buf_ogl.h]
imul ecx,edx
imul ecx,3
shr ecx,2 ;OpenGL buffer align to 4
rep movsd
;encode image
stdcall [img_encode], eax, LIBIMG_FORMAT_PNG, 0
test eax,eax
jz @f
mov [png_data],eax
mov [png_size],ecx
@@:
stdcall [img_destroy],ebx
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
mov ebx,run_file_70
mov dword[ebx],SSF_CREATE_FILE
mov eax,[png_size]
mov [ebx+12],eax ;file size
mov eax,[png_data]
mov [ebx+16],eax
mov dword[ebx+FileInfoBlock.FileName], openfile_path
mcall SF_FILE,run_file_70
test eax,eax
jnz .save_error
;notify_window_run openfile_path
jmp @f
.save_error:
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>㤠筮<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
notify_window_run txt_err_save_img_file
@@:
mcall SF_SYS_MISC, SSF_MEM_FREE, [png_data]
.end_save_file:
popad
ret
if version_edit eq 1 if version_edit eq 1
align 4 align 4
@@ -1151,12 +1191,12 @@ proc get_mat_color uses ebx ecx edx edi esi, p_mat:dword
cmp word[ebx],CHUNK_MATERIAL cmp word[ebx],CHUNK_MATERIAL
jne .end_add_p3 jne .end_add_p3
add eax,list_offs_obj3d add eax,list_offs_obj3d
mov esi,[eax+offs_mat_name] mov esi,[eax+material.name]
cmp esi,0 cmp esi,0
jne @f jne @f
;init material ;init material
stdcall mat_init,eax,ebx stdcall mat_init,eax,ebx
mov esi,[eax+offs_mat_name] mov esi,[eax+material.name]
@@: @@:
mov edi,[p_mat] mov edi,[p_mat]
mov eax,5 mov eax,5
@@ -1181,7 +1221,7 @@ align 4
.found: .found:
stdcall [tl_node_poi_get_data], tree1,ecx stdcall [tl_node_poi_get_data], tree1,ecx
add eax,list_offs_obj3d add eax,list_offs_obj3d
mov eax,[eax+offs_mat_col_diffuse] mov eax,[eax+material.col_diffuse]
.end_f: .end_f:
ret ret
endp endp
@@ -1200,7 +1240,7 @@ pushad
cmp al,0 cmp al,0
jne @b jne @b
movzx ecx,word[esi] ;ecx - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx ecx,word[esi] ;ecx - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov edx,[edi+offs_obj_poi_data] mov edx,[edi+obj_3d.poi_data]
bt dword[draw_mode],bit_smooth bt dword[draw_mode],bit_smooth
jnc @f jnc @f
@@ -1213,29 +1253,29 @@ align 4
movzx ebx,word[esi] movzx ebx,word[esi]
shl ebx,3 shl ebx,3
add ebx,[edi+offs_obj_tri_data] add ebx,[edi+obj_3d.tri_data]
movzx eax,word[ebx] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx eax,word[ebx] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul eax,12 ;float(x,y,z) imul eax,12 ;float(x,y,z)
add eax,[edi+offs_obj_normals_poi_data] add eax,[edi+obj_3d.normals_poi_data]
stdcall [glNormal3fv], eax stdcall [glNormal3fv], eax
sub eax,[edi+offs_obj_normals_poi_data] sub eax,[edi+obj_3d.normals_poi_data]
add eax,edx add eax,edx
stdcall [glVertex3f], [eax],[eax+4],[eax+8] stdcall [glVertex3f], [eax],[eax+4],[eax+8]
movzx eax,word[ebx+2] ;2-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx eax,word[ebx+2] ;2-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul eax,12 ;float(x,y,z) imul eax,12 ;float(x,y,z)
add eax,[edi+offs_obj_normals_poi_data] add eax,[edi+obj_3d.normals_poi_data]
stdcall [glNormal3fv], eax stdcall [glNormal3fv], eax
sub eax,[edi+offs_obj_normals_poi_data] sub eax,[edi+obj_3d.normals_poi_data]
add eax,edx add eax,edx
stdcall [glVertex3f], [eax],[eax+4],[eax+8] stdcall [glVertex3f], [eax],[eax+4],[eax+8]
movzx eax,word[ebx+4] ;3-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx eax,word[ebx+4] ;3-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul eax,12 ;float(x,y,z) imul eax,12 ;float(x,y,z)
add eax,[edi+offs_obj_normals_poi_data] add eax,[edi+obj_3d.normals_poi_data]
stdcall [glNormal3fv], eax stdcall [glNormal3fv], eax
sub eax,[edi+offs_obj_normals_poi_data] sub eax,[edi+obj_3d.normals_poi_data]
add eax,edx add eax,edx
stdcall [glVertex3f], [eax],[eax+4],[eax+8] stdcall [glVertex3f], [eax],[eax+4],[eax+8]
@@ -1254,12 +1294,12 @@ align 4
jnc .norm jnc .norm
mov eax,ebx mov eax,ebx
imul eax,12 imul eax,12
add eax,[edi+offs_obj_normals_tri_data] add eax,[edi+obj_3d.normals_tri_data]
stdcall [glNormal3fv], eax stdcall [glNormal3fv], eax
.norm: .norm:
shl ebx,3 shl ebx,3
add ebx,[edi+offs_obj_tri_data] add ebx,[edi+obj_3d.tri_data]
movzx eax,word[ebx] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> movzx eax,word[ebx] ;1-<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
imul eax,12 ;float(x,y,z) imul eax,12 ;float(x,y,z)

View File

@@ -85,14 +85,14 @@ pushad
;jmp .set_points ;jmp .set_points
@@: @@:
.set_points: .set_points:
mov [edi+offs_obj_poi_data],ebx mov [edi+obj_3d.poi_data],ebx
mov [edi+offs_obj_poi_count],edx mov [edi+obj_3d.poi_count],edx
.no_points: .no_points:
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᯨ᪠ <EFBFBD><EFBFBD>ꥪ⮢ ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᯨ᪠ <EFBFBD><EFBFBD>ꥪ⮢
mov ebx,[edi+offs_obj_poi_data] mov ebx,[edi+obj_3d.poi_data]
mov dword[tree3.info_max_count],2 mov dword[tree3.info_max_count],2
mov edx,[edi+offs_obj_poi_count] mov edx,[edi+obj_3d.poi_count]
add dword[tree3.info_max_count],edx ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> (+2 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᯨ᪠) add dword[tree3.info_max_count],edx ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> (+2 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᯨ᪠)
stdcall dword[tl_data_init], tree3 stdcall dword[tl_data_init], tree3
mov eax,dword[icon_tl_sys] mov eax,dword[icon_tl_sys]
@@ -523,10 +523,10 @@ prop_button:
mov dword[tree3.data_img_sys],0 ;<EFBFBD>. <EFBFBD>. <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mov dword[tree3.data_img_sys],0 ;<EFBFBD>. <EFBFBD>. <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
stdcall dword[tl_data_clear], tree3 stdcall dword[tl_data_clear], tree3
mov edi,o3d mov edi,o3d
stdcall mem.Free,[edi+offs_obj_normals_tri_data] stdcall mem.Free,[edi+obj_3d.normals_tri_data]
stdcall mem.Free,[edi+offs_obj_normals_poi_data] stdcall mem.Free,[edi+obj_3d.normals_poi_data]
mov dword[edi+offs_obj_normals_tri_data],0 mov dword[edi+obj_3d.normals_tri_data],0
mov dword[edi+offs_obj_normals_poi_data],0 mov dword[edi+obj_3d.normals_poi_data],0
mov byte[prop_wnd_run],0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> mov byte[prop_wnd_run],0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcall SF_TERMINATE_PROCESS ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>ணࠬ<EFBFBD><EFBFBD> mcall SF_TERMINATE_PROCESS ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>ணࠬ<EFBFBD><EFBFBD>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -1289,10 +1289,9 @@ endp
;int (deflate_state* s) ;int (deflate_state* s)
align 16 align 16
proc build_bl_tree uses ecx edi, s:dword proc build_bl_tree uses ebx ecx edi, s:dword
locals ;ebx - max_blindex ;index of last bit length code of non zero freq
max_blindex dd ? ;int ;index of last bit length code of non zero freq
endl
mov edi,[s] mov edi,[s]
; Determine the bit length frequencies for literal and distance trees ; Determine the bit length frequencies for literal and distance trees
mov eax,edi mov eax,edi
@@ -1311,30 +1310,28 @@ endl
; requires that at least 4 bit length codes be sent. (appnote.txt says ; requires that at least 4 bit length codes be sent. (appnote.txt says
; 3 but the actual value used is 4.) ; 3 but the actual value used is 4.)
mov dword[max_blindex],BL_CODES-1 mov ebx,BL_CODES-1
jmp @f jmp @f
align 4 align 4
.cycle0: ;for (..;..>=..;..) .cycle0: ;for (..;..>=..;..)
dec dword[max_blindex] dec ebx
@@: @@:
cmp dword[max_blindex],3 cmp ebx,3
jl .cycle0end jl .cycle0end
mov ecx,[max_blindex] movzx ecx,byte[ebx+bl_order]
movzx eax,byte[ecx+bl_order] movzx ecx,word[edi+sizeof.ct_data*ecx+deflate_state.bl_tree+Len]
movzx ecx,word[edi+sizeof.ct_data*eax+deflate_state.bl_tree+Len]
jecxz .cycle0 jecxz .cycle0
jmp .cycle0end
align 4 align 4
.cycle0end: .cycle0end:
; Update opt_len to include the bit length tree and counts ; Update opt_len to include the bit length tree and counts
mov eax,[max_blindex] mov eax,ebx
inc eax inc eax
imul eax,3 imul eax,3
add eax,5+5+4 add eax,5+5+4
add [edi+deflate_state.opt_len],eax add [edi+deflate_state.opt_len],eax
; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); ; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len));
mov eax,[max_blindex] mov eax,ebx
ret ret
endp endp
@@ -1343,8 +1340,7 @@ endp
; lengths of the bit length codes, the literal tree and the distance tree. ; lengths of the bit length codes, the literal tree and the distance tree.
; IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. ; IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
;void (s, lcodes, dcodes, blcodes) ;void (deflate_state* s, lcodes, dcodes, blcodes)
; deflate_state* s
; int lcodes, dcodes, blcodes ;number of codes for each tree ; int lcodes, dcodes, blcodes ;number of codes for each tree
align 4 align 4
proc send_all_trees uses eax ebx ecx edi, s:dword, lcodes:dword, dcodes:dword, blcodes:dword proc send_all_trees uses eax ebx ecx edi, s:dword, lcodes:dword, dcodes:dword, blcodes:dword

View File

@@ -12,7 +12,7 @@ include 'vox_3d.inc'
include '../trunk/str.inc' include '../trunk/str.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Voxel viewer 19.02.16',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> caption db 'Voxel viewer 18.04.17',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
3d_wnd_l equ 5 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> tinygl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5> 3d_wnd_l equ 5 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> tinygl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5>
3d_wnd_t equ 30 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> tinygl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A2A5><EFBFBD> 3d_wnd_t equ 30 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> tinygl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A2A5><EFBFBD>
@@ -854,7 +854,7 @@ lib_name_2 db 'buf2d.obj',0
err_msg_found_lib_2 db '<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'buf2d.obj',39,0 err_msg_found_lib_2 db '<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'buf2d.obj',39,0
err_msg_import_2 db '<27><EFBFBD><E8A8A1> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'buf2d',39,0 err_msg_import_2 db '<27><EFBFBD><E8A8A1> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'buf2d',39,0
system_dir_3 db '/kolibrios/lib/' system_dir_3 db '/sys/lib/'
lib_name_3 db 'tinygl.obj',0 lib_name_3 db 'tinygl.obj',0
err_msg_found_lib_3 db '<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'tinygl.obj',39,0 err_msg_found_lib_3 db '<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'tinygl.obj',39,0
err_msg_import_3 db '<27><EFBFBD><E8A8A1> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'tinygl',39,0 err_msg_import_3 db '<27><EFBFBD><E8A8A1> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',39,'tinygl',39,0