diff -ruN -x Makefile.in -x configure glide2.orig/README glide2/README
--- build-tree.orig/glide2x/README	Fri Jan 28 16:09:54 2000
--- build-tree/glide2x/README	Sat Jul 29 18:00:33 2000
@@ -5,7 +5,6 @@
 here is a quick list.
 
 sst1:  Voodoo Graphics
-sst96: Voodoo Rush
 cvg:   Voodoo 2
 h3:    Voodoo Banshee/Voodoo 3
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/oem/makefile glide2/cvg/glide/oem/makefile
--- build-tree.orig/glide2x/cvg/glide/oem/makefile	Tue Dec  7 16:49:07 1999
--- build-tree/glide2x/cvg/glide/oem/makefile	Sat Jul 29 18:26:58 2000
@@ -17,11 +17,7 @@
 # 
 # COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
 
-!if "$(FX_GLIDE_HW)" == "SST96"
-GLIDE_SRC_BASE  =       sst1
-!else
 GLIDE_SRC_BASE  =       $(FX_GLIDE_HW)
-!endif
 LCINCS          =       $(LCINCS) -I$(BUILD_ROOT)\$(GLIDE_SRC_BASE)\include \
                         -I$(BUILD_ROOT)\$(GLIDE_SRC_BASE)\glide\src
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/oem/makefile.linux glide2/cvg/glide/oem/makefile.linux
--- build-tree.orig/glide2x/cvg/glide/oem/makefile.linux	Thu Jan  6 15:35:11 2000
--- build-tree/glide2x/cvg/glide/oem/makefile.linux	Sat Jul 29 18:27:03 2000
@@ -17,11 +17,7 @@
 # 
 # COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
 
-ifeq ($(FX_GLIDE_HW),SST96)
-GLIDE_SRC_BASE  =       sst1
-else
 GLIDE_SRC_BASE  =       $(FX_GLIDE_HW)
-endif
 LCINCS          +=      -I$(BUILD_ROOT)\$(GLIDE_SRC_BASE)/include \
                         -I$(BUILD_ROOT)/$(GLIDE_SRC_BASE)/glide/src
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/fxgasm.c glide2/cvg/glide/src/fxgasm.c
--- build-tree.orig/glide2x/cvg/glide/src/fxgasm.c	Fri Jan 14 19:08:22 2000
--- build-tree/glide2x/cvg/glide/src/fxgasm.c	Sat Jul 29 18:28:41 2000
@@ -70,12 +70,6 @@
         printf("%s\t .EQU %08x\n",pname,((int)&p.o)-(int)&p); \
     else printf("%s\t .EQU %10d\n",pname,((int)&p.o)-(int)&p)
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define HWOFFSET(p, o, pname) if (hex) \
-        printf("%s\t .EQU %08x\n",pname,(((int) &p.o)-(int)&p)>>2);\
-    else printf("%s\t .EQU %10d\n",pname,(((int)&p.o)-(int)&p))
-#endif /* (GLIDE_PLATFORM & GLIDE_HW_SST96) */
-
 #define OFFSET2(p,o,pname) if (hex) \
         printf("%s\t .EQU %08x\n",pname,((int)&o)-(int)&p); \
     else printf("%s\t .EQU %10d\n",pname,((int)&o)-(int)&p)
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/fxglide.h glide2/cvg/glide/src/fxglide.h
--- build-tree.orig/glide2x/cvg/glide/src/fxglide.h	Tue Dec  7 16:49:09 1999
--- build-tree/glide2x/cvg/glide/src/fxglide.h	Sat Jul 29 18:28:48 2000
@@ -868,8 +868,6 @@
 
 #if   (GLIDE_PLATFORM & GLIDE_HW_SST1)
 #define GLIDE_DRIVER_NAME "Voodoo Graphics"
-#elif (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define GLIDE_DRIVER_NAME "Voodoo Rush"
 #elif (GLIDE_PLATFORM & GLIDE_HW_CVG)
 #define GLIDE_DRIVER_NAME "Voodoo"
 #else 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/glide.h glide2/cvg/glide/src/glide.h
--- build-tree.orig/glide2x/cvg/glide/src/glide.h	Tue Dec  7 16:49:10 1999
--- build-tree/glide2x/cvg/glide/src/glide.h	Sat Jul 29 18:29:27 2000
@@ -706,7 +706,6 @@
 
 typedef int GrSstType;
 #define GR_SSTTYPE_VOODOO    0
-#define GR_SSTTYPE_SST96     1
 #define GR_SSTTYPE_AT3D      2
 #define GR_SSTTYPE_Voodoo2   3
 
@@ -723,12 +722,6 @@
   GrTMUConfig_t tmuConfig[GLIDE_NUM_TMU];   /* Configuration of the Texelfx chips */
 } GrVoodooConfig_t;
 
-typedef struct GrSst96Config_St {
-  int   fbRam;                  /* How much? */
-  int   nTexelfx;
-  GrTMUConfig_t tmuConfig;
-} GrSst96Config_t;
-
 typedef GrVoodooConfig_t GrVoodoo2Config_t;
 
 typedef struct GrAT3DConfig_St {
@@ -741,7 +734,6 @@
     GrSstType type;             /* Which hardware is it? */
     union SstBoard_u {
       GrVoodooConfig_t  VoodooConfig;
-      GrSst96Config_t   SST96Config;
       GrAT3DConfig_t    AT3DConfig;
       GrVoodoo2Config_t Voodoo2Config;
     } sstBoard;
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/glidesys.h glide2/cvg/glide/src/glidesys.h
--- build-tree.orig/glide2x/cvg/glide/src/glidesys.h	Tue Dec  7 16:49:10 1999
--- build-tree/glide2x/cvg/glide/src/glidesys.h	Sat Jul 29 18:31:37 2000
@@ -69,7 +69,6 @@
 /* Hardware Type is stored in bits [9:13] */
 #define GLIDE_HW_SHIFT          9
 #define GLIDE_HW_SST1           (0x1 << GLIDE_HW_SHIFT)
-#define GLIDE_HW_SST96          (0x2 << GLIDE_HW_SHIFT)
 #define GLIDE_HW_H3             (0x4 << GLIDE_HW_SHIFT)
 #define GLIDE_HW_CVG            (0x10 << GLIDE_HW_SHIFT)
 
@@ -106,9 +105,7 @@
 #define GLIDE_SST       GLIDE_SST_HW
 
 /* Check for type of hardware */
-#ifdef SST96
-#  define GLIDE_HW        GLIDE_HW_SST96
-#elif defined(H3)
+#if defined(H3)
 #  define GLIDE_HW        GLIDE_HW_H3
 #elif defined(CVG)
 #  define GLIDE_HW        GLIDE_HW_CVG
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/gpci.c glide2/cvg/glide/src/gpci.c
--- build-tree.orig/glide2x/cvg/glide/src/gpci.c	Tue Dec  7 16:49:10 1999
--- build-tree/glide2x/cvg/glide/src/gpci.c	Sat Jul 29 18:31:44 2000
@@ -498,11 +498,6 @@
                 hwc->SSTs[i].sstBoard.VoodooConfig.tmuConfig[tmuNum].tmuRev,
                 hwc->SSTs[i].sstBoard.VoodooConfig.tmuConfig[tmuNum].tmuRam);
     }
-  } else if (hwc->SSTs[i].type == GR_SSTTYPE_SST96) {
-    GDBG_INFO(80,"SST board %d: 3Dfx Voodoo Rush\n", i);
-    GDBG_INFO(80,"\tFBI Jr. with %d MB Frame Buffer\n",
-              hwc->SSTs[i].sstBoard.SST96Config.fbRam);
-    GDBG_INFO(80,"\tTexelfx chips:  1\n");
   } else {
     GDBG_INFO(80,"error: SSTs %d: unknown type\n",i);
   }
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/gsst.c glide2/cvg/glide/src/gsst.c
--- build-tree.orig/glide2x/cvg/glide/src/gsst.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/src/gsst.c	Sat Jul 29 18:32:09 2000
@@ -322,10 +322,6 @@
 
 #include <glidesys.h>
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96) 
-#include <init.h>
-#endif
-
 #define FX_DLL_DEFINITION
 #include <fxdll.h>
 #include <glide.h>
@@ -1745,63 +1741,7 @@
             code, _GlideRoot.windowsInit);
   
   if (_GlideRoot.windowsInit && gc->open) {
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-    /* For VG96, windows haven't been created, so there's no point
-     * trying to control it. 
-     */
-    
-    /* Believe it or not, the following code really should be bracketed
-       like this.  The reason is that GR_BEGIN_NOFIFOCHECK seg faults
-       when grSstControl is called before the Glide window is truly
-       initialized.  This is a real concern, as grSstControl is called
-       from event loops, which are asynchronous.
-       */
-    FxU32
-      status,
-      xRes, yRes,
-      clipLeftRight, clipBottomTop;
-    
-    GR_BEGIN_NOFIFOCHECK(FN_NAME,80);
-    
-    xRes = initControl(code);
-    
-    GDBG_INFO((80, "%s:  initControl returned 0x%x\n", FN_NAME, xRes));
-
-    if (!xRes) return FXFALSE;
-  
-    yRes = xRes >> 16;
-    xRes = xRes & 0xffff;
-  
-    /* !! FIXME +++ this call should properly update the gc->fbStride,
-       this information is known only to the init layer and needs to be
-       exposed, it is only really necessary to lfblock right now,
-       and therefore is returned by initGetBufferPtr */
-  
-    gc->state.screen_width = xRes;
-    gc->state.screen_height = yRes;
-
-    /* Wait for Idle. */
-  
-    nTries = 0;
-    do {
-      if (nTries++ > 999) {
-        GDBG_INFO((80, "%s:  returning FALSE after %d checks for idle\n", 
-                   FN_NAME, nTries));
-        return FXFALSE;
-      }
-
-      status = GET(hw->status);
-        
-    } while (status & 0x1);
-
-    /* Set ClipRect Via direct writes */
-    _grClipNormalizeAndGenerateRegValues(0, 0, xRes, yRes,
-                                         &clipLeftRight,
-                                         &clipBottomTop);
-    SET_DIRECT(clipLeftRight1, clipLeftRight);
-    SET_DIRECT(clipBottomTop1, clipBottomTop);
-
-#elif (GLIDE_PLATFORM&GLIDE_HW_SST1)
+#if (GLIDE_PLATFORM&GLIDE_HW_SST1)
     return initControl(code);
 #elif (GLIDE_PLATFORM & GLIDE_HW_CVG) && !GLIDE_INIT_HAL
     {
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/src/readme glide2/cvg/glide/src/readme
--- build-tree.orig/glide2x/cvg/glide/src/readme	Tue Dec  7 16:49:11 1999
--- build-tree/glide2x/cvg/glide/src/readme	Sat Jul 29 18:32:15 2000
@@ -34,8 +34,6 @@
         GLIDE_HW_*:
         GLIDE_HW_SST1:
                 This macro is for compiling 
-        GLIDE_HW_SST96:
-                This macro is for compiling Glide for SST96
         GLIDE_HW_H3:
                 This macro is for compiling Glide for H3
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/h3dtst02.c glide2/cvg/glide/tests/h3dtst02.c
--- build-tree.orig/glide2x/cvg/glide/tests/h3dtst02.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/h3dtst02.c	Sat Jul 29 18:25:51 2000
@@ -151,7 +151,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-//        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
           tlGetDimsByConst(resolution,
                            &scrWidth, 
                            &scrHeight );
@@ -160,7 +159,6 @@
 #else
           grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
 #endif
-//        }
 
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/qatest00.c glide2/cvg/glide/tests/qatest00.c
--- build-tree.orig/glide2x/cvg/glide/tests/qatest00.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/qatest00.c	Sat Jul 29 18:25:51 2000
@@ -480,15 +480,6 @@
     tlConRender();
     grBufferSwap( 1 );
 
-    /* dynamic resizing */
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
-
     /* handle any keyboard input */
     while( tlKbHit() )
     {
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/qatest01.c glide2/cvg/glide/tests/qatest01.c
--- build-tree.orig/glide2x/cvg/glide/tests/qatest01.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/qatest01.c	Sat Jul 29 18:25:51 2000
@@ -152,14 +152,6 @@
     }
    
     grBufferSwap( 1 );
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
-
     if ( tlKbHit() ) frames = 0;
   }
   grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER ); 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test00.c glide2/cvg/glide/tests/test00.c
--- build-tree.orig/glide2x/cvg/glide/tests/test00.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test00.c	Sat Jul 29 18:25:51 2000
@@ -111,13 +111,6 @@
     tlConRender();
     grBufferSwap( 1 );
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
     /* grab the frame buffer */
     if (scrgrab) {
       if (!tlScreenDump(filename, (FxU16)scrWidth, (FxU16)scrHeight))
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test01.c glide2/cvg/glide/tests/test01.c
--- build-tree.orig/glide2x/cvg/glide/tests/test01.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test01.c	Sat Jul 29 18:25:51 2000
@@ -114,13 +114,6 @@
     int i;
     GrVertex vtx;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
     grBufferClear( 0x0, 0, GR_WDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test02.c glide2/cvg/glide/tests/test02.c
--- build-tree.orig/glide2x/cvg/glide/tests/test02.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test02.c	Sat Jul 29 18:25:51 2000
@@ -113,14 +113,6 @@
         int i;
         GrVertex vtxA, vtxB;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution, 
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         for( i = 0; i < 100; i++ ) {
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test03.c glide2/cvg/glide/tests/test03.c
--- build-tree.orig/glide2x/cvg/glide/tests/test03.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test03.c	Sat Jul 29 18:25:51 2000
@@ -110,15 +110,6 @@
     while( frames-- && tlOkToRender() ) {
         GrVertex vtxA, vtxB;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.0f ), vtxA.y = tlScaleY( 0.0f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test04.c glide2/cvg/glide/tests/test04.c
--- build-tree.orig/glide2x/cvg/glide/tests/test04.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test04.c	Sat Jul 29 18:25:51 2000
@@ -110,14 +110,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.3f ), vtxA.y = tlScaleY( 0.3f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test05.c glide2/cvg/glide/tests/test05.c
--- build-tree.orig/glide2x/cvg/glide/tests/test05.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test05.c	Sat Jul 29 18:25:51 2000
@@ -117,13 +117,6 @@
     GrVertex vtxA, vtxB, vtxC;
     float zDist;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-      
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    }
     grBufferClear( 0x00, 0, GR_ZDEPTHVALUE_FARTHEST );
 
     vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test06.c glide2/cvg/glide/tests/test06.c
--- build-tree.orig/glide2x/cvg/glide/tests/test06.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test06.c	Sat Jul 29 18:25:51 2000
@@ -113,14 +113,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float wDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test07.c glide2/cvg/glide/tests/test07.c
--- build-tree.orig/glide2x/cvg/glide/tests/test07.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test07.c	Sat Jul 29 18:25:51 2000
@@ -118,14 +118,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test08.c glide2/cvg/glide/tests/test08.c
--- build-tree.orig/glide2x/cvg/glide/tests/test08.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test08.c	Sat Jul 29 18:25:51 2000
@@ -117,14 +117,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float wDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.0f ), vtxA.y = tlScaleY( 0.0f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test09.c glide2/cvg/glide/tests/test09.c
--- build-tree.orig/glide2x/cvg/glide/tests/test09.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test09.c	Sat Jul 29 18:25:51 2000
@@ -122,14 +122,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         switch( chromaColor ) {
         case RED:
             tlConOutput( "Chromakey RED \r" );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test10.c glide2/cvg/glide/tests/test10.c
--- build-tree.orig/glide2x/cvg/glide/tests/test10.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test10.c	Sat Jul 29 18:25:51 2000
@@ -118,14 +118,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         switch( cullMode ) {
         case GR_CULL_POSITIVE:
             tlConOutput( "CULL POSITIVE\r" );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test11.c glide2/cvg/glide/tests/test11.c
--- build-tree.orig/glide2x/cvg/glide/tests/test11.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test11.c	Sat Jul 29 18:25:51 2000
@@ -122,14 +122,6 @@
         GrLfbInfo_t info;
         int startX, startY;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         /* prepare info structure */
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test12.c glide2/cvg/glide/tests/test12.c
--- build-tree.orig/glide2x/cvg/glide/tests/test12.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test12.c	Sat Jul 29 18:25:51 2000
@@ -175,14 +175,6 @@
                     "Press any other key to quit\n"
     };
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
     grRenderBuffer( GR_BUFFER_BACKBUFFER );
     grBufferClear( 0, 0, 0 );
     grRenderBuffer( GR_BUFFER_FRONTBUFFER );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test13.c glide2/cvg/glide/tests/test13.c
--- build-tree.orig/glide2x/cvg/glide/tests/test13.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test13.c	Sat Jul 29 18:25:51 2000
@@ -121,14 +121,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.5f ), vtxA.y = tlScaleY( 0.1f );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test14.c glide2/cvg/glide/tests/test14.c
--- build-tree.orig/glide2x/cvg/glide/tests/test14.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test14.c	Sat Jul 29 18:25:51 2000
@@ -122,14 +122,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float zDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         if ( ( zBias > MAX_ZBIAS ) || 
              ( zBias < MIN_ZBIAS ) ) {
             zDelta = -zDelta;
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test15.c glide2/cvg/glide/tests/test15.c
--- build-tree.orig/glide2x/cvg/glide/tests/test15.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test15.c	Sat Jul 29 18:25:51 2000
@@ -123,14 +123,6 @@
         GrVertex vtxA, vtxB, vtxC;
         int minx, miny, maxx, maxy;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grClipWindow( (int)tlScaleX(0.0f),(int)tlScaleY(0.0f),
                       (int)tlScaleX(1.0f),(int)tlScaleY(1.0f) );
         grBufferClear( BLACK, 0, GR_ZDEPTHVALUE_FARTHEST );
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test16.c glide2/cvg/glide/tests/test16.c
--- build-tree.orig/glide2x/cvg/glide/tests/test16.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test16.c	Sat Jul 29 18:25:51 2000
@@ -122,14 +122,6 @@
         static int render;
         static int frame = 1;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( BLACK, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* Draw 10x10 grid of triangles */
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test17.c glide2/cvg/glide/tests/test17.c
--- build-tree.orig/glide2x/cvg/glide/tests/test17.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test17.c	Sat Jul 29 18:25:51 2000
@@ -156,14 +156,6 @@
         GrVertex vtxA, vtxB, vtxC, vtxD;
         static TextureMode textureMode;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         tlConOutput( "Current Texture Mode: %s\r",
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test18.c glide2/cvg/glide/tests/test18.c
--- build-tree.orig/glide2x/cvg/glide/tests/test18.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test18.c	Sat Jul 29 18:25:51 2000
@@ -149,14 +149,6 @@
         GrVertex vtxA, vtxB, vtxC, vtxD;
         int x,y;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
         
         /* Draw 10x10 grid of triangles */
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test19.c glide2/cvg/glide/tests/test19.c
--- build-tree.orig/glide2x/cvg/glide/tests/test19.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test19.c	Sat Jul 29 18:25:51 2000
@@ -183,14 +183,6 @@
         static int minify;
         static int bilerp;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
         
         /*---- 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test20.c glide2/cvg/glide/tests/test20.c
--- build-tree.orig/glide2x/cvg/glide/tests/test20.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test20.c	Sat Jul 29 18:25:51 2000
@@ -169,14 +169,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test21.c glide2/cvg/glide/tests/test21.c
--- build-tree.orig/glide2x/cvg/glide/tests/test21.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test21.c	Sat Jul 29 18:25:51 2000
@@ -209,14 +209,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test22.c glide2/cvg/glide/tests/test22.c
--- build-tree.orig/glide2x/cvg/glide/tests/test22.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test22.c	Sat Jul 29 18:25:51 2000
@@ -187,14 +187,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test23.c glide2/cvg/glide/tests/test23.c
--- build-tree.orig/glide2x/cvg/glide/tests/test23.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test23.c	Sat Jul 29 18:25:51 2000
@@ -148,14 +148,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* 3D Transformations */
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test24.c glide2/cvg/glide/tests/test24.c
--- build-tree.orig/glide2x/cvg/glide/tests/test24.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test24.c	Sat Jul 29 18:25:51 2000
@@ -145,14 +145,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* 3D Transformations */
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test26.c glide2/cvg/glide/tests/test26.c
--- build-tree.orig/glide2x/cvg/glide/tests/test26.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test26.c	Sat Jul 29 18:25:51 2000
@@ -177,14 +177,6 @@
     if (!tlOkToRender())
       continue;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    }
-
     grBufferClear( 0x00303030, 0, 0 );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/glide/tests/test27.c glide2/cvg/glide/tests/test27.c
--- build-tree.orig/glide2x/cvg/glide/tests/test27.c	Sat Jul 29 18:45:29 2000
--- build-tree/glide2x/cvg/glide/tests/test27.c	Sat Jul 29 18:25:51 2000
@@ -126,12 +126,6 @@
                   60, 30, 0xffffff );
         
         
-        /* deal with dynamic resizing */
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution, &scrWidth, &scrHeight);
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         tlConOutput( "Press <space> to cycle hardware\n" );
         tlConOutput( "Any other key to quit\n" );
         
diff -ruN -x Makefile.in -x configure glide2.orig/cvg/incsrc/fxhal.h glide2/cvg/incsrc/fxhal.h
--- build-tree.orig/glide2x/cvg/incsrc/fxhal.h	Tue Dec  7 16:49:24 1999
--- build-tree/glide2x/cvg/incsrc/fxhal.h	Sat Jul 29 18:32:51 2000
@@ -40,11 +40,9 @@
 //      CHIP            FBI-REV TMU-REV DEV-ID
 //      SST1-0.6u       1       0       1
 //      SST1-0.5u       2       1       1
-//      SST-96          2       (1)     2
 //      H3              3       4       4
 //	H4		?	?	4?
 #define SST_DEVICE_ID_SST1      1
-#define SST_DEVICE_ID_SST96     2
 #define SST_DEVICE_ID_H3        3
 
 #define MBYTE(n)	(((FxU32)(n))<<20)
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/fxglide.h glide2/h3/glide/src/fxglide.h
--- build-tree.orig/glide2x/h3/glide/src/fxglide.h	Tue Dec  7 16:49:26 1999
--- build-tree/glide2x/h3/glide/src/fxglide.h	Sat Jul 29 18:39:27 2000
@@ -1229,7 +1229,6 @@
     /* Force alternate buffer strategy */
     FxI32  nColorBuffer;
     FxI32  nAuxBuffer;
-    FxI32  emulRush;            /* Banshee reports as Rush flag */
     FxI32  grxClk;
     FxBool autoBump;            /* Auto bump or do it manually? */
     FxU32  bumpSize;
@@ -1385,8 +1384,6 @@
 
 #if   (GLIDE_PLATFORM & GLIDE_HW_SST1)
 #define GLIDE_DRIVER_NAME "Voodoo Graphics"
-#elif (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define GLIDE_DRIVER_NAME "Voodoo Rush"
 #elif (GLIDE_PLATFORM & GLIDE_HW_CVG)
 #define GLIDE_DRIVER_NAME "Voodoo^2"
 #elif (GLIDE_PLATFORM & GLIDE_HW_H3)
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/glfb.c glide2/h3/glide/src/glfb.c
--- build-tree.orig/glide2x/h3/glide/src/glfb.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/src/glfb.c	Sat Jul 29 18:35:17 2000
@@ -835,12 +835,9 @@
                  src_stride, src_data);
   
 #if defined(GLIDE3) && defined(GLIDE3_ALPHA)
-  if ((_GlideRoot.hwConfig.SSTs[_GlideRoot.current_sst].type == GR_SSTTYPE_SST96) && (pixelPipeline == FXTRUE))
-    rv = FXFALSE;
-  else
-    rv = _grLfbWriteRegion(pixelPipeline, dst_buffer, dst_x, dst_y,
-                           src_format, src_width, src_height,
-                           src_stride, src_data);
+  rv = _grLfbWriteRegion(pixelPipeline, dst_buffer, dst_x, dst_y,
+			 src_format, src_width, src_height,
+			 src_stride, src_data);
 #else
   rv = _grLfbWriteRegion(FXFALSE, dst_buffer, dst_x, dst_y,
                          src_format, src_width, src_height,
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/glide.h glide2/h3/glide/src/glide.h
--- build-tree.orig/glide2x/h3/glide/src/glide.h	Tue Dec  7 16:49:28 1999
--- build-tree/glide2x/h3/glide/src/glide.h	Sat Jul 29 18:35:26 2000
@@ -711,7 +711,6 @@
 
 typedef int GrSstType;
 #define GR_SSTTYPE_VOODOO    0
-#define GR_SSTTYPE_SST96     1
 #define GR_SSTTYPE_AT3D      2
 #define GR_SSTTYPE_Voodoo2   3
 #define GR_SSTTYPE_Banshee   4
@@ -729,12 +728,6 @@
   GrTMUConfig_t tmuConfig[GLIDE_NUM_TMU];   /* Configuration of the Texelfx chips */
 } GrVoodooConfig_t;
 
-typedef struct GrSst96Config_St {
-  int   fbRam;                  /* How much? */
-  int   nTexelfx;
-  GrTMUConfig_t tmuConfig;
-} GrSst96Config_t;
-
 typedef GrVoodooConfig_t GrVoodoo2Config_t;
 
 typedef struct GrAT3DConfig_St {
@@ -747,7 +740,6 @@
     GrSstType type;             /* Which hardware is it? */
     union SstBoard_u {
       GrVoodooConfig_t  VoodooConfig;
-      GrSst96Config_t   SST96Config;
       GrAT3DConfig_t    AT3DConfig;
       GrVoodoo2Config_t Voodoo2Config;
     } sstBoard;
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/glidesys.h glide2/h3/glide/src/glidesys.h
--- build-tree.orig/glide2x/h3/glide/src/glidesys.h	Tue Dec  7 16:49:28 1999
--- build-tree/glide2x/h3/glide/src/glidesys.h	Sat Jul 29 18:35:39 2000
@@ -75,7 +75,6 @@
 /* Hardware Type is stored in bits [9:13] */
 #define GLIDE_HW_SHIFT          9
 #define GLIDE_HW_SST1           (0x1 << GLIDE_HW_SHIFT)
-#define GLIDE_HW_SST96          (0x2 << GLIDE_HW_SHIFT)
 #define GLIDE_HW_H3             (0x4 << GLIDE_HW_SHIFT)
 #define GLIDE_HW_CVG            (0x10 << GLIDE_HW_SHIFT)
 
@@ -112,9 +111,7 @@
 #define GLIDE_SST       GLIDE_SST_HW
 
 /* Check for type of hardware */
-#ifdef SST96
-#  define GLIDE_HW        GLIDE_HW_SST96
-#elif defined(H3)
+#if defined(H3)
 #  define GLIDE_HW        GLIDE_HW_H3
 #elif defined(CVG)
 #  define GLIDE_HW        GLIDE_HW_CVG
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/gpci.c glide2/h3/glide/src/gpci.c
--- build-tree.orig/glide2x/h3/glide/src/gpci.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/src/gpci.c	Sat Jul 29 18:39:45 2000
@@ -679,10 +679,6 @@
     }
 
 
-    if (_GlideRoot.environment.emulRush){
-      GDBG_INFO(80,"Emulating rush\n");
-    }
-    
     /* Iterate through boards found */
     for (ctx = 0; ctx < hInfo->nBoards; ctx++) {
       bInfo = &hInfo->boardInfo[ctx];
@@ -765,28 +761,19 @@
         const FxU32 curTmuMemSize = 0x2;
         int tmu;
 
-        if (_GlideRoot.environment.emulRush) {
-          SST.type = GR_SSTTYPE_SST96;
-          SST.sstBoard.SST96Config.fbRam =  GC.fbuf_size;
-
-          SST.sstBoard.SST96Config.nTexelfx = GC.num_tmu;
-          SST.sstBoard.SST96Config.tmuConfig.tmuRev = (2 + kRevisionOffset);
-          SST.sstBoard.SST96Config.tmuConfig.tmuRam = curTmuMemSize;
-        } else {
-          /* Banshee's ID is 0x1000. Always check that it's at least
-           * 0x1000 for Banshee card.  
-           */
-          SST.type = GR_SSTTYPE_VOODOO;
-          SST.sstBoard.VoodooConfig.fbRam = GC.fbuf_size;
-          SST.sstBoard.VoodooConfig.fbiRev = 2 + 0x1000;
-          SST.sstBoard.VoodooConfig.sliDetect = FXFALSE;
-
-          SST.sstBoard.VoodooConfig.nTexelfx = GC.num_tmu;
-          for (tmu = 0; tmu < GC.num_tmu; tmu++) {
-            SST.sstBoard.VoodooConfig.tmuConfig[tmu].tmuRev = (2 + kRevisionOffset);
-            SST.sstBoard.VoodooConfig.tmuConfig[tmu].tmuRam = curTmuMemSize;
-          }
-        }
+	/* Banshee's ID is 0x1000. Always check that it's at least
+	 * 0x1000 for Banshee card.  
+	 */
+	SST.type = GR_SSTTYPE_VOODOO;
+	SST.sstBoard.VoodooConfig.fbRam = GC.fbuf_size;
+	SST.sstBoard.VoodooConfig.fbiRev = 2 + 0x1000;
+	SST.sstBoard.VoodooConfig.sliDetect = FXFALSE;
+
+	SST.sstBoard.VoodooConfig.nTexelfx = GC.num_tmu;
+	for (tmu = 0; tmu < GC.num_tmu; tmu++) {
+	  SST.sstBoard.VoodooConfig.tmuConfig[tmu].tmuRev = (2 + kRevisionOffset);
+	  SST.sstBoard.VoodooConfig.tmuConfig[tmu].tmuRam = curTmuMemSize;
+	}
 
         /* Clear the tmu state */
         for (tmu = 0; tmu < GC.num_tmu; tmu++) {
@@ -797,14 +784,9 @@
         }
       }
       if (hInfo->boardInfo[ctx].pciInfo.deviceID > 3) {
-	if (_GlideRoot.environment.emulRush) {
-	  SST.sstBoard.SST96Config.tmuConfig.tmuRev |= 0x10000;
-	}
-	else {
-	  SST.sstBoard.VoodooConfig.fbiRev |= 0x10000;
-	  SST.sstBoard.VoodooConfig.tmuConfig[0].tmuRev |= 0x10000;
-	  SST.sstBoard.VoodooConfig.tmuConfig[1].tmuRev |= 0x10000;
-	}
+	SST.sstBoard.VoodooConfig.fbiRev |= 0x10000;
+	SST.sstBoard.VoodooConfig.tmuConfig[0].tmuRev |= 0x10000;
+	SST.sstBoard.VoodooConfig.tmuConfig[1].tmuRev |= 0x10000;
       }
 
     } /* iterate through boards found */
@@ -848,11 +830,6 @@
                 hwc->SSTs[i].sstBoard.VoodooConfig.tmuConfig[tmuNum].tmuRev,
                 hwc->SSTs[i].sstBoard.VoodooConfig.tmuConfig[tmuNum].tmuRam);
     }
-  } else if (hwc->SSTs[i].type == GR_SSTTYPE_SST96) {
-    GDBG_INFO(80,"SST board %d: 3Dfx Voodoo Rush\n", i);
-    GDBG_INFO(80,"\tFBI Jr. with %d MB Frame Buffer\n",
-              hwc->SSTs[i].sstBoard.SST96Config.fbRam);
-    GDBG_INFO(80,"\tTexelfx chips:  1\n");
   } else {
     GDBG_INFO(80,"error: SSTs %d: unknown type\n",i);
   }
@@ -998,9 +975,6 @@
       break;
     }
   }
-  
-  _GlideRoot.environment.emulRush = (GETENV("FX_GLIDE_EMUL_RUSH") != NULL);
-  GDBG_INFO(80,"\temulate Rush: %d\n", _GlideRoot.environment.emulRush);
   
   _GlideRoot.environment.autoBump = (GETENV("FX_GLIDE_BUMP") == NULL);
   GDBG_INFO(80, "\tautoBump:          %s\n",
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/gsst.c glide2/h3/glide/src/gsst.c
--- build-tree.orig/glide2x/h3/glide/src/gsst.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/src/gsst.c	Sat Jul 29 18:36:57 2000
@@ -434,10 +434,6 @@
 
 #include <glidesys.h>
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96) 
-#include <init.h>
-#endif
-
 #define FX_DLL_DEFINITION
 #include <fxdll.h>
 #include <glide.h>
