From 7ab4de091c2e5887b85c9d67b0603348410a314a Mon Sep 17 00:00:00 2001 From: IgorA Date: Wed, 9 Apr 2025 23:15:20 +0300 Subject: [PATCH] TinyGL: - fix function glClearDepth - fix bug with z-buffer (fix 'info3ds', 'info3ds_u', 'vox_tgl', ...) - fix array functions: glDrawArrays, glDrawElements (fix 'test_array1') --- programs/develop/info3ds/info3ds.asm | 10 +- programs/develop/info3ds/info3ds_u.asm | 6 +- programs/develop/info3ds/info_o3d.inc | 3 +- .../develop/libraries/TinyGL/asm_fork/api.asm | 5 +- .../libraries/TinyGL/asm_fork/arrays.asm | 405 ++++++------------ .../TinyGL/asm_fork/examples/test_array1.asm | 43 +- .../TinyGL/asm_fork/examples/test_glu0.asm | 15 +- .../TinyGL/asm_fork/examples/test_glu1.asm | 19 +- .../TinyGL/asm_fork/examples/test_glu2.asm | 18 +- .../TinyGL/asm_fork/examples/textures0.asm | 15 +- .../TinyGL/asm_fork/examples/textures1.asm | 17 +- .../TinyGL/asm_fork/examples/textures2.asm | 17 +- .../libraries/TinyGL/asm_fork/light.asm | 30 +- .../libraries/TinyGL/asm_fork/list.asm | 11 +- .../libraries/TinyGL/asm_fork/vertex.asm | 2 +- .../libraries/TinyGL/asm_fork/zline.asm | 2 +- .../libraries/TinyGL/asm_fork/zline.inc | 2 +- .../libraries/TinyGL/asm_fork/zline_r.inc | 2 +- .../libraries/TinyGL/asm_fork/ztriangle.asm | 8 +- .../media/voxel_editor/utilites/vox_tgl.asm | 10 +- 20 files changed, 261 insertions(+), 379 deletions(-) diff --git a/programs/develop/info3ds/info3ds.asm b/programs/develop/info3ds/info3ds.asm index 839a60de1..2bfa3ce8b 100644 --- a/programs/develop/info3ds/info3ds.asm +++ b/programs/develop/info3ds/info3ds.asm @@ -1082,7 +1082,7 @@ l_libs_start: lib_2 l_libs lib_name_2, file_name, system_dir_2, import_box_lib lib_3 l_libs lib_name_3, file_name, system_dir_3, import_buf2d lib_4 l_libs lib_name_4, file_name, system_dir_4, import_libkmenu - lib_5 l_libs lib_name_5, file_name, system_dir_5, import_lib_tinygl + lib_5 l_libs lib_name_5, file_name, system_dir_5, import_tinygl lib_6 l_libs lib_name_6, file_name, system_dir_6, import_libini l_libs_end: @@ -1287,7 +1287,7 @@ dd 0,0 akmenuitem_draw db 'kmenuitem_draw',0 align 4 -import_lib_tinygl: +import_tinygl: macro E_LIB n { n dd sz_#n @@ -1343,7 +1343,7 @@ buf_1: align 4 el_focus dd tree1 tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\ - 16,16, 0xffffff,0xb0d0ff,0x400040, 5,35,195-16,250, 16,list_offs_text,0,\ + 16,16, 0xffffff,0xb0d0ff,0x10400040, 5,35,195-16,250, 16,list_offs_text,0,\ el_focus,w_scr_t1,0 align 4 @@ -1362,9 +1362,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ; lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; ࠬ 䮭 ᢥ饭 if lang eq ru_RU -capt db 'info 3ds 29.09.20',0 ; +capt db 'info 3ds 14.04.25',0 ; else ; Default to en_US -capt db 'info 3ds version 29.09.20',0 ;window caption +capt db 'info 3ds version 14.04.25',0 ;window caption end if align 16 diff --git a/programs/develop/info3ds/info3ds_u.asm b/programs/develop/info3ds/info3ds_u.asm index a9d47f951..29fdff4f5 100644 --- a/programs/develop/info3ds/info3ds_u.asm +++ b/programs/develop/info3ds/info3ds_u.asm @@ -1408,7 +1408,7 @@ buf_1: align 4 el_focus dd tree1 tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\ - 16,16, 0xffffff,0xb0d0ff,0x400040, 5,47,195-16,250, 16,list_offs_text,0, el_focus,\ + 16,16, 0xffffff,0xb0d0ff,0x10400040, 5,47,195-16,250, 16,list_offs_text,0, el_focus,\ w_scr_t1,0 align 4 @@ -1427,9 +1427,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ; lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; ࠬ 䮭 ᢥ饭 if lang eq ru_RU -capt db 'info 3ds [user] 29.09.20',0 ; +capt db 'info 3ds [user] 14.04.25',0 ; else ; Default to en_US -capt db 'info 3ds [user] version 29.09.20',0 ; Window caption +capt db 'info 3ds [user] version 14.04.25',0 ; Window caption end if align 16 diff --git a/programs/develop/info3ds/info_o3d.inc b/programs/develop/info3ds/info_o3d.inc index a576398e6..eb7ac600d 100644 --- a/programs/develop/info3ds/info_o3d.inc +++ b/programs/develop/info3ds/info_o3d.inc @@ -812,9 +812,8 @@ proc draw_3d uses eax ebx ecx edi, o_data:dword @@: stdcall [glDisable],GL_LIGHTING .end_l: - stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z 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,1.4 ;correct for z stdcall [glRotatef], [angle_z],0.0,0.0,1.0 stdcall [glRotatef], [angle_y],0.0,1.0,0.0 stdcall [glRotatef], [angle_x],1.0,0.0,0.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/api.asm b/programs/develop/libraries/TinyGL/asm_fork/api.asm index 599a1ae40..17c1a731b 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/api.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/api.asm @@ -951,13 +951,12 @@ endl endp align 4 -proc glClearDepth uses eax, depth:dword +proc glClearDepth uses eax, depth:qword locals p rd 2 endl mov dword[p],OP_ClearDepth - mov eax,[depth] - fld qword[eax] + fld qword[depth] fstp dword[p+4] lea eax,[ebp-8] ;=sizeof(dd)*2 diff --git a/programs/develop/libraries/TinyGL/asm_fork/arrays.asm b/programs/develop/libraries/TinyGL/asm_fork/arrays.asm index 9c62a9f44..2257a725c 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/arrays.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/arrays.asm @@ -23,8 +23,7 @@ endl imul ecx,ebx shl ecx,2 add ecx,[eax+GLContext.color_array] ;ecx = &context.color_array[i] - mov ebx,ebp - sub ebx,20 ;=sizeof(dd)*5 + lea ebx,[ebp-20] ;=sizeof(dd)*5 mov edx,[ecx] mov [ebx+4],edx mov edx,[ecx+4] @@ -48,8 +47,7 @@ endl imul esi,ebx shl esi,2 add esi,[eax+GLContext.normal_array] ;esi = &normal_array[ebx * (3 + c->normal_array_stride)] - mov edi,eax - add edi,GLContext.current_normal + lea edi,[eax+GLContext.current_normal] mov ecx,3 rep movsd mov dword[edi],0.0 @@ -92,8 +90,7 @@ endl imul ecx,ebx shl ecx,2 add ecx,[eax+GLContext.vertex_array] ;ecx = &context.vertex_array[i] - mov ebx,ebp - sub ebx,20 ;=sizeof(dd)*5 + lea ebx,[ebp-20] ;=sizeof(dd)*5 mov edx,[ecx] mov [ebx+4],edx mov edx,[ecx+4] @@ -130,8 +127,7 @@ endl mov eax,[i] mov dword[p+4],eax - mov eax,ebp - sub eax,8 ;=sizeof(dd)*2 + lea eax,[ebp-8] ;=sizeof(dd)*2 stdcall gl_add_op,eax ret endp @@ -139,10 +135,9 @@ endp align 4 proc glopDrawArrays, context:dword, param:dword locals - vi dd ? idx dd ? states dd ? - size dd ? + a_size dd ? p rd 8 ;функция glopColor требует 8 параметров, другие функции требуют меньше, берем по максимуму что-бы не портить стек endl pushad @@ -155,132 +150,19 @@ pushad mov [idx],eax ;param[2].i mov eax,[ebx+4] mov [p+4],eax ;p[1].i = param[1].i - mov eax,ebp - sub eax,32 ;=sizeof(dd)*8 + lea eax,[ebp-32] ;=sizeof(dd)*8 stdcall glopBegin, edx,eax - mov dword[vi],0 + cmp ecx,1 + jl @f align 4 .cycle_0: ;for (int vi=0; vi],[Up],[Down] - rotate align 4 draw_3d: stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины +mov eax,house_3ds.end-house_3ds +cmp eax,HOUSE_FILE_SIZE +je @f + notify_window_run txt_error_file_size + ret +@@: call [glPushMatrix] ;масштаб и повороты - stdcall [glTranslatef], 0.0,0.0,0.5 stdcall [glScalef], [scale], [scale], [scale] stdcall [glRotatef], [angle_z],0.0,0.0,1.0 stdcall [glRotatef], [angle_y],0.0,1.0,0.0 @@ -152,17 +166,17 @@ call [glPushMatrix] ;рисование через индексный массив mov eax,house_3ds ;начало внедренного файла 3ds - add eax,0xeb ;смещение по которому идут координаты вершин (получено с использованием программы info_3ds) + add eax,VERTICES_OFFSET stdcall [glVertexPointer], 3, GL_FLOAT, 0, eax ;задаем массив для вершин, 3 - число координат для одной вершины stdcall [glEnableClientState], GL_VERTEX_ARRAY ;включаем режим рисования вершин - stdcall [glDrawElements], GL_TRIANGLES, 0x1a6*3, GL_UNSIGNED_SHORT, Indices ;mode, count, type, *indices + stdcall [glDrawElements], GL_TRIANGLES, FACES_COUNT*3, GL_UNSIGNED_SHORT, Indices ;mode, count, type, *indices stdcall [glDisableClientState], GL_VERTEX_ARRAY ;отключаем режим рисования вершин call [glPopMatrix] ret align 4 -scale dd 0.0065 ;начальный масштаб (в идеальном случае должен вычислятся, но для даного примера подобран в ручную на глаз) +scale dd 0.07 ;начальный масштаб (в идеальном случае должен вычислятся, но для даного примера подобран в ручную на глаз) delt_sc dd 0.0005 angle_z dd 90.0 angle_y dd 90.0 @@ -172,8 +186,9 @@ delt_size dd 3.0 align 4 house_3ds: ;внедряем файл внутрь программы (в идеальном случае должен открыватся через окно диалога, но для облегчения примера вшит внутрь) file '../../../../../demos/view3ds/3ds_objects/House.3ds' +.end: align 4 -Indices rb 0x1a6*6 ;0x1a6 - число граней, на каждую грань по 3 точки, индекс точки 2 байта +Indices rb FACES_COUNT*6 ;на каждую грань по 3 точки, индекс точки 2 байта ;-------------------------------------------------- align 4 diff --git a/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu0.asm b/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu0.asm index 1ed52e9a4..89f4bd780 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu0.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu0.asm @@ -36,13 +36,13 @@ red_win: align 16 still: mcall SF_WAIT_EVENT - cmp al,1 - jz red_win - cmp al,2 - jz key - cmp al,3 - jz button - jmp still + cmp al,EV_REDRAW + jz red_win + cmp al,EV_KEY + jz key + cmp al,EV_BUTTON + jz button + jmp still align 4 draw_window: @@ -141,7 +141,6 @@ stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим б stdcall [glColor3f], 1.0, 1.0, 0.0 call [glPushMatrix] - stdcall [glTranslatef], 0.0,0.0,0.5 stdcall [glScalef], [scale], [scale], [scale] stdcall [glRotatef], [angle_z],0.0,0.0,1.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu1.asm b/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu1.asm index 6e4f95bda..03b809621 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu1.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu1.asm @@ -60,6 +60,7 @@ load_libraries l_libs_start,l_libs_end stdcall [buf2d_convert_text_matrix], buf_1 load_image_file 'toolb_1.png', image_data_toolbar + call SetLight call draw_3d align 4 @@ -69,13 +70,13 @@ red_win: align 4 still: mcall SF_WAIT_EVENT - cmp al,1 - jz red_win - cmp al,2 - jz key - cmp al,3 - jz button - jmp still + cmp al,EV_REDRAW + jz red_win + cmp al,EV_KEY + jz key + cmp al,EV_BUTTON + jz button + jmp still align 4 draw_window: @@ -303,11 +304,7 @@ draw_3d: stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины call [glPushMatrix] - call SetLight - - stdcall [glTranslatef], 0.0,0.0,0.5 stdcall [glScalef], [scale], [scale], [scale] - stdcall [glScalef], 1.0, 1.0, 0.5 stdcall [glColor3f], 1.0, 1.0, 0.0 stdcall [glRotatef], [angle_z],0.0,0.0,1.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu2.asm b/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu2.asm index 1acdf9639..64d41205f 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu2.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/examples/test_glu2.asm @@ -60,6 +60,7 @@ load_libraries l_libs_start,l_libs_end stdcall [buf2d_convert_text_matrix], buf_1 load_image_file 'toolb_1.png', image_data_toolbar + call SetLight call draw_3d align 4 @@ -69,13 +70,13 @@ red_win: align 4 still: mcall SF_WAIT_EVENT - cmp al,1 - jz red_win - cmp al,2 - jz key - cmp al,3 - jz button - jmp still + cmp al,EV_REDRAW + jz red_win + cmp al,EV_KEY + jz key + cmp al,EV_BUTTON + jz button + jmp still align 4 draw_window: @@ -296,9 +297,6 @@ draw_3d: stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины call [glPushMatrix] - call SetLight - - stdcall [glTranslatef], 0.0,0.0,0.5 stdcall [glScalef], [scale], [scale], [scale] stdcall [glColor3f], 1.0, 1.0, 0.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/examples/textures0.asm b/programs/develop/libraries/TinyGL/asm_fork/examples/textures0.asm index 95c76f731..c0e498568 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/examples/textures0.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/examples/textures0.asm @@ -88,13 +88,13 @@ red_win: align 4 still: mcall SF_WAIT_EVENT - cmp al,1 - jz red_win - cmp al,2 - jz key - cmp al,3 - jz button - jmp still + cmp al,EV_REDRAW + jz red_win + cmp al,EV_KEY + jz key + cmp al,EV_BUTTON + jz button + jmp still align 4 draw_window: @@ -295,7 +295,6 @@ draw_3d: stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины call [glPushMatrix] - stdcall [glTranslatef], 0.0,0.0,0.5 stdcall [glScalef], [scale], [scale], [scale] stdcall [glRotatef], [angle_z],0.0,0.0,1.0 stdcall [glRotatef], [angle_y],0.0,1.0,0.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/examples/textures1.asm b/programs/develop/libraries/TinyGL/asm_fork/examples/textures1.asm index c928d11db..647f81680 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/examples/textures1.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/examples/textures1.asm @@ -88,13 +88,13 @@ red_win: align 4 still: mcall SF_WAIT_EVENT - cmp al,1 - jz red_win - cmp al,2 - jz key - cmp al,3 - jz button - jmp still + cmp al,EV_REDRAW + jz red_win + cmp al,EV_KEY + jz key + cmp al,EV_BUTTON + jz button + jmp still align 4 draw_window: @@ -297,9 +297,8 @@ draw_3d: stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины call [glPushMatrix] - stdcall [glTranslatef], 0.0,0.0,0.5 stdcall [glScalef], [scale], [scale], [scale] - stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении + stdcall [glScalef], 1.0, 1.0, 0.2 ;прижимаем сферу, что-бы сразу не вылазила при увеличении stdcall [glRotatef], [angle_y],0.0,1.0,0.0 stdcall [glRotatef], [angle_x],1.0,0.0,0.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/examples/textures2.asm b/programs/develop/libraries/TinyGL/asm_fork/examples/textures2.asm index 678fc8c94..864a780a1 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/examples/textures2.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/examples/textures2.asm @@ -89,13 +89,13 @@ red_win: align 4 still: mcall SF_WAIT_EVENT - cmp al,1 - jz red_win - cmp al,2 - jz key - cmp al,3 - jz button - jmp still + cmp al,EV_REDRAW + jz red_win + cmp al,EV_KEY + jz key + cmp al,EV_BUTTON + jz button + jmp still align 4 draw_window: @@ -268,8 +268,9 @@ draw_3d: stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины call [glPushMatrix] + stdcall [glTranslatef], 0.0,0.0,-1.0 ;двигаем сферу на себя, что-бы отсечь переднюю часть stdcall [glScalef], [scale], [scale], [scale] - stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении + stdcall [glScalef], 1.0, 1.0, 0.2 ;прижимаем сферу, что-бы сразу не вылазила при увеличении stdcall [glRotatef], [angle_y],0.0,1.0,0.0 stdcall [glRotatef], [angle_x],1.0,0.0,0.0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/light.asm b/programs/develop/libraries/TinyGL/asm_fork/light.asm index 469b1ae94..7d1bc2d75 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/light.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/light.asm @@ -185,7 +185,7 @@ align 4 cmp ecx,GL_SPOT_EXPONENT jne @f mov ecx,[ebx+12] - mov [edi+GLLight.spot_exponent],ecx ;l.spot_exponent=p[3] + mov [edx+GLLight.spot_exponent],ecx ;l.spot_exponent=p[3] jmp .end_f align 4 @@: @@ -193,7 +193,7 @@ align 4 jne .end_spot_c fld dword[ebp+12] ;float a=v.v[0] ; assert(a == 180 || (a>=0 && a<=90)); - fst dword[edi+GLLight.spot_cutoff] ;l.spot_cutoff=a + fst dword[edx+GLLight.spot_cutoff] ;l.spot_cutoff=a fcom dword[an180f] ;if (a != 180) fstsw ax sahf @@ -202,7 +202,7 @@ align 4 fmulp fdiv dword[an180f] fcos - fstp dword[edi+GLLight.cos_spot_cutoff] ;l.cos_spot_cutoff=cos(a * M_PI / 180.0) + fstp dword[edx+GLLight.cos_spot_cutoff] ;l.cos_spot_cutoff=cos(a * M_PI / 180.0) jmp .end_f @@: ffree st0 @@ -213,21 +213,21 @@ align 4 cmp ecx,GL_CONSTANT_ATTENUATION jne @f mov ecx,[ebx+12] - mov [edi+GLLight.attenuation],ecx ;l->attenuation[0]=p[3] + mov [edx+GLLight.attenuation],ecx ;l->attenuation[0]=p[3] jmp .end_f align 4 @@: cmp ecx,GL_LINEAR_ATTENUATION jne @f mov ecx,[ebx+12] - mov [edi+GLLight.attenuation+4],ecx ;l->attenuation[1]=p[3] + mov [edx+GLLight.attenuation+4],ecx ;l->attenuation[1]=p[3] jmp .end_f align 4 @@: cmp ecx,GL_QUADRATIC_ATTENUATION jne @f mov ecx,[ebx+12] - mov [edi+GLLight.attenuation+8],ecx ;l->attenuation[2]=p[3] + mov [edx+GLLight.attenuation+8],ecx ;l->attenuation[2]=p[3] jmp .end_f align 4 @@: ;default: @@ -363,15 +363,14 @@ fl_1e_3 dd 1.0e-3 align 16 proc gl_shade_vertex, context:dword, v:dword locals - R dd ? ;float ebp-96 - G dd ? ;float ebp-92 - B dd ? ;float ebp-88 - A dd ? ;float ebp-84 - s V3 ;ebp-80 - d V3 ;ebp-68 - tmp dd ? ;float ebp-56 - att dd ? ;float ebp-52 - dot_spot dd ? ;float ebp-48 + R dd ? ;float ebp-92 + G dd ? ;float ebp-88 + B dd ? ;float ebp-84 + A dd ? ;float ebp-80 + s V3 ;ebp-76 + d V3 ;ebp-64 + tmp dd ? ;float ebp-52 + att dd ? ;float ebp-48 lR dd ? ;float ebp-44 lB dd ? ;float ebp-40 lG dd ? ;float ebp-36 @@ -563,7 +562,6 @@ align 4 fmul dword[d+offs_Z] faddp fchs - fst dword[dot_spot] cmp dword[twoside],0 ;if (twoside && dot_spot < 0) je @f ftst ;if (dot_spot<0) diff --git a/programs/develop/libraries/TinyGL/asm_fork/list.asm b/programs/develop/libraries/TinyGL/asm_fork/list.asm index cafaf4c48..ac6a76104 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/list.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/list.asm @@ -197,21 +197,24 @@ push edi esi add ebx,4 inc esi - cmp byte[esi],'f' + cmp byte[esi],'f' ;float jne @f fld dword[ebx] fstp qword[Data_Double] call DoubleFloat_to_String stdcall str_cat, edi,Data_String @@: - cmp byte[esi],'d' - jne @f + cmp byte[esi],'C' ;const + je @f + cmp byte[esi],'d' ;integer + je @f + jmp .no_param + @@: stdcall str_len,edi add edi,eax sub ecx,eax mov eax,dword[ebx] stdcall convert_int_to_str,ecx - @@: .no_param: inc esi cmp byte[esi],0 diff --git a/programs/develop/libraries/TinyGL/asm_fork/vertex.asm b/programs/develop/libraries/TinyGL/asm_fork/vertex.asm index 02ff3f3b4..cbd4ae2cc 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/vertex.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/vertex.asm @@ -134,7 +134,7 @@ endl cmp dword[edx+GLContext.lighting_enabled],0 ;if(context.lighting_enabled) jne .if_0 - cmp dword[eax+GLContext.texture_2d_enabled],0 + cmp dword[edx+GLContext.texture_2d_enabled],0 jne .if_0 jmp @f align 4 diff --git a/programs/develop/libraries/TinyGL/asm_fork/zline.asm b/programs/develop/libraries/TinyGL/asm_fork/zline.asm index 264ec53d1..05538dc7e 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/zline.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/zline.asm @@ -17,7 +17,7 @@ proc ZB_plot uses eax ebx ecx edx edi, zb:dword, p:dword mov edi,[ebx+ZBufferPoint.z] shr edi,ZB_POINT_Z_FRAC_BITS cmp di,word[ecx] - jl .end_f + jb .end_f if TGL_FEATURE_RENDER_BITS eq 24 mov eax,[ebx+ZBufferPoint.r] mov byte[edx],ah diff --git a/programs/develop/libraries/TinyGL/asm_fork/zline.inc b/programs/develop/libraries/TinyGL/asm_fork/zline.inc index 3bf0fb51d..b3232d350 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/zline.inc +++ b/programs/develop/libraries/TinyGL/asm_fork/zline.inc @@ -101,7 +101,7 @@ local .end_0 mov [zz],eax mov ebx,[pz] cmp ax,word[ebx] - jl .end_0 + jb .end_0 RGBPIXEL mov eax,dword[zz] mov ebx,[pz] diff --git a/programs/develop/libraries/TinyGL/asm_fork/zline_r.inc b/programs/develop/libraries/TinyGL/asm_fork/zline_r.inc index 62c881cd1..d41717539 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/zline_r.inc +++ b/programs/develop/libraries/TinyGL/asm_fork/zline_r.inc @@ -102,7 +102,7 @@ local .end_0 mov [zz],eax mov ebx,[pz] cmp ax,word[ebx] - jl .end_0 + jb .end_0 RGBPIXEL mov eax,dword[zz] mov ebx,[pz] diff --git a/programs/develop/libraries/TinyGL/asm_fork/ztriangle.asm b/programs/develop/libraries/TinyGL/asm_fork/ztriangle.asm index 83a562d30..ce8b43c05 100644 --- a/programs/develop/libraries/TinyGL/asm_fork/ztriangle.asm +++ b/programs/develop/libraries/TinyGL/asm_fork/ztriangle.asm @@ -58,7 +58,7 @@ end if mov eax,[z] shr eax,ZB_POINT_Z_FRAC_BITS cmp ax,word[esi+2*_a] ;if (zz >= pz[_a]) - jl .end_0 + jb .end_0 ;edi = pp mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение if TGL_FEATURE_RENDER_BITS eq 24 @@ -103,7 +103,7 @@ local .end_0 mov eax,[z] shr eax,ZB_POINT_Z_FRAC_BITS cmp ax,word[esi+2*_a] ;if (zz >= pz[_a]) - jl .end_0 + jb .end_0 ;edi = pp mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение if TGL_FEATURE_RENDER_BITS eq 24 @@ -171,7 +171,7 @@ local .end_0 mov eax,[z] shr eax,ZB_POINT_Z_FRAC_BITS cmp ax,word[esi+2*_a] ;if (zz >= pz[_a]) - jl .end_0 + jb .end_0 ;edi = pp mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение if TGL_FEATURE_RENDER_BITS eq 24 @@ -251,7 +251,7 @@ local .end_0 mov eax,[z] shr eax,ZB_POINT_Z_FRAC_BITS cmp ax,word[esi+2*_a] ;if (zz >= pz[_a]) - jl .end_0 + jb .end_0 ;edi = pp mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение if TGL_FEATURE_RENDER_BITS eq 24 diff --git a/programs/media/voxel_editor/utilites/vox_tgl.asm b/programs/media/voxel_editor/utilites/vox_tgl.asm index e5608bdad..b9d4785e9 100644 --- a/programs/media/voxel_editor/utilites/vox_tgl.asm +++ b/programs/media/voxel_editor/utilites/vox_tgl.asm @@ -16,9 +16,9 @@ include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US. @use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load if lang eq ru_RU -caption db 'ᬮ ᥫ 11.11.20',0 ; +caption db 'ᬮ ᥫ 14.04.25',0 ; else ; Default to en_US -caption db 'Voxel viewer 11.11.20',0 +caption db 'Voxel viewer 14.04.25',0 end if 3d_wnd_l equ 5 ; tinygl ᫥ @@ -750,12 +750,8 @@ draw_3d: je @f call SetLight @@: - stdcall [glTranslatef], 0.0,0.0,0.5 ;न z । 0.0 1.0, ࠦ 㤥 ᥪ - ;ᥫ ꥪ न -0.5 0.5, ⮬ +0.5 - ; ᥪ , 뫥 । ᪮⥩ 祭 - ; ᨨ opengl Win न -1.0 1.0 ⮬ ⠬ ⮣ 㦭 stdcall [glScalef], [scale], [scale], [scale] ;㢥稢 ᥫ ꥪ, - 祭 쪨 - stdcall [glScalef], 1.0, 1.0, 0.25 ;- ꥪ 뫠 ࠭ 祭 + 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