Subversion Repositories Kolibri OS

Rev

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