@@ -1460,100 +1456,7 @@
 
 GR_ENTRY(grSstControl, FxBool, (GrControl_t code)) 
 {
-#if 0
-  GR_DCL_GC;
-#define FN_NAME "grSstControl"  
-  GDBG_INFO(41, "%s:  code = 0x%x, windowsInit = %d\n", FN_NAME,
-    code, _GlideRoot.windowsInit);
-  
-  if (_GlideRoot.windowsInit && gc->open) {
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-    /* For VG96, windows haven't been created, so there's no point
-     * trying to control it. 
-     */
-    
-    /* Believe it or not, the following code really should be bracketed
-       like this.  The reason is that GR_BEGIN_NOFIFOCHECK seg faults
-       when grSstControl is called before the Glide window is truly
-       initialized.  This is a real concern, as grSstControl is called
-       from event loops, which are asynchronous.
-       */
-    FxU32
-      status,
-      xRes, yRes,
-      clipLeftRight, clipBottomTop;
-    
-    GR_BEGIN_NOFIFOCHECK(FN_NAME,80);
-    
-    xRes = initControl(code);
-    
-    GDBG_INFO((80, "%s:  initControl returned 0x%x\n", FN_NAME, xRes));
-
-    if (!xRes) return FXFALSE;
-  
-    yRes = xRes >> 16;
-    xRes = xRes & 0xffff;
-  
-    /* !! FIXME +++ this call should properly update the gc->fbStride,
-       this information is known only to the init layer and needs to be
-       exposed, it is only really necessary to lfblock right now,
-       and therefore is returned by initGetBufferPtr */
-  
-    gc->state.screen_width = xRes;
-    gc->state.screen_height = yRes;
-
-    /* Wait for Idle. */
-  
-    nTries = 0;
-    do {
-      if (nTries++ >> 999) {
-        GDBG_INFO((80, "%s:  returning FALSE after %d checks for idle\n", 
-          FN_NAME, nTries));
-        return FXTRUE;
-      }
-
-      status = GET(hw->status);
-        
-    } while (status & 0x1);
-
-    /* Set ClipRect Via direct writes */
-    _grClipNormalizeAndGenerateRegValues(0, 0, xRes, yRes,
-      &clipLeftRight,
-      &clipBottomTop);
-    SET_DIRECT(clipLeftRight1, clipLeftRight);
-    SET_DIRECT(clipBottomTop1, clipBottomTop);
-
-#elif (GLIDE_PLATFORM&GLIDE_HW_SST1)
-    return initControl(code);
-#elif (GLIDE_PLATFORM & GLIDE_HW_CVG) && !GLIDE_INIT_HAL
-    {
-      FxBool isValidP = FXTRUE;
-      FxBool passFlag;
-
-      switch ( code ) {
-      case GR_CONTROL_DEACTIVATE:
-        passFlag = FXTRUE;
-        break;
-
-      case GR_CONTROL_ACTIVATE:
-        passFlag = FXFALSE;
-        break;
-
-      default:
-        isValidP = FXFALSE;
-      }
-
-      if (isValidP) sst1InitVgaPassCtrl(gc->base_ptr, passFlag);
-    }
-#endif    
-  }
-
-  GDBG_INFO(41, "%s:  Returning TRUE\n", FN_NAME);
-  return FXTRUE;  
-#undef FN_NAME
-#else
   return FXTRUE;
-#endif
 } /* grSstControl */
 
 /*---------------------------------------------------------------------------
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/rcver.h glide2/h3/glide/src/rcver.h
--- build-tree.orig/glide2x/h3/glide/src/rcver.h	Tue Dec  7 16:49:29 1999
--- build-tree/glide2x/h3/glide/src/rcver.h	Sat Jul 29 18:37:05 2000
@@ -38,13 +38,6 @@
 #   else
 #     define PRODNAME "Glide(tm) for Voodoo Graphics\251 and Windows\256 95/98\0"
 #   endif /* NT_BUILD */
-#elif defined(SST96)
-#   define HWSTR   " Voodoo Rush(tm)\0"
-#   ifdef NT_BUILD
-#     define PRODNAME "Glide(tm) for Voodoo Rush\251 and Windows\256 NT\0"
-#   else
-#     define PRODNAME "Glide(tm) for Voodoo Rush\251 and Windows\256 95/98\0"
-#   endif /* NT_BUILD */
 #elif defined(CVG) || defined(VOODOO2)
 #   define HWSTR   " Voodoo^2(tm)\0"
 #   ifdef NT_BUILD
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/src/readme glide2/h3/glide/src/readme
--- build-tree.orig/glide2x/h3/glide/src/readme	Tue Dec  7 16:49:29 1999
--- build-tree/glide2x/h3/glide/src/readme	Sat Jul 29 18:37:09 2000
@@ -34,7 +34,5 @@
         GLIDE_HW_*:
         GLIDE_HW_SST1:
                 This macro is for compiling 
-        GLIDE_HW_SST96:
-                This macro is for compiling Glide for SST96
         GLIDE_HW_H3:
                 This macro is for compiling Glide for H3
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/h3dtst02.c glide2/h3/glide/tests/h3dtst02.c
--- build-tree.orig/glide2x/h3/glide/tests/h3dtst02.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/h3dtst02.c	Sat Jul 29 18:25:54 2000
@@ -151,7 +151,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-//        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
           tlGetDimsByConst(resolution,
                            &scrWidth, 
                            &scrHeight );
@@ -160,7 +159,6 @@
 #else
           grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
 #endif
-//        }
 
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/qatest00.c glide2/h3/glide/tests/qatest00.c
--- build-tree.orig/glide2x/h3/glide/tests/qatest00.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/qatest00.c	Sat Jul 29 18:25:54 2000
@@ -480,15 +480,6 @@
     tlConRender();
     grBufferSwap( 1 );
 
-    /* dynamic resizing */
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
-
     /* handle any keyboard input */
     while( tlKbHit() )
     {
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/qatest01.c glide2/h3/glide/tests/qatest01.c
--- build-tree.orig/glide2x/h3/glide/tests/qatest01.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/qatest01.c	Sat Jul 29 18:25:54 2000
@@ -152,14 +152,6 @@
     }
    
     grBufferSwap( 1 );
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
-
     if ( tlKbHit() ) frames = 0;
   }
   grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER ); 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test00.c glide2/h3/glide/tests/test00.c
--- build-tree.orig/glide2x/h3/glide/tests/test00.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test00.c	Sat Jul 29 18:25:54 2000
@@ -111,13 +111,6 @@
     tlConRender();
     grBufferSwap( 1 );
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
     /* grab the frame buffer */
     if (scrgrab) {
       if (!tlScreenDump(filename, (FxU16)scrWidth, (FxU16)scrHeight))
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test01.c glide2/h3/glide/tests/test01.c
--- build-tree.orig/glide2x/h3/glide/tests/test01.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test01.c	Sat Jul 29 18:25:54 2000
@@ -114,13 +114,6 @@
     int i;
     GrVertex vtx;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
     grBufferClear( 0x0, 0, GR_WDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test02.c glide2/h3/glide/tests/test02.c
--- build-tree.orig/glide2x/h3/glide/tests/test02.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test02.c	Sat Jul 29 18:25:54 2000
@@ -113,14 +113,6 @@
         int i;
         GrVertex vtxA, vtxB;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution, 
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         for( i = 0; i < 100; i++ ) {
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test03.c glide2/h3/glide/tests/test03.c
--- build-tree.orig/glide2x/h3/glide/tests/test03.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test03.c	Sat Jul 29 18:25:54 2000
@@ -110,15 +110,6 @@
     while( frames-- && tlOkToRender() ) {
         GrVertex vtxA, vtxB;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.0f ), vtxA.y = tlScaleY( 0.0f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test04.c glide2/h3/glide/tests/test04.c
--- build-tree.orig/glide2x/h3/glide/tests/test04.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test04.c	Sat Jul 29 18:25:54 2000
@@ -110,14 +110,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.3f ), vtxA.y = tlScaleY( 0.3f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test05.c glide2/h3/glide/tests/test05.c
--- build-tree.orig/glide2x/h3/glide/tests/test05.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test05.c	Sat Jul 29 18:25:54 2000
@@ -117,13 +117,6 @@
     GrVertex vtxA, vtxB, vtxC;
     float zDist;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-      
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    }
     grBufferClear( 0x00, 0, GR_ZDEPTHVALUE_FARTHEST );
 
     vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test06.c glide2/h3/glide/tests/test06.c
--- build-tree.orig/glide2x/h3/glide/tests/test06.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test06.c	Sat Jul 29 18:25:54 2000
@@ -113,14 +113,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float wDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test07.c glide2/h3/glide/tests/test07.c
--- build-tree.orig/glide2x/h3/glide/tests/test07.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test07.c	Sat Jul 29 18:25:54 2000
@@ -118,14 +118,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test08.c glide2/h3/glide/tests/test08.c
--- build-tree.orig/glide2x/h3/glide/tests/test08.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test08.c	Sat Jul 29 18:25:54 2000
@@ -117,14 +117,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float wDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.0f ), vtxA.y = tlScaleY( 0.0f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test09.c glide2/h3/glide/tests/test09.c
--- build-tree.orig/glide2x/h3/glide/tests/test09.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test09.c	Sat Jul 29 18:25:54 2000
@@ -122,14 +122,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         switch( chromaColor ) {
         case RED:
             tlConOutput( "Chromakey RED \r" );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test10.c glide2/h3/glide/tests/test10.c
--- build-tree.orig/glide2x/h3/glide/tests/test10.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test10.c	Sat Jul 29 18:25:54 2000
@@ -118,14 +118,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         switch( cullMode ) {
         case GR_CULL_POSITIVE:
             tlConOutput( "CULL POSITIVE\r" );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test11.c glide2/h3/glide/tests/test11.c
--- build-tree.orig/glide2x/h3/glide/tests/test11.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test11.c	Sat Jul 29 18:25:54 2000
@@ -122,14 +122,6 @@
         GrLfbInfo_t info;
         int startX, startY;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         /* prepare info structure */
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test12.c glide2/h3/glide/tests/test12.c
--- build-tree.orig/glide2x/h3/glide/tests/test12.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test12.c	Sat Jul 29 18:25:54 2000
@@ -175,14 +175,6 @@
                     "Press any other key to quit\n"
     };
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
     grRenderBuffer( GR_BUFFER_BACKBUFFER );
     grBufferClear( 0, 0, 0 );
     grRenderBuffer( GR_BUFFER_FRONTBUFFER );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test13.c glide2/h3/glide/tests/test13.c
--- build-tree.orig/glide2x/h3/glide/tests/test13.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test13.c	Sat Jul 29 18:25:54 2000
@@ -121,14 +121,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.5f ), vtxA.y = tlScaleY( 0.1f );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test14.c glide2/h3/glide/tests/test14.c
--- build-tree.orig/glide2x/h3/glide/tests/test14.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test14.c	Sat Jul 29 18:25:54 2000
@@ -122,14 +122,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float zDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         if ( ( zBias > MAX_ZBIAS ) || 
              ( zBias < MIN_ZBIAS ) ) {
             zDelta = -zDelta;
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test15.c glide2/h3/glide/tests/test15.c
--- build-tree.orig/glide2x/h3/glide/tests/test15.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test15.c	Sat Jul 29 18:25:54 2000
@@ -123,14 +123,6 @@
         GrVertex vtxA, vtxB, vtxC;
         int minx, miny, maxx, maxy;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grClipWindow( (int)tlScaleX(0.0f),(int)tlScaleY(0.0f),
                       (int)tlScaleX(1.0f),(int)tlScaleY(1.0f) );
         grBufferClear( BLACK, 0, GR_ZDEPTHVALUE_FARTHEST );
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test16.c glide2/h3/glide/tests/test16.c
--- build-tree.orig/glide2x/h3/glide/tests/test16.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test16.c	Sat Jul 29 18:25:54 2000
@@ -122,14 +122,6 @@
         static int render;
         static int frame = 1;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( BLACK, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* Draw 10x10 grid of triangles */
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test17.c glide2/h3/glide/tests/test17.c
--- build-tree.orig/glide2x/h3/glide/tests/test17.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test17.c	Sat Jul 29 18:25:54 2000
@@ -156,14 +156,6 @@
         GrVertex vtxA, vtxB, vtxC, vtxD;
         static TextureMode textureMode;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         tlConOutput( "Current Texture Mode: %s\r",
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test18.c glide2/h3/glide/tests/test18.c
--- build-tree.orig/glide2x/h3/glide/tests/test18.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test18.c	Sat Jul 29 18:25:54 2000
@@ -149,14 +149,6 @@
         GrVertex vtxA, vtxB, vtxC, vtxD;
         int x,y;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
         
         /* Draw 10x10 grid of triangles */
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test19.c glide2/h3/glide/tests/test19.c
--- build-tree.orig/glide2x/h3/glide/tests/test19.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test19.c	Sat Jul 29 18:25:54 2000
@@ -183,14 +183,6 @@
         static int minify;
         static int bilerp;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
         
         /*---- 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test20.c glide2/h3/glide/tests/test20.c
--- build-tree.orig/glide2x/h3/glide/tests/test20.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test20.c	Sat Jul 29 18:25:54 2000
@@ -169,14 +169,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test21.c glide2/h3/glide/tests/test21.c
--- build-tree.orig/glide2x/h3/glide/tests/test21.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test21.c	Sat Jul 29 18:25:54 2000
@@ -209,14 +209,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test22.c glide2/h3/glide/tests/test22.c
--- build-tree.orig/glide2x/h3/glide/tests/test22.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test22.c	Sat Jul 29 18:25:54 2000
@@ -187,14 +187,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test23.c glide2/h3/glide/tests/test23.c
--- build-tree.orig/glide2x/h3/glide/tests/test23.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test23.c	Sat Jul 29 18:25:54 2000
@@ -148,14 +148,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* 3D Transformations */
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test24.c glide2/h3/glide/tests/test24.c
--- build-tree.orig/glide2x/h3/glide/tests/test24.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test24.c	Sat Jul 29 18:25:54 2000
@@ -145,14 +145,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* 3D Transformations */
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test26.c glide2/h3/glide/tests/test26.c
--- build-tree.orig/glide2x/h3/glide/tests/test26.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test26.c	Sat Jul 29 18:25:54 2000
@@ -177,14 +177,6 @@
     if (!tlOkToRender())
       continue;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    }
-
     grBufferClear( 0x00303030, 0, 0 );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/h3/glide/tests/test27.c glide2/h3/glide/tests/test27.c
--- build-tree.orig/glide2x/h3/glide/tests/test27.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/h3/glide/tests/test27.c	Sat Jul 29 18:25:54 2000
@@ -126,12 +126,6 @@
                   60, 30, 0xffffff );
         
         
-        /* deal with dynamic resizing */
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution, &scrWidth, &scrHeight);
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         tlConOutput( "Press <space> to cycle hardware\n" );
         tlConOutput( "Any other key to quit\n" );
         
diff -ruN -x Makefile.in -x configure glide2.orig/h3/incsrc/fxhal.h glide2/h3/incsrc/fxhal.h
--- build-tree.orig/glide2x/h3/incsrc/fxhal.h	Tue Dec  7 16:49:42 1999
--- build-tree/glide2x/h3/incsrc/fxhal.h	Sat Jul 29 18:37:34 2000
@@ -40,7 +40,6 @@
 //      CHIP            FBI-REV TMU-REV DEV-ID
 //      SST1-0.6u       1       0       1
 //      SST1-0.5u       2       1       1
-//      SST-96          2       (1)     2
 //      H3 A0           1       4       3
 //      H3 A1           2       4       3
 //      H3 B0           3       4       3
@@ -48,7 +47,6 @@
 //      H4              1       4       5
 
 #define SST_DEVICE_ID_SST1      1
-#define SST_DEVICE_ID_SST96     2
 #define SST_DEVICE_ID_H3        3
 #define SST_DEVICE_ID_H4_OEM    4
 #define SST_DEVICE_ID_H4    	5
diff -ruN -x Makefile.in -x configure glide2.orig/makefile.linux glide2/makefile.linux
--- build-tree.orig/glide2x/makefile.linux	Fri Jan  7 20:04:57 2000
--- build-tree/glide2x/makefile.linux	Sat Jul 29 18:00:17 2000
@@ -32,18 +32,14 @@
 ifeq ($(FX_GLIDE_HW),sst1)
   SUBDIRS	+= sst1
 else
-  ifeq  ($(FX_GLIDE_HW),sst96)
-    SUBDIRS += sst1
+  ifeq ($(FX_GLIDE_HW),cvg)
+    SUBDIRS	+= cvg
   else
-    ifeq ($(FX_GLIDE_HW),cvg)
-      SUBDIRS	+= cvg
+    ifeq ($(FX_GLIDE_HW),h3)
+      SUBDIRS	+= h3
     else
-      ifeq ($(FX_GLIDE_HW),h3)
-        SUBDIRS	+= h3
-      else
-        FX_GLIDE_HW = h3
-        SUBDIRS += h3
-      endif
+      FX_GLIDE_HW = h3
+      SUBDIRS += h3
     endif
   endif
 endif
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/diglide.c glide2/sst1/glide/src/diglide.c
--- build-tree.orig/glide2x/sst1/glide/src/diglide.c	Tue Dec  7 16:48:51 1999
--- build-tree/glide2x/sst1/glide/src/diglide.c	Sat Jul 29 17:38:16 2000
@@ -78,10 +78,6 @@
 #include <glide.h>
 #include "fxglide.h"
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-#include <init.h>
-#endif
-
 #include "rcver.h"
 static char glideIdent[] = "@#%" VERSIONSTR ;
 
@@ -338,11 +334,6 @@
 void GR_CDECL
 _grFence( void )
 {
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  GR_DCL_GC;
-  GDBG_INFO((125,"\t\t\t\t%d writes since last fence\n",
-             gc->hwDep.sst96Dep.writesSinceFence));
-#endif
   GDBG_INFO((125,"\t\t\t\t\t\t\tFENCE\n"));
 
   P6FENCE;
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/fxgasm.c glide2/sst1/glide/src/fxgasm.c
--- build-tree.orig/glide2x/sst1/glide/src/fxgasm.c	Tue Jan  4 18:45:13 2000
--- build-tree/glide2x/sst1/glide/src/fxgasm.c	Sat Jul 29 17:38:47 2000
@@ -47,12 +47,6 @@
         printf("%s\t= %08xh\n",pname,((int)&p.o)-(int)&p); \
     else printf("%s\t= %10d\n",pname,((int)&p.o)-(int)&p)
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define HWOFFSET(p, o, pname) if (hex) \
-        printf("%s\t= %08xh\n",pname,(((int) &p.o)-(int)&p)>>2);\
-    else printf("%s\t= %10d\n",pname,(((int)&p.o)-(int)&p))
-#endif /* (GLIDE_PLATFORM & GLIDE_HW_SST96) */
-
 #define OFFSET2(p,o,pname) if (hex) \
         printf("%s\t= %08xh\n",pname,((int)&o)-(int)&p); \
     else printf("%s\t= %10d\n",pname,((int)&o)-(int)&p)
@@ -72,12 +66,6 @@
         printf("%s\t .EQU %08x\n",pname,((int)&p.o)-(int)&p); \
     else printf("%s\t .EQU %10d\n",pname,((int)&p.o)-(int)&p)
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define HWOFFSET(p, o, pname) if (hex) \
-        printf("%s\t .EQU %08x\n",pname,(((int) &p.o)-(int)&p)>>2);\
-    else printf("%s\t .EQU %10d\n",pname,(((int)&p.o)-(int)&p))
-#endif /* (GLIDE_PLATFORM & GLIDE_HW_SST96) */
-
 #define OFFSET2(p,o,pname) if (hex) \
         printf("%s\t .EQU %08x\n",pname,((int)&o)-(int)&p); \
     else printf("%s\t .EQU %10d\n",pname,((int)&o)-(int)&p)
@@ -132,14 +120,6 @@
     OFFSET (sst,FvC.x,"FVCX\t\t");
     OFFSET (sst,FvC.y,"FVCY\t\t");
     OFFSET (sst,FtriangleCMD,"FTRIANGLECMD\t");
-#elif (GLIDE_PLATFORM & GLIDE_HW_SST96)
-    HWOFFSET (sst,FvA.x,"FVAX\t\t");
-    HWOFFSET (sst,FvA.y,"FVAY\t\t");
-    HWOFFSET (sst,FvB.x,"FVBX\t\t");
-    HWOFFSET (sst,FvB.y,"FVBY\t\t");
-    HWOFFSET (sst,FvC.x,"FVCX\t\t");
-    HWOFFSET (sst,FvC.y,"FVCY\t\t");
-    HWOFFSET (sst,FtriangleCMD,"FTRIANGLECMD\t");
 #else
 #error "Update fxgasm.c for this chip"    
 #endif
@@ -159,14 +139,6 @@
     OFFSET (gc,dataList,"dataList\t");
 #if (GLIDE_PLATFORM & GLIDE_HW_SST1)
     OFFSET (gc,state.fifoFree, "fifoFree\t");
-#endif
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-    OFFSET (gc,hwDep.sst96Dep.writesSinceFence, "writesSinceFence" );
-    OFFSET (gc,hwDep.sst96Dep.paramMask, "paramMask\t");
-    OFFSET (gc,hwDep.sst96Dep.gwCommand, "gwCommand\t");
-    OFFSET (gc,hwDep.sst96Dep.gwHeaders, "gwHeaders\t");
-    OFFSET (gc,fifoData.hwDep.vg96FIFOData.fifoPtr, "fifoPtr\t\t");
-    OFFSET (gc,fifoData.hwDep.vg96FIFOData.fifoSize, "fifoSize\t");
 #endif
     SIZEOF (gr.GCs[0].state,"GrState\t");
     SIZEOF (gr.hwConfig,"GrHwConfiguration");
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/fxglide.h glide2/sst1/glide/src/fxglide.h
--- build-tree.orig/glide2x/sst1/glide/src/fxglide.h	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/fxglide.h	Sat Jul 29 17:50:01 2000
@@ -376,32 +376,6 @@
     fifoData;
 
   union hwDep_u {
-    struct sst96Dep_s {
-#if (GLIDE_PLATFORM & GLIDE_OS_DOS32)
-      FxBool
-        int10Called;            /* Did the app call int10h? */
-      void (__interrupt __far *prevInt10)();
-#endif
-      FxU32
-        writesSinceFence,       /* Writes since last fence */
-        writesSinceHeader,      /* Grouped Writes since last header */
-        paramMask,              /* Mask indicating required parameters */
-        gwCommand,              /* Command for initiating a triangle gw packet */
-        gwHeaders[4];           /* Group write headers for SST96 */
-      FxU32
-        *serialStatus,          /* address of serial status register */
-        *fifoApertureBase;      /* base of fifo apurture (if different) */
-
-#if 0
-        *fifoPtr,               /* pointer to FIFO */
-        fifoSize,               /* # bytes left in FIFO */
-        *fifoVirt,              /* start virtual address */
-        fifoPhys,               /* start physical address  */
-        fifoMax,                /* in bytes */
-        fifoCur,                /* how much used up so far */
-        fifoLfb;                /* use LFB, use hostblt if 0. */
-#endif
-    } sst96Dep;
     struct sst1Dep_s {
       FxU32
         /* fifoFree,               # Free entries in FIFO */
@@ -455,17 +429,9 @@
 
 /* if we are debugging, call a routine so we can trace fences */
 #ifdef GLIDE_DEBUG
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define GR_P6FENCE {_grFence(); gc->hwDep.sst96Dep.writesSinceFence = 0;}
-#else  /* SST1 */
 #define GR_P6FENCE _grFence();
-#endif /* SST1 or SST96 */
 #else  /* Not DEBUG */
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define GR_P6FENCE {P6FENCE; gc->hwDep.sst96Dep.writesSinceFence = 0;}
-#else  /* SST1 */
 #define GR_P6FENCE P6FENCE
-#endif /* SST1 or SST96 */
 #endif /* DEBUG or not */
 
 /*
@@ -580,232 +546,6 @@
 #define DPDY_OFFSET 0x40
 #endif
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96) /* Stuff for group write packet header */
-
-#define GWH_VTX_AX_BIT          FXBIT(0)
-#define GWH_VTX_AY_BIT          FXBIT(1)
-#define GWH_VTX_BX_BIT          FXBIT(2)
-#define GWH_VTX_BY_BIT          FXBIT(3)
-#define GWH_VTX_CX_BIT          FXBIT(4)
-#define GWH_VTX_CY_BIT          FXBIT(5)
-#define GWH_FSTARTR_BIT         FXBIT(6)
-#define GWH_FDRDX_BIT           FXBIT(7)
-#define GWH_FDRDY_BIT           FXBIT(8)
-#define GWH_FSTARTG_BIT         FXBIT(9)
-#define GWH_FDGDX_BIT           FXBIT(10)
-#define GWH_FDGDY_BIT           FXBIT(11)
-#define GWH_FSTARTB_BIT         FXBIT(12)
-#define GWH_FDBDX_BIT           FXBIT(13)
-#define GWH_FDBDY_BIT           FXBIT(14)
-#define GWH_FSTARTZ_BIT         FXBIT(15)
-#define GWH_FDZDX_BIT           FXBIT(16)
-#define GWH_FDZDY_BIT           FXBIT(17)
-#define GWH_FSTARTA_BIT         FXBIT(18)
-#define GWH_FDADX_BIT           FXBIT(19)
-#define GWH_FDADY_BIT           FXBIT(20)
-#define GWH_FSTARTS_BIT         FXBIT(21)
-#define GWH_FDSDX_BIT           FXBIT(22)
-#define GWH_FDSDY_BIT           FXBIT(23)
-#define GWH_FSTARTT_BIT         FXBIT(24)
-#define GWH_FDTDX_BIT           FXBIT(25)
-#define GWH_FDTDY_BIT           FXBIT(26)
-#define GWH_FSTARTW_BIT         FXBIT(27)
-#define GWH_FDWDX_BIT           FXBIT(28)
-#define GWH_FDWDY_BIT           FXBIT(29)
-#define GWH_FTRIANGLECMD_BIT    FXBIT(30)
-#define GWH_ENABLE_BIT          FXBIT(31)
-
-#define GWH_VTX_BITS (GWH_VTX_AX_BIT | GWH_VTX_AY_BIT | \
-                      GWH_VTX_BX_BIT | GWH_VTX_BY_BIT | \
-                      GWH_VTX_CX_BIT | GWH_VTX_CY_BIT)
-#define GWH_RGB_BITS (GWH_FSTARTR_BIT | GWH_FDRDX_BIT | GWH_FDRDY_BIT |\
-                      GWH_FSTARTG_BIT | GWH_FDGDX_BIT | GWH_FDGDY_BIT |\
-                      GWH_FSTARTB_BIT | GWH_FDBDX_BIT | GWH_FDBDY_BIT)
-#define GWH_Z_BITS (GWH_FSTARTZ_BIT |  GWH_FDZDX_BIT | GWH_FDZDY_BIT)
-#define GWH_A_BITS (GWH_FSTARTA_BIT | GWH_FDADX_BIT | GWH_FDADY_BIT)
-#define GWH_ST_BITS (GWH_FSTARTS_BIT | GWH_FDSDX_BIT | GWH_FDSDY_BIT |\
-                     GWH_FSTARTT_BIT | GWH_FDTDX_BIT | GWH_FDTDY_BIT)
-#define GWH_W_BITS (GWH_FSTARTW_BIT | GWH_FDWDX_BIT | GWH_FDWDY_BIT)
-
-/* All gradient bits... used in trisetup_nogradients hack */
-#define GWH_DXY_BITS ( \
-        GWH_FDRDX_BIT | GWH_FDRDY_BIT | GWH_FDGDX_BIT | GWH_FDGDY_BIT | \
-        GWH_FDBDX_BIT | GWH_FDBDY_BIT | GWH_FDZDX_BIT | GWH_FDZDY_BIT | \
-        GWH_FDADX_BIT | GWH_FDADY_BIT | GWH_FDSDX_BIT | GWH_FDSDY_BIT | \
-        GWH_FDTDX_BIT | GWH_FDTDY_BIT | GWH_FDWDX_BIT | GWH_FDWDY_BIT )
-
-void
-_grDebugGroupWriteHeader(FxU32 header, FxU32 address);
-
-#if defined(GDBG_INFO_ON)
-#define DUMPGWH(header, address) {\
-  _grDebugGroupWriteHeader(header, address);\
-}    
-#else
-#define DUMPGWH(header,address)
-#endif
-
-#ifdef GLIDE_SANITY_SIZE
-#  define GW_UPDATE_COUNT(a)  (gc->counter += a)
-#else
-#  define GW_UPDATE_COUNT(a)
-#endif
-
-#define FENCE_AMOUNT    128
-
-#define GWH_REG_SHIFT     2
-#define GWH_WRAP_SHIFT   12
-#define GWH_CHIP_SHIFT   16
-
-#define GWH_REG_OFFSET(a) ((FxU32) (a) - (FxU32) gc->reg_ptr)
-#define GWH_REG(a) ((GWH_REG_OFFSET(a) >> GWH_REG_SHIFT) & 0xff)
-#define GWH_WRAP(a) (((FxU32)(a) >> GWH_WRAP_SHIFT) & 0xf)
-#define GWH_CHIP(a) (((FxU32)(a) >> GWH_CHIP_SHIFT) & 0xf)
-
-#define GWH_GEN_WRAP(w) (((w) & 0xf) << GWH_WRAP_SHIFT)
-#define GWH_GEN_CHIP(c) (((c) & 0xf) << GWH_CHIP_SHIFT)
-
-#define GEN_PCI_ADDRESS 
-
-#define GWH_FENCE_TRIANGLE \
-if ((gc->hwDep.sst96Dep.writesSinceFence + (_GlideRoot.curTriSize>>2 ) + 4) > FENCE_AMOUNT)\
-  GR_P6FENCE
-
-#define GW_TRICMD_MASK 0x40000000
-
-#define GWH_BUILD_PCI_ADDRESS(a,c,w)\
-  (GWH_REG(a) | (GWH_WRAP(w) << GWH_WRAP_SHIFT) | (GWH_CHIP(c) << GWH_CHIP_SHIFT))
-
-#define PUMA_DWORD_REG_OFFSET 0x100000
-
-#define GWH_GEN_ADDRESS(a) \
-  ((((FxU32)(a) - (FxU32) gc->lfb_ptr) >> 2) | PUMA_DWORD_REG_OFFSET | GWH_ENABLE_BIT)
-
-#ifdef DEBUG
-#  define GWH_RESET_WSH gc->hwDep.sst96Dep.writesSinceHeader = 0
-#  define GWH_INC_WSH gc->hwDep.sst96Dep.writesSinceHeader++
-#else
-#  define GWH_RESET_WSH
-#  define GWH_INC_WSH
-#endif
-
-#if defined( GLIDE_DEBUG )
-  /* defined in GPCI.C */
-extern void GR_CDECL
-_GR_SET_GW_CMD( volatile void *addr, unsigned long data );
-extern void GR_CDECL
-_GR_SET_GW_HEADER( volatile void *addr, unsigned long data );
-extern void GR_CDECL
-_GR_SET_GW_ENTRY( volatile void *addr, unsigned long data );
-
-#define SET_GW_CMD( addr, offset, data )    \
-_GR_SET_GW_CMD( ((FxU32*)(addr))+(offset), (data) ); GR_INC_SIZE(4)
-
-#define SET_GW_HEADER( addr, offset, data ) \
-_GR_SET_GW_HEADER( ((FxU32*)(addr))+(offset), (data) ); GR_INC_SIZE(4)
-
-#define FSET_GW_ENTRY( addr, offset, data )  \
-{                                            \
-   float _tacoFTemp;                         \
-   _tacoFTemp = (data);                      \
-   _GR_SET_GW_ENTRY( ((FxU32*)(addr))+(offset), (*(FxU32*)&_tacoFTemp) ); \
-   GR_INC_SIZE(4);\
-}
-#else
-
-#define SET_GW_CMD( addr, offset, data )    \
-*(addr+offset)=data;
-
-#define SET_GW_HEADER( addr, offset, data ) \
-*(addr+offset)=data;
-
-#define FSET_GW_ENTRY( addr, offset, data )  \
-*((float*)(addr+offset))=data;
-
-#endif
-
-#if SST96_ALT_FIFO_WRAP
-#define GWH_PACKET_SIZE_CHECK(__s) \
-  if (gc->fifoData.hwDep.vg96FIFOData.fifoSize < (FxU32) ((__s) + 12)) {\
-    gc->fifoData.hwDep.vg96FIFOData.blockSize = (__s) + 12; \
-    initWrapFIFO(&gc->fifoData); \
-  }
-#else
-#define GWH_PACKET_SIZE_CHECK(__s) \
-  if (gc->fifoData.hwDep.vg96FIFOData.fifoSize < (FxU32) ((__s) + 12)) {\
-    _grSst96FifoMakeRoom();\
-    GR_ASSERT(!(gc->fifoData.hwDep.vg96FIFOData.fifoSize < 0x1000));\
-  }
-#endif
-
-#define GWH_BEGIN_TRIANGLE_PACKET(header, address) \
-{\
-  GWH_RESET_WSH;\
-  GR_ASSERT(!(((FxU32)(gc->fifoData.hwDep.vg96FIFOData.fifoPtr) & 0x7)));\
-  GWH_FENCE_TRIANGLE;\
-  GDBG_INFO((120, "Beginning Grouped Write Packet\n"));\
-  GDBG_INFO((120, "fifoPtr = 0x%x fifoSize = 0x%x\n", gc->fifoData.hwDep.vg96FIFOData.fifoPtr, gc->fifoData.hwDep.vg96FIFOData.fifoSize));\
-  GDBG_INFO((120, "Base = 0x%x Mask = 0x%x\n", (FxU32) address, header));\
-  GW_UPDATE_COUNT(8);\
-  GWH_PACKET_SIZE_CHECK(_GlideRoot.curTriSize); \
-  DUMPGWH(header,address);\
-  GLIDE_FIFO_CHECK(); \
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ = GWH_GEN_ADDRESS(address);\
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ = header;\
-  gc->fifoData.hwDep.vg96FIFOData.fifoSize -= 8;\
-  gc->hwDep.sst96Dep.writesSinceFence += 2;\
-}
-
-#define GWH_FENCE_TEXDL \
-if ((gc->hwDep.sst96Dep.writesSinceFence + 34) >= FENCE_AMOUNT)\
-  GR_P6FENCE
-
-#define GWH_BEGIN_TEXDL_PACKET(header, address) \
-{\
-  GWH_RESET_WSH;\
-  GR_ASSERT(!(((FxU32)(gc->fifoData.hwDep.vg96FIFOData.fifoPtr) & 0x7)));\
-  GWH_FENCE_TEXDL;\
-  GDBG_INFO((120, "Beginning Texture Grouped Write Packet\n"));\
-  GDBG_INFO((120, "fifoPtr = 0x%x fifoSize = 0x%x\n", gc->fifoData.hwDep.vg96FIFOData.fifoPtr, gc->fifoData.hwDep.vg96FIFOData.fifoSize));\
-  GDBG_INFO((120, "Base = 0x%x Mask = 0x%x\n", address, header));\
-  GW_UPDATE_COUNT(8);\
-  GWH_PACKET_SIZE_CHECK(34 << 2); \
-  GLIDE_FIFO_CHECK(); \
-  DUMPGWH(header,((((FxU32) address - (FxU32) gc->lfb_ptr)) >> 2) | GWH_ENABLE_BIT);\
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ =\
-      ((((FxU32) address - (FxU32) gc->lfb_ptr)) >> 2) | GWH_ENABLE_BIT;\
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ = header;\
-  gc->fifoData.hwDep.vg96FIFOData.fifoSize -= 8;\
-  gc->hwDep.sst96Dep.writesSinceFence += 2;\
-}
-
-#define GR_SETF_GW(s) {\
-GLIDE_FIFO_CHECK(); \
-GR_ASSERT(gc->hwDep.sst96Dep.writesSinceHeader < 32);\
-GDBG_INFO((120, "Group Write:  fifoPtr = 0x%x, value = %4.2f sinceFence = 0x%x\n", gc->fifoData.hwDep.vg96FIFOData.fifoPtr, s, gc->hwDep.sst96Dep.writesSinceFence));\
-*((float *) gc->fifoData.hwDep.vg96FIFOData.fifoPtr++) = s;\
-gc->fifoData.hwDep.vg96FIFOData.fifoSize-=4;\
-GW_UPDATE_COUNT(4);\
-GR_ASSERT(gc->hwDep.sst96Dep.writesSinceFence <= FENCE_AMOUNT);\
-gc->hwDep.sst96Dep.writesSinceFence++;\
-GWH_INC_WSH;\
-}
-
-#define GR_SET_GW(s) {\
-GLIDE_FIFO_CHECK(); \
-GR_ASSERT(gc->hwDep.sst96Dep.writesSinceHeader < 32);\
-GDBG_INFO((120, "Group Write:  fifoPtr = 0x%x, value = 0x%x sinceFence=%d\n", gc->fifoData.hwDep.vg96FIFOData.fifoPtr, s, gc->hwDep.sst96Dep.writesSinceFence));\
-P6FENCEFIFO;\
-*gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ = s;\
-gc->fifoData.hwDep.vg96FIFOData.fifoSize-=4;\
-GW_UPDATE_COUNT(4);\
-GR_ASSERT(gc->hwDep.sst96Dep.writesSinceFence <= FENCE_AMOUNT);\
-gc->hwDep.sst96Dep.writesSinceFence++;\
-GWH_INC_WSH;\
-}
-
-#endif /* stuff for group write packet header */
-
 /*==========================================================================*/
 /*
 **  Here's the infamous Packer Bug Check and Workaround:   
@@ -819,8 +559,6 @@
 
 #if   ( GLIDE_PLATFORM & GLIDE_HW_SST1 )
 #define GLIDE_DRIVER_NAME "Voodoo Graphics"
-#elif   ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-#define GLIDE_DRIVER_NAME "Voodoo Rush"
 #else
 #define GLIDE_DRIVER_NAME "Unknown"
 #endif
@@ -850,16 +588,6 @@
   #define PACKER_BUGCHECK(a)
 #endif
 
-/* On a P6 we have to fence around commands to ensure write-ordering */
-#if 0
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#  ifdef GR_P6FENCE
-#    undef GR_P6FENCE
-#  endif
-#  define GR_P6FENCE
-#endif
-#endif
-
 /* GMT: a very useful macro for making sure that SST commands are properly
    fenced on a P6, e.g. P6FENCH_CMD( GR_SET(hw->nopCMD,1) );
 */
