From 7527d11350b3be3e023a83cd3a7590a99aa6a526 Mon Sep 17 00:00:00 2001 From: zilmar Date: Sun, 7 Apr 2013 19:23:46 +1000 Subject: [PATCH] 3rd Party: Added glide SDK --- Source/3rd Party/glide/3DFX.H | 118 ++ Source/3rd Party/glide/FXDLL.H | 125 ++ Source/3rd Party/glide/FXGLOB.H | 30 + Source/3rd Party/glide/FXOS.H | 50 + Source/3rd Party/glide/SST1VID.H | 111 ++ Source/3rd Party/glide/glide.h | 917 ++++++++++++ Source/3rd Party/glide/glidesys.h | 146 ++ Source/3rd Party/glide/glideutl.h | 143 ++ Source/3rd Party/glide/lib/glide3x.lib | Bin 0 -> 77030 bytes Source/3rd Party/glide/sst1init.h | 1840 ++++++++++++++++++++++++ 10 files changed, 3480 insertions(+) create mode 100644 Source/3rd Party/glide/3DFX.H create mode 100644 Source/3rd Party/glide/FXDLL.H create mode 100644 Source/3rd Party/glide/FXGLOB.H create mode 100644 Source/3rd Party/glide/FXOS.H create mode 100644 Source/3rd Party/glide/SST1VID.H create mode 100644 Source/3rd Party/glide/glide.h create mode 100644 Source/3rd Party/glide/glidesys.h create mode 100644 Source/3rd Party/glide/glideutl.h create mode 100644 Source/3rd Party/glide/lib/glide3x.lib create mode 100644 Source/3rd Party/glide/sst1init.h diff --git a/Source/3rd Party/glide/3DFX.H b/Source/3rd Party/glide/3DFX.H new file mode 100644 index 000000000..c7d7ce6b6 --- /dev/null +++ b/Source/3rd Party/glide/3DFX.H @@ -0,0 +1,118 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $Revision: 9 $ +** $Date: 12/23/97 9:57a $ +*/ +#ifndef __3DFX_H__ +#define __3DFX_H__ + +/* +** basic data types +*/ +typedef unsigned char FxU8; +typedef signed char FxI8; +typedef unsigned short FxU16; +typedef signed short FxI16; +typedef signed long FxI32; +typedef unsigned long FxU32; +typedef int FxBool; +typedef float FxFloat; +typedef double FxDouble; + +/* +** color types +*/ +typedef unsigned long FxColor_t; +typedef struct { float r, g, b, a; } FxColor4; + +/* +** fundamental types +*/ +#define FXTRUE 1 +#define FXFALSE 0 + +/* +** helper macros +*/ +#define FXUNUSED( a ) ((void)(a)) +#define FXBIT( i ) ( 1L << (i) ) + +/* +** export macros +*/ + +#if defined(__MSC__) +# if defined (MSVC16) +# define FX_ENTRY +# define FX_CALL +# else +# define FX_ENTRY extern +# define FX_CALL __stdcall +# endif +#elif defined(__WATCOMC__) +# define FX_ENTRY extern +# define FX_CALL __stdcall +#elif defined (__IBMC__) || defined (__IBMCPP__) + /* IBM Visual Age C/C++: */ +# define FX_ENTRY extern +# define FX_CALL __stdcall +#elif defined(__DJGPP__) +# define FX_ENTRY extern +# define FX_CALL +#elif defined(__unix__) +# define FX_ENTRY extern +# define FX_CALL +#elif defined(__MWERKS__) +# if macintosh +# define FX_ENTRY extern +# define FX_CALL +# else /* !macintosh */ +# error "Unknown MetroWerks target platform" +# endif /* !macintosh */ +#else +# warning define FX_ENTRY & FX_CALL for your compiler +# define FX_ENTRY extern +# define FX_CALL +#endif + +/* +** x86 compiler specific stuff +*/ +#if defined(__BORLANDC_) +# define REALMODE + +# define REGW( a, b ) ((a).x.b) +# define REGB( a, b ) ((a).h.b) +# define INT86( a, b, c ) int86(a,b,c) +# define INT86X( a, b, c, d ) int86x(a,b,c,d) + +# define RM_SEG( a ) FP_SEG( a ) +# define RM_OFF( a ) FP_OFF( a ) +#elif defined(__WATCOMC__) +# undef FP_SEG +# undef FP_OFF + +# define REGW( a, b ) ((a).w.b) +# define REGB( a, b ) ((a).h.b) +# define INT86( a, b, c ) int386(a,b,c) +# define INT86X( a, b, c, d ) int386x(a,b,c,d) + +# define RM_SEG( a ) ( ( ( ( FxU32 ) (a) ) & 0x000F0000 ) >> 4 ) +# define RM_OFF( a ) ( ( FxU16 ) (a) ) +#endif + +#endif /* !__3DFX_H__ */ diff --git a/Source/3rd Party/glide/FXDLL.H b/Source/3rd Party/glide/FXDLL.H new file mode 100644 index 000000000..e0f3b068f --- /dev/null +++ b/Source/3rd Party/glide/FXDLL.H @@ -0,0 +1,125 @@ +/* +** Copyright (c) 1995, 1996, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $Revision: 9 $ +** $Date: 7/24/98 1:37p $ +*/ +/* preprocessor defines for libraries to support DLL creation */ + +/* in header file, use FX_ENTRY return-type FX_CALL function-name ( ... ) */ +/* in source file, use FX_EXPORT return-type FX_CSTYLE function-name (... ) */ + +/* in source file, set FX_DLL_DEFINITION, include this file, then include + header file for library. */ + +/* we need to use two macros per declaration/definition because MSVC + requires __stdcall and __declspec( dllexport ) be in different parts + of the prototype! */ + +/* I use two sets in case we need to control declarations and definitions + differently. If it turns out we don't, it should be easy to do a search + and replace to eliminate one set */ + +/* NOTE: this header file may be included more than once, and FX_DLL_DEFINITION + may have changed, so we do not protect this with an #fndef __FXDLL_H__ + statement like we normally would. */ + + +#ifdef FX_ENTRY +#undef FX_ENTRY +#endif + +#ifdef FX_CALL +#undef FX_CALL +#endif + +#ifdef FX_EXPORT +#undef FX_EXPORT +#endif + +#ifdef FX_CSTYLE +#undef FX_CSTYLE +#endif + +#if defined(FX_DLL_DEFINITION) + #if defined(FX_DLL_ENABLE) + #if defined(__MSC__) + #ifndef KERNEL + #define FX_ENTRY __declspec( dllexport ) + #define FX_EXPORT __declspec( dllexport ) + #else + #define FX_ENTRY + #define FX_EXPORT + #endif /* #ifndef KERNEL */ + #define FX_CALL __stdcall + #define FX_CSTYLE __stdcall + + #elif defined(__WATCOMC__) + #define FX_ENTRY + #define FX_CALL __stdcall __export + + #define FX_EXPORT + #define FX_CSTYLE __stdcall __export + + #else /* compiler */ + #error define FX_ENTRY,FX_CALL & FX_EXPORT,FX_CSTYLE for your compiler + #endif /* compiler */ + + #else /* FX_DLL_ENABLE */ + #define FX_ENTRY + #define FX_CALL __stdcall + + #define FX_EXPORT + #define FX_CSTYLE __stdcall + #endif /* FX_DLL_ENABLE */ + +#else /* FX_DLL_DEFINITION */ + #define FX_ENTRY extern + #define FX_CALL __stdcall +#endif /* FX_DLL_DEFINITION */ + +/* + * We don't want any of this DLL junk for DJGPP or UNIX + * so undo what is done above. + */ +#if defined(__DJGPP__) || defined(__unix__) + #ifdef FX_CALL + #undef FX_CALL + #endif + + #ifdef FX_CSTYLE + #undef FX_CSTYLE + #endif + + #ifdef FX_EXPORT + #undef FX_EXPORT + #endif + + #ifdef FX_ENTRY + #undef FX_ENTRY + #endif + + #define FX_CALL + #define FX_CSTYLE + #define FX_EXPORT + #define FX_ENTRY +#endif + +#if defined (MSVC16) + #undef FX_CALL + #define FX_CALL +#endif + diff --git a/Source/3rd Party/glide/FXGLOB.H b/Source/3rd Party/glide/FXGLOB.H new file mode 100644 index 000000000..ff94e994e --- /dev/null +++ b/Source/3rd Party/glide/FXGLOB.H @@ -0,0 +1,30 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $ Revision: $ +** $ Date: $ +** +*/ + + +#ifndef _FXGLOB_H_ +#define _FXGLOB_H_ + + +void fxGlobify( int *argc, char ***argv ); + + +#endif diff --git a/Source/3rd Party/glide/FXOS.H b/Source/3rd Party/glide/FXOS.H new file mode 100644 index 000000000..7e69eb9d0 --- /dev/null +++ b/Source/3rd Party/glide/FXOS.H @@ -0,0 +1,50 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $ Revision: $ +** $ Date: $ +** +*/ + + +#ifndef _FXOS_H_ +#define _FXOS_H_ + +#include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifdef WIN32 +void sleep(int secs); +#define gethostname fxGethostname + +int gethostname(char *name, int namelen); + +# endif + +float fxTime(void); +float timer(int flag); + +FILE *fxFopenPath(const char *filename, const char *mode, + const char *path, const char **pprefix); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/Source/3rd Party/glide/SST1VID.H b/Source/3rd Party/glide/SST1VID.H new file mode 100644 index 000000000..39497b9a2 --- /dev/null +++ b/Source/3rd Party/glide/SST1VID.H @@ -0,0 +1,111 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $Header: /devel/cvg/incsrc/SST1VID.H 6 7/24/98 1:41p Hohn $ +** $Log: /devel/cvg/incsrc/SST1VID.H $ +** +** 6 7/24/98 1:41p Hohn +** +** 5 3/10/98 2:33p Psmith +** separating cvg tree from h3/h4 trees + * + * 4 9/09/97 7:35p Sellers + * Added 400x300 resolution + * + * 3 8/24/97 9:31a Sellers + * moved new video timing to sst1vid.h + * redefined 1600x1280 to be 1600x1200 + * + * 2 6/05/97 11:14p Pgj + * + * 5 7/24/96 3:43p Sellers + * added 512x384 @ 60 Hz for arcade monitors + * added 512x256 @ 60 Hz for arcade monitors + * + * 4 7/18/96 10:58a Sellers + * fixed FT and TF clock delay values for lower frequencies with + * .5/.5 combos + * + * 3 6/18/96 6:54p Sellers + * added sst1InitShutdownSli() to fix Glide Splash screen problems with + * SLI + * + * 2 6/13/96 7:45p Sellers + * added "voodoo.ini" support + * added DirectX support + * misc cleanup + * + * 2 6/11/96 1:43p Sellers + * added support for 60, 75, 85, and 120 Hz refresh rates for "most" + * resolutions + * + * 1 5/08/96 5:43p Paik + * Video definitions +*/ +#ifndef __SST1VID_H__ +#define __SST1VID_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Video defines */ + +typedef FxI32 GrScreenRefresh_t; +#define GR_REFRESH_60Hz 0x0 +#define GR_REFRESH_70Hz 0x1 +#define GR_REFRESH_72Hz 0x2 +#define GR_REFRESH_75Hz 0x3 +#define GR_REFRESH_80Hz 0x4 +#define GR_REFRESH_90Hz 0x5 +#define GR_REFRESH_100Hz 0x6 +#define GR_REFRESH_85Hz 0x7 +#define GR_REFRESH_120Hz 0x8 +#define GR_REFRESH_NONE 0xff + +typedef FxI32 GrScreenResolution_t; +#define GR_RESOLUTION_320x200 0x0 +#define GR_RESOLUTION_320x240 0x1 +#define GR_RESOLUTION_400x256 0x2 +#define GR_RESOLUTION_512x384 0x3 +#define GR_RESOLUTION_640x200 0x4 +#define GR_RESOLUTION_640x350 0x5 +#define GR_RESOLUTION_640x400 0x6 +#define GR_RESOLUTION_640x480 0x7 +#define GR_RESOLUTION_800x600 0x8 +#define GR_RESOLUTION_960x720 0x9 +#define GR_RESOLUTION_856x480 0xa +#define GR_RESOLUTION_512x256 0xb +#define GR_RESOLUTION_1024x768 0xC +#define GR_RESOLUTION_1280x1024 0xD +#define GR_RESOLUTION_1600x1200 0xE +#define GR_RESOLUTION_400x300 0xF +#define GR_RESOLUTION_NONE 0xff + +#ifdef GR_RESOLUTION_MAX +#undef GR_RESOLUTION_MAX +#endif +#ifdef GR_RESOLUTION_MIN +#undef GR_RESOLUTION_MIN +#endif +#define GR_RESOLUTION_MIN GR_RESOLUTION_320x200 +#define GR_RESOLUTION_MAX GR_RESOLUTION_1600x1200 + +#ifdef __cplusplus +} +#endif + +#endif /* __SST1VID_H__ */ diff --git a/Source/3rd Party/glide/glide.h b/Source/3rd Party/glide/glide.h new file mode 100644 index 000000000..3b17c816b --- /dev/null +++ b/Source/3rd Party/glide/glide.h @@ -0,0 +1,917 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +*/ + +/* +** GLIDE.H +** +** The following #defines are relevant when using Glide: +** +** One of the following "platform constants" must be defined during +** compilation: +** +** __DOS__ Defined for 32-bit DOS applications +** __WIN32__ Defined for 32-bit Windows applications +** __sparc__ Defined for Sun Solaris/SunOS +** __linux__ Defined for Linux applications +** __IRIX__ Defined for SGI Irix applications +** +*/ +#ifndef __GLIDE_H__ +#define __GLIDE_H__ + +#include <3dfx.h> +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** ----------------------------------------------------------------------- +** TYPE DEFINITIONS +** ----------------------------------------------------------------------- +*/ +typedef FxU32 GrColor_t; +typedef FxU8 GrAlpha_t; +typedef FxU32 GrMipMapId_t; +typedef FxU8 GrFog_t; +typedef FxU32 GrContext_t; +typedef int (__stdcall *GrProc)(); + +/* +** ----------------------------------------------------------------------- +** CONSTANTS AND TYPES +** ----------------------------------------------------------------------- +*/ +#define GR_NULL_MIPMAP_HANDLE ((GrMipMapId_t) -1) + +#define GR_MIPMAPLEVELMASK_EVEN FXBIT(0) +#define GR_MIPMAPLEVELMASK_ODD FXBIT(1) +#define GR_MIPMAPLEVELMASK_BOTH (GR_MIPMAPLEVELMASK_EVEN | GR_MIPMAPLEVELMASK_ODD ) + +#define GR_LODBIAS_BILINEAR 0.5 +#define GR_LODBIAS_TRILINEAR 0.0 + +typedef FxI32 GrChipID_t; +#define GR_TMU0 0x0 +#define GR_TMU1 0x1 +#define GR_TMU2 0x2 + +#define GR_FBI 0x0 + +typedef FxI32 GrCombineFunction_t; +#define GR_COMBINE_FUNCTION_ZERO 0x0 +#define GR_COMBINE_FUNCTION_NONE GR_COMBINE_FUNCTION_ZERO +#define GR_COMBINE_FUNCTION_LOCAL 0x1 +#define GR_COMBINE_FUNCTION_LOCAL_ALPHA 0x2 +#define GR_COMBINE_FUNCTION_SCALE_OTHER 0x3 +#define GR_COMBINE_FUNCTION_BLEND_OTHER GR_COMBINE_FUNCTION_SCALE_OTHER +#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL 0x4 +#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA 0x5 +#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL 0x6 +#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL 0x7 +#define GR_COMBINE_FUNCTION_BLEND GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL +#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x8 +#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL 0x9 +#define GR_COMBINE_FUNCTION_BLEND_LOCAL GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL +#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x10 + +typedef FxI32 GrCombineFactor_t; +#define GR_COMBINE_FACTOR_ZERO 0x0 +#define GR_COMBINE_FACTOR_NONE GR_COMBINE_FACTOR_ZERO +#define GR_COMBINE_FACTOR_LOCAL 0x1 +#define GR_COMBINE_FACTOR_OTHER_ALPHA 0x2 +#define GR_COMBINE_FACTOR_LOCAL_ALPHA 0x3 +#define GR_COMBINE_FACTOR_TEXTURE_ALPHA 0x4 +#define GR_COMBINE_FACTOR_TEXTURE_RGB 0x5 +#define GR_COMBINE_FACTOR_DETAIL_FACTOR GR_COMBINE_FACTOR_TEXTURE_ALPHA +#define GR_COMBINE_FACTOR_LOD_FRACTION 0x5 +#define GR_COMBINE_FACTOR_ONE 0x8 +#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL 0x9 +#define GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA 0xa +#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA 0xb +#define GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA 0xc +#define GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA +#define GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION 0xd + + +typedef FxI32 GrCombineLocal_t; +#define GR_COMBINE_LOCAL_ITERATED 0x0 +#define GR_COMBINE_LOCAL_CONSTANT 0x1 +#define GR_COMBINE_LOCAL_NONE GR_COMBINE_LOCAL_CONSTANT +#define GR_COMBINE_LOCAL_DEPTH 0x2 + +typedef FxI32 GrCombineOther_t; +#define GR_COMBINE_OTHER_ITERATED 0x0 +#define GR_COMBINE_OTHER_TEXTURE 0x1 +#define GR_COMBINE_OTHER_CONSTANT 0x2 +#define GR_COMBINE_OTHER_NONE GR_COMBINE_OTHER_CONSTANT + + +typedef FxI32 GrAlphaSource_t; +#define GR_ALPHASOURCE_CC_ALPHA 0x0 +#define GR_ALPHASOURCE_ITERATED_ALPHA 0x1 +#define GR_ALPHASOURCE_TEXTURE_ALPHA 0x2 +#define GR_ALPHASOURCE_TEXTURE_ALPHA_TIMES_ITERATED_ALPHA 0x3 + + +typedef FxI32 GrColorCombineFnc_t; +#define GR_COLORCOMBINE_ZERO 0x0 +#define GR_COLORCOMBINE_CCRGB 0x1 +#define GR_COLORCOMBINE_ITRGB 0x2 +#define GR_COLORCOMBINE_ITRGB_DELTA0 0x3 +#define GR_COLORCOMBINE_DECAL_TEXTURE 0x4 +#define GR_COLORCOMBINE_TEXTURE_TIMES_CCRGB 0x5 +#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB 0x6 +#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_DELTA0 0x7 +#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_ADD_ALPHA 0x8 +#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA 0x9 +#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA_ADD_ITRGB 0xa +#define GR_COLORCOMBINE_TEXTURE_ADD_ITRGB 0xb +#define GR_COLORCOMBINE_TEXTURE_SUB_ITRGB 0xc +#define GR_COLORCOMBINE_CCRGB_BLEND_ITRGB_ON_TEXALPHA 0xd +#define GR_COLORCOMBINE_DIFF_SPEC_A 0xe +#define GR_COLORCOMBINE_DIFF_SPEC_B 0xf +#define GR_COLORCOMBINE_ONE 0x10 + +typedef FxI32 GrAlphaBlendFnc_t; +#define GR_BLEND_ZERO 0x0 +#define GR_BLEND_SRC_ALPHA 0x1 +#define GR_BLEND_SRC_COLOR 0x2 +#define GR_BLEND_DST_COLOR GR_BLEND_SRC_COLOR +#define GR_BLEND_DST_ALPHA 0x3 +#define GR_BLEND_ONE 0x4 +#define GR_BLEND_ONE_MINUS_SRC_ALPHA 0x5 +#define GR_BLEND_ONE_MINUS_SRC_COLOR 0x6 +#define GR_BLEND_ONE_MINUS_DST_COLOR GR_BLEND_ONE_MINUS_SRC_COLOR +#define GR_BLEND_ONE_MINUS_DST_ALPHA 0x7 +#define GR_BLEND_RESERVED_8 0x8 +#define GR_BLEND_RESERVED_9 0x9 +#define GR_BLEND_RESERVED_A 0xa +#define GR_BLEND_RESERVED_B 0xb +#define GR_BLEND_RESERVED_C 0xc +#define GR_BLEND_RESERVED_D 0xd +#define GR_BLEND_RESERVED_E 0xe +#define GR_BLEND_ALPHA_SATURATE 0xf +#define GR_BLEND_PREFOG_COLOR GR_BLEND_ALPHA_SATURATE + +typedef FxI32 GrAspectRatio_t; +#define GR_ASPECT_LOG2_8x1 3 /* 8W x 1H */ +#define GR_ASPECT_LOG2_4x1 2 /* 4W x 1H */ +#define GR_ASPECT_LOG2_2x1 1 /* 2W x 1H */ +#define GR_ASPECT_LOG2_1x1 0 /* 1W x 1H */ +#define GR_ASPECT_LOG2_1x2 -1 /* 1W x 2H */ +#define GR_ASPECT_LOG2_1x4 -2 /* 1W x 4H */ +#define GR_ASPECT_LOG2_1x8 -3 /* 1W x 8H */ + +typedef FxI32 GrBuffer_t; +#define GR_BUFFER_FRONTBUFFER 0x0 +#define GR_BUFFER_BACKBUFFER 0x1 +#define GR_BUFFER_AUXBUFFER 0x2 +#define GR_BUFFER_DEPTHBUFFER 0x3 +#define GR_BUFFER_ALPHABUFFER 0x4 +#define GR_BUFFER_TRIPLEBUFFER 0x5 + +typedef FxI32 GrChromakeyMode_t; +#define GR_CHROMAKEY_DISABLE 0x0 +#define GR_CHROMAKEY_ENABLE 0x1 + +typedef FxI32 GrChromaRangeMode_t; +#define GR_CHROMARANGE_RGB_ALL_EXT 0x0 + +#define GR_CHROMARANGE_DISABLE_EXT 0x00 +#define GR_CHROMARANGE_ENABLE_EXT 0x01 + +typedef FxI32 GrTexChromakeyMode_t; +#define GR_TEXCHROMA_DISABLE_EXT 0x0 +#define GR_TEXCHROMA_ENABLE_EXT 0x1 + +#define GR_TEXCHROMARANGE_RGB_ALL_EXT 0x0 + +typedef FxI32 GrCmpFnc_t; +#define GR_CMP_NEVER 0x0 +#define GR_CMP_LESS 0x1 +#define GR_CMP_EQUAL 0x2 +#define GR_CMP_LEQUAL 0x3 +#define GR_CMP_GREATER 0x4 +#define GR_CMP_NOTEQUAL 0x5 +#define GR_CMP_GEQUAL 0x6 +#define GR_CMP_ALWAYS 0x7 + +typedef FxI32 GrColorFormat_t; +#define GR_COLORFORMAT_ARGB 0x0 +#define GR_COLORFORMAT_ABGR 0x1 + +#define GR_COLORFORMAT_RGBA 0x2 +#define GR_COLORFORMAT_BGRA 0x3 + +typedef FxI32 GrCullMode_t; +#define GR_CULL_DISABLE 0x0 +#define GR_CULL_NEGATIVE 0x1 +#define GR_CULL_POSITIVE 0x2 + +typedef FxI32 GrDepthBufferMode_t; +#define GR_DEPTHBUFFER_DISABLE 0x0 +#define GR_DEPTHBUFFER_ZBUFFER 0x1 +#define GR_DEPTHBUFFER_WBUFFER 0x2 +#define GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS 0x3 +#define GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS 0x4 + +typedef FxI32 GrDitherMode_t; +#define GR_DITHER_DISABLE 0x0 +#define GR_DITHER_2x2 0x1 +#define GR_DITHER_4x4 0x2 + +typedef FxI32 GrFogMode_t; +#define GR_FOG_DISABLE 0x0 +#define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1 +#define GR_FOG_WITH_TABLE_ON_Q 0x2 +#define GR_FOG_WITH_TABLE_ON_W GR_FOG_WITH_TABLE_ON_Q +#define GR_FOG_WITH_ITERATED_Z 0x3 +#define GR_FOG_MULT2 0x100 +#define GR_FOG_ADD2 0x200 + +typedef FxU32 GrLock_t; +#define GR_LFB_READ_ONLY 0x00 +#define GR_LFB_WRITE_ONLY 0x01 +#define GR_LFB_IDLE 0x00 +#define GR_LFB_NOIDLE 0x10 + +typedef FxI32 GrLfbBypassMode_t; +#define GR_LFBBYPASS_DISABLE 0x0 +#define GR_LFBBYPASS_ENABLE 0x1 + +typedef FxI32 GrLfbWriteMode_t; +#define GR_LFBWRITEMODE_565 0x0 /* RGB:RGB */ +#define GR_LFBWRITEMODE_555 0x1 /* RGB:RGB */ +#define GR_LFBWRITEMODE_1555 0x2 /* ARGB:ARGB */ +#define GR_LFBWRITEMODE_RESERVED1 0x3 +#define GR_LFBWRITEMODE_888 0x4 /* RGB */ +#define GR_LFBWRITEMODE_8888 0x5 /* ARGB */ +#define GR_LFBWRITEMODE_RESERVED2 0x6 +#define GR_LFBWRITEMODE_RESERVED3 0x7 +#define GR_LFBWRITEMODE_RESERVED4 0x8 +#define GR_LFBWRITEMODE_RESERVED5 0x9 +#define GR_LFBWRITEMODE_RESERVED6 0xa +#define GR_LFBWRITEMODE_RESERVED7 0xb +#define GR_LFBWRITEMODE_565_DEPTH 0xc /* RGB:DEPTH */ +#define GR_LFBWRITEMODE_555_DEPTH 0xd /* RGB:DEPTH */ +#define GR_LFBWRITEMODE_1555_DEPTH 0xe /* ARGB:DEPTH */ +#define GR_LFBWRITEMODE_ZA16 0xf /* DEPTH:DEPTH */ +#define GR_LFBWRITEMODE_ANY 0xFF + + +typedef FxI32 GrOriginLocation_t; +#define GR_ORIGIN_UPPER_LEFT 0x0 +#define GR_ORIGIN_LOWER_LEFT 0x1 +#define GR_ORIGIN_ANY 0xFF + +typedef struct { + int size; + void *lfbPtr; + FxU32 strideInBytes; + GrLfbWriteMode_t writeMode; + GrOriginLocation_t origin; +} GrLfbInfo_t; + +typedef FxI32 GrLOD_t; +#define GR_LOD_LOG2_256 0x8 +#define GR_LOD_LOG2_128 0x7 +#define GR_LOD_LOG2_64 0x6 +#define GR_LOD_LOG2_32 0x5 +#define GR_LOD_LOG2_16 0x4 +#define GR_LOD_LOG2_8 0x3 +#define GR_LOD_LOG2_4 0x2 +#define GR_LOD_LOG2_2 0x1 +#define GR_LOD_LOG2_1 0x0 + +typedef FxI32 GrMipMapMode_t; +#define GR_MIPMAP_DISABLE 0x0 /* no mip mapping */ +#define GR_MIPMAP_NEAREST 0x1 /* use nearest mipmap */ +#define GR_MIPMAP_NEAREST_DITHER 0x2 /* GR_MIPMAP_NEAREST + LOD dith */ + +typedef FxI32 GrSmoothingMode_t; +#define GR_SMOOTHING_DISABLE 0x0 +#define GR_SMOOTHING_ENABLE 0x1 + +typedef FxI32 GrTextureClampMode_t; +#define GR_TEXTURECLAMP_WRAP 0x0 +#define GR_TEXTURECLAMP_CLAMP 0x1 +#define GR_TEXTURECLAMP_MIRROR_EXT 0x2 + +typedef FxI32 GrTextureCombineFnc_t; +#define GR_TEXTURECOMBINE_ZERO 0x0 /* texout = 0 */ +#define GR_TEXTURECOMBINE_DECAL 0x1 /* texout = texthis */ +#define GR_TEXTURECOMBINE_OTHER 0x2 /* this TMU in passthru mode */ +#define GR_TEXTURECOMBINE_ADD 0x3 /* tout = tthis + t(this+1) */ +#define GR_TEXTURECOMBINE_MULTIPLY 0x4 /* texout = tthis * t(this+1) */ +#define GR_TEXTURECOMBINE_SUBTRACT 0x5 /* Sutract from upstream TMU */ +#define GR_TEXTURECOMBINE_DETAIL 0x6 /* detail--detail on tthis */ +#define GR_TEXTURECOMBINE_DETAIL_OTHER 0x7 /* detail--detail on tthis+1 */ +#define GR_TEXTURECOMBINE_TRILINEAR_ODD 0x8 /* trilinear--odd levels tthis*/ +#define GR_TEXTURECOMBINE_TRILINEAR_EVEN 0x9 /*trilinear--even levels tthis*/ +#define GR_TEXTURECOMBINE_ONE 0xa /* texout = 0xFFFFFFFF */ + +typedef FxI32 GrTextureFilterMode_t; +#define GR_TEXTUREFILTER_POINT_SAMPLED 0x0 +#define GR_TEXTUREFILTER_BILINEAR 0x1 + +typedef FxI32 GrTextureFormat_t; +#define GR_TEXFMT_8BIT 0x0 +#define GR_TEXFMT_RGB_332 GR_TEXFMT_8BIT +#define GR_TEXFMT_YIQ_422 0x1 +#define GR_TEXFMT_ALPHA_8 0x2 /* (0..0xFF) alpha */ +#define GR_TEXFMT_INTENSITY_8 0x3 /* (0..0xFF) intensity */ +#define GR_TEXFMT_ALPHA_INTENSITY_44 0x4 +#define GR_TEXFMT_P_8 0x5 /* 8-bit palette */ +#define GR_TEXFMT_RSVD0 0x6 +#define GR_TEXFMT_RSVD1 0x7 +#define GR_TEXFMT_16BIT 0x8 +#define GR_TEXFMT_ARGB_8332 GR_TEXFMT_16BIT +#define GR_TEXFMT_AYIQ_8422 0x9 +#define GR_TEXFMT_RGB_565 0xa +#define GR_TEXFMT_ARGB_1555 0xb +#define GR_TEXFMT_ARGB_4444 0xc +#define GR_TEXFMT_ALPHA_INTENSITY_88 0xd +#define GR_TEXFMT_AP_88 0xe /* 8-bit alpha 8-bit palette */ +#define GR_TEXFMT_RSVD2 0xf + +typedef FxU32 GrTexTable_t; +#define GR_TEXTABLE_NCC0 0x0 +#define GR_TEXTABLE_NCC1 0x1 +#define GR_TEXTABLE_PALETTE 0x2 +#define GR_TEXTABLE_PALETTE_6666_EXT 0x3 + +typedef FxU32 GrNCCTable_t; +#define GR_NCCTABLE_NCC0 0x0 +#define GR_NCCTABLE_NCC1 0x1 + +typedef FxU32 GrTexBaseRange_t; +#define GR_TEXBASE_256 0x3 +#define GR_TEXBASE_128 0x2 +#define GR_TEXBASE_64 0x1 +#define GR_TEXBASE_32_TO_1 0x0 + + +typedef FxU32 GrEnableMode_t; +#define GR_MODE_DISABLE 0x0 +#define GR_MODE_ENABLE 0x1 + +#define GR_AA_ORDERED 0x01 +#define GR_ALLOW_MIPMAP_DITHER 0x02 +#define GR_PASSTHRU 0x03 +#define GR_SHAMELESS_PLUG 0x04 +#define GR_VIDEO_SMOOTHING 0x05 + +typedef FxU32 GrCoordinateSpaceMode_t; +#define GR_WINDOW_COORDS 0x00 +#define GR_CLIP_COORDS 0x01 + +/* Types of data in strips */ +#define GR_FLOAT 0 +#define GR_U8 1 + +/* Parameters for strips */ +#define GR_PARAM_XY 0x01 +#define GR_PARAM_Z 0x02 +#define GR_PARAM_W 0x03 +#define GR_PARAM_Q 0x04 +#define GR_PARAM_FOG_EXT 0x05 + +#define GR_PARAM_A 0x10 + +#define GR_PARAM_RGB 0x20 + +#define GR_PARAM_PARGB 0x30 + +#define GR_PARAM_ST0 0x40 +#define GR_PARAM_ST1 GR_PARAM_ST0+1 +#define GR_PARAM_ST2 GR_PARAM_ST0+2 + +#define GR_PARAM_Q0 0x50 +#define GR_PARAM_Q1 GR_PARAM_Q0+1 +#define GR_PARAM_Q2 GR_PARAM_Q0+2 + +#define GR_PARAM_DISABLE 0x00 +#define GR_PARAM_ENABLE 0x01 + +/* +** grDrawVertexArray/grDrawVertexArrayContiguous primitive type +*/ +#define GR_POINTS 0 +#define GR_LINE_STRIP 1 +#define GR_LINES 2 +#define GR_POLYGON 3 +#define GR_TRIANGLE_STRIP 4 +#define GR_TRIANGLE_FAN 5 +#define GR_TRIANGLES 6 +#define GR_TRIANGLE_STRIP_CONTINUE 7 +#define GR_TRIANGLE_FAN_CONTINUE 8 + +/* +** grGet/grReset types +*/ +#define GR_BITS_DEPTH 0x01 +#define GR_BITS_RGBA 0x02 +#define GR_FIFO_FULLNESS 0x03 +#define GR_FOG_TABLE_ENTRIES 0x04 +#define GR_GAMMA_TABLE_ENTRIES 0x05 +#define GR_GLIDE_STATE_SIZE 0x06 +#define GR_GLIDE_VERTEXLAYOUT_SIZE 0x07 +#define GR_IS_BUSY 0x08 +#define GR_LFB_PIXEL_PIPE 0x09 +#define GR_MAX_TEXTURE_SIZE 0x0a +#define GR_MAX_TEXTURE_ASPECT_RATIO 0x0b +#define GR_MEMORY_FB 0x0c +#define GR_MEMORY_TMU 0x0d +#define GR_MEMORY_UMA 0x0e +#define GR_NUM_BOARDS 0x0f +#define GR_NON_POWER_OF_TWO_TEXTURES 0x10 +#define GR_NUM_FB 0x11 +#define GR_NUM_SWAP_HISTORY_BUFFER 0x12 +#define GR_NUM_TMU 0x13 +#define GR_PENDING_BUFFERSWAPS 0x14 +#define GR_REVISION_FB 0x15 +#define GR_REVISION_TMU 0x16 +#define GR_STATS_LINES 0x17 /* grGet/grReset */ +#define GR_STATS_PIXELS_AFUNC_FAIL 0x18 +#define GR_STATS_PIXELS_CHROMA_FAIL 0x19 +#define GR_STATS_PIXELS_DEPTHFUNC_FAIL 0x1a +#define GR_STATS_PIXELS_IN 0x1b +#define GR_STATS_PIXELS_OUT 0x1c +#define GR_STATS_PIXELS 0x1d /* grReset */ +#define GR_STATS_POINTS 0x1e /* grGet/grReset */ +#define GR_STATS_TRIANGLES_IN 0x1f +#define GR_STATS_TRIANGLES_OUT 0x20 +#define GR_STATS_TRIANGLES 0x21 /* grReset */ +#define GR_SWAP_HISTORY 0x22 +#define GR_SUPPORTS_PASSTHRU 0x23 +#define GR_TEXTURE_ALIGN 0x24 +#define GR_VIDEO_POSITION 0x25 +#define GR_VIEWPORT 0x26 +#define GR_WDEPTH_MIN_MAX 0x27 +#define GR_ZDEPTH_MIN_MAX 0x28 +#define GR_VERTEX_PARAMETER 0x29 +#define GR_BITS_GAMMA 0x2a + +/* +** grGetString types +*/ +#define GR_EXTENSION 0xa0 +#define GR_HARDWARE 0xa1 +#define GR_RENDERER 0xa2 +#define GR_VENDOR 0xa3 +#define GR_VERSION 0xa4 + +/* +** ----------------------------------------------------------------------- +** STRUCTURES +** ----------------------------------------------------------------------- +*/ + +typedef struct { + GrLOD_t smallLodLog2; + GrLOD_t largeLodLog2; + GrAspectRatio_t aspectRatioLog2; + GrTextureFormat_t format; + void *data; +} GrTexInfo; + +typedef struct GrSstPerfStats_s { + FxU32 pixelsIn; /* # pixels processed (minus buffer clears) */ + FxU32 chromaFail; /* # pixels not drawn due to chroma key */ + FxU32 zFuncFail; /* # pixels not drawn due to Z comparison */ + FxU32 aFuncFail; /* # pixels not drawn due to alpha comparison */ + FxU32 pixelsOut; /* # pixels drawn (including buffer clears) */ +} GrSstPerfStats_t; + +typedef struct { + GrScreenResolution_t resolution; + GrScreenRefresh_t refresh; + int numColorBuffers; + int numAuxBuffers; +} GrResolution; + +typedef GrResolution GlideResolution; + +#define GR_QUERY_ANY ((FxU32)(~0)) + +typedef FxU32 GrLfbSrcFmt_t; +#define GR_LFB_SRC_FMT_565 0x00 +#define GR_LFB_SRC_FMT_555 0x01 +#define GR_LFB_SRC_FMT_1555 0x02 +#define GR_LFB_SRC_FMT_888 0x04 +#define GR_LFB_SRC_FMT_8888 0x05 +#define GR_LFB_SRC_FMT_565_DEPTH 0x0c +#define GR_LFB_SRC_FMT_555_DEPTH 0x0d +#define GR_LFB_SRC_FMT_1555_DEPTH 0x0e +#define GR_LFB_SRC_FMT_ZA16 0x0f +#define GR_LFB_SRC_FMT_RLE16 0x80 + +#ifdef H3D +#define GR_HINT_H3DENABLE 4 +#undef GR_HINTTYPE_MAX +#define GR_HINTTYPE_MAX 4 +#endif + +/* +** ----------------------------------------------------------------------- +** FUNCTION PROTOTYPES +** ----------------------------------------------------------------------- +*/ +#ifndef FX_GLIDE_NO_FUNC_PROTO +/* +** rendering functions +*/ +FX_ENTRY void FX_CALL +grDrawPoint( const void *pt ); + +FX_ENTRY void FX_CALL +grDrawLine( const void *v1, const void *v2 ); + +FX_ENTRY void FX_CALL +grDrawTriangle( const void *a, const void *b, const void *c ); + +FX_ENTRY void FX_CALL +grVertexLayout(FxU32 param, FxI32 offset, FxU32 mode); + +FX_ENTRY void FX_CALL +grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers); + +FX_ENTRY void FX_CALL +grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride); + +/* +** Antialiasing Functions +*/ + +FX_ENTRY void FX_CALL +grAADrawTriangle( + const void *a, const void *b, const void *c, + FxBool ab_antialias, FxBool bc_antialias, FxBool ca_antialias + ); + +/* +** buffer management +*/ +FX_ENTRY void FX_CALL +grBufferClear( GrColor_t color, GrAlpha_t alpha, FxU32 depth ); + +FX_ENTRY void FX_CALL +grBufferSwap( FxU32 swap_interval ); + +FX_ENTRY void FX_CALL +grRenderBuffer( GrBuffer_t buffer ); + +/* +** error management +*/ +typedef void (*GrErrorCallbackFnc_t)( const char *string, FxBool fatal ); + +FX_ENTRY void FX_CALL +grErrorSetCallback( GrErrorCallbackFnc_t fnc ); + +/* +** SST routines +*/ +FX_ENTRY void FX_CALL +grFinish(void); + +FX_ENTRY void FX_CALL +grFlush(void); + +FX_ENTRY GrContext_t FX_CALL +grSstWinOpen( + FxU32 hWnd, + GrScreenResolution_t screen_resolution, + GrScreenRefresh_t refresh_rate, + GrColorFormat_t color_format, + GrOriginLocation_t origin_location, + int nColBuffers, + int nAuxBuffers); + +FX_ENTRY FxBool FX_CALL +grSstWinClose( GrContext_t context ); + +FX_ENTRY FxBool FX_CALL +grSelectContext( GrContext_t context ); + +FX_ENTRY void FX_CALL +grSstOrigin(GrOriginLocation_t origin); + +FX_ENTRY void FX_CALL +grSstSelect( int which_sst ); + +/* +** Glide configuration and special effect maintenance functions +*/ +FX_ENTRY void FX_CALL +grAlphaBlendFunction( + GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df, + GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df + ); + +FX_ENTRY void FX_CALL +grAlphaCombine( + GrCombineFunction_t function, GrCombineFactor_t factor, + GrCombineLocal_t local, GrCombineOther_t other, + FxBool invert + ); + +FX_ENTRY void FX_CALL +grAlphaControlsITRGBLighting( FxBool enable ); + +FX_ENTRY void FX_CALL +grAlphaTestFunction( GrCmpFnc_t function ); + +FX_ENTRY void FX_CALL +grAlphaTestReferenceValue( GrAlpha_t value ); + +FX_ENTRY void FX_CALL +grChromakeyMode( GrChromakeyMode_t mode ); + +FX_ENTRY void FX_CALL +grChromakeyValue( GrColor_t value ); + +FX_ENTRY void FX_CALL +grClipWindow( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy ); + +FX_ENTRY void FX_CALL +grColorCombine( + GrCombineFunction_t function, GrCombineFactor_t factor, + GrCombineLocal_t local, GrCombineOther_t other, + FxBool invert ); + +FX_ENTRY void FX_CALL +grColorMask( FxBool rgb, FxBool a ); + +FX_ENTRY void FX_CALL +grCullMode( GrCullMode_t mode ); + +FX_ENTRY void FX_CALL +grConstantColorValue( GrColor_t value ); + +FX_ENTRY void FX_CALL +grDepthBiasLevel( FxI32 level ); + +FX_ENTRY void FX_CALL +grDepthBufferFunction( GrCmpFnc_t function ); + +FX_ENTRY void FX_CALL +grDepthBufferMode( GrDepthBufferMode_t mode ); + +FX_ENTRY void FX_CALL +grDepthMask( FxBool mask ); + +FX_ENTRY void FX_CALL +grDisableAllEffects( void ); + +FX_ENTRY void FX_CALL +grDitherMode( GrDitherMode_t mode ); + +FX_ENTRY void FX_CALL +grFogColorValue( GrColor_t fogcolor ); + +FX_ENTRY void FX_CALL +grFogMode( GrFogMode_t mode ); + +FX_ENTRY void FX_CALL +grFogTable( const GrFog_t ft[] ); + +FX_ENTRY void FX_CALL +grLoadGammaTable( FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue); + +FX_ENTRY void FX_CALL +grSplash(float x, float y, float width, float height, FxU32 frame); + +FX_ENTRY FxU32 FX_CALL +grGet( FxU32 pname, FxU32 plength, FxI32 *params ); + +FX_ENTRY const char * FX_CALL +grGetString( FxU32 pname ); + +FX_ENTRY FxI32 FX_CALL +grQueryResolutions( const GrResolution *resTemplate, GrResolution *output ); + +FX_ENTRY FxBool FX_CALL +grReset( FxU32 what ); + +FX_ENTRY GrProc FX_CALL +grGetProcAddress( char *procName ); + +FX_ENTRY void FX_CALL +grEnable( GrEnableMode_t mode ); + +FX_ENTRY void FX_CALL +grDisable( GrEnableMode_t mode ); + +FX_ENTRY void FX_CALL +grCoordinateSpace( GrCoordinateSpaceMode_t mode ); + +FX_ENTRY void FX_CALL +grDepthRange( FxFloat n, FxFloat f ); + +FX_ENTRY void FX_CALL +grViewport( FxI32 x, FxI32 y, FxI32 width, FxI32 height ); + +/* +** texture mapping control functions +*/ +FX_ENTRY FxU32 FX_CALL +grTexCalcMemRequired( + GrLOD_t lodmin, GrLOD_t lodmax, + GrAspectRatio_t aspect, GrTextureFormat_t fmt); + +FX_ENTRY FxU32 FX_CALL +grTexTextureMemRequired( FxU32 evenOdd, + GrTexInfo *info ); + +FX_ENTRY FxU32 FX_CALL +grTexMinAddress( GrChipID_t tmu ); + +FX_ENTRY FxU32 FX_CALL +grTexMaxAddress( GrChipID_t tmu ); + +FX_ENTRY void FX_CALL +grTexNCCTable( GrNCCTable_t table ); + +FX_ENTRY void FX_CALL +grTexSource( GrChipID_t tmu, + FxU32 startAddress, + FxU32 evenOdd, + GrTexInfo *info ); + +FX_ENTRY void FX_CALL +grTexClampMode( + GrChipID_t tmu, + GrTextureClampMode_t s_clampmode, + GrTextureClampMode_t t_clampmode + ); + +FX_ENTRY void FX_CALL +grTexCombine( + GrChipID_t tmu, + GrCombineFunction_t rgb_function, + GrCombineFactor_t rgb_factor, + GrCombineFunction_t alpha_function, + GrCombineFactor_t alpha_factor, + FxBool rgb_invert, + FxBool alpha_invert + ); + +FX_ENTRY void FX_CALL +grTexDetailControl( + GrChipID_t tmu, + int lod_bias, + FxU8 detail_scale, + float detail_max + ); + +FX_ENTRY void FX_CALL +grTexFilterMode( + GrChipID_t tmu, + GrTextureFilterMode_t minfilter_mode, + GrTextureFilterMode_t magfilter_mode + ); + + +FX_ENTRY void FX_CALL +grTexLodBiasValue(GrChipID_t tmu, float bias ); + +FX_ENTRY void FX_CALL +grTexDownloadMipMap( GrChipID_t tmu, + FxU32 startAddress, + FxU32 evenOdd, + GrTexInfo *info ); + +FX_ENTRY void FX_CALL +grTexDownloadMipMapLevel( GrChipID_t tmu, + FxU32 startAddress, + GrLOD_t thisLod, + GrLOD_t largeLod, + GrAspectRatio_t aspectRatio, + GrTextureFormat_t format, + FxU32 evenOdd, + void *data ); + +FX_ENTRY FxBool FX_CALL +grTexDownloadMipMapLevelPartial( GrChipID_t tmu, + FxU32 startAddress, + GrLOD_t thisLod, + GrLOD_t largeLod, + GrAspectRatio_t aspectRatio, + GrTextureFormat_t format, + FxU32 evenOdd, + void *data, + int start, + int end ); + +FX_ENTRY void FX_CALL +grTexDownloadTable( GrTexTable_t type, + void *data ); + +FX_ENTRY void FX_CALL +grTexDownloadTablePartial( GrTexTable_t type, + void *data, + int start, + int end ); + +FX_ENTRY void FX_CALL +grTexMipMapMode( GrChipID_t tmu, + GrMipMapMode_t mode, + FxBool lodBlend ); + +FX_ENTRY void FX_CALL +grTexMultibase( GrChipID_t tmu, + FxBool enable ); + +FX_ENTRY void FX_CALL +grTexMultibaseAddress( GrChipID_t tmu, + GrTexBaseRange_t range, + FxU32 startAddress, + FxU32 evenOdd, + GrTexInfo *info ); + +/* +** linear frame buffer functions +*/ + +FX_ENTRY FxBool FX_CALL +grLfbLock( GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode, + GrOriginLocation_t origin, FxBool pixelPipeline, + GrLfbInfo_t *info ); + +FX_ENTRY FxBool FX_CALL +grLfbUnlock( GrLock_t type, GrBuffer_t buffer ); + +FX_ENTRY void FX_CALL +grLfbConstantAlpha( GrAlpha_t alpha ); + +FX_ENTRY void FX_CALL +grLfbConstantDepth( FxU32 depth ); + +FX_ENTRY void FX_CALL +grLfbWriteColorSwizzle(FxBool swizzleBytes, FxBool swapWords); + +FX_ENTRY void FX_CALL +grLfbWriteColorFormat(GrColorFormat_t colorFormat); + +FX_ENTRY FxBool FX_CALL +grLfbWriteRegion( GrBuffer_t dst_buffer, + FxU32 dst_x, FxU32 dst_y, + GrLfbSrcFmt_t src_format, + FxU32 src_width, FxU32 src_height, + FxBool pixelPipeline, + FxI32 src_stride, void *src_data ); + +FX_ENTRY FxBool FX_CALL +grLfbReadRegion( GrBuffer_t src_buffer, + FxU32 src_x, FxU32 src_y, + FxU32 src_width, FxU32 src_height, + FxU32 dst_stride, void *dst_data ); + +/* +** glide management functions +*/ +FX_ENTRY void FX_CALL +grGlideInit( void ); + +FX_ENTRY void FX_CALL +grGlideShutdown( void ); + +FX_ENTRY void FX_CALL +grGlideGetState( void *state ); + +FX_ENTRY void FX_CALL +grGlideSetState( const void *state ); + +FX_ENTRY void FX_CALL +grGlideGetVertexLayout( void *layout ); + +FX_ENTRY void FX_CALL +grGlideSetVertexLayout( const void *layout ); + +#endif /* FX_GLIDE_NO_FUNC_PROTO */ + +#ifdef __cplusplus +} +#endif + +#include + +#endif /* __GLIDE_H__ */ diff --git a/Source/3rd Party/glide/glidesys.h b/Source/3rd Party/glide/glidesys.h new file mode 100644 index 000000000..93e09ff4f --- /dev/null +++ b/Source/3rd Party/glide/glidesys.h @@ -0,0 +1,146 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** Use, duplication or disclosure by the Government is subject to restrictions +n** 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. +** +** $Header: /devel/cvg/glide3/src/glidesys.h 3 7/24/98 1:41p Hohn $ +** $Log: /devel/cvg/glide3/src/glidesys.h $ +** +** 3 7/24/98 1:41p Hohn +** +** 2 6/15/98 10:50a Peter +** made csim compile time option + * + * 1 1/16/98 4:29p Atai + * create glide 3 src + * + * 10 12/09/97 12:20p Peter + * mac glide port + * + * 9 11/04/97 4:00p Dow + * Banshee Mods + * + * 8 8/18/97 3:52p Peter + * pre-hw arrival fixes/cleanup + * + * 7 6/02/97 4:09p Peter + * Compile w/ gcc for Dural + * + * 6 5/27/97 1:16p Peter + * Basic cvg, w/o cmd fifo stuff. + * + * 5 5/21/97 6:05a Peter +*/ +#ifndef __GLIDESYS_H__ +#define __GLIDESYS_H__ + +/* +n** ----------------------------------------------------------------------- +** COMPILER/ENVIRONMENT CONFIGURATION +** ----------------------------------------------------------------------- +*/ + +/* Endianness is stored in bits [30:31] */ +#define GLIDE_ENDIAN_SHIFT 30 +#define GLIDE_ENDIAN_LITTLE (0x1 << GLIDE_ENDIAN_SHIFT) +#define GLIDE_ENDIAN_BIG (0x2 << GLIDE_ENDIAN_SHIFT) + +/* OS is stored in bits [0:6] */ +#define GLIDE_OS_SHIFT 0 +#define GLIDE_OS_UNIX 0x1 +#define GLIDE_OS_DOS32 0x2 +#define GLIDE_OS_WIN32 0x4 +#define GLIDE_OS_MACOS 0x8 +#define GLIDE_OS_OS2 0x10 +#define GLIDE_OS_OTHER 0x40 /* For Proprietary Arcade HW */ + +/* Sim vs. Hardware is stored in bits [7:8] */ +#define GLIDE_SST_SHIFT 7 +#define GLIDE_SST_SIM (0x1 << GLIDE_SST_SHIFT) +#define GLIDE_SST_HW (0x2 << GLIDE_SST_SHIFT) + +/* 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_SST2 (0x8 << GLIDE_HW_SHIFT) +#define GLIDE_HW_CVG (0x10 << GLIDE_HW_SHIFT) + +/* +** Make sure we handle all instances of WIN32 +*/ +#ifndef __WIN32__ +# if defined (_WIN32) || defined (WIN32) || defined(__NT__) +# define __WIN32__ +# endif +#endif + +/* We need two checks on the OS: one for endian, the other for OS */ +/* Check for endianness */ +#if defined(__IRIX__) || defined(__sparc__) || defined(MACOS) +# define GLIDE_ENDIAN GLIDE_ENDIAN_BIG +#else +# define GLIDE_ENDIAN GLIDE_ENDIAN_LITTLE +#endif + +/* Check for OS */ +#if defined(__IRIX__) || defined(__sparc__) || defined(__linux__) +# define GLIDE_OS GLIDE_OS_UNIX +#elif defined(__DOS__) +# define GLIDE_OS GLIDE_OS_DOS32 +#elif defined(__WIN32__) +# define GLIDE_OS GLIDE_OS_WIN32 +#elif defined(macintosh) +# define GLIDE_OS GLIDE_OS_MACOS +#else +#error "Unknown OS" +#endif + +/* Check for Simulator vs. Hardware */ +#if HAL_CSIM || HWC_CSIM +# define GLIDE_SST GLIDE_SST_SIM +#else +# define GLIDE_SST GLIDE_SST_HW +#endif + +/* Check for type of hardware */ +#ifdef SST96 +# define GLIDE_HW GLIDE_HW_SST96 +#elif defined(H3) +# define GLIDE_HW GLIDE_HW_H3 +#elif defined(SST2) +# define GLIDE_HW GLIDE_HW_SST2 +#elif defined(CVG) +# define GLIDE_HW GLIDE_HW_CVG +#else /* Default to SST1 */ +# define GLIDE_HW GLIDE_HW_SST1 +#endif + + +#define GLIDE_PLATFORM (GLIDE_ENDIAN | GLIDE_OS | GLIDE_SST | GLIDE_HW) + +/* +** Control the number of TMUs +*/ +#ifndef GLIDE_NUM_TMU +# define GLIDE_NUM_TMU 2 +#endif + + +#if ((GLIDE_NUM_TMU < 0) && (GLIDE_NUM_TMU > 3)) +# error "GLIDE_NUM_TMU set to an invalid value" +#endif + +#endif /* __GLIDESYS_H__ */ diff --git a/Source/3rd Party/glide/glideutl.h b/Source/3rd Party/glide/glideutl.h new file mode 100644 index 000000000..b7fe92ca7 --- /dev/null +++ b/Source/3rd Party/glide/glideutl.h @@ -0,0 +1,143 @@ +/* +** Copyright (c) 1995, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $Header: /devel/cvg/glide3/src/glideutl.h 4 7/24/98 1:41p Hohn $ +** $Log: /devel/cvg/glide3/src/glideutl.h $ +** +** 4 7/24/98 1:41p Hohn +** +** 3 1/30/98 4:27p Atai +** gufog* prototype +** +** 1 1/29/98 4:00p Atai + * + * 1 1/16/98 4:29p Atai + * create glide 3 src + * + * 11 1/07/98 11:18a Atai + * remove GrMipMapInfo and GrGC.mm_table in glide3 + * + * 10 1/06/98 6:47p Atai + * undo grSplash and remove gu routines + * + * 9 1/05/98 6:04p Atai + * move 3df gu related data structure from glide.h to glideutl.h + * + * 8 12/18/97 2:13p Peter + * fogTable cataclysm + * + * 7 12/15/97 5:52p Atai + * disable obsolete glide2 api for glide3 + * + * 6 8/14/97 5:32p Pgj + * remove dead code per GMT + * + * 5 6/12/97 5:19p Pgj + * Fix bug 578 + * + * 4 3/05/97 9:36p Jdt + * Removed guFbWriteRegion added guEncodeRLE16 + * + * 3 1/16/97 3:45p Dow + * Embedded fn protos in ifndef FX_GLIDE_NO_FUNC_PROTO +*/ + +/* Glide Utility routines */ + +#ifndef __GLIDEUTL_H__ +#define __GLIDEUTL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** 3DF texture file structs +*/ + +typedef struct +{ + FxU32 width, height; + int small_lod, large_lod; + GrAspectRatio_t aspect_ratio; + GrTextureFormat_t format; +} Gu3dfHeader; + +typedef struct +{ + FxU8 yRGB[16]; + FxI16 iRGB[4][3]; + FxI16 qRGB[4][3]; + FxU32 packed_data[12]; +} GuNccTable; + +typedef struct { + FxU32 data[256]; +} GuTexPalette; + +typedef union { + GuNccTable nccTable; + GuTexPalette palette; +} GuTexTable; + +typedef struct +{ + Gu3dfHeader header; + GuTexTable table; + void *data; + FxU32 mem_required; /* memory required for mip map in bytes. */ +} Gu3dfInfo; + +#ifndef FX_GLIDE_NO_FUNC_PROTO +/* +** Gamma functions +*/ + +FX_ENTRY void FX_CALL +guGammaCorrectionRGB( FxFloat red, FxFloat green, FxFloat blue ); + +/* +** fog stuff +*/ +FX_ENTRY float FX_CALL +guFogTableIndexToW( int i ); + +FX_ENTRY void FX_CALL +guFogGenerateExp( GrFog_t *fogtable, float density ); + +FX_ENTRY void FX_CALL +guFogGenerateExp2( GrFog_t *fogtable, float density ); + +FX_ENTRY void FX_CALL +guFogGenerateLinear(GrFog_t *fogtable, + float nearZ, float farZ ); + +/* +** hi-level texture manipulation tools. +*/ +FX_ENTRY FxBool FX_CALL +gu3dfGetInfo( const char *filename, Gu3dfInfo *info ); + +FX_ENTRY FxBool FX_CALL +gu3dfLoad( const char *filename, Gu3dfInfo *data ); + +#endif /* FX_GLIDE_NO_FUNC_PROTO */ + +#ifdef __cplusplus +} +#endif + +#endif /* __GLIDEUTL_H__ */ diff --git a/Source/3rd Party/glide/lib/glide3x.lib b/Source/3rd Party/glide/lib/glide3x.lib new file mode 100644 index 0000000000000000000000000000000000000000..60d950f930870634c3907c828cfdbb18f3c26923 GIT binary patch literal 77030 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 OoO?jH3EP+ing0VC3X%l? literal 0 HcmV?d00001 diff --git a/Source/3rd Party/glide/sst1init.h b/Source/3rd Party/glide/sst1init.h new file mode 100644 index 000000000..ed635aac7 --- /dev/null +++ b/Source/3rd Party/glide/sst1init.h @@ -0,0 +1,1840 @@ +/*-*-c++-*-*/ +/* +** Copyright (c) 1997, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** +** $Revision: 62 $ +** $Date: 7/24/98 1:38p $ +** +*/ + +#ifndef __SST1INIT_H__ +#define __SST1INIT_H__ + +/* +** Copyright (c) 1996, 3Dfx Interactive, Inc. +** All Rights Reserved. +** +** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; +** the contents of this file may not be disclosed to third parties, copied or +** duplicated in any form, in whole or in part, without the prior written +** permission of 3Dfx Interactive, Inc. +** +** RESTRICTED RIGHTS LEGEND: +** 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. +** +** $Revision: 62 $ +** $Date: 7/24/98 1:38p $ +** +** SST-1 Initialization routine protypes +** +** If all initialization routines are called, it is assumed they are called +** in the following order: +** 1. sst1InitMapBoard(); +** 2. sst1InitRegisters(); +** 3. sst1InitGamma(); +** 4. sst1InitVideoBuffers(); +** 5. sst1InitSli(); [Optional] +** 6. sst1InitCmdFifo(); +** +** sst1InitShutdown() is called at the end of an application to turn off +** the SST-1 graphics subsystem +** +*/ + +/* sst1init.h assumes "glide.h" and "sst.h" are already included */ + +/* Init code debug print routine */ +#ifdef INIT_DOS /* Glide version... */ +#define INIT_OUTPUT +#define INIT_PRINTF(a) sst1InitPrintf a +#define INIT_INFO(A) +#endif + +#ifndef DIRECTX +#undef GETENV +#undef ATOI +#undef ATOF +#undef SSCANF +#undef POW +#define GETENV(A) sst1InitGetenv(A) +#define ATOI(A) atoi(A) +#define ATOF(A) atof(A) +#define SSCANF( A, B, C ) sscanf( A, B, C ) +#define POW( A, B ) pow( A, B ) +#define FTOL( X ) ((FxU32)(X)) + +// Video resolution declarations +#include "sst1vid.h" + +// Info Structure declaration +#include "cvginfo.h" + +#else /* DIRECTX */ +#include "ddglobal.h" +#pragma optimize ("",off) /* ddglobal.h tuns this on for retail builds */ +#undef INIT_PRINTF +#undef INIT_INFO +#undef GETENV +#undef ATOI +#undef ATOF +#undef FTOL +#undef ITOF_INV +#undef SSCANF +#undef POW +/* #define INIT_PRINTF(a) */ +#ifdef FXTRACE + #define INIT_PRINTF DDPRINTF +#else + #define INIT_PRINTF 1 ? (void) 0 : (void) +#endif +#define INIT_INFO(A) +#define GETENV(A) ddgetenv(A) +#define ATOI(A) ddatoi(A) +#define ATOF(A) ddatof(A) +#define FTOL(A) ddftol(A) +#define ITOF_INV(A) dd_itof_inv(A) +#define SSCANF( A, B, C ) ddsscanf( A, B, C ) +#define POW( A, B ) ddpow( A, B ) + +#endif /* DIRECTX */ + +/* Defines to writing to/reading from SST-1 */ +#if 0 +#define IGET(A) A +#define ISET(A,D) A = (D) +#else +#define IGET(A) sst1InitRead32((FxU32 *) &(A)) +#define ISET(A,D) sst1InitWrite32((FxU32 *) &(A), D) +#endif + +/* +** P6 Fence +** +** Here's the stuff to do P6 Fencing. This is required for the +** certain things on the P6 +*/ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SST1INIT_ALLOCATE + FxU32 p6FenceVar; +#else + extern FxU32 p6FenceVar; +#endif + +#if defined(__WATCOMC__) +void +p6Fence(void); +# pragma aux p6Fence = \ + "xchg eax, p6FenceVar" \ + modify [eax]; +# define P6FENCE p6Fence() +#elif defined(__MSC__) +# define P6FENCE {_asm xchg eax, p6FenceVar} +#elif defined(macintosh) && __POWERPC__ && defined(__MWERKS__) +# define P6FENCE __eieio() +#else +# error "P6 Fencing in-line assembler code needs to be added for this compiler" +#endif + +#ifdef __cplusplus +} +#endif + +#ifndef _FXPCI_H_ +#include +#endif +#include + +/*--------------------------------------------------------*/ +/* Following defines need to go in "cvgdefs.h" eventually */ +#define SST_CMDFIFO_ADDR BIT(21) + +/*--------- SST PCI Configuration Command bits --------------*/ +#define SST_PCIMEM_ACCESS_EN BIT(1) + +/*------- SST PCI Configuration Register defaults -----------*/ +#define SST_PCI_INIT_ENABLE_DEFAULT 0x0 +#define SST_PCI_BUS_SNOOP_DEFAULT 0x0 + +/*--- SST PCI Init Enable Configuration Register defaults ---*/ +#define SST_SLI_OWNPCI SST_SCANLINE_SLV_OWNPCI +#define SST_SLI_MASTER_OWNPCI 0x0 +#define SST_SLI_SLAVE_OWNPCI SST_SCANLINE_SLV_OWNPCI +#define SST_CHUCK_REVISION_ID_SHIFT 12 +#define SST_CHUCK_REVISION_ID (0xF< +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SST1INIT_ALLOCATE +FILE *sst1InitMsgFile = stdout; +#else +extern FILE *sst1InitMsgFile; +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +/* Maximum number of SST-1 boards supported in system */ +#define SST1INIT_MAX_BOARDS 16 + +/* Maximum number of read pushes in "voodoo.ini" file */ +#define DACRDWR_MAX_PUSH 16 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SST1INIT_ALLOCATE + static char headersIdent[] = "@#%Voodoo2 InitHeaders $Revision: 62 $"; + FxBool sst1InitUseVoodooFile = FXFALSE; + sst1InitEnvVarStruct *envVarsBase = (sst1InitEnvVarStruct *) NULL; + sst1InitDacStruct *dacStructBase = (sst1InitDacStruct *) NULL; + sst1InitDacStruct *iniDac = (sst1InitDacStruct *) NULL; + sst1InitDacSetVideoStruct *iniVideo = (sst1InitDacSetVideoStruct *) NULL; + sst1InitDacSetMemClkStruct *iniMemClk = (sst1InitDacSetMemClkStruct *) NULL; + FxU32 iniStack[DACRDWR_MAX_PUSH]; + int iniStackPtr = 0; + sst1DeviceInfoStruct *sst1CurrentBoard; + FxU32 sst1InitDeviceNumber; + sst1DeviceInfoStruct sst1BoardInfo[SST1INIT_MAX_BOARDS]; + FxU32 boardsInSystem; + FxU32 boardsInSystemReally; + FxU32 initIdleEnabled = 1; + + + const PciRegister SST1_PCI_CFG_SCRATCH = { 0x50, 4, READ_WRITE }; + const PciRegister SST1_PCI_SIPROCESS = { 0x54, 4, READ_WRITE }; +#else + extern FxBool sst1InitUseVoodooFile; + extern sst1InitEnvVarStruct *envVarsBase; + extern sst1InitDacStruct *dacStructBase; + extern sst1InitDacStruct *iniDac; + extern sst1InitDacSetVideoStruct *iniVideo; + extern sst1InitDacSetMemClkStruct *iniMemClk; + extern FxU32 iniStack[]; + extern int iniStackPtr; + extern sst1DeviceInfoStruct *sst1CurrentBoard; + extern FxU32 sst1InitDeviceNumber; + extern sst1DeviceInfoStruct sst1BoardInfo[SST1INIT_MAX_BOARDS]; + extern FxU32 boardsInSystem; + extern FxU32 boardsInSystemReally; + extern FxU32 initIdleEnabled; + + extern PciRegister SST1_PCI_CFG_SCRATCH; + extern PciRegister SST1_PCI_SIPROCESS; +#endif /* SST1INIT_ALLOCATE */ + +#ifdef __3Dfx_PCI_CFG__ +/* This is really ugly, but it makes us happy w/ the top of the tree + * pci library which is happier than Gary's library. + */ +#define SST1_PCI_INIT_ENABLE PCI_SST1_INIT_ENABLE +#define SST1_PCI_BUS_SNOOP0 PCI_SST1_BUS_SNOOP_0 +#define SST1_PCI_BUS_SNOOP1 PCI_SST1_BUS_SNOOP_1 +#define SST1_PCI_CFG_STATUS PCI_SST1_CFG_STATUS +#else /* !__3Dfx_PCI_CFG__ */ +#define SST1_PCI_BUS_SNOOP0 SST1_PCI_BUS_SNOOP_0 +#define SST1_PCI_BUS_SNOOP1 SST1_PCI_BUS_SNOOP_1 +#endif /* !__3Dfx_PCI_CFG__ */ + +#ifdef __cplusplus +} +#endif + +#ifdef SST1INIT_VIDEO_ALLOCATE +/* SST1INIT_VIDEO_ALLOCATE is only #defined in video.c + + Define useful clock and video timings + Clocks generated are follows: + Clock Freq. (MHz) = + [14.318 * (clkTiming_M+2)] / [(clkTiming_N+2) * (2^clkTiming_P)] + + Solving for clkTiming_M yields: + clkTiming_M = + [ [(Clock Freq (Mhz)) * (clkTiming_N+2) * (2^clkTiming_P)] / 14.318 ] - 2 + + NOTE: [14.318 * (clkTiming_M+2)] / (clkTiming_N+2) should be between + 120 and 240 + NOTE: Max. M is 127 + NOTE: Max. N is 31 + NOTE: Max. P is 3 + NOTE: Max. L is 15 + NOTE: Max. IB is 15 +*/ + + +/* H3D video timing structures */ +#ifdef H3D +/* This guy's not used anywhere */ +sst1VideoTimingStruct SST_VREZ_640X502_60 = { + 96, /* hSyncOn */ + 704, /* hSyncOff */ + 2, /* vSyncOn */ + 523, /* vSyncOff */ + 38, /* hBackPorch */ + 15, /* vBackPorch */ + 640, /* xDimension */ + 502, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 160, /* memOffset */ + 20, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 25.175F, /* clkFreq16bpp */ + 50.350F /* clkFreq24bpp */ +}; + + +/* Line doubled 640x480...line doubling done externally */ +sst1VideoTimingStruct SST_VREZ_640X960LD_60 = { + 45, /* hSyncOn */ + 785, /* hSyncOff */ + 3, /* vSyncOn */ + 1044, /* vSyncOff */ + 100, /* hBackPorch */ + 18, /* vBackPorch */ + 640, /* xDimension */ + 502, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 160, /* memOffset */ + 20, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 50.82F, /* clkFreq16bpp */ + 101.64F /* clkFreq24bpp */ +}; + + +/* Full resolution 640x480... */ +sst1VideoTimingStruct SST_VREZ_640X960_60 = { + 45, /* hSyncOn */ + 785, /* hSyncOff */ + 3, /* vSyncOn */ + 1044, /* vSyncOff */ + 100, /* hBackPorch */ + 18, /* vBackPorch */ + 640, /* xDimension */ + 1004, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 320, /* memOffset */ + 20, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 50.82F, /* clkFreq16bpp */ + 101.64F /* clkFreq24bpp */ +}; + + +/* Line doubled 800x600...line doubling done externally */ +sst1VideoTimingStruct SST_VREZ_800X1200LD_45 = { + 63, /* hSyncOn */ + 983, /* hSyncOff */ + 3, /* vSyncOn */ + 1242, /* vSyncOff */ + 150, /* hBackPorch */ + 27, /* vBackPorch */ + 800, /* xDimension */ + 608, /* yDimension */ + 42, /* refreshRate */ + 0, /* miscCtrl */ + 247, /* memOffset */ + 26, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 56.25F, /* clkFreq16bpp */ + 112.5F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_800X630_60 = { + 127, /* hSyncOn */ + 927, /* hSyncOff */ + 4, /* vSyncOn */ + 656, /* vSyncOff */ + 86, /* hBackPorch */ + 23, /* vBackPorch */ + 800, /* xDimension */ + 630, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 260, /* memOffset */ + 26, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 40.0F, /* clkFreq16bpp */ + 80.0F /* clkFreq24bpp */ +}; + + +/* Full res 800x600...so far, ain't nobody got enough memory */ +sst1VideoTimingStruct SST_VREZ_800X1200_45 = { + 63, /* hSyncOn */ + 983, /* hSyncOff */ + 3, /* vSyncOn */ + 1244, /* vSyncOff */ + 150, /* hBackPorch */ + 27, /* vBackPorch */ + 800, /* xDimension */ + 1216, /* yDimension */ + 42, /* refreshRate */ + 0, /* miscCtrl */ + 494, /* memOffset */ + 26, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 56.25F, /* clkFreq16bpp */ + 112.5F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_960X742_60 = { + 103, /* hSyncOn */ + 1151, /* hSyncOff */ + 3, /* vSyncOn */ + 765, /* vSyncOff */ + 142, /* hBackPorch */ + 22, /* vBackPorch */ + 960, /* xDimension */ + 742, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 360, /* memOffset */ + 30, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 56.219F, /* clkFreq16bpp */ + 112.437F /* clkFreq24bpp */ +}; + +#endif + + +sst1VideoTimingStruct SST_VREZ_320X200_70 = { + 96, /* hSyncOn */ + 704, /* hSyncOff */ + 2, /* vSyncOn */ + 447, /* vSyncOff */ + 48, /* hBackPorch */ + 35, /* vBackPorch */ + 320, /* xDimension */ + 200, /* yDimension */ + 70, /* refreshRate */ + 0x3, /* miscCtrl */ + 35, /* memOffset */ + 10, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 25.175F, /* clkFreq16bpp */ + 50.350F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X200_75 = { + 99, /* hSyncOn */ + 733, /* hSyncOff */ + 3, /* vSyncOn */ + 429, /* vSyncOff */ + 52, /* hBackPorch */ + 25, /* vBackPorch */ + 320, /* xDimension */ + 200, /* yDimension */ + 75, /* refreshRate */ + 0x3, /* miscCtrl */ + 35, /* memOffset */ + 10, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 27.0F, /* clkFreq16bpp */ + 54.0F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X200_85 = { + 63, /* hSyncOn */ + 767, /* hSyncOff */ + 3, /* vSyncOn */ + 442, /* vSyncOff */ + 94, /* hBackPorch */ + 41, /* vBackPorch */ + 320, /* xDimension */ + 200, /* yDimension */ + 85, /* refreshRate */ + 0x3, /* miscCtrl */ + 35, /* memOffset */ + 10, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 31.5F, /* clkFreq16bpp */ + 63.0F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X200_120 = { + 67, /* hSyncOn */ + 798, /* hSyncOff */ + 3, /* vSyncOn */ + 424, /* vSyncOff */ + 94, /* hBackPorch */ + 16, /* vBackPorch */ + 320, /* xDimension */ + 200, /* yDimension */ + 120, /* refreshRate */ + 0x3, /* miscCtrl */ + 35, /* memOffset */ + 10, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 44.47F, /* clkFreq16bpp */ + 88.94F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X240_60 = { + 96, /* hSyncOn */ + 704, /* hSyncOff */ + 2, /* vSyncOn */ + 523, /* vSyncOff */ + 38, /* hBackPorch */ + 25, /* vBackPorch */ + 320, /* xDimension */ + 240, /* yDimension */ + 60, /* refreshRate */ + 0x3, /* miscCtrl */ + 40, /* memOffset */ + 10, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 25.175F, /* clkFreq16bpp */ + 50.350F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X240_75 = { + 63, /* hSyncOn */ + 775, /* hSyncOff */ + 3, /* vSyncOn */ + 497, /* vSyncOff */ + 118, /* hBackPorch */ + 16, /* vBackPorch */ + 320, /* xDimension */ + 240, /* yDimension */ + 75, /* refreshRate */ + 0x3, /* miscCtrl */ + 40, /* memOffset */ + 10, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 31.5F, /* clkFreq16bpp */ + 63.0F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X240_85 = { + 55, /* hSyncOn */ + 776, /* hSyncOff */ + 3, /* vSyncOn */ + 506, /* vSyncOff */ + 78, /* hBackPorch */ + 25, /* vBackPorch */ + 320, /* xDimension */ + 240, /* yDimension */ + 85, /* refreshRate */ + 0x3, /* miscCtrl */ + 40, /* memOffset */ + 10, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 36.0F, /* clkFreq16bpp */ + 72.0F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_320X240_120 = { + 45, /* hSyncOn */ + 785, /* hSyncOff */ + 3, /* vSyncOn */ + 506, /* vSyncOff */ + 100, /* hBackPorch */ + 18, /* vBackPorch */ + 320, /* xDimension */ + 240, /* yDimension */ + 120, /* refreshRate */ + 0x3, /* miscCtrl */ + 40, /* memOffset */ + 10, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 50.82F, /* clkFreq16bpp */ + 101.64F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_400X300_60 = { + 39, /* hSyncOn */ + 471, /* hSyncOff */ + 3, /* vSyncOn */ + 619, /* vSyncOff */ + 54, /* hBackPorch */ + 18, /* vBackPorch */ + 400, /* xDimension */ + 300, /* yDimension */ + 60, /* refreshRate */ + 0x2, /* miscCtrl */ + 70, /* memOffset */ + 14, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 19.108F, /* clkFreq16bpp */ + 38.216F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_400X300_75 = { + 39, /* hSyncOn */ + 487, /* hSyncOff */ + 3, /* vSyncOn */ + 624, /* vSyncOff */ + 62, /* hBackPorch */ + 23, /* vBackPorch */ + 400, /* xDimension */ + 300, /* yDimension */ + 75, /* refreshRate */ + 0x2, /* miscCtrl */ + 70, /* memOffset */ + 14, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 24.829F, /* clkFreq16bpp */ + 49.658F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_400X300_85 = { + 39, /* hSyncOn */ + 487, /* hSyncOff */ + 3, /* vSyncOn */ + 627, /* vSyncOff */ + 62, /* hBackPorch */ + 26, /* vBackPorch */ + 400, /* xDimension */ + 300, /* yDimension */ + 85, /* refreshRate */ + 0x2, /* miscCtrl */ + 70, /* memOffset */ + 14, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 28.274F, /* clkFreq16bpp */ + 56.548F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_400X300_120 = { + 39, /* hSyncOn */ + 503, /* hSyncOff */ + 3, /* vSyncOn */ + 640, /* vSyncOff */ + 70, /* hBackPorch */ + 39, /* vBackPorch */ + 400, /* xDimension */ + 300, /* yDimension */ + 120, /* refreshRate */ + 0x2, /* miscCtrl */ + 70, /* memOffset */ + 14, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 41.975F, /* clkFreq16bpp */ + 83.950F /* clkFreq24bpp */ +}; + +/* 512x256@60 only syncs to Arcade-style monitors */ +sst1VideoTimingStruct SST_VREZ_512X256_60 = { + 41, /* hSyncOn */ + 626, /* hSyncOff */ + 4, /* vSyncOn */ + 286, /* vSyncOff */ + 65, /* hBackPorch */ + 24, /* vBackPorch */ + 512, /* xDimension */ + 256, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 64, /* memOffset */ + 16, /* tilesInX */ + 25, /* vFifoThreshold */ + FXFALSE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 23.334F, /* clkFreq16bpp */ + 23.334F /* clkFreq24bpp */ +}; + +#if 0 +// For Arcade monitors... +sst1VideoTimingStruct SST_VREZ_512X384_60 = { + 23, /* hSyncOn */ + 640, /* hSyncOff */ + 3, /* vSyncOn */ + 411, /* vSyncOff */ + 90, /* hBackPorch */ + 24, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXFALSE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 33.0F, /* clkFreq16bpp */ + 33.0F /* clkFreq24bpp */ +}; +#else +// For PC monitors... +sst1VideoTimingStruct SST_VREZ_512X384_60 = { + 55, /* hSyncOn */ + 615, /* hSyncOff */ + 3, /* vSyncOn */ + 792, /* vSyncOff */ + 78, /* hBackPorch */ + 23, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 60, /* refreshRate */ + 0x2, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 32.054F, /* clkFreq16bpp */ + 64.108F /* clkFreq24bpp */ +}; +#endif + +sst1VideoTimingStruct SST_VREZ_512X384_72 = { + 51, /* hSyncOn */ + 591, /* hSyncOff */ + 3, /* vSyncOn */ + 430, /* vSyncOff */ + 55, /* hBackPorch */ + 25, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 72, /* refreshRate */ + 0, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 20.093F, /* clkFreq16bpp */ + 40.186F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_512X384_75 = { + 55, /* hSyncOn */ + 631, /* hSyncOff */ + 3, /* vSyncOn */ + 799, /* vSyncOff */ + 86, /* hBackPorch */ + 30, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 75, /* refreshRate */ + 0x2, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 41.383F, /* clkFreq16bpp */ + 82.766F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_512X384_75_NOSCANDOUBLE = { + 47, /* hSyncOn */ + 591, /* hSyncOff */ + 3, /* vSyncOn */ + 399, /* vSyncOff */ + 62, /* hBackPorch */ + 14, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 75, /* refreshRate */ + 0, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 19.296F, /* clkFreq16bpp */ + 38.592F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_512X384_85 = { + 55, /* hSyncOn */ + 631, /* hSyncOff */ + 3, /* vSyncOn */ + 804, /* vSyncOff */ + 86, /* hBackPorch */ + 35, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 85, /* refreshRate */ + 0x2, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 47.193F, /* clkFreq16bpp */ + 94.386F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_512X384_85_NOSCANDOUBLE = { + 55, /* hSyncOn */ + 599, /* hSyncOff */ + 3, /* vSyncOn */ + 401, /* vSyncOff */ + 70, /* hBackPorch */ + 16, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 85, /* refreshRate */ + 0, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 22.527F, /* clkFreq16bpp */ + 45.054F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_512X384_120 = { + 25, /* hSyncOn */ + 650, /* hSyncOff */ + 3, /* vSyncOn */ + 409, /* vSyncOff */ + 110, /* hBackPorch */ + 25, /* vBackPorch */ + 512, /* xDimension */ + 384, /* yDimension */ + 120, /* refreshRate */ + 0, /* miscCtrl */ + 96, /* memOffset */ + 16, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 33.5F, /* clkFreq16bpp */ + 67.0F /* clkFreq24bpp */ +}; + +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X400_70 = { + 96, /* hSyncOn */ + 704, /* hSyncOff */ + 2, /* vSyncOn */ + 447, /* vSyncOff */ + 48, /* hBackPorch */ + 35, /* vBackPorch */ + 640, /* xDimension */ + 400, /* yDimension */ + 70, /* refreshRate */ + 0, /* miscCtrl */ + 130, /* memOffset */ + 20, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 25.175F, /* clkFreq16bpp */ + 50.350F /* clkFreq24bpp */ +}; + +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X400_75 = { + 99, /* hSyncOn */ + 733, /* hSyncOff */ + 3, /* vSyncOn */ + 429, /* vSyncOff */ + 52, /* hBackPorch */ + 25, /* vBackPorch */ + 640, /* xDimension */ + 400, /* yDimension */ + 75, /* refreshRate */ + 0, /* miscCtrl */ + 130, /* memOffset */ + 20, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 27.0F, /* clkFreq16bpp */ + 54.0F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X400_85 = { + 63, /* hSyncOn */ + 767, /* hSyncOff */ + 3, /* vSyncOn */ + 442, /* vSyncOff */ + 94, /* hBackPorch */ + 41, /* vBackPorch */ + 640, /* xDimension */ + 400, /* yDimension */ + 85, /* refreshRate */ + 0, /* miscCtrl */ + 130, /* memOffset */ + 20, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 31.5F, /* clkFreq16bpp */ + 63.0F /* clkFreq24bpp */ +}; + +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X400_120 = { + 67, /* hSyncOn */ + 798, /* hSyncOff */ + 3, /* vSyncOn */ + 424, /* vSyncOff */ + 94, /* hBackPorch */ + 16, /* vBackPorch */ + 640, /* xDimension */ + 400, /* yDimension */ + 120, /* refreshRate */ + 0, /* miscCtrl */ + 130, /* memOffset */ + 20, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 44.47F, /* clkFreq16bpp */ + 88.94F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X480_60 = { + 96, /* hSyncOn */ + + 704, /* hSyncOff */ + 2, /* vSyncOn */ + 523, /* vSyncOff */ + 38, /* hBackPorch */ + 25, /* vBackPorch */ + 640, /* xDimension */ + 480, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 150, /* memOffset */ + 20, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 25.175F, /* clkFreq16bpp */ + 50.350F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X480_75 = { + 63, /* hSyncOn */ + 775, /* hSyncOff */ + 3, /* vSyncOn */ + 497, /* vSyncOff */ + 118, /* hBackPorch */ + 16, /* vBackPorch */ + 640, /* xDimension */ + 480, /* yDimension */ + 75, /* refreshRate */ + 0, /* miscCtrl */ + 150, /* memOffset */ + 20, /* tilesInX */ + 25, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 31.5F, /* clkFreq16bpp */ + 63.0F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X480_85 = { + 55, /* hSyncOn */ + 776, /* hSyncOff */ + 3, /* vSyncOn */ + 506, /* vSyncOff */ + 78, /* hBackPorch */ + 25, /* vBackPorch */ + 640, /* xDimension */ + 480, /* yDimension */ + 85, /* refreshRate */ + 0, /* miscCtrl */ + 150, /* memOffset */ + 20, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 36.0F, /* clkFreq16bpp */ + 72.0F /* clkFreq24bpp */ +}; + +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_640X480_120 = { + 45, /* hSyncOn */ + 785, /* hSyncOff */ + 3, /* vSyncOn */ + 506, /* vSyncOff */ + 100, /* hBackPorch */ + 18, /* vBackPorch */ + 640, /* xDimension */ + 480, /* yDimension */ + 120, /* refreshRate */ + 0, /* miscCtrl */ + 150, /* memOffset */ + 20, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 50.82F, /* clkFreq16bpp */ + 101.64F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +// 800x600 requires 832x608 amount of memory usage... +sst1VideoTimingStruct SST_VREZ_800X600_60 = { + 127, /* hSyncOn */ + 927, /* hSyncOff */ + 4, /* vSyncOn */ + 624, /* vSyncOff */ + 86, /* hBackPorch */ + 23, /* vBackPorch */ + 800, /* xDimension */ + 600, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 247, /* memOffset */ + 26, /* tilesInX */ + 23, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 40.0F, /* clkFreq16bpp */ + 80.0F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_800X600_75 = { + 79, /* hSyncOn */ + 975, /* hSyncOff */ + 3, /* vSyncOn */ + 622, /* vSyncOff */ + 158, /* hBackPorch */ + 21, /* vBackPorch */ + 800, /* xDimension */ + 600, /* yDimension */ + 75, /* refreshRate */ + 0, /* miscCtrl */ + 247, /* memOffset */ + 26, /* tilesInX */ + 21, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 49.5F, /* clkFreq16bpp */ + 99.0F /* clkFreq24bpp */ +}; + +/* VESA Standard */ +/* Verified 10/21/96 */ +sst1VideoTimingStruct SST_VREZ_800X600_85 = { + 63, /* hSyncOn */ + 983, /* hSyncOff */ + 3, /* vSyncOn */ + 628, /* vSyncOff */ + 150, /* hBackPorch */ + 27, /* vBackPorch */ + 800, /* xDimension */ + 600, /* yDimension */ + 85, /* refreshRate */ + 0, /* miscCtrl */ + 247, /* memOffset */ + 26, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 56.25F, /* clkFreq16bpp */ + 112.5F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_800X600_120 = { + 87, /* hSyncOn */ + 999, /* hSyncOff */ + 3, /* vSyncOn */ + 640, /* vSyncOff */ + 142, /* hBackPorch */ + 39, /* vBackPorch */ + 800, /* xDimension */ + 600, /* yDimension */ + 120, /* refreshRate */ + 0, /* miscCtrl */ + 247, /* memOffset */ + 26, /* tilesInX */ + 17, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXFALSE, /* video24BPPIsOK */ + 83.950F, /* clkFreq16bpp */ + 83.950F /* clkFreq24bpp -- unsupported */ +}; + +// 856x480 requires 896x480 amount of memory usage... +sst1VideoTimingStruct SST_VREZ_856X480_60 = { + 136, /* hSyncOn */ + 1008, /* hSyncOff */ + 2, /* vSyncOn */ + 523, /* vSyncOff */ + 100, /* hBackPorch */ + 23, /* vBackPorch */ + 856, /* xDimension */ + 480, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 210, /* memOffset */ + 28, /* tilesInX */ + 16, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 36.0F, /* clkFreq16bpp */ + 72.0F /* clkFreq24bpp */ +}; + +// 960x720 requires 960x736 amount of memory usage... +sst1VideoTimingStruct SST_VREZ_960X720_60 = { + 103, /* hSyncOn */ + 1151, /* hSyncOff */ + 3, /* vSyncOn */ + 743, /* vSyncOff */ + 142, /* hBackPorch */ + 22, /* vBackPorch */ + 960, /* xDimension */ + 720, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 345, /* memOffset */ + 30, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXTRUE, /* video24BPPIsOK */ + 56.219F, /* clkFreq16bpp */ + 112.437F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_960X720_75 = { + 103, /* hSyncOn */ + 1183, /* hSyncOff */ + 3, /* vSyncOn */ + 749, /* vSyncOff */ + 158, /* hBackPorch */ + 28, /* vBackPorch */ + 960, /* xDimension */ + 720, /* yDimension */ + 75, /* refreshRate */ + 0, /* miscCtrl */ + 345, /* memOffset */ + 30, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXFALSE, /* video24BPPIsOK */ + 72.643F, /* clkFreq16bpp */ + 72.643F /* clkFreq24bpp -- unsupported */ +}; + +sst1VideoTimingStruct SST_VREZ_960X720_85 = { + 103, /* hSyncOn */ + 1199, /* hSyncOff */ + 3, /* vSyncOn */ + 753, /* vSyncOff */ + 166, /* hBackPorch */ + 32, /* vBackPorch */ + 960, /* xDimension */ + 720, /* yDimension */ + 85, /* refreshRate */ + 0, /* miscCtrl */ + 345, /* memOffset */ + 30, /* tilesInX */ + 19, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXFALSE, /* video24BPPIsOK */ + 83.795F, /* clkFreq16bpp */ + 83.795F /* clkFreq24bpp -- unsupported */ +}; + +sst1VideoTimingStruct SST_VREZ_1024X768_60 = { + 136, /* hSyncOn */ + 1208, /* hSyncOff */ + 6, /* vSyncOn */ + 800, /* vSyncOff */ + 160, /* hBackPorch */ + 29, /* vBackPorch */ + 1024, /* xDimension */ + 768, /* yDimension */ + 60, /* refreshRate */ + 0, /* miscCtrl */ + 384, /* memOffset */ + 32, /* tilesInX */ + 16, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXFALSE, /* video24BPPIsOK */ + 65.0F, /* clkFreq16bpp */ + 130.0F /* clkFreq24bpp */ +}; + +sst1VideoTimingStruct SST_VREZ_1024X768_75 = { + 96, /* hSyncOn */ + 1216, /* hSyncOff */ + 3, /* vSyncOn */ + 797, /* vSyncOff */ + 176, /* hBackPorch */ + 28, /* vBackPorch */ + 1024, /* xDimension */ + 768, /* yDimension */ + 75, /* refreshRate */ + 0, /* miscCtrl */ + 384, /* memOffset */ + 32, /* tilesInX */ + 16, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXFALSE, /* video24BPPIsOK */ + 78.75F, /* clkFreq16bpp */ + 78.75F /* clkFreq24bpp -- unsupported */ +}; + +sst1VideoTimingStruct SST_VREZ_1024X768_85 = { + 96, /* hSyncOn */ + 1280, /* hSyncOff */ + 3, /* vSyncOn */ + 805, /* vSyncOff */ + 208, /* hBackPorch */ + 36, /* vBackPorch */ + 1024, /* xDimension */ + 768, /* yDimension */ + 85, /* refreshRate */ + 0, /* miscCtrl */ + 384, /* memOffset */ + 32, /* tilesInX */ + 16, /* vFifoThreshold */ + FXTRUE, /* video16BPPIsOK */ + FXFALSE, /* video24BPPIsOK */ + 94.5F, /* clkFreq16bpp */ + 94.5F /* clkFreq24bpp -- unsupported */ +}; + +#else /* SST1INIT_VIDEO_ALLOCATE */ + + +#ifdef __cplusplus +extern "C" { +#endif + +extern sst1VideoTimingStruct SST_VREZ_640X480_60; +extern sst1VideoTimingStruct SST_VREZ_800X600_60; + +#ifdef __cplusplus +} +#endif + +#endif /* SST1INIT_VIDEO_ALLOCATE */ + +#endif /* !__SST1INIT_H__ */