|
|
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.