@@ -1000,18 +728,6 @@
 	defined(GDBG_INFO_ON)
 #define DEBUG_MODE 1
 #include <assert.h>
-
-#if SST96_FIFO
-/* sst96.c */
-extern void
-_grSst96CheckFifoData(void);
-
-#define GLIDE_FIFO_CHECK() _grSst96CheckFifoData()
-#else
-#define GLIDE_FIFO_CHECK()
-#endif
-#else
-#define GLIDE_FIFO_CHECK()
 #endif
 
 #if (GLIDE_PLATFORM & GLIDE_HW_SST1)
@@ -1023,46 +739,10 @@
     fifoFree = _grSpinFifo(n); \
   gc->state.fifoFree = fifoFree;\
 }
-#elif (GLIDE_PLATFORM & GLIDE_HW_SST96)
-/* NOTE: fifoSize is in bytes, and each fifo entry is 8 bytes.  Since
-   the fifoSize element of the sst96Dep data structure must be
-   accurate, we subtract after we write, instead of at the beginning
-   as above. */
-#if (GLIDE_PLATFORM & GLIDE_OS_DOS32) && defined(GLIDE_DEBUG)
-#define GR_CHECKINT10 if (gc->hwDep.sst96Dep.int10Called)_doGrErrorCallback("Glide Error:", "Application called Int 10 between grSstWinOpen and Close.\n", FXTRUE)
-#else
-#define GR_CHECKINT10
-#endif
-
-#if SST96_ALT_FIFO_WRAP
-
-#define GR_CHECK_FOR_ROOM(n) \
-{\
-  FxI32 fifoSize = gc->fifoData.hwDep.vg96FIFOData.fifoSize - ((n) << 1);\
-  if (fifoSize < 0) {\
-    gc->fifoData.hwDep.vg96FIFOData.blockSize = ((n) << 1); \
-    initWrapFIFO(&gc->fifoData); \
-     GR_CHECKINT10;\
-  }\
-}
-#else /* !SST96_ALT_FIFO_WRAP */
-#define GR_CHECK_FOR_ROOM(n) \
-{\
-  FxI32 fifoSize = gc->fifoData.hwDep.vg96FIFOData.fifoSize - ((n) << 1);\
-  if (fifoSize < 0) {\
-    _grSst96FifoMakeRoom();\
-    GR_ASSERT(!(gc->fifoData.hwDep.vg96FIFOData.fifoSize < 0x1000));\
-    GR_CHECKINT10;\
-  }\
-}
-#endif /* !SST96_ALT_FIFO_WRAP */
 #endif
 
 #ifdef GLIDE_SANITY_SIZE
 
-#define FIFO_SUB_VAL ((FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoPtr - \
-                      (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoVirt)
-   
 #define GR_CHECK_SIZE() \
    if(gc->counter != gc->expected_counter) \
    GDBG_ERROR("GR_ASSERT_SIZE","byte counter should be %d but is %d\n", \
@@ -1076,15 +756,8 @@
    ASSERT(gc->counter <= gc->expected_counter); \
    gc->counter = gc->expected_counter = 0
 #define GR_SET_EXPECTED_SIZE(n) \
-   GLIDE_FIFO_CHECK(); \
    GDBG_INFO((gc->myLevel, \
-              "FIFO: 0x%X 0x%X (0x%X)\n", \
-              (n), \
-              (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoPtr, \
-              FIFO_SUB_VAL)); \
-   GDBG_INFO((gc->myLevel, \
-              "FIFOSize: 0x%X\n", \
-              (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoSize));\
+              "FIFO: 0x%X\n", (n))); \
    ASSERT(gc->counter == 0); \
    ASSERT(gc->expected_counter == 0); \
    GR_CHECK_FOR_ROOM((n)); \
@@ -1127,17 +800,7 @@
                 GR_BEGIN_NOFIFOCHECK(name,level); \
                 GR_SET_EXPECTED_SIZE(size)
 
-#if SST96_ALT_FIFO_WRAP
-#define GR_EXIT_TRACE   \
-           GLIDE_FIFO_CHECK(); \
-           GDBG_INFO((gc->myLevel, \
-                      "%s Done: FifoPtr(0x%X) FifoTest(0x%X)\n", \
-                      myName, \
-                      (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoPtr, \
-                      gc->fifoData.hwDep.vg96FIFOData.fifoSize))
-#else
 #define GR_EXIT_TRACE   GDBG_INFO((gc->myLevel,  "%s Done\n", myName))
-#endif
 
 #define GR_END()        {GR_CHECK_SIZE(); GR_EXIT_TRACE;}
 #define GR_END_SLOPPY() {GR_CHECK_SIZE_SLOPPY(); GR_EXIT_TRACE;}
@@ -1173,167 +836,10 @@
   GR_CHECK_F(name, tmu < GR_TMU0 || tmu >= gc->num_tmu , "invalid TMU specified")
 
 
-FxBool
-_grSst96PCIFifoEmpty(void);
-FxU32
-_grSst96Load32(FxU32 *s);
-void
-_grSst96Store32(FxU32 *d, FxU32 s);
-void
-_grSst96Store16(FxU16 *d, FxU16 s);
-void 
-_grSst96Store32F(float *d, float s);
 void
 _grAssert(char *, char *, int);
 
-#if defined(SST96)
-/* sst.h defines SET,GET,SETF, and SET16 */
-#undef SET
-#undef SETF
-#undef SET16
-
-void GR_CDECL
-_grSst96FifoMakeRoom(void);
-
-#define SST96_LFB_OFFSET 0x000000
-#define SST96_REG_OFFSET 0x400000
-#define SST96_TEX_OFFSET 0x600000
-
-#ifdef SST96_FIFO
-#ifdef GDBG_INFO_ON
-void
-_grFifoWriteDebug(FxU32 addr, FxU32 val, FxU32 fifoPtr);
-#define DEBUGFIFOWRITE(a,b,c) \
-_grFifoWriteDebug((FxU32) a, (FxU32) b, (FxU32) c)
-void
-_grFifoFWriteDebug(FxU32 addr, float val, FxU32 fifoPtr);
-#define DEBUGFIFOFWRITE(a,b,c) \
-_grFifoFWriteDebug((FxU32) a, (float) b, (FxU32) c)
-#else
-#define DEBUGFIFOWRITE(a,b,c)
-#define DEBUGFIFOFWRITE(a,b,c)
-#endif
-
-/*  
-**  Here lies the infamous Nudge Of Love.  The Nudge Of Love is
-**  required to on P6s, where the read pointer trails the write
-**  pointer by 256 bytes (64 DWORDS).  The problem with that is
-**  sometimes we really need the hardware to have read all the data we
-**  have sent--thus the Nudge, which gently strokes the read pointer
-**  through the last commands we've placed in the commadn FIFO.
-**
-**  That would be all well and good except for one thing:  If the
-**  frame time is very short, Jr, doesn't like the Nudge Of Love.  So,
-**  instead of a whole bunch of nopCmds, we must draw a smallish
-**  triangle.  The problem with that, however, is the app may be
-**  reusing the contents of the color or depth buffers.  Thus, we have
-**  to disable the color and depth mask before drawing the triangle
-**  and replace the shadowed values after we draw it.
-**
-* dpc - 19 aug 1997 - FixMe!
-* This macro is called the P6_NUDGE_OF_LOVE, but it was not previously
-* conditional on running on a p6. Is this right? I moved the set expected
-* size thing into here, and made usages of the macro not set the expected
-* size and do the sloppy check.
-*/
-#define P6_NUDGE_OF_LOVE \
-if (_GlideRoot.CPUType == 6) {\
-  int i;\
-  GR_SET_EXPECTED_SIZE(32 << 2); \
-  GR_SET(hw->fbzMode, (gc->state.fbi_config.fbzMode & (~(SST_RGBWRMASK | SST_ZAWRMASK))));\
-  GR_SETF(hw->FvA.x, 0.f);\
-  GR_SETF(hw->FvA.y, 0.f);\
-  GR_SETF(hw->FvB.x, 100.f);\
-  GR_SETF(hw->FvB.y, 0.f);\
-  GR_SETF(hw->FvC.x, 100.f);\
-  GR_SETF(hw->FvC.y, 100.f);\
-  GR_SETF(hw->FtriangleCMD, 1.f);\
-  GR_SET(hw->fbzMode, gc->state.fbi_config.fbzMode);\
-  for (i = 0; i < 23; i++) GR_SET(hw->nopCMD, 0); \
-  GR_CHECK_SIZE(); \
-}
-
-#define P6FENCEFIFO \
-if (_GlideRoot.CPUType == 6) {\
-  GR_ASSERT(gc->hwDep.sst96Dep.writesSinceFence <= FENCE_AMOUNT);\
-  if (gc->hwDep.sst96Dep.writesSinceFence == FENCE_AMOUNT) {\
-    GR_P6FENCE;\
-  }\
-}
-
-#define SST96_STORE_FIFO(addr,val){\
-  GR_ASSERT(!(((FxU32)(gc->fifoData.hwDep.vg96FIFOData.fifoPtr) & 0x7)));\
-  GR_ASSERT(gc->fifoData.hwDep.vg96FIFOData.fifoSize > 0);\
-  P6FENCEFIFO;\
-  DEBUGFIFOWRITE(addr, val, gc->fifoData.hwDep.vg96FIFOData.fifoPtr);\
-  GLIDE_FIFO_CHECK(); \
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ =\
-   (((FxU32) ((FxU32) addr) - ((FxU32) gc->lfb_ptr)) >> 2);\
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ = val;\
-  gc->hwDep.sst96Dep.writesSinceFence+=2;\
-  gc->fifoData.hwDep.vg96FIFOData.fifoSize -= 8;\
-  GLIDE_FIFO_CHECK(); \
-}
-
-#define SST96_STOREF_FIFO(addr,fVal){\
-  GR_ASSERT(!(((FxU32)(gc->fifoData.hwDep.vg96FIFOData.fifoPtr) & 0x7)));\
-  GR_ASSERT(gc->fifoData.hwDep.vg96FIFOData.fifoSize);\
-  P6FENCEFIFO;\
-  DEBUGFIFOFWRITE((addr), fVal, gc->fifoData.hwDep.vg96FIFOData.fifoPtr);\
-  GLIDE_FIFO_CHECK(); \
-  *gc->fifoData.hwDep.vg96FIFOData.fifoPtr++ =\
-   (((addr) - ((FxU32) gc->lfb_ptr)) >> 2);\
-  *((float *)gc->fifoData.hwDep.vg96FIFOData.fifoPtr) = fVal;\
-    gc->fifoData.hwDep.vg96FIFOData.fifoPtr++;\
-  gc->hwDep.sst96Dep.writesSinceFence+=2;\
-  gc->fifoData.hwDep.vg96FIFOData.fifoSize -= 8;\
-  GLIDE_FIFO_CHECK(); \
-}
-
-#define SET16(d,s)      SST96_STORE_FIFO((&d), (FxU32) s)
-#define SET(d,s)        SST96_STORE_FIFO((&d),s)
-#define SETF(d,s)       SST96_STOREF_FIFO(((FxU32)(&(d))), s)
-
-/*
-**  Here are some macro for the very few times when we must perform a
-**  direct write of the hardware--even when using the memory-backed
-**  command FIFO.
-*/
-#ifndef GDBG_INFO_ON
-#define SET_DIRECT(d,s) (hw->d) = (s)
-#define SETF_DIRIECT(d,s) *((float *) &hw->d) = s
-#else
-#define REGOFFSET(d) (((FxU32) &hw->d - (FxU32) hw) >> 2)
-#define SET_DIRECT(d,s)\
-  GDBG_INFO((120, "DIRECT SET of register 0x%x with value 0x%x\n",\
-             REGOFFSET(d), s));\
-  (hw->d) = (s)
-#define SETF_DIRECT(d,s)\
-  GDBG_INFO((120, "DIRECT SET of register 0x%x with value %4.4f\n",\
-             REGOFFSET(d), s));\
-  *((float *) &hw->d) = s
-#endif
-
-#else
-
-#ifndef GDBG_INFO_ON
-#define GET(s)          s
-#define SET(d,s)        d = s
-#define SET16(d,s)      d = s
-#define SETF(d,s)       (*(float *)&(d)) = s
-#else
-#undef  GET
-
-#define GET(s)          _grSst96Load32(&s)
-#define SET(d,s)        _grSst96Store32((FxU32 *)&d, s)
-#define SET16(d,s)      _grSst96Store16(&d,s)
-#define SETF(d,s)       _grSst96Store32F((float *) &d, s)
-#endif /* GDBG_INFO_ON */
-#endif /* SST96_FIFO */
-
-#endif /* defined(SST96) */
-
-#if defined(GLIDE_DEBUG) && !defined(SST96)
+#if defined(GLIDE_DEBUG)
   extern FxU32 GR_CDECL _GR_GET(void *);
   extern void GR_CDECL _GR_SET16(void *, unsigned short);
   extern void GR_CDECL _GR_SET(void *, unsigned long);
@@ -1350,17 +856,6 @@
   #define GR_SET16(d,s) {SET16(d,s); GR_INC_SIZE(2);}
 #endif
 
-
-
-#define VG96_REGISTER_OFFSET    0x400000
-#define VG96_TEXTURE_OFFSET     0x600000
-/* make SST96 addresses */
-#define SST96_REG_PTR(a) \
-        ((FxU32 *) (((FxU32) a) + VG96_REGISTER_OFFSET))
-#define SST96_LFB_PTR(a) \
-        ((FxU32 *) a)
-#define SST96_TEX_PTR(a) \
-        ((FxU32 *) (((FxU32) a) + VG96_TEXTURE_OFFSET))
 
 void rle_decode_line_asm(FxU16 *tlut,FxU8 *src,FxU16 *dest);
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gbanner.c glide2/sst1/glide/src/gbanner.c
--- build-tree.orig/glide2x/sst1/glide/src/gbanner.c	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/gbanner.c	Sat Jul 29 18:09:37 2000
@@ -132,51 +132,6 @@
   }
   grGlideSetState( &state );
 
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  FXUNUSED( state );
-  info.size = sizeof( info );
-  if ( grLfbLock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER,
-                  GR_LFBWRITEMODE_565,GR_ORIGIN_UPPER_LEFT, 
-                  FXFALSE, &info ) ) {
-
-      FxU16 *dstData;
-      FxU32  dstJump;
-      FxU16 *srcData;
-      FxI32  srcJump;
-      FxU32  srcScanlineLength;
-      FxU32  scrWidth  = gc->state.screen_width;
-      FxU32  scrHeight = gc->state.screen_height;
-
-      FxU32  scanline;
-
-      /* Draw Banner in lower right of screen */
-      if ( scrWidth  < (FxU32)banner_width  ) return;
-      if ( scrHeight < (FxU32)banner_height ) return;
-
-      dstData = info.lfbPtr;
-      dstData = (FxU16*)( ((char*)dstData) + 
-                          (info.strideInBytes*((scrHeight-1)-banner_height)) +
-                          ((scrWidth-banner_width)<<1) );
-      dstJump = ((info.strideInBytes >> 1) - banner_width);
-      srcData = (FxU16*)&banner_data[banner_width*(banner_height-1)];
-      srcScanlineLength = banner_width;
-      srcJump = (-banner_width)*2;
-
-      for( scanline = 0; scanline < (FxU32)banner_height; scanline++ ) {
-          FxU16 *end = srcData + srcScanlineLength;
-          while( srcData < end ) {
-              if ( *srcData )
-                  *dstData = *srcData;
-              dstData++;
-              srcData++;
-          }
-          dstData += dstJump;
-          srcData += srcJump;
-      }
-      
-      grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER );
-  }
-
 #else
 #  error "Shameless Plug Unimplemented on this Hardware"  
 #endif
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gerror.c glide2/sst1/glide/src/gerror.c
--- build-tree.orig/glide2x/sst1/glide/src/gerror.c	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/gerror.c	Sat Jul 29 18:10:31 2000
@@ -60,10 +60,6 @@
 
 #if(GLIDE_PLATFORM & GLIDE_OS_DOS32)
 #  include <malloc.h>
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#  include <conio.h>
-#  include <i86.h>
-#endif
 #endif
 
 void (*GrErrorCallback)( const char *string, FxBool fatal );
@@ -107,17 +103,6 @@
     grSstWinClose();
     grGlideShutdown();
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96) && (GLIDE_PLATFORM & GLIDE_OS_DOS32)    
-    {
-      /* Set Mode 3 before going */
-      union REGS
-        inR, outR;
-      
-      inR.w.ax = 0x0003;
-      int386(0x10, &inR, &outR);
-
-    }
-#endif
 #ifdef GDBG_INFO_ON
     GDBG_ERROR("glide", s);
     GDBG_PRINTF((s));
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gglide.c glide2/sst1/glide/src/gglide.c
--- build-tree.orig/glide2x/sst1/glide/src/gglide.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/src/gglide.c	Sat Jul 29 17:52:46 2000
@@ -191,10 +191,6 @@
 #include "fxglide.h"
 #include "fxinline.h"
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-#include <init.h>
-#endif
-
 #include "rcver.h"
 static char glideIdent[] = "@#%" VERSIONSTR ;
 
@@ -434,11 +430,7 @@
 {
   GrColor_t oldc1;
   FxU32 oldzacolor, zacolor;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  GR_BEGIN("grBufferClear",86,44);
-#else
   GR_BEGIN("grBufferClear",86,24);
-#endif
   GDBG_INFO_MORE((gc->myLevel,"(0x%x,0x%x,0x%x)\n",color,alpha,depth));
 
   oldc1   = gc->state.fbi_config.color1;
@@ -463,31 +455,6 @@
     zacolor |= ( ( ( FxU32 ) depth ) << SST_ZACOLOR_DEPTH_SHIFT );
     GR_SET( hw->zaColor, zacolor );
   }
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  /*
-  **  On SST96, it's faster if clear the buffers separately if we need
-  **  to clear both of them.
-  */
-  if (
-      (gc->state.fbi_config.fbzMode & (SST_RGBWRMASK | SST_ZAWRMASK))
-      == (SST_RGBWRMASK | SST_ZAWRMASK)
-      ) {
-    FxU32 fbzMode;
-    /* Disable ZA write and fill */
-    fbzMode = gc->state.fbi_config.fbzMode & ~SST_ZAWRMASK;
-    GR_SET(hw->fbzMode, fbzMode);
-    GR_SET(hw->fastfillCMD,1);
-
-    /* Disable RGB write mask and fill */
-    fbzMode = gc->state.fbi_config.fbzMode & ~SST_RGBWRMASK;
-    GR_SET(hw->fbzMode, fbzMode);
-    GR_SET(hw->fastfillCMD,1);
-
-    /* Restore fbzMode to previous state */
-    GR_SET(hw->fbzMode, gc->state.fbi_config.fbzMode);
-        
-  } else
-#endif
   /*
   ** Execute the FASTFILL command
   */
@@ -516,80 +483,10 @@
 #define FN_NAME "grBuferSwap"
   int vSync;
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-#ifdef GDBG_INFO_ON
-  int
-    nTries;
-#endif
-
-  int pending;
-#endif
-
   GR_BEGIN_NOFIFOCHECK(FN_NAME,80);
   GDBG_INFO_MORE((gc->myLevel,"(%d)\n",swapInterval));
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 ) 
-  FXUNUSED( vSync );
-
-#ifdef GDBG_INFO_ON
-  nTries = 0;
-#endif
-
-  /*
-   * For improved speed we take the following steps
-   * 1. remove the status checking
-   * 2. modify grBufferNumPending so it does not need to do P6 nudge code
-   * 3. add one p6 nudge code
-   * Here is step 3.
-   * If we introduce new bugs in 2.43, please undo the above steps
-   */
-  P6_NUDGE_OF_LOVE;
-
-  pending = grBufferNumPending();
-
-  if (pending < 1 && gc->grSstRez != GR_RESOLUTION_NONE) {
-    GR_SET_EXPECTED_SIZE((9 << 2));
-    GR_SET(hw->fbzMode, (gc->state.fbi_config.fbzMode & (~(SST_RGBWRMASK | SST_ZAWRMASK))));
-    GR_SETF(hw->FvA.x, 0.f);
-    GR_SETF(hw->FvA.y, 0.f);
-    GR_SETF(hw->FvB.x, 640.f);
-    GR_SETF(hw->FvB.y, 0.f);
-    GR_SETF(hw->FvC.x, 640.f);
-    GR_SETF(hw->FvC.y, 480.f);
-    GR_SETF(hw->FtriangleCMD, 1.f);
-    GR_SET(hw->fbzMode, gc->state.fbi_config.fbzMode);
-    GR_CHECK_SIZE();
-  }
-
-  while (pending > 3) {
-#ifdef GDBG_INFO_ON
-    GDBG_INFO((86, "%s:  Checked pending %d times\n", FN_NAME,
-               ++nTries));
-    if (nTries > 10000)
-      GDBG_ERROR(FN_NAME , "Exiting after %d tries for pending\n", nTries);
-#endif /* GDBG_INFO_ON */
-    pending = grBufferNumPending();
-  } while (pending > 3);
-  
-  /* optionally display the 3Dfx powerfield logo overlay */
-  if (_GlideRoot.environment.shamelessPlug)
-    _grShamelessPlug();
-
-  initSwapBuffers( swapInterval );
-
-#ifdef H3D
-  if (GR_RESOLUTION_IS_AUTOFLIPPED(gc->grSstRez)) {
-    extern void pageflippingSwapWait(void);
-    do {
-      pending = grBufferNumPending();
-    } while (pending > 0);
-    pageflippingSwapWait();
-  }
-#endif
-
-  P6_NUDGE_OF_LOVE;
-
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST1 ) 
+#if ( GLIDE_PLATFORM & GLIDE_HW_SST1 ) 
   /* optionally display the 3Dfx powerfield logo overlay */
   if (_GlideRoot.environment.shamelessPlug)
     _grShamelessPlug();
@@ -681,10 +578,6 @@
 
 #if (GLIDE_PLATFORM & GLIDE_HW_SST1)
   pend = (status & SST_SWAPBUFPENDING) >> SST_SWAPBUFPENDING_SHIFT;
-#elif (GLIDE_PLATFORM & GLIDE_HW_SST96)
-#define SST96_SWAPPEND_SHIFT    0x4
-#define SST96_SWAPPEND_BITS     (0x7 << SST96_SWAPPEND_SHIFT)
-  pend = ((status & SST96_SWAPPEND_BITS) >> SST96_SWAPPEND_SHIFT);
 #else
 #  error "Implement BufferNumPending for this hardware"
 #endif
@@ -770,10 +663,6 @@
   GDBG_INFO((41, "%s:  clipLeftRight = 0x%x, clipBottomTop = 0x%x\n",
              FN_NAME, clipLeftRight, clipBottomTop));
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  /* Enable clipping */
-  *clipLeftRight |= 0x80000000;
-#endif  
 #undef FN_NAME 
 } /* _grClipNormalizeAndGenerateRegValues */
 
@@ -1087,11 +976,6 @@
    /*
    ** depth buffering cannot be enabled at the same time as triple buffering
    */
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-   GR_CHECK_F( myName,
-                mode != GR_DEPTHBUFFER_DISABLE && gc->state.num_buffers == 3 && gc->fbuf_size <= 2,
-                "cannot enable depth buffer when triple buffering" );
-#endif
    /*
    ** depth buffering cannot be enabled on systems running at:
    **      800x600 w/ 2MB
@@ -1369,9 +1253,7 @@
   GR_SET( hw->fogMode, gc->state.fbi_config.fogMode );
   GR_SET( hw->alphaMode, gc->state.fbi_config.alphaMode );
   GR_SET( hw->fbzMode, gc->state.fbi_config.fbzMode );
-#if !(GLIDE_PLATFORM & GLIDE_HW_SST96)
   GR_SET( hw->lfbMode, gc->state.fbi_config.lfbMode );
-#endif
   GR_SET( hw->clipLeftRight, gc->state.fbi_config.clipLeftRight );
   GR_SET( hw->clipBottomTop, gc->state.fbi_config.clipBottomTop );
   GR_SET( hw->fogColor, gc->state.fbi_config.fogColor );
@@ -1401,14 +1283,6 @@
   _grUpdateParamIndex();
 
   GR_END_SLOPPY();
-  
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  if (gc->state.fbi_config.fbzMode & SST_YORIGIN)
-    grSstOrigin(GR_ORIGIN_LOWER_LEFT);
-  else
-    grSstOrigin(GR_ORIGIN_UPPER_LEFT);
-#endif
-
 } /* grGlideSetState */
 
 /*---------------------------------------------------------------------------
@@ -1438,8 +1312,6 @@
       GR_SET( hw->fbzMode, fbzMode );
       gc->state.fbi_config.fbzMode = fbzMode;
   }
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  initRenderBuffer( buffer );
 #else
 #  error "No renderbuffer implementation"
 #endif
@@ -1468,12 +1340,6 @@
   FxU32 fogMode = gc->state.fbi_config.fogMode;
   FxU32 fbzMode = gc->state.fbi_config.fbzMode;
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  FxU32 gwHeaderNum = 0;
-  /* Set up bits for vtx a,b,c x & y */
-  gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] = GWH_VTX_BITS;
-#endif
-
   /*
   ** First, turn on every bit that we think we need. We can prune them
   ** back later.
@@ -1504,41 +1370,26 @@
   /* See if we need iterated RGB */
   if ( gc->state.cc_requires_it_rgb && !gc->state.cc_delta0mode ) {
     paramIndex |= STATE_REQUIRES_IT_DRGB;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= (GWH_RGB_BITS);
-#endif
   }
 
   /* See if we need to iterate alpha based on the value of
      ac_requires_it_alpha */ 
   if (gc->state.ac_requires_it_alpha) {
     paramIndex |= STATE_REQUIRES_IT_ALPHA;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_A_BITS;
-#endif
   }
 
   /* See what fbzColorPath contributes - BUG 1084*/
   if ( ( fbzColorPath & SST_ALOCALSELECT ) == 
        ( SST_ALOCAL_Z ) ) {
       paramIndex |= STATE_REQUIRES_OOZ;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_Z_BITS;
-#endif
   }
 
   /* See what fbzMode contributes */
   if (fbzMode & SST_ENDEPTHBUFFER) {
     if (fbzMode & SST_WBUFFER) {
       paramIndex |= STATE_REQUIRES_OOW_FBI;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_W_BITS;
-#endif
     } else {
       paramIndex |= STATE_REQUIRES_OOZ;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_Z_BITS;
-#endif
     }
   }
 
@@ -1546,20 +1397,11 @@
   if (fogMode & SST_ENFOGGING) {
     if (fogMode & SST_FOG_Z) {
       paramIndex |= STATE_REQUIRES_OOZ;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_Z_BITS;
-#endif
     } else {
       if (fogMode & SST_FOG_ALPHA) {
         paramIndex |= STATE_REQUIRES_IT_ALPHA;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_A_BITS;
-#endif
       } else {
         paramIndex |= STATE_REQUIRES_OOW_FBI;
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_W_BITS;
-#endif
       }
     }
   }
@@ -1660,170 +1502,6 @@
   #define DWDY  Fdwdy
 #endif
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-
-/*---------------------------------------------------------------------------
-** _grRebuildDataList
-*/
-GR_DDFUNC(_grRebuildDataList, void, ( void ))
-{
-  GR_DCL_GC;
-  GR_DCL_HW;
-  int curTriSize, params;
-  FxU32 gwHeaderNum, gwpSize;            /* header + vertices */
-  FxU32 i, packMask=1;
-  Sstregs *tmu0;
-  Sstregs *tmu1;
-    
-#ifdef GDBG_INFO_ON
-  static char *p_str[] = {"x","y","z","r","g","b","ooz","a","oow",
-                            "s0","t0","w0","s1","t1","w1","s2","t2","w2"};
-#endif
-  
-  GDBG_INFO((80,"_grRebuildDataList() paramHints=0x%x paramIndex=0x%x\n",
-             gc->state.paramHints,gc->state.paramIndex));
-  
-  curTriSize = params = 0;
-  i = gc->state.paramIndex;
-  if (_GlideRoot.CPUType == 6) packMask |= 2;
-  
-  tmu0 = SST_CHIP(hw,0xE); /* tmu 0,1,2 */
-  tmu1 = SST_CHIP(hw,0xC); /* tmu 1,2 */
-  
-  /* init group write data */
-  gwHeaderNum = 0;
-  gwpSize     = 8;   /* header + vertices */
-  /* !!! fixme - jdt
-     this won't ever change, actually, but this is the safest
-     place I can think of to init this for now */
-  gc->hwDep.sst96Dep.gwCommand = GWH_GEN_ADDRESS(&hw->FvA.x);
-  
-  /*
-     ((((FxU32)((FxU32) &hw->FvA.x) - (FxU32) gc->lfb_ptr) >> 2) | 0x100000 | ( 1L << (31) ));
-     */
-  
-  gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] = 0;
-  gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_VTX_BITS;
-  
-  if (i & STATE_REQUIRES_IT_DRGB) {
-    /* add 9 to size array for r,drdx,drdy,g,dgdx,dgdy,b,dbdx,dbdy */
-    gc->dataList[curTriSize + 0].i    = GR_VERTEX_R_OFFSET<<2;
-    gc->dataList[curTriSize + 0].addr = (float *)&hw->RED;
-    gc->dataList[curTriSize + 1].i    = GR_VERTEX_G_OFFSET<<2;
-    gc->dataList[curTriSize + 1].addr = (float *)&hw->GRN;
-    gc->dataList[curTriSize + 2].i    = GR_VERTEX_B_OFFSET<<2;
-    gc->dataList[curTriSize + 2].addr = (float *)&hw->BLU;
-    curTriSize += 3;
-    params += 3;
-
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_RGB_BITS;
-    gwpSize += 9;
-  }
-  
-  if (i & STATE_REQUIRES_OOZ) {
-    gc->dataList[curTriSize + 0].i    = GR_VERTEX_OOZ_OFFSET<<2;
-    gc->dataList[curTriSize + 0].addr = (float *)&hw->Z;
-    curTriSize += 1;
-    params += 1;
-
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_Z_BITS;
-    gwpSize += 3;
-  }
-  
-  if (i & STATE_REQUIRES_IT_ALPHA) {
-    gc->dataList[curTriSize + 0].i    = GR_VERTEX_A_OFFSET<<2;
-    gc->dataList[curTriSize + 0].addr = (float *)&hw->ALF;
-    curTriSize += 1;
-    params += 1;
-
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_A_BITS;
-    gwpSize += 3;
-  }
-  
-  /* TMU1 --------------------------------- */
-  /* always output to ALL chips, saves from having to change CHIP field */
-  if (i & STATE_REQUIRES_ST_TMU0) {
-    gc->dataList[curTriSize + 0].i    = GR_VERTEX_SOW_TMU0_OFFSET<<2;
-    gc->dataList[curTriSize + 0].addr = (float *)&hw->S;
-    gc->dataList[curTriSize + 1].i    = GR_VERTEX_TOW_TMU0_OFFSET<<2;
-    gc->dataList[curTriSize + 1].addr = (float *)&hw->T;
-    curTriSize += 2;
-    params += 2;
-
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_ST_BITS;
-    gwpSize += 6;
-  }
-  
-  /* we squeeze FBI.OOW in here for sequential writes in the simple case */
-  if (i & STATE_REQUIRES_OOW_FBI) {
-    gc->dataList[curTriSize + 0].i    = GR_VERTEX_OOW_OFFSET<<2;
-    gc->dataList[curTriSize + 0].addr = (float *)&hw->W;
-    curTriSize += 1;
-    params += 1;
-
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_W_BITS;
-    gwpSize += 3;
-  }
-
-  /* NOTE: this is the first */
-  if (i & STATE_REQUIRES_W_TMU0) {
-    /* We do this a bit differently for grouped writes */
-    gc->dataList[curTriSize + 0].i    = packMask;
-    gc->dataList[curTriSize + 0].addr =
-      (float *) GWH_GEN_ADDRESS(&tmu0->FvA.x);
-    gc->dataList[curTriSize + 1].i    = GR_VERTEX_OOW_TMU0_OFFSET<<2;
-    gc->dataList[curTriSize + 1].addr = 0L;
-    
-    if (gwpSize & 1)
-      ++gwpSize;              /* Justify your love */
-    gwpSize += 5;             /* 2 header + grads */
-    
-    ++gwHeaderNum;
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_W_BITS;
-    curTriSize += 2;
-    params += 1;
-  }
-  
-  gc->dataList[curTriSize++].i = 0;     /* terminate the list with 0,*      */
-  /* followed by the FtriangleCMD reg */
-  gc->dataList[curTriSize].i = packMask;/* encode P6 flag here for asm code */
-  gc->dataList[curTriSize].addr = (float *)&hw->FtriangleCMD;
-  
-  /* 6 X,Y values plus AREA = 7, plus parameters */
-  if (gwHeaderNum) {
-    if (gwpSize & 1)
-      ++gwpSize;                /* justify your love */
-
-    /* If we've had a chip field change above then we need to start a
-     ** new packet for the triangle command, so we don't put it in the
-     ** original */
-    gwpSize +=4;        /* The triangleCMD GWP constitutes 4 DWORDS */
-  } else {
-    gc->hwDep.sst96Dep.gwHeaders[gwHeaderNum] |= GWH_FTRIANGLECMD_BIT;
-    gwpSize++;                    /* Triangle Command */
-
-    if (gwpSize & 1)
-      ++gwpSize;                /* justify the fifo */
-  }    
-
-  _GlideRoot.curTriSize = gwpSize << 2; /* GR.curTriSize in bytes */
-
-  /* Need to know tri size without gradients for planar polygons */
-  _GlideRoot.curTriSizeNoGradient = _GlideRoot.curTriSize - (params<<3);
-  
-#ifdef GDBG_INFO_ON
-  GDBG_INFO((282, "DataList\n"));
-  for (i = 0; gc->dataList[i].i; i++) {
-    GDBG_INFO((282,"    dataList[%d] = %2d 0x%x [%s]\n",
-               i,gc->dataList[i].i>>2,gc->dataList[i].addr,
-               (gc->dataList[i].i & 1) ? "packer" : p_str[gc->dataList[i].i>>2]));
-  }
-#endif
-
-} /* _grRebuildDataList */
-
-#else  /* It's SST1 */
-
 /*---------------------------------------------------------------------------
 ** _grRebuildDataList
 */
