/*
* Descent 3
* Copyright (C) 2024 Parallax Software
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/*******************************************************************
* THIS HEADER HAS BEEN HACKED BY AN EXPERIMENTAL PERL SCRIPT
* dynafy.pl
* on 7 Jul 97
*
* The new functionality allows glide2x.dll to be loaded dynamically.
* To do this,
* 1. #define DYNAHEADER wherever you include this header,
* glide.h.
* 2. You must also #define DYNAHEADER _CREATE_STORAGE in your
* file where main() is defined.
* 3. call GetProcAddresses();
*/
/*
** 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__
/* The following include has been replaced
* by the processed text from the header file.
* #include <3dfx.h>
*/
/*
** 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: 1.1.1.1 $
** $Date: 2003/08/26 03:58:12 $
*/
#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 int FxI32;
typedef unsigned int FxU32;
typedef int FxBool;
typedef float FxFloat;
typedef double FxDouble;
/*
** color types
*/
typedef unsigned int FxColor_t;
typedef struct {
float r, g, b, a;
} FxColor4;
/*
** fundamental types
*/
#define FXTRUE 1
#define FXFALSE 0
/*
** helper macros
*/
#define FXUNUSED(a) ((a) = (a))
#define FXBIT(i) (1L << (i))
/*
** export macros
*/
#if defined(__MSC__) || defined(__WATCOMC__)
#define FX_ENTRY extern
#define FX_CALL __stdcall
#if defined(MSVC16)
#undef FX_ENTRY
#undef FX_CALL
#define FX_ENTRY
#define FX_CALL
#endif
#elif defined(__DJGPP__)
#define FX_ENTRY extern
#define FX_CALL
#elif defined(__unix__)
#define FX_ENTRY extern
#define FX_CALL
#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
/* The following include has been replaced
* by the processed text from the header file.
* #include
*/
/*
** 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: /cvs/kevlar.net/descent3/Main/lib/linux/dyna_glide.h,v 1.1.1.1 2003/08/26 03:58:12 kevinb Exp $
** $Log: dyna_glide.h,v $
** Revision 1.1.1.1 2003/08/26 03:58:12 kevinb
** initial 1.5 import
**
*
* 2 7/14/99 6:43p Jeff
* change to load module globally
*
* 1 6/22/99 7:02p Jeff
*
* 4 2/19/99 11:49a Jason
* added more resolutions to glide
*
* 3 7/06/98 7:16p Jeff
* LoadGlideDLL no longer windows specific, calls module library
*
* 3 7/06/98 10:46a Jeff
* LoadGlideDLL uses the module library so it isn't Windows specific
*
* 2 3/02/98 5:15p Jason
* added support for dynamically loadable dlls
*
* 1 3/02/98 5:15p Jason
* header file for dynamically loadable dlls
*
* 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 __cplusplus
}
#endif
#endif /* __SST1VID_H__ */
/* The following include has been replaced
* by the processed text from the header file.
* #include
*/
/*
** 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: /cvs/kevlar.net/descent3/Main/lib/linux/dyna_glide.h,v 1.1.1.1 2003/08/26 03:58:12 kevinb Exp $
** $Log: dyna_glide.h,v $
** Revision 1.1.1.1 2003/08/26 03:58:12 kevinb
** initial 1.5 import
**
*
* 2 7/14/99 6:43p Jeff
* change to load module globally
*
* 1 6/22/99 7:02p Jeff
*
* 4 2/19/99 11:49a Jason
* added more resolutions to glide
*
* 3 7/06/98 7:16p Jeff
* LoadGlideDLL no longer windows specific, calls module library
*
* 3 7/06/98 10:46a Jeff
* LoadGlideDLL uses the module library so it isn't Windows specific
*
* 2 3/02/98 5:15p Jason
* added support for dynamically loadable dlls
*
* 1 3/02/98 5:15p Jason
* header file for dynamically loadable dlls
*/
#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_SYSTEM7 0x8
#define GLIDE_OS_OS2 0x10
#define GLIDE_OS_OTHER 0x20 /* 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:12] */
#define GLIDE_HW_SHIFT 9
#define GLIDE_HW_SST1 (0x1 << GLIDE_HW_SHIFT)
#define GLIDE_HW_SST96 (0x2 << GLIDE_HW_SHIFT)
#define GLIDE_HW_SSTH3 (0x4 << GLIDE_HW_SHIFT)
#define GLIDE_HW_SST2 (0x8 << 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
#endif
/* Check for Simulator vs. Hardware */
#ifdef GLIDE_SIMULATOR
#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(SSTH3)
#define GLIDE_HW GLIDE_HW_SSTH3
#elif defined(SST2)
#define GLIDE_HW GLIDE_HW_SST2
#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__ */
#ifdef __cplusplus
extern "C" {
#endif
/*
** -----------------------------------------------------------------------
** TYPE DEFINITIONS
** -----------------------------------------------------------------------
*/
typedef FxU32 GrColor_t;
typedef FxU8 GrAlpha_t;
typedef FxU32 GrMipMapId_t;
typedef FxU8 GrFog_t;
/*
** -----------------------------------------------------------------------
** CONSTANTS AND TYPES
** -----------------------------------------------------------------------
*/
#define MAX_NUM_SST 4
#define MAX_MIPMAPS_PER_SST 1024
#define GR_FOG_TABLE_SIZE 64
#define GR_NULL_MIPMAP_HANDLE ((GrMipMapId_t)-1)
#define GR_ZDEPTHVALUE_NEAREST 0xFFFF
#define GR_ZDEPTHVALUE_FARTHEST 0x0000
#define GR_WDEPTHVALUE_NEAREST 0x0000
#define GR_WDEPTHVALUE_FARTHEST 0xFFFF
#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 0x3
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_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_8x1 0x0 /* 8W x 1H */
#define GR_ASPECT_4x1 0x1 /* 4W x 1H */
#define GR_ASPECT_2x1 0x2 /* 2W x 1H */
#define GR_ASPECT_1x1 0x3 /* 1W x 1H */
#define GR_ASPECT_1x2 0x4 /* 1W x 2H */
#define GR_ASPECT_1x4 0x5 /* 1W x 4H */
#define GR_ASPECT_1x8 0x6 /* 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 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_ITERATED_ALPHA 0x1
#define GR_FOG_WITH_TABLE 0x2
#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_256 0x0
#define GR_LOD_128 0x1
#define GR_LOD_64 0x2
#define GR_LOD_32 0x3
#define GR_LOD_16 0x4
#define GR_LOD_8 0x5
#define GR_LOD_4 0x6
#define GR_LOD_2 0x7
#define GR_LOD_1 0x8
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
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
typedef FxU32 GrNCCTable_t;
#define GR_NCCTABLE_NCC0 0x0
#define GR_NCCTABLE_NCC1 0x1
typedef FxU32 GrTexBaseRange_t;
#define GR_TEXBASE_256 0x0
#define GR_TEXBASE_128 0x1
#define GR_TEXBASE_64 0x2
#define GR_TEXBASE_32_TO_1 0x3
#define GLIDE_STATE_PAD_SIZE 312
#ifdef GLIDE_LIB
typedef struct _GrState_s GrState;
#else
typedef struct _GrState_s {
char pad[GLIDE_STATE_PAD_SIZE];
} GrState;
#endif
/*
** -----------------------------------------------------------------------
** STRUCTURES
** -----------------------------------------------------------------------
*/
/*
** 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;
typedef struct {
GrLOD_t smallLod;
GrLOD_t largeLod;
GrAspectRatio_t aspectRatio;
GrTextureFormat_t format;
void *data;
} GrTexInfo;
typedef struct
{
int sst; /* SST where this texture map was stored */
FxBool valid; /* set when this table entry is allocated*/
int width, height;
GrAspectRatio_t aspect_ratio; /* aspect ratio of the mip map. */
void *data; /* actual texture data */
GrTextureFormat_t format; /* format of the texture table */
GrMipMapMode_t mipmap_mode; /* mip map mode for this texture */
GrTextureFilterMode_t magfilter_mode; /* filtering to be used when magnified */
GrTextureFilterMode_t minfilter_mode; /* filtering to be used with minified */
GrTextureClampMode_t s_clamp_mode; /* how this texture should be clamped in s */
GrTextureClampMode_t t_clamp_mode; /* how this texture should be clamped in t */
FxU32 tLOD; /* Register value for tLOD register */
FxU32 tTextureMode; /* Register value for tTextureMode register
not including non-texture specific bits */
FxU32 lod_bias; /* LOD bias of the mip map in preshifted 4.2*/
GrLOD_t lod_min, lod_max; /* largest and smallest levels of detail */
int tmu; /* tmu on which this texture resides */
FxU32 odd_even_mask; /* mask specifying levels on this tmu */
FxU32 tmu_base_address; /* base addr (in TMU mem) of this texture */
FxBool trilinear; /* should we blend by lod? */
GuNccTable ncc_table; /* NCC compression table (optional) */
} GrMipMapInfo;
typedef int GrSstType;
#define GR_SSTTYPE_VOODOO 0
#define GR_SSTTYPE_SST96 1
#define GR_SSTTYPE_AT3D 2
typedef struct GrTMUConfig_St {
int tmuRev; /* Rev of Texelfx chip */
int tmuRam; /* 1, 2, or 4 MB */
} GrTMUConfig_t;
typedef struct GrVoodooConfig_St {
int fbRam; /* 1, 2, or 4 MB */
int fbiRev; /* Rev of Pixelfx chip */
int nTexelfx; /* How many texelFX chips are there? */
FxBool sliDetect; /* Is it a scan-line interleaved board? */
GrTMUConfig_t tmuConfig[GLIDE_NUM_TMU]; /* Configuration of the Texelfx chips */
} GrVoodooConfig_t;
typedef struct GrSst96Config_St {
int fbRam; /* How much? */
int nTexelfx;
GrTMUConfig_t tmuConfig;
} GrSst96Config_t;
typedef struct GrAT3DConfig_St {
int rev;
} GrAT3DConfig_t;
typedef struct {
int num_sst; /* # of HW units in the system */
struct {
GrSstType type; /* Which hardware is it? */
union SstBoard_u {
GrVoodooConfig_t VoodooConfig;
GrSst96Config_t SST96Config;
GrAT3DConfig_t AT3DConfig;
} sstBoard;
} SSTs[MAX_NUM_SST]; /* configuration for each board */
} GrHwConfiguration;
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 {
float sow; /* s texture ordinate (s over w) */
float tow; /* t texture ordinate (t over w) */
float oow; /* 1/w (used mipmapping - really 0xfff/w) */
} GrTmuVertex;
/*
** GrVertex
** If these are changed the C & assembly language trisetup routines MUST
** be changed, for they will no longer work.
*/
typedef struct
{
float x, y, z; /* X, Y, and Z of scrn space -- Z is ignored */
float r, g, b; /* R, G, B, ([0..255.0]) */
float ooz; /* 65535/Z (used for Z-buffering) */
float a; /* Alpha [0..255.0] */
float oow; /* 1/W (used for W-buffering, texturing) */
GrTmuVertex tmuvtx[GLIDE_NUM_TMU];
} GrVertex;
/* For indexing GrVertex as a float *.
CHANGE THESE IF THE VERTEX STRUCTURE CHANGES!
*/
#define GR_VERTEX_X_OFFSET 0
#define GR_VERTEX_Y_OFFSET 1
#define GR_VERTEX_Z_OFFSET 2
#define GR_VERTEX_R_OFFSET 3
#define GR_VERTEX_G_OFFSET 4
#define GR_VERTEX_B_OFFSET 5
#define GR_VERTEX_OOZ_OFFSET 6
#define GR_VERTEX_A_OFFSET 7
#define GR_VERTEX_OOW_OFFSET 8
#define GR_VERTEX_SOW_TMU0_OFFSET 9
#define GR_VERTEX_TOW_TMU0_OFFSET 10
#define GR_VERTEX_OOW_TMU0_OFFSET 11
#define GR_VERTEX_SOW_TMU1_OFFSET 12
#define GR_VERTEX_TOW_TMU1_OFFSET 13
#define GR_VERTEX_OOW_TMU1_OFFSET 14
#if (GLIDE_NUM_TMU > 2)
#define GR_VERTEX_SOW_TMU2_OFFSET 15
#define GR_VERTEX_TOW_TMU2_OFFSET 16
#define GR_VERTEX_OOW_TMU2_OFFSET 17
#endif
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
typedef FxI32 GrPassthruMode_t;
#define GR_PASSTHRU_SHOW_VGA 0x0
#define GR_PASSTHRU_SHOW_SST1 0x1
typedef FxU32 GrHint_t;
#define GR_HINTTYPE_MIN 0
#define GR_HINT_STWHINT 0
#define GR_HINT_FIFOCHECKHINT 1
#define GR_HINT_FPUPRECISION 2
#define GR_HINT_ALLOW_MIPMAP_DITHER 3
#define GR_HINTTYPE_MAX 3
typedef FxU32 GrSTWHint_t;
#define GR_STWHINT_W_DIFF_FBI FXBIT(0)
#define GR_STWHINT_W_DIFF_TMU0 FXBIT(1)
#define GR_STWHINT_ST_DIFF_TMU0 FXBIT(2)
#define GR_STWHINT_W_DIFF_TMU1 FXBIT(3)
#define GR_STWHINT_ST_DIFF_TMU1 FXBIT(4)
#define GR_STWHINT_W_DIFF_TMU2 FXBIT(5)
#define GR_STWHINT_ST_DIFF_TMU2 FXBIT(6)
typedef FxU32 GrControl_t;
#define GR_CONTROL_ACTIVATE 0x1
#define GR_CONTROL_DEACTIVATE 0x2
#define GR_CONTROL_RESIZE 0x3
#define GR_CONTROL_MOVE 0x4
#define GR_GENERATE_FIFOCHECK_HINT_MASK(swHWM, swLWM) (((swHWM & 0xffff) << 16) | (swLWM & 0xffff))
/*
** -----------------------------------------------------------------------
** FUNCTION PROTOTYPES
** -----------------------------------------------------------------------
*/
#ifndef FX_GLIDE_NO_FUNC_PROTO
/*
** rendering functions
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawLine_fpt)(const GrVertex *v1, const GrVertex *v2);
#else
FX_ENTRY void FX_CALL
grDrawLine(const GrVertex *v1, const GrVertex *v2);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawPlanarPolygon_fpt)(int nverts, const int ilist[], const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
grDrawPlanarPolygon(int nverts, const int ilist[], const GrVertex vlist[]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawPlanarPolygonVertexList_fpt)(int nverts, const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
grDrawPlanarPolygonVertexList(int nverts, const GrVertex vlist[]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawPoint_fpt)(const GrVertex *pt);
#else
FX_ENTRY void FX_CALL
grDrawPoint(const GrVertex *pt);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawPolygon_fpt)(int nverts, const int ilist[], const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
grDrawPolygon(int nverts, const int ilist[], const GrVertex vlist[]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawPolygonVertexList_fpt)(int nverts, const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
grDrawPolygonVertexList(int nverts, const GrVertex vlist[]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDrawTriangle_fpt)(const GrVertex *a, const GrVertex *b, const GrVertex *c);
#else
FX_ENTRY void FX_CALL
grDrawTriangle(const GrVertex *a, const GrVertex *b, const GrVertex *c);
#endif /* DYNAHEADER */
/*
** buffer management
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grBufferClear_fpt)(GrColor_t color, GrAlpha_t alpha, FxU16 depth);
#else
FX_ENTRY void FX_CALL
grBufferClear(GrColor_t color, GrAlpha_t alpha, FxU16 depth);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef int(FX_CALL *grBufferNumPending_fpt)(void);
#else
FX_ENTRY int FX_CALL
grBufferNumPending(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grBufferSwap_fpt)(int swap_interval);
#else
FX_ENTRY void FX_CALL
grBufferSwap(int swap_interval);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grRenderBuffer_fpt)(GrBuffer_t buffer);
#else
FX_ENTRY void FX_CALL
grRenderBuffer(GrBuffer_t buffer);
#endif /* DYNAHEADER */
/*
** error management
*/
typedef void (*GrErrorCallbackFnc_t)(const char *string, FxBool fatal);
#ifdef DYNAHEADER
typedef void(FX_CALL *grErrorSetCallback_fpt)(GrErrorCallbackFnc_t fnc);
#else
FX_ENTRY void FX_CALL
grErrorSetCallback(GrErrorCallbackFnc_t fnc);
#endif /* DYNAHEADER */
/*
** SST routines
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grSstIdle_fpt)(void);
#else
FX_ENTRY void FX_CALL
grSstIdle(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *grSstVideoLine_fpt)(void);
#else
FX_ENTRY FxU32 FX_CALL
grSstVideoLine(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grSstVRetraceOn_fpt)(void);
#else
FX_ENTRY FxBool FX_CALL
grSstVRetraceOn(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grSstIsBusy_fpt)(void);
#else
FX_ENTRY FxBool FX_CALL
grSstIsBusy(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grSstWinOpen_fpt)(FxU32 hWnd, GrScreenResolution_t screen_resolution,
GrScreenRefresh_t refresh_rate, GrColorFormat_t color_format,
GrOriginLocation_t origin_location, int nColBuffers, int nAuxBuffers);
#else
FX_ENTRY FxBool 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);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grSstWinClose_fpt)(void);
#else
FX_ENTRY void FX_CALL
grSstWinClose(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grSstControl_fpt)(FxU32 code);
#else
FX_ENTRY FxBool FX_CALL
grSstControl(FxU32 code);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grSstQueryHardware_fpt)(GrHwConfiguration *hwconfig);
#else
FX_ENTRY FxBool FX_CALL
grSstQueryHardware(GrHwConfiguration *hwconfig);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grSstQueryBoards_fpt)(GrHwConfiguration *hwconfig);
#else
FX_ENTRY FxBool FX_CALL
grSstQueryBoards(GrHwConfiguration *hwconfig);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grSstOrigin_fpt)(GrOriginLocation_t origin);
#else
FX_ENTRY void FX_CALL
grSstOrigin(GrOriginLocation_t origin);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grSstSelect_fpt)(int which_sst);
#else
FX_ENTRY void FX_CALL
grSstSelect(int which_sst);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef int(FX_CALL *grSstScreenHeight_fpt)(void);
#else
FX_ENTRY int FX_CALL
grSstScreenHeight(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef int(FX_CALL *grSstScreenWidth_fpt)(void);
#else
FX_ENTRY int FX_CALL
grSstScreenWidth(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *grSstStatus_fpt)(void);
#else
FX_ENTRY FxU32 FX_CALL
grSstStatus(void);
#endif /* DYNAHEADER */
/*
** Drawing Statistics
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grSstPerfStats_fpt)(GrSstPerfStats_t *pStats);
#else
FX_ENTRY void FX_CALL
grSstPerfStats(GrSstPerfStats_t *pStats);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grSstResetPerfStats_fpt)(void);
#else
FX_ENTRY void FX_CALL
grSstResetPerfStats(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grResetTriStats_fpt)();
#else
FX_ENTRY void FX_CALL
grResetTriStats();
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTriStats_fpt)(FxU32 *trisProcessed, FxU32 *trisDrawn);
#else
FX_ENTRY void FX_CALL
grTriStats(FxU32 *trisProcessed, FxU32 *trisDrawn);
#endif /* DYNAHEADER */
/*
** Glide configuration and special effect maintenance functions
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grAlphaBlendFunction_fpt)(GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df,
GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df);
#else
FX_ENTRY void FX_CALL
grAlphaBlendFunction(
GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df,
GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAlphaCombine_fpt)(GrCombineFunction_t function, GrCombineFactor_t factor,
GrCombineLocal_t local, GrCombineOther_t other, FxBool invert);
#else
FX_ENTRY void FX_CALL
grAlphaCombine(
GrCombineFunction_t function, GrCombineFactor_t factor,
GrCombineLocal_t local, GrCombineOther_t other,
FxBool invert
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAlphaControlsITRGBLighting_fpt)(FxBool enable);
#else
FX_ENTRY void FX_CALL
grAlphaControlsITRGBLighting(FxBool enable);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAlphaTestFunction_fpt)(GrCmpFnc_t function);
#else
FX_ENTRY void FX_CALL
grAlphaTestFunction(GrCmpFnc_t function);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAlphaTestReferenceValue_fpt)(GrAlpha_t value);
#else
FX_ENTRY void FX_CALL
grAlphaTestReferenceValue(GrAlpha_t value);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grChromakeyMode_fpt)(GrChromakeyMode_t mode);
#else
FX_ENTRY void FX_CALL
grChromakeyMode(GrChromakeyMode_t mode);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grChromakeyValue_fpt)(GrColor_t value);
#else
FX_ENTRY void FX_CALL
grChromakeyValue(GrColor_t value);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grClipWindow_fpt)(int minx, int miny, int maxx, int maxy);
#else
FX_ENTRY void FX_CALL
grClipWindow(int minx, int miny, int maxx, int maxy);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grColorCombine_fpt)(GrCombineFunction_t function, GrCombineFactor_t factor,
GrCombineLocal_t local, GrCombineOther_t other, FxBool invert);
#else
FX_ENTRY void FX_CALL
grColorCombine(
GrCombineFunction_t function, GrCombineFactor_t factor,
GrCombineLocal_t local, GrCombineOther_t other,
FxBool invert);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grColorMask_fpt)(FxBool rgb, FxBool a);
#else
FX_ENTRY void FX_CALL
grColorMask(FxBool rgb, FxBool a);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grCullMode_fpt)(GrCullMode_t mode);
#else
FX_ENTRY void FX_CALL
grCullMode(GrCullMode_t mode);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grConstantColorValue_fpt)(GrColor_t value);
#else
FX_ENTRY void FX_CALL
grConstantColorValue(GrColor_t value);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grConstantColorValue4_fpt)(float a, float r, float g, float b);
#else
FX_ENTRY void FX_CALL
grConstantColorValue4(float a, float r, float g, float b);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDepthBiasLevel_fpt)(FxI16 level);
#else
FX_ENTRY void FX_CALL
grDepthBiasLevel(FxI16 level);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDepthBufferFunction_fpt)(GrCmpFnc_t function);
#else
FX_ENTRY void FX_CALL
grDepthBufferFunction(GrCmpFnc_t function);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDepthBufferMode_fpt)(GrDepthBufferMode_t mode);
#else
FX_ENTRY void FX_CALL
grDepthBufferMode(GrDepthBufferMode_t mode);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDepthMask_fpt)(FxBool mask);
#else
FX_ENTRY void FX_CALL
grDepthMask(FxBool mask);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDisableAllEffects_fpt)(void);
#else
FX_ENTRY void FX_CALL
grDisableAllEffects(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grDitherMode_fpt)(GrDitherMode_t mode);
#else
FX_ENTRY void FX_CALL
grDitherMode(GrDitherMode_t mode);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grFogColorValue_fpt)(GrColor_t fogcolor);
#else
FX_ENTRY void FX_CALL
grFogColorValue(GrColor_t fogcolor);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grFogMode_fpt)(GrFogMode_t mode);
#else
FX_ENTRY void FX_CALL
grFogMode(GrFogMode_t mode);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grFogTable_fpt)(const GrFog_t ft[GR_FOG_TABLE_SIZE]);
#else
FX_ENTRY void FX_CALL
grFogTable(const GrFog_t ft[GR_FOG_TABLE_SIZE]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grGammaCorrectionValue_fpt)(float value);
#else
FX_ENTRY void FX_CALL
grGammaCorrectionValue(float value);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grSplash_fpt)(float x, float y, float width, float height, FxU32 frame);
#else
FX_ENTRY void FX_CALL
grSplash(float x, float y, float width, float height, FxU32 frame);
#endif /* DYNAHEADER */
/*
** texture mapping control functions
*/
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *grTexCalcMemRequired_fpt)(GrLOD_t lodmin, GrLOD_t lodmax, GrAspectRatio_t aspect,
GrTextureFormat_t fmt);
#else
FX_ENTRY FxU32 FX_CALL
grTexCalcMemRequired(
GrLOD_t lodmin, GrLOD_t lodmax,
GrAspectRatio_t aspect, GrTextureFormat_t fmt);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *grTexTextureMemRequired_fpt)(FxU32 evenOdd, GrTexInfo *info);
#else
FX_ENTRY FxU32 FX_CALL
grTexTextureMemRequired(FxU32 evenOdd,
GrTexInfo *info);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *grTexMinAddress_fpt)(GrChipID_t tmu);
#else
FX_ENTRY FxU32 FX_CALL
grTexMinAddress(GrChipID_t tmu);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *grTexMaxAddress_fpt)(GrChipID_t tmu);
#else
FX_ENTRY FxU32 FX_CALL
grTexMaxAddress(GrChipID_t tmu);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexNCCTable_fpt)(GrChipID_t tmu, GrNCCTable_t table);
#else
FX_ENTRY void FX_CALL
grTexNCCTable(GrChipID_t tmu, GrNCCTable_t table);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexSource_fpt)(GrChipID_t tmu, FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info);
#else
FX_ENTRY void FX_CALL
grTexSource(GrChipID_t tmu,
FxU32 startAddress,
FxU32 evenOdd,
GrTexInfo *info);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexClampMode_fpt)(GrChipID_t tmu, GrTextureClampMode_t s_clampmode,
GrTextureClampMode_t t_clampmode);
#else
FX_ENTRY void FX_CALL
grTexClampMode(
GrChipID_t tmu,
GrTextureClampMode_t s_clampmode,
GrTextureClampMode_t t_clampmode
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexCombine_fpt)(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);
#else
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
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexCombineFunction_fpt)(GrChipID_t tmu, GrTextureCombineFnc_t fnc);
#else
FX_ENTRY void FX_CALL
grTexCombineFunction(
GrChipID_t tmu,
GrTextureCombineFnc_t fnc
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexDetailControl_fpt)(GrChipID_t tmu, int lod_bias, FxU8 detail_scale, float detail_max);
#else
FX_ENTRY void FX_CALL
grTexDetailControl(
GrChipID_t tmu,
int lod_bias,
FxU8 detail_scale,
float detail_max
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexFilterMode_fpt)(GrChipID_t tmu, GrTextureFilterMode_t minfilter_mode,
GrTextureFilterMode_t magfilter_mode);
#else
FX_ENTRY void FX_CALL
grTexFilterMode(
GrChipID_t tmu,
GrTextureFilterMode_t minfilter_mode,
GrTextureFilterMode_t magfilter_mode
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexLodBiasValue_fpt)(GrChipID_t tmu, float bias);
#else
FX_ENTRY void FX_CALL
grTexLodBiasValue(GrChipID_t tmu, float bias);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexDownloadMipMap_fpt)(GrChipID_t tmu, FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info);
#else
FX_ENTRY void FX_CALL
grTexDownloadMipMap(GrChipID_t tmu,
FxU32 startAddress,
FxU32 evenOdd,
GrTexInfo *info);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexDownloadMipMapLevel_fpt)(GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLod,
GrLOD_t largeLod, GrAspectRatio_t aspectRatio,
GrTextureFormat_t format, FxU32 evenOdd, void *data);
#else
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);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexDownloadMipMapLevelPartial_fpt)(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);
#else
FX_ENTRY void 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);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *ConvertAndDownloadRle_fpt)(GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLod, GrLOD_t largeLod,
GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 evenOdd,
FxU8 *bm_data, long bm_h, FxU32 u0, FxU32 v0, FxU32 width,
FxU32 height, FxU32 dest_width, FxU32 dest_height, FxU16 *tlut);
#else
FX_ENTRY void FX_CALL
ConvertAndDownloadRle(GrChipID_t tmu,
FxU32 startAddress,
GrLOD_t thisLod,
GrLOD_t largeLod,
GrAspectRatio_t aspectRatio,
GrTextureFormat_t format,
FxU32 evenOdd,
FxU8 *bm_data,
long bm_h,
FxU32 u0,
FxU32 v0,
FxU32 width,
FxU32 height,
FxU32 dest_width,
FxU32 dest_height,
FxU16 *tlut);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grCheckForRoom_fpt)(FxI32 n);
#else
FX_ENTRY void FX_CALL
grCheckForRoom(FxI32 n);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexDownloadTable_fpt)(GrChipID_t tmu, GrTexTable_t type, void *data);
#else
FX_ENTRY void FX_CALL
grTexDownloadTable(GrChipID_t tmu,
GrTexTable_t type,
void *data);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexDownloadTablePartial_fpt)(GrChipID_t tmu, GrTexTable_t type, void *data, int start, int end);
#else
FX_ENTRY void FX_CALL
grTexDownloadTablePartial(GrChipID_t tmu,
GrTexTable_t type,
void *data,
int start,
int end);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexMipMapMode_fpt)(GrChipID_t tmu, GrMipMapMode_t mode, FxBool lodBlend);
#else
FX_ENTRY void FX_CALL
grTexMipMapMode(GrChipID_t tmu,
GrMipMapMode_t mode,
FxBool lodBlend);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexMultibase_fpt)(GrChipID_t tmu, FxBool enable);
#else
FX_ENTRY void FX_CALL
grTexMultibase(GrChipID_t tmu,
FxBool enable);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grTexMultibaseAddress_fpt)(GrChipID_t tmu, GrTexBaseRange_t range, FxU32 startAddress,
FxU32 evenOdd, GrTexInfo *info);
#else
FX_ENTRY void FX_CALL
grTexMultibaseAddress(GrChipID_t tmu,
GrTexBaseRange_t range,
FxU32 startAddress,
FxU32 evenOdd,
GrTexInfo *info);
#endif /* DYNAHEADER */
/*
** utility texture functions
*/
#ifdef DYNAHEADER
typedef GrMipMapId_t(FX_CALL *guTexAllocateMemory_fpt)(
GrChipID_t tmu, FxU8 odd_even_mask, int width, int height, GrTextureFormat_t fmt, GrMipMapMode_t mm_mode,
GrLOD_t smallest_lod, GrLOD_t largest_lod, GrAspectRatio_t aspect, GrTextureClampMode_t s_clamp_mode,
GrTextureClampMode_t t_clamp_mode, GrTextureFilterMode_t minfilter_mode, GrTextureFilterMode_t magfilter_mode,
float lod_bias, FxBool trilinear);
#else
FX_ENTRY GrMipMapId_t FX_CALL
guTexAllocateMemory(
GrChipID_t tmu,
FxU8 odd_even_mask,
int width, int height,
GrTextureFormat_t fmt,
GrMipMapMode_t mm_mode,
GrLOD_t smallest_lod, GrLOD_t largest_lod,
GrAspectRatio_t aspect,
GrTextureClampMode_t s_clamp_mode,
GrTextureClampMode_t t_clamp_mode,
GrTextureFilterMode_t minfilter_mode,
GrTextureFilterMode_t magfilter_mode,
float lod_bias,
FxBool trilinear
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *guTexChangeAttributes_fpt)(GrMipMapId_t mmid, int width, int height, GrTextureFormat_t fmt,
GrMipMapMode_t mm_mode, GrLOD_t smallest_lod, GrLOD_t largest_lod,
GrAspectRatio_t aspect, GrTextureClampMode_t s_clamp_mode,
GrTextureClampMode_t t_clamp_mode,
GrTextureFilterMode_t minFilterMode,
GrTextureFilterMode_t magFilterMode);
#else
FX_ENTRY FxBool FX_CALL
guTexChangeAttributes(
GrMipMapId_t mmid,
int width, int height,
GrTextureFormat_t fmt,
GrMipMapMode_t mm_mode,
GrLOD_t smallest_lod, GrLOD_t largest_lod,
GrAspectRatio_t aspect,
GrTextureClampMode_t s_clamp_mode,
GrTextureClampMode_t t_clamp_mode,
GrTextureFilterMode_t minFilterMode,
GrTextureFilterMode_t magFilterMode
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guTexCombineFunction_fpt)(GrChipID_t tmu, GrTextureCombineFnc_t fnc);
#else
FX_ENTRY void FX_CALL
guTexCombineFunction(
GrChipID_t tmu,
GrTextureCombineFnc_t fnc
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef GrMipMapId_t(FX_CALL *guTexGetCurrentMipMap_fpt)(GrChipID_t tmu);
#else
FX_ENTRY GrMipMapId_t FX_CALL
guTexGetCurrentMipMap(GrChipID_t tmu);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef GrMipMapInfo *(FX_CALL *guTexGetMipMapInfo_fpt)(GrMipMapId_t mmid);
#else
FX_ENTRY GrMipMapInfo *FX_CALL
guTexGetMipMapInfo(GrMipMapId_t mmid);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *guTexMemQueryAvail_fpt)(GrChipID_t tmu);
#else
FX_ENTRY FxU32 FX_CALL
guTexMemQueryAvail(GrChipID_t tmu);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guTexMemReset_fpt)(void);
#else
FX_ENTRY void FX_CALL
guTexMemReset(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guTexDownloadMipMap_fpt)(GrMipMapId_t mmid, const void *src, const GuNccTable *table);
#else
FX_ENTRY void FX_CALL
guTexDownloadMipMap(
GrMipMapId_t mmid,
const void *src,
const GuNccTable *table
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guTexDownloadMipMapLevel_fpt)(GrMipMapId_t mmid, GrLOD_t lod, const void **src);
#else
FX_ENTRY void FX_CALL
guTexDownloadMipMapLevel(
GrMipMapId_t mmid,
GrLOD_t lod,
const void **src
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guTexSource_fpt)(GrMipMapId_t id);
#else
FX_ENTRY void FX_CALL
guTexSource(GrMipMapId_t id);
#endif /* DYNAHEADER */
/*
** linear frame buffer functions
*/
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grLfbLock_fpt)(GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode,
GrOriginLocation_t origin, FxBool pixelPipeline, GrLfbInfo_t *info);
#else
FX_ENTRY FxBool FX_CALL
grLfbLock(GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode,
GrOriginLocation_t origin, FxBool pixelPipeline,
GrLfbInfo_t *info);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grLfbUnlock_fpt)(GrLock_t type, GrBuffer_t buffer);
#else
FX_ENTRY FxBool FX_CALL
grLfbUnlock(GrLock_t type, GrBuffer_t buffer);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grLfbConstantAlpha_fpt)(GrAlpha_t alpha);
#else
FX_ENTRY void FX_CALL
grLfbConstantAlpha(GrAlpha_t alpha);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grLfbConstantDepth_fpt)(FxU16 depth);
#else
FX_ENTRY void FX_CALL
grLfbConstantDepth(FxU16 depth);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grLfbWriteColorSwizzle_fpt)(FxBool swizzleBytes, FxBool swapWords);
#else
FX_ENTRY void FX_CALL
grLfbWriteColorSwizzle(FxBool swizzleBytes, FxBool swapWords);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grLfbWriteColorFormat_fpt)(GrColorFormat_t colorFormat);
#else
FX_ENTRY void FX_CALL
grLfbWriteColorFormat(GrColorFormat_t colorFormat);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grLfbWriteRegion_fpt)(GrBuffer_t dst_buffer, FxU32 dst_x, FxU32 dst_y, GrLfbSrcFmt_t src_format,
FxU32 src_width, FxU32 src_height, FxI32 src_stride, void *src_data);
#else
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,
FxI32 src_stride, void *src_data);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *grLfbReadRegion_fpt)(GrBuffer_t src_buffer, FxU32 src_x, FxU32 src_y, FxU32 src_width,
FxU32 src_height, FxU32 dst_stride, void *dst_data);
#else
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);
#endif /* DYNAHEADER */
/*
** Antialiasing Functions
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grAADrawLine_fpt)(const GrVertex *v1, const GrVertex *v2);
#else
FX_ENTRY void FX_CALL
grAADrawLine(const GrVertex *v1, const GrVertex *v2);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAADrawPoint_fpt)(const GrVertex *pt);
#else
FX_ENTRY void FX_CALL
grAADrawPoint(const GrVertex *pt);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAADrawPolygon_fpt)(const int nverts, const int ilist[], const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
grAADrawPolygon(const int nverts, const int ilist[], const GrVertex vlist[]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAADrawPolygonVertexList_fpt)(const int nverts, const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
grAADrawPolygonVertexList(const int nverts, const GrVertex vlist[]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grAADrawTriangle_fpt)(const GrVertex *a, const GrVertex *b, const GrVertex *c,
FxBool ab_antialias, FxBool bc_antialias, FxBool ca_antialias);
#else
FX_ENTRY void FX_CALL
grAADrawTriangle(
const GrVertex *a, const GrVertex *b, const GrVertex *c,
FxBool ab_antialias, FxBool bc_antialias, FxBool ca_antialias
);
#endif /* DYNAHEADER */
/*
** glide management functions
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *grGlideInit_fpt)(void);
#else
FX_ENTRY void FX_CALL
grGlideInit(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grGlideShutdown_fpt)(void);
#else
FX_ENTRY void FX_CALL
grGlideShutdown(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grGlideGetVersion_fpt)(char version[80]);
#else
FX_ENTRY void FX_CALL
grGlideGetVersion(char version[80]);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grGlideGetState_fpt)(GrState *state);
#else
FX_ENTRY void FX_CALL
grGlideGetState(GrState *state);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grGlideSetState_fpt)(const GrState *state);
#else
FX_ENTRY void FX_CALL
grGlideSetState(const GrState *state);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grGlideShamelessPlug_fpt)(const FxBool on);
#else
FX_ENTRY void FX_CALL
grGlideShamelessPlug(const FxBool on);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *grHints_fpt)(GrHint_t hintType, FxU32 hintMask);
#else
FX_ENTRY void FX_CALL
grHints(GrHint_t hintType, FxU32 hintMask);
#endif /* DYNAHEADER */
#endif /* FX_GLIDE_NO_FUNC_PROTO */
#ifdef __cplusplus
}
#endif
/* The following include has been replaced
* by the processed text from the header file.
* #include
*/
/*
** 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: /cvs/kevlar.net/descent3/Main/lib/linux/dyna_glide.h,v 1.1.1.1 2003/08/26 03:58:12 kevinb Exp $
** $Log: dyna_glide.h,v $
** Revision 1.1.1.1 2003/08/26 03:58:12 kevinb
** initial 1.5 import
**
*
* 2 7/14/99 6:43p Jeff
* change to load module globally
*
* 1 6/22/99 7:02p Jeff
*
* 4 2/19/99 11:49a Jason
* added more resolutions to glide
*
* 3 7/06/98 7:16p Jeff
* LoadGlideDLL no longer windows specific, calls module library
*
* 3 7/06/98 10:46a Jeff
* LoadGlideDLL uses the module library so it isn't Windows specific
*
* 2 3/02/98 5:15p Jason
* added support for dynamically loadable dlls
*
* 1 3/02/98 5:15p Jason
* header file for dynamically loadable dlls
*
* 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
#ifndef FX_GLIDE_NO_FUNC_PROTO
/*
** rendering functions
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *guAADrawTriangleWithClip_fpt)(const GrVertex *a, const GrVertex *b, const GrVertex *c);
#else
FX_ENTRY void FX_CALL
guAADrawTriangleWithClip(const GrVertex *a,
const GrVertex
*b,
const GrVertex *c);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guDrawTriangleWithClip_fpt)(const GrVertex *a, const GrVertex *b, const GrVertex *c);
#else
FX_ENTRY void FX_CALL
guDrawTriangleWithClip(
const GrVertex *a,
const GrVertex *b,
const GrVertex *c
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guDrawPolygonVertexListWithClip_fpt)(int nverts, const GrVertex vlist[]);
#else
FX_ENTRY void FX_CALL
guDrawPolygonVertexListWithClip(int nverts, const GrVertex vlist[]);
#endif /* DYNAHEADER */
/*
** hi-level rendering utility functions
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *guAlphaSource_fpt)(GrAlphaSource_t mode);
#else
FX_ENTRY void FX_CALL
guAlphaSource(GrAlphaSource_t mode);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guColorCombineFunction_fpt)(GrColorCombineFnc_t fnc);
#else
FX_ENTRY void FX_CALL
guColorCombineFunction(GrColorCombineFnc_t fnc);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guFbReadRegion_fpt)(const int src_x, const int src_y, const int w, const int h, const void *dst,
const int strideInBytes);
#else
FX_ENTRY void FX_CALL
guFbReadRegion(
const int src_x, const int src_y,
const int w, const int h, const void *dst,
const int strideInBytes
);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef int(FX_CALL *guEncodeRLE16_fpt)(void *dst, void *src, FxU32 width, FxU32 height);
#else
FX_ENTRY int FX_CALL
guEncodeRLE16(void *dst,
void *src,
FxU32 width,
FxU32 height);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU16 *(FX_CALL *guTexCreateColorMipMap_fpt)(void);
#else
FX_ENTRY FxU16 *FX_CALL
guTexCreateColorMipMap(void);
#endif /* DYNAHEADER */
#if (GLIDE_PLATFORM & GLIDE_SST_SIM)
/*
** movie capture stuff
*/
#ifdef DYNAHEADER
typedef void(FX_CALL *guMovieStart_fpt)(void);
#else
FX_ENTRY void
FX_CALL
guMovieStart(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guMovieStop_fpt)(void);
#else
FX_ENTRY void
FX_CALL
guMovieStop(void);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guMovieSetName_fpt)(const char *name);
#else
FX_ENTRY void
FX_CALL
guMovieSetName(const char *name);
#endif /* DYNAHEADER */
#endif
/*
** fog stuff
*/
#ifdef DYNAHEADER
typedef float(FX_CALL *guFogTableIndexToW_fpt)(int i);
#else
FX_ENTRY float FX_CALL
guFogTableIndexToW(int i);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guFogGenerateExp_fpt)(GrFog_t fogtable[GR_FOG_TABLE_SIZE], float density);
#else
FX_ENTRY void FX_CALL
guFogGenerateExp(GrFog_t fogtable[GR_FOG_TABLE_SIZE], float density);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guFogGenerateExp2_fpt)(GrFog_t fogtable[GR_FOG_TABLE_SIZE], float density);
#else
FX_ENTRY void FX_CALL
guFogGenerateExp2(GrFog_t fogtable[GR_FOG_TABLE_SIZE], float density);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef void(FX_CALL *guFogGenerateLinear_fpt)(GrFog_t fogtable[GR_FOG_TABLE_SIZE], float nearZ, float farZ);
#else
FX_ENTRY void FX_CALL
guFogGenerateLinear(
GrFog_t fogtable[GR_FOG_TABLE_SIZE],
float nearZ, float farZ);
#endif /* DYNAHEADER */
/*
** endian stuff
*/
#ifdef DYNAHEADER
typedef FxU32(FX_CALL *guEndianSwapWords_fpt)(FxU32 value);
#else
FX_ENTRY FxU32 FX_CALL
guEndianSwapWords(FxU32 value);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxU16(FX_CALL *guEndianSwapBytes_fpt)(FxU16 value);
#else
FX_ENTRY FxU16 FX_CALL
guEndianSwapBytes(FxU16 value);
#endif /* DYNAHEADER */
/*
** hi-level texture manipulation tools.
*/
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *gu3dfGetInfo_fpt)(const char *filename, Gu3dfInfo *info);
#else
FX_ENTRY FxBool FX_CALL
gu3dfGetInfo(const char *filename, Gu3dfInfo *info);
#endif /* DYNAHEADER */
#ifdef DYNAHEADER
typedef FxBool(FX_CALL *gu3dfLoad_fpt)(const char *filename, Gu3dfInfo *data);
#else
FX_ENTRY FxBool FX_CALL
gu3dfLoad(const char *filename, Gu3dfInfo *data);
#endif /* DYNAHEADER */
#endif /* FX_GLIDE_NO_FUNC_PROTO */
/*
** Glide structure-less primitive handling
*/
#define GU_PRIM_MAX_VERTICES 100
/* GMT: BUG what the hell is this!!! */
#if 0
extern GrVertex __gu_prim_vertex_array[GU_PRIM_MAX_VERTICES];
extern GrVertex * __gu_prim_current_vtx;
extern int __gu_prim_num_verts;
#define guPolygonBegin() \
__gu_prim_current_vtx = &__gu_prim_vertex_array[0]; \
__gu_prim_num_verts = 0;
#define guPolygonEnd()
#ifdef GLIDE_DEBUG
#define guPolygonDraw() grDrawPolygonVertexList(__gu_prim_num_verts, __gu_prim_vertex_array);
#define guPolygonDrawClipped() guDrawPolygonVertexListWithClip(__gu_prim_num_verts, __gu_prim_vertex_array);
#else
#define guPolygonDraw() if (__gu_prim_num_verts > GU_VTX_MAX_VERTICES) \
grErrorCallback( "guPolygonEnd (GLIDE.H) : GU_VTX_MAX_VERTICES exceed", FXTRUE ); \
if ( __gu_prim_num_verts < 3 ) \
grErrorCallback( "guPolygonEnd (GLIDE.H) : num_verts< 3", FXTRUE ); \
grDrawPolygonVertexList( __gu_prim_num_verts, __gu_prim_vertex_array );
#define guPolygonDrawClipped() if (__gu_prim_num_verts > GU_VTX_MAX_VERTICES) \
grErrorCallback( "guPolygonEnd (GLIDE.H) : GU_VTX_MAX_VERTICES exceed", FXTRUE ); \
if ( __gu_prim_num_verts < 3 ) \
grErrorCallback( "guPolygonEnd (GLIDE.H) : num_verts< 3", FXTRUE ); \
guDrawPolygonVertexListWithClip( __gu_prim_num_verts, __gu_prim_vertex_array );
#endif
#define guVertexBegin()
#define guVertexXY(x, y) \
__gu_prim_current_vtx->x = x; \
__gu_prim_current_vtx->y = y;
#define guVertexXYZ(x, y, z) \
__gu_prim_current_vtx->x = x; \
__gu_prim_current_vtx->y = y; \
__gu_prim_current_vtx->ooz = z;
#define guVertexXYW(x, y, w) \
__gu_prim_current_vtx->x = x; \
__gu_prim_current_vtx->y = y; \
__gu_prim_current_vtx->oow = w;
#define guVertexRGB(r, g, b) \
__gu_prim_current_vtx->r = r; \
__gu_prim_current_vtx->g = g; \
__gu_prim_current_vtx->b = b;
#define guVertexRGBA(r, g, b, a) \
__gu_prim_current_vtx->r = r; \
__gu_prim_current_vtx->g = g; \
__gu_prim_current_vtx->b = b; \
__gu_prim_current_vtx->a = a;
#define guVertexA(a) __gu_prim_current_vtx->a = a;
#define guVertexSTW0(c, s, t, w) __gu_prim_current_vtx->tmuvtx[(c)]->sow = s; \
__gu_prim_current_vtx->tmuvtx[(c)]->tow = t; \
__gu_prim_current_vtx->tmuvtx[(c)]->oow = w;
#define guVertexEnd() \
__gu_prim_current_vtx++; \
__gu_prim_num_verts++;
#endif
#ifdef __cplusplus
}
#endif
#endif /* __GLIDEUTL_H__ */
#ifdef DYNAHEADER_CREATE_STORAGE
#include "module.h"
static module glideDLLInst;
ConvertAndDownloadRle_fpt ConvertAndDownloadRle = NULL;
grAADrawLine_fpt grAADrawLine = NULL;
grAADrawPoint_fpt grAADrawPoint = NULL;
grAADrawPolygon_fpt grAADrawPolygon = NULL;
grAADrawPolygonVertexList_fpt grAADrawPolygonVertexList = NULL;
grAADrawTriangle_fpt grAADrawTriangle = NULL;
grAlphaBlendFunction_fpt grAlphaBlendFunction = NULL;
grAlphaCombine_fpt grAlphaCombine = NULL;
grAlphaControlsITRGBLighting_fpt grAlphaControlsITRGBLighting = NULL;
grAlphaTestFunction_fpt grAlphaTestFunction = NULL;
grAlphaTestReferenceValue_fpt grAlphaTestReferenceValue = NULL;
grBufferClear_fpt grBufferClear = NULL;
grBufferNumPending_fpt grBufferNumPending = NULL;
grBufferSwap_fpt grBufferSwap = NULL;
grCheckForRoom_fpt grCheckForRoom = NULL;
grChromakeyMode_fpt grChromakeyMode = NULL;
grChromakeyValue_fpt grChromakeyValue = NULL;
grClipWindow_fpt grClipWindow = NULL;
grColorCombine_fpt grColorCombine = NULL;
grColorMask_fpt grColorMask = NULL;
grConstantColorValue_fpt grConstantColorValue = NULL;
grConstantColorValue4_fpt grConstantColorValue4 = NULL;
grCullMode_fpt grCullMode = NULL;
grDepthBiasLevel_fpt grDepthBiasLevel = NULL;
grDepthBufferFunction_fpt grDepthBufferFunction = NULL;
grDepthBufferMode_fpt grDepthBufferMode = NULL;
grDepthMask_fpt grDepthMask = NULL;
grDisableAllEffects_fpt grDisableAllEffects = NULL;
grDitherMode_fpt grDitherMode = NULL;
grDrawLine_fpt grDrawLine = NULL;
grDrawPlanarPolygon_fpt grDrawPlanarPolygon = NULL;
grDrawPlanarPolygonVertexList_fpt grDrawPlanarPolygonVertexList = NULL;
grDrawPoint_fpt grDrawPoint = NULL;
grDrawPolygon_fpt grDrawPolygon = NULL;
grDrawPolygonVertexList_fpt grDrawPolygonVertexList = NULL;
grDrawTriangle_fpt grDrawTriangle = NULL;
grErrorSetCallback_fpt grErrorSetCallback = NULL;
grFogColorValue_fpt grFogColorValue = NULL;
grFogMode_fpt grFogMode = NULL;
grFogTable_fpt grFogTable = NULL;
grGammaCorrectionValue_fpt grGammaCorrectionValue = NULL;
grGlideGetState_fpt grGlideGetState = NULL;
grGlideGetVersion_fpt grGlideGetVersion = NULL;
grGlideInit_fpt grGlideInit = NULL;
grGlideSetState_fpt grGlideSetState = NULL;
grGlideShamelessPlug_fpt grGlideShamelessPlug = NULL;
grGlideShutdown_fpt grGlideShutdown = NULL;
grHints_fpt grHints = NULL;
grLfbConstantAlpha_fpt grLfbConstantAlpha = NULL;
grLfbConstantDepth_fpt grLfbConstantDepth = NULL;
grLfbLock_fpt grLfbLock = NULL;
grLfbReadRegion_fpt grLfbReadRegion = NULL;
grLfbUnlock_fpt grLfbUnlock = NULL;
grLfbWriteColorFormat_fpt grLfbWriteColorFormat = NULL;
grLfbWriteColorSwizzle_fpt grLfbWriteColorSwizzle = NULL;
grLfbWriteRegion_fpt grLfbWriteRegion = NULL;
grRenderBuffer_fpt grRenderBuffer = NULL;
grResetTriStats_fpt grResetTriStats = NULL;
grSplash_fpt grSplash = NULL;
grSstControl_fpt grSstControl = NULL;
grSstIdle_fpt grSstIdle = NULL;
grSstIsBusy_fpt grSstIsBusy = NULL;
grSstOrigin_fpt grSstOrigin = NULL;
grSstPerfStats_fpt grSstPerfStats = NULL;
grSstQueryBoards_fpt grSstQueryBoards = NULL;
grSstQueryHardware_fpt grSstQueryHardware = NULL;
grSstResetPerfStats_fpt grSstResetPerfStats = NULL;
grSstScreenHeight_fpt grSstScreenHeight = NULL;
grSstScreenWidth_fpt grSstScreenWidth = NULL;
grSstSelect_fpt grSstSelect = NULL;
grSstStatus_fpt grSstStatus = NULL;
grSstVRetraceOn_fpt grSstVRetraceOn = NULL;
grSstVideoLine_fpt grSstVideoLine = NULL;
grSstWinClose_fpt grSstWinClose = NULL;
grSstWinOpen_fpt grSstWinOpen = NULL;
grTexCalcMemRequired_fpt grTexCalcMemRequired = NULL;
grTexClampMode_fpt grTexClampMode = NULL;
grTexCombine_fpt grTexCombine = NULL;
grTexCombineFunction_fpt grTexCombineFunction = NULL;
grTexDetailControl_fpt grTexDetailControl = NULL;
grTexDownloadMipMap_fpt grTexDownloadMipMap = NULL;
grTexDownloadMipMapLevel_fpt grTexDownloadMipMapLevel = NULL;
grTexDownloadMipMapLevelPartial_fpt grTexDownloadMipMapLevelPartial = NULL;
grTexDownloadTable_fpt grTexDownloadTable = NULL;
grTexDownloadTablePartial_fpt grTexDownloadTablePartial = NULL;
grTexFilterMode_fpt grTexFilterMode = NULL;
grTexLodBiasValue_fpt grTexLodBiasValue = NULL;
grTexMaxAddress_fpt grTexMaxAddress = NULL;
grTexMinAddress_fpt grTexMinAddress = NULL;
grTexMipMapMode_fpt grTexMipMapMode = NULL;
grTexMultibase_fpt grTexMultibase = NULL;
grTexMultibaseAddress_fpt grTexMultibaseAddress = NULL;
grTexNCCTable_fpt grTexNCCTable = NULL;
grTexSource_fpt grTexSource = NULL;
grTexTextureMemRequired_fpt grTexTextureMemRequired = NULL;
grTriStats_fpt grTriStats = NULL;
gu3dfGetInfo_fpt gu3dfGetInfo = NULL;
gu3dfLoad_fpt gu3dfLoad = NULL;
guAADrawTriangleWithClip_fpt guAADrawTriangleWithClip = NULL;
guAlphaSource_fpt guAlphaSource = NULL;
guColorCombineFunction_fpt guColorCombineFunction = NULL;
guDrawPolygonVertexListWithClip_fpt guDrawPolygonVertexListWithClip = NULL;
guDrawTriangleWithClip_fpt guDrawTriangleWithClip = NULL;
guEncodeRLE16_fpt guEncodeRLE16 = NULL;
guEndianSwapBytes_fpt guEndianSwapBytes = NULL;
guEndianSwapWords_fpt guEndianSwapWords = NULL;
guFbReadRegion_fpt guFbReadRegion = NULL;
guFogGenerateExp_fpt guFogGenerateExp = NULL;
guFogGenerateExp2_fpt guFogGenerateExp2 = NULL;
guFogGenerateLinear_fpt guFogGenerateLinear = NULL;
guFogTableIndexToW_fpt guFogTableIndexToW = NULL;
guTexAllocateMemory_fpt guTexAllocateMemory = NULL;
guTexChangeAttributes_fpt guTexChangeAttributes = NULL;
guTexCombineFunction_fpt guTexCombineFunction = NULL;
guTexCreateColorMipMap_fpt guTexCreateColorMipMap = NULL;
guTexDownloadMipMap_fpt guTexDownloadMipMap = NULL;
guTexDownloadMipMapLevel_fpt guTexDownloadMipMapLevel = NULL;
guTexGetCurrentMipMap_fpt guTexGetCurrentMipMap = NULL;
guTexGetMipMapInfo_fpt guTexGetMipMapInfo = NULL;
guTexMemQueryAvail_fpt guTexMemQueryAvail = NULL;
guTexMemReset_fpt guTexMemReset = NULL;
guTexSource_fpt guTexSource = NULL;
module *LoadGlideDLL() {
if (!mod_LoadModule(&glideDLLInst, "libglide2x.so", MODF_LAZY | MODF_GLOBAL)) {
int err = mod_GetLastError();
return NULL;
}
#if defined(WIN32)
ConvertAndDownloadRle = (ConvertAndDownloadRle_fpt)mod_GetSymbol(&glideDLLInst, "ConvertAndDownloadRle", 64);
if (!ConvertAndDownloadRle)
goto glide_load_dll_error;
#endif
grAADrawLine = (grAADrawLine_fpt)mod_GetSymbol(&glideDLLInst, "grAADrawLine", 8);
if (!grAADrawLine)
goto glide_load_dll_error;
grAADrawPoint = (grAADrawPoint_fpt)mod_GetSymbol(&glideDLLInst, "grAADrawPoint", 4);
if (!grAADrawPoint)
goto glide_load_dll_error;
grAADrawPolygon = (grAADrawPolygon_fpt)mod_GetSymbol(&glideDLLInst, "grAADrawPolygon", 12);
if (!grAADrawPolygon)
goto glide_load_dll_error;
grAADrawPolygonVertexList =
(grAADrawPolygonVertexList_fpt)mod_GetSymbol(&glideDLLInst, "grAADrawPolygonVertexList", 8);
if (!grAADrawPolygonVertexList)
goto glide_load_dll_error;
grAADrawTriangle = (grAADrawTriangle_fpt)mod_GetSymbol(&glideDLLInst, "grAADrawTriangle", 24);
if (!grAADrawTriangle)
goto glide_load_dll_error;
grAlphaBlendFunction = (grAlphaBlendFunction_fpt)mod_GetSymbol(&glideDLLInst, "grAlphaBlendFunction", 16);
if (!grAlphaBlendFunction)
goto glide_load_dll_error;
grAlphaCombine = (grAlphaCombine_fpt)mod_GetSymbol(&glideDLLInst, "grAlphaCombine", 20);
if (!grAlphaCombine)
goto glide_load_dll_error;
grAlphaControlsITRGBLighting =
(grAlphaControlsITRGBLighting_fpt)mod_GetSymbol(&glideDLLInst, "grAlphaControlsITRGBLighting", 4);
if (!grAlphaControlsITRGBLighting)
goto glide_load_dll_error;
grAlphaTestFunction = (grAlphaTestFunction_fpt)mod_GetSymbol(&glideDLLInst, "grAlphaTestFunction", 4);
if (!grAlphaTestFunction)
goto glide_load_dll_error;
grAlphaTestReferenceValue =
(grAlphaTestReferenceValue_fpt)mod_GetSymbol(&glideDLLInst, "grAlphaTestReferenceValue", 4);
if (!grAlphaTestReferenceValue)
goto glide_load_dll_error;
grBufferClear = (grBufferClear_fpt)mod_GetSymbol(&glideDLLInst, "grBufferClear", 12);
if (!grBufferClear)
goto glide_load_dll_error;
grBufferNumPending = (grBufferNumPending_fpt)mod_GetSymbol(&glideDLLInst, "grBufferNumPending", 0);
if (!grBufferNumPending)
goto glide_load_dll_error;
grBufferSwap = (grBufferSwap_fpt)mod_GetSymbol(&glideDLLInst, "grBufferSwap", 4);
if (!grBufferSwap)
goto glide_load_dll_error;
grCheckForRoom = (grCheckForRoom_fpt)mod_GetSymbol(&glideDLLInst, "grCheckForRoom", 4);
if (!grCheckForRoom)
goto glide_load_dll_error;
grChromakeyMode = (grChromakeyMode_fpt)mod_GetSymbol(&glideDLLInst, "grChromakeyMode", 4);
if (!grChromakeyMode)
goto glide_load_dll_error;
grChromakeyValue = (grChromakeyValue_fpt)mod_GetSymbol(&glideDLLInst, "grChromakeyValue", 4);
if (!grChromakeyValue)
goto glide_load_dll_error;
grClipWindow = (grClipWindow_fpt)mod_GetSymbol(&glideDLLInst, "grClipWindow", 16);
if (!grClipWindow)
goto glide_load_dll_error;
grColorCombine = (grColorCombine_fpt)mod_GetSymbol(&glideDLLInst, "grColorCombine", 20);
if (!grColorCombine)
goto glide_load_dll_error;
grColorMask = (grColorMask_fpt)mod_GetSymbol(&glideDLLInst, "grColorMask", 8);
if (!grColorMask)
goto glide_load_dll_error;
grConstantColorValue = (grConstantColorValue_fpt)mod_GetSymbol(&glideDLLInst, "grConstantColorValue", 4);
if (!grConstantColorValue)
goto glide_load_dll_error;
grConstantColorValue4 = (grConstantColorValue4_fpt)mod_GetSymbol(&glideDLLInst, "grConstantColorValue4", 16);
if (!grConstantColorValue4)
goto glide_load_dll_error;
grCullMode = (grCullMode_fpt)mod_GetSymbol(&glideDLLInst, "grCullMode", 4);
if (!grCullMode)
goto glide_load_dll_error;
grDepthBiasLevel = (grDepthBiasLevel_fpt)mod_GetSymbol(&glideDLLInst, "grDepthBiasLevel", 4);
if (!grDepthBiasLevel)
goto glide_load_dll_error;
grDepthBufferFunction = (grDepthBufferFunction_fpt)mod_GetSymbol(&glideDLLInst, "grDepthBufferFunction", 4);
if (!grDepthBufferFunction)
goto glide_load_dll_error;
grDepthBufferMode = (grDepthBufferMode_fpt)mod_GetSymbol(&glideDLLInst, "grDepthBufferMode", 4);
if (!grDepthBufferMode)
goto glide_load_dll_error;
grDepthMask = (grDepthMask_fpt)mod_GetSymbol(&glideDLLInst, "grDepthMask", 4);
if (!grDepthMask)
goto glide_load_dll_error;
grDisableAllEffects = (grDisableAllEffects_fpt)mod_GetSymbol(&glideDLLInst, "grDisableAllEffects", 0);
if (!grDisableAllEffects)
goto glide_load_dll_error;
grDitherMode = (grDitherMode_fpt)mod_GetSymbol(&glideDLLInst, "grDitherMode", 4);
if (!grDitherMode)
goto glide_load_dll_error;
grDrawLine = (grDrawLine_fpt)mod_GetSymbol(&glideDLLInst, "grDrawLine", 8);
if (!grDrawLine)
goto glide_load_dll_error;
grDrawPlanarPolygon = (grDrawPlanarPolygon_fpt)mod_GetSymbol(&glideDLLInst, "grDrawPlanarPolygon", 12);
if (!grDrawPlanarPolygon)
goto glide_load_dll_error;
grDrawPlanarPolygonVertexList =
(grDrawPlanarPolygonVertexList_fpt)mod_GetSymbol(&glideDLLInst, "grDrawPlanarPolygonVertexList", 8);
if (!grDrawPlanarPolygonVertexList)
goto glide_load_dll_error;
grDrawPoint = (grDrawPoint_fpt)mod_GetSymbol(&glideDLLInst, "grDrawPoint", 4);
if (!grDrawPoint)
goto glide_load_dll_error;
grDrawPolygon = (grDrawPolygon_fpt)mod_GetSymbol(&glideDLLInst, "grDrawPolygon", 12);
if (!grDrawPolygon)
goto glide_load_dll_error;
grDrawPolygonVertexList = (grDrawPolygonVertexList_fpt)mod_GetSymbol(&glideDLLInst, "grDrawPolygonVertexList", 8);
if (!grDrawPolygonVertexList)
goto glide_load_dll_error;
grDrawTriangle = (grDrawTriangle_fpt)mod_GetSymbol(&glideDLLInst, "grDrawTriangle", 12);
if (!grDrawTriangle)
goto glide_load_dll_error;
grErrorSetCallback = (grErrorSetCallback_fpt)mod_GetSymbol(&glideDLLInst, "grErrorSetCallback", 4);
if (!grErrorSetCallback)
goto glide_load_dll_error;
grFogColorValue = (grFogColorValue_fpt)mod_GetSymbol(&glideDLLInst, "grFogColorValue", 4);
if (!grFogColorValue)
goto glide_load_dll_error;
grFogMode = (grFogMode_fpt)mod_GetSymbol(&glideDLLInst, "grFogMode", 4);
if (!grFogMode)
goto glide_load_dll_error;
grFogTable = (grFogTable_fpt)mod_GetSymbol(&glideDLLInst, "grFogTable", 4);
if (!grFogTable)
goto glide_load_dll_error;
grGammaCorrectionValue = (grGammaCorrectionValue_fpt)mod_GetSymbol(&glideDLLInst, "grGammaCorrectionValue", 4);
if (!grGammaCorrectionValue)
goto glide_load_dll_error;
grGlideGetState = (grGlideGetState_fpt)mod_GetSymbol(&glideDLLInst, "grGlideGetState", 4);
if (!grGlideGetState)
goto glide_load_dll_error;
grGlideGetVersion = (grGlideGetVersion_fpt)mod_GetSymbol(&glideDLLInst, "grGlideGetVersion", 4);
if (!grGlideGetVersion)
goto glide_load_dll_error;
grGlideInit = (grGlideInit_fpt)mod_GetSymbol(&glideDLLInst, "grGlideInit", 0);
if (!grGlideInit)
goto glide_load_dll_error;
grGlideSetState = (grGlideSetState_fpt)mod_GetSymbol(&glideDLLInst, "grGlideSetState", 4);
if (!grGlideSetState)
goto glide_load_dll_error;
grGlideShamelessPlug = (grGlideShamelessPlug_fpt)mod_GetSymbol(&glideDLLInst, "grGlideShamelessPlug", 4);
if (!grGlideShamelessPlug)
goto glide_load_dll_error;
grGlideShutdown = (grGlideShutdown_fpt)mod_GetSymbol(&glideDLLInst, "grGlideShutdown", 0);
if (!grGlideShutdown)
goto glide_load_dll_error;
grHints = (grHints_fpt)mod_GetSymbol(&glideDLLInst, "grHints", 8);
if (!grHints)
goto glide_load_dll_error;
grLfbConstantAlpha = (grLfbConstantAlpha_fpt)mod_GetSymbol(&glideDLLInst, "grLfbConstantAlpha", 4);
if (!grLfbConstantAlpha)
goto glide_load_dll_error;
grLfbConstantDepth = (grLfbConstantDepth_fpt)mod_GetSymbol(&glideDLLInst, "grLfbConstantDepth", 4);
if (!grLfbConstantDepth)
goto glide_load_dll_error;
grLfbLock = (grLfbLock_fpt)mod_GetSymbol(&glideDLLInst, "grLfbLock", 24);
if (!grLfbLock)
goto glide_load_dll_error;
grLfbReadRegion = (grLfbReadRegion_fpt)mod_GetSymbol(&glideDLLInst, "grLfbReadRegion", 28);
if (!grLfbReadRegion)
goto glide_load_dll_error;
grLfbUnlock = (grLfbUnlock_fpt)mod_GetSymbol(&glideDLLInst, "grLfbUnlock", 8);
if (!grLfbUnlock)
goto glide_load_dll_error;
grLfbWriteColorFormat = (grLfbWriteColorFormat_fpt)mod_GetSymbol(&glideDLLInst, "grLfbWriteColorFormat", 4);
if (!grLfbWriteColorFormat)
goto glide_load_dll_error;
grLfbWriteColorSwizzle = (grLfbWriteColorSwizzle_fpt)mod_GetSymbol(&glideDLLInst, "grLfbWriteColorSwizzle", 8);
if (!grLfbWriteColorSwizzle)
goto glide_load_dll_error;
grLfbWriteRegion = (grLfbWriteRegion_fpt)mod_GetSymbol(&glideDLLInst, "grLfbWriteRegion", 32);
if (!grLfbWriteRegion)
goto glide_load_dll_error;
grRenderBuffer = (grRenderBuffer_fpt)mod_GetSymbol(&glideDLLInst, "grRenderBuffer", 4);
if (!grRenderBuffer)
goto glide_load_dll_error;
grResetTriStats = (grResetTriStats_fpt)mod_GetSymbol(&glideDLLInst, "grResetTriStats", 0);
if (!grResetTriStats)
goto glide_load_dll_error;
grSplash = (grSplash_fpt)mod_GetSymbol(&glideDLLInst, "grSplash", 20);
if (!grSplash)
goto glide_load_dll_error;
grSstControl = (grSstControl_fpt)mod_GetSymbol(&glideDLLInst, "grSstControl", 4);
if (!grSstControl)
goto glide_load_dll_error;
grSstIdle = (grSstIdle_fpt)mod_GetSymbol(&glideDLLInst, "grSstIdle", 0);
if (!grSstIdle)
goto glide_load_dll_error;
grSstIsBusy = (grSstIsBusy_fpt)mod_GetSymbol(&glideDLLInst, "grSstIsBusy", 0);
if (!grSstIsBusy)
goto glide_load_dll_error;
grSstOrigin = (grSstOrigin_fpt)mod_GetSymbol(&glideDLLInst, "grSstOrigin", 4);
if (!grSstOrigin)
goto glide_load_dll_error;
grSstPerfStats = (grSstPerfStats_fpt)mod_GetSymbol(&glideDLLInst, "grSstPerfStats", 4);
if (!grSstPerfStats)
goto glide_load_dll_error;
grSstQueryBoards = (grSstQueryBoards_fpt)mod_GetSymbol(&glideDLLInst, "grSstQueryBoards", 4);
if (!grSstQueryBoards)
goto glide_load_dll_error;
grSstQueryHardware = (grSstQueryHardware_fpt)mod_GetSymbol(&glideDLLInst, "grSstQueryHardware", 4);
if (!grSstQueryHardware)
goto glide_load_dll_error;
grSstResetPerfStats = (grSstResetPerfStats_fpt)mod_GetSymbol(&glideDLLInst, "grSstResetPerfStats", 0);
if (!grSstResetPerfStats)
goto glide_load_dll_error;
grSstScreenHeight = (grSstScreenHeight_fpt)mod_GetSymbol(&glideDLLInst, "grSstScreenHeight", 0);
if (!grSstScreenHeight)
goto glide_load_dll_error;
grSstScreenWidth = (grSstScreenWidth_fpt)mod_GetSymbol(&glideDLLInst, "grSstScreenWidth", 0);
if (!grSstScreenWidth)
goto glide_load_dll_error;
grSstSelect = (grSstSelect_fpt)mod_GetSymbol(&glideDLLInst, "grSstSelect", 4);
if (!grSstSelect)
goto glide_load_dll_error;
grSstStatus = (grSstStatus_fpt)mod_GetSymbol(&glideDLLInst, "grSstStatus", 0);
if (!grSstStatus)
goto glide_load_dll_error;
grSstVRetraceOn = (grSstVRetraceOn_fpt)mod_GetSymbol(&glideDLLInst, "grSstVRetraceOn", 0);
if (!grSstVRetraceOn)
goto glide_load_dll_error;
grSstVideoLine = (grSstVideoLine_fpt)mod_GetSymbol(&glideDLLInst, "grSstVideoLine", 0);
if (!grSstVideoLine)
goto glide_load_dll_error;
grSstWinClose = (grSstWinClose_fpt)mod_GetSymbol(&glideDLLInst, "grSstWinClose", 0);
if (!grSstWinClose)
goto glide_load_dll_error;
grSstWinOpen = (grSstWinOpen_fpt)mod_GetSymbol(&glideDLLInst, "grSstWinOpen", 28);
if (!grSstWinOpen)
goto glide_load_dll_error;
grTexCalcMemRequired = (grTexCalcMemRequired_fpt)mod_GetSymbol(&glideDLLInst, "grTexCalcMemRequired", 16);
if (!grTexCalcMemRequired)
goto glide_load_dll_error;
grTexClampMode = (grTexClampMode_fpt)mod_GetSymbol(&glideDLLInst, "grTexClampMode", 12);
if (!grTexClampMode)
goto glide_load_dll_error;
grTexCombine = (grTexCombine_fpt)mod_GetSymbol(&glideDLLInst, "grTexCombine", 28);
if (!grTexCombine)
goto glide_load_dll_error;
grTexCombineFunction = (grTexCombineFunction_fpt)mod_GetSymbol(&glideDLLInst, "grTexCombineFunction", 8);
if (!grTexCombineFunction)
goto glide_load_dll_error;
grTexDetailControl = (grTexDetailControl_fpt)mod_GetSymbol(&glideDLLInst, "grTexDetailControl", 16);
if (!grTexDetailControl)
goto glide_load_dll_error;
grTexDownloadMipMap = (grTexDownloadMipMap_fpt)mod_GetSymbol(&glideDLLInst, "grTexDownloadMipMap", 16);
if (!grTexDownloadMipMap)
goto glide_load_dll_error;
grTexDownloadMipMapLevel = (grTexDownloadMipMapLevel_fpt)mod_GetSymbol(&glideDLLInst, "grTexDownloadMipMapLevel", 32);
if (!grTexDownloadMipMapLevel)
goto glide_load_dll_error;
grTexDownloadMipMapLevelPartial =
(grTexDownloadMipMapLevelPartial_fpt)mod_GetSymbol(&glideDLLInst, "grTexDownloadMipMapLevelPartial", 40);
if (!grTexDownloadMipMapLevelPartial)
goto glide_load_dll_error;
grTexDownloadTable = (grTexDownloadTable_fpt)mod_GetSymbol(&glideDLLInst, "grTexDownloadTable", 12);
if (!grTexDownloadTable)
goto glide_load_dll_error;
grTexDownloadTablePartial =
(grTexDownloadTablePartial_fpt)mod_GetSymbol(&glideDLLInst, "grTexDownloadTablePartial", 20);
if (!grTexDownloadTablePartial)
goto glide_load_dll_error;
grTexFilterMode = (grTexFilterMode_fpt)mod_GetSymbol(&glideDLLInst, "grTexFilterMode", 12);
if (!grTexFilterMode)
goto glide_load_dll_error;
grTexLodBiasValue = (grTexLodBiasValue_fpt)mod_GetSymbol(&glideDLLInst, "grTexLodBiasValue", 8);
if (!grTexLodBiasValue)
goto glide_load_dll_error;
grTexMaxAddress = (grTexMaxAddress_fpt)mod_GetSymbol(&glideDLLInst, "grTexMaxAddress", 4);
if (!grTexMaxAddress)
goto glide_load_dll_error;
grTexMinAddress = (grTexMinAddress_fpt)mod_GetSymbol(&glideDLLInst, "grTexMinAddress", 4);
if (!grTexMinAddress)
goto glide_load_dll_error;
grTexMipMapMode = (grTexMipMapMode_fpt)mod_GetSymbol(&glideDLLInst, "grTexMipMapMode", 12);
if (!grTexMipMapMode)
goto glide_load_dll_error;
grTexMultibase = (grTexMultibase_fpt)mod_GetSymbol(&glideDLLInst, "grTexMultibase", 8);
if (!grTexMultibase)
goto glide_load_dll_error;
grTexMultibaseAddress = (grTexMultibaseAddress_fpt)mod_GetSymbol(&glideDLLInst, "grTexMultibaseAddress", 20);
if (!grTexMultibaseAddress)
goto glide_load_dll_error;
grTexNCCTable = (grTexNCCTable_fpt)mod_GetSymbol(&glideDLLInst, "grTexNCCTable", 8);
if (!grTexNCCTable)
goto glide_load_dll_error;
grTexSource = (grTexSource_fpt)mod_GetSymbol(&glideDLLInst, "grTexSource", 16);
if (!grTexSource)
goto glide_load_dll_error;
grTexTextureMemRequired = (grTexTextureMemRequired_fpt)mod_GetSymbol(&glideDLLInst, "grTexTextureMemRequired", 8);
if (!grTexTextureMemRequired)
goto glide_load_dll_error;
grTriStats = (grTriStats_fpt)mod_GetSymbol(&glideDLLInst, "grTriStats", 8);
if (!grTriStats)
goto glide_load_dll_error;
gu3dfGetInfo = (gu3dfGetInfo_fpt)mod_GetSymbol(&glideDLLInst, "gu3dfGetInfo", 8);
if (!gu3dfGetInfo)
goto glide_load_dll_error;
gu3dfLoad = (gu3dfLoad_fpt)mod_GetSymbol(&glideDLLInst, "gu3dfLoad", 8);
if (!gu3dfLoad)
goto glide_load_dll_error;
guAADrawTriangleWithClip = (guAADrawTriangleWithClip_fpt)mod_GetSymbol(&glideDLLInst, "guAADrawTriangleWithClip", 12);
if (!guAADrawTriangleWithClip)
goto glide_load_dll_error;
guAlphaSource = (guAlphaSource_fpt)mod_GetSymbol(&glideDLLInst, "guAlphaSource", 4);
if (!guAlphaSource)
goto glide_load_dll_error;
guColorCombineFunction = (guColorCombineFunction_fpt)mod_GetSymbol(&glideDLLInst, "guColorCombineFunction", 4);
if (!guColorCombineFunction)
goto glide_load_dll_error;
guDrawPolygonVertexListWithClip =
(guDrawPolygonVertexListWithClip_fpt)mod_GetSymbol(&glideDLLInst, "guDrawPolygonVertexListWithClip", 8);
if (!guDrawPolygonVertexListWithClip)
goto glide_load_dll_error;
guDrawTriangleWithClip = (guDrawTriangleWithClip_fpt)mod_GetSymbol(&glideDLLInst, "guDrawTriangleWithClip", 12);
if (!guDrawTriangleWithClip)
goto glide_load_dll_error;
guEncodeRLE16 = (guEncodeRLE16_fpt)mod_GetSymbol(&glideDLLInst, "guEncodeRLE16", 16);
if (!guEncodeRLE16)
goto glide_load_dll_error;
guEndianSwapBytes = (guEndianSwapBytes_fpt)mod_GetSymbol(&glideDLLInst, "guEndianSwapBytes", 4);
if (!guEndianSwapBytes)
goto glide_load_dll_error;
guEndianSwapWords = (guEndianSwapWords_fpt)mod_GetSymbol(&glideDLLInst, "guEndianSwapWords", 4);
if (!guEndianSwapWords)
goto glide_load_dll_error;
guFogGenerateExp = (guFogGenerateExp_fpt)mod_GetSymbol(&glideDLLInst, "guFogGenerateExp", 8);
if (!guFogGenerateExp)
goto glide_load_dll_error;
guFogGenerateExp2 = (guFogGenerateExp2_fpt)mod_GetSymbol(&glideDLLInst, "guFogGenerateExp2", 8);
if (!guFogGenerateExp2)
goto glide_load_dll_error;
guFogGenerateLinear = (guFogGenerateLinear_fpt)mod_GetSymbol(&glideDLLInst, "guFogGenerateLinear", 12);
if (!guFogGenerateLinear)
goto glide_load_dll_error;
guFogTableIndexToW = (guFogTableIndexToW_fpt)mod_GetSymbol(&glideDLLInst, "guFogTableIndexToW", 4);
if (!guFogTableIndexToW)
goto glide_load_dll_error;
guTexAllocateMemory = (guTexAllocateMemory_fpt)mod_GetSymbol(&glideDLLInst, "guTexAllocateMemory", 60);
if (!guTexAllocateMemory)
goto glide_load_dll_error;
guTexChangeAttributes = (guTexChangeAttributes_fpt)mod_GetSymbol(&glideDLLInst, "guTexChangeAttributes", 48);
if (!guTexChangeAttributes)
goto glide_load_dll_error;
guTexCombineFunction = (guTexCombineFunction_fpt)mod_GetSymbol(&glideDLLInst, "guTexCombineFunction", 8);
if (!guTexCombineFunction)
goto glide_load_dll_error;
guTexCreateColorMipMap = (guTexCreateColorMipMap_fpt)mod_GetSymbol(&glideDLLInst, "guTexCreateColorMipMap", 0);
if (!guTexCreateColorMipMap)
goto glide_load_dll_error;
guTexDownloadMipMap = (guTexDownloadMipMap_fpt)mod_GetSymbol(&glideDLLInst, "guTexDownloadMipMap", 12);
if (!guTexDownloadMipMap)
goto glide_load_dll_error;
guTexDownloadMipMapLevel = (guTexDownloadMipMapLevel_fpt)mod_GetSymbol(&glideDLLInst, "guTexDownloadMipMapLevel", 12);
if (!guTexDownloadMipMapLevel)
goto glide_load_dll_error;
guTexGetCurrentMipMap = (guTexGetCurrentMipMap_fpt)mod_GetSymbol(&glideDLLInst, "guTexGetCurrentMipMap", 4);
if (!guTexGetCurrentMipMap)
goto glide_load_dll_error;
guTexGetMipMapInfo = (guTexGetMipMapInfo_fpt)mod_GetSymbol(&glideDLLInst, "guTexGetMipMapInfo", 4);
if (!guTexGetMipMapInfo)
goto glide_load_dll_error;
guTexMemQueryAvail = (guTexMemQueryAvail_fpt)mod_GetSymbol(&glideDLLInst, "guTexMemQueryAvail", 4);
if (!guTexMemQueryAvail)
goto glide_load_dll_error;
guTexMemReset = (guTexMemReset_fpt)mod_GetSymbol(&glideDLLInst, "guTexMemReset", 0);
if (!guTexMemReset)
goto glide_load_dll_error;
guTexSource = (guTexSource_fpt)mod_GetSymbol(&glideDLLInst, "guTexSource", 4);
if (!guTexSource)
goto glide_load_dll_error;
return &glideDLLInst;
glide_load_dll_error:
mod_FreeModule(&glideDLLInst);
return NULL;
}
/* #endif DYNAHEADER_CREATE_STORAGE */
#elif DYNAHEADER
extern ConvertAndDownloadRle_fpt ConvertAndDownloadRle;
extern grAADrawLine_fpt grAADrawLine;
extern grAADrawPoint_fpt grAADrawPoint;
extern grAADrawPolygon_fpt grAADrawPolygon;
extern grAADrawPolygonVertexList_fpt grAADrawPolygonVertexList;
extern grAADrawTriangle_fpt grAADrawTriangle;
extern grAlphaBlendFunction_fpt grAlphaBlendFunction;
extern grAlphaCombine_fpt grAlphaCombine;
extern grAlphaControlsITRGBLighting_fpt grAlphaControlsITRGBLighting;
extern grAlphaTestFunction_fpt grAlphaTestFunction;
extern grAlphaTestReferenceValue_fpt grAlphaTestReferenceValue;
extern grBufferClear_fpt grBufferClear;
extern grBufferNumPending_fpt grBufferNumPending;
extern grBufferSwap_fpt grBufferSwap;
extern grCheckForRoom_fpt grCheckForRoom;
extern grChromakeyMode_fpt grChromakeyMode;
extern grChromakeyValue_fpt grChromakeyValue;
extern grClipWindow_fpt grClipWindow;
extern grColorCombine_fpt grColorCombine;
extern grColorMask_fpt grColorMask;
extern grConstantColorValue_fpt grConstantColorValue;
extern grConstantColorValue4_fpt grConstantColorValue4;
extern grCullMode_fpt grCullMode;
extern grDepthBiasLevel_fpt grDepthBiasLevel;
extern grDepthBufferFunction_fpt grDepthBufferFunction;
extern grDepthBufferMode_fpt grDepthBufferMode;
extern grDepthMask_fpt grDepthMask;
extern grDisableAllEffects_fpt grDisableAllEffects;
extern grDitherMode_fpt grDitherMode;
extern grDrawLine_fpt grDrawLine;
extern grDrawPlanarPolygon_fpt grDrawPlanarPolygon;
extern grDrawPlanarPolygonVertexList_fpt grDrawPlanarPolygonVertexList;
extern grDrawPoint_fpt grDrawPoint;
extern grDrawPolygon_fpt grDrawPolygon;
extern grDrawPolygonVertexList_fpt grDrawPolygonVertexList;
extern grDrawTriangle_fpt grDrawTriangle;
extern grErrorSetCallback_fpt grErrorSetCallback;
extern grFogColorValue_fpt grFogColorValue;
extern grFogMode_fpt grFogMode;
extern grFogTable_fpt grFogTable;
extern grGammaCorrectionValue_fpt grGammaCorrectionValue;
extern grGlideGetState_fpt grGlideGetState;
extern grGlideGetVersion_fpt grGlideGetVersion;
extern grGlideInit_fpt grGlideInit;
extern grGlideSetState_fpt grGlideSetState;
extern grGlideShamelessPlug_fpt grGlideShamelessPlug;
extern grGlideShutdown_fpt grGlideShutdown;
extern grHints_fpt grHints;
extern grLfbConstantAlpha_fpt grLfbConstantAlpha;
extern grLfbConstantDepth_fpt grLfbConstantDepth;
extern grLfbLock_fpt grLfbLock;
extern grLfbReadRegion_fpt grLfbReadRegion;
extern grLfbUnlock_fpt grLfbUnlock;
extern grLfbWriteColorFormat_fpt grLfbWriteColorFormat;
extern grLfbWriteColorSwizzle_fpt grLfbWriteColorSwizzle;
extern grLfbWriteRegion_fpt grLfbWriteRegion;
extern grRenderBuffer_fpt grRenderBuffer;
extern grResetTriStats_fpt grResetTriStats;
extern grSplash_fpt grSplash;
extern grSstControl_fpt grSstControl;
extern grSstIdle_fpt grSstIdle;
extern grSstIsBusy_fpt grSstIsBusy;
extern grSstOrigin_fpt grSstOrigin;
extern grSstPerfStats_fpt grSstPerfStats;
extern grSstQueryBoards_fpt grSstQueryBoards;
extern grSstQueryHardware_fpt grSstQueryHardware;
extern grSstResetPerfStats_fpt grSstResetPerfStats;
extern grSstScreenHeight_fpt grSstScreenHeight;
extern grSstScreenWidth_fpt grSstScreenWidth;
extern grSstSelect_fpt grSstSelect;
extern grSstStatus_fpt grSstStatus;
extern grSstVRetraceOn_fpt grSstVRetraceOn;
extern grSstVideoLine_fpt grSstVideoLine;
extern grSstWinClose_fpt grSstWinClose;
extern grSstWinOpen_fpt grSstWinOpen;
extern grTexCalcMemRequired_fpt grTexCalcMemRequired;
extern grTexClampMode_fpt grTexClampMode;
extern grTexCombine_fpt grTexCombine;
extern grTexCombineFunction_fpt grTexCombineFunction;
extern grTexDetailControl_fpt grTexDetailControl;
extern grTexDownloadMipMap_fpt grTexDownloadMipMap;
extern grTexDownloadMipMapLevel_fpt grTexDownloadMipMapLevel;
extern grTexDownloadMipMapLevelPartial_fpt grTexDownloadMipMapLevelPartial;
extern grTexDownloadTable_fpt grTexDownloadTable;
extern grTexDownloadTablePartial_fpt grTexDownloadTablePartial;
extern grTexFilterMode_fpt grTexFilterMode;
extern grTexLodBiasValue_fpt grTexLodBiasValue;
extern grTexMaxAddress_fpt grTexMaxAddress;
extern grTexMinAddress_fpt grTexMinAddress;
extern grTexMipMapMode_fpt grTexMipMapMode;
extern grTexMultibase_fpt grTexMultibase;
extern grTexMultibaseAddress_fpt grTexMultibaseAddress;
extern grTexNCCTable_fpt grTexNCCTable;
extern grTexSource_fpt grTexSource;
extern grTexTextureMemRequired_fpt grTexTextureMemRequired;
extern grTriStats_fpt grTriStats;
extern gu3dfGetInfo_fpt gu3dfGetInfo;
extern gu3dfLoad_fpt gu3dfLoad;
extern guAADrawTriangleWithClip_fpt guAADrawTriangleWithClip;
extern guAlphaSource_fpt guAlphaSource;
extern guColorCombineFunction_fpt guColorCombineFunction;
extern guDrawPolygonVertexListWithClip_fpt guDrawPolygonVertexListWithClip;
extern guDrawTriangleWithClip_fpt guDrawTriangleWithClip;
extern guEncodeRLE16_fpt guEncodeRLE16;
extern guEndianSwapBytes_fpt guEndianSwapBytes;
extern guEndianSwapWords_fpt guEndianSwapWords;
extern guFbReadRegion_fpt guFbReadRegion;
extern guFogGenerateExp_fpt guFogGenerateExp;
extern guFogGenerateExp2_fpt guFogGenerateExp2;
extern guFogGenerateLinear_fpt guFogGenerateLinear;
extern guFogTableIndexToW_fpt guFogTableIndexToW;
extern guMovieSetName_fpt guMovieSetName;
extern guMovieStart_fpt guMovieStart;
extern guMovieStop_fpt guMovieStop;
extern guTexAllocateMemory_fpt guTexAllocateMemory;
extern guTexChangeAttributes_fpt guTexChangeAttributes;
extern guTexCombineFunction_fpt guTexCombineFunction;
extern guTexCreateColorMipMap_fpt guTexCreateColorMipMap;
extern guTexDownloadMipMap_fpt guTexDownloadMipMap;
extern guTexDownloadMipMapLevel_fpt guTexDownloadMipMapLevel;
extern guTexGetCurrentMipMap_fpt guTexGetCurrentMipMap;
extern guTexGetMipMapInfo_fpt guTexGetMipMapInfo;
extern guTexMemQueryAvail_fpt guTexMemQueryAvail;
extern guTexMemReset_fpt guTexMemReset;
extern guTexSource_fpt guTexSource;
#include "module.h"
extern module glideDLLInst = {NULL};
#endif /* DYNAHEADER */
#endif /* __GLIDE_H__ */