Annotation of quakeworld/client/d_scana.s, revision 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.