Microsoft (R) Macro Assembler Version 6.14.8444		    06/30/00 13:01:25
xtexdl.asm						     Page 1 - 1


				;; THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
				;; PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
				;; TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
				;; INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE 
				;; DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com). 
				;; THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER 
				;; EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
				;; FULL TEXT OF THE NON-WARRANTY PROVISIONS.  
				;; 
				;; USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
				;; RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
				;; TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
				;; AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
				;; SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
				;; THE UNITED STATES.  
				;; 
				;; COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
				;;
				;; $Header$
				;; $Revision$
				;; $Log$
				;; Revision 1.1  2000/06/15 00:27:43  joseph
				;; Initial checkin into SourceForge.
				;;
				;; 
				;; 10    8/17/99 6:35p Atai
				;; fixed amd debug mode
				;; 
				;; 9     4/08/99 1:22p Atai
				;; added contect check for _grTexDownload_3DNow_MMX
				;; 
				;; 8     3/19/99 11:26a Peter
				;; expose direct fifo for gl
				;; 
				;; 7     2/02/99 4:36p Peter
				;; download through lfb rather than texture port
				;; 
				;; 6     12/17/98 2:36p Atai
				;; check in Norbert's fix for texture download width correction
				;; 
				;; 5     12/07/98 11:33a Peter
				;; norbert's re-fixes of my merge
				;; 
				;; 4     11/02/98 5:34p Atai
				;; merge direct i/o code
				;; 
				;; 3     10/20/98 5:34p Atai
				;; added #ifdefs for hwc
				;; 
				;; 2     10/14/98 12:05p Peter
				;; fixed my effed up assumption about non-volatile regs
				;; 
				;; 1     10/09/98 6:48p Peter
				;; 3DNow!(tm) version of wide texture downloads
				;; 
				;; 3     10/07/98 9:43p Peter
				;; triangle procs for 3DNow!(tm)
				;; 
				;; 2     10/05/98 7:43p Peter
				;; 3DNow!(tm) happiness everywhere
				;; 
				;; 1     10/05/98 6:01p Peter
				;; mmx stuff for 3DNow!(tm) capable processors
				;; 
				
				TITLE   xtexdl.asm
				OPTION OLDSTRUCTS
				
				.586P
				.MMX
				.K3D
				    
				ifdef USE_PACKET_FIFO
				EXTRN   __grCommandTransportMakeRoom@12: NEAR
				endif
				IFDEF HAL_CSIM
				EXTRN   _halStore32@8:  NEAR
				ENDIF
				
				;;; Definitions of cvg regs and glide root structures.
				INCLUDE fxgasm.h
			      C 
			      C ;----------------------------------------------------------------------
			      C ; Assembler offsets for SSTREGS struct
			      C ;----------------------------------------------------------------------
			      C 
			      C 
			      C 
			      C ;----------------------------------------------------------------------
			      C ; Assembler offsets for GC struct
			      C ;----------------------------------------------------------------------
			      C 
 = 0074			      C base_ptr		= 00000074h
 = 0078			      C reg_ptr			= 00000078h
 = 0080			      C lfb_ptr			= 00000080h
 = 01E0			      C cull_mode		= 000001e0h
 = 96AC			      C checkPtr			= 000096ach
 = 0124			      C tsuDataList		= 00000124h
 = 0DD8			      C triPacketHdr	= 00000dd8h
 = 0DDC			      C cullStripHdr	= 00000ddch
 = 0DE0			      C paramMask	= 00000de0h
 = 0E04			      C fifoStart	= 00000e04h
 = 0E08			      C fifoEnd	= 00000e08h
 = 0E0C			      C fifoOffset	= 00000e0ch
 = 0E10			      C fifoSize	= 00000e10h
 = 0E14			      C fifoJmpHdr	= 00000e14h
 = 0DE4			      C fifoPtr	= 00000de4h
 = 0DE8			      C fifoRead	= 00000de8h
 = 0DEC			      C fifoRoom	= 00000dech
 = 0E1C			      C roomToReadPtr	= 00000e1ch
 = 0E20			      C roomToEnd	= 00000e20h
 = 0E24			      C lfbLockCount	= 00000e24h
 = 0DC4			      C triSetupProc	= 00000dc4h
 = 0DC8			      C drawTrianglesProc	= 00000dc8h
 = 0DC4			      C drawVertexList	= 00000dc4h
 = 0B70			      C vertexSize	= 00000b70h
 = 0B6C			      C vertexStride	= 00000b6ch
 = 0B78			      C invalid	= 00000b78h
 = 0D98			      C CoordinateSpace	= 00000d98h
 = 01E4			      C paramIndex	= 000001e4h
 = 0B00			      C vp_hwidth	= 00000b00h
 = 0B04			      C vp_hheight	= 00000b04h
 = 0B08			      C vp_hdepth	= 00000b08h
 = 0AF4			      C vp_ox	= 00000af4h
 = 0AF8			      C vp_oy	= 00000af8h
 = 0AFC			      C vp_oz	= 00000afch
 = 0B74			      C colorType	= 00000b74h
 = 0B20			      C wInfo_offset	= 00000b20h
 = 0B54			      C qInfo_mode	= 00000b54h
 = 0B58			      C qInfo_offset	= 00000b58h
 = 0B60			      C q0Info_offset	= 00000b60h
 = 0B68			      C q1Info_offset	= 00000b68h
 = 0B5C			      C q0Info_mode	= 00000b5ch
 = 0B64			      C q1Info_mode	= 00000b64h
 = 0B30			      C fogInfo_offset	= 00000b30h
 = 0B2C			      C fogInfo_mode	= 00000b2ch
 = 0A44			      C depth_range	= 00000a44h
 = 0A0C			      C tmu0_s_scale	= 00000a0ch
 = 0A10			      C tmu0_t_scale	= 00000a10h
 = 0A28			      C tmu1_s_scale	= 00000a28h
 = 0A2C			      C tmu1_t_scale	= 00000a2ch
 = 0210			      C fbi_fbzMode	= 00000210h
 = 004C			      C curTriSize		= 0000004ch
 = 000C			      C trisProcessed		= 0000000ch
 = 0010			      C trisDrawn		= 00000010h
 = 96BC			      C lostContext		= 000096bch
 = 96C4			      C windowed		= 000096c4h
 = 011C			      C bInfo		= 0000011ch
			      C 
			      C ;----------------------------------------------------------------------
			      C ; Assembler offsets for GlideRoot struct
			      C ;----------------------------------------------------------------------
			      C 
 = 0000			      C p6Fencer		= 00000000h
 = 000C			      C current_sst		= 0000000ch
 = 0010			      C CPUType			= 00000010h
 = 0008			      C tlsOffset			= 00000008h
 = 002C			      C pool_f255	= 0000002ch
 = 0028			      C pool_f1	= 00000028h
 = 0BBC			      C SIZEOF_GrState		= 00000bbch
 = 9714			      C SIZEOF_GC		= 00009714h
			      C 
 = 000BCFC4		      C SIZEOF_GlideRoot	= 000bcfc4h
			      C 
			      C 
				
				; Arguments (STKOFF = 16 from 4 dword pushes)
 = 0010				STACKOFFSET = 16
 = 0014				_gc$        =  4 + STACKOFFSET
 = 0018				_baseAddr$  =  8 + STACKOFFSET
 = 001C				_maxS$      = 12 + STACKOFFSET
 = 0020				_minT$      = 16 + STACKOFFSET
 = 0024				_maxT$      = 20 + STACKOFFSET
 = 0028				_texData$   = 24 + STACKOFFSET
				
				    ;; NB: The first set of registers (eax, ecx, and edx) are volatile across
				    ;; function calls. The remaining registers are supposedly non-volatile
				    ;; so they only store things that are non-volatile across the call.
				
 = ebp				fifo    TEXTEQU <ebp>           ; fifo ptr in inner loop
 = esi				gc      TEXTEQU <esi>           ; graphics context
 = edi				dataPtr TEXTEQU <edi>           ; pointer to exture data to be downloaded
 = ebx				curT    TEXTEQU <ebx>           ; counter for texture scan lines (t-coordinate)
 = ecx				curS    TEXTEQU <ecx>           ; texture s-coordinate
 = edx				fRoom   TEXTEQU <edx>           ; room available in fifo (in bytes)
				    
				GR_FIFO_WRITE   MACRO __addr, __offset, __data
				IFDEF HAL_CSIM
				    pushad
    pushfd
    
    push    __data
				    mov     eax, __addr
				    add     eax, __offset
				    push    eax
    call    halStore32@8
				
				    popfd
    popad
