Rev 9237 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9237 | Rev 9512 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | .y2 equ word[ebp-12] |
24 | .y2 equ word[ebp-12] |
25 | .x3 equ word[ebp-14] |
25 | .x3 equ word[ebp-14] |
26 | .y3 equ word[ebp-16] |
26 | .y3 equ word[ebp-16] |
Line 27... | Line 27... | ||
27 | 27 | ||
28 | .dx12 equ dword[ebp-20] |
28 | .dx12 equ dword[ebp-20] |
29 | ;.dz12 equ dword[ebp-24] |
- | |
30 | .dx13 equ dword[ebp-24] |
29 | .dz12 equ dword[ebp-24] |
31 | .dz13 equ dword[ebp-28] |
- | |
32 | .dz12 equ dword[ebp-32] |
30 | .dx13 equ dword[ebp-28] |
33 | ;.dz13 equ dword[ebp-32] |
31 | .dz13 equ dword[ebp-32] |
34 | .dx23 equ dword[ebp-36] |
- | |
35 | .dz13M equ [ebp-40] |
32 | .dx23 equ dword[ebp-36] |
36 | .dz23 equ dword[ebp-44] |
33 | .dz23 equ dword[ebp-40] |
37 | .zz1 equ dword[ebp-48] |
34 | .zz1 equ dword[ebp-44] |
38 | .zz2 equ dword[ebp-52] |
- | |
39 | .zz2M equ qword[ebp-52] |
- | |
40 | .dz12M equ qword[ebp-32] |
- | |
41 | .dz23M equ qword[ebp-44] |
- | |
42 | ;if Ext>=MMX |
- | |
43 | ; emms |
35 | .zz2 equ dword[ebp-48] |
44 | ;end if |
36 | |
Line 45... | Line 37... | ||
45 | mov ebp,esp |
37 | mov ebp,esp |
46 | 38 | ||
47 | push edx ; store edx in variable .col |
39 | push edx ; store edx in variable .col |
Line 85... | Line 77... | ||
85 | ; jle @f |
77 | ; jle @f |
86 | ; cmp cx,SIZE_X |
78 | ; cmp cx,SIZE_X |
87 | ; jle @f |
79 | ; jle @f |
88 | ; jmp .ft_loop2_end |
80 | ; jmp .ft_loop2_end |
89 | ;@@: |
81 | ;@@: |
90 | sub esp,52-12 |
82 | ; sub esp,52-12 |
Line 91... | Line 83... | ||
91 | 83 | ||
92 | mov bx,.y2 ; calc delta 12 |
84 | mov bx,.y2 ; calc delta 12 |
93 | sub bx,.y1 |
85 | sub bx,.y1 |
94 | jnz .ft_dx12_make |
86 | jnz .ft_dx12_make |
95 | mov .dx12,0 |
87 | push dword 0 |
96 | mov .dz12,0 |
88 | push dword 0 |
97 | jmp .ft_dx12_done |
89 | jmp .ft_dx12_done |
98 | .ft_dx12_make: |
90 | .ft_dx12_make: |
99 | mov ax,.x2 |
91 | mov ax,.x2 |
100 | sub ax,.x1 |
92 | sub ax,.x1 |
101 | cwde |
93 | cwde |
102 | movsx ebx,bx |
94 | movsx ebx,bx |
103 | shl eax,ROUND |
95 | shl eax,ROUND |
104 | cdq |
96 | cdq |
105 | idiv ebx |
97 | idiv ebx |
Line 106... | Line 98... | ||
106 | mov .dx12,eax |
98 | push eax |
107 | 99 | ||
108 | mov ax,.z2 |
100 | mov ax,.z2 |
109 | sub ax,.z1 |
101 | sub ax,.z1 |
110 | cwde |
102 | cwde |
111 | shl eax,CATMULL_SHIFT |
103 | shl eax,CATMULL_SHIFT |
112 | cdq |
104 | cdq |
113 | idiv ebx |
105 | idiv ebx |
114 | mov .dz12,eax |
106 | push eax |
115 | .ft_dx12_done: |
107 | .ft_dx12_done: |
116 | mov bx,.y3 ; calc delta 13 |
108 | mov bx,.y3 ; calc delta 13 |
117 | sub bx,.y1 |
- | |
118 | jnz .ft_dx13_make |
109 | sub bx,.y1 |
119 | mov .dx13,0 |
110 | jnz .ft_dx13_make |
120 | mov .dz13,0 |
111 | push dword 0 |
121 | mov dword .dz13M,0 |
112 | push dword 0 |
122 | jmp .ft_dx13_done |
113 | jmp .ft_dx13_done |
123 | .ft_dx13_make: |
114 | .ft_dx13_make: |
124 | mov ax,.x3 |
115 | mov ax,.x3 |
125 | sub ax,.x1 |
116 | sub ax,.x1 |
126 | cwde |
117 | cwde |
127 | movsx ebx,bx |
118 | movsx ebx,bx |
128 | shl eax,ROUND |
119 | shl eax,ROUND |
129 | cdq |
120 | cdq |
Line 130... | Line 121... | ||
130 | idiv ebx |
121 | idiv ebx |
131 | mov .dx13,eax |
122 | push eax |
132 | 123 | ||
133 | mov ax,.z3 |
124 | mov ax,.z3 |
134 | sub ax,.z1 |
125 | sub ax,.z1 |
135 | cwde |
126 | cwde |
136 | shl eax,CATMULL_SHIFT |
- | |
137 | cdq |
127 | shl eax,CATMULL_SHIFT |
- | 128 | cdq |
|
138 | idiv ebx |
129 | idiv ebx |
- | 130 | push eax |
|
139 | mov .dz13,eax |
131 | |
140 | mov dword .dz13M,eax |
132 | .ft_dx13_done: |
141 | .ft_dx13_done: |
133 | ; sub esp,48 |
- | 134 | mov bx,.y3 ; calc delta 23 |
|
- | 135 | sub bx,.y2 |
|
142 | mov bx,.y3 ; calc delta 23 |
136 | jnz .gt_dx23_make |
143 | sub bx,.y2 |
137 | push dword 0 |
144 | jnz .gt_dx23_make |
138 | push dword 0 |
145 | mov .dx23,0 |
139 | ; mov .dx23,0 |
146 | mov .dz23,0 |
140 | ; mov .dz23,0 |
147 | jmp .gt_dx23_done |
141 | jmp .gt_dx23_done |
148 | .gt_dx23_make: |
142 | .gt_dx23_make: |
149 | mov ax,.x3 |
143 | mov ax,.x3 |
150 | sub ax,.x2 |
144 | sub ax,.x2 |
151 | cwde |
145 | cwde |
152 | movsx ebx,bx |
146 | movsx ebx,bx |
153 | shl eax,ROUND |
147 | shl eax,ROUND |
Line 154... | Line 148... | ||
154 | cdq |
148 | cdq |
155 | idiv ebx |
149 | idiv ebx |
156 | mov .dx23,eax |
150 | push eax |
157 | 151 | ||
158 | mov ax,.z3 |
152 | mov ax,.z3 |
159 | sub ax,.z2 |
153 | sub ax,.z2 |
- | 154 | cwde |
|
160 | cwde |
155 | shl eax,CATMULL_SHIFT |
161 | shl eax,CATMULL_SHIFT |
156 | cdq |
Line 162... | Line 157... | ||
162 | cdq |
157 | idiv ebx |
163 | idiv ebx |
158 | push eax |
164 | mov .dz23,eax |
159 | ; mov .dz23,eax |
165 | .gt_dx23_done: |
160 | .gt_dx23_done: |
- | 161 | ||
166 | 162 | movsx edx,.z1 |
|
167 | movsx edx,.z1 |
163 | shl edx,CATMULL_SHIFT |
168 | shl edx,CATMULL_SHIFT |
164 | push edx |
169 | mov .zz1,edx |
- | |
170 | mov .zz2,edx |
- | |
171 | movsx eax,.x1 |
- | |
172 | shl eax,ROUND ; eax - x1 |
165 | push edx |
173 | mov ebx,eax ; ebx - x2 |
166 | |
174 | ;if Ext>=MMX |
167 | movsx eax,.x1 |
175 | ; movq mm0,.zz2M |
168 | shl eax,ROUND ; eax - x1 |
Line 185... | Line 178... | ||
185 | push cx ; y |
178 | push cx ; y |
186 | sar ebx,ROUND |
179 | sar ebx,ROUND |
187 | push bx ; x2 |
180 | push bx ; x2 |
188 | sar eax,ROUND |
181 | sar eax,ROUND |
189 | push ax ; x1 |
182 | push ax ; x1 |
190 | ;if Ext>=MMX |
- | |
191 | ; sub esp,8 |
- | |
192 | ; movq [esp],mm0 |
- | |
193 | ;else |
- | |
194 | push .zz2 ; z2 shl CATMULL_SHIFT |
183 | push .zz2 ; z2 shl CATMULL_SHIFT |
195 | push .zz1 ; z1 shl CATMULL_SHIFT |
184 | push .zz1 ; z1 shl CATMULL_SHIFT |
196 | ;end if |
185 | |
197 | call flat_line_z |
186 | call flat_line_z |
Line 198... | Line 187... | ||
198 | 187 | ||
Line 199... | Line 188... | ||
199 | popad |
188 | popad |
200 | 189 | ||
201 | add eax,.dx13 |
- | |
202 | add ebx,.dx12 |
- | |
203 | ;if Ext>=MMX |
- | |
Line 204... | Line 190... | ||
204 | ; paddd mm0,.dz12M |
190 | add eax,.dx13 |
205 | ;else |
191 | add ebx,.dx12 |
206 | 192 | ||
207 | mov edx,.dz13 |
193 | mov edx,.dz13 |
Line 217... | Line 203... | ||
217 | movsx edx,.z2 |
203 | movsx edx,.z2 |
218 | shl edx,CATMULL_SHIFT |
204 | shl edx,CATMULL_SHIFT |
219 | mov .zz2,edx |
205 | mov .zz2,edx |
220 | movsx ebx,.x2 |
206 | movsx ebx,.x2 |
221 | shl ebx,ROUND |
207 | shl ebx,ROUND |
222 | ;if Ext>=MMX |
- | |
223 | ; movq mm0,.zz2M |
- | |
224 | ;; push .dz13 ; exchange |
- | |
225 | ;; pop .dz12 |
- | |
226 | ;; push .dz23 ; exchange |
- | |
227 | ;; pop .dz13 |
- | |
228 | ;end if |
208 | |
229 | mov cx,.y2 |
209 | mov cx,.y2 |
230 | cmp cx,.y3 |
210 | cmp cx,.y3 |
231 | jge .ft_loop2_end |
211 | jge .ft_loop2_end |
232 | .ft_loop2: |
212 | .ft_loop2: |
233 | pushad |
213 | pushad |
Line 236... | Line 216... | ||
236 | push cx |
216 | push cx |
237 | sar ebx,ROUND |
217 | sar ebx,ROUND |
238 | push bx |
218 | push bx |
239 | sar eax,ROUND |
219 | sar eax,ROUND |
240 | push ax ; x1 |
220 | push ax ; x1 |
241 | ;if Ext>=MMX |
- | |
242 | ; sub esp,8 |
- | |
243 | ; movq [esp],mm0 |
- | |
244 | ;else |
221 | |
245 | push .zz2 ; z2 shl CATMULL_SHIFT |
222 | push .zz2 ; z2 shl CATMULL_SHIFT |
246 | push .zz1 ; z1 shl CATMULL_SHIFT |
223 | push .zz1 ; z1 shl CATMULL_SHIFT |
247 | ;end if |
224 | |
248 | call flat_line_z |
225 | call flat_line_z |
Line 249... | Line 226... | ||
249 | 226 | ||
Line 250... | Line 227... | ||
250 | popad |
227 | popad |
251 | 228 | ||
252 | add eax,.dx13 |
- | |
253 | add ebx,.dx23 |
- | |
254 | ;if Ext>=MMX |
229 | add eax,.dx13 |
255 | ; paddd mm0,.dz23M |
230 | add ebx,.dx23 |
256 | ;else |
231 | |
257 | mov edx,.dz13 |
232 | mov edx,.dz13 |
258 | add .zz1,edx |
233 | add .zz1,edx |
Line 259... | Line -... | ||
259 | mov edx,.dz23 |
- | |
260 | add .zz2,edx |
- | |
261 | - | ||
262 | ; mov edx,.dz13 |
- | |
263 | ; add .zz1,edx |
- | |
264 | ; mov edx,.dz12 |
234 | mov edx,.dz23 |
265 | ; add .zz2,edx |
235 | add .zz2,edx |
266 | ;end if |
236 | |
267 | inc cx |
237 | inc cx |
Line 372... | Line 342... | ||
372 | .ddraw: |
342 | .ddraw: |
373 | cmp ebx,dword[esi] |
343 | cmp ebx,dword[esi] |
374 | ; cmovl [edi],eax |
344 | ; cmovl [edi],eax |
375 | ; cmovl [esi],ebx |
345 | ; cmovl [esi],ebx |
376 | jge @f |
346 | jge @f |
- | 347 | mov [edi],eax |
|
377 | stosd |
348 | mov [esi],ebx |
- | 349 | ; stosd ; less branches |
|
378 | dec edi |
350 | ; dec edi |
379 | mov dword[esi],ebx |
351 | ; mov dword[esi],ebx |
380 | jmp .no_skip |
352 | ; jmp .no_skip |
381 | @@: |
353 | @@: |
382 | add edi,3 |
354 | add edi,3 |
383 | .no_skip: |
355 | ; .no_skip: |
384 | add esi,4 |
356 | add esi,4 |
385 | add ebx,edx |
357 | add ebx,edx |
386 | loop .ddraw |
358 | loop .ddraw |
Line 387... | Line 359... | ||
387 | 359 |