Subversion Repositories Kolibri OS

Rev

Rev 5159 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5159 Rev 8069
Line 22... Line 22...
22
endl
22
endl
23
pushad
23
pushad
Line 24... Line 24...
24
 
24
 
25
	mov eax,[p1]
25
	mov eax,[p1]
26
	mov ebx,[p2]
26
	mov ebx,[p2]
27
	mov ecx,[ebx+offs_zbup_y]
27
	mov ecx,[ebx+ZBufferPoint.y]
28
	cmp [eax+offs_zbup_y], ecx ;if (p1.y > p2.y)
28
	cmp [eax+ZBufferPoint.y], ecx ;if (p1.y > p2.y)
29
	jg @f
29
	jg @f
30
	jl .end_0 ;if (p1.y != p2.y)
30
	jl .end_0 ;if (p1.y != p2.y)
31
	mov ecx,[ebx+offs_zbup_x]
31
	mov ecx,[ebx+ZBufferPoint.x]
32
	cmp [eax+offs_zbup_x], ecx ;if (p1.x > p2.x)
32
	cmp [eax+ZBufferPoint.x], ecx ;if (p1.x > p2.x)
33
	jle .end_0 ;if (p1.x <= p2.x)
33
	jle .end_0 ;if (p1.x <= p2.x)
34
	@@: ;if (p1.y > p2.y || (p1.y == p2.y && p1.x > p2.x))
34
	@@: ;if (p1.y > p2.y || (p1.y == p2.y && p1.x > p2.x))
35
		mov [p1],ebx
35
		mov [p1],ebx
36
		mov [p2],eax
36
		mov [p2],eax
Line 37... Line 37...
37
	.end_0:
37
	.end_0:
38
 
38
 
39
	mov eax,[zb]
39
	mov eax,[zb]
40
	mov edx,[eax+offs_zbuf_xsize]
40
	mov edx,[eax+ZBuffer.xsize]
41
	mov [sx],edx
41
	mov [sx],edx
42
	mov ecx,[p1]
42
	mov ecx,[p1]
43
	mov edi,[eax+offs_zbuf_linesize]
43
	mov edi,[eax+ZBuffer.linesize]
44
	imul edi,[ecx+offs_zbup_y]
44
	imul edi,[ecx+ZBufferPoint.y]
45
	mov edx,[ecx+offs_zbup_x]
45
	mov edx,[ecx+ZBufferPoint.x]
46
	imul edx,PSZB
46
	imul edx,PSZB
47
	add edi,edx
47
	add edi,edx
48
	add edi,[eax+offs_zbuf_pbuf] ;edi = (zb.pbuf + zb.linesize*p1.y + p1.x*PSZB)
48
	add edi,[eax+ZBuffer.pbuf] ;edi = (zb.pbuf + zb.linesize*p1.y + p1.x*PSZB)
49
if INTERP_Z eq 1
49
if INTERP_Z eq 1
50
	mov edx,[ecx+offs_zbup_y]
50
	mov edx,[ecx+ZBufferPoint.y]
51
	imul edx,[sx]
51
	imul edx,[sx]
52
	add edx,[ecx+offs_zbup_x]
52
	add edx,[ecx+ZBufferPoint.x]
53
	shl edx,1
53
	shl edx,1
54
	add edx,[eax+offs_zbuf_zbuf]
54
	add edx,[eax+ZBuffer.zbuf]
55
	mov [pz],edx ;pz = zb.zbuf + (p1.y*sx + p1.x)
55
	mov [pz],edx ;pz = zb.zbuf + (p1.y*sx + p1.x)
56
	mov edx,[ecx+offs_zbup_z]
56
	mov edx,[ecx+ZBufferPoint.z]
Line 57... Line 57...
57
	mov [z],edx ;z = p1.z
57
	mov [z],edx ;z = p1.z
58
end if
58
end if
59
 
59
 
60
	mov ebx,[p2]
60
	mov ebx,[p2]
61
	mov eax,[ebx+offs_zbup_x]
61
	mov eax,[ebx+ZBufferPoint.x]
62
	sub eax,[ecx+offs_zbup_x]
62
	sub eax,[ecx+ZBufferPoint.x]
63
	mov [d_x],eax ;d_x = p2.x - p1.x
63
	mov [d_x],eax ;d_x = p2.x - p1.x
64
	mov eax,[ebx+offs_zbup_y]
64
	mov eax,[ebx+ZBufferPoint.y]
65
	sub eax,[ecx+offs_zbup_y]
65
	sub eax,[ecx+ZBufferPoint.y]
66
	mov [d_y],eax ;d_y = p2.y - p1.y
66
	mov [d_y],eax ;d_y = p2.y - p1.y
67
if TGL_FEATURE_RENDER_BITS eq 24
67
if TGL_FEATURE_RENDER_BITS eq 24
68
	; for 24 bits, we store the colors in different variables
68
	; for 24 bits, we store the colors in different variables
69
	mov eax,[ebx+offs_zbup_r]
69
	mov eax,[ebx+ZBufferPoint.r]
70
	shr eax,8
70
	shr eax,8
71
	mov [r],eax ;r = p2.r >> 8
71
	mov [r],eax ;r = p2.r >> 8
72
	mov eax,[ebx+offs_zbup_g]
72
	mov eax,[ebx+ZBufferPoint.g]
73
	shr eax,8
73
	shr eax,8
74
	mov [g],eax ;g = p2.g >> 8
74
	mov [g],eax ;g = p2.g >> 8
75
	mov eax,[ebx+offs_zbup_b]
75
	mov eax,[ebx+ZBufferPoint.b]
Line 76... Line 76...
76
	shr eax,8
76
	shr eax,8
Line 121... Line 121...
121
	mov eax,d_x
121
	mov eax,d_x
122
	mov [n],eax
122
	mov [n],eax
123
if INTERP_Z eq 1
123
if INTERP_Z eq 1
124
	mov ebx,[p1]
124
	mov ebx,[p1]
125
	mov eax,[p2]
125
	mov eax,[p2]
126
	mov eax,[eax+offs_zbup_z]
126
	mov eax,[eax+ZBufferPoint.z]
127
	cmp eax,[ebx+offs_zbup_z]
127
	cmp eax,[ebx+ZBufferPoint.z]
128
	jg .mz_0
128
	jg .mz_0
129
	je .mz_1
129
	je .mz_1
130
		;if(p2.z
130
		;if(p2.z
131
		sub eax,[ebx+offs_zbup_z]
131
		sub eax,[ebx+ZBufferPoint.z]
132
		neg eax
132
		neg eax
133
		inc eax
133
		inc eax
134
		xor edx,edx
134
		xor edx,edx
135
		div dword[n]
135
		div dword[n]
136
		neg eax
136
		neg eax
137
		inc eax
137
		inc eax
138
		jmp .mz_2
138
		jmp .mz_2
139
	.mz_0:
139
	.mz_0:
140
	sub eax,[ebx+offs_zbup_z]
140
	sub eax,[ebx+ZBufferPoint.z]
141
	xor edx,edx
141
	xor edx,edx
142
	div dword[n]
142
	div dword[n]
143
	jmp .mz_2
143
	jmp .mz_2
144
	.mz_1:
144
	.mz_1:
145
		xor eax,eax
145
		xor eax,eax