Annotation of quakeworld/client/d_scana.s, revision 1.1.1.1

1.1       root        1: /*
                      2: Copyright (C) 1996-1997 Id Software, Inc.
                      3: 
                      4: This program is free software; you can redistribute it and/or
                      5: modify it under the terms of the GNU General Public License
                      6: as published by the Free Software Foundation; either version 2
                      7: of the License, or (at your option) any later version.
                      8: 
                      9: This program is distributed in the hope that it will be useful,
                     10: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
                     12: 
                     13: See the GNU General Public License for more details.
                     14: 
                     15: You should have received a copy of the GNU General Public License
                     16: along with this program; if not, write to the Free Software
                     17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
                     18: 
                     19: */
                     20: //
                     21: // d_scana.s
                     22: // x86 assembly-language turbulent texture mapping code
                     23: //
                     24: 
                     25: #include "asm_i386.h"
                     26: #include "quakeasm.h"
                     27: #include "asm_draw.h"
                     28: #include "d_ifacea.h"
                     29: 
                     30: #if id386
                     31: 
                     32:        .data
                     33: 
                     34:        .text
                     35: 
                     36: //----------------------------------------------------------------------
                     37: // turbulent texture mapping code
                     38: //----------------------------------------------------------------------
                     39: 
                     40:        .align 4
                     41: .globl C(D_DrawTurbulent8Span)
                     42: C(D_DrawTurbulent8Span):
                     43:        pushl   %ebp                            // preserve caller's stack frame pointer
                     44:        pushl   %esi                            // preserve register variables
                     45:        pushl   %edi
                     46:        pushl   %ebx
                     47: 
                     48:        movl    C(r_turb_s),%esi
                     49:        movl    C(r_turb_t),%ecx
                     50:        movl    C(r_turb_pdest),%edi
                     51:        movl    C(r_turb_spancount),%ebx
                     52: 
                     53: Llp:
                     54:        movl    %ecx,%eax
                     55:        movl    %esi,%edx
                     56:        sarl    $16,%eax
                     57:        movl    C(r_turb_turb),%ebp
                     58:        sarl    $16,%edx
                     59:        andl    $(CYCLE-1),%eax
                     60:        andl    $(CYCLE-1),%edx
                     61:        movl    (%ebp,%eax,4),%eax
                     62:        movl    (%ebp,%edx,4),%edx
                     63:        addl    %esi,%eax
                     64:        sarl    $16,%eax
                     65:        addl    %ecx,%edx
                     66:        sarl    $16,%edx
                     67:        andl    $(TURB_TEX_SIZE-1),%eax
                     68:        andl    $(TURB_TEX_SIZE-1),%edx
                     69:        shll    $6,%edx
                     70:        movl    C(r_turb_pbase),%ebp
                     71:        addl    %eax,%edx
                     72:        incl    %edi
                     73:        addl    C(r_turb_sstep),%esi
                     74:        addl    C(r_turb_tstep),%ecx
                     75:        movb    (%ebp,%edx,1),%dl
                     76:        decl    %ebx
                     77:        movb    %dl,-1(%edi)
                     78:        jnz             Llp
                     79: 
                     80:        movl    %edi,C(r_turb_pdest)
                     81: 
                     82:        popl    %ebx                            // restore register variables
                     83:        popl    %edi
                     84:        popl    %esi
                     85:        popl    %ebp                            // restore caller's stack frame pointer
                     86:        ret
                     87: 
                     88: #endif // id386
                     89: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.