@@ -1969,8 +1647,6 @@
 #endif
 
 } /* _grRebuildDataList */
-
-#endif
 
 #if GLIDE_MULTIPLATFORM
 /*
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/glfb.c glide2/sst1/glide/src/glfb.c
--- build-tree.orig/glide2x/sst1/glide/src/glfb.c	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/glfb.c	Sat Jul 29 18:13:09 2000
@@ -348,100 +348,11 @@
     }
   }
   
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  switch( type ) {
-  case GR_LFB_READ_ONLY:
-    if ( gc->lockPtrs[type]!= (FxU32)-1 ) {
-      GDBG_INFO(( 83, "Read lock failure due to existing lock" ));
-      rv = FXFALSE;
-    } else {
-      info->lfbPtr = initGetBufferPtr( buffer, &info->strideInBytes );
-      if ( origin != GR_ORIGIN_UPPER_LEFT ) {
-        GDBG_INFO((gc->myLevel,  
-                   "Lock failed because of unsu"
-                   "pported origin." ));
-        rv = FXFALSE;
-      }
-      info->origin = GR_ORIGIN_UPPER_LEFT;
-      if ( rv == FXTRUE ) 
-        gc->lockPtrs[type] = buffer;
-    }
-    break;
-  case GR_LFB_WRITE_ONLY:
-    if ( gc->lockPtrs[type]!= (FxU32)-1 ) {
-      GDBG_INFO(( 83, "Read lock failure due to existing lock" ));
-      rv = FXFALSE;
-    } else {
-      info->lfbPtr = initGetBufferPtr( buffer, &info->strideInBytes );
-      if ( !info->lfbPtr ) {
-        GDBG_INFO((gc->myLevel,  
-                   "Lock failed because buffer doesn't exist" ));
-        rv = FXFALSE;
-      }
-      if ( origin != GR_ORIGIN_UPPER_LEFT ) {
-        GDBG_INFO((gc->myLevel,  
-                   "Lock failed because of unsupported origin." ));
-        rv = FXFALSE;
-      }
-
-      /* Voodoo Rush lfb writes don't go through the pixel pipeline */
-      switch( buffer ) {
-      case GR_BUFFER_FRONTBUFFER:
-        if (writeMode == GR_LFBWRITEMODE_ANY) {
-          writeMode = GR_LFBWRITEMODE_565;
-        } else if ( writeMode != GR_LFBWRITEMODE_565 ) {
-          rv = FXFALSE;
-        }
-        break;
-      case GR_BUFFER_BACKBUFFER:
-        if (writeMode == GR_LFBWRITEMODE_ANY) {
-          writeMode = GR_LFBWRITEMODE_565;
-        } else if ( writeMode != GR_LFBWRITEMODE_565 ) {
-          rv = FXFALSE;
-        }
-        break;
-      case GR_BUFFER_AUXBUFFER:
-        if (writeMode == GR_LFBWRITEMODE_ANY) {
-          writeMode = GR_LFBWRITEMODE_ZA16;
-        } else if ( writeMode != GR_LFBWRITEMODE_ZA16 ) {
-          rv = FXFALSE;
-        }
-        break;
-      default:
-        GR_CHECK_F( myName, 1, "illegal buffer parameter passed" );
-        break;
-      } /* end switch(buffer) */
-
-      if ( pixelPipeline ) {
-        GDBG_INFO((gc->myLevel,  
-                   "Lock failed because pixelpipeline is not available on VG96." ));
-        rv = FXFALSE;
-      }
-      info->writeMode = writeMode;
-      info->origin = GR_ORIGIN_UPPER_LEFT;
-      if ( rv == FXTRUE ) 
-        gc->lockPtrs[type] = buffer;
-      GDBG_INFO(( gc->myLevel, 
-                 "Write Lock Successful: ptr=0x%.08x stride=%.04d\n",
-                 info->lfbPtr,
-                 info->strideInBytes ));
-    }
-    break;
-  } /* end switch(type) */
-
 #else
 #  error "No lfb implementation for this platform"
 #endif
   GR_CHECK_SIZE();
   /* We HAVE to idle on Jr., as out-of-order LFBs are unacceptable */
-  if (
-      lockIdle ||
-      (
-       _GlideRoot.hwConfig.SSTs[_GlideRoot.current_sst].type ==
-       GR_SSTTYPE_SST96
-       )
-      )
-    grSstIdle();
   GR_RETURN( rv );
 } /* grLfbLock */
     
@@ -504,15 +415,6 @@
     GDBG_INFO((gc->myLevel, "Unlock failed because there was no matching lock" ));
     rval = FXFALSE;
   }
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  if ( gc->lockPtrs[type] == (FxU32)buffer ) {
-    rval = FXTRUE;
-
-    gc->lockPtrs[type] = (FxU32)-1;
-  } else {
-    GDBG_INFO((gc->myLevel, "Unlock failed because there was no matching lock" ));
-    rval = FXFALSE;
-  }
 #endif
   GR_RETURN( rval );
 } /* grLfbUnlock */
@@ -525,7 +427,6 @@
 
 GR_ENTRY(grLfbWriteColorFormat, void, (GrColorFormat_t colorFormat))
 {
-#if !(GLIDE_PLATFORM & GLIDE_HW_SST96)
   FxU32 lfbMode;
 
   GR_BEGIN("grLfbWriteColorFormat",82,8);
@@ -544,9 +445,6 @@
   if ( gc->scanline_interleaved == FXTRUE ) 
     GR_SET( hw-> nopCMD, 0x0 );
   GR_END_SLOPPY();
-#else
-  return;
-#endif
 } /* grLfbWriteColorFormat */
 
 
@@ -561,7 +459,6 @@
 
 GR_ENTRY(grLfbWriteColorSwizzle, void, (FxBool swizzleBytes, FxBool swapWords))
 {
-#if !(GLIDE_PLATFORM & GLIDE_HW_SST96)
   FxU32 lfbMode;
 
   GR_BEGIN("grLfbWriteColorSwizzle",82,8);
@@ -582,9 +479,6 @@
   if ( gc->scanline_interleaved == FXTRUE ) 
     GR_SET( hw-> nopCMD, 0x0 );
   GR_END_SLOPPY();
-#else
-  return;
-#endif
 } /* grLfbWriteColorSwizzle */
 
 /*-------------------------------------------------------------------
@@ -746,80 +640,6 @@
   } else {
     rv = FXFALSE;
   }
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  if ( src_format == GR_LFB_SRC_FMT_RLE16 ) {
-    rv = FXFALSE;
-    GR_RETURN( rv );
-  } else 
-    writeMode = src_format;
-  
-  info.size = sizeof( info );
-  
-  if ( grLfbLock( GR_LFB_WRITE_ONLY,
-                 dst_buffer, 
-                 writeMode,
-                 GR_ORIGIN_UPPER_LEFT,
-                 FXFALSE,
-                 &info ) ) {
-    FxU32 *srcData;             /* Tracking Source Pointer */
-    FxU32 *dstData;             /* Tracking Destination Pointer */
-    FxU32 *end;                 /* Demarks End of each Scanline */
-    FxI32 srcJump;              /* bytes to next scanline */
-    FxU32 dstJump;              /* bytes to next scanline */
-    FxU32 length;               /* bytes to copy in scanline */
-    FxU32 scanline;             /* scanline number */
-    int   aligned;              /* word aligned? */
-    
-    
-    srcData = ( FxU32 * ) src_data;
-    dstData = ( FxU32 * ) ( ((char*)info.lfbPtr)+
-                           (dst_y*info.strideInBytes)+
-                           (dst_x<<1));
-    scanline = src_height;
-    length  = src_width * 2;
-    aligned = !((int)dstData&0x2);
-    srcJump = src_stride - length;
-    dstJump = info.strideInBytes - length;
-    if ( aligned ) {
-      while( scanline-- ) {
-        end = (FxU32*)((char*)srcData + length - 2);
-        while( srcData < end ) 
-          *dstData++ = *srcData++;
-                
-        if ( ((int)length) & 0x2 ) {
-          *(FxU16*)dstData = *(FxU16*)srcData;
-          dstData = (FxU32*)(((FxU16*)dstData) + 1 );
-          srcData = (FxU32*)(((FxU16*)srcData) + 1 );
-        }
-                
-        dstData = (FxU32*)(((char*)dstData)+dstJump);
-        srcData = (FxU32*)(((char*)srcData)+srcJump);
-      }
-    } else {
-      while( scanline-- ) {
-        end = (FxU32*)((char*)srcData + length - 2);
-                
-        *(FxU16*)dstData = *(FxU16*)srcData;
-        dstData = (FxU32*)(((FxU16*)dstData) + 1 );
-        srcData = (FxU32*)(((FxU16*)srcData) + 1 );
-                
-        while( srcData < end ) 
-          *dstData++ = *srcData++;
-                
-        if ( !(((int)length) & 0x2) ) {
-          *(FxU16*)dstData = *(FxU16*)srcData;
-          dstData = (FxU32*)(((FxU16*)dstData) + 1 );
-          srcData = (FxU32*)(((FxU16*)srcData) + 1 );
-        }
-                
-        dstData = (FxU32*)(((char*)dstData)+dstJump);
-        srcData = (FxU32*)(((char*)srcData)+srcJump);
-      }
-    }
-    grLfbUnlock( GR_LFB_WRITE_ONLY, dst_buffer );
-  } else {
-    rv = FXFALSE;
-  }
 #else 
 #  error "No grLfbWriteRegion Implementation for this platform"     
 #endif
@@ -944,74 +764,6 @@
     grLfbUnlock( GR_LFB_READ_ONLY, src_buffer );
     if ( gc->scanline_interleaved ) 
       sst1InitSliPciOwner( gc->base_ptr, SST_SLI_MASTER_OWNPCI );
-  } else {
-    rv = FXFALSE;
-  }
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  info.size = sizeof( info );
-  if ( grLfbLock( GR_LFB_READ_ONLY,
-                 src_buffer, 
-                 GR_LFBWRITEMODE_ANY,
-                 GR_ORIGIN_UPPER_LEFT,
-                 FXFALSE,
-                 &info ) ) {
-    FxU32 *srcData;             /* Tracking Source Pointer */
-    FxU32 *dstData;             /* Tracking Destination Pointer */
-    FxU32 *end;                 /* Demarks End of each Scanline */
-    FxU32 srcJump;              /* bytes to next scanline */
-    FxU32 dstJump;              /* bytes to next scanline */
-    FxU32 length;               /* bytes to copy in scanline */
-    FxU32 scanline;             /* scanline number */
-    int   aligned;              /* word aligned? */
-    
-    dstData = ( FxU32 * ) dst_data;
-    srcData = ( FxU32 * ) ( ((char*)info.lfbPtr)+
-                           (src_y*info.strideInBytes) +
-                           (src_x<<1) );
-    scanline = src_height;
-    length   = src_width * 2;
-    dstJump  = dst_stride - length;
-    srcJump  = info.strideInBytes - length;
-    aligned  = !((int)srcData&0x2);
-    
-    if ( aligned ) {
-      while( scanline-- ) {
-        end = (FxU32*)((char*)srcData + length - 2);
-
-        while( srcData < end ) 
-          *dstData++ = *srcData++;
-                
-        if ( ((int)length) & 0x2 ) {
-          (*(FxU16*)dstData) = (*(FxU16*)srcData);
-          dstData = (FxU32*)(((FxU16*)dstData) + 1 );
-          srcData = (FxU32*)(((FxU16*)srcData) + 1 );
-        }
-                
-        dstData = (FxU32*)(((char*)dstData)+dstJump);
-        srcData = (FxU32*)(((char*)srcData)+srcJump);
-      }
-    } else {
-      while( scanline-- ) {
-        end = (FxU32*)((char*)srcData + length - 2);
-                
-        (*(FxU16*)dstData) = (*(FxU16*)srcData);
-        dstData = (FxU32*)(((FxU16*)dstData) + 1 );
-        srcData = (FxU32*)(((FxU16*)srcData) + 1 );
-
-        while( srcData < end )
-          *dstData++ = *srcData++;
-
-        if ( !(((int)length) & 0x2) ) {
-          (*(FxU16*)dstData) = (*(FxU16*)srcData);
-          dstData = (FxU32*)(((FxU16*)dstData) + 1 );
-          srcData = (FxU32*)(((FxU16*)srcData) + 1 );
-        }
-                
-        dstData = (FxU32*)(((char*)dstData)+dstJump);
-        srcData = (FxU32*)(((char*)srcData)+srcJump);
-      }
-    }
-    grLfbUnlock( GR_LFB_READ_ONLY, src_buffer );
   } else {
     rv = FXFALSE;
   }
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/glide.h glide2/sst1/glide/src/glide.h
--- build-tree.orig/glide2x/sst1/glide/src/glide.h	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/glide.h	Sat Jul 29 18:13:28 2000
@@ -706,7 +706,6 @@
 
 typedef int GrSstType;
 #define GR_SSTTYPE_VOODOO    0
-#define GR_SSTTYPE_SST96     1
 #define GR_SSTTYPE_AT3D      2
 #define GR_SSTTYPE_Voodoo2   3
 
@@ -723,12 +722,6 @@
   GrTMUConfig_t tmuConfig[GLIDE_NUM_TMU];   /* Configuration of the Texelfx chips */
 } GrVoodooConfig_t;
 
-typedef struct GrSst96Config_St {
-  int   fbRam;                  /* How much? */
-  int   nTexelfx;
-  GrTMUConfig_t tmuConfig;
-} GrSst96Config_t;
-
 typedef GrVoodooConfig_t GrVoodoo2Config_t;
 
 typedef struct GrAT3DConfig_St {
@@ -741,7 +734,6 @@
     GrSstType type;             /* Which hardware is it? */
     union SstBoard_u {
       GrVoodooConfig_t  VoodooConfig;
-      GrSst96Config_t   SST96Config;
       GrAT3DConfig_t    AT3DConfig;
       GrVoodoo2Config_t Voodoo2Config;
     } sstBoard;
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/glidesys.h glide2/sst1/glide/src/glidesys.h
--- build-tree.orig/glide2x/sst1/glide/src/glidesys.h	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/glidesys.h	Sat Jul 29 18:13:47 2000
@@ -52,7 +52,6 @@
 /* Hardware Type is stored in bits [9:12] */
 #define GLIDE_HW_SHIFT          9
 #define GLIDE_HW_SST1           (0x1 << GLIDE_HW_SHIFT)
-#define GLIDE_HW_SST96          (0x2 << GLIDE_HW_SHIFT)
 #define GLIDE_HW_SSTH3          (0x4 << GLIDE_HW_SHIFT)
 
 /*
@@ -85,9 +84,7 @@
 
 
 /* Check for type of hardware */
-#ifdef SST96
-#  define GLIDE_HW        GLIDE_HW_SST96
-#elif defined(SSTH3)
+#if defined(SSTH3)
 #  define GLIDE_HW        GLIDE_HW_SSTH3
 #else /* Default to SST1 */
 #  define GLIDE_HW        GLIDE_HW_SST1
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gpci.c glide2/sst1/glide/src/gpci.c
--- build-tree.orig/glide2x/sst1/glide/src/gpci.c	Tue Dec  7 16:48:52 1999
--- build-tree/glide2x/sst1/glide/src/gpci.c	Sat Jul 29 17:53:44 2000
@@ -253,48 +253,6 @@
         rv = FXTRUE;
         ctx++;
       }
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-      if ( info.hwClass == INIT_VG96 ) {
-        _GlideRoot.hwConfig.SSTs[ctx].type = GR_SSTTYPE_SST96;
-
-        _GlideRoot.GCs[ctx].base_ptr  = (FxU32 *)info.hwDep.vg96Info.vg96BaseAddr;
-        _GlideRoot.GCs[ctx].reg_ptr   = (FxU32 *)SST96_REG_PTR(info.hwDep.vg96Info.vg96BaseAddr);
-        _GlideRoot.GCs[ctx].lfb_ptr   = (FxU32 *)SST96_LFB_PTR(info.hwDep.vg96Info.vg96BaseAddr);
-        _GlideRoot.GCs[ctx].tex_ptr   = (FxU32 *)SST96_TEX_PTR(info.hwDep.vg96Info.vg96BaseAddr);
-        _GlideRoot.GCs[ctx].slave_ptr = 0;
-
-        _GlideRoot.GCs[ctx].grSstRez     = GR_RESOLUTION_NONE;
-        _GlideRoot.GCs[ctx].grSstRefresh = GR_REFRESH_NONE;
-
-        _GlideRoot.GCs[ctx].scanline_interleaved = FXFALSE;
-        _GlideRoot.GCs[ctx].num_tmu              = info.hwDep.vg96Info.nTFX;
-        _GlideRoot.GCs[ctx].fbuf_size            = info.hwDep.vg96Info.vg96Ram;
-
-        _GlideRoot.hwConfig.num_sst++;
-        _GlideRoot.hwConfig.SSTs[ctx].sstBoard.SST96Config.nTexelfx = 
-          info.hwDep.vg96Info.nTFX;
-        _GlideRoot.hwConfig.SSTs[ctx].sstBoard.SST96Config.fbRam = 
-          info.hwDep.vg96Info.vg96Ram >> 20;
-        _GlideRoot.hwConfig.SSTs[ctx].sstBoard.SST96Config.tmuConfig.tmuRev =
-          info.hwDep.vg96Info.tfxRev;
-        _GlideRoot.hwConfig.SSTs[ctx].sstBoard.SST96Config.tmuConfig.tmuRam =
-          info.hwDep.vg96Info.tfxRam;
-        memset(&_GlideRoot.GCs[ctx].tmu_state[0], 0, sizeof(_GlideRoot.GCs[ctx].tmu_state[0]));
-
-        _GlideRoot.GCs[ctx].tmu_state[0].ncc_mmids[0] = GR_NULL_MIPMAP_HANDLE;
-        _GlideRoot.GCs[ctx].tmu_state[0].ncc_mmids[1] = GR_NULL_MIPMAP_HANDLE;
-        _GlideRoot.GCs[ctx].tmu_state[0].total_mem    = info.hwDep.vg96Info.tfxRam<<20;
-        
-        _GlideRoot.GCs[ctx].hwDep.sst96Dep.serialStatus     = 
-          (FxU32*)info.regs.hwDep.VG96RegDesc.serialStatus;
-        _GlideRoot.GCs[ctx].hwDep.sst96Dep.fifoApertureBase = 
-          (FxU32*)info.regs.hwDep.VG96RegDesc.fifoApertureBase;
-
-        initDeviceSelect( ctx );
-        initSetWriteMethod( _grSst96Store32 );
-        rv = FXTRUE;
-        ctx++;
-      }
 #else
 #error "Need to define detection parameters for this device"    
 #endif
@@ -332,13 +290,6 @@
                    hwc->SSTs[i].sstBoard.VoodooConfig.tmuConfig[tmuNum].tmuRam
                    ));
       }
-  } else if (hwc->SSTs[i].type == GR_SSTTYPE_SST96) {
-    GDBG_INFO((80,"SST board %d: 3Dfx Voodoo Rush\n", i));
-    GDBG_INFO((80,"\tFBI Jr. with %d MB Frame Buffer\n",
-               hwc->SSTs[i].sstBoard.SST96Config.fbRam
-               ));
-    GDBG_INFO((80,"\tTexelfx chips:  1\n"));
-
   }
   else
     GDBG_INFO((80,"error: SSTs %d: unknown type\n",i));
@@ -846,188 +797,3 @@
 } /* _GR_SET16 */
 
 #endif /* defined(GLIDE_DEBUG) */
-
-#if defined( GLIDE_DEBUG ) && ( GLIDE_PLATFORM & GLIDE_HW_SST96 ) 
-
-extern char *regNames[];
-
-static FxU32 thisMask;
-static FxU32 thisWrite;
-static FxU32 maxWrites;
-
-void GR_CDECL
-_GR_SET_GW_CMD( volatile void *addr, unsigned long data ) {
-    GR_DCL_GC;
-
-    /* validate pointer range */
-    {
-        FxU32 min = (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoVirt;
-        FxU32 max = min + (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoMax;
-        if ( ((FxU32)addr) < min || ((FxU32)addr) > max ) {
-            GDBG_ERROR( "SET GW CMD", 
-                        "Fifo address 0x%x out of range(0x%x, 0x%x)\n",
-                        addr, 
-                        gc->fifoData.hwDep.vg96FIFOData.fifoVirt,
-                        gc->fifoData.hwDep.vg96FIFOData.fifoMax );
-        }
-                    
-    }
-    /* validate alignment */
-    if ( ((FxU32)addr) & 0x7 ) {
-        GDBG_ERROR( "SET GW CMD",
-                    "Fifo address 0x%x is not 8 byte aligned\n",
-                    addr );
-    }
-    /* validate enable bit */
-    if ( ! (data&0x80000000) ) { 
-        GDBG_ERROR( "SET GW CMD",
-                    "Fifo command 0x%x missing flag bit\n",
-                    data );
-    }
-    /* validate reserved bits */
-    if ( data&0x7fE00300 ) { 
-        GDBG_ERROR( "SET GW CMD",
-                    "Fifo command 0x%x reserved bits set!\n",
-                    data );
-    }
-
-    GDBG_INFO((128, 
-               "Writing Group Write Command: 0x%x\n",
-               data ));
-    GDBG_INFO((128, 
-               "  FIFO ADDR: 0x%.08x\n", addr ));
-    /* dump chip field */
-    {
-        FxU32 field = ( (data<<2) & 0xf0000 ) >> 16;
-        GDBG_INFO((128, "  Chip Field: 0x%x\n", field ));
-    } 
-    /* dump wrap field */
-    {
-        FxU32 field = ( (data<<2) & 0x0f000 ) >> 12;
-        GDBG_INFO((128, "  Wrap Field: 0x%x\n", field ));
-    }
-    /* dump register */
-    {
-        FxU32 reg = ( data & 0xff );
-        GDBG_INFO((128, "  Register:   %s(0x%x)\n", regNames[reg], reg ));
-    }
-    *(FxU32*)addr = data;
-}
-
-void GR_CDECL
-_GR_SET_GW_HEADER( volatile void *addr, unsigned long data ) {
-  GR_DCL_GC;
-
-  /* validate pointer range */
-  {
-    FxU32 min = (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoVirt;
-    FxU32 max = min + (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoMax;
-    if ( ((FxU32)addr) < min || ((FxU32)addr) > max ) {
-      GDBG_ERROR( "SET GW CMD", 
-                 "Fifo address 0x%x out of range(0x%x, 0x%x)\n",
-                 addr, 
-                 gc->fifoData.hwDep.vg96FIFOData.fifoVirt,
-                 gc->fifoData.hwDep.vg96FIFOData.fifoMax );
-    }
-                    
-  }
-  /* validate alignment */
-  if ( ((FxU32)addr) & 0x3 ) {
-    GDBG_ERROR( "SET GW HEADER",
-               "Fifo address 0x%x is not DWORD aligned\n",
-               addr );
-  }
-  GDBG_INFO((128, 
-             "Writing Group Write Header: 0x%x\n",
-             data ));
-  GDBG_INFO((128, 
-             "  FIFO ADDR: 0x%.08x\n", addr ));
-  /* validate bits - at least one must be set*/
-  {
-    FxU32 val, bits, reg;
-    val = data;
-    bits = 0;
-    reg  = 2;
-    while( val ) {
-      if ( val & 1 ) {
-        bits++;
-        GDBG_INFO((128, "  Register: %s\n", regNames[reg] ));
-      }
-      val>>=1;
-      reg++;
-    }
-    GR_ASSERT( bits );
-    GDBG_INFO((128, "  --------------\n" ));
-    GDBG_INFO((128, "  Total Bits: %d\n", bits ));
-    maxWrites = bits;
-    if ( maxWrites & 1 ) maxWrites++;
-  }
-  *(FxU32*)addr = data;
-  thisMask  = data;
-  thisWrite = 0;
-}
-
-void GR_CDECL
-_GR_SET_GW_ENTRY( volatile void *addr, unsigned long data ) {
-  GR_DCL_GC;
-  /* validate pointer range */
-  {
-    FxU32 min = (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoVirt;
-    FxU32 max = min + (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoMax;
-    if ( ((FxU32)addr) < min || ((FxU32)addr) > max ) {
-      GDBG_ERROR( "SET GW CMD", 
-                 "Fifo address 0x%x out of range(0x%x, 0x%x)\n",
-                 addr, 
-                 gc->fifoData.hwDep.vg96FIFOData.fifoVirt,
-                 gc->fifoData.hwDep.vg96FIFOData.fifoMax );
-    }
-                    
-  }
-  /* validate alignment */
-  if ( ((FxU32)addr) & 0x3 ) {
-    GDBG_ERROR( "SET GW ENTRY",
-               "Fifo address 0x%x is not DWORD aligned\n",
-               addr );
-  }
-  /* validate write within packet */
-  if ( !thisMask || thisWrite > maxWrites ) {
-    GDBG_ERROR( "SET GW ENTRY",
-               "Group write entry attempted outside of a packet\n" );
-  }   
-  GDBG_INFO((128, 
-             "Writing Group Write Entry\n" ));
-  GDBG_INFO((128, 
-             "  FIFO ADDR: 0x%.08x\n", addr ));
-  /* decode write */
-  {
-    FxU32 reg, bit, write;
-    reg   = 2;
-    bit   = 1;
-    write = 0;
-        
-    while( bit ) {
-      if ( bit & thisMask ) {
-        if ( write == thisWrite ) break;
-        write++;
-      }
-      bit <<= 1;
-      reg++;
-    }
-        
-    if ( bit ) {
-      GDBG_INFO((128, 
-                 "  REG: %s DATA: 0x%x(%f)\n",
-                 regNames[reg],
-                 data,
-                 *(float*)&data ));
-    } else {
-      GDBG_INFO((128, 
-                 "  PADDING\n" ));
-    }
-  }
-  *(FxU32*)addr = data;
-  thisWrite++;
-}
-
-#endif /* defined( GLIDE_DEBUG) && ( GLIDE_PLATFORM & GLIDE_HW_SST96 ) */
-
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gsst.c glide2/sst1/glide/src/gsst.c
--- build-tree.orig/glide2x/sst1/glide/src/gsst.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/src/gsst.c	Sat Jul 29 17:59:16 2000
@@ -229,10 +229,6 @@
 #include <glidesys.h>
 #include <sst1vid.h>
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 ) 
-#include <init.h>
-#endif
-
 #define FX_DLL_DEFINITION
 #include <fxdll.h>
 #include <glide.h>
@@ -244,24 +240,8 @@
 #include <windows.h>
 #endif
 
-#if (GLIDE_PLATFORM & GLIDE_OS_DOS32) && (GLIDE_PLATFORM & GLIDE_HW_SST96) && defined(GLIDE_DEBUG)
-#include <dos.h>
-  /* int 10h interrupt handler */
-void __interrupt __far 
-_grInt10Handler() {
-#define FN_NAME "_grInt10Handler"
-  GR_DCL_GC;
-
-  gc->hwDep.sst96Dep.int10Called = FXTRUE;
-
-#undef FN_NAME
-} /* _grInt10Handler */
-#endif
-
-
 #ifdef H3D
 #include <windows.h>
-#define F_PATTERN 0             // flippy pattern (sst96)
 #define T_PATTERN 1             // tippy pattern (sst1)
 
 typedef struct patColor_t { unsigned char r,g,b; } patColor;
@@ -284,8 +264,6 @@
 
 #if   ( GLIDE_PLATFORM & GLIDE_HW_SST1 ) 
 static patColor enableColor[2] = {PAT_YELLOW,PAT_BLACK}; // use top and bottom mode 1
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-static patColor enableColor[2] = {PAT_GREEN,PAT_BLACK};  // use pageflip mode
 #endif
 static patColor enableColor2[2] = {PAT_YELLOW,PAT_GREEN}; // use top and bottom mode 2
 
@@ -368,17 +346,6 @@
 
   initState();
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  if (firstupdate) {
-    initAT3DSetTiles(0,gc->state.num_buffers);
-    firstupdate = 0;
-  } /* TODO:: setup regs for non-pageflipping seems to fix fb alignment... */
-  if (enable) {
-    grSstIdle();
-    initAT3DSetTiles(1,gc->state.num_buffers);
-  } /* setup regs for pageflipping */
-#endif
-    
   grDepthBufferFunction( GR_CMP_ALWAYS );
   grDepthMask( FXFALSE );
   
@@ -393,8 +360,6 @@
   lineLeft.ooz = lineRight.ooz = 65535.f;
 #if   ( GLIDE_PLATFORM & GLIDE_HW_SST1 ) 
   lineLeft.y = lineRight.y = 2.f;
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  lineLeft.y = lineRight.y = grSstScreenHeight() - H3DHEIGHT_FROM_REZ(gc->grSstRez) + 2.f;
 #endif
   
   grColorMask(FXTRUE,0);
@@ -434,19 +399,10 @@
   // wait for adapter sync-up
 #if   ( GLIDE_PLATFORM & GLIDE_HW_SST1 ) 
   for(line = 40; line>0; line--) {
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  for(line = 20; line>0; line--) {
 #endif
     grBufferSwap(1);
   }
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  if (!enable) {
-    // grSstIdle();
-    initAT3DSetTiles(0,gc->state.num_buffers);
-  } // setup regs for non-pageflipping
-#endif
-
   line = 50000;
   while ((grBufferNumPending() > 2) && (--line));
 
@@ -775,34 +731,6 @@
   grHints( GR_HINT_FIFOCHECKHINT, 
            fifoInfo.hwDep.vgFIFOData.memFifoStatusLwm + 0x100 );
   _grReCacheFifo( 0 );
-#  elif ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  gc->hwDep.sst96Dep.writesSinceFence = 0;
-#if (GLIDE_PLATFORM & GLIDE_OS_DOS32) && ( GLIDE_PLATFORM & GLIDE_HW_SST96 ) && defined(GLIDE_DEBUG)
-  /* Set int 10h interrupt handler */
-  gc->hwDep.sst96Dep.int10Called = FXFALSE;
-  gc->hwDep.sst96Dep.prevInt10 = NULL;
-  GDBG_INFO((80, "Storing old int 10h interrupt handler (0x%x)\n", gc->hwDep.sst96Dep.prevInt10));  
-
-  GDBG_INFO((80, "Overriding int 10h interrupt handler\n"));
-  _dos_setvect(0x10, _grInt10Handler);
-#endif
-  
-  gc->fifoData = fifoInfo;
-
-  GDBG_INFO((120, "After Init:  fifoPtr  = 0x%x\n", 
-             fifoInfo.hwDep.vg96FIFOData.fifoPtr ));
-  GDBG_INFO((120, "After Init:  fifoSize = 0x%x\n",
-             fifoInfo.hwDep.vg96FIFOData.fifoSize ));
-  GDBG_INFO((120, "After Init:  fifoVirt = 0x%x\n",
-             fifoInfo.hwDep.vg96FIFOData.fifoVirt ));
-  GDBG_INFO((120, "After Init:  fifoPhys = 0x%x\n",
-             fifoInfo.hwDep.vg96FIFOData.fifoPhys ));
-  GDBG_INFO((120, "After Init:  fifoMax  = 0x%x\n",
-             fifoInfo.hwDep.vg96FIFOData.fifoMax ));
-  GDBG_INFO((120, "After Init:  fifoCur  = 0x%x\n",
-             fifoInfo.hwDep.vg96FIFOData.fifoCur ));
-  GDBG_INFO((120, "After Init:  fifoLfb  = 0x%x\n",
-             fifoInfo.hwDep.vg96FIFOData.fifoLfb ));
 #  else
 #    error "Need to write command transport init for glide for this hw"
 #  endif
@@ -1050,11 +978,6 @@
     GDBG_INFO(( gc->myLevel, "  Command Transport Disable\n" ));
     initDisableTransport();
     
-#if (GLIDE_PLATFORM & GLIDE_OS_DOS32) && (GLIDE_PLATFORM & GLIDE_HW_SST96) && defined(GLIDE_DEBUG)
-    GDBG_INFO((80, "Restoring int 10h interrupt handler (0x%x)\n", gc->hwDep.sst96Dep.prevInt10));
-    _dos_setvect(0x10, NULL);
-#endif
-
     /*--------------------------
       Video Restore 
       --------------------------*/
@@ -1111,33 +1034,10 @@
 
 GR_ENTRY(grSstPerfStats, void, (GrSstPerfStats_t *pStats))
 {
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-  FxU32 jr;
-#endif
-
   GR_BEGIN_NOFIFOCHECK("grSstPerfStats",83);
   GDBG_INFO_MORE((gc->myLevel,"(0x%x)\n",pStats));
   GR_CHECK_F(myName, !pStats, "NULL pointer");
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-/*
- * fixme! this is a fix for bug 697.  The right thing to do is
- * define GR_GET properly in fxglide.h, but this breaks lots of other
- * things, and this is the only place in glide where we actually read
- * sst-1 registers, and this pools is mature, so... Also, note that
- * these reads are not synchronized with the FIFO, so results are
- * approximate.  I'm not going to change this behavior for fear of
- * introducing performance degradation in existing apps that may
- * be instrumented with this call.  The read of jr is a sanity check.
- */
-#undef GETINDEX
-#undef GETREADADDR
-#undef GR_GET
-#define GR_GET(s) *(GETREADADDR(s))
-#define GETINDEX(a) ((((FxU32) &a) - (((FxU32) hw) + 0x400000)) >> 2)
-#define GETREADADDR(s) ((FxU32 *) (((FxU32) hw) + (GETINDEX(s) <<12)))
-  jr = GR_GET(hw->fbijrVersion);
-#endif /* SST96 */
   pStats->pixelsIn   = GR_GET(hw->stats.fbiPixelsIn);
   pStats->chromaFail = GR_GET(hw->stats.fbiChromaFail);
   pStats->zFuncFail  = GR_GET(hw->stats.fbiZfuncFail);
@@ -1184,10 +1084,6 @@
 
   GR_BEGIN_NOFIFOCHECK( "grSstStatus", 85 );
 
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)  
-  P6_NUDGE_OF_LOVE;
-#endif
-
   stat = initStatus();
   GDBG_INFO((84,"grSstStatus() => 0x%x\n", stat));
   GR_END();
@@ -1269,10 +1165,6 @@
 {
   GR_BEGIN_NOFIFOCHECK("grSstIdle",83);
   GDBG_INFO_MORE((gc->myLevel,"()\n"));
-
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-  P6_NUDGE_OF_LOVE;
-#endif
 
   initIdle();
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gtexdl.c glide2/sst1/glide/src/gtexdl.c
--- build-tree.orig/glide2x/sst1/glide/src/gtexdl.c	Tue Dec  7 16:48:53 1999
--- build-tree/glide2x/sst1/glide/src/gtexdl.c	Sat Jul 29 18:14:15 2000
@@ -357,50 +357,6 @@
           }
         } 
       } else {                      /* New TMUs    */
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-
-#define DW_PER_GWP 32
-#define W_PER_GWP (DW_PER_GWP << 1)
-#define BYTES_PER_GWP (DW_PER_GWP << 2)
-#define MASK(n) ((1 << (n)) - 1)
-
-      for ( ; t <= max_t; t++ ) {
-        FxU32 t0, t1;
-        FxU32 j;
-
-        GR_CHECK_SIZE_SLOPPY();
-        GR_SET_EXPECTED_SIZE((max_s + (max_s >> 4) + 2) << 2);
-        tex_address = tmu_baseaddress + ( t << 9 );
-        if (max_s >= DW_PER_GWP) {              /* can use maximum GWP(s) */
-          for (s=0; s<max_s; s+=DW_PER_GWP ) {
-
-            GWH_BEGIN_TEXDL_PACKET(0xffffffff, tex_address);
-            /* Loop unrolled to keep GWP happy */
-            for (j=0; j<16; j++) {
-              t0 = * (const FxU32 *) (src8 + (j << 3) );
-              t1 = * (const FxU32 *) (src8 + (j << 3) + 4);
-              GR_SET_GW(t0);
-              GR_SET_GW(t1);
-            }
-            tex_address += BYTES_PER_GWP;
-            src8 += BYTES_PER_GWP;
-          } /* end for s */
-        } else {                        /* partial GWP */
-          FxU32 mask = MASK(max_s);     /* we can assume s is even */
-          GWH_BEGIN_TEXDL_PACKET(mask, tex_address);
-          /* Loop unrolled to keep GWP happy */
-          for (j=0; j<(max_s>>1); j++) {
-            t0 = * (const FxU32 *) (src8 + (j << 3) );
-            t1 = * (const FxU32 *) (src8 + (j << 3) + 4);
-            GR_SET_GW(t0);
-            GR_SET_GW(t1);
-          }
-          tex_address += (max_s << 2);
-          src8 += (max_s << 2);
-        }
-      } /* end for t */
-
-#else   /* SST-1 */
         for ( ; t <= max_t; t++) {
           GR_CHECK_SIZE_SLOPPY();
           GR_SET_EXPECTED_SIZE(max_s*5);
@@ -416,7 +372,6 @@
             src8 += 8;
           }
         } 
-#endif
       }
       break;
     }
@@ -447,43 +402,6 @@
       break;
 
     default:                        /* All other textures */
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-      for ( ; t <= max_t; t++ ) {
-        FxU32 t0, t1;
-        FxU32 j;
-
-        GR_CHECK_SIZE_SLOPPY();
-        GR_SET_EXPECTED_SIZE((max_s + (max_s >> 4) + 2) << 2);
-        tex_address = tmu_baseaddress + ( t << 9 );
-        if (max_s >= DW_PER_GWP) {              /* can use maximum GWP(s) */
-          for (s=0; s<max_s; s+=DW_PER_GWP ) {
-
-            GWH_BEGIN_TEXDL_PACKET(0xffffffff, tex_address);
-            /* Loop unrolled to keep GWP happy */
-            for (j=0; j<16; j++) {
-              t0 = * (const FxU32 *) (src16 + (j << 2) );
-              t1 = * (const FxU32 *) (src16 + (j << 2) + 2);
-              GR_SET_GW(t0);
-              GR_SET_GW(t1);
-            }
-            tex_address += BYTES_PER_GWP;
-            src16 += W_PER_GWP;
-          } /* end for s */
-        } else {                        /* partial GWP */
-          FxU32 mask = MASK(max_s);     /* we can assume s is even */
-          GWH_BEGIN_TEXDL_PACKET(mask, tex_address);
-          /* Loop unrolled to keep GWP happy */
-          for (j=0; j<(max_s>>1); j++) {
-            t0 = * (const FxU32 *) (src16 + (j << 2) );
-            t1 = * (const FxU32 *) (src16 + (j << 2) + 2);
-            GR_SET_GW(t0);
-            GR_SET_GW(t1);
-          }
-          tex_address += (max_s << 2);
-          src16 += (max_s << 1);
-        }
-      } /* end for t */
-#else   /* SST-1 */
       for ( ; t <= max_t; t++ ) {
         GR_CHECK_SIZE_SLOPPY();
         GR_SET_EXPECTED_SIZE(max_s*5);
@@ -500,7 +418,6 @@
           src16 += 4;
         }
       }
-#endif
       break;
     }
   } /* end switch( width ) */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/gxdraw.c glide2/sst1/glide/src/gxdraw.c