ELSE
    mov    [__addr + __offset], __data
				ENDIF
ENDM ; GR_FIFO_WRITE
				
				;--------------------------------------------------------------------------
				
				_TEXT         SEGMENT PAGE PUBLIC USE32 'CODE'
				              ASSUME DS: FLAT, SS: FLAT
				
				              ALIGN  32
				
				              PUBLIC __grTexDownload_3DNow_MMX@24
				
				__grTexDownload_3DNow_MMX@24 PROC NEAR
 00000000			
				    push      ebx                       ; save caller's register variable
				    mov       curT, [esp + _maxT$ - 12] ; curT = maxT
				
				    push      esi                       ; save caller's register variable
				    mov       eax, [esp + _minT$ - 8]   ; minT
				
 00000000			    push      edi                       ; save caller's register variable
				    mov       gc, [esp + _gc$ - 4]      ; gc
 00000000  53			
 00000001  8B 5C 24 18		    push      ebp                       ; save caller's register variable
				    mov       dataPtr, [esp + _texData$]; dataPtr
 00000005  56			
 00000006  8B 44 24 18		IFDEF GLIDE_ALT_TAB
				    test      gc, gc
 0000000A  57			    je        __dlDone
 0000000B  8B 74 24 10		    mov       edx, DWORD PTR [gc+lostContext]
				    mov       ecx, [edx]
 0000000F  55			    test      ecx, 1
 00000010  8B 7C 24 28		    jnz       __dlDone
				ENDIF
				
 00000014  85 F6		    sub       curT, eax                 ; curT = maxT - minT
 00000016  0F 84 0000013C	    mov       fifo, [gc + fifoPtr]      ; fifoPtr
 0000001C  8B 96 000096BC	
 00000022  8B 0A		    mov       curS, [esp + _maxS$]      ; curS = maxS 
 00000024  F7 C1 00000001	    add       curT, 1                   ; curT = maxT - minT + 1
 0000002A  0F 85 00000128	
				    femms                               ; we'll use MMX/3DNow!, make sure FPU register cleared
				
 00000030  2B D8		    mov       edx, curS                 ; curS = maxS = scanline width in DWORDs
 00000032  8B AE 00000DE4	    movd      mm3, [esp + _baseAddr$]   ; 0 | address of texture to download
				
 00000038  8B 4C 24 1C		    shl       curS, 2                   ; scan line width (in bytes)
 0000003C  83 C3 01		    mov       eax, [esp + _minT$]       ; 0 | minT
				
 0000003F  0F 0E		    mov       [esp + _maxS$], curS      ; save scan line width (in bytes)
				    shl       edx, 3                    ; packetHdr<21:3> = maxS = scanline width in DWORDs
 00000041  8B D1		
 00000043  0F 6E 5C 24 18	    imul      eax, curS                 ; TEX_ROW_ADDR_INCR(minT) = minT * TEX_ROW_ADDR_INCR(1)
				
 00000048  C1 E1 02		    movd      mm2, curS                 ; 0 | TEX_ROW_ADDR_INCR(1)
 0000004B  8B 44 24 20		    or        edx, 00000005h            ; packetHdr<31:30> = lfb port
				                                        ; packetHdr<21:3>  = maxS
 0000004F  89 4C 24 1C		                                        ; packetHdr<2:0>   = packetType 5 
 00000053  C1 E2 03		
				    movd      mm1, edx                  ; 0 | packetHdr
 00000056  0F AF C1		    movd      mm4, eax                  ; 0 | TEX_ROW_ADDR_INCR(minT)
				
 00000059  0F 6E D1		    psllq     mm2, 32                   ; TEX_ROW_ADDR_INCR(1) | 0
 0000005C  83 CA 05		    paddd     mm3, mm4                  ; 0 | texAddr = texBaseAddr + TEX_ROW_ADDR_INCR(minT)
				
				    mov       fRoom, [gc + fifoRoom]    ; get available fifoRoom (in bytes)
				    punpckldq mm1, mm3                  ; hdr2 = texAddr | hdr1 = packetHdr
 0000005F  0F 6E CA		
 00000062  0F 6E E0		    ;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo, ecx = curS = maxS
				    ;; edx = fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
 00000065  0F 73 F2/ 20		
 00000069  0F FE DC		    test      fifo, 4                   ; is fifo QWORD aligned ?
				    jz        __startDownload           ; yup, start texture download
 0000006C  8B 96 00000DEC	
 00000072  0F 62 CB		    cmp       fRoom, 4                  ; enough room for NULL packet in fifo?
				    jge       __mmxAlignFifo            ; yes, write NULL packet to align fifo
				
				ifdef USE_PACKET_FIFO
				    push      @Line                     ; Line # inside this function
 00000075  F7 C5 00000004	    push      0                         ; NULL file name
 0000007B  0F 84 000000B1	
				    push      4                         ; fifo space required (bytes)
 00000081  83 FA 04		    call      __grCommandTransportMakeRoom@12 ; make fifo room
 00000084  7D 2A		endif
				    
				    mov       fifo, [gc + fifoPtr]      ; fifoPtr modified by _grCommandTransportMakeRoom, reload
 00000086  68 000000C4		
 0000008B  6A 00		    mov       fRoom, [gc + fifoRoom]    ; fifoRoom modified by _grCommandTransportMakeRoom, reload
				    mov       curS, [esp + _maxS$]      ; reload maxS (destroyed by call to _grCommandTransportMakeRoom)
 0000008D  6A 04		
 0000008F  E8 00000000 E	    test      fifo, 4                   ; new fifoPtr QWORD aligned ?
				    jz        __startDownload           ; yup, start texture download
				
 00000094  8B AE 00000DE4	__mmxAlignFifo:
				
 0000009A  8B 96 00000DEC	    mov       DWORD PTR [fifo], 0       ; write NULL packet
 000000A0  8B 4C 24 1C		    sub       fRoom, 4                  ; fifoRoom -= 4
				
 000000A4  F7 C5 00000004	    mov       [gc + fifoRoom], fRoom    ; store new fifoRoom
 000000AA  0F 84 00000082	    add       fifo, 4                   ; fifoPtr += 4
				
 000000B0			IFDEF GLIDE_DEBUG
				    mov       [gc + checkPtr], fifo      ; checkPtr
 000000B0  C7 45 00		ENDIF
	   00000000
 000000B7  83 EA 04		
				    mov       [gc + fifoPtr], fifo      ; store new fifoPtr
 000000BA  89 96 00000DEC	    jmp       __startDownload           ; fifo aligned, download texture now
 000000C0  83 C5 04		
				    align 32
				
 000000C3  89 AE 000096AC	    ;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo, ecx = maxS = curS
				    ;; edx=fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
				
 000000C9  89 AE 00000DE4	__loopT:
 000000CF  EB 61		
				IFDEF GLIDE_DEBUG
				
				    ;; Make sure that we have a QWORD aligned fifoPtr; force GP if not aligned
				
				    test      fifo, 4                   ; is fifoPtr QWORD aligned ?
				    jz        __alignmentOK             ; yup, continue
 000000E0			
				    xor       eax, eax                  ; create 0
				    mov       [eax], eax                ; move to DS:[0] forces GP 
				__alignmentOK:      
				ENDIF ; GLIDE_DEBUG
				
 000000E0  F7 C5 00000004	    ;; Compute packet header words
 000000E6  74 04		    ;;  hdr1: downloadSpace[31:30] numWords[21:3] packetType[2:0]
				    ;;  hdr2: download address[29:0]
 000000E8  33 C0		
 000000EA  89 00		    movq      [fifo], mm1               ; store hdr2 | hdr1
 000000EC			    add       fifo, 8                   ; increment fifo ptr (hdr1 + hdr2)
				
				    ;; S coordinate inner loop unrolled for 8 texels a write
				
				__loopS:        
				
				    movq      mm0, [dataPtr]            ; load 64 bit data (8 texels)
 000000EC  0F 7F 4D 00		    add       fifo, 8                   ; pre-increment fifoPtr += 2 * sizeof(FxU32)
 000000F0  83 C5 08		
				    add       dataPtr, 8                ; dataPtr += 2 * sizeof(FxU32)
				    sub       curS, 8                   ; curS -= 2 * sizeof(FxU32)
				
 000000F3			    movq      [fifo - 8], mm0           ; *fifoPtr = texelData[64 bits]
				    jnz       __loopS                   ; loop while curS > 0
 000000F3  0F 6F 07		
 000000F6  83 C5 08		    mov       ecx, [gc + fifoPtr]       ; old fifo ptr
				    nop                                 ; filler
 000000F9  83 C7 08		
 000000FC  83 E9 08		    mov       eax, fifo                 ; new fifo ptr
				    mov       [gc + fifoPtr], fifo      ; save new fifo ptr
 000000FF  0F 7F 45 F8		
 00000103  75 EE		IFDEF GLIDE_DEBUG
				    mov       [gc + checkPtr], fifo      ; checkPtr
 00000105  8B 8E 00000DE4	ENDIF
 0000010B  90			
				    sub       eax, ecx                  ; new fifo ptr - old fifo ptr = fifo space used up
 0000010C  8B C5		    mov       curS, [esp + _maxS$]      ; curS = maxS = width of scanline (bytes)
 0000010E  89 AE 00000DE4	
				    sub       fRoom, eax                ; new fifo space available = old fifo space available - fifo space used up = new fifo space available
				    sub       curT, 1                   ; curT--
 00000114  89 AE 000096AC	
				    mov       [gc + fifoRoom], fRoom    ; save new fifo space available 
				    jz        __dlDone                  ; loop while curT > 0
 0000011A  2B C1		
 0000011C  8B 4C 24 1C		    ;; Check for room to write the next texture scanline
				
 00000120  2B D0		    ;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo
 00000122  83 EB 01		    ;; edx = fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
				
 00000125  89 96 00000DEC	    paddd     mm1, mm2                  ; texAddr+=TEX_ROW_ADDR_INCR(1) | packetHdr
 0000012B  74 2B		    mov       esp, esp                  ; filler
				__startDownload:
				    lea       eax, [curS+8]             ; fifo space needed = scan line width + header size
				 
				    cmp       fRoom, eax                ; fifo space available >= fifo space required ?
				    jge       __loopT                   ; yup, write next scan line
				
 0000012D  0F FE CA		ifdef USE_PACKET_FIFO
 00000130  8B E4		    push      @Line                     ; Line # inside this function
 00000132			    push      0h                        ; NULL file name
 00000132  8D 41 08		
				    push      eax                       ; fifo space required
 00000135  3B D0		    call      __grCommandTransportMakeRoom@12 ; make fifo room (if fifoPtr QWORD aligned before
 00000137  7D A7		endif
				    
				    mov       fifo, [gc + fifoPtr]      ; fifoPtr was modified by _grCommandTransportMakeRoom, reload
 00000139  68 0000012A		
 0000013E  6A 00		    mov       fRoom, [gc + fifoRoom]    ; fifoRoom was modified by _grCommandTransportMakeRoom, reload
				    mov       curS, [esp + _maxS$]      ; curS = maxS = width of scanline (bytes)
 00000140  50			    jmp       __loopT                   ; we now have enough fifo room, write next scanline
 00000141  E8 00000000 E	
				__dlDone:           
				
 00000146  8B AE 00000DE4	    femms                               ; exit 3DNow!(tm) state
				    
 0000014C  8B 96 00000DEC	    pop       ebp                       ; restore caller's register variable
 00000152  8B 4C 24 1C		    pop       edi                       ; restore caller's register variable
 00000156  EB 88		    
				    pop       esi                       ; restore caller's register variable
 00000158			    pop       ebx                       ; restore caller's register variable
				    
 00000158  0F 0E		    ret       24                        ; pop 6 DWORD parameters and return
				
 0000015A  5D			__grTexDownload_3DNow_MMX@24 ENDP
 0000015B  5F			
				_TEXT ENDS
 0000015C  5E			
 0000015D  5B			END
 0000015E  C2 0018
 00000161
 0161
Microsoft (R) Macro Assembler Version 6.14.8444		    06/30/00 13:01:25
xtexdl.asm						     Symbols 2 - 1




Macros:

                N a m e                 Type

GR_FIFO_WRITE  . . . . . . . . .	Proc


Segments and Groups:

                N a m e                 Size     Length   Align   Combine Class

FLAT . . . . . . . . . . . . . .	GROUP
_TEXT  . . . . . . . . . . . . .	32 Bit	 0161	  Page	  Public  'CODE'	


Procedures,  parameters and locals:

                N a m e                 Type     Value    Attr

__grTexDownload_3DNow_MMX@24 . .	P Near	 0000	  _TEXT	Length= 0161 Public
  __mmxAlignFifo . . . . . . . .	L Near	 00B0	  _TEXT	
  __loopT  . . . . . . . . . . .	L Near	 00E0	  _TEXT	
  __alignmentOK  . . . . . . . .	L Near	 00EC	  _TEXT	
  __loopS  . . . . . . . . . . .	L Near	 00F3	  _TEXT	
  __startDownload  . . . . . . .	L Near	 0132	  _TEXT	
  __dlDone . . . . . . . . . . .	L Near	 0158	  _TEXT	


Symbols:

                N a m e                 Type     Value    Attr

CPUType  . . . . . . . . . . . .	Number	 0010h	 
CoordinateSpace  . . . . . . . .	Number	 0D98h	 
GDBG_INFO_ON . . . . . . . . . .	Text   	 
GLIDE_ALT_TAB  . . . . . . . . .	Text   	 
GLIDE_DEBUG  . . . . . . . . . .	Text   	 
GLIDE_INIT_HWC . . . . . . . . .	Text   	 
GLIDE_PACKED_RGB . . . . . . . .	Text   	 0
GLIDE_TRI_CULLING  . . . . . . .	Text   	 1
GL_AMD3D . . . . . . . . . . . .	Text   	 
MM0  . . . . . . . . . . . . . .	Text   	 MM(0)
MM1  . . . . . . . . . . . . . .	Text   	 MM(1)
MM2  . . . . . . . . . . . . . .	Text   	 MM(2)
MM3  . . . . . . . . . . . . . .	Text   	 MM(3)
MM4  . . . . . . . . . . . . . .	Text   	 MM(4)
MM5  . . . . . . . . . . . . . .	Text   	 MM(5)
MM6  . . . . . . . . . . . . . .	Text   	 MM(6)
MM7  . . . . . . . . . . . . . .	Text   	 MM(7)
Mm0  . . . . . . . . . . . . . .	Text   	 MM(0)
Mm1  . . . . . . . . . . . . . .	Text   	 MM(1)
Mm2  . . . . . . . . . . . . . .	Text   	 MM(2)
Mm3  . . . . . . . . . . . . . .	Text   	 MM(3)
Mm4  . . . . . . . . . . . . . .	Text   	 MM(4)
Mm5  . . . . . . . . . . . . . .	Text   	 MM(5)
Mm6  . . . . . . . . . . . . . .	Text   	 MM(6)
Mm7  . . . . . . . . . . . . . .	Text   	 MM(7)
SIZEOF_GC  . . . . . . . . . . .	Number	 9714h	 
SIZEOF_GlideRoot . . . . . . . .	Number	 000BCFC4h   
SIZEOF_GrState . . . . . . . . .	Number	 0BBCh	 
STACKOFFSET  . . . . . . . . . .	Number	 0010h	 
USE_PACKET_FIFO  . . . . . . . .	Text   	 1
__grCommandTransportMakeRoom@12 	L Near	 0000	  External
_baseAddr$ . . . . . . . . . . .	Number	 0018h	 
_gc$ . . . . . . . . . . . . . .	Number	 0014h	 
_maxS$ . . . . . . . . . . . . .	Number	 001Ch	 
_maxT$ . . . . . . . . . . . . .	Number	 0024h	 
_minT$ . . . . . . . . . . . . .	Number	 0020h	 
_texData$  . . . . . . . . . . .	Number	 0028h	 
bInfo  . . . . . . . . . . . . .	Number	 011Ch	 
base_ptr . . . . . . . . . . . .	Number	 0074h	 
checkPtr . . . . . . . . . . . .	Number	 96ACh	 
colorType  . . . . . . . . . . .	Number	 0B74h	 
cullStripHdr . . . . . . . . . .	Number	 0DDCh	 
cull_mode  . . . . . . . . . . .	Number	 01E0h	 
curS . . . . . . . . . . . . . .	Text   	 ecx
curTriSize . . . . . . . . . . .	Number	 004Ch	 
curT . . . . . . . . . . . . . .	Text   	 ebx
current_sst  . . . . . . . . . .	Number	 000Ch	 
dataPtr  . . . . . . . . . . . .	Text   	 edi
depth_range  . . . . . . . . . .	Number	 0A44h	 
drawTrianglesProc  . . . . . . .	Number	 0DC8h	 
drawVertexList . . . . . . . . .	Number	 0DC4h	 
fRoom  . . . . . . . . . . . . .	Text   	 edx
fbi_fbzMode  . . . . . . . . . .	Number	 0210h	 
fifoEnd  . . . . . . . . . . . .	Number	 0E08h	 
fifoJmpHdr . . . . . . . . . . .	Number	 0E14h	 
fifoOffset . . . . . . . . . . .	Number	 0E0Ch	 
fifoPtr  . . . . . . . . . . . .	Number	 0DE4h	 
fifoRead . . . . . . . . . . . .	Number	 0DE8h	 
fifoRoom . . . . . . . . . . . .	Number	 0DECh	 
fifoSize . . . . . . . . . . . .	Number	 0E10h	 
fifoStart  . . . . . . . . . . .	Number	 0E04h	 
fifo . . . . . . . . . . . . . .	Text   	 ebp
fogInfo_mode . . . . . . . . . .	Number	 0B2Ch	 
fogInfo_offset . . . . . . . . .	Number	 0B30h	 
gc . . . . . . . . . . . . . . .	Text   	 esi
invalid  . . . . . . . . . . . .	Number	 0B78h	 
lfbLockCount . . . . . . . . . .	Number	 0E24h	 
lfb_ptr  . . . . . . . . . . . .	Number	 0080h	 
lostContext  . . . . . . . . . .	Number	 96BCh	 
mM0  . . . . . . . . . . . . . .	Text   	 MM(0)
mM1  . . . . . . . . . . . . . .	Text   	 MM(1)
mM2  . . . . . . . . . . . . . .	Text   	 MM(2)
mM3  . . . . . . . . . . . . . .	Text   	 MM(3)
mM4  . . . . . . . . . . . . . .	Text   	 MM(4)
mM5  . . . . . . . . . . . . . .	Text   	 MM(5)
mM6  . . . . . . . . . . . . . .	Text   	 MM(6)
mM7  . . . . . . . . . . . . . .	Text   	 MM(7)
mm0  . . . . . . . . . . . . . .	Text   	 MM(0)
mm1  . . . . . . . . . . . . . .	Text   	 MM(1)
mm2  . . . . . . . . . . . . . .	Text   	 MM(2)
mm3  . . . . . . . . . . . . . .	Text   	 MM(3)
mm4  . . . . . . . . . . . . . .	Text   	 MM(4)
mm5  . . . . . . . . . . . . . .	Text   	 MM(5)
mm6  . . . . . . . . . . . . . .	Text   	 MM(6)
mm7  . . . . . . . . . . . . . .	Text   	 MM(7)
p6Fencer . . . . . . . . . . . .	Number	 0000h	 
paramIndex . . . . . . . . . . .	Number	 01E4h	 
paramMask  . . . . . . . . . . .	Number	 0DE0h	 
pool_f1  . . . . . . . . . . . .	Number	 0028h	 
pool_f255  . . . . . . . . . . .	Number	 002Ch	 
q0Info_mode  . . . . . . . . . .	Number	 0B5Ch	 
q0Info_offset  . . . . . . . . .	Number	 0B60h	 
q1Info_mode  . . . . . . . . . .	Number	 0B64h	 
q1Info_offset  . . . . . . . . .	Number	 0B68h	 
qInfo_mode . . . . . . . . . . .	Number	 0B54h	 
qInfo_offset . . . . . . . . . .	Number	 0B58h	 
reg_ptr  . . . . . . . . . . . .	Number	 0078h	 
roomToEnd  . . . . . . . . . . .	Number	 0E20h	 
roomToReadPtr  . . . . . . . . .	Number	 0E1Ch	 
tlsOffset  . . . . . . . . . . .	Number	 0008h	 
tmu0_s_scale . . . . . . . . . .	Number	 0A0Ch	 
tmu0_t_scale . . . . . . . . . .	Number	 0A10h	 
tmu1_s_scale . . . . . . . . . .	Number	 0A28h	 
tmu1_t_scale . . . . . . . . . .	Number	 0A2Ch	 
triPacketHdr . . . . . . . . . .	Number	 0DD8h	 
triSetupProc . . . . . . . . . .	Number	 0DC4h	 
trisDrawn  . . . . . . . . . . .	Number	 0010h	 
trisProcessed  . . . . . . . . .	Number	 000Ch	 
tsuDataList  . . . . . . . . . .	Number	 0124h	 
vertexSize . . . . . . . . . . .	Number	 0B70h	 
vertexStride . . . . . . . . . .	Number	 0B6Ch	 
vp_hdepth  . . . . . . . . . . .	Number	 0B08h	 
vp_hheight . . . . . . . . . . .	Number	 0B04h	 
vp_hwidth  . . . . . . . . . . .	Number	 0B00h	 
vp_ox  . . . . . . . . . . . . .	Number	 0AF4h	 
vp_oy  . . . . . . . . . . . . .	Number	 0AF8h	 
vp_oz  . . . . . . . . . . . . .	Number	 0AFCh	 
wInfo_offset . . . . . . . . . .	Number	 0B20h	 
windowed . . . . . . . . . . . .	Number	 96C4h	 

	   0 Warnings
	   0 Errors
