Version: 2.53
Release: 7
Group: Libraries
-License: GPL
-Vendor: 3Dfx Interactive Inc.
+License: 3DFX GLIDE Source Code General Public License
Source0: GlideV2.tar.gz
# Source0-md5: a7110232c3d4d888580aaff7919017d2
-URL: http://www.3dfx.com/
+Patch0: glide-gcc4.patch
+Patch1: glide-gasp.patch
+Patch2: glide-cpp.patch
+Patch3: glide-link.patch
+URL: http://glide.sourceforge.net/
%ifarch %{ix86}
BuildRequires: /usr/bin/gasp
%endif
%prep
%setup -q -n GlideV2
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
chmod +x swlibs/include/make/ostype
+%{__rm} glide3x/cvg/init/*.{o,a}
+
+ln glide2x/README README.glide2x
+ln glide3x/README README.glide3x
%build
# Make sure we build for Voodoo2
export FX_GLIDE_HW=cvg
-%{__make} V2 CNODEBUG="%{rpmcflags} %{!?debug:-fomit-frame-pointer -funroll-loops} \
- %{!?debug:-fexpensive-optimizations -ffast-math -DBIG_OPT}"
+%{__make} V2 \
+ CC="%{__cc}" \
+ CNODEBUG="%{rpmcflags} %{!?debug:-fomit-frame-pointer -funroll-loops} \
+ %{!?debug:-fexpensive-optimizations -ffast-math -DBIG_OPT}"
%install
rm -rf $RPM_BUILD_ROOT
# Install Texus
######################################################################
install -m 755 glide2x/swlibs/lib/libtexus.so.1.1 \
- $RPM_BUILD_ROOT%{_libdir}
+ $RPM_BUILD_ROOT%{_libdir}
ln -sf libtexus.so.1 $RPM_BUILD_ROOT%{_libdir}/libtexus.so
install glide3x/cvg/glide3/tests/test00 \
$RPM_BUILD_ROOT%{_bindir}/testGlide3x
+/sbin/ldconfig -n $RPM_BUILD_ROOT%{_libdir}
+
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%doc glide2x/glide_license.txt
+%doc README.glide2x README.glide3x glide_license.txt
%attr(755,root,root) %{_bindir}/texus
%attr(755,root,root) %{_bindir}/test3Dfx
%attr(755,root,root) %{_bindir}/testGlide3x
%attr(755,root,root) %{_bindir}/testGlide2x
%attr(755,root,root) %{_libdir}/libglide.so.2.53
+%attr(755,root,root) %ghost %{_libdir}/libglide.so.2
%attr(755,root,root) %{_libdir}/libglide.so
%attr(755,root,root) %{_libdir}/libglide2x.so
%attr(755,root,root) %{_libdir}/libglide2x.so.2
%attr(755,root,root) %{_libdir}/libglide3.so.3.01
+%attr(755,root,root) %ghost %{_libdir}/libglide3.so.3
%attr(755,root,root) %{_libdir}/libglide3.so
%attr(755,root,root) %{_libdir}/libglide3x.so
%attr(755,root,root) %{_libdir}/libglide3x.so.3
%attr(755,root,root) %{_libdir}/libtexus.so.1.1
+%attr(755,root,root) %ghost %{_libdir}/libtexus.so.1
%attr(755,root,root) %{_libdir}/libtexus.so
--- /dev/null
+--- GlideV2/glide3x/cvg/glide3/src/fxglide.h.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/fxglide.h 2012-01-08 20:16:45.707252884 +0100
+@@ -1417,7 +1417,7 @@
+
+ #ifdef GLIDE3
+ #define GR_STATE_ENTRY(name, type, args) \
+- type _##name## args
++ type _##name args
+ #else
+ #define GR_STATE_ENTRY(name, type, args) \
+ GR_ENTRY(name, type, args)
+@@ -3339,17 +3339,17 @@
+ #endif
+
+ #ifdef GLIDE3_DEBUG
+-#define TEX_INFO(ptr,field) ptr##field
++#define TEX_INFO(ptr,field) ptr.field
+ #define G3_LOD_TRANSLATE(lod) (lod)
+ #define G3_ASPECT_TRANSLATE(aspect) (aspect)
+ #else /* !GLIDE3_DEBUG */
+-#define TEX_INFO(ptr,field) ptr##field##Log2
++#define TEX_INFO(ptr,field) ptr.field##Log2
+ #define G3_LOD_TRANSLATE(lod) (0x8-lod)
+ #define G3_ASPECT_TRANSLATE(aspect) (0x3-(aspect))
+ #endif /* !GLIDE3_DEBUG */
+
+ #else /* !(defined(GLIDE3) && defined(GLIDE3_ALPHA)) */
+-#define TEX_INFO(ptr,field) ptr##field
++#define TEX_INFO(ptr,field) ptr.field
+ #define G3_LOD_TRANSLATE(lod) (lod)
+ #define G3_ASPECT_TRANSLATE(aspect) (aspect)
+ #endif /* !(defined(GLIDE3) && defined(GLIDE3_ALPHA)) */
+--- GlideV2/glide3x/cvg/glide3/src/gsplash.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/gsplash.c 2012-01-08 20:16:33.697252482 +0100
+@@ -298,9 +298,9 @@
+ downloadTexture(Texture *texture, Gu3dfInfo *info)
+ {
+ texture->info.data = info->data;
+- TEX_INFO(texture->info.,smallLod) = info->header.small_lod;
+- TEX_INFO(texture->info.,largeLod) = info->header.large_lod;
+- TEX_INFO(texture->info.,aspectRatio) = info->header.aspect_ratio;
++ TEX_INFO(texture->info,smallLod) = info->header.small_lod;
++ TEX_INFO(texture->info,largeLod) = info->header.large_lod;
++ TEX_INFO(texture->info,aspectRatio) = info->header.aspect_ratio;
+ texture->info.format = info->header.format;
+
+ texture->addr = nextFreeBase;
+--- GlideV2/glide3x/cvg/glide3/src/ditex.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/ditex.c 2012-01-08 20:22:59.743932075 +0100
+@@ -568,9 +568,9 @@
+ FxU32 memrequired;
+
+ GR_CHECK_F( "grTexTextureMemRequired", !info, "invalid info pointer" );
+- memrequired = _grTexTextureMemRequired( G3_LOD_TRANSLATE(TEX_INFO(info->,smallLod)),
+- G3_LOD_TRANSLATE(TEX_INFO(info->,largeLod)),
+- G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio)),
++ memrequired = _grTexTextureMemRequired( G3_LOD_TRANSLATE(TEX_INFO((*info),smallLod)),
++ G3_LOD_TRANSLATE(TEX_INFO((*info),largeLod)),
++ G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio)),
+ info->format,
+ evenOdd );
+
+@@ -635,12 +635,12 @@
+ ---------------------------------------------------------------*/
+ #if defined(GLIDE3) && defined(GLIDE3_ALPHA)
+ #ifdef GLIDE3_DEBUG
+- for( lod = TEX_INFO(info->,largeLod); lod <= TEX_INFO(info->,smallLod); lod++ ) {
++ for( lod = TEX_INFO((*info),largeLod); lod <= TEX_INFO((*info),smallLod); lod++ ) {
+ #else
+- for( lod = TEX_INFO(info->,largeLod); lod >= TEX_INFO(info->,smallLod); lod-- ) {
++ for( lod = TEX_INFO((*info),largeLod); lod >= TEX_INFO((*info),smallLod); lod-- ) {
+ #endif
+ #else
+- for( lod = TEX_INFO(info->,largeLod); lod <= TEX_INFO(info->,smallLod); lod++ ) {
++ for( lod = TEX_INFO((*info),largeLod); lod <= TEX_INFO((*info),smallLod); lod++ ) {
+ #endif
+ /*
+ ** note for glide3 lod translation:
+@@ -649,13 +649,13 @@
+ grTexDownloadMipMapLevel( tmu,
+ startAddress,
+ lod,
+- TEX_INFO(info->,largeLod),
+- TEX_INFO(info->,aspectRatio),
++ TEX_INFO((*info),largeLod),
++ TEX_INFO((*info),aspectRatio),
+ info->format,
+ evenOdd,
+ src_base );
+
+- src_base += _grMipMapHostSize[_gr_aspect_index_table[G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio))]][G3_LOD_TRANSLATE(lod)]
++ src_base += _grMipMapHostSize[_gr_aspect_index_table[G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio))]][G3_LOD_TRANSLATE(lod)]
+ << (info->format>=GR_TEXFMT_16BIT);
+ }
+ } /* grTexDownloadMipMap */
+--- GlideV2/glide3x/cvg/glide3/src/gtex.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/gtex.c 2012-01-09 16:40:49.713045393 +0100
+@@ -980,16 +980,16 @@
+ /*-------------------------------------------------------------
+ Update Texture Unit State
+ -------------------------------------------------------------*/
+- gc->state.tmu_config[tmu].smallLod = G3_LOD_TRANSLATE(TEX_INFO(info->,smallLod));
+- gc->state.tmu_config[tmu].largeLod = G3_LOD_TRANSLATE(TEX_INFO(info->,largeLod));
++ gc->state.tmu_config[tmu].smallLod = G3_LOD_TRANSLATE(TEX_INFO((*info),smallLod));
++ gc->state.tmu_config[tmu].largeLod = G3_LOD_TRANSLATE(TEX_INFO((*info),largeLod));
+ gc->state.tmu_config[tmu].evenOdd = evenOdd;
+
+ /*-------------------------------------------------------------
+ Calculate Base Address
+ -------------------------------------------------------------*/
+ baseAddress = _grTexCalcBaseAddress(startAddress,
+- G3_LOD_TRANSLATE(TEX_INFO(info->,largeLod)),
+- G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio)),
++ G3_LOD_TRANSLATE(TEX_INFO((*info),largeLod)),
++ G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio)),
+ info->format,
+ evenOdd) >> 3;
+ #if (GLIDE_PLATFORM & GLIDE_HW_H3)
+@@ -1016,11 +1016,11 @@
+ tLod = gc->state.tmu_config[tmu].tLOD;
+ tLod &= ~(SST_LODMIN | SST_LODMAX | SST_LOD_ASPECT |
+ SST_LOD_TSPLIT | SST_LOD_ODD | SST_LOD_S_IS_WIDER);
+- tLod |= SST_TLOD_MINMAX_INT(G3_LOD_TRANSLATE(TEX_INFO(info->,largeLod)),
++ tLod |= SST_TLOD_MINMAX_INT(G3_LOD_TRANSLATE(TEX_INFO((*info),largeLod)),
+ gc->state.tmu_config[tmu].mmMode==GR_MIPMAP_DISABLE ?
+- G3_LOD_TRANSLATE(TEX_INFO(info->,largeLod)) : G3_LOD_TRANSLATE(TEX_INFO(info->,smallLod)));
++ G3_LOD_TRANSLATE(TEX_INFO((*info),largeLod)) : G3_LOD_TRANSLATE(TEX_INFO((*info),smallLod)));
+ tLod |= _gr_evenOdd_xlate_table[evenOdd];
+- tLod |= _gr_aspect_xlate_table[G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio))];
++ tLod |= _gr_aspect_xlate_table[G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio))];
+
+ /* Write relevant registers out to hardware */
+ hw = SST_TMU(hw, tmu);
+@@ -1175,7 +1175,7 @@
+ #else
+ G3_LOD_TRANSLATE(GR_LOD_LOG2_256),
+ #endif
+- G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio)),
++ G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio)),
+ info->format,
+ evenOdd) >> 3;
+ GR_SET(tmuChip, hw, texBaseAddr, baseAddress);
+@@ -1189,7 +1189,7 @@
+ #else
+ G3_LOD_TRANSLATE(GR_LOD_LOG2_128),
+ #endif
+- G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio)),
++ G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio)),
+ info->format,
+ evenOdd) >> 3;
+ GR_SET(tmuChip, hw, texBaseAddr1, baseAddress);
+@@ -1203,7 +1203,7 @@
+ #else
+ G3_LOD_TRANSLATE(GR_LOD_LOG2_64),
+ #endif
+- G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio)),
++ G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio)),
+ info->format,
+ evenOdd) >> 3;
+ GR_SET(tmuChip, hw, texBaseAddr2, baseAddress);
+@@ -1217,7 +1217,7 @@
+ #else
+ G3_LOD_TRANSLATE(GR_LOD_LOG2_32),
+ #endif
+- G3_ASPECT_TRANSLATE(TEX_INFO(info->,aspectRatio)),
++ G3_ASPECT_TRANSLATE(TEX_INFO((*info),aspectRatio)),
+ info->format,
+ evenOdd) >> 3;
+ GR_SET(tmuChip, hw, texBaseAddr38, baseAddress);
+--- GlideV2/glide3x/cvg/glide3/src/distate.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/distate.c 2012-01-09 16:50:12.976397585 +0100
+@@ -166,25 +166,25 @@
+ */
+
+ #define STOREARG(function, arg) \
+-gc->state.stateArgs.##function##Args.arg = arg
++gc->state.stateArgs.function##Args.arg = arg
+
+ #define LOADARG(function, arg) \
+-gc->state.stateArgs.##function##Args.arg
++gc->state.stateArgs.function##Args.arg
+
+ #define INVALIDATE(regset) \
+-gc->state.invalid |= ##regset##BIT
++gc->state.invalid |= regset##BIT
+
+ #define NOTVALID(regset) \
+-(gc->state.invalid & ##regset##BIT)
++(gc->state.invalid & regset##BIT)
+
+ #define SETVALID(regset) \
+-(gc->state.invalid &= ~(##regset##BIT))
++(gc->state.invalid &= ~(regset##BIT))
+
+ #define ENABLEMODE(mode) \
+-gc->state.grEnableArgs.##mode## = GR_MODE_ENABLE;
++gc->state.grEnableArgs.mode = GR_MODE_ENABLE;
+
+ #define DISABLEMODE(mode) \
+-gc->state.grEnableArgs.##mode## = GR_MODE_DISABLE;
++gc->state.grEnableArgs.mode = GR_MODE_DISABLE;
+
+ /*-------------------------------------------------------------------
+ Function: grAlphaBlendFunction
--- /dev/null
+--- GlideV2/glide2x/cvg/glide/src/xdraw2.S.orig 2000-04-20 23:26:36.000000000 +0200
++++ GlideV2/glide2x/cvg/glide/src/xdraw2.S 2012-01-08 18:34:13.720380228 +0100
+@@ -128,18 +128,32 @@
+
+ .text
+
++.MACRO GR_FIFO_WRITE __addr __offset __data
++ mov \__data, \__offset(\__addr)
++.ENDM # GR_FIFO_WRITE
++
+ .align 4
+ .globl _trisetup_cull
+ .type _trisetup_cull, @function
+ _trisetup_cull:
+ # .code
+
++EMITNOCULL .ASSIGNA 0
++
+ .MACRO SYMNAME prefix
++.AIF \&EMITNOCULL EQ 0
+ .LCULL\prefix:
++.AELSE
++ .LNOCULL\prefix:
++.AENDI
+ .ENDM
+
+ .MACRO SYMNAMEOP op prefix
++.AIF \&EMITNOCULL EQ 0
+ \op .LCULL\prefix
++.AELSE
++ \op .LNOCULL\prefix
++.AENDI
+ .ENDM
+
+ GLIDE_CULLING .ASSIGNA 1
+@@ -154,13 +168,7 @@
+ .L_end_trisetup_cull:
+ .size _trisetup_cull,.L_end_trisetup_cull-_trisetup_cull
+
+-.MACRO SYMNAME prefix
+- .LNOCULL\prefix:
+-.ENDM
+-
+-.MACRO SYMNAMEOP op prefix
+- \op .LNOCULL\prefix
+-.ENDM
++EMITNOCULL .ASSIGNA 1
+ .AIF \&GLIDE_PACKED_RGB EQ 1
+ .align 4
+ .globl _trisetup_cull_rgb
+--- GlideV2/glide2x/cvg/glide/src/xdraw2.inc.S.orig 2000-04-20 23:26:36.000000000 +0200
++++ GlideV2/glide2x/cvg/glide/src/xdraw2.inc.S 2012-01-08 18:33:24.560378579 +0100
+@@ -155,10 +155,6 @@
+ packCol .REG (%edi)
+ tempVal .REG (%edi)
+
+-.MACRO GR_FIFO_WRITE __addr __offset __data
+- mov \__data, \__offset(\__addr)
+-.ENDM # GR_FIFO_WRITE
+-
+ .align 4
+ SYMNAME __triBegin
+ mov fifoPtr(gc), fifo # Fetch Fifo Ptr
--- /dev/null
+--- GlideV2/glide2x.orig/cvg/glide/tests/display.c
++++ GlideV2/glide2x/cvg/glide/tests/display.c
+@@ -65,6 +65,10 @@ static const char *sourceFormatString[]
+ "GR_LFB_SRC_FMT_ZA16 "
+ };
+
++static void imageConvert( void *dst,
++ void *src,
++ GrLfbSrcFmt_t format,
++ FxU32 *bpp );
+
+ int main( int argc, char **argv)
+ {
+@@ -91,11 +95,6 @@ int main( int argc, char **argv)
+ static FxU32 imageWidth;
+ static FxU32 imageHeight;
+
+- static void imageConvert( void *dst,
+- void *src,
+- GrLfbSrcFmt_t format,
+- FxU32 *bpp );
+-
+ srcfname[0] = 0;
+ dstfname[0] = 0;
+
+--- GlideV2/glide2x.orig/cvg/glide/tests/test26.c
++++ GlideV2/glide2x/cvg/glide/tests/test26.c
+@@ -57,6 +57,10 @@ static const char *sourceFormatString[]
+ "GR_LFB_SRC_FMT_ZA16 "
+ };
+
++static void imageConvert( void *dst,
++ void *src,
++ GrLfbSrcFmt_t format,
++ FxU32 *bpp );
+
+ int main( int argc, char **argv) {
+ char match;
+@@ -80,11 +84,6 @@ int main( int argc, char **argv) {
+ static FxU32 imageWidth;
+ static FxU32 imageHeight;
+
+- static void imageConvert( void *dst,
+- void *src,
+- GrLfbSrcFmt_t format,
+- FxU32 *bpp );
+-
+ /* Process Command Line Arguments */
+ while( (rv = tlGetOpt( argc, argv, "bdnr", &match, &remArgs )) ) {
+ if ( rv == -1 ) {
+--- GlideV2/glide3x.orig/cvg/glide3/tests/display.c
++++ GlideV2/glide3x/cvg/glide3/tests/display.c
+@@ -56,6 +56,10 @@ static const char *sourceFormatString[]
+ "GR_LFB_SRC_FMT_ZA16 "
+ };
+
++static void imageConvert( void *dst,
++ void *src,
++ GrLfbSrcFmt_t format,
++ FxU32 *bpp );
+
+ void main( int argc, char **argv) {
+ char match;
+@@ -81,11 +85,6 @@ void main( int argc, char **argv) {
+ static FxU32 imageWidth;
+ static FxU32 imageHeight;
+
+- static void imageConvert( void *dst,
+- void *src,
+- GrLfbSrcFmt_t format,
+- FxU32 *bpp );
+-
+ srcfname[0] = 0;
+ dstfname[0] = 0;
+
+--- GlideV2/glide3x.orig/cvg/glide3/tests/test26.c
++++ GlideV2/glide3x/cvg/glide3/tests/test26.c
+@@ -48,6 +48,10 @@ static const char *sourceFormatString[]
+ "GR_LFB_SRC_FMT_ZA16 "
+ };
+
++static void imageConvert( void *dst,
++ void *src,
++ GrLfbSrcFmt_t format,
++ FxU32 *bpp );
+
+ void main( int argc, char **argv) {
+ char match;
+@@ -69,11 +73,6 @@ void main( int argc, char **argv) {
+ static FxU32 imageWidth;
+ static FxU32 imageHeight;
+
+- static void imageConvert( void *dst,
+- void *src,
+- GrLfbSrcFmt_t format,
+- FxU32 *bpp );
+-
+ /* Initialize Glide */
+ grGlideInit();
+ assert( hwconfig = tlVoodooType() );
+--- GlideV2/glide3x/cvg/glide3/src/gaa.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/gaa.c 2012-01-09 16:01:27.262966287 +0100
+@@ -572,7 +572,7 @@
+ e = pointers;
+ if (mode)
+ e = *(float **)e;
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ ptX = FARRAY(e, gc->state.vData.vertexInfo.offset);
+ ptY = FARRAY(e, gc->state.vData.vertexInfo.offset+4);
+@@ -673,7 +673,7 @@
+ if (mode)
+ e = *(float **)e;
+ oow = 1.0f / FARRAY(e, gc->state.vData.wInfo.offset);
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ ptX = FARRAY(e, gc->state.vData.vertexInfo.offset)
+ *oow*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
+@@ -790,9 +790,9 @@
+ v1 = *(float **)v1;
+ v2 = *(float **)v2;
+ }
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ if (ltype == GR_LINES)
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ /* draw from low Y to high Y */
+ if (FARRAY(v2, gc->state.vData.vertexInfo.offset+4) < FARRAY(v1, gc->state.vData.vertexInfo.offset+4)) {
+@@ -966,9 +966,9 @@
+ v1 = *(float **)v1;
+ v2 = *(float **)v2;
+ }
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ if (ltype == GR_LINES)
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ owa = oowa = 1.0f / FARRAY(v1, gc->state.vData.wInfo.offset);
+ owb = oowb = 1.0f / FARRAY(v2, gc->state.vData.wInfo.offset);
+ }
+@@ -980,7 +980,7 @@
+ v1 = *(float **)v1;
+ v2 = *(float **)v2;
+ }
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ owb = oowb = 1.0f / FARRAY(v2, gc->state.vData.wInfo.offset);
+ }
+
+@@ -1304,7 +1304,7 @@
+ b = *(float **)b;
+ c = *(float **)c;
+ }
+- (float *)pointers += stride*3;
++ pointers = (float *)pointers + stride*3;
+
+ /* move culling test to here */
+ {
+@@ -1612,7 +1612,7 @@
+ b = *(float **)b;
+ c = *(float **)c;
+ }
+- (float *)pointers += stride*3;
++ pointers = (float *)pointers + stride*3;
+ oowa = 1.0f / FARRAY(a, gc->state.vData.wInfo.offset);
+ oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
+ oowc = 1.0f / FARRAY(c, gc->state.vData.wInfo.offset);
+@@ -1777,7 +1777,7 @@
+ if (type == kSetupFan) {
+ v[0] = (mode == 0) ? pointers : *(float **)pointers;
+ while (sCount--) {
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ if (mode) {
+ v[1] = *(float **)pointers;
+ v[2] = *((float **)pointers+1);
+@@ -1819,7 +1819,7 @@
+ _grAADrawTriangles(1, type, 3, v);
+ else
+ _grAAVpDrawTriangles(1, type, 3, v);
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ flip = ~flip;
+ }
+ flip = ~flip;
+--- GlideV2/glide3x/cvg/glide3/src/gdraw.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/src/gdraw.c 2012-01-09 16:06:50.666310453 +0100
+@@ -457,7 +457,7 @@
+ vPtr = pointers;
+ if (mode) vPtr = *(float **)vPtr;
+
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ GDBG_INFO_MORE(gc->myLevel, "(%f %f)\n",
+ FARRAY(vPtr,gc->state.vData.vertexInfo.offset),
+@@ -546,7 +546,7 @@
+ if (mode)
+ vPtr = *(float **)vPtr;
+ oow = 1.0f / FARRAY(vPtr, gc->state.vData.wInfo.offset);
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ {
+ FxU32 x, y;
+@@ -666,9 +666,9 @@
+ a = *(float **)a;
+ b = *(float **)b;
+ }
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ if (ltype == GR_LINES)
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ /*
+ ** compute absolute deltas and draw from low Y to high Y
+@@ -828,10 +828,10 @@
+ a = *(float **)a;
+ b = *(float **)b;
+ }
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ owa = oowa = 1.0f / FARRAY(a, gc->state.vData.wInfo.offset);
+ owb = oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ }
+ else {
+ owa = oowa = oowb;
+@@ -841,7 +841,7 @@
+ a = *(float **)a;
+ b = *(float **)b;
+ }
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+ owb = oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
+ }
+ fay = tmp1 = FARRAY(a, gc->state.vData.vertexInfo.offset+4)
+@@ -1011,7 +1011,7 @@
+ vPtr = pointers;
+ if (mode)
+ vPtr = *(float **)vPtr;
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ i = gc->tsuDataList[dataElem];
+
+@@ -1051,7 +1051,7 @@
+ *oow*gc->state.Viewport.hwidth + gc->state.Viewport.ox);
+ TRI_SETF(FARRAY(vPtr, 4)
+ *oow*gc->state.Viewport.hheight + gc->state.Viewport.oy);
+- (float *)pointers += stride;
++ pointers = (float *)pointers + stride;
+
+ TRI_VP_SETFS(vPtr,oow);
+ }
+--- GlideV2/glide3x/cvg/glide3/tests/test31.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/tests/test31.c 2012-01-09 17:08:13.793100443 +0100
+@@ -307,12 +307,12 @@
+ packedrgb = !packedrgb;
+ if (packedrgb) {
+ grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_R_OFFSET << 2, GR_PARAM_ENABLE);
+- (FxU32)vtxList[0].r = 0xff0000ff;
+- (FxU32)vtxList[1].r = 0xff00ff00;
+- (FxU32)vtxList[2].r = 0xffff0000;
+- (FxU32)vtxList[3].r = 0xffff0000;
+- (FxU32)vtxList[4].r = 0xff00ff00;
+- (FxU32)vtxList[5].r = 0xff0000ff;
++ *(FxU32*)&vtxList[0].r = 0xff0000ff;
++ *(FxU32*)&vtxList[1].r = 0xff00ff00;
++ *(FxU32*)&vtxList[2].r = 0xffff0000;
++ *(FxU32*)&vtxList[3].r = 0xffff0000;
++ *(FxU32*)&vtxList[4].r = 0xff00ff00;
++ *(FxU32*)&vtxList[5].r = 0xff0000ff;
+ }
+ else {
+ grVertexLayout(GR_PARAM_RGB, GR_VERTEX_R_OFFSET << 2, GR_PARAM_ENABLE);
+--- GlideV2/glide3x/cvg/glide3/tests/test32.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/tests/test32.c 2012-01-09 17:13:56.743111927 +0100
+@@ -449,10 +449,10 @@
+ packedrgb = !packedrgb;
+ if (packedrgb) {
+ grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_R_OFFSET << 2, GR_PARAM_ENABLE);
+- (FxU32)srcVerts[0].r = 0xff0000ff;
+- (FxU32)srcVerts[1].r = 0xff00ff00;
+- (FxU32)srcVerts[2].r = 0xffff0000;
+- (FxU32)srcVerts[3].r = 0xffff0000;
++ *(FxU32*)&srcVerts[0].r = 0xff0000ff;
++ *(FxU32*)&srcVerts[1].r = 0xff00ff00;
++ *(FxU32*)&srcVerts[2].r = 0xffff0000;
++ *(FxU32*)&srcVerts[3].r = 0xffff0000;
+ }
+ else {
+ grVertexLayout(GR_PARAM_RGB, GR_VERTEX_R_OFFSET << 2, GR_PARAM_ENABLE);
+--- GlideV2/glide3x/cvg/glide3/tests/sbench.c.orig 2000-04-20 23:26:39.000000000 +0200
++++ GlideV2/glide3x/cvg/glide3/tests/sbench.c 2012-01-09 17:50:20.359851708 +0100
+@@ -281,11 +281,11 @@
+ 0.5f, 0.5f);
+
+ if (packedrgb) {
+- (FxU32) vPtrArray[v][GR_VERTEX_R_OFFSET] =
++ *(FxU32*) &vPtrArray[v][GR_VERTEX_R_OFFSET] =
+ ((unsigned char) (vPtrArray[v][GR_VERTEX_R_OFFSET]) << 16) |
+ ((unsigned char) (vPtrArray[v][GR_VERTEX_G_OFFSET]) << 8) |
+ ((unsigned char) (vPtrArray[v][GR_VERTEX_B_OFFSET]));
+- (FxU32) vPtrArray[v][GR_VERTEX_R_OFFSET] |= 0xff000000;
++ *(FxU32*) &vPtrArray[v][GR_VERTEX_R_OFFSET] |= 0xff000000;
+ }
+ }
+ } else { /* listType == GR_TRIANGLE_FAN */
+@@ -356,11 +356,11 @@
+ vPtrArray[v][GR_VERTEX_A_OFFSET] = 255.f;
+ }
+ if (packedrgb) {
+- (FxU32) vPtrArray[v][GR_VERTEX_R_OFFSET] =
++ *(FxU32*) &vPtrArray[v][GR_VERTEX_R_OFFSET] =
+ ((unsigned char) (vPtrArray[v][GR_VERTEX_R_OFFSET]) << 16) |
+ ((unsigned char) (vPtrArray[v][GR_VERTEX_G_OFFSET]) << 8) |
+ ((unsigned char) (vPtrArray[v][GR_VERTEX_B_OFFSET]));
+- (FxU32) vPtrArray[v][GR_VERTEX_R_OFFSET] |= 0xff000000;
++ *(FxU32*) &vPtrArray[v][GR_VERTEX_R_OFFSET] |= 0xff000000;
+ }
+ }
+ #endif
--- /dev/null
+--- GlideV2/glide2x/cvg/glide/src/makefile.linux.orig 2000-04-20 23:26:36.000000000 +0200
++++ GlideV2/glide2x/cvg/glide/src/makefile.linux 2012-01-09 17:58:16.809867662 +0100
+@@ -205,6 +205,7 @@
+ SHARED_LIBRARY = libglide.so.2.53
+ endif
+ RCFILE = glide.rc
++LINKLIBRARIES += -lm
+
+ # Make a static link library for things like the diags.
+ ifeq ($(FX_DLL_BUILD),1)