1,13 → 1,7 |
use32 |
org 0x0 |
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â |
dd 0x1 |
dd start |
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï |
dd mem |
dd stacktop |
dd 0 |
dd sys_path |
dd 1, start, i_end, mem, stacktop, 0, sys_path |
|
include '../../../../programs/macros.inc' |
include '../../../../programs/proc32.inc' |
18,7 → 12,7 |
include '../trunk/str.inc' |
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
caption db 'Voxel viewer 17.02.15',0 ;¯®¤¯¨áì ®ª |
caption db 'Voxel viewer 07.12.15',0 ;¯®¤¯¨áì ®ª |
|
struct FileInfoBlock |
Function dd ? |
30,7 → 24,11 |
FileName dd ? |
ends |
|
run_file_70 FileInfoBlock |
3d_wnd_l equ 5 ;®âáâ㯠¤«ï tinygl ¡ãä¥à á«¥¢ |
3d_wnd_t equ 30 ;®âáâ㯠¤«ï tinygl ¡ãä¥à ᢥàåã |
3d_wnd_w equ 512 |
3d_wnd_h equ 512 |
|
image_data dd 0 ;㪠§ â¥«ì ¢à¥¬¥ãî ¯ ¬ïâì. ¤«ï 㦥 ¯à¥®¡à §®¢ ¨ï ¨§®¡à ¦¥¨ï |
|
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3 |
48,24 → 46,22 |
db 0 |
@@: |
;32 - áâ ¤ àâë© ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥ ¡ëâì ¡ãä¥à á á¨áâ¥¬ë¬ ¯ã⥬ |
copy_path .path_str,[32],file_name,0x0 |
copy_path .path_str,[32],file_name,0 |
else |
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
end if |
|
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï |
mov [buf],eax |
|
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], dword size |
m2m [run_file_70.Buffer], [buf] |
mov [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
cmp ebx,0xffffffff |
je @f |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data |
103,7 → 99,7 |
mcall 26,9 |
mov [last_time],eax |
|
stdcall [kosglMakeCurrent], 5,30,512,512,ctx1 |
stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1 |
stdcall [glEnable], GL_DEPTH_TEST |
stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ®à¬ «¨ ®¤¨ ª®¢®© ¢¥«¨ç¨ë ¢® ¨§¡¥¦ ¨¥ àâ¥ä ªâ®¢ |
stdcall [glClearColor], 0.0,0.0,0.0,0.0 |
139,6 → 135,10 |
jz key |
cmp al,3 |
jz button |
cmp al,6 |
jne @f |
call mouse |
@@: |
|
jmp still |
|
317,6 → 317,88 |
|
|
align 4 |
mouse: |
push eax ebx |
mcall 37,3 |
bt eax,0 |
jnc .end_m |
;mouse l. but. move |
cmp dword[mouse_drag],1 |
jne .end_m |
mcall 37,1 ;get mouse coords |
mov ebx,eax |
shr ebx,16 ;mouse.x |
cmp ebx,3d_wnd_l |
jg @f |
mov ebx,3d_wnd_l |
@@: |
sub ebx,3d_wnd_l |
cmp ebx,3d_wnd_w |
jle @f |
mov ebx,3d_wnd_w |
@@: |
and eax,0xffff ;mouse.y |
cmp eax,3d_wnd_t |
jg @f |
mov eax,3d_wnd_t |
@@: |
sub eax,3d_wnd_t |
cmp eax,3d_wnd_h |
jle @f |
mov eax,3d_wnd_h |
@@: |
finit |
fild dword[mouse_y] |
mov [mouse_y],eax |
fisub dword[mouse_y] |
fdiv dword[angle_dxm] ;¥á«¨ ªãàá®à ¤¢¨¦¥âáï ¯® ®á¨ y (¢¢¥àå ¨«¨ ¢¨§) â® ¯®¢®à®â ¤¥« ¥¬ ¢®ªà㣠®á¨ 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] ;¥á«¨ ªãàá®à ¤¢¨¦¥âáï ¯® ®á¨ x (¢¢¥àå ¨«¨ ¢¨§) â® ¯®¢®à®â ¤¥« ¥¬ ¢®ªà㣠®á¨ y |
fadd dword[angle_y] |
fstp dword[angle_y] |
|
call draw_3d |
stdcall [kosglSwapBuffers] |
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 37,1 ;get mouse coords |
mov ebx,eax |
shr ebx,16 ;mouse.x |
cmp ebx,3d_wnd_l |
jl .end_d |
sub ebx,3d_wnd_l |
cmp ebx,3d_wnd_w |
jg .end_d |
and eax,0xffff ;mouse.y |
cmp eax,3d_wnd_t |
jl .end_d |
sub eax,3d_wnd_t |
cmp eax,3d_wnd_h |
jg .end_d |
mov dword[mouse_drag],1 |
mov dword[mouse_x],ebx |
mov dword[mouse_y],eax |
.end_d: |
|
;stdcall [kmainmenu_dispatch_cursorevent], [main_menu] |
pop ebx eax |
ret |
|
align 4 |
button: |
mcall 17 |
cmp ah,3 |
668,11 → 750,11 |
mov edi,txt_stat_m1.v |
stdcall convert_int_to_str,20 |
|
;mov eax,ebx |
;mov edi,txt_stat_m2.v |
;stdcall convert_int_to_str,20 |
mov eax,ebx |
mov edi,txt_stat_m2.v |
stdcall convert_int_to_str,20 |
|
;stdcall str_n_cat,txt_stat_m1.v,txt_stat_m2,50 |
stdcall str_n_cat,txt_stat_m1.v,txt_stat_m2,50 |
notify_window_run txt_stat_m1 |
.end_stat: |
ret |
681,7 → 763,7 |
align 4 |
txt_stat_m1: |
db 'â â¨á⨪ ',13,10,'®ªá¥«¥©: ' |
.v: rb 50 |
.v: rb 70 |
txt_stat_m2: |
db 13,10,'â®¡à ¦ ¥¬ëå £à ¥©: ' |
.v: rb 20 |
717,6 → 799,7 |
;® ¢á¥ ¦¥ ¯à¨ ¯®¢®à®â å ¡ã¤ãâ ®âᥪ âáï ªà ï, ª®â®àë¥ ¢ë«¥§ãâ § ¯à¥¤¥«ë ¯«®áª®á⥩ ®âá¥ç¥¨ï |
;¢ ¢¥àᨨ opengl ¯®¤ Win ª®®à¤¨ âë ¨¤ãâ ®â -1.0 ¤® 1.0 ¯®â®¬ã â ¬ í⮣® ¤¥« âì ¥ 㦮 |
stdcall [glScalef], [scale], [scale], [scale] ;㢥«¨ç¨¢ ¥¬ ¢®ªá¥«ìë© ®¡ê¥ªâ, çâ®-¡ë ¥ ¡ë« ®ç¥ì ¬ «¥ìª¨¬ |
stdcall [glScalef], 1.0, 1.0, 0.5 ;çâ®-¡ë ªà ï ®¡ê¥ªâ ¥ ¢ë« §¨«¨ § £à ¨ ®âá¥ç¥¨ï |
stdcall [glRotatef], [angle_x],1.0,0.0,0.0 |
stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
stdcall [glRotatef], [angle_z],0.0,0.0,1.0 |
973,12 → 1056,8 |
err_msg_import_3 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,0 |
;-------------------------------------------------- |
|
sc system_colors |
last_time dd 0 |
|
align 16 |
procinfo process_information |
|
align 4 |
buf_0: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
dw 530 ;+4 left |
1006,6 → 1085,11 |
angle_y dd 0.0 |
angle_z dd 0.0 |
delt_size dd 3.0 |
mouse_drag dd 0 ;०¨¬ ¯®¢®à®â áæ¥ë ®â ¯¥à¥¬¥é¥¨¨ ªãàá®à ¬ëè¨ |
mouse_x dd 0 |
mouse_y dd 0 |
angle_dxm dd 2.8444 ;~ 3d_wnd_w/180 - ¯à¨¡ ¢«¥¨¥ 㣫®¢ ¯®¢®à®â áæ¥ë ¯à¨ ¢à 饨¨ ¬ë襩 |
angle_dym dd 2.8444 ;~ 3d_wnd_h/180 |
|
opt_light dw 0 ;®¯æ¨ï ¤«ï ¢ª«î票ï/¢ëª«î票ï ᢥâ |
opt_cube_box dw 1 ;®¯æ¨ï ¤«ï à¨á®¢ ¨ï à ¬ª¨ ¢®ªà㣠®¡ê¥ªâ |
1026,10 → 1110,12 |
rb 4096 |
stacktop: |
sys_path rb 1024 |
file_name: |
rb 1024 ;4096 |
file_name rb 2048 |
library_path rb 1024 |
plugin_path rb 4096 |
openfile_path rb 4096 |
filename_area rb 256 |
sc system_colors |
procinfo process_information |
run_file_70 FileInfoBlock |
mem: |