Rev 1776 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1776 | Rev 1819 | ||
---|---|---|---|
Line 86... | Line 86... | ||
86 | .dey23 equ [ebp-(52+4*14)] |
86 | .dey23 equ [ebp-(52+4*14)] |
87 | .dtx23 equ dword[ebp-(52+4*15)] |
87 | .dtx23 equ dword[ebp-(52+4*15)] |
88 | .dty23 equ [ebp-(52+4*16)] |
88 | .dty23 equ [ebp-(52+4*16)] |
89 | 89 | ||
Line -... | Line 90... | ||
- | 90 | if Ext < SSE |
|
- | 91 | ||
90 | .cx1 equ dword[ebp-(52+4*17)] ; current variables |
92 | .cx1 equ dword[ebp-(52+4*17)] ; current variables |
91 | .cz1 equ [ebp-(52+4*18)] |
93 | .cz1 equ [ebp-(52+4*18)] |
92 | .cx2 equ dword[ebp-(52+4*19)] |
94 | .cx2 equ dword[ebp-(52+4*19)] |
93 | .cz2 equ [ebp-(52+4*20)] |
95 | .cz2 equ [ebp-(52+4*20)] |
94 | .cbx1 equ dword[ebp-(52+4*21)] |
96 | .cbx1 equ dword[ebp-(52+4*21)] |
Line 104... | Line 106... | ||
104 | .cty1 equ [ebp-(52+4*30)] |
106 | .cty1 equ [ebp-(52+4*30)] |
105 | .ctx2 equ dword[ebp-(52+4*31)] |
107 | .ctx2 equ dword[ebp-(52+4*31)] |
106 | .cty2 equ [ebp-(52+4*32)] |
108 | .cty2 equ [ebp-(52+4*32)] |
107 | 109 | ||
Line -... | Line 110... | ||
- | 110 | else |
|
- | 111 | ||
- | 112 | .cx1 equ dword[ebp-(52+4*17)] ; current variables |
|
- | 113 | .cz1 equ [ebp-(52+4*18)] |
|
- | 114 | .cbx1 equ dword[ebp-(52+4*19)] |
|
- | 115 | .cby1 equ [ebp-(52+4*20)] |
|
- | 116 | .cex1 equ dword[ebp-(52+4*21)] |
|
- | 117 | .cey1 equ [ebp-(52+4*22)] |
|
- | 118 | .ctx1 equ dword[ebp-(52+4*23)] |
|
- | 119 | .cty1 equ [ebp-(52+4*24)] |
|
- | 120 | ||
- | 121 | .cx2 equ dword[ebp-(52+4*25)] |
|
- | 122 | .cz2 equ [ebp-(52+4*26)] |
|
- | 123 | .cbx2 equ dword[ebp-(52+4*27)] |
|
- | 124 | .cby2 equ [ebp-(52+4*28)] |
|
- | 125 | .cex2 equ dword[ebp-(52+4*29)] |
|
- | 126 | .cey2 equ [ebp-(52+4*30)] |
|
- | 127 | .ctx2 equ dword[ebp-(52+4*31)] |
|
- | 128 | .cty2 equ [ebp-(52+4*32)] |
|
- | 129 | ||
- | 130 | end if |
|
108 | cld |
131 | cld |
109 | mov ebp,esp |
132 | mov ebp,esp |
110 | push edx ; store bump map |
133 | push edx ; store bump map |
111 | push esi ; store e. map |
134 | push esi ; store e. map |
112 | ; sub esp,120 |
135 | ; sub esp,120 |
Line 178... | Line 201... | ||
178 | jmp .bt_dx12_done |
201 | jmp .bt_dx12_done |
179 | .bt_dx12_make: |
202 | .bt_dx12_make: |
180 | movsx ebx,bx |
203 | movsx ebx,bx |
181 | 204 | ||
Line 182... | Line -... | ||
182 | mov ax,.x2 |
- | |
183 | sub ax,.x1 |
- | |
184 | cwde |
- | |
185 | shl eax,ROUND |
- | |
186 | cdq |
- | |
187 | idiv ebx |
- | |
188 | ; mov .dx12,eax |
- | |
189 | push eax |
- | |
Line 190... | Line 205... | ||
190 | 205 | ||
191 | if Ext>=SSE |
- | |
192 | 206 | if Ext>=SSE |
|
193 | sub esp,28 |
207 | sub esp,32 |
194 | ; mov eax,256 |
208 | ; mov eax,256 |
195 | cvtsi2ss xmm4,[i255d] |
209 | cvtsi2ss xmm4,[i255d] |
196 | cvtsi2ss xmm3,ebx ;rcps |
210 | cvtsi2ss xmm3,ebx ;rcps |
197 | divss xmm3,xmm4 |
211 | divss xmm3,xmm4 |
Line 218... | Line 232... | ||
218 | divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
232 | divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
Line 219... | Line 233... | ||
219 | 233 | ||
220 | shufps xmm1,xmm1,10110001b |
234 | shufps xmm1,xmm1,10110001b |
- | 235 | ;xmm1--> | dbx | dby | dex | dey | |
|
221 | ;xmm1--> | dbx | dby | dex | dey | |
236 | ;1 movups .dey12,xmm1 |
222 | cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
237 | cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
223 | movhlps xmm1,xmm1 |
238 | movhlps xmm1,xmm1 |
224 | cvtps2pi mm1,xmm1 ;mm1,xmm1 |
239 | cvtps2pi mm1,xmm1 ;mm1,xmm1 |
225 | movq .dey12,mm0 |
240 | movq .dey12,mm0 |
Line 233... | Line 248... | ||
233 | ;/ pinsrw mm1,.x2,0 |
248 | ;/ pinsrw mm1,.x2,0 |
234 | mov ax,.z2 |
249 | mov ax,.z2 |
235 | sub ax,.z1 |
250 | sub ax,.z1 |
236 | cwde |
251 | cwde |
237 | ;/ movd mm1,eax |
252 | |
- | 253 | mov dx,.x2 |
|
- | 254 | sub dx,.x1 |
|
- | 255 | movsx edx,dx |
|
- | 256 | ||
- | 257 | ;/ movd mm1,eax |
|
238 | 258 | ||
Line 239... | Line 259... | ||
239 | ;/ punpcklwd mm0,mm4 |
259 | ;/ punpcklwd mm0,mm4 |
240 | ;/ punpcklwd mm1,mm4 |
260 | ;/ punpcklwd mm1,mm4 |
Line 254... | Line 274... | ||
254 | 274 | ||
Line 255... | Line 275... | ||
255 | ;/ cvtpi2ps xmm1,mm1 |
275 | ;/ cvtpi2ps xmm1,mm1 |
256 | cvtsi2ss xmm1,eax |
276 | cvtsi2ss xmm1,eax |
257 | movlhps xmm1,xmm1 |
277 | movlhps xmm1,xmm1 |
- | 278 | cvtsi2ss xmm1,edx |
|
- | 279 | ; movss xmm1,xmm4 |
|
- | 280 | shufps xmm1,xmm1,00101111b |
|
258 | cvtpi2ps xmm1,mm3 |
281 | cvtpi2ps xmm1,mm3 |
Line 259... | Line 282... | ||
259 | 282 | ||
Line 260... | Line 283... | ||
260 | divps xmm1,xmm3 ; xmm1--> | xxx | dz | dty | dtx | |
283 | divps xmm1,xmm3 ; xmm1--> | dx | dz | dty | dtx | |
261 | 284 | ||
- | 285 | shufps xmm1,xmm1,11100001b |
|
- | 286 | ; xmm1--> | dx | dz | dtx | dty | |
|
262 | shufps xmm1,xmm1,11100001b |
287 | ;1 movlps .dty12,xmm1 |
263 | ; xmm1--> | xxx | dz | dtx | dty | |
288 | ;1 movhps .dz12,xmm1 |
264 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
289 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
265 | movhlps xmm1,xmm1 |
290 | movhlps xmm1,xmm1 |
266 | cvtss2si eax,xmm1 ; eax --> 1 delta dword | dz | |
291 | cvtps2pi mm1,xmm1 |
- | 292 | movq .dty12,mm0 |
|
- | 293 | movq .dz12,mm1 |
|
- | 294 | ;temporaly conversion to keep upside down |
|
- | 295 | ; fninit |
|
- | 296 | ; fld .dx12 |
|
- | 297 | ; fistp .dx12 |
|
- | 298 | ; fld dword .dz12 |
|
- | 299 | ; fistp dword .dz12 |
|
- | 300 | ; fld .dbx12 |
|
- | 301 | ; fistp .dbx12 |
|
- | 302 | ; fld dword .dby12 |
|
- | 303 | ; fistp dword .dby12 |
|
- | 304 | ; fld .dex12 |
|
- | 305 | ; fistp .dex12 |
|
- | 306 | ; fld dword .dey12 |
|
- | 307 | ; fistp dword .dey12 |
|
- | 308 | ; fld .dtx12 |
|
- | 309 | ; fistp .dtx12 |
|
267 | movq .dty12,mm0 |
310 | ; fld dword .dty12 |
268 | mov .dz12,eax |
311 | ; fistp dword .dty12 |
269 | ;---- |
312 | ;---- |
270 | ; mov ax,.z2 |
313 | ; mov ax,.z2 |
271 | ; sub ax,.z1 |
314 | ; sub ax,.z1 |
Line 315... | Line 358... | ||
315 | ; cvtps2pi mm1,xmm1 ; mm1 --> 2 delta dwords | dx | dz | |
358 | ; cvtps2pi mm1,xmm1 ; mm1 --> 2 delta dwords | dx | dz | |
316 | ; movq .dty12,mm0 |
359 | ; movq .dty12,mm0 |
317 | ; movq .dz12,mm1 |
360 | ; movq .dz12,mm1 |
318 | else |
361 | else |
319 | mov ax,.z2 |
362 | mov ax,.x2 |
- | 363 | sub ax,.x1 |
|
- | 364 | cwde |
|
- | 365 | shl eax,ROUND |
|
- | 366 | cdq |
|
- | 367 | idiv ebx |
|
- | 368 | ; mov .dx12,eax |
|
- | 369 | push eax |
|
- | 370 | ||
- | 371 | mov ax,.z2 |
|
320 | sub ax,.z1 |
372 | sub ax,.z1 |
321 | cwde |
373 | cwde |
322 | shl eax,CATMULL_SHIFT |
374 | shl eax,CATMULL_SHIFT |
323 | cdq |
375 | cdq |
324 | idiv ebx |
376 | idiv ebx |
Line 359... | Line 411... | ||
359 | idiv ebx |
411 | idiv ebx |
360 | ; mov .dey12,eax |
412 | ; mov .dey12,eax |
361 | push eax |
413 | push eax |
362 | 414 | ||
Line 363... | Line -... | ||
363 | ;end if |
- | |
364 | - | ||
365 | mov ax,word[.t_x2] |
415 | mov ax,word[.t_x2] |
366 | sub ax,word[.t_x1] |
416 | sub ax,word[.t_x1] |
367 | cwde |
417 | cwde |
368 | shl eax,ROUND |
418 | shl eax,ROUND |
369 | cdq |
419 | cdq |
Line 391... | Line 441... | ||
391 | push edx ;dword 0 |
441 | push edx ;dword 0 |
392 | loop @b |
442 | loop @b |
393 | jmp .bt_dx13_done |
443 | jmp .bt_dx13_done |
394 | .bt_dx13_make: |
444 | .bt_dx13_make: |
395 | mov ax,.x3 |
445 | movsx ebx,bx |
396 | sub ax,.x1 |
- | |
397 | cwde |
- | |
398 | movsx ebx,bx |
- | |
399 | shl eax,ROUND |
446 | |
400 | cdq |
- | |
401 | idiv ebx |
- | |
402 | ; mov .dx13,eax |
- | |
403 | push eax |
- | |
404 | - | ||
Line 405... | Line 447... | ||
405 | if Ext>=SSE |
447 | if Ext>=SSE |
Line 406... | Line 448... | ||
406 | 448 | ||
407 | sub esp,28 |
449 | sub esp,32 |
408 | ; mov eax,255 |
450 | ; mov eax,256 |
409 | cvtsi2ss xmm4,[i255d] |
451 | cvtsi2ss xmm4,[i255d] |
410 | cvtsi2ss xmm3,ebx ;rcps |
452 | cvtsi2ss xmm3,ebx ;rcps |
411 | divss xmm3,xmm4 |
453 | divss xmm3,xmm4 |
Line 432... | Line 474... | ||
432 | divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
474 | divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
Line 433... | Line 475... | ||
433 | 475 | ||
434 | shufps xmm1,xmm1,10110001b |
476 | shufps xmm1,xmm1,10110001b |
- | 477 | ;xmm1--> | dbx | dby | dex | dey | |
|
- | 478 | ;1 movups .dey13,xmm1 |
|
435 | ;xmm1--> | dbx | dby | dex | dey | |
479 | |
436 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
480 | cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
437 | movhlps xmm1,xmm1 |
481 | movhlps xmm1,xmm1 |
438 | cvtps2pi mm1,xmm1 |
482 | cvtps2pi mm1,xmm1 ;mm1,xmm1 |
439 | movq .dey13,mm0 |
483 | movq .dey13,mm0 |
440 | movq .dby13,mm1 |
484 | movq .dby13,mm1 |
441 | ;---------- |
485 | |
442 | mov ax,.z3 |
486 | mov ax,.z3 |
443 | sub ax,.z1 |
487 | sub ax,.z1 |
Line -... | Line 488... | ||
- | 488 | cwde |
|
- | 489 | ||
- | 490 | mov dx,.x3 |
|
- | 491 | sub dx,.x1 |
|
444 | cwde |
492 | movsx edx,dx |
445 | 493 | ||
Line 446... | Line 494... | ||
446 | movd mm2,[.t_x1] |
494 | movd mm2,[.t_x1] |
447 | movd mm3,[.t_x3] |
495 | movd mm3,[.t_x3] |
448 | 496 | ||
Line 449... | Line 497... | ||
449 | punpcklwd mm2,mm4 |
497 | punpcklwd mm2,mm4 |
450 | punpcklwd mm3,mm4 |
498 | punpcklwd mm3,mm4 |
- | 499 | psubd mm3,mm2 |
|
- | 500 | ||
451 | psubd mm3,mm2 |
501 | cvtsi2ss xmm1,eax |
Line 452... | Line 502... | ||
452 | 502 | movlhps xmm1,xmm1 |
|
Line 453... | Line 503... | ||
453 | cvtsi2ss xmm1,eax |
503 | cvtsi2ss xmm1,edx |
454 | movlhps xmm1,xmm1 |
504 | shufps xmm1,xmm1,00101111b |
- | 505 | cvtpi2ps xmm1,mm3 |
|
- | 506 | ||
- | 507 | divps xmm1,xmm3 ; xmm1--> | dx | dz | dty | dtx | |
|
455 | cvtpi2ps xmm1,mm3 |
508 | |
456 | 509 | shufps xmm1,xmm1,11100001b |
|
457 | divps xmm1,xmm3 ; xmm1--> | xxx | dz | dty | dtx | |
510 | ; xmm1--> | dx | dz | dtx | dty | |
458 | 511 | ;1 movlps .dty13,xmm1 |
|
459 | shufps xmm1,xmm1,11100001b |
512 | ;1 movhps .dz13,xmm1 |
- | 513 | ||
- | 514 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
|
- | 515 | movhlps xmm1,xmm1 |
|
- | 516 | cvtps2pi mm1,xmm1 |
|
- | 517 | movq .dty13,mm0 |
|
- | 518 | movq .dz13,mm1 |
|
- | 519 | ||
- | 520 | ;temporaly conversion to keep upside down |
|
- | 521 | ; fninit |
|
- | 522 | ; fld .dx13 |
|
- | 523 | ; fistp .dx13 |
|
- | 524 | ; fld dword .dz13 |
|
- | 525 | ; fistp dword .dz13 |
|
- | 526 | ; fld .dbx13 |
|
- | 527 | ; fistp .dbx13 |
|
- | 528 | ; fld dword .dby13 |
|
- | 529 | ; fistp dword .dby13 |
|
- | 530 | ; fld .dex13 |
|
- | 531 | ; fistp .dex13 |
|
- | 532 | ; fld dword .dey13 |
|
460 | ; xmm1--> | xxx | dz | dtx | dty | |
533 | ; fistp dword .dey13 |
- | 534 | ; fld .dtx13 |
|
- | 535 | ; fistp .dtx13 |
|
- | 536 | ; fld dword .dty13 |
|
- | 537 | ; fistp dword .dty13 |
|
- | 538 | ||
- | 539 | else |
|
- | 540 | ||
- | 541 | mov ax,.x3 |
|
- | 542 | sub ax,.x1 |
|
- | 543 | cwde |
|
461 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
544 | shl eax,ROUND |
462 | movhlps xmm1,xmm1 |
545 | cdq |
463 | cvtss2si eax,xmm1 ; eax --> 1 delta dword | dz | |
546 | idiv ebx |
464 | movq .dty13,mm0 |
547 | ; mov .dx13,eax |
465 | mov .dz13,eax |
548 | push eax |
Line 539... | Line 622... | ||
539 | push edx ;dword 0 |
622 | push edx ;dword 0 |
540 | loop @b |
623 | loop @b |
541 | jmp .bt_dx23_done |
624 | jmp .bt_dx23_done |
542 | .bt_dx23_make: |
625 | .bt_dx23_make: |
543 | mov ax,.x3 |
626 | movsx ebx,bx |
544 | sub ax,.x2 |
- | |
545 | cwde |
- | |
546 | movsx ebx,bx |
- | |
547 | shl eax,ROUND |
627 | |
548 | cdq |
- | |
549 | idiv ebx |
- | |
550 | ; mov .dx23,eax |
- | |
551 | push eax |
- | |
552 | - | ||
Line 553... | Line 628... | ||
553 | if Ext>=SSE |
628 | if Ext>=SSE |
Line 554... | Line 629... | ||
554 | 629 | ||
555 | sub esp,28 |
630 | sub esp,32 |
556 | ; mov eax,255 |
631 | ; mov eax,256 |
557 | cvtsi2ss xmm4,[i255d] |
632 | cvtsi2ss xmm4,[i255d] |
558 | cvtsi2ss xmm3,ebx ;rcps |
633 | cvtsi2ss xmm3,ebx ;rcps |
559 | divss xmm3,xmm4 |
634 | divss xmm3,xmm4 |
Line 580... | Line 655... | ||
580 | divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
655 | divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
Line 581... | Line 656... | ||
581 | 656 | ||
582 | shufps xmm1,xmm1,10110001b |
657 | shufps xmm1,xmm1,10110001b |
- | 658 | ;xmm1--> | dbx | dby | dex | dey | |
|
- | 659 | ;1 movups .dey23,xmm1 |
|
583 | ;xmm1--> | dbx | dby | dex | dey | |
660 | |
584 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
661 | cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
585 | movhlps xmm1,xmm1 |
662 | movhlps xmm1,xmm1 |
586 | cvtps2pi mm1,xmm1 |
663 | cvtps2pi mm1,xmm1 ;mm1,xmm1 |
587 | movq .dey23,mm0 |
664 | movq .dey23,mm0 |
588 | movq .dby23,mm1 |
665 | movq .dby23,mm1 |
589 | ;---------- |
666 | |
590 | mov ax,.z3 |
667 | mov ax,.z3 |
591 | sub ax,.z2 |
668 | sub ax,.z2 |
Line -... | Line 669... | ||
- | 669 | cwde |
|
- | 670 | ||
- | 671 | mov dx,.x3 |
|
- | 672 | sub dx,.x2 |
|
592 | cwde |
673 | movsx edx,dx |
593 | 674 | ||
Line 594... | Line 675... | ||
594 | movd mm2,[.t_x2] |
675 | movd mm2,[.t_x2] |
595 | movd mm3,[.t_x3] |
676 | movd mm3,[.t_x3] |
596 | 677 | ||
Line 597... | Line 678... | ||
597 | punpcklwd mm2,mm4 |
678 | punpcklwd mm2,mm4 |
598 | punpcklwd mm3,mm4 |
679 | punpcklwd mm3,mm4 |
- | 680 | psubd mm3,mm2 |
|
- | 681 | ||
599 | psubd mm3,mm2 |
682 | cvtsi2ss xmm1,eax |
Line 600... | Line 683... | ||
600 | 683 | movlhps xmm1,xmm1 |
|
Line 601... | Line 684... | ||
601 | cvtsi2ss xmm1,eax |
684 | cvtsi2ss xmm1,edx |
602 | movlhps xmm1,xmm1 |
685 | shufps xmm1,xmm1,00101111b |
- | 686 | cvtpi2ps xmm1,mm3 |
|
- | 687 | ||
603 | cvtpi2ps xmm1,mm3 |
688 | divps xmm1,xmm3 ; xmm1--> | dx | dz | dty | dtx | |
604 | 689 | ||
605 | divps xmm1,xmm3 ; xmm1--> | xxx | dz | dty | dtx | |
690 | shufps xmm1,xmm1,11100001b |
606 | 691 | ; xmm1--> | dx | dz | dtx | dty | |
|
607 | shufps xmm1,xmm1,11100001b |
692 | ; movlps .dty23,xmm1 |
- | 693 | ; movhps .dz23,xmm1 |
|
- | 694 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
|
- | 695 | movhlps xmm1,xmm1 |
|
- | 696 | cvtps2pi mm1,xmm1 ; mm1 --> 2 delta dwords | dx | dz | |
|
- | 697 | movq .dty23,mm0 |
|
- | 698 | movq .dz23,mm1 |
|
- | 699 | ||
- | 700 | ||
- | 701 | ;temporaly conversion to keep upside down |
|
- | 702 | ; fninit |
|
- | 703 | ; fld .dx23 |
|
- | 704 | ; fistp .dx23 |
|
- | 705 | ; fld dword .dz23 |
|
- | 706 | ; fistp dword .dz23 |
|
- | 707 | ; fld .dbx23 |
|
- | 708 | ; fistp .dbx23 |
|
- | 709 | ; fld dword .dby23 |
|
- | 710 | ; fistp dword .dby23 |
|
- | 711 | ; fld .dex23 |
|
- | 712 | ; fistp .dex23 |
|
608 | ; xmm1--> | xxx | dz | dtx | dty | |
713 | ; fld dword .dey23 |
- | 714 | ; fistp dword .dey23 |
|
- | 715 | ; fld .dtx23 |
|
- | 716 | ; fistp .dtx23 |
|
- | 717 | ; fld dword .dty23 |
|
- | 718 | ; fistp dword .dty23 |
|
- | 719 | else |
|
- | 720 | mov ax,.x3 |
|
- | 721 | sub ax,.x2 |
|
Line 609... | Line 722... | ||
609 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
722 | cwde |
610 | movhlps xmm1,xmm1 |
723 | shl eax,ROUND |
611 | cvtss2si eax,xmm1 ; eax --> 1 delta dword | dz | |
724 | cdq |
612 | movq .dty23,mm0 |
725 | idiv ebx |
Line 679... | Line 792... | ||
679 | end if |
792 | end if |
680 | ; sub esp,40 |
793 | ; sub esp,40 |
681 | .bt_dx23_done: |
794 | .bt_dx23_done: |
682 | sub esp,64 |
795 | sub esp,64 |
683 | movsx eax,.x1 |
796 | ;if Ext>=SSE |
- | 797 | ; movsx eax,.x1 |
|
- | 798 | ; shl eax,ROUND |
|
- | 799 | ; cvtsi2ss xmm0,eax |
|
- | 800 | ; movss .cx1,xmm0 |
|
- | 801 | ; movss .cx2,xmm0 |
|
- | 802 | ; |
|
- | 803 | ; movsx ebx,word[.b_x1] |
|
- | 804 | ; shl ebx,ROUND |
|
- | 805 | ; cvtsi2ss xmm0,ebx |
|
- | 806 | ; movss .cbx1,xmm0 |
|
- | 807 | ; movss .cbx2,xmm0 |
|
- | 808 | ; |
|
- | 809 | ; movsx ecx,word[.b_y1] |
|
- | 810 | ; shl ecx,ROUND |
|
- | 811 | ; cvtsi2ss xmm0,ecx |
|
- | 812 | ; movss .cby1,xmm0 |
|
- | 813 | ; movss .cby2,xmm0 |
|
- | 814 | ||
- | 815 | ; movsx edx,word[.e_x1] |
|
- | 816 | ; shl edx,ROUND |
|
- | 817 | ; cvtsi2ss xmm0,edx |
|
- | 818 | ; movss .cex1,xmm0 |
|
- | 819 | ; movss .cex2,xmm0 |
|
- | 820 | ; |
|
- | 821 | ; movsx eax,word[.e_y1] |
|
- | 822 | ; shl eax,ROUND |
|
- | 823 | ; cvtsi2ss xmm0,eax |
|
- | 824 | ; movss .cey1,xmm0 |
|
- | 825 | ; movss .cey2,xmm0 |
|
- | 826 | ; |
|
- | 827 | ||
- | 828 | ; movsx ebx,.z1 |
|
- | 829 | ; shl ebx,CATMULL_SHIFT |
|
- | 830 | ; cvtsi2ss xmm0,ebx |
|
- | 831 | ; movss .cz1,xmm0 |
|
- | 832 | ; movss .cz2,xmm0 |
|
- | 833 | ; |
|
- | 834 | ; movsx ecx,word[.t_x1] |
|
- | 835 | ; shl ecx,ROUND |
|
- | 836 | ; cvtsi2ss xmm0,ecx |
|
- | 837 | ; movss .ctx1,xmm0 |
|
- | 838 | ; movss .ctx2,xmm0 |
|
- | 839 | ||
- | 840 | ; movsx edx,word[.t_y1] |
|
- | 841 | ; shl edx,ROUND |
|
- | 842 | ; cvtsi2ss xmm0,edx |
|
- | 843 | ; movss .cty1,xmm0 |
|
- | 844 | ; movss .cty2,xmm0 |
|
- | 845 | ||
- | 846 | ;else |
|
- | 847 | ||
- | 848 | movsx eax,.x1 |
|
684 | shl eax,ROUND |
849 | shl eax,ROUND |
685 | mov .cx1,eax |
850 | mov .cx1,eax |
686 | mov .cx2,eax |
851 | mov .cx2,eax |
687 | ; push eax |
852 | ; push eax |
688 | ; push eax |
853 | ; push eax |
Line 735... | Line 900... | ||
735 | mov .cty1,edx |
900 | mov .cty1,edx |
736 | mov .cty2,edx |
901 | mov .cty2,edx |
737 | ; push edx |
902 | ; push edx |
738 | ; push edx |
903 | ; push edx |
739 | 904 | ;end if |
|
740 | 905 | ||
Line 741... | Line 906... | ||
741 | movsx ecx,.y1 |
906 | movsx ecx,.y1 |
742 | cmp cx,.y2 |
907 | cmp cx,.y2 |
743 | jge .loop12_done |
908 | jge .loop12_done |
744 | .loop12: |
909 | .loop12: |
745 | call .call_line |
910 | call .call_line |
- | 911 | ;if Ext >= SSE |
|
- | 912 | ; movups xmm0,.cby1 |
|
- | 913 | ; movups xmm1,.cty1 |
|
- | 914 | ; movups xmm2,.cby2 |
|
- | 915 | ; movups xmm3,.cty2 |
|
- | 916 | ; movups xmm4,.dby13 |
|
- | 917 | ; movups xmm5,.dty13 |
|
- | 918 | ; movups xmm6,.dby12 |
|
- | 919 | ; movups xmm7,.dty12 |
|
- | 920 | ; addps xmm0,xmm4 |
|
- | 921 | ; addps xmm1,xmm5 |
|
- | 922 | ; addps xmm2,xmm6 |
|
- | 923 | ; addps xmm3,xmm7 |
|
- | 924 | ; |
|
- | 925 | ;; addps xmm0,.dby12 |
|
- | 926 | ;; addps xmm1,.dty12 |
|
- | 927 | ;; addps xmm2,.dby13 |
|
- | 928 | ;; addps xmm3,.dty13 |
|
- | 929 | ; movups .cby1,xmm0 |
|
- | 930 | ; movups .cty1,xmm1 |
|
- | 931 | ; movups .cby2,xmm2 |
|
- | 932 | ; movups .cty2,xmm3 |
|
- | 933 | ;end if |
|
Line 746... | Line 934... | ||
746 | 934 | ||
747 | if Ext >= MMX |
935 | if Ext >= MMX |
748 | movq mm0,.cby2 |
936 | movq mm0,.cby2 |
749 | movq mm1,.cby1 |
937 | movq mm1,.cby1 |
Line 768... | Line 956... | ||
768 | movq .cty1,mm4 |
956 | movq .cty1,mm4 |
769 | movq .cty2,mm5 |
957 | movq .cty2,mm5 |
770 | movq .cz1,mm6 |
958 | movq .cz1,mm6 |
771 | movq .cz2,mm7 |
959 | movq .cz2,mm7 |
772 | else |
960 | end if |
773 | mov edx,.dbx13 |
961 | if Ext = NON |
- | 962 | mov edx,.dbx13 |
|
774 | add .cbx1,edx |
963 | add .cbx1,edx |
775 | mov eax,.dbx12 |
964 | mov eax,.dbx12 |
776 | add .cbx2,eax |
965 | add .cbx2,eax |
777 | mov ebx,.dby13 |
966 | mov ebx,.dby13 |
778 | add .cby1,ebx |
967 | add .cby1,ebx |
Line 814... | Line 1003... | ||
814 | movsx ecx,.y2 |
1003 | movsx ecx,.y2 |
815 | cmp cx,.y3 |
1004 | cmp cx,.y3 |
816 | jge .loop23_done |
1005 | jge .loop23_done |
Line -... | Line 1006... | ||
- | 1006 | ||
- | 1007 | ;if Ext < SSE |
|
817 | 1008 | ||
818 | movsx eax,.z2 |
1009 | movsx eax,.z2 |
819 | shl eax,CATMULL_SHIFT |
1010 | shl eax,CATMULL_SHIFT |
Line 820... | Line 1011... | ||
820 | mov .cz2,eax |
1011 | mov .cz2,eax |
Line 845... | Line 1036... | ||
845 | 1036 | ||
Line 846... | Line 1037... | ||
846 | movzx ebx,word[.t_y2] |
1037 | movzx ebx,word[.t_y2] |
847 | shl ebx,ROUND |
1038 | shl ebx,ROUND |
848 | mov .cty2,ebx |
1039 | mov .cty2,ebx |
- | 1040 | ;else |
|
- | 1041 | ; movsx eax,.z2 |
|
- | 1042 | ; shl eax,CATMULL_SHIFT |
|
- | 1043 | ; cvtsi2ss xmm0,eax |
|
- | 1044 | ; movss .cz2,xmm0 |
|
- | 1045 | ; |
|
- | 1046 | ; movsx ebx,.x2 |
|
- | 1047 | ; shl ebx,ROUND |
|
- | 1048 | ; cvtsi2ss xmm1,ebx |
|
- | 1049 | ; movss .cx2,xmm1 |
|
- | 1050 | ; |
|
- | 1051 | ; movzx edx,word[.b_x2] |
|
- | 1052 | ; shl edx,ROUND |
|
- | 1053 | ; cvtsi2ss xmm2,edx |
|
- | 1054 | ; movss .cbx2,xmm2 |
|
- | 1055 | ; |
|
- | 1056 | ; movzx eax,word[.b_y2] |
|
- | 1057 | ; shl eax,ROUND |
|
- | 1058 | ; cvtsi2ss xmm0,eax |
|
- | 1059 | ; movss .cby2,xmm0 |
|
- | 1060 | ; |
|
- | 1061 | ; movzx ebx,word[.e_x2] |
|
- | 1062 | ; shl ebx,ROUND |
|
- | 1063 | ; cvtsi2ss xmm1,ebx |
|
- | 1064 | ; movss .cex2,xmm1 |
|
- | 1065 | ; |
|
- | 1066 | ; movzx edx,word[.e_y2] |
|
- | 1067 | ; shl edx,ROUND |
|
- | 1068 | ; cvtsi2ss xmm2,edx |
|
- | 1069 | ; movss .cey2,xmm2 |
|
- | 1070 | ; |
|
- | 1071 | ; movzx eax,word[.t_x2] |
|
- | 1072 | ; shl eax,ROUND |
|
- | 1073 | ; cvtsi2ss xmm0,eax |
|
- | 1074 | ; movss .ctx2,xmm0 |
|
- | 1075 | ; |
|
- | 1076 | ; movzx ebx,word[.t_y2] |
|
- | 1077 | ; shl ebx,ROUND |
|
- | 1078 | ; cvtsi2ss xmm1,ebx |
|
- | 1079 | ; movss .cty2,xmm1 |
|
- | 1080 | ||
- | 1081 | ;end if |
|
Line 849... | Line 1082... | ||
849 | 1082 | ||
850 | .loop23: |
1083 | .loop23: |
Line -... | Line 1084... | ||
- | 1084 | call .call_line |
|
- | 1085 | ||
- | 1086 | ;if Ext >= SSE |
|
- | 1087 | ||
- | 1088 | ; movups xmm0,.cby1 |
|
- | 1089 | ; movups xmm1,.cty1 |
|
- | 1090 | ; movups xmm2,.cby2 |
|
- | 1091 | ; movups xmm3,.cty2 |
|
- | 1092 | ; movups xmm4,.dby13 |
|
- | 1093 | ; movups xmm5,.dty13 |
|
- | 1094 | ; movups xmm6,.dby23 |
|
- | 1095 | ; movups xmm7,.dty23 |
|
- | 1096 | ; addps xmm0,xmm4 |
|
- | 1097 | ; addps xmm1,xmm5 |
|
- | 1098 | ; addps xmm2,xmm6 |
|
- | 1099 | ; addps xmm3,xmm7 |
|
- | 1100 | ; ; addps xmm0,.dby13 |
|
- | 1101 | ; ; addps xmm1,.dty13 |
|
- | 1102 | ; ; addps xmm2,.dby23 |
|
- | 1103 | ; ; addps xmm3,.dty23 |
|
- | 1104 | ; movups .cby1,xmm0 |
|
- | 1105 | ; movups .cty1,xmm1 |
|
- | 1106 | ; movups .cby2,xmm2 |
|
- | 1107 | ; movups .cty2,xmm3 |
|
851 | call .call_line |
1108 | ; |
852 | 1109 | ;end if |
|
853 | if Ext >= MMX |
1110 | if Ext >= MMX |
854 | movq mm0,.cby2 |
1111 | movq mm0,.cby2 |
855 | movq mm1,.cby1 |
1112 | movq mm1,.cby1 |
Line 874... | Line 1131... | ||
874 | movq .cty1,mm4 |
1131 | movq .cty1,mm4 |
875 | movq .cty2,mm5 |
1132 | movq .cty2,mm5 |
876 | movq .cz1,mm6 |
1133 | movq .cz1,mm6 |
877 | movq .cz2,mm7 |
1134 | movq .cz2,mm7 |
878 | else |
1135 | end if |
879 | mov edx,.dbx13 |
1136 | If Ext = NON |
- | 1137 | mov edx,.dbx13 |
|
880 | add .cbx1,edx |
1138 | add .cbx1,edx |
881 | mov eax,.dbx23 |
1139 | mov eax,.dbx23 |
882 | add .cbx2,eax |
1140 | add .cbx2,eax |
883 | mov ebx,.dby13 |
1141 | mov ebx,.dby13 |
884 | add .cby1,ebx |
1142 | add .cby1,ebx |
Line 910... | Line 1168... | ||
910 | mov edx,.dty13 |
1168 | mov edx,.dty13 |
911 | add .cty1,edx |
1169 | add .cty1,edx |
912 | mov eax,.dty23 |
1170 | mov eax,.dty23 |
913 | add .cty2,eax |
1171 | add .cty2,eax |
914 | 1172 | end if |
|
915 | end if |
- | |
916 | inc ecx |
1173 | inc ecx |
917 | cmp cx,.y3 |
1174 | cmp cx,.y3 |
918 | jl .loop23 |
1175 | jl .loop23 |
919 | .loop23_done: |
1176 | .loop23_done: |
920 | 1177 | ||
Line 921... | Line 1178... | ||
921 | mov esp,ebp |
1178 | mov esp,ebp |
922 | ret 50 |
1179 | ret 50 |
Line 923... | Line 1180... | ||
923 | 1180 | ||
- | 1181 | .call_line: |
|
- | 1182 | ;if Ext >= SSE |
|
- | 1183 | ; pushad |
|
- | 1184 | ; push .tex_ptr |
|
- | 1185 | ; fninit |
|
- | 1186 | ; fld dword .cty1 |
|
- | 1187 | ; fistp dword [esp-4] |
|
- | 1188 | ; sub esp,4 |
|
- | 1189 | ;; push dword .cty1 |
|
- | 1190 | ; fld .ctx1 |
|
- | 1191 | ; fistp dword [esp-4] |
|
- | 1192 | ; sub esp,4 |
|
- | 1193 | ;; push .ctx1 |
|
- | 1194 | ; fld dword .cz1 |
|
- | 1195 | ; fistp dword [esp-4] |
|
- | 1196 | ; sub esp,4 |
|
- | 1197 | ; ; push dwod .cz1 |
|
- | 1198 | ; fld dword .cty2 |
|
- | 1199 | ; fistp dword [esp-4] |
|
- | 1200 | ; sub esp,4 |
|
- | 1201 | ; ; push .cty2 |
|
- | 1202 | ; fld .ctx2 |
|
- | 1203 | ; fistp dword [esp-4] |
|
- | 1204 | ; sub esp,4 |
|
- | 1205 | ; ; push dword .ctx2 |
|
- | 1206 | ; fld dword .cz2 |
|
- | 1207 | ; fistp dword [esp-4] |
|
- | 1208 | ; sub esp,4 |
|
- | 1209 | ;; push dword .cz2 |
|
- | 1210 | ; |
|
- | 1211 | ; push .z_buff |
|
- | 1212 | ; push .t_emap |
|
- | 1213 | ; push .t_bmap |
|
- | 1214 | ;-------------------------------------- |
|
- | 1215 | ; fld dword .cey2 |
|
- | 1216 | ; fistp dword [esp-4] |
|
- | 1217 | ; sub esp,4 |
|
- | 1218 | ;; push dword .cey2 |
|
- | 1219 | ; |
|
- | 1220 | ; fld .cex2 |
|
- | 1221 | ; fistp dword [esp-4] |
|
- | 1222 | ; sub esp,4 |
|
- | 1223 | ;; push .cex2 |
|
- | 1224 | ; |
|
- | 1225 | ; fld dword .cby2 |
|
- | 1226 | ; fistp dword [esp-4] |
|
- | 1227 | ; sub esp,4 |
|
- | 1228 | ; ; push dword .cby2 |
|
- | 1229 | ||
- | 1230 | ; fld .cbx2 |
|
- | 1231 | ; fistp dword [esp-4] |
|
- | 1232 | ; sub esp,4 |
|
- | 1233 | ; push .cbx2 |
|
- | 1234 | ;------------------------------------ |
|
- | 1235 | ; fld dword .cey1 |
|
- | 1236 | ; fistp dword [esp-4] |
|
- | 1237 | ; sub esp,4 |
|
- | 1238 | ;; push dword .cey1 |
|
- | 1239 | ; fld .cex1 |
|
- | 1240 | ; fistp dword [esp-4] |
|
- | 1241 | ; sub esp,4 |
|
- | 1242 | ; ; push .cex1 |
|
- | 1243 | ; fld dword .cby1 |
|
- | 1244 | ; fistp dword [esp-4] |
|
- | 1245 | ; sub esp,4 |
|
- | 1246 | ;; push dword .cby1 |
|
- | 1247 | ; fld .cbx1 |
|
- | 1248 | ; fistp dword [esp-4] |
|
- | 1249 | ; sub esp,4 |
|
- | 1250 | ;; push .cbx1 |
|
Line -... | Line 1251... | ||
- | 1251 | ; push ecx |
|
- | 1252 | ||
- | 1253 | ; fld .cx1 |
|
- | 1254 | ; fistp dword [esp-4] |
|
- | 1255 | ; mov eax,[esp-4] |
|
- | 1256 | ; sar eax,ROUND |
|
- | 1257 | ; fld .cx2 |
|
- | 1258 | ; fistp dword [esp-4] |
|
- | 1259 | ; mov ebx,[esp-4] |
|
- | 1260 | ; sar ebx,ROUND |
|
- | 1261 | ||
- | 1262 | ; call bump_tex_line_z |
|
- | 1263 | ; |
|
924 | .call_line: |
1264 | ; popad |
925 | 1265 | ;else |
|
926 | pushad |
- | |
927 | push .tex_ptr |
- | |
928 | push dword .cty2 |
1266 | pushad |
929 | push .ctx2 |
1267 | push .tex_ptr |
930 | push dword .cty1 |
1268 | push dword .cty1 |
- | 1269 | push .ctx1 |
|
- | 1270 | push dword .cz1 |
|
931 | push .ctx1 |
1271 | push dword .cty2 |
932 | push dword .cz1 |
1272 | push .ctx2 |
933 | push dword .cz2 |
1273 | push dword .cz2 |
934 | push .z_buff |
1274 | push .z_buff |
935 | push .t_emap |
1275 | push .t_emap |
936 | push .t_bmap |
1276 | push .t_bmap |
937 | push dword .cey2 |
- | |
938 | push .cex2 |
- | |
939 | push dword .cey1 |
1277 | push dword .cey2 |
940 | push .cex1 |
1278 | push .cex2 |
- | 1279 | push dword .cby2 |
|
- | 1280 | push .cbx2 |
|
941 | push dword .cby2 |
1281 | push dword .cey1 |
942 | push .cbx2 |
1282 | push .cex1 |
943 | push dword .cby1 |
1283 | push dword .cby1 |
Line 944... | Line 1284... | ||
944 | push .cbx1 |
1284 | push .cbx1 |
Line 951... | Line 1291... | ||
951 | 1291 | ||
Line 952... | Line 1292... | ||
952 | call bump_tex_line_z |
1292 | call bump_tex_line_z |
Line 953... | Line 1293... | ||
953 | 1293 | ||
- | 1294 | popad |
|
954 | popad |
1295 | ;end if |
955 | ret |
1296 | ret |
956 | bump_tex_line_z: |
1297 | bump_tex_line_z: |
957 | ;--------------in: eax - x1 |
1298 | ;--------------in: eax - x1 |
958 | ;-------------- ebx - x2 |
1299 | ;-------------- ebx - x2 |
959 | ;-------------- edi - pointer to screen buffer |
1300 | ;-------------- edi - pointer to screen buffer |
960 | ;stack - another parameters : |
1301 | ;stack - another parameters : |
- | 1302 | .y equ dword [ebp+4] |
|
961 | .y equ dword [ebp+4] |
1303 | |
962 | .bx1q equ [ebp+8] |
1304 | .bx1 equ [ebp+8] ; --- |
963 | .bx2q equ [ebp+16] |
- | |
964 | .ex1q equ [ebp+24] |
- | |
965 | .ex2q equ [ebp+32] |
- | |
966 | .tx1q equ [ebp+60] |
- | |
967 | .tx2q equ [ebp+68] |
- | |
968 | ;.bx1q equ [ebp+8] |
- | |
969 | ;.bx2q equ [ebp+16] |
- | |
970 | ;.ex1q equ [ebp+24] |
- | |
971 | ;.exyq equ [ebp+32] |
1305 | .by1 equ [ebp+12] ; | |
972 | .bx1 equ dword [ebp+8] ; --- |
1306 | .ex1 equ [ebp+16] ; | |
973 | .by1 equ dword [ebp+12] ; | |
1307 | .ey1 equ [ebp+20] ; | |
974 | .bx2 equ dword [ebp+16] ; | |
1308 | .bx2 equ [ebp+24] ; | |
975 | .by2 equ dword [ebp+20] ; |> b. map and e. map coords |
1309 | .by2 equ [ebp+28] ; |> b. map and e. map coords |
976 | .ex1 equ dword [ebp+24] ; |> shifted shl ROUND |
- | |
977 | .ey1 equ dword [ebp+28] ; | |
- | |
978 | .ex2 equ dword [ebp+32] ; | |
1310 | .ex2 equ [ebp+32] ; |> shifted shl ROUND |
979 | .ey2 equ dword [ebp+36] ; --- |
1311 | .ey2 equ [ebp+36] ; --- |
980 | .bmap equ dword [ebp+40] ; bump map offset |
1312 | .bmap equ [ebp+40] ; bump map offset |
981 | .emap equ dword [ebp+44] ; env map offset |
1313 | .emap equ [ebp+44] ; env map offset |
982 | .z_buff equ dword [ebp+48] |
1314 | .z_buff equ [ebp+48] |
983 | .z2 equ dword [ebp+52] ; -- |> z coords shifted |
1315 | .z2 equ [ebp+52] |
984 | .z1 equ dword [ebp+56] ; -- shl CATMULL_SHIFT |
- | |
985 | 1316 | .tx2 equ [ebp+56] |
|
986 | .tx1 equ dword [ebp+60] ; ----- |
1317 | .ty2 equ [ebp+60] |
987 | .ty1 equ dword [ebp+64] ; |> shifted shl ROUND |
1318 | .z1 equ [ebp+64] |
988 | .tx2 equ dword [ebp+68] ; | |
1319 | .tx1 equ [ebp+68] |
989 | .ty2 equ dword [ebp+72] ; --- |
1320 | .ty1 equ [ebp+72] |
Line 990... | Line 1321... | ||
990 | .tex_map equ dword [ebp+76] ; texture offset ( pointer ) |
1321 | .tex_map equ dword [ebp+76] ; texture offset ( pointer ) |
991 | 1322 | ||
992 | 1323 | ||
993 | .x1 equ dword [ebp-4] |
1324 | .x1 equ [ebp-4] |
994 | .x2 equ dword [ebp-8] |
- | |
995 | .dbx equ dword [ebp-12] |
1325 | .x2 equ [ebp-8] |
996 | .dby equ dword [ebp-16] |
1326 | .dbx equ [ebp-12] |
997 | .dbyq equ qword [ebp-16] ; - new |
- | |
998 | .dex equ dword [ebp-20] |
1327 | .dby equ [ebp-16] |
999 | .dey equ dword [ebp-24] |
1328 | .dex equ [ebp-20] |
1000 | .deyq equ qword [ebp-24] ; - new |
1329 | .dey equ [ebp-24] |
1001 | .dz equ dword [ebp-28] |
- | |
1002 | .dtx equ dword [ebp-32] |
1330 | .dz equ [ebp-28] |
1003 | .dty equ dword [ebp-36] |
1331 | .dtx equ [ebp-32] |
1004 | .dtyq equ qword [ebp-36] |
1332 | .dty equ [ebp-36] |
1005 | - | ||
1006 | .cbx equ dword [ebp-40] |
1333 | |
1007 | .cby equ dword [ebp-44] |
1334 | .cbx equ [ebp-40] |
1008 | .cbyq equ qword [ebp-44] ; - new |
- | |
1009 | .cex equ dword [ebp-48] |
1335 | .cby equ [ebp-44] |
1010 | .cey equ dword [ebp-52] |
1336 | .cex equ [ebp-48] |
1011 | .ceyq equ qword [ebp-52] ; - new |
1337 | .cey equ [ebp-52] |
1012 | .cz equ dword [ebp-56] |
1338 | .cz equ [ebp-56] |
1013 | .czbuff equ dword [ebp-60] |
- | |
1014 | .ctx equ dword [ebp-64] |
1339 | .czbuff equ [ebp-60] |
Line 1015... | Line 1340... | ||
1015 | .cty equ dword [ebp-68] |
1340 | .ctx equ [ebp-64] |
1016 | .ctyq equ qword [ebp-68] |
1341 | .cty equ [ebp-68] |
1017 | .c_scr equ dword [ebp-72] |
1342 | .c_scr equ [ebp-72] |
1018 | 1343 | ||
1019 | .temp1 equ ebp-80 |
1344 | .temp1 equ ebp-80 |
Line 1020... | Line 1345... | ||
1020 | .temp2 equ ebp-88 |
1345 | .temp2 equ ebp-88 |
Line 1021... | Line -... | ||
1021 | .temp3 equ ebp-76 |
- | |
1022 | .temp4 equ ebp-84 |
- | |
1023 | .temp5 equ ebp-92 |
1346 | .temp3 equ ebp-76 |
1024 | 1347 | .temp4 equ ebp-84 |
|
1025 | mov ebp,esp |
1348 | .temp5 equ ebp-92 |
1026 | 1349 | ||
1027 | 1350 | mov ebp,esp |
|
Line 1057... | Line 1380... | ||
1057 | mov .tx1,edx |
1380 | mov .tx1,edx |
1058 | mov edx,.ty1 |
1381 | mov edx,.ty1 |
1059 | xchg edx,.ty2 |
1382 | xchg edx,.ty2 |
1060 | mov .ty1,edx |
1383 | mov .ty1,edx |
1061 | else |
1384 | end if |
1062 | movq mm0,.bx1q |
1385 | if Ext = MMX |
- | 1386 | movq mm0,.bx1 |
|
1063 | movq mm1,.bx2q |
1387 | movq mm1,.bx2 |
1064 | movq mm2,.ex1q |
1388 | movq mm2,.ex1 |
1065 | movq mm3,.ex2q |
1389 | movq mm3,.ex2 |
1066 | movq mm4,.tx1q |
1390 | movq mm4,.tx1 |
1067 | movq mm5,.tx2q |
1391 | movq mm5,.tx2 |
1068 | movq .bx2q,mm0 |
1392 | movq .bx2,mm0 |
1069 | movq .bx1q,mm1 |
1393 | movq .bx1,mm1 |
1070 | movq .ex1q,mm3 |
1394 | movq .ex1,mm3 |
1071 | movq .ex2q,mm2 |
1395 | movq .ex2,mm2 |
1072 | movq .tx1q,mm5 |
1396 | movq .tx1,mm5 |
1073 | movq .tx2q,mm4 |
1397 | movq .tx2,mm4 |
1074 | end if |
1398 | end if |
- | 1399 | if Ext>=SSE |
|
- | 1400 | movups xmm0,.bx1 |
|
- | 1401 | movups xmm1,.bx2 |
|
- | 1402 | movups .bx1,xmm1 |
|
- | 1403 | movups .bx2,xmm0 |
|
- | 1404 | movq mm0,.tx1 |
|
- | 1405 | movq mm1,.tx2 |
|
- | 1406 | movq .tx1,mm1 |
|
- | 1407 | movq .tx2,mm0 |
|
- | 1408 | end if |
|
1075 | 1409 | ||
Line 1076... | Line 1410... | ||
1076 | mov edx,.z1 |
1410 | mov edx,.z1 |
1077 | xchg edx,.z2 |
1411 | xchg edx,.z2 |
1078 | mov .z1,edx |
1412 | mov .z1,edx |
1079 | .bl_ok: |
1413 | .bl_ok: |
1080 | push eax |
1414 | push eax |
1081 | push ebx ;store x1, x2 |
1415 | push ebx ;store x1, x2 |
1082 | cmp .x1,SIZE_X |
1416 | cmp dword .x1,SIZE_X |
1083 | jge .bl_end |
1417 | jge .bl_end |
1084 | cmp .x2,0 |
1418 | cmp dword .x2,0 |
1085 | jle .bl_end |
1419 | jle .bl_end |
Line 1086... | Line 1420... | ||
1086 | 1420 | ||
1087 | mov ebx,.x2 |
1421 | mov ebx,.x2 |
Line 1088... | Line 1422... | ||
1088 | sub ebx,.x1 |
1422 | sub ebx,.x1 |
Line 1089... | Line 1423... | ||
1089 | 1423 | ||
1090 | if Ext>=SSE |
1424 | if Ext>=SSE |
1091 | 1425 | ||
- | 1426 | sub esp,28 |
|
- | 1427 | cvtsi2ss xmm3,ebx ;rcps |
|
- | 1428 | shufps xmm3,xmm3,0 |
|
Line 1092... | Line 1429... | ||
1092 | sub esp,28 |
1429 | ; float using SSE variant ::--> |
1093 | cvtsi2ss xmm3,ebx ;rcps |
1430 | ; movups xmm0,.bx1 ; new |
1094 | shufps xmm3,xmm3,0 |
1431 | ; movups xmm1,.bx2 ; new |
1095 | 1432 | ||
1096 | cvtpi2ps xmm0,.bx1q ;mm0 |
1433 | cvtpi2ps xmm0,.bx1 ;mm0 ; variant fixed point |
1097 | movlhps xmm0,xmm0 |
1434 | movlhps xmm0,xmm0 |
1098 | cvtpi2ps xmm0,.ex1q ;mm2 |
1435 | cvtpi2ps xmm0,.ex1 ;mm2 |
Line 1099... | Line 1436... | ||
1099 | cvtpi2ps xmm1,.bx2q ;mm1 |
1436 | cvtpi2ps xmm1,.bx2 ;mm1 |
Line 1100... | Line 1437... | ||
1100 | movlhps xmm1,xmm1 |
1437 | movlhps xmm1,xmm1 |
- | 1438 | cvtpi2ps xmm1,.ex2 ;mm3 |
|
1101 | cvtpi2ps xmm1,.ex2q ;mm3 |
1439 | subps xmm1,xmm0 |
1102 | subps xmm1,xmm0 |
1440 | |
1103 | 1441 | divps xmm1,xmm3 |
|
1104 | divps xmm1,xmm3 |
1442 | |
1105 | 1443 | shufps xmm1,xmm1,10110001b |
|
Line 1106... | Line 1444... | ||
1106 | shufps xmm1,xmm1,10110001b |
1444 | ; movups .dey,xmm1 ; new |
1107 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
1445 | cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
Line 1108... | Line 1446... | ||
1108 | movhlps xmm1,xmm1 |
1446 | movhlps xmm1,xmm1 |
1109 | cvtps2pi mm1,xmm1 |
1447 | cvtps2pi mm1,xmm1 |
1110 | movq .deyq,mm0 |
1448 | movq .dey,mm0 |
1111 | movq .dbyq,mm1 |
1449 | movq .dby,mm1 |
1112 | 1450 | ||
1113 | movd mm2,.z1 |
1451 | movd mm2,.z1 |
- | 1452 | movd mm3,.z2 |
|
- | 1453 | ||
1114 | movd mm3,.z2 |
1454 | cvtpi2ps xmm0,.tx1 ;mm0 |
Line 1115... | Line 1455... | ||
1115 | 1455 | movlhps xmm0,xmm0 |
|
Line -... | Line 1456... | ||
- | 1456 | cvtpi2ps xmm0,mm2 |
|
- | 1457 | cvtpi2ps xmm1,.tx2 ;mm1 |
|
1116 | cvtpi2ps xmm0,.tx1q ;mm0 |
1458 | movlhps xmm1,xmm1 |
1117 | movlhps xmm0,xmm0 |
1459 | cvtpi2ps xmm1,mm3 |
1118 | cvtpi2ps xmm0,mm2 |
1460 | ; movups xmm0,,z1 ; new |
1119 | cvtpi2ps xmm1,.tx2q ;mm1 |
1461 | ; movups xmm1,.z2 ; new |
1120 | movlhps xmm1,xmm1 |
1462 | subps xmm1,xmm0 |
1121 | cvtpi2ps xmm1,mm3 |
1463 | |
Line 1122... | Line 1464... | ||
1122 | subps xmm1,xmm0 |
1464 | divps xmm1,xmm3 |
Line 1123... | Line 1465... | ||
1123 | 1465 | ||
1124 | divps xmm1,xmm3 |
1466 | ; movups .dz,xmm1 ;new |
Line 1175... | Line 1517... | ||
1175 | idiv ebx |
1517 | idiv ebx |
1176 | push eax |
1518 | push eax |
1177 | 1519 | ||
Line 1178... | Line 1520... | ||
1178 | end if |
1520 | end if |
1179 | cmp .x1,0 ; set correctly begin variable |
1521 | cmp dword .x1,0 ; set correctly begin variable |
1180 | jge @f ; CLIPPING ON FUNCTION |
1522 | jge @f ; CLIPPING ON FUNCTION |
1181 | ; cutting triangle exceedes screen |
1523 | ; cutting triangle exceedes screen |
1182 | mov ebx,.x1 |
1524 | mov ebx,.x1 |
1183 | neg ebx |
1525 | neg ebx |
- | 1526 | ||
- | 1527 | ;if Ext >= SSE |
|
- | 1528 | ||
- | 1529 | ; cvtsi2ss xmm0,ebx |
|
- | 1530 | ; shufps xmm0,xmm0,0 |
|
- | 1531 | ; movups xmm1,.dey |
|
- | 1532 | ; mulps xmm1,xmm0 |
|
- | 1533 | ; shufps xmm1,xmm1,00011011b |
|
- | 1534 | ; movups xmm2,.bx1 |
|
- | 1535 | ; addps xmm2,xmm1 |
|
- | 1536 | ; movups .bx1,xmm2 |
|
- | 1537 | ||
- | 1538 | mov eax,.dz |
|
1184 | imul ebx ; eax = .dz * abs(.x1) |
1539 | imul ebx ; eax = .dz * abs(.x1) |
1185 | add .z1,eax |
1540 | add .z1,eax |
1186 | mov .x1,0 |
1541 | mov dword .x1,0 |
Line 1187... | Line 1542... | ||
1187 | 1542 | ||
1188 | mov eax,.dbx |
1543 | mov eax,.dbx |
1189 | imul ebx |
1544 | imul ebx |
Line 1209... | Line 1564... | ||
1209 | imul ebx |
1564 | imul ebx |
1210 | add .ty1,eax |
1565 | add .ty1,eax |
1211 | 1566 | ||
Line 1212... | Line 1567... | ||
1212 | @@: |
1567 | @@: |
1213 | cmp .x2,SIZE_X |
1568 | cmp dword .x2,SIZE_X |
1214 | jl @f |
1569 | jl @f |
1215 | mov .x2,SIZE_X |
1570 | mov dword .x2,SIZE_X |
1216 | @@: |
1571 | @@: |
1217 | mov eax,SIZE_X ;calc memory begin in buffers |
1572 | mov eax,SIZE_X ;calc memory begin in buffers |
1218 | mul .y |
1573 | mul .y |
1219 | add eax,.x1 |
1574 | add eax,.x1 |
1220 | lea esi,[4*eax] |
1575 | lea esi,[4*eax] |
Line 1225... | Line 1580... | ||
1225 | 1580 | ||
1226 | mov ecx,.x2 |
1581 | mov ecx,.x2 |
1227 | sub ecx,.x1 |
1582 | sub ecx,.x1 |
1228 | ; init current variables |
1583 | ; init current variables |
1229 | push .bx1 ; current b, e and t shifted shl ROUND .cbx |
1584 | push dword .bx1 ; current b, e and t shifted shl ROUND .cbx |
1230 | push .by1 ; .cby |
1585 | push dword .by1 ; .cby |
1231 | push .ex1 ; .cex |
1586 | push dword .ex1 ; .cex |
Line 1232... | Line 1587... | ||
1232 | push .ey1 ; .cey |
1587 | push dword .ey1 ; .cey |
1233 | 1588 | ||
Line 1234... | Line 1589... | ||
1234 | push .z1 ; current z shl CATMULL_SHIFT ; .cz |
1589 | push dword .z1 ; current z shl CATMULL_SHIFT ; .cz |
1235 | push esi ; .czbuff |
1590 | push esi ; .czbuff |
1236 | 1591 | ||
1237 | push .tx1 ; .ctx |
1592 | push dword .tx1 ; .ctx |
1238 | push .ty1 ; .cty |
1593 | push dword .ty1 ; .cty |
1239 | push edi ; .c_scr |
1594 | push edi ; .c_scr |
1240 | if Ext>=MMX |
1595 | if Ext>=MMX |
1241 | movq mm7,.ctyq |
1596 | movq mm7,.cty |
1242 | movq mm6,.cbyq |
1597 | movq mm6,.cby |
1243 | movq mm5,.ceyq |
1598 | movq mm5,.cey |
Line 1244... | Line 1599... | ||
1244 | ; movq mm4,.dtyq |
1599 | ; movq mm4,.dtyq |
Line 1264... | Line 1619... | ||
1264 | movd esi,mm1 |
1619 | movd esi,mm1 |
1265 | end if |
1620 | end if |
1266 | 1621 | ||
Line 1267... | Line -... | ||
1267 | - | ||
1268 | 1622 | ||
1269 | shl eax,TEX_SHIFT |
1623 | shl eax,TEX_SHIFT |
Line 1270... | Line 1624... | ||
1270 | add esi,eax ;- ; esi - current bump map index |
1624 | add esi,eax ;- ; esi - current bump map index |
1271 | 1625 | ||
Line 1294... | Line 1648... | ||
1294 | add ebx,.bmap |
1648 | add ebx,.bmap |
1295 | movzx ebx,byte [ebx] |
1649 | movzx ebx,byte [ebx] |
1296 | sub edx,ebx |
1650 | sub edx,ebx |
1297 | 1651 | ||
Line -... | Line 1652... | ||
- | 1652 | ||
1298 | ; eax - horizontal sub modificated x coord |
1653 | ; eax - horizontal sub modificated x coord |
1299 | ; edx - vertical sub modificated y coord |
1654 | ; edx - vertical sub modificated y coord |
1300 | if Ext=NON |
1655 | if Ext=NON |
1301 | mov ebx,.cex ;.cex - current env map X |
1656 | mov ebx,.cex ;.cex - current env map X |
1302 | shr ebx,ROUND |
1657 | shr ebx,ROUND |
Line 1398... | Line 1753... | ||
1398 | mov edi,.czbuff |
1753 | mov edi,.czbuff |
1399 | stosd |
1754 | stosd |
1400 | 1755 | ||
Line 1401... | Line 1756... | ||
1401 | .skip: |
1756 | .skip: |
1402 | add .czbuff,4 |
1757 | add dword .czbuff,4 |
1403 | add .c_scr,3 |
1758 | add dword .c_scr,3 |
Line 1404... | Line 1759... | ||
1404 | 1759 | ||
1405 | if Ext=NON |
1760 | if Ext=NON |
1406 | mov eax,.dbx |
1761 | mov eax,.dbx |
1407 | add .cbx,eax |
1762 | add .cbx,eax |
Line 1418... | Line 1773... | ||
1418 | mov edx,.dty |
1773 | mov edx,.dty |
1419 | add .cty,edx |
1774 | add .cty,edx |
1420 | 1775 | ||
Line 1421... | Line 1776... | ||
1421 | else |
1776 | else |
1422 | paddd mm7,.dtyq |
1777 | paddd mm7,.dty |
1423 | paddd mm6,.dbyq |
1778 | paddd mm6,.dby |
1424 | paddd mm5,.deyq |
1779 | paddd mm5,.dey |
1425 | end if |
1780 | end if |
1426 | mov eax,.dz |
1781 | mov eax,.dz |
1427 | add .cz,eax |
1782 | add .cz,eax |
Line 1428... | Line 1783... | ||
1428 | 1783 |