--- build-tree.orig/glide2x/sst1/glide/src/gxdraw.c	Tue Dec  7 16:48:53 1999
--- build-tree/glide2x/sst1/glide/src/gxdraw.c	Sat Jul 29 17:35:15 2000
@@ -130,239 +130,7 @@
 **
 */  
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-GR_DDFUNC(_trisetup, FxI32, ( const GrVertex *va, const GrVertex *vb, const GrVertex *vc ))
-{
-  GR_DCL_GC;
-  GR_DCL_HW;
-  const float *fa = &va->x;
-  const float *fb = &vb->x;
-  const float *fc = &vc->x;
-  float ooa, dxAB, dxBC, dyAB, dyBC;
-  int i,j,culltest;
-  int ay, by, cy;
-  float *fp;
-  struct dataList_s *dlp;
-  volatile FxU32 *fifoPtr;
-  
-  culltest = gc->state.cull_mode; /* 1 if negative, 0 if positive */
-  _GlideRoot.stats.trisProcessed++;
-  
-  /*
-   **  Sort the vertices.
-   **  Whenever the radial order is reversed (from counter-clockwise to
-   **  clockwise), we need to change the area of the triangle.  Note
-   **  that we know the first two elements are X & Y by looking at the
-   **  grVertex structure.  
-   */
-  ay = *(int *)&va->y;
-  by = *(int *)&vb->y;
-  if (ay < 0) ay ^= 0x7FFFFFFF;
-  cy = *(int *)&vc->y;
-  if (by < 0) by ^= 0x7FFFFFFF;
-  if (cy < 0) cy ^= 0x7FFFFFFF;
-  if (ay < by) {
-    if (by > cy) {              /* acb */
-      if (ay < cy) {
-        fa = &va->x;
-        fb = &vc->x;
-        fc = &vb->x;
-        culltest ^= 1;
-      } else {                  /* cab */
-        fa = &vc->x;
-        fb = &va->x;
-        fc = &vb->x;
-      }
-      /* else it's already sorted */
-    }
-  } else {
-    if (by < cy) {              /* bac */
-      if (ay < cy) {
-        fa = &vb->x;
-        fb = &va->x;
-        fc = &vc->x;
-        culltest ^= 1;
-      } else {                  /* bca */
-        fa = &vb->x;
-        fb = &vc->x;
-        fc = &va->x;
-      }
-    } else {                    /* cba */
-      fa = &vc->x;
-      fb = &vb->x;
-      fc = &va->x;
-      culltest ^= 1;
-    }
-  }
-
-  /* Compute Area */
-  dxAB = fa[GR_VERTEX_X_OFFSET] - fb[GR_VERTEX_X_OFFSET];
-  dxBC = fb[GR_VERTEX_X_OFFSET] - fc[GR_VERTEX_X_OFFSET];
-  
-  dyAB = fa[GR_VERTEX_Y_OFFSET] - fb[GR_VERTEX_Y_OFFSET];
-  dyBC = fb[GR_VERTEX_Y_OFFSET] - fc[GR_VERTEX_Y_OFFSET];
-  
-  /* this is where we store the area */
-  _GlideRoot.pool.ftemp1 = dxAB * dyBC - dxBC * dyAB;
-  
-  /* Zero-area triangles are BAD!! */
-  j = *(long *)&_GlideRoot.pool.ftemp1;
-  if ((j & 0x7FFFFFFF) == 0)
-    return 0;
-  
-  /* Backface culling, use sign bit as test */
-  if (gc->state.cull_mode != GR_CULL_DISABLE) {
-    if ((j ^ (culltest<<31)) >= 0) {
-      return -1;
-    }
-  }
-  
-  /* Fence On P6 If Necessary */
-  if ( _GlideRoot.CPUType == 6 ) {
-      /* In the macro there is a slop of 4 DWORDS that I have removed */
-      if ( (gc->hwDep.sst96Dep.writesSinceFence + ( _GlideRoot.curTriSize >> 2 )) > 128 ) {
-          P6FENCE;
-          gc->hwDep.sst96Dep.writesSinceFence = 0;
-      }
-      gc->hwDep.sst96Dep.writesSinceFence      += 
-          _GlideRoot.curTriSize>>2;
-  }
-
-  /* Wrap Fifo now if triangle is going to incur a wrap */
-  if (gc->fifoData.hwDep.vg96FIFOData.fifoSize < (FxU32) _GlideRoot.curTriSize ) {
-#if SST96_ALT_FIFO_WRAP
-    gc->fifoData.hwDep.vg96FIFOData.blockSize = _GlideRoot.curTriSize;
-    initWrapFIFO(&gc->fifoData);
-#else
-    _grSst96FifoMakeRoom();
-#endif
-  }
-  
-  GR_SET_EXPECTED_SIZE(_GlideRoot.curTriSize);
-
-  /* Grab fifo pointer into a local */
-  fifoPtr = gc->fifoData.hwDep.vg96FIFOData.fifoPtr;
-  
-  /* Settle Bookeeping */
-  gc->fifoData.hwDep.vg96FIFOData.fifoSize -= _GlideRoot.curTriSize;
-  gc->fifoData.hwDep.vg96FIFOData.fifoPtr  += _GlideRoot.curTriSize>>2;
-  
-  /* Start first group write packet */
-  SET_GW_CMD(    fifoPtr, 0, gc->hwDep.sst96Dep.gwCommand );
-  SET_GW_HEADER( fifoPtr, 1, gc->hwDep.sst96Dep.gwHeaders[0] );
-
-  ooa = _GlideRoot.pool.f1 / _GlideRoot.pool.ftemp1;
-  /* GMT: note that we spread out our PCI writes */
-  /* write out X & Y for vertex A */
-  FSET_GW_ENTRY( fifoPtr, 2, fa[0] );
-  FSET_GW_ENTRY( fifoPtr, 3, fa[1] );
-
-  dlp = gc->dataList;
-  i = dlp->i;
-  
-  /* write out X & Y for vertex B */
-  FSET_GW_ENTRY( fifoPtr, 4, fb[0] );
-  FSET_GW_ENTRY( fifoPtr, 5, fb[1] );
-
-  /* write out X & Y for vertex C */
-  FSET_GW_ENTRY( fifoPtr, 6, fc[0] );
-  FSET_GW_ENTRY( fifoPtr, 7, fc[1] );
-  fifoPtr += 8;
-
-  /*
-  ** Divide the deltas by the area for gradient calculation.
-  */
-  dxBC *= ooa;
-  dyAB *= ooa;
-  dxAB *= ooa;
-  dyBC *= ooa;
-
-/* access a floating point array with a byte index */
-#define FARRAY(p,i) (*(float *)((i)+(int)(p)))
-
-  while (i) {
-    fp = dlp->addr;
-    /* chip field change */
-    if (i & 1) 
-        goto secondary_packet;
-    else {
-      float dpAB, dpBC,dpdx, dpdy;
-      
-      dpBC = FARRAY(fb,i);
-      dpdx = FARRAY(fa,i);
-      FSET_GW_ENTRY( fifoPtr, 0, dpdx );
-      dpAB = dpdx - dpBC;
-      dpBC = dpBC - FARRAY(fc,i);
-      dpdx = dpAB * dyBC - dpBC * dyAB;
-      FSET_GW_ENTRY( fifoPtr, 1, dpdx );
-      dpdy = dpBC * dxAB - dpAB * dxBC;
-      dlp++;
-      i = dlp->i;
-      FSET_GW_ENTRY( fifoPtr, 2, dpdy );
-      fifoPtr += 3;
-    }
-  }
-
-  /* write triangle command */
-triangle_command:
-  FSET_GW_ENTRY( fifoPtr, 0, _GlideRoot.pool.ftemp1 );
-  fifoPtr+=1;
-  
-  if (((FxU32)fifoPtr) & 0x7) {
-    FSET_GW_ENTRY( fifoPtr, 0, 0.0f );
-    fifoPtr += 1;
-  }
-
-  GR_ASSERT(fifoPtr == gc->fifoData.hwDep.vg96FIFOData.fifoPtr);
-
-  GR_CHECK_SIZE();
-  
-  _GlideRoot.stats.trisDrawn++;
-
-  return 1;
-
-secondary_packet:
-  /* Round out last header */
-  if (((FxU32) fifoPtr) & 0x7) {
-    FSET_GW_ENTRY( fifoPtr, 0, 0.0f );
-    fifoPtr  += 1;
-  }
-  /* Start new packet
-     note, there can only ever be two different packets 
-     using gwHeaderNum++ would be more general, but this
-     reflects the actual implementation */
-  SET_GW_CMD(    fifoPtr, 0, (FxU32)fp );
-  SET_GW_HEADER( fifoPtr, 1, gc->hwDep.sst96Dep.gwHeaders[1] );
-  fifoPtr+=2;
-  dlp++;
-  i = dlp->i;
-  while( i ) {
-    float dpAB, dpBC,dpdx, dpdy;
-
-    fp = dlp->addr;
-    dpBC = FARRAY(fb,i);
-    dpdx = FARRAY(fa,i);
-    FSET_GW_ENTRY( fifoPtr, 0, dpdx );
-    dpAB = dpdx - dpBC;
-    dpBC = dpBC - FARRAY(fc,i);
-    dpdx = dpAB * dyBC - dpBC * dyAB;
-    FSET_GW_ENTRY( fifoPtr, 1, dpdx );
-    dpdy = dpBC * dxAB - dpAB * dxBC;
-    dlp++;
-    i = dlp->i;
-    FSET_GW_ENTRY( fifoPtr, 2, dpdy );
-    fifoPtr += 3;
-  }
-  if (((FxU32)fifoPtr) & 0x7) {
-    FSET_GW_ENTRY( fifoPtr, 0, 0.0f );
-    fifoPtr += 1;
-  }
-  SET_GW_CMD(    fifoPtr, 0, gc->hwDep.sst96Dep.gwCommand );
-  SET_GW_HEADER( fifoPtr, 1, GW_TRICMD_MASK );
-  fifoPtr += 2;
-  goto triangle_command;
-} /* _trisetup */
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST1 )
+#if ( GLIDE_PLATFORM & GLIDE_HW_SST1 )
 GR_DDFUNC(_trisetup, FxI32, ( const GrVertex *va, const GrVertex *vb, const GrVertex *vc ))
 {
   GR_DCL_GC;
@@ -537,198 +305,7 @@
 **  typically done outside this routine, as in grDrawPlanarPolygon
 */  
 
-#if ( GLIDE_PLATFORM & GLIDE_HW_SST96 )
-GR_DDFUNC(_trisetup_nogradients, FxI32, ( const GrVertex *va, const GrVertex *vb, const GrVertex *vc ))
-{
-  GR_DCL_GC;
-  GR_DCL_HW;
-  const float *fa = &va->x;
-  const float *fb = &vb->x;
-  const float *fc = &vc->x;
-  float dxAB, dxBC, dyAB, dyBC;
-  int i,j;
-  int ay, by, cy;
-  float *fp;
-  struct dataList_s *dlp;
-  volatile FxU32 *fifoPtr;
-
-  /*
-  **  Sort the vertices.
-  **  Whenever the radial order is reversed (from counter-clockwise to
-  **  clockwise), we need to change the area of the triangle.  Note
-  **  that we know the first two elements are X & Y by looking at the
-  **  grVertex structure.  
-  */
-  ay = *(int *)&va->y;
-  by = *(int *)&vb->y;
-  if (ay < 0) ay ^= 0x7FFFFFFF;
-  cy = *(int *)&vc->y;
-  if (by < 0) by ^= 0x7FFFFFFF;
-  if (cy < 0) cy ^= 0x7FFFFFFF;
-  if (ay < by) {
-    if (by > cy) {              /* acb */
-      if (ay < cy) {
-        fa = &va->x;
-        fb = &vc->x;
-        fc = &vb->x;
-      } else {                  /* cab */
-        fa = &vc->x;
-        fb = &va->x;
-        fc = &vb->x;
-      }
-      /* else it's already sorted */
-    }
-  } else {
-    if (by < cy) {              /* bac */
-      if (ay < cy) {
-        fa = &vb->x;
-        fb = &va->x;
-        fc = &vc->x;
-      } else {                  /* bca */
-        fa = &vb->x;
-        fb = &vc->x;
-        fc = &va->x;
-      }
-    } else {                    /* cba */
-      fa = &vc->x;
-      fb = &vb->x;
-      fc = &va->x;
-    }
-  }
-
-  /* Compute Area */
-  dxAB = fa[GR_VERTEX_X_OFFSET] - fb[GR_VERTEX_X_OFFSET];
-  dxBC = fb[GR_VERTEX_X_OFFSET] - fc[GR_VERTEX_X_OFFSET];
-
-  dyAB = fa[GR_VERTEX_Y_OFFSET] - fb[GR_VERTEX_Y_OFFSET];
-  dyBC = fb[GR_VERTEX_Y_OFFSET] - fc[GR_VERTEX_Y_OFFSET];
-
-  /* this is where we store the area */
-  _GlideRoot.pool.ftemp1 = dxAB * dyBC - dxBC * dyAB;
-  _GlideRoot.stats.trisProcessed++;
-
-  /* Zero-area triangles are BAD!! */
-  j = *(long *)&_GlideRoot.pool.ftemp1;
-  if ((j & 0x7FFFFFFF) == 0) {
-    return 0;
-  }
-
-  /* Fence On P6 If Necessary */
-  if ( _GlideRoot.CPUType == 6 ) {
-      /* In the macro there is a slop of 4 DWORDS that I have removed */
-      if ( (gc->hwDep.sst96Dep.writesSinceFence + 
-            ( _GlideRoot.curTriSizeNoGradient >> 2 )) > 128 ) {
-          P6FENCE;
-          gc->hwDep.sst96Dep.writesSinceFence = 0;
-      }
-      gc->hwDep.sst96Dep.writesSinceFence      += 
-          _GlideRoot.curTriSizeNoGradient>>2;
-  }
-
-  /* Wrap Fifo now if triangle is going to incur a wrap */
-  if (gc->fifoData.hwDep.vg96FIFOData.fifoSize < (FxU32) _GlideRoot.curTriSizeNoGradient ) {
-#if SST96_ALT_FIFO_WRAP
-    gc->fifoData.hwDep.vg96FIFOData.blockSize = _GlideRoot.curTriSizeNoGradient;
-    initWrapFIFO(&gc->fifoData);
-#else
-    _grSst96FifoMakeRoom();
-#endif
-  }
-
-  /* bookeeping */
-  fifoPtr = gc->fifoData.hwDep.vg96FIFOData.fifoPtr;
-  gc->fifoData.hwDep.vg96FIFOData.fifoSize -= _GlideRoot.curTriSizeNoGradient;
-  gc->fifoData.hwDep.vg96FIFOData.fifoPtr  += _GlideRoot.curTriSizeNoGradient>>2;
-
-  /* packet header */
-  SET_GW_CMD(    fifoPtr, 0, gc->hwDep.sst96Dep.gwCommand );
-  SET_GW_HEADER( fifoPtr, 1, (gc->hwDep.sst96Dep.gwHeaders[0] & ~GWH_DXY_BITS) );
-
-  FSET_GW_ENTRY( fifoPtr, 2, fa[0] );
-  FSET_GW_ENTRY( fifoPtr, 3, fa[1] );
-
-  dlp = gc->dataList;
-  i = dlp->i;
-  
-  /* write out X & Y for vertex B */
-  FSET_GW_ENTRY( fifoPtr, 4, fb[0] );
-  FSET_GW_ENTRY( fifoPtr, 5, fb[1] );
-
-  /* write out X & Y for vertex C */
-  FSET_GW_ENTRY( fifoPtr, 6, fc[0] );
-  FSET_GW_ENTRY( fifoPtr, 7, fc[1] );
-  fifoPtr += 8;
-
-  dlp = gc->dataList;
-  i = dlp->i;
-
-/* access a floating point array with a byte index */
-#define FARRAY(p,i) (*(float *)((i)+(int)(p)))
-
-  while (i) {
-    fp = dlp->addr;
-    if (i & 1) 
-        goto secondary_packet;
-    else {
-      float dpdx;
-      dpdx = FARRAY(fa,i);
-      FSET_GW_ENTRY( fifoPtr, 0, dpdx );
-      fifoPtr += 1;
-      dlp++;
-      i = dlp->i;
-    }
-  }
-
-triangle_command:
-  FSET_GW_ENTRY( fifoPtr, 0, _GlideRoot.pool.ftemp1 );
-  fifoPtr += 1;
-
-  if (((FxU32)fifoPtr) & 0x7) {
-    FSET_GW_ENTRY( fifoPtr, 0, 0.0f );
-    fifoPtr += 1;
-  }
-
-  GR_ASSERT(fifoPtr == gc->fifoData.hwDep.vg96FIFOData.fifoPtr);
-
-  _GlideRoot.stats.trisDrawn++;
-
-  return 1;
-
-secondary_packet:
-  /* Round out last packet */
-  if (((FxU32) fifoPtr) & 0x7) {
-    FSET_GW_ENTRY( fifoPtr, 0, 0.0f );
-    fifoPtr  += 1;
-  }
-
-  /* Start new packet
-     note, there can only ever be two different packets 
-     using gwHeaderNum++ would be more general, but this
-     reflects the actual implementation */
-  SET_GW_CMD(    fifoPtr, 0, (FxU32)fp );
-  SET_GW_HEADER( fifoPtr, 1, gc->hwDep.sst96Dep.gwHeaders[1] );
-  fifoPtr+=2;
-  dlp++;
-  i = dlp->i;
-  while( i ) {
-    float dpdx;
-    dpdx = FARRAY(fa,i);
-    FSET_GW_ENTRY( fifoPtr, 0, dpdx );
-    dlp++;
-    i = dlp->i;
-    fifoPtr += 1;
-  }
-  if (((FxU32)fifoPtr) & 0x7) {
-    FSET_GW_ENTRY( fifoPtr, 0, 0.0f );
-    fifoPtr += 1;
-  }
-  SET_GW_CMD(    fifoPtr, 0, gc->hwDep.sst96Dep.gwCommand );
-  SET_GW_HEADER( fifoPtr, 1, GW_TRICMD_MASK );
-  fifoPtr += 2;
-  goto triangle_command;
-} /* _trisetup_nogradients */
-
-#elif ( GLIDE_PLATFORM & GLIDE_HW_SST1 )
+#if ( GLIDE_PLATFORM & GLIDE_HW_SST1 )
 
 GR_DDFUNC(_trisetup_nogradients, FxI32, ( const GrVertex *va, const GrVertex *vb, const GrVertex *vc ))
 {
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/rcver.h glide2/sst1/glide/src/rcver.h
--- build-tree.orig/glide2x/sst1/glide/src/rcver.h	Tue Dec  7 16:48:53 1999
--- build-tree/glide2x/sst1/glide/src/rcver.h	Sat Jul 29 18:14:24 2000
@@ -34,13 +34,6 @@
 #   else
 #     define PRODNAME "Glide(tm) for Voodoo Graphics\251 and Windows\256 95/98\0"
 #   endif /* NT_BUILD */
-#elif defined(SST96)
-#   define HWSTR   " Voodoo Rush(tm)\0"
-#   ifdef NT_BUILD
-#     define PRODNAME "Glide(tm) for Voodoo Rush\251 and Windows\256 NT\0"
-#   else
-#     define PRODNAME "Glide(tm) for Voodoo Rush\251 and Windows\256 95/98\0"
-#   endif /* NT_BUILD */
 #elif defined(CVG) || defined(VOODOO2)
 #   define HWSTR   " Voodoo^2(tm)\0"
 #   ifdef NT_BUILD
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/readme glide2/sst1/glide/src/readme
--- build-tree.orig/glide2x/sst1/glide/src/readme	Tue Dec  7 16:48:53 1999
--- build-tree/glide2x/sst1/glide/src/readme	Sat Jul 29 18:14:33 2000
@@ -34,7 +34,5 @@
         GLIDE_HW_*:
         GLIDE_HW_SST1:
                 This macro is for compiling 
-        GLIDE_HW_SST96:
-                This macro is for compiling Glide for SST96
         GLIDE_HW_H3:
                 This macro is for compiling Glide for H3
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/sst96.c glide2/sst1/glide/src/sst96.c
--- build-tree.orig/glide2x/sst1/glide/src/sst96.c	Tue Dec  7 16:48:54 1999
--- build-tree/glide2x/sst1/glide/src/sst96.c	Wed Dec 31 19:00:00 1969
@@ -1,746 +0,0 @@
-/*
-** 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: /cvsroot/glide/glide2x/sst1/glide/src/sst96.c,v 1.1.1.1 1999/12/07 21:48:54 joseph Exp $
-** $Log: sst96.c,v $
-** Revision 1.1.1.1  1999/12/07 21:48:54  joseph
-** Initial checkin into SourceForge.
-**
- * 
- * 20    9/19/97 12:38p Peter
- * asm rush trisetup vs alt fifo
- * 
- * 19    9/12/97 12:56p Dow
- * Protected JUJU code
- * 
- * 18    9/11/97 2:22p Atai
- * fixed muckage
- * 
- * 17    9/10/97 10:15p Peter
- * fifo logic from GaryT
- * 
- * 16    8/19/97 8:55p Peter
- * lots of stuff, hopefully no muckage
- * 
- * 15    8/01/97 11:49a Dow
- * Allowed for non4K fifo wraps
- * 
- * 14    7/08/97 1:29p Jdt
- * Fixed watcom muckage
- * 
- * 13    7/04/97 12:08p Dow
- * Modified GWP debugging
- * 
- * 12    6/20/97 5:54p Dow
- * Moved grDebugGroupWriteHeader in here.
- * 
- * 11    6/18/97 5:54p Dow
- * P6 adjustments
- * 
- * 10    5/27/97 2:03p Dow
- * added new assertion
- * 
- * 9     5/04/97 12:49p Dow
- * Moved texture downloads to level 195, like on SST1
- * 
- * 8     4/13/97 2:06p Pgj
- * eliminate all anonymous unions (use hwDep)
- * 
- * 7     3/16/97 12:39a Jdt
- * initWrapFifo only neads fifodata...
- * 
- * 6     3/04/97 9:12p Dow
- * Neutered mutiplatform multiheaded monster.
- * 
- * 5     2/18/97 9:53a Jdt
- * Removed some unecessary declarations.
- * 
- * 4     2/14/97 12:55p Dow
- * moved vg96 fifo wrap into init code
- * 
- * 3     2/11/97 6:59p Dow
- * Changes to support vid tiles and ser status
- * 
- * 2     1/14/97 10:49a Dow
- * Changed all output to use GDBG_INFO
- * Renabled some messages
- * 
- * 1     12/23/96 1:39p Dow
- * Changes for multiplatform
-**
-*/
-/* gsst96.c - transport stuff for SST 96 */
-
-#include <stdio.h>
-#include <string.h>
-#include <3dfx.h>
-
-#include <glidesys.h>
-#include <sst1vid.h>
-
-#define FX_DLL_DEFINITION
-#include <fxdll.h>
-#include <glide.h>
-#include "fxglide.h"
-
-#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
-
-#define GEN_INDEX(a) ((((FxU32) a) - ((FxU32) gc->reg_ptr)) >> 2)
-
-char
-*regNames[] = {
-  "status",             /* 0x00 */
-  "reserved001",        /* 0x01 */
-  "vAx",                /* 0x02 */
-  "vAy",                /* 0x03 */
-  "vBx",                /* 0x04 */
-  "vBy",                /* 0x05 */
-  "vCx",                /* 0x06 */
-  "vCy",                /* 0x07 */
-  "r",                  /* 0x08 */
-  "drdx",               /* 0x09 */
-  "drdy",               /* 0x0a */
-  "g",                  /* 0x0b */
-  "dgdx",               /* 0x0c */
-  "dgdy",               /* 0x0d */
-  "b",                  /* 0x0e */
-  "dbdx",               /* 0x0f */
-  "dbdy",               /* 0x10 */
-  "z",                  /* 0x11 */
-  "dzdx",               /* 0x12 */
-  "dzdy",               /* 0x13 */
-  "a",                  /* 0x14 */
-  "dadx",               /* 0x15 */
-  "dady",               /* 0x16 */
-  "s",                  /* 0x17 */
-  "dsdx",               /* 0x18 */
-  "dsdy",               /* 0x19 */
-  "t",                  /* 0x1a */
-  "dtdx",               /* 0x1b */
-  "dtdy",               /* 0x1c */
-  "w",                  /* 0x1d */
-  "dwdx",               /* 0x1e */
-  "dwdy",               /* 0x1f */
-  "triangleCMD",        /* 0x20 */
-  "reserved021",        /* 0x21 */
-  "FvAx",               /* 0x22 */
-  "FvAy",               /* 0x23 */
-  "FvBx",               /* 0x24 */
-  "FvBy",               /* 0x25 */
-  "FvCx",               /* 0x26 */
-  "FvCy",               /* 0x27 */
-  "Fr",                 /* 0x28 */
-  "Fdrdx",              /* 0x29 */
-  "Fdrdy",              /* 0x2a */
-  "Fg",                 /* 0x2b */
-  "Fdgdx",              /* 0x2c */
-  "Fdgdy",              /* 0x2d */
-  "Fb",                 /* 0x2e */
-  "Fdbdx",              /* 0x2f */
-  "Fdbdy",              /* 0x30 */
-  "Fz",                 /* 0x31 */
-  "Fdzdx",              /* 0x32 */
-  "Fdzdy",              /* 0x33 */
-  "Fa",                 /* 0x34 */
-  "Fdadx",              /* 0x35 */
-  "Fdady",              /* 0x36 */
-  "Fs",                 /* 0x37 */
-  "Fdsdx",              /* 0x38 */
-  "Fdsdy",              /* 0x39 */
-  "Ft",                 /* 0x3a */
-  "Fdtdx",              /* 0x3b */
-  "Fdtdy",              /* 0x3c */
-  "Fw",                 /* 0x3d */
-  "Fdwdx",              /* 0x3e */
-  "Fdwdy",              /* 0x3f */
-  "FtriangleCMD",       /* 0x40 */
-  "reserved041",        /* 0x41 */
-  "nopCMD",             /* 0x42 */
-  "reserved043",        /* 0x43 */
-  "fastfillCMD",        /* 0x44 */
-  "reserved045",        /* 0x45 */
-  "swapbufferCMD",      /* 0x46 */
-  "reserved047",        /* 0x47 */
-  "swappendCMD",        /* 0x48 */
-  "reserved049",        /* 0x49 */
-  "reserved04A",        /* 0x4a */
-  "reserved04B",        /* 0x4b */
-  "reserved04C",        /* 0x4c */
-  "reserved04D",        /* 0x4d */
-  "reserved04E",        /* 0x4e */
-  "reserved04F",        /* 0x4f */
-  "fbzColorPath",       /* 0x50 */
-  "fogMode",            /* 0x51 */
-  "alphaMode",          /* 0x52 */
-  "reserved053",        /* 0x53 */
-  "fbzMode",            /* 0x54 */
-  "stipple",            /* 0x55 */
-  "color0",             /* 0x56 */
-  "color1",             /* 0x57 */
-  "fogColor",           /* 0x58 */
-  "zaColor",            /* 0x59 */
-  "chromaKey",          /* 0x5a */
-  "chromaRange",        /* 0x5b */
-  "reserved05C",        /* 0x5c */
-  "reserved05D",        /* 0x5d */
-  "reserved05E",        /* 0x5e */
-  "reserved05F",        /* 0x5f */
-  "colBufferSetup",     /* 0x60 */
-  "auxBufferSetup",     /* 0x61 */
-  "clipLeftRight0",     /* 0x62 */
-  "clipTopBottom0",     /* 0x63 */
-  "clipLeftRight1",     /* 0x64 */
-  "clipTopBottom1",     /* 0x65 */
-  "reserved066",        /* 0x66 */
-  "reserved067",        /* 0x67 */
-  "reserved068",        /* 0x68 */
-  "reserved069",        /* 0x69 */
-  "reserved06A",        /* 0x6a */
-  "reserved06B",        /* 0x6b */
-  "reserved06C",        /* 0x6c */
-  "reserved06D",        /* 0x6d */
-  "reserved06E",        /* 0x6e */
-  "reserved06F",        /* 0x6f */
-  "fogTable0001",       /* 0x70 */
-  "fogTable0203",       /* 0x71 */
-  "fogTable0405",       /* 0x72 */
-  "fogTable0607",       /* 0x73 */
-  "fogTable0809",       /* 0x74 */
-  "fogTable0A0B",       /* 0x75 */
-  "fogTable0C0D",       /* 0x76 */
-  "fogTable0E0F",       /* 0x77 */
-  "fogTable1011",       /* 0x78 */
-  "fogTable1213",       /* 0x79 */
-  "fogTable1415",       /* 0x7a */
-  "fogTable1617",       /* 0x7b */
-  "fogTable1819",       /* 0x7c */
-  "fogTable1A1B",       /* 0x7d */
-  "fogTable1C1D",       /* 0x7e */
-  "fogTable1E1F",       /* 0x7f */
-  "fogTable2021",       /* 0x80 */
-  "fogTable2223",       /* 0x81 */
-  "fogTable2425",       /* 0x82 */
-  "fogTable2627",       /* 0x83 */
-  "fogTable2829",       /* 0x84 */
-  "fogTable2A2B",       /* 0x85 */
-  "fogTable2C2D",       /* 0x86 */
-  "fogTable2E2F",       /* 0x87 */
-  "fogTable3031",       /* 0x88 */
-  "fogTable3233",       /* 0x89 */
-  "fogTable3435",       /* 0x8a */
-  "fogTable3637",       /* 0x8b */
-  "fogTable3839",       /* 0x8c */
-  "fogTable3A3B",       /* 0x8d */
-  "fogTable3C3D",       /* 0x8e */
-  "fogTable3E3F",       /* 0x8f */
-  "fbijrInit0",         /* 0x90 */
-  "fbijrInit1",         /* 0x91 */
-  "fbijrInit2",         /* 0x92 */
-  "fbijrInit3",         /* 0x93 */
-  "fbijrInit4",         /* 0x94 */
-  "fbijrInit5",         /* 0x95 */
-  "reserved096",        /* 0x96 */
-  "reserved097",        /* 0x97 */
-  "reserved098",        /* 0x98 */
-  "reserved099",        /* 0x99 */
-  "reserved09A",        /* 0x9a */
-  "reserved09B",        /* 0x9b */
-  "reserved09C",        /* 0x9c */
-  "reserved09D",        /* 0x9d */
-  "reserved09E",        /* 0x9e */
-  "reserved09F",        /* 0x9f */
-  "fbijrVersion",       /* 0xa0 */
-  "fbiPixelsIn",        /* 0xa1 */
-  "fbiChromaFail",      /* 0xa2 */
-  "fbiZfuncFail",       /* 0xa3 */
-  "fbiAfuncFail",       /* 0xa4 */
-  "fbiPixelsOut",       /* 0xa5 */
-  "reserved0A6",        /* 0xa6 */
-  "reserved0A7",        /* 0xa7 */
-  "reserved0A8",        /* 0xa8 */
-  "reserved0A9",        /* 0xa9 */
-  "reserved0AA",        /* 0xaa */
-  "reserved0AB",        /* 0xab */
-  "reserved0AC",        /* 0xac */
-  "reserved0AD",        /* 0xad */
-  "reserved0AE",        /* 0xae */
-  "reserved0AF",        /* 0xaf */
-  "reserved0B0",        /* 0xb0 */
-  "reserved0B1",        /* 0xb1 */
-  "reserved0B2",        /* 0xb2 */
-  "reserved0B3",        /* 0xb3 */
-  "reserved0B4",        /* 0xb4 */
-  "reserved0B5",        /* 0xb5 */
-  "reserved0B6",        /* 0xb6 */
-  "reserved0B7",        /* 0xb7 */
-  "reserved0B8",        /* 0xb8 */
-  "reserved0B9",        /* 0xb9 */
-  "reserved0BA",        /* 0xba */
-  "reserved0BB",        /* 0xbb */
-  "reserved0BC",        /* 0xbc */
-  "reserved0BD",        /* 0xbd */
-  "reserved0BE",        /* 0xbe */
-  "texChipSel",         /* 0xbf */
-  "textureMode",        /* 0xc0 */
-  "tLOD",               /* 0xc1 */
-  "tDetail",            /* 0xc2 */
-  "texBaseAddr",        /* 0xc3 */
-  "texBaseAddr1",       /* 0xc4 */
-  "texBaseAddr2",       /* 0xc5 */
-  "texBaseAddr38",      /* 0xc6 */
-  "trexInit0",          /* 0xc7 */
-  "trexInit1",          /* 0xc8 */
-  "nccTable0_0",        /* 0xc9 */
-  "nccTable0_1",        /* 0xca */
-  "nccTable0_2",        /* 0xcb */
-  "nccTable0_3",        /* 0xcc */
-  "nccTable0_4",        /* 0xcd */
-  "nccTable0_5",        /* 0xce */
-  "nccTable0_6",        /* 0xcf */
-  "nccTable0_7",        /* 0xd0 */
-  "nccTable0_8",        /* 0xd1 */
-  "nccTable0_9",        /* 0xd2 */
-  "nccTable0_A",        /* 0xd3 */
-  "nccTable0_B",        /* 0xd4 */
-  "nccTable1_0",        /* 0xd5 */
-  "nccTable1_1",        /* 0xd6 */
-  "nccTable1_2",        /* 0xd7 */
-  "nccTable1_3",        /* 0xd8 */
-  "nccTable1_4",        /* 0xd9 */
-  "nccTable1_5",        /* 0xda */
-  "nccTable1_6",        /* 0xdb */
-  "nccTable1_7",        /* 0xdc */
-  "nccTable1_8",        /* 0xdd */
-  "nccTable1_9",        /* 0xde */
-  "nccTable1_A",        /* 0xdf */
-  "nccTable1_B",        /* 0xe0 */
-  "reserved0E1",        /* 0xe1 */
-  "reserved0E2",        /* 0xe2 */
-  "reserved0E3",        /* 0xe3 */
-  "reserved0E4",        /* 0xe4 */
-  "reserved0E5",        /* 0xe5 */
-  "reserved0E6",        /* 0xe6 */
-  "reserved0E7",        /* 0xe7 */
-  "reserved0E8",        /* 0xe8 */
-  "reserved0E9",        /* 0xe9 */
-  "reserved0EA",        /* 0xea */
-  "reserved0EB",        /* 0xeb */
-  "reserved0EC",        /* 0xec */
-  "reserved0ED",        /* 0xed */
-  "reserved0EE",        /* 0xee */
-  "reserved0EF",        /* 0xef */
-  "reserved0F0",        /* 0xf0 */
-  "reserved0F1",        /* 0xf1 */
-  "reserved0F2",        /* 0xf2 */
-  "reserved0F3",        /* 0xf3 */
-  "reserved0F4",        /* 0xf4 */
-  "reserved0F5",        /* 0xf5 */
-  "reserved0F6",        /* 0xf6 */
-  "reserved0F7",        /* 0xf7 */
-  "reserved0F8",        /* 0xf8 */
-  "reserved0F9",        /* 0xf9 */
-  "reserved0FA",        /* 0xfa */
-  "reserved0FB",        /* 0xfb */
-  "reserved0FC",        /* 0xfc */
-  "reserved0FD",        /* 0xfd */
-  "reserved0FE",        /* 0xfe */
-  "reserved0FF"         /* 0xff */
-};
-
-/*---------------------------------------------------------------------------
-** _grDebugGroupWriteHeader
-*/
-#if defined(GDBG_INFO_ON) && (GLIDE_PLATFORM & GLIDE_HW_SST96)
-void
-_grDebugGroupWriteHeader(FxU32 header, FxU32 address) 
-{
-#define FN_NAME "_grDebugGroupWriteHeader"
-  GR_DCL_GC;
-  FxU32
-    offset,
-    /* laddress,
-     * chipField, */
-    lheader = header;
-  int
-    index,
-    nBits = 0;
-
-  GR_ASSERT(address & GWH_ENABLE_BIT);
-
-  GDBG_INFO((128, "New Group Write Packet ======================\n"));
-  GDBG_INFO((128, "Address:      0x%x\n", address));
-  GDBG_INFO((128, "Header:       0x%x\n", header));
-  GDBG_INFO((128, "PCI Address:  0x%x\n", (address & 0xfffff) << 2));
-  GDBG_INFO((128, "Chip Field:   0x%x\n", (address >> 14) & 0xf));
-            
-  offset = (address & ~(0xf << 14)) & 0xfffff;
-  index = offset;
-
-  if (offset < 0x100 ) { /* It's state or triangle */
-    
-    GDBG_INFO((128, "Start:     0x%s (0x%x)\n", regNames[index], index));
-    GDBG_INFO((128, "Mask:      0x%x\n", header));
-    
-    while (lheader) {
-      if (lheader & 0x1) {
-        nBits++;
-        GDBG_INFO((128, "Includes:\t%s (0x%x)\n",
-                   regNames[index], index));
-      }
-      lheader >>= 1;
-      index++;
-    }
-  } else if (offset >= 0x10000) { /* It's texture */
-    GDBG_INFO((128, "Mask:      0x%x\n", header));
-    GDBG_INFO((128, "TEXTURE\n"));
-    do {
-      if (lheader & 0x1)
-        nBits++;
-    } while (lheader >>=1 );
-  } else {                      /* WTF? */
-    GDBG_INFO((128, "Group Write Header:\t????\n"));
-    nBits = 1;
-  }
-
-  GDBG_INFO((128, "%s:  %d bits of mask 0x%x were set\n", FN_NAME,
-             nBits, header)); 
-
-  GR_ASSERT(nBits);
-
-#undef FN_NAME
-} /* _grDebugGroupWriteHeader */
-#endif /* (GDBG_INFO_ON & (GLIDE_PLATFORM & GLIDE_HW_SST96)) */
-
-void
-_grFifoWriteDebug(FxU32 addr, FxU32 val, FxU32 fifoPtr)
-{
-  GR_DCL_GC;
-  FxU32
-    index = GEN_INDEX(addr);
-  char
-    *regName; 
-
-  regName = (index <= 0xff) ? regNames[index] : "TRAM";
- 
-  if (index <= 0xff) { 
-    GDBG_INFO((120, "Storing to FIFO:\n"));
-    GDBG_INFO((120, "\tReg Name:    %s\n", regName));
-    GDBG_INFO((120, "\tReg Num:     0x%x\n", index));
-    GDBG_INFO((120, "\tValue:       0x%x\n", val));
-    GDBG_INFO((120, "\tFIFO Ptr:    0x%x\n", fifoPtr));
-    GDBG_INFO((120, "\tSince Fence: 0x%x\n", gc->hwDep.sst96Dep.writesSinceFence));
-    GDBG_INFO((120, "\tFIFO Test:    0x%x\n", gc->fifoData.hwDep.vg96FIFOData.fifoSize));
-  }
-} /* _grFifoWriteDebug */
-
-void
-_grFifoFWriteDebug(FxU32 addr, float val, FxU32 fifoPtr)
-{
-  GR_DCL_GC;
-  FxU32
-    index = GEN_INDEX(addr);
-  char
-    *regName; 
-
-  if (index <= 0xff) {
-    
-    regName = regNames[index];
-    
-    GDBG_INFO((120, "Storing to FIFO:\n"));
-    GDBG_INFO((120, "\tReg Name:    %s\n", regName));
-    GDBG_INFO((120, "\tReg Num:     0x%x\n", index));
-    GDBG_INFO((120, "\tValue:       %4.2f\n", val));
-    GDBG_INFO((120, "\tFIFO Ptr:    0x%x\n", fifoPtr));
-    GDBG_INFO((120, "\tFIFO Test:    0x%x\n", gc->fifoData.hwDep.vg96FIFOData.fifoSize));
-  } else {
-    GDBG_INFO((195, "Storing to FIFO:\n"));
-    GDBG_INFO((195, "\tTEX Addr:    0x%x\n", index));
-    GDBG_INFO((195, "\tTexel:       %4.2f\n", val));
-    GDBG_INFO((195, "\tFIFO Ptr:    0x%x\n", fifoPtr));
-    GDBG_INFO((120, "\tFIFO Test:    0x%x\n", gc->fifoData.hwDep.vg96FIFOData.fifoSize));
-  }  
-} /* _grFifoFWriteDebug */
-
-
-/*--------------------------------------------------------------------------
-** _grSst96PCIFifoEmpty 
-*/
-FxBool
-_grSst96PCIFifoEmpty() {
-  GR_DCL_GC;
-  GR_DCL_HW;
-
-  int
-    count = 0;
-
-#define COUNT_PATIENCE_VALUE  100000000
-#define SST96_PCI_FIFO_EMPTY(a) ((((a->status) & 0x3f00) >> 8) == 0x3f)
-  for (;;) {
-    if (SST96_PCI_FIFO_EMPTY(hw))
-      return FXTRUE;
-    
-    if (!(++count % COUNT_PATIENCE_VALUE)) {
-      GDBG_INFO((120, "Losing Patients after %d tries\n", COUNT_PATIENCE_VALUE));
-      break;
-    }
-  }
-  return FXFALSE;  
-} /* _grSst96PCIFifoEmpty */
-
-
-FxU32
-*sstGlobal(void);
-
-void GR_CDECL
-_grSst96FifoMakeRoom(void) 
-{
-  GR_DCL_GC;
-#ifdef SST96_ALT_FIFO_WRAP
-  /* NB: W/ the alternate fifo wrapping stuff on only the asm
-   * tri-setup uses this routine.  
-   */
-  gc->fifoData.hwDep.vg96FIFOData.blockSize = _GlideRoot.curTriSize;
-#endif
-
-  /* Wrap Fifo now if triangle is going to incur a wrap */
-  initWrapFIFO(&gc->fifoData);
-} /* _grSst96FifoMakeRoom */
-
-/*--------------------------------------------------------------------------
-** _grSst96Load32
-*/
-FxU32
-_grSst96Load32(FxU32 *s) {
-  GR_DCL_GC;
-  FxU32
-    index,                      /* index into reg name list */
-    regVal;
-  char
-    *regName;
-
-  regVal = *s;
-
-  index = GEN_INDEX(s);
-
-  if (index <= 0xff) {
-    regName = regNames[index];
-    GDBG_INFO((120, "Direct Register Read:\n"));
-    GDBG_INFO((120, "\tReg Name:        %s\n", regName));
-    GDBG_INFO((120, "\tReg Num:         0x%x\n", index));
-    GDBG_INFO((120, "\tReg Val:         0x%x\n", regVal));
-  }
-      
-  return regVal;
-
-} /* _grSst96Load32 */
-
-
-/*---------------------------------------------------------------------------
-** _gr96SstStore32
-*/
-void
-_grSst96Store32(FxU32 *d, FxU32 s) {
-  GR_DCL_GC;
-
-#ifdef SST96_FIFO
-  GLIDE_FIFO_CHECK();
-  {
-    FxI32 fifoSize = gc->fifoData.hwDep.vg96FIFOData.fifoSize - 8;
-    if (fifoSize < 0) {
-#if SST96_ALT_FIFO_WRAP
-      gc->fifoData.hwDep.vg96FIFOData.blockSize = (sizeof(FxU32) << 1);
-      initWrapFIFO(&gc->fifoData);
-#else
-      _grSst96FifoMakeRoom();
-#endif
-    }
-  }
-
-  SST96_STORE_FIFO( d, s );
-  GLIDE_FIFO_CHECK();
-#else /* !SST96_FIFO */
-  FxU32
-    index; /* Index into reg name list */
-  char
-    *regName;
-
-  index = GEN_INDEX(d);
-
-  if (index <= 0xff) {
-    regName = (index <= 0xff) ? regNames[index] : "TRAM";
-    GDBG_INFO((120, "Direct Rester Write:\n"));
-    GDBG_INFO((120, "\tReg Name:        %s\n", regName));
-    GDBG_INFO((120, "\tReg Num:         0x%x\n", index));
-    GDBG_INFO((120, "\tValue:           0x%x\n", s));
-  }
-
-  if (_grSst96PCIFifoEmpty() == FXFALSE) {
-    GDBG_INFO((120, "ERROR:  Fifo didn't empty\n"));
-  }
-
-  *d = s;
-#endif /* !SST96_FIFO */
-} /* _gr96SstStore32 */
-
-/*---------------------------------------------------------------------------
-** _grSst96Store32F
-*/
-void
-_grSst96Store32F(float *d, float s) {
-#ifdef SST96_FIFO
-  GLIDE_FIFO_CHECK();
-#else
-  FxU32
-    index;                      /* Offset into reg name array */
-  char
-    *regName;                   /* Name of register */
-
-  index = GEN_INDEX(d);
-
-  if (index <= 0xff) {
-    regName = regNames[index];
-    GDBG_INFO((120, "Direct Register Write:\n"));
-    GDBG_INFO((120, "\tReg Name:        %s\n", regName));
-    GDBG_INFO((120, "\tReg Num:         0x%x\n", index));
-    GDBG_INFO((120, "\tValue:           %4.4f\n", s));
-  }
-  *d = s;
-
-  if (_grSst96PCIFifoEmpty() == FXFALSE) {
-    GDBG_INFO((120, "ERROR:  Fifo didn't empty\n"));
-  }
-#endif
-} /* _grSst96Store32F */
-
-/*---------------------------------------------------------------------------
-** _grSst96Store16
-*/
-void
-_grSst96Store16(FxU16 *d, FxU16 s) {
-  FxU32 dummy;
-
-  dummy = (FxU32) s;
-  _grSst96Store32((FxU32 *) d, dummy);
-} /* _grSst96Store16 */
-
-#undef GETINDEX
-#undef GETREADADDR
-#undef GR_GET
-#define GR_GET(s) *(GETREADADDR(s))
-#define GETINDEX(a) ((((FxU32) &a) - (((FxU32) hw) + 0x400000)) >> 2)
-#define GETREADADDR(s) ((FxU32 *) (((FxU32) hw) + (GETINDEX(s) <<12)))
-
-#define STATUS_MEMFIFOERR       FXBIT(15)
-#define STATUS_CMDFIFOERR       FXBIT(14)
-
-#define FIFO_TOP_BYTES(a) ((((a) >> 11) & 0x3ff) << 12)
-#define FIFO_BOT_BYTES(a) ((((a) >> 1) & 0x3ff) << 12)
-#define FIFO_RD_BYTES(a) (((a) << 3) & 0x7ffff)
-
-/*---------------------------------------------------------------------------
-** _grSst96CheckFifoData
-*/
-void
-_grSst96CheckFifoData()
-{
-#define FN_NAME "_grSst96CheckFifoData"
-  GR_DCL_GC;
-  GR_DCL_HW;
-
-  FxU32
-    /* Data for error checking */
-    fifoStartGC,                /* GC's idea of FIFO bottom */
-    fifoStartHW,                /* Jr's idea of FIFO bbottom */
-    fifoWrPtrGC,                /* GC's idea of write pointer */
-    fifoRdPtrHW,                /* Jr's idea of read pointer */
-    fifoTopHW,                  /* Jr's idea of top of FIFO */
-    /* Register contents */
-    status,
-    fbiJrInit3,
-    fbiJrInit4,
-    fbiJrInit5;
-
-  FxBool
-    error = FXFALSE;
-
-  if (!gc->open) return;
-
-  /*
-  **  Get the relavent data from the GC and from Jr.
-  */
-
-  /* Jr. */
-  status = GR_GET(hw->status);
-  fbiJrInit3 = GR_GET(hw->fbijrInit3);
-  fbiJrInit4 = GR_GET(hw->fbijrInit4);
-  fbiJrInit5 = GR_GET(hw->fbijrInit5);
-
-  /* GC */
-  fifoStartGC = (FxU32) gc->fifoData.hwDep.vg96FIFOData.fifoVirt - (FxU32) gc->base_ptr;
-  fifoWrPtrGC = (FxU32) gc->fifoData.hwDep.vg96FIFOData.fifoPtr - (FxU32) gc->base_ptr;
-  
-  /* Deduce relevant data from registers */
-  fifoStartHW = FIFO_BOT_BYTES(fbiJrInit3);
-  fifoTopHW = FIFO_TOP_BYTES(fbiJrInit3) + 0x1000;
-  fifoRdPtrHW = FIFO_RD_BYTES(fbiJrInit5);
-
-  /*
-  **  Perform Error Checking
-  */
-
-  /* Check for errors indicated in status bits */
-  if (status & STATUS_MEMFIFOERR) {
-    GDBG_PRINTF(("FIFO ERROR:  Status 0x%x indicates MEMFIFO error!\n", status));
-    error = FXTRUE;
-  }
-
-  if (status & STATUS_CMDFIFOERR) {
-    GDBG_PRINTF(("FIFO ERROR:   Status 0x%x indicates CMDFIFO error\n"));
-    error = FXTRUE;
-  }
-
-  /* Check for proper concept of FIFO bottom */
-  if (fifoStartGC != fifoStartHW) {
-    GDBG_PRINTF(("FIFO_ERROR:   fbijrInit3 0x%x: FIFO Bottom  0x%x != 0x%x\n",
-               fbiJrInit3, fifoStartGC, fifoStartHW));
-    error = FXTRUE;
-  }
-
-  /* Check for write past end of FIFO */
-  if (fifoWrPtrGC > fifoTopHW) {
-    GDBG_PRINTF(("FIFO ERROR:  Top of FIFO: 0x%x, Write Ptr: 0x%x\n",
-                fifoTopHW, fifoWrPtrGC));
-    error = FXTRUE;
-  }
-
-  if ((fbiJrInit4 > (FxU32)gc->fifoData.hwDep.vg96FIFOData.fifoMax) ||
-      (fbiJrInit4 >= 0x10000UL)) {
-    GDBG_PRINTF(("FIFO Error: Entry count overflow: 0x%X 0x%X\n",
-                 fbiJrInit4, gc->fifoData.hwDep.vg96FIFOData.fifoMax));
-    error = FXTRUE;
-  }
-
-  if (error) {
-    GrErrorCallback("FATAL FIFO ERROR (See above)\n", FXTRUE);
-  }
-
-#undef FN_NAME
-} /* _grSst96CheckFifoData */
-
-#endif /* (GLIDE_PLATFORM & GLIDE_HW_SST96) */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/xdraw96.S glide2/sst1/glide/src/xdraw96.S
--- build-tree.orig/glide2x/sst1/glide/src/xdraw96.S	Tue Jan  4 18:37:20 2000
--- build-tree/glide2x/sst1/glide/src/xdraw96.S	Wed Dec 31 19:00:00 1969
@@ -1,717 +0,0 @@
-## 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: /cvsroot/glide/glide2x/sst1/glide/src/xdraw96.S,v 1.1 2000/01/04 23:37:20 joseph Exp $
-## $Revision: 1.1 $
-## $Log: xdraw96.S,v $
-## Revision 1.1  2000/01/04 23:37:20  joseph
-## Changed *.s --> *.S to work with shared swlibs.  The style of the asm files
-## does not match that used in the other kits only the names have changed.
-##
-## Revision 1.1.1.1  1999/12/07 21:48:55  joseph
-## Initial checkin into SourceForge.
-##
-# 
-# 2     7/07/97 2:14p Jdt
-# assembly now on par with C code.
-# 
-# 1     7/07/97 8:37a Jdt
-# B4 Chip field fix.
-##
-
-# This used to be xdraw96.s but I renamed it as a quick way to make it work
-# with the shared 3dfx.mak
-	
-.file   "xdraw96.s"
-#OPTION OLDSTRUCTS       
-#.586P
-
-
-	
-#EXTRN   _GlideRoot:DWORD
-#EXTRN   _grSpinFifo:NEAR
-#EXTRN   _grSst96FifoMakeRoom:NEAR
-
-        
-# some useful floating load and store macros <ala gmt>
-#flds    TEXTEQU <fld  DWORD PTR>
-#fsubs   TEXTEQU <fsub DWORD PTR>
-#fmuls   TEXTEQU <fmul DWORD PTR>
-
-.align 4
-.section	.data
-One         .DATA  0x03f800000
-Area        .DATA  0
-dxAB        .DATA  0
-dxBC        .DATA  0
-dyAB        .DATA  0
-dyBC        .DATA  0
-culltest    .DATA  0
-P6FenceVar  .DATA  0
-
-# Ugly, but seems to workaround the problem with locally defined
-# data segment globals not getting relocated properly when using
-# djgpp.
-
-zArea   .EQU One+4
-zdxAB   .EQU One+8
-zdxBC   .EQU One+12
-zdyAB   .EQU One+16
-zdyBC   .EQU One+20
-zculltest .EQU One+24
-
-### Some useful SST-1 offsets
-.INCLUDE "fxgasm.h"
-
-## enables/disables trisProcessed and trisDrawn counters
-STATS .ASSIGNA 1
-
-#--------------------------------------------------------------------------        
-### Macro for P6 Fencing operation
-### Note that this destroys eax, but if you do 2 fences eax will be restored
-#.AIF \&GLIDE_DEBUG EQ 1
-#EXTRN   _GR_SET_GW_CMD:NEAR
-#EXTRN   _GR_SET_GW_HEADER:NEAR
-#EXTRN   _GR_SET_GW_ENTRY:NEAR
-#.AENDI
-
-.MACRO GR_SET_GW_CMD   addr offset data
-.AIF \&GLIDE_DEBUG EQ 1
-    push %eax
-    push %ecx
-    push %edx
-
-    push \data
-    lea  \offset (\addr), %eax
-    push %eax
-    call _GR_SET_GW_CMD
-    add  $8, %esp
-    pop  %edx
-    pop  %ecx
-    pop  %eax
-.AELSE
-    mov \data, \offset (\addr)
-.AENDI
-.ENDM
-
-.MACRO GR_SET_GW_HEADER  addr offset data
-.AIF \&GLIDE_DEBUG EQ 1
-    push %eax
-    push %ecx
-    push %edx
-    push \data
-    lea  \offset (\addr), %eax
-    push %eax
-    call _GR_SET_GW_HEADER
-    add  $8, %esp
-    pop  %edx
-    pop  %ecx
-    pop  %eax
-.AELSE
-    mov \data, \offset (\addr)
-.AENDI
-.ENDM
-
-.MACRO GR_SET_GW_ENTRY   addr offset data
-.AIF \&GLIDE_DEBUG EQ 1
-    push %eax
-    push %ecx
-    push %edx
-    push \data
-    lea  \offset (\addr), %eax
-    push %eax
-    call _GR_SET_GW_ENTRY
-    add  $8, %esp
-    pop  %edx
-    pop  %ecx
-    pop  %eax
-.AELSE
-    mov \data, \offset (\addr)
-.AENDI
-.ENDM
-
-.MACRO GR_FSET_GW_ENTRY addr offset
-.AIF \&GLIDE_DEBUG EQ 1
-    push %eax
-    push %ecx
-    push %edx
-    sub  $4, %esp
-    fstps (%esp)
-    lea  \offset (\addr), %eax
-    push %eax
-    call _GR_SET_GW_ENTRY
-    add  $8, %esp
-    pop  %edx
-    pop  %ecx
-    pop  %eax
-.AELSE
-    fstps \offset (\addr)
-.AENDI
-.ENDM
-
-#--------------------------------------------------------------------------        
-# Arguments (STKOFF = 16 from 4 pushes)
-.AIF \&GLIDE_DEBUG EQ 1
-STKOFF	.EQU 16
-.AELSE	
-STKOFF  .EQU 16
-.AENDI	
-_va$    .EQU  4 + STKOFF
-_vb$    .EQU  8 + STKOFF
-_vc$    .EQU 12 + STKOFF
-
-X       .EQU 0
-Y       .EQU 4
-
-fa      .REG     (%eax)       # vtx a from caller
-fb      .REG     (%ebx)       # vtx b from caller
-fc      .REG     (%ecx)       # vtx c from caller
-                              # edx is used as index, loading from *src
-gc      .REG     (%esi)       # points to graphics context
-dlp     .REG     (%esi)       # points to dataList structure
-hw      .REG     (%edi)       # points to the hardware
-fifo    .REG     (%edi)       # points to next entry in fifo
-
-tmpx    .REG     (%edx)       # temp X storage
-i       .REG     (%edx)       # i = dlp->i
-tmpy    .REG     (%ebp)       # temp Y storage
-
-.text
-.align 4
-
-#--------------------------------------------------------------------------
-
-.AIF \&GLIDE_DEBUG EQ 0
-.globl  grDrawTriangle
-.type	grDrawTriangle, @function
-grDrawTriangle:
-.AENDI	
-.globl  grDrawTriangle_asm
-.type grDrawTriangle_asm, @function
-grDrawTriangle_asm:	
-# FALL THRU to _trisetup
-
-
-	
-	
-#--------------------------------------------------------------------------        
-##
-##  _trisetup_asm - do triangle setup & send down draw command
-##
-##  USAGE:
-##
-##  
-.globl  _trisetup_asm
-.type _trisetup_asm, @function
-_trisetup_asm:	
-# 28
-
-
-    # save ebx, esi, edi, ebp
-    push    %ebx
-    push    %esi
-
-    push    %edi
-    push    %ebp
-
-#vertex sorting is done as follows:
-#   1 First, load the y values of vtx a, b, c into integer registers 
-#
-#       This is done in the segment vertex_load below.
-#
-#       Note that this trashes the pointers, we will reload them later
-#
-#       If any of the y values is negative, convert to a pseudo-2s complement
-#       form by xor'ing with 7fffffff. This lets us use 2s complement integer
-#       comparisons for floating point comparisons.
-#
-#   2 Compare a.y, b.y, c.y, and setup pointers fa, fb, fc so that
-#       a.y <= b.y <= c.y.
-#
-#       Note that fa, fb, fc registers point once more to vertex structs,
-#       though not necessarily in the order that the application passes it to
-#       this routine.
-#
-#       This is done in the segment vertex_y_sort below, with many many 
-#       compare/branches.
-#
-#       All the compare/branches converge to sst_load_xy_regs.
-#
-#   3 Load the (x,y) values into the floating point SST registers for Fa, Fb,
-#       and Fc. Done in the segment sst_load_xy_regs.
-#
-#   4 Restore fa, fb, fc to the user's order. Also save the vertex
-#       with lowest y value on the stack, this will be used later for 
-#       loading parameter values into the SST regs.
-#
-##############
-
-
-#--------------------------------------------------------------------------        
-
-    mov     _va$(%esp), fa   # 1
-    mov     _vb$(%esp), fb
-    mov     _vc$(%esp), fc
-    movl    (_GlideRoot+trisProcessed), tmpy    # _GlideRoot.stats.trisProcessed++#
-# 36-3
-.Lvertex_y_load:
-    mov     Y(fa), fa        # 2
-    mov     Y(fb), fb
-    cmp     $0, fa           # 3
-    jge     .La_positive
-    xor     $0x7fffffff, fa
-.align 4
-.La_positive:
-    cmp     $0, fb            # 4
-    jge     .Lb_positive
-    xor     $0x7fffffff, fb 
-.align 4
-.Lb_positive:
-    mov     Y(fc), fc        # 5
-    movl    (_GlideRoot+curGC), gc
-    cmp     $0, fc           # 6
-    jge     .Lc_positive
-    xor     $0x7fffffff, fc
-.Lc_positive:
-# 42-3
-# 24-30 with direct fall-thru
-# jmp ret_pop0f
-#--------------------------------------------------------------------------        
-.Lvertex_y_sort:
-
-    cmp     fb, fa              # if (ay < by) {
-    jge     .LAgtB
-    cmp     fc, fb              # if (by > cy) {
-    jle     .Labc
-    cmp     fc, fa              # if (ay < cy) {
-    jge     .Lcab
-
-.Lacb:                          # acb
-        mov     _va$(%esp), fa
-        mov     cull_mode(gc), tmpx # culltest = gc->state.cull_mode
-        mov     _vc$(%esp), fb
-        mov     _vb$(%esp), fc
-        xor     $1, tmpx                 # culltest ^= 1
-        jmp     .LArea_Computation
-
-.align 4
-.Lcab:                          # cab
-        mov _vc$(%esp), fa            # fa = &vc->x
-        mov cull_mode(gc), tmpx       # culltest = gc->state.cull_mode
-        mov _va$(%esp), fb            # fb = &va->x
-        mov _vb$(%esp), fc            # fc = &vb->x
-                                      # HOLE
-        jmp .LArea_Computation
-
-.align 4
-.Labc:                          # abc
-        mov _va$(%esp), fa          # fa = &va->x
-        mov _vb$(%esp), fb          # fb = &vb->x
-        mov _vc$(%esp), fc          # fc = &vc->x
-        mov cull_mode(gc), tmpx     # culltest = gc->state.cull_mode
-                                    # HOLE
-        jmp .LArea_Computation
-
-.align 4
-.LAgtB:                          # } else {
-        cmp     fc, fb          #   if (by < cy) 
-        jge     .Lcba
-        cmp     fc, fa          #   if (ay < cy)
-        jge     .Lbca
-.Lbac:                          # bac
-        mov     _vb$(%esp), fa
-        mov     cull_mode(gc), tmpx # culltest = gc->state.cull_mode
-        mov     _va$(%esp), fb
-        mov     _vc$(%esp), fc
-        xor     $1, tmpx                 # culltest ^= 1
-        jmp     .LArea_Computation
-
-.align 4
-.Lcba:                          # cba
-        mov     _vc$(%esp), fa
-        mov     cull_mode(gc), tmpx # culltest = gc->state.cull_mode
-        mov     _vb$(%esp), fb
-        mov     _va$(%esp), fc
-        xor     $1, tmpx                 # culltest ^= 1
-        jmp     .LArea_Computation
-
-.align 4
-.Lbca:                          # bca
-        mov     _vb$(%esp), fa
-        mov     _vc$(%esp), fb
-        mov     _va$(%esp), fc
-        mov     cull_mode(gc), tmpx # culltest = gc->state.cull_mode
-#--------------------------------------------------------------------------        
-.align 4
-.LArea_Computation:
-# 47-3
-# jmp ret_pop0f
-    flds    X(fa)            #  xa
-    fsubs   X(fb)            #  dxAB
-    fsts    dxAB
-    flds    X(fb)            #  |    xb
-    fsubs   X(fc)            #  |    dxBC
-    fsts    dxBC
-    flds    Y(fb)            #  |    |    yb
-    fsubs   Y(fc)            #  |    |    dyBC
-    fsts    dyBC
-    flds    Y(fa)            #  |    |    |    ya
-    fsubs   Y(fb)            #  |    |    |    dyAB
-    fsts    dyAB
-    fld     %st(3)           #  |    |    |    |    dxAB
-    fsts    Area
-    fmul    %st(2), %st      #  |    |    |    |    t0         t0=dxAB*dyBC
-    fsts    Area
-    fld     %st(3)           #  |    |    |    |    |    dxBC
-    fsts    Area
-    fmul    %st(2), %st      #  |    |    |    |    |    t1    t1=dxBC*dyAB
-    fsts    Area
-    fsubrp  %st,%st(1)       #  |    |    |    |    area
-
-    fsts    zArea            #  |    |    |    |    area
-
-    # Zero Area Triangle Check
-    mov     zArea, tmpy        # j = *(long *)&area
-    and     $0x7fffffff,tmpy   # if ((j & 0x7FFFFFFF) == 0)
-    jz      .Lzero_area
-
-    # Cull Check
-    sal     $31, tmpx                   # culltest<<31
-    mov     cull_mode (gc), tmpy        # load gc->state.cull_mode
-    test    tmpy, tmpy                  # if (gc->state.cull_mode != GR_CULL_DISABLE)
-    je      .Lnocull1
-                                        # culling ENABLED
-    mov     zArea, tmpy                 # reload area
-    xor     tmpx, tmpy                  # if (j ^ (culltest<<31))
-    jge     .Lbackfaced
-
-.Lnocull1:                        # culling disabled
-    # OOA Calculation
-    fdivrs  One                 #  |    |    |    |    ooa
-
-    # Fetch Fifo Ptr
-    mov     fifoPtr(gc), fifo
-
-    # P6 Check
-    mov     (_GlideRoot+CPUType), tmpx
-    cmp     $6, tmpx
-    
-    je      .Lfence
-
-.align 4
-.LfenceDone:  
-    # Wrap Check
-    mov     (_GlideRoot+curTriSize), tmpx
-    mov     fifoSize(gc), tmpy
-
-    sub     tmpx, tmpy
-    jl      .Lwrap
-
-.align 4
-.LwrapDone:
-    mov     tmpy, fifoSize(gc)
-    # Adjust Fifo Ptr
-    mov     fifo, tmpy
-    add     tmpx, tmpy
-    mov     tmpy, fifoPtr(gc)
-
-    # Begin Tri Packet
-    mov     gwCommand(gc), tmpx
-    mov     gwHeaders(gc), tmpy
-
-    GR_SET_GW_CMD    fifo, 0, tmpx
-    GR_SET_GW_HEADER fifo, 4, tmpy
-
-    # Download X, Y * 3
-    mov     X(fa), tmpx
-    mov     Y(fa), tmpy
-
-    GR_SET_GW_ENTRY fifo, 8,  tmpx
-    GR_SET_GW_ENTRY fifo, 12, tmpy
-
-    mov     X(fb), tmpx
-    mov     Y(fb), tmpy
-
-    GR_SET_GW_ENTRY fifo, 16, tmpx
-    GR_SET_GW_ENTRY fifo, 20, tmpy
-
-    mov     X(fc), tmpx
-    mov     Y(fc), tmpy
-
-    GR_SET_GW_ENTRY fifo, 24, tmpx
-    GR_SET_GW_ENTRY fifo, 28, tmpy
-
-    add     $32, fifo
-
-    mov     dataList(gc), i            # i = gc->datalist[0]->i
-    add     $ dataList, dlp            # dlp = gc->dataList
-
-    # Early out for no interp
-    test    i, i
-    je      .Lno_interpolation
-
-    # Setup for Parameter Calculator
-                                #   dxAB  dxBC  dyBC  dyAB  ooa
-    fmul    %st, %st(4)         #   DXAB  |     |     |     |
-    fmul    %st, %st(3)         #   |     DXBC  |     |     |
-    fmul    %st, %st(2)         #   |     |     DYBC  |     |
-    fmulp   %st, %st(1)         #   |     |     |     DYAB
-    fxch    %st(3)              #   DYAB  |     |     DXAB  
-    fstps   zdxAB               #   |     |     DYBC
-    fstps   zdyBC               #   |     DXBC
-    fstps   zdxBC               #   DYAB
-    fstps   zdyAB               #
-
-    # Parameter Calculator
-.align 4
-.Lnext_parm:
-    test    $1, i
-    jnz     .Lsecondary_packet
-
-    mov     (fa, i), tmpy                 # tmpy = fa[i]
-    flds    (fa, i)                       #   pa
-    fsubs   (fb, i)                       #   dpAB
-    flds    (fb, i)                       #   |    pb
-    fsubs   (fc, i)	                  #   dpAB dpBC
-
-    fld     %st(1)                        #   |    |    dpAB   
-    fmuls   zdyBC                         #   |    |    p0x
-    fld     %st(1)                        #   |    |    |    dpBC
-    fmuls   zdyAB                         #   |    |    |    p1x
-    fxch    %st(3)                        #   p1x  |    |    dpAB
-					  #   |    |    |    |
-    GR_SET_GW_ENTRY fifo, 0, tmpy
-    fmuls   zdxBC                         #   |    |    |    p1y
-    fxch    %st(2)                        #   |    p1y  |    dpBC
-    fmuls   zdxAB                         #   |    |    |    p0y
-    fxch    %st(3)                        #   p0y  |    |    p1x
-    fsubrp  %st, %st(1)                   #   |    |    dpdx
-    fxch    %st(2)                        #   dpdx |    p0y
-    fsubp   %st, %st(1)                   #   |    dpdy
-    fxch    %st(1)                        #   dpdy dpdx
-    mov     dl_i + SIZEOF_dataList(dlp), i # i = dlp[1]->i
-    add     $ SIZEOF_dataList, dlp        # dlp++
-					  #   |
-    GR_FSET_GW_ENTRY fifo, 4
-					  #   empty
-    GR_FSET_GW_ENTRY fifo, 8
-    add     $12, fifo
-    test    i,i                           # while (i)
-    jne     .Lnext_parm                     # 
-
-.align 4
-.Ltriangle_command:
-    # Write Triangle Command
-    mov     zArea, tmpx
-    GR_SET_GW_ENTRY fifo, 0, tmpx
-    test    $7, fifo
-    jnz     .Lno_padding0
-    GR_SET_GW_ENTRY fifo, 4, tmpx
-.Lno_padding0:
-    # Cleanup
-    pop    %ebp
-    pop    %edi
-    pop    %esi
-    pop    %ebx
-    mov    $1, %eax                     # return 1 (triangle drawn)
-    ret
-    
-
-.align 4
-.Lzero_area:
-.Lbackfaced:
-    fstp    %st(0)   # 4
-    fstp    %st(0)   # 3
-    fstp    %st(0)   # 2
-    fstp    %st(0)   # 1
-    fstp    %st(0)   # 0
-    pop     %ebp
-    pop     %edi
-    pop     %esi
-    pop     %ebx
-    xor     %eax, %eax                    # return 0 (triangle drawn)
-    ret
-
-.align 4
-.Lwrap:
-    push    %eax
-    push    %ebx	
-    push    %ecx
-    push    %edx
-    call    _grSst96FifoMakeRoom
-    pop     %edx
-    pop     %ecx
-    pop     %ebx
-    pop     %eax
-    mov     fifoPtr(gc), fifo
-    mov     fifoSize(gc), tmpy
-    sub     tmpx, tmpy
-    jmp     .LwrapDone
-
-.align 4
-.Lfence:
-    mov     writesSinceFence(gc), tmpx
-    mov     (_GlideRoot+curTriSize), tmpy
-    
-    shr     $2, tmpy
-    sub     tmpy, tmpx
-    jl      .Ldofence
-
-    mov     tmpx, writesSinceFence(gc)
-    jmp     .LfenceDone
-
-.align 4
-.Ldofence:
-    push    %eax
-    xchg    %eax, P6FenceVar
-    pop     %eax
-    jmp     .LfenceDone
-
-.align 4
-.Lsecondary_packet:
-    test    $7, fifo
-    jz      .Lno_padding1
-    GR_SET_GW_ENTRY  fifo, 0, tmpx 
-    add     $4, fifo
-.align 4
-.Lno_padding1:
-    push    tmpx
-    push    gc
-    
-    mov     dl_addr(dlp), tmpx
-    mov     (_GlideRoot+curGC), gc
-
-    GR_SET_GW_CMD  fifo, 0, tmpx
-    mov     gwHeaders(gc, 4), tmpy
-    
-    GR_SET_GW_HEADER fifo, 4, tmpy
-    pop     gc
-
-    pop     tmpx
-    add     $8, fifo
-
-    mov     dl_i + SIZEOF_dataList(dlp), i
-    add     $ SIZEOF_dataList, dlp
-.align 4
-.Lnext_parm_1:
-    mov    (fa, i), tmpx               # tmpy = fa[i]
-    flds   (fa, i)                     #   pa
-    fsubs  (fb, i)                     #   dpAB
-    flds   (fb, i)                     #   |    pb
-    fsubs  (fc, i)                     #   dpAB dpBC 
-
-    fld    %st(1)                      #   |    |    dpAB   
-    fmuls  zdyBC                       #   |    |    p0x
-    fld    %st(1)                      #   |    |    |    dpBC
-    fmuls  zdyAB                       #   |    |    |    p1x
-    fxch   %st(3)                      #   p1x  |    |    dpAB
-				       #   |    |    |    |
-    GR_SET_GW_ENTRY fifo, 0, tmpy       
-    fmuls  zdxBC                       #   |    |    |    p1y
-    fxch   %st(2)                      #   |    p1y  |    dpBC
-    fmuls  zdxAB                       #   |    |    |    p0y
-    fxch   %st(3)                      #   p0y  |    |    p1x
-    fsubrp %st,%st(1)                  #   |    |    dpdx
-    fxch   %st(2)                      #   dpdx |    p0y
-    fsubp  %st,%st(1)                  #   |    dpdy
-    fxch   %st(1)                      #   dpdy dpdx
-    mov    dl_i + SIZEOF_dataList(dlp), i # i = dlp[1]->i
-    add    $ SIZEOF_dataList, dlp        # dlp++
-				       #   |
-    GR_FSET_GW_ENTRY fifo, 4
-				       #   empty
-    GR_FSET_GW_ENTRY fifo, 8            
-    add     $12, fifo
-    test    i,i                        # while (i)
-    jne     .Lnext_parm_1 
-
-    test    $7, fifo
-    jz      .Ltriangle_command_packet
-    GR_SET_GW_ENTRY fifo, 0, tmpx
-    add     $4, fifo
-.align 4
-.Ltriangle_command_packet:
-    mov     (_GlideRoot+curGC), gc
-    mov     $0x40000000, tmpy
-
-    mov     gwCommand(gc), tmpx
-    mov     zArea, fa
-
-    GR_SET_GW_CMD    fifo, 0, tmpx
-    GR_SET_GW_HEADER fifo, 4, tmpy
-
-    GR_SET_GW_ENTRY  fifo, 8,  fa
-    GR_SET_GW_ENTRY  fifo, 12, fa
-
-    pop    %ebp
-    pop    %edi
-    pop    %esi
-    pop    %ebx
-    mov    $1, %eax                     # return 1 (triangle drawn)
-    ret
-
-.align 4
-.Lno_interpolation:
-    fstp    %st(0)     # 4
-    fstp    %st(0)     # 3 
-    fstp    %st(0)     # 2 
-    fstp    %st(0)     # 1 
-    fstp    %st(0)     # 0
-    jmp     .Ltriangle_command
-
-.L_end_tri_setup_asm:
-.AIF \&GLIDE_DEBUG EQ 0
-.size	grDrawTriangle,.L_end_tri_setup_asm-grDrawTriangle
-.AENDI	
-.size	grDrawTriangle_asm,.L_end_tri_setup_asm-grDrawTriangle_asm
-.size	_trisetup_asm,.L_end_tri_setup_asm-_trisetup_asm	        
-	
-# [++++ from above]
-# This comment was moved here to make the code in the loop more readable 
-# STALL HERE due to PCI write buffer being full on last instruction:        
-# The write to the packerHackAddress takes 3 bus clocks, during which
-# we may not write to the PCI buffer without stalling.  This causes
-# the amount of clocks the workaround adds to the loop to vary in the
-# following way++:
-# 
-#    CPU          Bus/CPU Clock     Total Bus       Total Penalty
-#                     Ratio*      Clocks Since   (add to later clocks)
-#======================================================================  
-# P55c-200/P5-180:    6/1              1.3       (3 - 1.3) * 6 + 6 = 17 
-# P5-166/P5-150:      5/1              1.8       (3 - 1.8) * 5 + 6 = 12 
-# P5-120:             4/1              2.25      (3 - 2.25) * 4 + 6 = 9 
-# P5-100/P5-90:       3/1               3        (3 - 3) * 3 + 6 = 6
-#
-# * P5-200 haa a 33MHz bus, P5-166 has a 33MHz bus, 
-#   P5-150 has a 30MHz bus, P5-120 has a 30MHz bus,
-#   P5-100 has a 33MHz bus, P5-90 has a 30MHz bus
-#
-#++ These calculations also assume that we NEVER get to continue a burst 
-#   from having the next parameter be consecutive from the current one.
-#   If we did get that, then we have to add two more bus clocks to the
-#   penalty for the next write (labeled loop clock 10), so that looks like
-#      CPU                  Total Penalty
-#      ============================================        
-#      P55c-200/P5-180:(2 * 6) + 17 = 29 clocks!!!
-#      P5-166/P5-150:  (2 * 5) + 12 = 22 clocks!!
-#      P5-120:         (2 * 4) +  9 = 17 clocks!
-#      P5-100/P5-90    (2 * 3) +  6 = 12 clocks    
-#
-
-#_TEXT ENDS
-.END
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/src/xdraw96.asm glide2/sst1/glide/src/xdraw96.asm
--- build-tree.orig/glide2x/sst1/glide/src/xdraw96.asm	Tue Dec  7 16:48:55 1999
--- build-tree/glide2x/sst1/glide/src/xdraw96.asm	Wed Dec 31 19:00:00 1969
@@ -1,689 +0,0 @@
-;; 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: /cvsroot/glide/glide2x/sst1/glide/src/xdraw96.asm,v 1.1.1.1 1999/12/07 21:48:55 joseph Exp $
-;; $Revision: 1.1.1.1 $
-;; $Log: xdraw96.asm,v $
-;; Revision 1.1.1.1  1999/12/07 21:48:55  joseph
-;; Initial checkin into SourceForge.
-;;
-; 
-; 2     7/07/97 2:14p Jdt
-; assembly now on par with C code.
-; 
-; 1     7/07/97 8:37a Jdt
-; B4 Chip field fix.
-;;
-
-TITLE   xdraw.asm
-OPTION OLDSTRUCTS       
-.586P
-
-.model FLAT,C                   ; Flat memory, mangle publics with leading '_'
-        
-EXTRN   _GlideRoot:DWORD
-EXTRN   _grSpinFifo:NEAR
-EXTRN   _grSst96FifoMakeRoom:NEAR
-
-        
-; some useful floating load and store macros <ala gmt>
-flds    TEXTEQU <fld  DWORD PTR>
-fsubs   TEXTEQU <fsub DWORD PTR>
-fmuls   TEXTEQU <fmul DWORD PTR>
-
-_DATA   SEGMENT
-    One         DD  03f800000r
-    Area        DD  0
-    dxAB        DD  0
-    dxBC        DD  0
-    dyAB        DD  0
-    dyBC        DD  0
-    culltest    DD  0
-    P6FenceVar  DD  0  
-_DATA   ENDS
-
-; Ugly, but seems to workaround the problem with locally defined
-; data segment globals not getting relocated properly when using
-; djgpp.
-
-zArea   TEXTEQU <One+04h>
-zdxAB   TEXTEQU <One+08h>
-zdxBC   TEXTEQU <One+0ch>
-zdyAB   TEXTEQU <One+10h>
-zdyBC   TEXTEQU <One+14h>
-zculltest TEXTEQU <One+18h>
-
-;;; Some useful SST-1 offsets
-INCLUDE fxgasm.h
-
-;; enables/disables trisProcessed and trisDrawn counters
-STATS = 1
-
-;--------------------------------------------------------------------------        
-;;; Macro for P6 Fencing operation
-;;; Note that this destroys eax, but if you do 2 fences eax will be restored
-IFDEF GLIDE_DEBUG
-EXTRN   _GR_SET_GW_CMD:NEAR
-EXTRN   _GR_SET_GW_HEADER:NEAR
-EXTRN   _GR_SET_GW_ENTRY:NEAR
-ENDIF
-
-GR_SET_GW_CMD   MACRO addr, offset, data
-IFDEF GLIDE_DEBUG
-    push eax
-    push ecx
-    push edx
-
-    push data
-    lea  eax, [addr+offset]
-    push eax
-    call _GR_SET_GW_CMD
-    add  esp, 8
-    pop  edx
-    pop  ecx
-    pop  eax
-ELSE
-    mov [addr+offset], data
-ENDIF
-ENDM
-
-GR_SET_GW_HEADER  MACRO addr, offset, data
-IFDEF GLIDE_DEBUG
-    push eax
-    push ecx
-    push edx
-    push data
-    lea  eax, [addr+offset]
-    push eax
-    call _GR_SET_GW_HEADER
-    add  esp, 8
-    pop  edx
-    pop  ecx
-    pop  eax
-ELSE
-    mov [addr+offset], data
-ENDIF
-ENDM
-
-GR_SET_GW_ENTRY   MACRO addr, offset, data
-IFDEF GLIDE_DEBUG
-    push eax
-    push ecx
-    push edx
-    push data
-    lea  eax, [addr+offset]
-    push eax
-    call _GR_SET_GW_ENTRY
-    add  esp, 8
-    pop  edx
-    pop  ecx
-    pop  eax
-ELSE
-    mov [addr+offset], data
-ENDIF
-ENDM
-
-GR_FSET_GW_ENTRY  MACRO addr, offset
-IFDEF GLIDE_DEBUG
-    push eax
-    push ecx
-    push edx
-    sub  esp, 4
-    fstp DWORD PTR [esp]
-    lea  eax, [addr+offset]
-    push eax
-    call _GR_SET_GW_ENTRY
-    add  esp, 8
-    pop  edx
-    pop  ecx
-    pop  eax
-ELSE
-    fstp DWORD PTR [addr+offset]
-ENDIF
-ENDM
-
-;--------------------------------------------------------------------------        
-; Arguments (STKOFF = 16 from 4 pushes)
-STKOFF  = 16
-
-	
-	
-
-_va$    =  4 + STKOFF
-_vb$    =  8 + STKOFF
-_vc$    = 12 + STKOFF
-
-X       = 0
-Y       = 4
-
-fa      TEXTEQU     <eax>       ; vtx a from caller
-fb      TEXTEQU     <ebx>       ; vtx b from caller
-fc      TEXTEQU     <ecx>       ; vtx c from caller
-                                ; edx is used as index, loading from *src
-gc      TEXTEQU     <esi>       ; points to graphics context
-dlp     TEXTEQU     <esi>       ; points to dataList structure
-hw      TEXTEQU     <edi>       ; points to the hardware
-fifo    TEXTEQU     <edi>       ; points to next entry in fifo
-
-tmpx    TEXTEQU     <edx>       ; temp X storage
-i       TEXTEQU     <edx>       ; i = dlp->i
-tmpy    TEXTEQU     <ebp>       ; temp Y storage
-
-_TEXT       SEGMENT
-
-;--------------------------------------------------------------------------        
-            align 4
-            PUBLIC  grDrawTriangle_asm
-grDrawTriangle_asm  PROC    NEAR
-            .code
-
-grDrawTriangle_asm ENDP
-
-; FALL THRU to _trisetup
-
-;--------------------------------------------------------------------------        
-;;
-;;  _trisetup_asm - do triangle setup & send down draw command
-;;
-;;  USAGE:
-;;
-;;  
-            align 4
-            PUBLIC  _trisetup_asm@12
-_trisetup_asm@12  PROC    NEAR
-            .code
-; 28
-    ; save ebx, esi, edi, ebp
-    push    ebx
-     push    esi
-
-    push    edi
-     push    ebp
-
-;vertex sorting is done as follows:
-;   1. First, load the y values of vtx a, b, c into integer registers 
-;
-;       This is done in the segment vertex_load below.
-;
-;       Note that this trashes the pointers, we will reload them later
-;
-;       If any of the y values is negative, convert to a pseudo-2's complement
-;       form by xor'ing with 7fffffff. This lets us use 2's complement integer
-;       comparisons for floating point comparisons.
-;
-;   2. Compare a.y, b.y, c.y, and setup pointers fa, fb, fc so that
-;       a.y <= b.y <= c.y.
-;
-;       Note that fa, fb, fc registers point once more to vertex structs,
-;       though not necessarily in the order that the application passes it to
-;       this routine.
-;
-;       This is done in the segment vertex_y_sort below, with many many 
-;       compare/branches.
-;
-;       All the compare/branches converge to sst_load_xy_regs.
-;
-;   3. Load the (x,y) values into the floating point SST registers for Fa, Fb,
-;       and Fc. Done in the segment sst_load_xy_regs.
-;
-;   4. Restore fa, fb, fc to the user's order. Also save the vertex
-;       with lowest y value on the stack, this will be used later for 
-;       loading parameter values into the SST regs.
-;
-;;;;;;;;;;;;;;
-
-
-;--------------------------------------------------------------------------        
-
-
-    mov     fa, [esp + _va$]    ; 1
-     mov     fb, [esp + _vb$]
-    mov     fc, [esp + _vc$]
-     mov     tmpy, [_GlideRoot + trisProcessed]    ; _GlideRoot.stats.trisProcessed++;
-; 36-3
-vertex_y_load:
-    mov     fa, [fa + Y]        ; 2
-     mov     fb, [fb + Y]
-    cmp     fa, 0               ; 3
-     jge     a_positive
-    xor     fa, 7fffffffh 
-            align 4
-a_positive:
-    cmp     fb, 0               ; 4
-     jge     b_positive
-    xor     fb, 7fffffffh 
-            align 4
-b_positive:
-    mov     fc, [fc + Y]        ; 5
-     mov     gc, [_GlideRoot + curGC]
-    cmp     fc, 0               ; 6
-     jge     c_positive
-    xor     fc, 7fffffffh
-c_positive:
-; 42-3
-; 24-30 with direct fall-thru
-; jmp ret_pop0f
-;--------------------------------------------------------------------------        
-vertex_y_sort:
-
-    cmp     fa, fb              ; if (ay < by) {
-     jge      AgtB
-    cmp     fb, fc              ; if (by > cy) {
-     jle     abc
-    cmp     fa, fc              ; if (ay < cy) {
-     jge     cab
-
-  acb:                          ; acb
-        mov     fa, [esp + _va$]
-         mov     tmpx, [gc + cull_mode] ; culltest = gc->state.cull_mode
-        mov     fb, [esp + _vc$]
-         mov     fc, [esp + _vb$]
-        xor     tmpx, 1                 ; culltest ^= 1
-         jmp      Area_Computation
-
-            align 4
-  cab:                          ; cab
-        mov fa, [esp + _vc$]            ; fa = &vc->x
-         mov tmpx, [gc + cull_mode]     ; culltest = gc->state.cull_mode
-        mov fb, [esp + _va$]            ; fb = &va->x
-         mov fc, [esp + _vb$]           ; fc = &vb->x
-                                                ; HOLE
-         jmp Area_Computation
-
-            align 4
-  abc:                          ; abc
-        mov fa, [esp + _va$]            ; fa = &va->x
-         mov fb, [esp + _vb$]           ; fb = &vb->x
-        mov fc, [esp + _vc$]            ; fc = &vc->x
-         mov tmpx, [gc + cull_mode]     ; culltest = gc->state.cull_mode
-                                                ; HOLE
-        jmp Area_Computation
-
-            align 4
- AgtB:                          ; } else {
-        cmp     fb, fc          ;   if (by < cy) 
-         jge     cba
-        cmp     fa, fc          ;   if (ay < cy)
-         jge      bca
-  bac:                          ; bac
-        mov     fa, [esp + _vb$]
-         mov     tmpx, [gc + cull_mode] ; culltest = gc->state.cull_mode
-        mov     fb, [esp + _va$]
-         mov     fc, [esp + _vc$]
-        xor     tmpx, 1                 ; culltest ^= 1
-         jmp     Area_Computation
-
-            align 4
-  cba:                          ; cba
-        mov     fa, [esp + _vc$]
-         mov     tmpx, [gc + cull_mode] ; culltest = gc->state.cull_mode
-        mov     fb, [esp + _vb$]
-         mov     fc, [esp + _va$]
-        xor     tmpx, 1                 ; culltest ^= 1
-         jmp     Area_Computation
-
-            align 4
-  bca:                          ; bca
-        mov     fa, [esp + _vb$]
-         mov     fb, [esp + _vc$]
-        mov     fc, [esp + _va$]
-         mov     tmpx, [gc + cull_mode] ; culltest = gc->state.cull_mode
-;--------------------------------------------------------------------------        
-            align 4
-Area_Computation:
-; 47-3
-; jmp ret_pop0f
-    flds    [fa + X]            ;  xa
-    fsubs   [fb + X]            ;  dxAB
-    flds    [fb + X]            ;  |    xb
-    fsubs   [fc + X]            ;  |    dxBC
-    flds    [fb + Y]            ;  |    |    yb
-    fsubs   [fc + Y]            ;  |    |    dyBC
-    flds    [fa + Y]            ;  |    |    |    ya
-    fsubs   [fb + Y]            ;  |    |    |    dyAB
-    fld     st(3)               ;  |    |    |    |    dxAB
-    fmul    st, st(2)           ;  |    |    |    |    t0         t0=dxAB*dyBC
-    fld     st(3)               ;  |    |    |    |    |    dxBC
-    fmul    st, st(2)           ;  |    |    |    |    |    t1    t1=dxBC*dyAB
-    fsubp   st(1),st            ;  |    |    |    |    area
-
-    fst     zArea               ;  |    |    |    |    area
-
-    ; Zero Area Triangle Check
-    mov     tmpy, zArea        ; j = *(long *)&area
-    and     tmpy, 7fffffffh    ; if ((j & 0x7FFFFFFF) == 0)
-    jz      zero_area
-
-    ; Cull Check
-    sal     tmpx, 31                    ; culltest<<31
-     mov     tmpy, [gc + cull_mode]     ; load gc->state.cull_mode
-    test    tmpy, tmpy                  ; if (gc->state.cull_mode != GR_CULL_DISABLE)
-     je      nocull1
-                                        ; culling ENABLED
-    mov     tmpy, zArea                 ; reload area
-    xor     tmpy,tmpx                   ; if (j ^ (culltest<<31))
-    jge     backfaced
-
-nocull1:                        ; culling disabled
-    ; OOA Calculation
-    fdivr   One                 ;  |    |    |    |    ooa
-
-    ; Fetch Fifo Ptr
-    mov     fifo, [gc + fifoPtr];
-
-    ; P6 Check
-    mov     tmpx, [_GlideRoot + CPUType]
-    cmp     tmpx, 6h
-    
-    je     fence
-
-        align 4
-fenceDone:  
-    ; Wrap Check
-    mov     tmpx, [_GlideRoot + curTriSize]
-    mov     tmpy, [gc + fifoSize]
-
-    sub     tmpy, tmpx
-    jl      wrap
-
-        align 4
-wrapDone:
-    mov     [gc + fifoSize], tmpy
-    ; Adjust Fifo Ptr
-    mov     tmpy, fifo
-    add     tmpy, tmpx
-    mov     [gc + fifoPtr], tmpy
-
-    ; Begin Tri Packet
-    mov     tmpx, [gc + gwCommand]
-    mov     tmpy, [gc + gwHeaders]
-
-    GR_SET_GW_CMD    fifo, 0, tmpx
-    GR_SET_GW_HEADER fifo, 4, tmpy
-
-    ; Download X, Y * 3
-    mov     tmpx, [fa + X]
-    mov     tmpy, [fa + Y]
-
-    GR_SET_GW_ENTRY fifo, 8,  tmpx
-    GR_SET_GW_ENTRY fifo, 12, tmpy
-
-    mov     tmpx, [fb + X]
-    mov     tmpy, [fb + Y]
-
-    GR_SET_GW_ENTRY fifo, 16, tmpx
-    GR_SET_GW_ENTRY fifo, 20, tmpy
-
-    mov     tmpx, [fc + X]
-    mov     tmpy, [fc + Y]
-
-    GR_SET_GW_ENTRY fifo, 24, tmpx
-    GR_SET_GW_ENTRY fifo, 28, tmpy
-
-    add     fifo, 32
-
-    mov     i, [gc+dataList]            ; i = gc->datalist[0]->i
-    add     dlp, dataList               ; dlp = gc->dataList
-
-    ; Early out for no interp
-    test    i, i
-    je      no_interpolation
-
-    ; Setup for Parameter Calculator
-                                ;   dxAB  dxBC  dyBC  dyAB  ooa
-    fmul    st(4), st           ;   DXAB  |     |     |     |
-    fmul    st(3), st           ;   |     DXBC  |     |     |
-    fmul    st(2), st           ;   |     |     DYBC  |     |
-    fmulp   st(1), st           ;   |     |     |     DYAB
-     fxch    st(3)              ;   DYAB  |     |     DXAB  
-    fstp    zdxAB               ;   |     |     DYBC
-    fstp    zdyBC               ;   |     DXBC
-    fstp    zdxBC               ;   DYAB
-    fstp    zdyAB               ;
-
-    ; Parameter Calculator
-        align 4
-next_parm:
-    test    i,1
-    jnz     secondary_packet
-
-    mov     tmpy, [fa + i]              ; tmpy = fa[i]
-    flds    [fa + i]                    ;   pa
-    fsubs   [fb + i]                    ;   dpAB
-    flds    [fb + i]                    ;   |    pb
-    fsubs   [fc + i]                    ;   dpAB dpBC 
-
-    fld     st(1)                       ;   |    |    dpAB   
-    fmuls   zdyBC                       ;   |    |    p0x
-    fld     st(1)                       ;   |    |    |    dpBC
-    fmuls   zdyAB                       ;   |    |    |    p1x
-     fxch    st(3)                      ;   p1x  |    |    dpAB
-
-    GR_SET_GW_ENTRY fifo, 0, tmpy       ;   |    |    |    |
-    fmuls   zdxBC                       ;   |    |    |    p1y
-     fxch    st(2)                      ;   |    p1y  |    dpBC
-    fmuls   zdxAB                       ;   |    |    |    p0y
-     fxch    st(3)                      ;   p0y  |    |    p1x
-    fsubp   st(1),st                    ;   |    |    dpdx
-     fxch    st(2)                      ;   dpdx |    p0y
-    fsubrp  st(1),st                    ;   |    dpdy
-     fxch    st(1)                      ;   dpdy dpdx
-    mov     i, [dlp + SIZEOF_dataList + dl_i] ; i = dlp[1]->i
-     add     dlp, SIZEOF_dataList       ; dlp++;
- 
-    GR_FSET_GW_ENTRY fifo, 4            ;   |
-
-    GR_FSET_GW_ENTRY fifo, 8            ;   empty
-    add     fifo, 12
-    test    i,i                         ; while (i)
-     jne     next_parm                  ; 
-
-        align 4
-triangle_command:
-    ; Write Triangle Command
-    mov     tmpx, zArea
-    GR_SET_GW_ENTRY fifo, 0, tmpx
-    test    fifo, 7h
-    jnz     no_padding0
-    GR_SET_GW_ENTRY fifo, 4, tmpx
-no_padding0:
-    ; Cleanup
-    pop     ebp
-     pop     edi
-    pop     esi
-     pop     ebx
-    mov     eax, 1h                     ; return 1 (triangle drawn)
-     ret    12       
-    
-
-        align 4
-zero_area:
-backfaced:
-    fstp    st(0)   ; 4
-    fstp    st(0)   ; 3
-    fstp    st(0)   ; 2
-    fstp    st(0)   ; 1
-    fstp    st(0)   ; 0
-    pop     ebp
-     pop     edi
-    pop     esi
-     pop     ebx
-    xor     eax, eax                    ; return 0 (triangle drawn)
-     ret    12       
-
-        align 4
-wrap:
-    push    eax
-    push    ecx
-    push    edx
-    call    _grSst96FifoMakeRoom
-    pop     edx
-    pop     ecx
-    pop     eax
-    mov     fifo, [gc + fifoPtr]
-    mov     tmpy, [gc + fifoSize]
-    sub     tmpy, tmpx
-    jmp     wrapDone
-
-        align 4
-fence:
-    mov     tmpx, [gc + writesSinceFence];
-    mov     tmpy, [_GlideRoot + curTriSize]
-    
-    shr     tmpy, 2
-    sub     tmpx, tmpy
-    jl      dofence
-
-    mov     [gc + writesSinceFence], tmpx
-    jmp     fenceDone
-
-        align 4
-dofence:
-    push    eax
-    xchg    eax, P6FenceVar
-    pop     eax
-    jmp     fenceDone
-
-        align 4
-secondary_packet:
-    test    fifo, 7h
-    jz      no_padding1
-    GR_SET_GW_ENTRY  fifo, 0, tmpx 
-    add     fifo, 4
-        align 4
-no_padding1:
-    push    tmpx
-    push    gc
-    
-    mov     tmpx, [dlp + dl_addr]
-    mov     gc,   [_GlideRoot + curGC]
-
-    GR_SET_GW_CMD  fifo, 0, tmpx
-    mov     tmpy, [gc + gwHeaders + 4]  
-    
-    GR_SET_GW_HEADER fifo, 4, tmpy
-    pop     gc
-
-    pop     tmpx
-    add     fifo, 8
-
-    mov     i, [dlp + SIZEOF_dataList + dl_i]
-     add    dlp, SIZEOF_dataList
-        align 4
-next_parm_1:
-    mov     tmpy, [fa + i]              ; tmpy = fa[i]
-    flds    [fa + i]                    ;   pa
-    fsubs   [fb + i]                    ;   dpAB
-    flds    [fb + i]                    ;   |    pb
-    fsubs   [fc + i]                    ;   dpAB dpBC 
-
-    fld     st(1)                       ;   |    |    dpAB   
-    fmuls   zdyBC                       ;   |    |    p0x
-    fld     st(1)                       ;   |    |    |    dpBC
-    fmuls   zdyAB                       ;   |    |    |    p1x
-     fxch    st(3)                      ;   p1x  |    |    dpAB
-
-    GR_SET_GW_ENTRY fifo, 0, tmpy       ;   |    |    |    |
-    fmuls   zdxBC                       ;   |    |    |    p1y
-     fxch    st(2)                      ;   |    p1y  |    dpBC
-    fmuls   zdxAB                       ;   |    |    |    p0y
-     fxch    st(3)                      ;   p0y  |    |    p1x
-    fsubp   st(1),st                    ;   |    |    dpdx
-     fxch    st(2)                      ;   dpdx |    p0y
-    fsubrp  st(1),st                    ;   |    dpdy
-     fxch    st(1)                      ;   dpdy dpdx
-    mov     i, [dlp + SIZEOF_dataList + dl_i] ; i = dlp[1]->i
-     add     dlp, SIZEOF_dataList       ; dlp++;
-
-    GR_FSET_GW_ENTRY fifo, 4            ;   |
-
-    GR_FSET_GW_ENTRY fifo, 8            ;   empty
-    add     fifo, 12
-    test    i,i                         ; while (i)
-    jne     next_parm_1;
-
-    test    fifo, 7h
-    jz      triangle_command_packet
-    GR_SET_GW_ENTRY fifo, 0, tmpx
-    add     fifo, 4
-        align 4
-triangle_command_packet:
-    mov     gc, [_GlideRoot + curGC]
-    mov     tmpy, 40000000h
-
-    mov     tmpx, [gc + gwCommand]
-    mov     fa, zArea
-
-    GR_SET_GW_CMD    fifo, 0, tmpx
-    GR_SET_GW_HEADER fifo, 4, tmpy
-
-    GR_SET_GW_ENTRY  fifo, 8,  fa
-    GR_SET_GW_ENTRY  fifo, 12, fa
-
-    pop     ebp
-     pop     edi
-    pop     esi
-     pop     ebx
-    mov     eax, 1h                     ; return 1 (triangle drawn)
-     ret    12       
-
-        align 4
-no_interpolation:
-    fstp    st(0)     ; 4
-    fstp    st(0)     ; 3 
-    fstp    st(0)     ; 2 
-    fstp    st(0)     ; 1 
-    fstp    st(0)     ; 0
-    jmp     triangle_command
-
-_trisetup_asm@12 ENDP
-
-; [++++ from above]
-; This comment was moved here to make the code in the loop more readable 
-; STALL HERE due to PCI write buffer being full on last instruction:        
-; The write to the packerHackAddress takes 3 bus clocks, during which
-; we may not write to the PCI buffer without stalling.  This causes
-; the amount of clocks the workaround adds to the loop to vary in the
-; following way++:
-; 
-;    CPU          Bus/CPU Clock     Total Bus       Total Penalty
-;                     Ratio*      Clocks Since   (add to later clocks)
-;======================================================================  
-; P55c-200/P5-180:    6/1              1.3       (3 - 1.3) * 6 + 6 = 17 
-; P5-166/P5-150:      5/1              1.8       (3 - 1.8) * 5 + 6 = 12 
-; P5-120:             4/1              2.25      (3 - 2.25) * 4 + 6 = 9 
-; P5-100/P5-90:       3/1               3        (3 - 3) * 3 + 6 = 6
-;
-; * P5-200 haa a 33MHz bus, P5-166 has a 33MHz bus, 
-;   P5-150 has a 30MHz bus, P5-120 has a 30MHz bus,
-;   P5-100 has a 33MHz bus, P5-90 has a 30MHz bus
-;
-;++ These calculations also assume that we NEVER get to continue a burst 
-;   from having the next parameter be consecutive from the current one.
-;   If we did get that, then we have to add two more bus clocks to the
-;   penalty for the next write (labeled loop clock 10), so that looks like
-;      CPU                  Total Penalty
-;      ============================================        
-;      P55c-200/P5-180:(2 * 6) + 17 = 29 clocks!!!
-;      P5-166/P5-150:  (2 * 5) + 12 = 22 clocks!!
-;      P5-120:         (2 * 4) +  9 = 17 clocks!
-;      P5-100/P5-90    (2 * 3) +  6 = 12 clocks    
-;
-
-_TEXT ENDS
-END
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/h3dtst02.c glide2/sst1/glide/tests/h3dtst02.c
--- build-tree.orig/glide2x/sst1/glide/tests/h3dtst02.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/h3dtst02.c	Sat Jul 29 18:16:19 2000
@@ -151,7 +151,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-//        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
           tlGetDimsByConst(resolution,
                            &scrWidth, 
                            &scrHeight );
@@ -160,7 +159,6 @@
 #else
           grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
 #endif
-//        }
 
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/qatest00.c glide2/sst1/glide/tests/qatest00.c
--- build-tree.orig/glide2x/sst1/glide/tests/qatest00.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/qatest00.c	Sat Jul 29 18:16:32 2000
@@ -480,15 +480,6 @@
     tlConRender();
     grBufferSwap( 1 );
 
-    /* dynamic resizing */
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
-
     /* handle any keyboard input */
     while( tlKbHit() )
     {
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/qatest01.c glide2/sst1/glide/tests/qatest01.c
--- build-tree.orig/glide2x/sst1/glide/tests/qatest01.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/qatest01.c	Sat Jul 29 18:16:42 2000
@@ -152,14 +152,6 @@
     }
    
     grBufferSwap( 1 );
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
-
     if ( tlKbHit() ) frames = 0;
   }
   grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER ); 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test00.c glide2/sst1/glide/tests/test00.c
--- build-tree.orig/glide2x/sst1/glide/tests/test00.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test00.c	Sat Jul 29 18:16:48 2000
@@ -111,13 +111,6 @@
     tlConRender();
     grBufferSwap( 1 );
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
     /* grab the frame buffer */
     if (scrgrab) {
       if (!tlScreenDump(filename, (FxU16)scrWidth, (FxU16)scrHeight))
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test01.c glide2/sst1/glide/tests/test01.c
--- build-tree.orig/glide2x/sst1/glide/tests/test01.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test01.c	Sat Jul 29 18:16:52 2000
@@ -114,13 +114,6 @@
     int i;
     GrVertex vtx;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    } 
     grBufferClear( 0x0, 0, GR_WDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test02.c glide2/sst1/glide/tests/test02.c
--- build-tree.orig/glide2x/sst1/glide/tests/test02.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test02.c	Sat Jul 29 18:16:56 2000
@@ -113,14 +113,6 @@
         int i;
         GrVertex vtxA, vtxB;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution, 
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         for( i = 0; i < 100; i++ ) {
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test03.c glide2/sst1/glide/tests/test03.c
--- build-tree.orig/glide2x/sst1/glide/tests/test03.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test03.c	Sat Jul 29 18:17:00 2000
@@ -110,15 +110,6 @@
     while( frames-- && tlOkToRender() ) {
         GrVertex vtxA, vtxB;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.0f ), vtxA.y = tlScaleY( 0.0f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test04.c glide2/sst1/glide/tests/test04.c
--- build-tree.orig/glide2x/sst1/glide/tests/test04.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test04.c	Sat Jul 29 18:17:04 2000
@@ -110,14 +110,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.3f ), vtxA.y = tlScaleY( 0.3f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test05.c glide2/sst1/glide/tests/test05.c
--- build-tree.orig/glide2x/sst1/glide/tests/test05.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test05.c	Sat Jul 29 18:17:08 2000
@@ -117,13 +117,6 @@
     GrVertex vtxA, vtxB, vtxC;
     float zDist;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-      
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    }
     grBufferClear( 0x00, 0, GR_ZDEPTHVALUE_FARTHEST );
 
     vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test06.c glide2/sst1/glide/tests/test06.c
--- build-tree.orig/glide2x/sst1/glide/tests/test06.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test06.c	Sat Jul 29 18:17:12 2000
@@ -113,14 +113,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float wDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, GR_WDEPTHVALUE_FARTHEST );
 
         vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test07.c glide2/sst1/glide/tests/test07.c
--- build-tree.orig/glide2x/sst1/glide/tests/test07.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test07.c	Sat Jul 29 18:17:16 2000
@@ -118,14 +118,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.25f ), vtxA.y = tlScaleY( 0.21f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test08.c glide2/sst1/glide/tests/test08.c
--- build-tree.orig/glide2x/sst1/glide/tests/test08.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test08.c	Sat Jul 29 18:17:20 2000
@@ -117,14 +117,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float wDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.0f ), vtxA.y = tlScaleY( 0.0f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test09.c glide2/sst1/glide/tests/test09.c
--- build-tree.orig/glide2x/sst1/glide/tests/test09.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test09.c	Sat Jul 29 18:17:24 2000
@@ -122,14 +122,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         switch( chromaColor ) {
         case RED:
             tlConOutput( "Chromakey RED \r" );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test10.c glide2/sst1/glide/tests/test10.c
--- build-tree.orig/glide2x/sst1/glide/tests/test10.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test10.c	Sat Jul 29 18:17:27 2000
@@ -118,14 +118,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         switch( cullMode ) {
         case GR_CULL_POSITIVE:
             tlConOutput( "CULL POSITIVE\r" );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test11.c glide2/sst1/glide/tests/test11.c
--- build-tree.orig/glide2x/sst1/glide/tests/test11.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test11.c	Sat Jul 29 18:17:31 2000
@@ -122,14 +122,6 @@
         GrLfbInfo_t info;
         int startX, startY;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         /* prepare info structure */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test12.c glide2/sst1/glide/tests/test12.c
--- build-tree.orig/glide2x/sst1/glide/tests/test12.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test12.c	Sat Jul 29 18:17:35 2000
@@ -175,14 +175,6 @@
                     "Press any other key to quit\n"
     };
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
     grRenderBuffer( GR_BUFFER_BACKBUFFER );
     grBufferClear( 0, 0, 0 );
     grRenderBuffer( GR_BUFFER_FRONTBUFFER );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test13.c glide2/sst1/glide/tests/test13.c
--- build-tree.orig/glide2x/sst1/glide/tests/test13.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test13.c	Sat Jul 29 18:17:40 2000
@@ -121,14 +121,6 @@
     while( frames-- && tlOkToRender()) {
         GrVertex vtxA, vtxB, vtxC;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00, 0, 0 );
 
         vtxA.x = tlScaleX( 0.5f ), vtxA.y = tlScaleY( 0.1f );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test14.c glide2/sst1/glide/tests/test14.c
--- build-tree.orig/glide2x/sst1/glide/tests/test14.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test14.c	Sat Jul 29 18:17:43 2000
@@ -122,14 +122,6 @@
         GrVertex vtxA, vtxB, vtxC;
         float zDist;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         if ( ( zBias > MAX_ZBIAS ) || 
              ( zBias < MIN_ZBIAS ) ) {
             zDelta = -zDelta;
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test15.c glide2/sst1/glide/tests/test15.c
--- build-tree.orig/glide2x/sst1/glide/tests/test15.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test15.c	Sat Jul 29 18:17:46 2000
@@ -123,14 +123,6 @@
         GrVertex vtxA, vtxB, vtxC;
         int minx, miny, maxx, maxy;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grClipWindow( (int)tlScaleX(0.0f),(int)tlScaleY(0.0f),
                       (int)tlScaleX(1.0f),(int)tlScaleY(1.0f) );
         grBufferClear( BLACK, 0, GR_ZDEPTHVALUE_FARTHEST );
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test16.c glide2/sst1/glide/tests/test16.c
--- build-tree.orig/glide2x/sst1/glide/tests/test16.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test16.c	Sat Jul 29 18:17:50 2000
@@ -122,14 +122,6 @@
         static int render;
         static int frame = 1;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( BLACK, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* Draw 10x10 grid of triangles */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test17.c glide2/sst1/glide/tests/test17.c
--- build-tree.orig/glide2x/sst1/glide/tests/test17.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test17.c	Sat Jul 29 18:17:54 2000
@@ -156,14 +156,6 @@
         GrVertex vtxA, vtxB, vtxC, vtxD;
         static TextureMode textureMode;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         tlConOutput( "Current Texture Mode: %s\r",
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test18.c glide2/sst1/glide/tests/test18.c
--- build-tree.orig/glide2x/sst1/glide/tests/test18.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test18.c	Sat Jul 29 18:17:57 2000
@@ -149,14 +149,6 @@
         GrVertex vtxA, vtxB, vtxC, vtxD;
         int x,y;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
         
         /* Draw 10x10 grid of triangles */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test19.c glide2/sst1/glide/tests/test19.c
--- build-tree.orig/glide2x/sst1/glide/tests/test19.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test19.c	Sat Jul 29 18:18:01 2000
@@ -183,14 +183,6 @@
         static int minify;
         static int bilerp;
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0, 0, GR_ZDEPTHVALUE_FARTHEST );
         
         /*---- 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test20.c glide2/sst1/glide/tests/test20.c
--- build-tree.orig/glide2x/sst1/glide/tests/test20.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test20.c	Sat Jul 29 18:18:05 2000
@@ -169,14 +169,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test21.c glide2/sst1/glide/tests/test21.c
--- build-tree.orig/glide2x/sst1/glide/tests/test21.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test21.c	Sat Jul 29 18:18:08 2000
@@ -209,14 +209,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test22.c glide2/sst1/glide/tests/test22.c
--- build-tree.orig/glide2x/sst1/glide/tests/test22.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test22.c	Sat Jul 29 18:18:12 2000
@@ -187,14 +187,6 @@
         TlVertex3D xfVerts[4];
         TlVertex3D prjVerts[4];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x00404040, 0, GR_ZDEPTHVALUE_FARTHEST );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test23.c glide2/sst1/glide/tests/test23.c
--- build-tree.orig/glide2x/sst1/glide/tests/test23.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test23.c	Sat Jul 29 18:18:16 2000
@@ -148,14 +148,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* 3D Transformations */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test24.c glide2/sst1/glide/tests/test24.c
--- build-tree.orig/glide2x/sst1/glide/tests/test24.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test24.c	Sat Jul 29 18:18:19 2000
@@ -145,14 +145,6 @@
         static TlVertex3D xfVerts[100];
         static TlVertex3D prjVerts[100];
 
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution,
-                           &scrWidth, 
-                           &scrHeight );
-        
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         grBufferClear( 0x0, 0, GR_ZDEPTHVALUE_FARTHEST );
 
         /* 3D Transformations */
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test26.c glide2/sst1/glide/tests/test26.c
--- build-tree.orig/glide2x/sst1/glide/tests/test26.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test26.c	Sat Jul 29 18:18:25 2000
@@ -177,14 +177,6 @@
     if (!tlOkToRender())
       continue;
 
-    if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-      tlGetDimsByConst(resolution,
-                       &scrWidth, 
-                       &scrHeight );
-        
-      grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-    }
-
     grBufferClear( 0x00303030, 0, 0 );
 
 
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/glide/tests/test27.c glide2/sst1/glide/tests/test27.c
--- build-tree.orig/glide2x/sst1/glide/tests/test27.c	Sat Jul 29 18:45:30 2000
--- build-tree/glide2x/sst1/glide/tests/test27.c	Sat Jul 29 18:18:33 2000
@@ -126,12 +126,6 @@
                   60, 30, 0xffffff );
         
         
-        /* deal with dynamic resizing */
-        if (hwconfig.SSTs[0].type == GR_SSTTYPE_SST96) {
-          tlGetDimsByConst(resolution, &scrWidth, &scrHeight);
-          grClipWindow(0, 0, (FxU32) scrWidth, (FxU32) scrHeight);
-        }
-
         tlConOutput( "Press <space> to cycle hardware\n" );
         tlConOutput( "Any other key to quit\n" );
         
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/incsrc/sst.h glide2/sst1/incsrc/sst.h
--- build-tree.orig/glide2x/sst1/incsrc/sst.h	Tue Dec  7 16:49:05 1999
--- build-tree/glide2x/sst1/incsrc/sst.h	Sat Jul 29 18:21:37 2000
@@ -608,7 +608,6 @@
 //----------------- SST chip layout     -----------------------
 // registers are in groups of 8 for easy decode
 typedef struct sstregs {        // THE CHIP
-#ifndef SST96
                                 // EXTERNAL registers
     unsigned long status;       // chip status, Read Only
     unsigned long reserved0;
@@ -745,24 +744,11 @@
 //      CHIP            FBI-REV TMU-REV DEV-ID
 //      SST1-0.6u       1       0       1
 //      SST1-0.5u       2       1       1
-//      SST-96          1       (1)     2
 //
-//      SST96h2 == H2
 //      SST97   == H3
 #define SST_DEVICE_ID_SST1      1
-#define SST_DEVICE_ID_SST96     2
-#define SST_DEVICE_ID_SST96h2   3
 #define SST_DEVICE_ID_SST97     4
 
-
-    unsigned long chromaRange;          // SST-96 specific
-    unsigned long clipLeftRight1;       // SST-96 specific
-    unsigned long clipBottomTop1;       // SST-96 specific
-    unsigned long colBufferSetup;       // SST-96 specific
-    unsigned long auxBufferSetup;       // SST-96 specific
-    unsigned long texChipSel;           // SST-96 specific
-    unsigned long swapPendCmd;          // SST-96 specific
-    unsigned long reservedSST96[9];     // SST-96 specific
     
 // End SST-96 area
 //========================================================================
@@ -780,159 +766,8 @@
     unsigned long nccTable0[12];        // NCC decode tables, bits are packed
     unsigned long nccTable1[12];        // 4 words Y, 4 words I, 4 words Q
 
-#else
-                                /* EXTERNAL registers */
-    unsigned long status;       /* chip status, Read Only */
-    unsigned long reserved001;  /* reserved001 */
-
-    /* Fixed point version */
-    vtxRec vA;                 /* Vertex A,B,C */
-    vtxRec vB;
-    vtxRec vC;
-
-    /* Parameters, X gradients, Y gradients */
-    long r;                     /* 12.12 */
-    long drdx;                  /* 12.12 */
-    long drdy;
-    long g;
-    long dgdx;
-    long dgdy;
-    long b;
-    long dbdx;
-
-    long dbdy;
-    long z;                     /* 20.12 */
-    long dzdx;                  /* 20.12 */
-    long dzdy;                  /* ??? 12.12 */              
-    long a;                     /* 12.12 */
-    long dadx;                  /* 12.12 */
-    long dady;
-    long s;                     /* 14.18 */
-
-    long dsdx;                  /* 14.18 */
-    long dsdy;
-    long t;
-    long dtdx;
-    long dtdy;
-    long w;                     /* 2.30 */
-    long dwdx;                  /* 2.30 */
-    long dwdy;
-
-    unsigned long triangleCMD;  /* execute a triangle command (fixed) */
-    unsigned long reserved021;
-
-    /* Floating point version */
-    vtxRec FvA;
-    vtxRec FvB;
-    vtxRec FvC;
-
-    /* Parameters, X gradients, Y gradients */
-    float Fr;
-    float Fdrdx;
-    float Fdrdy;
-    float Fg;
-    float Fdgdx;
-    float Fdgdy;
-    float Fb;
-    float Fdbdx;
-
-    float Fdbdy;
-    float Fz;
-    float Fdzdx;
-    float Fdzdy;
-    float Fa;
-    float Fdadx;
-    float Fdady;
-    float Fs;
-
-    float Fdsdx;
-    float Fdsdy;
-    float Ft;
-    float Fdtdx;
-    float Fdtdy;
-    float Fw;
-    float Fdwdx;
-    float Fdwdy;
-
-    /* commands except for triangleCMD */
-    unsigned long FtriangleCMD; /* execute a triangle command (float) */
-    unsigned long reserved041;  /* required cmd spacer for SST-96 */
-    unsigned long nopCMD;       /* execute a nop command */
-    unsigned long reserved043;  /* required cmd spacer for SST-96 */
-    unsigned long fastfillCMD;  /* execute a fast fill command */
-    unsigned long reserved045;  /* required cmd spacer for SST-96 */
-    unsigned long swapbufferCMD; /* execute a swapbuffer command */
-    unsigned long reserved047;  /* required cmd spacer for SST-96 */
-                                
-    unsigned long swappendCMD;  /* increment swap pending count */
-    unsigned long reserved049;  /* required cmd spacer for SST-96 */
-    unsigned long reserved04A[6]; /* 0x04A to 0x04F */
-                                
-                                /* state registers */
-    unsigned long fbzColorPath; /* color select and combine */
-    unsigned long fogMode;      /* fog Mode */
-    unsigned long alphaMode;    /* alpha Mode */
-                                unsigned long reserved053;
-    unsigned long fbzMode;      /* color and auxiliary buffer control */
-    unsigned long stipple;      /* 32 bits, MSB masks pixels */
-    unsigned long c0;           /* 8.8.8.8 (ARGB) */
-    unsigned long c1;           /* 8.8.8.8 (ARGB) */
-                                
-    unsigned long fogColor;     /* (8)888 */
-    unsigned long zaColor;      /* 8(8)16 */
-    unsigned long chromaKey;    /* (8)888 */
-    unsigned long chromaRange;  /* Chroma Range compare Values, Modes & Enable */
-    unsigned long reserved05C[4]; /* 0x05C to 0x05F */
-                                
-    unsigned long colBufferSetup; /* color buffer base address, stride, and mode */
-    unsigned long auxBufferSetup; /* auxiliary buffer base address, stride */
-    unsigned long clipLeftRight; /* (6)10(6)10 */
-    unsigned long clipBottomTop; /* (6)10(6)10 */
-    unsigned long clipLeftRight1; /* (6)10(6)10 */
-    unsigned long clipBottomTop1; /* (6)10(6)10 */
-    unsigned long reserved066[10]; /* 0x066 to 0x06F */
-                                
-    unsigned long fogTable[32]; /* 64 entries, 2 per word, 2 bytes each */
-                                
-    unsigned long fbijrInit0;   /* FBIjr Hardware Init 0 - General */
-    unsigned long fbijrInit1;   /* FBIjr Hardware Init 1 - PUMA */
-    unsigned long fbijrInit2;   /* FBIjr Hardware Init 2 - MEM FIFO Setup */
-    unsigned long fbijrInit3;   /* FBIjr Hardware Init 3 - CMD FIFO Setup */
-    unsigned long fbijrInit4;   /* FBIjr Hardware Init 4 - CMD FIFO Entry Count */
-    unsigned long fbijrInit5;   /* FBIjr Hardware Init 5 - CMD FIFO Read Pointer */
-    unsigned long reserved096[10]; /* 0x096 to 0x09F */
-                                
-    unsigned long fbijrVersion; /* FBIjr Version (company, device, & board */
-    struct {                    /* statistic gathering variables */
-      unsigned int fbiPixelsIn; /* Pixel counter (number pixels processed) */
-      unsigned int fbiChromaFail; /* Pixel counter (number pixels failed Chroma test) */
-      unsigned int fbiZfuncFail; /* Pixel counter (number pixels failed Z test) */
-      unsigned int fbiAfuncFail; /* Pixel counter (number pixels failed Alpha test) */
-      unsigned int fbiPixelsOut; /* Pixel counter (number pixels drawn) */
-    } stats;
-    unsigned long reserved0A6[10]; /* 0x0A6 to 0x0AF */
-
-    unsigned long reserved0B0[15];  /* 0x0B0 to 0x0BE */
-    unsigned long texChipSel;       /* Texture Write Chip select */
-
-    /* TMU registers */
-    unsigned long textureMode;      /* texture Mode */
-    unsigned long tLOD;             /* texture LOD settings */
-    unsigned long tDetail;          /* texture detail settings */
-    unsigned long texBaseAddr;      /* current texture base address */
-    unsigned long texBaseAddr1;
-    unsigned long texBaseAddr2;
-    unsigned long texBaseAddr38;
-    unsigned long trexInit0;        /* hardware init bits */
-    unsigned long trexInit1;        /* hardware init bits */
-    unsigned long nccTable0[12];    /* NCC decode tables, bits are packed */
-    unsigned long nccTable1[12];    /* 4 words Y, 4 words I, 4 words Q */
-
-    unsigned long reserved0E1[31];  /* 0x0E1 to 0x0FF */
-#endif
 } Sstregs;
 
-#ifndef SST96
 // Here are the defines for the alternate register mappings
 #define r_ALT           r
 #define drdx_ALT        g
@@ -987,62 +822,6 @@
 #define Fw_ALT          Fdsdy
 #define Fdwdx_ALT       Fdtdy
 #define Fdwdy_ALT       Fdwdy
-#else
-// Here are the defines for the alternate register mappings
-#define r_ALT           r
-#define drdx_ALT        drdx
-#define drdy_ALT        drdy
-#define g_ALT           c
-#define dgdx_ALT        dgdx
-#define dgdy_ALT        dgdy
-#define b_ALT           b
-#define dbdx_ALT        dbdx
-
-#define dbdy_ALT        dbdy
-#define z_ALT           zgdx
-#define dzdx_ALT        dzdx
-#define dzdy_ALT        dzdy
-#define a_ALT           a
-#define dadx_ALT        dadx
-#define dady_ALT        dady
-#define s_ALT           s
-
-#define dsdx_ALT        dsdx
-#define dsdy_ALT        dsdy
-#define t_ALT           t
-#define dtdx_ALT        dtdx
-#define dtdy_ALT        dtdy
-#define w_ALT           w
-#define dwdx_ALT        dwdx
-#define dwdy_ALT        dwdy
-
-#define Fr_ALT          Fr
-#define Fdrdx_ALT       Fdrdx
-#define Fdrdy_ALT       Fdrdy
-#define Fg_ALT          Fg
-#define Fdgdx_ALT       Fdgdx
-#define Fdgdy_ALT       Fdgdy
-#define Fb_ALT          Fb
-#define Fdbdx_ALT       Fdbdx
-
-#define Fdbdy_ALT       Fdbdy
-#define Fz_ALT          Fz
-#define Fdzdx_ALT       Fdzdx
-#define Fdzdy_ALT       Fdzdy
-#define Fa_ALT          Fa
-#define Fdadx_ALT       Fdadx
-#define Fdady_ALT       Fdady
-#define Fs_ALT          Fs
-
-#define Fdsdx_ALT       Fdsdx
-#define Fdsdy_ALT       Fdsdy
-#define Ft_ALT          Ft
-#define Fdtdx_ALT       Fdtdx
-#define Fdtdy_ALT       Fdtdy
-#define Fw_ALT          Fw
-#define Fdwdx_ALT       Fdwdx
-#define Fdwdy_ALT       Fdwdy
-#endif
 
 // Here are the defines for the hardware
 #define GET(s) s
@@ -1075,21 +854,12 @@
 #define SET_2(d,s)      SET (*(&(d)+0x800),s)
 #define SET_2F(d,s)     SETF(*(&(d)+0x800),s)
 
-#ifndef SST96
 #define SST_WRAP(sst,n) ((Sstregs *)((n)*0x4000+(long)(sst)))
 #define SST_CHIP(sst,n) ((Sstregs *)((n)*0x400+(long)(sst)))
 #define SST_TMU(sst,n)  ((Sstregs *)((0x800<<(n))+(long)(sst)))
 #define SST_TREX(sst,n) SST_TMU(sst,n)
 #define SST_LFB_ADDRESS(sst)    (0x400000+(long)(sst))
 #define SST_TEX_ADDRESS(sst)    (0x800000+(long)(sst))
-#else
-#define SST_WRAP(sst,n) ((Sstregs *)(((n) << 12) + ((FxU32) (sst))))
-#define SST_CHIP(sst,n) ((Sstregs *)(((n) << 16) + ((FxU32) (sst))))
-#define SST_TMU(sst,n)  ((Sstregs *)(((n) << 17) + ((FxU32) (sst))))
-#define SST_TREX(sst,n) SST_TMU(sst,n)
-#define SST_LFB_ADDRESS(sst)    (0x000000+(FxU32)(sst))
-#define SST_TEX_ADDRESS(sst)    (0x600000+(FxU32)(sst))
-#endif
 
 extern unsigned long sstMipMapSize[4][16];
 extern unsigned long sstMipMapOffset[4][16];
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/init/initvg/MAKEFILE.new glide2/sst1/init/initvg/MAKEFILE.new
--- build-tree.orig/glide2x/sst1/init/initvg/MAKEFILE.new	Tue Dec  7 16:49:06 1999
--- build-tree/glide2x/sst1/init/initvg/MAKEFILE.new	Sat Jul 29 18:21:44 2000
@@ -26,10 +26,6 @@
 LCOPTS   = -WX
 LCINCS	 = -I$(BUILD_ROOT_SWLIBS)\include -I$(BUILD_ROOT_SST1)\include
 
-!if "$(FX_SST96_PAGE_FIFO)" != "1"
-LCDEFS          = $(LCDEFS) -DSST96_ALT_FIFO_WRAP
-!endif
-
 # sources
 HEADERS	            = sst1init.h gdebug.h
 INSTALL_DESTINATION = $(BUILD_ROOT_SST1)
diff -ruN -x Makefile.in -x configure glide2.orig/sst1/init/initvg/makefile.unix glide2/sst1/init/initvg/makefile.unix
--- build-tree.orig/glide2x/sst1/init/initvg/makefile.unix	Tue Dec  7 16:49:06 1999
--- build-tree/glide2x/sst1/init/initvg/makefile.unix	Sat Jul 29 18:21:50 2000
@@ -26,10 +26,6 @@
 LCOPTS   =
 LCINC    = -I$(BUILD_ROOT_SWLIBS)/include -I$(BUILD_ROOT_SST1)/include
 
-ifeq ($(FX_SST96_PAGE_FIFO),1)
-LCDEFS	+= -DSST96_ALT_FIFO_WRAP
-endif
-
 # sources
 HEADERS	            = sst1init.h gdebug.h
 INSTALL_DESTINATION = $(BUILD_ROOT_SST1)
diff -ruN -x Makefile.in -x configure glide2.orig/swlibs/include/make/napalmbuild.linux glide2/swlibs/include/make/napalmbuild.linux
--- build-tree.orig/swlibs/include/make/napalmbuild.linux	Mon Jul 10 23:28:15 2000
--- build-tree/swlibs/include/make/napalmbuild.linux	Sat Jul 29 18:00:48 2000
@@ -84,7 +84,6 @@
 		echo 'usage: napalmbuild.3dfx [options] [make-options]'
 		echo 'options:'
         echo '--sst1:                           Voodoo Graphics'
-        echo '--sst96:                          Voodoo Rush'
         echo '--cvg:                            Voodoo 2'
         echo '--h3:                             Voodoo Banshee/Voodoo 3'
         echo '--h5:                             The VSA-100 chipset used'
@@ -107,10 +106,6 @@
 		;;
     --sst1)
         export FX_GLIDE_HW=sst1
-        shift
-        ;;
-    --sst96)
-        export FX_GLIDE_HW=sst96
         shift
         ;;
     --cvg)
