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 |