Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8061 → Rev 8062

/programs/develop/libraries/TinyGL/asm_fork/matrix.asm
96,8 → 96,7
proc glopLoadMatrix uses eax edi esi, context:dword, p:dword
mov eax,[context]
mov edi,[eax+GLContext.matrix_mode]
shl edi,2
add edi,eax
lea edi,[eax+4*edi]
mov edi,dword[edi+GLContext.matrix_stack_ptr]
 
mov esi,[p]
112,8 → 111,7
proc glopLoadIdentity uses eax ebx, context:dword, p:dword
mov eax,[context]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
lea ebx,[eax+4*ebx]
 
stdcall gl_M4_Id,[ebx+GLContext.matrix_stack_ptr]
gl_matrix_update eax,ebx
127,14 → 125,12
endl
mov esi,[p]
add esi,4
mov edi,ebp
sub edi,sizeof.M4
lea edi,[ebp-sizeof.M4]
stdcall gl_M4_Transpose,edi,esi ;транспонируем входную матрицу в локальную матрицу m
 
mov eax,[context]
mov esi,[eax+GLContext.matrix_mode]
shl esi,2
add esi,eax
lea esi,[eax+4*esi]
stdcall gl_M4_MulLeft,dword[esi+GLContext.matrix_stack_ptr],edi
 
gl_matrix_update eax,edi
149,9 → 145,7
; assert( (c->matrix_stack_ptr[ebx] - c->matrix_stack[ebx] + 1 )
; < c->matrix_stack_depth_max[ebx] );
 
shl ebx,2
add ebx,eax
add ebx,GLContext.matrix_stack_ptr
lea ebx,[eax+4*ebx+GLContext.matrix_stack_ptr]
add dword[ebx],sizeof.M4
mov ebx,[ebx] ;ebx = ++context.matrix_stack_ptr[context.matrix_mode]
 
171,8 → 165,7
 
; assert( c->matrix_stack_ptr[n] > c->matrix_stack[n] );
 
shl ebx,2
add ebx,eax
lea ebx,[eax+4*ebx]
sub dword[ebx+GLContext.matrix_stack_ptr],sizeof.M4
 
gl_matrix_update eax,ebx
193,8 → 186,7
 
mov eax,[context]
mov ebx,[p]
mov ecx,ebp
sub ecx,sizeof.M4 ;ecx=&m
lea ecx,[ebp-sizeof.M4] ;ecx=&m
finit
fldpi
fmul dword[ebx+4]
425,8 → 417,7
 
mov eax,[context]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
lea ebx,[eax+4*ebx]
stdcall gl_M4_MulLeft,dword[ebx+GLContext.matrix_stack_ptr],ecx
gl_matrix_update eax,ebx
jmp .end_f
445,8 → 436,7
 
mov eax,[context]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
lea ebx,[eax+4*ebx]
mov ebx,[ebx+GLContext.matrix_stack_ptr] ;ebx = &m[0]
 
fld dword[ecx+ 4] ;x
482,8 → 472,7
 
mov eax,[context]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
lea ebx,[eax+4*ebx]
mov ebx,[ebx+GLContext.matrix_stack_ptr] ;ebx = &m[0]
 
fld dword[ecx+ 4] ;x
607,4 → 596,94
ret
endp
 
align 4
proc glopOrtho uses eax ebx ecx, context:dword, p:dword
locals
x dd ?
y dd ?
A dd ?
B dd ?
C dd ?
D dd ?
m M4
endl
mov eax,[context]
mov ebx,[p]
fld dword[ebx+8]
fsub dword[ebx+4] ;st0 = (right-left)
fld1
fadd st0,st0 ;st0 = 2.0
fdiv st0,st1
fstp dword[x] ;x = 2.0 / (right-left)
fld dword[ebx+16]
fsub dword[ebx+12] ;st0 = (top-bottom)
fld1
fadd st0,st0 ;st0 = 2.0
fdiv st0,st1
fstp dword[y] ;y = 2.0 / (top-bottom)
fld dword[ebx+8]
fadd dword[ebx+4]
fchs ;st0 = -(right+left)
fdiv st0,st2 ;st2 = (right-left)
fstp dword[A] ;A = -(right+left) / (right-left)
fld dword[ebx+16]
fadd dword[ebx+12]
fchs ;st0 = -(top+bottom)
fdiv st0,st1 ;st1 = (top-bottom)
fstp dword[B] ;B = -(top+bottom) / (top-bottom)
fld dword[ebx+24]
fsub dword[ebx+20] ;st0 = (farp-near)
fld1
fadd st0,st0
fchs ;st0 = -2.0
fdiv st0,st1
fstp dword[C] ;C = -2.0 / (farp-near)
fld dword[ebx+24]
fadd dword[ebx+20] ;st0 = farp+near
fchs ;st0 = -(farp+near)
fdiv st0,st1
fstp dword[D] ;D = -(farp*near) / (farp-near)
ffree st0
fincstp
ffree st0
fincstp
ffree st0
fincstp
 
lea ecx,[ebp-sizeof.M4]
 
mov ebx,[x]
mov dword[ecx],ebx
mov dword[ecx+4],0.0
mov dword[ecx+8],0.0
mov ebx,[A]
mov dword[ecx+12],ebx
mov dword[ecx+16],0.0
mov ebx,[y]
mov dword[ecx+20],ebx
mov dword[ecx+24],0.0
mov ebx,[B]
mov dword[ecx+28],ebx
mov dword[ecx+32],0.0
mov dword[ecx+36],0.0
mov ebx,[C]
mov dword[ecx+40],ebx
mov ebx,[D]
mov dword[ecx+44],ebx
mov dword[ecx+48],0.0
mov dword[ecx+52],0.0
mov dword[ecx+56],0.0
mov dword[ecx+60],1.0
 
mov ebx,[eax+GLContext.matrix_mode]
lea ebx,[eax+4*ebx]
stdcall gl_M4_MulLeft,dword[ebx+GLContext.matrix_stack_ptr],ecx
 
if DEBUG ;glopOrtho
stdcall gl_print_matrix,ecx,4
stdcall gl_print_matrix,dword[ebx+GLContext.matrix_stack_ptr],4
end if
gl_matrix_update eax,ebx
ret
endp