|
|
1.1 root 1: //
2: // d_scana.s
3: // x86 assembly-language turbulent texture mapping code
4: //
5:
6: #include "qasm.h"
7: #include "d_ifacea.h"
8:
9: #if id386
10:
11: .data
12:
13: .text
14:
15: //----------------------------------------------------------------------
16: // turbulent texture mapping code
17: //----------------------------------------------------------------------
18:
19: .align 4
20: .globl C(D_DrawTurbulent8Span)
21: C(D_DrawTurbulent8Span):
22: pushl %ebp // preserve caller's stack frame pointer
23: pushl %esi // preserve register variables
24: pushl %edi
25: pushl %ebx
26:
27: movl C(r_turb_s),%esi
28: movl C(r_turb_t),%ecx
29: movl C(r_turb_pdest),%edi
30: movl C(r_turb_spancount),%ebx
31:
32: Llp:
33: movl %ecx,%eax
34: movl %esi,%edx
35: sarl $16,%eax
36: movl C(r_turb_turb),%ebp
37: sarl $16,%edx
38: andl $(CYCLE-1),%eax
39: andl $(CYCLE-1),%edx
40: movl (%ebp,%eax,4),%eax
41: movl (%ebp,%edx,4),%edx
42: addl %esi,%eax
43: sarl $16,%eax
44: addl %ecx,%edx
45: sarl $16,%edx
46: andl $(TURB_TEX_SIZE-1),%eax
47: andl $(TURB_TEX_SIZE-1),%edx
48: shll $6,%edx
49: movl C(r_turb_pbase),%ebp
50: addl %eax,%edx
51: incl %edi
52: addl C(r_turb_sstep),%esi
53: addl C(r_turb_tstep),%ecx
54: movb (%ebp,%edx,1),%dl
55: decl %ebx
56: movb %dl,-1(%edi)
57: jnz Llp
58:
59: movl %edi,C(r_turb_pdest)
60:
61: popl %ebx // restore register variables
62: popl %edi
63: popl %esi
64: popl %ebp // restore caller's stack frame pointer
65: ret
66:
67: #endif // id386
68:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.