Morph-SynRJ

changeset 0:22de913c2d84 tip

morph-synrj intro
author "Cedric Pinson <cedric.pinson@alcove.fr> <mornifle@plopbyte.net>"
date Tue Nov 27 15:23:52 2007 +0100 (2007-11-27)
parents
children
files EviL-Kudo10.xm EviL-Kudo16.xm GL/GLwDrawA.h GL/GLwDrawAP.h GL/GLwMDrawA.h GL/GLwMDrawAP.h GL/gl.h GL/glext.h GL/glu.h GL/glut.h GL/glutf90.h GL/glx.h GL/glxext.h GL/glxint.h GL/glxmd.h GL/glxproto.h GL/glxtokens.h GL/osmesa.h SOTA Intro.dsp SOTA Intro.dsw Script5.aps Script5.rc cmn_design.cxx cmn_design.h cmn_intro.cxx cmn_intro.h cmn_shape.cxx cmn_shape.h cmn_texture.cxx cmn_texture.h efx_equa.cxx efx_equa.h efx_equa2.cxx efx_equa2.h efx_harmonics.cxx efx_harmonics.h efx_rub.cxx efx_rub.h efx_screen0.cxx efx_screen0.h efx_screen1.cxx efx_screen1.h efx_screen2.cxx efx_screen2.h efx_screen3.cxx efx_screen3.h efx_screen4.cxx efx_screen4.h efx_touf.cxx efx_touf.h font_16x16.bmp font_16x16_corrected.bmp font_8x16.bmp font_8x16squaremin.bmp fxSync.cxx fxSync.h gl_header.h main.cxx minifmod.lib minifmod/Fmusic.c minifmod/Fsound.c minifmod/Mixer.h minifmod/Music.h minifmod/Sound.h minifmod/Winmm.lib minifmod/minifmod.h minifmod/mixer_clipcopy.c minifmod/mixer_clipcopy.h minifmod/mixer_fpu_ramp.c minifmod/mixer_fpu_ramp.h minifmod/music_formatxm.c minifmod/music_formatxm.h minifmod/system_file.c minifmod/system_file.h minifmod/system_memory.h minifmod/xmeffects.h mth.cxx mth.h mth_hermite.h mth_perlin.cxx mth_perlin.h mth_plane3.h mth_quaternion.h mth_vector2.h mth_vector3.h phy.h phy_element.h phy_server.cxx phy_server.h rdr_font.cxx rdr_font.h resource.h smplInfo.h sndDetect.cxx sndDetect.h sys_assert.cxx sys_assert.h trans_crossradial.cxx trans_crossradial.h trans_explode.cxx trans_explode.h trans_explode2.cxx trans_explode2.h trans_fade.cxx trans_fade.h trans_glow.cxx trans_glow.h trans_puzzle.cxx trans_puzzle.h trans_radial.cxx trans_radial.h window_fmod_init.cpp window_fmod_init.h
line diff
     1.1 Binary file EviL-Kudo10.xm has changed
     2.1 Binary file EviL-Kudo16.xm has changed
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/GL/GLwDrawA.h	Tue Nov 27 15:23:52 2007 +0100
     3.3 @@ -0,0 +1,226 @@
     3.4 +/*
     3.5 +** License Applicability. Except to the extent portions of this file are
     3.6 +** made subject to an alternative license as permitted in the SGI Free
     3.7 +** Software License B, Version 1.1 (the "License"), the contents of this
     3.8 +** file are subject only to the provisions of the License. You may not use
     3.9 +** this file except in compliance with the License. You may obtain a copy
    3.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
    3.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
    3.12 +** 
    3.13 +** http://oss.sgi.com/projects/FreeB
    3.14 +** 
    3.15 +** Note that, as provided in the License, the Software is distributed on an
    3.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
    3.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
    3.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
    3.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
    3.20 +** 
    3.21 +** Original Code. The Original Code is: OpenGL Sample Implementation,
    3.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
    3.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
    3.24 +** Copyright in any portions created by third parties is as indicated
    3.25 +** elsewhere herein. All Rights Reserved.
    3.26 +** 
    3.27 +** Additional Notice Provisions: The application programming interfaces
    3.28 +** established by SGI in conjunction with the Original Code are The
    3.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
    3.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
    3.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
    3.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software
    3.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation
    3.34 +** published by SGI, but has not been independently verified as being
    3.35 +** compliant with the OpenGL(R) version 1.2.1 Specification.
    3.36 +**
    3.37 +*/
    3.38 +
    3.39 +/*
    3.40 +** This file has been slightly modified from the original by Carlos A. M. dos
    3.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source
    3.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets
    3.43 +** in the same library.
    3.44 +*/
    3.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.h,v 1.4 2002/05/31 16:36:50 dawes Exp $ */
    3.46 +
    3.47 +#ifndef _GLwDrawA_h
    3.48 +#define _GLwDrawA_h
    3.49 +
    3.50 +#ifdef __GLX_MOTIF
    3.51 +# ifndef __GLX_INCLUDE_XM_H	/* Defined during library compilation */
    3.52 +#  include <Xm/Xm.h>		/* We need to know about XmVERSION early */
    3.53 +# endif
    3.54 +#endif
    3.55 +
    3.56 +#include <GL/glx.h>
    3.57 +#include <GL/gl.h>
    3.58 +
    3.59 +/****************************************************************
    3.60 + *
    3.61 + * GLwDrawingArea widgets
    3.62 + *
    3.63 + ****************************************************************/
    3.64 +
    3.65 +/* Resources:
    3.66 +
    3.67 + Name		     Class		RepType		Default Value
    3.68 + ----		     -----		-------		-------------
    3.69 + attribList	     AttribList		int *		NULL
    3.70 + visualInfo	     VisualInfo		VisualInfo	NULL
    3.71 + installColormap     InstallColormap	Boolean		TRUE
    3.72 + allocateBackground  AllocateColors	Boolean		FALSE
    3.73 + allocateOtherColors AllocateColors	Boolean		FALSE
    3.74 + installBackground   InstallBackground	Boolean		TRUE
    3.75 + exposeCallback      Callback		Pointer		NULL
    3.76 + ginitCallback       Callback		Pointer		NULL
    3.77 + inputCallback       Callback		Pointer		NULL
    3.78 + resizeCallback      Callback		Pointer		NULL
    3.79 +
    3.80 +*** The following resources all correspond to the GLX configuration
    3.81 +*** attributes and are used to create the attribList if it is NULL
    3.82 + bufferSize	     BufferSize		int		0
    3.83 + level		     Level		int		0
    3.84 + rgba		     Rgba		Boolean		FALSE
    3.85 + doublebuffer	     Doublebuffer	Boolean		FALSE
    3.86 + stereo		     Stereo		Boolean		FALSE
    3.87 + auxBuffers	     AuxBuffers		int		0
    3.88 + redSize	     ColorSize		int		1
    3.89 + greenSize	     ColorSize		int		1
    3.90 + blueSize	     ColorSize		int		1
    3.91 + alphaSize	     AlphaSize		int		0
    3.92 + depthSize	     DepthSize		int		0
    3.93 + stencilSize	     StencilSize	int		0
    3.94 + accumRedSize	     AccumColorSize	int		0
    3.95 + accumGreenSize	     AccumColorSize	int		0
    3.96 + accumBlueSize	     AccumColorSize	int		0
    3.97 + accumAlphaSize	     AccumAlphaSize	int		0
    3.98 +*/
    3.99 +
   3.100 +#define GLwNattribList		"attribList"
   3.101 +#define GLwCAttribList		"AttribList"
   3.102 +#define GLwNvisualInfo		"visualInfo"
   3.103 +#define GLwCVisualInfo		"VisualInfo"
   3.104 +#define GLwRVisualInfo		"VisualInfo"
   3.105 +
   3.106 +#define GLwNinstallColormap	"installColormap"
   3.107 +#define GLwCInstallColormap	"InstallColormap"
   3.108 +#define GLwNallocateBackground	"allocateBackground"
   3.109 +#define GLwNallocateOtherColors	"allocateOtherColors"
   3.110 +#define GLwCAllocateColors	"AllocateColors"
   3.111 +#define GLwNinstallBackground	"installBackground"
   3.112 +#define GLwCInstallBackground	"InstallBackground"
   3.113 +
   3.114 +#define GLwCCallback		"Callback"
   3.115 +#define GLwNexposeCallback	"exposeCallback"
   3.116 +#define GLwNginitCallback	"ginitCallback"
   3.117 +#define GLwNresizeCallback	"resizeCallback"
   3.118 +#define GLwNinputCallback	"inputCallback"
   3.119 +
   3.120 +#define GLwNbufferSize		"bufferSize"
   3.121 +#define GLwCBufferSize		"BufferSize"
   3.122 +#define GLwNlevel		"level"
   3.123 +#define GLwCLevel		"Level"
   3.124 +#define GLwNrgba		"rgba"
   3.125 +#define GLwCRgba		"Rgba"
   3.126 +#define GLwNdoublebuffer	"doublebuffer"
   3.127 +#define GLwCDoublebuffer	"Doublebuffer"
   3.128 +#define GLwNstereo		"stereo"
   3.129 +#define GLwCStereo		"Stereo"
   3.130 +#define GLwNauxBuffers		"auxBuffers"
   3.131 +#define GLwCAuxBuffers		"AuxBuffers"
   3.132 +#define GLwNredSize		"redSize"
   3.133 +#define GLwNgreenSize		"greenSize"
   3.134 +#define GLwNblueSize		"blueSize"
   3.135 +#define GLwCColorSize		"ColorSize"
   3.136 +#define GLwNalphaSize		"alphaSize"
   3.137 +#define GLwCAlphaSize		"AlphaSize"
   3.138 +#define GLwNdepthSize		"depthSize"
   3.139 +#define GLwCDepthSize		"DepthSize"
   3.140 +#define GLwNstencilSize		"stencilSize"
   3.141 +#define GLwCStencilSize		"StencilSize"
   3.142 +#define GLwNaccumRedSize	"accumRedSize"
   3.143 +#define GLwNaccumGreenSize	"accumGreenSize"
   3.144 +#define GLwNaccumBlueSize	"accumBlueSize"
   3.145 +#define GLwCAccumColorSize	"AccumColorSize"
   3.146 +#define GLwNaccumAlphaSize	"accumAlphaSize"
   3.147 +#define GLwCAccumAlphaSize	"AccumAlphaSize"
   3.148 +
   3.149 +#ifdef __GLX_MOTIF
   3.150 +
   3.151 +#if XmVERSION == 1
   3.152 +/*
   3.153 +#  define _GLwMDrawingAreaClassRec	_GLwM1DrawingAreaClassRec
   3.154 +#  define _GLwMDrawingAreaRec		_GLwM1DrawingAreaRec
   3.155 +*/
   3.156 +#  define glwMDrawingAreaWidgetClass	glwM1DrawingAreaWidgetClass
   3.157 +#  define glwMDrawingAreaClassRec	glwM1DrawingAreaClassRec
   3.158 +#  define GLwCreateMDrawingArea		GLwCreateM1DrawingArea
   3.159 +#elif XmVERSION == 2
   3.160 +/*
   3.161 +#  define _GLwMDrawingAreaClassRec	_GLwM2DrawingAreaClassRec
   3.162 +#  define _GLwMDrawingAreaRec		_GLwM2DrawingAreaRec
   3.163 +*/
   3.164 +#  define glwMDrawingAreaWidgetClass	glwM2DrawingAreaWidgetClass
   3.165 +#  define glwMDrawingAreaClassRec	glwM2DrawingAreaClassRec
   3.166 +#  define GLwCreateMDrawingArea		GLwCreateM2DrawingArea
   3.167 +#else
   3.168 +#error "Sorry, unknown Motif version."
   3.169 +#endif /* XmVERSION */
   3.170 +
   3.171 +typedef struct _GLwMDrawingAreaClassRec	*GLwMDrawingAreaWidgetClass;
   3.172 +typedef struct _GLwMDrawingAreaRec	*GLwMDrawingAreaWidget;
   3.173 +
   3.174 +extern WidgetClass glwMDrawingAreaWidgetClass;
   3.175 +
   3.176 +#else /* not __GLX_MOTIF */
   3.177 +
   3.178 +typedef struct _GLwDrawingAreaClassRec	*GLwDrawingAreaWidgetClass;
   3.179 +typedef struct _GLwDrawingAreaRec	*GLwDrawingAreaWidget;
   3.180 +
   3.181 +extern WidgetClass glwDrawingAreaWidgetClass;
   3.182 +
   3.183 +#endif /* __GLX_MOTIF */
   3.184 +
   3.185 +/* Callback reasons */
   3.186 +#ifdef __GLX_MOTIF
   3.187 +#define GLwCR_EXPOSE	XmCR_EXPOSE
   3.188 +#define GLwCR_RESIZE	XmCR_RESIZE
   3.189 +#define GLwCR_INPUT	XmCR_INPUT
   3.190 +#else /* not __GLX_MOTIF */
   3.191 +/* The same values as Motif, but don't use Motif constants */
   3.192 +#define GLwCR_EXPOSE	38
   3.193 +#define GLwCR_RESIZE	39
   3.194 +#define GLwCR_INPUT	40
   3.195 +#endif /* __GLX_MOTIF */
   3.196 +
   3.197 +#define GLwCR_GINIT	32135	/* Arbitrary number that should neverr clash*/
   3.198 +
   3.199 +typedef struct
   3.200 +{
   3.201 +    int     reason;
   3.202 +    XEvent  *event;
   3.203 +    Dimension width, height;		/* for resize callback */
   3.204 +} GLwDrawingAreaCallbackStruct;
   3.205 +
   3.206 +#if defined(__cplusplus) || defined(c_plusplus)
   3.207 +extern "C" {
   3.208 +#endif
   3.209 +
   3.210 +/* front ends to glXMakeCurrent and glXSwapBuffers */
   3.211 +extern void GLwDrawingAreaMakeCurrent (Widget w, GLXContext ctx);
   3.212 +extern void GLwDrawingAreaSwapBuffers (Widget w);
   3.213 +
   3.214 +#ifdef __GLX_MOTIF
   3.215 +#ifdef _NO_PROTO
   3.216 +extern Widget GLwCreateMDrawingArea ();
   3.217 +#else /* _NO_PROTO */
   3.218 +
   3.219 +extern Widget GLwCreateMDrawingArea (Widget parent, char *name,
   3.220 +				     ArgList arglist, Cardinal argcount);
   3.221 +#endif /* _NO_PROTO */
   3.222 +
   3.223 +#endif /* __GLX_MOTIF */
   3.224 +
   3.225 +#if defined(__cplusplus) || defined(c_plusplus)
   3.226 +}
   3.227 +#endif
   3.228 +
   3.229 +#endif /* _GLwDrawA_h */
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/GL/GLwDrawAP.h	Tue Nov 27 15:23:52 2007 +0100
     4.3 @@ -0,0 +1,127 @@
     4.4 +/*
     4.5 +** License Applicability. Except to the extent portions of this file are
     4.6 +** made subject to an alternative license as permitted in the SGI Free
     4.7 +** Software License B, Version 1.1 (the "License"), the contents of this
     4.8 +** file are subject only to the provisions of the License. You may not use
     4.9 +** this file except in compliance with the License. You may obtain a copy
    4.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
    4.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
    4.12 +** 
    4.13 +** http://oss.sgi.com/projects/FreeB
    4.14 +** 
    4.15 +** Note that, as provided in the License, the Software is distributed on an
    4.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
    4.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
    4.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
    4.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
    4.20 +** 
    4.21 +** Original Code. The Original Code is: OpenGL Sample Implementation,
    4.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
    4.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
    4.24 +** Copyright in any portions created by third parties is as indicated
    4.25 +** elsewhere herein. All Rights Reserved.
    4.26 +** 
    4.27 +** Additional Notice Provisions: The application programming interfaces
    4.28 +** established by SGI in conjunction with the Original Code are The
    4.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
    4.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
    4.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
    4.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software
    4.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation
    4.34 +** published by SGI, but has not been independently verified as being
    4.35 +** compliant with the OpenGL(R) version 1.2.1 Specification.
    4.36 +**
    4.37 +*/
    4.38 +
    4.39 +/*
    4.40 +** This file has been slightly modified from the original by Carlos A. M. dos
    4.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source
    4.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets
    4.43 +** in the same library.
    4.44 +*/
    4.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawAP.h,v 1.3 2001/05/02 13:37:45 dawes Exp $ */
    4.46 +
    4.47 +#ifndef _GLwDrawAP_h
    4.48 +#define _GLwDrawAP_h
    4.49 +
    4.50 +#ifdef __GLX_MOTIF
    4.51 +# ifndef __GLX_INCLUDE_PRIMITIVE_P_H	/* Used during library compilation */
    4.52 +#  include <Xm/PrimitiveP.h>
    4.53 +# endif
    4.54 +# include <GL/GLwMDrawA.h>		/* includes IntrinsicP.h */
    4.55 +#else
    4.56 +# include <X11/IntrinsicP.h>
    4.57 +# include <GL/GLwDrawA.h>
    4.58 +#endif
    4.59 +
    4.60 +typedef struct _GLwDrawingAreaClassPart
    4.61 +{
    4.62 +    char* extension;
    4.63 +} GLwDrawingAreaClassPart;
    4.64 +
    4.65 +#ifdef __GLX_MOTIF
    4.66 +typedef struct _GLwMDrawingAreaClassRec {
    4.67 +    CoreClassPart		core_class;
    4.68 +    XmPrimitiveClassPart	primitive_class;
    4.69 +    GLwDrawingAreaClassPart	glwDrawingArea_class;
    4.70 +} GLwMDrawingAreaClassRec;
    4.71 +
    4.72 +extern GLwMDrawingAreaClassRec glwMDrawingAreaClassRec;
    4.73 +
    4.74 +#else /* not __GLX_MOTIF */
    4.75 +
    4.76 +typedef struct _GLwDrawingAreaClassRec {
    4.77 +    CoreClassPart		core_class;
    4.78 +    GLwDrawingAreaClassPart	glwDrawingArea_class;
    4.79 +} GLwDrawingAreaClassRec;
    4.80 +
    4.81 +extern GLwDrawingAreaClassRec glwDrawingAreaClassRec;
    4.82 +#endif /* __GLX_MOTIF */
    4.83 +
    4.84 +typedef struct {
    4.85 +    /* resources */
    4.86 +    int *		attribList;
    4.87 +    XVisualInfo *	visualInfo;
    4.88 +    Boolean		myList;		/* TRUE if we malloced the attribList*/
    4.89 +    Boolean		myVisual;	/* TRUE if we created the visualInfo*/
    4.90 +    Boolean		installColormap;
    4.91 +    Boolean		allocateBackground;
    4.92 +    Boolean		allocateOisuormap;
    4.93 +    B6ca/f stae*/
    4.94 +  i
    4.95 +    ifo*r EalInfo;,oun;
    4.96 +   )kiutypedef sfo*r EalInfo;,oun;
    4.97 +   )kiutypeinpuuormap;
    4.98 +    B6c		/sverifiefo *	vi** systdationf wand newfo *	vi** ssRec;
    4.99 +#endi			bufferS if;c;
   4.100 +#endi			lle I    Boolean		alrgba    Boolean		aldoateebuffer    Boolean		al Noreo;c;
   4.101 +#endi			auxBuffers;c;
   4.102 +#endi			redS if;c;
   4.103 +#endi			gandnS if;c;
   4.104 +#endi			blueS if;c;
   4.105 +#endi			alphaS if;c;
   4.106 +#endi			.1 thS if;c;
   4.107 +#endi			 NoncilS if;c;
   4.108 +#endi			accumRedS if;c;
   4.109 +#endi			accumGandnS if;c;
   4.110 +#endi			accumBlueS if;c;
   4.111 +#endi			accumAlphaS if;ct		core_class;
   4.112 + DrawingAreaClassPart
   4.113 +{
   4.114 +    char* extension;
   4.115 +} GLwDrawingA
   4.116 +#else /* not _MOTIF */
   4.117 +f struct _GLwMDrareaClassRec {
   4.118 +ef struct _GLwDrawinClassRec {
   4.119 +    Coreprimitive_class;
   4.120 +  gAreaClRec;
   4.121 +
   4.122 +extern GLwMDrawingAraClassRec glwMDrawingAreaClass
   4.123 +#else /* not _MOTIF */
   4.124 +f struuct _GLwDrawinClassRec {
   4.125 +    Coreprimitie_class;
   4.126 +  gAreaClassRec;
   4.127 +
   4.128 +extern GLwDrawiClassRec;
   4.129 +
   4.130 +itie_cl2 1Draw
   4.131 \ No newline at end of file
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/GL/GLwMDrawA.h	Tue Nov 27 15:23:52 2007 +0100
     5.3 @@ -0,0 +1,47 @@
     5.4 +/*
     5.5 +** License Applicability. Except to the extent portions of this file are
     5.6 +** made subject to an alternative license as permitted in the SGI Free
     5.7 +** Software License B, Version 1.1 (the "License"), the contents of this
     5.8 +** file are subject only to the provisions of the License. You may not use
     5.9 +** this file except in compliance with the License. You may obtain a copy
    5.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
    5.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
    5.12 +** 
    5.13 +** http://oss.sgi.com/projects/FreeB
    5.14 +** 
    5.15 +** Note that, as provided in the License, the Software is distributed on an
    5.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
    5.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
    5.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
    5.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
    5.20 +** 
    5.21 +** Original Code. The Original Code is: OpenGL Sample Implementation,
    5.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
    5.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
    5.24 +** Copyright in any portions created by third parties is as indicated
    5.25 +** elsewhere herein. All Rights Reserved.
    5.26 +** 
    5.27 +** Additional Notice Provisions: The application programming interfaces
    5.28 +** established by SGI in conjunction with the Original Code are The
    5.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
    5.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
    5.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
    5.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software
    5.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation
    5.34 +** published by SGI, but has not been independently verified as being
    5.35 +** compliant with the OpenGL(R) version 1.2.1 Specification.
    5.36 +**
    5.37 +*/
    5.38 +
    5.39 +/*
    5.40 +** This file has been slightly modified from the original by Carlos A. M. dos
    5.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source
    5.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets
    5.43 +** in the same library.
    5.44 +*/
    5.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwMDrawA.h,v 1.3 2001/05/02 13:37:45 dawes Exp $ */
    5.46 +
    5.47 +#ifndef __GLX_MOTIF
    5.48 +#define __GLX_MOTIF 1
    5.49 +#endif
    5.50 +#include <GL/GLwDrawA.h>
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/GL/GLwMDrawAP.h	Tue Nov 27 15:23:52 2007 +0100
     6.3 @@ -0,0 +1,47 @@
     6.4 +/*
     6.5 +** License Applicability. Except to the extent portions of this file are
     6.6 +** made subject to an alternative license as permitted in the SGI Free
     6.7 +** Software License B, Version 1.1 (the "License"), the contents of this
     6.8 +** file are subject only to the provisions of the License. You may not use
     6.9 +** this file except in compliance with the License. You may obtain a copy
    6.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
    6.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
    6.12 +** 
    6.13 +** http://oss.sgi.com/projects/FreeB
    6.14 +** 
    6.15 +** Note that, as provided in the License, the Software is distributed on an
    6.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
    6.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
    6.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
    6.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
    6.20 +** 
    6.21 +** Original Code. The Original Code is: OpenGL Sample Implementation,
    6.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
    6.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
    6.24 +** Copyright in any portions created by third parties is as indicated
    6.25 +** elsewhere herein. All Rights Reserved.
    6.26 +** 
    6.27 +** Additional Notice Provisions: The application programming interfaces
    6.28 +** established by SGI in conjunction with the Original Code are The
    6.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
    6.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
    6.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
    6.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software
    6.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation
    6.34 +** published by SGI, but has not been independently verified as being
    6.35 +** compliant with the OpenGL(R) version 1.2.1 Specification.
    6.36 +**
    6.37 +*/
    6.38 +
    6.39 +/*
    6.40 +** This file has been slightly modified from the original by Carlos A. M. dos
    6.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source
    6.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets
    6.43 +** in the same library.
    6.44 +*/
    6.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwMDrawAP.h,v 1.3 2001/05/02 13:37:45 dawes Exp $ */
    6.46 +
    6.47 +#ifndef __GLX_MOTIF
    6.48 +#define __GLX_MOTIF 1
    6.49 +#endif
    6.50 +#include <GL/GLwDrawAP.h>
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/GL/gl.h	Tue Nov 27 15:23:52 2007 +0100
     7.3 @@ -0,0 +1,3284 @@
     7.4 +#ifndef __gl_h_
     7.5 +#define __gl_h_
     7.6 +
     7.7 +#ifdef __cplusplus
     7.8 +extern "C" {
     7.9 +#endif
    7.10 +
    7.11 +/*
    7.12 +** Copyright 1998-2002, NVIDIA Corporation.
    7.13 +** All Rights Reserved.
    7.14 +** 
    7.15 +** THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL TO
    7.16 +** NVIDIA, CORPORATION.  USE, REPRODUCTION OR DISCLOSURE TO ANY THIRD PARTY
    7.17 +** IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORPORATION.
    7.18 +** 
    7.19 +** 
    7.20 +** Copyright 1992-1999, Silicon Graphics, Inc.
    7.21 +** All Rights Reserved.
    7.22 +** 
    7.23 +** Portions of this file are UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon
    7.24 +** Graphics, Inc.; the contents of this file may not be disclosed to third
    7.25 +** parties, copied or duplicated in any form, in whole or in part, without
    7.26 +** the prior written permission of Silicon Graphics, Inc.
    7.27 +** 
    7.28 +** RESTRICTED RIGHTS LEGEND:
    7.29 +** Use, duplication or disclosure by the Government is subject to
    7.30 +** restrictions as set forth in subdivision (c)(1)(ii) of the Rights in
    7.31 +** Technical Data and Computer Software clause at DFARS 252.227-7013,
    7.32 +** and/or in similar or successor clauses in the FAR, DOD or NASA FAR
    7.33 +** Supplement.  Unpublished - rights reserved under the Copyright Laws of
    7.34 +** the United States.
    7.35 +*/
    7.36 +
    7.37 +#ifndef GLAPI
    7.38 +# ifdef _WIN32
    7.39 +#  define GLAPI __stdcall
    7.40 +# else
    7.41 +#  define GLAPI
    7.42 +# endif
    7.43 +# define __DEFINED_GLAPI
    7.44 +#endif
    7.45 +
    7.46 +typedef unsigned int GLenum;
    7.47 +typedef unsigned char GLboolean;
    7.48 +typedef unsigned int GLbitfield;
    7.49 +typedef signed char GLbyte;
    7.50 +typedef short GLshort;
    7.51 +typedef int GLint;
    7.52 +typedef int GLsizei;
    7.53 +typedef unsigned char GLubyte;
    7.54 +typedef unsigned short GLushort;
    7.55 +typedef unsigned int GLuint;
    7.56 +typedef unsigned short GLhalf;
    7.57 +typedef float GLfloat;
    7.58 +typedef float GLclampf;
    7.59 +typedef double GLdouble;
    7.60 +typedef double GLclampd;
    7.61 +typedef void GLvoid;
    7.62 +
    7.63 +#if defined(_WIN64)
    7.64 +    typedef __int64 GLintptrARB;
    7.65 +    typedef __int64 GLsizeiptrARB;
    7.66 +#elif defined(__ia64__) || defined(__x86_64__)
    7.67 +    typedef long int GLintptrARB;
    7.68 +    typedef long int GLsizeiptrARB;
    7.69 +#else
    7.70 +    typedef int GLintptrARB;
    7.71 +    typedef int GLsizeiptrARB;
    7.72 +#endif
    7.73 +
    7.74 +/*************************************************************/
    7.75 +
    7.76 +/* Version */
    7.77 +#define GL_VERSION_1_1                    1
    7.78 +#define GL_VERSION_1_2                    1
    7.79 +#define GL_VERSION_1_3                    1
    7.80 +#define GL_VERSION_1_4                    1
    7.81 +
    7.82 +/* Extensions */
    7.83 +#define GL_ARB_depth_texture              1
    7.84 +#define GL_ARB_fragment_program           1
    7.85 +#define GL_ARB_imaging                    1
    7.86 +#define GL_ARB_multisample                1
    7.87 +#define GL_ARB_multitexture               1
    7.88 +#define GL_ARB_point_parameters           1
    7.89 +#define GL_ARB_shadow                     1
    7.90 +#define GL_ARB_shadow_ambient             1
    7.91 +#define GL_ARB_texture_border_clamp       1
    7.92 +#define GL_ARB_texture_compression        1
    7.93 +#define GL_ARB_texture_cube_map           1
    7.94 +#define GL_ARB_texture_env_add            1
    7.95 +#define GL_ARB_texture_env_combine        1
    7.96 +#define GL_ARB_texture_env_dot3           1
    7.97 +#define GL_ARB_texture_mirrored_repeat    1
    7.98 +#define GL_ARB_transpose_matrix           1
    7.99 +#define GL_ARB_vertex_buffer_object       1
   7.100 +#define GL_ARB_vertex_program             1
   7.101 +#define GL_ARB_window_pos                 1
   7.102 +#define GL_Autodesk_valid_back_buffer_hint 1
   7.103 +#define GL_EXT_abgr                       1
   7.104 +#define GL_EXT_bgra                       1
   7.105 +#define GL_EXT_blend_color                1
   7.106 +#define GL_EXT_blend_func_separate        1
   7.107 +#define GL_EXT_blend_minmax               1
   7.108 +#define GL_EXT_blend_subtract             1
   7.109 +#define GL_EXT_clip_volume_hint           1
   7.110 +#define GL_EXT_compiled_vertex_array      1
   7.111 +#define GL_EXT_color_table                1
   7.112 +#define GL_EXT_depth_bounds_test          1
   7.113 +#define GL_EXT_draw_range_elements        1
   7.114 +#define GL_EXT_fog_coord                  1
   7.115 +#define GL_EXT_multi_draw_arrays          1
   7.116 +#define GL_EXT_packed_pixels              1
   7.117 +#define GL_EXT_paletted_texture           1
   7.118 +#define GL_EXT_point_parameters           1
   7.119 +#define GL_EXT_rescale_normal             1
   7.120 +#define GL_EXT_secondary_color            1
   7.121 +#define GL_EXT_separate_specular_color    1
   7.122 +#define GL_EXT_shadow_funcs               1
   7.123 +#define GL_EXT_shared_texture_palette     1
   7.124 +#define GL_EXT_stencil_two_side           1
   7.125 +#define GL_EXT_stencil_wrap               1
   7.126 +#define GL_EXT_texture3D                  1
   7.127 +#define GL_EXT_texture_compression_s3tc   1
   7.128 +#define GL_EXT_texture_cube_map           1
   7.129 +#define GL_EXT_texture_edge_clamp         1
   7.130 +#define GL_EXT_texture_env_add            1
   7.131 +#define GL_EXT_texture_env_combine        1
   7.132 +#define GL_EXT_texture_env_dot3           1
   7.133 +#define GL_EXT_texture_filter_anisotropic 1
   7.134 +#define GL_EXT_texture_lod_bias           1
   7.135 +#define GL_EXT_texture_object             1
   7.136 +#define GL_EXT_vertex_array               1
   7.137 +#define GL_EXT_vertex_weighting           1
   7.138 +#define GL_HP_occlusion_test              1
   7.139 +#define GL_IBM_texture_mirrored_repeat    1
   7.140 +#define GL_NV_blend_square                1
   7.141 +#define GL_NV_copy_depth_to_color         1
   7.142 +#define GL_NV_depth_clamp                 1
   7.143 +#define GL_NV_draw_mesh                   1
   7.144 +#define GL_NV_extended_combiner_program   1
   7.145 +#define GL_NV_fence                       1
   7.146 +#define GL_NV_float_buffer                1
   7.147 +#define GL_NV_flush_hold                  1
   7.148 +#define GL_NV_fog_distance                1
   7.149 +#define GL_NV_fragment_program            1
   7.150 +#define GL_NV_half_float                  1
   7.151 +#define GL_NV_light_max_exponent          1
   7.152 +#define GL_NV_mac_get_proc_address        1
   7.153 +#define GL_NV_multisample_filter_hint     1
   7.154 +#define GL_NV_occlusion_query             1
   7.155 +#define GL_NV_packed_depth_stencil        1
   7.156 +#define GL_NV_pixel_data_range            1
   7.157 +#define GL_NV_point_sprite                1
   7.158 +#define GL_NV_primitive_restart           1
   7.159 +#define GL_NV_register_combiners          1
   7.160 +#define GL_NV_register_combiners2         1
   7.161 +#define GL_NV_set_window_stereomode       1
   7.162 +#define GL_NV_texgen_reflection           1
   7.163 +#define GL_NV_texture_compression_vtc     1
   7.164 +#define GL_NV_texture_env_combine4        1
   7.165 +#define GL_NV_texture_expand_normal       1
   7.166 +#define GL_NV_texture_rectangle           1
   7.167 +#define GL_NV_texture_shader              1
   7.168 +#define GL_NV_texture_shader2             1
   7.169 +#define GL_NV_texture_shader3             1
   7.170 +#define GL_NV_vertex_array_range          1
   7.171 +#define GL_NV_vertex_array_range2         1
   7.172 +#define GL_NV_vertex_program              1
   7.173 +#define GL_NV_vertex_program1_1           1
   7.174 +#define GL_NV_vertex_program2             1
   7.175 +#define GL_S3_s3tc                        1
   7.176 +#define GL_SGIS_generate_mipmap           1
   7.177 +#define GL_SGIS_multitexture              1
   7.178 +#define GL_SGIS_texture_lod               1
   7.179 +#define GL_SGIX_depth_texture             1
   7.180 +#define GL_SGIX_shadow                    1
   7.181 +#define GL_APPLE_transform_hint           1
   7.182 +#define GL_WIN_swap_hint                  1
   7.183 +#define GL_NVX_ycrcb                      1
   7.184 +
   7.185 +/* AttribMask */
   7.186 +#define GL_CURRENT_BIT                    0x00000001
   7.187 +#define GL_POINT_BIT                      0x00000002
   7.188 +#define GL_LINE_BIT                       0x00000004
   7.189 +#define GL_POLYGON_BIT                    0x00000008
   7.190 +#define GL_POLYGON_STIPPLE_BIT            0x00000010
   7.191 +#define GL_PIXEL_MODE_BIT                 0x00000020
   7.192 +#define GL_LIGHTING_BIT                   0x00000040
   7.193 +#define GL_FOG_BIT                        0x00000080
   7.194 +#define GL_DEPTH_BUFFER_BIT               0x00000100
   7.195 +#define GL_ACCUM_BUFFER_BIT               0x00000200
   7.196 +#define GL_STENCIL_BUFFER_BIT             0x00000400
   7.197 +#define GL_VIEWPORT_BIT                   0x00000800
   7.198 +#define GL_TRANSFORM_BIT                  0x00001000
   7.199 +#define GL_ENABLE_BIT                     0x00002000
   7.200 +#define GL_COLOR_BUFFER_BIT               0x00004000
   7.201 +#define GL_HINT_BIT                       0x00008000
   7.202 +#define GL_EVAL_BIT                       0x00010000
   7.203 +#define GL_LIST_BIT                       0x00020000
   7.204 +#define GL_TEXTURE_BIT                    0x00040000
   7.205 +#define GL_SCISSOR_BIT                    0x00080000
   7.206 +#define GL_ALL_ATTRIB_BITS                0xFFFFFFFF
   7.207 +
   7.208 +/* ClearBufferMask */
   7.209 +/*      GL_COLOR_BUFFER_BIT */
   7.210 +/*      GL_ACCUM_BUFFER_BIT */
   7.211 +/*      GL_STENCIL_BUFFER_BIT */
   7.212 +/*      GL_DEPTH_BUFFER_BIT */
   7.213 +
   7.214 +/* ClientAttribMask */
   7.215 +#define GL_CLIENT_PIXEL_STORE_BIT         0x00000001
   7.216 +#define GL_CLIENT_VERTEX_ARRAY_BIT        0x00000002
   7.217 +#define GL_CLIENT_ALL_ATTRIB_BITS         0xFFFFFFFF
   7.218 +
   7.219 +/* Boolean */
   7.220 +#define GL_FALSE                          0
   7.221 +#define GL_TRUE                           1
   7.222 +
   7.223 +/* BeginMode */
   7.224 +#define GL_POINTS                         0x0000
   7.225 +#define GL_LINES                          0x0001
   7.226 +#define GL_LINE_LOOP                      0x0002
   7.227 +#define GL_LINE_STRIP                     0x0003
   7.228 +#define GL_TRIANGLES                      0x0004
   7.229 +#define GL_TRIANGLE_STRIP                 0x0005
   7.230 +#define GL_TRIANGLE_FAN                   0x0006
   7.231 +#define GL_QUADS                          0x0007
   7.232 +#define GL_QUAD_STRIP                     0x0008
   7.233 +#define GL_POLYGON                        0x0009
   7.234 +
   7.235 +/* AccumOp */
   7.236 +#define GL_ACCUM                          0x0100
   7.237 +#define GL_LOAD                           0x0101
   7.238 +#define GL_RETURN                         0x0102
   7.239 +#define GL_MULT                           0x0103
   7.240 +#define GL_ADD                            0x0104
   7.241 +
   7.242 +/* AlphaFunction */
   7.243 +#define GL_NEVER                          0x0200
   7.244 +#define GL_LESS                           0x0201
   7.245 +#define GL_EQUAL                          0x0202
   7.246 +#define GL_LEQUAL                         0x0203
   7.247 +#define GL_GREATER                        0x0204
   7.248 +#define GL_NOTEQUAL                       0x0205
   7.249 +#define GL_GEQUAL                         0x0206
   7.250 +#define GL_ALWAYS                         0x0207
   7.251 +
   7.252 +/* BlendingFactorDest */
   7.253 +#define GL_ZERO                           0
   7.254 +#define GL_ONE                            1
   7.255 +#define GL_SRC_COLOR                      0x0300
   7.256 +#define GL_ONE_MINUS_SRC_COLOR            0x0301
   7.257 +#define GL_SRC_ALPHA                      0x0302
   7.258 +#define GL_ONE_MINUS_SRC_ALPHA            0x0303
   7.259 +#define GL_DST_ALPHA                      0x0304
   7.260 +#define GL_ONE_MINUS_DST_ALPHA            0x0305
   7.261 +
   7.262 +/* BlendingFactorSrc */
   7.263 +/*      GL_ZERO */
   7.264 +/*      GL_ONE */
   7.265 +#define GL_DST_COLOR                      0x0306
   7.266 +#define GL_ONE_MINUS_DST_COLOR            0x0307
   7.267 +#define GL_SRC_ALPHA_SATURATE             0x0308
   7.268 +/*      GL_SRC_ALPHA */
   7.269 +/*      GL_ONE_MINUS_SRC_ALPHA */
   7.270 +/*      GL_DST_ALPHA */
   7.271 +/*      GL_ONE_MINUS_DST_ALPHA */
   7.272 +
   7.273 +/* ColorMaterialFace */
   7.274 +/*      GL_FRONT */
   7.275 +/*      GL_BACK */
   7.276 +/*      GL_FRONT_AND_BACK */
   7.277 +
   7.278 +/* ColorMaterialParameter */
   7.279 +/*      GL_AMBIENT */
   7.280 +/*      GL_DIFFUSE */
   7.281 +/*      GL_SPECULAR */
   7.282 +/*      GL_EMISSION */
   7.283 +/*      GL_AMBIENT_AND_DIFFUSE */
   7.284 +
   7.285 +/* ColorPointerType */
   7.286 +/*      GL_BYTE */
   7.287 +/*      GL_UNSIGNED_BYTE */
   7.288 +/*      GL_SHORT */
   7.289 +/*      GL_UNSIGNED_SHORT */
   7.290 +/*      GL_INT */
   7.291 +/*      GL_UNSIGNED_INT */
   7.292 +/*      GL_FLOAT */
   7.293 +/*      GL_DOUBLE */
   7.294 +
   7.295 +/* CullFaceMode */
   7.296 +/*      GL_FRONT */
   7.297 +/*      GL_BACK */
   7.298 +/*      GL_FRONT_AND_BACK */
   7.299 +
   7.300 +/* DepthFunction */
   7.301 +/*      GL_NEVER */
   7.302 +/*      GL_LESS */
   7.303 +/*      GL_EQUAL */
   7.304 +/*      GL_LEQUAL */
   7.305 +/*      GL_GREATER */
   7.306 +/*      GL_NOTEQUAL */
   7.307 +/*      GL_GEQUAL */
   7.308 +/*      GL_ALWAYS */
   7.309 +
   7.310 +/* DrawBufferMode */
   7.311 +#define GL_NONE                           0
   7.312 +#define GL_FRONT_LEFT                     0x0400
   7.313 +#define GL_FRONT_RIGHT                    0x0401
   7.314 +#define GL_BACK_LEFT                      0x0402
   7.315 +#define GL_BACK_RIGHT                     0x0403
   7.316 +#define GL_FRONT                          0x0404
   7.317 +#define GL_BACK                           0x0405
   7.318 +#define GL_LEFT                           0x0406
   7.319 +#define GL_RIGHT                          0x0407
   7.320 +#define GL_FRONT_AND_BACK                 0x0408
   7.321 +#define GL_AUX0                           0x0409
   7.322 +#define GL_AUX1                           0x040A
   7.323 +#define GL_AUX2                           0x040B
   7.324 +#define GL_AUX3                           0x040C
   7.325 +
   7.326 +/* EnableCap */
   7.327 +/*      GL_FOG */
   7.328 +/*      GL_LIGHTING */
   7.329 +/*      GL_TEXTURE_1D */
   7.330 +/*      GL_TEXTURE_2D */
   7.331 +/*      GL_LINE_STIPPLE */
   7.332 +/*      GL_POLYGON_STIPPLE */
   7.333 +/*      GL_CULL_FACE */
   7.334 +/*      GL_ALPHA_TEST */
   7.335 +/*      GL_BLEND */
   7.336 +/*      GL_INDEX_LOGIC_OP */
   7.337 +/*      GL_COLOR_LOGIC_OP */
   7.338 +/*      GL_DITHER */
   7.339 +/*      GL_STENCIL_TEST */
   7.340 +/*      GL_DEPTH_TEST */
   7.341 +/*      GL_CLIP_PLANE0 */
   7.342 +/*      GL_CLIP_PLANE1 */
   7.343 +/*      GL_CLIP_PLANE2 */
   7.344 +/*      GL_CLIP_PLANE3 */
   7.345 +/*      GL_CLIP_PLANE4 */
   7.346 +/*      GL_CLIP_PLANE5 */
   7.347 +/*      GL_LIGHT0 */
   7.348 +/*      GL_LIGHT1 */
   7.349 +/*      GL_LIGHT2 */
   7.350 +/*      GL_LIGHT3 */
   7.351 +/*      GL_LIGHT4 */
   7.352 +/*      GL_LIGHT5 */
   7.353 +/*      GL_LIGHT6 */
   7.354 +/*      GL_LIGHT7 */
   7.355 +/*      GL_TEXTURE_GEN_S */
   7.356 +/*      GL_TEXTURE_GEN_T */
   7.357 +/*      GL_TEXTURE_GEN_R */
   7.358 +/*      GL_TEXTURE_GEN_Q */
   7.359 +/*      GL_MAP1_VERTEX_3 */
   7.360 +/*      GL_MAP1_VERTEX_4 */
   7.361 +/*      GL_MAP1_COLOR_4 */
   7.362 +/*      GL_MAP1_INDEX */
   7.363 +/*      GL_MAP1_NORMAL */
   7.364 +/*      GL_MAP1_TEXTURE_COORD_1 */
   7.365 +/*      GL_MAP1_TEXTURE_COORD_2 */
   7.366 +/*      GL_MAP1_TEXTURE_COORD_3 */
   7.367 +/*      GL_MAP1_TEXTURE_COORD_4 */
   7.368 +/*      GL_MAP2_VERTEX_3 */
   7.369 +/*      GL_MAP2_VERTEX_4 */
   7.370 +/*      GL_MAP2_COLOR_4 */
   7.371 +/*      GL_MAP2_INDEX */
   7.372 +/*      GL_MAP2_NORMAL */
   7.373 +/*      GL_MAP2_TEXTURE_COORD_1 */
   7.374 +/*      GL_MAP2_TEXTURE_COORD_2 */
   7.375 +/*      GL_MAP2_TEXTURE_COORD_3 */
   7.376 +/*      GL_MAP2_TEXTURE_COORD_4 */
   7.377 +/*      GL_POINT_SMOOTH */
   7.378 +/*      GL_LINE_SMOOTH */
   7.379 +/*      GL_POLYGON_SMOOTH */
   7.380 +/*      GL_SCISSOR_TEST */
   7.381 +/*      GL_COLOR_MATERIAL */
   7.382 +/*      GL_NORMALIZE */
   7.383 +/*      GL_AUTO_NORMAL */
   7.384 +/*      GL_POLYGON_OFFSET_POINT */
   7.385 +/*      GL_POLYGON_OFFSET_LINE */
   7.386 +/*      GL_POLYGON_OFFSET_FILL */
   7.387 +/*      GL_VERTEX_ARRAY */
   7.388 +/*      GL_NORMAL_ARRAY */
   7.389 +/*      GL_COLOR_ARRAY */
   7.390 +/*      GL_INDEX_ARRAY */
   7.391 +/*      GL_TEXTURE_COORD_ARRAY */
   7.392 +/*      GL_EDGE_FLAG_ARRAY */
   7.393 +
   7.394 +/* ErrorCode */
   7.395 +#define GL_NO_ERROR                       0
   7.396 +#define GL_INVALID_ENUM                   0x0500
   7.397 +#define GL_INVALID_VALUE                  0x0501
   7.398 +#define GL_INVALID_OPERATION              0x0502
   7.399 +#define GL_STACK_OVERFLOW                 0x0503
   7.400 +#define GL_STACK_UNDERFLOW                0x0504
   7.401 +#define GL_OUT_OF_MEMORY                  0x0505
   7.402 +#define GL_TABLE_TOO_LARGE                0x8031
   7.403 +
   7.404 +/* FeedbackType */
   7.405 +#define GL_2D                             0x0600
   7.406 +#define GL_3D                             0x0601
   7.407 +#define GL_3D_COLOR                       0x0602
   7.408 +#define GL_3D_COLOR_TEXTURE               0x0603
   7.409 +#define GL_4D_COLOR_TEXTURE               0x0604
   7.410 +
   7.411 +/* FeedBackToken */
   7.412 +#define GL_PASS_THROUGH_TOKEN             0x0700
   7.413 +#define GL_POINT_TOKEN                    0x0701
   7.414 +#define GL_LINE_TOKEN                     0x0702
   7.415 +#define GL_POLYGON_TOKEN                  0x0703
   7.416 +#define GL_BITMAP_TOKEN                   0x0704
   7.417 +#define GL_DRAW_PIXEL_TOKEN               0x0705
   7.418 +#define GL_COPY_PIXEL_TOKEN               0x0706
   7.419 +#define GL_LINE_RESET_TOKEN               0x0707
   7.420 +
   7.421 +/* FogMode */
   7.422 +/*      GL_LINEAR */
   7.423 +#define GL_EXP                            0x0800
   7.424 +#define GL_EXP2                           0x0801
   7.425 +
   7.426 +/* FogParameter */
   7.427 +/*      GL_FOG_COLOR */
   7.428 +/*      GL_FOG_DENSITY */
   7.429 +/*      GL_FOG_END */
   7.430 +/*      GL_FOG_INDEX */
   7.431 +/*      GL_FOG_MODE */
   7.432 +/*      GL_FOG_START */
   7.433 +
   7.434 +/* FrontFaceDirection */
   7.435 +#define GL_CW                             0x0900
   7.436 +#define GL_CCW                            0x0901
   7.437 +
   7.438 +/* GetColorTableParameterPNameEXT */
   7.439 +/*      GL_COLOR_TABLE_FORMAT_EXT */
   7.440 +/*      GL_COLOR_TABLE_WIDTH_EXT */
   7.441 +/*      GL_COLOR_TABLE_RED_SIZE_EXT */
   7.442 +/*      GL_COLOR_TABLE_GREEN_SIZE_EXT */
   7.443 +/*      GL_COLOR_TABLE_BLUE_SIZE_EXT */
   7.444 +/*      GL_COLOR_TABLE_ALPHA_SIZE_EXT */
   7.445 +/*      GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
   7.446 +/*      GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
   7.447 +
   7.448 +/* GetMapQuery */
   7.449 +#define GL_COEFF                          0x0A00
   7.450 +#define GL_ORDER                          0x0A01
   7.451 +#define GL_DOMAIN                         0x0A02
   7.452 +
   7.453 +/* GetPixelMap */
   7.454 +#define GL_PIXEL_MAP_I_TO_I               0x0C70
   7.455 +#define GL_PIXEL_MAP_S_TO_S               0x0C71
   7.456 +#define GL_PIXEL_MAP_I_TO_R               0x0C72
   7.457 +#define GL_PIXEL_MAP_I_TO_G               0x0C73
   7.458 +#define GL_PIXEL_MAP_I_TO_B               0x0C74
   7.459 +#define GL_PIXEL_MAP_I_TO_A               0x0C75
   7.460 +#define GL_PIXEL_MAP_R_TO_R               0x0C76
   7.461 +#define GL_PIXEL_MAP_G_TO_G               0x0C77
   7.462 +#define GL_PIXEL_MAP_B_TO_B               0x0C78
   7.463 +#define GL_PIXEL_MAP_A_TO_A               0x0C79
   7.464 +
   7.465 +/* GetPointervPName */
   7.466 +#define GL_VERTEX_ARRAY_POINTER           0x808E
   7.467 +#define GL_NORMAL_ARRAY_POINTER           0x808F
   7.468 +#define GL_COLOR_ARRAY_POINTER            0x8090
   7.469 +#define GL_INDEX_ARRAY_POINTER            0x8091
   7.470 +#define GL_TEXTURE_COORD_ARRAY_POINTER    0x8092
   7.471 +#define GL_EDGE_FLAG_ARRAY_POINTER        0x8093
   7.472 +
   7.473 +/* GetPName */
   7.474 +#define GL_CURRENT_COLOR                  0x0B00
   7.475 +#define GL_CURRENT_INDEX                  0x0B01
   7.476 +#define GL_CURRENT_NORMAL                 0x0B02
   7.477 +#define GL_CURRENT_TEXTURE_COORDS         0x0B03
   7.478 +#define GL_CURRENT_RASTER_COLOR           0x0B04
   7.479 +#define GL_CURRENT_RASTER_INDEX           0x0B05
   7.480 +#define GL_CURRENT_RASTER_TEXTURE_COORDS  0x0B06
   7.481 +#define GL_CURRENT_RASTER_POSITION        0x0B07
   7.482 +#define GL_CURRENT_RASTER_POSITION_VALID  0x0B08
   7.483 +#define GL_CURRENT_RASTER_DISTANCE        0x0B09
   7.484 +#define GL_POINT_SMOOTH                   0x0B10
   7.485 +#define GL_POINT_SIZE                     0x0B11
   7.486 +#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
   7.487 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13
   7.488 +#define GL_POINT_SIZE_RANGE               GL_SMOOTH_POINT_SIZE_RANGE
   7.489 +#define GL_POINT_SIZE_GRANULARITY         GL_SMOOTH_POINT_SIZE_GRANULARITY
   7.490 +#define GL_LINE_SMOOTH                    0x0B20
   7.491 +#define GL_LINE_WIDTH                     0x0B21
   7.492 +#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
   7.493 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23
   7.494 +#define GL_LINE_WIDTH_RANGE               GL_SMOOTH_LINE_WIDTH_RANGE
   7.495 +#define GL_LINE_WIDTH_GRANULARITY         GL_SMOOTH_LINE_WIDTH_GRANULARITY
   7.496 +#define GL_LINE_STIPPLE                   0x0B24
   7.497 +#define GL_LINE_STIPPLE_PATTERN           0x0B25
   7.498 +#define GL_LINE_STIPPLE_REPEAT            0x0B26
   7.499 +#define GL_LIST_MODE                      0x0B30
   7.500 +#define GL_MAX_LIST_NESTING               0x0B31
   7.501 +#define GL_LIST_BASE                      0x0B32
   7.502 +#define GL_LIST_INDEX                     0x0B33
   7.503 +#define GL_POLYGON_MODE                   0x0B40
   7.504 +#define GL_POLYGON_SMOOTH                 0x0B41
   7.505 +#define GL_POLYGON_STIPPLE                0x0B42
   7.506 +#define GL_EDGE_FLAG                      0x0B43
   7.507 +#define GL_CULL_FACE                      0x0B44
   7.508 +#define GL_CULL_FACE_MODE                 0x0B45
   7.509 +#define GL_FRONT_FACE                     0x0B46
   7.510 +#define GL_LIGHTING                       0x0B50
   7.511 +#define GL_LIGHT_MODEL_LOCAL_VIEWER       0x0B51
   7.512 +#define GL_LIGHT_MODEL_TWO_SIDE           0x0B52
   7.513 +#define GL_LIGHT_MODEL_AMBIENT            0x0B53
   7.514 +#define GL_SHADE_MODEL                    0x0B54
   7.515 +#define GL_COLOR_MATERIAL_FACE            0x0B55
   7.516 +#define GL_COLOR_MATERIAL_PARAMETER       0x0B56
   7.517 +#define GL_COLOR_MATERIAL                 0x0B57
   7.518 +#define GL_FOG                            0x0B60
   7.519 +#define GL_FOG_INDEX                      0x0B61
   7.520 +#define GL_FOG_DENSITY                    0x0B62
   7.521 +#define GL_FOG_START                      0x0B63
   7.522 +#define GL_FOG_END                        0x0B64
   7.523 +#define GL_FOG_MODE                       0x0B65
   7.524 +#define GL_FOG_COLOR                      0x0B66
   7.525 +#define GL_DEPTH_RANGE                    0x0B70
   7.526 +#define GL_DEPTH_TEST                     0x0B71
   7.527 +#define GL_DEPTH_WRITEMASK                0x0B72
   7.528 +#define GL_DEPTH_CLEAR_VALUE              0x0B73
   7.529 +#define GL_DEPTH_FUNC                     0x0B74
   7.530 +#define GL_ACCUM_CLEAR_VALUE              0x0B80
   7.531 +#define GL_STENCIL_TEST                   0x0B90
   7.532 +#define GL_STENCIL_CLEAR_VALUE            0x0B91
   7.533 +#define GL_STENCIL_FUNC                   0x0B92
   7.534 +#define GL_STENCIL_VALUE_MASK             0x0B93
   7.535 +#define GL_STENCIL_FAIL                   0x0B94
   7.536 +#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
   7.537 +#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
   7.538 +#define GL_STENCIL_REF                    0x0B97
   7.539 +#define GL_STENCIL_WRITEMASK              0x0B98
   7.540 +#define GL_MATRIX_MODE                    0x0BA0
   7.541 +#define GL_NORMALIZE                      0x0BA1
   7.542 +#define GL_VIEWPORT                       0x0BA2
   7.543 +#define GL_MODELVIEW_STACK_DEPTH          0x0BA3
   7.544 +#define GL_PROJECTION_STACK_DEPTH         0x0BA4
   7.545 +#define GL_TEXTURE_STACK_DEPTH            0x0BA5
   7.546 +#define GL_MODELVIEW_MATRIX               0x0BA6
   7.547 +#define GL_PROJECTION_MATRIX              0x0BA7
   7.548 +#define GL_TEXTURE_MATRIX                 0x0BA8
   7.549 +#define GL_ATTRIB_STACK_DEPTH             0x0BB0
   7.550 +#define GL_CLIENT_ATTRIB_STACK_DEPTH      0x0BB1
   7.551 +#define GL_ALPHA_TEST                     0x0BC0
   7.552 +#define GL_ALPHA_TEST_FUNC                0x0BC1
   7.553 +#define GL_ALPHA_TEST_REF                 0x0BC2
   7.554 +#define GL_DITHER                         0x0BD0
   7.555 +#define GL_BLEND_DST                      0x0BE0
   7.556 +#define GL_BLEND_SRC                      0x0BE1
   7.557 +#define GL_BLEND                          0x0BE2
   7.558 +#define GL_LOGIC_OP_MODE                  0x0BF0
   7.559 +#define GL_INDEX_LOGIC_OP                 0x0BF1
   7.560 +#define GL_LOGIC_OP                       GL_INDEX_LOGIC_OP
   7.561 +#define GL_COLOR_LOGIC_OP                 0x0BF2
   7.562 +#define GL_AUX_BUFFERS                    0x0C00
   7.563 +#define GL_DRAW_BUFFER                    0x0C01
   7.564 +#define GL_READ_BUFFER                    0x0C02
   7.565 +#define GL_SCISSOR_BOX                    0x0C10
   7.566 +#define GL_SCISSOR_TEST                   0x0C11
   7.567 +#define GL_INDEX_CLEAR_VALUE              0x0C20
   7.568 +#define GL_INDEX_WRITEMASK                0x0C21
   7.569 +#define GL_COLOR_CLEAR_VALUE              0x0C22
   7.570 +#define GL_COLOR_WRITEMASK                0x0C23
   7.571 +#define GL_INDEX_MODE                     0x0C30
   7.572 +#define GL_RGBA_MODE                      0x0C31
   7.573 +#define GL_DOUBLEBUFFER                   0x0C32
   7.574 +#define GL_STEREO                         0x0C33
   7.575 +#define GL_RENDER_MODE                    0x0C40
   7.576 +#define GL_PERSPECTIVE_CORRECTION_HINT    0x0C50
   7.577 +#define GL_POINT_SMOOTH_HINT              0x0C51
   7.578 +#define GL_LINE_SMOOTH_HINT               0x0C52
   7.579 +#define GL_POLYGON_SMOOTH_HINT            0x0C53
   7.580 +#define GL_FOG_HINT                       0x0C54
   7.581 +#define GL_TEXTURE_GEN_S                  0x0C60
   7.582 +#define GL_TEXTURE_GEN_T                  0x0C61
   7.583 +#define GL_TEXTURE_GEN_R                  0x0C62
   7.584 +#define GL_TEXTURE_GEN_Q                  0x0C63
   7.585 +#define GL_PIXEL_MAP_I_TO_I_SIZE          0x0CB0
   7.586 +#define GL_PIXEL_MAP_S_TO_S_SIZE          0x0CB1
   7.587 +#define GL_PIXEL_MAP_I_TO_R_SIZE          0x0CB2
   7.588 +#define GL_PIXEL_MAP_I_TO_G_SIZE          0x0CB3
   7.589 +#define GL_PIXEL_MAP_I_TO_B_SIZE          0x0CB4
   7.590 +#define GL_PIXEL_MAP_I_TO_A_SIZE          0x0CB5
   7.591 +#define GL_PIXEL_MAP_R_TO_R_SIZE          0x0CB6
   7.592 +#define GL_PIXEL_MAP_G_TO_G_SIZE          0x0CB7
   7.593 +#define GL_PIXEL_MAP_B_TO_B_SIZE          0x0CB8
   7.594 +#define GL_PIXEL_MAP_A_TO_A_SIZE          0x0CB9
   7.595 +#define GL_UNPACK_SWAP_BYTES              0x0CF0
   7.596 +#define GL_UNPACK_LSB_FIRST               0x0CF1
   7.597 +#define GL_UNPACK_ROW_LENGTH              0x0CF2
   7.598 +#define GL_UNPACK_SKIP_ROWS               0x0CF3
   7.599 +#define GL_UNPACK_SKIP_PIXELS             0x0CF4
   7.600 +#define GL_UNPACK_ALIGNMENT               0x0CF5
   7.601 +#define GL_PACK_SWAP_BYTES                0x0D00
   7.602 +#define GL_PACK_LSB_FIRST                 0x0D01
   7.603 +#define GL_PACK_ROW_LENGTH                0x0D02
   7.604 +#define GL_PACK_SKIP_ROWS                 0x0D03
   7.605 +#define GL_PACK_SKIP_PIXELS               0x0D04
   7.606 +#define GL_PACK_ALIGNMENT                 0x0D05
   7.607 +#define GL_MAP_COLOR                      0x0D10
   7.608 +#define GL_MAP_STENCIL                    0x0D11
   7.609 +#define GL_INDEX_SHIFT                    0x0D12
   7.610 +#define GL_INDEX_OFFSET                   0x0D13
   7.611 +#define GL_RED_SCALE                      0x0D14
   7.612 +#define GL_RED_BIAS                       0x0D15
   7.613 +#define GL_ZOOM_X                         0x0D16
   7.614 +#define GL_ZOOM_Y                         0x0D17
   7.615 +#define GL_GREEN_SCALE                    0x0D18
   7.616 +#define GL_GREEN_BIAS                     0x0D19
   7.617 +#define GL_BLUE_SCALE                     0x0D1A
   7.618 +#define GL_BLUE_BIAS                      0x0D1B
   7.619 +#define GL_ALPHA_SCALE                    0x0D1C
   7.620 +#define GL_ALPHA_BIAS                     0x0D1D
   7.621 +#define GL_DEPTH_SCALE                    0x0D1E
   7.622 +#define GL_DEPTH_BIAS                     0x0D1F
   7.623 +#define GL_MAX_EVAL_ORDER                 0x0D30
   7.624 +#define GL_MAX_LIGHTS                     0x0D31
   7.625 +#define GL_MAX_CLIP_PLANES                0x0D32
   7.626 +#define GL_MAX_TEXTURE_SIZE               0x0D33
   7.627 +#define GL_MAX_PIXEL_MAP_TABLE            0x0D34
   7.628 +#define GL_MAX_ATTRIB_STACK_DEPTH         0x0D35
   7.629 +#define GL_MAX_MODELVIEW_STACK_DEPTH      0x0D36
   7.630 +#define GL_MAX_NAME_STACK_DEPTH           0x0D37
   7.631 +#define GL_MAX_PROJECTION_STACK_DEPTH     0x0D38
   7.632 +#define GL_MAX_TEXTURE_STACK_DEPTH        0x0D39
   7.633 +#define GL_MAX_VIEWPORT_DIMS              0x0D3A
   7.634 +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH  0x0D3B
   7.635 +#define GL_SUBPIXEL_BITS                  0x0D50
   7.636 +#define GL_INDEX_BITS                     0x0D51
   7.637 +#define GL_RED_BITS                       0x0D52
   7.638 +#define GL_GREEN_BITS                     0x0D53
   7.639 +#define GL_BLUE_BITS                      0x0D54
   7.640 +#define GL_ALPHA_BITS                     0x0D55
   7.641 +#define GL_DEPTH_BITS                     0x0D56
   7.642 +#define GL_STENCIL_BITS                   0x0D57
   7.643 +#define GL_ACCUM_RED_BITS                 0x0D58
   7.644 +#define GL_ACCUM_GREEN_BITS               0x0D59
   7.645 +#define GL_ACCUM_BLUE_BITS                0x0D5A
   7.646 +#define GL_ACCUM_ALPHA_BITS               0x0D5B
   7.647 +#define GL_NAME_STACK_DEPTH               0x0D70
   7.648 +#define GL_AUTO_NORMAL                    0x0D80
   7.649 +#define GL_MAP1_COLOR_4                   0x0D90
   7.650 +#define GL_MAP1_INDEX                     0x0D91
   7.651 +#define GL_MAP1_NORMAL                    0x0D92
   7.652 +#define GL_MAP1_TEXTURE_COORD_1           0x0D93
   7.653 +#define GL_MAP1_TEXTURE_COORD_2           0x0D94
   7.654 +#define GL_MAP1_TEXTURE_COORD_3           0x0D95
   7.655 +#define GL_MAP1_TEXTURE_COORD_4           0x0D96
   7.656 +#define GL_MAP1_VERTEX_3                  0x0D97
   7.657 +#define GL_MAP1_VERTEX_4                  0x0D98
   7.658 +#define GL_MAP2_COLOR_4                   0x0DB0
   7.659 +#define GL_MAP2_INDEX                     0x0DB1
   7.660 +#define GL_MAP2_NORMAL                    0x0DB2
   7.661 +#define GL_MAP2_TEXTURE_COORD_1           0x0DB3
   7.662 +#define GL_MAP2_TEXTURE_COORD_2           0x0DB4
   7.663 +#define GL_MAP2_TEXTURE_COORD_3           0x0DB5
   7.664 +#define GL_MAP2_TEXTURE_COORD_4           0x0DB6
   7.665 +#define GL_MAP2_VERTEX_3                  0x0DB7
   7.666 +#define GL_MAP2_VERTEX_4                  0x0DB8
   7.667 +#define GL_MAP1_GRID_DOMAIN               0x0DD0
   7.668 +#define GL_MAP1_GRID_SEGMENTS             0x0DD1
   7.669 +#define GL_MAP2_GRID_DOMAIN               0x0DD2
   7.670 +#define GL_MAP2_GRID_SEGMENTS             0x0DD3
   7.671 +#define GL_TEXTURE_1D                     0x0DE0
   7.672 +#define GL_TEXTURE_2D                     0x0DE1
   7.673 +#define GL_FEEDBACK_BUFFER_POINTER        0x0DF0
   7.674 +#define GL_FEEDBACK_BUFFER_SIZE           0x0DF1
   7.675 +#define GL_FEEDBACK_BUFFER_TYPE           0x0DF2
   7.676 +#define GL_SELECTION_BUFFER_POINTER       0x0DF3
   7.677 +#define GL_SELECTION_BUFFER_SIZE          0x0DF4
   7.678 +#define GL_POLYGON_OFFSET_UNITS           0x2A00
   7.679 +#define GL_POLYGON_OFFSET_POINT           0x2A01
   7.680 +#define GL_POLYGON_OFFSET_LINE            0x2A02
   7.681 +#define GL_POLYGON_OFFSET_FILL            0x8037
   7.682 +#define GL_POLYGON_OFFSET_FACTOR          0x8038
   7.683 +#define GL_TEXTURE_BINDING_1D             0x8068
   7.684 +#define GL_TEXTURE_BINDING_2D             0x8069
   7.685 +#define GL_TEXTURE_BINDING_3D             0x806A
   7.686 +#define GL_VERTEX_ARRAY                   0x8074
   7.687 +#define GL_NORMAL_ARRAY                   0x8075
   7.688 +#define GL_COLOR_ARRAY                    0x8076
   7.689 +#define GL_INDEX_ARRAY                    0x8077
   7.690 +#define GL_TEXTURE_COORD_ARRAY            0x8078
   7.691 +#define GL_EDGE_FLAG_ARRAY                0x8079
   7.692 +#define GL_VERTEX_ARRAY_SIZE              0x807A
   7.693 +#define GL_VERTEX_ARRAY_TYPE              0x807B
   7.694 +#define GL_VERTEX_ARRAY_STRIDE            0x807C
   7.695 +#define GL_NORMAL_ARRAY_TYPE              0x807E
   7.696 +#define GL_NORMAL_ARRAY_STRIDE            0x807F
   7.697 +#define GL_COLOR_ARRAY_SIZE               0x8081
   7.698 +#define GL_COLOR_ARRAY_TYPE               0x8082
   7.699 +#define GL_COLOR_ARRAY_STRIDE             0x8083
   7.700 +#define GL_INDEX_ARRAY_TYPE               0x8085
   7.701 +#define GL_INDEX_ARRAY_STRIDE             0x8086
   7.702 +#define GL_TEXTURE_COORD_ARRAY_SIZE       0x8088
   7.703 +#define GL_TEXTURE_COORD_ARRAY_TYPE       0x8089
   7.704 +#define GL_TEXTURE_COORD_ARRAY_STRIDE     0x808A
   7.705 +#define GL_EDGE_FLAG_ARRAY_STRIDE         0x808C
   7.706 +/*      GL_VERTEX_ARRAY_COUNT_EXT */
   7.707 +/*      GL_NORMAL_ARRAY_COUNT_EXT */
   7.708 +/*      GL_COLOR_ARRAY_COUNT_EXT */
   7.709 +/*      GL_INDEX_ARRAY_COUNT_EXT */
   7.710 +/*      GL_TEXTURE_COORD_ARRAY_COUNT_EXT */
   7.711 +/*      GL_EDGE_FLAG_ARRAY_COUNT_EXT */
   7.712 +/*      GL_ARRAY_ELEMENT_LOCK_COUNT_EXT */
   7.713 +/*      GL_ARRAY_ELEMENT_LOCK_FIRST_EXT */
   7.714 +
   7.715 +/* GetTextureParameter */
   7.716 +/*      GL_TEXTURE_MAG_FILTER */
   7.717 +/*      GL_TEXTURE_MIN_FILTER */
   7.718 +/*      GL_TEXTURE_WRAP_S */
   7.719 +/*      GL_TEXTURE_WRAP_T */
   7.720 +#define GL_TEXTURE_WIDTH                  0x1000
   7.721 +#define GL_TEXTURE_HEIGHT                 0x1001
   7.722 +#define GL_TEXTURE_INTERNAL_FORMAT        0x1003
   7.723 +#define GL_TEXTURE_COMPONENTS             GL_TEXTURE_INTERNAL_FORMAT
   7.724 +#define GL_TEXTURE_BORDER_COLOR           0x1004
   7.725 +#define GL_TEXTURE_BORDER                 0x1005
   7.726 +#define GL_TEXTURE_RED_SIZE               0x805C
   7.727 +#define GL_TEXTURE_GREEN_SIZE             0x805D
   7.728 +#define GL_TEXTURE_BLUE_SIZE              0x805E
   7.729 +#define GL_TEXTURE_ALPHA_SIZE             0x805F
   7.730 +#define GL_TEXTURE_LUMINANCE_SIZE         0x8060
   7.731 +#define GL_TEXTURE_INTENSITY_SIZE         0x8061
   7.732 +#define GL_TEXTURE_PRIORITY               0x8066
   7.733 +#define GL_TEXTURE_RESIDENT               0x8067
   7.734 +
   7.735 +/* HintMode */
   7.736 +#define GL_DONT_CARE                      0x1100
   7.737 +#define GL_FASTEST                        0x1101
   7.738 +#define GL_NICEST                         0x1102
   7.739 +
   7.740 +/* HintTarget */
   7.741 +/*      GL_PERSPECTIVE_CORRECTION_HINT */
   7.742 +/*      GL_POINT_SMOOTH_HINT */
   7.743 +/*      GL_LINE_SMOOTH_HINT */
   7.744 +/*      GL_POLYGON_SMOOTH_HINT */
   7.745 +/*      GL_FOG_HINT */
   7.746 +
   7.747 +/* IndexMaterialParameterSGI */
   7.748 +/*      GL_INDEX_OFFSET */
   7.749 +
   7.750 +/* IndexPointerType */
   7.751 +/*      GL_SHORT */
   7.752 +/*      GL_INT */
   7.753 +/*      GL_FLOAT */
   7.754 +/*      GL_DOUBLE */
   7.755 +
   7.756 +/* IndexFunctionSGI */
   7.757 +/*      GL_NEVER */
   7.758 +/*      GL_LESS */
   7.759 +/*      GL_EQUAL */
   7.760 +/*      GL_LEQUAL */
   7.761 +/*      GL_GREATER */
   7.762 +/*      GL_NOTEQUAL */
   7.763 +/*      GL_GEQUAL */
   7.764 +/*      GL_ALWAYS */
   7.765 +
   7.766 +/* LightModelParameter */
   7.767 +/*      GL_LIGHT_MODEL_AMBIENT */
   7.768 +/*      GL_LIGHT_MODEL_LOCAL_VIEWER */
   7.769 +/*      GL_LIGHT_MODEL_TWO_SIDE */
   7.770 +
   7.771 +/* LightParameter */
   7.772 +#define GL_AMBIENT                        0x1200
   7.773 +#define GL_DIFFUSE                        0x1201
   7.774 +#define GL_SPECULAR                       0x1202
   7.775 +#define GL_POSITION                       0x1203
   7.776 +#define GL_SPOT_DIRECTION                 0x1204
   7.777 +#define GL_SPOT_EXPONENT                  0x1205
   7.778 +#define GL_SPOT_CUTOFF                    0x1206
   7.779 +#define GL_CONSTANT_ATTENUATION           0x1207
   7.780 +#define GL_LINEAR_ATTENUATION             0x1208
   7.781 +#define GL_QUADRATIC_ATTENUATION          0x1209
   7.782 +
   7.783 +/* ListMode */
   7.784 +#define GL_COMPILE                        0x1300
   7.785 +#define GL_COMPILE_AND_EXECUTE            0x1301
   7.786 +
   7.787 +/* DataType */
   7.788 +#define GL_BYTE                           0x1400
   7.789 +#define GL_UNSIGNED_BYTE                  0x1401
   7.790 +#define GL_SHORT                          0x1402
   7.791 +#define GL_UNSIGNED_SHORT                 0x1403
   7.792 +#define GL_INT                            0x1404
   7.793 +#define GL_UNSIGNED_INT                   0x1405
   7.794 +#define GL_FLOAT                          0x1406
   7.795 +#define GL_2_BYTES                        0x1407
   7.796 +#define GL_3_BYTES                        0x1408
   7.797 +#define GL_4_BYTES                        0x1409
   7.798 +#define GL_DOUBLE                         0x140A
   7.799 +#define GL_DOUBLE_EXT                     0x140A
   7.800 +
   7.801 +/* ListNameType */
   7.802 +/*      GL_BYTE */
   7.803 +/*      GL_UNSIGNED_BYTE */
   7.804 +/*      GL_SHORT */
   7.805 +/*      GL_UNSIGNED_SHORT */
   7.806 +/*      GL_INT */
   7.807 +/*      GL_UNSIGNED_INT */
   7.808 +/*      GL_FLOAT */
   7.809 +/*      GL_2_BYTES */
   7.810 +/*      GL_3_BYTES */
   7.811 +/*      GL_4_BYTES */
   7.812 +
   7.813 +/* LogicOp */
   7.814 +#define GL_CLEAR                          0x1500
   7.815 +#define GL_AND                            0x1501
   7.816 +#define GL_AND_REVERSE                    0x1502
   7.817 +#define GL_COPY                           0x1503
   7.818 +#define GL_AND_INVERTED                   0x1504
   7.819 +#define GL_NOOP                           0x1505
   7.820 +#define GL_XOR                            0x1506
   7.821 +#define GL_OR                             0x1507
   7.822 +#define GL_NOR                            0x1508
   7.823 +#define GL_EQUIV                          0x1509
   7.824 +#define GL_INVERT                         0x150A
   7.825 +#define GL_OR_REVERSE                     0x150B
   7.826 +#define GL_COPY_INVERTED                  0x150C
   7.827 +#define GL_OR_INVERTED                    0x150D
   7.828 +#define GL_NAND                           0x150E
   7.829 +#define GL_SET                            0x150F
   7.830 +
   7.831 +/* MapTarget */
   7.832 +/*      GL_MAP1_COLOR_4 */
   7.833 +/*      GL_MAP1_INDEX */
   7.834 +/*      GL_MAP1_NORMAL */
   7.835 +/*      GL_MAP1_TEXTURE_COORD_1 */
   7.836 +/*      GL_MAP1_TEXTURE_COORD_2 */
   7.837 +/*      GL_MAP1_TEXTURE_COORD_3 */
   7.838 +/*      GL_MAP1_TEXTURE_COORD_4 */
   7.839 +/*      GL_MAP1_VERTEX_3 */
   7.840 +/*      GL_MAP1_VERTEX_4 */
   7.841 +/*      GL_MAP2_COLOR_4 */
   7.842 +/*      GL_MAP2_INDEX */
   7.843 +/*      GL_MAP2_NORMAL */
   7.844 +/*      GL_MAP2_TEXTURE_COORD_1 */
   7.845 +/*      GL_MAP2_TEXTURE_COORD_2 */
   7.846 +/*      GL_MAP2_TEXTURE_COORD_3 */
   7.847 +/*      GL_MAP2_TEXTURE_COORD_4 */
   7.848 +/*      GL_MAP2_VERTEX_3 */
   7.849 +/*      GL_MAP2_VERTEX_4 */
   7.850 +
   7.851 +/* MaterialFace */
   7.852 +/*      GL_FRONT */
   7.853 +/*      GL_BACK */
   7.854 +/*      GL_FRONT_AND_BACK */
   7.855 +
   7.856 +/* MaterialParameter */
   7.857 +#define GL_EMISSION                       0x1600
   7.858 +#define GL_SHININESS                      0x1601
   7.859 +#define GL_AMBIENT_AND_DIFFUSE            0x1602
   7.860 +#define GL_COLOR_INDEXES                  0x1603
   7.861 +/*      GL_AMBIENT */
   7.862 +/*      GL_DIFFUSE */
   7.863 +/*      GL_SPECULAR */
   7.864 +
   7.865 +/* MatrixMode */
   7.866 +#define GL_MODELVIEW                      0x1700
   7.867 +#define GL_PROJECTION                     0x1701
   7.868 +#define GL_TEXTURE                        0x1702
   7.869 +
   7.870 +/* MeshMode1 */
   7.871 +/*      GL_POINT */
   7.872 +/*      GL_LINE */
   7.873 +
   7.874 +/* MeshMode2 */
   7.875 +/*      GL_POINT */
   7.876 +/*      GL_LINE */
   7.877 +/*      GL_FILL */
   7.878 +
   7.879 +/* NormalPointerType */
   7.880 +/*      GL_BYTE */
   7.881 +/*      GL_SHORT */
   7.882 +/*      GL_INT */
   7.883 +/*      GL_FLOAT */
   7.884 +/*      GL_DOUBLE */
   7.885 +
   7.886 +/* PixelCopyType */
   7.887 +#define GL_COLOR                          0x1800
   7.888 +#define GL_DEPTH                          0x1801
   7.889 +#define GL_STENCIL                        0x1802
   7.890 +
   7.891 +/* PixelFormat */
   7.892 +#define GL_COLOR_INDEX                    0x1900
   7.893 +#define GL_STENCIL_INDEX                  0x1901
   7.894 +#define GL_DEPTH_COMPONENT                0x1902
   7.895 +#define GL_RED                            0x1903
   7.896 +#define GL_GREEN                          0x1904
   7.897 +#define GL_BLUE                           0x1905
   7.898 +#define GL_ALPHA                          0x1906
   7.899 +#define GL_RGB                            0x1907
   7.900 +#define GL_RGBA                           0x1908
   7.901 +#define GL_LUMINANCE                      0x1909
   7.902 +#define GL_LUMINANCE_ALPHA                0x190A
   7.903 +/*      GL_ABGR_EXT */
   7.904 +/*      GL_BGR_EXT */
   7.905 +/*      GL_BGRA_EXT */
   7.906 +
   7.907 +/* PixelMap */
   7.908 +/*      GL_PIXEL_MAP_I_TO_I */
   7.909 +/*      GL_PIXEL_MAP_S_TO_S */
   7.910 +/*      GL_PIXEL_MAP_I_TO_R */
   7.911 +/*      GL_PIXEL_MAP_I_TO_G */
   7.912 +/*      GL_PIXEL_MAP_I_TO_B */
   7.913 +/*      GL_PIXEL_MAP_I_TO_A */
   7.914 +/*      GL_PIXEL_MAP_R_TO_R */
   7.915 +/*      GL_PIXEL_MAP_G_TO_G */
   7.916 +/*      GL_PIXEL_MAP_B_TO_B */
   7.917 +/*      GL_PIXEL_MAP_A_TO_A */
   7.918 +
   7.919 +/* PixelStoreParameter */
   7.920 +/*      GL_UNPACK_SWAP_BYTES */
   7.921 +/*      GL_UNPACK_LSB_FIRST */
   7.922 +/*      GL_UNPACK_ROW_LENGTH */
   7.923 +/*      GL_UNPACK_SKIP_ROWS */
   7.924 +/*      GL_UNPACK_SKIP_PIXELS */
   7.925 +/*      GL_UNPACK_ALIGNMENT */
   7.926 +/*      GL_PACK_SWAP_BYTES */
   7.927 +/*      GL_PACK_LSB_FIRST */
   7.928 +/*      GL_PACK_ROW_LENGTH */
   7.929 +/*      GL_PACK_SKIP_ROWS */
   7.930 +/*      GL_PACK_SKIP_PIXELS */
   7.931 +/*      GL_PACK_ALIGNMENT */
   7.932 +
   7.933 +/* PixelTransferParameter */
   7.934 +/*      GL_MAP_COLOR */
   7.935 +/*      GL_MAP_STENCIL */
   7.936 +/*      GL_INDEX_SHIFT */
   7.937 +/*      GL_INDEX_OFFSET */
   7.938 +/*      GL_RED_SCALE */
   7.939 +/*      GL_RED_BIAS */
   7.940 +/*      GL_GREEN_SCALE */
   7.941 +/*      GL_GREEN_BIAS */
   7.942 +/*      GL_BLUE_SCALE */
   7.943 +/*      GL_BLUE_BIAS */
   7.944 +/*      GL_ALPHA_SCALE */
   7.945 +/*      GL_ALPHA_BIAS */
   7.946 +/*      GL_DEPTH_SCALE */
   7.947 +/*      GL_DEPTH_BIAS */
   7.948 +
   7.949 +/* PixelType */
   7.950 +#define GL_BITMAP                         0x1A00
   7.951 +/*      GL_BYTE */
   7.952 +/*      GL_UNSIGNED_BYTE */
   7.953 +/*      GL_SHORT */
   7.954 +/*      GL_UNSIGNED_SHORT */
   7.955 +/*      GL_INT */
   7.956 +/*      GL_UNSIGNED_INT */
   7.957 +/*      GL_FLOAT */
   7.958 +/*      GL_UNSIGNED_BYTE_3_3_2_EXT */
   7.959 +/*      GL_UNSIGNED_SHORT_4_4_4_4_EXT */
   7.960 +/*      GL_UNSIGNED_SHORT_5_5_5_1_EXT */
   7.961 +/*      GL_UNSIGNED_INT_8_8_8_8_EXT */
   7.962 +/*      GL_UNSIGNED_INT_10_10_10_2_EXT */
   7.963 +
   7.964 +/* PolygonMode */
   7.965 +#define GL_POINT                          0x1B00
   7.966 +#define GL_LINE                           0x1B01
   7.967 +#define GL_FILL                           0x1B02
   7.968 +
   7.969 +/* ReadBufferMode */
   7.970 +/*      GL_FRONT_LEFT */
   7.971 +/*      GL_FRONT_RIGHT */
   7.972 +/*      GL_BACK_LEFT */
   7.973 +/*      GL_BACK_RIGHT */
   7.974 +/*      GL_FRONT */
   7.975 +/*      GL_BACK */
   7.976 +/*      GL_LEFT */
   7.977 +/*      GL_RIGHT */
   7.978 +/*      GL_AUX0 */
   7.979 +/*      GL_AUX1 */
   7.980 +/*      GL_AUX2 */
   7.981 +/*      GL_AUX3 */
   7.982 +
   7.983 +/* RenderingMode */
   7.984 +#define GL_RENDER                         0x1C00
   7.985 +#define GL_FEEDBACK                       0x1C01
   7.986 +#define GL_SELECT                         0x1C02
   7.987 +
   7.988 +/* ShadingModel */
   7.989 +#define GL_FLAT                           0x1D00
   7.990 +#define GL_SMOOTH                         0x1D01
   7.991 +
   7.992 +/* StencilFunction */
   7.993 +/*      GL_NEVER */
   7.994 +/*      GL_LESS */
   7.995 +/*      GL_EQUAL */
   7.996 +/*      GL_LEQUAL */
   7.997 +/*      GL_GREATER */
   7.998 +/*      GL_NOTEQUAL */
   7.999 +/*      GL_GEQUAL */
  7.1000 +/*      GL_ALWAYS */
  7.1001 +
  7.1002 +/* StencilOp */
  7.1003 +/*      GL_ZERO */
  7.1004 +#define GL_KEEP                           0x1E00
  7.1005 +#define GL_REPLACE                        0x1E01
  7.1006 +#define GL_INCR                           0x1E02
  7.1007 +#define GL_DECR                           0x1E03
  7.1008 +/*      GL_INVERT */
  7.1009 +
  7.1010 +/* StringName */
  7.1011 +#define GL_VENDOR                         0x1F00
  7.1012 +#define GL_RENDERER                       0x1F01
  7.1013 +#define GL_VERSION                        0x1F02
  7.1014 +#define GL_EXTENSIONS                     0x1F03
  7.1015 +
  7.1016 +/* TexCoordPointerType */
  7.1017 +/*      GL_SHORT */
  7.1018 +/*      GL_INT */
  7.1019 +/*      GL_FLOAT */
  7.1020 +/*      GL_DOUBLE */
  7.1021 +
  7.1022 +/* TextureCoordName */
  7.1023 +#define GL_S                              0x2000
  7.1024 +#define GL_T                              0x2001
  7.1025 +#define GL_R                              0x2002
  7.1026 +#define GL_Q                              0x2003
  7.1027 +
  7.1028 +/* TextureEnvMode */
  7.1029 +#define GL_MODULATE                       0x2100
  7.1030 +#define GL_DECAL                          0x2101
  7.1031 +/*      GL_BLEND */
  7.1032 +/*      GL_REPLACE */
  7.1033 +/*      GL_ADD */
  7.1034 +
  7.1035 +/* TextureEnvParameter */
  7.1036 +#define GL_TEXTURE_ENV_MODE               0x2200
  7.1037 +#define GL_TEXTURE_ENV_COLOR              0x2201
  7.1038 +
  7.1039 +/* TextureEnvTarget */
  7.1040 +#define GL_TEXTURE_ENV                    0x2300
  7.1041 +
  7.1042 +/* TextureGenMode */
  7.1043 +#define GL_EYE_LINEAR                     0x2400
  7.1044 +#define GL_OBJECT_LINEAR                  0x2401
  7.1045 +#define GL_SPHERE_MAP                     0x2402
  7.1046 +
  7.1047 +/* TextureGenParameter */
  7.1048 +#define GL_TEXTURE_GEN_MODE               0x2500
  7.1049 +#define GL_OBJECT_PLANE                   0x2501
  7.1050 +#define GL_EYE_PLANE                      0x2502
  7.1051 +
  7.1052 +/* TextureMagFilter */
  7.1053 +#define GL_NEAREST                        0x2600
  7.1054 +#define GL_LINEAR                         0x2601
  7.1055 +
  7.1056 +/* TextureMinFilter */
  7.1057 +/*      GL_NEAREST */
  7.1058 +/*      GL_LINEAR */
  7.1059 +#define GL_NEAREST_MIPMAP_NEAREST         0x2700
  7.1060 +#define GL_LINEAR_MIPMAP_NEAREST          0x2701
  7.1061 +#define GL_NEAREST_MIPMAP_LINEAR          0x2702
  7.1062 +#define GL_LINEAR_MIPMAP_LINEAR           0x2703
  7.1063 +
  7.1064 +/* TextureParameterName */
  7.1065 +#define GL_TEXTURE_MAG_FILTER             0x2800
  7.1066 +#define GL_TEXTURE_MIN_FILTER             0x2801
  7.1067 +#define GL_TEXTURE_WRAP_S                 0x2802
  7.1068 +#define GL_TEXTURE_WRAP_T                 0x2803
  7.1069 +/*      GL_TEXTURE_BORDER_COLOR */
  7.1070 +/*      GL_TEXTURE_PRIORITY */
  7.1071 +
  7.1072 +/* TextureTarget */
  7.1073 +/*      GL_TEXTURE_1D */
  7.1074 +/*      GL_TEXTURE_2D */
  7.1075 +#define GL_PROXY_TEXTURE_1D               0x8063
  7.1076 +#define GL_PROXY_TEXTURE_2D               0x8064
  7.1077 +
  7.1078 +/* TextureWrapMode */
  7.1079 +#define GL_CLAMP                          0x2900
  7.1080 +#define GL_REPEAT                         0x2901
  7.1081 +
  7.1082 +/* PixelInternalFormat */
  7.1083 +#define GL_R3_G3_B2                       0x2A10
  7.1084 +#define GL_ALPHA4                         0x803B
  7.1085 +#define GL_ALPHA8                         0x803C
  7.1086 +#define GL_ALPHA12                        0x803D
  7.1087 +#define GL_ALPHA16                        0x803E
  7.1088 +#define GL_LUMINANCE4                     0x803F
  7.1089 +#define GL_LUMINANCE8                     0x8040
  7.1090 +#define GL_LUMINANCE12                    0x8041
  7.1091 +#define GL_LUMINANCE16                    0x8042
  7.1092 +#define GL_LUMINANCE4_ALPHA4              0x8043
  7.1093 +#define GL_LUMINANCE6_ALPHA2              0x8044
  7.1094 +#define GL_LUMINANCE8_ALPHA8              0x8045
  7.1095 +#define GL_LUMINANCE12_ALPHA4             0x8046
  7.1096 +#define GL_LUMINANCE12_ALPHA12            0x8047
  7.1097 +#define GL_LUMINANCE16_ALPHA16            0x8048
  7.1098 +#define GL_INTENSITY                      0x8049
  7.1099 +#define GL_INTENSITY4                     0x804A
  7.1100 +#define GL_INTENSITY8                     0x804B
  7.1101 +#define GL_INTENSITY12                    0x804C
  7.1102 +#define GL_INTENSITY16                    0x804D
  7.1103 +#define GL_RGB4                           0x804F
  7.1104 +#define GL_RGB5                           0x8050
  7.1105 +#define GL_RGB8                           0x8051
  7.1106 +#define GL_RGB10                          0x8052
  7.1107 +#define GL_RGB12                          0x8053
  7.1108 +#define GL_RGB16                          0x8054
  7.1109 +#define GL_RGBA2                          0x8055
  7.1110 +#define GL_RGBA4                          0x8056
  7.1111 +#define GL_RGB5_A1                        0x8057
  7.1112 +#define GL_RGBA8                          0x8058
  7.1113 +#define GL_RGB10_A2                       0x8059
  7.1114 +#define GL_RGBA12                         0x805A
  7.1115 +#define GL_RGBA16                         0x805B
  7.1116 +/*      GL_COLOR_INDEX1_EXT */
  7.1117 +/*      GL_COLOR_INDEX2_EXT */
  7.1118 +/*      GL_COLOR_INDEX4_EXT */
  7.1119 +/*      GL_COLOR_INDEX8_EXT */
  7.1120 +/*      GL_COLOR_INDEX12_EXT */
  7.1121 +/*      GL_COLOR_INDEX16_EXT */
  7.1122 +
  7.1123 +/* InterleavedArrayFormat */
  7.1124 +#define GL_V2F                            0x2A20
  7.1125 +#define GL_V3F                            0x2A21
  7.1126 +#define GL_C4UB_V2F                       0x2A22
  7.1127 +#define GL_C4UB_V3F                       0x2A23
  7.1128 +#define GL_C3F_V3F                        0x2A24
  7.1129 +#define GL_N3F_V3F                        0x2A25
  7.1130 +#define GL_C4F_N3F_V3F                    0x2A26
  7.1131 +#define GL_T2F_V3F                        0x2A27
  7.1132 +#define GL_T4F_V4F                        0x2A28
  7.1133 +#define GL_T2F_C4UB_V3F                   0x2A29
  7.1134 +#define GL_T2F_C3F_V3F                    0x2A2A
  7.1135 +#define GL_T2F_N3F_V3F                    0x2A2B
  7.1136 +#define GL_T2F_C4F_N3F_V3F                0x2A2C
  7.1137 +#define GL_T4F_C4F_N3F_V4F                0x2A2D
  7.1138 +
  7.1139 +/* VertexPointerType */
  7.1140 +/*      GL_SHORT */
  7.1141 +/*      GL_INT */
  7.1142 +/*      GL_FLOAT */
  7.1143 +/*      GL_DOUBLE */
  7.1144 +
  7.1145 +/* ClipPlaneName */
  7.1146 +#define GL_CLIP_PLANE0                    0x3000
  7.1147 +#define GL_CLIP_PLANE1                    0x3001
  7.1148 +#define GL_CLIP_PLANE2                    0x3002
  7.1149 +#define GL_CLIP_PLANE3                    0x3003
  7.1150 +#define GL_CLIP_PLANE4                    0x3004
  7.1151 +#define GL_CLIP_PLANE5                    0x3005
  7.1152 +
  7.1153 +/* LightName */
  7.1154 +#define GL_LIGHT0                         0x4000
  7.1155 +#define GL_LIGHT1                         0x4001
  7.1156 +#define GL_LIGHT2                         0x4002
  7.1157 +#define GL_LIGHT3                         0x4003
  7.1158 +#define GL_LIGHT4                         0x4004
  7.1159 +#define GL_LIGHT5                         0x4005
  7.1160 +#define GL_LIGHT6                         0x4006
  7.1161 +#define GL_LIGHT7                         0x4007
  7.1162 +
  7.1163 +/* EXT_abgr */
  7.1164 +#define GL_ABGR_EXT                       0x8000
  7.1165 +
  7.1166 +/* EXT_blend_color */
  7.1167 +#define GL_CONSTANT_COLOR_EXT             0x8001
  7.1168 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
  7.1169 +#define GL_CONSTANT_ALPHA_EXT             0x8003
  7.1170 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
  7.1171 +#define GL_BLEND_COLOR_EXT                0x8005
  7.1172 +
  7.1173 +/* EXT_blend_minmax */
  7.1174 +#define GL_FUNC_ADD_EXT                   0x8006
  7.1175 +#define GL_MIN_EXT                        0x8007
  7.1176 +#define GL_MAX_EXT                        0x8008
  7.1177 +#define GL_BLEND_EQUATION_EXT             0x8009
  7.1178 +
  7.1179 +/* EXT_blend_subtract */
  7.1180 +#define GL_FUNC_SUBTRACT_EXT              0x800A
  7.1181 +#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
  7.1182 +
  7.1183 +/* EXT_packed_pixels */
  7.1184 +#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032
  7.1185 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033
  7.1186 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034
  7.1187 +#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035
  7.1188 +#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036
  7.1189 +
  7.1190 +/* OpenGL12 */
  7.1191 +#define GL_PACK_SKIP_IMAGES               0x806B
  7.1192 +#define GL_PACK_IMAGE_HEIGHT              0x806C
  7.1193 +#define GL_UNPACK_SKIP_IMAGES             0x806D
  7.1194 +#define GL_UNPACK_IMAGE_HEIGHT            0x806E
  7.1195 +#define GL_TEXTURE_3D                     0x806F
  7.1196 +#define GL_PROXY_TEXTURE_3D               0x8070
  7.1197 +#define GL_TEXTURE_DEPTH                  0x8071
  7.1198 +#define GL_TEXTURE_WRAP_R                 0x8072
  7.1199 +#define GL_MAX_3D_TEXTURE_SIZE            0x8073
  7.1200 +#define GL_BGR                            0x80E0
  7.1201 +#define GL_BGRA                           0x80E1
  7.1202 +#define GL_UNSIGNED_BYTE_3_3_2            0x8032
  7.1203 +#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
  7.1204 +#define GL_UNSIGNED_SHORT_5_6_5           0x8363
  7.1205 +#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
  7.1206 +#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
  7.1207 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
  7.1208 +#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
  7.1209 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
  7.1210 +#define GL_UNSIGNED_INT_8_8_8_8           0x8035
  7.1211 +#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
  7.1212 +#define GL_UNSIGNED_INT_10_10_10_2        0x8036
  7.1213 +#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
  7.1214 +#define GL_RESCALE_NORMAL                 0x803A
  7.1215 +#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
  7.1216 +#define GL_SINGLE_COLOR                   0x81F9
  7.1217 +#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
  7.1218 +#define GL_CLAMP_TO_EDGE                  0x812F
  7.1219 +#define GL_TEXTURE_MIN_LOD                0x813A
  7.1220 +#define GL_TEXTURE_MAX_LOD                0x813B
  7.1221 +#define GL_TEXTURE_BASE_LEVEL             0x813C
  7.1222 +#define GL_TEXTURE_MAX_LEVEL              0x813D
  7.1223 +#define GL_MAX_ELEMENTS_VERTICES          0x80E8
  7.1224 +#define GL_MAX_ELEMENTS_INDICES           0x80E9
  7.1225 +#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
  7.1226 +#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
  7.1227 +
  7.1228 +/* ARB_imaging */
  7.1229 +#define GL_CONSTANT_COLOR                 0x8001
  7.1230 +#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
  7.1231 +#define GL_CONSTANT_ALPHA                 0x8003
  7.1232 +#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
  7.1233 +#define GL_BLEND_COLOR                    0x8005
  7.1234 +#define GL_FUNC_ADD                       0x8006
  7.1235 +#define GL_MIN                            0x8007
  7.1236 +#define GL_MAX                            0x8008
  7.1237 +#define GL_BLEND_EQUATION                 0x8009
  7.1238 +#define GL_FUNC_SUBTRACT                  0x800A
  7.1239 +#define GL_FUNC_REVERSE_SUBTRACT          0x800B
  7.1240 +#define GL_COLOR_MATRIX                   0x80B1
  7.1241 +#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
  7.1242 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
  7.1243 +#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
  7.1244 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
  7.1245 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
  7.1246 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
  7.1247 +#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
  7.1248 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
  7.1249 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
  7.1250 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB
  7.1251 +#define GL_COLOR_TABLE                    0x80D0
  7.1252 +#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
  7.1253 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
  7.1254 +#define GL_PROXY_COLOR_TABLE              0x80D3
  7.1255 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
  7.1256 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
  7.1257 +#define GL_COLOR_TABLE_SCALE              0x80D6
  7.1258 +#define GL_COLOR_TABLE_BIAS               0x80D7
  7.1259 +#define GL_COLOR_TABLE_FORMAT             0x80D8
  7.1260 +#define GL_COLOR_TABLE_WIDTH              0x80D9
  7.1261 +#define GL_COLOR_TABLE_RED_SIZE           0x80DA
  7.1262 +#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
  7.1263 +#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
  7.1264 +#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
  7.1265 +#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
  7.1266 +#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
  7.1267 +#define GL_CONVOLUTION_1D                 0x8010
  7.1268 +#define GL_CONVOLUTION_2D                 0x8011
  7.1269 +#define GL_SEPARABLE_2D                   0x8012
  7.1270 +#define GL_CONVOLUTION_BORDER_MODE        0x8013
  7.1271 +#define GL_CONVOLUTION_FILTER_SCALE       0x8014
  7.1272 +#define GL_CONVOLUTION_FILTER_BIAS        0x8015
  7.1273 +#define GL_REDUCE                         0x8016
  7.1274 +#define GL_CONVOLUTION_FORMAT             0x8017
  7.1275 +#define GL_CONVOLUTION_WIDTH              0x8018
  7.1276 +#define GL_CONVOLUTION_HEIGHT             0x8019
  7.1277 +#define GL_MAX_CONVOLUTION_WIDTH          0x801A
  7.1278 +#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
  7.1279 +#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
  7.1280 +#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
  7.1281 +#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
  7.1282 +#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
  7.1283 +#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
  7.1284 +#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
  7.1285 +#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
  7.1286 +#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
  7.1287 +#define GL_IGNORE_BORDER                  0x8150
  7.1288 +#define GL_CONSTANT_BORDER                0x8151
  7.1289 +#define GL_REPLICATE_BORDER               0x8153
  7.1290 +#define GL_CONVOLUTION_BORDER_COLOR       0x8154
  7.1291 +#define GL_HISTOGRAM                      0x8024
  7.1292 +#define GL_PROXY_HISTOGRAM                0x8025
  7.1293 +#define GL_HISTOGRAM_WIDTH                0x8026
  7.1294 +#define GL_HISTOGRAM_FORMAT               0x8027
  7.1295 +#define GL_HISTOGRAM_RED_SIZE             0x8028
  7.1296 +#define GL_HISTOGRAM_GREEN_SIZE           0x8029
  7.1297 +#define GL_HISTOGRAM_BLUE_SIZE            0x802A
  7.1298 +#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
  7.1299 +#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
  7.1300 +#define GL_HISTOGRAM_SINK                 0x802D
  7.1301 +#define GL_MINMAX                         0x802E
  7.1302 +#define GL_MINMAX_FORMAT                  0x802F
  7.1303 +#define GL_MINMAX_SINK                    0x8030
  7.1304 +
  7.1305 +/* OpenGL13 */
  7.1306 +#define GL_ACTIVE_TEXTURE                 0x84E0
  7.1307 +#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
  7.1308 +#define GL_MAX_TEXTURE_UNITS              0x84E2
  7.1309 +#define GL_TEXTURE0                       0x84C0
  7.1310 +#define GL_TEXTURE1                       0x84C1
  7.1311 +#define GL_TEXTURE2                       0x84C2
  7.1312 +#define GL_TEXTURE3                       0x84C3
  7.1313 +#define GL_TEXTURE4                       0x84C4
  7.1314 +#define GL_TEXTURE5                       0x84C5
  7.1315 +#define GL_TEXTURE6                       0x84C6
  7.1316 +#define GL_TEXTURE7                       0x84C7
  7.1317 +#define GL_TEXTURE8                       0x84C8
  7.1318 +#define GL_TEXTURE9                       0x84C9
  7.1319 +#define GL_TEXTURE10                      0x84CA
  7.1320 +#define GL_TEXTURE11                      0x84CB
  7.1321 +#define GL_TEXTURE12                      0x84CC
  7.1322 +#define GL_TEXTURE13                      0x84CD
  7.1323 +#define GL_TEXTURE14                      0x84CE
  7.1324 +#define GL_TEXTURE15                      0x84CF
  7.1325 +#define GL_TEXTURE16                      0x84D0
  7.1326 +#define GL_TEXTURE17                      0x84D1
  7.1327 +#define GL_TEXTURE18                      0x84D2
  7.1328 +#define GL_TEXTURE19                      0x84D3
  7.1329 +#define GL_TEXTURE20                      0x84D4
  7.1330 +#define GL_TEXTURE21                      0x84D5
  7.1331 +#define GL_TEXTURE22                      0x84D6
  7.1332 +#define GL_TEXTURE23                      0x84D7
  7.1333 +#define GL_TEXTURE24                      0x84D8
  7.1334 +#define GL_TEXTURE25                      0x84D9
  7.1335 +#define GL_TEXTURE26                      0x84DA
  7.1336 +#define GL_TEXTURE27                      0x84DB
  7.1337 +#define GL_TEXTURE28                      0x84DC
  7.1338 +#define GL_TEXTURE29                      0x84DD
  7.1339 +#define GL_TEXTURE30                      0x84DE
  7.1340 +#define GL_TEXTURE31                      0x84DF
  7.1341 +#define GL_NORMAL_MAP                     0x8511
  7.1342 +#define GL_REFLECTION_MAP                 0x8512
  7.1343 +#define GL_TEXTURE_CUBE_MAP               0x8513
  7.1344 +#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
  7.1345 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
  7.1346 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
  7.1347 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
  7.1348 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
  7.1349 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
  7.1350 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
  7.1351 +#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
  7.1352 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
  7.1353 +#define GL_COMBINE                        0x8570
  7.1354 +#define GL_COMBINE_RGB                    0x8571
  7.1355 +#define GL_COMBINE_ALPHA                  0x8572
  7.1356 +#define GL_RGB_SCALE                      0x8573
  7.1357 +#define GL_ADD_SIGNED                     0x8574
  7.1358 +#define GL_INTERPOLATE                    0x8575
  7.1359 +#define GL_CONSTANT                       0x8576
  7.1360 +#define GL_PRIMARY_COLOR                  0x8577
  7.1361 +#define GL_PREVIOUS                       0x8578
  7.1362 +#define GL_SOURCE0_RGB                    0x8580
  7.1363 +#define GL_SOURCE1_RGB                    0x8581
  7.1364 +#define GL_SOURCE2_RGB                    0x8582
  7.1365 +#define GL_SOURCE0_ALPHA                  0x8588
  7.1366 +#define GL_SOURCE1_ALPHA                  0x8589
  7.1367 +#define GL_SOURCE2_ALPHA                  0x858A
  7.1368 +#define GL_OPERAND0_RGB                   0x8590
  7.1369 +#define GL_OPERAND1_RGB                   0x8591
  7.1370 +#define GL_OPERAND2_RGB                   0x8592
  7.1371 +#define GL_OPERAND0_ALPHA                 0x8598
  7.1372 +#define GL_OPERAND1_ALPHA                 0x8599
  7.1373 +#define GL_OPERAND2_ALPHA                 0x859A
  7.1374 +#define GL_SUBTRACT                       0x84E7
  7.1375 +#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
  7.1376 +#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
  7.1377 +#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
  7.1378 +#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
  7.1379 +#define GL_COMPRESSED_ALPHA               0x84E9
  7.1380 +#define GL_COMPRESSED_LUMINANCE           0x84EA
  7.1381 +#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
  7.1382 +#define GL_COMPRESSED_INTENSITY           0x84EC
  7.1383 +#define GL_COMPRESSED_RGB                 0x84ED
  7.1384 +#define GL_COMPRESSED_RGBA                0x84EE
  7.1385 +#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
  7.1386 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
  7.1387 +#define GL_TEXTURE_COMPRESSED             0x86A1
  7.1388 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
  7.1389 +#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
  7.1390 +#define GL_DOT3_RGB                       0x86AE
  7.1391 +#define GL_DOT3_RGBA                      0x86AF
  7.1392 +#define GL_CLAMP_TO_BORDER                0x812D
  7.1393 +#define GL_MULTISAMPLE                    0x809D
  7.1394 +#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
  7.1395 +#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
  7.1396 +#define GL_SAMPLE_COVERAGE                0x80A0
  7.1397 +#define GL_SAMPLE_BUFFERS                 0x80A8
  7.1398 +#define GL_SAMPLES                        0x80A9
  7.1399 +#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
  7.1400 +#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
  7.1401 +#define GL_MULTISAMPLE_BIT                0x20000000
  7.1402 +
  7.1403 +/* EXT_vertex_array */
  7.1404 +#define GL_VERTEX_ARRAY_EXT               0x8074
  7.1405 +#define GL_NORMAL_ARRAY_EXT               0x8075
  7.1406 +#define GL_COLOR_ARRAY_EXT                0x8076
  7.1407 +#define GL_INDEX_ARRAY_EXT                0x8077
  7.1408 +#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
  7.1409 +#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
  7.1410 +#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
  7.1411 +#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
  7.1412 +#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
  7.1413 +#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
  7.1414 +#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
  7.1415 +#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
  7.1416 +#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
  7.1417 +#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
  7.1418 +#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
  7.1419 +#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
  7.1420 +#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
  7.1421 +#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
  7.1422 +#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
  7.1423 +#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
  7.1424 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
  7.1425 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
  7.1426 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
  7.1427 +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
  7.1428 +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
  7.1429 +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
  7.1430 +#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
  7.1431 +#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
  7.1432 +#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
  7.1433 +#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
  7.1434 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
  7.1435 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
  7.1436 +
  7.1437 +/* EXT_texture3D */
  7.1438 +#define GL_PACK_SKIP_IMAGES               0x806B
  7.1439 +#define GL_PACK_SKIP_IMAGES_EXT           0x806B
  7.1440 +#define GL_PACK_IMAGE_HEIGHT              0x806C
  7.1441 +#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
  7.1442 +#define GL_UNPACK_SKIP_IMAGES             0x806D
  7.1443 +#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
  7.1444 +#define GL_UNPACK_IMAGE_HEIGHT            0x806E
  7.1445 +#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
  7.1446 +#define GL_TEXTURE_3D                     0x806F
  7.1447 +#define GL_TEXTURE_3D_EXT                 0x806F
  7.1448 +#define GL_PROXY_TEXTURE_3D               0x8070
  7.1449 +#define GL_PROXY_TEXTURE_3D_EXT           0x8070
  7.1450 +#define GL_TEXTURE_DEPTH                  0x8071
  7.1451 +#define GL_TEXTURE_DEPTH_EXT              0x8071
  7.1452 +#define GL_TEXTURE_WRAP_R                 0x8072
  7.1453 +#define GL_TEXTURE_WRAP_R_EXT             0x8072
  7.1454 +#define GL_MAX_3D_TEXTURE_SIZE            0x8073
  7.1455 +#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
  7.1456 +
  7.1457 +/* EXT_color_table */
  7.1458 +#define GL_TABLE_TOO_LARGE_EXT            0x8031
  7.1459 +#define GL_COLOR_TABLE_FORMAT_EXT         0x80D8
  7.1460 +#define GL_COLOR_TABLE_WIDTH_EXT          0x80D9
  7.1461 +#define GL_COLOR_TABLE_RED_SIZE_EXT       0x80DA
  7.1462 +#define GL_COLOR_TABLE_GREEN_SIZE_EXT     0x80DB
  7.1463 +#define GL_COLOR_TABLE_BLUE_SIZE_EXT      0x80DC
  7.1464 +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT     0x80DD
  7.1465 +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
  7.1466 +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
  7.1467 +
  7.1468 +/* EXT_bgra */
  7.1469 +#define GL_BGR_EXT                        0x80E0
  7.1470 +#define GL_BGRA_EXT                       0x80E1
  7.1471 +
  7.1472 +/* SGIS_texture_lod */
  7.1473 +#define GL_TEXTURE_MIN_LOD_SGIS           0x813A
  7.1474 +#define GL_TEXTURE_MAX_LOD_SGIS           0x813B
  7.1475 +#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C
  7.1476 +#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D
  7.1477 +
  7.1478 +/* EXT_paletted_texture */
  7.1479 +#define GL_COLOR_INDEX1_EXT               0x80E2
  7.1480 +#define GL_COLOR_INDEX2_EXT               0x80E3
  7.1481 +#define GL_COLOR_INDEX4_EXT               0x80E4
  7.1482 +#define GL_COLOR_INDEX8_EXT               0x80E5
  7.1483 +#define GL_COLOR_INDEX12_EXT              0x80E6
  7.1484 +#define GL_COLOR_INDEX16_EXT              0x80E7
  7.1485 +#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
  7.1486 +
  7.1487 +/* EXT_clip_volume_hint */
  7.1488 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0
  7.1489 +
  7.1490 +/* EXT_point_parameters */
  7.1491 +#define GL_POINT_SIZE_MIN_EXT             0x8126
  7.1492 +#define GL_POINT_SIZE_MAX_EXT             0x8127
  7.1493 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
  7.1494 +#define GL_DISTANCE_ATTENUATION_EXT       0x8129
  7.1495 +
  7.1496 +/* EXT_compiled_vertex_array */
  7.1497 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8
  7.1498 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9
  7.1499 +
  7.1500 +/* EXT_shared_texture_palette */
  7.1501 +#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB
  7.1502 +
  7.1503 +/* SGIS_multitexture */
  7.1504 +#define GL_SELECTED_TEXTURE_SGIS          0x835C
  7.1505 +#define GL_MAX_TEXTURES_SGIS              0x835D
  7.1506 +#define GL_TEXTURE0_SGIS                  0x835E
  7.1507 +#define GL_TEXTURE1_SGIS                  0x835F
  7.1508 +#define GL_TEXTURE2_SGIS                  0x8360
  7.1509 +#define GL_TEXTURE3_SGIS                  0x8361
  7.1510 +
  7.1511 +/* ARB_multitexture */
  7.1512 +#define GL_ACTIVE_TEXTURE_ARB             0x84E0
  7.1513 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
  7.1514 +#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
  7.1515 +#define GL_TEXTURE0_ARB                   0x84C0
  7.1516 +#define GL_TEXTURE1_ARB                   0x84C1
  7.1517 +#define GL_TEXTURE2_ARB                   0x84C2
  7.1518 +#define GL_TEXTURE3_ARB                   0x84C3
  7.1519 +#define GL_TEXTURE4_ARB                   0x84C4
  7.1520 +#define GL_TEXTURE5_ARB                   0x84C5
  7.1521 +#define GL_TEXTURE6_ARB                   0x84C6
  7.1522 +#define GL_TEXTURE7_ARB                   0x84C7
  7.1523 +#define GL_TEXTURE8_ARB                   0x84C8
  7.1524 +#define GL_TEXTURE9_ARB                   0x84C9
  7.1525 +#define GL_TEXTURE10_ARB                  0x84CA
  7.1526 +#define GL_TEXTURE11_ARB                  0x84CB
  7.1527 +#define GL_TEXTURE12_ARB                  0x84CC
  7.1528 +#define GL_TEXTURE13_ARB                  0x84CD
  7.1529 +#define GL_TEXTURE14_ARB                  0x84CE
  7.1530 +#define GL_TEXTURE15_ARB                  0x84CF
  7.1531 +#define GL_TEXTURE16_ARB                  0x84D0
  7.1532 +#define GL_TEXTURE17_ARB                  0x84D1
  7.1533 +#define GL_TEXTURE18_ARB                  0x84D2
  7.1534 +#define GL_TEXTURE19_ARB                  0x84D3
  7.1535 +#define GL_TEXTURE20_ARB                  0x84D4
  7.1536 +#define GL_TEXTURE21_ARB                  0x84D5
  7.1537 +#define GL_TEXTURE22_ARB                  0x84D6
  7.1538 +#define GL_TEXTURE23_ARB                  0x84D7
  7.1539 +#define GL_TEXTURE24_ARB                  0x84D8
  7.1540 +#define GL_TEXTURE25_ARB                  0x84D9
  7.1541 +#define GL_TEXTURE26_ARB                  0x84DA
  7.1542 +#define GL_TEXTURE27_ARB                  0x84DB
  7.1543 +#define GL_TEXTURE28_ARB                  0x84DC
  7.1544 +#define GL_TEXTURE29_ARB                  0x84DD
  7.1545 +#define GL_TEXTURE30_ARB                  0x84DE
  7.1546 +#define GL_TEXTURE31_ARB                  0x84DF
  7.1547 +
  7.1548 +/* EXT_fog_coord */
  7.1549 +#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450
  7.1550 +#define GL_FOG_COORDINATE_EXT             0x8451
  7.1551 +#define GL_FRAGMENT_DEPTH_EXT             0x8452
  7.1552 +#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453
  7.1553 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454
  7.1554 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
  7.1555 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
  7.1556 +#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457
  7.1557 +
  7.1558 +/* EXT_secondary_color */
  7.1559 +#define GL_COLOR_SUM_EXT                  0x8458
  7.1560 +#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459
  7.1561 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
  7.1562 +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
  7.1563 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
  7.1564 +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
  7.1565 +#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E
  7.1566 +
  7.1567 +/* EXT_separate_specular_color */
  7.1568 +#define GL_SINGLE_COLOR_EXT               0x81F9
  7.1569 +#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA
  7.1570 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8
  7.1571 +
  7.1572 +/* EXT_rescale_normal */
  7.1573 +#define GL_RESCALE_NORMAL_EXT             0x803A
  7.1574 +
  7.1575 +/* EXT_stencil_wrap */
  7.1576 +#define GL_INCR_WRAP_EXT                  0x8507
  7.1577 +#define GL_DECR_WRAP_EXT                  0x8508
  7.1578 +
  7.1579 +/* EXT_vertex_weighting */
  7.1580 +#define GL_MODELVIEW0_MATRIX_EXT          GL_MODELVIEW_MATRIX
  7.1581 +#define GL_MODELVIEW1_MATRIX_EXT          0x8506
  7.1582 +#define GL_MODELVIEW0_STACK_DEPTH_EXT     GL_MODELVIEW_STACK_DEPTH
  7.1583 +#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502
  7.1584 +#define GL_VERTEX_WEIGHTING_EXT           0x8509
  7.1585 +#define GL_MODELVIEW0_EXT                 GL_MODELVIEW
  7.1586 +#define GL_MODELVIEW1_EXT                 0x850A
  7.1587 +#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B
  7.1588 +#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C
  7.1589 +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D
  7.1590 +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E
  7.1591 +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
  7.1592 +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
  7.1593 +
  7.1594 +/* NV_texgen_reflection */
  7.1595 +#define GL_NORMAL_MAP_NV                  0x8511
  7.1596 +#define GL_REFLECTION_MAP_NV              0x8512
  7.1597 +
  7.1598 +/* EXT_texture_cube_map */
  7.1599 +#define GL_NORMAL_MAP_EXT                 0x8511
  7.1600 +#define GL_REFLECTION_MAP_EXT             0x8512
  7.1601 +#define GL_TEXTURE_CUBE_MAP_EXT           0x8513
  7.1602 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514
  7.1603 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
  7.1604 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
  7.1605 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
  7.1606 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
  7.1607 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
  7.1608 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
  7.1609 +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B
  7.1610 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C
  7.1611 +
  7.1612 +/* ARB_texture_cube_map */
  7.1613 +#define GL_NORMAL_MAP_ARB                 0x8511
  7.1614 +#define GL_REFLECTION_MAP_ARB             0x8512
  7.1615 +#define GL_TEXTURE_CUBE_MAP_ARB           0x8513
  7.1616 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514
  7.1617 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
  7.1618 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
  7.1619 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
  7.1620 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
  7.1621 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
  7.1622 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
  7.1623 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B
  7.1624 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C
  7.1625 +
  7.1626 +/* NV_vertex_array_range */
  7.1627 +#define GL_VERTEX_ARRAY_RANGE_NV          0x851D
  7.1628 +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E
  7.1629 +#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F
  7.1630 +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
  7.1631 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521
  7.1632 +
  7.1633 +/* NV_vertex_array_range2 */
  7.1634 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
  7.1635 +
  7.1636 +/* NV_register_combiners */
  7.1637 +#define GL_REGISTER_COMBINERS_NV          0x8522
  7.1638 +#define GL_COMBINER0_NV                   0x8550
  7.1639 +#define GL_COMBINER1_NV                   0x8551
  7.1640 +#define GL_COMBINER2_NV                   0x8552
  7.1641 +#define GL_COMBINER3_NV                   0x8553
  7.1642 +#define GL_COMBINER4_NV                   0x8554
  7.1643 +#define GL_COMBINER5_NV                   0x8555
  7.1644 +#define GL_COMBINER6_NV                   0x8556
  7.1645 +#define GL_COMBINER7_NV                   0x8557
  7.1646 +#define GL_VARIABLE_A_NV                  0x8523
  7.1647 +#define GL_VARIABLE_B_NV                  0x8524
  7.1648 +#define GL_VARIABLE_C_NV                  0x8525
  7.1649 +#define GL_VARIABLE_D_NV                  0x8526
  7.1650 +#define GL_VARIABLE_E_NV                  0x8527
  7.1651 +#define GL_VARIABLE_F_NV                  0x8528
  7.1652 +#define GL_VARIABLE_G_NV                  0x8529
  7.1653 +/*      GL_ZERO */
  7.1654 +#define GL_CONSTANT_COLOR0_NV             0x852A
  7.1655 +#define GL_CONSTANT_COLOR1_NV             0x852B
  7.1656 +/*      GL_FOG */
  7.1657 +#define GL_PRIMARY_COLOR_NV               0x852C
  7.1658 +#define GL_SECONDARY_COLOR_NV             0x852D
  7.1659 +#define GL_SPARE0_NV                      0x852E
  7.1660 +#define GL_SPARE1_NV                      0x852F
  7.1661 +/*      GL_TEXTURE0_ARB */
  7.1662 +/*      GL_TEXTURE1_ARB */
  7.1663 +#define GL_UNSIGNED_IDENTITY_NV           0x8536
  7.1664 +#define GL_UNSIGNED_INVERT_NV             0x8537
  7.1665 +#define GL_EXPAND_NORMAL_NV               0x8538
  7.1666 +#define GL_EXPAND_NEGATE_NV               0x8539
  7.1667 +#define GL_HALF_BIAS_NORMAL_NV            0x853A
  7.1668 +#define GL_HALF_BIAS_NEGATE_NV            0x853B
  7.1669 +#define GL_SIGNED_IDENTITY_NV             0x853C
  7.1670 +#define GL_SIGNED_NEGATE_NV               0x853D
  7.1671 +#define GL_E_TIMES_F_NV                   0x8531
  7.1672 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
  7.1673 +/*      GL_NONE */
  7.1674 +#define GL_SCALE_BY_TWO_NV                0x853E
  7.1675 +#define GL_SCALE_BY_FOUR_NV               0x853F
  7.1676 +#define GL_SCALE_BY_ONE_HALF_NV           0x8540
  7.1677 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
  7.1678 +#define GL_DISCARD_NV                     0x8530
  7.1679 +#define GL_COMBINER_INPUT_NV              0x8542
  7.1680 +#define GL_COMBINER_MAPPING_NV            0x8543
  7.1681 +#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
  7.1682 +#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
  7.1683 +#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
  7.1684 +#define GL_COMBINER_MUX_SUM_NV            0x8547
  7.1685 +#define GL_COMBINER_SCALE_NV              0x8548
  7.1686 +#define GL_COMBINER_BIAS_NV               0x8549
  7.1687 +#define GL_COMBINER_AB_OUTPUT_NV          0x854A
  7.1688 +#define GL_COMBINER_CD_OUTPUT_NV          0x854B
  7.1689 +#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
  7.1690 +#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
  7.1691 +#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
  7.1692 +#define GL_COLOR_SUM_CLAMP_NV             0x854F
  7.1693 +
  7.1694 +/* NV_fog_distance */
  7.1695 +#define GL_FOG_DISTANCE_MODE_NV           0x855A
  7.1696 +#define GL_EYE_RADIAL_NV                  0x855B
  7.1697 +/*      GL_EYE_PLANE */
  7.1698 +#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
  7.1699 +
  7.1700 +/* NV_fragment_program */
  7.1701 +#define GL_FRAGMENT_PROGRAM_NV            0x8870
  7.1702 +#define GL_MAX_TEXTURE_COORDS_NV          0x8871
  7.1703 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV     0x8872
  7.1704 +#define GL_FRAGMENT_PROGRAM_BINDING_NV    0x8873
  7.1705 +#define GL_PROGRAM_ERROR_STRING_NV        0x8874
  7.1706 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
  7.1707 +
  7.1708 +/* NV_light_max_exponent */
  7.1709 +#define GL_MAX_SHININESS_NV               0x8504
  7.1710 +#define GL_MAX_SPOT_EXPONENT_NV           0x8505
  7.1711 +
  7.1712 +/* ARB_texture_env_combine */
  7.1713 +#define GL_COMBINE_ARB                    0x8570
  7.1714 +#define GL_COMBINE_RGB_ARB                0x8571
  7.1715 +#define GL_COMBINE_ALPHA_ARB              0x8572
  7.1716 +#define GL_RGB_SCALE_ARB                  0x8573
  7.1717 +#define GL_ADD_SIGNED_ARB                 0x8574
  7.1718 +#define GL_INTERPOLATE_ARB                0x8575
  7.1719 +#define GL_CONSTANT_ARB                   0x8576
  7.1720 +#define GL_PRIMARY_COLOR_ARB              0x8577
  7.1721 +#define GL_PREVIOUS_ARB                   0x8578
  7.1722 +#define GL_SOURCE0_RGB_ARB                0x8580
  7.1723 +#define GL_SOURCE1_RGB_ARB                0x8581
  7.1724 +#define GL_SOURCE2_RGB_ARB                0x8582
  7.1725 +#define GL_SOURCE0_ALPHA_ARB              0x8588
  7.1726 +#define GL_SOURCE1_ALPHA_ARB              0x8589
  7.1727 +#define GL_SOURCE2_ALPHA_ARB              0x858A
  7.1728 +#define GL_OPERAND0_RGB_ARB               0x8590
  7.1729 +#define GL_OPERAND1_RGB_ARB               0x8591
  7.1730 +#define GL_OPERAND2_RGB_ARB               0x8592
  7.1731 +#define GL_OPERAND0_ALPHA_ARB             0x8598
  7.1732 +#define GL_OPERAND1_ALPHA_ARB             0x8599
  7.1733 +#define GL_OPERAND2_ALPHA_ARB             0x859A
  7.1734 +#define GL_SUBTRACT_ARB                   0x84E7
  7.1735 +
  7.1736 +/* EXT_texture_env_combine */
  7.1737 +#define GL_COMBINE_EXT                    0x8570
  7.1738 +#define GL_COMBINE_RGB_EXT                0x8571
  7.1739 +#define GL_COMBINE_ALPHA_EXT              0x8572
  7.1740 +#define GL_RGB_SCALE_EXT                  0x8573
  7.1741 +#define GL_ADD_SIGNED_EXT                 0x8574
  7.1742 +#define GL_INTERPOLATE_EXT                0x8575
  7.1743 +#define GL_CONSTANT_EXT                   0x8576
  7.1744 +#define GL_PRIMARY_COLOR_EXT              0x8577
  7.1745 +#define GL_PREVIOUS_EXT                   0x8578
  7.1746 +#define GL_SOURCE0_RGB_EXT                0x8580
  7.1747 +#define GL_SOURCE1_RGB_EXT                0x8581
  7.1748 +#define GL_SOURCE2_RGB_EXT                0x8582
  7.1749 +#define GL_SOURCE0_ALPHA_EXT              0x8588
  7.1750 +#define GL_SOURCE1_ALPHA_EXT              0x8589
  7.1751 +#define GL_SOURCE2_ALPHA_EXT              0x858A
  7.1752 +#define GL_OPERAND0_RGB_EXT               0x8590
  7.1753 +#define GL_OPERAND1_RGB_EXT               0x8591
  7.1754 +#define GL_OPERAND2_RGB_EXT               0x8592
  7.1755 +#define GL_OPERAND0_ALPHA_EXT             0x8598
  7.1756 +#define GL_OPERAND1_ALPHA_EXT             0x8599
  7.1757 +#define GL_OPERAND2_ALPHA_EXT             0x859A
  7.1758 +
  7.1759 +/* NV_texture_env_combine4 */
  7.1760 +#define GL_COMBINE4_NV                    0x8503
  7.1761 +#define GL_SOURCE3_RGB_NV                 0x8583
  7.1762 +#define GL_SOURCE3_ALPHA_NV               0x858B
  7.1763 +#define GL_OPERAND3_RGB_NV                0x8593
  7.1764 +#define GL_OPERAND3_ALPHA_NV              0x859B
  7.1765 +
  7.1766 +/* EXT_texture_filter_anisotropic */
  7.1767 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
  7.1768 +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
  7.1769 +
  7.1770 +/* EXT_texture_lod_bias */
  7.1771 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
  7.1772 +#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
  7.1773 +#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
  7.1774 +
  7.1775 +/* EXT_texture_edge_clamp */
  7.1776 +#define GL_CLAMP_TO_EDGE_EXT              0x812F
  7.1777 +
  7.1778 +/* S3_s3tc */
  7.1779 +#define GL_RGB_S3TC                       0x83A0
  7.1780 +#define GL_RGB4_S3TC                      0x83A1
  7.1781 +#define GL_RGBA_S3TC                      0x83A2
  7.1782 +#define GL_RGBA4_S3TC                     0x83A3
  7.1783 +#define GL_RGBA_DXT5_S3TC                 0x83A4
  7.1784 +#define GL_RGBA4_DXT5_S3TC                0x83A5
  7.1785 +
  7.1786 +/* ARB_transpose_matrix */
  7.1787 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
  7.1788 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
  7.1789 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5
  7.1790 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6
  7.1791 +
  7.1792 +/* ARB_texture_compression */
  7.1793 +#define GL_COMPRESSED_ALPHA_ARB           0x84E9
  7.1794 +#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA
  7.1795 +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
  7.1796 +#define GL_COMPRESSED_INTENSITY_ARB       0x84EC
  7.1797 +#define GL_COMPRESSED_RGB_ARB             0x84ED
  7.1798 +#define GL_COMPRESSED_RGBA_ARB            0x84EE
  7.1799 +#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF
  7.1800 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
  7.1801 +#define GL_TEXTURE_COMPRESSED_ARB         0x86A1
  7.1802 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
  7.1803 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
  7.1804 +
  7.1805 +/* EXT_texture_compression_s3tc */
  7.1806 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
  7.1807 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
  7.1808 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
  7.1809 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
  7.1810 +
  7.1811 +/* NV_fence */
  7.1812 +#define GL_ALL_COMPLETED_NV               0x84F2
  7.1813 +#define GL_FENCE_STATUS_NV                0x84F3
  7.1814 +#define GL_FENCE_CONDITION_NV             0x84F4
  7.1815 +
  7.1816 +/* NV_mac_get_proc_address */
  7.1817 +#define GL_ALL_EXTENSIONS_NV              0x84FB
  7.1818 +#define GL_MAC_GET_PROC_ADDRESS_NV        0x84FC
  7.1819 +
  7.1820 +/* NV_vertex_program */
  7.1821 +#define GL_VERTEX_PROGRAM_NV              0x8620
  7.1822 +#define GL_VERTEX_STATE_PROGRAM_NV        0x8621
  7.1823 +#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623
  7.1824 +#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624
  7.1825 +#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625
  7.1826 +#define GL_CURRENT_ATTRIB_NV              0x8626
  7.1827 +#define GL_PROGRAM_LENGTH_NV              0x8627
  7.1828 +#define GL_PROGRAM_STRING_NV              0x8628
  7.1829 +#define GL_MODELVIEW_PROJECTION_NV        0x8629
  7.1830 +#define GL_IDENTITY_NV                    0x862A
  7.1831 +#define GL_INVERSE_NV                     0x862B
  7.1832 +#define GL_TRANSPOSE_NV                   0x862C
  7.1833 +#define GL_INVERSE_TRANSPOSE_NV           0x862D
  7.1834 +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
  7.1835 +#define GL_MAX_TRACK_MATRICES_NV          0x862F
  7.1836 +#define GL_MATRIX0_NV                     0x8630
  7.1837 +#define GL_MATRIX1_NV                     0x8631
  7.1838 +#define GL_MATRIX2_NV                     0x8632
  7.1839 +#define GL_MATRIX3_NV                     0x8633
  7.1840 +#define GL_MATRIX4_NV                     0x8634
  7.1841 +#define GL_MATRIX5_NV                     0x8635
  7.1842 +#define GL_MATRIX6_NV                     0x8636
  7.1843 +#define GL_MATRIX7_NV                     0x8637
  7.1844 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640
  7.1845 +#define GL_CURRENT_MATRIX_NV              0x8641
  7.1846 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642
  7.1847 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643
  7.1848 +#define GL_PROGRAM_PARAMETER_NV           0x8644
  7.1849 +#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645
  7.1850 +#define GL_PROGRAM_TARGET_NV              0x8646
  7.1851 +#define GL_PROGRAM_RESIDENT_NV            0x8647
  7.1852 +#define GL_TRACK_MATRIX_NV                0x8648
  7.1853 +#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649
  7.1854 +#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A
  7.1855 +#define GL_PROGRAM_ERROR_POSITION_NV      0x864B
  7.1856 +#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650
  7.1857 +#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651
  7.1858 +#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652
  7.1859 +#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653
  7.1860 +#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654
  7.1861 +#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655
  7.1862 +#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656
  7.1863 +#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657
  7.1864 +#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658
  7.1865 +#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659
  7.1866 +#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A
  7.1867 +#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B
  7.1868 +#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C
  7.1869 +#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D
  7.1870 +#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E
  7.1871 +#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F
  7.1872 +#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660
  7.1873 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661
  7.1874 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662
  7.1875 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663
  7.1876 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664
  7.1877 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665
  7.1878 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666
  7.1879 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667
  7.1880 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668
  7.1881 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669
  7.1882 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A
  7.1883 +#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B
  7.1884 +#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C
  7.1885 +#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D
  7.1886 +#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E
  7.1887 +#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F
  7.1888 +#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670
  7.1889 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671
  7.1890 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672
  7.1891 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673
  7.1892 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674
  7.1893 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675
  7.1894 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676
  7.1895 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677
  7.1896 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678
  7.1897 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679
  7.1898 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A
  7.1899 +#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B
  7.1900 +#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C
  7.1901 +#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D
  7.1902 +#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E
  7.1903 +#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F
  7.1904 +
  7.1905 +/* NV_texture_shader */
  7.1906 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
  7.1907 +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
  7.1908 +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
  7.1909 +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
  7.1910 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
  7.1911 +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
  7.1912 +#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
  7.1913 +#define GL_SHADER_CONSISTENT_NV           0x86DD
  7.1914 +#define GL_TEXTURE_SHADER_NV              0x86DE
  7.1915 +#define GL_SHADER_OPERATION_NV            0x86DF
  7.1916 +#define GL_CULL_MODES_NV                  0x86E0
  7.1917 +#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
  7.1918 +#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
  7.1919 +#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
  7.1920 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    GL_OFFSET_TEXTURE_MATRIX_NV
  7.1921 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV     GL_OFFSET_TEXTURE_SCALE_NV
  7.1922 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV      GL_OFFSET_TEXTURE_BIAS_NV
  7.1923 +#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
  7.1924 +#define GL_CONST_EYE_NV                   0x86E5
  7.1925 +#define GL_PASS_THROUGH_NV                0x86E6
  7.1926 +#define GL_CULL_FRAGMENT_NV               0x86E7
  7.1927 +#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
  7.1928 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
  7.1929 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
  7.1930 +#define GL_DOT_PRODUCT_NV                 0x86EC
  7.1931 +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
  7.1932 +#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
  7.1933 +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
  7.1934 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
  7.1935 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
  7.1936 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
  7.1937 +#define GL_HILO_NV                        0x86F4
  7.1938 +#define GL_DSDT_NV                        0x86F5
  7.1939 +#define GL_DSDT_MAG_NV                    0x86F6
  7.1940 +#define GL_DSDT_MAG_VIB_NV                0x86F7
  7.1941 +#define GL_HILO16_NV                      0x86F8
  7.1942 +#define GL_SIGNED_HILO_NV                 0x86F9
  7.1943 +#define GL_SIGNED_HILO16_NV               0x86FA
  7.1944 +#define GL_SIGNED_RGBA_NV                 0x86FB
  7.1945 +#define GL_SIGNED_RGBA8_NV                0x86FC
  7.1946 +#define GL_SIGNED_RGB_NV                  0x86FE
  7.1947 +#define GL_SIGNED_RGB8_NV                 0x86FF
  7.1948 +#define GL_SIGNED_LUMINANCE_NV            0x8701
  7.1949 +#define GL_SIGNED_LUMINANCE8_NV           0x8702
  7.1950 +#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
  7.1951 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
  7.1952 +#define GL_SIGNED_ALPHA_NV                0x8705
  7.1953 +#define GL_SIGNED_ALPHA8_NV               0x8706
  7.1954 +#define GL_SIGNED_INTENSITY_NV            0x8707
  7.1955 +#define GL_SIGNED_INTENSITY8_NV           0x8708
  7.1956 +#define GL_DSDT8_NV                       0x8709
  7.1957 +#define GL_DSDT8_MAG8_NV                  0x870A
  7.1958 +#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
  7.1959 +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
  7.1960 +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
  7.1961 +#define GL_HI_SCALE_NV                    0x870E
  7.1962 +#define GL_LO_SCALE_NV                    0x870F
  7.1963 +#define GL_DS_SCALE_NV                    0x8710
  7.1964 +#define GL_DT_SCALE_NV                    0x8711
  7.1965 +#define GL_MAGNITUDE_SCALE_NV             0x8712
  7.1966 +#define GL_VIBRANCE_SCALE_NV              0x8713
  7.1967 +#define GL_HI_BIAS_NV                     0x8714
  7.1968 +#define GL_LO_BIAS_NV                     0x8715
  7.1969 +#define GL_DS_BIAS_NV                     0x8716
  7.1970 +#define GL_DT_BIAS_NV                     0x8717
  7.1971 +#define GL_MAGNITUDE_BIAS_NV              0x8718
  7.1972 +#define GL_VIBRANCE_BIAS_NV               0x8719
  7.1973 +#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
  7.1974 +#define GL_TEXTURE_HI_SIZE_NV             0x871B
  7.1975 +#define GL_TEXTURE_LO_SIZE_NV             0x871C
  7.1976 +#define GL_TEXTURE_DS_SIZE_NV             0x871D
  7.1977 +#define GL_TEXTURE_DT_SIZE_NV             0x871E
  7.1978 +#define GL_TEXTURE_MAG_SIZE_NV            0x871F
  7.1979 +
  7.1980 +/* NV_texture_shader2 */
  7.1981 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
  7.1982 +
  7.1983 +/* NV_texture_shader3 */
  7.1984 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
  7.1985 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
  7.1986 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
  7.1987 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
  7.1988 +#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
  7.1989 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
  7.1990 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
  7.1991 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
  7.1992 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
  7.1993 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
  7.1994 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
  7.1995 +#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
  7.1996 +#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
  7.1997 +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
  7.1998 +#define GL_HILO8_NV                       0x885E
  7.1999 +#define GL_SIGNED_HILO8_NV                0x885F
  7.2000 +#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
  7.2001 +
  7.2002 +/* NV_register_combiners2 */
  7.2003 +#define GL_PER_STAGE_CONSTANTS_NV         0x8535
  7.2004 +
  7.2005 +/* IBM_texture_mirrored_repeat */
  7.2006 +#define GL_MIRRORED_REPEAT_IBM            0x8370
  7.2007 +
  7.2008 +/* ARB_texture_env_dot3 */
  7.2009 +#define GL_DOT3_RGB_ARB                   0x86AE
  7.2010 +#define GL_DOT3_RGBA_ARB                  0x86AF
  7.2011 +
  7.2012 +/* EXT_texture_env_dot3 */
  7.2013 +#define GL_DOT3_RGB_EXT                   0x8740
  7.2014 +#define GL_DOT3_RGBA_EXT                  0x8741
  7.2015 +
  7.2016 +/* APPLE_transform_hint */
  7.2017 +#define GL_TRANSFORM_HINT_APPLE           0x85B1
  7.2018 +
  7.2019 +/* ARB_texture_border_clamp */
  7.2020 +#define GL_CLAMP_TO_BORDER_ARB            0x812D
  7.2021 +
  7.2022 +/* NV_texture_rectangle */
  7.2023 +#define GL_TEXTURE_RECTANGLE_NV           0x84F5
  7.2024 +#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
  7.2025 +#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
  7.2026 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8
  7.2027 +
  7.2028 +/* SGIX_shadow */
  7.2029 +#define GL_TEXTURE_COMPARE_SGIX           0x819A
  7.2030 +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B
  7.2031 +#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C
  7.2032 +#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D
  7.2033 +
  7.2034 +/* SGIX_depth_texture */
  7.2035 +#define GL_DEPTH_COMPONENT16_SGIX         0x81A5
  7.2036 +#define GL_DEPTH_COMPONENT24_SGIX         0x81A6
  7.2037 +#define GL_DEPTH_COMPONENT32_SGIX         0x81A7
  7.2038 +
  7.2039 +/* ARB_multisample */
  7.2040 +#define GL_MULTISAMPLE_ARB                0x809D
  7.2041 +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
  7.2042 +#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
  7.2043 +#define GL_SAMPLE_COVERAGE_ARB            0x80A0
  7.2044 +#define GL_SAMPLE_BUFFERS_ARB             0x80A8
  7.2045 +#define GL_SAMPLES_ARB                    0x80A9
  7.2046 +#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
  7.2047 +#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
  7.2048 +#define GL_MULTISAMPLE_BIT_ARB            0x20000000
  7.2049 +
  7.2050 +/* NV_multisample_filter_hint */
  7.2051 +#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534
  7.2052 +
  7.2053 +/* NV_packed_depth_stencil */
  7.2054 +#define GL_DEPTH_STENCIL_NV               0x84F9
  7.2055 +#define GL_UNSIGNED_INT_24_8_NV           0x84FA
  7.2056 +
  7.2057 +/* EXT_draw_range_elements */
  7.2058 +#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8
  7.2059 +#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9
  7.2060 +
  7.2061 +/* SGIS_generate_mipmap */
  7.2062 +#define GL_GENERATE_MIPMAP_SGIS           0x8191
  7.2063 +#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192
  7.2064 +
  7.2065 +/* NV_pixel_data_range */
  7.2066 +#define GL_WRITE_PIXEL_DATA_RANGE_NV      0x8878
  7.2067 +#define GL_READ_PIXEL_DATA_RANGE_NV       0x8879
  7.2068 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
  7.2069 +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
  7.2070 +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
  7.2071 +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
  7.2072 +
  7.2073 +/* NV_packed_normal */
  7.2074 +#define GL_UNSIGNED_INT_S10_S11_S11_REV_NV 0x886B
  7.2075 +
  7.2076 +/* NV_half_float */
  7.2077 +#define GL_HALF_FLOAT_NV                  0x140B
  7.2078 +
  7.2079 +/* NV_copy_depth_to_color */
  7.2080 +#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E
  7.2081 +#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F
  7.2082 +
  7.2083 +/* HP_occlusion_test */
  7.2084 +#define GL_OCCLUSION_TEST_HP              0x8165
  7.2085 +#define GL_OCCLUSION_TEST_RESULT_HP       0x8166
  7.2086 +
  7.2087 +/* NV_occlusion_query */
  7.2088 +#define GL_PIXEL_COUNTER_BITS_NV          0x8864
  7.2089 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
  7.2090 +#define GL_PIXEL_COUNT_NV                 0x8866
  7.2091 +#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
  7.2092 +
  7.2093 +/* NV_point_sprite */
  7.2094 +#define GL_POINT_SPRITE_NV                0x8861
  7.2095 +#define GL_COORD_REPLACE_NV               0x8862
  7.2096 +#define GL_POINT_SPRITE_R_MODE_NV         0x8863
  7.2097 +
  7.2098 +/* 3DFX_tbuffer */
  7.2099 +#define GL_TBUFFER_WRITE_MASK_3DFX        0x86D8
  7.2100 +
  7.2101 +/* NV_depth_clamp */
  7.2102 +#define GL_DEPTH_CLAMP_NV                 0x864F
  7.2103 +
  7.2104 +/* NV_float_buffer */
  7.2105 +#define GL_FLOAT_R_NV                     0x8880
  7.2106 +#define GL_FLOAT_RG_NV                    0x8881
  7.2107 +#define GL_FLOAT_RGB_NV                   0x8882
  7.2108 +#define GL_FLOAT_RGBA_NV                  0x8883
  7.2109 +#define GL_FLOAT_R16_NV                   0x8884
  7.2110 +#define GL_FLOAT_R32_NV                   0x8885
  7.2111 +#define GL_FLOAT_RG16_NV                  0x8886
  7.2112 +#define GL_FLOAT_RG32_NV                  0x8887
  7.2113 +#define GL_FLOAT_RGB16_NV                 0x8888
  7.2114 +#define GL_FLOAT_RGB32_NV                 0x8889
  7.2115 +#define GL_FLOAT_RGBA16_NV                0x888A
  7.2116 +#define GL_FLOAT_RGBA32_NV                0x888B
  7.2117 +#define GL_TEXTURE_FLOAT_COMPONENTS_NV    0x888C
  7.2118 +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV     0x888D
  7.2119 +#define GL_FLOAT_RGBA_MODE_NV             0x888E
  7.2120 +
  7.2121 +/* EXT_stencil_two_side */
  7.2122 +#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
  7.2123 +#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
  7.2124 +
  7.2125 +/* EXT_blend_func_separate */
  7.2126 +#define GL_BLEND_DST_RGB_EXT              0x80C8
  7.2127 +#define GL_BLEND_SRC_RGB_EXT              0x80C9
  7.2128 +#define GL_BLEND_DST_ALPHA_EXT            0x80CA
  7.2129 +#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
  7.2130 +
  7.2131 +/* ARB_texture_mirrored_repeat */
  7.2132 +#define GL_MIRRORED_REPEAT_ARB            0x8370
  7.2133 +
  7.2134 +/* ARB_depth_texture */
  7.2135 +#define GL_DEPTH_COMPONENT16_ARB          0x81A5
  7.2136 +#define GL_DEPTH_COMPONENT24_ARB          0x81A6
  7.2137 +#define GL_DEPTH_COMPONENT32_ARB          0x81A7
  7.2138 +#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
  7.2139 +#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
  7.2140 +
  7.2141 +/* ARB_shadow */
  7.2142 +#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C
  7.2143 +#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D
  7.2144 +#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E
  7.2145 +
  7.2146 +/* ARB_shadow_ambient */
  7.2147 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
  7.2148 +
  7.2149 +/* NV_force_software */
  7.2150 +#define GL_FORCE_SOFTWARE_NV              0x6007
  7.2151 +
  7.2152 +/* NV_flush_hold */
  7.2153 +#define GL_CURRENT_FLUSHHOLD_NVX          0x6008
  7.2154 +#define GL_MAX_PENDING_FLUSHHOLD_NVX      0x6009
  7.2155 +
  7.2156 +/* ARB_point_parameters */
  7.2157 +#define GL_POINT_SIZE_MIN_ARB             0x8126
  7.2158 +#define GL_POINT_SIZE_MAX_ARB             0x8127
  7.2159 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
  7.2160 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
  7.2161 +
  7.2162 +/* EXT_depth_bounds_test */
  7.2163 +#define GL_DEPTH_BOUNDS_TEST_EXT          0x8890
  7.2164 +#define GL_DEPTH_BOUNDS_EXT               0x8891
  7.2165 +
  7.2166 +/* ARB_vertex_program */
  7.2167 +#define GL_VERTEX_PROGRAM_ARB             0x8620
  7.2168 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
  7.2169 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643
  7.2170 +#define GL_COLOR_SUM_ARB                  0x8458
  7.2171 +#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875
  7.2172 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
  7.2173 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623
  7.2174 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
  7.2175 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625
  7.2176 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
  7.2177 +#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626
  7.2178 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
  7.2179 +#define GL_PROGRAM_LENGTH_ARB             0x8627
  7.2180 +#define GL_PROGRAM_FORMAT_ARB             0x8876
  7.2181 +#define GL_PROGRAM_BINDING_ARB            0x8677
  7.2182 +#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0
  7.2183 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1
  7.2184 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
  7.2185 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
  7.2186 +#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4
  7.2187 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5
  7.2188 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
  7.2189 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
  7.2190 +#define GL_PROGRAM_PARAMETERS_ARB         0x88A8
  7.2191 +#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9
  7.2192 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA
  7.2193 +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
  7.2194 +#define GL_PROGRAM_ATTRIBS_ARB            0x88AC
  7.2195 +#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD
  7.2196 +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE
  7.2197 +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
  7.2198 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0
  7.2199 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
  7.2200 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
  7.2201 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
  7.2202 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
  7.2203 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
  7.2204 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
  7.2205 +#define GL_PROGRAM_STRING_ARB             0x8628
  7.2206 +#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B
  7.2207 +#define GL_CURRENT_MATRIX_ARB             0x8641
  7.2208 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7
  7.2209 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
  7.2210 +#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869
  7.2211 +#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F
  7.2212 +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
  7.2213 +#define GL_PROGRAM_ERROR_STRING_ARB       0x8874
  7.2214 +#define GL_MATRIX0_ARB                    0x88C0
  7.2215 +#define GL_MATRIX1_ARB                    0x88C1
  7.2216 +#define GL_MATRIX2_ARB                    0x88C2
  7.2217 +#define GL_MATRIX3_ARB                    0x88C3
  7.2218 +#define GL_MATRIX4_ARB                    0x88C4
  7.2219 +#define GL_MATRIX5_ARB                    0x88C5
  7.2220 +#define GL_MATRIX6_ARB                    0x88C6
  7.2221 +#define GL_MATRIX7_ARB                    0x88C7
  7.2222 +#define GL_MATRIX8_ARB                    0x88C8
  7.2223 +#define GL_MATRIX9_ARB                    0x88C9
  7.2224 +#define GL_MATRIX10_ARB                   0x88CA
  7.2225 +#define GL_MATRIX11_ARB                   0x88CB
  7.2226 +#define GL_MATRIX12_ARB                   0x88CC
  7.2227 +#define GL_MATRIX13_ARB                   0x88CD
  7.2228 +#define GL_MATRIX14_ARB                   0x88CE
  7.2229 +#define GL_MATRIX15_ARB                   0x88CF
  7.2230 +#define GL_MATRIX16_ARB                   0x88D0
  7.2231 +#define GL_MATRIX17_ARB                   0x88D1
  7.2232 +#define GL_MATRIX18_ARB                   0x88D2
  7.2233 +#define GL_MATRIX19_ARB                   0x88D3
  7.2234 +#define GL_MATRIX20_ARB                   0x88D4
  7.2235 +#define GL_MATRIX21_ARB                   0x88D5
  7.2236 +#define GL_MATRIX22_ARB                   0x88D6
  7.2237 +#define GL_MATRIX23_ARB                   0x88D7
  7.2238 +#define GL_MATRIX24_ARB                   0x88D8
  7.2239 +#define GL_MATRIX25_ARB                   0x88D9
  7.2240 +#define GL_MATRIX26_ARB                   0x88DA
  7.2241 +#define GL_MATRIX27_ARB                   0x88DB
  7.2242 +#define GL_MATRIX28_ARB                   0x88DC
  7.2243 +#define GL_MATRIX29_ARB                   0x88DD
  7.2244 +#define GL_MATRIX30_ARB                   0x88DE
  7.2245 +#define GL_MATRIX31_ARB                   0x88DF
  7.2246 +
  7.2247 +/* OpenGL14 */
  7.2248 +#define GL_POINT_SIZE_MIN                 0x8126
  7.2249 +#define GL_POINT_SIZE_MAX                 0x8127
  7.2250 +#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
  7.2251 +#define GL_POINT_DISTANCE_ATTENUATION     0x8129
  7.2252 +#define GL_FOG_COORDINATE_SOURCE          0x8450
  7.2253 +#define GL_FOG_COORDINATE                 0x8451
  7.2254 +#define GL_FRAGMENT_DEPTH                 0x8452
  7.2255 +#define GL_CURRENT_FOG_COORDINATE         0x8453
  7.2256 +#define GL_FOG_COORDINATE_ARRAY_TYPE      0x8454
  7.2257 +#define GL_FOG_COORDINATE_ARRAY_STRIDE    0x8455
  7.2258 +#define GL_FOG_COORDINATE_ARRAY_POINTER   0x8456
  7.2259 +#define GL_FOG_COORDINATE_ARRAY           0x8457
  7.2260 +#define GL_COLOR_SUM                      0x8458
  7.2261 +#define GL_CURRENT_SECONDARY_COLOR        0x8459
  7.2262 +#define GL_SECONDARY_COLOR_ARRAY_SIZE     0x845A
  7.2263 +#define GL_SECONDARY_COLOR_ARRAY_TYPE     0x845B
  7.2264 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE   0x845C
  7.2265 +#define GL_SECONDARY_COLOR_ARRAY_POINTER  0x845D
  7.2266 +#define GL_SECONDARY_COLOR_ARRAY          0x845E
  7.2267 +#define GL_INCR_WRAP                      0x8507
  7.2268 +#define GL_DECR_WRAP                      0x8508
  7.2269 +#define GL_MAX_TEXTURE_LOD_BIAS           0x84FD
  7.2270 +#define GL_TEXTURE_FILTER_CONTROL         0x8500
  7.2271 +#define GL_TEXTURE_LOD_BIAS               0x8501
  7.2272 +#define GL_GENERATE_MIPMAP                0x8191
  7.2273 +#define GL_GENERATE_MIPMAP_HINT           0x8192
  7.2274 +#define GL_BLEND_DST_RGB                  0x80C8
  7.2275 +#define GL_BLEND_SRC_RGB                  0x80C9
  7.2276 +#define GL_BLEND_DST_ALPHA                0x80CA
  7.2277 +#define GL_BLEND_SRC_ALPHA                0x80CB
  7.2278 +#define GL_MIRRORED_REPEAT                0x8370
  7.2279 +#define GL_DEPTH_COMPONENT16              0x81A5
  7.2280 +#define GL_DEPTH_COMPONENT24              0x81A6
  7.2281 +#define GL_DEPTH_COMPONENT32              0x81A7
  7.2282 +#define GL_TEXTURE_DEPTH_SIZE             0x884A
  7.2283 +#define GL_DEPTH_TEXTURE_MODE             0x884B
  7.2284 +#define GL_TEXTURE_COMPARE_MODE           0x884C
  7.2285 +#define GL_TEXTURE_COMPARE_FUNC           0x884D
  7.2286 +#define GL_COMPARE_R_TO_TEXTURE           0x884E
  7.2287 +
  7.2288 +/* NV_primitive_restart */
  7.2289 +#define GL_PRIMITIVE_RESTART_NV           0x8558
  7.2290 +#define GL_PRIMITIVE_RESTART_INDEX_NV     0x8559
  7.2291 +
  7.2292 +/* SGIS_texture_color_mask */
  7.2293 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF
  7.2294 +
  7.2295 +/* NVX_ycrcb */
  7.2296 +#define GL_CRYCBY_422_NVX                 0x600A
  7.2297 +#define GL_YCRYCB_422_NVX                 0x600B
  7.2298 +
  7.2299 +/* NV_texture_expand_normal */
  7.2300 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
  7.2301 +
  7.2302 +/* ARB_fragment_program */
  7.2303 +#define GL_FRAGMENT_PROGRAM_ARB           0x8804
  7.2304 +/*      GL_PROGRAM_FORMAT_ASCII_ARB */
  7.2305 +/*      GL_PROGRAM_LENGTH_ARB */
  7.2306 +/*      GL_PROGRAM_FORMAT_ARB */
  7.2307 +/*      GL_PROGRAM_BINDING_ARB */
  7.2308 +/*      GL_PROGRAM_INSTRUCTIONS_ARB */
  7.2309 +/*      GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
  7.2310 +/*      GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
  7.2311 +/*      GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
  7.2312 +/*      GL_PROGRAM_TEMPORARIES_ARB */
  7.2313 +/*      GL_MAX_PROGRAM_TEMPORARIES_ARB */
  7.2314 +/*      GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
  7.2315 +/*      GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
  7.2316 +/*      GL_PROGRAM_PARAMETERS_ARB */
  7.2317 +/*      GL_MAX_PROGRAM_PARAMETERS_ARB */
  7.2318 +/*      GL_PROGRAM_NATIVE_PARAMETERS_ARB */
  7.2319 +/*      GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
  7.2320 +/*      GL_PROGRAM_ATTRIBS_ARB */
  7.2321 +/*      GL_MAX_PROGRAM_ATTRIBS_ARB */
  7.2322 +/*      GL_PROGRAM_NATIVE_ATTRIBS_ARB */
  7.2323 +/*      GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
  7.2324 +/*      GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
  7.2325 +/*      GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
  7.2326 +/*      GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
  7.2327 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB   0x8805
  7.2328 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB   0x8806
  7.2329 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB   0x8807
  7.2330 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
  7.2331 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
  7.2332 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
  7.2333 +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
  7.2334 +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
  7.2335 +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
  7.2336 +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
  7.2337 +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
  7.2338 +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
  7.2339 +/*      GL_PROGRAM_STRING_ARB */
  7.2340 +/*      GL_PROGRAM_ERROR_POSITION_ARB */
  7.2341 +/*      GL_CURRENT_MATRIX_ARB */
  7.2342 +/*      GL_TRANSPOSE_CURRENT_MATRIX_ARB */
  7.2343 +/*      GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
  7.2344 +/*      GL_MAX_PROGRAM_MATRICES_ARB */
  7.2345 +/*      GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
  7.2346 +#define GL_MAX_TEXTURE_COORDS_ARB         0x8871
  7.2347 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB    0x8872
  7.2348 +/*      GL_PROGRAM_ERROR_STRING_ARB */
  7.2349 +/*      GL_MATRIX0_ARB */
  7.2350 +/*      GL_MATRIX1_ARB */
  7.2351 +/*      GL_MATRIX2_ARB */
  7.2352 +/*      GL_MATRIX3_ARB */
  7.2353 +/*      GL_MATRIX4_ARB */
  7.2354 +/*      GL_MATRIX5_ARB */
  7.2355 +/*      GL_MATRIX6_ARB */
  7.2356 +/*      GL_MATRIX7_ARB */
  7.2357 +/*      GL_MATRIX8_ARB */
  7.2358 +/*      GL_MATRIX9_ARB */
  7.2359 +/*      GL_MATRIX10_ARB */
  7.2360 +/*      GL_MATRIX11_ARB */
  7.2361 +/*      GL_MATRIX12_ARB */
  7.2362 +/*      GL_MATRIX13_ARB */
  7.2363 +/*      GL_MATRIX14_ARB */
  7.2364 +/*      GL_MATRIX15_ARB */
  7.2365 +/*      GL_MATRIX16_ARB */
  7.2366 +/*      GL_MATRIX17_ARB */
  7.2367 +/*      GL_MATRIX18_ARB */
  7.2368 +/*      GL_MATRIX19_ARB */
  7.2369 +/*      GL_MATRIX20_ARB */
  7.2370 +/*      GL_MATRIX21_ARB */
  7.2371 +/*      GL_MATRIX22_ARB */
  7.2372 +/*      GL_MATRIX23_ARB */
  7.2373 +/*      GL_MATRIX24_ARB */
  7.2374 +/*      GL_MATRIX25_ARB */
  7.2375 +/*      GL_MATRIX26_ARB */
  7.2376 +/*      GL_MATRIX27_ARB */
  7.2377 +/*      GL_MATRIX28_ARB */
  7.2378 +/*      GL_MATRIX29_ARB */
  7.2379 +/*      GL_MATRIX30_ARB */
  7.2380 +/*      GL_MATRIX31_ARB */
  7.2381 +
  7.2382 +/* ARB_vertex_buffer_object */
  7.2383 +#define GL_ARRAY_BUFFER_ARB               0x8892
  7.2384 +#define GL_ELEMENT_ARRAY_BUFFER_ARB       0x8893
  7.2385 +#define GL_ARRAY_BUFFER_BINDING_ARB       0x8894
  7.2386 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
  7.2387 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
  7.2388 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
  7.2389 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
  7.2390 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
  7.2391 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
  7.2392 +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
  7.2393 +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
  7.2394 +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
  7.2395 +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
  7.2396 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
  7.2397 +#define GL_STREAM_DRAW_ARB                0x88E0
  7.2398 +#define GL_STREAM_READ_ARB                0x88E1
  7.2399 +#define GL_STREAM_COPY_ARB                0x88E2
  7.2400 +#define GL_STATIC_DRAW_ARB                0x88E4
  7.2401 +#define GL_STATIC_READ_ARB                0x88E5
  7.2402 +#define GL_STATIC_COPY_ARB                0x88E6
  7.2403 +#define GL_DYNAMIC_DRAW_ARB               0x88E8
  7.2404 +#define GL_DYNAMIC_READ_ARB               0x88E9
  7.2405 +#define GL_DYNAMIC_COPY_ARB               0x88EA
  7.2406 +#define GL_READ_ONLY_ARB                  0x88B8
  7.2407 +#define GL_WRITE_ONLY_ARB                 0x88B9
  7.2408 +#define GL_READ_WRITE_ARB                 0x88BA
  7.2409 +#define GL_BUFFER_SIZE_ARB                0x8764
  7.2410 +#define GL_BUFFER_USAGE_ARB               0x8765
  7.2411 +#define GL_BUFFER_ACCESS_ARB              0x88BB
  7.2412 +#define GL_BUFFER_MAPPED_ARB              0x88BC
  7.2413 +#define GL_BUFFER_MAP_POINTER_ARB         0x88BD
  7.2414 +
  7.2415 +/*************************************************************/
  7.2416 +
  7.2417 +void glAccum (GLenum op, GLfloat value);
  7.2418 +void glActiveStencilFaceEXT (GLenum face);
  7.2419 +void glActiveTexture (GLenum texture);
  7.2420 +void glActiveTextureARB (GLenum texture);
  7.2421 +void glAddSwapHintRectWIN (GLint x, GLint y, GLsizei width, GLsizei height);
  7.2422 +void glAlphaFunc (GLenum func, GLclampf ref);
  7.2423 +GLboolean glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
  7.2424 +GLboolean glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
  7.2425 +GLboolean glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
  7.2426 +void glArrayElement (GLint i);
  7.2427 +void glArrayElementEXT (GLint i);
  7.2428 +void glBegin (GLenum mode);
  7.2429 +void glBeginOcclusionQueryNV (GLuint id);
  7.2430 +void glBindBufferARB (GLenum target, GLuint buffer);
  7.2431 +void glBindProgramARB (GLenum target, GLuint program);
  7.2432 +void glBindProgramNV (GLenum target, GLuint id);
  7.2433 +void glBindTexture (GLenum target, GLuint texture);
  7.2434 +void glBindTextureEXT (GLenum target, GLuint texture);
  7.2435 +void glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
  7.2436 +void glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
  7.2437 +void glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
  7.2438 +void glBlendEquation (GLenum mode);
  7.2439 +void glBlendEquationEXT (GLenum mode);
  7.2440 +void glBlendFunc (GLenum sfactor, GLenum dfactor);
  7.2441 +void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
  7.2442 +void glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
  7.2443 +void glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
  7.2444 +void glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
  7.2445 +void glCallList (GLuint list);
  7.2446 +void glCallLists (GLsizei n, GLenum type, const GLvoid *lists);
  7.2447 +void glClear (GLbitfield mask);
  7.2448 +void glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
  7.2449 +void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
  7.2450 +void glClearDepth (GLclampd depth);
  7.2451 +void glClearIndex (GLfloat c);
  7.2452 +void glClearStencil (GLint s);
  7.2453 +void glClientActiveTexture (GLenum texture);
  7.2454 +void glClientActiveTextureARB (GLenum texture);
  7.2455 +void glClipPlane (GLenum plane, const GLdouble *equation);
  7.2456 +void glColor3b (GLbyte red, GLbyte green, GLbyte blue);
  7.2457 +void glColor3bv (const GLbyte *v);
  7.2458 +void glColor3d (GLdouble red, GLdouble green, GLdouble blue);
  7.2459 +void glColor3dv (const GLdouble *v);
  7.2460 +void glColor3f (GLfloat red, GLfloat green, GLfloat blue);
  7.2461 +void glColor3fv (const GLfloat *v);
  7.2462 +void glColor3hNV (GLhalf red, GLhalf green, GLhalf blue);
  7.2463 +void glColor3hvNV (const GLhalf *v);
  7.2464 +void glColor3i (GLint red, GLint green, GLint blue);
  7.2465 +void glColor3iv (const GLint *v);
  7.2466 +void glColor3s (GLshort red, GLshort green, GLshort blue);
  7.2467 +void glColor3sv (const GLshort *v);
  7.2468 +void glColor3ub (GLubyte red, GLubyte green, GLubyte blue);
  7.2469 +void glColor3ubv (const GLubyte *v);
  7.2470 +void glColor3ui (GLuint red, GLuint green, GLuint blue);
  7.2471 +void glColor3uiv (const GLuint *v);
  7.2472 +void glColor3us (GLushort red, GLushort green, GLushort blue);
  7.2473 +void glColor3usv (const GLushort *v);
  7.2474 +void glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
  7.2475 +void glColor4bv (const GLbyte *v);
  7.2476 +void glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
  7.2477 +void glColor4dv (const GLdouble *v);
  7.2478 +void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
  7.2479 +void glColor4fv (const GLfloat *v);
  7.2480 +void glColor4hNV (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha);
  7.2481 +void glColor4hvNV (const GLhalf *v);
  7.2482 +void glColor4i (GLint red, GLint green, GLint blue, GLint alpha);
  7.2483 +void glColor4iv (const GLint *v);
  7.2484 +void glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha);
  7.2485 +void glColor4sv (const GLshort *v);
  7.2486 +void glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
  7.2487 +void glColor4ubv (const GLubyte *v);
  7.2488 +void glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha);
  7.2489 +void glColor4uiv (const GLuint *v);
  7.2490 +void glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha);
  7.2491 +void glColor4usv (const GLushort *v);
  7.2492 +void glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
  7.2493 +void glColorMaterial (GLenum face, GLenum mode);
  7.2494 +void glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.2495 +void glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  7.2496 +void glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
  7.2497 +void glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *table);
  7.2498 +void glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
  7.2499 +void glColorTableEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
  7.2500 +void glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
  7.2501 +void glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
  7.2502 +void glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
  7.2503 +void glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
  7.2504 +void glCombinerParameterfNV (GLenum pname, GLfloat param);
  7.2505 +void glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
  7.2506 +void glCombinerParameteriNV (GLenum pname, GLint param);
  7.2507 +void glCombinerParameterivNV (GLenum pname, const GLint *params);
  7.2508 +void glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
  7.2509 +void glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
  7.2510 +void glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
  7.2511 +void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
  7.2512 +void glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
  7.2513 +void glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
  7.2514 +void glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
  7.2515 +void glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
  7.2516 +void glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
  7.2517 +void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
  7.2518 +void glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
  7.2519 +void glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
  7.2520 +void glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
  7.2521 +void glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
  7.2522 +void glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
  7.2523 +void glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
  7.2524 +void glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
  7.2525 +void glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
  7.2526 +void glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
  7.2527 +void glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
  7.2528 +void glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
  7.2529 +void glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
  7.2530 +void glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
  7.2531 +void glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
  7.2532 +void glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
  7.2533 +void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
  7.2534 +void glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
  7.2535 +void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  7.2536 +void glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  7.2537 +void glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  7.2538 +void glCullFace (GLenum mode);
  7.2539 +void glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
  7.2540 +void glDeleteFencesNV (GLsizei n, const GLuint *fences);
  7.2541 +void glDeleteLists (GLuint list, GLsizei range);
  7.2542 +void glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
  7.2543 +void glDeleteProgramsARB (GLsizei n, const GLuint *programs);
  7.2544 +void glDeleteProgramsNV (GLsizei n, const GLuint *programs);
  7.2545 +void glDeleteTextures (GLsizei n, const GLuint *textures);
  7.2546 +void glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
  7.2547 +void glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
  7.2548 +void glDepthFunc (GLenum func);
  7.2549 +void glDepthMask (GLboolean flag);
  7.2550 +void glDepthRange (GLclampd zNear, GLclampd zFar);
  7.2551 +void glDisable (GLenum cap);
  7.2552 +void glDisableClientState (GLenum array);
  7.2553 +void glDisableVertexAttribArrayARB (GLuint index);
  7.2554 +void glDrawArrays (GLenum mode, GLint first, GLsizei count);
  7.2555 +void glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
  7.2556 +void glDrawBuffer (GLenum mode);
  7.2557 +void glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
  7.2558 +void glDrawMeshNV (GLenum mode, GLsizei count, GLenum type, GLsizei stride, const GLvoid *indicesTexCoord, const GLvoid *indicesNormal, const GLvoid *indicesVertex);
  7.2559 +void glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
  7.2560 +void glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
  7.2561 +void glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
  7.2562 +void glEdgeFlag (GLboolean flag);
  7.2563 +void glEdgeFlagPointer (GLsizei stride, const GLboolean *pointer);
  7.2564 +void glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
  7.2565 +void glEdgeFlagv (const GLboolean *flag);
  7.2566 +void glEnable (GLenum cap);
  7.2567 +void glEnableClientState (GLenum array);
  7.2568 +void glEnableVertexAttribArrayARB (GLuint index);
  7.2569 +void glEnd (void);
  7.2570 +void glEndList (void);
  7.2571 +void glEndOcclusionQueryNV (void);
  7.2572 +void glEvalCoord1d (GLdouble u);
  7.2573 +void glEvalCoord1dv (const GLdouble *u);
  7.2574 +void glEvalCoord1f (GLfloat u);
  7.2575 +void glEvalCoord1fv (const GLfloat *u);
  7.2576 +void glEvalCoord2d (GLdouble u, GLdouble v);
  7.2577 +void glEvalCoord2dv (const GLdouble *u);
  7.2578 +void glEvalCoord2f (GLfloat u, GLfloat v);
  7.2579 +void glEvalCoord2fv (const GLfloat *u);
  7.2580 +void glEvalMesh1 (GLenum mode, GLint i1, GLint i2);
  7.2581 +void glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
  7.2582 +void glEvalPoint1 (GLint i);
  7.2583 +void glEvalPoint2 (GLint i, GLint j);
  7.2584 +void glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
  7.2585 +void glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer);
  7.2586 +void glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
  7.2587 +void glFinish (void);
  7.2588 +void glFinishFenceNV (GLuint fence);
  7.2589 +void glFlush (void);
  7.2590 +GLuint glFlushHold (void);
  7.2591 +void glFlushPixelDataRangeNV (GLenum target);
  7.2592 +void glFlushVertexArrayRangeNV (void);
  7.2593 +void glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
  7.2594 +void glFogCoordPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
  7.2595 +void glFogCoordd (GLdouble fog);
  7.2596 +void glFogCoorddEXT (GLdouble fog);
  7.2597 +void glFogCoorddv (const GLdouble *fog);
  7.2598 +void glFogCoorddvEXT (const GLdouble *fog);
  7.2599 +void glFogCoordf (GLfloat fog);
  7.2600 +void glFogCoordfEXT (GLfloat fog);
  7.2601 +void glFogCoordfv (const GLfloat *fog);
  7.2602 +void glFogCoordfvEXT (const GLfloat *fog);
  7.2603 +void glFogCoordhNV (GLhalf fog);
  7.2604 +void glFogCoordhvNV (const GLhalf *fog);
  7.2605 +void glFogf (GLenum pname, GLfloat param);
  7.2606 +void glFogfv (GLenum pname, const GLfloat *params);
  7.2607 +void glFogi (GLenum pname, GLint param);
  7.2608 +void glFogiv (GLenum pname, const GLint *params);
  7.2609 +void glFrontFace (GLenum mode);
  7.2610 +void glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
  7.2611 +void glGenBuffersARB (GLsizei n, GLuint *buffers);
  7.2612 +void glGenFencesNV (GLsizei n, GLuint *fences);
  7.2613 +GLuint glGenLists (GLsizei range);
  7.2614 +void glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
  7.2615 +void glGenProgramsARB (GLsizei n, GLuint *programs);
  7.2616 +void glGenProgramsNV (GLsizei n, GLuint *programs);
  7.2617 +void glGenTextures (GLsizei n, GLuint *textures);
  7.2618 +void glGenTexturesEXT (GLsizei n, GLuint *textures);
  7.2619 +void glGetBooleanv (GLenum pname, GLboolean *params);
  7.2620 +void glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
  7.2621 +void glGetBufferPointervARB (GLenum target, GLenum pname, GLvoid* *params);
  7.2622 +void glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
  7.2623 +void glGetClipPlane (GLenum plane, GLdouble *equation);
  7.2624 +void glGetColorTable (GLenum target, GLenum format, GLenum type, GLvoid *table);
  7.2625 +void glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *table);
  7.2626 +void glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
  7.2627 +void glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
  7.2628 +void glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
  7.2629 +void glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
  7.2630 +void glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
  7.2631 +void glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
  7.2632 +void glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
  7.2633 +void glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
  7.2634 +void glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
  7.2635 +void glGetCompressedTexImage (GLenum target, GLint lod, GLvoid *img);
  7.2636 +void glGetCompressedTexImageARB (GLenum target, GLint lod, GLvoid *img);
  7.2637 +void glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, GLvoid *image);
  7.2638 +void glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
  7.2639 +void glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
  7.2640 +void glGetDoublev (GLenum pname, GLdouble *params);
  7.2641 +GLenum glGetError (void);
  7.2642 +void glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
  7.2643 +void glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
  7.2644 +void glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
  7.2645 +void glGetFloatv (GLenum pname, GLfloat *params);
  7.2646 +void glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
  7.2647 +void glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
  7.2648 +void glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
  7.2649 +void glGetIntegerv (GLenum pname, GLint *params);
  7.2650 +void glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
  7.2651 +void glGetLightiv (GLenum light, GLenum pname, GLint *params);
  7.2652 +void glGetMapdv (GLenum target, GLenum query, GLdouble *v);
  7.2653 +void glGetMapfv (GLenum target, GLenum query, GLfloat *v);
  7.2654 +void glGetMapiv (GLenum target, GLenum query, GLint *v);
  7.2655 +void glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
  7.2656 +void glGetMaterialiv (GLenum face, GLenum pname, GLint *params);
  7.2657 +void glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
  7.2658 +void glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
  7.2659 +void glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
  7.2660 +void glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
  7.2661 +void glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
  7.2662 +void glGetPixelMapfv (GLenum map, GLfloat *values);
  7.2663 +void glGetPixelMapuiv (GLenum map, GLuint *values);
  7.2664 +void glGetPixelMapusv (GLenum map, GLushort *values);
  7.2665 +void glGetPointerv (GLenum pname, GLvoid* *params);
  7.2666 +void glGetPointervEXT (GLenum pname, GLvoid* *params);
  7.2667 +void glGetPolygonStipple (GLubyte *mask);
  7.2668 +void glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
  7.2669 +void glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
  7.2670 +void glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
  7.2671 +void glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
  7.2672 +void glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
  7.2673 +void glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
  7.2674 +void glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
  7.2675 +void glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
  7.2676 +void glGetProgramStringARB (GLenum target, GLenum pname, GLvoid *string);
  7.2677 +void glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
  7.2678 +void glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
  7.2679 +void glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
  7.2680 +void glGetSeparableFilter (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
  7.2681 +const GLubyte * glGetString (GLenum name);
  7.2682 +void glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params);
  7.2683 +void glGetTexEnviv (GLenum target, GLenum pname, GLint *params);
  7.2684 +void glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params);
  7.2685 +void glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params);
  7.2686 +void glGetTexGeniv (GLenum coord, GLenum pname, GLint *params);
  7.2687 +void glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
  7.2688 +void glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
  7.2689 +void glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
  7.2690 +void glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
  7.2691 +void glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
  7.2692 +void glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
  7.2693 +void glGetVertexAttribPointervARB (GLuint index, GLenum pname, GLvoid* *pointer);
  7.2694 +void glGetVertexAttribPointervNV (GLuint index, GLenum pname, GLvoid* *pointer);
  7.2695 +void glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
  7.2696 +void glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
  7.2697 +void glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
  7.2698 +void glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
  7.2699 +void glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
  7.2700 +void glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
  7.2701 +void glHint (GLenum target, GLenum mode);
  7.2702 +void glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
  7.2703 +void glIndexMask (GLuint mask);
  7.2704 +void glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
  7.2705 +void glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  7.2706 +void glIndexd (GLdouble c);
  7.2707 +void glIndexdv (const GLdouble *c);
  7.2708 +void glIndexf (GLfloat c);
  7.2709 +void glIndexfv (const GLfloat *c);
  7.2710 +void glIndexi (GLint c);
  7.2711 +void glIndexiv (const GLint *c);
  7.2712 +void glIndexs (GLshort c);
  7.2713 +void glIndexsv (const GLshort *c);
  7.2714 +void glIndexub (GLubyte c);
  7.2715 +void glIndexubv (const GLubyte *c);
  7.2716 +void glInitNames (void);
  7.2717 +void glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer);
  7.2718 +GLboolean glIsBufferARB (GLuint buffer);
  7.2719 +GLboolean glIsEnabled (GLenum cap);
  7.2720 +GLboolean glIsFenceNV (GLuint fence);
  7.2721 +GLboolean glIsList (GLuint list);
  7.2722 +GLboolean glIsOcclusionQueryNV (GLuint id);
  7.2723 +GLboolean glIsProgramARB (GLuint program);
  7.2724 +GLboolean glIsProgramNV (GLuint id);
  7.2725 +GLboolean glIsTexture (GLuint texture);
  7.2726 +GLboolean glIsTextureEXT (GLuint texture);
  7.2727 +void glLightModelf (GLenum pname, GLfloat param);
  7.2728 +void glLightModelfv (GLenum pname, const GLfloat *params);
  7.2729 +void glLightModeli (GLenum pname, GLint param);
  7.2730 +void glLightModeliv (GLenum pname, const GLint *params);
  7.2731 +void glLightf (GLenum light, GLenum pname, GLfloat param);
  7.2732 +void glLightfv (GLenum light, GLenum pname, const GLfloat *params);
  7.2733 +void glLighti (GLenum light, GLenum pname, GLint param);
  7.2734 +void glLightiv (GLenum light, GLenum pname, const GLint *params);
  7.2735 +void glLineStipple (GLint factor, GLushort pattern);
  7.2736 +void glLineWidth (GLfloat width);
  7.2737 +void glListBase (GLuint base);
  7.2738 +void glLoadIdentity (void);
  7.2739 +void glLoadMatrixd (const GLdouble *m);
  7.2740 +void glLoadMatrixf (const GLfloat *m);
  7.2741 +void glLoadName (GLuint name);
  7.2742 +void glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
  7.2743 +void glLoadTransposeMatrixd (const GLdouble *m);
  7.2744 +void glLoadTransposeMatrixdARB (const GLdouble *m);
  7.2745 +void glLoadTransposeMatrixf (const GLfloat *m);
  7.2746 +void glLoadTransposeMatrixfARB (const GLfloat *m);
  7.2747 +void glLockArraysEXT (GLint first, GLsizei count);
  7.2748 +void glLogicOp (GLenum opcode);
  7.2749 +void glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
  7.2750 +void glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
  7.2751 +void glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
  7.2752 +void glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
  7.2753 +GLvoid* glMapBufferARB (GLenum target, GLenum access);
  7.2754 +void glMapGrid1d (GLint un, GLdouble u1, GLdouble u2);
  7.2755 +void glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);
  7.2756 +void glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
  7.2757 +void glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
  7.2758 +void glMaterialf (GLenum face, GLenum pname, GLfloat param);
  7.2759 +void glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
  7.2760 +void glMateriali (GLenum face, GLenum pname, GLint param);
  7.2761 +void glMaterialiv (GLenum face, GLenum pname, const GLint *params);
  7.2762 +void glMatrixMode (GLenum mode);
  7.2763 +void glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
  7.2764 +void glMultMatrixd (const GLdouble *m);
  7.2765 +void glMultMatrixf (const GLfloat *m);
  7.2766 +void glMultTransposeMatrixd (const GLdouble *m);
  7.2767 +void glMultTransposeMatrixdARB (const GLdouble *m);
  7.2768 +void glMultTransposeMatrixf (const GLfloat *m);
  7.2769 +void glMultTransposeMatrixfARB (const GLfloat *m);
  7.2770 +void glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
  7.2771 +void glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
  7.2772 +void glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
  7.2773 +void glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
  7.2774 +void glMultiTexCoord1d (GLenum target, GLdouble s);
  7.2775 +void glMultiTexCoord1dARB (GLenum target, GLdouble s);
  7.2776 +void glMultiTexCoord1dSGIS (GLenum target, GLdouble s);
  7.2777 +void glMultiTexCoord1dv (GLenum target, const GLdouble *v);
  7.2778 +void glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
  7.2779 +void glMultiTexCoord1dvSGIS (GLenum target, const GLdouble *v);
  7.2780 +void glMultiTexCoord1f (GLenum target, GLfloat s);
  7.2781 +void glMultiTexCoord1fARB (GLenum target, GLfloat s);
  7.2782 +void glMultiTexCoord1fSGIS (GLenum target, GLfloat s);
  7.2783 +void glMultiTexCoord1fv (GLenum target, const GLfloat *v);
  7.2784 +void glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
  7.2785 +void glMultiTexCoord1fvSGIS (GLenum target, const GLfloat *v);
  7.2786 +void glMultiTexCoord1hNV (GLenum target, GLhalf s);
  7.2787 +void glMultiTexCoord1hvNV (GLenum target, const GLhalf *v);
  7.2788 +void glMultiTexCoord1i (GLenum target, GLint s);
  7.2789 +void glMultiTexCoord1iARB (GLenum target, GLint s);
  7.2790 +void glMultiTexCoord1iSGIS (GLenum target, GLint s);
  7.2791 +void glMultiTexCoord1iv (GLenum target, const GLint *v);
  7.2792 +void glMultiTexCoord1ivARB (GLenum target, const GLint *v);
  7.2793 +void glMultiTexCoord1ivSGIS (GLenum target, const GLint *v);
  7.2794 +void glMultiTexCoord1s (GLenum target, GLshort s);
  7.2795 +void glMultiTexCoord1sARB (GLenum target, GLshort s);
  7.2796 +void glMultiTexCoord1sSGIS (GLenum target, GLshort s);
  7.2797 +void glMultiTexCoord1sv (GLenum target, const GLshort *v);
  7.2798 +void glMultiTexCoord1svARB (GLenum target, const GLshort *v);
  7.2799 +void glMultiTexCoord1svSGIS (GLenum target, const GLshort *v);
  7.2800 +void glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
  7.2801 +void glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
  7.2802 +void glMultiTexCoord2dSGIS (GLenum target, GLdouble s, GLdouble t);
  7.2803 +void glMultiTexCoord2dv (GLenum target, const GLdouble *v);
  7.2804 +void glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
  7.2805 +void glMultiTexCoord2dvSGIS (GLenum target, const GLdouble *v);
  7.2806 +void glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
  7.2807 +void glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
  7.2808 +void glMultiTexCoord2fSGIS (GLenum target, GLfloat s, GLfloat t);
  7.2809 +void glMultiTexCoord2fv (GLenum target, const GLfloat *v);
  7.2810 +void glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
  7.2811 +void glMultiTexCoord2fvSGIS (GLenum target, const GLfloat *v);
  7.2812 +void glMultiTexCoord2hNV (GLenum target, GLhalf s, GLhalf t);
  7.2813 +void glMultiTexCoord2hvNV (GLenum target, const GLhalf *v);
  7.2814 +void glMultiTexCoord2i (GLenum target, GLint s, GLint t);
  7.2815 +void glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
  7.2816 +void glMultiTexCoord2iSGIS (GLenum target, GLint s, GLint t);
  7.2817 +void glMultiTexCoord2iv (GLenum target, const GLint *v);
  7.2818 +void glMultiTexCoord2ivARB (GLenum target, const GLint *v);
  7.2819 +void glMultiTexCoord2ivSGIS (GLenum target, const GLint *v);
  7.2820 +void glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
  7.2821 +void glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
  7.2822 +void glMultiTexCoord2sSGIS (GLenum target, GLshort s, GLshort t);
  7.2823 +void glMultiTexCoord2sv (GLenum target, const GLshort *v);
  7.2824 +void glMultiTexCoord2svARB (GLenum target, const GLshort *v);
  7.2825 +void glMultiTexCoord2svSGIS (GLenum target, const GLshort *v);
  7.2826 +void glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
  7.2827 +void glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
  7.2828 +void glMultiTexCoord3dSGIS (GLenum target, GLdouble s, GLdouble t, GLdouble r);
  7.2829 +void glMultiTexCoord3dv (GLenum target, const GLdouble *v);
  7.2830 +void glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
  7.2831 +void glMultiTexCoord3dvSGIS (GLenum target, const GLdouble *v);
  7.2832 +void glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
  7.2833 +void glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
  7.2834 +void glMultiTexCoord3fSGIS (GLenum target, GLfloat s, GLfloat t, GLfloat r);
  7.2835 +void glMultiTexCoord3fv (GLenum target, const GLfloat *v);
  7.2836 +void glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
  7.2837 +void glMultiTexCoord3fvSGIS (GLenum target, const GLfloat *v);
  7.2838 +void glMultiTexCoord3hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r);
  7.2839 +void glMultiTexCoord3hvNV (GLenum target, const GLhalf *v);
  7.2840 +void glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
  7.2841 +void glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
  7.2842 +void glMultiTexCoord3iSGIS (GLenum target, GLint s, GLint t, GLint r);
  7.2843 +void glMultiTexCoord3iv (GLenum target, const GLint *v);
  7.2844 +void glMultiTexCoord3ivARB (GLenum target, const GLint *v);
  7.2845 +void glMultiTexCoord3ivSGIS (GLenum target, const GLint *v);
  7.2846 +void glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
  7.2847 +void glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
  7.2848 +void glMultiTexCoord3sSGIS (GLenum target, GLshort s, GLshort t, GLshort r);
  7.2849 +void glMultiTexCoord3sv (GLenum target, const GLshort *v);
  7.2850 +void glMultiTexCoord3svARB (GLenum target, const GLshort *v);
  7.2851 +void glMultiTexCoord3svSGIS (GLenum target, const GLshort *v);
  7.2852 +void glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
  7.2853 +void glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
  7.2854 +void glMultiTexCoord4dSGIS (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
  7.2855 +void glMultiTexCoord4dv (GLenum target, const GLdouble *v);
  7.2856 +void glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
  7.2857 +void glMultiTexCoord4dvSGIS (GLenum target, const GLdouble *v);
  7.2858 +void glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
  7.2859 +void glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
  7.2860 +void glMultiTexCoord4fSGIS (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
  7.2861 +void glMultiTexCoord4fv (GLenum target, const GLfloat *v);
  7.2862 +void glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
  7.2863 +void glMultiTexCoord4fvSGIS (GLenum target, const GLfloat *v);
  7.2864 +void glMultiTexCoord4hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q);
  7.2865 +void glMultiTexCoord4hvNV (GLenum target, const GLhalf *v);
  7.2866 +void glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
  7.2867 +void glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
  7.2868 +void glMultiTexCoord4iSGIS (GLenum target, GLint s, GLint t, GLint r, GLint q);
  7.2869 +void glMultiTexCoord4iv (GLenum target, const GLint *v);
  7.2870 +void glMultiTexCoord4ivARB (GLenum target, const GLint *v);
  7.2871 +void glMultiTexCoord4ivSGIS (GLenum target, const GLint *v);
  7.2872 +void glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
  7.2873 +void glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
  7.2874 +void glMultiTexCoord4sSGIS (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
  7.2875 +void glMultiTexCoord4sv (GLenum target, const GLshort *v);
  7.2876 +void glMultiTexCoord4svARB (GLenum target, const GLshort *v);
  7.2877 +void glMultiTexCoord4svSGIS (GLenum target, const GLshort *v);
  7.2878 +void glMultiTexCoordPointerSGIS (GLenum target, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.2879 +void glNewList (GLuint list, GLenum mode);
  7.2880 +void glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz);
  7.2881 +void glNormal3bv (const GLbyte *v);
  7.2882 +void glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz);
  7.2883 +void glNormal3dv (const GLdouble *v);
  7.2884 +void glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
  7.2885 +void glNormal3fv (const GLfloat *v);
  7.2886 +void glNormal3hNV (GLhalf nx, GLhalf ny, GLhalf nz);
  7.2887 +void glNormal3hvNV (const GLhalf *v);
  7.2888 +void glNormal3i (GLint nx, GLint ny, GLint nz);
  7.2889 +void glNormal3iv (const GLint *v);
  7.2890 +void glNormal3s (GLshort nx, GLshort ny, GLshort nz);
  7.2891 +void glNormal3sv (const GLshort *v);
  7.2892 +void glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
  7.2893 +void glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  7.2894 +void glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
  7.2895 +void glPassThrough (GLfloat token);
  7.2896 +void glPixelDataRangeNV (GLenum target, GLsizei size, const GLvoid *pointer);
  7.2897 +void glPixelMapfv (GLenum map, GLint mapsize, const GLfloat *values);
  7.2898 +void glPixelMapuiv (GLenum map, GLint mapsize, const GLuint *values);
  7.2899 +void glPixelMapusv (GLenum map, GLint mapsize, const GLushort *values);
  7.2900 +void glPixelStoref (GLenum pname, GLfloat param);
  7.2901 +void glPixelStorei (GLenum pname, GLint param);
  7.2902 +void glPixelTransferf (GLenum pname, GLfloat param);
  7.2903 +void glPixelTransferi (GLenum pname, GLint param);
  7.2904 +void glPixelZoom (GLfloat xfactor, GLfloat yfactor);
  7.2905 +void glPointParameterf (GLenum pname, GLfloat param);
  7.2906 +void glPointParameterfARB (GLenum pname, GLfloat param);
  7.2907 +void glPointParameterfEXT (GLenum pname, GLfloat param);
  7.2908 +void glPointParameterfv (GLenum pname, const GLfloat *params);
  7.2909 +void glPointParameterfvARB (GLenum pname, const GLfloat *params);
  7.2910 +void glPointParameterfvEXT (GLenum pname, const GLfloat *params);
  7.2911 +void glPointParameteri (GLenum pname, GLint param);
  7.2912 +void glPointParameteriNV (GLenum pname, GLint param);
  7.2913 +void glPointParameteriv (GLenum pname, const GLint *params);
  7.2914 +void glPointParameterivNV (GLenum pname, const GLint *params);
  7.2915 +void glPointSize (GLfloat size);
  7.2916 +void glPolygonMode (GLenum face, GLenum mode);
  7.2917 +void glPolygonOffset (GLfloat factor, GLfloat units);
  7.2918 +void glPolygonStipple (const GLubyte *mask);
  7.2919 +void glPopAttrib (void);
  7.2920 +void glPopClientAttrib (void);
  7.2921 +void glPopMatrix (void);
  7.2922 +void glPopName (void);
  7.2923 +void glPrimitiveRestartIndexNV (GLuint index);
  7.2924 +void glPrimitiveRestartNV (void);
  7.2925 +void glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities);
  7.2926 +void glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
  7.2927 +void glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.2928 +void glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
  7.2929 +void glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.2930 +void glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
  7.2931 +void glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.2932 +void glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
  7.2933 +void glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.2934 +void glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
  7.2935 +void glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.2936 +void glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
  7.2937 +void glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.2938 +void glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
  7.2939 +void glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.2940 +void glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
  7.2941 +void glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.2942 +void glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
  7.2943 +void glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
  7.2944 +void glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
  7.2945 +void glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
  7.2946 +void glPushAttrib (GLbitfield mask);
  7.2947 +void glPushClientAttrib (GLbitfield mask);
  7.2948 +void glPushMatrix (void);
  7.2949 +void glPushName (GLuint name);
  7.2950 +void glRasterPos2d (GLdouble x, GLdouble y);
  7.2951 +void glRasterPos2dv (const GLdouble *v);
  7.2952 +void glRasterPos2f (GLfloat x, GLfloat y);
  7.2953 +void glRasterPos2fv (const GLfloat *v);
  7.2954 +void glRasterPos2i (GLint x, GLint y);
  7.2955 +void glRasterPos2iv (const GLint *v);
  7.2956 +void glRasterPos2s (GLshort x, GLshort y);
  7.2957 +void glRasterPos2sv (const GLshort *v);
  7.2958 +void glRasterPos3d (GLdouble x, GLdouble y, GLdouble z);
  7.2959 +void glRasterPos3dv (const GLdouble *v);
  7.2960 +void glRasterPos3f (GLfloat x, GLfloat y, GLfloat z);
  7.2961 +void glRasterPos3fv (const GLfloat *v);
  7.2962 +void glRasterPos3i (GLint x, GLint y, GLint z);
  7.2963 +void glRasterPos3iv (const GLint *v);
  7.2964 +void glRasterPos3s (GLshort x, GLshort y, GLshort z);
  7.2965 +void glRasterPos3sv (const GLshort *v);
  7.2966 +void glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.2967 +void glRasterPos4dv (const GLdouble *v);
  7.2968 +void glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.2969 +void glRasterPos4fv (const GLfloat *v);
  7.2970 +void glRasterPos4i (GLint x, GLint y, GLint z, GLint w);
  7.2971 +void glRasterPos4iv (const GLint *v);
  7.2972 +void glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w);
  7.2973 +void glRasterPos4sv (const GLshort *v);
  7.2974 +void glReadBuffer (GLenum mode);
  7.2975 +void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
  7.2976 +void glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
  7.2977 +void glRectdv (const GLdouble *v1, const GLdouble *v2);
  7.2978 +void glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
  7.2979 +void glRectfv (const GLfloat *v1, const GLfloat *v2);
  7.2980 +void glRecti (GLint x1, GLint y1, GLint x2, GLint y2);
  7.2981 +void glRectiv (const GLint *v1, const GLint *v2);
  7.2982 +void glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
  7.2983 +void glRectsv (const GLshort *v1, const GLshort *v2);
  7.2984 +GLenum glReleaseFlushHold (GLuint id);
  7.2985 +GLint glRenderMode (GLenum mode);
  7.2986 +void glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
  7.2987 +void glResetHistogram (GLenum target);
  7.2988 +void glResetMinmax (GLenum target);
  7.2989 +void glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
  7.2990 +void glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
  7.2991 +void glSampleCoverage (GLclampf value, GLboolean invert);
  7.2992 +void glSampleCoverageARB (GLclampf value, GLboolean invert);
  7.2993 +void glScaled (GLdouble x, GLdouble y, GLdouble z);
  7.2994 +void glScalef (GLfloat x, GLfloat y, GLfloat z);
  7.2995 +void glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
  7.2996 +void glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
  7.2997 +void glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
  7.2998 +void glSecondaryColor3bv (const GLbyte *v);
  7.2999 +void glSecondaryColor3bvEXT (const GLbyte *v);
  7.3000 +void glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
  7.3001 +void glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
  7.3002 +void glSecondaryColor3dv (const GLdouble *v);
  7.3003 +void glSecondaryColor3dvEXT (const GLdouble *v);
  7.3004 +void glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
  7.3005 +void glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
  7.3006 +void glSecondaryColor3fv (const GLfloat *v);
  7.3007 +void glSecondaryColor3fvEXT (const GLfloat *v);
  7.3008 +void glSecondaryColor3hNV (GLhalf red, GLhalf green, GLhalf blue);
  7.3009 +void glSecondaryColor3hvNV (const GLhalf *v);
  7.3010 +void glSecondaryColor3i (GLint red, GLint green, GLint blue);
  7.3011 +void glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
  7.3012 +void glSecondaryColor3iv (const GLint *v);
  7.3013 +void glSecondaryColor3ivEXT (const GLint *v);
  7.3014 +void glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
  7.3015 +void glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
  7.3016 +void glSecondaryColor3sv (const GLshort *v);
  7.3017 +void glSecondaryColor3svEXT (const GLshort *v);
  7.3018 +void glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
  7.3019 +void glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
  7.3020 +void glSecondaryColor3ubv (const GLubyte *v);
  7.3021 +void glSecondaryColor3ubvEXT (const GLubyte *v);
  7.3022 +void glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
  7.3023 +void glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
  7.3024 +void glSecondaryColor3uiv (const GLuint *v);
  7.3025 +void glSecondaryColor3uivEXT (const GLuint *v);
  7.3026 +void glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
  7.3027 +void glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
  7.3028 +void glSecondaryColor3usv (const GLushort *v);
  7.3029 +void glSecondaryColor3usvEXT (const GLushort *v);
  7.3030 +void glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.3031 +void glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.3032 +void glSelectBuffer (GLsizei size, GLuint *buffer);
  7.3033 +void glSelectTextureCoordSetSGIS (GLenum target);
  7.3034 +void glSelectTextureSGIS (GLenum target);
  7.3035 +void glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
  7.3036 +void glSetFenceNV (GLuint fence, GLenum condition);
  7.3037 +void glSetWindowStereoModeNV (GLboolean displayMode);
  7.3038 +void glShadeModel (GLenum mode);
  7.3039 +void glStencilFunc (GLenum func, GLint ref, GLuint mask);
  7.3040 +void glStencilMask (GLuint mask);
  7.3041 +void glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
  7.3042 +void glTbufferMask3DFX (GLuint mask);
  7.3043 +GLboolean glTestFenceNV (GLuint fence);
  7.3044 +void glTexCoord1d (GLdouble s);
  7.3045 +void glTexCoord1dv (const GLdouble *v);
  7.3046 +void glTexCoord1f (GLfloat s);
  7.3047 +void glTexCoord1fv (const GLfloat *v);
  7.3048 +void glTexCoord1hNV (GLhalf s);
  7.3049 +void glTexCoord1hvNV (const GLhalf *v);
  7.3050 +void glTexCoord1i (GLint s);
  7.3051 +void glTexCoord1iv (const GLint *v);
  7.3052 +void glTexCoord1s (GLshort s);
  7.3053 +void glTexCoord1sv (const GLshort *v);
  7.3054 +void glTexCoord2d (GLdouble s, GLdouble t);
  7.3055 +void glTexCoord2dv (const GLdouble *v);
  7.3056 +void glTexCoord2f (GLfloat s, GLfloat t);
  7.3057 +void glTexCoord2fv (const GLfloat *v);
  7.3058 +void glTexCoord2hNV (GLhalf s, GLhalf t);
  7.3059 +void glTexCoord2hvNV (const GLhalf *v);
  7.3060 +void glTexCoord2i (GLint s, GLint t);
  7.3061 +void glTexCoord2iv (const GLint *v);
  7.3062 +void glTexCoord2s (GLshort s, GLshort t);
  7.3063 +void glTexCoord2sv (const GLshort *v);
  7.3064 +void glTexCoord3d (GLdouble s, GLdouble t, GLdouble r);
  7.3065 +void glTexCoord3dv (const GLdouble *v);
  7.3066 +void glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
  7.3067 +void glTexCoord3fv (const GLfloat *v);
  7.3068 +void glTexCoord3hNV (GLhalf s, GLhalf t, GLhalf r);
  7.3069 +void glTexCoord3hvNV (const GLhalf *v);
  7.3070 +void glTexCoord3i (GLint s, GLint t, GLint r);
  7.3071 +void glTexCoord3iv (const GLint *v);
  7.3072 +void glTexCoord3s (GLshort s, GLshort t, GLshort r);
  7.3073 +void glTexCoord3sv (const GLshort *v);
  7.3074 +void glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
  7.3075 +void glTexCoord4dv (const GLdouble *v);
  7.3076 +void glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
  7.3077 +void glTexCoord4fv (const GLfloat *v);
  7.3078 +void glTexCoord4hNV (GLhalf s, GLhalf t, GLhalf r, GLhalf q);
  7.3079 +void glTexCoord4hvNV (const GLhalf *v);
  7.3080 +void glTexCoord4i (GLint s, GLint t, GLint r, GLint q);
  7.3081 +void glTexCoord4iv (const GLint *v);
  7.3082 +void glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q);
  7.3083 +void glTexCoord4sv (const GLshort *v);
  7.3084 +void glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.3085 +void glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  7.3086 +void glTexEnvf (GLenum target, GLenum pname, GLfloat param);
  7.3087 +void glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
  7.3088 +void glTexEnvi (GLenum target, GLenum pname, GLint param);
  7.3089 +void glTexEnviv (GLenum target, GLenum pname, const GLint *params);
  7.3090 +void glTexGend (GLenum coord, GLenum pname, GLdouble param);
  7.3091 +void glTexGendv (GLenum coord, GLenum pname, const GLdouble *params);
  7.3092 +void glTexGenf (GLenum coord, GLenum pname, GLfloat param);
  7.3093 +void glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params);
  7.3094 +void glTexGeni (GLenum coord, GLenum pname, GLint param);
  7.3095 +void glTexGeniv (GLenum coord, GLenum pname, const GLint *params);
  7.3096 +void glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  7.3097 +void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  7.3098 +void glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  7.3099 +void glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  7.3100 +void glTexParameterf (GLenum target, GLenum pname, GLfloat param);
  7.3101 +void glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
  7.3102 +void glTexParameteri (GLenum target, GLenum pname, GLint param);
  7.3103 +void glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
  7.3104 +void glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
  7.3105 +void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
  7.3106 +void glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
  7.3107 +void glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
  7.3108 +void glTextureColorMaskSGIS (GLboolean r, GLboolean g, GLboolean b, GLboolean a);
  7.3109 +void glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
  7.3110 +void glTranslated (GLdouble x, GLdouble y, GLdouble z);
  7.3111 +void glTranslatef (GLfloat x, GLfloat y, GLfloat z);
  7.3112 +void glUnlockArraysEXT (void);
  7.3113 +GLboolean glUnmapBufferARB (GLenum target);
  7.3114 +GLboolean glValidBackBufferHintAutodesk (GLint x, GLint y, GLsizei width, GLsizei height);
  7.3115 +void glVertex2d (GLdouble x, GLdouble y);
  7.3116 +void glVertex2dv (const GLdouble *v);
  7.3117 +void glVertex2f (GLfloat x, GLfloat y);
  7.3118 +void glVertex2fv (const GLfloat *v);
  7.3119 +void glVertex2hNV (GLhalf x, GLhalf y);
  7.3120 +void glVertex2hvNV (const GLhalf *v);
  7.3121 +void glVertex2i (GLint x, GLint y);
  7.3122 +void glVertex2iv (const GLint *v);
  7.3123 +void glVertex2s (GLshort x, GLshort y);
  7.3124 +void glVertex2sv (const GLshort *v);
  7.3125 +void glVertex3d (GLdouble x, GLdouble y, GLdouble z);
  7.3126 +void glVertex3dv (const GLdouble *v);
  7.3127 +void glVertex3f (GLfloat x, GLfloat y, GLfloat z);
  7.3128 +void glVertex3fv (const GLfloat *v);
  7.3129 +void glVertex3hNV (GLhalf x, GLhalf y, GLhalf z);
  7.3130 +void glVertex3hvNV (const GLhalf *v);
  7.3131 +void glVertex3i (GLint x, GLint y, GLint z);
  7.3132 +void glVertex3iv (const GLint *v);
  7.3133 +void glVertex3s (GLshort x, GLshort y, GLshort z);
  7.3134 +void glVertex3sv (const GLshort *v);
  7.3135 +void glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.3136 +void glVertex4dv (const GLdouble *v);
  7.3137 +void glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.3138 +void glVertex4fv (const GLfloat *v);
  7.3139 +void glVertex4hNV (GLhalf x, GLhalf y, GLhalf z, GLhalf w);
  7.3140 +void glVertex4hvNV (const GLhalf *v);
  7.3141 +void glVertex4i (GLint x, GLint y, GLint z, GLint w);
  7.3142 +void glVertex4iv (const GLint *v);
  7.3143 +void glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w);
  7.3144 +void glVertex4sv (const GLshort *v);
  7.3145 +void glVertexArrayRangeNV (GLsizei size, const GLvoid *pointer);
  7.3146 +void glVertexAttrib1dARB (GLuint index, GLdouble x);
  7.3147 +void glVertexAttrib1dNV (GLuint index, GLdouble x);
  7.3148 +void glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
  7.3149 +void glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
  7.3150 +void glVertexAttrib1fARB (GLuint index, GLfloat x);
  7.3151 +void glVertexAttrib1fNV (GLuint index, GLfloat x);
  7.3152 +void glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
  7.3153 +void glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
  7.3154 +void glVertexAttrib1hNV (GLuint index, GLhalf x);
  7.3155 +void glVertexAttrib1hvNV (GLuint index, const GLhalf *v);
  7.3156 +void glVertexAttrib1sARB (GLuint index, GLshort x);
  7.3157 +void glVertexAttrib1sNV (GLuint index, GLshort x);
  7.3158 +void glVertexAttrib1svARB (GLuint index, const GLshort *v);
  7.3159 +void glVertexAttrib1svNV (GLuint index, const GLshort *v);
  7.3160 +void glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
  7.3161 +void glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
  7.3162 +void glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
  7.3163 +void glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
  7.3164 +void glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
  7.3165 +void glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
  7.3166 +void glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
  7.3167 +void glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
  7.3168 +void glVertexAttrib2hNV (GLuint index, GLhalf x, GLhalf y);
  7.3169 +void glVertexAttrib2hvNV (GLuint index, const GLhalf *v);
  7.3170 +void glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
  7.3171 +void glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
  7.3172 +void glVertexAttrib2svARB (GLuint index, const GLshort *v);
  7.3173 +void glVertexAttrib2svNV (GLuint index, const GLshort *v);
  7.3174 +void glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
  7.3175 +void glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
  7.3176 +void glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
  7.3177 +void glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
  7.3178 +void glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
  7.3179 +void glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
  7.3180 +void glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
  7.3181 +void glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
  7.3182 +void glVertexAttrib3hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z);
  7.3183 +void glVertexAttrib3hvNV (GLuint index, const GLhalf *v);
  7.3184 +void glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
  7.3185 +void glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
  7.3186 +void glVertexAttrib3svARB (GLuint index, const GLshort *v);
  7.3187 +void glVertexAttrib3svNV (GLuint index, const GLshort *v);
  7.3188 +void glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
  7.3189 +void glVertexAttrib4NivARB (GLuint index, const GLint *v);
  7.3190 +void glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
  7.3191 +void glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
  7.3192 +void glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
  7.3193 +void glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
  7.3194 +void glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
  7.3195 +void glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
  7.3196 +void glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.3197 +void glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  7.3198 +void glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
  7.3199 +void glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
  7.3200 +void glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.3201 +void glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  7.3202 +void glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
  7.3203 +void glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
  7.3204 +void glVertexAttrib4hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w);
  7.3205 +void glVertexAttrib4hvNV (GLuint index, const GLhalf *v);
  7.3206 +void glVertexAttrib4ivARB (GLuint index, const GLint *v);
  7.3207 +void glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
  7.3208 +void glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
  7.3209 +void glVertexAttrib4svARB (GLuint index, const GLshort *v);
  7.3210 +void glVertexAttrib4svNV (GLuint index, const GLshort *v);
  7.3211 +void glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
  7.3212 +void glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
  7.3213 +void glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
  7.3214 +void glVertexAttrib4uivARB (GLuint index, const GLuint *v);
  7.3215 +void glVertexAttrib4usvARB (GLuint index, const GLushort *v);
  7.3216 +void glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
  7.3217 +void glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.3218 +void glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
  7.3219 +void glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
  7.3220 +void glVertexAttribs1hvNV (GLuint index, GLsizei count, const GLhalf *v);
  7.3221 +void glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
  7.3222 +void glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
  7.3223 +void glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
  7.3224 +void glVertexAttribs2hvNV (GLuint index, GLsizei count, const GLhalf *v);
  7.3225 +void glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
  7.3226 +void glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
  7.3227 +void glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
  7.3228 +void glVertexAttribs3hvNV (GLuint index, GLsizei count, const GLhalf *v);
  7.3229 +void glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
  7.3230 +void glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
  7.3231 +void glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
  7.3232 +void glVertexAttribs4hvNV (GLuint index, GLsizei count, const GLhalf *v);
  7.3233 +void glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
  7.3234 +void glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
  7.3235 +void glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.3236 +void glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  7.3237 +void glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
  7.3238 +void glVertexWeightfEXT (GLfloat weight);
  7.3239 +void glVertexWeightfvEXT (const GLfloat *weight);
  7.3240 +void glVertexWeighthNV (GLhalf weight);
  7.3241 +void glVertexWeighthvNV (const GLhalf *weight);
  7.3242 +void glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
  7.3243 +void glWindowBackBufferHintAutodesk (void);
  7.3244 +void glWindowPos2d (GLdouble x, GLdouble y);
  7.3245 +void glWindowPos2dARB (GLdouble x, GLdouble y);
  7.3246 +void glWindowPos2dv (const GLdouble *p);
  7.3247 +void glWindowPos2dvARB (const GLdouble *p);
  7.3248 +void glWindowPos2f (GLfloat x, GLfloat y);
  7.3249 +void glWindowPos2fARB (GLfloat x, GLfloat y);
  7.3250 +void glWindowPos2fv (const GLfloat *p);
  7.3251 +void glWindowPos2fvARB (const GLfloat *p);
  7.3252 +void glWindowPos2i (GLint x, GLint y);
  7.3253 +void glWindowPos2iARB (GLint x, GLint y);
  7.3254 +void glWindowPos2iv (const GLint *p);
  7.3255 +void glWindowPos2ivARB (const GLint *p);
  7.3256 +void glWindowPos2s (GLshort x, GLshort y);
  7.3257 +void glWindowPos2sARB (GLshort x, GLshort y);
  7.3258 +void glWindowPos2sv (const GLshort *p);
  7.3259 +void glWindowPos2svARB (const GLshort *p);
  7.3260 +void glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
  7.3261 +void glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
  7.3262 +void glWindowPos3dv (const GLdouble *p);
  7.3263 +void glWindowPos3dvARB (const GLdouble *p);
  7.3264 +void glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
  7.3265 +void glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
  7.3266 +void glWindowPos3fv (const GLfloat *p);
  7.3267 +void glWindowPos3fvARB (const GLfloat *p);
  7.3268 +void glWindowPos3i (GLint x, GLint y, GLint z);
  7.3269 +void glWindowPos3iARB (GLint x, GLint y, GLint z);
  7.3270 +void glWindowPos3iv (const GLint *p);
  7.3271 +void glWindowPos3ivARB (const GLint *p);
  7.3272 +void glWindowPos3s (GLshort x, GLshort y, GLshort z);
  7.3273 +void glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
  7.3274 +void glWindowPos3sv (const GLshort *p);
  7.3275 +void glWindowPos3svARB (const GLshort *p);
  7.3276 +
  7.3277 +
  7.3278 +#ifdef __DEFINED_GLAPI
  7.3279 +# undef GLAPI
  7.3280 +# undef __DEFINED_GLAPI
  7.3281 +#endif
  7.3282 +
  7.3283 +#ifdef __cplusplus
  7.3284 +}
  7.3285 +#endif
  7.3286 +
  7.3287 +#endif /* __gl_h_ */
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/GL/glext.h	Tue Nov 27 15:23:52 2007 +0100
     8.3 @@ -0,0 +1,5024 @@
     8.4 +#ifndef __glext_h_
     8.5 +#define __glext_h_
     8.6 +
     8.7 +#ifdef __cplusplus
     8.8 +extern "C" {
     8.9 +#endif
    8.10 +
    8.11 +/*
    8.12 +** License Applicability. Except to the extent portions of this file are
    8.13 +** made subject to an alternative license as permitted in the SGI Free
    8.14 +** Software License B, Version 1.1 (the "License"), the contents of this
    8.15 +** file are subject only to the provisions of the License. You may not use
    8.16 +** this file except in compliance with the License. You may obtain a copy
    8.17 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
    8.18 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
    8.19 +** 
    8.20 +** http://oss.sgi.com/projects/FreeB
    8.21 +** 
    8.22 +** Note that, as provided in the License, the Software is distributed on an
    8.23 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
    8.24 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
    8.25 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
    8.26 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
    8.27 +** 
    8.28 +** Original Code. The Original Code is: OpenGL Sample Implementation,
    8.29 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
    8.30 +** Inc. The Original Code is Copyright (c) 1991-2002 Silicon Graphics, Inc.
    8.31 +** Copyright in any portions created by third parties is as indicated
    8.32 +** elsewhere herein. All Rights Reserved.
    8.33 +** 
    8.34 +** Additional Notice Provisions: This software was created using the
    8.35 +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
    8.36 +** not been independently verified as being compliant with the OpenGL(R)
    8.37 +** version 1.2.1 Specification.
    8.38 +*/
    8.39 +
    8.40 +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
    8.41 +#define WIN32_LEAN_AND_MEAN 1
    8.42 +#include <windows.h>
    8.43 +#endif
    8.44 +
    8.45 +#ifndef APIENTRY
    8.46 +#define APIENTRY
    8.47 +#endif
    8.48 +#ifndef GLAPI
    8.49 +#define GLAPI extern
    8.50 +#endif
    8.51 +
    8.52 +/*************************************************************/
    8.53 +
    8.54 +/* Header file version number, required by OpenGL ABI for Linux */
    8.55 +/* glext.h last updated 2002/08/21 */
    8.56 +/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */
    8.57 +#define GL_GLEXT_VERSION 17
    8.58 +
    8.59 +#ifndef GL_VERSION_1_2
    8.60 +#define GL_UNSIGNED_BYTE_3_3_2            0x8032
    8.61 +#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
    8.62 +#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
    8.63 +#define GL_UNSIGNED_INT_8_8_8_8           0x8035
    8.64 +#define GL_UNSIGNED_INT_10_10_10_2        0x8036
    8.65 +#define GL_RESCALE_NORMAL                 0x803A
    8.66 +#define GL_TEXTURE_BINDING_3D             0x806A
    8.67 +#define GL_PACK_SKIP_IMAGES               0x806B
    8.68 +#define GL_PACK_IMAGE_HEIGHT              0x806C
    8.69 +#define GL_UNPACK_SKIP_IMAGES             0x806D
    8.70 +#define GL_UNPACK_IMAGE_HEIGHT            0x806E
    8.71 +#define GL_TEXTURE_3D                     0x806F
    8.72 +#define GL_PROXY_TEXTURE_3D               0x8070
    8.73 +#define GL_TEXTURE_DEPTH                  0x8071
    8.74 +#define GL_TEXTURE_WRAP_R                 0x8072
    8.75 +#define GL_MAX_3D_TEXTURE_SIZE            0x8073
    8.76 +#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
    8.77 +#define GL_UNSIGNED_SHORT_5_6_5           0x8363
    8.78 +#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
    8.79 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
    8.80 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
    8.81 +#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
    8.82 +#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
    8.83 +#define GL_BGR                            0x80E0
    8.84 +#define GL_BGRA                           0x80E1
    8.85 +#define GL_MAX_ELEMENTS_VERTICES          0x80E8
    8.86 +#define GL_MAX_ELEMENTS_INDICES           0x80E9
    8.87 +#define GL_CLAMP_TO_EDGE                  0x812F
    8.88 +#define GL_TEXTURE_MIN_LOD                0x813A
    8.89 +#define GL_TEXTURE_MAX_LOD                0x813B
    8.90 +#define GL_TEXTURE_BASE_LEVEL             0x813C
    8.91 +#define GL_TEXTURE_MAX_LEVEL              0x813D
    8.92 +#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
    8.93 +#define GL_SINGLE_COLOR                   0x81F9
    8.94 +#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
    8.95 +#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
    8.96 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13
    8.97 +#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
    8.98 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23
    8.99 +#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
   8.100 +#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
   8.101 +#endif
   8.102 +
   8.103 +#ifndef GL_ARB_imaging
   8.104 +#define GL_CONSTANT_COLOR                 0x8001
   8.105 +#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
   8.106 +#define GL_CONSTANT_ALPHA                 0x8003
   8.107 +#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
   8.108 +#define GL_BLEND_COLOR                    0x8005
   8.109 +#define GL_FUNC_ADD                       0x8006
   8.110 +#define GL_MIN                            0x8007
   8.111 +#define GL_MAX                            0x8008
   8.112 +#define GL_BLEND_EQUATION                 0x8009
   8.113 +#define GL_FUNC_SUBTRACT                  0x800A
   8.114 +#define GL_FUNC_REVERSE_SUBTRACT          0x800B
   8.115 +#define GL_CONVOLUTION_1D                 0x8010
   8.116 +#define GL_CONVOLUTION_2D                 0x8011
   8.117 +#define GL_SEPARABLE_2D                   0x8012
   8.118 +#define GL_CONVOLUTION_BORDER_MODE        0x8013
   8.119 +#define GL_CONVOLUTION_FILTER_SCALE       0x8014
   8.120 +#define GL_CONVOLUTION_FILTER_BIAS        0x8015
   8.121 +#define GL_REDUCE                         0x8016
   8.122 +#define GL_CONVOLUTION_FORMAT             0x8017
   8.123 +#define GL_CONVOLUTION_WIDTH              0x8018
   8.124 +#define GL_CONVOLUTION_HEIGHT             0x8019
   8.125 +#define GL_MAX_CONVOLUTION_WIDTH          0x801A
   8.126 +#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
   8.127 +#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
   8.128 +#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
   8.129 +#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
   8.130 +#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
   8.131 +#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
   8.132 +#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
   8.133 +#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
   8.134 +#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
   8.135 +#define GL_HISTOGRAM                      0x8024
   8.136 +#define GL_PROXY_HISTOGRAM                0x8025
   8.137 +#define GL_HISTOGRAM_WIDTH                0x8026
   8.138 +#define GL_HISTOGRAM_FORMAT               0x8027
   8.139 +#define GL_HISTOGRAM_RED_SIZE             0x8028
   8.140 +#define GL_HISTOGRAM_GREEN_SIZE           0x8029
   8.141 +#define GL_HISTOGRAM_BLUE_SIZE            0x802A
   8.142 +#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
   8.143 +#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
   8.144 +#define GL_HISTOGRAM_SINK                 0x802D
   8.145 +#define GL_MINMAX                         0x802E
   8.146 +#define GL_MINMAX_FORMAT                  0x802F
   8.147 +#define GL_MINMAX_SINK                    0x8030
   8.148 +#define GL_TABLE_TOO_LARGE                0x8031
   8.149 +#define GL_COLOR_MATRIX                   0x80B1
   8.150 +#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
   8.151 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
   8.152 +#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
   8.153 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
   8.154 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
   8.155 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
   8.156 +#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
   8.157 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
   8.158 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
   8.159 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB
   8.160 +#define GL_COLOR_TABLE                    0x80D0
   8.161 +#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
   8.162 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
   8.163 +#define GL_PROXY_COLOR_TABLE              0x80D3
   8.164 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
   8.165 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
   8.166 +#define GL_COLOR_TABLE_SCALE              0x80D6
   8.167 +#define GL_COLOR_TABLE_BIAS               0x80D7
   8.168 +#define GL_COLOR_TABLE_FORMAT             0x80D8
   8.169 +#define GL_COLOR_TABLE_WIDTH              0x80D9
   8.170 +#define GL_COLOR_TABLE_RED_SIZE           0x80DA
   8.171 +#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
   8.172 +#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
   8.173 +#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
   8.174 +#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
   8.175 +#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
   8.176 +#define GL_CONSTANT_BORDER                0x8151
   8.177 +#define GL_REPLICATE_BORDER               0x8153
   8.178 +#define GL_CONVOLUTION_BORDER_COLOR       0x8154
   8.179 +#endif
   8.180 +
   8.181 +#ifndef GL_VERSION_1_3
   8.182 +#define GL_TEXTURE0                       0x84C0
   8.183 +#define GL_TEXTURE1                       0x84C1
   8.184 +#define GL_TEXTURE2                       0x84C2
   8.185 +#define GL_TEXTURE3                       0x84C3
   8.186 +#define GL_TEXTURE4                       0x84C4
   8.187 +#define GL_TEXTURE5                       0x84C5
   8.188 +#define GL_TEXTURE6                       0x84C6
   8.189 +#define GL_TEXTURE7                       0x84C7
   8.190 +#define GL_TEXTURE8                       0x84C8
   8.191 +#define GL_TEXTURE9                       0x84C9
   8.192 +#define GL_TEXTURE10                      0x84CA
   8.193 +#define GL_TEXTURE11                      0x84CB
   8.194 +#define GL_TEXTURE12                      0x84CC
   8.195 +#define GL_TEXTURE13                      0x84CD
   8.196 +#define GL_TEXTURE14                      0x84CE
   8.197 +#define GL_TEXTURE15                      0x84CF
   8.198 +#define GL_TEXTURE16                      0x84D0
   8.199 +#define GL_TEXTURE17                      0x84D1
   8.200 +#define GL_TEXTURE18                      0x84D2
   8.201 +#define GL_TEXTURE19                      0x84D3
   8.202 +#define GL_TEXTURE20                      0x84D4
   8.203 +#define GL_TEXTURE21                      0x84D5
   8.204 +#define GL_TEXTURE22                      0x84D6
   8.205 +#define GL_TEXTURE23                      0x84D7
   8.206 +#define GL_TEXTURE24                      0x84D8
   8.207 +#define GL_TEXTURE25                      0x84D9
   8.208 +#define GL_TEXTURE26                      0x84DA
   8.209 +#define GL_TEXTURE27                      0x84DB
   8.210 +#define GL_TEXTURE28                      0x84DC
   8.211 +#define GL_TEXTURE29                      0x84DD
   8.212 +#define GL_TEXTURE30                      0x84DE
   8.213 +#define GL_TEXTURE31                      0x84DF
   8.214 +#define GL_ACTIVE_TEXTURE                 0x84E0
   8.215 +#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
   8.216 +#define GL_MAX_TEXTURE_UNITS              0x84E2
   8.217 +#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
   8.218 +#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
   8.219 +#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
   8.220 +#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
   8.221 +#define GL_MULTISAMPLE                    0x809D
   8.222 +#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
   8.223 +#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
   8.224 +#define GL_SAMPLE_COVERAGE                0x80A0
   8.225 +#define GL_SAMPLE_BUFFERS                 0x80A8
   8.226 +#define GL_SAMPLES                        0x80A9
   8.227 +#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
   8.228 +#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
   8.229 +#define GL_MULTISAMPLE_BIT                0x20000000
   8.230 +#define GL_NORMAL_MAP                     0x8511
   8.231 +#define GL_REFLECTION_MAP                 0x8512
   8.232 +#define GL_TEXTURE_CUBE_MAP               0x8513
   8.233 +#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
   8.234 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
   8.235 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
   8.236 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
   8.237 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
   8.238 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
   8.239 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
   8.240 +#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
   8.241 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
   8.242 +#define GL_COMPRESSED_ALPHA               0x84E9
   8.243 +#define GL_COMPRESSED_LUMINANCE           0x84EA
   8.244 +#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
   8.245 +#define GL_COMPRESSED_INTENSITY           0x84EC
   8.246 +#define GL_COMPRESSED_RGB                 0x84ED
   8.247 +#define GL_COMPRESSED_RGBA                0x84EE
   8.248 +#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
   8.249 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
   8.250 +#define GL_TEXTURE_COMPRESSED             0x86A1
   8.251 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
   8.252 +#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
   8.253 +#define GL_CLAMP_TO_BORDER                0x812D
   8.254 +#define GL_CLAMP_TO_BORDER_SGIS           0x812D
   8.255 +#define GL_COMBINE                        0x8570
   8.256 +#define GL_COMBINE_RGB                    0x8571
   8.257 +#define GL_COMBINE_ALPHA                  0x8572
   8.258 +#define GL_SOURCE0_RGB                    0x8580
   8.259 +#define GL_SOURCE1_RGB                    0x8581
   8.260 +#define GL_SOURCE2_RGB                    0x8582
   8.261 +#define GL_SOURCE0_ALPHA                  0x8588
   8.262 +#define GL_SOURCE1_ALPHA                  0x8589
   8.263 +#define GL_SOURCE2_ALPHA                  0x858A
   8.264 +#define GL_OPERAND0_RGB                   0x8590
   8.265 +#define GL_OPERAND1_RGB                   0x8591
   8.266 +#define GL_OPERAND2_RGB                   0x8592
   8.267 +#define GL_OPERAND0_ALPHA                 0x8598
   8.268 +#define GL_OPERAND1_ALPHA                 0x8599
   8.269 +#define GL_OPERAND2_ALPHA                 0x859A
   8.270 +#define GL_RGB_SCALE                      0x8573
   8.271 +#define GL_ADD_SIGNED                     0x8574
   8.272 +#define GL_INTERPOLATE                    0x8575
   8.273 +#define GL_SUBTRACT                       0x84E7
   8.274 +#define GL_CONSTANT                       0x8576
   8.275 +#define GL_PRIMARY_COLOR                  0x8577
   8.276 +#define GL_PREVIOUS                       0x8578
   8.277 +#define GL_DOT3_RGB                       0x86AE
   8.278 +#define GL_DOT3_RGBA                      0x86AF
   8.279 +#endif
   8.280 +
   8.281 +#ifndef GL_VERSION_1_4
   8.282 +#define GL_BLEND_DST_RGB                  0x80C8
   8.283 +#define GL_BLEND_SRC_RGB                  0x80C9
   8.284 +#define GL_BLEND_DST_ALPHA                0x80CA
   8.285 +#define GL_BLEND_SRC_ALPHA                0x80CB
   8.286 +#define GL_POINT_SIZE_MIN                 0x8126
   8.287 +#define GL_POINT_SIZE_MAX                 0x8127
   8.288 +#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
   8.289 +#define GL_POINT_DISTANCE_ATTENUATION     0x8129
   8.290 +#define GL_GENERATE_MIPMAP                0x8191
   8.291 +#define GL_GENERATE_MIPMAP_HINT           0x8192
   8.292 +#define GL_DEPTH_COMPONENT16              0x81A5
   8.293 +#define GL_DEPTH_COMPONENT24              0x81A6
   8.294 +#define GL_DEPTH_COMPONENT32              0x81A7
   8.295 +#define GL_MIRRORED_REPEAT                0x8370
   8.296 +#define GL_FOG_COORDINATE_SOURCE          0x8450
   8.297 +#define GL_FOG_COORDINATE                 0x8451
   8.298 +#define GL_FRAGMENT_DEPTH                 0x8452
   8.299 +#define GL_CURRENT_FOG_COORDINATE         0x8453
   8.300 +#define GL_FOG_COORDINATE_ARRAY_TYPE      0x8454
   8.301 +#define GL_FOG_COORDINATE_ARRAY_STRIDE    0x8455
   8.302 +#define GL_FOG_COORDINATE_ARRAY_POINTER   0x8456
   8.303 +#define GL_FOG_COORDINATE_ARRAY           0x8457
   8.304 +#define GL_COLOR_SUM                      0x8458
   8.305 +#define GL_CURRENT_SECONDARY_COLOR        0x8459
   8.306 +#define GL_SECONDARY_COLOR_ARRAY_SIZE     0x845A
   8.307 +#define GL_SECONDARY_COLOR_ARRAY_TYPE     0x845B
   8.308 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE   0x845C
   8.309 +#define GL_SECONDARY_COLOR_ARRAY_POINTER  0x845D
   8.310 +#define GL_SECONDARY_COLOR_ARRAY          0x845E
   8.311 +#define GL_MAX_TEXTURE_LOD_BIAS           0x84FD
   8.312 +#define GL_TEXTURE_FILTER_CONTROL         0x8500
   8.313 +#define GL_TEXTURE_LOD_BIAS               0x8501
   8.314 +#define GL_INCR_WRAP                      0x8507
   8.315 +#define GL_DECR_WRAP                      0x8508
   8.316 +#define GL_TEXTURE_DEPTH_SIZE             0x884A
   8.317 +#define GL_DEPTH_TEXTURE_MODE             0x884B
   8.318 +#define GL_TEXTURE_COMPARE_MODE           0x884C
   8.319 +#define GL_TEXTURE_COMPARE_FUNC           0x884D
   8.320 +#define GL_COMPARE_R_TO_TEXTURE           0x884E
   8.321 +#endif
   8.322 +
   8.323 +#ifndef GL_ARB_multitexture
   8.324 +#define GL_TEXTURE0_ARB                   0x84C0
   8.325 +#define GL_TEXTURE1_ARB                   0x84C1
   8.326 +#define GL_TEXTURE2_ARB                   0x84C2
   8.327 +#define GL_TEXTURE3_ARB                   0x84C3
   8.328 +#define GL_TEXTURE4_ARB                   0x84C4
   8.329 +#define GL_TEXTURE5_ARB                   0x84C5
   8.330 +#define GL_TEXTURE6_ARB                   0x84C6
   8.331 +#define GL_TEXTURE7_ARB                   0x84C7
   8.332 +#define GL_TEXTURE8_ARB                   0x84C8
   8.333 +#define GL_TEXTURE9_ARB                   0x84C9
   8.334 +#define GL_TEXTURE10_ARB                  0x84CA
   8.335 +#define GL_TEXTURE11_ARB                  0x84CB
   8.336 +#define GL_TEXTURE12_ARB                  0x84CC
   8.337 +#define GL_TEXTURE13_ARB                  0x84CD
   8.338 +#define GL_TEXTURE14_ARB                  0x84CE
   8.339 +#define GL_TEXTURE15_ARB                  0x84CF
   8.340 +#define GL_TEXTURE16_ARB                  0x84D0
   8.341 +#define GL_TEXTURE17_ARB                  0x84D1
   8.342 +#define GL_TEXTURE18_ARB                  0x84D2
   8.343 +#define GL_TEXTURE19_ARB                  0x84D3
   8.344 +#define GL_TEXTURE20_ARB                  0x84D4
   8.345 +#define GL_TEXTURE21_ARB                  0x84D5
   8.346 +#define GL_TEXTURE22_ARB                  0x84D6
   8.347 +#define GL_TEXTURE23_ARB                  0x84D7
   8.348 +#define GL_TEXTURE24_ARB                  0x84D8
   8.349 +#define GL_TEXTURE25_ARB                  0x84D9
   8.350 +#define GL_TEXTURE26_ARB                  0x84DA
   8.351 +#define GL_TEXTURE27_ARB                  0x84DB
   8.352 +#define GL_TEXTURE28_ARB                  0x84DC
   8.353 +#define GL_TEXTURE29_ARB                  0x84DD
   8.354 +#define GL_TEXTURE30_ARB                  0x84DE
   8.355 +#define GL_TEXTURE31_ARB                  0x84DF
   8.356 +#define GL_ACTIVE_TEXTURE_ARB             0x84E0
   8.357 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
   8.358 +#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
   8.359 +#endif
   8.360 +
   8.361 +#ifndef GL_ARB_transpose_matrix
   8.362 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
   8.363 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
   8.364 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5
   8.365 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6
   8.366 +#endif
   8.367 +
   8.368 +#ifndef GL_ARB_multisample
   8.369 +#define GL_MULTISAMPLE_ARB                0x809D
   8.370 +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
   8.371 +#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
   8.372 +#define GL_SAMPLE_COVERAGE_ARB            0x80A0
   8.373 +#define GL_SAMPLE_BUFFERS_ARB             0x80A8
   8.374 +#define GL_SAMPLES_ARB                    0x80A9
   8.375 +#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
   8.376 +#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
   8.377 +#define GL_MULTISAMPLE_BIT_ARB            0x20000000
   8.378 +#endif
   8.379 +
   8.380 +#ifndef GL_ARB_texture_env_add
   8.381 +#endif
   8.382 +
   8.383 +#ifndef GL_ARB_texture_cube_map
   8.384 +#define GL_NORMAL_MAP_ARB                 0x8511
   8.385 +#define GL_REFLECTION_MAP_ARB             0x8512
   8.386 +#define GL_TEXTURE_CUBE_MAP_ARB           0x8513
   8.387 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514
   8.388 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
   8.389 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
   8.390 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
   8.391 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
   8.392 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
   8.393 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
   8.394 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B
   8.395 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C
   8.396 +#endif
   8.397 +
   8.398 +#ifndef GL_ARB_texture_compression
   8.399 +#define GL_COMPRESSED_ALPHA_ARB           0x84E9
   8.400 +#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA
   8.401 +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
   8.402 +#define GL_COMPRESSED_INTENSITY_ARB       0x84EC
   8.403 +#define GL_COMPRESSED_RGB_ARB             0x84ED
   8.404 +#define GL_COMPRESSED_RGBA_ARB            0x84EE
   8.405 +#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF
   8.406 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
   8.407 +#define GL_TEXTURE_COMPRESSED_ARB         0x86A1
   8.408 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
   8.409 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
   8.410 +#endif
   8.411 +
   8.412 +#ifndef GL_ARB_texture_border_clamp
   8.413 +#define GL_CLAMP_TO_BORDER_ARB            0x812D
   8.414 +#endif
   8.415 +
   8.416 +#ifndef GL_ARB_point_parameters
   8.417 +#define GL_POINT_SIZE_MIN_ARB             0x8126
   8.418 +#define GL_POINT_SIZE_MAX_ARB             0x8127
   8.419 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
   8.420 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
   8.421 +#endif
   8.422 +
   8.423 +#ifndef GL_ARB_vertex_blend
   8.424 +#define GL_MAX_VERTEX_UNITS_ARB           0x86A4
   8.425 +#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5
   8.426 +#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6
   8.427 +#define GL_VERTEX_BLEND_ARB               0x86A7
   8.428 +#define GL_CURRENT_WEIGHT_ARB             0x86A8
   8.429 +#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9
   8.430 +#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA
   8.431 +#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB
   8.432 +#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC
   8.433 +#define GL_WEIGHT_ARRAY_ARB               0x86AD
   8.434 +#define GL_MODELVIEW0_ARB                 0x1700
   8.435 +#define GL_MODELVIEW1_ARB                 0x850A
   8.436 +#define GL_MODELVIEW2_ARB                 0x8722
   8.437 +#define GL_MODELVIEW3_ARB                 0x8723
   8.438 +#define GL_MODELVIEW4_ARB                 0x8724
   8.439 +#define GL_MODELVIEW5_ARB                 0x8725
   8.440 +#define GL_MODELVIEW6_ARB                 0x8726
   8.441 +#define GL_MODELVIEW7_ARB                 0x8727
   8.442 +#define GL_MODELVIEW8_ARB                 0x8728
   8.443 +#define GL_MODELVIEW9_ARB                 0x8729
   8.444 +#define GL_MODELVIEW10_ARB                0x872A
   8.445 +#define GL_MODELVIEW11_ARB                0x872B
   8.446 +#define GL_MODELVIEW12_ARB                0x872C
   8.447 +#define GL_MODELVIEW13_ARB                0x872D
   8.448 +#define GL_MODELVIEW14_ARB                0x872E
   8.449 +#define GL_MODELVIEW15_ARB                0x872F
   8.450 +#define GL_MODELVIEW16_ARB                0x8730
   8.451 +#define GL_MODELVIEW17_ARB                0x8731
   8.452 +#define GL_MODELVIEW18_ARB                0x8732
   8.453 +#define GL_MODELVIEW19_ARB                0x8733
   8.454 +#define GL_MODELVIEW20_ARB                0x8734
   8.455 +#define GL_MODELVIEW21_ARB                0x8735
   8.456 +#define GL_MODELVIEW22_ARB                0x8736
   8.457 +#define GL_MODELVIEW23_ARB                0x8737
   8.458 +#define GL_MODELVIEW24_ARB                0x8738
   8.459 +#define GL_MODELVIEW25_ARB                0x8739
   8.460 +#define GL_MODELVIEW26_ARB                0x873A
   8.461 +#define GL_MODELVIEW27_ARB                0x873B
   8.462 +#define GL_MODELVIEW28_ARB                0x873C
   8.463 +#define GL_MODELVIEW29_ARB                0x873D
   8.464 +#define GL_MODELVIEW30_ARB                0x873E
   8.465 +#define GL_MODELVIEW31_ARB                0x873F
   8.466 +#endif
   8.467 +
   8.468 +#ifndef GL_ARB_matrix_palette
   8.469 +#define GL_MATRIX_PALETTE_ARB             0x8840
   8.470 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
   8.471 +#define GL_MAX_PALETTE_MATRICES_ARB       0x8842
   8.472 +#define GL_CURRENT_PALETTE_MATRIX_ARB     0x8843
   8.473 +#define GL_MATRIX_INDEX_ARRAY_ARB         0x8844
   8.474 +#define GL_CURRENT_MATRIX_INDEX_ARB       0x8845
   8.475 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB    0x8846
   8.476 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB    0x8847
   8.477 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB  0x8848
   8.478 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
   8.479 +#endif
   8.480 +
   8.481 +#ifndef GL_ARB_texture_env_combine
   8.482 +#define GL_COMBINE_ARB                    0x8570
   8.483 +#define GL_COMBINE_RGB_ARB                0x8571
   8.484 +#define GL_COMBINE_ALPHA_ARB              0x8572
   8.485 +#define GL_SOURCE0_RGB_ARB                0x8580
   8.486 +#define GL_SOURCE1_RGB_ARB                0x8581
   8.487 +#define GL_SOURCE2_RGB_ARB                0x8582
   8.488 +#define GL_SOURCE0_ALPHA_ARB              0x8588
   8.489 +#define GL_SOURCE1_ALPHA_ARB              0x8589
   8.490 +#define GL_SOURCE2_ALPHA_ARB              0x858A
   8.491 +#define GL_OPERAND0_RGB_ARB               0x8590
   8.492 +#define GL_OPERAND1_RGB_ARB               0x8591
   8.493 +#define GL_OPERAND2_RGB_ARB               0x8592
   8.494 +#define GL_OPERAND0_ALPHA_ARB             0x8598
   8.495 +#define GL_OPERAND1_ALPHA_ARB             0x8599
   8.496 +#define GL_OPERAND2_ALPHA_ARB             0x859A
   8.497 +#define GL_RGB_SCALE_ARB                  0x8573
   8.498 +#define GL_ADD_SIGNED_ARB                 0x8574
   8.499 +#define GL_INTERPOLATE_ARB                0x8575
   8.500 +#define GL_SUBTRACT_ARB                   0x84E7
   8.501 +#define GL_CONSTANT_ARB                   0x8576
   8.502 +#define GL_PRIMARY_COLOR_ARB              0x8577
   8.503 +#define GL_PREVIOUS_ARB                   0x8578
   8.504 +#endif
   8.505 +
   8.506 +#ifndef GL_ARB_texture_env_crossbar
   8.507 +#endif
   8.508 +
   8.509 +#ifndef GL_ARB_texture_env_dot3
   8.510 +#define GL_DOT3_RGB_ARB                   0x86AE
   8.511 +#define GL_DOT3_RGBA_ARB                  0x86AF
   8.512 +#endif
   8.513 +
   8.514 +#ifndef GL_ARB_texture_mirrored_repeat
   8.515 +#define GL_MIRRORED_REPEAT_ARB            0x8370
   8.516 +#endif
   8.517 +
   8.518 +#ifndef GL_ARB_depth_texture
   8.519 +#define GL_DEPTH_COMPONENT16_ARB          0x81A5
   8.520 +#define GL_DEPTH_COMPONENT24_ARB          0x81A6
   8.521 +#define GL_DEPTH_COMPONENT32_ARB          0x81A7
   8.522 +#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
   8.523 +#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
   8.524 +#endif
   8.525 +
   8.526 +#ifndef GL_ARB_shadow
   8.527 +#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C
   8.528 +#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D
   8.529 +#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E
   8.530 +#endif
   8.531 +
   8.532 +#ifndef GL_ARB_shadow_ambient
   8.533 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
   8.534 +#endif
   8.535 +
   8.536 +#ifndef GL_ARB_window_pos
   8.537 +#endif
   8.538 +
   8.539 +#ifndef GL_ARB_vertex_program
   8.540 +#define GL_VERTEX_PROGRAM_ARB             0x8620
   8.541 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
   8.542 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643
   8.543 +#define GL_COLOR_SUM_ARB                  0x8458
   8.544 +#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875
   8.545 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
   8.546 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623
   8.547 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
   8.548 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625
   8.549 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
   8.550 +#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626
   8.551 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
   8.552 +#define GL_PROGRAM_LENGTH_ARB             0x8627
   8.553 +#define GL_PROGRAM_FORMAT_ARB             0x8876
   8.554 +#define GL_PROGRAM_BINDING_ARB            0x8677
   8.555 +#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0
   8.556 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1
   8.557 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
   8.558 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
   8.559 +#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4
   8.560 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5
   8.561 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
   8.562 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
   8.563 +#define GL_PROGRAM_PARAMETERS_ARB         0x88A8
   8.564 +#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9
   8.565 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA
   8.566 +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
   8.567 +#define GL_PROGRAM_ATTRIBS_ARB            0x88AC
   8.568 +#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD
   8.569 +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE
   8.570 +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
   8.571 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0
   8.572 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
   8.573 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
   8.574 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
   8.575 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
   8.576 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
   8.577 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
   8.578 +#define GL_PROGRAM_STRING_ARB             0x8628
   8.579 +#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B
   8.580 +#define GL_CURRENT_MATRIX_ARB             0x8641
   8.581 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7
   8.582 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
   8.583 +#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869
   8.584 +#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F
   8.585 +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
   8.586 +#define GL_PROGRAM_ERROR_STRING_ARB       0x8874
   8.587 +#define GL_MATRIX0_ARB                    0x88C0
   8.588 +#define GL_MATRIX1_ARB                    0x88C1
   8.589 +#define GL_MATRIX2_ARB                    0x88C2
   8.590 +#define GL_MATRIX3_ARB                    0x88C3
   8.591 +#define GL_MATRIX4_ARB                    0x88C4
   8.592 +#define GL_MATRIX5_ARB                    0x88C5
   8.593 +#define GL_MATRIX6_ARB                    0x88C6
   8.594 +#define GL_MATRIX7_ARB                    0x88C7
   8.595 +#define GL_MATRIX8_ARB                    0x88C8
   8.596 +#define GL_MATRIX9_ARB                    0x88C9
   8.597 +#define GL_MATRIX10_ARB                   0x88CA
   8.598 +#define GL_MATRIX11_ARB                   0x88CB
   8.599 +#define GL_MATRIX12_ARB                   0x88CC
   8.600 +#define GL_MATRIX13_ARB                   0x88CD
   8.601 +#define GL_MATRIX14_ARB                   0x88CE
   8.602 +#define GL_MATRIX15_ARB                   0x88CF
   8.603 +#define GL_MATRIX16_ARB                   0x88D0
   8.604 +#define GL_MATRIX17_ARB                   0x88D1
   8.605 +#define GL_MATRIX18_ARB                   0x88D2
   8.606 +#define GL_MATRIX19_ARB                   0x88D3
   8.607 +#define GL_MATRIX20_ARB                   0x88D4
   8.608 +#define GL_MATRIX21_ARB                   0x88D5
   8.609 +#define GL_MATRIX22_ARB                   0x88D6
   8.610 +#define GL_MATRIX23_ARB                   0x88D7
   8.611 +#define GL_MATRIX24_ARB                   0x88D8
   8.612 +#define GL_MATRIX25_ARB                   0x88D9
   8.613 +#define GL_MATRIX26_ARB                   0x88DA
   8.614 +#define GL_MATRIX27_ARB                   0x88DB
   8.615 +#define GL_MATRIX28_ARB                   0x88DC
   8.616 +#define GL_MATRIX29_ARB                   0x88DD
   8.617 +#define GL_MATRIX30_ARB                   0x88DE
   8.618 +#define GL_MATRIX31_ARB                   0x88DF
   8.619 +#endif
   8.620 +
   8.621 +#ifndef GL_EXT_abgr
   8.622 +#define GL_ABGR_EXT                       0x8000
   8.623 +#endif
   8.624 +
   8.625 +#ifndef GL_EXT_blend_color
   8.626 +#define GL_CONSTANT_COLOR_EXT             0x8001
   8.627 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
   8.628 +#define GL_CONSTANT_ALPHA_EXT             0x8003
   8.629 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
   8.630 +#define GL_BLEND_COLOR_EXT                0x8005
   8.631 +#endif
   8.632 +
   8.633 +#ifndef GL_EXT_polygon_offset
   8.634 +#define GL_POLYGON_OFFSET_EXT             0x8037
   8.635 +#define GL_POLYGON_OFFSET_FACTOR_EXT      0x8038
   8.636 +#define GL_POLYGON_OFFSET_BIAS_EXT        0x8039
   8.637 +#endif
   8.638 +
   8.639 +#ifndef GL_EXT_texture
   8.640 +#define GL_ALPHA4_EXT                     0x803B
   8.641 +#define GL_ALPHA8_EXT                     0x803C
   8.642 +#define GL_ALPHA12_EXT                    0x803D
   8.643 +#define GL_ALPHA16_EXT                    0x803E
   8.644 +#define GL_LUMINANCE4_EXT                 0x803F
   8.645 +#define GL_LUMINANCE8_EXT                 0x8040
   8.646 +#define GL_LUMINANCE12_EXT                0x8041
   8.647 +#define GL_LUMINANCE16_EXT                0x8042
   8.648 +#define GL_LUMINANCE4_ALPHA4_EXT          0x8043
   8.649 +#define GL_LUMINANCE6_ALPHA2_EXT          0x8044
   8.650 +#define GL_LUMINANCE8_ALPHA8_EXT          0x8045
   8.651 +#define GL_LUMINANCE12_ALPHA4_EXT         0x8046
   8.652 +#define GL_LUMINANCE12_ALPHA12_EXT        0x8047
   8.653 +#define GL_LUMINANCE16_ALPHA16_EXT        0x8048
   8.654 +#define GL_INTENSITY_EXT                  0x8049
   8.655 +#define GL_INTENSITY4_EXT                 0x804A
   8.656 +#define GL_INTENSITY8_EXT                 0x804B
   8.657 +#define GL_INTENSITY12_EXT                0x804C
   8.658 +#define GL_INTENSITY16_EXT                0x804D
   8.659 +#define GL_RGB2_EXT                       0x804E
   8.660 +#define GL_RGB4_EXT                       0x804F
   8.661 +#define GL_RGB5_EXT                       0x8050
   8.662 +#define GL_RGB8_EXT                       0x8051
   8.663 +#define GL_RGB10_EXT                      0x8052
   8.664 +#define GL_RGB12_EXT                      0x8053
   8.665 +#define GL_RGB16_EXT                      0x8054
   8.666 +#define GL_RGBA2_EXT                      0x8055
   8.667 +#define GL_RGBA4_EXT                      0x8056
   8.668 +#define GL_RGB5_A1_EXT                    0x8057
   8.669 +#define GL_RGBA8_EXT                      0x8058
   8.670 +#define GL_RGB10_A2_EXT                   0x8059
   8.671 +#define GL_RGBA12_EXT                     0x805A
   8.672 +#define GL_RGBA16_EXT                     0x805B
   8.673 +#define GL_TEXTURE_RED_SIZE_EXT           0x805C
   8.674 +#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D
   8.675 +#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E
   8.676 +#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F
   8.677 +#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060
   8.678 +#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061
   8.679 +#define GL_REPLACE_EXT                    0x8062
   8.680 +#define GL_PROXY_TEXTURE_1D_EXT           0x8063
   8.681 +#define GL_PROXY_TEXTURE_2D_EXT           0x8064
   8.682 +#define GL_TEXTURE_TOO_LARGE_EXT          0x8065
   8.683 +#endif
   8.684 +
   8.685 +#ifndef GL_EXT_texture3D
   8.686 +#define GL_PACK_SKIP_IMAGES_EXT           0x806B
   8.687 +#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
   8.688 +#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
   8.689 +#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
   8.690 +#define GL_TEXTURE_3D_EXT                 0x806F
   8.691 +#define GL_PROXY_TEXTURE_3D_EXT           0x8070
   8.692 +#define GL_TEXTURE_DEPTH_EXT              0x8071
   8.693 +#define GL_TEXTURE_WRAP_R_EXT             0x8072
   8.694 +#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
   8.695 +#endif
   8.696 +
   8.697 +#ifndef GL_SGIS_texture_filter4
   8.698 +#define GL_FILTER4_SGIS                   0x8146
   8.699 +#define GL_TEXTURE_FILTER4_SIZE_SGIS      0x8147
   8.700 +#endif
   8.701 +
   8.702 +#ifndef GL_EXT_subtexture
   8.703 +#endif
   8.704 +
   8.705 +#ifndef GL_EXT_copy_texture
   8.706 +#endif
   8.707 +
   8.708 +#ifndef GL_EXT_histogram
   8.709 +#define GL_HISTOGRAM_EXT                  0x8024
   8.710 +#define GL_PROXY_HISTOGRAM_EXT            0x8025
   8.711 +#define GL_HISTOGRAM_WIDTH_EXT            0x8026
   8.712 +#define GL_HISTOGRAM_FORMAT_EXT           0x8027
   8.713 +#define GL_HISTOGRAM_RED_SIZE_EXT         0x8028
   8.714 +#define GL_HISTOGRAM_GREEN_SIZE_EXT       0x8029
   8.715 +#define GL_HISTOGRAM_BLUE_SIZE_EXT        0x802A
   8.716 +#define GL_HISTOGRAM_ALPHA_SIZE_EXT       0x802B
   8.717 +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT   0x802C
   8.718 +#define GL_HISTOGRAM_SINK_EXT             0x802D
   8.719 +#define GL_MINMAX_EXT                     0x802E
   8.720 +#define GL_MINMAX_FORMAT_EXT              0x802F
   8.721 +#define GL_MINMAX_SINK_EXT                0x8030
   8.722 +#define GL_TABLE_TOO_LARGE_EXT            0x8031
   8.723 +#endif
   8.724 +
   8.725 +#ifndef GL_EXT_convolution
   8.726 +#define GL_CONVOLUTION_1D_EXT             0x8010
   8.727 +#define GL_CONVOLUTION_2D_EXT             0x8011
   8.728 +#define GL_SEPARABLE_2D_EXT               0x8012
   8.729 +#define GL_CONVOLUTION_BORDER_MODE_EXT    0x8013
   8.730 +#define GL_CONVOLUTION_FILTER_SCALE_EXT   0x8014
   8.731 +#define GL_CONVOLUTION_FILTER_BIAS_EXT    0x8015
   8.732 +#define GL_REDUCE_EXT                     0x8016
   8.733 +#define GL_CONVOLUTION_FORMAT_EXT         0x8017
   8.734 +#define GL_CONVOLUTION_WIDTH_EXT          0x8018
   8.735 +#define GL_CONVOLUTION_HEIGHT_EXT         0x8019
   8.736 +#define GL_MAX_CONVOLUTION_WIDTH_EXT      0x801A
   8.737 +#define GL_MAX_CONVOLUTION_HEIGHT_EXT     0x801B
   8.738 +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
   8.739 +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
   8.740 +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
   8.741 +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
   8.742 +#define GL_POST_CONVOLUTION_RED_BIAS_EXT  0x8020
   8.743 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
   8.744 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
   8.745 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
   8.746 +#endif
   8.747 +
   8.748 +#ifndef GL_SGI_color_matrix
   8.749 +#define GL_COLOR_MATRIX_SGI               0x80B1
   8.750 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI   0x80B2
   8.751 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
   8.752 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
   8.753 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
   8.754 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
   8.755 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
   8.756 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
   8.757 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
   8.758 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
   8.759 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
   8.760 +#endif
   8.761 +
   8.762 +#ifndef GL_SGI_color_table
   8.763 +#define GL_COLOR_TABLE_SGI                0x80D0
   8.764 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
   8.765 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
   8.766 +#define GL_PROXY_COLOR_TABLE_SGI          0x80D3
   8.767 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
   8.768 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
   8.769 +#define GL_COLOR_TABLE_SCALE_SGI          0x80D6
   8.770 +#define GL_COLOR_TABLE_BIAS_SGI           0x80D7
   8.771 +#define GL_COLOR_TABLE_FORMAT_SGI         0x80D8
   8.772 +#define GL_COLOR_TABLE_WIDTH_SGI          0x80D9
   8.773 +#define GL_COLOR_TABLE_RED_SIZE_SGI       0x80DA
   8.774 +#define GL_COLOR_TABLE_GREEN_SIZE_SGI     0x80DB
   8.775 +#define GL_COLOR_TABLE_BLUE_SIZE_SGI      0x80DC
   8.776 +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI     0x80DD
   8.777 +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
   8.778 +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
   8.779 +#endif
   8.780 +
   8.781 +#ifndef GL_SGIS_pixel_texture
   8.782 +#define GL_PIXEL_TEXTURE_SGIS             0x8353
   8.783 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
   8.784 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
   8.785 +#define GL_PIXEL_GROUP_COLOR_SGIS         0x8356
   8.786 +#endif
   8.787 +
   8.788 +#ifndef GL_SGIX_pixel_texture
   8.789 +#define GL_PIXEL_TEX_GEN_SGIX             0x8139
   8.790 +#define GL_PIXEL_TEX_GEN_MODE_SGIX        0x832B
   8.791 +#endif
   8.792 +
   8.793 +#ifndef GL_SGIS_texture4D
   8.794 +#define GL_PACK_SKIP_VOLUMES_SGIS         0x8130
   8.795 +#define GL_PACK_IMAGE_DEPTH_SGIS          0x8131
   8.796 +#define GL_UNPACK_SKIP_VOLUMES_SGIS       0x8132
   8.797 +#define GL_UNPACK_IMAGE_DEPTH_SGIS        0x8133
   8.798 +#define GL_TEXTURE_4D_SGIS                0x8134
   8.799 +#define GL_PROXY_TEXTURE_4D_SGIS          0x8135
   8.800 +#define GL_TEXTURE_4DSIZE_SGIS            0x8136
   8.801 +#define GL_TEXTURE_WRAP_Q_SGIS            0x8137
   8.802 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS       0x8138
   8.803 +#define GL_TEXTURE_4D_BINDING_SGIS        0x814F
   8.804 +#endif
   8.805 +
   8.806 +#ifndef GL_SGI_texture_color_table
   8.807 +#define GL_TEXTURE_COLOR_TABLE_SGI        0x80BC
   8.808 +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI  0x80BD
   8.809 +#endif
   8.810 +
   8.811 +#ifndef GL_EXT_cmyka
   8.812 +#define GL_CMYK_EXT                       0x800C
   8.813 +#define GL_CMYKA_EXT                      0x800D
   8.814 +#define GL_PACK_CMYK_HINT_EXT             0x800E
   8.815 +#define GL_UNPACK_CMYK_HINT_EXT           0x800F
   8.816 +#endif
   8.817 +
   8.818 +#ifndef GL_EXT_texture_object
   8.819 +#define GL_TEXTURE_PRIORITY_EXT           0x8066
   8.820 +#define GL_TEXTURE_RESIDENT_EXT           0x8067
   8.821 +#define GL_TEXTURE_1D_BINDING_EXT         0x8068
   8.822 +#define GL_TEXTURE_2D_BINDING_EXT         0x8069
   8.823 +#define GL_TEXTURE_3D_BINDING_EXT         0x806A
   8.824 +#endif
   8.825 +
   8.826 +#ifndef GL_SGIS_detail_texture
   8.827 +#define GL_DETAIL_TEXTURE_2D_SGIS         0x8095
   8.828 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
   8.829 +#define GL_LINEAR_DETAIL_SGIS             0x8097
   8.830 +#define GL_LINEAR_DETAIL_ALPHA_SGIS       0x8098
   8.831 +#define GL_LINEAR_DETAIL_COLOR_SGIS       0x8099
   8.832 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS      0x809A
   8.833 +#define GL_DETAIL_TEXTURE_MODE_SGIS       0x809B
   8.834 +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
   8.835 +#endif
   8.836 +
   8.837 +#ifndef GL_SGIS_sharpen_texture
   8.838 +#define GL_LINEAR_SHARPEN_SGIS            0x80AD
   8.839 +#define GL_LINEAR_SHARPEN_ALPHA_SGIS      0x80AE
   8.840 +#define GL_LINEAR_SHARPEN_COLOR_SGIS      0x80AF
   8.841 +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
   8.842 +#endif
   8.843 +
   8.844 +#ifndef GL_EXT_packed_pixels
   8.845 +#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032
   8.846 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033
   8.847 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034
   8.848 +#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035
   8.849 +#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036
   8.850 +#endif
   8.851 +
   8.852 +#ifndef GL_SGIS_texture_lod
   8.853 +#define GL_TEXTURE_MIN_LOD_SGIS           0x813A
   8.854 +#define GL_TEXTURE_MAX_LOD_SGIS           0x813B
   8.855 +#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C
   8.856 +#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D
   8.857 +#endif
   8.858 +
   8.859 +#ifndef GL_SGIS_multisample
   8.860 +#define GL_MULTISAMPLE_SGIS               0x809D
   8.861 +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS      0x809E
   8.862 +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS       0x809F
   8.863 +#define GL_SAMPLE_MASK_SGIS               0x80A0
   8.864 +#define GL_1PASS_SGIS                     0x80A1
   8.865 +#define GL_2PASS_0_SGIS                   0x80A2
   8.866 +#define GL_2PASS_1_SGIS                   0x80A3
   8.867 +#define GL_4PASS_0_SGIS                   0x80A4
   8.868 +#define GL_4PASS_1_SGIS                   0x80A5
   8.869 +#define GL_4PASS_2_SGIS                   0x80A6
   8.870 +#define GL_4PASS_3_SGIS                   0x80A7
   8.871 +#define GL_SAMPLE_BUFFERS_SGIS            0x80A8
   8.872 +#define GL_SAMPLES_SGIS                   0x80A9
   8.873 +#define GL_SAMPLE_MASK_VALUE_SGIS         0x80AA
   8.874 +#define GL_SAMPLE_MASK_INVERT_SGIS        0x80AB
   8.875 +#define GL_SAMPLE_PATTERN_SGIS            0x80AC
   8.876 +#endif
   8.877 +
   8.878 +#ifndef GL_EXT_rescale_normal
   8.879 +#define GL_RESCALE_NORMAL_EXT             0x803A
   8.880 +#endif
   8.881 +
   8.882 +#ifndef GL_EXT_vertex_array
   8.883 +#define GL_VERTEX_ARRAY_EXT               0x8074
   8.884 +#define GL_NORMAL_ARRAY_EXT               0x8075
   8.885 +#define GL_COLOR_ARRAY_EXT                0x8076
   8.886 +#define GL_INDEX_ARRAY_EXT                0x8077
   8.887 +#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
   8.888 +#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
   8.889 +#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
   8.890 +#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
   8.891 +#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
   8.892 +#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
   8.893 +#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
   8.894 +#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
   8.895 +#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
   8.896 +#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
   8.897 +#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
   8.898 +#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
   8.899 +#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
   8.900 +#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
   8.901 +#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
   8.902 +#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
   8.903 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
   8.904 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
   8.905 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
   8.906 +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
   8.907 +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
   8.908 +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
   8.909 +#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
   8.910 +#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
   8.911 +#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
   8.912 +#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
   8.913 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
   8.914 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
   8.915 +#endif
   8.916 +
   8.917 +#ifndef GL_EXT_misc_attribute
   8.918 +#endif
   8.919 +
   8.920 +#ifndef GL_SGIS_generate_mipmap
   8.921 +#define GL_GENERATE_MIPMAP_SGIS           0x8191
   8.922 +#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192
   8.923 +#endif
   8.924 +
   8.925 +#ifndef GL_SGIX_clipmap
   8.926 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX     0x8170
   8.927 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX    0x8171
   8.928 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX     0x8172
   8.929 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX    0x8173
   8.930 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
   8.931 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
   8.932 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX     0x8176
   8.933 +#define GL_MAX_CLIPMAP_DEPTH_SGIX         0x8177
   8.934 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
   8.935 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX   0x844D
   8.936 +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX    0x844E
   8.937 +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX    0x844F
   8.938 +#endif
   8.939 +
   8.940 +#ifndef GL_SGIX_shadow
   8.941 +#define GL_TEXTURE_COMPARE_SGIX           0x819A
   8.942 +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B
   8.943 +#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C
   8.944 +#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D
   8.945 +#endif
   8.946 +
   8.947 +#ifndef GL_SGIS_texture_edge_clamp
   8.948 +#define GL_CLAMP_TO_EDGE_SGIS             0x812F
   8.949 +#endif
   8.950 +
   8.951 +#ifndef GL_EXT_blend_minmax
   8.952 +#define GL_FUNC_ADD_EXT                   0x8006
   8.953 +#define GL_MIN_EXT                        0x8007
   8.954 +#define GL_MAX_EXT                        0x8008
   8.955 +#define GL_BLEND_EQUATION_EXT             0x8009
   8.956 +#endif
   8.957 +
   8.958 +#ifndef GL_EXT_blend_subtract
   8.959 +#define GL_FUNC_SUBTRACT_EXT              0x800A
   8.960 +#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
   8.961 +#endif
   8.962 +
   8.963 +#ifndef GL_EXT_blend_logic_op
   8.964 +#endif
   8.965 +
   8.966 +#ifndef GL_SGIX_interlace
   8.967 +#define GL_INTERLACE_SGIX                 0x8094
   8.968 +#endif
   8.969 +
   8.970 +#ifndef GL_SGIX_pixel_tiles
   8.971 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
   8.972 +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
   8.973 +#define GL_PIXEL_TILE_WIDTH_SGIX          0x8140
   8.974 +#define GL_PIXEL_TILE_HEIGHT_SGIX         0x8141
   8.975 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX     0x8142
   8.976 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX    0x8143
   8.977 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX     0x8144
   8.978 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX     0x8145
   8.979 +#endif
   8.980 +
   8.981 +#ifndef GL_SGIS_texture_select
   8.982 +#define GL_DUAL_ALPHA4_SGIS               0x8110
   8.983 +#define GL_DUAL_ALPHA8_SGIS               0x8111
   8.984 +#define GL_DUAL_ALPHA12_SGIS              0x8112
   8.985 +#define GL_DUAL_ALPHA16_SGIS              0x8113
   8.986 +#define GL_DUAL_LUMINANCE4_SGIS           0x8114
   8.987 +#define GL_DUAL_LUMINANCE8_SGIS           0x8115
   8.988 +#define GL_DUAL_LUMINANCE12_SGIS          0x8116
   8.989 +#define GL_DUAL_LUMINANCE16_SGIS          0x8117
   8.990 +#define GL_DUAL_INTENSITY4_SGIS           0x8118
   8.991 +#define GL_DUAL_INTENSITY8_SGIS           0x8119
   8.992 +#define GL_DUAL_INTENSITY12_SGIS          0x811A
   8.993 +#define GL_DUAL_INTENSITY16_SGIS          0x811B
   8.994 +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS     0x811C
   8.995 +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS     0x811D
   8.996 +#define GL_QUAD_ALPHA4_SGIS               0x811E
   8.997 +#define GL_QUAD_ALPHA8_SGIS               0x811F
   8.998 +#define GL_QUAD_LUMINANCE4_SGIS           0x8120
   8.999 +#define GL_QUAD_LUMINANCE8_SGIS           0x8121
  8.1000 +#define GL_QUAD_INTENSITY4_SGIS           0x8122
  8.1001 +#define GL_QUAD_INTENSITY8_SGIS           0x8123
  8.1002 +#define GL_DUAL_TEXTURE_SELECT_SGIS       0x8124
  8.1003 +#define GL_QUAD_TEXTURE_SELECT_SGIS       0x8125
  8.1004 +#endif
  8.1005 +
  8.1006 +#ifndef GL_SGIX_sprite
  8.1007 +#define GL_SPRITE_SGIX                    0x8148
  8.1008 +#define GL_SPRITE_MODE_SGIX               0x8149
  8.1009 +#define GL_SPRITE_AXIS_SGIX               0x814A
  8.1010 +#define GL_SPRITE_TRANSLATION_SGIX        0x814B
  8.1011 +#define GL_SPRITE_AXIAL_SGIX              0x814C
  8.1012 +#define GL_SPRITE_OBJECT_ALIGNED_SGIX     0x814D
  8.1013 +#define GL_SPRITE_EYE_ALIGNED_SGIX        0x814E
  8.1014 +#endif
  8.1015 +
  8.1016 +#ifndef GL_SGIX_texture_multi_buffer
  8.1017 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
  8.1018 +#endif
  8.1019 +
  8.1020 +#ifndef GL_EXT_point_parameters
  8.1021 +#define GL_POINT_SIZE_MIN_EXT             0x8126
  8.1022 +#define GL_POINT_SIZE_MAX_EXT             0x8127
  8.1023 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
  8.1024 +#define GL_DISTANCE_ATTENUATION_EXT       0x8129
  8.1025 +#endif
  8.1026 +
  8.1027 +#ifndef GL_SGIS_point_parameters
  8.1028 +#define GL_POINT_SIZE_MIN_SGIS            0x8126
  8.1029 +#define GL_POINT_SIZE_MAX_SGIS            0x8127
  8.1030 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
  8.1031 +#define GL_DISTANCE_ATTENUATION_SGIS      0x8129
  8.1032 +#endif
  8.1033 +
  8.1034 +#ifndef GL_SGIX_instruments
  8.1035 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
  8.1036 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX   0x8181
  8.1037 +#endif
  8.1038 +
  8.1039 +#ifndef GL_SGIX_texture_scale_bias
  8.1040 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX  0x8179
  8.1041 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
  8.1042 +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
  8.1043 +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
  8.1044 +#endif
  8.1045 +
  8.1046 +#ifndef GL_SGIX_framezoom
  8.1047 +#define GL_FRAMEZOOM_SGIX                 0x818B
  8.1048 +#define GL_FRAMEZOOM_FACTOR_SGIX          0x818C
  8.1049 +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX      0x818D
  8.1050 +#endif
  8.1051 +
  8.1052 +#ifndef GL_SGIX_tag_sample_buffer
  8.1053 +#endif
  8.1054 +
  8.1055 +#ifndef GL_FfdMaskSGIX
  8.1056 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX   0x00000001
  8.1057 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX  0x00000002
  8.1058 +#endif
  8.1059 +
  8.1060 +#ifndef GL_SGIX_polynomial_ffd
  8.1061 +#define GL_GEOMETRY_DEFORMATION_SGIX      0x8194
  8.1062 +#define GL_TEXTURE_DEFORMATION_SGIX       0x8195
  8.1063 +#define GL_DEFORMATIONS_MASK_SGIX         0x8196
  8.1064 +#define GL_MAX_DEFORMATION_ORDER_SGIX     0x8197
  8.1065 +#endif
  8.1066 +
  8.1067 +#ifndef GL_SGIX_reference_plane
  8.1068 +#define GL_REFERENCE_PLANE_SGIX           0x817D
  8.1069 +#define GL_REFERENCE_PLANE_EQUATION_SGIX  0x817E
  8.1070 +#endif
  8.1071 +
  8.1072 +#ifndef GL_SGIX_flush_raster
  8.1073 +#endif
  8.1074 +
  8.1075 +#ifndef GL_SGIX_depth_texture
  8.1076 +#define GL_DEPTH_COMPONENT16_SGIX         0x81A5
  8.1077 +#define GL_DEPTH_COMPONENT24_SGIX         0x81A6
  8.1078 +#define GL_DEPTH_COMPONENT32_SGIX         0x81A7
  8.1079 +#endif
  8.1080 +
  8.1081 +#ifndef GL_SGIS_fog_function
  8.1082 +#define GL_FOG_FUNC_SGIS                  0x812A
  8.1083 +#define GL_FOG_FUNC_POINTS_SGIS           0x812B
  8.1084 +#define GL_MAX_FOG_FUNC_POINTS_SGIS       0x812C
  8.1085 +#endif
  8.1086 +
  8.1087 +#ifndef GL_SGIX_fog_offset
  8.1088 +#define GL_FOG_OFFSET_SGIX                0x8198
  8.1089 +#define GL_FOG_OFFSET_VALUE_SGIX          0x8199
  8.1090 +#endif
  8.1091 +
  8.1092 +#ifndef GL_HP_image_transform
  8.1093 +#define GL_IMAGE_SCALE_X_HP               0x8155
  8.1094 +#define GL_IMAGE_SCALE_Y_HP               0x8156
  8.1095 +#define GL_IMAGE_TRANSLATE_X_HP           0x8157
  8.1096 +#define GL_IMAGE_TRANSLATE_Y_HP           0x8158
  8.1097 +#define GL_IMAGE_ROTATE_ANGLE_HP          0x8159
  8.1098 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP       0x815A
  8.1099 +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP       0x815B
  8.1100 +#define GL_IMAGE_MAG_FILTER_HP            0x815C
  8.1101 +#define GL_IMAGE_MIN_FILTER_HP            0x815D
  8.1102 +#define GL_IMAGE_CUBIC_WEIGHT_HP          0x815E
  8.1103 +#define GL_CUBIC_HP                       0x815F
  8.1104 +#define GL_AVERAGE_HP                     0x8160
  8.1105 +#define GL_IMAGE_TRANSFORM_2D_HP          0x8161
  8.1106 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
  8.1107 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
  8.1108 +#endif
  8.1109 +
  8.1110 +#ifndef GL_HP_convolution_border_modes
  8.1111 +#define GL_IGNORE_BORDER_HP               0x8150
  8.1112 +#define GL_CONSTANT_BORDER_HP             0x8151
  8.1113 +#define GL_REPLICATE_BORDER_HP            0x8153
  8.1114 +#define GL_CONVOLUTION_BORDER_COLOR_HP    0x8154
  8.1115 +#endif
  8.1116 +
  8.1117 +#ifndef GL_INGR_palette_buffer
  8.1118 +#endif
  8.1119 +
  8.1120 +#ifndef GL_SGIX_texture_add_env
  8.1121 +#define GL_TEXTURE_ENV_BIAS_SGIX          0x80BE
  8.1122 +#endif
  8.1123 +
  8.1124 +#ifndef GL_EXT_color_subtable
  8.1125 +#endif
  8.1126 +
  8.1127 +#ifndef GL_PGI_vertex_hints
  8.1128 +#define GL_VERTEX_DATA_HINT_PGI           0x1A22A
  8.1129 +#define GL_VERTEX_CONSISTENT_HINT_PGI     0x1A22B
  8.1130 +#define GL_MATERIAL_SIDE_HINT_PGI         0x1A22C
  8.1131 +#define GL_MAX_VERTEX_HINT_PGI            0x1A22D
  8.1132 +#define GL_COLOR3_BIT_PGI                 0x00010000
  8.1133 +#define GL_COLOR4_BIT_PGI                 0x00020000
  8.1134 +#define GL_EDGEFLAG_BIT_PGI               0x00040000
  8.1135 +#define GL_INDEX_BIT_PGI                  0x00080000
  8.1136 +#define GL_MAT_AMBIENT_BIT_PGI            0x00100000
  8.1137 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
  8.1138 +#define GL_MAT_DIFFUSE_BIT_PGI            0x00400000
  8.1139 +#define GL_MAT_EMISSION_BIT_PGI           0x00800000
  8.1140 +#define GL_MAT_COLOR_INDEXES_BIT_PGI      0x01000000
  8.1141 +#define GL_MAT_SHININESS_BIT_PGI          0x02000000
  8.1142 +#define GL_MAT_SPECULAR_BIT_PGI           0x04000000
  8.1143 +#define GL_NORMAL_BIT_PGI                 0x08000000
  8.1144 +#define GL_TEXCOORD1_BIT_PGI              0x10000000
  8.1145 +#define GL_TEXCOORD2_BIT_PGI              0x20000000
  8.1146 +#define GL_TEXCOORD3_BIT_PGI              0x40000000
  8.1147 +#define GL_TEXCOORD4_BIT_PGI              0x80000000
  8.1148 +#define GL_VERTEX23_BIT_PGI               0x00000004
  8.1149 +#define GL_VERTEX4_BIT_PGI                0x00000008
  8.1150 +#endif
  8.1151 +
  8.1152 +#ifndef GL_PGI_misc_hints
  8.1153 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI   0x1A1F8
  8.1154 +#define GL_CONSERVE_MEMORY_HINT_PGI       0x1A1FD
  8.1155 +#define GL_RECLAIM_MEMORY_HINT_PGI        0x1A1FE
  8.1156 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI     0x1A202
  8.1157 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
  8.1158 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI   0x1A204
  8.1159 +#define GL_ALWAYS_FAST_HINT_PGI           0x1A20C
  8.1160 +#define GL_ALWAYS_SOFT_HINT_PGI           0x1A20D
  8.1161 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI        0x1A20E
  8.1162 +#define GL_ALLOW_DRAW_WIN_HINT_PGI        0x1A20F
  8.1163 +#define GL_ALLOW_DRAW_FRG_HINT_PGI        0x1A210
  8.1164 +#define GL_ALLOW_DRAW_MEM_HINT_PGI        0x1A211
  8.1165 +#define GL_STRICT_DEPTHFUNC_HINT_PGI      0x1A216
  8.1166 +#define GL_STRICT_LIGHTING_HINT_PGI       0x1A217
  8.1167 +#define GL_STRICT_SCISSOR_HINT_PGI        0x1A218
  8.1168 +#define GL_FULL_STIPPLE_HINT_PGI          0x1A219
  8.1169 +#define GL_CLIP_NEAR_HINT_PGI             0x1A220
  8.1170 +#define GL_CLIP_FAR_HINT_PGI              0x1A221
  8.1171 +#define GL_WIDE_LINE_HINT_PGI             0x1A222
  8.1172 +#define GL_BACK_NORMALS_HINT_PGI          0x1A223
  8.1173 +#endif
  8.1174 +
  8.1175 +#ifndef GL_EXT_paletted_texture
  8.1176 +#define GL_COLOR_INDEX1_EXT               0x80E2
  8.1177 +#define GL_COLOR_INDEX2_EXT               0x80E3
  8.1178 +#define GL_COLOR_INDEX4_EXT               0x80E4
  8.1179 +#define GL_COLOR_INDEX8_EXT               0x80E5
  8.1180 +#define GL_COLOR_INDEX12_EXT              0x80E6
  8.1181 +#define GL_COLOR_INDEX16_EXT              0x80E7
  8.1182 +#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
  8.1183 +#endif
  8.1184 +
  8.1185 +#ifndef GL_EXT_clip_volume_hint
  8.1186 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0
  8.1187 +#endif
  8.1188 +
  8.1189 +#ifndef GL_SGIX_list_priority
  8.1190 +#define GL_LIST_PRIORITY_SGIX             0x8182
  8.1191 +#endif
  8.1192 +
  8.1193 +#ifndef GL_SGIX_ir_instrument1
  8.1194 +#define GL_IR_INSTRUMENT1_SGIX            0x817F
  8.1195 +#endif
  8.1196 +
  8.1197 +#ifndef GL_SGIX_calligraphic_fragment
  8.1198 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX     0x8183
  8.1199 +#endif
  8.1200 +
  8.1201 +#ifndef GL_SGIX_texture_lod_bias
  8.1202 +#define GL_TEXTURE_LOD_BIAS_S_SGIX        0x818E
  8.1203 +#define GL_TEXTURE_LOD_BIAS_T_SGIX        0x818F
  8.1204 +#define GL_TEXTURE_LOD_BIAS_R_SGIX        0x8190
  8.1205 +#endif
  8.1206 +
  8.1207 +#ifndef GL_SGIX_shadow_ambient
  8.1208 +#define GL_SHADOW_AMBIENT_SGIX            0x80BF
  8.1209 +#endif
  8.1210 +
  8.1211 +#ifndef GL_EXT_index_texture
  8.1212 +#endif
  8.1213 +
  8.1214 +#ifndef GL_EXT_index_material
  8.1215 +#define GL_INDEX_MATERIAL_EXT             0x81B8
  8.1216 +#define GL_INDEX_MATERIAL_PARAMETER_EXT   0x81B9
  8.1217 +#define GL_INDEX_MATERIAL_FACE_EXT        0x81BA
  8.1218 +#endif
  8.1219 +
  8.1220 +#ifndef GL_EXT_index_func
  8.1221 +#define GL_INDEX_TEST_EXT                 0x81B5
  8.1222 +#define GL_INDEX_TEST_FUNC_EXT            0x81B6
  8.1223 +#define GL_INDEX_TEST_REF_EXT             0x81B7
  8.1224 +#endif
  8.1225 +
  8.1226 +#ifndef GL_EXT_index_array_formats
  8.1227 +#define GL_IUI_V2F_EXT                    0x81AD
  8.1228 +#define GL_IUI_V3F_EXT                    0x81AE
  8.1229 +#define GL_IUI_N3F_V2F_EXT                0x81AF
  8.1230 +#define GL_IUI_N3F_V3F_EXT                0x81B0
  8.1231 +#define GL_T2F_IUI_V2F_EXT                0x81B1
  8.1232 +#define GL_T2F_IUI_V3F_EXT                0x81B2
  8.1233 +#define GL_T2F_IUI_N3F_V2F_EXT            0x81B3
  8.1234 +#define GL_T2F_IUI_N3F_V3F_EXT            0x81B4
  8.1235 +#endif
  8.1236 +
  8.1237 +#ifndef GL_EXT_compiled_vertex_array
  8.1238 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8
  8.1239 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9
  8.1240 +#endif
  8.1241 +
  8.1242 +#ifndef GL_EXT_cull_vertex
  8.1243 +#define GL_CULL_VERTEX_EXT                0x81AA
  8.1244 +#define GL_CULL_VERTEX_EYE_POSITION_EXT   0x81AB
  8.1245 +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
  8.1246 +#endif
  8.1247 +
  8.1248 +#ifndef GL_SGIX_ycrcb
  8.1249 +#define GL_YCRCB_422_SGIX                 0x81BB
  8.1250 +#define GL_YCRCB_444_SGIX                 0x81BC
  8.1251 +#endif
  8.1252 +
  8.1253 +#ifndef GL_SGIX_fragment_lighting
  8.1254 +#define GL_FRAGMENT_LIGHTING_SGIX         0x8400
  8.1255 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX   0x8401
  8.1256 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
  8.1257 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
  8.1258 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX       0x8404
  8.1259 +#define GL_MAX_ACTIVE_LIGHTS_SGIX         0x8405
  8.1260 +#define GL_CURRENT_RASTER_NORMAL_SGIX     0x8406
  8.1261 +#define GL_LIGHT_ENV_MODE_SGIX            0x8407
  8.1262 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
  8.1263 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
  8.1264 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
  8.1265 +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
  8.1266 +#define GL_FRAGMENT_LIGHT0_SGIX           0x840C
  8.1267 +#define GL_FRAGMENT_LIGHT1_SGIX           0x840D
  8.1268 +#define GL_FRAGMENT_LIGHT2_SGIX           0x840E
  8.1269 +#define GL_FRAGMENT_LIGHT3_SGIX           0x840F
  8.1270 +#define GL_FRAGMENT_LIGHT4_SGIX           0x8410
  8.1271 +#define GL_FRAGMENT_LIGHT5_SGIX           0x8411
  8.1272 +#define GL_FRAGMENT_LIGHT6_SGIX           0x8412
  8.1273 +#define GL_FRAGMENT_LIGHT7_SGIX           0x8413
  8.1274 +#endif
  8.1275 +
  8.1276 +#ifndef GL_IBM_rasterpos_clip
  8.1277 +#define GL_RASTER_POSITION_UNCLIPPED_IBM  0x19262
  8.1278 +#endif
  8.1279 +
  8.1280 +#ifndef GL_HP_texture_lighting
  8.1281 +#define GL_TEXTURE_LIGHTING_MODE_HP       0x8167
  8.1282 +#define GL_TEXTURE_POST_SPECULAR_HP       0x8168
  8.1283 +#define GL_TEXTURE_PRE_SPECULAR_HP        0x8169
  8.1284 +#endif
  8.1285 +
  8.1286 +#ifndef GL_EXT_draw_range_elements
  8.1287 +#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8
  8.1288 +#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9
  8.1289 +#endif
  8.1290 +
  8.1291 +#ifndef GL_WIN_phong_shading
  8.1292 +#define GL_PHONG_WIN                      0x80EA
  8.1293 +#define GL_PHONG_HINT_WIN                 0x80EB
  8.1294 +#endif
  8.1295 +
  8.1296 +#ifndef GL_WIN_specular_fog
  8.1297 +#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC
  8.1298 +#endif
  8.1299 +
  8.1300 +#ifndef GL_EXT_light_texture
  8.1301 +#define GL_FRAGMENT_MATERIAL_EXT          0x8349
  8.1302 +#define GL_FRAGMENT_NORMAL_EXT            0x834A
  8.1303 +#define GL_FRAGMENT_COLOR_EXT             0x834C
  8.1304 +#define GL_ATTENUATION_EXT                0x834D
  8.1305 +#define GL_SHADOW_ATTENUATION_EXT         0x834E
  8.1306 +#define GL_TEXTURE_APPLICATION_MODE_EXT   0x834F
  8.1307 +#define GL_TEXTURE_LIGHT_EXT              0x8350
  8.1308 +#define GL_TEXTURE_MATERIAL_FACE_EXT      0x8351
  8.1309 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
  8.1310 +/* reuse GL_FRAGMENT_DEPTH_EXT */
  8.1311 +#endif
  8.1312 +
  8.1313 +#ifndef GL_SGIX_blend_alpha_minmax
  8.1314 +#define GL_ALPHA_MIN_SGIX                 0x8320
  8.1315 +#define GL_ALPHA_MAX_SGIX                 0x8321
  8.1316 +#endif
  8.1317 +
  8.1318 +#ifndef GL_SGIX_impact_pixel_texture
  8.1319 +#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX   0x8184
  8.1320 +#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX     0x8185
  8.1321 +#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX     0x8186
  8.1322 +#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
  8.1323 +#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
  8.1324 +#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX    0x8189
  8.1325 +#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX    0x818A
  8.1326 +#endif
  8.1327 +
  8.1328 +#ifndef GL_EXT_bgra
  8.1329 +#define GL_BGR_EXT                        0x80E0
  8.1330 +#define GL_BGRA_EXT                       0x80E1
  8.1331 +#endif
  8.1332 +
  8.1333 +#ifndef GL_SGIX_async
  8.1334 +#define GL_ASYNC_MARKER_SGIX              0x8329
  8.1335 +#endif
  8.1336 +
  8.1337 +#ifndef GL_SGIX_async_pixel
  8.1338 +#define GL_ASYNC_TEX_IMAGE_SGIX           0x835C
  8.1339 +#define GL_ASYNC_DRAW_PIXELS_SGIX         0x835D
  8.1340 +#define GL_ASYNC_READ_PIXELS_SGIX         0x835E
  8.1341 +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX       0x835F
  8.1342 +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX     0x8360
  8.1343 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX     0x8361
  8.1344 +#endif
  8.1345 +
  8.1346 +#ifndef GL_SGIX_async_histogram
  8.1347 +#define GL_ASYNC_HISTOGRAM_SGIX           0x832C
  8.1348 +#define GL_MAX_ASYNC_HISTOGRAM_SGIX       0x832D
  8.1349 +#endif
  8.1350 +
  8.1351 +#ifndef GL_INTEL_texture_scissor
  8.1352 +#endif
  8.1353 +
  8.1354 +#ifndef GL_INTEL_parallel_arrays
  8.1355 +#define GL_PARALLEL_ARRAYS_INTEL          0x83F4
  8.1356 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
  8.1357 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
  8.1358 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
  8.1359 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
  8.1360 +#endif
  8.1361 +
  8.1362 +#ifndef GL_HP_occlusion_test
  8.1363 +#define GL_OCCLUSION_TEST_HP              0x8165
  8.1364 +#define GL_OCCLUSION_TEST_RESULT_HP       0x8166
  8.1365 +#endif
  8.1366 +
  8.1367 +#ifndef GL_EXT_pixel_transform
  8.1368 +#define GL_PIXEL_TRANSFORM_2D_EXT         0x8330
  8.1369 +#define GL_PIXEL_MAG_FILTER_EXT           0x8331
  8.1370 +#define GL_PIXEL_MIN_FILTER_EXT           0x8332
  8.1371 +#define GL_PIXEL_CUBIC_WEIGHT_EXT         0x8333
  8.1372 +#define GL_CUBIC_EXT                      0x8334
  8.1373 +#define GL_AVERAGE_EXT                    0x8335
  8.1374 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
  8.1375 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
  8.1376 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT  0x8338
  8.1377 +#endif
  8.1378 +
  8.1379 +#ifndef GL_EXT_pixel_transform_color_table
  8.1380 +#endif
  8.1381 +
  8.1382 +#ifndef GL_EXT_shared_texture_palette
  8.1383 +#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB
  8.1384 +#endif
  8.1385 +
  8.1386 +#ifndef GL_EXT_separate_specular_color
  8.1387 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8
  8.1388 +#define GL_SINGLE_COLOR_EXT               0x81F9
  8.1389 +#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA
  8.1390 +#endif
  8.1391 +
  8.1392 +#ifndef GL_EXT_secondary_color
  8.1393 +#define GL_COLOR_SUM_EXT                  0x8458
  8.1394 +#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459
  8.1395 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
  8.1396 +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
  8.1397 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
  8.1398 +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
  8.1399 +#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E
  8.1400 +#endif
  8.1401 +
  8.1402 +#ifndef GL_EXT_texture_perturb_normal
  8.1403 +#define GL_PERTURB_EXT                    0x85AE
  8.1404 +#define GL_TEXTURE_NORMAL_EXT             0x85AF
  8.1405 +#endif
  8.1406 +
  8.1407 +#ifndef GL_EXT_multi_draw_arrays
  8.1408 +#endif
  8.1409 +
  8.1410 +#ifndef GL_EXT_fog_coord
  8.1411 +#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450
  8.1412 +#define GL_FOG_COORDINATE_EXT             0x8451
  8.1413 +#define GL_FRAGMENT_DEPTH_EXT             0x8452
  8.1414 +#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453
  8.1415 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454
  8.1416 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
  8.1417 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
  8.1418 +#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457
  8.1419 +#endif
  8.1420 +
  8.1421 +#ifndef GL_REND_screen_coordinates
  8.1422 +#define GL_SCREEN_COORDINATES_REND        0x8490
  8.1423 +#define GL_INVERTED_SCREEN_W_REND         0x8491
  8.1424 +#endif
  8.1425 +
  8.1426 +#ifndef GL_EXT_coordinate_frame
  8.1427 +#define GL_TANGENT_ARRAY_EXT              0x8439
  8.1428 +#define GL_BINORMAL_ARRAY_EXT             0x843A
  8.1429 +#define GL_CURRENT_TANGENT_EXT            0x843B
  8.1430 +#define GL_CURRENT_BINORMAL_EXT           0x843C
  8.1431 +#define GL_TANGENT_ARRAY_TYPE_EXT         0x843E
  8.1432 +#define GL_TANGENT_ARRAY_STRIDE_EXT       0x843F
  8.1433 +#define GL_BINORMAL_ARRAY_TYPE_EXT        0x8440
  8.1434 +#define GL_BINORMAL_ARRAY_STRIDE_EXT      0x8441
  8.1435 +#define GL_TANGENT_ARRAY_POINTER_EXT      0x8442
  8.1436 +#define GL_BINORMAL_ARRAY_POINTER_EXT     0x8443
  8.1437 +#define GL_MAP1_TANGENT_EXT               0x8444
  8.1438 +#define GL_MAP2_TANGENT_EXT               0x8445
  8.1439 +#define GL_MAP1_BINORMAL_EXT              0x8446
  8.1440 +#define GL_MAP2_BINORMAL_EXT              0x8447
  8.1441 +#endif
  8.1442 +
  8.1443 +#ifndef GL_EXT_texture_env_combine
  8.1444 +#define GL_COMBINE_EXT                    0x8570
  8.1445 +#define GL_COMBINE_RGB_EXT                0x8571
  8.1446 +#define GL_COMBINE_ALPHA_EXT              0x8572
  8.1447 +#define GL_RGB_SCALE_EXT                  0x8573
  8.1448 +#define GL_ADD_SIGNED_EXT                 0x8574
  8.1449 +#define GL_INTERPOLATE_EXT                0x8575
  8.1450 +#define GL_CONSTANT_EXT                   0x8576
  8.1451 +#define GL_PRIMARY_COLOR_EXT              0x8577
  8.1452 +#define GL_PREVIOUS_EXT                   0x8578
  8.1453 +#define GL_SOURCE0_RGB_EXT                0x8580
  8.1454 +#define GL_SOURCE1_RGB_EXT                0x8581
  8.1455 +#define GL_SOURCE2_RGB_EXT                0x8582
  8.1456 +#define GL_SOURCE0_ALPHA_EXT              0x8588
  8.1457 +#define GL_SOURCE1_ALPHA_EXT              0x8589
  8.1458 +#define GL_SOURCE2_ALPHA_EXT              0x858A
  8.1459 +#define GL_OPERAND0_RGB_EXT               0x8590
  8.1460 +#define GL_OPERAND1_RGB_EXT               0x8591
  8.1461 +#define GL_OPERAND2_RGB_EXT               0x8592
  8.1462 +#define GL_OPERAND0_ALPHA_EXT             0x8598
  8.1463 +#define GL_OPERAND1_ALPHA_EXT             0x8599
  8.1464 +#define GL_OPERAND2_ALPHA_EXT             0x859A
  8.1465 +#endif
  8.1466 +
  8.1467 +#ifndef GL_APPLE_specular_vector
  8.1468 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
  8.1469 +#endif
  8.1470 +
  8.1471 +#ifndef GL_APPLE_transform_hint
  8.1472 +#define GL_TRANSFORM_HINT_APPLE           0x85B1
  8.1473 +#endif
  8.1474 +
  8.1475 +#ifndef GL_SGIX_fog_scale
  8.1476 +#define GL_FOG_SCALE_SGIX                 0x81FC
  8.1477 +#define GL_FOG_SCALE_VALUE_SGIX           0x81FD
  8.1478 +#endif
  8.1479 +
  8.1480 +#ifndef GL_SUNX_constant_data
  8.1481 +#define GL_UNPACK_CONSTANT_DATA_SUNX      0x81D5
  8.1482 +#define GL_TEXTURE_CONSTANT_DATA_SUNX     0x81D6
  8.1483 +#endif
  8.1484 +
  8.1485 +#ifndef GL_SUN_global_alpha
  8.1486 +#define GL_GLOBAL_ALPHA_SUN               0x81D9
  8.1487 +#define GL_GLOBAL_ALPHA_FACTOR_SUN        0x81DA
  8.1488 +#endif
  8.1489 +
  8.1490 +#ifndef GL_SUN_triangle_list
  8.1491 +#define GL_RESTART_SUN                    0x0001
  8.1492 +#define GL_REPLACE_MIDDLE_SUN             0x0002
  8.1493 +#define GL_REPLACE_OLDEST_SUN             0x0003
  8.1494 +#define GL_TRIANGLE_LIST_SUN              0x81D7
  8.1495 +#define GL_REPLACEMENT_CODE_SUN           0x81D8
  8.1496 +#define GL_REPLACEMENT_CODE_ARRAY_SUN     0x85C0
  8.1497 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
  8.1498 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
  8.1499 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
  8.1500 +#define GL_R1UI_V3F_SUN                   0x85C4
  8.1501 +#define GL_R1UI_C4UB_V3F_SUN              0x85C5
  8.1502 +#define GL_R1UI_C3F_V3F_SUN               0x85C6
  8.1503 +#define GL_R1UI_N3F_V3F_SUN               0x85C7
  8.1504 +#define GL_R1UI_C4F_N3F_V3F_SUN           0x85C8
  8.1505 +#define GL_R1UI_T2F_V3F_SUN               0x85C9
  8.1506 +#define GL_R1UI_T2F_N3F_V3F_SUN           0x85CA
  8.1507 +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN       0x85CB
  8.1508 +#endif
  8.1509 +
  8.1510 +#ifndef GL_SUN_vertex
  8.1511 +#endif
  8.1512 +
  8.1513 +#ifndef GL_EXT_blend_func_separate
  8.1514 +#define GL_BLEND_DST_RGB_EXT              0x80C8
  8.1515 +#define GL_BLEND_SRC_RGB_EXT              0x80C9
  8.1516 +#define GL_BLEND_DST_ALPHA_EXT            0x80CA
  8.1517 +#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
  8.1518 +#endif
  8.1519 +
  8.1520 +#ifndef GL_INGR_color_clamp
  8.1521 +#define GL_RED_MIN_CLAMP_INGR             0x8560
  8.1522 +#define GL_GREEN_MIN_CLAMP_INGR           0x8561
  8.1523 +#define GL_BLUE_MIN_CLAMP_INGR            0x8562
  8.1524 +#define GL_ALPHA_MIN_CLAMP_INGR           0x8563
  8.1525 +#define GL_RED_MAX_CLAMP_INGR             0x8564
  8.1526 +#define GL_GREEN_MAX_CLAMP_INGR           0x8565
  8.1527 +#define GL_BLUE_MAX_CLAMP_INGR            0x8566
  8.1528 +#define GL_ALPHA_MAX_CLAMP_INGR           0x8567
  8.1529 +#endif
  8.1530 +
  8.1531 +#ifndef GL_INGR_interlace_read
  8.1532 +#define GL_INTERLACE_READ_INGR            0x8568
  8.1533 +#endif
  8.1534 +
  8.1535 +#ifndef GL_EXT_stencil_wrap
  8.1536 +#define GL_INCR_WRAP_EXT                  0x8507
  8.1537 +#define GL_DECR_WRAP_EXT                  0x8508
  8.1538 +#endif
  8.1539 +
  8.1540 +#ifndef GL_EXT_422_pixels
  8.1541 +#define GL_422_EXT                        0x80CC
  8.1542 +#define GL_422_REV_EXT                    0x80CD
  8.1543 +#define GL_422_AVERAGE_EXT                0x80CE
  8.1544 +#define GL_422_REV_AVERAGE_EXT            0x80CF
  8.1545 +#endif
  8.1546 +
  8.1547 +#ifndef GL_NV_texgen_reflection
  8.1548 +#define GL_NORMAL_MAP_NV                  0x8511
  8.1549 +#define GL_REFLECTION_MAP_NV              0x8512
  8.1550 +#endif
  8.1551 +
  8.1552 +#ifndef GL_EXT_texture_cube_map
  8.1553 +#define GL_NORMAL_MAP_EXT                 0x8511
  8.1554 +#define GL_REFLECTION_MAP_EXT             0x8512
  8.1555 +#define GL_TEXTURE_CUBE_MAP_EXT           0x8513
  8.1556 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514
  8.1557 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
  8.1558 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
  8.1559 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
  8.1560 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
  8.1561 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
  8.1562 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
  8.1563 +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B
  8.1564 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C
  8.1565 +#endif
  8.1566 +
  8.1567 +#ifndef GL_SUN_convolution_border_modes
  8.1568 +#define GL_WRAP_BORDER_SUN                0x81D4
  8.1569 +#endif
  8.1570 +
  8.1571 +#ifndef GL_EXT_texture_env_add
  8.1572 +#endif
  8.1573 +
  8.1574 +#ifndef GL_EXT_texture_lod_bias
  8.1575 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
  8.1576 +#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
  8.1577 +#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
  8.1578 +#endif
  8.1579 +
  8.1580 +#ifndef GL_EXT_texture_filter_anisotropic
  8.1581 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
  8.1582 +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
  8.1583 +#endif
  8.1584 +
  8.1585 +#ifndef GL_EXT_vertex_weighting
  8.1586 +#define GL_MODELVIEW0_STACK_DEPTH_EXT     GL_MODELVIEW_STACK_DEPTH
  8.1587 +#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502
  8.1588 +#define GL_MODELVIEW0_MATRIX_EXT          GL_MODELVIEW_MATRIX
  8.1589 +#define GL_MODELVIEW1_MATRIX_EXT          0x8506
  8.1590 +#define GL_VERTEX_WEIGHTING_EXT           0x8509
  8.1591 +#define GL_MODELVIEW0_EXT                 GL_MODELVIEW
  8.1592 +#define GL_MODELVIEW1_EXT                 0x850A
  8.1593 +#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B
  8.1594 +#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C
  8.1595 +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D
  8.1596 +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E
  8.1597 +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
  8.1598 +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
  8.1599 +#endif
  8.1600 +
  8.1601 +#ifndef GL_NV_light_max_exponent
  8.1602 +#define GL_MAX_SHININESS_NV               0x8504
  8.1603 +#define GL_MAX_SPOT_EXPONENT_NV           0x8505
  8.1604 +#endif
  8.1605 +
  8.1606 +#ifndef GL_NV_vertex_array_range
  8.1607 +#define GL_VERTEX_ARRAY_RANGE_NV          0x851D
  8.1608 +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E
  8.1609 +#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F
  8.1610 +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
  8.1611 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521
  8.1612 +#endif
  8.1613 +
  8.1614 +#ifndef GL_NV_register_combiners
  8.1615 +#define GL_REGISTER_COMBINERS_NV          0x8522
  8.1616 +#define GL_VARIABLE_A_NV                  0x8523
  8.1617 +#define GL_VARIABLE_B_NV                  0x8524
  8.1618 +#define GL_VARIABLE_C_NV                  0x8525
  8.1619 +#define GL_VARIABLE_D_NV                  0x8526
  8.1620 +#define GL_VARIABLE_E_NV                  0x8527
  8.1621 +#define GL_VARIABLE_F_NV                  0x8528
  8.1622 +#define GL_VARIABLE_G_NV                  0x8529
  8.1623 +#define GL_CONSTANT_COLOR0_NV             0x852A
  8.1624 +#define GL_CONSTANT_COLOR1_NV             0x852B
  8.1625 +#define GL_PRIMARY_COLOR_NV               0x852C
  8.1626 +#define GL_SECONDARY_COLOR_NV             0x852D
  8.1627 +#define GL_SPARE0_NV                      0x852E
  8.1628 +#define GL_SPARE1_NV                      0x852F
  8.1629 +#define GL_DISCARD_NV                     0x8530
  8.1630 +#define GL_E_TIMES_F_NV                   0x8531
  8.1631 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
  8.1632 +#define GL_UNSIGNED_IDENTITY_NV           0x8536
  8.1633 +#define GL_UNSIGNED_INVERT_NV             0x8537
  8.1634 +#define GL_EXPAND_NORMAL_NV               0x8538
  8.1635 +#define GL_EXPAND_NEGATE_NV               0x8539
  8.1636 +#define GL_HALF_BIAS_NORMAL_NV            0x853A
  8.1637 +#define GL_HALF_BIAS_NEGATE_NV            0x853B
  8.1638 +#define GL_SIGNED_IDENTITY_NV             0x853C
  8.1639 +#define GL_SIGNED_NEGATE_NV               0x853D
  8.1640 +#define GL_SCALE_BY_TWO_NV                0x853E
  8.1641 +#define GL_SCALE_BY_FOUR_NV               0x853F
  8.1642 +#define GL_SCALE_BY_ONE_HALF_NV           0x8540
  8.1643 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
  8.1644 +#define GL_COMBINER_INPUT_NV              0x8542
  8.1645 +#define GL_COMBINER_MAPPING_NV            0x8543
  8.1646 +#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
  8.1647 +#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
  8.1648 +#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
  8.1649 +#define GL_COMBINER_MUX_SUM_NV            0x8547
  8.1650 +#define GL_COMBINER_SCALE_NV              0x8548
  8.1651 +#define GL_COMBINER_BIAS_NV               0x8549
  8.1652 +#define GL_COMBINER_AB_OUTPUT_NV          0x854A
  8.1653 +#define GL_COMBINER_CD_OUTPUT_NV          0x854B
  8.1654 +#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
  8.1655 +#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
  8.1656 +#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
  8.1657 +#define GL_COLOR_SUM_CLAMP_NV             0x854F
  8.1658 +#define GL_COMBINER0_NV                   0x8550
  8.1659 +#define GL_COMBINER1_NV                   0x8551
  8.1660 +#define GL_COMBINER2_NV                   0x8552
  8.1661 +#define GL_COMBINER3_NV                   0x8553
  8.1662 +#define GL_COMBINER4_NV                   0x8554
  8.1663 +#define GL_COMBINER5_NV                   0x8555
  8.1664 +#define GL_COMBINER6_NV                   0x8556
  8.1665 +#define GL_COMBINER7_NV                   0x8557
  8.1666 +/* reuse GL_TEXTURE0_ARB */
  8.1667 +/* reuse GL_TEXTURE1_ARB */
  8.1668 +/* reuse GL_ZERO */
  8.1669 +/* reuse GL_NONE */
  8.1670 +/* reuse GL_FOG */
  8.1671 +#endif
  8.1672 +
  8.1673 +#ifndef GL_NV_fog_distance
  8.1674 +#define GL_FOG_DISTANCE_MODE_NV           0x855A
  8.1675 +#define GL_EYE_RADIAL_NV                  0x855B
  8.1676 +#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
  8.1677 +/* reuse GL_EYE_PLANE */
  8.1678 +#endif
  8.1679 +
  8.1680 +#ifndef GL_NV_texgen_emboss
  8.1681 +#define GL_EMBOSS_LIGHT_NV                0x855D
  8.1682 +#define GL_EMBOSS_CONSTANT_NV             0x855E
  8.1683 +#define GL_EMBOSS_MAP_NV                  0x855F
  8.1684 +#endif
  8.1685 +
  8.1686 +#ifndef GL_NV_blend_square
  8.1687 +#endif
  8.1688 +
  8.1689 +#ifndef GL_NV_texture_env_combine4
  8.1690 +#define GL_COMBINE4_NV                    0x8503
  8.1691 +#define GL_SOURCE3_RGB_NV                 0x8583
  8.1692 +#define GL_SOURCE3_ALPHA_NV               0x858B
  8.1693 +#define GL_OPERAND3_RGB_NV                0x8593
  8.1694 +#define GL_OPERAND3_ALPHA_NV              0x859B
  8.1695 +#endif
  8.1696 +
  8.1697 +#ifndef GL_MESA_resize_buffers
  8.1698 +#endif
  8.1699 +
  8.1700 +#ifndef GL_MESA_window_pos
  8.1701 +#endif
  8.1702 +
  8.1703 +#ifndef GL_EXT_texture_compression_s3tc
  8.1704 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
  8.1705 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
  8.1706 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
  8.1707 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
  8.1708 +#endif
  8.1709 +
  8.1710 +#ifndef GL_IBM_cull_vertex
  8.1711 +#define GL_CULL_VERTEX_IBM                103050
  8.1712 +#endif
  8.1713 +
  8.1714 +#ifndef GL_IBM_multimode_draw_arrays
  8.1715 +#endif
  8.1716 +
  8.1717 +#ifndef GL_IBM_vertex_array_lists
  8.1718 +#define GL_VERTEX_ARRAY_LIST_IBM          103070
  8.1719 +#define GL_NORMAL_ARRAY_LIST_IBM          103071
  8.1720 +#define GL_COLOR_ARRAY_LIST_IBM           103072
  8.1721 +#define GL_INDEX_ARRAY_LIST_IBM           103073
  8.1722 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM   103074
  8.1723 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM       103075
  8.1724 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM  103076
  8.1725 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
  8.1726 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM   103080
  8.1727 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM   103081
  8.1728 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM    103082
  8.1729 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM    103083
  8.1730 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
  8.1731 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
  8.1732 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
  8.1733 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
  8.1734 +#endif
  8.1735 +
  8.1736 +#ifndef GL_SGIX_subsample
  8.1737 +#define GL_PACK_SUBSAMPLE_RATE_SGIX       0x85A0
  8.1738 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX     0x85A1
  8.1739 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX      0x85A2
  8.1740 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX      0x85A3
  8.1741 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX      0x85A4
  8.1742 +#endif
  8.1743 +
  8.1744 +#ifndef GL_SGIX_ycrcb_subsample
  8.1745 +#endif
  8.1746 +
  8.1747 +#ifndef GL_SGIX_ycrcba
  8.1748 +#define GL_YCRCB_SGIX                     0x8318
  8.1749 +#define GL_YCRCBA_SGIX                    0x8319
  8.1750 +#endif
  8.1751 +
  8.1752 +#ifndef GL_SGI_depth_pass_instrument
  8.1753 +#define GL_DEPTH_PASS_INSTRUMENT_SGIX     0x8310
  8.1754 +#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
  8.1755 +#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
  8.1756 +#endif
  8.1757 +
  8.1758 +#ifndef GL_3DFX_texture_compression_FXT1
  8.1759 +#define GL_COMPRESSED_RGB_FXT1_3DFX       0x86B0
  8.1760 +#define GL_COMPRESSED_RGBA_FXT1_3DFX      0x86B1
  8.1761 +#endif
  8.1762 +
  8.1763 +#ifndef GL_3DFX_multisample
  8.1764 +#define GL_MULTISAMPLE_3DFX               0x86B2
  8.1765 +#define GL_SAMPLE_BUFFERS_3DFX            0x86B3
  8.1766 +#define GL_SAMPLES_3DFX                   0x86B4
  8.1767 +#define GL_MULTISAMPLE_BIT_3DFX           0x20000000
  8.1768 +#endif
  8.1769 +
  8.1770 +#ifndef GL_3DFX_tbuffer
  8.1771 +#endif
  8.1772 +
  8.1773 +#ifndef GL_EXT_multisample
  8.1774 +#define GL_MULTISAMPLE_EXT                0x809D
  8.1775 +#define GL_SAMPLE_ALPHA_TO_MASK_EXT       0x809E
  8.1776 +#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F
  8.1777 +#define GL_SAMPLE_MASK_EXT                0x80A0
  8.1778 +#define GL_1PASS_EXT                      0x80A1
  8.1779 +#define GL_2PASS_0_EXT                    0x80A2
  8.1780 +#define GL_2PASS_1_EXT                    0x80A3
  8.1781 +#define GL_4PASS_0_EXT                    0x80A4
  8.1782 +#define GL_4PASS_1_EXT                    0x80A5
  8.1783 +#define GL_4PASS_2_EXT                    0x80A6
  8.1784 +#define GL_4PASS_3_EXT                    0x80A7
  8.1785 +#define GL_SAMPLE_BUFFERS_EXT             0x80A8
  8.1786 +#define GL_SAMPLES_EXT                    0x80A9
  8.1787 +#define GL_SAMPLE_MASK_VALUE_EXT          0x80AA
  8.1788 +#define GL_SAMPLE_MASK_INVERT_EXT         0x80AB
  8.1789 +#define GL_SAMPLE_PATTERN_EXT             0x80AC
  8.1790 +#define GL_MULTISAMPLE_BIT_EXT            0x20000000
  8.1791 +#endif
  8.1792 +
  8.1793 +#ifndef GL_SGIX_vertex_preclip
  8.1794 +#define GL_VERTEX_PRECLIP_SGIX            0x83EE
  8.1795 +#define GL_VERTEX_PRECLIP_HINT_SGIX       0x83EF
  8.1796 +#endif
  8.1797 +
  8.1798 +#ifndef GL_SGIX_convolution_accuracy
  8.1799 +#define GL_CONVOLUTION_HINT_SGIX          0x8316
  8.1800 +#endif
  8.1801 +
  8.1802 +#ifndef GL_SGIX_resample
  8.1803 +#define GL_PACK_RESAMPLE_SGIX             0x842C
  8.1804 +#define GL_UNPACK_RESAMPLE_SGIX           0x842D
  8.1805 +#define GL_RESAMPLE_REPLICATE_SGIX        0x842E
  8.1806 +#define GL_RESAMPLE_ZERO_FILL_SGIX        0x842F
  8.1807 +#define GL_RESAMPLE_DECIMATE_SGIX         0x8430
  8.1808 +#endif
  8.1809 +
  8.1810 +#ifndef GL_SGIS_point_line_texgen
  8.1811 +#define GL_EYE_DISTANCE_TO_POINT_SGIS     0x81F0
  8.1812 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS  0x81F1
  8.1813 +#define GL_EYE_DISTANCE_TO_LINE_SGIS      0x81F2
  8.1814 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS   0x81F3
  8.1815 +#define GL_EYE_POINT_SGIS                 0x81F4
  8.1816 +#define GL_OBJECT_POINT_SGIS              0x81F5
  8.1817 +#define GL_EYE_LINE_SGIS                  0x81F6
  8.1818 +#define GL_OBJECT_LINE_SGIS               0x81F7
  8.1819 +#endif
  8.1820 +
  8.1821 +#ifndef GL_SGIS_texture_color_mask
  8.1822 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF
  8.1823 +#endif
  8.1824 +
  8.1825 +#ifndef GL_EXT_texture_env_dot3
  8.1826 +#define GL_DOT3_RGB_EXT                   0x8740
  8.1827 +#define GL_DOT3_RGBA_EXT                  0x8741
  8.1828 +#endif
  8.1829 +
  8.1830 +#ifndef GL_ATI_texture_mirror_once
  8.1831 +#define GL_MIRROR_CLAMP_ATI               0x8742
  8.1832 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI       0x8743
  8.1833 +#endif
  8.1834 +
  8.1835 +#ifndef GL_NV_fence
  8.1836 +#define GL_ALL_COMPLETED_NV               0x84F2
  8.1837 +#define GL_FENCE_STATUS_NV                0x84F3
  8.1838 +#define GL_FENCE_CONDITION_NV             0x84F4
  8.1839 +#endif
  8.1840 +
  8.1841 +#ifndef GL_IBM_texture_mirrored_repeat
  8.1842 +#define GL_MIRRORED_REPEAT_IBM            0x8370
  8.1843 +#endif
  8.1844 +
  8.1845 +#ifndef GL_NV_evaluators
  8.1846 +#define GL_EVAL_2D_NV                     0x86C0
  8.1847 +#define GL_EVAL_TRIANGULAR_2D_NV          0x86C1
  8.1848 +#define GL_MAP_TESSELLATION_NV            0x86C2
  8.1849 +#define GL_MAP_ATTRIB_U_ORDER_NV          0x86C3
  8.1850 +#define GL_MAP_ATTRIB_V_ORDER_NV          0x86C4
  8.1851 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
  8.1852 +#define GL_EVAL_VERTEX_ATTRIB0_NV         0x86C6
  8.1853 +#define GL_EVAL_VERTEX_ATTRIB1_NV         0x86C7
  8.1854 +#define GL_EVAL_VERTEX_ATTRIB2_NV         0x86C8
  8.1855 +#define GL_EVAL_VERTEX_ATTRIB3_NV         0x86C9
  8.1856 +#define GL_EVAL_VERTEX_ATTRIB4_NV         0x86CA
  8.1857 +#define GL_EVAL_VERTEX_ATTRIB5_NV         0x86CB
  8.1858 +#define GL_EVAL_VERTEX_ATTRIB6_NV         0x86CC
  8.1859 +#define GL_EVAL_VERTEX_ATTRIB7_NV         0x86CD
  8.1860 +#define GL_EVAL_VERTEX_ATTRIB8_NV         0x86CE
  8.1861 +#define GL_EVAL_VERTEX_ATTRIB9_NV         0x86CF
  8.1862 +#define GL_EVAL_VERTEX_ATTRIB10_NV        0x86D0
  8.1863 +#define GL_EVAL_VERTEX_ATTRIB11_NV        0x86D1
  8.1864 +#define GL_EVAL_VERTEX_ATTRIB12_NV        0x86D2
  8.1865 +#define GL_EVAL_VERTEX_ATTRIB13_NV        0x86D3
  8.1866 +#define GL_EVAL_VERTEX_ATTRIB14_NV        0x86D4
  8.1867 +#define GL_EVAL_VERTEX_ATTRIB15_NV        0x86D5
  8.1868 +#define GL_MAX_MAP_TESSELLATION_NV        0x86D6
  8.1869 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV     0x86D7
  8.1870 +#endif
  8.1871 +
  8.1872 +#ifndef GL_NV_packed_depth_stencil
  8.1873 +#define GL_DEPTH_STENCIL_NV               0x84F9
  8.1874 +#define GL_UNSIGNED_INT_24_8_NV           0x84FA
  8.1875 +#endif
  8.1876 +
  8.1877 +#ifndef GL_NV_register_combiners2
  8.1878 +#define GL_PER_STAGE_CONSTANTS_NV         0x8535
  8.1879 +#endif
  8.1880 +
  8.1881 +#ifndef GL_NV_texture_compression_vtc
  8.1882 +#endif
  8.1883 +
  8.1884 +#ifndef GL_NV_texture_rectangle
  8.1885 +#define GL_TEXTURE_RECTANGLE_NV           0x84F5
  8.1886 +#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
  8.1887 +#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
  8.1888 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8
  8.1889 +#endif
  8.1890 +
  8.1891 +#ifndef GL_NV_texture_shader
  8.1892 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
  8.1893 +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
  8.1894 +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
  8.1895 +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
  8.1896 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
  8.1897 +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
  8.1898 +#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
  8.1899 +#define GL_SHADER_CONSISTENT_NV           0x86DD
  8.1900 +#define GL_TEXTURE_SHADER_NV              0x86DE
  8.1901 +#define GL_SHADER_OPERATION_NV            0x86DF
  8.1902 +#define GL_CULL_MODES_NV                  0x86E0
  8.1903 +#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
  8.1904 +#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
  8.1905 +#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
  8.1906 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    GL_OFFSET_TEXTURE_MATRIX_NV
  8.1907 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV     GL_OFFSET_TEXTURE_SCALE_NV
  8.1908 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV      GL_OFFSET_TEXTURE_BIAS_NV
  8.1909 +#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
  8.1910 +#define GL_CONST_EYE_NV                   0x86E5
  8.1911 +#define GL_PASS_THROUGH_NV                0x86E6
  8.1912 +#define GL_CULL_FRAGMENT_NV               0x86E7
  8.1913 +#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
  8.1914 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
  8.1915 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
  8.1916 +#define GL_DOT_PRODUCT_NV                 0x86EC
  8.1917 +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
  8.1918 +#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
  8.1919 +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
  8.1920 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
  8.1921 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
  8.1922 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
  8.1923 +#define GL_HILO_NV                        0x86F4
  8.1924 +#define GL_DSDT_NV                        0x86F5
  8.1925 +#define GL_DSDT_MAG_NV                    0x86F6
  8.1926 +#define GL_DSDT_MAG_VIB_NV                0x86F7
  8.1927 +#define GL_HILO16_NV                      0x86F8
  8.1928 +#define GL_SIGNED_HILO_NV                 0x86F9
  8.1929 +#define GL_SIGNED_HILO16_NV               0x86FA
  8.1930 +#define GL_SIGNED_RGBA_NV                 0x86FB
  8.1931 +#define GL_SIGNED_RGBA8_NV                0x86FC
  8.1932 +#define GL_SIGNED_RGB_NV                  0x86FE
  8.1933 +#define GL_SIGNED_RGB8_NV                 0x86FF
  8.1934 +#define GL_SIGNED_LUMINANCE_NV            0x8701
  8.1935 +#define GL_SIGNED_LUMINANCE8_NV           0x8702
  8.1936 +#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
  8.1937 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
  8.1938 +#define GL_SIGNED_ALPHA_NV                0x8705
  8.1939 +#define GL_SIGNED_ALPHA8_NV               0x8706
  8.1940 +#define GL_SIGNED_INTENSITY_NV            0x8707
  8.1941 +#define GL_SIGNED_INTENSITY8_NV           0x8708
  8.1942 +#define GL_DSDT8_NV                       0x8709
  8.1943 +#define GL_DSDT8_MAG8_NV                  0x870A
  8.1944 +#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
  8.1945 +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
  8.1946 +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
  8.1947 +#define GL_HI_SCALE_NV                    0x870E
  8.1948 +#define GL_LO_SCALE_NV                    0x870F
  8.1949 +#define GL_DS_SCALE_NV                    0x8710
  8.1950 +#define GL_DT_SCALE_NV                    0x8711
  8.1951 +#define GL_MAGNITUDE_SCALE_NV             0x8712
  8.1952 +#define GL_VIBRANCE_SCALE_NV              0x8713
  8.1953 +#define GL_HI_BIAS_NV                     0x8714
  8.1954 +#define GL_LO_BIAS_NV                     0x8715
  8.1955 +#define GL_DS_BIAS_NV                     0x8716
  8.1956 +#define GL_DT_BIAS_NV                     0x8717
  8.1957 +#define GL_MAGNITUDE_BIAS_NV              0x8718
  8.1958 +#define GL_VIBRANCE_BIAS_NV               0x8719
  8.1959 +#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
  8.1960 +#define GL_TEXTURE_HI_SIZE_NV             0x871B
  8.1961 +#define GL_TEXTURE_LO_SIZE_NV             0x871C
  8.1962 +#define GL_TEXTURE_DS_SIZE_NV             0x871D
  8.1963 +#define GL_TEXTURE_DT_SIZE_NV             0x871E
  8.1964 +#define GL_TEXTURE_MAG_SIZE_NV            0x871F
  8.1965 +#endif
  8.1966 +
  8.1967 +#ifndef GL_NV_texture_shader2
  8.1968 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
  8.1969 +#endif
  8.1970 +
  8.1971 +#ifndef GL_NV_vertex_array_range2
  8.1972 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
  8.1973 +#endif
  8.1974 +
  8.1975 +#ifndef GL_NV_vertex_program
  8.1976 +#define GL_VERTEX_PROGRAM_NV              0x8620
  8.1977 +#define GL_VERTEX_STATE_PROGRAM_NV        0x8621
  8.1978 +#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623
  8.1979 +#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624
  8.1980 +#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625
  8.1981 +#define GL_CURRENT_ATTRIB_NV              0x8626
  8.1982 +#define GL_PROGRAM_LENGTH_NV              0x8627
  8.1983 +#define GL_PROGRAM_STRING_NV              0x8628
  8.1984 +#define GL_MODELVIEW_PROJECTION_NV        0x8629
  8.1985 +#define GL_IDENTITY_NV                    0x862A
  8.1986 +#define GL_INVERSE_NV                     0x862B
  8.1987 +#define GL_TRANSPOSE_NV                   0x862C
  8.1988 +#define GL_INVERSE_TRANSPOSE_NV           0x862D
  8.1989 +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
  8.1990 +#define GL_MAX_TRACK_MATRICES_NV          0x862F
  8.1991 +#define GL_MATRIX0_NV                     0x8630
  8.1992 +#define GL_MATRIX1_NV                     0x8631
  8.1993 +#define GL_MATRIX2_NV                     0x8632
  8.1994 +#define GL_MATRIX3_NV                     0x8633
  8.1995 +#define GL_MATRIX4_NV                     0x8634
  8.1996 +#define GL_MATRIX5_NV                     0x8635
  8.1997 +#define GL_MATRIX6_NV                     0x8636
  8.1998 +#define GL_MATRIX7_NV                     0x8637
  8.1999 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640
  8.2000 +#define GL_CURRENT_MATRIX_NV              0x8641
  8.2001 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642
  8.2002 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643
  8.2003 +#define GL_PROGRAM_PARAMETER_NV           0x8644
  8.2004 +#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645
  8.2005 +#define GL_PROGRAM_TARGET_NV              0x8646
  8.2006 +#define GL_PROGRAM_RESIDENT_NV            0x8647
  8.2007 +#define GL_TRACK_MATRIX_NV                0x8648
  8.2008 +#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649
  8.2009 +#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A
  8.2010 +#define GL_PROGRAM_ERROR_POSITION_NV      0x864B
  8.2011 +#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650
  8.2012 +#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651
  8.2013 +#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652
  8.2014 +#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653
  8.2015 +#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654
  8.2016 +#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655
  8.2017 +#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656
  8.2018 +#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657
  8.2019 +#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658
  8.2020 +#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659
  8.2021 +#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A
  8.2022 +#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B
  8.2023 +#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C
  8.2024 +#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D
  8.2025 +#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E
  8.2026 +#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F
  8.2027 +#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660
  8.2028 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661
  8.2029 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662
  8.2030 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663
  8.2031 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664
  8.2032 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665
  8.2033 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666
  8.2034 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667
  8.2035 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668
  8.2036 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669
  8.2037 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A
  8.2038 +#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B
  8.2039 +#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C
  8.2040 +#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D
  8.2041 +#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E
  8.2042 +#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F
  8.2043 +#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670
  8.2044 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671
  8.2045 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672
  8.2046 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673
  8.2047 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674
  8.2048 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675
  8.2049 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676
  8.2050 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677
  8.2051 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678
  8.2052 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679
  8.2053 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A
  8.2054 +#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B
  8.2055 +#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C
  8.2056 +#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D
  8.2057 +#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E
  8.2058 +#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F
  8.2059 +#endif
  8.2060 +
  8.2061 +#ifndef GL_SGIX_texture_coordinate_clamp
  8.2062 +#define GL_TEXTURE_MAX_CLAMP_S_SGIX       0x8369
  8.2063 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX       0x836A
  8.2064 +#define GL_TEXTURE_MAX_CLAMP_R_SGIX       0x836B
  8.2065 +#endif
  8.2066 +
  8.2067 +#ifndef GL_SGIX_scalebias_hint
  8.2068 +#define GL_SCALEBIAS_HINT_SGIX            0x8322
  8.2069 +#endif
  8.2070 +
  8.2071 +#ifndef GL_OML_interlace
  8.2072 +#define GL_INTERLACE_OML                  0x8980
  8.2073 +#define GL_INTERLACE_READ_OML             0x8981
  8.2074 +#endif
  8.2075 +
  8.2076 +#ifndef GL_OML_subsample
  8.2077 +#define GL_FORMAT_SUBSAMPLE_24_24_OML     0x8982
  8.2078 +#define GL_FORMAT_SUBSAMPLE_244_244_OML   0x8983
  8.2079 +#endif
  8.2080 +
  8.2081 +#ifndef GL_OML_resample
  8.2082 +#define GL_PACK_RESAMPLE_OML              0x8984
  8.2083 +#define GL_UNPACK_RESAMPLE_OML            0x8985
  8.2084 +#define GL_RESAMPLE_REPLICATE_OML         0x8986
  8.2085 +#define GL_RESAMPLE_ZERO_FILL_OML         0x8987
  8.2086 +#define GL_RESAMPLE_AVERAGE_OML           0x8988
  8.2087 +#define GL_RESAMPLE_DECIMATE_OML          0x8989
  8.2088 +#endif
  8.2089 +
  8.2090 +#ifndef GL_NV_copy_depth_to_color
  8.2091 +#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E
  8.2092 +#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F
  8.2093 +#endif
  8.2094 +
  8.2095 +#ifndef GL_ATI_envmap_bumpmap
  8.2096 +#define GL_BUMP_ROT_MATRIX_ATI            0x8775
  8.2097 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI       0x8776
  8.2098 +#define GL_BUMP_NUM_TEX_UNITS_ATI         0x8777
  8.2099 +#define GL_BUMP_TEX_UNITS_ATI             0x8778
  8.2100 +#define GL_DUDV_ATI                       0x8779
  8.2101 +#define GL_DU8DV8_ATI                     0x877A
  8.2102 +#define GL_BUMP_ENVMAP_ATI                0x877B
  8.2103 +#define GL_BUMP_TARGET_ATI                0x877C
  8.2104 +#endif
  8.2105 +
  8.2106 +#ifndef GL_ATI_fragment_shader
  8.2107 +#define GL_FRAGMENT_SHADER_ATI            0x8920
  8.2108 +#define GL_REG_0_ATI                      0x8921
  8.2109 +#define GL_REG_1_ATI                      0x8922
  8.2110 +#define GL_REG_2_ATI                      0x8923
  8.2111 +#define GL_REG_3_ATI                      0x8924
  8.2112 +#define GL_REG_4_ATI                      0x8925
  8.2113 +#define GL_REG_5_ATI                      0x8926
  8.2114 +#define GL_REG_6_ATI                      0x8927
  8.2115 +#define GL_REG_7_ATI                      0x8928
  8.2116 +#define GL_REG_8_ATI                      0x8929
  8.2117 +#define GL_REG_9_ATI                      0x892A
  8.2118 +#define GL_REG_10_ATI                     0x892B
  8.2119 +#define GL_REG_11_ATI                     0x892C
  8.2120 +#define GL_REG_12_ATI                     0x892D
  8.2121 +#define GL_REG_13_ATI                     0x892E
  8.2122 +#define GL_REG_14_ATI                     0x892F
  8.2123 +#define GL_REG_15_ATI                     0x8930
  8.2124 +#define GL_REG_16_ATI                     0x8931
  8.2125 +#define GL_REG_17_ATI                     0x8932
  8.2126 +#define GL_REG_18_ATI                     0x8933
  8.2127 +#define GL_REG_19_ATI                     0x8934
  8.2128 +#define GL_REG_20_ATI                     0x8935
  8.2129 +#define GL_REG_21_ATI                     0x8936
  8.2130 +#define GL_REG_22_ATI                     0x8937
  8.2131 +#define GL_REG_23_ATI                     0x8938
  8.2132 +#define GL_REG_24_ATI                     0x8939
  8.2133 +#define GL_REG_25_ATI                     0x893A
  8.2134 +#define GL_REG_26_ATI                     0x893B
  8.2135 +#define GL_REG_27_ATI                     0x893C
  8.2136 +#define GL_REG_28_ATI                     0x893D
  8.2137 +#define GL_REG_29_ATI                     0x893E
  8.2138 +#define GL_REG_30_ATI                     0x893F
  8.2139 +#define GL_REG_31_ATI                     0x8940
  8.2140 +#define GL_CON_0_ATI                      0x8941
  8.2141 +#define GL_CON_1_ATI                      0x8942
  8.2142 +#define GL_CON_2_ATI                      0x8943
  8.2143 +#define GL_CON_3_ATI                      0x8944
  8.2144 +#define GL_CON_4_ATI                      0x8945
  8.2145 +#define GL_CON_5_ATI                      0x8946
  8.2146 +#define GL_CON_6_ATI                      0x8947
  8.2147 +#define GL_CON_7_ATI                      0x8948
  8.2148 +#define GL_CON_8_ATI                      0x8949
  8.2149 +#define GL_CON_9_ATI                      0x894A
  8.2150 +#define GL_CON_10_ATI                     0x894B
  8.2151 +#define GL_CON_11_ATI                     0x894C
  8.2152 +#define GL_CON_12_ATI                     0x894D
  8.2153 +#define GL_CON_13_ATI                     0x894E
  8.2154 +#define GL_CON_14_ATI                     0x894F
  8.2155 +#define GL_CON_15_ATI                     0x8950
  8.2156 +#define GL_CON_16_ATI                     0x8951
  8.2157 +#define GL_CON_17_ATI                     0x8952
  8.2158 +#define GL_CON_18_ATI                     0x8953
  8.2159 +#define GL_CON_19_ATI                     0x8954
  8.2160 +#define GL_CON_20_ATI                     0x8955
  8.2161 +#define GL_CON_21_ATI                     0x8956
  8.2162 +#define GL_CON_22_ATI                     0x8957
  8.2163 +#define GL_CON_23_ATI                     0x8958
  8.2164 +#define GL_CON_24_ATI                     0x8959
  8.2165 +#define GL_CON_25_ATI                     0x895A
  8.2166 +#define GL_CON_26_ATI                     0x895B
  8.2167 +#define GL_CON_27_ATI                     0x895C
  8.2168 +#define GL_CON_28_ATI                     0x895D
  8.2169 +#define GL_CON_29_ATI                     0x895E
  8.2170 +#define GL_CON_30_ATI                     0x895F
  8.2171 +#define GL_CON_31_ATI                     0x8960
  8.2172 +#define GL_MOV_ATI                        0x8961
  8.2173 +#define GL_ADD_ATI                        0x8963
  8.2174 +#define GL_MUL_ATI                        0x8964
  8.2175 +#define GL_SUB_ATI                        0x8965
  8.2176 +#define GL_DOT3_ATI                       0x8966
  8.2177 +#define GL_DOT4_ATI                       0x8967
  8.2178 +#define GL_MAD_ATI                        0x8968
  8.2179 +#define GL_LERP_ATI                       0x8969
  8.2180 +#define GL_CND_ATI                        0x896A
  8.2181 +#define GL_CND0_ATI                       0x896B
  8.2182 +#define GL_DOT2_ADD_ATI                   0x896C
  8.2183 +#define GL_SECONDARY_INTERPOLATOR_ATI     0x896D
  8.2184 +#define GL_NUM_FRAGMENT_REGISTERS_ATI     0x896E
  8.2185 +#define GL_NUM_FRAGMENT_CONSTANTS_ATI     0x896F
  8.2186 +#define GL_NUM_PASSES_ATI                 0x8970
  8.2187 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI  0x8971
  8.2188 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI     0x8972
  8.2189 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
  8.2190 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI    0x8974
  8.2191 +#define GL_COLOR_ALPHA_PAIRING_ATI        0x8975
  8.2192 +#define GL_SWIZZLE_STR_ATI                0x8976
  8.2193 +#define GL_SWIZZLE_STQ_ATI                0x8977
  8.2194 +#define GL_SWIZZLE_STR_DR_ATI             0x8978
  8.2195 +#define GL_SWIZZLE_STQ_DQ_ATI             0x8979
  8.2196 +#define GL_SWIZZLE_STRQ_ATI               0x897A
  8.2197 +#define GL_SWIZZLE_STRQ_DQ_ATI            0x897B
  8.2198 +#define GL_RED_BIT_ATI                    0x00000001
  8.2199 +#define GL_GREEN_BIT_ATI                  0x00000002
  8.2200 +#define GL_BLUE_BIT_ATI                   0x00000004
  8.2201 +#define GL_2X_BIT_ATI                     0x00000001
  8.2202 +#define GL_4X_BIT_ATI                     0x00000002
  8.2203 +#define GL_8X_BIT_ATI                     0x00000004
  8.2204 +#define GL_HALF_BIT_ATI                   0x00000008
  8.2205 +#define GL_QUARTER_BIT_ATI                0x00000010
  8.2206 +#define GL_EIGHTH_BIT_ATI                 0x00000020
  8.2207 +#define GL_SATURATE_BIT_ATI               0x00000040
  8.2208 +#define GL_COMP_BIT_ATI                   0x00000002
  8.2209 +#define GL_NEGATE_BIT_ATI                 0x00000004
  8.2210 +#define GL_BIAS_BIT_ATI                   0x00000008
  8.2211 +#endif
  8.2212 +
  8.2213 +#ifndef GL_ATI_pn_triangles
  8.2214 +#define GL_PN_TRIANGLES_ATI               0x87F0
  8.2215 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
  8.2216 +#define GL_PN_TRIANGLES_POINT_MODE_ATI    0x87F2
  8.2217 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI   0x87F3
  8.2218 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
  8.2219 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
  8.2220 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
  8.2221 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
  8.2222 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
  8.2223 +#endif
  8.2224 +
  8.2225 +#ifndef GL_ATI_vertex_array_object
  8.2226 +#define GL_STATIC_ATI                     0x8760
  8.2227 +#define GL_DYNAMIC_ATI                    0x8761
  8.2228 +#define GL_PRESERVE_ATI                   0x8762
  8.2229 +#define GL_DISCARD_ATI                    0x8763
  8.2230 +#define GL_OBJECT_BUFFER_SIZE_ATI         0x8764
  8.2231 +#define GL_OBJECT_BUFFER_USAGE_ATI        0x8765
  8.2232 +#define GL_ARRAY_OBJECT_BUFFER_ATI        0x8766
  8.2233 +#define GL_ARRAY_OBJECT_OFFSET_ATI        0x8767
  8.2234 +#endif
  8.2235 +
  8.2236 +#ifndef GL_EXT_vertex_shader
  8.2237 +#define GL_VERTEX_SHADER_EXT              0x8780
  8.2238 +#define GL_VERTEX_SHADER_BINDING_EXT      0x8781
  8.2239 +#define GL_OP_INDEX_EXT                   0x8782
  8.2240 +#define GL_OP_NEGATE_EXT                  0x8783
  8.2241 +#define GL_OP_DOT3_EXT                    0x8784
  8.2242 +#define GL_OP_DOT4_EXT                    0x8785
  8.2243 +#define GL_OP_MUL_EXT                     0x8786
  8.2244 +#define GL_OP_ADD_EXT                     0x8787
  8.2245 +#define GL_OP_MADD_EXT                    0x8788
  8.2246 +#define GL_OP_FRAC_EXT                    0x8789
  8.2247 +#define GL_OP_MAX_EXT                     0x878A
  8.2248 +#define GL_OP_MIN_EXT                     0x878B
  8.2249 +#define GL_OP_SET_GE_EXT                  0x878C
  8.2250 +#define GL_OP_SET_LT_EXT                  0x878D
  8.2251 +#define GL_OP_CLAMP_EXT                   0x878E
  8.2252 +#define GL_OP_FLOOR_EXT                   0x878F
  8.2253 +#define GL_OP_ROUND_EXT                   0x8790
  8.2254 +#define GL_OP_EXP_BASE_2_EXT              0x8791
  8.2255 +#define GL_OP_LOG_BASE_2_EXT              0x8792
  8.2256 +#define GL_OP_POWER_EXT                   0x8793
  8.2257 +#define GL_OP_RECIP_EXT                   0x8794
  8.2258 +#define GL_OP_RECIP_SQRT_EXT              0x8795
  8.2259 +#define GL_OP_SUB_EXT                     0x8796
  8.2260 +#define GL_OP_CROSS_PRODUCT_EXT           0x8797
  8.2261 +#define GL_OP_MULTIPLY_MATRIX_EXT         0x8798
  8.2262 +#define GL_OP_MOV_EXT                     0x8799
  8.2263 +#define GL_OUTPUT_VERTEX_EXT              0x879A
  8.2264 +#define GL_OUTPUT_COLOR0_EXT              0x879B
  8.2265 +#define GL_OUTPUT_COLOR1_EXT              0x879C
  8.2266 +#define GL_OUTPUT_TEXTURE_COORD0_EXT      0x879D
  8.2267 +#define GL_OUTPUT_TEXTURE_COORD1_EXT      0x879E
  8.2268 +#define GL_OUTPUT_TEXTURE_COORD2_EXT      0x879F
  8.2269 +#define GL_OUTPUT_TEXTURE_COORD3_EXT      0x87A0
  8.2270 +#define GL_OUTPUT_TEXTURE_COORD4_EXT      0x87A1
  8.2271 +#define GL_OUTPUT_TEXTURE_COORD5_EXT      0x87A2
  8.2272 +#define GL_OUTPUT_TEXTURE_COORD6_EXT      0x87A3
  8.2273 +#define GL_OUTPUT_TEXTURE_COORD7_EXT      0x87A4
  8.2274 +#define GL_OUTPUT_TEXTURE_COORD8_EXT      0x87A5
  8.2275 +#define GL_OUTPUT_TEXTURE_COORD9_EXT      0x87A6
  8.2276 +#define GL_OUTPUT_TEXTURE_COORD10_EXT     0x87A7
  8.2277 +#define GL_OUTPUT_TEXTURE_COORD11_EXT     0x87A8
  8.2278 +#define GL_OUTPUT_TEXTURE_COORD12_EXT     0x87A9
  8.2279 +#define GL_OUTPUT_TEXTURE_COORD13_EXT     0x87AA
  8.2280 +#define GL_OUTPUT_TEXTURE_COORD14_EXT     0x87AB
  8.2281 +#define GL_OUTPUT_TEXTURE_COORD15_EXT     0x87AC
  8.2282 +#define GL_OUTPUT_TEXTURE_COORD16_EXT     0x87AD
  8.2283 +#define GL_OUTPUT_TEXTURE_COORD17_EXT     0x87AE
  8.2284 +#define GL_OUTPUT_TEXTURE_COORD18_EXT     0x87AF
  8.2285 +#define GL_OUTPUT_TEXTURE_COORD19_EXT     0x87B0
  8.2286 +#define GL_OUTPUT_TEXTURE_COORD20_EXT     0x87B1
  8.2287 +#define GL_OUTPUT_TEXTURE_COORD21_EXT     0x87B2
  8.2288 +#define GL_OUTPUT_TEXTURE_COORD22_EXT     0x87B3
  8.2289 +#define GL_OUTPUT_TEXTURE_COORD23_EXT     0x87B4
  8.2290 +#define GL_OUTPUT_TEXTURE_COORD24_EXT     0x87B5
  8.2291 +#define GL_OUTPUT_TEXTURE_COORD25_EXT     0x87B6
  8.2292 +#define GL_OUTPUT_TEXTURE_COORD26_EXT     0x87B7
  8.2293 +#define GL_OUTPUT_TEXTURE_COORD27_EXT     0x87B8
  8.2294 +#define GL_OUTPUT_TEXTURE_COORD28_EXT     0x87B9
  8.2295 +#define GL_OUTPUT_TEXTURE_COORD29_EXT     0x87BA
  8.2296 +#define GL_OUTPUT_TEXTURE_COORD30_EXT     0x87BB
  8.2297 +#define GL_OUTPUT_TEXTURE_COORD31_EXT     0x87BC
  8.2298 +#define GL_OUTPUT_FOG_EXT                 0x87BD
  8.2299 +#define GL_SCALAR_EXT                     0x87BE
  8.2300 +#define GL_VECTOR_EXT                     0x87BF
  8.2301 +#define GL_MATRIX_EXT                     0x87C0
  8.2302 +#define GL_VARIANT_EXT                    0x87C1
  8.2303 +#define GL_INVARIANT_EXT                  0x87C2
  8.2304 +#define GL_LOCAL_CONSTANT_EXT             0x87C3
  8.2305 +#define GL_LOCAL_EXT                      0x87C4
  8.2306 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
  8.2307 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
  8.2308 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
  8.2309 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
  8.2310 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT   0x87C9
  8.2311 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
  8.2312 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
  8.2313 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
  8.2314 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS_EXT 0x87CD
  8.2315 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
  8.2316 +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
  8.2317 +#define GL_VERTEX_SHADER_VARIANTS_EXT     0x87D0
  8.2318 +#define GL_VERTEX_SHADER_INVARIANTS_EXT   0x87D1
  8.2319 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
  8.2320 +#define GL_VERTEX_SHADER_LOCALS_EXT       0x87D3
  8.2321 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT    0x87D4
  8.2322 +#define GL_X_EXT                          0x87D5
  8.2323 +#define GL_Y_EXT                          0x87D6
  8.2324 +#define GL_Z_EXT                          0x87D7
  8.2325 +#define GL_W_EXT                          0x87D8
  8.2326 +#define GL_NEGATIVE_X_EXT                 0x87D9
  8.2327 +#define GL_NEGATIVE_Y_EXT                 0x87DA
  8.2328 +#define GL_NEGATIVE_Z_EXT                 0x87DB
  8.2329 +#define GL_NEGATIVE_W_EXT                 0x87DC
  8.2330 +#define GL_ZERO_EXT                       0x87DD
  8.2331 +#define GL_ONE_EXT                        0x87DE
  8.2332 +#define GL_NEGATIVE_ONE_EXT               0x87DF
  8.2333 +#define GL_NORMALIZED_RANGE_EXT           0x87E0
  8.2334 +#define GL_FULL_RANGE_EXT                 0x87E1
  8.2335 +#define GL_CURRENT_VERTEX_EXT             0x87E2
  8.2336 +#define GL_MVP_MATRIX_EXT                 0x87E3
  8.2337 +#define GL_VARIANT_VALUE_EXT              0x87E4
  8.2338 +#define GL_VARIANT_DATATYPE_EXT           0x87E5
  8.2339 +#define GL_VARIANT_ARRAY_STRIDE_EXT       0x87E6
  8.2340 +#define GL_VARIANT_ARRAY_TYPE_EXT         0x87E7
  8.2341 +#define GL_VARIANT_ARRAY_EXT              0x87E8
  8.2342 +#define GL_VARIANT_ARRAY_POINTER_EXT      0x87E9
  8.2343 +#define GL_INVARIANT_VALUE_EXT            0x87EA
  8.2344 +#define GL_INVARIANT_DATATYPE_EXT         0x87EB
  8.2345 +#define GL_LOCAL_CONSTANT_VALUE_EXT       0x87EC
  8.2346 +#define GL_LOCAL_CONSTANT_DATATYPE_EXT    0x87ED
  8.2347 +#endif
  8.2348 +
  8.2349 +#ifndef GL_ATI_vertex_streams
  8.2350 +#define GL_MAX_VERTEX_STREAMS_ATI         0x876B
  8.2351 +#define GL_VERTEX_STREAM0_ATI             0x876C
  8.2352 +#define GL_VERTEX_STREAM1_ATI             0x876D
  8.2353 +#define GL_VERTEX_STREAM2_ATI             0x876E
  8.2354 +#define GL_VERTEX_STREAM3_ATI             0x876F
  8.2355 +#define GL_VERTEX_STREAM4_ATI             0x8770
  8.2356 +#define GL_VERTEX_STREAM5_ATI             0x8771
  8.2357 +#define GL_VERTEX_STREAM6_ATI             0x8772
  8.2358 +#define GL_VERTEX_STREAM7_ATI             0x8773
  8.2359 +#define GL_VERTEX_SOURCE_ATI              0x8774
  8.2360 +#endif
  8.2361 +
  8.2362 +#ifndef GL_ATI_element_array
  8.2363 +#define GL_ELEMENT_ARRAY_ATI              0x8768
  8.2364 +#define GL_ELEMENT_ARRAY_TYPE_ATI         0x8769
  8.2365 +#define GL_ELEMENT_ARRAY_POINTER_ATI      0x876A
  8.2366 +#endif
  8.2367 +
  8.2368 +#ifndef GL_SUN_mesh_array
  8.2369 +#define GL_QUAD_MESH_SUN                  0x8614
  8.2370 +#define GL_TRIANGLE_MESH_SUN              0x8615
  8.2371 +#endif
  8.2372 +
  8.2373 +#ifndef GL_SUN_slice_accum
  8.2374 +#define GL_SLICE_ACCUM_SUN                0x85CC
  8.2375 +#endif
  8.2376 +
  8.2377 +#ifndef GL_NV_multisample_filter_hint
  8.2378 +#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534
  8.2379 +#endif
  8.2380 +
  8.2381 +#ifndef GL_NV_depth_clamp
  8.2382 +#define GL_DEPTH_CLAMP_NV                 0x864F
  8.2383 +#endif
  8.2384 +
  8.2385 +#ifndef GL_NV_occlusion_query
  8.2386 +#define GL_PIXEL_COUNTER_BITS_NV          0x8864
  8.2387 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
  8.2388 +#define GL_PIXEL_COUNT_NV                 0x8866
  8.2389 +#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
  8.2390 +#endif
  8.2391 +
  8.2392 +#ifndef GL_NV_point_sprite
  8.2393 +#define GL_POINT_SPRITE_NV                0x8861
  8.2394 +#define GL_COORD_REPLACE_NV               0x8862
  8.2395 +#define GL_POINT_SPRITE_R_MODE_NV         0x8863
  8.2396 +#endif
  8.2397 +
  8.2398 +#ifndef GL_NV_texture_shader3
  8.2399 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
  8.2400 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
  8.2401 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
  8.2402 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
  8.2403 +#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
  8.2404 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
  8.2405 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
  8.2406 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
  8.2407 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
  8.2408 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
  8.2409 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
  8.2410 +#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
  8.2411 +#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
  8.2412 +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
  8.2413 +#define GL_HILO8_NV                       0x885E
  8.2414 +#define GL_SIGNED_HILO8_NV                0x885F
  8.2415 +#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
  8.2416 +#endif
  8.2417 +
  8.2418 +#ifndef GL_NV_vertex_program1_1
  8.2419 +#endif
  8.2420 +
  8.2421 +#ifndef GL_EXT_shadow_funcs
  8.2422 +#endif
  8.2423 +
  8.2424 +#ifndef GL_EXT_stencil_two_side
  8.2425 +#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
  8.2426 +#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
  8.2427 +#endif
  8.2428 +
  8.2429 +
  8.2430 +/*************************************************************/
  8.2431 +
  8.2432 +#ifndef GL_VERSION_1_2
  8.2433 +#define GL_VERSION_1_2 1
  8.2434 +#ifdef GL_GLEXT_PROTOTYPES
  8.2435 +GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
  8.2436 +GLAPI void APIENTRY glBlendEquation (GLenum);
  8.2437 +GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
  8.2438 +GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
  8.2439 +GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
  8.2440 +GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
  8.2441 +GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
  8.2442 +GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
  8.2443 +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
  8.2444 +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
  8.2445 +GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.2446 +GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
  8.2447 +GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
  8.2448 +GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.2449 +GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
  8.2450 +GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
  8.2451 +GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
  8.2452 +GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
  8.2453 +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
  8.2454 +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
  8.2455 +GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
  8.2456 +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
  8.2457 +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
  8.2458 +GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
  8.2459 +GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
  8.2460 +GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
  8.2461 +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
  8.2462 +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
  8.2463 +GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
  8.2464 +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
  8.2465 +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
  8.2466 +GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
  8.2467 +GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
  8.2468 +GLAPI void APIENTRY glResetHistogram (GLenum);
  8.2469 +GLAPI void APIENTRY glResetMinmax (GLenum);
  8.2470 +GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
  8.2471 +GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.2472 +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
  8.2473 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2474 +typedef void (APIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
  8.2475 +typedef void (APIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);
  8.2476 +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
  8.2477 +typedef void (APIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
  8.2478 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.2479 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
  8.2480 +typedef void (APIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
  8.2481 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
  8.2482 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.2483 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
  8.2484 +typedef void (APIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
  8.2485 +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
  8.2486 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
  8.2487 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
  8.2488 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
  8.2489 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.2490 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
  8.2491 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
  8.2492 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
  8.2493 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
  8.2494 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
  8.2495 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.2496 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
  8.2497 +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
  8.2498 +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
  8.2499 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
  8.2500 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.2501 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
  8.2502 +typedef void (APIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
  8.2503 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.2504 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
  8.2505 +typedef void (APIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
  8.2506 +typedef void (APIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
  8.2507 +typedef void (APIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target);
  8.2508 +typedef void (APIENTRY * PFNGLRESETMINMAXPROC) (GLenum target);
  8.2509 +typedef void (APIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  8.2510 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
  8.2511 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  8.2512 +#endif
  8.2513 +
  8.2514 +#ifndef GL_VERSION_1_3
  8.2515 +#define GL_VERSION_1_3 1
  8.2516 +#ifdef GL_GLEXT_PROTOTYPES
  8.2517 +GLAPI void APIENTRY glActiveTexture (GLenum);
  8.2518 +GLAPI void APIENTRY glClientActiveTexture (GLenum);
  8.2519 +GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
  8.2520 +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
  8.2521 +GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
  8.2522 +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
  8.2523 +GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
  8.2524 +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
  8.2525 +GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
  8.2526 +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
  8.2527 +GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
  8.2528 +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
  8.2529 +GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
  8.2530 +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
  8.2531 +GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
  8.2532 +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
  8.2533 +GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
  8.2534 +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
  8.2535 +GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
  8.2536 +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
  8.2537 +GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
  8.2538 +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
  8.2539 +GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
  8.2540 +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
  8.2541 +GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
  8.2542 +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
  8.2543 +GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
  8.2544 +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
  8.2545 +GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
  8.2546 +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
  8.2547 +GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
  8.2548 +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
  8.2549 +GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
  8.2550 +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
  8.2551 +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
  8.2552 +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
  8.2553 +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
  8.2554 +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
  8.2555 +GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
  8.2556 +GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
  8.2557 +GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
  8.2558 +GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
  8.2559 +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
  8.2560 +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
  8.2561 +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
  8.2562 +GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, void *);
  8.2563 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2564 +typedef void (APIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture);
  8.2565 +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
  8.2566 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
  8.2567 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
  8.2568 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
  8.2569 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
  8.2570 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
  8.2571 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
  8.2572 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
  8.2573 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
  8.2574 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
  8.2575 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
  8.2576 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
  8.2577 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
  8.2578 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
  8.2579 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
  8.2580 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
  8.2581 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
  8.2582 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
  8.2583 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
  8.2584 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
  8.2585 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
  8.2586 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
  8.2587 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
  8.2588 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
  8.2589 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
  8.2590 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
  8.2591 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
  8.2592 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
  8.2593 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
  8.2594 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
  8.2595 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
  8.2596 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
  8.2597 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
  8.2598 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
  8.2599 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
  8.2600 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
  8.2601 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
  8.2602 +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
  8.2603 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
  8.2604 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
  8.2605 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
  8.2606 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
  8.2607 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
  8.2608 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
  8.2609 +typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
  8.2610 +#endif
  8.2611 +
  8.2612 +#ifndef GL_VERSION_1_4
  8.2613 +#define GL_VERSION_1_4 1
  8.2614 +#ifdef GL_GLEXT_PROTOTYPES
  8.2615 +GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
  8.2616 +GLAPI void APIENTRY glFogCoordf (GLfloat);
  8.2617 +GLAPI void APIENTRY glFogCoordfv (const GLfloat *);
  8.2618 +GLAPI void APIENTRY glFogCoordd (GLdouble);
  8.2619 +GLAPI void APIENTRY glFogCoorddv (const GLdouble *);
  8.2620 +GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *);
  8.2621 +GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
  8.2622 +GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
  8.2623 +GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
  8.2624 +GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
  8.2625 +GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
  8.2626 +GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
  8.2627 +GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte);
  8.2628 +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *);
  8.2629 +GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble);
  8.2630 +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *);
  8.2631 +GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat);
  8.2632 +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *);
  8.2633 +GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint);
  8.2634 +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *);
  8.2635 +GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort);
  8.2636 +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *);
  8.2637 +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte);
  8.2638 +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *);
  8.2639 +GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint);
  8.2640 +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *);
  8.2641 +GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort);
  8.2642 +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *);
  8.2643 +GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *);
  8.2644 +GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble);
  8.2645 +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *);
  8.2646 +GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat);
  8.2647 +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *);
  8.2648 +GLAPI void APIENTRY glWindowPos2i (GLint, GLint);
  8.2649 +GLAPI void APIENTRY glWindowPos2iv (const GLint *);
  8.2650 +GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort);
  8.2651 +GLAPI void APIENTRY glWindowPos2sv (const GLshort *);
  8.2652 +GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble);
  8.2653 +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *);
  8.2654 +GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat);
  8.2655 +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *);
  8.2656 +GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint);
  8.2657 +GLAPI void APIENTRY glWindowPos3iv (const GLint *);
  8.2658 +GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort);
  8.2659 +GLAPI void APIENTRY glWindowPos3sv (const GLshort *);
  8.2660 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2661 +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
  8.2662 +typedef void (APIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord);
  8.2663 +typedef void (APIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
  8.2664 +typedef void (APIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord);
  8.2665 +typedef void (APIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
  8.2666 +typedef void (APIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
  8.2667 +typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
  8.2668 +typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
  8.2669 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
  8.2670 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
  8.2671 +typedef void (APIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
  8.2672 +typedef void (APIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
  8.2673 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
  8.2674 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
  8.2675 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
  8.2676 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
  8.2677 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
  8.2678 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
  8.2679 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
  8.2680 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
  8.2681 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
  8.2682 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
  8.2683 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
  8.2684 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
  8.2685 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
  8.2686 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
  8.2687 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
  8.2688 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
  8.2689 +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  8.2690 +typedef void (APIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
  8.2691 +typedef void (APIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
  8.2692 +typedef void (APIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
  8.2693 +typedef void (APIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
  8.2694 +typedef void (APIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
  8.2695 +typedef void (APIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *v);
  8.2696 +typedef void (APIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
  8.2697 +typedef void (APIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
  8.2698 +typedef void (APIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
  8.2699 +typedef void (APIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
  8.2700 +typedef void (APIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
  8.2701 +typedef void (APIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
  8.2702 +typedef void (APIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
  8.2703 +typedef void (APIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *v);
  8.2704 +typedef void (APIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
  8.2705 +typedef void (APIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
  8.2706 +#endif
  8.2707 +
  8.2708 +#ifndef GL_ARB_multitexture
  8.2709 +#define GL_ARB_multitexture 1
  8.2710 +#ifdef GL_GLEXT_PROTOTYPES
  8.2711 +GLAPI void APIENTRY glActiveTextureARB (GLenum);
  8.2712 +GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
  8.2713 +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
  8.2714 +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
  8.2715 +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
  8.2716 +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
  8.2717 +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
  8.2718 +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
  8.2719 +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
  8.2720 +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
  8.2721 +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
  8.2722 +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
  8.2723 +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
  8.2724 +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
  8.2725 +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
  8.2726 +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
  8.2727 +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
  8.2728 +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
  8.2729 +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
  8.2730 +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
  8.2731 +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
  8.2732 +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
  8.2733 +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
  8.2734 +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
  8.2735 +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
  8.2736 +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
  8.2737 +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
  8.2738 +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
  8.2739 +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
  8.2740 +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
  8.2741 +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
  8.2742 +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
  8.2743 +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
  8.2744 +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
  8.2745 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2746 +typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
  8.2747 +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
  8.2748 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
  8.2749 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
  8.2750 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
  8.2751 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
  8.2752 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
  8.2753 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
  8.2754 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
  8.2755 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
  8.2756 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
  8.2757 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
  8.2758 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
  8.2759 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
  8.2760 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
  8.2761 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
  8.2762 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
  8.2763 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
  8.2764 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
  8.2765 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
  8.2766 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
  8.2767 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
  8.2768 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
  8.2769 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
  8.2770 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
  8.2771 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
  8.2772 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
  8.2773 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
  8.2774 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
  8.2775 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
  8.2776 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
  8.2777 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
  8.2778 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
  8.2779 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
  8.2780 +#endif
  8.2781 +
  8.2782 +#ifndef GL_ARB_transpose_matrix
  8.2783 +#define GL_ARB_transpose_matrix 1
  8.2784 +#ifdef GL_GLEXT_PROTOTYPES
  8.2785 +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
  8.2786 +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
  8.2787 +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
  8.2788 +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
  8.2789 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2790 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
  8.2791 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
  8.2792 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
  8.2793 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
  8.2794 +#endif
  8.2795 +
  8.2796 +#ifndef GL_ARB_multisample
  8.2797 +#define GL_ARB_multisample 1
  8.2798 +#ifdef GL_GLEXT_PROTOTYPES
  8.2799 +GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
  8.2800 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2801 +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
  8.2802 +#endif
  8.2803 +
  8.2804 +#ifndef GL_ARB_texture_env_add
  8.2805 +#define GL_ARB_texture_env_add 1
  8.2806 +#endif
  8.2807 +
  8.2808 +#ifndef GL_ARB_texture_cube_map
  8.2809 +#define GL_ARB_texture_cube_map 1
  8.2810 +#endif
  8.2811 +
  8.2812 +#ifndef GL_ARB_texture_compression
  8.2813 +#define GL_ARB_texture_compression 1
  8.2814 +#ifdef GL_GLEXT_PROTOTYPES
  8.2815 +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
  8.2816 +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
  8.2817 +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
  8.2818 +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
  8.2819 +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
  8.2820 +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
  8.2821 +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, void *);
  8.2822 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2823 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
  8.2824 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
  8.2825 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
  8.2826 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
  8.2827 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
  8.2828 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
  8.2829 +typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
  8.2830 +#endif
  8.2831 +
  8.2832 +#ifndef GL_ARB_texture_border_clamp
  8.2833 +#define GL_ARB_texture_border_clamp 1
  8.2834 +#endif
  8.2835 +
  8.2836 +#ifndef GL_ARB_point_parameters
  8.2837 +#define GL_ARB_point_parameters 1
  8.2838 +#ifdef GL_GLEXT_PROTOTYPES
  8.2839 +GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
  8.2840 +GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
  8.2841 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2842 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
  8.2843 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
  8.2844 +#endif
  8.2845 +
  8.2846 +#ifndef GL_ARB_vertex_blend
  8.2847 +#define GL_ARB_vertex_blend 1
  8.2848 +#ifdef GL_GLEXT_PROTOTYPES
  8.2849 +GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
  8.2850 +GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
  8.2851 +GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
  8.2852 +GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
  8.2853 +GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
  8.2854 +GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
  8.2855 +GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
  8.2856 +GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
  8.2857 +GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
  8.2858 +GLAPI void APIENTRY glVertexBlendARB (GLint);
  8.2859 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2860 +typedef void (APIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
  8.2861 +typedef void (APIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
  8.2862 +typedef void (APIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
  8.2863 +typedef void (APIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
  8.2864 +typedef void (APIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
  8.2865 +typedef void (APIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
  8.2866 +typedef void (APIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
  8.2867 +typedef void (APIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
  8.2868 +typedef void (APIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  8.2869 +typedef void (APIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count);
  8.2870 +#endif
  8.2871 +
  8.2872 +#ifndef GL_ARB_matrix_palette
  8.2873 +#define GL_ARB_matrix_palette 1
  8.2874 +#ifdef GL_GLEXT_PROTOTYPES
  8.2875 +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
  8.2876 +GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
  8.2877 +GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
  8.2878 +GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
  8.2879 +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
  8.2880 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2881 +typedef void (APIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
  8.2882 +typedef void (APIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
  8.2883 +typedef void (APIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
  8.2884 +typedef void (APIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
  8.2885 +typedef void (APIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  8.2886 +#endif
  8.2887 +
  8.2888 +#ifndef GL_ARB_texture_env_combine
  8.2889 +#define GL_ARB_texture_env_combine 1
  8.2890 +#endif
  8.2891 +
  8.2892 +#ifndef GL_ARB_texture_env_crossbar
  8.2893 +#define GL_ARB_texture_env_crossbar 1
  8.2894 +#endif
  8.2895 +
  8.2896 +#ifndef GL_ARB_texture_env_dot3
  8.2897 +#define GL_ARB_texture_env_dot3 1
  8.2898 +#endif
  8.2899 +
  8.2900 +#ifndef GL_ARB_texture_mirror_repeat
  8.2901 +#define GL_ARB_texture_mirror_repeat 1
  8.2902 +#endif
  8.2903 +
  8.2904 +#ifndef GL_ARB_depth_texture
  8.2905 +#define GL_ARB_depth_texture 1
  8.2906 +#endif
  8.2907 +
  8.2908 +#ifndef GL_ARB_shadow
  8.2909 +#define GL_ARB_shadow 1
  8.2910 +#endif
  8.2911 +
  8.2912 +#ifndef GL_ARB_shadow_ambient
  8.2913 +#define GL_ARB_shadow_ambient 1
  8.2914 +#endif
  8.2915 +
  8.2916 +#ifndef GL_ARB_window_pos
  8.2917 +#define GL_ARB_window_pos 1
  8.2918 +#ifdef GL_GLEXT_PROTOTYPES
  8.2919 +GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
  8.2920 +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
  8.2921 +GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
  8.2922 +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
  8.2923 +GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
  8.2924 +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
  8.2925 +GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
  8.2926 +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
  8.2927 +GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
  8.2928 +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
  8.2929 +GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
  8.2930 +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
  8.2931 +GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
  8.2932 +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
  8.2933 +GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
  8.2934 +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
  8.2935 +#endif /* GL_GLEXT_PROTOTYPES */
  8.2936 +typedef void (APIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
  8.2937 +typedef void (APIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
  8.2938 +typedef void (APIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
  8.2939 +typedef void (APIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
  8.2940 +typedef void (APIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
  8.2941 +typedef void (APIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
  8.2942 +typedef void (APIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
  8.2943 +typedef void (APIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
  8.2944 +typedef void (APIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
  8.2945 +typedef void (APIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
  8.2946 +typedef void (APIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
  8.2947 +typedef void (APIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
  8.2948 +typedef void (APIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
  8.2949 +typedef void (APIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
  8.2950 +typedef void (APIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
  8.2951 +typedef void (APIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
  8.2952 +#endif
  8.2953 +
  8.2954 +#ifndef GL_ARB_vertex_program
  8.2955 +#define GL_ARB_vertex_program 1
  8.2956 +#ifdef GL_GLEXT_PROTOTYPES
  8.2957 +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble);
  8.2958 +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *);
  8.2959 +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat);
  8.2960 +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *);
  8.2961 +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort);
  8.2962 +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *);
  8.2963 +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble);
  8.2964 +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *);
  8.2965 +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat);
  8.2966 +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *);
  8.2967 +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort);
  8.2968 +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *);
  8.2969 +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble);
  8.2970 +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *);
  8.2971 +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat);
  8.2972 +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *);
  8.2973 +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort);
  8.2974 +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *);
  8.2975 +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *);
  8.2976 +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *);
  8.2977 +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *);
  8.2978 +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
  8.2979 +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *);
  8.2980 +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *);
  8.2981 +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *);
  8.2982 +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *);
  8.2983 +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
  8.2984 +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *);
  8.2985 +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
  8.2986 +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *);
  8.2987 +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *);
  8.2988 +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort);
  8.2989 +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *);
  8.2990 +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *);
  8.2991 +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *);
  8.2992 +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *);
  8.2993 +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
  8.2994 +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint);
  8.2995 +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint);
  8.2996 +GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
  8.2997 +GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint);
  8.2998 +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *);
  8.2999 +GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *);
  8.3000 +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
  8.3001 +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *);
  8.3002 +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
  8.3003 +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *);
  8.3004 +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
  8.3005 +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *);
  8.3006 +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
  8.3007 +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *);
  8.3008 +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *);
  8.3009 +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *);
  8.3010 +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *);
  8.3011 +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *);
  8.3012 +GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *);
  8.3013 +GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *);
  8.3014 +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *);
  8.3015 +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *);
  8.3016 +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *);
  8.3017 +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *);
  8.3018 +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint);
  8.3019 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3020 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
  8.3021 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
  8.3022 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
  8.3023 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
  8.3024 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
  8.3025 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
  8.3026 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
  8.3027 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
  8.3028 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
  8.3029 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
  8.3030 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
  8.3031 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
  8.3032 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
  8.3033 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
  8.3034 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
  8.3035 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
  8.3036 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
  8.3037 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
  8.3038 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
  8.3039 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
  8.3040 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
  8.3041 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
  8.3042 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
  8.3043 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
  8.3044 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
  8.3045 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
  8.3046 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.3047 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
  8.3048 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.3049 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
  8.3050 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
  8.3051 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
  8.3052 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
  8.3053 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
  8.3054 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
  8.3055 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
  8.3056 +typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
  8.3057 +typedef void (APIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
  8.3058 +typedef void (APIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
  8.3059 +typedef void (APIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
  8.3060 +typedef void (APIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
  8.3061 +typedef void (APIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
  8.3062 +typedef void (APIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
  8.3063 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.3064 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
  8.3065 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.3066 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
  8.3067 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.3068 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
  8.3069 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.3070 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
  8.3071 +typedef void (APIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
  8.3072 +typedef void (APIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
  8.3073 +typedef void (APIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
  8.3074 +typedef void (APIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
  8.3075 +typedef void (APIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
  8.3076 +typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
  8.3077 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
  8.3078 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
  8.3079 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
  8.3080 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
  8.3081 +typedef GLboolean (APIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program);
  8.3082 +#endif
  8.3083 +
  8.3084 +#ifndef GL_EXT_abgr
  8.3085 +#define GL_EXT_abgr 1
  8.3086 +#endif
  8.3087 +
  8.3088 +#ifndef GL_EXT_blend_color
  8.3089 +#define GL_EXT_blend_color 1
  8.3090 +#ifdef GL_GLEXT_PROTOTYPES
  8.3091 +GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
  8.3092 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3093 +typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
  8.3094 +#endif
  8.3095 +
  8.3096 +#ifndef GL_EXT_polygon_offset
  8.3097 +#define GL_EXT_polygon_offset 1
  8.3098 +#ifdef GL_GLEXT_PROTOTYPES
  8.3099 +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
  8.3100 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3101 +typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
  8.3102 +#endif
  8.3103 +
  8.3104 +#ifndef GL_EXT_texture
  8.3105 +#define GL_EXT_texture 1
  8.3106 +#endif
  8.3107 +
  8.3108 +#ifndef GL_EXT_texture3D
  8.3109 +#define GL_EXT_texture3D 1
  8.3110 +#ifdef GL_GLEXT_PROTOTYPES
  8.3111 +GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
  8.3112 +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3113 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3114 +typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  8.3115 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
  8.3116 +#endif
  8.3117 +
  8.3118 +#ifndef GL_SGIS_texture_filter4
  8.3119 +#define GL_SGIS_texture_filter4 1
  8.3120 +#ifdef GL_GLEXT_PROTOTYPES
  8.3121 +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
  8.3122 +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
  8.3123 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3124 +typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
  8.3125 +typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
  8.3126 +#endif
  8.3127 +
  8.3128 +#ifndef GL_EXT_subtexture
  8.3129 +#define GL_EXT_subtexture 1
  8.3130 +#ifdef GL_GLEXT_PROTOTYPES
  8.3131 +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3132 +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3133 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3134 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
  8.3135 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
  8.3136 +#endif
  8.3137 +
  8.3138 +#ifndef GL_EXT_copy_texture
  8.3139 +#define GL_EXT_copy_texture 1
  8.3140 +#ifdef GL_GLEXT_PROTOTYPES
  8.3141 +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
  8.3142 +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
  8.3143 +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
  8.3144 +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
  8.3145 +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
  8.3146 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3147 +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
  8.3148 +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
  8.3149 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
  8.3150 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  8.3151 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  8.3152 +#endif
  8.3153 +
  8.3154 +#ifndef GL_EXT_histogram
  8.3155 +#define GL_EXT_histogram 1
  8.3156 +#ifdef GL_GLEXT_PROTOTYPES
  8.3157 +GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
  8.3158 +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
  8.3159 +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
  8.3160 +GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
  8.3161 +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
  8.3162 +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
  8.3163 +GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
  8.3164 +GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
  8.3165 +GLAPI void APIENTRY glResetHistogramEXT (GLenum);
  8.3166 +GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
  8.3167 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3168 +typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
  8.3169 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.3170 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
  8.3171 +typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
  8.3172 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.3173 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
  8.3174 +typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
  8.3175 +typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
  8.3176 +typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
  8.3177 +typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target);
  8.3178 +#endif
  8.3179 +
  8.3180 +#ifndef GL_EXT_convolution
  8.3181 +#define GL_EXT_convolution 1
  8.3182 +#ifdef GL_GLEXT_PROTOTYPES
  8.3183 +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3184 +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3185 +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
  8.3186 +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
  8.3187 +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
  8.3188 +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
  8.3189 +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
  8.3190 +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
  8.3191 +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
  8.3192 +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
  8.3193 +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
  8.3194 +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
  8.3195 +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
  8.3196 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3197 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
  8.3198 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
  8.3199 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
  8.3200 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.3201 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
  8.3202 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
  8.3203 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
  8.3204 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
  8.3205 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
  8.3206 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.3207 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
  8.3208 +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
  8.3209 +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
  8.3210 +#endif
  8.3211 +
  8.3212 +#ifndef GL_EXT_color_matrix
  8.3213 +#define GL_EXT_color_matrix 1
  8.3214 +#endif
  8.3215 +
  8.3216 +#ifndef GL_SGI_color_table
  8.3217 +#define GL_SGI_color_table 1
  8.3218 +#ifdef GL_GLEXT_PROTOTYPES
  8.3219 +GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3220 +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
  8.3221 +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
  8.3222 +GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
  8.3223 +GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
  8.3224 +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
  8.3225 +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
  8.3226 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3227 +typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
  8.3228 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.3229 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
  8.3230 +typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
  8.3231 +typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
  8.3232 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.3233 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
  8.3234 +#endif
  8.3235 +
  8.3236 +#ifndef GL_SGIX_pixel_texture
  8.3237 +#define GL_SGIX_pixel_texture 1
  8.3238 +#ifdef GL_GLEXT_PROTOTYPES
  8.3239 +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
  8.3240 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3241 +typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
  8.3242 +#endif
  8.3243 +
  8.3244 +#ifndef GL_SGIS_pixel_texture
  8.3245 +#define GL_SGIS_pixel_texture 1
  8.3246 +#ifdef GL_GLEXT_PROTOTYPES
  8.3247 +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
  8.3248 +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
  8.3249 +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
  8.3250 +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
  8.3251 +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
  8.3252 +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
  8.3253 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3254 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
  8.3255 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
  8.3256 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
  8.3257 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
  8.3258 +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
  8.3259 +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
  8.3260 +#endif
  8.3261 +
  8.3262 +#ifndef GL_SGIS_texture4D
  8.3263 +#define GL_SGIS_texture4D 1
  8.3264 +#ifdef GL_GLEXT_PROTOTYPES
  8.3265 +GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
  8.3266 +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3267 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3268 +typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
  8.3269 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
  8.3270 +#endif
  8.3271 +
  8.3272 +#ifndef GL_SGI_texture_color_table
  8.3273 +#define GL_SGI_texture_color_table 1
  8.3274 +#endif
  8.3275 +
  8.3276 +#ifndef GL_EXT_cmyka
  8.3277 +#define GL_EXT_cmyka 1
  8.3278 +#endif
  8.3279 +
  8.3280 +#ifndef GL_EXT_texture_object
  8.3281 +#define GL_EXT_texture_object 1
  8.3282 +#ifdef GL_GLEXT_PROTOTYPES
  8.3283 +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
  8.3284 +GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
  8.3285 +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
  8.3286 +GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
  8.3287 +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
  8.3288 +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
  8.3289 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3290 +typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
  8.3291 +typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
  8.3292 +typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
  8.3293 +typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
  8.3294 +typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture);
  8.3295 +typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
  8.3296 +#endif
  8.3297 +
  8.3298 +#ifndef GL_SGIS_detail_texture
  8.3299 +#define GL_SGIS_detail_texture 1
  8.3300 +#ifdef GL_GLEXT_PROTOTYPES
  8.3301 +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
  8.3302 +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
  8.3303 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3304 +typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
  8.3305 +typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
  8.3306 +#endif
  8.3307 +
  8.3308 +#ifndef GL_SGIS_sharpen_texture
  8.3309 +#define GL_SGIS_sharpen_texture 1
  8.3310 +#ifdef GL_GLEXT_PROTOTYPES
  8.3311 +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
  8.3312 +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
  8.3313 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3314 +typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
  8.3315 +typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
  8.3316 +#endif
  8.3317 +
  8.3318 +#ifndef GL_EXT_packed_pixels
  8.3319 +#define GL_EXT_packed_pixels 1
  8.3320 +#endif
  8.3321 +
  8.3322 +#ifndef GL_SGIS_texture_lod
  8.3323 +#define GL_SGIS_texture_lod 1
  8.3324 +#endif
  8.3325 +
  8.3326 +#ifndef GL_SGIS_multisample
  8.3327 +#define GL_SGIS_multisample 1
  8.3328 +#ifdef GL_GLEXT_PROTOTYPES
  8.3329 +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
  8.3330 +GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
  8.3331 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3332 +typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
  8.3333 +typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
  8.3334 +#endif
  8.3335 +
  8.3336 +#ifndef GL_EXT_rescale_normal
  8.3337 +#define GL_EXT_rescale_normal 1
  8.3338 +#endif
  8.3339 +
  8.3340 +#ifndef GL_EXT_vertex_array
  8.3341 +#define GL_EXT_vertex_array 1
  8.3342 +#ifdef GL_GLEXT_PROTOTYPES
  8.3343 +GLAPI void APIENTRY glArrayElementEXT (GLint);
  8.3344 +GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
  8.3345 +GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
  8.3346 +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
  8.3347 +GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
  8.3348 +GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
  8.3349 +GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
  8.3350 +GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
  8.3351 +GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
  8.3352 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3353 +typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
  8.3354 +typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  8.3355 +typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
  8.3356 +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
  8.3357 +typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
  8.3358 +typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  8.3359 +typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  8.3360 +typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  8.3361 +typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
  8.3362 +#endif
  8.3363 +
  8.3364 +#ifndef GL_EXT_misc_attribute
  8.3365 +#define GL_EXT_misc_attribute 1
  8.3366 +#endif
  8.3367 +
  8.3368 +#ifndef GL_SGIS_generate_mipmap
  8.3369 +#define GL_SGIS_generate_mipmap 1
  8.3370 +#endif
  8.3371 +
  8.3372 +#ifndef GL_SGIX_clipmap
  8.3373 +#define GL_SGIX_clipmap 1
  8.3374 +#endif
  8.3375 +
  8.3376 +#ifndef GL_SGIX_shadow
  8.3377 +#define GL_SGIX_shadow 1
  8.3378 +#endif
  8.3379 +
  8.3380 +#ifndef GL_SGIS_texture_edge_clamp
  8.3381 +#define GL_SGIS_texture_edge_clamp 1
  8.3382 +#endif
  8.3383 +
  8.3384 +#ifndef GL_SGIS_texture_border_clamp
  8.3385 +#define GL_SGIS_texture_border_clamp 1
  8.3386 +#endif
  8.3387 +
  8.3388 +#ifndef GL_EXT_blend_minmax
  8.3389 +#define GL_EXT_blend_minmax 1
  8.3390 +#ifdef GL_GLEXT_PROTOTYPES
  8.3391 +GLAPI void APIENTRY glBlendEquationEXT (GLenum);
  8.3392 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3393 +typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
  8.3394 +#endif
  8.3395 +
  8.3396 +#ifndef GL_EXT_blend_subtract
  8.3397 +#define GL_EXT_blend_subtract 1
  8.3398 +#endif
  8.3399 +
  8.3400 +#ifndef GL_EXT_blend_logic_op
  8.3401 +#define GL_EXT_blend_logic_op 1
  8.3402 +#endif
  8.3403 +
  8.3404 +#ifndef GL_SGIX_interlace
  8.3405 +#define GL_SGIX_interlace 1
  8.3406 +#endif
  8.3407 +
  8.3408 +#ifndef GL_SGIX_pixel_tiles
  8.3409 +#define GL_SGIX_pixel_tiles 1
  8.3410 +#endif
  8.3411 +
  8.3412 +#ifndef GL_SGIX_texture_select
  8.3413 +#define GL_SGIX_texture_select 1
  8.3414 +#endif
  8.3415 +
  8.3416 +#ifndef GL_SGIX_sprite
  8.3417 +#define GL_SGIX_sprite 1
  8.3418 +#ifdef GL_GLEXT_PROTOTYPES
  8.3419 +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
  8.3420 +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
  8.3421 +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
  8.3422 +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
  8.3423 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3424 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
  8.3425 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
  8.3426 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
  8.3427 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
  8.3428 +#endif
  8.3429 +
  8.3430 +#ifndef GL_SGIX_texture_multi_buffer
  8.3431 +#define GL_SGIX_texture_multi_buffer 1
  8.3432 +#endif
  8.3433 +
  8.3434 +#ifndef GL_EXT_point_parameters
  8.3435 +#define GL_EXT_point_parameters 1
  8.3436 +#ifdef GL_GLEXT_PROTOTYPES
  8.3437 +GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
  8.3438 +GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
  8.3439 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3440 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
  8.3441 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
  8.3442 +#endif
  8.3443 +
  8.3444 +#ifndef GL_SGIS_point_parameters
  8.3445 +#define GL_SGIS_point_parameters 1
  8.3446 +#ifdef GL_GLEXT_PROTOTYPES
  8.3447 +GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
  8.3448 +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
  8.3449 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3450 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
  8.3451 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
  8.3452 +#endif
  8.3453 +
  8.3454 +#ifndef GL_SGIX_instruments
  8.3455 +#define GL_SGIX_instruments 1
  8.3456 +#ifdef GL_GLEXT_PROTOTYPES
  8.3457 +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
  8.3458 +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
  8.3459 +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
  8.3460 +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
  8.3461 +GLAPI void APIENTRY glStartInstrumentsSGIX (void);
  8.3462 +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
  8.3463 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3464 +typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void);
  8.3465 +typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
  8.3466 +typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
  8.3467 +typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
  8.3468 +typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
  8.3469 +typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
  8.3470 +#endif
  8.3471 +
  8.3472 +#ifndef GL_SGIX_texture_scale_bias
  8.3473 +#define GL_SGIX_texture_scale_bias 1
  8.3474 +#endif
  8.3475 +
  8.3476 +#ifndef GL_SGIX_framezoom
  8.3477 +#define GL_SGIX_framezoom 1
  8.3478 +#ifdef GL_GLEXT_PROTOTYPES
  8.3479 +GLAPI void APIENTRY glFrameZoomSGIX (GLint);
  8.3480 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3481 +typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
  8.3482 +#endif
  8.3483 +
  8.3484 +#ifndef GL_SGIX_tag_sample_buffer
  8.3485 +#define GL_SGIX_tag_sample_buffer 1
  8.3486 +#ifdef GL_GLEXT_PROTOTYPES
  8.3487 +GLAPI void APIENTRY glTagSampleBufferSGIX (void);
  8.3488 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3489 +typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
  8.3490 +#endif
  8.3491 +
  8.3492 +#ifndef GL_SGIX_polynomial_ffd
  8.3493 +#define GL_SGIX_polynomial_ffd 1
  8.3494 +#ifdef GL_GLEXT_PROTOTYPES
  8.3495 +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
  8.3496 +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
  8.3497 +GLAPI void APIENTRY glDeformSGIX (GLbitfield);
  8.3498 +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
  8.3499 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3500 +typedef void (APIENTRY * PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
  8.3501 +typedef void (APIENTRY * PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
  8.3502 +typedef void (APIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask);
  8.3503 +typedef void (APIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
  8.3504 +#endif
  8.3505 +
  8.3506 +#ifndef GL_SGIX_reference_plane
  8.3507 +#define GL_SGIX_reference_plane 1
  8.3508 +#ifdef GL_GLEXT_PROTOTYPES
  8.3509 +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
  8.3510 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3511 +typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
  8.3512 +#endif
  8.3513 +
  8.3514 +#ifndef GL_SGIX_flush_raster
  8.3515 +#define GL_SGIX_flush_raster 1
  8.3516 +#ifdef GL_GLEXT_PROTOTYPES
  8.3517 +GLAPI void APIENTRY glFlushRasterSGIX (void);
  8.3518 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3519 +typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
  8.3520 +#endif
  8.3521 +
  8.3522 +#ifndef GL_SGIX_depth_texture
  8.3523 +#define GL_SGIX_depth_texture 1
  8.3524 +#endif
  8.3525 +
  8.3526 +#ifndef GL_SGIS_fog_function
  8.3527 +#define GL_SGIS_fog_function 1
  8.3528 +#ifdef GL_GLEXT_PROTOTYPES
  8.3529 +GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
  8.3530 +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
  8.3531 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3532 +typedef void (APIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
  8.3533 +typedef void (APIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
  8.3534 +#endif
  8.3535 +
  8.3536 +#ifndef GL_SGIX_fog_offset
  8.3537 +#define GL_SGIX_fog_offset 1
  8.3538 +#endif
  8.3539 +
  8.3540 +#ifndef GL_HP_image_transform
  8.3541 +#define GL_HP_image_transform 1
  8.3542 +#ifdef GL_GLEXT_PROTOTYPES
  8.3543 +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
  8.3544 +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
  8.3545 +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
  8.3546 +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
  8.3547 +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
  8.3548 +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
  8.3549 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3550 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
  8.3551 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
  8.3552 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
  8.3553 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.3554 +typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
  8.3555 +typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.3556 +#endif
  8.3557 +
  8.3558 +#ifndef GL_HP_convolution_border_modes
  8.3559 +#define GL_HP_convolution_border_modes 1
  8.3560 +#endif
  8.3561 +
  8.3562 +#ifndef GL_SGIX_texture_add_env
  8.3563 +#define GL_SGIX_texture_add_env 1
  8.3564 +#endif
  8.3565 +
  8.3566 +#ifndef GL_EXT_color_subtable
  8.3567 +#define GL_EXT_color_subtable 1
  8.3568 +#ifdef GL_GLEXT_PROTOTYPES
  8.3569 +GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3570 +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
  8.3571 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3572 +typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
  8.3573 +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
  8.3574 +#endif
  8.3575 +
  8.3576 +#ifndef GL_PGI_vertex_hints
  8.3577 +#define GL_PGI_vertex_hints 1
  8.3578 +#endif
  8.3579 +
  8.3580 +#ifndef GL_PGI_misc_hints
  8.3581 +#define GL_PGI_misc_hints 1
  8.3582 +#ifdef GL_GLEXT_PROTOTYPES
  8.3583 +GLAPI void APIENTRY glHintPGI (GLenum, GLint);
  8.3584 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3585 +typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode);
  8.3586 +#endif
  8.3587 +
  8.3588 +#ifndef GL_EXT_paletted_texture
  8.3589 +#define GL_EXT_paletted_texture 1
  8.3590 +#ifdef GL_GLEXT_PROTOTYPES
  8.3591 +GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
  8.3592 +GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
  8.3593 +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
  8.3594 +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
  8.3595 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3596 +typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
  8.3597 +typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
  8.3598 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
  8.3599 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.3600 +#endif
  8.3601 +
  8.3602 +#ifndef GL_EXT_clip_volume_hint
  8.3603 +#define GL_EXT_clip_volume_hint 1
  8.3604 +#endif
  8.3605 +
  8.3606 +#ifndef GL_SGIX_list_priority
  8.3607 +#define GL_SGIX_list_priority 1
  8.3608 +#ifdef GL_GLEXT_PROTOTYPES
  8.3609 +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
  8.3610 +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
  8.3611 +GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
  8.3612 +GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
  8.3613 +GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
  8.3614 +GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
  8.3615 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3616 +typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
  8.3617 +typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
  8.3618 +typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
  8.3619 +typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
  8.3620 +typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
  8.3621 +typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
  8.3622 +#endif
  8.3623 +
  8.3624 +#ifndef GL_SGIX_ir_instrument1
  8.3625 +#define GL_SGIX_ir_instrument1 1
  8.3626 +#endif
  8.3627 +
  8.3628 +#ifndef GL_SGIX_calligraphic_fragment
  8.3629 +#define GL_SGIX_calligraphic_fragment 1
  8.3630 +#endif
  8.3631 +
  8.3632 +#ifndef GL_SGIX_texture_lod_bias
  8.3633 +#define GL_SGIX_texture_lod_bias 1
  8.3634 +#endif
  8.3635 +
  8.3636 +#ifndef GL_SGIX_shadow_ambient
  8.3637 +#define GL_SGIX_shadow_ambient 1
  8.3638 +#endif
  8.3639 +
  8.3640 +#ifndef GL_EXT_index_texture
  8.3641 +#define GL_EXT_index_texture 1
  8.3642 +#endif
  8.3643 +
  8.3644 +#ifndef GL_EXT_index_material
  8.3645 +#define GL_EXT_index_material 1
  8.3646 +#ifdef GL_GLEXT_PROTOTYPES
  8.3647 +GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
  8.3648 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3649 +typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
  8.3650 +#endif
  8.3651 +
  8.3652 +#ifndef GL_EXT_index_func
  8.3653 +#define GL_EXT_index_func 1
  8.3654 +#ifdef GL_GLEXT_PROTOTYPES
  8.3655 +GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
  8.3656 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3657 +typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
  8.3658 +#endif
  8.3659 +
  8.3660 +#ifndef GL_EXT_index_array_formats
  8.3661 +#define GL_EXT_index_array_formats 1
  8.3662 +#endif
  8.3663 +
  8.3664 +#ifndef GL_EXT_compiled_vertex_array
  8.3665 +#define GL_EXT_compiled_vertex_array 1
  8.3666 +#ifdef GL_GLEXT_PROTOTYPES
  8.3667 +GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
  8.3668 +GLAPI void APIENTRY glUnlockArraysEXT (void);
  8.3669 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3670 +typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
  8.3671 +typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);
  8.3672 +#endif
  8.3673 +
  8.3674 +#ifndef GL_EXT_cull_vertex
  8.3675 +#define GL_EXT_cull_vertex 1
  8.3676 +#ifdef GL_GLEXT_PROTOTYPES
  8.3677 +GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
  8.3678 +GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
  8.3679 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3680 +typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
  8.3681 +typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
  8.3682 +#endif
  8.3683 +
  8.3684 +#ifndef GL_SGIX_ycrcb
  8.3685 +#define GL_SGIX_ycrcb 1
  8.3686 +#endif
  8.3687 +
  8.3688 +#ifndef GL_SGIX_fragment_lighting
  8.3689 +#define GL_SGIX_fragment_lighting 1
  8.3690 +#ifdef GL_GLEXT_PROTOTYPES
  8.3691 +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
  8.3692 +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
  8.3693 +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
  8.3694 +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
  8.3695 +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
  8.3696 +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
  8.3697 +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
  8.3698 +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
  8.3699 +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
  8.3700 +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
  8.3701 +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
  8.3702 +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
  8.3703 +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
  8.3704 +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
  8.3705 +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
  8.3706 +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
  8.3707 +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
  8.3708 +GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
  8.3709 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3710 +typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
  8.3711 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
  8.3712 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
  8.3713 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
  8.3714 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
  8.3715 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
  8.3716 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
  8.3717 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
  8.3718 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
  8.3719 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
  8.3720 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
  8.3721 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
  8.3722 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
  8.3723 +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
  8.3724 +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
  8.3725 +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
  8.3726 +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
  8.3727 +typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
  8.3728 +#endif
  8.3729 +
  8.3730 +#ifndef GL_IBM_rasterpos_clip
  8.3731 +#define GL_IBM_rasterpos_clip 1
  8.3732 +#endif
  8.3733 +
  8.3734 +#ifndef GL_HP_texture_lighting
  8.3735 +#define GL_HP_texture_lighting 1
  8.3736 +#endif
  8.3737 +
  8.3738 +#ifndef GL_EXT_draw_range_elements
  8.3739 +#define GL_EXT_draw_range_elements 1
  8.3740 +#ifdef GL_GLEXT_PROTOTYPES
  8.3741 +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
  8.3742 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3743 +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
  8.3744 +#endif
  8.3745 +
  8.3746 +#ifndef GL_WIN_phong_shading
  8.3747 +#define GL_WIN_phong_shading 1
  8.3748 +#endif
  8.3749 +
  8.3750 +#ifndef GL_WIN_specular_fog
  8.3751 +#define GL_WIN_specular_fog 1
  8.3752 +#endif
  8.3753 +
  8.3754 +#ifndef GL_EXT_light_texture
  8.3755 +#define GL_EXT_light_texture 1
  8.3756 +#ifdef GL_GLEXT_PROTOTYPES
  8.3757 +GLAPI void APIENTRY glApplyTextureEXT (GLenum);
  8.3758 +GLAPI void APIENTRY glTextureLightEXT (GLenum);
  8.3759 +GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
  8.3760 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3761 +typedef void (APIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
  8.3762 +typedef void (APIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
  8.3763 +typedef void (APIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
  8.3764 +#endif
  8.3765 +
  8.3766 +#ifndef GL_SGIX_blend_alpha_minmax
  8.3767 +#define GL_SGIX_blend_alpha_minmax 1
  8.3768 +#endif
  8.3769 +
  8.3770 +#ifndef GL_EXT_bgra
  8.3771 +#define GL_EXT_bgra 1
  8.3772 +#endif
  8.3773 +
  8.3774 +#ifndef GL_SGIX_async
  8.3775 +#define GL_SGIX_async 1
  8.3776 +#ifdef GL_GLEXT_PROTOTYPES
  8.3777 +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
  8.3778 +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
  8.3779 +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
  8.3780 +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
  8.3781 +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
  8.3782 +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
  8.3783 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3784 +typedef void (APIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
  8.3785 +typedef GLint (APIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
  8.3786 +typedef GLint (APIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
  8.3787 +typedef GLuint (APIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
  8.3788 +typedef void (APIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
  8.3789 +typedef GLboolean (APIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
  8.3790 +#endif
  8.3791 +
  8.3792 +#ifndef GL_SGIX_async_pixel
  8.3793 +#define GL_SGIX_async_pixel 1
  8.3794 +#endif
  8.3795 +
  8.3796 +#ifndef GL_SGIX_async_histogram
  8.3797 +#define GL_SGIX_async_histogram 1
  8.3798 +#endif
  8.3799 +
  8.3800 +#ifndef GL_INTEL_parallel_arrays
  8.3801 +#define GL_INTEL_parallel_arrays 1
  8.3802 +#ifdef GL_GLEXT_PROTOTYPES
  8.3803 +GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
  8.3804 +GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
  8.3805 +GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
  8.3806 +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
  8.3807 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3808 +typedef void (APIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
  8.3809 +typedef void (APIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
  8.3810 +typedef void (APIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
  8.3811 +typedef void (APIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
  8.3812 +#endif
  8.3813 +
  8.3814 +#ifndef GL_HP_occlusion_test
  8.3815 +#define GL_HP_occlusion_test 1
  8.3816 +#endif
  8.3817 +
  8.3818 +#ifndef GL_EXT_pixel_transform
  8.3819 +#define GL_EXT_pixel_transform 1
  8.3820 +#ifdef GL_GLEXT_PROTOTYPES
  8.3821 +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
  8.3822 +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
  8.3823 +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
  8.3824 +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
  8.3825 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3826 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
  8.3827 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
  8.3828 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
  8.3829 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.3830 +#endif
  8.3831 +
  8.3832 +#ifndef GL_EXT_pixel_transform_color_table
  8.3833 +#define GL_EXT_pixel_transform_color_table 1
  8.3834 +#endif
  8.3835 +
  8.3836 +#ifndef GL_EXT_shared_texture_palette
  8.3837 +#define GL_EXT_shared_texture_palette 1
  8.3838 +#endif
  8.3839 +
  8.3840 +#ifndef GL_EXT_separate_specular_color
  8.3841 +#define GL_EXT_separate_specular_color 1
  8.3842 +#endif
  8.3843 +
  8.3844 +#ifndef GL_EXT_secondary_color
  8.3845 +#define GL_EXT_secondary_color 1
  8.3846 +#ifdef GL_GLEXT_PROTOTYPES
  8.3847 +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
  8.3848 +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
  8.3849 +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
  8.3850 +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
  8.3851 +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
  8.3852 +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
  8.3853 +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
  8.3854 +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
  8.3855 +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
  8.3856 +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
  8.3857 +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
  8.3858 +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
  8.3859 +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
  8.3860 +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
  8.3861 +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
  8.3862 +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
  8.3863 +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
  8.3864 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3865 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
  8.3866 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
  8.3867 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
  8.3868 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
  8.3869 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
  8.3870 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
  8.3871 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
  8.3872 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
  8.3873 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
  8.3874 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
  8.3875 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
  8.3876 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
  8.3877 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
  8.3878 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
  8.3879 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
  8.3880 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
  8.3881 +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
  8.3882 +#endif
  8.3883 +
  8.3884 +#ifndef GL_EXT_texture_perturb_normal
  8.3885 +#define GL_EXT_texture_perturb_normal 1
  8.3886 +#ifdef GL_GLEXT_PROTOTYPES
  8.3887 +GLAPI void APIENTRY glTextureNormalEXT (GLenum);
  8.3888 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3889 +typedef void (APIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
  8.3890 +#endif
  8.3891 +
  8.3892 +#ifndef GL_EXT_multi_draw_arrays
  8.3893 +#define GL_EXT_multi_draw_arrays 1
  8.3894 +#ifdef GL_GLEXT_PROTOTYPES
  8.3895 +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
  8.3896 +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
  8.3897 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3898 +typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
  8.3899 +typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
  8.3900 +#endif
  8.3901 +
  8.3902 +#ifndef GL_EXT_fog_coord
  8.3903 +#define GL_EXT_fog_coord 1
  8.3904 +#ifdef GL_GLEXT_PROTOTYPES
  8.3905 +GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
  8.3906 +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
  8.3907 +GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
  8.3908 +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
  8.3909 +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
  8.3910 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3911 +typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
  8.3912 +typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
  8.3913 +typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
  8.3914 +typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
  8.3915 +typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
  8.3916 +#endif
  8.3917 +
  8.3918 +#ifndef GL_REND_screen_coordinates
  8.3919 +#define GL_REND_screen_coordinates 1
  8.3920 +#endif
  8.3921 +
  8.3922 +#ifndef GL_EXT_coordinate_frame
  8.3923 +#define GL_EXT_coordinate_frame 1
  8.3924 +#ifdef GL_GLEXT_PROTOTYPES
  8.3925 +GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
  8.3926 +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
  8.3927 +GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
  8.3928 +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
  8.3929 +GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
  8.3930 +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
  8.3931 +GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
  8.3932 +GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
  8.3933 +GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
  8.3934 +GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
  8.3935 +GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
  8.3936 +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
  8.3937 +GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
  8.3938 +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
  8.3939 +GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
  8.3940 +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
  8.3941 +GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
  8.3942 +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
  8.3943 +GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
  8.3944 +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
  8.3945 +GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
  8.3946 +GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
  8.3947 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3948 +typedef void (APIENTRY * PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
  8.3949 +typedef void (APIENTRY * PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
  8.3950 +typedef void (APIENTRY * PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
  8.3951 +typedef void (APIENTRY * PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
  8.3952 +typedef void (APIENTRY * PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
  8.3953 +typedef void (APIENTRY * PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
  8.3954 +typedef void (APIENTRY * PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
  8.3955 +typedef void (APIENTRY * PFNGLTANGENT3IVEXTPROC) (const GLint *v);
  8.3956 +typedef void (APIENTRY * PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
  8.3957 +typedef void (APIENTRY * PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
  8.3958 +typedef void (APIENTRY * PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
  8.3959 +typedef void (APIENTRY * PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
  8.3960 +typedef void (APIENTRY * PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
  8.3961 +typedef void (APIENTRY * PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
  8.3962 +typedef void (APIENTRY * PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
  8.3963 +typedef void (APIENTRY * PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
  8.3964 +typedef void (APIENTRY * PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
  8.3965 +typedef void (APIENTRY * PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
  8.3966 +typedef void (APIENTRY * PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
  8.3967 +typedef void (APIENTRY * PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
  8.3968 +typedef void (APIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
  8.3969 +typedef void (APIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
  8.3970 +#endif
  8.3971 +
  8.3972 +#ifndef GL_EXT_texture_env_combine
  8.3973 +#define GL_EXT_texture_env_combine 1
  8.3974 +#endif
  8.3975 +
  8.3976 +#ifndef GL_APPLE_specular_vector
  8.3977 +#define GL_APPLE_specular_vector 1
  8.3978 +#endif
  8.3979 +
  8.3980 +#ifndef GL_APPLE_transform_hint
  8.3981 +#define GL_APPLE_transform_hint 1
  8.3982 +#endif
  8.3983 +
  8.3984 +#ifndef GL_SGIX_fog_scale
  8.3985 +#define GL_SGIX_fog_scale 1
  8.3986 +#endif
  8.3987 +
  8.3988 +#ifndef GL_SUNX_constant_data
  8.3989 +#define GL_SUNX_constant_data 1
  8.3990 +#ifdef GL_GLEXT_PROTOTYPES
  8.3991 +GLAPI void APIENTRY glFinishTextureSUNX (void);
  8.3992 +#endif /* GL_GLEXT_PROTOTYPES */
  8.3993 +typedef void (APIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void);
  8.3994 +#endif
  8.3995 +
  8.3996 +#ifndef GL_SUN_global_alpha
  8.3997 +#define GL_SUN_global_alpha 1
  8.3998 +#ifdef GL_GLEXT_PROTOTYPES
  8.3999 +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
  8.4000 +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
  8.4001 +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
  8.4002 +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
  8.4003 +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
  8.4004 +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
  8.4005 +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
  8.4006 +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
  8.4007 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4008 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
  8.4009 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
  8.4010 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
  8.4011 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
  8.4012 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
  8.4013 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
  8.4014 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
  8.4015 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
  8.4016 +#endif
  8.4017 +
  8.4018 +#ifndef GL_SUN_triangle_list
  8.4019 +#define GL_SUN_triangle_list 1
  8.4020 +#ifdef GL_GLEXT_PROTOTYPES
  8.4021 +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
  8.4022 +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
  8.4023 +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
  8.4024 +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
  8.4025 +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
  8.4026 +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
  8.4027 +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
  8.4028 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4029 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
  8.4030 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
  8.4031 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
  8.4032 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
  8.4033 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
  8.4034 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
  8.4035 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
  8.4036 +#endif
  8.4037 +
  8.4038 +#ifndef GL_SUN_vertex
  8.4039 +#define GL_SUN_vertex 1
  8.4040 +#ifdef GL_GLEXT_PROTOTYPES
  8.4041 +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
  8.4042 +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
  8.4043 +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
  8.4044 +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
  8.4045 +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4046 +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
  8.4047 +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4048 +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
  8.4049 +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4050 +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
  8.4051 +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4052 +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
  8.4053 +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4054 +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
  8.4055 +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
  8.4056 +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
  8.4057 +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4058 +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
  8.4059 +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4060 +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
  8.4061 +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4062 +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
  8.4063 +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4064 +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
  8.4065 +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat);
  8.4066 +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *);
  8.4067 +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
  8.4068 +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *);
  8.4069 +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4070 +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
  8.4071 +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4072 +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
  8.4073 +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4074 +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
  8.4075 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4076 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
  8.4077 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4078 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
  8.4079 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4080 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
  8.4081 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4082 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
  8.4083 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
  8.4084 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
  8.4085 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
  8.4086 +typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
  8.4087 +typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
  8.4088 +typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4089 +typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
  8.4090 +typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4091 +typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
  8.4092 +typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
  8.4093 +typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
  8.4094 +typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.4095 +typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
  8.4096 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
  8.4097 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
  8.4098 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
  8.4099 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
  8.4100 +typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4101 +typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
  8.4102 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4103 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
  8.4104 +typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.4105 +typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
  8.4106 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
  8.4107 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
  8.4108 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
  8.4109 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
  8.4110 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
  8.4111 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
  8.4112 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4113 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
  8.4114 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4115 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
  8.4116 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
  8.4117 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
  8.4118 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4119 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
  8.4120 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
  8.4121 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
  8.4122 +#endif
  8.4123 +
  8.4124 +#ifndef GL_EXT_blend_func_separate
  8.4125 +#define GL_EXT_blend_func_separate 1
  8.4126 +#ifdef GL_GLEXT_PROTOTYPES
  8.4127 +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
  8.4128 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4129 +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
  8.4130 +#endif
  8.4131 +
  8.4132 +#ifndef GL_INGR_blend_func_separate
  8.4133 +#define GL_INGR_blend_func_separate 1
  8.4134 +#ifdef GL_GLEXT_PROTOTYPES
  8.4135 +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
  8.4136 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4137 +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
  8.4138 +#endif
  8.4139 +
  8.4140 +#ifndef GL_INGR_color_clamp
  8.4141 +#define GL_INGR_color_clamp 1
  8.4142 +#endif
  8.4143 +
  8.4144 +#ifndef GL_INGR_interlace_read
  8.4145 +#define GL_INGR_interlace_read 1
  8.4146 +#endif
  8.4147 +
  8.4148 +#ifndef GL_EXT_stencil_wrap
  8.4149 +#define GL_EXT_stencil_wrap 1
  8.4150 +#endif
  8.4151 +
  8.4152 +#ifndef GL_EXT_422_pixels
  8.4153 +#define GL_EXT_422_pixels 1
  8.4154 +#endif
  8.4155 +
  8.4156 +#ifndef GL_NV_texgen_reflection
  8.4157 +#define GL_NV_texgen_reflection 1
  8.4158 +#endif
  8.4159 +
  8.4160 +#ifndef GL_SUN_convolution_border_modes
  8.4161 +#define GL_SUN_convolution_border_modes 1
  8.4162 +#endif
  8.4163 +
  8.4164 +#ifndef GL_EXT_texture_env_add
  8.4165 +#define GL_EXT_texture_env_add 1
  8.4166 +#endif
  8.4167 +
  8.4168 +#ifndef GL_EXT_texture_lod_bias
  8.4169 +#define GL_EXT_texture_lod_bias 1
  8.4170 +#endif
  8.4171 +
  8.4172 +#ifndef GL_EXT_texture_filter_anisotropic
  8.4173 +#define GL_EXT_texture_filter_anisotropic 1
  8.4174 +#endif
  8.4175 +
  8.4176 +#ifndef GL_EXT_vertex_weighting
  8.4177 +#define GL_EXT_vertex_weighting 1
  8.4178 +#ifdef GL_GLEXT_PROTOTYPES
  8.4179 +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
  8.4180 +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
  8.4181 +GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
  8.4182 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4183 +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
  8.4184 +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
  8.4185 +typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
  8.4186 +#endif
  8.4187 +
  8.4188 +#ifndef GL_NV_light_max_exponent
  8.4189 +#define GL_NV_light_max_exponent 1
  8.4190 +#endif
  8.4191 +
  8.4192 +#ifndef GL_NV_vertex_array_range
  8.4193 +#define GL_NV_vertex_array_range 1
  8.4194 +#ifdef GL_GLEXT_PROTOTYPES
  8.4195 +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
  8.4196 +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
  8.4197 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4198 +typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
  8.4199 +typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
  8.4200 +#endif
  8.4201 +
  8.4202 +#ifndef GL_NV_register_combiners
  8.4203 +#define GL_NV_register_combiners 1
  8.4204 +#ifdef GL_GLEXT_PROTOTYPES
  8.4205 +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
  8.4206 +GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
  8.4207 +GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
  8.4208 +GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
  8.4209 +GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
  8.4210 +GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
  8.4211 +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
  8.4212 +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
  8.4213 +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
  8.4214 +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
  8.4215 +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
  8.4216 +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
  8.4217 +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
  8.4218 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4219 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
  8.4220 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
  8.4221 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
  8.4222 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
  8.4223 +typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
  8.4224 +typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
  8.4225 +typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
  8.4226 +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
  8.4227 +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
  8.4228 +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
  8.4229 +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
  8.4230 +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
  8.4231 +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
  8.4232 +#endif
  8.4233 +
  8.4234 +#ifndef GL_NV_fog_distance
  8.4235 +#define GL_NV_fog_distance 1
  8.4236 +#endif
  8.4237 +
  8.4238 +#ifndef GL_NV_texgen_emboss
  8.4239 +#define GL_NV_texgen_emboss 1
  8.4240 +#endif
  8.4241 +
  8.4242 +#ifndef GL_NV_blend_square
  8.4243 +#define GL_NV_blend_square 1
  8.4244 +#endif
  8.4245 +
  8.4246 +#ifndef GL_NV_texture_env_combine4
  8.4247 +#define GL_NV_texture_env_combine4 1
  8.4248 +#endif
  8.4249 +
  8.4250 +#ifndef GL_MESA_resize_buffers
  8.4251 +#define GL_MESA_resize_buffers 1
  8.4252 +#ifdef GL_GLEXT_PROTOTYPES
  8.4253 +GLAPI void APIENTRY glResizeBuffersMESA (void);
  8.4254 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4255 +typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void);
  8.4256 +#endif
  8.4257 +
  8.4258 +#ifndef GL_MESA_window_pos
  8.4259 +#define GL_MESA_window_pos 1
  8.4260 +#ifdef GL_GLEXT_PROTOTYPES
  8.4261 +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
  8.4262 +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
  8.4263 +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
  8.4264 +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
  8.4265 +GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
  8.4266 +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
  8.4267 +GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
  8.4268 +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
  8.4269 +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
  8.4270 +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
  8.4271 +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
  8.4272 +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
  8.4273 +GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
  8.4274 +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
  8.4275 +GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
  8.4276 +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
  8.4277 +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
  8.4278 +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
  8.4279 +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
  8.4280 +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
  8.4281 +GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
  8.4282 +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
  8.4283 +GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
  8.4284 +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
  8.4285 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4286 +typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
  8.4287 +typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
  8.4288 +typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
  8.4289 +typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
  8.4290 +typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
  8.4291 +typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
  8.4292 +typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
  8.4293 +typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
  8.4294 +typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
  8.4295 +typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
  8.4296 +typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
  8.4297 +typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
  8.4298 +typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
  8.4299 +typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
  8.4300 +typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
  8.4301 +typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
  8.4302 +typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.4303 +typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
  8.4304 +typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.4305 +typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
  8.4306 +typedef void (APIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
  8.4307 +typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
  8.4308 +typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
  8.4309 +typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
  8.4310 +#endif
  8.4311 +
  8.4312 +#ifndef GL_IBM_cull_vertex
  8.4313 +#define GL_IBM_cull_vertex 1
  8.4314 +#endif
  8.4315 +
  8.4316 +#ifndef GL_IBM_multimode_draw_arrays
  8.4317 +#define GL_IBM_multimode_draw_arrays 1
  8.4318 +#ifdef GL_GLEXT_PROTOTYPES
  8.4319 +GLAPI void APIENTRY glMultiModeDrawArraysIBM (GLenum, const GLint *, const GLsizei *, GLsizei, GLint);
  8.4320 +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* *, GLsizei, GLint);
  8.4321 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4322 +typedef void (APIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
  8.4323 +typedef void (APIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, GLint modestride);
  8.4324 +#endif
  8.4325 +
  8.4326 +#ifndef GL_IBM_vertex_array_lists
  8.4327 +#define GL_IBM_vertex_array_lists 1
  8.4328 +#ifdef GL_GLEXT_PROTOTYPES
  8.4329 +GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
  8.4330 +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
  8.4331 +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
  8.4332 +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
  8.4333 +GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
  8.4334 +GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
  8.4335 +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
  8.4336 +GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
  8.4337 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4338 +typedef void (APIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4339 +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4340 +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
  8.4341 +typedef void (APIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4342 +typedef void (APIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4343 +typedef void (APIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4344 +typedef void (APIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4345 +typedef void (APIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
  8.4346 +#endif
  8.4347 +
  8.4348 +#ifndef GL_SGIX_subsample
  8.4349 +#define GL_SGIX_subsample 1
  8.4350 +#endif
  8.4351 +
  8.4352 +#ifndef GL_SGIX_ycrcba
  8.4353 +#define GL_SGIX_ycrcba 1
  8.4354 +#endif
  8.4355 +
  8.4356 +#ifndef GL_SGIX_ycrcb_subsample
  8.4357 +#define GL_SGIX_ycrcb_subsample 1
  8.4358 +#endif
  8.4359 +
  8.4360 +#ifndef GL_SGIX_depth_pass_instrument
  8.4361 +#define GL_SGIX_depth_pass_instrument 1
  8.4362 +#endif
  8.4363 +
  8.4364 +#ifndef GL_3DFX_texture_compression_FXT1
  8.4365 +#define GL_3DFX_texture_compression_FXT1 1
  8.4366 +#endif
  8.4367 +
  8.4368 +#ifndef GL_3DFX_multisample
  8.4369 +#define GL_3DFX_multisample 1
  8.4370 +#endif
  8.4371 +
  8.4372 +#ifndef GL_3DFX_tbuffer
  8.4373 +#define GL_3DFX_tbuffer 1
  8.4374 +#ifdef GL_GLEXT_PROTOTYPES
  8.4375 +GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
  8.4376 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4377 +typedef void (APIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
  8.4378 +#endif
  8.4379 +
  8.4380 +#ifndef GL_EXT_multisample
  8.4381 +#define GL_EXT_multisample 1
  8.4382 +#ifdef GL_GLEXT_PROTOTYPES
  8.4383 +GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
  8.4384 +GLAPI void APIENTRY glSamplePatternEXT (GLenum);
  8.4385 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4386 +typedef void (APIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
  8.4387 +typedef void (APIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
  8.4388 +#endif
  8.4389 +
  8.4390 +#ifndef GL_SGIX_vertex_preclip
  8.4391 +#define GL_SGIX_vertex_preclip 1
  8.4392 +#endif
  8.4393 +
  8.4394 +#ifndef GL_SGIX_convolution_accuracy
  8.4395 +#define GL_SGIX_convolution_accuracy 1
  8.4396 +#endif
  8.4397 +
  8.4398 +#ifndef GL_SGIX_resample
  8.4399 +#define GL_SGIX_resample 1
  8.4400 +#endif
  8.4401 +
  8.4402 +#ifndef GL_SGIS_point_line_texgen
  8.4403 +#define GL_SGIS_point_line_texgen 1
  8.4404 +#endif
  8.4405 +
  8.4406 +#ifndef GL_SGIS_texture_color_mask
  8.4407 +#define GL_SGIS_texture_color_mask 1
  8.4408 +#ifdef GL_GLEXT_PROTOTYPES
  8.4409 +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
  8.4410 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4411 +typedef void (APIENTRY * PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
  8.4412 +#endif
  8.4413 +
  8.4414 +#ifndef GL_SGIX_igloo_interface
  8.4415 +#define GL_SGIX_igloo_interface 1
  8.4416 +#ifdef GL_GLEXT_PROTOTYPES
  8.4417 +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
  8.4418 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4419 +typedef void (APIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
  8.4420 +#endif
  8.4421 +
  8.4422 +#ifndef GL_EXT_texture_env_dot3
  8.4423 +#define GL_EXT_texture_env_dot3 1
  8.4424 +#endif
  8.4425 +
  8.4426 +#ifndef GL_ATI_texture_mirror_once
  8.4427 +#define GL_ATI_texture_mirror_once 1
  8.4428 +#endif
  8.4429 +
  8.4430 +#ifndef GL_NV_fence
  8.4431 +#define GL_NV_fence 1
  8.4432 +#ifdef GL_GLEXT_PROTOTYPES
  8.4433 +GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
  8.4434 +GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
  8.4435 +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
  8.4436 +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
  8.4437 +GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
  8.4438 +GLAPI void APIENTRY glFinishFenceNV (GLuint);
  8.4439 +GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
  8.4440 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4441 +typedef void (APIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
  8.4442 +typedef void (APIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
  8.4443 +typedef GLboolean (APIENTRY * PFNGLISFENCENVPROC) (GLuint fence);
  8.4444 +typedef GLboolean (APIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence);
  8.4445 +typedef void (APIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
  8.4446 +typedef void (APIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence);
  8.4447 +typedef void (APIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
  8.4448 +#endif
  8.4449 +
  8.4450 +#ifndef GL_NV_evaluators
  8.4451 +#define GL_NV_evaluators 1
  8.4452 +#ifdef GL_GLEXT_PROTOTYPES
  8.4453 +GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
  8.4454 +GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
  8.4455 +GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
  8.4456 +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
  8.4457 +GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
  8.4458 +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
  8.4459 +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
  8.4460 +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
  8.4461 +GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
  8.4462 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4463 +typedef void (APIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
  8.4464 +typedef void (APIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
  8.4465 +typedef void (APIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
  8.4466 +typedef void (APIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
  8.4467 +typedef void (APIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
  8.4468 +typedef void (APIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
  8.4469 +typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
  8.4470 +typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
  8.4471 +typedef void (APIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
  8.4472 +#endif
  8.4473 +
  8.4474 +#ifndef GL_NV_packed_depth_stencil
  8.4475 +#define GL_NV_packed_depth_stencil 1
  8.4476 +#endif
  8.4477 +
  8.4478 +#ifndef GL_NV_register_combiners2
  8.4479 +#define GL_NV_register_combiners2 1
  8.4480 +#ifdef GL_GLEXT_PROTOTYPES
  8.4481 +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
  8.4482 +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
  8.4483 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4484 +typedef void (APIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
  8.4485 +typedef void (APIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
  8.4486 +#endif
  8.4487 +
  8.4488 +#ifndef GL_NV_texture_compression_vtc
  8.4489 +#define GL_NV_texture_compression_vtc 1
  8.4490 +#endif
  8.4491 +
  8.4492 +#ifndef GL_NV_texture_rectangle
  8.4493 +#define GL_NV_texture_rectangle 1
  8.4494 +#endif
  8.4495 +
  8.4496 +#ifndef GL_NV_texture_shader
  8.4497 +#define GL_NV_texture_shader 1
  8.4498 +#endif
  8.4499 +
  8.4500 +#ifndef GL_NV_texture_shader2
  8.4501 +#define GL_NV_texture_shader2 1
  8.4502 +#endif
  8.4503 +
  8.4504 +#ifndef GL_NV_vertex_array_range2
  8.4505 +#define GL_NV_vertex_array_range2 1
  8.4506 +#endif
  8.4507 +
  8.4508 +#ifndef GL_NV_vertex_program
  8.4509 +#define GL_NV_vertex_program 1
  8.4510 +#ifdef GL_GLEXT_PROTOTYPES
  8.4511 +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
  8.4512 +GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
  8.4513 +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
  8.4514 +GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
  8.4515 +GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
  8.4516 +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
  8.4517 +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
  8.4518 +GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
  8.4519 +GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
  8.4520 +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
  8.4521 +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
  8.4522 +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
  8.4523 +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
  8.4524 +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
  8.4525 +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
  8.4526 +GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
  8.4527 +GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
  8.4528 +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
  8.4529 +GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4530 +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
  8.4531 +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
  8.4532 +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
  8.4533 +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
  8.4534 +GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
  8.4535 +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
  8.4536 +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
  8.4537 +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
  8.4538 +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
  8.4539 +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
  8.4540 +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
  8.4541 +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
  8.4542 +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
  8.4543 +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
  8.4544 +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
  8.4545 +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
  8.4546 +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
  8.4547 +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
  8.4548 +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
  8.4549 +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
  8.4550 +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
  8.4551 +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
  8.4552 +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
  8.4553 +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
  8.4554 +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
  8.4555 +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
  8.4556 +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4557 +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
  8.4558 +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
  8.4559 +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
  8.4560 +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
  8.4561 +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
  8.4562 +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
  8.4563 +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
  8.4564 +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
  8.4565 +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
  8.4566 +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
  8.4567 +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
  8.4568 +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
  8.4569 +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
  8.4570 +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
  8.4571 +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
  8.4572 +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
  8.4573 +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
  8.4574 +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
  8.4575 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4576 +typedef GLboolean (APIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
  8.4577 +typedef void (APIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
  8.4578 +typedef void (APIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
  8.4579 +typedef void (APIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
  8.4580 +typedef void (APIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
  8.4581 +typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
  8.4582 +typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
  8.4583 +typedef void (APIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
  8.4584 +typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
  8.4585 +typedef void (APIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
  8.4586 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
  8.4587 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
  8.4588 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
  8.4589 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
  8.4590 +typedef GLboolean (APIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id);
  8.4591 +typedef void (APIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
  8.4592 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.4593 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
  8.4594 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.4595 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
  8.4596 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v);
  8.4597 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v);
  8.4598 +typedef void (APIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
  8.4599 +typedef void (APIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
  8.4600 +typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
  8.4601 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
  8.4602 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
  8.4603 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
  8.4604 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
  8.4605 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
  8.4606 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
  8.4607 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
  8.4608 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
  8.4609 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
  8.4610 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
  8.4611 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
  8.4612 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
  8.4613 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
  8.4614 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
  8.4615 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
  8.4616 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
  8.4617 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
  8.4618 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
  8.4619 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.4620 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
  8.4621 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.4622 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
  8.4623 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
  8.4624 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
  8.4625 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
  8.4626 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
  8.4627 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
  8.4628 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
  8.4629 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
  8.4630 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
  8.4631 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
  8.4632 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
  8.4633 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
  8.4634 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
  8.4635 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
  8.4636 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
  8.4637 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
  8.4638 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
  8.4639 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
  8.4640 +#endif
  8.4641 +
  8.4642 +#ifndef GL_SGIX_texture_coordinate_clamp
  8.4643 +#define GL_SGIX_texture_coordinate_clamp 1
  8.4644 +#endif
  8.4645 +
  8.4646 +#ifndef GL_SGIX_scalebias_hint
  8.4647 +#define GL_SGIX_scalebias_hint 1
  8.4648 +#endif
  8.4649 +
  8.4650 +#ifndef GL_OML_interlace
  8.4651 +#define GL_OML_interlace 1
  8.4652 +#endif
  8.4653 +
  8.4654 +#ifndef GL_OML_subsample
  8.4655 +#define GL_OML_subsample 1
  8.4656 +#endif
  8.4657 +
  8.4658 +#ifndef GL_OML_resample
  8.4659 +#define GL_OML_resample 1
  8.4660 +#endif
  8.4661 +
  8.4662 +#ifndef GL_NV_copy_depth_to_color
  8.4663 +#define GL_NV_copy_depth_to_color 1
  8.4664 +#endif
  8.4665 +
  8.4666 +#ifndef GL_ATI_envmap_bumpmap
  8.4667 +#define GL_ATI_envmap_bumpmap 1
  8.4668 +#ifdef GL_GLEXT_PROTOTYPES
  8.4669 +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
  8.4670 +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
  8.4671 +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
  8.4672 +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
  8.4673 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4674 +typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
  8.4675 +typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
  8.4676 +typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
  8.4677 +typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
  8.4678 +#endif
  8.4679 +
  8.4680 +#ifndef GL_ATI_fragment_shader
  8.4681 +#define GL_ATI_fragment_shader 1
  8.4682 +#ifdef GL_GLEXT_PROTOTYPES
  8.4683 +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
  8.4684 +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
  8.4685 +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
  8.4686 +GLAPI void APIENTRY glBeginFragmentShaderATI (void);
  8.4687 +GLAPI void APIENTRY glEndFragmentShaderATI (void);
  8.4688 +GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
  8.4689 +GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
  8.4690 +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
  8.4691 +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
  8.4692 +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
  8.4693 +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
  8.4694 +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
  8.4695 +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
  8.4696 +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
  8.4697 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4698 +typedef GLuint (APIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
  8.4699 +typedef void (APIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
  8.4700 +typedef void (APIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
  8.4701 +typedef void (APIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
  8.4702 +typedef void (APIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void);
  8.4703 +typedef void (APIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
  8.4704 +typedef void (APIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
  8.4705 +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
  8.4706 +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
  8.4707 +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
  8.4708 +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
  8.4709 +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
  8.4710 +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
  8.4711 +typedef void (APIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
  8.4712 +#endif
  8.4713 +
  8.4714 +#ifndef GL_ATI_pn_triangles
  8.4715 +#define GL_ATI_pn_triangles 1
  8.4716 +#ifdef GL_GLEXT_PROTOTYPES
  8.4717 +GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
  8.4718 +GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
  8.4719 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4720 +typedef void (APIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
  8.4721 +typedef void (APIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
  8.4722 +#endif
  8.4723 +
  8.4724 +#ifndef GL_ATI_vertex_array_object
  8.4725 +#define GL_ATI_vertex_array_object 1
  8.4726 +#ifdef GL_GLEXT_PROTOTYPES
  8.4727 +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
  8.4728 +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
  8.4729 +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
  8.4730 +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
  8.4731 +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
  8.4732 +GLAPI void APIENTRY glDeleteObjectBufferATI (GLuint);
  8.4733 +GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
  8.4734 +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
  8.4735 +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
  8.4736 +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
  8.4737 +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
  8.4738 +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
  8.4739 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4740 +typedef GLuint (APIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
  8.4741 +typedef GLboolean (APIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
  8.4742 +typedef void (APIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
  8.4743 +typedef void (APIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
  8.4744 +typedef void (APIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
  8.4745 +typedef void (APIENTRY * PFNGLDELETEOBJECTBUFFERATIPROC) (GLuint buffer);
  8.4746 +typedef void (APIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
  8.4747 +typedef void (APIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
  8.4748 +typedef void (APIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
  8.4749 +typedef void (APIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
  8.4750 +typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
  8.4751 +typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
  8.4752 +#endif
  8.4753 +
  8.4754 +#ifndef GL_EXT_vertex_shader
  8.4755 +#define GL_EXT_vertex_shader 1
  8.4756 +#ifdef GL_GLEXT_PROTOTYPES
  8.4757 +GLAPI void APIENTRY glBeginVertexShaderEXT (void);
  8.4758 +GLAPI void APIENTRY glEndVertexShaderEXT (void);
  8.4759 +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
  8.4760 +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
  8.4761 +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
  8.4762 +GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
  8.4763 +GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
  8.4764 +GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
  8.4765 +GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
  8.4766 +GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
  8.4767 +GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
  8.4768 +GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
  8.4769 +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
  8.4770 +GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const void *);
  8.4771 +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const void *);
  8.4772 +GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
  8.4773 +GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
  8.4774 +GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
  8.4775 +GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
  8.4776 +GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
  8.4777 +GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
  8.4778 +GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
  8.4779 +GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
  8.4780 +GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const void *);
  8.4781 +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
  8.4782 +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
  8.4783 +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
  8.4784 +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
  8.4785 +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
  8.4786 +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
  8.4787 +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
  8.4788 +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
  8.4789 +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
  8.4790 +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
  8.4791 +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
  8.4792 +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
  8.4793 +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
  8.4794 +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
  8.4795 +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
  8.4796 +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
  8.4797 +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
  8.4798 +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
  8.4799 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4800 +typedef void (APIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void);
  8.4801 +typedef void (APIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void);
  8.4802 +typedef void (APIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
  8.4803 +typedef GLuint (APIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
  8.4804 +typedef void (APIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
  8.4805 +typedef void (APIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
  8.4806 +typedef void (APIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
  8.4807 +typedef void (APIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
  8.4808 +typedef void (APIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
  8.4809 +typedef void (APIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
  8.4810 +typedef void (APIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
  8.4811 +typedef void (APIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
  8.4812 +typedef GLuint (APIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
  8.4813 +typedef void (APIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
  8.4814 +typedef void (APIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
  8.4815 +typedef void (APIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
  8.4816 +typedef void (APIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
  8.4817 +typedef void (APIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
  8.4818 +typedef void (APIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
  8.4819 +typedef void (APIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
  8.4820 +typedef void (APIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
  8.4821 +typedef void (APIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
  8.4822 +typedef void (APIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
  8.4823 +typedef void (APIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
  8.4824 +typedef void (APIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
  8.4825 +typedef void (APIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
  8.4826 +typedef GLuint (APIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
  8.4827 +typedef GLuint (APIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
  8.4828 +typedef GLuint (APIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
  8.4829 +typedef GLuint (APIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
  8.4830 +typedef GLuint (APIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value);
  8.4831 +typedef GLboolean (APIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
  8.4832 +typedef void (APIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
  8.4833 +typedef void (APIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
  8.4834 +typedef void (APIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
  8.4835 +typedef void (APIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data);
  8.4836 +typedef void (APIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
  8.4837 +typedef void (APIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
  8.4838 +typedef void (APIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
  8.4839 +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
  8.4840 +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
  8.4841 +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
  8.4842 +#endif
  8.4843 +
  8.4844 +#ifndef GL_ATI_vertex_streams
  8.4845 +#define GL_ATI_vertex_streams 1
  8.4846 +#ifdef GL_GLEXT_PROTOTYPES
  8.4847 +GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
  8.4848 +GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
  8.4849 +GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
  8.4850 +GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
  8.4851 +GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
  8.4852 +GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
  8.4853 +GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
  8.4854 +GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
  8.4855 +GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
  8.4856 +GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
  8.4857 +GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
  8.4858 +GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
  8.4859 +GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
  8.4860 +GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
  8.4861 +GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
  8.4862 +GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
  8.4863 +GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
  8.4864 +GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
  8.4865 +GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
  8.4866 +GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
  8.4867 +GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
  8.4868 +GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
  8.4869 +GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
  8.4870 +GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
  8.4871 +GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
  8.4872 +GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
  8.4873 +GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
  8.4874 +GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
  8.4875 +GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
  8.4876 +GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
  8.4877 +GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
  8.4878 +GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
  8.4879 +GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
  8.4880 +GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
  8.4881 +GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
  8.4882 +GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
  8.4883 +GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
  8.4884 +GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
  8.4885 +GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
  8.4886 +GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
  8.4887 +GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
  8.4888 +GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
  8.4889 +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
  8.4890 +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
  8.4891 +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
  8.4892 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4893 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
  8.4894 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
  8.4895 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
  8.4896 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
  8.4897 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
  8.4898 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
  8.4899 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
  8.4900 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
  8.4901 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
  8.4902 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
  8.4903 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
  8.4904 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
  8.4905 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
  8.4906 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
  8.4907 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
  8.4908 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
  8.4909 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
  8.4910 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
  8.4911 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
  8.4912 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
  8.4913 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
  8.4914 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
  8.4915 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
  8.4916 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
  8.4917 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
  8.4918 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
  8.4919 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
  8.4920 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
  8.4921 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
  8.4922 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
  8.4923 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
  8.4924 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
  8.4925 +typedef void (APIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
  8.4926 +typedef void (APIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
  8.4927 +typedef void (APIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
  8.4928 +typedef void (APIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
  8.4929 +typedef void (APIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
  8.4930 +typedef void (APIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
  8.4931 +typedef void (APIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
  8.4932 +typedef void (APIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
  8.4933 +typedef void (APIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
  8.4934 +typedef void (APIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
  8.4935 +typedef void (APIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
  8.4936 +typedef void (APIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
  8.4937 +typedef void (APIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
  8.4938 +#endif
  8.4939 +
  8.4940 +#ifndef GL_ATI_element_array
  8.4941 +#define GL_ATI_element_array 1
  8.4942 +#ifdef GL_GLEXT_PROTOTYPES
  8.4943 +GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
  8.4944 +GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
  8.4945 +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
  8.4946 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4947 +typedef void (APIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
  8.4948 +typedef void (APIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
  8.4949 +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
  8.4950 +#endif
  8.4951 +
  8.4952 +#ifndef GL_SUN_mesh_array
  8.4953 +#define GL_SUN_mesh_array 1
  8.4954 +#ifdef GL_GLEXT_PROTOTYPES
  8.4955 +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
  8.4956 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4957 +typedef void (APIENTRY * PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
  8.4958 +#endif
  8.4959 +
  8.4960 +#ifndef GL_SUN_slice_accum
  8.4961 +#define GL_SUN_slice_accum 1
  8.4962 +#endif
  8.4963 +
  8.4964 +#ifndef GL_NV_multisample_filter_hint
  8.4965 +#define GL_NV_multisample_filter_hint 1
  8.4966 +#endif
  8.4967 +
  8.4968 +#ifndef GL_NV_depth_clamp
  8.4969 +#define GL_NV_depth_clamp 1
  8.4970 +#endif
  8.4971 +
  8.4972 +#ifndef GL_NV_occlusion_query
  8.4973 +#define GL_NV_occlusion_query 1
  8.4974 +#ifdef GL_GLEXT_PROTOTYPES
  8.4975 +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
  8.4976 +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
  8.4977 +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
  8.4978 +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
  8.4979 +GLAPI void APIENTRY glEndOcclusionQueryNV (void);
  8.4980 +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
  8.4981 +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
  8.4982 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4983 +typedef void (APIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
  8.4984 +typedef void (APIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
  8.4985 +typedef GLboolean (APIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
  8.4986 +typedef void (APIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
  8.4987 +typedef void (APIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void);
  8.4988 +typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
  8.4989 +typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
  8.4990 +#endif
  8.4991 +
  8.4992 +#ifndef GL_NV_point_sprite
  8.4993 +#define GL_NV_point_sprite 1
  8.4994 +#ifdef GL_GLEXT_PROTOTYPES
  8.4995 +GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
  8.4996 +GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
  8.4997 +#endif /* GL_GLEXT_PROTOTYPES */
  8.4998 +typedef void (APIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
  8.4999 +typedef void (APIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
  8.5000 +#endif
  8.5001 +
  8.5002 +#ifndef GL_NV_texture_shader3
  8.5003 +#define GL_NV_texture_shader3 1
  8.5004 +#endif
  8.5005 +
  8.5006 +#ifndef GL_NV_vertex_program1_1
  8.5007 +#define GL_NV_vertex_program1_1 1
  8.5008 +#endif
  8.5009 +
  8.5010 +#ifndef GL_EXT_shadow_funcs
  8.5011 +#define GL_EXT_shadow_funcs 1
  8.5012 +#endif
  8.5013 +
  8.5014 +#ifndef GL_EXT_stencil_two_side
  8.5015 +#define GL_EXT_stencil_two_side 1
  8.5016 +#ifdef GL_GLEXT_PROTOTYPES
  8.5017 +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
  8.5018 +#endif /* GL_GLEXT_PROTOTYPES */
  8.5019 +typedef void (APIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
  8.5020 +#endif
  8.5021 +
  8.5022 +
  8.5023 +#ifdef __cplusplus
  8.5024 +}
  8.5025 +#endif
  8.5026 +
  8.5027 +#endif
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/GL/glu.h	Tue Nov 27 15:23:52 2007 +0100
     9.3 @@ -0,0 +1,325 @@
     9.4 +/* $XFree86: xc/include/GL/glu.h,v 1.2 2001/04/03 02:18:39 dawes Exp $ */
     9.5 +
     9.6 +/*
     9.7 +** License Applicability. Except to the extent portions of this file are
     9.8 +** made subject to an alternative license as permitted in the SGI Free
     9.9 +** Software License B, Version 1.1 (the "License"), the contents of this
    9.10 +** file are subject only to the provisions of the License. You may not use
    9.11 +** this file except in compliance with the License. You may obtain a copy
    9.12 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
    9.13 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
    9.14 +** 
    9.15 +** http://oss.sgi.com/projects/FreeB
    9.16 +** 
    9.17 +** Note that, as provided in the License, the Software is distributed on an
    9.18 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
    9.19 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
    9.20 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
    9.21 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
    9.22 +** 
    9.23 +** Original Code. The Original Code is: OpenGL Sample Implementation,
    9.24 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
    9.25 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
    9.26 +** Copyright in any portions created by third parties is as indicated
    9.27 +** elsewhere herein. All Rights Reserved.
    9.28 +** 
    9.29 +** Additional Notice Provisions: This software was created using the
    9.30 +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
    9.31 +** not been independently verified as being compliant with the OpenGL(R)
    9.32 +** version 1.2.1 Specification.
    9.33 +*/
    9.34 +
    9.35 +#ifndef __glu_h__
    9.36 +#define __glu_h__
    9.37 +
    9.38 +#include <GL/gl.h>
    9.39 +
    9.40 +#ifdef __cplusplus
    9.41 +extern "C" {
    9.42 +#endif
    9.43 +
    9.44 +/*************************************************************/
    9.45 +
    9.46 +/* Extensions */
    9.47 +#define GLU_EXT_object_space_tess          1
    9.48 +#define GLU_EXT_nurbs_tessellator          1
    9.49 +
    9.50 +/* Boolean */
    9.51 +#define GLU_FALSE                          0
    9.52 +#define GLU_TRUE                           1
    9.53 +
    9.54 +/* Version */
    9.55 +#define GLU_VERSION_1_1                    1
    9.56 +#define GLU_VERSION_1_2                    1
    9.57 +#define GLU_VERSION_1_3                    1
    9.58 +
    9.59 +/* StringName */
    9.60 +#define GLU_VERSION                        100800
    9.61 +#define GLU_EXTENSIONS                     100801
    9.62 +
    9.63 +/* ErrorCode */
    9.64 +#define GLU_INVALID_ENUM                   100900
    9.65 +#define GLU_INVALID_VALUE                  100901
    9.66 +#define GLU_OUT_OF_MEMORY                  100902
    9.67 +#define GLU_INVALID_OPERATION              100904
    9.68 +
    9.69 +/* NurbsDisplay */
    9.70 +/*      GLU_FILL */
    9.71 +#define GLU_OUTLINE_POLYGON                100240
    9.72 +#define GLU_OUTLINE_PATCH                  100241
    9.73 +
    9.74 +/* NurbsCallback */
    9.75 +#define GLU_NURBS_ERROR                    100103
    9.76 +#define GLU_ERROR                          100103
    9.77 +#define GLU_NURBS_BEGIN                    100164
    9.78 +#define GLU_NURBS_BEGIN_EXT                100164
    9.79 +#define GLU_NURBS_VERTEX                   100165
    9.80 +#define GLU_NURBS_VERTEX_EXT               100165
    9.81 +#define GLU_NURBS_NORMAL                   100166
    9.82 +#define GLU_NURBS_NORMAL_EXT               100166
    9.83 +#define GLU_NURBS_COLOR                    100167
    9.84 +#define GLU_NURBS_COLOR_EXT                100167
    9.85 +#define GLU_NURBS_TEXTURE_COORD            100168
    9.86 +#define GLU_NURBS_TEX_COORD_EXT            100168
    9.87 +#define GLU_NURBS_END                      100169
    9.88 +#define GLU_NURBS_END_EXT                  100169
    9.89 +#define GLU_NURBS_BEGIN_DATA               100170
    9.90 +#define GLU_NURBS_BEGIN_DATA_EXT           100170
    9.91 +#define GLU_NURBS_VERTEX_DATA              100171
    9.92 +#define GLU_NURBS_VERTEX_DATA_EXT          100171
    9.93 +#define GLU_NURBS_NORMAL_DATA              100172
    9.94 +#define GLU_NURBS_NORMAL_DATA_EXT          100172
    9.95 +#define GLU_NURBS_COLOR_DATA               100173
    9.96 +#define GLU_NURBS_COLOR_DATA_EXT           100173
    9.97 +#define GLU_NURBS_TEXTURE_COORD_DATA       100174
    9.98 +#define GLU_NURBS_TEX_COORD_DATA_EXT       100174
    9.99 +#define GLU_NURBS_END_DATA                 100175
   9.100 +#define GLU_NURBS_END_DATA_EXT             100175
   9.101 +
   9.102 +/* NurbsError */
   9.103 +#define GLU_NURBS_ERROR1                   100251
   9.104 +#define GLU_NURBS_ERROR2                   100252
   9.105 +#define GLU_NURBS_ERROR3                   100253
   9.106 +#define GLU_NURBS_ERROR4                   100254
   9.107 +#define GLU_NURBS_ERROR5                   100255
   9.108 +#define GLU_NURBS_ERROR6                   100256
   9.109 +#define GLU_NURBS_ERROR7                   100257
   9.110 +#define GLU_NURBS_ERROR8                   100258
   9.111 +#define GLU_NURBS_ERROR9                   100259
   9.112 +#define GLU_NURBS_ERROR10                  100260
   9.113 +#define GLU_NURBS_ERROR11                  100261
   9.114 +#define GLU_NURBS_ERROR12                  100262
   9.115 +#define GLU_NURBS_ERROR13                  100263
   9.116 +#define GLU_NURBS_ERROR14                  100264
   9.117 +#define GLU_NURBS_ERROR15                  100265
   9.118 +#define GLU_NURBS_ERROR16                  100266
   9.119 +#define GLU_NURBS_ERROR17                  100267
   9.120 +#define GLU_NURBS_ERROR18                  100268
   9.121 +#define GLU_NURBS_ERROR19                  100269
   9.122 +#define GLU_NURBS_ERROR20                  100270
   9.123 +#define GLU_NURBS_ERROR21                  100271
   9.124 +#define GLU_NURBS_ERROR22                  100272
   9.125 +#define GLU_NURBS_ERROR23                  100273
   9.126 +#define GLU_NURBS_ERROR24                  100274
   9.127 +#define GLU_NURBS_ERROR25                  100275
   9.128 +#define GLU_NURBS_ERROR26                  100276
   9.129 +#define GLU_NURBS_ERROR27                  100277
   9.130 +#define GLU_NURBS_ERROR28                  100278
   9.131 +#define GLU_NURBS_ERROR29                  100279
   9.132 +#define GLU_NURBS_ERROR30                  100280
   9.133 +#define GLU_NURBS_ERROR31                  100281
   9.134 +#define GLU_NURBS_ERROR32                  100282
   9.135 +#define GLU_NURBS_ERROR33                  100283
   9.136 +#define GLU_NURBS_ERROR34                  100284
   9.137 +#define GLU_NURBS_ERROR35                  100285
   9.138 +#define GLU_NURBS_ERROR36                  100286
   9.139 +#define GLU_NURBS_ERROR37                  100287
   9.140 +
   9.141 +/* NurbsProperty */
   9.142 +#define GLU_AUTO_LOAD_MATRIX               100200
   9.143 +#define GLU_CULLING                        100201
   9.144 +#define GLU_SAMPLING_TOLERANCE             100203
   9.145 +#define GLU_DISPLAY_MODE                   100204
   9.146 +#define GLU_PARAMETRIC_TOLERANCE           100202
   9.147 +#define GLU_SAMPLING_METHOD                100205
   9.148 +#define GLU_U_STEP                         100206
   9.149 +#define GLU_V_STEP                         100207
   9.150 +#define GLU_NURBS_MODE                     100160
   9.151 +#define GLU_NURBS_MODE_EXT                 100160
   9.152 +#define GLU_NURBS_TESSELLATOR              100161
   9.153 +#define GLU_NURBS_TESSELLATOR_EXT          100161
   9.154 +#define GLU_NURBS_RENDERER                 100162
   9.155 +#define GLU_NURBS_RENDERER_EXT             100162
   9.156 +
   9.157 +/* NurbsSampling */
   9.158 +#define GLU_OBJECT_PARAMETRIC_ERROR        100208
   9.159 +#define GLU_OBJECT_PARAMETRIC_ERROR_EXT    100208
   9.160 +#define GLU_OBJECT_PATH_LENGTH             100209
   9.161 +#define GLU_OBJECT_PATH_LENGTH_EXT         100209
   9.162 +#define GLU_PATH_LENGTH                    100215
   9.163 +#define GLU_PARAMETRIC_ERROR               100216
   9.164 +#define GLU_DOMAIN_DISTANCE                100217
   9.165 +
   9.166 +/* NurbsTrim */
   9.167 +#define GLU_MAP1_TRIM_2                    100210
   9.168 +#define GLU_MAP1_TRIM_3                    100211
   9.169 +
   9.170 +/* QuadricDrawStyle */
   9.171 +#define GLU_POINT                          100010
   9.172 +#define GLU_LINE                           100011
   9.173 +#define GLU_FILL                           100012
   9.174 +#define GLU_SILHOUETTE                     100013
   9.175 +
   9.176 +/* QuadricCallback */
   9.177 +/*      GLU_ERROR */
   9.178 +
   9.179 +/* QuadricNormal */
   9.180 +#define GLU_SMOOTH                         100000
   9.181 +#define GLU_FLAT                           100001
   9.182 +#define GLU_NONE                           100002
   9.183 +
   9.184 +/* QuadricOrientation */
   9.185 +#define GLU_OUTSIDE                        100020
   9.186 +#define GLU_INSIDE                         100021
   9.187 +
   9.188 +/* TessCallback */
   9.189 +#define GLU_TESS_BEGIN                     100100
   9.190 +#define GLU_BEGIN                          100100
   9.191 +#define GLU_TESS_VERTEX                    100101
   9.192 +#define GLU_VERTEX                         100101
   9.193 +#define GLU_TESS_END                       100102
   9.194 +#define GLU_END                            100102
   9.195 +#define GLU_TESS_ERROR                     100103
   9.196 +#define GLU_TESS_EDGE_FLAG                 100104
   9.197 +#define GLU_EDGE_FLAG                      100104
   9.198 +#define GLU_TESS_COMBINE                   100105
   9.199 +#define GLU_TESS_BEGIN_DATA                100106
   9.200 +#define GLU_TESS_VERTEX_DATA               100107
   9.201 +#define GLU_TESS_END_DATA                  100108
   9.202 +#define GLU_TESS_ERROR_DATA                100109
   9.203 +#define GLU_TESS_EDGE_FLAG_DATA            100110
   9.204 +#define GLU_TESS_COMBINE_DATA              100111
   9.205 +
   9.206 +/* TessContour */
   9.207 +#define GLU_CW                             100120
   9.208 +#define GLU_CCW                            100121
   9.209 +#define GLU_INTERIOR                       100122
   9.210 +#define GLU_EXTERIOR                       100123
   9.211 +#define GLU_UNKNOWN                        100124
   9.212 +
   9.213 +/* TessProperty */
   9.214 +#define GLU_TESS_WINDING_RULE              100140
   9.215 +#define GLU_TESS_BOUNDARY_ONLY             100141
   9.216 +#define GLU_TESS_TOLERANCE                 100142
   9.217 +
   9.218 +/* TessError */
   9.219 +#define GLU_TESS_ERROR1                    100151
   9.220 +#define GLU_TESS_ERROR2                    100152
   9.221 +#define GLU_TESS_ERROR3                    100153
   9.222 +#define GLU_TESS_ERROR4                    100154
   9.223 +#define GLU_TESS_ERROR5                    100155
   9.224 +#define GLU_TESS_ERROR6                    100156
   9.225 +#define GLU_TESS_ERROR7                    100157
   9.226 +#define GLU_TESS_ERROR8                    100158
   9.227 +#define GLU_TESS_MISSING_BEGIN_POLYGON     100151
   9.228 +#define GLU_TESS_MISSING_BEGIN_CONTOUR     100152
   9.229 +#define GLU_TESS_MISSING_END_POLYGON       100153
   9.230 +#define GLU_TESS_MISSING_END_CONTOUR       100154
   9.231 +#define GLU_TESS_COORD_TOO_LARGE           100155
   9.232 +#define GLU_TESS_NEED_COMBINE_CALLBACK     100156
   9.233 +
   9.234 +/* TessWinding */
   9.235 +#define GLU_TESS_WINDING_ODD               100130
   9.236 +#define GLU_TESS_WINDING_NONZERO           100131
   9.237 +#define GLU_TESS_WINDING_POSITIVE          100132
   9.238 +#define GLU_TESS_WINDING_NEGATIVE          100133
   9.239 +#define GLU_TESS_WINDING_ABS_GEQ_TWO       100134
   9.240 +
   9.241 +/*************************************************************/
   9.242 +
   9.243 +
   9.244 +#ifdef __cplusplus
   9.245 +class GLUnurbs;
   9.246 +class GLUquadric;
   9.247 +class GLUtesselator;
   9.248 +#else
   9.249 +typedef struct GLUnurbs GLUnurbs;
   9.250 +typedef struct GLUquadric GLUquadric;
   9.251 +typedef struct GLUtesselator GLUtesselator;
   9.252 +#endif
   9.253 +
   9.254 +typedef struct GLUnurbs GLUnurbsObj;
   9.255 +typedef struct GLUquadric GLUquadricObj;
   9.256 +typedef struct GLUtesselator GLUtesselatorObj;
   9.257 +typedef struct GLUtesselator GLUtriangulatorObj;
   9.258 +
   9.259 +#define GLU_TESS_MAX_COORD 1.0e150
   9.260 +
   9.261 +/* Internal convenience typedefs */
   9.262 +typedef GLvoid (*_GLUfuncptr)(GLvoid);
   9.263 +
   9.264 +extern void gluBeginCurve (GLUnurbs* nurb);
   9.265 +extern void gluBeginPolygon (GLUtesselator* tess);
   9.266 +extern void gluBeginSurface (GLUnurbs* nurb);
   9.267 +extern void gluBeginTrim (GLUnurbs* nurb);
   9.268 +extern GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
   9.269 +extern GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
   9.270 +extern GLint gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
   9.271 +extern GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
   9.272 +extern GLint gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
   9.273 +extern GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
   9.274 +extern GLboolean gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
   9.275 +extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
   9.276 +extern void gluDeleteNurbsRenderer (GLUnurbs* nurb);
   9.277 +extern void gluDeleteQuadric (GLUquadric* quad);
   9.278 +extern void gluDeleteTess (GLUtesselator* tess);
   9.279 +extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
   9.280 +extern void gluEndCurve (GLUnurbs* nurb);
   9.281 +extern void gluEndPolygon (GLUtesselator* tess);
   9.282 +extern void gluEndSurface (GLUnurbs* nurb);
   9.283 +extern void gluEndTrim (GLUnurbs* nurb);
   9.284 +extern const GLubyte * gluErrorString (GLenum error);
   9.285 +extern void gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
   9.286 +extern const GLubyte * gluGetString (GLenum name);
   9.287 +extern void gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
   9.288 +extern void gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
   9.289 +extern void gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
   9.290 +extern GLUnurbs* gluNewNurbsRenderer (void);
   9.291 +extern GLUquadric* gluNewQuadric (void);
   9.292 +extern GLUtesselator* gluNewTess (void);
   9.293 +extern void gluNextContour (GLUtesselator* tess, GLenum type);
   9.294 +extern void gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
   9.295 +extern void gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
   9.296 +extern void gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
   9.297 +extern void gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
   9.298 +extern void gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
   9.299 +extern void gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
   9.300 +extern void gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
   9.301 +extern void gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
   9.302 +extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
   9.303 +extern void gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
   9.304 +extern GLint gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
   9.305 +extern void gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
   9.306 +extern void gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
   9.307 +extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
   9.308 +extern void gluQuadricNormals (GLUquadric* quad, GLenum normal);
   9.309 +extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
   9.310 +extern void gluQuadricTexture (GLUquadric* quad, GLboolean texture);
   9.311 +extern GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
   9.312 +extern void gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
   9.313 +extern void gluTessBeginContour (GLUtesselator* tess);
   9.314 +extern void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
   9.315 +extern void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
   9.316 +extern void gluTessEndContour (GLUtesselator* tess);
   9.317 +extern void gluTessEndPolygon (GLUtesselator* tess);
   9.318 +extern void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
   9.319 +extern void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
   9.320 +extern void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
   9.321 +extern GLint gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
   9.322 +extern GLint gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble near, GLdouble far, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
   9.323 +
   9.324 +#ifdef __cplusplus
   9.325 +}
   9.326 +#endif
   9.327 +
   9.328 +#endif /* __glu_h__ */
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/GL/glut.h	Tue Nov 27 15:23:52 2007 +0100
    10.3 @@ -0,0 +1,771 @@
    10.4 +#ifndef __glut_h__
    10.5 +#define __glut_h__
    10.6 +
    10.7 +/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
    10.8 +
    10.9 +/* This program is freely distributable without licensing fees  and is
   10.10 +   provided without guarantee or warrantee expressed or  implied. This
   10.11 +   program is -not- in the public domain. */
   10.12 +
   10.13 +#include <GL/gl.h>
   10.14 +#include <GL/glu.h>
   10.15 +
   10.16 +#ifdef __cplusplus
   10.17 +extern "C" {
   10.18 +#endif
   10.19 +
   10.20 +#if defined(_WIN32)
   10.21 +
   10.22 +/* GLUT 3.7 now tries to avoid including <windows.h>
   10.23 +   to avoid name space pollution, but Win32's <GL/gl.h>
   10.24 +   needs APIENTRY and WINGDIAPI defined properly.
   10.25 +
   10.26 +   tjump@spgs.com contributes:
   10.27 +   If users are building glut code on MS Windows, then they should
   10.28 +   make sure they include windows.h early, let's not get into a
   10.29 +   header definitions war since MS has proven it's capability to
   10.30 +   change header dependencies w/o publishing they have done so.
   10.31 +
   10.32 +   So, let's not include windows.h here, as it's not really required and
   10.33 +   MS own gl/gl.h *should* include it if the dependency is there. */
   10.34 +
   10.35 +/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA
   10.36 +   in your compile preprocessor options. */
   10.37 +# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA)
   10.38 +#  pragma comment (lib, "winmm.lib")      /* link with Windows MultiMedia lib */
   10.39 +/* To enable automatic SGI OpenGL for Windows library usage for GLUT,
   10.40 +   define GLUT_USE_SGI_OPENGL in your compile preprocessor options.  */
   10.41 +#  ifdef GLUT_USE_SGI_OPENGL
   10.42 +#   pragma comment (lib, "opengl.lib")    /* link with SGI OpenGL for Windows lib */
   10.43 +#   pragma comment (lib, "glu.lib")       /* link with SGI OpenGL Utility lib */
   10.44 +#   pragma comment (lib, "glut.lib")      /* link with Win32 GLUT for SGI OpenGL lib */
   10.45 +#  else
   10.46 +#   pragma comment (lib, "opengl32.lib")  /* link with Microsoft OpenGL lib */
   10.47 +#   pragma comment (lib, "glu32.lib")     /* link with Microsoft OpenGL Utility lib */
   10.48 +#   pragma comment (lib, "glut32.lib")    /* link with Win32 GLUT lib */
   10.49 +#  endif
   10.50 +# endif
   10.51 +
   10.52 +/* To disable supression of annoying warnings about floats being promoted
   10.53 +   to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor
   10.54 +   options. */
   10.55 +# ifndef GLUT_NO_WARNING_DISABLE
   10.56 +#  pragma warning (disable:4244)  /* Disable bogus VC++ 4.2 conversion warnings. */
   10.57 +#  pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
   10.58 +# endif
   10.59 +
   10.60 +/* Win32 has an annoying issue where there are multiple C run-time
   10.61 +   libraries (CRTs).  If the executable is linked with a different CRT
   10.62 +   from the GLUT DLL, the GLUT DLL will not share the same CRT static
   10.63 +   data seen by the executable.  In particular, atexit callbacks registered
   10.64 +   in the executable will not be called if GLUT calls its (different)
   10.65 +   exit routine).  GLUT is typically built with the
   10.66 +   "/MD" option (the CRT with multithreading DLL support), but the Visual
   10.67 +   C++ linker default is "/ML" (the single threaded CRT).
   10.68 +
   10.69 +   One workaround to this issue is requiring users to always link with
   10.70 +   the same CRT as GLUT is compiled with.  That requires users supply a
   10.71 +   non-standard option.  GLUT 3.7 has its own built-in workaround where
   10.72 +   the executable's "exit" function pointer is covertly passed to GLUT.
   10.73 +   GLUT then calls the executable's exit function pointer to ensure that
   10.74 +   any "atexit" calls registered by the application are called if GLUT
   10.75 +   needs to exit.
   10.76 +
   10.77 +   Note that the __glut*WithExit routines should NEVER be called directly.
   10.78 +   To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */
   10.79 +
   10.80 +/* XXX This is from Win32's <process.h> */
   10.81 +# if !defined(_MSC_VER) && !defined(__cdecl)
   10.82 +   /* Define __cdecl for non-Microsoft compilers. */
   10.83 +#  define __cdecl
   10.84 +#  define GLUT_DEFINED___CDECL
   10.85 +# endif
   10.86 +# ifndef _CRTIMP
   10.87 +#  ifdef _NTSDK
   10.88 +    /* Definition compatible with NT SDK */
   10.89 +#   define _CRTIMP
   10.90 +#  else
   10.91 +    /* Current definition */
   10.92 +#   ifdef _DLL
   10.93 +#    define _CRTIMP __declspec(dllimport)
   10.94 +#   else
   10.95 +#    define _CRTIMP
   10.96 +#   endif
   10.97 +#  endif
   10.98 +#  define GLUT_DEFINED__CRTIMP
   10.99 +# endif
  10.100 +# ifndef GLUT_BUILDING_LIB
  10.101 +extern _CRTIMP void __cdecl exit(int);
  10.102 +# endif
  10.103 +
  10.104 +/* GLUT callback calling convention for Win32. */
  10.105 +# define GLUTCALLBACK __cdecl
  10.106 +
  10.107 +/* for callback/function pointer defs */
  10.108 +# define GLUTAPIENTRYV __cdecl
  10.109 +
  10.110 +/* glut-win32 specific macros, defined to prevent collision with
  10.111 +   and redifinition of Windows system defs, also removes requirement of
  10.112 +   pretty much any standard windows header from this file */
  10.113 +
  10.114 +#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__)
  10.115 +#	define GLUTAPIENTRY __stdcall
  10.116 +#else
  10.117 +#	define GLUTAPIENTRY
  10.118 +#endif
  10.119 +
  10.120 +/* GLUT API entry point declarations for Win32. */
  10.121 +#if defined(GLUT_BUILDING_LIB) && defined(_DLL)
  10.122 +# 	define GLUTAPI __declspec(dllexport)
  10.123 +#elif defined(_DLL)
  10.124 +#   define GLUTAPI __declspec(dllimport)
  10.125 +#else
  10.126 +#	define GLUTAPI extern
  10.127 +#endif
  10.128 +
  10.129 +#if defined(_WIN32) && !defined(_WINDEF_) && !defined(MESA)
  10.130 +#	if !defined(MESA_MINWARN)
  10.131 +#		pragma message( "note: WINDOWS.H not included, providing Mesa definition of CALLBACK macro" )
  10.132 +#		pragma message( "----: and PROC typedef. If you receive compiler warnings about either ")
  10.133 +#		pragma message( "----: being multiply defined you should include WINDOWS.H priot to gl/glut.h" )
  10.134 +#	endif
  10.135 +#	define CALLBACK __stdcall
  10.136 +typedef int (GLUTAPIENTRY *PROC)();
  10.137 +typedef void *HGLRC;
  10.138 +typedef void *HDC;
  10.139 +typedef unsigned long COLORREF;
  10.140 +#endif
  10.141 +
  10.142 +#if defined(_WIN32) && !defined(_WINGDI_) && !defined(MESA)
  10.143 +#	if !defined(MESA_MINWARN)
  10.144 +#		pragma message( "note: WINDOWS.H not included, providing Mesa definition of wgl functions" )
  10.145 +#		pragma message( "----: and macros. If you receive compiler warnings about any being multiply ")
  10.146 +#		pragma message( "----: defined you should include WINDOWS.H priot to gl/glut.h" )
  10.147 +#	endif
  10.148 +#	define WGL_FONT_LINES      0
  10.149 +#	define WGL_FONT_POLYGONS   1
  10.150 +#	ifdef UNICODE
  10.151 +#		define wglUseFontBitmaps  wglUseFontBitmapsW
  10.152 +#		define wglUseFontOutlines  wglUseFontOutlinesW
  10.153 +#	else
  10.154 +#		define wglUseFontBitmaps  wglUseFontBitmapsA
  10.155 +#		define wglUseFontOutlines  wglUseFontOutlinesA
  10.156 +#	endif /* !UNICODE */
  10.157 +typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
  10.158 +typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
  10.159 +#  pragma warning( push )
  10.160 +#  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */
  10.161 +#  define WGLAPI __declspec(dllimport)
  10.162 +WGLAPI int   GLAPIENTRY wglDeleteContext(HGLRC);
  10.163 +WGLAPI int   GLAPIENTRY wglMakeCurrent(HDC,HGLRC);
  10.164 +WGLAPI int   GLAPIENTRY wglSetPixelFormat(HDC, int, const PIXELFORMATDESCRIPTOR *);
  10.165 +WGLAPI int   GLAPIENTRY wglSwapBuffers(HDC hdc);
  10.166 +WGLAPI HDC   GLAPIENTRY wglGetCurrentDC(void);
  10.167 +WGLAPI HGLRC GLAPIENTRY wglCreateContext(HDC);
  10.168 +WGLAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC,int);
  10.169 +WGLAPI HGLRC GLAPIENTRY wglGetCurrentContext(void);
  10.170 +WGLAPI PROC  GLAPIENTRY wglGetProcAddress(const char*);
  10.171 +WGLAPI int   GLAPIENTRY wglChoosePixelFormat(HDC, const PIXELFORMATDESCRIPTOR *);
  10.172 +WGLAPI int   GLAPIENTRY wglCopyContext(HGLRC, HGLRC, unsigned int);
  10.173 +WGLAPI int   GLAPIENTRY wglDeleteContext(HGLRC);
  10.174 +WGLAPI int   GLAPIENTRY wglDescribeLayerPlane(HDC, int, int, unsigned int,LPLAYERPLANEDESCRIPTOR);
  10.175 +WGLAPI int   GLAPIENTRY wglDescribePixelFormat(HDC,int, unsigned int, LPPIXELFORMATDESCRIPTOR);
  10.176 +WGLAPI int   GLAPIENTRY wglGetLayerPaletteEntries(HDC, int, int, int,COLORREF *);
  10.177 +WGLAPI int   GLAPIENTRY wglGetPixelFormat(HDC hdc);
  10.178 +WGLAPI int   GLAPIENTRY wglMakeCurrent(HDC, HGLRC);
  10.179 +WGLAPI int   GLAPIENTRY wglRealizeLayerPalette(HDC, int, int);
  10.180 +WGLAPI int   GLAPIENTRY wglSetLayerPaletteEntries(HDC, int, int, int,const COLORREF *);
  10.181 +WGLAPI int   GLAPIENTRY wglShareLists(HGLRC, HGLRC);
  10.182 +WGLAPI int   GLAPIENTRY wglSwapLayerBuffers(HDC, unsigned int);
  10.183 +WGLAPI int   GLAPIENTRY wglUseFontBitmapsA(HDC, unsigned long, unsigned long, unsigned long);
  10.184 +WGLAPI int   GLAPIENTRY wglUseFontBitmapsW(HDC, unsigned long, unsigned long, unsigned long);
  10.185 +WGLAPI int   GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
  10.186 +WGLAPI int   GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
  10.187 +WGLAPI int   GLAPIENTRY SwapBuffers(HDC);
  10.188 +WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *);
  10.189 +WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR);
  10.190 +WGLAPI int   GLAPIENTRY GetPixelFormat(HDC);
  10.191 +WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *);
  10.192 +#  undef WGLAPI
  10.193 +#  pragma warning( pop )
  10.194 +#endif
  10.195 +
  10.196 +#else /* _WIN32 not defined */
  10.197 +
  10.198 +/* Define GLUTAPIENTRY and GLUTCALLBACK to nothing if we aren't on Win32. */
  10.199 +#  define GLUTAPIENTRY
  10.200 +#  define GLUTAPIENTRYV
  10.201 +#  define GLUT_APIENTRY_DEFINED
  10.202 +#  define GLUTCALLBACK
  10.203 +#  define GLUTAPI extern
  10.204 +/* Prototype exit for the non-Win32 case (see above). */
  10.205 +/*extern void exit(int);  this screws up gcc -ansi -pedantic! */
  10.206 +#endif
  10.207 +
  10.208 +
  10.209 +/**
  10.210 + GLUT API revision history:
  10.211 +
  10.212 + GLUT_API_VERSION is updated to reflect incompatible GLUT
  10.213 + API changes (interface changes, semantic changes, deletions,
  10.214 + or additions).
  10.215 +
  10.216 + GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
  10.217 +
  10.218 + GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
  10.219 + extension.  Supports new input devices like tablet, dial and button
  10.220 + box, and Spaceball.  Easy to query OpenGL extensions.
  10.221 +
  10.222 + GLUT_API_VERSION=3  glutMenuStatus added.
  10.223 +
  10.224 + GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
  10.225 + glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
  10.226 + video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
  10.227 + glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
  10.228 + glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
  10.229 +
  10.230 + GLUT_API_VERSION=5  glutGetProcAddress (added by BrianP)
  10.231 +**/
  10.232 +#ifndef GLUT_API_VERSION  /* allow this to be overriden */
  10.233 +#define GLUT_API_VERSION		5
  10.234 +#endif
  10.235 +
  10.236 +/**
  10.237 + GLUT implementation revision history:
  10.238 +
  10.239 + GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
  10.240 + API revisions and implementation revisions (ie, bug fixes).
  10.241 +
  10.242 + GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
  10.243 + GLUT Xlib-based implementation.  11/29/94
  10.244 +
  10.245 + GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
  10.246 + GLUT Xlib-based implementation providing GLUT version 2
  10.247 + interfaces.
  10.248 +
  10.249 + GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
  10.250 +
  10.251 + GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
  10.252 +
  10.253 + GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
  10.254 +
  10.255 + GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
  10.256 +
  10.257 + GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
  10.258 + and video resize.  1/3/97
  10.259 +
  10.260 + GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
  10.261 +
  10.262 + GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
  10.263 +
  10.264 + GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
  10.265 +
  10.266 + GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
  10.267 +
  10.268 + GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
  10.269 +
  10.270 + GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
  10.271 +**/
  10.272 +#ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
  10.273 +#define GLUT_XLIB_IMPLEMENTATION	15
  10.274 +#endif
  10.275 +
  10.276 +/* Display mode bit masks. */
  10.277 +#define GLUT_RGB			0
  10.278 +#define GLUT_RGBA			GLUT_RGB
  10.279 +#define GLUT_INDEX			1
  10.280 +#define GLUT_SINGLE			0
  10.281 +#define GLUT_DOUBLE			2
  10.282 +#define GLUT_ACCUM			4
  10.283 +#define GLUT_ALPHA			8
  10.284 +#define GLUT_DEPTH			16
  10.285 +#define GLUT_STENCIL			32
  10.286 +#if (GLUT_API_VERSION >= 2)
  10.287 +#define GLUT_MULTISAMPLE		128
  10.288 +#define GLUT_STEREO			256
  10.289 +#endif
  10.290 +#if (GLUT_API_VERSION >= 3)
  10.291 +#define GLUT_LUMINANCE			512
  10.292 +#endif
  10.293 +
  10.294 +/* Mouse buttons. */
  10.295 +#define GLUT_LEFT_BUTTON		0
  10.296 +#define GLUT_MIDDLE_BUTTON		1
  10.297 +#define GLUT_RIGHT_BUTTON		2
  10.298 +
  10.299 +/* Mouse button  state. */
  10.300 +#define GLUT_DOWN			0
  10.301 +#define GLUT_UP				1
  10.302 +
  10.303 +#if (GLUT_API_VERSION >= 2)
  10.304 +/* function keys */
  10.305 +#define GLUT_KEY_F1			1
  10.306 +#define GLUT_KEY_F2			2
  10.307 +#define GLUT_KEY_F3			3
  10.308 +#define GLUT_KEY_F4			4
  10.309 +#define GLUT_KEY_F5			5
  10.310 +#define GLUT_KEY_F6			6
  10.311 +#define GLUT_KEY_F7			7
  10.312 +#define GLUT_KEY_F8			8
  10.313 +#define GLUT_KEY_F9			9
  10.314 +#define GLUT_KEY_F10			10
  10.315 +#define GLUT_KEY_F11			11
  10.316 +#define GLUT_KEY_F12			12
  10.317 +/* directional keys */
  10.318 +#define GLUT_KEY_LEFT			100
  10.319 +#define GLUT_KEY_UP			101
  10.320 +#define GLUT_KEY_RIGHT			102
  10.321 +#define GLUT_KEY_DOWN			103
  10.322 +#define GLUT_KEY_PAGE_UP		104
  10.323 +#define GLUT_KEY_PAGE_DOWN		105
  10.324 +#define GLUT_KEY_HOME			106
  10.325 +#define GLUT_KEY_END			107
  10.326 +#define GLUT_KEY_INSERT			108
  10.327 +#endif
  10.328 +
  10.329 +/* Entry/exit  state. */
  10.330 +#define GLUT_LEFT			0
  10.331 +#define GLUT_ENTERED			1
  10.332 +
  10.333 +/* Menu usage  state. */
  10.334 +#define GLUT_MENU_NOT_IN_USE		0
  10.335 +#define GLUT_MENU_IN_USE		1
  10.336 +
  10.337 +/* Visibility  state. */
  10.338 +#define GLUT_NOT_VISIBLE		0
  10.339 +#define GLUT_VISIBLE			1
  10.340 +
  10.341 +/* Window status  state. */
  10.342 +#define GLUT_HIDDEN			0
  10.343 +#define GLUT_FULLY_RETAINED		1
  10.344 +#define GLUT_PARTIALLY_RETAINED		2
  10.345 +#define GLUT_FULLY_COVERED		3
  10.346 +
  10.347 +/* Color index component selection values. */
  10.348 +#define GLUT_RED			0
  10.349 +#define GLUT_GREEN			1
  10.350 +#define GLUT_BLUE			2
  10.351 +
  10.352 +/* Layers for use. */
  10.353 +#define GLUT_NORMAL			0
  10.354 +#define GLUT_OVERLAY			1
  10.355 +
  10.356 +#if defined(_WIN32)
  10.357 +/* Stroke font constants (use these in GLUT program). */
  10.358 +#define GLUT_STROKE_ROMAN		((void*)0)
  10.359 +#define GLUT_STROKE_MONO_ROMAN		((void*)1)
  10.360 +
  10.361 +/* Bitmap font constants (use these in GLUT program). */
  10.362 +#define GLUT_BITMAP_9_BY_15		((void*)2)
  10.363 +#define GLUT_BITMAP_8_BY_13		((void*)3)
  10.364 +#define GLUT_BITMAP_TIMES_ROMAN_10	((void*)4)
  10.365 +#define GLUT_BITMAP_TIMES_ROMAN_24	((void*)5)
  10.366 +#if (GLUT_API_VERSION >= 3)
  10.367 +#define GLUT_BITMAP_HELVETICA_10	((void*)6)
  10.368 +#define GLUT_BITMAP_HELVETICA_12	((void*)7)
  10.369 +#define GLUT_BITMAP_HELVETICA_18	((void*)8)
  10.370 +#endif
  10.371 +#else
  10.372 +/* Stroke font opaque addresses (use constants instead in source code). */
  10.373 +GLUTAPI void *glutStrokeRoman;
  10.374 +GLUTAPI void *glutStrokeMonoRoman;
  10.375 +
  10.376 +/* Stroke font constants (use these in GLUT program). */
  10.377 +#define GLUT_STROKE_ROMAN		(&glutStrokeRoman)
  10.378 +#define GLUT_STROKE_MONO_ROMAN		(&glutStrokeMonoRoman)
  10.379 +
  10.380 +/* Bitmap font opaque addresses (use constants instead in source code). */
  10.381 +GLUTAPI void *glutBitmap9By15;
  10.382 +GLUTAPI void *glutBitmap8By13;
  10.383 +GLUTAPI void *glutBitmapTimesRoman10;
  10.384 +GLUTAPI void *glutBitmapTimesRoman24;
  10.385 +GLUTAPI void *glutBitmapHelvetica10;
  10.386 +GLUTAPI void *glutBitmapHelvetica12;
  10.387 +GLUTAPI void *glutBitmapHelvetica18;
  10.388 +
  10.389 +/* Bitmap font constants (use these in GLUT program). */
  10.390 +#define GLUT_BITMAP_9_BY_15		(&glutBitmap9By15)
  10.391 +#define GLUT_BITMAP_8_BY_13		(&glutBitmap8By13)
  10.392 +#define GLUT_BITMAP_TIMES_ROMAN_10	(&glutBitmapTimesRoman10)
  10.393 +#define GLUT_BITMAP_TIMES_ROMAN_24	(&glutBitmapTimesRoman24)
  10.394 +#if (GLUT_API_VERSION >= 3)
  10.395 +#define GLUT_BITMAP_HELVETICA_10	(&glutBitmapHelvetica10)
  10.396 +#define GLUT_BITMAP_HELVETICA_12	(&glutBitmapHelvetica12)
  10.397 +#define GLUT_BITMAP_HELVETICA_18	(&glutBitmapHelvetica18)
  10.398 +#endif
  10.399 +#endif
  10.400 +
  10.401 +/* glutGet parameters. */
  10.402 +#define GLUT_WINDOW_X			100
  10.403 +#define GLUT_WINDOW_Y			101
  10.404 +#define GLUT_WINDOW_WIDTH		102
  10.405 +#define GLUT_WINDOW_HEIGHT		103
  10.406 +#define GLUT_WINDOW_BUFFER_SIZE		104
  10.407 +#define GLUT_WINDOW_STENCIL_SIZE	105
  10.408 +#define GLUT_WINDOW_DEPTH_SIZE		106
  10.409 +#define GLUT_WINDOW_RED_SIZE		107
  10.410 +#define GLUT_WINDOW_GREEN_SIZE		108
  10.411 +#define GLUT_WINDOW_BLUE_SIZE		109
  10.412 +#define GLUT_WINDOW_ALPHA_SIZE		110
  10.413 +#define GLUT_WINDOW_ACCUM_RED_SIZE	111
  10.414 +#define GLUT_WINDOW_ACCUM_GREEN_SIZE	112
  10.415 +#define GLUT_WINDOW_ACCUM_BLUE_SIZE	113
  10.416 +#define GLUT_WINDOW_ACCUM_ALPHA_SIZE	114
  10.417 +#define GLUT_WINDOW_DOUBLEBUFFER	115
  10.418 +#define GLUT_WINDOW_RGBA		116
  10.419 +#define GLUT_WINDOW_PARENT		117
  10.420 +#define GLUT_WINDOW_NUM_CHILDREN	118
  10.421 +#define GLUT_WINDOW_COLORMAP_SIZE	119
  10.422 +#if (GLUT_API_VERSION >= 2)
  10.423 +#define GLUT_WINDOW_NUM_SAMPLES		120
  10.424 +#define GLUT_WINDOW_STEREO		121
  10.425 +#endif
  10.426 +#if (GLUT_API_VERSION >= 3)
  10.427 +#define GLUT_WINDOW_CURSOR		122
  10.428 +#endif
  10.429 +#define GLUT_SCREEN_WIDTH		200
  10.430 +#define GLUT_SCREEN_HEIGHT		201
  10.431 +#define GLUT_SCREEN_WIDTH_MM		202
  10.432 +#define GLUT_SCREEN_HEIGHT_MM		203
  10.433 +#define GLUT_MENU_NUM_ITEMS		300
  10.434 +#define GLUT_DISPLAY_MODE_POSSIBLE	400
  10.435 +#define GLUT_INIT_WINDOW_X		500
  10.436 +#define GLUT_INIT_WINDOW_Y		501
  10.437 +#define GLUT_INIT_WINDOW_WIDTH		502
  10.438 +#define GLUT_INIT_WINDOW_HEIGHT		503
  10.439 +#define GLUT_INIT_DISPLAY_MODE		504
  10.440 +#if (GLUT_API_VERSION >= 2)
  10.441 +#define GLUT_ELAPSED_TIME		700
  10.442 +#endif
  10.443 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  10.444 +#define GLUT_WINDOW_FORMAT_ID		123
  10.445 +#endif
  10.446 +
  10.447 +#if (GLUT_API_VERSION >= 2)
  10.448 +/* glutDeviceGet parameters. */
  10.449 +#define GLUT_HAS_KEYBOARD		600
  10.450 +#define GLUT_HAS_MOUSE			601
  10.451 +#define GLUT_HAS_SPACEBALL		602
  10.452 +#define GLUT_HAS_DIAL_AND_BUTTON_BOX	603
  10.453 +#define GLUT_HAS_TABLET			604
  10.454 +#define GLUT_NUM_MOUSE_BUTTONS		605
  10.455 +#define GLUT_NUM_SPACEBALL_BUTTONS	606
  10.456 +#define GLUT_NUM_BUTTON_BOX_BUTTONS	607
  10.457 +#define GLUT_NUM_DIALS			608
  10.458 +#define GLUT_NUM_TABLET_BUTTONS		609
  10.459 +#endif
  10.460 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  10.461 +#define GLUT_DEVICE_IGNORE_KEY_REPEAT   610
  10.462 +#define GLUT_DEVICE_KEY_REPEAT          611
  10.463 +#define GLUT_HAS_JOYSTICK		612
  10.464 +#define GLUT_OWNS_JOYSTICK		613
  10.465 +#define GLUT_JOYSTICK_BUTTONS		614
  10.466 +#define GLUT_JOYSTICK_AXES		615
  10.467 +#define GLUT_JOYSTICK_POLL_RATE		616
  10.468 +#endif
  10.469 +
  10.470 +#if (GLUT_API_VERSION >= 3)
  10.471 +/* glutLayerGet parameters. */
  10.472 +#define GLUT_OVERLAY_POSSIBLE           800
  10.473 +#define GLUT_LAYER_IN_USE		801
  10.474 +#define GLUT_HAS_OVERLAY		802
  10.475 +#define GLUT_TRANSPARENT_INDEX		803
  10.476 +#define GLUT_NORMAL_DAMAGED		804
  10.477 +#define GLUT_OVERLAY_DAMAGED		805
  10.478 +
  10.479 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  10.480 +/* glutVideoResizeGet parameters. */
  10.481 +#define GLUT_VIDEO_RESIZE_POSSIBLE	900
  10.482 +#define GLUT_VIDEO_RESIZE_IN_USE	901
  10.483 +#define GLUT_VIDEO_RESIZE_X_DELTA	902
  10.484 +#define GLUT_VIDEO_RESIZE_Y_DELTA	903
  10.485 +#define GLUT_VIDEO_RESIZE_WIDTH_DELTA	904
  10.486 +#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA	905
  10.487 +#define GLUT_VIDEO_RESIZE_X		906
  10.488 +#define GLUT_VIDEO_RESIZE_Y		907
  10.489 +#define GLUT_VIDEO_RESIZE_WIDTH		908
  10.490 +#define GLUT_VIDEO_RESIZE_HEIGHT	909
  10.491 +#endif
  10.492 +
  10.493 +/* glutUseLayer parameters. */
  10.494 +#define GLUT_NORMAL			0
  10.495 +#define GLUT_OVERLAY			1
  10.496 +
  10.497 +/* glutGetModifiers return mask. */
  10.498 +#define GLUT_ACTIVE_SHIFT               1
  10.499 +#define GLUT_ACTIVE_CTRL                2
  10.500 +#define GLUT_ACTIVE_ALT                 4
  10.501 +
  10.502 +/* glutSetCursor parameters. */
  10.503 +/* Basic arrows. */
  10.504 +#define GLUT_CURSOR_RIGHT_ARROW		0
  10.505 +#define GLUT_CURSOR_LEFT_ARROW		1
  10.506 +/* Symbolic cursor shapes. */
  10.507 +#define GLUT_CURSOR_INFO		2
  10.508 +#define GLUT_CURSOR_DESTROY		3
  10.509 +#define GLUT_CURSOR_HELP		4
  10.510 +#define GLUT_CURSOR_CYCLE		5
  10.511 +#define GLUT_CURSOR_SPRAY		6
  10.512 +#define GLUT_CURSOR_WAIT		7
  10.513 +#define GLUT_CURSOR_TEXT		8
  10.514 +#define GLUT_CURSOR_CROSSHAIR		9
  10.515 +/* Directional cursors. */
  10.516 +#define GLUT_CURSOR_UP_DOWN		10
  10.517 +#define GLUT_CURSOR_LEFT_RIGHT		11
  10.518 +/* Sizing cursors. */
  10.519 +#define GLUT_CURSOR_TOP_SIDE		12
  10.520 +#define GLUT_CURSOR_BOTTOM_SIDE		13
  10.521 +#define GLUT_CURSOR_LEFT_SIDE		14
  10.522 +#define GLUT_CURSOR_RIGHT_SIDE		15
  10.523 +#define GLUT_CURSOR_TOP_LEFT_CORNER	16
  10.524 +#define GLUT_CURSOR_TOP_RIGHT_CORNER	17
  10.525 +#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER	18
  10.526 +#define GLUT_CURSOR_BOTTOM_LEFT_CORNER	19
  10.527 +/* Inherit from parent window. */
  10.528 +#define GLUT_CURSOR_INHERIT		100
  10.529 +/* Blank cursor. */
  10.530 +#define GLUT_CURSOR_NONE		101
  10.531 +/* Fullscreen crosshair (if available). */
  10.532 +#define GLUT_CURSOR_FULL_CROSSHAIR	102
  10.533 +#endif
  10.534 +
  10.535 +/* GLUT initialization sub-API. */
  10.536 +GLUTAPI void GLUTAPIENTRY glutInit(int *argcp, char **argv);
  10.537 +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
  10.538 +GLUTAPI void GLUTAPIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));
  10.539 +#ifndef GLUT_BUILDING_LIB
  10.540 +static void GLUTAPIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }
  10.541 +#define glutInit glutInit_ATEXIT_HACK
  10.542 +#endif
  10.543 +#endif
  10.544 +GLUTAPI void GLUTAPIENTRY glutInitDisplayMode(unsigned int mode);
  10.545 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  10.546 +GLUTAPI void GLUTAPIENTRY glutInitDisplayString(const char *string);
  10.547 +#endif
  10.548 +GLUTAPI void GLUTAPIENTRY glutInitWindowPosition(int x, int y);
  10.549 +GLUTAPI void GLUTAPIENTRY glutInitWindowSize(int width, int height);
  10.550 +GLUTAPI void GLUTAPIENTRY glutMainLoop(void);
  10.551 +
  10.552 +/* GLUT window sub-API. */
  10.553 +GLUTAPI int GLUTAPIENTRY glutCreateWindow(const char *title);
  10.554 +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
  10.555 +GLUTAPI int GLUTAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int));
  10.556 +#ifndef GLUT_BUILDING_LIB
  10.557 +static int GLUTAPIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); }
  10.558 +#define glutCreateWindow glutCreateWindow_ATEXIT_HACK
  10.559 +#endif
  10.560 +#endif
  10.561 +GLUTAPI int GLUTAPIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
  10.562 +GLUTAPI void GLUTAPIENTRY glutDestroyWindow(int win);
  10.563 +GLUTAPI void GLUTAPIENTRY glutPostRedisplay(void);
  10.564 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
  10.565 +GLUTAPI void GLUTAPIENTRY glutPostWindowRedisplay(int win);
  10.566 +#endif
  10.567 +GLUTAPI void GLUTAPIENTRY glutSwapBuffers(void);
  10.568 +GLUTAPI int GLUTAPIENTRY glutGetWindow(void);
  10.569 +GLUTAPI void GLUTAPIENTRY glutSetWindow(int win);
  10.570 +GLUTAPI void GLUTAPIENTRY glutSetWindowTitle(const char *title);
  10.571 +GLUTAPI void GLUTAPIENTRY glutSetIconTitle(const char *title);
  10.572 +GLUTAPI void GLUTAPIENTRY glutPositionWindow(int x, int y);
  10.573 +GLUTAPI void GLUTAPIENTRY glutReshapeWindow(int width, int height);
  10.574 +GLUTAPI void GLUTAPIENTRY glutPopWindow(void);
  10.575 +GLUTAPI void GLUTAPIENTRY glutPushWindow(void);
  10.576 +GLUTAPI void GLUTAPIENTRY glutIconifyWindow(void);
  10.577 +GLUTAPI void GLUTAPIENTRY glutShowWindow(void);
  10.578 +GLUTAPI void GLUTAPIENTRY glutHideWindow(void);
  10.579 +#if (GLUT_API_VERSION >= 3)
  10.580 +GLUTAPI void GLUTAPIENTRY glutFullScreen(void);
  10.581 +GLUTAPI void GLUTAPIENTRY glutSetCursor(int cursor);
  10.582 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  10.583 +GLUTAPI void GLUTAPIENTRY glutWarpPointer(int x, int y);
  10.584 +#endif
  10.585 +
  10.586 +/* GLUT overlay sub-API. */
  10.587 +GLUTAPI void GLUTAPIENTRY glutEstablishOverlay(void);
  10.588 +GLUTAPI void GLUTAPIENTRY glutRemoveOverlay(void);
  10.589 +GLUTAPI void GLUTAPIENTRY glutUseLayer(GLenum layer);
  10.590 +GLUTAPI void GLUTAPIENTRY glutPostOverlayRedisplay(void);
  10.591 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
  10.592 +GLUTAPI void GLUTAPIENTRY glutPostWindowOverlayRedisplay(int win);
  10.593 +#endif
  10.594 +GLUTAPI void GLUTAPIENTRY glutShowOverlay(void);
  10.595 +GLUTAPI void GLUTAPIENTRY glutHideOverlay(void);
  10.596 +#endif
  10.597 +
  10.598 +/* GLUT menu sub-API. */
  10.599 +GLUTAPI int GLUTAPIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int));
  10.600 +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
  10.601 +GLUTAPI int GLUTAPIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int));
  10.602 +#ifndef GLUT_BUILDING_LIB
  10.603 +static int GLUTAPIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); }
  10.604 +#define glutCreateMenu glutCreateMenu_ATEXIT_HACK
  10.605 +#endif
  10.606 +#endif
  10.607 +GLUTAPI void GLUTAPIENTRY glutDestroyMenu(int menu);
  10.608 +GLUTAPI int GLUTAPIENTRY glutGetMenu(void);
  10.609 +GLUTAPI void GLUTAPIENTRY glutSetMenu(int menu);
  10.610 +GLUTAPI void GLUTAPIENTRY glutAddMenuEntry(const char *label, int value);
  10.611 +GLUTAPI void GLUTAPIENTRY glutAddSubMenu(const char *label, int submenu);
  10.612 +GLUTAPI void GLUTAPIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
  10.613 +GLUTAPI void GLUTAPIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
  10.614 +GLUTAPI void GLUTAPIENTRY glutRemoveMenuItem(int item);
  10.615 +GLUTAPI void GLUTAPIENTRY glutAttachMenu(int button);
  10.616 +GLUTAPI void GLUTAPIENTRY glutDetachMenu(int button);
  10.617 +
  10.618 +/* GLUT window callback sub-API. */
  10.619 +GLUTAPI void GLUTAPIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));
  10.620 +GLUTAPI void GLUTAPIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height));
  10.621 +GLUTAPI void GLUTAPIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
  10.622 +GLUTAPI void GLUTAPIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
  10.623 +GLUTAPI void GLUTAPIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
  10.624 +GLUTAPI void GLUTAPIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
  10.625 +GLUTAPI void GLUTAPIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state));
  10.626 +GLUTAPI void GLUTAPIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state));
  10.627 +GLUTAPI void GLUTAPIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void));
  10.628 +GLUTAPI void GLUTAPIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value);
  10.629 +GLUTAPI void GLUTAPIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state));
  10.630 +#if (GLUT_API_VERSION >= 2)
  10.631 +GLUTAPI void GLUTAPIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
  10.632 +GLUTAPI void GLUTAPIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
  10.633 +GLUTAPI void GLUTAPIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
  10.634 +GLUTAPI void GLUTAPIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state));
  10.635 +GLUTAPI void GLUTAPIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state));
  10.636 +GLUTAPI void GLUTAPIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value));
  10.637 +GLUTAPI void GLUTAPIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
  10.638 +GLUTAPI void GLUTAPIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
  10.639 +#if (GLUT_API_VERSION >= 3)
  10.640 +GLUTAPI void GLUTAPIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y));
  10.641 +GLUTAPI void GLUTAPIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void));
  10.642 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  10.643 +GLUTAPI void GLUTAPIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state));
  10.644 +#endif
  10.645 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  10.646 +GLUTAPI void GLUTAPIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
  10.647 +GLUTAPI void GLUTAPIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
  10.648 +GLUTAPI void GLUTAPIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
  10.649 +#endif
  10.650 +#endif
  10.651 +#endif
  10.652 +
  10.653 +/* GLUT color index sub-API. */
  10.654 +GLUTAPI void GLUTAPIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
  10.655 +GLUTAPI GLfloat GLUTAPIENTRY glutGetColor(int ndx, int component);
  10.656 +GLUTAPI void GLUTAPIENTRY glutCopyColormap(int win);
  10.657 +
  10.658 +/* GLUT state retrieval sub-API. */
  10.659 +GLUTAPI int GLUTAPIENTRY glutGet(GLenum type);
  10.660 +GLUTAPI int GLUTAPIENTRY glutDeviceGet(GLenum type);
  10.661 +#if (GLUT_API_VERSION >= 2)
  10.662 +/* GLUT extension support sub-API */
  10.663 +GLUTAPI int GLUTAPIENTRY glutExtensionSupported(const char *name);
  10.664 +#endif
  10.665 +#if (GLUT_API_VERSION >= 3)
  10.666 +GLUTAPI int GLUTAPIENTRY glutGetModifiers(void);
  10.667 +GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type);
  10.668 +#endif
  10.669 +#if (GLUT_API_VERSION >= 5)
  10.670 +GLUTAPI void * GLUTAPIENTRY glutGetProcAddress(const char *procName);
  10.671 +#endif
  10.672 +
  10.673 +/* GLUT font sub-API */
  10.674 +GLUTAPI void GLUTAPIENTRY glutBitmapCharacter(void *font, int character);
  10.675 +GLUTAPI int GLUTAPIENTRY glutBitmapWidth(void *font, int character);
  10.676 +GLUTAPI void GLUTAPIENTRY glutStrokeCharacter(void *font, int character);
  10.677 +GLUTAPI int GLUTAPIENTRY glutStrokeWidth(void *font, int character);
  10.678 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  10.679 +GLUTAPI int GLUTAPIENTRY glutBitmapLength(void *font, const unsigned char *string);
  10.680 +GLUTAPI int GLUTAPIENTRY glutStrokeLength(void *font, const unsigned char *string);
  10.681 +#endif
  10.682 +
  10.683 +/* GLUT pre-built models sub-API */
  10.684 +GLUTAPI void GLUTAPIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
  10.685 +GLUTAPI void GLUTAPIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
  10.686 +GLUTAPI void GLUTAPIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  10.687 +GLUTAPI void GLUTAPIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  10.688 +GLUTAPI void GLUTAPIENTRY glutWireCube(GLdouble size);
  10.689 +GLUTAPI void GLUTAPIENTRY glutSolidCube(GLdouble size);
  10.690 +GLUTAPI void GLUTAPIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  10.691 +GLUTAPI void GLUTAPIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  10.692 +GLUTAPI void GLUTAPIENTRY glutWireDodecahedron(void);
  10.693 +GLUTAPI void GLUTAPIENTRY glutSolidDodecahedron(void);
  10.694 +GLUTAPI void GLUTAPIENTRY glutWireTeapot(GLdouble size);
  10.695 +GLUTAPI void GLUTAPIENTRY glutSolidTeapot(GLdouble size);
  10.696 +GLUTAPI void GLUTAPIENTRY glutWireOctahedron(void);
  10.697 +GLUTAPI void GLUTAPIENTRY glutSolidOctahedron(void);
  10.698 +GLUTAPI void GLUTAPIENTRY glutWireTetrahedron(void);
  10.699 +GLUTAPI void GLUTAPIENTRY glutSolidTetrahedron(void);
  10.700 +GLUTAPI void GLUTAPIENTRY glutWireIcosahedron(void);
  10.701 +GLUTAPI void GLUTAPIENTRY glutSolidIcosahedron(void);
  10.702 +
  10.703 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  10.704 +/* GLUT video resize sub-API. */
  10.705 +GLUTAPI int GLUTAPIENTRY glutVideoResizeGet(GLenum param);
  10.706 +GLUTAPI void GLUTAPIENTRY glutSetupVideoResizing(void);
  10.707 +GLUTAPI void GLUTAPIENTRY glutStopVideoResizing(void);
  10.708 +GLUTAPI void GLUTAPIENTRY glutVideoResize(int x, int y, int width, int height);
  10.709 +GLUTAPI void GLUTAPIENTRY glutVideoPan(int x, int y, int width, int height);
  10.710 +
  10.711 +/* GLUT debugging sub-API. */
  10.712 +GLUTAPI void GLUTAPIENTRY glutReportErrors(void);
  10.713 +#endif
  10.714 +
  10.715 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  10.716 +/* GLUT device control sub-API. */
  10.717 +/* glutSetKeyRepeat modes. */
  10.718 +#define GLUT_KEY_REPEAT_OFF		0
  10.719 +#define GLUT_KEY_REPEAT_ON		1
  10.720 +#define GLUT_KEY_REPEAT_DEFAULT		2
  10.721 +
  10.722 +/* Joystick button masks. */
  10.723 +#define GLUT_JOYSTICK_BUTTON_A		1
  10.724 +#define GLUT_JOYSTICK_BUTTON_B		2
  10.725 +#define GLUT_JOYSTICK_BUTTON_C		4
  10.726 +#define GLUT_JOYSTICK_BUTTON_D		8
  10.727 +
  10.728 +GLUTAPI void GLUTAPIENTRY glutIgnoreKeyRepeat(int ignore);
  10.729 +GLUTAPI void GLUTAPIENTRY glutSetKeyRepeat(int repeatMode);
  10.730 +GLUTAPI void GLUTAPIENTRY glutForceJoystickFunc(void);
  10.731 +
  10.732 +/* GLUT game mode sub-API. */
  10.733 +/* glutGameModeGet. */
  10.734 +#define GLUT_GAME_MODE_ACTIVE           0
  10.735 +#define GLUT_GAME_MODE_POSSIBLE         1
  10.736 +#define GLUT_GAME_MODE_WIDTH            2
  10.737 +#define GLUT_GAME_MODE_HEIGHT           3
  10.738 +#define GLUT_GAME_MODE_PIXEL_DEPTH      4
  10.739 +#define GLUT_GAME_MODE_REFRESH_RATE     5
  10.740 +#define GLUT_GAME_MODE_DISPLAY_CHANGED  6
  10.741 +
  10.742 +GLUTAPI void GLUTAPIENTRY glutGameModeString(const char *string);
  10.743 +GLUTAPI int GLUTAPIENTRY glutEnterGameMode(void);
  10.744 +GLUTAPI void GLUTAPIENTRY glutLeaveGameMode(void);
  10.745 +GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode);
  10.746 +#endif
  10.747 +
  10.748 +#ifdef __cplusplus
  10.749 +}
  10.750 +#endif
  10.751 +
  10.752 +#if 0
  10.753 +#ifdef GLUT_APIENTRY_DEFINED
  10.754 +# undef GLUT_APIENTRY_DEFINED
  10.755 +# undef APIENTRY
  10.756 +#endif
  10.757 +
  10.758 +#ifdef GLUT_WINGDIAPI_DEFINED
  10.759 +# undef GLUT_WINGDIAPI_DEFINED
  10.760 +# undef WINGDIAPI
  10.761 +#endif
  10.762 +
  10.763 +#ifdef GLUT_DEFINED___CDECL
  10.764 +# undef GLUT_DEFINED___CDECL
  10.765 +# undef __cdecl
  10.766 +#endif
  10.767 +
  10.768 +#ifdef GLUT_DEFINED__CRTIMP
  10.769 +# undef GLUT_DEFINED__CRTIMP
  10.770 +# undef _CRTIMP
  10.771 +#endif
  10.772 +#endif
  10.773 +
  10.774 +#endif                  /* __glut_h__ */
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/GL/glutf90.h	Tue Nov 27 15:23:52 2007 +0100
    11.3 @@ -0,0 +1,81 @@
    11.4 +#ifndef __glutf90_h__
    11.5 +#define __glutf90_h__
    11.6 +
    11.7 +/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */
    11.8 +
    11.9 +/* This program is freely distributable without licensing fees 
   11.10 +   and is provided without guarantee or warrantee expressed or 
   11.11 +   implied. This program is -not- in the public domain. */
   11.12 +
   11.13 +/* This header provides the binding interface for William Mitchell's
   11.14 +   f90gl Fortran 90 GLUT binding.  Other GLUT language bindings
   11.15 +   can and should use this interace. */
   11.16 +
   11.17 +/* I appreciate the guidance from William Mitchell
   11.18 +   (mitchell@cam.nist.gov) in developing this friend interface
   11.19 +   for use by the f90gl package.  See ../../README.fortran */
   11.20 +
   11.21 +#include <GL/glut.h>
   11.22 +
   11.23 +/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */
   11.24 +/* NOTE These values are part of a binary interface for the f90gl Fortran
   11.25 +   90 binding and so must NOT changes (additions are allowed). */
   11.26 +
   11.27 +/* GLUTwindow callbacks. */
   11.28 +#define GLUT_FCB_DISPLAY         0    /* GLUTdisplayFCB */
   11.29 +#define GLUT_FCB_RESHAPE         1    /* GLUTreshapeFCB */
   11.30 +#define GLUT_FCB_MOUSE           2    /* GLUTmouseFCB */
   11.31 +#define GLUT_FCB_MOTION          3    /* GLUTmotionFCB */
   11.32 +#define GLUT_FCB_PASSIVE         4    /* GLUTpassiveFCB */
   11.33 +#define GLUT_FCB_ENTRY           5    /* GLUTentryFCB */
   11.34 +#define GLUT_FCB_KEYBOARD        6    /* GLUTkeyboardFCB */
   11.35 +#define GLUT_FCB_KEYBOARD_UP     7    /* GLUTkeyboardFCB */
   11.36 +#define GLUT_FCB_WINDOW_STATUS   8    /* GLUTwindowStatusFCB */
   11.37 +#define GLUT_FCB_VISIBILITY      9    /* GLUTvisibilityFCB */
   11.38 +#define GLUT_FCB_SPECIAL         10   /* GLUTspecialFCB */
   11.39 +#define GLUT_FCB_SPECIAL_UP      11   /* GLUTspecialFCB */
   11.40 +#define GLUT_FCB_BUTTON_BOX      12   /* GLUTbuttonBoxFCB */
   11.41 +#define GLUT_FCB_DIALS           13   /* GLUTdialsFCB */
   11.42 +#define GLUT_FCB_SPACE_MOTION    14   /* GLUTspaceMotionFCB */
   11.43 +#define GLUT_FCB_SPACE_ROTATE    15   /* GLUTspaceRotateFCB */
   11.44 +#define GLUT_FCB_SPACE_BUTTON    16   /* GLUTspaceButtonFCB */
   11.45 +#define GLUT_FCB_TABLET_MOTION   17   /* GLUTtabletMotionFCB */
   11.46 +#define GLUT_FCB_TABLET_BUTTON   18   /* GLUTtabletButtonFCB */
   11.47 +#define GLUT_FCB_JOYSTICK        19   /* GLUTjoystickFCB */
   11.48 +/* Non-GLUTwindow callbacks. */
   11.49 +#define GLUT_FCB_OVERLAY_DISPLAY 100  /* GLUTdisplayFCB */
   11.50 +#define GLUT_FCB_SELECT          101  /* GLUTselectFCB */
   11.51 +#define GLUT_FCB_TIMER           102  /* GLUTtimerFCB */
   11.52 +
   11.53 +/* GLUT Fortran callback function types. */
   11.54 +typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void);
   11.55 +typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *);
   11.56 +/* NOTE the pressed key is int, not unsigned char for Fortran! */
   11.57 +typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *);
   11.58 +typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *);
   11.59 +typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *);
   11.60 +typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *);
   11.61 +typedef void (GLUTCALLBACK *GLUTentryFCB) (int *);
   11.62 +typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *);
   11.63 +typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *);
   11.64 +typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *);
   11.65 +typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *);
   11.66 +typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *);
   11.67 +typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *);
   11.68 +typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *);
   11.69 +typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *);
   11.70 +typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *);
   11.71 +typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *);
   11.72 +typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z);
   11.73 +
   11.74 +typedef void (GLUTCALLBACK *GLUTselectFCB) (int *);
   11.75 +typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *);
   11.76 +typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *);  /* DEPRICATED. */
   11.77 +typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
   11.78 +typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
   11.79 +
   11.80 +/* Functions that set and return Fortran callback functions. */
   11.81 +GLUTAPI void* APIENTRY __glutGetFCB(int which);
   11.82 +GLUTAPI void APIENTRY __glutSetFCB(int which, void *func);
   11.83 +
   11.84 +#endif  /* __glutf90_h__ */
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/GL/glx.h	Tue Nov 27 15:23:52 2007 +0100
    12.3 @@ -0,0 +1,299 @@
    12.4 +#ifndef __glx_h__
    12.5 +#define __glx_h__
    12.6 +
    12.7 +/*
    12.8 +** The contents of this file are subject to the GLX Public License Version 1.0
    12.9 +** (the "License"). You may not use this file except in compliance with the
   12.10 +** License. You may obtain a copy of the License at Silicon Graphics, Inc.,
   12.11 +** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
   12.12 +** or at http://www.sgi.com/software/opensource/glx/license.html.
   12.13 +**
   12.14 +** Software distributed under the License is distributed on an "AS IS"
   12.15 +** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY
   12.16 +** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
   12.17 +** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific
   12.18 +** language governing rights and limitations under the License.
   12.19 +**
   12.20 +** The Original Software is GLX version 1.2 source code, released February,
   12.21 +** 1999. The developer of the Original Software is Silicon Graphics, Inc.
   12.22 +** Those portions of the Subject Software created by Silicon Graphics, Inc.
   12.23 +** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
   12.24 +**
   12.25 +** $Header: /home/cvsroot/synrj/int64_morph/GL/glx.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $
   12.26 +*/
   12.27 +
   12.28 +#include <X11/Xlib.h>
   12.29 +#include <X11/Xutil.h>
   12.30 +#include <X11/Xmd.h>
   12.31 +#include <GL/gl.h>
   12.32 +#include <GL/glxtokens.h>
   12.33 +
   12.34 +#ifdef __cplusplus
   12.35 +extern "C" {
   12.36 +#endif
   12.37 +
   12.38 +/*
   12.39 + * GLX resources.
   12.40 + */
   12.41 +typedef XID GLXContextID;
   12.42 +typedef XID GLXPixmap;
   12.43 +typedef XID GLXDrawable;
   12.44 +typedef XID GLXPbuffer;
   12.45 +typedef XID GLXPbufferSGIX;
   12.46 +typedef XID GLXWindow;
   12.47 +typedef XID GLXFBConfigID;
   12.48 +
   12.49 +/*
   12.50 + * GLXContext is a pointer to opaque data.
   12.51 + */
   12.52 +typedef struct __GLXcontextRec *GLXContext;
   12.53 +
   12.54 +/*
   12.55 + * GLXFBConfig is a pointer to opaque data.
   12.56 + */
   12.57 +typedef struct __GLXFBConfigRec *GLXFBConfig;
   12.58 +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
   12.59 +
   12.60 +
   12.61 +/**********************************************************************/
   12.62 +
   12.63 +/*
   12.64 + * GLX 1.0 functions.
   12.65 + */
   12.66 +extern XVisualInfo* glXChooseVisual(Display *dpy, int screen,
   12.67 +                                    int *attrib_list);
   12.68 +
   12.69 +extern void glXCopyContext(Display *dpy, GLXContext src,
   12.70 +                           GLXContext dst, unsigned long mask);
   12.71 +
   12.72 +extern GLXContext glXCreateContext(Display *dpy, XVisualInfo *vis,
   12.73 +                                   GLXContext share_list, Bool direct);
   12.74 +
   12.75 +extern GLXPixmap glXCreateGLXPixmap(Display *dpy, XVisualInfo *vis,
   12.76 +                                    Pixmap pixmap);
   12.77 +
   12.78 +extern void glXDestroyContext(Display *dpy, GLXContext ctx);
   12.79 +
   12.80 +extern void glXDestroyGLXPixmap(Display *dpy, GLXPixmap pix);
   12.81 +
   12.82 +extern int glXGetConfig(Display *dpy, XVisualInfo *vis,
   12.83 +                        int attrib, int *value);
   12.84 +
   12.85 +extern GLXContext glXGetCurrentContext(void);
   12.86 +
   12.87 +extern GLXDrawable glXGetCurrentDrawable(void);
   12.88 +
   12.89 +extern Bool glXIsDirect(Display *dpy, GLXContext ctx);
   12.90 +
   12.91 +extern Bool glXMakeCurrent(Display *dpy, GLXDrawable drawable,
   12.92 +                           GLXContext ctx);
   12.93 +
   12.94 +extern Bool glXQueryExtension(Display *dpy, int *error_base, int *event_base);
   12.95 +
   12.96 +extern Bool glXQueryVersion(Display *dpy, int *major, int *minor);
   12.97 +
   12.98 +extern void glXSwapBuffers(Display *dpy, GLXDrawable drawable);
   12.99 +
  12.100 +extern void glXUseXFont(Font font, int first, int count, int list_base);
  12.101 +
  12.102 +extern void glXWaitGL(void);
  12.103 +
  12.104 +extern void glXWaitX(void);
  12.105 +
  12.106 +
  12.107 +/*
  12.108 + * GLX 1.1 functions.
  12.109 + */
  12.110 +extern const char *glXGetClientString(Display *dpy, int name);
  12.111 +
  12.112 +extern const char *glXQueryServerString(Display *dpy, int screen, int name);
  12.113 +
  12.114 +extern const char *glXQueryExtensionsString(Display *dpy, int screen);
  12.115 +
  12.116 +
  12.117 +/*
  12.118 + * GLX 1.2 functions.
  12.119 + */
  12.120 +extern Display *glXGetCurrentDisplay(void);
  12.121 +
  12.122 +
  12.123 +/*
  12.124 + * GLX 1.3 functions.
  12.125 + */
  12.126 +extern GLXFBConfig *glXChooseFBConfig(Display *dpy, int screen,
  12.127 +                                      const int *attrib_list, int *nelements);
  12.128 +
  12.129 +extern GLXContext glXCreateNewContext(Display *dpy, GLXFBConfig config,
  12.130 +                                      int render_type, GLXContext share_list,
  12.131 +                                      Bool direct);
  12.132 +
  12.133 +extern GLXPbuffer glXCreatePbuffer(Display *dpy, GLXFBConfig config,
  12.134 +                                   const int *attrib_list);
  12.135 +
  12.136 +extern GLXPixmap glXCreatePixmap(Display *dpy, GLXFBConfig config,
  12.137 +                                 Pixmap pixmap, const int *attrib_list);
  12.138 +
  12.139 +extern GLXWindow glXCreateWindow(Display *dpy, GLXFBConfig config,
  12.140 +                                 Window win, const int *attrib_list);
  12.141 +
  12.142 +extern void glXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf);
  12.143 +
  12.144 +extern void glXDestroyPixmap(Display *dpy, GLXPixmap pixmap);
  12.145 +
  12.146 +extern void glXDestroyWindow(Display *dpy, GLXWindow win);
  12.147 +
  12.148 +extern GLXDrawable glXGetCurrentReadDrawable(void);
  12.149 +
  12.150 +extern int glXGetFBConfigAttrib(Display *dpy, GLXFBConfig config,
  12.151 +                                int attribute, int *value);
  12.152 +
  12.153 +extern GLXFBConfig *glXGetFBConfigs(Display *dpy, int screen, int *nelements);
  12.154 +
  12.155 +extern void glXGetSelectedEvent(Display *dpy, GLXDrawable draw,
  12.156 +                                unsigned long *event_mask);
  12.157 +
  12.158 +extern XVisualInfo *glXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config);
  12.159 +
  12.160 +extern Bool glXMakeContextCurrent(Display *display, GLXDrawable draw,
  12.161 +                                  GLXDrawable read, GLXContext ctx);
  12.162 +
  12.163 +extern int glXQueryContext(Display *dpy, GLXContext ctx,
  12.164 +                           int attribute, int *value);
  12.165 +
  12.166 +extern void glXQueryDrawable(Display *dpy, GLXDrawable draw,
  12.167 +                             int attribute, unsigned int *value);
  12.168 +
  12.169 +extern void glXSelectEvent(Display *dpy, GLXDrawable draw,
  12.170 +                           unsigned long event_mask);
  12.171 +
  12.172 +
  12.173 +/**********************************************************************/
  12.174 +
  12.175 +/*
  12.176 + * ARB_get_proc_address
  12.177 + */
  12.178 +extern void (*glXGetProcAddressARB(const GLubyte *procName))(void);
  12.179 +
  12.180 +/*
  12.181 + * EXT_import_context
  12.182 + */
  12.183 +extern void glXFreeContextEXT(Display *dpy, GLXContext ctx);
  12.184 +
  12.185 +extern GLXContextID glXGetContextIDEXT(const GLXContext ctx);
  12.186 +
  12.187 +extern GLXDrawable glXGetCurrentDrawableEXT(void);
  12.188 +
  12.189 +extern GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID);
  12.190 +
  12.191 +extern int glXQueryContextInfoEXT(Display *dpy, GLXContext ctx,
  12.192 +                                  int attribute, int *value);
  12.193 +
  12.194 +/*
  12.195 + * NV_vertex_array_range
  12.196 + */
  12.197 +extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq,
  12.198 +				 GLfloat writefreq, GLfloat priority);
  12.199 +
  12.200 +extern void glXFreeMemoryNV(GLvoid *pointer);
  12.201 +
  12.202 +/*
  12.203 + * SGI_video_sync
  12.204 + */
  12.205 +extern int glXGetVideoSyncSGI(unsigned int *count);
  12.206 +
  12.207 +extern int glXWaitVideoSyncSGI(int divisor, int remainder,
  12.208 +                               unsigned int *count);
  12.209 +
  12.210 +extern int glXGetRefreshRateSGI(unsigned int *rate);
  12.211 +
  12.212 +/*
  12.213 + * SGIX_swap_group
  12.214 +*/
  12.215 +extern void glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable,
  12.216 +                                 GLXDrawable member);
  12.217 +
  12.218 +/*
  12.219 + * SGIX_swap_barrier
  12.220 +*/
  12.221 +extern void glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable,
  12.222 +                                   int barrier);
  12.223 +
  12.224 +extern Bool glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max);
  12.225 +
  12.226 +/*
  12.227 + * SGIX_fbconfig
  12.228 +*/
  12.229 +
  12.230 +extern int glXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config,
  12.231 +                                    int attribute, int *value_return);
  12.232 +
  12.233 +extern GLXFBConfigSGIX *glXChooseFBConfigSGIX(Display *dpy, int screen,
  12.234 +                                              const int *attrib_list,
  12.235 +                                              int *nelements);
  12.236 +
  12.237 +extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX(Display *dpy,
  12.238 +                                                  GLXFBConfigSGIX config,
  12.239 +                                                  Pixmap pixmap);
  12.240 +
  12.241 +extern GLXContext glXCreateContextWithConfigSGIX(Display *dpy,
  12.242 +                                                 GLXFBConfigSGIX config,
  12.243 +                                                 int render_type,
  12.244 +                                                 GLXContext share_list,
  12.245 +                                                 Bool direct);
  12.246 +
  12.247 +extern XVisualInfo *glXGetVisualFromFBConfigSGIX(Display *dpy,
  12.248 +                                                 GLXFBConfigSGIX config);
  12.249 +
  12.250 +extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX(Display *dpy,
  12.251 +                                                    XVisualInfo *vis);
  12.252 +
  12.253 +/*
  12.254 + * SGIX_pbuffer
  12.255 + */
  12.256 +extern GLXPbuffer glXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfig config,
  12.257 +                                          unsigned int width,
  12.258 +                                          unsigned int height,
  12.259 +                                          const int *attrib_list);
  12.260 +
  12.261 +extern void glXDestroyGLXPbufferSGIX(Display *dpy, GLXPbuffer pbuf);
  12.262 +
  12.263 +extern void glXQueryGLXPbufferSGIX(Display *dpy, GLXPbuffer pbuf,
  12.264 +                                   int attribute, unsigned int *value);
  12.265 +
  12.266 +extern void glXSelectEventSGIX(Display *dpy, GLXDrawable drawable,
  12.267 +                               unsigned long mask);
  12.268 +
  12.269 +extern void glXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable,
  12.270 +                                    unsigned long *mask);
  12.271 +
  12.272 +
  12.273 +/**********************************************************************/
  12.274 +
  12.275 +/*** Should these go here, or in another header? */
  12.276 +/*
  12.277 + * GLX Events
  12.278 + */
  12.279 +typedef struct {
  12.280 +    int event_type;             /* GLX_DAMAGED or GLX_SAVED */
  12.281 +    int draw_type;              /* GLX_WINDOW or GLX_PBUFFER */
  12.282 +    unsigned long serial;       /* # of last request processed by server */
  12.283 +    Bool send_event;            /* true if this came for SendEvent request */
  12.284 +    Display *display;           /* display the event was read from */
  12.285 +    GLXDrawable drawable;       /* XID of Drawable */
  12.286 +    unsigned int buffer_mask;   /* mask indicating which buffers are affected */
  12.287 +    unsigned int aux_buffer;    /* which aux buffer was affected */
  12.288 +    int x, y;
  12.289 +    int width, height;
  12.290 +    int count;                  /* if nonzero, at least this many more */
  12.291 +} GLXPbufferClobberEvent;
  12.292 +
  12.293 +typedef union __GLXEvent {
  12.294 +    GLXPbufferClobberEvent glxpbufferclobber;
  12.295 +    long pad[24];
  12.296 +} GLXEvent;
  12.297 +
  12.298 +#ifdef __cplusplus
  12.299 +}
  12.300 +#endif
  12.301 +
  12.302 +#endif /* !__glx_h__ */
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/GL/glxext.h	Tue Nov 27 15:23:52 2007 +0100
    13.3 @@ -0,0 +1,618 @@
    13.4 +#ifndef __glxext_h_
    13.5 +#define __glxext_h_
    13.6 +
    13.7 +#ifdef __cplusplus
    13.8 +extern "C" {
    13.9 +#endif
   13.10 +
   13.11 +/*
   13.12 +** License Applicability. Except to the extent portions of this file are
   13.13 +** made subject to an alternative license as permitted in the SGI Free
   13.14 +** Software License B, Version 1.1 (the "License"), the contents of this
   13.15 +** file are subject only to the provisions of the License. You may not use
   13.16 +** this file except in compliance with the License. You may obtain a copy
   13.17 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
   13.18 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
   13.19 +** 
   13.20 +** http://oss.sgi.com/projects/FreeB
   13.21 +** 
   13.22 +** Note that, as provided in the License, the Software is distributed on an
   13.23 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
   13.24 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
   13.25 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
   13.26 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
   13.27 +** 
   13.28 +** Original Code. The Original Code is: OpenGL Sample Implementation,
   13.29 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
   13.30 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
   13.31 +** Copyright in any portions created by third parties is as indicated
   13.32 +** elsewhere herein. All Rights Reserved.
   13.33 +** 
   13.34 +** Additional Notice Provisions: This software was created using the
   13.35 +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
   13.36 +** not been independently verified as being compliant with the OpenGL(R)
   13.37 +** version 1.2.1 Specification.
   13.38 +*/
   13.39 +
   13.40 +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
   13.41 +#define WIN32_LEAN_AND_MEAN 1
   13.42 +#include <windows.h>
   13.43 +#endif
   13.44 +
   13.45 +#ifndef APIENTRY
   13.46 +#define APIENTRY
   13.47 +#endif
   13.48 +#ifndef GLAPI
   13.49 +#define GLAPI extern
   13.50 +#endif
   13.51 +
   13.52 +/*************************************************************/
   13.53 +
   13.54 +/* Header file version number, required by OpenGL ABI for Linux */
   13.55 +/* glxext.h last updated 2002/03/22 */
   13.56 +/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */
   13.57 +#define GLX_GLXEXT_VERSION 5
   13.58 +
   13.59 +#ifndef GLX_VERSION_1_3
   13.60 +#define GLX_WINDOW_BIT                     0x00000001
   13.61 +#define GLX_PIXMAP_BIT                     0x00000002
   13.62 +#define GLX_PBUFFER_BIT                    0x00000004
   13.63 +#define GLX_RGBA_BIT                       0x00000001
   13.64 +#define GLX_COLOR_INDEX_BIT                0x00000002
   13.65 +#define GLX_PBUFFER_CLOBBER_MASK           0x08000000
   13.66 +#define GLX_FRONT_LEFT_BUFFER_BIT          0x00000001
   13.67 +#define GLX_FRONT_RIGHT_BUFFER_BIT         0x00000002
   13.68 +#define GLX_BACK_LEFT_BUFFER_BIT           0x00000004
   13.69 +#define GLX_BACK_RIGHT_BUFFER_BIT          0x00000008
   13.70 +#define GLX_AUX_BUFFERS_BIT                0x00000010
   13.71 +#define GLX_DEPTH_BUFFER_BIT               0x00000020
   13.72 +#define GLX_STENCIL_BUFFER_BIT             0x00000040
   13.73 +#define GLX_ACCUM_BUFFER_BIT               0x00000080
   13.74 +#define GLX_CONFIG_CAVEAT                  0x20
   13.75 +#define GLX_X_VISUAL_TYPE                  0x22
   13.76 +#define GLX_TRANSPARENT_TYPE               0x23
   13.77 +#define GLX_TRANSPARENT_INDEX_VALUE        0x24
   13.78 +#define GLX_TRANSPARENT_RED_VALUE          0x25
   13.79 +#define GLX_TRANSPARENT_GREEN_VALUE        0x26
   13.80 +#define GLX_TRANSPARENT_BLUE_VALUE         0x27
   13.81 +#define GLX_TRANSPARENT_ALPHA_VALUE        0x28
   13.82 +#define GLX_DONT_CARE                      0xFFFFFFFF
   13.83 +#define GLX_NONE                           0x8000
   13.84 +#define GLX_SLOW_CONFIG                    0x8001
   13.85 +#define GLX_TRUE_COLOR                     0x8002
   13.86 +#define GLX_DIRECT_COLOR                   0x8003
   13.87 +#define GLX_PSEUDO_COLOR                   0x8004
   13.88 +#define GLX_STATIC_COLOR                   0x8005
   13.89 +#define GLX_GRAY_SCALE                     0x8006
   13.90 +#define GLX_STATIC_GRAY                    0x8007
   13.91 +#define GLX_TRANSPARENT_RGB                0x8008
   13.92 +#define GLX_TRANSPARENT_INDEX              0x8009
   13.93 +#define GLX_VISUAL_ID                      0x800B
   13.94 +#define GLX_SCREEN                         0x800C
   13.95 +#define GLX_NON_CONFORMANT_CONFIG          0x800D
   13.96 +#define GLX_DRAWABLE_TYPE                  0x8010
   13.97 +#define GLX_RENDER_TYPE                    0x8011
   13.98 +#define GLX_X_RENDERABLE                   0x8012
   13.99 +#define GLX_FBCONFIG_ID                    0x8013
  13.100 +#define GLX_RGBA_TYPE                      0x8014
  13.101 +#define GLX_COLOR_INDEX_TYPE               0x8015
  13.102 +#define GLX_MAX_PBUFFER_WIDTH              0x8016
  13.103 +#define GLX_MAX_PBUFFER_HEIGHT             0x8017
  13.104 +#define GLX_MAX_PBUFFER_PIXELS             0x8018
  13.105 +#define GLX_PRESERVED_CONTENTS             0x801B
  13.106 +#define GLX_LARGEST_PBUFFER                0x801C
  13.107 +#define GLX_WIDTH                          0x801D
  13.108 +#define GLX_HEIGHT                         0x801E
  13.109 +#define GLX_EVENT_MASK                     0x801F
  13.110 +#define GLX_DAMAGED                        0x8020
  13.111 +#define GLX_SAVED                          0x8021
  13.112 +#define GLX_WINDOW                         0x8022
  13.113 +#define GLX_PBUFFER                        0x8023
  13.114 +#define GLX_PBUFFER_HEIGHT                 0x8040
  13.115 +#define GLX_PBUFFER_WIDTH                  0x8041
  13.116 +#endif
  13.117 +
  13.118 +#ifndef GLX_VERSION_1_4
  13.119 +#define GLX_SAMPLE_BUFFERS                 100000
  13.120 +#define GLX_SAMPLES                        100001
  13.121 +#endif
  13.122 +
  13.123 +#ifndef GLX_ARB_get_proc_address
  13.124 +#endif
  13.125 +
  13.126 +#ifndef GLX_ARB_multisample
  13.127 +#define GLX_SAMPLE_BUFFERS_ARB             100000
  13.128 +#define GLX_SAMPLES_ARB                    100001
  13.129 +#endif
  13.130 +
  13.131 +#ifndef GLX_SGIS_multisample
  13.132 +#define GLX_SAMPLE_BUFFERS_SGIS            100000
  13.133 +#define GLX_SAMPLES_SGIS                   100001
  13.134 +#endif
  13.135 +
  13.136 +#ifndef GLX_EXT_visual_info
  13.137 +#define GLX_X_VISUAL_TYPE_EXT              0x22
  13.138 +#define GLX_TRANSPARENT_TYPE_EXT           0x23
  13.139 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT    0x24
  13.140 +#define GLX_TRANSPARENT_RED_VALUE_EXT      0x25
  13.141 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT    0x26
  13.142 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT     0x27
  13.143 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT    0x28
  13.144 +#define GLX_NONE_EXT                       0x8000
  13.145 +#define GLX_TRUE_COLOR_EXT                 0x8002
  13.146 +#define GLX_DIRECT_COLOR_EXT               0x8003
  13.147 +#define GLX_PSEUDO_COLOR_EXT               0x8004
  13.148 +#define GLX_STATIC_COLOR_EXT               0x8005
  13.149 +#define GLX_GRAY_SCALE_EXT                 0x8006
  13.150 +#define GLX_STATIC_GRAY_EXT                0x8007
  13.151 +#define GLX_TRANSPARENT_RGB_EXT            0x8008
  13.152 +#define GLX_TRANSPARENT_INDEX_EXT          0x8009
  13.153 +#endif
  13.154 +
  13.155 +#ifndef GLX_SGI_swap_control
  13.156 +#endif
  13.157 +
  13.158 +#ifndef GLX_SGI_video_sync
  13.159 +#endif
  13.160 +
  13.161 +#ifndef GLX_SGI_make_current_read
  13.162 +#endif
  13.163 +
  13.164 +#ifndef GLX_SGIX_video_source
  13.165 +#endif
  13.166 +
  13.167 +#ifndef GLX_EXT_visual_rating
  13.168 +#define GLX_VISUAL_CAVEAT_EXT              0x20
  13.169 +#define GLX_SLOW_VISUAL_EXT                0x8001
  13.170 +#define GLX_NON_CONFORMANT_VISUAL_EXT      0x800D
  13.171 +/* reuse GLX_NONE_EXT */
  13.172 +#endif
  13.173 +
  13.174 +#ifndef GLX_EXT_import_context
  13.175 +#define GLX_SHARE_CONTEXT_EXT              0x800A
  13.176 +#define GLX_VISUAL_ID_EXT                  0x800B
  13.177 +#define GLX_SCREEN_EXT                     0x800C
  13.178 +#endif
  13.179 +
  13.180 +#ifndef GLX_SGIX_fbconfig
  13.181 +#define GLX_WINDOW_BIT_SGIX                0x00000001
  13.182 +#define GLX_PIXMAP_BIT_SGIX                0x00000002
  13.183 +#define GLX_RGBA_BIT_SGIX                  0x00000001
  13.184 +#define GLX_COLOR_INDEX_BIT_SGIX           0x00000002
  13.185 +#define GLX_DRAWABLE_TYPE_SGIX             0x8010
  13.186 +#define GLX_RENDER_TYPE_SGIX               0x8011
  13.187 +#define GLX_X_RENDERABLE_SGIX              0x8012
  13.188 +#define GLX_FBCONFIG_ID_SGIX               0x8013
  13.189 +#define GLX_RGBA_TYPE_SGIX                 0x8014
  13.190 +#define GLX_COLOR_INDEX_TYPE_SGIX          0x8015
  13.191 +/* reuse GLX_SCREEN_EXT */
  13.192 +#endif
  13.193 +
  13.194 +#ifndef GLX_SGIX_pbuffer
  13.195 +#define GLX_PBUFFER_BIT_SGIX               0x00000004
  13.196 +#define GLX_BUFFER_CLOBBER_MASK_SGIX       0x08000000
  13.197 +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX     0x00000001
  13.198 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX    0x00000002
  13.199 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX      0x00000004
  13.200 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX     0x00000008
  13.201 +#define GLX_AUX_BUFFERS_BIT_SGIX           0x00000010
  13.202 +#define GLX_DEPTH_BUFFER_BIT_SGIX          0x00000020
  13.203 +#define GLX_STENCIL_BUFFER_BIT_SGIX        0x00000040
  13.204 +#define GLX_ACCUM_BUFFER_BIT_SGIX          0x00000080
  13.205 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX        0x00000100
  13.206 +#define GLX_MAX_PBUFFER_WIDTH_SGIX         0x8016
  13.207 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX        0x8017
  13.208 +#define GLX_MAX_PBUFFER_PIXELS_SGIX        0x8018
  13.209 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX     0x8019
  13.210 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX    0x801A
  13.211 +#define GLX_PRESERVED_CONTENTS_SGIX        0x801B
  13.212 +#define GLX_LARGEST_PBUFFER_SGIX           0x801C
  13.213 +#define GLX_WIDTH_SGIX                     0x801D
  13.214 +#define GLX_HEIGHT_SGIX                    0x801E
  13.215 +#define GLX_EVENT_MASK_SGIX                0x801F
  13.216 +#define GLX_DAMAGED_SGIX                   0x8020
  13.217 +#define GLX_SAVED_SGIX                     0x8021
  13.218 +#define GLX_WINDOW_SGIX                    0x8022
  13.219 +#define GLX_PBUFFER_SGIX                   0x8023
  13.220 +#endif
  13.221 +
  13.222 +#ifndef GLX_SGI_cushion
  13.223 +#endif
  13.224 +
  13.225 +#ifndef GLX_SGIX_video_resize
  13.226 +#define GLX_SYNC_FRAME_SGIX                0x00000000
  13.227 +#define GLX_SYNC_SWAP_SGIX                 0x00000001
  13.228 +#endif
  13.229 +
  13.230 +#ifndef GLX_SGIX_dmbuffer
  13.231 +#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX     0x8024
  13.232 +#endif
  13.233 +
  13.234 +#ifndef GLX_SGIX_swap_group
  13.235 +#endif
  13.236 +
  13.237 +#ifndef GLX_SGIX_swap_barrier
  13.238 +#endif
  13.239 +
  13.240 +#ifndef GLX_SGIS_blended_overlay
  13.241 +#define GLX_BLENDED_RGBA_SGIS              0x8025
  13.242 +#endif
  13.243 +
  13.244 +#ifndef GLX_SGIS_shared_multisample
  13.245 +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
  13.246 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
  13.247 +#endif
  13.248 +
  13.249 +#ifndef GLX_SUN_get_transparent_index
  13.250 +#endif
  13.251 +
  13.252 +#ifndef GLX_3DFX_multisample
  13.253 +#define GLX_SAMPLE_BUFFERS_3DFX            0x8050
  13.254 +#define GLX_SAMPLES_3DFX                   0x8051
  13.255 +#endif
  13.256 +
  13.257 +#ifndef GLX_MESA_copy_sub_buffer
  13.258 +#endif
  13.259 +
  13.260 +#ifndef GLX_MESA_pixmap_colormap
  13.261 +#endif
  13.262 +
  13.263 +#ifndef GLX_MESA_release_buffers
  13.264 +#endif
  13.265 +
  13.266 +#ifndef GLX_MESA_agp_offset
  13.267 +#endif
  13.268 +
  13.269 +#ifndef GLX_MESA_set_3dfx_mode
  13.270 +#define GLX_3DFX_WINDOW_MODE_MESA          0x1
  13.271 +#define GLX_3DFX_FULLSCREEN_MODE_MESA      0x2
  13.272 +#endif
  13.273 +
  13.274 +#ifndef GLX_SGIX_visual_select_group
  13.275 +#define GLX_VISUAL_SELECT_GROUP_SGIX       0x8028
  13.276 +#endif
  13.277 +
  13.278 +#ifndef GLX_OML_swap_method
  13.279 +#define GLX_SWAP_METHOD_OML                0x8060
  13.280 +#define GLX_SWAP_EXCHANGE_OML              0x8061
  13.281 +#define GLX_SWAP_COPY_OML                  0x8062
  13.282 +#define GLX_SWAP_UNDEFINED_OML             0x8063
  13.283 +#endif
  13.284 +
  13.285 +#ifndef GLX_OML_sync_control
  13.286 +#endif
  13.287 +
  13.288 +
  13.289 +/*************************************************************/
  13.290 +
  13.291 +#ifndef GLX_ARB_get_proc_address
  13.292 +typedef void (*__GLXextFuncPtr)(void);
  13.293 +#endif
  13.294 +
  13.295 +#ifndef GLX_SGIX_video_source
  13.296 +typedef XID GLXVideoSourceSGIX;
  13.297 +#endif
  13.298 +
  13.299 +#ifndef GLX_SGIX_fbconfig
  13.300 +typedef XID GLXFBConfigIDSGIX;
  13.301 +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
  13.302 +#endif
  13.303 +
  13.304 +#ifndef GLX_SGIX_pbuffer
  13.305 +typedef XID GLXPbufferSGIX;
  13.306 +typedef struct {
  13.307 +    int type;
  13.308 +    unsigned long serial;	  /* # of last request processed by server */
  13.309 +    Bool send_event;		  /* true if this came for SendEvent request */
  13.310 +    Display *display;		  /* display the event was read from */
  13.311 +    GLXDrawable drawable;	  /* i.d. of Drawable */
  13.312 +    int event_type;		  /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
  13.313 +    int draw_type;		  /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
  13.314 +    unsigned int mask;	  /* mask indicating which buffers are affected*/
  13.315 +    int x, y;
  13.316 +    int width, height;
  13.317 +    int count;		  /* if nonzero, at least this many more */
  13.318 +} GLXBufferClobberEventSGIX;
  13.319 +#endif
  13.320 +
  13.321 +#ifndef GLX_VERSION_1_3
  13.322 +#define GLX_VERSION_1_3 1
  13.323 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.324 +extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *);
  13.325 +extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *);
  13.326 +extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *);
  13.327 +extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig);
  13.328 +extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *);
  13.329 +extern void glXDestroyWindow (Display *, GLXWindow);
  13.330 +extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *);
  13.331 +extern void glXDestroyPixmap (Display *, GLXPixmap);
  13.332 +extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *);
  13.333 +extern void glXDestroyPbuffer (Display *, GLXPbuffer);
  13.334 +extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *);
  13.335 +extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool);
  13.336 +extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext);
  13.337 +extern GLXDrawable glXGetCurrentReadDrawable (void);
  13.338 +extern Display * glXGetCurrentDisplay (void);
  13.339 +extern int glXQueryContext (Display *, GLXContext, int, int *);
  13.340 +extern void glXSelectEvent (Display *, GLXDrawable, unsigned long);
  13.341 +extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *);
  13.342 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.343 +typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
  13.344 +typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
  13.345 +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
  13.346 +typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
  13.347 +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
  13.348 +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
  13.349 +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
  13.350 +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
  13.351 +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
  13.352 +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
  13.353 +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
  13.354 +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
  13.355 +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
  13.356 +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
  13.357 +typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
  13.358 +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
  13.359 +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
  13.360 +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
  13.361 +#endif
  13.362 +
  13.363 +#ifndef GLX_VERSION_1_4
  13.364 +#define GLX_VERSION_1_4 1
  13.365 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.366 +extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
  13.367 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.368 +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
  13.369 +#endif
  13.370 +
  13.371 +#ifndef GLX_ARB_get_proc_address
  13.372 +#define GLX_ARB_get_proc_address 1
  13.373 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.374 +extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
  13.375 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.376 +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
  13.377 +#endif
  13.378 +
  13.379 +#ifndef GLX_ARB_multisample
  13.380 +#define GLX_ARB_multisample 1
  13.381 +#endif
  13.382 +
  13.383 +#ifndef GLX_SGIS_multisample
  13.384 +#define GLX_SGIS_multisample 1
  13.385 +#endif
  13.386 +
  13.387 +#ifndef GLX_EXT_visual_info
  13.388 +#define GLX_EXT_visual_info 1
  13.389 +#endif
  13.390 +
  13.391 +#ifndef GLX_SGI_swap_control
  13.392 +#define GLX_SGI_swap_control 1
  13.393 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.394 +extern int glXSwapIntervalSGI (int);
  13.395 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.396 +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
  13.397 +#endif
  13.398 +
  13.399 +#ifndef GLX_SGI_video_sync
  13.400 +#define GLX_SGI_video_sync 1
  13.401 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.402 +extern int glXGetVideoSyncSGI (unsigned int *);
  13.403 +extern int glXWaitVideoSyncSGI (int, int, unsigned int *);
  13.404 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.405 +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count);
  13.406 +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count);
  13.407 +#endif
  13.408 +
  13.409 +#ifndef GLX_SGI_make_current_read
  13.410 +#define GLX_SGI_make_current_read 1
  13.411 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.412 +extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext);
  13.413 +extern GLXDrawable glXGetCurrentReadDrawableSGI (void);
  13.414 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.415 +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
  13.416 +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
  13.417 +#endif
  13.418 +
  13.419 +#ifdef _VL_H
  13.420 +#ifndef GLX_SGIX_video_source
  13.421 +#define GLX_SGIX_video_source 1
  13.422 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.423 +extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode);
  13.424 +extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX);
  13.425 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.426 +typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
  13.427 +typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
  13.428 +#endif
  13.429 +
  13.430 +#endif /* _VL_H */
  13.431 +#ifndef GLX_EXT_visual_rating
  13.432 +#define GLX_EXT_visual_rating 1
  13.433 +#endif
  13.434 +
  13.435 +#ifndef GLX_EXT_import_context
  13.436 +#define GLX_EXT_import_context 1
  13.437 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.438 +extern Display * glXGetCurrentDisplayEXT (void);
  13.439 +extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *);
  13.440 +extern GLXContextID glXGetContextIDEXT (const GLXContext);
  13.441 +extern GLXContext glXImportContextEXT (Display *, GLXContextID);
  13.442 +extern void glXFreeContextEXT (Display *, GLXContext);
  13.443 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.444 +typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
  13.445 +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value);
  13.446 +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
  13.447 +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID);
  13.448 +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context);
  13.449 +#endif
  13.450 +
  13.451 +#ifndef GLX_SGIX_fbconfig
  13.452 +#define GLX_SGIX_fbconfig 1
  13.453 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.454 +extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *);
  13.455 +extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *);
  13.456 +extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap);
  13.457 +extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool);
  13.458 +extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX);
  13.459 +extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *);
  13.460 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.461 +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
  13.462 +typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements);
  13.463 +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
  13.464 +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
  13.465 +typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config);
  13.466 +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis);
  13.467 +#endif
  13.468 +
  13.469 +#ifndef GLX_SGIX_pbuffer
  13.470 +#define GLX_SGIX_pbuffer 1
  13.471 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.472 +extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *);
  13.473 +extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX);
  13.474 +extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *);
  13.475 +extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long);
  13.476 +extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *);
  13.477 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.478 +typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
  13.479 +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf);
  13.480 +typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
  13.481 +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask);
  13.482 +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
  13.483 +#endif
  13.484 +
  13.485 +#ifndef GLX_SGI_cushion
  13.486 +#define GLX_SGI_cushion 1
  13.487 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.488 +extern void glXCushionSGI (Display *, Window, float);
  13.489 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.490 +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion);
  13.491 +#endif
  13.492 +
  13.493 +#ifndef GLX_SGIX_video_resize
  13.494 +#define GLX_SGIX_video_resize 1
  13.495 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.496 +extern int glXBindChannelToWindowSGIX (Display *, int, int, Window);
  13.497 +extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int);
  13.498 +extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *);
  13.499 +extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *);
  13.500 +extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum);
  13.501 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.502 +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window);
  13.503 +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h);
  13.504 +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
  13.505 +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
  13.506 +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype);
  13.507 +#endif
  13.508 +
  13.509 +#ifdef _DM_BUFFER_H_
  13.510 +#ifndef GLX_SGIX_dmbuffer
  13.511 +#define GLX_SGIX_dmbuffer 1
  13.512 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.513 +extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer);
  13.514 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.515 +typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
  13.516 +#endif
  13.517 +
  13.518 +#endif /* _DM_BUFFER_H_ */
  13.519 +#ifndef GLX_SGIX_swap_group
  13.520 +#define GLX_SGIX_swap_group 1
  13.521 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.522 +extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable);
  13.523 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.524 +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
  13.525 +#endif
  13.526 +
  13.527 +#ifndef GLX_SGIX_swap_barrier
  13.528 +#define GLX_SGIX_swap_barrier 1
  13.529 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.530 +extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int);
  13.531 +extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *);
  13.532 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.533 +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier);
  13.534 +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max);
  13.535 +#endif
  13.536 +
  13.537 +#ifndef GLX_SUN_get_transparent_index
  13.538 +#define GLX_SUN_get_transparent_index 1
  13.539 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.540 +extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *);
  13.541 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.542 +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
  13.543 +#endif
  13.544 +
  13.545 +#ifndef GLX_MESA_copy_sub_buffer
  13.546 +#define GLX_MESA_copy_sub_buffer 1
  13.547 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.548 +extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int);
  13.549 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.550 +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
  13.551 +#endif
  13.552 +
  13.553 +#ifndef GLX_MESA_pixmap_colormap
  13.554 +#define GLX_MESA_pixmap_colormap 1
  13.555 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.556 +extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap);
  13.557 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.558 +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
  13.559 +#endif
  13.560 +
  13.561 +#ifndef GLX_MESA_release_buffers
  13.562 +#define GLX_MESA_release_buffers 1
  13.563 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.564 +extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable);
  13.565 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.566 +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
  13.567 +#endif
  13.568 +
  13.569 +#ifndef GLX_MESA_set_3dfx_mode
  13.570 +#define GLX_MESA_set_3dfx_mode 1
  13.571 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.572 +extern Bool glXSet3DfxModeMESA (int);
  13.573 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.574 +typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
  13.575 +#endif
  13.576 +
  13.577 +#ifndef GLX_MESA_agp_offset
  13.578 +#define GLX_MESA_agp_offset 1
  13.579 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.580 +extern GLuint glXGetAGPOffsetMESA (const GLvoid *);
  13.581 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.582 +typedef GLuint ( * PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *);
  13.583 +#endif
  13.584 +
  13.585 +#ifndef GLX_SGIX_visual_select_group
  13.586 +#define GLX_SGIX_visual_select_group 1
  13.587 +#endif
  13.588 +
  13.589 +#ifndef GLX_OML_swap_method
  13.590 +#define GLX_OML_swap_method 1
  13.591 +#endif
  13.592 +
  13.593 +#if defined(__STDC_VERSION__)
  13.594 +#if __STDC_VERSION__ >= 199901L
  13.595 +/* Include ISO C99 integer types for OML_sync_control; need a better test */
  13.596 +#include <inttypes.h>
  13.597 +
  13.598 +#ifndef GLX_OML_sync_control
  13.599 +#define GLX_OML_sync_control 1
  13.600 +#ifdef GLX_GLXEXT_PROTOTYPES
  13.601 +extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
  13.602 +extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
  13.603 +extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
  13.604 +extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
  13.605 +extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
  13.606 +#endif /* GLX_GLXEXT_PROTOTYPES */
  13.607 +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
  13.608 +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
  13.609 +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
  13.610 +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
  13.611 +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
  13.612 +#endif
  13.613 +
  13.614 +#endif /* C99 version test */
  13.615 +#endif /* STDC test */
  13.616 +
  13.617 +#ifdef __cplusplus
  13.618 +}
  13.619 +#endif
  13.620 +
  13.621 +#endif
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/GL/glxint.h	Tue Nov 27 15:23:52 2007 +0100
    14.3 @@ -0,0 +1,68 @@
    14.4 +#ifndef __GLX_glxint_h__
    14.5 +#define __GLX_glxint_h__
    14.6 +
    14.7 +/* $XFree86: xc/include/GL/glxint.h,v 1.4 2001/08/01 00:44:34 tsi Exp $ */
    14.8 +/*
    14.9 +** The contents of this file are subject to the GLX Public License Version 1.0
   14.10 +** (the "License"). You may not use this file except in compliance with the
   14.11 +** License. You may obtain a copy of the License at Silicon Graphics, Inc.,
   14.12 +** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
   14.13 +** or at http://www.sgi.com/software/opensource/glx/license.html.
   14.14 +**
   14.15 +** Software distributed under the License is distributed on an "AS IS"
   14.16 +** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY
   14.17 +** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
   14.18 +** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific
   14.19 +** language governing rights and limitations under the License.
   14.20 +**
   14.21 +** The Original Software is GLX version 1.2 source code, released February,
   14.22 +** 1999. The developer of the Original Software is Silicon Graphics, Inc.
   14.23 +** Those portions of the Subject Software created by Silicon Graphics, Inc.
   14.24 +** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
   14.25 +**
   14.26 +** $SGI$
   14.27 +*/
   14.28 +
   14.29 +#include <X11/X.h>
   14.30 +#include <X11/Xdefs.h>
   14.31 +
   14.32 +typedef struct __GLXvisualConfigRec __GLXvisualConfig;
   14.33 +
   14.34 +struct __GLXvisualConfigRec {
   14.35 +    VisualID vid;
   14.36 +    int class;
   14.37 +    Bool rgba;
   14.38 +    int redSize, greenSize, blueSize, alphaSize;
   14.39 +    unsigned long redMask, greenMask, blueMask, alphaMask;
   14.40 +    int accumRedSize, accumGreenSize, accumBlueSize, accumAlphaSize;
   14.41 +    Bool doubleBuffer;
   14.42 +    Bool stereo;
   14.43 +    int bufferSize;
   14.44 +    int depthSize;
   14.45 +    int stencilSize;
   14.46 +    int auxBuffers;
   14.47 +    int level;
   14.48 +    /* Start of Extended Visual Properties */
   14.49 +    int visualRating;		/* visual_rating extension */
   14.50 +    int transparentPixel;	/* visual_info extension */
   14.51 +				/*    colors are floats scaled to ints */
   14.52 +    int transparentRed, transparentGreen, transparentBlue, transparentAlpha;
   14.53 +    int transparentIndex;
   14.54 +};
   14.55 +
   14.56 +#define __GLX_MIN_CONFIG_PROPS	18
   14.57 +#define __GLX_MAX_CONFIG_PROPS	500
   14.58 +
   14.59 +#define __GLX_EXT_CONFIG_PROPS 	7
   14.60 +
   14.61 +/*
   14.62 +** Since we send all non-core visual properties as token, value pairs,
   14.63 +** we require 2 words across the wire. In order to maintain backwards
   14.64 +** compatibility, we need to send the total number of words that the
   14.65 +** VisualConfigs are sent back in so old libraries can simply "ignore"
   14.66 +** the new properties. 
   14.67 +*/
   14.68 +#define __GLX_TOTAL_CONFIG       (__GLX_MIN_CONFIG_PROPS +      \
   14.69 +                                    2 * __GLX_EXT_CONFIG_PROPS)
   14.70 +
   14.71 +#endif /* !__GLX_glxint_h__ */
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/GL/glxmd.h	Tue Nov 27 15:23:52 2007 +0100
    15.3 @@ -0,0 +1,58 @@
    15.4 +#ifndef _GLX_glxmd_h_
    15.5 +#define _GLX_glxmd_h_
    15.6 +
    15.7 +/* $XFree86: xc/include/GL/glxmd.h,v 1.3 2001/03/21 15:51:38 dawes Exp $ */
    15.8 +/*
    15.9 +** License Applicability. Except to the extent portions of this file are
   15.10 +** made subject to an alternative license as permitted in the SGI Free
   15.11 +** Software License B, Version 1.1 (the "License"), the contents of this
   15.12 +** file are subject only to the provisions of the License. You may not use
   15.13 +** this file except in compliance with the License. You may obtain a copy
   15.14 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
   15.15 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
   15.16 +**
   15.17 +** http://oss.sgi.com/projects/FreeB
   15.18 +**
   15.19 +** Note that, as provided in the License, the Software is distributed on an
   15.20 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
   15.21 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
   15.22 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
   15.23 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
   15.24 +**
   15.25 +** Original Code. The Original Code is: OpenGL Sample Implementation,
   15.26 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
   15.27 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
   15.28 +** Copyright in any portions created by third parties is as indicated
   15.29 +** elsewhere herein. All Rights Reserved.
   15.30 +**
   15.31 +** Additional Notice Provisions: The application programming interfaces
   15.32 +** established by SGI in conjunction with the Original Code are The
   15.33 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
   15.34 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
   15.35 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
   15.36 +** Window System(R) (Version 1.3), released October 19, 1998. This software
   15.37 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation
   15.38 +** published by SGI, but has not been independently verified as being
   15.39 +** compliant with the OpenGL(R) version 1.2.1 Specification.
   15.40 +*/
   15.41 +
   15.42 +/*
   15.43 +** Machine dependent declarations.
   15.44 +*/
   15.45 +
   15.46 +/*
   15.47 +** Define floating point wire types.  These are in IEEE format on the wire.
   15.48 +*/
   15.49 +typedef float FLOAT32;
   15.50 +typedef double FLOAT64;
   15.51 +
   15.52 +/*
   15.53 +** Like B32, but this is used to store floats in a request.
   15.54 +**
   15.55 +** NOTE: Machines that have a native 32-bit IEEE float can define this as 
   15.56 +**       nothing.  Machines that don't might mimic the float with an integer,
   15.57 +**       and then define this to :32.
   15.58 +*/
   15.59 +#define F32
   15.60 +
   15.61 +#endif /* _GLX_glxmd_h_ */
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/GL/glxproto.h	Tue Nov 27 15:23:52 2007 +0100
    16.3 @@ -0,0 +1,1834 @@
    16.4 +#ifndef _GLX_glxproto_h_
    16.5 +#define _GLX_glxproto_h_
    16.6 +
    16.7 +/* $XFree86: xc/include/GL/glxproto.h,v 1.5 2001/08/01 00:44:34 tsi Exp $ */
    16.8 +/*
    16.9 +** License Applicability. Except to the extent portions of this file are
   16.10 +** made subject to an alternative license as permitted in the SGI Free
   16.11 +** Software License B, Version 1.1 (the "License"), the contents of this
   16.12 +** file are subject only to the provisions of the License. You may not use
   16.13 +** this file except in compliance with the License. You may obtain a copy
   16.14 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
   16.15 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
   16.16 +**
   16.17 +** http://oss.sgi.com/projects/FreeB
   16.18 +**
   16.19 +** Note that, as provided in the License, the Software is distributed on an
   16.20 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
   16.21 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
   16.22 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
   16.23 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
   16.24 +**
   16.25 +** Original Code. The Original Code is: OpenGL Sample Implementation,
   16.26 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
   16.27 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
   16.28 +** Copyright in any portions created by third parties is as indicated
   16.29 +** elsewhere herein. All Rights Reserved.
   16.30 +**
   16.31 +** Additional Notice Provisions: The application programming interfaces
   16.32 +** established by SGI in conjunction with the Original Code are The
   16.33 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
   16.34 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
   16.35 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
   16.36 +** Window System(R) (Version 1.3), released October 19, 1998. This software
   16.37 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation
   16.38 +** published by SGI, but has not been independently verified as being
   16.39 +** compliant with the OpenGL(R) version 1.2.1 Specification.
   16.40 +*/
   16.41 +
   16.42 +#include <GL/glxmd.h>
   16.43 +
   16.44 +/*****************************************************************************/
   16.45 +
   16.46 +/*
   16.47 +** Errrors.
   16.48 +*/
   16.49 +#define GLXBadContext		0
   16.50 +#define GLXBadContextState	1
   16.51 +#define GLXBadDrawable		2
   16.52 +#define GLXBadPixmap		3
   16.53 +#define GLXBadContextTag	4
   16.54 +#define GLXBadCurrentWindow	5
   16.55 +#define GLXBadRenderRequest	6
   16.56 +#define GLXBadLargeRequest	7
   16.57 +#define GLXUnsupportedPrivateRequest	8
   16.58 +#define GLXBadFBConfig		9
   16.59 +#define GLXBadPbuffer		10
   16.60 +#define GLXBadCurrentDrawable	11
   16.61 +#define GLXBadWindow		12
   16.62 +
   16.63 +#define __GLX_NUMBER_ERRORS 12
   16.64 +
   16.65 +/*
   16.66 +** Events.
   16.67 +** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX
   16.68 +**  event - this helps initialization if the server supports the pbuffer
   16.69 +**  extension and the client doesn't.
   16.70 +*/
   16.71 +#define GLX_PbufferClobber	0
   16.72 +
   16.73 +#define __GLX_NUMBER_EVENTS 17
   16.74 +
   16.75 +#define GLX_EXTENSION_NAME	"GLX"
   16.76 +#define GLX_EXTENSION_ALIAS	"SGI-GLX"
   16.77 +
   16.78 +#define __GLX_MAX_CONTEXT_PROPS 3
   16.79 +
   16.80 +#define GLX_VENDOR		0x1
   16.81 +#define GLX_VERSION		0x2
   16.82 +#define GLX_EXTENSIONS		0x3
   16.83 +
   16.84 +/*****************************************************************************/
   16.85 +
   16.86 +/*
   16.87 +** For the structure definitions in this file, we must redefine these types in
   16.88 +** terms of Xmd.h types, which may include bitfields.  All of these are
   16.89 +** undef'ed at the end of this file, restoring the definitions in glx.h.
   16.90 +*/
   16.91 +#define GLXContextID CARD32
   16.92 +#define GLXPixmap CARD32
   16.93 +#define GLXDrawable CARD32
   16.94 +#define GLXPbuffer CARD32
   16.95 +#define GLXWindow CARD32
   16.96 +#define GLXFBConfigID CARD32
   16.97 +#define GLXFBConfigIDSGIX CARD32
   16.98 +#define GLXPbufferSGIX CARD32
   16.99 +
  16.100 +/*
  16.101 +** ContextTag is not exposed to the API.
  16.102 +*/
  16.103 +typedef CARD32 GLXContextTag;
  16.104 +
  16.105 +/*****************************************************************************/
  16.106 +
  16.107 +/*
  16.108 +** Sizes of basic wire types.
  16.109 +*/
  16.110 +#define __GLX_SIZE_INT8		1
  16.111 +#define __GLX_SIZE_INT16	2
  16.112 +#define __GLX_SIZE_INT32	4
  16.113 +#define __GLX_SIZE_CARD8	1
  16.114 +#define __GLX_SIZE_CARD16	2
  16.115 +#define __GLX_SIZE_CARD32	4
  16.116 +#define __GLX_SIZE_FLOAT32	4
  16.117 +#define __GLX_SIZE_FLOAT64	8
  16.118 +
  16.119 +/*****************************************************************************/
  16.120 +
  16.121 +/* Requests */
  16.122 +
  16.123 +/*
  16.124 +** Render command request.  A bunch of rendering commands are packed into
  16.125 +** a single X extension request.
  16.126 +*/
  16.127 +typedef struct GLXRender {
  16.128 +    CARD8	reqType;
  16.129 +    CARD8	glxCode;
  16.130 +    CARD16	length B16;
  16.131 +    GLXContextTag contextTag B32;
  16.132 +} xGLXRenderReq;
  16.133 +#define sz_xGLXRenderReq 8
  16.134 +
  16.135 +/*
  16.136 +** The maximum size that a GLXRender command can be.  The value must fit
  16.137 +** in 16 bits and should be a multiple of 4.
  16.138 +*/
  16.139 +#define __GLX_MAX_RENDER_CMD_SIZE	64000
  16.140 +
  16.141 +/*
  16.142 +** Large render command request.  A single large rendering command
  16.143 +** is output in multiple X extension requests.	The first packet
  16.144 +** contains an opcode dependent header (see below) that describes
  16.145 +** the data that follows.
  16.146 +*/
  16.147 +typedef struct GLXRenderLarge {
  16.148 +    CARD8	reqType;
  16.149 +    CARD8	glxCode;
  16.150 +    CARD16	length B16;
  16.151 +    GLXContextTag contextTag B32;
  16.152 +    CARD16	requestNumber B16;
  16.153 +    CARD16	requestTotal B16;
  16.154 +    CARD32	dataBytes B32;
  16.155 +} xGLXRenderLargeReq;
  16.156 +#define sz_xGLXRenderLargeReq 16
  16.157 +
  16.158 +/*
  16.159 +** GLX single request.	Commands that go over as single GLX protocol
  16.160 +** requests use this structure.  The glxCode will be one of the X_GLsop
  16.161 +** opcodes.
  16.162 +*/
  16.163 +typedef struct GLXSingle {
  16.164 +    CARD8	reqType;
  16.165 +    CARD8	glxCode;
  16.166 +    CARD16	length B16;
  16.167 +    GLXContextTag contextTag B32;
  16.168 +} xGLXSingleReq;
  16.169 +#define sz_xGLXSingleReq 8
  16.170 +
  16.171 +/*
  16.172 +** glXQueryVersion request
  16.173 +*/
  16.174 +typedef struct GLXQueryVersion {
  16.175 +    CARD8	reqType;
  16.176 +    CARD8	glxCode;
  16.177 +    CARD16	length B16;
  16.178 +    CARD32	majorVersion B32;
  16.179 +    CARD32	minorVersion B32;
  16.180 +} xGLXQueryVersionReq;
  16.181 +#define sz_xGLXQueryVersionReq 12
  16.182 +
  16.183 +/*
  16.184 +** glXIsDirect request
  16.185 +*/
  16.186 +typedef struct GLXIsDirect {
  16.187 +    CARD8	reqType;
  16.188 +    CARD8	glxCode;
  16.189 +    CARD16	length B16;
  16.190 +    GLXContextID context B32;
  16.191 +} xGLXIsDirectReq;
  16.192 +#define sz_xGLXIsDirectReq 8
  16.193 +
  16.194 +/*
  16.195 +** glXCreateContext request
  16.196 +*/
  16.197 +typedef struct GLXCreateContext {
  16.198 +    CARD8	reqType;
  16.199 +    CARD8	glxCode;
  16.200 +    CARD16	length B16;
  16.201 +    GLXContextID context B32;
  16.202 +    CARD32	visual B32;
  16.203 +    CARD32	screen B32;
  16.204 +    GLXContextID shareList B32;
  16.205 +    BOOL	isDirect;
  16.206 +    CARD8	reserved1;
  16.207 +    CARD16	reserved2 B16;
  16.208 +} xGLXCreateContextReq;
  16.209 +#define sz_xGLXCreateContextReq 24
  16.210 +
  16.211 +/*
  16.212 +** glXDestroyContext request
  16.213 +*/
  16.214 +typedef struct GLXDestroyContext {
  16.215 +    CARD8	reqType;
  16.216 +    CARD8	glxCode;
  16.217 +    CARD16	length B16;
  16.218 +    GLXContextID context B32;
  16.219 +} xGLXDestroyContextReq;
  16.220 +#define sz_xGLXDestroyContextReq 8
  16.221 +
  16.222 +/*
  16.223 +** glXMakeCurrent request
  16.224 +*/
  16.225 +typedef struct GLXMakeCurrent {
  16.226 +    CARD8	reqType;
  16.227 +    CARD8	glxCode;
  16.228 +    CARD16	length B16;
  16.229 +    GLXDrawable drawable B32;
  16.230 +    GLXContextID context B32;
  16.231 +    GLXContextTag oldContextTag B32;
  16.232 +} xGLXMakeCurrentReq;
  16.233 +#define sz_xGLXMakeCurrentReq 16
  16.234 +
  16.235 +/*
  16.236 +** glXWaitGL request
  16.237 +*/
  16.238 +typedef struct GLXWaitGL {
  16.239 +    CARD8	reqType;
  16.240 +    CARD8	glxCode;
  16.241 +    CARD16	length B16;
  16.242 +    GLXContextTag contextTag B32;
  16.243 +} xGLXWaitGLReq;
  16.244 +#define sz_xGLXWaitGLReq 8
  16.245 +
  16.246 +/*
  16.247 +** glXWaitX request
  16.248 +*/
  16.249 +typedef struct GLXWaitX {
  16.250 +    CARD8	reqType;
  16.251 +    CARD8	glxCode;
  16.252 +    CARD16	length B16;
  16.253 +    GLXContextTag contextTag B32;
  16.254 +} xGLXWaitXReq;
  16.255 +#define sz_xGLXWaitXReq 8
  16.256 +
  16.257 +/*
  16.258 +** glXCopyContext request
  16.259 +*/
  16.260 +typedef struct GLXCopyContext {
  16.261 +    CARD8	reqType;
  16.262 +    CARD8	glxCode;
  16.263 +    CARD16	length B16;
  16.264 +    GLXContextID source B32;
  16.265 +    GLXContextID dest B32;
  16.266 +    CARD32	mask B32;
  16.267 +    GLXContextTag contextTag B32;
  16.268 +} xGLXCopyContextReq;
  16.269 +#define sz_xGLXCopyContextReq 20
  16.270 +
  16.271 +/*
  16.272 +** glXSwapBuffers request
  16.273 +*/
  16.274 +typedef struct GLXSwapBuffers {
  16.275 +    CARD8	reqType;
  16.276 +    CARD8	glxCode;
  16.277 +    CARD16	length B16;
  16.278 +    GLXContextTag contextTag B32;
  16.279 +    GLXDrawable drawable B32;
  16.280 +} xGLXSwapBuffersReq;
  16.281 +#define sz_xGLXSwapBuffersReq 12
  16.282 +
  16.283 +/*
  16.284 +** glXUseXFont request
  16.285 +*/
  16.286 +typedef struct GLXUseXFont {
  16.287 +    CARD8	reqType;
  16.288 +    CARD8	glxCode;
  16.289 +    CARD16	length B16;
  16.290 +    GLXContextTag contextTag B32;
  16.291 +    CARD32	font B32;
  16.292 +    CARD32	first B32;
  16.293 +    CARD32	count B32;
  16.294 +    CARD32	listBase B32;
  16.295 +} xGLXUseXFontReq;
  16.296 +#define sz_xGLXUseXFontReq 24
  16.297 +
  16.298 +/*
  16.299 +** glXCreateGLXPixmap request
  16.300 +*/
  16.301 +typedef struct GLXCreateGLXPixmap {
  16.302 +    CARD8	reqType;
  16.303 +    CARD8	glxCode;
  16.304 +    CARD16	length B16;
  16.305 +    CARD32	screen B32;
  16.306 +    CARD32	visual B32;
  16.307 +    CARD32	pixmap B32;
  16.308 +    GLXPixmap	glxpixmap B32;
  16.309 +} xGLXCreateGLXPixmapReq;
  16.310 +#define sz_xGLXCreateGLXPixmapReq 20
  16.311 +
  16.312 +/*
  16.313 +** glXDestroyGLXPixmap request
  16.314 +*/
  16.315 +typedef struct GLXDestroyGLXPixmap {
  16.316 +    CARD8	reqType;
  16.317 +    CARD8	glxCode;
  16.318 +    CARD16	length B16;
  16.319 +    GLXPixmap	glxpixmap B32;
  16.320 +} xGLXDestroyGLXPixmapReq;
  16.321 +#define sz_xGLXDestroyGLXPixmapReq 8
  16.322 +
  16.323 +/*
  16.324 +** glXGetVisualConfigs request
  16.325 +*/
  16.326 +typedef struct GLXGetVisualConfigs {
  16.327 +    CARD8	reqType;
  16.328 +    CARD8	glxCode;
  16.329 +    CARD16	length B16;
  16.330 +    CARD32	screen B32;
  16.331 +} xGLXGetVisualConfigsReq;
  16.332 +#define sz_xGLXGetVisualConfigsReq 8
  16.333 +
  16.334 +/*
  16.335 +** glXVendorPrivate request.
  16.336 +*/
  16.337 +typedef struct GLXVendorPrivate {
  16.338 +    CARD8	reqType;
  16.339 +    CARD8	glxCode;
  16.340 +    CARD16	length B16;
  16.341 +    CARD32	vendorCode B32;		/* vendor-specific opcode */
  16.342 +    GLXContextTag contextTag B32;
  16.343 +    /*
  16.344 +    ** More data may follow; this is just the header.
  16.345 +    */
  16.346 +} xGLXVendorPrivateReq;
  16.347 +#define sz_xGLXVendorPrivateReq 12
  16.348 +
  16.349 +/*
  16.350 +** glXVendorPrivateWithReply request
  16.351 +*/
  16.352 +typedef struct GLXVendorPrivateWithReply {
  16.353 +    CARD8	reqType;
  16.354 +    CARD8	glxCode;
  16.355 +    CARD16	length B16;
  16.356 +    CARD32	vendorCode B32;		/* vendor-specific opcode */
  16.357 +    GLXContextTag contextTag B32;
  16.358 +    /*
  16.359 +    ** More data may follow; this is just the header.
  16.360 +    */
  16.361 +} xGLXVendorPrivateWithReplyReq;
  16.362 +#define sz_xGLXVendorPrivateWithReplyReq 12
  16.363 +
  16.364 +/*
  16.365 +** glXQueryExtensionsString request
  16.366 +*/
  16.367 +typedef struct GLXQueryExtensionsString {
  16.368 +    CARD8	reqType;
  16.369 +    CARD8	glxCode;
  16.370 +    CARD16	length B16;
  16.371 +    CARD32	screen B32;
  16.372 +} xGLXQueryExtensionsStringReq;
  16.373 +#define sz_xGLXQueryExtensionsStringReq 8
  16.374 +
  16.375 +/*
  16.376 +** glXQueryServerString request
  16.377 +*/
  16.378 +typedef struct GLXQueryServerString {
  16.379 +    CARD8	reqType;
  16.380 +    CARD8	glxCode;
  16.381 +    CARD16	length B16;
  16.382 +    CARD32	screen	B32;
  16.383 +    CARD32	name B32;
  16.384 +} xGLXQueryServerStringReq;
  16.385 +#define sz_xGLXQueryServerStringReq 12
  16.386 +
  16.387 +/*
  16.388 +** glXClientInfo request
  16.389 +*/
  16.390 +typedef struct GLXClientInfo {
  16.391 +    CARD8	reqType;
  16.392 +    CARD8	glxCode;
  16.393 +    CARD16	length B16;
  16.394 +    CARD32	major B32;
  16.395 +    CARD32	minor B32;
  16.396 +    CARD32	numbytes B32;
  16.397 +} xGLXClientInfoReq;
  16.398 +#define sz_xGLXClientInfoReq 16
  16.399 +
  16.400 +/*** Start of GLX 1.3 requests */
  16.401 +
  16.402 +/*
  16.403 +** glXGetFBConfigs request
  16.404 +*/
  16.405 +typedef struct GLXGetFBConfigs {
  16.406 +    CARD8	reqType;
  16.407 +    CARD8	glxCode;
  16.408 +    CARD16	length B16;
  16.409 +    CARD32	screen B32;
  16.410 +} xGLXGetFBConfigsReq;
  16.411 +#define sz_xGLXGetFBConfigsReq 8
  16.412 +
  16.413 +/*
  16.414 +** glXCreatePixmap request
  16.415 +*/
  16.416 +typedef struct GLXCreatePixmap {
  16.417 +    CARD8	reqType;
  16.418 +    CARD8	glxCode;
  16.419 +    CARD16	length B16;
  16.420 +    CARD32	screen B32;
  16.421 +    GLXFBConfigID fbconfig B32;
  16.422 +    CARD32	pixmap B32;
  16.423 +    GLXPixmap	glxpixmap B32;
  16.424 +    CARD32	numAttribs B32;
  16.425 +    /* followed by attribute list */
  16.426 +} xGLXCreatePixmapReq;
  16.427 +#define sz_xGLXCreatePixmapReq 24
  16.428 +
  16.429 +/*
  16.430 +** glXDestroyPixmap request
  16.431 +*/
  16.432 +typedef struct GLXDestroyPixmap {
  16.433 +    CARD8	reqType;
  16.434 +    CARD8	glxCode;
  16.435 +    CARD16	length B16;
  16.436 +    GLXPixmap	glxpixmap B32;
  16.437 +} xGLXDestroyPixmapReq;
  16.438 +#define sz_xGLXDestroyPixmapReq 8
  16.439 +
  16.440 +/*
  16.441 +** glXCreateNewContext request
  16.442 +*/
  16.443 +typedef struct GLXCreateNewContext {
  16.444 +    CARD8	reqType;
  16.445 +    CARD8	glxCode;
  16.446 +    CARD16	length B16;
  16.447 +    GLXContextID context B32;
  16.448 +    GLXFBConfigID fbconfig B32;
  16.449 +    CARD32	screen B32;
  16.450 +    CARD32	renderType;
  16.451 +    GLXContextID shareList B32;
  16.452 +    BOOL	isDirect;
  16.453 +    CARD8	reserved1;
  16.454 +    CARD16	reserved2 B16;
  16.455 +} xGLXCreateNewContextReq;
  16.456 +#define sz_xGLXCreateNewContextReq 28
  16.457 +
  16.458 +/*
  16.459 +** glXQueryContext request
  16.460 +*/
  16.461 +typedef struct GLXQueryContext {
  16.462 +    CARD8	reqType;
  16.463 +    CARD8	glxCode;
  16.464 +    CARD16	length B16;
  16.465 +    GLXContextID context B32;
  16.466 +} xGLXQueryContextReq;
  16.467 +#define sz_xGLXQueryContextReq 8
  16.468 +
  16.469 +/*
  16.470 +** glXMakeContextCurrent request
  16.471 +*/
  16.472 +typedef struct GLXMakeContextCurrent {
  16.473 +    CARD8	reqType;
  16.474 +    CARD8	glxCode;
  16.475 +    CARD16	length B16;
  16.476 +    GLXContextTag oldContextTag B32;
  16.477 +    GLXDrawable drawable B32;
  16.478 +    GLXDrawable readdrawable B32;
  16.479 +    GLXContextID context B32;
  16.480 +} xGLXMakeContextCurrentReq;
  16.481 +#define sz_xGLXMakeContextCurrentReq 20
  16.482 +
  16.483 +/*
  16.484 +** glXCreatePbuffer request
  16.485 +*/
  16.486 +typedef struct GLXCreatePbuffer {
  16.487 +    CARD8	reqType;
  16.488 +    CARD8	glxCode;
  16.489 +    CARD16	length B16;
  16.490 +    CARD32	screen B32;
  16.491 +    GLXFBConfigID fbconfig B32;
  16.492 +    GLXPbuffer	pbuffer B32;
  16.493 +    CARD32	numAttribs B32;
  16.494 +    /* followed by attribute list */
  16.495 +} xGLXCreatePbufferReq;
  16.496 +#define sz_xGLXCreatePbufferReq 20
  16.497 +
  16.498 +/*
  16.499 +** glXDestroyPbuffer request
  16.500 +*/
  16.501 +typedef struct GLXDestroyPbuffer {
  16.502 +    CARD8	reqType;
  16.503 +    CARD8	glxCode;
  16.504 +    CARD16	length B16;
  16.505 +    GLXPbuffer	pbuffer B32;
  16.506 +} xGLXDestroyPbufferReq;
  16.507 +#define sz_xGLXDestroyPbufferReq 8
  16.508 +
  16.509 +/*
  16.510 +** glXGetDrawableAttributes request
  16.511 +*/
  16.512 +typedef struct GLXGetDrawableAttributes {
  16.513 +    CARD8	reqType;
  16.514 +    CARD8	glxCode;
  16.515 +    CARD16	length B16;
  16.516 +    GLXDrawable drawable B32;
  16.517 +} xGLXGetDrawableAttributesReq;
  16.518 +#define sz_xGLXGetDrawableAttributesReq 8
  16.519 +
  16.520 +/*
  16.521 +** glXChangeDrawableAttributes request
  16.522 +*/
  16.523 +typedef struct GLXChangeDrawableAttributes {
  16.524 +    CARD8	reqType;
  16.525 +    CARD8	glxCode;
  16.526 +    CARD16	length B16;
  16.527 +    GLXDrawable drawable B32;
  16.528 +    CARD32	numAttribs B32;
  16.529 +    /* followed by attribute list */
  16.530 +} xGLXChangeDrawableAttributesReq;
  16.531 +#define sz_xGLXChangeDrawableAttributesReq 12
  16.532 +
  16.533 +/*
  16.534 +** glXCreateWindow request
  16.535 +*/
  16.536 +typedef struct GLXCreateWindow {
  16.537 +    CARD8	reqType;
  16.538 +    CARD8	glxCode;
  16.539 +    CARD16	length B16;
  16.540 +    CARD32	screen B32;
  16.541 +    GLXFBConfigID fbconfig B32;
  16.542 +    CARD32	window B32;
  16.543 +    GLXWindow	glxwindow B32;
  16.544 +    CARD32	numAttribs B32;
  16.545 +    /* followed by attribute list */
  16.546 +} xGLXCreateWindowReq;
  16.547 +#define sz_xGLXCreateWindowReq 24
  16.548 +
  16.549 +/*
  16.550 +** glXDestroyWindow request
  16.551 +*/
  16.552 +typedef struct GLXDestroyWindow {
  16.553 +    CARD8	reqType;
  16.554 +    CARD8	glxCode;
  16.555 +    CARD16	length B16;
  16.556 +    GLXWindow	glxwindow B32;
  16.557 +} xGLXDestroyWindowReq;
  16.558 +#define sz_xGLXDestroyWindowReq 8
  16.559 +
  16.560 +/* Replies */
  16.561 +
  16.562 +typedef struct {
  16.563 +    BYTE	type;			/* X_Reply */
  16.564 +    CARD8	unused;			/* not used */
  16.565 +    CARD16	sequenceNumber B16;
  16.566 +    CARD32	length B32;
  16.567 +    CARD32	error B32;
  16.568 +    CARD32	pad2 B32;
  16.569 +    CARD32	pad3 B32;
  16.570 +    CARD32	pad4 B32;
  16.571 +    CARD32	pad5 B32;
  16.572 +    CARD32	pad6 B32;
  16.573 +} xGLXGetErrorReply;
  16.574 +#define sz_xGLXGetErrorReply 32
  16.575 +
  16.576 +typedef struct {
  16.577 +    BYTE	type;			/* X_Reply */
  16.578 +    CARD8	unused;			/* not used */
  16.579 +    CARD16	sequenceNumber B16;
  16.580 +    CARD32	length B32;
  16.581 +    GLXContextTag contextTag B32;
  16.582 +    CARD32	pad2 B32;
  16.583 +    CARD32	pad3 B32;
  16.584 +    CARD32	pad4 B32;
  16.585 +    CARD32	pad5 B32;
  16.586 +    CARD32	pad6 B32;
  16.587 +} xGLXMakeCurrentReply;
  16.588 +#define sz_xGLXMakeCurrentReply 32
  16.589 +
  16.590 +typedef struct {
  16.591 +    BYTE	type;			/* X_Reply */
  16.592 +    CARD8	unused;			/* not used */
  16.593 +    CARD16	sequenceNumber B16;
  16.594 +    CARD32	length B32;
  16.595 +    CARD32	pad1 B32;
  16.596 +    CARD32	pad2 B32;
  16.597 +    CARD32	pad3 B32;
  16.598 +    CARD32	pad4 B32;
  16.599 +    CARD32	pad5 B32;
  16.600 +    CARD32	pad6 B32;
  16.601 +} xGLXReadPixelsReply;
  16.602 +#define sz_xGLXReadPixelsReply 32
  16.603 +
  16.604 +typedef struct {
  16.605 +    BYTE	type;			/* X_Reply */
  16.606 +    CARD8	unused;			/* not used */
  16.607 +    CARD16	sequenceNumber B16;
  16.608 +    CARD32	length B32;
  16.609 +    CARD32	pad1 B32;
  16.610 +    CARD32	pad2 B32;
  16.611 +    CARD32	width B32;
  16.612 +    CARD32	height B32;
  16.613 +    CARD32	depth B32;
  16.614 +    CARD32	pad6 B32;
  16.615 +} xGLXGetTexImageReply;
  16.616 +#define sz_xGLXGetTexImageReply 32
  16.617 +
  16.618 +typedef struct {
  16.619 +    BYTE	type;			/* X_Reply */
  16.620 +    CARD8	unused;			/* not used */
  16.621 +    CARD16	sequenceNumber B16;
  16.622 +    CARD32	length B32;
  16.623 +    CARD32	pad1 B32;
  16.624 +    CARD32	pad2 B32;
  16.625 +    CARD32	width B32;
  16.626 +    CARD32	height B32;
  16.627 +    CARD32	pad5 B32;
  16.628 +    CARD32	pad6 B32;
  16.629 +} xGLXGetSeparableFilterReply;
  16.630 +#define sz_xGLXGetSeparableFilterReply 32
  16.631 +
  16.632 +typedef struct {
  16.633 +    BYTE	type;			/* X_Reply */
  16.634 +    CARD8	unused;			/* not used */
  16.635 +    CARD16	sequenceNumber B16;
  16.636 +    CARD32	length B32;
  16.637 +    CARD32	pad1 B32;
  16.638 +    CARD32	pad2 B32;
  16.639 +    CARD32	width B32;
  16.640 +    CARD32	height B32;
  16.641 +    CARD32	pad5 B32;
  16.642 +    CARD32	pad6 B32;
  16.643 +} xGLXGetConvolutionFilterReply;
  16.644 +#define sz_xGLXGetConvolutionFilterReply 32
  16.645 +
  16.646 +typedef struct {
  16.647 +    BYTE	type;			/* X_Reply */
  16.648 +    CARD8	unused;			/* not used */
  16.649 +    CARD16	sequenceNumber B16;
  16.650 +    CARD32	length B32;
  16.651 +    CARD32	pad1 B32;
  16.652 +    CARD32	pad2 B32;
  16.653 +    CARD32	width B32;
  16.654 +    CARD32	pad4 B32;
  16.655 +    CARD32	pad5 B32;
  16.656 +    CARD32	pad6 B32;
  16.657 +} xGLXGetHistogramReply;
  16.658 +#define sz_xGLXGetHistogramReply 32
  16.659 +
  16.660 +typedef struct {
  16.661 +    BYTE	type;			/* X_Reply */
  16.662 +    CARD8	unused;			/* not used */
  16.663 +    CARD16	sequenceNumber B16;
  16.664 +    CARD32	length B32;
  16.665 +    CARD32	pad1 B32;
  16.666 +    CARD32	pad2 B32;
  16.667 +    CARD32	pad3 B32;
  16.668 +    CARD32	pad4 B32;
  16.669 +    CARD32	pad5 B32;
  16.670 +    CARD32	pad6 B32;
  16.671 +} xGLXGetMinmaxReply;
  16.672 +#define sz_xGLXGetMinmaxReply 32
  16.673 +
  16.674 +typedef struct {
  16.675 +    BYTE	type;			/* X_Reply */
  16.676 +    CARD8	unused;			/* not used */
  16.677 +    CARD16	sequenceNumber B16;
  16.678 +    CARD32	length B32;
  16.679 +    CARD32	retval B32;
  16.680 +    CARD32	size B32;
  16.681 +    CARD32	newMode B32;
  16.682 +    CARD32	pad4 B32;
  16.683 +    CARD32	pad5 B32;
  16.684 +    CARD32	pad6 B32;
  16.685 +} xGLXRenderModeReply;
  16.686 +#define sz_xGLXRenderModeReply 32
  16.687 +
  16.688 +typedef struct {
  16.689 +    BYTE	type;			/* X_Reply */
  16.690 +    CARD8	unused;			/* not used */
  16.691 +    CARD16	sequenceNumber B16;
  16.692 +    CARD32	length B32;
  16.693 +    CARD32	majorVersion B32;
  16.694 +    CARD32	minorVersion B32;
  16.695 +    CARD32	pad3 B32;
  16.696 +    CARD32	pad4 B32;
  16.697 +    CARD32	pad5 B32;
  16.698 +    CARD32	pad6 B32;
  16.699 +} xGLXQueryVersionReply;
  16.700 +#define sz_xGLXQueryVersionReply 32
  16.701 +
  16.702 +typedef struct {
  16.703 +    BYTE	type;			/* X_Reply */
  16.704 +    CARD8	unused;			/* not used */
  16.705 +    CARD16	sequenceNumber B16;
  16.706 +    CARD32	length B32;
  16.707 +    CARD32	numVisuals B32;
  16.708 +    CARD32	numProps B32;
  16.709 +    CARD32	pad3 B32;
  16.710 +    CARD32	pad4 B32;
  16.711 +    CARD32	pad5 B32;
  16.712 +    CARD32	pad6 B32;
  16.713 +} xGLXGetVisualConfigsReply;
  16.714 +#define sz_xGLXGetVisualConfigsReply 32
  16.715 +
  16.716 +typedef struct {
  16.717 +    BYTE	type;			/* X_Reply */
  16.718 +    CARD8	unused;			/* not used */
  16.719 +    CARD16	sequenceNumber B16;
  16.720 +    CARD32	length B32;
  16.721 +    BOOL	isDirect;
  16.722 +    CARD8	pad1;
  16.723 +    CARD16	pad2 B16;
  16.724 +    CARD32	pad3 B32;
  16.725 +    CARD32	pad4 B32;
  16.726 +    CARD32	pad5 B32;
  16.727 +    CARD32	pad6 B32;
  16.728 +    CARD32	pad7 B32;
  16.729 +} xGLXIsDirectReply;
  16.730 +#define sz_xGLXIsDirectReply	32
  16.731 +
  16.732 +/*
  16.733 +** This reply structure is used for all single replies.  Single replies
  16.734 +** ship either 1 piece of data or N pieces of data.  In these cases
  16.735 +** size indicates how much data is to be returned.
  16.736 +*/
  16.737 +typedef struct {
  16.738 +    BYTE	type;			/* X_Reply */
  16.739 +    CARD8	unused;			/* not used */
  16.740 +    CARD16	sequenceNumber B16;
  16.741 +    CARD32	length B32;
  16.742 +    CARD32	retval B32;
  16.743 +    CARD32	size B32;
  16.744 +    CARD32	pad3 B32;		/* NOTE: may hold a single value */
  16.745 +    CARD32	pad4 B32;		/* NOTE: may hold half a double */
  16.746 +    CARD32	pad5 B32;
  16.747 +    CARD32	pad6 B32;
  16.748 +} xGLXSingleReply;
  16.749 +#define sz_xGLXSingleReply 32
  16.750 +
  16.751 +/*
  16.752 +** This reply structure is used for all Vendor Private replies. Vendor
  16.753 +** Private replies can ship up to 24 bytes within the header or can
  16.754 +** be variable sized, in which case, the reply length field indicates
  16.755 +** the number of words of data which follow the header.
  16.756 +*/
  16.757 +typedef struct {
  16.758 +    BYTE	type;			/* X_Reply */
  16.759 +    CARD8	unused;			/* not used */
  16.760 +    CARD16	sequenceNumber B16;
  16.761 +    CARD32	length B32;
  16.762 +    CARD32	retval B32;
  16.763 +    CARD32	size B32;
  16.764 +    CARD32	pad3 B32;
  16.765 +    CARD32	pad4 B32;
  16.766 +    CARD32	pad5 B32;
  16.767 +    CARD32	pad6 B32;
  16.768 +} xGLXVendorPrivReply;
  16.769 +#define sz_xGLXVendorPrivReply 32
  16.770 +
  16.771 +/*
  16.772 +**  QueryExtensionsStringReply
  16.773 +**  n indicates the number of bytes to be returned.
  16.774 +*/
  16.775 +typedef struct {
  16.776 +    BYTE	type;			/* X_Reply */
  16.777 +    CARD8	unused;			/* not used */
  16.778 +    CARD16	sequenceNumber B16;
  16.779 +    CARD32	length B32;
  16.780 +    CARD32	pad1 B32;
  16.781 +    CARD32	n B32;
  16.782 +    CARD32	pad3 B32;
  16.783 +    CARD32	pad4 B32;
  16.784 +    CARD32	pad5 B32;
  16.785 +    CARD32	pad6 B32;
  16.786 +} xGLXQueryExtensionsStringReply;
  16.787 +#define sz_xGLXQueryExtensionsStringReply 32
  16.788 +
  16.789 +/*
  16.790 +** QueryServerString Reply struct
  16.791 +** n indicates the number of bytes to be returned.
  16.792 +*/
  16.793 +typedef struct {
  16.794 +    BYTE	type;			/* X_Reply */
  16.795 +    CARD8	unused;			/* not used */
  16.796 +    CARD16	sequenceNumber B16;
  16.797 +    CARD32	length B32;
  16.798 +    CARD32	pad1 B32;
  16.799 +    CARD32	n B32;
  16.800 +    CARD32	pad3 B32;		/* NOTE: may hold a single value */
  16.801 +    CARD32	pad4 B32;		/* NOTE: may hold half a double */
  16.802 +    CARD32	pad5 B32;
  16.803 +    CARD32	pad6 B32;
  16.804 +} xGLXQueryServerStringReply;
  16.805 +#define sz_xGLXQueryServerStringReply 32
  16.806 +
  16.807 +/*** Start of GLX 1.3 replies */
  16.808 +
  16.809 +/*
  16.810 +** glXGetFBConfigs reply
  16.811 +*/
  16.812 +typedef struct {
  16.813 +    BYTE	type;			/* X_Reply */
  16.814 +    CARD8	unused;			/* not used */
  16.815 +    CARD16	sequenceNumber B16;
  16.816 +    CARD32	length B32;
  16.817 +    CARD32	numFBConfigs B32;
  16.818 +    CARD32	numAttribs B32;
  16.819 +    CARD32	pad3 B32;
  16.820 +    CARD32	pad4 B32;
  16.821 +    CARD32	pad5 B32;
  16.822 +    CARD32	pad6 B32;
  16.823 +} xGLXGetFBConfigsReply;
  16.824 +#define sz_xGLXGetFBConfigsReply 32
  16.825 +
  16.826 +/*
  16.827 +** glXQueryContext reply
  16.828 +*/
  16.829 +typedef struct {
  16.830 +    BYTE	type;			/* X_Reply */
  16.831 +    CARD8	unused;			/* not used */
  16.832 +    CARD16	sequenceNumber B16;
  16.833 +    CARD32	length B32;
  16.834 +    CARD32	n B32;			/* number of attribute/value pairs */
  16.835 +    CARD32	pad2 B32;
  16.836 +    CARD32	pad3 B32;
  16.837 +    CARD32	pad4 B32;
  16.838 +    CARD32	pad5 B32;
  16.839 +    CARD32	pad6 B32;
  16.840 +} xGLXQueryContextReply;
  16.841 +#define sz_xGLXQueryContextReply 32
  16.842 +
  16.843 +/*
  16.844 +** glXMakeContextCurrent reply
  16.845 +*/
  16.846 +typedef struct {
  16.847 +    BYTE	type;			/* X_Reply */
  16.848 +    CARD8	unused;			/* not used */
  16.849 +    CARD16	sequenceNumber B16;
  16.850 +    CARD32	length B32;
  16.851 +    GLXContextTag contextTag B32;
  16.852 +    CARD32	pad2 B32;
  16.853 +    CARD32	pad3 B32;
  16.854 +    CARD32	pad4 B32;
  16.855 +    CARD32	pad5 B32;
  16.856 +    CARD32	pad6 B32;
  16.857 +} xGLXMakeContextCurrentReply;
  16.858 +#define sz_xGLXMakeContextCurrentReply 32
  16.859 +
  16.860 +/*
  16.861 +** glXCreateGLXPbuffer reply
  16.862 +** This is used only in the direct rendering case on SGIs - otherwise
  16.863 +**  CreateGLXPbuffer has no reply. It is not part of GLX 1.3.
  16.864 +*/
  16.865 +typedef struct {
  16.866 +    BYTE	type;			/* X_Reply */
  16.867 +    CARD8	success;
  16.868 +    CARD16	sequenceNumber B16;
  16.869 +    CARD32	length B32;
  16.870 +    CARD32	pad1 B32;
  16.871 +    CARD32	pad2 B32;
  16.872 +    CARD32	pad3 B32;
  16.873 +    CARD32	pad4 B32;
  16.874 +    CARD32	pad5 B32;
  16.875 +    CARD32	pad6 B32;
  16.876 +} xGLXCreateGLXPbufferReply;
  16.877 +#define sz_xGLXCreateGLXPbufferReply 32
  16.878 +
  16.879 +/*
  16.880 +** glXGetDrawableAttributes reply
  16.881 +*/
  16.882 +typedef struct {
  16.883 +    BYTE	type;			/* X_Reply */
  16.884 +    CARD8	unused;			/* not used */
  16.885 +    CARD16	sequenceNumber B16;
  16.886 +    CARD32	length B32;
  16.887 +    CARD32	numAttribs B32;
  16.888 +    CARD32	pad2 B32;
  16.889 +    CARD32	pad3 B32;
  16.890 +    CARD32	pad4 B32;
  16.891 +    CARD32	pad5 B32;
  16.892 +    CARD32	pad6 B32;
  16.893 +} xGLXGetDrawableAttributesReply;
  16.894 +#define sz_xGLXGetDrawableAttributesReply 32
  16.895 +
  16.896 +/*
  16.897 +** glXGetColorTable reply
  16.898 +*/
  16.899 +typedef struct {
  16.900 +    BYTE	type;		       /* X_Reply */
  16.901 +    CARD8	unused;		       /* not used */
  16.902 +    CARD16	sequenceNumber B16;
  16.903 +    CARD32	length B32;
  16.904 +    CARD32	pad1 B32;
  16.905 +    CARD32	pad2 B32;
  16.906 +    CARD32	width B32;
  16.907 +    CARD32	pad4 B32;
  16.908 +    CARD32	pad5 B32;
  16.909 +    CARD32	pad6 B32;
  16.910 +} xGLXGetColorTableReply;
  16.911 +#define sz_xGLXGetColorTableReply 32
  16.912 +
  16.913 +/************************************************************************/
  16.914 +
  16.915 +/* GLX extension requests and replies */
  16.916 +
  16.917 +/*
  16.918 +** glXQueryContextInfoEXT request
  16.919 +*/
  16.920 +typedef struct GLXQueryContextInfoEXT {
  16.921 +    CARD8	reqType;
  16.922 +    CARD8	glxCode;
  16.923 +    CARD16	length B16;
  16.924 +    CARD32	vendorCode B32;		/* vendor-specific opcode */
  16.925 +    CARD32	pad1 B32;   /* unused; corresponds to contextTag in header */
  16.926 +    GLXContextID context B32;
  16.927 +} xGLXQueryContextInfoEXTReq;
  16.928 +#define sz_xGLXQueryContextInfoEXTReq 16
  16.929 +
  16.930 +/*
  16.931 +** glXQueryContextInfoEXT reply
  16.932 +*/
  16.933 +typedef struct {
  16.934 +    BYTE	type;			/* X_Reply */
  16.935 +    CARD8	unused;			/* not used */
  16.936 +    CARD16	sequenceNumber B16;
  16.937 +    CARD32	length B32;
  16.938 +    CARD32	n B32;			/* number of attribute/value pairs */
  16.939 +    CARD32	pad2 B32;
  16.940 +    CARD32	pad3 B32;
  16.941 +    CARD32	pad4 B32;
  16.942 +    CARD32	pad5 B32;
  16.943 +    CARD32	pad6 B32;
  16.944 +} xGLXQueryContextInfoEXTReply;
  16.945 +#define sz_xGLXQueryContextInfoEXTReply 32
  16.946 +
  16.947 +/************************************************************************/
  16.948 +
  16.949 +/*
  16.950 +** Events
  16.951 +*/
  16.952 +
  16.953 +typedef struct {
  16.954 +    BYTE type;
  16.955 +    BYTE pad;
  16.956 +    CARD16 sequenceNumber B16;
  16.957 +    CARD16 event_type B16;  /*** was clobber_class */
  16.958 +    CARD16 draw_type B16;
  16.959 +    CARD32 drawable B32;
  16.960 +    CARD32 buffer_mask B32; /*** was mask */
  16.961 +    CARD16 aux_buffer B16;
  16.962 +    CARD16 x B16;
  16.963 +    CARD16 y B16;
  16.964 +    CARD16 width B16;
  16.965 +    CARD16 height B16;
  16.966 +    CARD16 count B16;
  16.967 +    CARD32 unused2 B32;
  16.968 +} xGLXPbufferClobberEvent;
  16.969 +
  16.970 +/************************************************************************/
  16.971 +
  16.972 +/*
  16.973 +** Size of the standard X request header.
  16.974 +*/
  16.975 +#define __GLX_SINGLE_HDR_SIZE sz_xGLXSingleReq
  16.976 +#define __GLX_VENDPRIV_HDR_SIZE sz_xGLXVendorPrivateReq
  16.977 +
  16.978 +#define __GLX_RENDER_HDR    \
  16.979 +    CARD16	length B16; \
  16.980 +    CARD16	opcode B16
  16.981 +
  16.982 +#define __GLX_RENDER_HDR_SIZE 4
  16.983 +
  16.984 +typedef struct {
  16.985 +    __GLX_RENDER_HDR;
  16.986 +} __GLXrenderHeader;
  16.987 +
  16.988 +#define __GLX_RENDER_LARGE_HDR \
  16.989 +    CARD32	length B32;    \
  16.990 +    CARD32	opcode B32
  16.991 +
  16.992 +#define __GLX_RENDER_LARGE_HDR_SIZE 8
  16.993 +
  16.994 +typedef struct {
  16.995 +    __GLX_RENDER_LARGE_HDR;
  16.996 +} __GLXrenderLargeHeader;
  16.997 +
  16.998 +/*
  16.999 +** The glBitmap, glPolygonStipple, glTexImage[12]D, glTexSubImage[12]D
 16.1000 +** and glDrawPixels calls all have a pixel header transmitted after the
 16.1001 +** Render or RenderLarge header and before their own opcode specific
 16.1002 +** headers.
 16.1003 +*/
 16.1004 +#define __GLX_PIXEL_HDR		\
 16.1005 +    BOOL	swapBytes;	\
 16.1006 +    BOOL	lsbFirst;	\
 16.1007 +    CARD8	reserved0;	\
 16.1008 +    CARD8	reserved1;	\
 16.1009 +    CARD32	rowLength B32;	\
 16.1010 +    CARD32	skipRows B32;	\
 16.1011 +    CARD32	skipPixels B32; \
 16.1012 +    CARD32	alignment B32
 16.1013 +
 16.1014 +#define __GLX_PIXEL_HDR_SIZE 20
 16.1015 +
 16.1016 +typedef struct {
 16.1017 +    __GLX_PIXEL_HDR;
 16.1018 +} __GLXpixelHeader;
 16.1019 +
 16.1020 +/*
 16.1021 +** glTexImage[34]D and glTexSubImage[34]D calls
 16.1022 +** all have a pixel header transmitted after the Render or RenderLarge
 16.1023 +** header and before their own opcode specific headers.
 16.1024 +*/
 16.1025 +#define __GLX_PIXEL_3D_HDR		\
 16.1026 +    BOOL	swapBytes;		\
 16.1027 +    BOOL	lsbFirst;		\
 16.1028 +    CARD8	reserved0;		\
 16.1029 +    CARD8	reserved1;		\
 16.1030 +    CARD32	rowLength B32;		\
 16.1031 +    CARD32	imageHeight B32;	\
 16.1032 +    CARD32	imageDepth B32;		\
 16.1033 +    CARD32	skipRows B32;		\
 16.1034 +    CARD32	skipImages B32;		\
 16.1035 +    CARD32	skipVolumes B32;	\
 16.1036 +    CARD32	skipPixels B32;		\
 16.1037 +    CARD32	alignment B32
 16.1038 +
 16.1039 +#define __GLX_PIXEL_3D_HDR_SIZE 36
 16.1040 +
 16.1041 +/*
 16.1042 +** Data that is specific to a glBitmap call.  The data is sent in the
 16.1043 +** following order:
 16.1044 +**	Render or RenderLarge header
 16.1045 +**	Pixel header
 16.1046 +**	Bitmap header
 16.1047 +*/
 16.1048 +#define __GLX_BITMAP_HDR    \
 16.1049 +    CARD32	width B32;  \
 16.1050 +    CARD32	height B32; \
 16.1051 +    FLOAT32	xorig F32;  \
 16.1052 +    FLOAT32	yorig F32;  \
 16.1053 +    FLOAT32	xmove F32;  \
 16.1054 +    FLOAT32	ymove F32
 16.1055 +
 16.1056 +typedef struct {
 16.1057 +    __GLX_RENDER_HDR;
 16.1058 +    __GLX_PIXEL_HDR;
 16.1059 +    __GLX_BITMAP_HDR;
 16.1060 +} __GLXbitmapHeader;
 16.1061 +
 16.1062 +typedef struct {
 16.1063 +    __GLX_RENDER_LARGE_HDR;
 16.1064 +    __GLX_PIXEL_HDR;
 16.1065 +    __GLX_BITMAP_HDR;
 16.1066 +} __GLXbitmapLargeHeader;
 16.1067 +
 16.1068 +typedef struct {
 16.1069 +    __GLX_PIXEL_HDR;
 16.1070 +    __GLX_BITMAP_HDR;
 16.1071 +} __GLXdispatchBitmapHeader;
 16.1072 +
 16.1073 +#define __GLX_BITMAP_HDR_SIZE 24
 16.1074 +
 16.1075 +#define __GLX_BITMAP_CMD_HDR_SIZE \
 16.1076 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_BITMAP_HDR_SIZE)
 16.1077 +
 16.1078 +#define __GLX_BITMAP_CMD_DISPATCH_HDR_SIZE \
 16.1079 +    (__GLX_PIXEL_HDR_SIZE + __GLX_BITMAP_HDR_SIZE)
 16.1080 +
 16.1081 +typedef struct {
 16.1082 +    __GLX_RENDER_HDR;
 16.1083 +    __GLX_PIXEL_HDR;
 16.1084 +} __GLXpolygonStippleHeader;
 16.1085 +
 16.1086 +#define __GLX_POLYGONSTIPPLE_CMD_HDR_SIZE \
 16.1087 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE)
 16.1088 +
 16.1089 +/*
 16.1090 +** Data that is specific to a glTexImage1D or glTexImage2D call.  The
 16.1091 +** data is sent in the following order:
 16.1092 +**	Render or RenderLarge header
 16.1093 +**	Pixel header
 16.1094 +**	TexImage header
 16.1095 +** When a glTexImage1D call the height field is unexamined by the server.
 16.1096 +*/
 16.1097 +#define __GLX_TEXIMAGE_HDR	\
 16.1098 +    CARD32	target B32;	\
 16.1099 +    CARD32	level B32;	\
 16.1100 +    CARD32	components B32; \
 16.1101 +    CARD32	width B32;	\
 16.1102 +    CARD32	height B32;	\
 16.1103 +    CARD32	border B32;	\
 16.1104 +    CARD32	format B32;	\
 16.1105 +    CARD32	type B32
 16.1106 +
 16.1107 +#define __GLX_TEXIMAGE_HDR_SIZE 32
 16.1108 +
 16.1109 +#define __GLX_TEXIMAGE_CMD_HDR_SIZE \
 16.1110 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_TEXIMAGE_HDR_SIZE)
 16.1111 +
 16.1112 +#define __GLX_TEXIMAGE_CMD_DISPATCH_HDR_SIZE \
 16.1113 +    (__GLX_PIXEL_HDR_SIZE + __GLX_TEXIMAGE_HDR_SIZE)
 16.1114 +
 16.1115 +typedef struct {
 16.1116 +    __GLX_RENDER_HDR;
 16.1117 +    __GLX_PIXEL_HDR;
 16.1118 +    __GLX_TEXIMAGE_HDR;
 16.1119 +} __GLXtexImageHeader;
 16.1120 +
 16.1121 +typedef struct {
 16.1122 +    __GLX_RENDER_LARGE_HDR;
 16.1123 +    __GLX_PIXEL_HDR;
 16.1124 +    __GLX_TEXIMAGE_HDR;
 16.1125 +} __GLXtexImageLargeHeader;
 16.1126 +
 16.1127 +typedef struct {
 16.1128 +    __GLX_PIXEL_HDR;
 16.1129 +    __GLX_TEXIMAGE_HDR;
 16.1130 +} __GLXdispatchTexImageHeader;
 16.1131 +
 16.1132 +/*
 16.1133 +** Data that is specific to a glTexImage3D or glTexImage4D call.  The
 16.1134 +** data is sent in the following order:
 16.1135 +**	Render or RenderLarge header
 16.1136 +**	Pixel 3D header
 16.1137 +**	TexImage 3D header
 16.1138 +** When a glTexImage3D call the size4d and woffset fields are unexamined
 16.1139 +** by the server.
 16.1140 +** Could be used by all TexImage commands and perhaps should be in the
 16.1141 +** future.
 16.1142 +*/
 16.1143 +#define __GLX_TEXIMAGE_3D_HDR \
 16.1144 +    CARD32	target B32;	\
 16.1145 +    CARD32	level B32;	\
 16.1146 +    CARD32	internalformat B32;	\
 16.1147 +    CARD32	width B32;	\
 16.1148 +    CARD32	height B32;	\
 16.1149 +    CARD32	depth B32;	\
 16.1150 +    CARD32	size4d B32;	\
 16.1151 +    CARD32	border B32;	\
 16.1152 +    CARD32	format B32;	\
 16.1153 +    CARD32	type B32;	\
 16.1154 +    CARD32	nullimage B32
 16.1155 +
 16.1156 +#define __GLX_TEXIMAGE_3D_HDR_SIZE 44
 16.1157 +
 16.1158 +#define __GLX_TEXIMAGE_3D_CMD_HDR_SIZE \
 16.1159 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_3D_HDR_SIZE + \
 16.1160 +		__GLX_TEXIMAGE_3D_HDR_SIZE)
 16.1161 +
 16.1162 +#define __GLX_TEXIMAGE_3D_CMD_DISPATCH_HDR_SIZE \
 16.1163 +    (__GLX_PIXEL_3D_HDR_SIZE + __GLX_TEXIMAGE_3D_HDR_SIZE)
 16.1164 +
 16.1165 +typedef struct {
 16.1166 +    __GLX_RENDER_HDR;
 16.1167 +    __GLX_PIXEL_3D_HDR;
 16.1168 +    __GLX_TEXIMAGE_3D_HDR;
 16.1169 +} __GLXtexImage3DHeader;
 16.1170 +
 16.1171 +typedef struct {
 16.1172 +    __GLX_RENDER_LARGE_HDR;
 16.1173 +    __GLX_PIXEL_3D_HDR;
 16.1174 +    __GLX_TEXIMAGE_3D_HDR;
 16.1175 +} __GLXtexImage3DLargeHeader;
 16.1176 +
 16.1177 +typedef struct {
 16.1178 +    __GLX_PIXEL_3D_HDR;
 16.1179 +    __GLX_TEXIMAGE_3D_HDR;
 16.1180 +} __GLXdispatchTexImage3DHeader;
 16.1181 +
 16.1182 +/*
 16.1183 +** Data that is specific to a glTexSubImage1D or glTexSubImage2D call.	The
 16.1184 +** data is sent in the following order:
 16.1185 +**	Render or RenderLarge header
 16.1186 +**	Pixel header
 16.1187 +**	TexSubImage header
 16.1188 +** When a glTexSubImage1D call is made, the yoffset and height fields
 16.1189 +** are unexamined by the server and are  considered to be padding.
 16.1190 +*/
 16.1191 +#define __GLX_TEXSUBIMAGE_HDR	\
 16.1192 +    CARD32	target B32;	\
 16.1193 +    CARD32	level B32;	\
 16.1194 +    CARD32	xoffset B32;	\
 16.1195 +    CARD32	yoffset B32;	\
 16.1196 +    CARD32	width B32;	\
 16.1197 +    CARD32	height B32;	\
 16.1198 +    CARD32	format B32;	\
 16.1199 +    CARD32	type B32;	\
 16.1200 +    CARD32	nullImage	\
 16.1201 +
 16.1202 +#define __GLX_TEXSUBIMAGE_HDR_SIZE 36
 16.1203 +
 16.1204 +#define __GLX_TEXSUBIMAGE_CMD_HDR_SIZE \
 16.1205 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_TEXSUBIMAGE_HDR_SIZE)
 16.1206 +
 16.1207 +#define __GLX_TEXSUBIMAGE_CMD_DISPATCH_HDR_SIZE \
 16.1208 +    (__GLX_PIXEL_HDR_SIZE + __GLX_TEXSUBIMAGE_HDR_SIZE)
 16.1209 +
 16.1210 +typedef struct {
 16.1211 +    __GLX_RENDER_HDR;
 16.1212 +    __GLX_PIXEL_HDR;
 16.1213 +    __GLX_TEXSUBIMAGE_HDR;
 16.1214 +} __GLXtexSubImageHeader;
 16.1215 +
 16.1216 +typedef struct {
 16.1217 +    __GLX_RENDER_LARGE_HDR;
 16.1218 +    __GLX_PIXEL_HDR;
 16.1219 +    __GLX_TEXSUBIMAGE_HDR;
 16.1220 +} __GLXtexSubImageLargeHeader;
 16.1221 +
 16.1222 +typedef struct {
 16.1223 +    __GLX_PIXEL_HDR;
 16.1224 +    __GLX_TEXSUBIMAGE_HDR;
 16.1225 +} __GLXdispatchTexSubImageHeader;
 16.1226 +
 16.1227 +/*
 16.1228 +** Data that is specific to a glTexSubImage3D and 4D calls.  The
 16.1229 +** data is sent in the following order:
 16.1230 +**	Render or RenderLarge header
 16.1231 +**	Pixel 3D header
 16.1232 +**	TexSubImage 3D header
 16.1233 +** When a glTexSubImage3D call is made, the woffset and size4d fields
 16.1234 +** are unexamined by the server and are considered to be padding.
 16.1235 +*/
 16.1236 +#define __GLX_TEXSUBIMAGE_3D_HDR	\
 16.1237 +    CARD32	target B32;	\
 16.1238 +    CARD32	level B32;	\
 16.1239 +    CARD32	xoffset B32;	\
 16.1240 +    CARD32	yoffset B32;	\
 16.1241 +    CARD32	zoffset B32;	\
 16.1242 +    CARD32	woffset B32;	\
 16.1243 +    CARD32	width B32;	\
 16.1244 +    CARD32	height B32;	\
 16.1245 +    CARD32	depth B32;	\
 16.1246 +    CARD32	size4d B32;	\
 16.1247 +    CARD32	format B32;	\
 16.1248 +    CARD32	type B32;	\
 16.1249 +    CARD32	nullImage	\
 16.1250 +
 16.1251 +#define __GLX_TEXSUBIMAGE_3D_HDR_SIZE 52
 16.1252 +
 16.1253 +#define __GLX_TEXSUBIMAGE_3D_CMD_HDR_SIZE \
 16.1254 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_3D_HDR_SIZE + \
 16.1255 +		__GLX_TEXSUBIMAGE_3D_HDR_SIZE)
 16.1256 +
 16.1257 +#define __GLX_TEXSUBIMAGE_3D_CMD_DISPATCH_HDR_SIZE \
 16.1258 +    (__GLX_PIXEL_3D_HDR_SIZE + __GLX_TEXSUBIMAGE_3D_HDR_SIZE)
 16.1259 +
 16.1260 +typedef struct {
 16.1261 +    __GLX_RENDER_HDR;
 16.1262 +    __GLX_PIXEL_3D_HDR;
 16.1263 +    __GLX_TEXSUBIMAGE_3D_HDR;
 16.1264 +} __GLXtexSubImage3DHeader;
 16.1265 +
 16.1266 +typedef struct {
 16.1267 +    __GLX_RENDER_LARGE_HDR;
 16.1268 +    __GLX_PIXEL_3D_HDR;
 16.1269 +    __GLX_TEXSUBIMAGE_3D_HDR;
 16.1270 +} __GLXtexSubImage3DLargeHeader;
 16.1271 +
 16.1272 +typedef struct {
 16.1273 +    __GLX_PIXEL_3D_HDR;
 16.1274 +    __GLX_TEXSUBIMAGE_3D_HDR;
 16.1275 +} __GLXdispatchTexSubImage3DHeader;
 16.1276 +
 16.1277 +/*
 16.1278 +** Data that is specific to a glDrawPixels call.  The data is sent in the
 16.1279 +** following order:
 16.1280 +**	Render or RenderLarge header
 16.1281 +**	Pixel header
 16.1282 +**	DrawPixels header
 16.1283 +*/
 16.1284 +#define __GLX_DRAWPIXELS_HDR \
 16.1285 +    CARD32	width B32;   \
 16.1286 +    CARD32	height B32;  \
 16.1287 +    CARD32	format B32;  \
 16.1288 +    CARD32	type B32
 16.1289 +
 16.1290 +#define __GLX_DRAWPIXELS_HDR_SIZE 16
 16.1291 +
 16.1292 +#define __GLX_DRAWPIXELS_CMD_HDR_SIZE \
 16.1293 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_DRAWPIXELS_HDR_SIZE)
 16.1294 +
 16.1295 +#define __GLX_DRAWPIXELS_CMD_DISPATCH_HDR_SIZE \
 16.1296 +    (__GLX_PIXEL_HDR_SIZE + __GLX_DRAWPIXELS_HDR_SIZE)
 16.1297 +
 16.1298 +typedef struct {
 16.1299 +    __GLX_RENDER_HDR;
 16.1300 +    __GLX_PIXEL_HDR;
 16.1301 +    __GLX_DRAWPIXELS_HDR;
 16.1302 +} __GLXdrawPixelsHeader;
 16.1303 +
 16.1304 +typedef struct {
 16.1305 +    __GLX_RENDER_LARGE_HDR;
 16.1306 +    __GLX_PIXEL_HDR;
 16.1307 +    __GLX_DRAWPIXELS_HDR;
 16.1308 +} __GLXdrawPixelsLargeHeader;
 16.1309 +
 16.1310 +typedef struct {
 16.1311 +    __GLX_PIXEL_HDR;
 16.1312 +    __GLX_DRAWPIXELS_HDR;
 16.1313 +} __GLXdispatchDrawPixelsHeader;
 16.1314 +
 16.1315 +/*
 16.1316 +** Data that is specific to a glConvolutionFilter1D or glConvolutionFilter2D
 16.1317 +** call.  The data is sent in the following order:
 16.1318 +**	Render or RenderLarge header
 16.1319 +**	Pixel header
 16.1320 +**	ConvolutionFilter header
 16.1321 +** When a glConvolutionFilter1D call the height field is unexamined by the server.
 16.1322 +*/
 16.1323 +#define __GLX_CONV_FILT_HDR	\
 16.1324 +    CARD32	target B32;	\
 16.1325 +    CARD32	internalformat B32;	\
 16.1326 +    CARD32	width B32;	\
 16.1327 +    CARD32	height B32;	\
 16.1328 +    CARD32	format B32;	\
 16.1329 +    CARD32	type B32
 16.1330 +
 16.1331 +#define __GLX_CONV_FILT_HDR_SIZE 24
 16.1332 +
 16.1333 +#define __GLX_CONV_FILT_CMD_HDR_SIZE \
 16.1334 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_CONV_FILT_HDR_SIZE)
 16.1335 +
 16.1336 +#define __GLX_CONV_FILT_CMD_DISPATCH_HDR_SIZE \
 16.1337 +    (__GLX_PIXEL_HDR_SIZE + __GLX_CONV_FILT_HDR_SIZE)
 16.1338 +typedef struct {
 16.1339 +    __GLX_RENDER_HDR;
 16.1340 +    __GLX_PIXEL_HDR;
 16.1341 +    __GLX_CONV_FILT_HDR;
 16.1342 +} __GLXConvolutionFilterHeader;
 16.1343 +
 16.1344 +typedef struct {
 16.1345 +    __GLX_RENDER_LARGE_HDR;
 16.1346 +    __GLX_PIXEL_HDR;
 16.1347 +    __GLX_CONV_FILT_HDR;
 16.1348 +} __GLXConvolutionFilterLargeHeader;
 16.1349 +
 16.1350 +typedef struct {
 16.1351 +    __GLX_PIXEL_HDR;
 16.1352 +    __GLX_CONV_FILT_HDR;
 16.1353 +} __GLXdispatchConvolutionFilterHeader;
 16.1354 +
 16.1355 +/*
 16.1356 +** Data that is specific to a glDrawArraysEXT call.  The data is sent in the
 16.1357 +** following order:
 16.1358 +**	Render or RenderLarge header
 16.1359 +**	Draw Arrays header
 16.1360 +**	a variable number of Component headers
 16.1361 +**	vertex data for each component type
 16.1362 +*/
 16.1363 +
 16.1364 +#define __GLX_DRAWARRAYS_HDR \
 16.1365 +    CARD32	numVertexes B32; \
 16.1366 +    CARD32	numComponents B32; \
 16.1367 +    CARD32	primType B32
 16.1368 +
 16.1369 +#define __GLX_DRAWARRAYS_HDR_SIZE 12
 16.1370 +
 16.1371 +#define __GLX_DRAWARRAYS_CMD_HDR_SIZE \
 16.1372 +    (__GLX_RENDER_HDR_SIZE + __GLX_DRAWARRAYS_HDR_SIZE)
 16.1373 +
 16.1374 +typedef struct {
 16.1375 +    __GLX_RENDER_HDR;
 16.1376 +    __GLX_DRAWARRAYS_HDR;
 16.1377 +} __GLXdrawArraysHeader;
 16.1378 +
 16.1379 +typedef struct {
 16.1380 +    __GLX_RENDER_LARGE_HDR;
 16.1381 +    __GLX_DRAWARRAYS_HDR;
 16.1382 +} __GLXdrawArraysLargeHeader;
 16.1383 +
 16.1384 +typedef struct {
 16.1385 +    __GLX_DRAWARRAYS_HDR;
 16.1386 +} __GLXdispatchDrawArraysHeader;
 16.1387 +
 16.1388 +#define __GLX_COMPONENT_HDR \
 16.1389 +    CARD32	datatype B32; \
 16.1390 +    INT32	numVals B32; \
 16.1391 +    CARD32	component B32
 16.1392 +
 16.1393 +typedef struct {
 16.1394 +    __GLX_COMPONENT_HDR;
 16.1395 +} __GLXdispatchDrawArraysComponentHeader;
 16.1396 +
 16.1397 +#define __GLX_COMPONENT_HDR_SIZE 12
 16.1398 +
 16.1399 +/*
 16.1400 +** Data that is specific to a glColorTable call
 16.1401 +**	The data is sent in the following order:
 16.1402 +**	Render or RenderLarge header
 16.1403 +**	Pixel header
 16.1404 +**	ColorTable header
 16.1405 +*/
 16.1406 +
 16.1407 +#define __GLX_COLOR_TABLE_HDR	     \
 16.1408 +    CARD32	target B32;	    \
 16.1409 +    CARD32	internalformat B32; \
 16.1410 +    CARD32	width B32;	    \
 16.1411 +    CARD32	format B32;	    \
 16.1412 +    CARD32	type   B32
 16.1413 +
 16.1414 +#define __GLX_COLOR_TABLE_HDR_SIZE 20
 16.1415 +
 16.1416 +#define __GLX_COLOR_TABLE_CMD_HDR_SIZE \
 16.1417 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_COLOR_TABLE_HDR_SIZE)
 16.1418 +
 16.1419 +typedef struct {
 16.1420 +    __GLX_RENDER_HDR;
 16.1421 +    __GLX_PIXEL_HDR;
 16.1422 +    __GLX_COLOR_TABLE_HDR;
 16.1423 +} __GLXColorTableHeader;
 16.1424 +
 16.1425 +typedef struct {
 16.1426 +    __GLX_RENDER_LARGE_HDR;
 16.1427 +    __GLX_PIXEL_HDR;
 16.1428 +    __GLX_COLOR_TABLE_HDR;
 16.1429 +} __GLXColorTableLargeHeader;
 16.1430 +
 16.1431 +typedef struct {
 16.1432 +    __GLX_PIXEL_HDR;
 16.1433 +    __GLX_COLOR_TABLE_HDR;
 16.1434 +} __GLXdispatchColorTableHeader;
 16.1435 +
 16.1436 +/*
 16.1437 +** Data that is specific to a glColorSubTable call
 16.1438 +**	The data is sent in the following order:
 16.1439 +**	Render or RenderLarge header
 16.1440 +**	Pixel header
 16.1441 +**	ColorTable header
 16.1442 +*/
 16.1443 +
 16.1444 +#define __GLX_COLOR_SUBTABLE_HDR    \
 16.1445 +    CARD32	target B32;	    \
 16.1446 +    CARD32	start B32; 	    \
 16.1447 +    CARD32	count B32;	    \
 16.1448 +    CARD32	format B32;	    \
 16.1449 +    CARD32	type   B32
 16.1450 +
 16.1451 +#define __GLX_COLOR_SUBTABLE_HDR_SIZE 20
 16.1452 +
 16.1453 +#define __GLX_COLOR_SUBTABLE_CMD_HDR_SIZE \
 16.1454 +    (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + \
 16.1455 +     __GLX_COLOR_SUBTABLE_HDR_SIZE)
 16.1456 +
 16.1457 +typedef struct {
 16.1458 +    __GLX_RENDER_HDR;
 16.1459 +    __GLX_PIXEL_HDR;
 16.1460 +    __GLX_COLOR_SUBTABLE_HDR;
 16.1461 +} __GLXColorSubTableHeader;
 16.1462 +
 16.1463 +typedef struct {
 16.1464 +    __GLX_RENDER_LARGE_HDR;
 16.1465 +    __GLX_PIXEL_HDR;
 16.1466 +    __GLX_COLOR_SUBTABLE_HDR;
 16.1467 +} __GLXColorSubTableLargeHeader;
 16.1468 +
 16.1469 +typedef struct {
 16.1470 +    __GLX_PIXEL_HDR;
 16.1471 +    __GLX_COLOR_SUBTABLE_HDR;
 16.1472 +} __GLXdispatchColorSubTableHeader;
 16.1473 +
 16.1474 +
 16.1475 +/*****************************************************************************/
 16.1476 +
 16.1477 +/*
 16.1478 +** Restore these definitions back to the typedefs in glx.h
 16.1479 +*/
 16.1480 +#undef GLXContextID
 16.1481 +#undef GLXPixmap
 16.1482 +#undef GLXDrawable
 16.1483 +#undef GLXPbuffer
 16.1484 +#undef GLXWindow
 16.1485 +#undef GLXFBConfigID
 16.1486 +#undef GLXFBConfigIDSGIX
 16.1487 +#undef GLXPbufferSGIX
 16.1488 +
 16.1489 +
 16.1490 +/* Opcodes for GLX commands */
 16.1491 +
 16.1492 +#define X_GLXRender                       1
 16.1493 +#define X_GLXRenderLarge                  2
 16.1494 +#define X_GLXCreateContext                3
 16.1495 +#define X_GLXDestroyContext               4
 16.1496 +#define X_GLXMakeCurrent                  5
 16.1497 +#define X_GLXIsDirect                     6
 16.1498 +#define X_GLXQueryVersion                 7
 16.1499 +#define X_GLXWaitGL                       8
 16.1500 +#define X_GLXWaitX                        9
 16.1501 +#define X_GLXCopyContext                 10
 16.1502 +#define X_GLXSwapBuffers                 11
 16.1503 +#define X_GLXUseXFont                    12
 16.1504 +#define X_GLXCreateGLXPixmap             13
 16.1505 +#define X_GLXGetVisualConfigs            14
 16.1506 +#define X_GLXDestroyGLXPixmap            15
 16.1507 +#define X_GLXVendorPrivate               16
 16.1508 +#define X_GLXVendorPrivateWithReply      17
 16.1509 +#define X_GLXQueryExtensionsString       18
 16.1510 +#define X_GLXQueryServerString           19
 16.1511 +#define X_GLXClientInfo                  20
 16.1512 +
 16.1513 +
 16.1514 +/* Opcodes for single commands (part of GLX command space) */
 16.1515 +
 16.1516 +#define X_GLsop_NewList                    101
 16.1517 +#define X_GLsop_EndList                    102
 16.1518 +#define X_GLsop_DeleteLists                103
 16.1519 +#define X_GLsop_GenLists                   104
 16.1520 +#define X_GLsop_FeedbackBuffer             105
 16.1521 +#define X_GLsop_SelectBuffer               106
 16.1522 +#define X_GLsop_RenderMode                 107
 16.1523 +#define X_GLsop_Finish                     108
 16.1524 +#define X_GLsop_Flush                      142
 16.1525 +#define X_GLsop_PixelStoref                109
 16.1526 +#define X_GLsop_PixelStorei                110
 16.1527 +#define X_GLsop_ReadPixels                 111
 16.1528 +#define X_GLsop_GetBooleanv                112
 16.1529 +#define X_GLsop_GetClipPlane               113
 16.1530 +#define X_GLsop_GetDoublev                 114
 16.1531 +#define X_GLsop_GetError                   115
 16.1532 +#define X_GLsop_GetFloatv                  116
 16.1533 +#define X_GLsop_GetIntegerv                117
 16.1534 +#define X_GLsop_GetLightfv                 118
 16.1535 +#define X_GLsop_GetLightiv                 119
 16.1536 +#define X_GLsop_GetMapdv                   120
 16.1537 +#define X_GLsop_GetMapfv                   121
 16.1538 +#define X_GLsop_GetMapiv                   122
 16.1539 +#define X_GLsop_GetMaterialfv              123
 16.1540 +#define X_GLsop_GetMaterialiv              124
 16.1541 +#define X_GLsop_GetPixelMapfv              125
 16.1542 +#define X_GLsop_GetPixelMapuiv             126
 16.1543 +#define X_GLsop_GetPixelMapusv             127
 16.1544 +#define X_GLsop_GetPolygonStipple          128
 16.1545 +#define X_GLsop_GetString                  129
 16.1546 +#define X_GLsop_GetTexEnvfv                130
 16.1547 +#define X_GLsop_GetTexEnviv                131
 16.1548 +#define X_GLsop_GetTexGendv                132
 16.1549 +#define X_GLsop_GetTexGenfv                133
 16.1550 +#define X_GLsop_GetTexGeniv                134
 16.1551 +#define X_GLsop_GetTexImage                135
 16.1552 +#define X_GLsop_GetTexParameterfv          136
 16.1553 +#define X_GLsop_GetTexParameteriv          137
 16.1554 +#define X_GLsop_GetTexLevelParameterfv     138
 16.1555 +#define X_GLsop_GetTexLevelParameteriv     139
 16.1556 +#define X_GLsop_IsEnabled                  140
 16.1557 +#define X_GLsop_IsList                     141
 16.1558 +#define X_GLsop_AreTexturesResident        143
 16.1559 +#define X_GLsop_DeleteTextures             144
 16.1560 +#define X_GLsop_GenTextures                145
 16.1561 +#define X_GLsop_IsTexture                  146
 16.1562 +#define X_GLsop_GetColorTable              147
 16.1563 +#define X_GLsop_GetColorTableParameterfv   148
 16.1564 +#define X_GLsop_GetColorTableParameteriv   149
 16.1565 +#define X_GLsop_GetConvolutionFilter       150
 16.1566 +#define X_GLsop_GetConvolutionParameterfv  151
 16.1567 +#define X_GLsop_GetConvolutionParameteriv  152
 16.1568 +#define X_GLsop_GetSeparableFilter         153
 16.1569 +#define X_GLsop_GetHistogram               154
 16.1570 +#define X_GLsop_GetHistogramParameterfv    155
 16.1571 +#define X_GLsop_GetHistogramParameteriv    156
 16.1572 +#define X_GLsop_GetMinmax                  157
 16.1573 +#define X_GLsop_GetMinmaxParameterfv       158
 16.1574 +#define X_GLsop_GetMinmaxParameteriv       159
 16.1575 +
 16.1576 +
 16.1577 +/* Opcodes for rendering commands */
 16.1578 +
 16.1579 +#define X_GLrop_CallList                     1
 16.1580 +#define X_GLrop_CallLists                    2
 16.1581 +#define X_GLrop_ListBase                     3
 16.1582 +#define X_GLrop_Begin                        4
 16.1583 +#define X_GLrop_Bitmap                       5
 16.1584 +#define X_GLrop_Color3bv                     6
 16.1585 +#define X_GLrop_Color3dv                     7
 16.1586 +#define X_GLrop_Color3fv                     8
 16.1587 +#define X_GLrop_Color3iv                     9
 16.1588 +#define X_GLrop_Color3sv                    10
 16.1589 +#define X_GLrop_Color3ubv                   11
 16.1590 +#define X_GLrop_Color3uiv                   12
 16.1591 +#define X_GLrop_Color3usv                   13
 16.1592 +#define X_GLrop_Color4bv                    14
 16.1593 +#define X_GLrop_Color4dv                    15
 16.1594 +#define X_GLrop_Color4fv                    16
 16.1595 +#define X_GLrop_Color4iv                    17
 16.1596 +#define X_GLrop_Color4sv                    18
 16.1597 +#define X_GLrop_Color4ubv                   19
 16.1598 +#define X_GLrop_Color4uiv                   20
 16.1599 +#define X_GLrop_Color4usv                   21
 16.1600 +#define X_GLrop_EdgeFlagv                   22
 16.1601 +#define X_GLrop_End                         23
 16.1602 +#define X_GLrop_Indexdv                     24
 16.1603 +#define X_GLrop_Indexfv                     25
 16.1604 +#define X_GLrop_Indexiv                     26
 16.1605 +#define X_GLrop_Indexsv                     27
 16.1606 +#define X_GLrop_Normal3bv                   28
 16.1607 +#define X_GLrop_Normal3dv                   29
 16.1608 +#define X_GLrop_Normal3fv                   30
 16.1609 +#define X_GLrop_Normal3iv                   31
 16.1610 +#define X_GLrop_Normal3sv                   32
 16.1611 +#define X_GLrop_RasterPos2dv                33
 16.1612 +#define X_GLrop_RasterPos2fv                34
 16.1613 +#define X_GLrop_RasterPos2iv                35
 16.1614 +#define X_GLrop_RasterPos2sv                36
 16.1615 +#define X_GLrop_RasterPos3dv                37
 16.1616 +#define X_GLrop_RasterPos3fv                38
 16.1617 +#define X_GLrop_RasterPos3iv                39
 16.1618 +#define X_GLrop_RasterPos3sv                40
 16.1619 +#define X_GLrop_RasterPos4dv                41
 16.1620 +#define X_GLrop_RasterPos4fv                42
 16.1621 +#define X_GLrop_RasterPos4iv                43
 16.1622 +#define X_GLrop_RasterPos4sv                44
 16.1623 +#define X_GLrop_Rectdv                      45
 16.1624 +#define X_GLrop_Rectfv                      46
 16.1625 +#define X_GLrop_Rectiv                      47
 16.1626 +#define X_GLrop_Rectsv                      48
 16.1627 +#define X_GLrop_TexCoord1dv                 49
 16.1628 +#define X_GLrop_TexCoord1fv                 50
 16.1629 +#define X_GLrop_TexCoord1iv                 51
 16.1630 +#define X_GLrop_TexCoord1sv                 52
 16.1631 +#define X_GLrop_TexCoord2dv                 53
 16.1632 +#define X_GLrop_TexCoord2fv                 54
 16.1633 +#define X_GLrop_TexCoord2iv                 55
 16.1634 +#define X_GLrop_TexCoord2sv                 56
 16.1635 +#define X_GLrop_TexCoord3dv                 57
 16.1636 +#define X_GLrop_TexCoord3fv                 58
 16.1637 +#define X_GLrop_TexCoord3iv                 59
 16.1638 +#define X_GLrop_TexCoord3sv                 60
 16.1639 +#define X_GLrop_TexCoord4dv                 61
 16.1640 +#define X_GLrop_TexCoord4fv                 62
 16.1641 +#define X_GLrop_TexCoord4iv                 63
 16.1642 +#define X_GLrop_TexCoord4sv                 64
 16.1643 +#define X_GLrop_Vertex2dv                   65
 16.1644 +#define X_GLrop_Vertex2fv                   66
 16.1645 +#define X_GLrop_Vertex2iv                   67
 16.1646 +#define X_GLrop_Vertex2sv                   68
 16.1647 +#define X_GLrop_Vertex3dv                   69
 16.1648 +#define X_GLrop_Vertex3fv                   70
 16.1649 +#define X_GLrop_Vertex3iv                   71
 16.1650 +#define X_GLrop_Vertex3sv                   72
 16.1651 +#define X_GLrop_Vertex4dv                   73
 16.1652 +#define X_GLrop_Vertex4fv                   74
 16.1653 +#define X_GLrop_Vertex4iv                   75
 16.1654 +#define X_GLrop_Vertex4sv                   76
 16.1655 +#define X_GLrop_ClipPlane                   77
 16.1656 +#define X_GLrop_ColorMaterial               78
 16.1657 +#define X_GLrop_CullFace                    79
 16.1658 +#define X_GLrop_Fogf                        80
 16.1659 +#define X_GLrop_Fogfv                       81
 16.1660 +#define X_GLrop_Fogi                        82
 16.1661 +#define X_GLrop_Fogiv                       83
 16.1662 +#define X_GLrop_FrontFace                   84
 16.1663 +#define X_GLrop_Hint                        85
 16.1664 +#define X_GLrop_Lightf                      86
 16.1665 +#define X_GLrop_Lightfv                     87
 16.1666 +#define X_GLrop_Lighti                      88
 16.1667 +#define X_GLrop_Lightiv                     89
 16.1668 +#define X_GLrop_LightModelf                 90
 16.1669 +#define X_GLrop_LightModelfv                91
 16.1670 +#define X_GLrop_LightModeli                 92
 16.1671 +#define X_GLrop_LightModeliv                93
 16.1672 +#define X_GLrop_LineStipple                 94
 16.1673 +#define X_GLrop_LineWidth                   95
 16.1674 +#define X_GLrop_Materialf                   96
 16.1675 +#define X_GLrop_Materialfv                  97
 16.1676 +#define X_GLrop_Materiali                   98
 16.1677 +#define X_GLrop_Materialiv                  99
 16.1678 +#define X_GLrop_PointSize                  100
 16.1679 +#define X_GLrop_PolygonMode                101
 16.1680 +#define X_GLrop_PolygonStipple             102
 16.1681 +#define X_GLrop_Scissor                    103
 16.1682 +#define X_GLrop_ShadeModel                 104
 16.1683 +#define X_GLrop_TexParameterf              105
 16.1684 +#define X_GLrop_TexParameterfv             106
 16.1685 +#define X_GLrop_TexParameteri              107
 16.1686 +#define X_GLrop_TexParameteriv             108
 16.1687 +#define X_GLrop_TexImage1D                 109
 16.1688 +#define X_GLrop_TexImage2D                 110
 16.1689 +#define X_GLrop_TexEnvf                    111
 16.1690 +#define X_GLrop_TexEnvfv                   112
 16.1691 +#define X_GLrop_TexEnvi                    113
 16.1692 +#define X_GLrop_TexEnviv                   114
 16.1693 +#define X_GLrop_TexGend                    115
 16.1694 +#define X_GLrop_TexGendv                   116
 16.1695 +#define X_GLrop_TexGenf                    117
 16.1696 +#define X_GLrop_TexGenfv                   118
 16.1697 +#define X_GLrop_TexGeni                    119
 16.1698 +#define X_GLrop_TexGeniv                   120
 16.1699 +#define X_GLrop_InitNames                  121
 16.1700 +#define X_GLrop_LoadName                   122
 16.1701 +#define X_GLrop_PassThrough                123
 16.1702 +#define X_GLrop_PopName                    124
 16.1703 +#define X_GLrop_PushName                   125
 16.1704 +#define X_GLrop_DrawBuffer                 126
 16.1705 +#define X_GLrop_Clear                      127
 16.1706 +#define X_GLrop_ClearAccum                 128
 16.1707 +#define X_GLrop_ClearIndex                 129
 16.1708 +#define X_GLrop_ClearColor                 130
 16.1709 +#define X_GLrop_ClearStencil               131
 16.1710 +#define X_GLrop_ClearDepth                 132
 16.1711 +#define X_GLrop_StencilMask                133
 16.1712 +#define X_GLrop_ColorMask                  134
 16.1713 +#define X_GLrop_DepthMask                  135
 16.1714 +#define X_GLrop_IndexMask                  136
 16.1715 +#define X_GLrop_Accum                      137
 16.1716 +#define X_GLrop_Disable                    138
 16.1717 +#define X_GLrop_Enable                     139
 16.1718 +#define X_GLrop_PopAttrib                  141
 16.1719 +#define X_GLrop_PushAttrib                 142
 16.1720 +#define X_GLrop_Map1d                      143
 16.1721 +#define X_GLrop_Map1f                      144
 16.1722 +#define X_GLrop_Map2d                      145
 16.1723 +#define X_GLrop_Map2f                      146
 16.1724 +#define X_GLrop_MapGrid1d                  147
 16.1725 +#define X_GLrop_MapGrid1f                  148
 16.1726 +#define X_GLrop_MapGrid2d                  149
 16.1727 +#define X_GLrop_MapGrid2f                  150
 16.1728 +#define X_GLrop_EvalCoord1dv               151
 16.1729 +#define X_GLrop_EvalCoord1fv               152
 16.1730 +#define X_GLrop_EvalCoord2dv               153
 16.1731 +#define X_GLrop_EvalCoord2fv               154
 16.1732 +#define X_GLrop_EvalMesh1                  155
 16.1733 +#define X_GLrop_EvalPoint1                 156
 16.1734 +#define X_GLrop_EvalMesh2                  157
 16.1735 +#define X_GLrop_EvalPoint2                 158
 16.1736 +#define X_GLrop_AlphaFunc                  159
 16.1737 +#define X_GLrop_BlendFunc                  160
 16.1738 +#define X_GLrop_LogicOp                    161
 16.1739 +#define X_GLrop_StencilFunc                162
 16.1740 +#define X_GLrop_StencilOp                  163
 16.1741 +#define X_GLrop_DepthFunc                  164
 16.1742 +#define X_GLrop_PixelZoom                  165
 16.1743 +#define X_GLrop_PixelTransferf             166
 16.1744 +#define X_GLrop_PixelTransferi             167
 16.1745 +#define X_GLrop_PixelMapfv                 168
 16.1746 +#define X_GLrop_PixelMapuiv                169
 16.1747 +#define X_GLrop_PixelMapusv                170
 16.1748 +#define X_GLrop_ReadBuffer                 171
 16.1749 +#define X_GLrop_CopyPixels                 172
 16.1750 +#define X_GLrop_DrawPixels                 173
 16.1751 +#define X_GLrop_DepthRange                 174
 16.1752 +#define X_GLrop_Frustum                    175
 16.1753 +#define X_GLrop_LoadIdentity               176
 16.1754 +#define X_GLrop_LoadMatrixf                177
 16.1755 +#define X_GLrop_LoadMatrixd                178
 16.1756 +#define X_GLrop_MatrixMode                 179
 16.1757 +#define X_GLrop_MultMatrixf                180
 16.1758 +#define X_GLrop_MultMatrixd                181
 16.1759 +#define X_GLrop_Ortho                      182
 16.1760 +#define X_GLrop_PopMatrix                  183
 16.1761 +#define X_GLrop_PushMatrix                 184
 16.1762 +#define X_GLrop_Rotated                    185
 16.1763 +#define X_GLrop_Rotatef                    186
 16.1764 +#define X_GLrop_Scaled                     187
 16.1765 +#define X_GLrop_Scalef                     188
 16.1766 +#define X_GLrop_Translated                 189
 16.1767 +#define X_GLrop_Translatef                 190
 16.1768 +#define X_GLrop_Viewport                   191
 16.1769 +#define X_GLrop_DrawArrays                 193
 16.1770 +#define X_GLrop_PolygonOffset              192
 16.1771 +#define X_GLrop_CopyTexImage1D             4119
 16.1772 +#define X_GLrop_CopyTexImage2D             4120
 16.1773 +#define X_GLrop_CopyTexSubImage1D          4121
 16.1774 +#define X_GLrop_CopyTexSubImage2D          4122
 16.1775 +#define X_GLrop_TexSubImage1D              4099
 16.1776 +#define X_GLrop_TexSubImage2D              4100
 16.1777 +#define X_GLrop_BindTexture                4117
 16.1778 +#define X_GLrop_PrioritizeTextures         4118
 16.1779 +#define X_GLrop_Indexubv                   194
 16.1780 +#define X_GLrop_BlendColor                 4096
 16.1781 +#define X_GLrop_BlendEquation              4097
 16.1782 +#define X_GLrop_ColorTable                 2053
 16.1783 +#define X_GLrop_ColorTableParameterfv      2054
 16.1784 +#define X_GLrop_ColorTableParameteriv      2055
 16.1785 +#define X_GLrop_CopyColorTable             2056
 16.1786 +#define X_GLrop_ColorSubTable              195
 16.1787 +#define X_GLrop_CopyColorSubTable          196
 16.1788 +#define X_GLrop_ConvolutionFilter1D        4101
 16.1789 +#define X_GLrop_ConvolutionFilter2D        4102
 16.1790 +#define X_GLrop_ConvolutionParameterf      4103
 16.1791 +#define X_GLrop_ConvolutionParameterfv     4104
 16.1792 +#define X_GLrop_ConvolutionParameteri      4105
 16.1793 +#define X_GLrop_ConvolutionParameteriv     4106
 16.1794 +#define X_GLrop_CopyConvolutionFilter1D    4107
 16.1795 +#define X_GLrop_CopyConvolutionFilter2D    4108
 16.1796 +#define X_GLrop_SeparableFilter2D          4109
 16.1797 +#define X_GLrop_Histogram                  4110
 16.1798 +#define X_GLrop_Minmax                     4111
 16.1799 +#define X_GLrop_ResetHistogram             4112
 16.1800 +#define X_GLrop_ResetMinmax                4113
 16.1801 +#define X_GLrop_TexImage3D                 4114
 16.1802 +#define X_GLrop_TexSubImage3D              4115
 16.1803 +#define X_GLrop_CopyTexSubImage3D          4123
 16.1804 +#define X_GLrop_ActiveTextureARB           197
 16.1805 +#define X_GLrop_MultiTexCoord1dvARB        198
 16.1806 +#define X_GLrop_MultiTexCoord1fvARB        199
 16.1807 +#define X_GLrop_MultiTexCoord1ivARB        200
 16.1808 +#define X_GLrop_MultiTexCoord1svARB        201
 16.1809 +#define X_GLrop_MultiTexCoord2dvARB        202
 16.1810 +#define X_GLrop_MultiTexCoord2fvARB        203
 16.1811 +#define X_GLrop_MultiTexCoord2ivARB        204
 16.1812 +#define X_GLrop_MultiTexCoord2svARB        205
 16.1813 +#define X_GLrop_MultiTexCoord3dvARB        206
 16.1814 +#define X_GLrop_MultiTexCoord3fvARB        207
 16.1815 +#define X_GLrop_MultiTexCoord3ivARB        208
 16.1816 +#define X_GLrop_MultiTexCoord3svARB        209
 16.1817 +#define X_GLrop_MultiTexCoord4dvARB        210
 16.1818 +#define X_GLrop_MultiTexCoord4fvARB        211
 16.1819 +#define X_GLrop_MultiTexCoord4ivARB        212
 16.1820 +#define X_GLrop_MultiTexCoord4svARB        213
 16.1821 +#define X_GLrop_DrawArraysEXT              4116
 16.1822 +
 16.1823 +
 16.1824 +/* Opcodes for Vendor Private commands */
 16.1825 +
 16.1826 +#define X_GLvop_AreTexturesResidentEXT      11
 16.1827 +#define X_GLvop_DeleteTexturesEXT           12
 16.1828 +#define X_GLvop_GenTexturesEXT              13
 16.1829 +#define X_GLvop_IsTextureEXT                14
 16.1830 +
 16.1831 +
 16.1832 +/* Opcodes for GLX vendor private commands */
 16.1833 +
 16.1834 +#define X_GLXvop_QueryContextInfoEXT        1024
 16.1835 +
 16.1836 +
 16.1837 +#endif /* _GLX_glxproto_h_ */
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/GL/glxtokens.h	Tue Nov 27 15:23:52 2007 +0100
    17.3 @@ -0,0 +1,262 @@
    17.4 +#ifndef __glxtokens_h__
    17.5 +#define __glxtokens_h__
    17.6 +
    17.7 +/*
    17.8 +** The contents of this file are subject to the GLX Public License Version 1.0
    17.9 +** (the "License"). You may not use this file except in compliance with the
   17.10 +** License. You may obtain a copy of the License at Silicon Graphics, Inc.,
   17.11 +** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
   17.12 +** or at http://www.sgi.com/software/opensource/glx/license.html.
   17.13 +**
   17.14 +** Software distributed under the License is distributed on an "AS IS"
   17.15 +** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY
   17.16 +** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
   17.17 +** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific
   17.18 +** language governing rights and limitations under the License.
   17.19 +**
   17.20 +** The Original Software is GLX version 1.2 source code, released February,
   17.21 +** 1999. The developer of the Original Software is Silicon Graphics, Inc.
   17.22 +** Those portions of the Subject Software created by Silicon Graphics, Inc.
   17.23 +** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
   17.24 +**
   17.25 +** $Header: /home/cvsroot/synrj/int64_morph/GL/glxtokens.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $
   17.26 +*/
   17.27 +
   17.28 +#ifdef __cplusplus
   17.29 +extern "C" {
   17.30 +#endif
   17.31 +
   17.32 +#define GLX_VERSION_1_1         1
   17.33 +#define GLX_VERSION_1_2         1
   17.34 +#define GLX_VERSION_1_3         1
   17.35 +
   17.36 +/* GLX Extensions */
   17.37 +#define GLX_EXT_import_context  1
   17.38 +#define GLX_EXT_visual_info     1
   17.39 +#define GLX_EXT_visual_rating   1
   17.40 +#define GLX_SGIX_fbconfig       1
   17.41 +#define GLX_SGIX_pbuffer        1
   17.42 +#define GLX_NV_float_buffer     1
   17.43 +#define GLX_ARB_get_proc_address 1
   17.44 +
   17.45 +/*
   17.46 + * Names for attributes to glXGetConfig.
   17.47 + */
   17.48 +#define GLX_USE_GL              1       /* support GLX rendering */
   17.49 +#define GLX_BUFFER_SIZE         2       /* depth of the color buffer */
   17.50 +#define GLX_LEVEL               3       /* level in plane stacking */
   17.51 +#define GLX_RGBA                4       /* true if RGBA mode */
   17.52 +#define GLX_DOUBLEBUFFER        5       /* double buffering supported */
   17.53 +#define GLX_STEREO              6       /* stereo buffering supported */
   17.54 +#define GLX_AUX_BUFFERS         7       /* number of aux buffers */
   17.55 +#define GLX_RED_SIZE            8       /* number of red component bits */
   17.56 +#define GLX_GREEN_SIZE          9       /* number of green component bits */
   17.57 +#define GLX_BLUE_SIZE           10      /* number of blue component bits */
   17.58 +#define GLX_ALPHA_SIZE          11      /* number of alpha component bits */
   17.59 +#define GLX_DEPTH_SIZE          12      /* number of depth bits */
   17.60 +#define GLX_STENCIL_SIZE        13      /* number of stencil bits */
   17.61 +#define GLX_ACCUM_RED_SIZE      14      /* number of red accum bits */
   17.62 +#define GLX_ACCUM_GREEN_SIZE    15      /* number of green accum bits */
   17.63 +#define GLX_ACCUM_BLUE_SIZE     16      /* number of blue accum bits */
   17.64 +#define GLX_ACCUM_ALPHA_SIZE    17      /* number of alpha accum bits */
   17.65 +
   17.66 +#define GLX_SAMPLE_BUFFERS_ARB  100000  /* number of multisample buffers */
   17.67 +#define GLX_SAMPLES_ARB         100001  /* number of multisample samples */
   17.68 +
   17.69 +/*
   17.70 + * FBConfig-specific attributes
   17.71 + */
   17.72 +#define GLX_X_VISUAL_TYPE               0x22
   17.73 +#define GLX_CONFIG_CAVEAT               0x20    /* Like visual_info VISUAL_CAVEAT */
   17.74 +#define GLX_TRANSPARENT_TYPE            0x23
   17.75 +#define GLX_TRANSPARENT_INDEX_VALUE     0x24
   17.76 +#define GLX_TRANSPARENT_RED_VALUE       0x25
   17.77 +#define GLX_TRANSPARENT_GREEN_VALUE     0x26
   17.78 +#define GLX_TRANSPARENT_BLUE_VALUE      0x27
   17.79 +#define GLX_TRANSPARENT_ALPHA_VALUE     0x28
   17.80 +#define GLX_DRAWABLE_TYPE               0x8010
   17.81 +#define GLX_RENDER_TYPE                 0x8011
   17.82 +#define GLX_X_RENDERABLE                0x8012
   17.83 +#define GLX_FBCONFIG_ID                 0x8013
   17.84 +#define GLX_MAX_PBUFFER_WIDTH           0x8016
   17.85 +#define GLX_MAX_PBUFFER_HEIGHT          0x8017
   17.86 +#define GLX_MAX_PBUFFER_PIXELS          0x8018
   17.87 +#define GLX_VISUAL_ID                   0x800B
   17.88 +
   17.89 +#define GLX_DRAWABLE_TYPE_SGIX          GLX_DRAWABLE_TYPE
   17.90 +#define GLX_RENDER_TYPE_SGIX            GLX_RENDER_TYPE
   17.91 +#define GLX_X_RENDERABLE_SGIX           GLX_X_RENDERABLE
   17.92 +#define GLX_FBCONFIG_ID_SGIX            GLX_FBCONFIG_ID
   17.93 +#define GLX_MAX_PBUFFER_WIDTH_SGIX      GLX_MAX_PBUFFER_WIDTH
   17.94 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX     GLX_MAX_PBUFFER_HEIGHT
   17.95 +#define GLX_MAX_PBUFFER_PIXELS_SGIX     GLX_MAX_PBUFFER_PIXELS
   17.96 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX  0x8019
   17.97 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
   17.98 +
   17.99 +/*
  17.100 + * Error return values from glXGetConfig.  Success is indicated by
  17.101 + * a value of 0.
  17.102 + */
  17.103 +#define GLX_BAD_SCREEN                  1  /* screen # is bad */
  17.104 +#define GLX_BAD_ATTRIBUTE               2  /* attribute to get is bad */
  17.105 +#define GLX_NO_EXTENSION                3  /* no glx extension on server */
  17.106 +#define GLX_BAD_VISUAL                  4  /* visual # not known by GLX */
  17.107 +#define GLX_BAD_CONTEXT                 5
  17.108 +#define GLX_BAD_VALUE                   6
  17.109 +#define GLX_BAD_ENUM                    7
  17.110 +
  17.111 +
  17.112 +/* FBConfig attribute values */
  17.113 +
  17.114 +/*
  17.115 + * Generic "don't care" value for glX ChooseFBConfig attributes (except
  17.116 + * GLX_LEVEL).
  17.117 + */
  17.118 +#define GLX_DONT_CARE                   0xFFFFFFFF
  17.119 +
  17.120 +/* GLX_RENDER_TYPE bits */
  17.121 +#define GLX_RGBA_BIT                    0x00000001
  17.122 +#define GLX_COLOR_INDEX_BIT             0x00000002
  17.123 +#define GLX_RGBA_BIT_SGIX               GLX_RGBA_BIT
  17.124 +#define GLX_COLOR_INDEX_BIT_SGIX        GLX_COLOR_INDEX_BIT
  17.125 +
  17.126 +/* GLX_DRAWABLE_TYPE bits */
  17.127 +#define GLX_WINDOW_BIT                  0x00000001
  17.128 +#define GLX_PIXMAP_BIT                  0x00000002
  17.129 +#define GLX_PBUFFER_BIT                 0x00000004
  17.130 +#define GLX_WINDOW_BIT_SGIX             GLX_WINDOW_BIT
  17.131 +#define GLX_PIXMAP_BIT_SGIX             GLX_PIXMAP_BIT
  17.132 +#define GLX_PBUFFER_BIT_SGIX            GLX_PBUFFER_BIT
  17.133 +
  17.134 +/* GLX_CONFIG_CAVEAT attribute values */
  17.135 +#define GLX_NONE                        0x8000
  17.136 +#define GLX_SLOW_CONFIG                 0x8001
  17.137 +#define GLX_NON_CONFORMANT_CONFIG       0x800D
  17.138 +
  17.139 +/* GLX_X_VISUAL_TYPE attribute values */
  17.140 +#define GLX_TRUE_COLOR                  0x8002
  17.141 +#define GLX_DIRECT_COLOR                0x8003
  17.142 +#define GLX_PSEUDO_COLOR                0x8004
  17.143 +#define GLX_STATIC_COLOR                0x8005
  17.144 +#define GLX_GRAY_SCALE                  0x8006
  17.145 +#define GLX_STATIC_GRAY                 0x8007
  17.146 +
  17.147 +/* GLX_TRANSPARENT_TYPE attribute values */
  17.148 +/* #define GLX_NONE                        0x8000 */
  17.149 +#define GLX_TRANSPARENT_RGB             0x8008
  17.150 +#define GLX_TRANSPARENT_INDEX           0x8009
  17.151 +
  17.152 +/* glXCreateGLXPbuffer attributes */
  17.153 +#define GLX_PRESERVED_CONTENTS          0x801B
  17.154 +#define GLX_LARGEST_PBUFFER             0x801C
  17.155 +#define GLX_PBUFFER_HEIGHT              0x8040  /* New for GLX 1.3 */
  17.156 +#define GLX_PBUFFER_WIDTH               0x8041  /* New for GLX 1.3 */
  17.157 +#define GLX_PRESERVED_CONTENTS_SGIX     GLX_PRESERVED_CONTENTS
  17.158 +#define GLX_LARGEST_PBUFFER_SGIX        GLX_LARGEST_PBUFFER
  17.159 +
  17.160 +/* glXQueryGLXPBuffer attributes */
  17.161 +#define GLX_WIDTH                       0x801D
  17.162 +#define GLX_HEIGHT                      0x801E
  17.163 +#define GLX_EVENT_MASK                  0x801F
  17.164 +#define GLX_WIDTH_SGIX                  GLX_WIDTH
  17.165 +#define GLX_HEIGHT_SGIX                 GLX_HEIGHT
  17.166 +#define GLX_EVENT_MASK_SGIX             GLX_EVENT_MASK
  17.167 +
  17.168 +/* glXCreateNewContext render_type attribute values */
  17.169 +#define GLX_RGBA_TYPE                   0x8014
  17.170 +#define GLX_COLOR_INDEX_TYPE            0x8015
  17.171 +#define GLX_RGBA_TYPE_SGIX              GLX_RGBA_TYPE
  17.172 +#define GLX_COLOR_INDEX_TYPE_SGIX       GLX_COLOR_INDEX_TYPE
  17.173 +
  17.174 +/* glXQueryContext attributes */
  17.175 +/* #define GLX_FBCONFIG_ID                0x8013 */
  17.176 +/* #define GLX_RENDER_TYPE                0x8011 */
  17.177 +#define GLX_SCREEN                      0x800C
  17.178 +
  17.179 +/* glXSelectEvent event mask bits */
  17.180 +#define GLX_PBUFFER_CLOBBER_MASK        0x08000000
  17.181 +#define GLX_PBUFFER_CLOBBER_MASK_SGIX   GLX_PBUFFER_CLOBBER_MASK
  17.182 +
  17.183 +/* GLXPbufferClobberEvent event_type values */
  17.184 +#define GLX_DAMAGED                     0x8020
  17.185 +#define GLX_SAVED                       0x8021
  17.186 +#define GLX_DAMAGED_SGIX                GLX_DAMAGED
  17.187 +#define GLX_SAVED_SGIX                  GLX_SAVED
  17.188 +
  17.189 +/* GLXPbufferClobberEvent draw_type values */
  17.190 +#define GLX_WINDOW                      0x8022
  17.191 +#define GLX_PBUFFER                     0x8023
  17.192 +#define GLX_WINDOW_SGIX                 GLX_WINDOW
  17.193 +#define GLX_PBUFFER_SGIX                GLX_PBUFFER
  17.194 +
  17.195 +/* GLXPbufferClobberEvent buffer_mask bits */
  17.196 +#define GLX_FRONT_LEFT_BUFFER_BIT       0x00000001
  17.197 +#define GLX_FRONT_RIGHT_BUFFER_BIT      0x00000002
  17.198 +#define GLX_BACK_LEFT_BUFFER_BIT        0x00000004
  17.199 +#define GLX_BACK_RIGHT_BUFFER_BIT       0x00000008
  17.200 +#define GLX_AUX_BUFFERS_BIT             0x00000010
  17.201 +#define GLX_DEPTH_BUFFER_BIT            0x00000020
  17.202 +#define GLX_STENCIL_BUFFER_BIT          0x00000040
  17.203 +#define GLX_ACCUM_BUFFER_BIT            0x00000080
  17.204 +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX  GLX_FRONT_LEFT_BUFFER_BIT
  17.205 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX GLX_FRONT_RIGHT_BUFFER_BIT
  17.206 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX   GLX_BACK_LEFT_BUFFER_BIT
  17.207 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX  GLX_BACK_RIGHT_BUFFER_BIT
  17.208 +#define GLX_AUX_BUFFERS_BIT_SGIX        GLX_AUX_BUFFERS_BIT
  17.209 +#define GLX_DEPTH_BUFFER_BIT_SGIX       GLX_DEPTH_BUFFER_BIT
  17.210 +#define GLX_STENCIL_BUFFER_BIT_SGIX     GLX_STENCIL_BUFFER_BIT
  17.211 +#define GLX_ACCUM_BUFFER_BIT_SGIX       GLX_ACCUM_BUFFER_BIT
  17.212 +
  17.213 +/*
  17.214 + * Extension return values from glXGetConfig.  These are also
  17.215 + * accepted as parameter values for glXChooseVisual.
  17.216 + */
  17.217 +
  17.218 +#define GLX_X_VISUAL_TYPE_EXT           0x22    /* visual_info extension type */
  17.219 +#define GLX_TRANSPARENT_TYPE_EXT        0x23    /* visual_info extension */
  17.220 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24    /* visual_info extension */
  17.221 +#define GLX_TRANSPARENT_RED_VALUE_EXT   0x25    /* visual_info extension */
  17.222 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26    /* visual_info extension */
  17.223 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT  0x27    /* visual_info extension */
  17.224 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28    /* visual_info extension */
  17.225 +
  17.226 +/* Property values for visual_type */
  17.227 +#define GLX_TRUE_COLOR_EXT              0x8002
  17.228 +#define GLX_DIRECT_COLOR_EXT            0x8003
  17.229 +#define GLX_PSEUDO_COLOR_EXT            0x8004
  17.230 +#define GLX_STATIC_COLOR_EXT            0x8005
  17.231 +#define GLX_GRAY_SCALE_EXT              0x8006
  17.232 +#define GLX_STATIC_GRAY_EXT             0x8007
  17.233 +
  17.234 +/* Property values for transparent pixel */
  17.235 +#define GLX_NONE_EXT                    0x8000
  17.236 +#define GLX_TRANSPARENT_RGB_EXT         0x8008
  17.237 +#define GLX_TRANSPARENT_INDEX_EXT       0x8009
  17.238 +
  17.239 +/* Property values for visual_rating */
  17.240 +#define GLX_VISUAL_CAVEAT_EXT           0x20    /* visual_rating extension type */
  17.241 +#define GLX_SLOW_VISUAL_EXT             0x8001
  17.242 +#define GLX_NON_CONFORMANT_VISUAL_EXT   0x800D
  17.243 +
  17.244 +/*
  17.245 + * Names for attributes to glXGetClientString.
  17.246 + */
  17.247 +#define GLX_VENDOR                      0x1
  17.248 +#define GLX_VERSION                     0x2
  17.249 +#define GLX_EXTENSIONS                  0x3
  17.250 +
  17.251 +/*
  17.252 + * Names for attributes to glXQueryContextInfoEXT.
  17.253 + */
  17.254 +#define GLX_SHARE_CONTEXT_EXT           0x800A  /* id of share context */
  17.255 +#define GLX_VISUAL_ID_EXT               0x800B  /* id of context's visual */
  17.256 +#define GLX_SCREEN_EXT                  0x800C  /* screen number */
  17.257 +
  17.258 +/* NV_float_buffer */
  17.259 +#define GLX_FLOAT_COMPONENTS_NV         0x20B0
  17.260 +
  17.261 +#ifdef __cplusplus
  17.262 +}
  17.263 +#endif
  17.264 +
  17.265 +#endif /* !__glxtokens_h__ */
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/GL/osmesa.h	Tue Nov 27 15:23:52 2007 +0100
    18.3 @@ -0,0 +1,273 @@
    18.4 +/*
    18.5 + * Mesa 3-D graphics library
    18.6 + * Version:  4.0.3
    18.7 + * 
    18.8 + * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
    18.9 + * 
   18.10 + * Permission is hereby granted, free of charge, to any person obtaining a
   18.11 + * copy of this software and associated documentation files (the "Software"),
   18.12 + * to deal in the Software without restriction, including without limitation
   18.13 + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   18.14 + * and/or sell copies of the Software, and to permit persons to whom the
   18.15 + * Software is furnished to do so, subject to the following conditions:
   18.16 + * 
   18.17 + * The above copyright notice and this permission notice shall be included
   18.18 + * in all copies or substantial portions of the Software.
   18.19 + * 
   18.20 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   18.21 + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   18.22 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
   18.23 + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
   18.24 + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   18.25 + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   18.26 + */
   18.27 +
   18.28 +
   18.29 +/*
   18.30 + * Mesa Off-Screen rendering interface.
   18.31 + *
   18.32 + * This is an operating system and window system independent interface to
   18.33 + * Mesa which allows one to render images into a client-supplied buffer in
   18.34 + * main memory.  Such images may manipulated or saved in whatever way the
   18.35 + * client wants.
   18.36 + *
   18.37 + * These are the API functions:
   18.38 + *   OSMesaCreateContext - create a new Off-Screen Mesa rendering context
   18.39 + *   OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer
   18.40 + *                       and make the specified context the current one.
   18.41 + *   OSMesaDestroyContext - destroy an OSMesaContext
   18.42 + *   OSMesaGetCurrentContext - return thread's current context ID
   18.43 + *   OSMesaPixelStore - controls how pixels are stored in image buffer
   18.44 + *   OSMesaGetIntegerv - return OSMesa state parameters
   18.45 + *
   18.46 + *
   18.47 + * The limits on the width and height of an image buffer are MAX_WIDTH and
   18.48 + * MAX_HEIGHT as defined in Mesa/src/config.h.  Defaults are 1280 and 1024.
   18.49 + * You can increase them as needed but beware that many temporary arrays in
   18.50 + * Mesa are dimensioned by MAX_WIDTH or MAX_HEIGHT.
   18.51 + */
   18.52 +
   18.53 +
   18.54 +#ifndef OSMESA_H
   18.55 +#define OSMESA_H
   18.56 +
   18.57 +
   18.58 +#ifdef __cplusplus
   18.59 +extern "C" {
   18.60 +#endif
   18.61 +
   18.62 +
   18.63 +#include <GL/gl.h>
   18.64 +
   18.65 +
   18.66 +#define OSMESA_MAJOR_VERSION 4
   18.67 +#define OSMESA_MINOR_VERSION 0
   18.68 +#define OSMESA_PATCH_VERSION 3
   18.69 +
   18.70 +
   18.71 +
   18.72 +/*
   18.73 + * Values for the format parameter of OSMesaCreateContext()
   18.74 + * New in version 2.0.
   18.75 + */
   18.76 +#define OSMESA_COLOR_INDEX	GL_COLOR_INDEX
   18.77 +#define OSMESA_RGBA		GL_RGBA
   18.78 +#define OSMESA_BGRA		0x1
   18.79 +#define OSMESA_ARGB		0x2
   18.80 +#define OSMESA_RGB		GL_RGB
   18.81 +#define OSMESA_BGR		0x4
   18.82 +#define OSMESA_RGB_565		0x5
   18.83 +
   18.84 +
   18.85 +/*
   18.86 + * OSMesaPixelStore() parameters:
   18.87 + * New in version 2.0.
   18.88 + */
   18.89 +#define OSMESA_ROW_LENGTH	0x10
   18.90 +#define OSMESA_Y_UP		0x11
   18.91 +
   18.92 +
   18.93 +/*
   18.94 + * Accepted by OSMesaGetIntegerv:
   18.95 + */
   18.96 +#define OSMESA_WIDTH		0x20
   18.97 +#define OSMESA_HEIGHT		0x21
   18.98 +#define OSMESA_FORMAT		0x22
   18.99 +#define OSMESA_TYPE		0x23
  18.100 +#define OSMESA_MAX_WIDTH	0x24  /* new in 4.0 */
  18.101 +#define OSMESA_MAX_HEIGHT	0x25  /* new in 4.0 */
  18.102 +
  18.103 +
  18.104 +typedef struct osmesa_context *OSMesaContext;
  18.105 +
  18.106 +
  18.107 +#if defined(__BEOS__) || defined(__QUICKDRAW__)
  18.108 +#pragma export on
  18.109 +#endif
  18.110 +
  18.111 +
  18.112 +/*
  18.113 + * Create an Off-Screen Mesa rendering context.  The only attribute needed is
  18.114 + * an RGBA vs Color-Index mode flag.
  18.115 + *
  18.116 + * Input:  format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA,
  18.117 + *                  OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR.
  18.118 + *         sharelist - specifies another OSMesaContext with which to share
  18.119 + *                     display lists.  NULL indicates no sharing.
  18.120 + * Return:  an OSMesaContext or 0 if error
  18.121 + */
  18.122 +GLAPI OSMesaContext GLAPIENTRY
  18.123 +OSMesaCreateContext( GLenum format, OSMesaContext sharelist );
  18.124 +
  18.125 +
  18.126 +
  18.127 +/*
  18.128 + * Create an Off-Screen Mesa rendering contextH
  18.129 +
  18.130 +
  18.131 +#list );
  18.132 +
  18.133 +
  18.134 +
  18.135 +/*
  18.136 + YdA_BGxe of depth buffer, stencil buffer and accumulation buffer.
  18.137 + * If you list );
  18.138 +zero for depthBits, stencilBits, accumBits you
  18.139 + * can save some memory.
  18.140 + *
  18.141 + * New in Mesa 3.5
  18.142 + */
  18.143 +GLAPI OSMesaContext GLAPIENTRY
  18.144 +OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
  18.145 +                        GLint accumBits, OSMesaContext sharelist);
  18.146 +
  18.147 +
  18.148 +/*
  18.149 + * Destroy an Off-Screen Mesa rendering context.
  18.150 + *
  18.151 + * Input:  ctx - the context to destroy
  18.152 + */
  18.153 +GLAPI void GLAPIENTRY
  18.154 +OSMesaDestroyContext( OSMesaContext ctx );
  18.155 +
  18.156 +
  18.157 +
  18.158 +/*
  18.159 + * Bind an OSMesaContext to an image buffer.  The image buffer is just a
  18.160 + * block of memory which the client provides.  Its BGxe must be at least
  18.161 + * as large as width*height*BGxeof(type).  Its address Bhould be a multiple
  18.162 + * of 4 if using RGBA mode.
  18.163 + *
  18.164 + * Image data is stored in the order of glDrawPixels:  row-major order
  18.165 + * with the lower-left image pixel stored in the first array position
  18.166 + * (ie. bottom-to-top).
  18.167 + *
  18.168 + * Since the only type initially supported is GL_UNSIGNED_BYTE, if the
  18.169 + * context is in RGBA mode, each pixel will be stored as a 4-byte RGBA
  18.170 + * value.  If the context is in color indexed mode, each pixel will beYdA_Btored as a 1-byte value.
  18.171 + *
  18.172 + * If the context's viewport hasn't been initialGxed yet, it will now beYdA_initialGxed to (0,0,width,height).
  18.173 + *
  18.174 + * Input:  ctx - the rendering context
  18.175 + *         buffer - the image buffer memory
  18.176 + *         type - data type for pixel components, only GL_UNSIGNED_BYTE
  18.177 + *                supported now
  18.178 + *         width, height -_BGxe of image buffer in pixels, at least 1
  18.179 + * Return:  GL_TRUE if success, GL_FALSE if error because of invalid ctx,
  18.180 + *          invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
  18.181 + *          width>internal limit or height>internal limit.
  18.182 + */
  18.183 +GLAPI GLboolean GLAPIENTRY
  18.184 +OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
  18.185 +                   GLBGxei width, GLBGxei height );
  18.186 +
  18.187 +
  18.188 +
  18.189 +
  18.190 +/*
  18.191 + * Return the current Off-Screen Mesa rendering contextHhandle.
  18.192 + */
  18.193 +GLAPI OSMesaContext GLAPIENTRY
  18.194 +OSMesaGetCurrentContext( void );
  18.195 +
  18.196 +
  18.197 +
  18.198 +/*
  18.199 + * Set pixel store/packing parameters for the current context.
  18.200 + * This is similar to glPixelStore.
  18.201 + * Input:  pname -_OSMESA_ROW_LENGTH
  18.202 + *                    list );
  18.203 +actual pixels per row in image buffer
  18.204 + *                    0 = same as image width (default)
  18.205 + *                 OSMESA_Y_UP
  18.206 + *                    zero = Y coordinates increase downward
  18.207 + *                    non-zero = Y coordinates increase upward (default)
  18.208 + *         value - the value for the parameter pname
  18.209 + *
  18.210 + * New in version 2.0.
  18.211 + */
  18.212 +GLAPI void GLAPIENTRY
  18.213 +OSMesaPixelStore( GLint pname, GLint value );
  18.214 +
  18.215 +
  18.216 +
  18.217 +/*
  18.218 + * Return an integer value like glGetIntegerv.
  18.219 + * Input:  pname -
  18.220 + *                 OSMESA_WIDTH  return current image width
  18.221 + *                 OSMESA_HEIGHT  return current image height
  18.222 + *                 OSMESA_FORMAT  return image format
  18.223 + *                 OSMESA_TYPE  return color component data type
  18.224 + *                 OSMESA_ROW_LENGTH return row length in pixels
  18.225 + *                 OSMESA_Y_UP returns 1 or 0 to indicate Y axis d/*
  18.226 +ction
  18.227 + *         value - pointer to integer in which to return result.
  18.228 + */
  18.229 +GLAPI void GLAPIENTRY
  18.230 +OSMesaGetIntegerv( GLint pname, GLint *value );
  18.231 +
  18.232 +
  18.233 +
  18.234 +/*
  18.235 + * Return the depth buffer associated with an OSMesa context.
  18.236 + * Input:  c - the OSMesa context
  18.237 + * Output:  width, height -_BGxe of buffer in pixels
  18.238 + *          bytesPerValue - bytes per depth value (2 or 4)
  18.239 + *          buffer - pointer to depth buffer values
  18.240 + * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
  18.241 + *
  18.242 + * New in Mesa 2.4.
  18.243 + */
  18.244 +GLAPI GLboolean GLAPIENTRY
  18.245 +OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
  18.246 +                      GLint *bytesPerValue, void **buffer );
  18.247 +
  18.248 +
  18.249 +
  18.250 +/*
  18.251 + * Return the color buffer associated with an OSMesa context.
  18.252 + * Input:  c - the OSMesa context
  18.253 + * Output:  width, height -_BGxe of buffer in pixels
  18.254 + *          format - buffer format (OSMESA_FORMAT)
  18.255 + *          buffer - pointer to depth buffer values
  18.256 + * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
  18.257 + *
  18.258 + * New in Mesa 3.3.
  18.259 + */
  18.260 +GLAPI GLboolean GLAPIENTRY
  18.261 +OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
  18.262 +                      GLint *format, void **buffer );
  18.263 +
  18.264 +
  18.265 +
  18.266 +#if defined(__BEOS__) || defined(__QUICKDRAW__)
  18.267 +#pragma export off
  18.268 +#endif
  18.269 +
  18.270 +
  18.271 +#ifdef __cplusplus
  18.272 +}
  18.273 +#endif
  18.274 +
  18.275 +
  18.276 +#endif
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/SOTA Intro.dsp	Tue Nov 27 15:23:52 2007 +0100
    19.3 @@ -0,0 +1,453 @@
    19.4 +# Microsoft Developer Studio Project File - Name="SOTA Intro" - Package Owner=<4>
    19.5 +# Microsoft Developer Studio Generated Build File, Format Version 6.00
    19.6 +# ** DO NOT EDIT **
    19.7 +
    19.8 +# TARGTYPE "Win32 (x86) Application" 0x0101
    19.9 +
   19.10 +CFG=SOTA Intro - Win32 Debug
   19.11 +!MESSAGE This is not a valid makefile. To build this project using NMAKE,
   19.12 +!MESSAGE use the Export Makefile command and run
   19.13 +!MESSAGE 
   19.14 +!MESSAGE NMAKE /f "SOTA Intro.mak".
   19.15 +!MESSAGE 
   19.16 +!MESSAGE You can specify a configuration when running NMAKE
   19.17 +!MESSAGE by defining the macro CFG on the command line. For example:
   19.18 +!MESSAGE 
   19.19 +!MESSAGE NMAKE /f "SOTA Intro.mak" CFG="SOTA Intro - Win32 Debug"
   19.20 +!MESSAGE 
   19.21 +!MESSAGE Possible choices for configuration are:
   19.22 +!MESSAGE 
   19.23 +!MESSAGE "SOTA Intro - Win32 Release" (based on "Win32 (x86) Application")
   19.24 +!MESSAGE "SOTA Intro - Win32 Debug" (based on "Win32 (x86) Application")
   19.25 +!MESSAGE 
   19.26 +
   19.27 +# Begin Project
   19.28 +# PROP AllowPerConfigDependencies 0
   19.29 +# PROP Scc_ProjName ""
   19.30 +# PROP Scc_LocalPath ""
   19.31 +CPP=cl.exe
   19.32 +MTL=midl.exe
   19.33 +RSC=rc.exe
   19.34 +
   19.35 +!IF  "$(CFG)" == "SOTA Intro - Win32 Release"
   19.36 +
   19.37 +# PROP BASE Use_MFC 0
   19.38 +# PROP BASE Use_Debug_Libraries 0
   19.39 +# PROP BASE Output_Dir "Release"
   19.40 +# PROP BASE Intermediate_Dir "Release"
   19.41 +# PROP BASE Target_Dir ""
   19.42 +# PROP Use_MFC 0
   19.43 +# PROP Use_Debug_Libraries 0
   19.44 +# PROP Output_Dir "Release"
   19.45 +# PROP Intermediate_Dir "Release"
   19.46 +# PROP Ignore_Export_Lib 0
   19.47 +# PROP Target_Dir ""
   19.48 +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
   19.49 +# ADD CPP /nologo /MD /GX /O1 /D "MIDDLERES" /D "FINALE_RELEASE" /D "WIN32_MEAN_AND_LEAN" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FR /FD /c
   19.50 +# SUBTRACT CPP /YX
   19.51 +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
   19.52 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
   19.53 +# ADD BASE RSC /l 0x40c /d "NDEBUG"
   19.54 +# ADD RSC /l 0x40c /d "NDEBUG"
   19.55 +BSC32=bscmake.exe
   19.56 +# ADD BASE BSC32 /nologo
   19.57 +# ADD BSC32 /nologo
   19.58 +LINK32=link.exe
   19.59 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
   19.60 +# ADD LINK32 "minifmod/winmm.lib" minifmod.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /pdb:none /map /machine:I386
   19.61 +# Begin Special Build Tool
   19.62 +SOURCE="$(InputPath)"
   19.63 +PostBuild_Cmds="Release/upx.exe" --best "Release/SOTA Intro.exe"
   19.64 +# End Special Build Tool
   19.65 +
   19.66 +!ELSEIF  "$(CFG)" == "SOTA Intro - Win32 Debug"
   19.67 +
   19.68 +# PROP BASE Use_MFC 0
   19.69 +# PROP BASE Use_Debug_Libraries 1
   19.70 +# PROP BASE Output_Dir "Debug"
   19.71 +# PROP BASE Intermediate_Dir "Debug"
   19.72 +# PROP BASE Target_Dir ""
   19.73 +# PROP Use_MFC 0
   19.74 +# PROP Use_Debug_Libraries 1
   19.75 +# PROP Output_Dir "Debug"
   19.76 +# PROP Intermediate_Dir "Debug"
   19.77 +# PROP Ignore_Export_Lib 0
   19.78 +# PROP Target_Dir ""
   19.79 +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
   19.80 +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /D "MIDDLERES" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /GZ /c
   19.81 +# SUBTRACT CPP /YX
   19.82 +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
   19.83 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
   19.84 +# ADD BASE RSC /l 0x40c /d "_DEBUG"
   19.85 +# ADD RSC /l 0x40c /d "_DEBUG"
   19.86 +BSC32=bscmake.exe
   19.87 +# ADD BASE BSC32 /nologo
   19.88 +# ADD BSC32 /nologo
   19.89 +LINK32=link.exe
   19.90 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
   19.91 +# ADD LINK32 "minifmod/winmm.lib" minifmod.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
   19.92 +# SUBTRACT LINK32 /nodefaultlib
   19.93 +
   19.94 +!ENDIF 
   19.95 +
   19.96 +# Begin Target
   19.97 +
   19.98 +# Name "SOTA Intro - Win32 Release"
   19.99 +# Name "SOTA Intro - Win32 Debug"
  19.100 +# Begin Group "Source Files"
  19.101 +
  19.102 +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
  19.103 +# Begin Source File
  19.104 +
  19.105 +SOURCE=.\main.cxx
  19.106 +
  19.107 +!IF  "$(CFG)" == "SOTA Intro - Win32 Release"
  19.108 +
  19.109 +# ADD CPP /O1
  19.110 +
  19.111 +!ELSEIF  "$(CFG)" == "SOTA Intro - Win32 Debug"
  19.112 +
  19.113 +!ENDIF 
  19.114 +
  19.115 +# End Source File
  19.116 +# Begin Source File
  19.117 +
  19.118 +SOURCE=.\Script5.rc
  19.119 +# End Source File
  19.120 +# Begin Source File
  19.121 +
  19.122 +SOURCE=.\window_fmod_init.cpp
  19.123 +# End Source File
  19.124 +# Begin Source File
  19.125 +
  19.126 +SOURCE=.\window_fmod_init.h
  19.127 +# End Source File
  19.128 +# End Group
  19.129 +# Begin Group "Header Files"
  19.130 +
  19.131 +# PROP Default_Filter "h;hpp;hxx;hm;inl"
  19.132 +# Begin Source File
  19.133 +
  19.134 +SOURCE=.\gl_header.h
  19.135 +# End Source File
  19.136 +# End Group
  19.137 +# Begin Group "Resource Files"
  19.138 +
  19.139 +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
  19.140 +# Begin Source File
  19.141 +
  19.142 +SOURCE=.\font_16x16.bmp
  19.143 +# End Source File
  19.144 +# Begin Source File
  19.145 +
  19.146 +SOURCE=.\font_16x16_corrected.bmp
  19.147 +# End Source File
  19.148 +# Begin Source File
  19.149 +
  19.150 +SOURCE=.\font_8x16.bmp
  19.151 +# End Source File
  19.152 +# Begin Source File
  19.153 +
  19.154 +SOURCE=.\font_8x16squaremin.bmp
  19.155 +# End Source File
  19.156 +# Begin Source File
  19.157 +
  19.158 +SOURCE=.\fontkoko.bmp
  19.159 +# End Source File
  19.160 +# Begin Source File
  19.161 +
  19.162 +SOURCE=.\resource.h
  19.163 +# End Source File
  19.164 +# End Group
  19.165 +# Begin Group "Effects"
  19.166 +
  19.167 +# PROP Default_Filter ""
  19.168 +# Begin Source File
  19.169 +
  19.170 +SOURCE=.\efx_equa.cxx
  19.171 +# End Source File
  19.172 +# Begin Source File
  19.173 +
  19.174 +SOURCE=.\efx_equa.h
  19.175 +# End Source File
  19.176 +# Begin Source File
  19.177 +
  19.178 +SOURCE=.\efx_equa2.cxx
  19.179 +# End Source File
  19.180 +# Begin Source File
  19.181 +
  19.182 +SOURCE=.\efx_equa2.h
  19.183 +# End Source File
  19.184 +# Begin Source File
  19.185 +
  19.186 +SOURCE=.\efx_harmonics.cxx
  19.187 +# End Source File
  19.188 +# Begin Source File
  19.189 +
  19.190 +SOURCE=.\efx_harmonics.h
  19.191 +# End Source File
  19.192 +# Begin Source File
  19.193 +
  19.194 +SOURCE=.\efx_rub.cxx
  19.195 +# End Source File
  19.196 +# Begin Source File
  19.197 +
  19.198 +SOURCE=.\efx_rub.h
  19.199 +# End Source File
  19.200 +# Begin Source File
  19.201 +
  19.202 +SOURCE=.\efx_screen0.cxx
  19.203 +# End Source File
  19.204 +# Begin Source File
  19.205 +
  19.206 +SOURCE=.\efx_screen0.h
  19.207 +# End Source File
  19.208 +# Begin Source File
  19.209 +
  19.210 +SOURCE=.\efx_screen1.cxx
  19.211 +# End Source File
  19.212 +# Begin Source File
  19.213 +
  19.214 +SOURCE=.\efx_screen1.h
  19.215 +# End Source File
  19.216 +# Begin Source File
  19.217 +
  19.218 +SOURCE=.\efx_screen2.cxx
  19.219 +# End Source File
  19.220 +# Begin Source File
  19.221 +
  19.222 +SOURCE=.\efx_screen2.h
  19.223 +# End Source File
  19.224 +# Begin Source File
  19.225 +
  19.226 +SOURCE=.\efx_screen3.cxx
  19.227 +
  19.228 +!IF  "$(CFG)" == "SOTA Intro - Win32 Release"
  19.229 +
  19.230 +# ADD CPP /O2
  19.231 +
  19.232 +!ELSEIF  "$(CFG)" == "SOTA Intro - Win32 Debug"
  19.233 +
  19.234 +!ENDIF 
  19.235 +
  19.236 +# End Source File
  19.237 +# Begin Source File
  19.238 +
  19.239 +SOURCE=.\efx_screen3.h
  19.240 +# End Source File
  19.241 +# Begin Source File
  19.242 +
  19.243 +SOURCE=.\efx_screen4.cxx
  19.244 +# End Source File
  19.245 +# Begin Source File
  19.246 +
  19.247 +SOURCE=.\efx_screen4.h
  19.248 +# End Source File
  19.249 +# Begin Source File
  19.250 +
  19.251 +SOURCE=.\efx_touf.cxx
  19.252 +# End Source File
  19.253 +# Begin Source File
  19.254 +
  19.255 +SOURCE=.\efx_touf.h
  19.256 +# End Source File
  19.257 +# End Group
  19.258 +# Begin Group "Utils"
  19.259 +
  19.260 +# PROP Default_Filter ""
  19.261 +# Begin Source File
  19.262 +
  19.263 +SOURCE=.\cmn_design.cxx
  19.264 +# End Source File
  19.265 +# Begin Source File
  19.266 +
  19.267 +SOURCE=.\cmn_design.h
  19.268 +# End Source File
  19.269 +# Begin Source File
  19.270 +
  19.271 +SOURCE=.\cmn_intro.cxx
  19.272 +# End Source File
  19.273 +# Begin Source File
  19.274 +
  19.275 +SOURCE=.\cmn_intro.h
  19.276 +# End Source File
  19.277 +# Begin Source File
  19.278 +
  19.279 +SOURCE=.\cmn_shape.cxx
  19.280 +# End Source File
  19.281 +# Begin Source File
  19.282 +
  19.283 +SOURCE=.\cmn_shape.h
  19.284 +# End Source File
  19.285 +# Begin Source File
  19.286 +
  19.287 +SOURCE=.\cmn_texture.cxx
  19.288 +# End Source File
  19.289 +# Begin Source File
  19.290 +
  19.291 +SOURCE=.\cmn_texture.h
  19.292 +# End Source File
  19.293 +# Begin Source File
  19.294 +
  19.295 +SOURCE=.\mth.cxx
  19.296 +# End Source File
  19.297 +# Begin Source File
  19.298 +
  19.299 +SOURCE=.\mth.h
  19.300 +# End Source File
  19.301 +# Begin Source File
  19.302 +
  19.303 +SOURCE=.\mth_hermite.h
  19.304 +# End Source File
  19.305 +# Begin Source File
  19.306 +
  19.307 +SOURCE=.\mth_perlin.cxx
  19.308 +# End Source File
  19.309 +# Begin Source File
  19.310 +
  19.311 +SOURCE=.\mth_perlin.h
  19.312 +# End Source File
  19.313 +# Begin Source File
  19.314 +
  19.315 +SOURCE=.\mth_plane3.h
  19.316 +# End Source File
  19.317 +# Begin Source File
  19.318 +
  19.319 +SOURCE=.\mth_vector2.h
  19.320 +# End Source File
  19.321 +# Begin Source File
  19.322 +
  19.323 +SOURCE=.\mth_vector3.h
  19.324 +# End Source File
  19.325 +# Begin Source File
  19.326 +
  19.327 +SOURCE=.\phy.h
  19.328 +# End Source File
  19.329 +# Begin Source File
  19.330 +
  19.331 +SOURCE=.\phy_element.h
  19.332 +# End Source File
  19.333 +# Begin Source File
  19.334 +
  19.335 +SOURCE=.\phy_server.cxx
  19.336 +
  19.337 +!IF  "$(CFG)" == "SOTA Intro - Win32 Release"
  19.338 +
  19.339 +# ADD CPP /O1
  19.340 +
  19.341 +!ELSEIF  "$(CFG)" == "SOTA Intro - Win32 Debug"
  19.342 +
  19.343 +!ENDIF 
  19.344 +
  19.345 +# End Source File
  19.346 +# Begin Source File
  19.347 +
  19.348 +SOURCE=.\phy_server.h
  19.349 +# End Source File
  19.350 +# Begin Source File
  19.351 +
  19.352 +SOURCE=.\rdr_font.cxx
  19.353 +# End Source File
  19.354 +# Begin Source File
  19.355 +
  19.356 +SOURCE=.\rdr_font.h
  19.357 +# End Source File
  19.358 +# Begin Source File
  19.359 +
  19.360 +SOURCE=.\sys_assert.cxx
  19.361 +# End Source File
  19.362 +# Begin Source File
  19.363 +
  19.364 +SOURCE=.\sys_assert.h
  19.365 +# End Source File
  19.366 +# End Group
  19.367 +# Begin Group "Meshes"
  19.368 +
  19.369 +# PROP Default_Filter ""
  19.370 +# End Group
  19.371 +# Begin Group "Transitions"
  19.372 +
  19.373 +# PROP Default_Filter ""
  19.374 +# Begin Source File
  19.375 +
  19.376 +SOURCE=.\trans_crossradial.cxx
  19.377 +# End Source File
  19.378 +# Begin Source File
  19.379 +
  19.380 +SOURCE=.\trans_crossradial.h
  19.381 +# End Source File
  19.382 +# Begin Source File
  19.383 +
  19.384 +SOURCE=.\trans_explode.cxx
  19.385 +# End Source File
  19.386 +# Begin Source File
  19.387 +
  19.388 +SOURCE=.\trans_explode.h
  19.389 +# End Source File
  19.390 +# Begin Source File
  19.391 +
  19.392 +SOURCE=.\trans_explode2.cxx
  19.393 +# End Source File
  19.394 +# Begin Source File
  19.395 +
  19.396 +SOURCE=.\trans_explode2.h
  19.397 +# End Source File
  19.398 +# Begin Source File
  19.399 +
  19.400 +SOURCE=.\trans_fade.cxx
  19.401 +# End Source File
  19.402 +# Begin Source File
  19.403 +
  19.404 +SOURCE=.\trans_fade.h
  19.405 +# End Source File
  19.406 +# Begin Source File
  19.407 +
  19.408 +SOURCE=.\trans_glow.cxx
  19.409 +# End Source File
  19.410 +# Begin Source File
  19.411 +
  19.412 +SOURCE=.\trans_glow.h
  19.413 +# End Source File
  19.414 +# Begin Source File
  19.415 +
  19.416 +SOURCE=.\trans_puzzle.cxx
  19.417 +# End Source File
  19.418 +# Begin Source File
  19.419 +
  19.420 +SOURCE=.\trans_puzzle.h
  19.421 +# End Source File
  19.422 +# Begin Source File
  19.423 +
  19.424 +SOURCE=.\trans_radial.cxx
  19.425 +# End Source File
  19.426 +# Begin Source File
  19.427 +
  19.428 +SOURCE=.\trans_radial.h
  19.429 +# End Source File
  19.430 +# End Group
  19.431 +# Begin Group "Sync"
  19.432 +
  19.433 +# PROP Default_Filter ""
  19.434 +# Begin Source File
  19.435 +
  19.436 +SOURCE=.\fxSync.cxx
  19.437 +# End Source File
  19.438 +# Begin Source File
  19.439 +
  19.440 +SOURCE=.\fxSync.h
  19.441 +# End Source File
  19.442 +# Begin Source File
  19.443 +
  19.444 +SOURCE=.\smplInfo.h
  19.445 +# End Source File
  19.446 +# Begin Source File
  19.447 +
  19.448 +SOURCE=.\sndDetect.cxx
  19.449 +# End Source File
  19.450 +# Begin Source File
  19.451 +
  19.452 +SOURCE=.\sndDetect.h
  19.453 +# End Source File
  19.454 +# End Group
  19.455 +# End Target
  19.456 +# End Project
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/SOTA Intro.dsw	Tue Nov 27 15:23:52 2007 +0100
    20.3 @@ -0,0 +1,29 @@
    20.4 +Microsoft Developer Studio Workspace File, Format Version 6.00
    20.5 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
    20.6 +
    20.7 +###############################################################################
    20.8 +
    20.9 +Project: "SOTA Intro"=".\SOTA Intro.dsp" - Package Owner=<4>
   20.10 +
   20.11 +Package=<5>
   20.12 +{{{
   20.13 +}}}
   20.14 +
   20.15 +Package=<4>
   20.16 +{{{
   20.17 +}}}
   20.18 +
   20.19 +###############################################################################
   20.20 +
   20.21 +Global:
   20.22 +
   20.23 +Package=<5>
   20.24 +{{{
   20.25 +}}}
   20.26 +
   20.27 +Package=<3>
   20.28 +{{{
   20.29 +}}}
   20.30 +
   20.31 +###############################################################################
   20.32 +
    21.1 Binary file Script5.aps has changed
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/Script5.rc	Tue Nov 27 15:23:52 2007 +0100
    22.3 @@ -0,0 +1,2491 @@
    22.4 +//Microsoft Developer Studio generated resource script.
    22.5 +//
    22.6 +#include "resource.h"
    22.7 +
    22.8 +#define APSTUDIO_READONLY_SYMBOLS
    22.9 +/////////////////////////////////////////////////////////////////////////////
   22.10 +//
   22.11 +// Generated from the TEXTINCLUDE 2 resource.
   22.12 +//
   22.13 +#include "afxres.h"
   22.14 +
   22.15 +/////////////////////////////////////////////////////////////////////////////
   22.16 +#undef APSTUDIO_READONLY_SYMBOLS
   22.17 +
   22.18 +/////////////////////////////////////////////////////////////////////////////
   22.19 +// French (France) resources
   22.20 +
   22.21 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
   22.22 +#ifdef _WIN32
   22.23 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
   22.24 +#pragma code_page(1252)
   22.25 +#endif //_WIN32
   22.26 +
   22.27 +#ifdef APSTUDIO_INVOKED
   22.28 +/////////////////////////////////////////////////////////////////////////////
   22.29 +//
   22.30 +// TEXTINCLUDE
   22.31 +//
   22.32 +
   22.33 +1 TEXTINCLUDE DISCARDABLE 
   22.34 +BEGIN
   22.35 +    "resource.h\0"
   22.36 +END
   22.37 +
   22.38 +2 TEXTINCLUDE DISCARDABLE 
   22.39 +BEGIN
   22.40 +    "#include ""afxres.h""\r\n"
   22.41 +    "\0"
   22.42 +END
   22.43 +
   22.44 +3 TEXTINCLUDE DISCARDABLE 
   22.45 +BEGIN
   22.46 +    "\r\n"
   22.47 +    "\0"
   22.48 +END
   22.49 +
   22.50 +#endif    // APSTUDIO_INVOKED
   22.51 +
   22.52 +
   22.53 +/////////////////////////////////////////////////////////////////////////////
   22.54 +//
   22.55 +// Data
   22.56 +//
   22.57 +
   22.58 +IDR_DATA12 RCDATA DISCARDABLE 
   22.59 +BEGIN
   22.60 +    0x7845, 0x6574, 0x646e, 0x6465, 0x4d20, 0x646f, 0x6c75, 0x3a65, 0x0020, 
   22.61 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.62 +    0x1a00, 0x614d, 0x5464, 0x6172, 0x6b63, 0x7265, 0x3220, 0x302e, 0x0000, 
   22.63 +    0x0000, 0x0000, 0x0104, 0x0114, 0x0000, 0x001d, 0x0000, 0x0006, 0x0015, 
   22.64 +    0x0009, 0x0001, 0x0005, 0x0082, 0x0000, 0x0201, 0x0203, 0x0503, 0x0404, 
   22.65 +    0x0706, 0x0a06, 0x0c09, 0x0c0d, 0x0c0e, 0x1014, 0x1010, 0x1110, 0x1211, 
   22.66 +    0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.67 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.68 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.69 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.70 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.71 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.72 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.73 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.74 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.75 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.76 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.77 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
   22.78 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x4000, 
   22.79 +    0x5700, 0x9b02, 0x013c, 0x050f, 0x0c88, 0x0c88, 0x259b, 0x0c06, 0x9804, 
   22.80 +    0x010a, 0x0c88, 0x8080, 0x9880, 0x100a, 0x0e98, 0x80b1, 0x8080, 0x9880, 
   22.81 +    0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x100a, 0x0e98, 0x80b1, 0x8080, 
   22.82 +    0x9880, 0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x200a, 0x0e98, 0x80b1, 
   22.83 +    0x3883, 0x8001, 0x9880, 0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x200a, 
   22.84 +    0x0e98, 0x80b1, 0x8080, 0x8080, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 
   22.85 +    0x80b1, 0x8080, 0x8080, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 
   22.86 +    0x3583, 0x8001, 0x8080, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 
   22.87 +    0x0498, 0x80a1, 0x8080, 0x0a98, 0x8001, 0x0488, 0x8080, 0x9880, 0xb10e, 
   22.88 +    0x9880, 0x0204, 0x8080, 0x9880, 0x010a, 0x9880, 0x0106, 0x8080, 0x9880, 
   22.89 +    0x010a, 0x8880, 0x8004, 0x8080, 0x0a98, 0x8001, 0x0698, 0x8002, 0x8080, 
   22.90 +    0x0a98, 0x8001, 0x0488, 0x8080, 0x9880, 0x010a, 0x9880, 0x0106, 0x8080, 
   22.91 +    0x9880, 0x010a, 0x8880, 0x8004, 0x8080, 0x0c88, 0x9880, 0x0206, 0x8080, 
   22.92 +    0x8080, 0x8880, 0x8004, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8001, 0x8080, 
   22.93 +    0x8080, 0x0488, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x0206, 0x8080, 0x8080, 
   22.94 +    0x8880, 0x8004, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8001, 0x9880, 0xb10e, 
   22.95 +    0x8080, 0x0488, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x0206, 0x8080, 0x0e98, 
   22.96 +    0x80b1, 0x9880, 0x2006, 0x8080, 0x0a98, 0x9b01, 0x0628, 0x040c, 0x9880, 
   22.97 +    0x0206, 0x8080, 0x0e98, 0x98b1, 0x100a, 0x9880, 0x2006, 0x8080, 0x0a98, 
   22.98 +    0x9801, 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 0x98b1, 0x100a, 0x9880, 
   22.99 +    0x2006, 0x8080, 0x0a98, 0x9801, 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 
  22.100 +    0x98b1, 0x200a, 0x9880, 0x2006, 0x8080, 0x0a98, 0x9801, 0x100a, 0x9880, 
  22.101 +    0x0206, 0x8080, 0x0e98, 0x98b1, 0x200a, 0x9880, 0x2006, 0x8080, 0x0a98, 
  22.102 +    0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 0x8080, 
  22.103 +    0x0a98, 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 
  22.104 +    0x8080, 0x0a98, 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 
  22.105 +    0x1006, 0x8080, 0x0a98, 0x8001, 0x9880, 0x2006, 0x8080, 0x0e98, 0x80b1, 
  22.106 +    0x8380, 0x0141, 0x8080, 0x0c88, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.107 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.108 +    0x8080, 0x8080, 0x3d83, 0x8001, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.109 +    0x8080, 0x8080, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.110 +    0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x3583, 0x8001, 0x8080, 0x0e98, 
  22.111 +    0x80b1, 0x8080, 0x8080, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x0e98, 0x80b1, 
  22.112 +    0x8080, 0x8080, 0x0e98, 0x80b1, 0x0009, 0x0000, 0x4000, 0xc200, 0x8302, 
  22.113 +    0x013c, 0x3d83, 0x8002, 0x259b, 0x0c06, 0x9804, 0x010a, 0x8080, 0x8080, 
  22.114 +    0x0a98, 0x9810, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x0a98, 0x9810, 
  22.115 +    0x010a, 0x8080, 0x8080, 0x0a98, 0x9810, 0xb10e, 0x8080, 0x3d83, 0x8002, 
  22.116 +    0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 0x0a98, 0x9820, 0xb10e, 0x8380, 
  22.117 +    0x0138, 0x3d9b, 0x0c02, 0x8010, 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 
  22.118 +    0x0a98, 0x9820, 0xb10e, 0x8080, 0x3d83, 0x8002, 0x9880, 0x010a, 0x8080, 
  22.119 +    0x8080, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 
  22.120 +    0x8080, 0x8080, 0x9880, 0xb10e, 0x8380, 0x0135, 0x3d83, 0x8002, 0x9880, 
  22.121 +    0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x9880, 0xa104, 0x3d9b, 0x0c02, 
  22.122 +    0x8010, 0x9880, 0x010a, 0x8880, 0x8004, 0x8080, 0x0e98, 0x80b1, 0x0498, 
  22.123 +    0x8302, 0x023d, 0x8080, 0x0a98, 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 
  22.124 +    0x8001, 0x0488, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 0x9880, 0x0206, 
  22.125 +    0x8080, 0x9880, 0x010a, 0x8880, 0x8304, 0x023d, 0x8080, 0x0a98, 0x8001, 
  22.126 +    0x0698, 0x8001, 0x8080, 0x0a98, 0x8001, 0x0488, 0x3d9b, 0x0c02, 0x8010, 
  22.127 +    0x8880, 0x800c, 0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8002, 
  22.128 +    0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 0x8080, 0x8880, 0x9b04, 0x023d, 
  22.129 +    0x0a0c, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 
  22.130 +    0x3d83, 0x8002, 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 0x0e98, 0x80b1, 
  22.131 +    0x8880, 0x9b04, 0x023d, 0x100c, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8002, 
  22.132 +    0x9880, 0xb10e, 0x8080, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 0x2c9b, 
  22.133 +    0x0c06, 0x8004, 0x0698, 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8010, 0x0698, 
  22.134 +    0x9b20, 0x023d, 0x0a0c, 0x9880, 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 
  22.135 +    0x9880, 0xb10e, 0x0a98, 0x8010, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 
  22.136 +    0x0a98, 0x8010, 0x0698, 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8020, 0x0698, 
  22.137 +    0x9b20, 0x023d, 0x100c, 0x9880, 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 
  22.138 +    0x9880, 0xb10e, 0x0a98, 0x8020, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 
  22.139 +    0x8080, 0x0698, 0x8002, 0x9880, 0xb10e, 0x8080, 0x0698, 0x9b20, 0x023d, 
  22.140 +    0x0a0c, 0x9880, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 0xb10e, 0x8080, 
  22.141 +    0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 
  22.142 +    0xb10e, 0x8080, 0x0698, 0x9b10, 0x023d, 0x100c, 0x9880, 0x010a, 0x8080, 
  22.143 +    0x0698, 0x8020, 0x9880, 0xb10e, 0x8080, 0x4183, 0x8301, 0x023d, 0x8880, 
  22.144 +    0x800c, 0x8080, 0x8080, 0x8080, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x8080, 
  22.145 +    0x8080, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8002, 0x8080, 0x8080, 0x8080, 
  22.146 +    0x8080, 0x8380, 0x013d, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x8080, 0x8080, 
  22.147 +    0x8080, 0x8080, 0x3d83, 0x8002, 0x9880, 0xb10e, 0x8080, 0x8080, 0x8080, 
  22.148 +    0x8080, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0xb10e, 0x8080, 0x8080, 0x8080, 
  22.149 +    0x8380, 0x0135, 0x3d83, 0x8302, 0x043d, 0x9880, 0xb10e, 0x8080, 0x9b80, 
  22.150 +    0x033d, 0x0c0c, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x830a, 0x033d, 
  22.151 +    0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 0x200c, 0x9880, 
  22.152 +    0xb10e, 0x0980, 0x0000, 0x0000, 0x0040, 0x030a, 0x3c83, 0x8301, 0x023d, 
  22.153 +    0x3d83, 0x9b03, 0x0625, 0x040c, 0x0a98, 0x8001, 0x8080, 0x9880, 0x100a, 
  22.154 +    0x0e98, 0x80b1, 0x9b80, 0x023d, 0x0a0c, 0x9880, 0x100a, 0x0a98, 0x8001, 
  22.155 +    0x8080, 0x9880, 0x100a, 0x0e98, 0x80b1, 0x8380, 0x023d, 0x3d83, 0x9804, 
  22.156 +    0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x200a, 0x0e98, 0x80b1, 0x3883, 
  22.157 +    0x9b01, 0x023d, 0x100c, 0x3d83, 0x9803, 0x100a, 0x0a98, 0x8001, 0x8080, 
  22.158 +    0x3d9b, 0x0c04, 0x980c, 0x200a, 0x0e98, 0x80b1, 0x8380, 0x023d, 0x8080, 
  22.159 +    0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 0x9b80, 0x023d, 0x0a0c, 
  22.160 +    0x3d83, 0x8004, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 0x3583, 
  22.161 +    0x8301, 0x023d, 0x3d83, 0x8005, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 
  22.162 +    0x80b1, 0x0498, 0x9ba1, 0x023d, 0x100c, 0x8080, 0x0a98, 0x8001, 0x0488, 
  22.163 +    0x8080, 0x9880, 0xb10e, 0x9880, 0x0204, 0x3d83, 0x8302, 0x033d, 0x9880, 
  22.164 +    0x010a, 0x9880, 0x0106, 0x8080, 0x9880, 0x010a, 0x8880, 0x9b04, 0x023d, 
  22.165 +    0x0a0c, 0x8080, 0x0a98, 0x8001, 0x0698, 0x8002, 0x3d9b, 0x0c03, 0x800c, 
  22.166 +    0x0a98, 0x8001, 0x0488, 0x3d83, 0x8302, 0x043d, 0x9880, 0x010a, 0x9880, 
  22.167 +    0x0106, 0x8080, 0x9880, 0x010a, 0x8880, 0x9b04, 0x023d, 0x100c, 0x8080, 
  22.168 +    0x0c88, 0x9880, 0x0206, 0x8380, 0x053d, 0x8080, 0x8880, 0x8304, 0x023d, 
  22.169 +    0x9880, 0xb10e, 0x8080, 0x0698, 0x8001, 0x8080, 0x8080, 0x0488, 0x3d9b, 
  22.170 +    0x0c02, 0x830a, 0x033d, 0x0e98, 0x80b1, 0x9880, 0x0206, 0x8080, 0x8080, 
  22.171 +    0x8880, 0x8304, 0x023d, 0x3d9b, 0x0e04, 0x9892, 0xb10e, 0x8080, 0x0698, 
  22.172 +    0x8001, 0x0a98, 0x980f, 0xb10e, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x8010, 
  22.173 +    0x0e98, 0x80b1, 0x9880, 0x0206, 0x9b80, 0x043d, 0x0c0c, 0x0e98, 0x80b1, 
  22.174 +    0x9880, 0x2006, 0x3d83, 0x8302, 0x033d, 0x0a98, 0x9b01, 0x0628, 0x040c, 
  22.175 +    0x9880, 0x0206, 0x8080, 0x0e98, 0x98b1, 0x100a, 0x9880, 0x2006, 0x3d9b, 
  22.176 +    0x0c02, 0x800a, 0x0a98, 0x9801, 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 
  22.177 +    0x98b1, 0x100a, 0x9880, 0x2006, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x9801, 
  22.178 +    0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 0x98b1, 0x200a, 0x9880, 0x2006, 
  22.179 +    0x3d9b, 0x0c02, 0x8010, 0x0a98, 0x9801, 0x100a, 0x9880, 0x0206, 0x8380, 
  22.180 +    0x053d, 0x0e98, 0x98b1, 0x200a, 0x9880, 0x2006, 0x3d83, 0x8002, 0x0a98, 
  22.181 +    0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 0x3d9b, 
  22.182 +    0x0c02, 0x830a, 0x033d, 0x0a98, 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 
  22.183 +    0x80b1, 0x9880, 0x2006, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x8001, 0x9880, 
  22.184 +    0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 0x3d9b, 0x0c02, 0x8310, 
  22.185 +    0x053d, 0x0a98, 0x8001, 0x9880, 0x0206, 0x9b80, 0x043d, 0x0c0c, 0x0e98, 
  22.186 +    0x80b1, 0x9880, 0x2006, 0x3d83, 0x8302, 0x033d, 0x0c88, 0x8080, 0x0698, 
  22.187 +    0x8002, 0x8080, 0x8080, 0x0698, 0x9b20, 0x023d, 0x0a0c, 0x8080, 0x8080, 
  22.188 +    0x0698, 0x8002, 0x8080, 0x8080, 0x0698, 0x8310, 0x023d, 0x3d83, 0x8004, 
  22.189 +    0x8080, 0x0698, 0x8020, 0x8080, 0x8080, 0x3d9b, 0x0c01, 0x9b1a, 0x023d, 
  22.190 +    0x100c, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8005, 0x8080, 0x8380, 0x023d, 
  22.191 +    0x8080, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 
  22.192 +    0x3d83, 0x8003, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x3583, 0x8301, 
  22.193 +    0x023d, 0x3d83, 0x8004, 0x0e98, 0x80b1, 0x8080, 0x3d9b, 0x0c03, 0x800c, 
  22.194 +    0x0e98, 0x80b1, 0x9b80, 0x023d, 0x0a0c, 0x3d83, 0x8003, 0x0e98, 0x80b1, 
  22.195 +    0x9b80, 0x023d, 0x100c, 0x3d9b, 0x0c04, 0x8010, 0x0e98, 0x80b1, 0x0009, 
  22.196 +    0x0000, 0x4000, 0x0800, 0x8303, 0x013c, 0x3d83, 0x8302, 0x033d, 0x239b, 
  22.197 +    0x0c06, 0x9804, 0x010a, 0x8080, 0x8080, 0x0a98, 0x9810, 0xb10e, 0x8080, 
  22.198 +    0x3d9b, 0x0c02, 0x800a, 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 0x0a98, 
  22.199 +    0x9810, 0xb10e, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x9810, 0x010a, 
  22.200 +    0x8080, 0x8080, 0x0a98, 0x9820, 0xb10e, 0x8380, 0x0138, 0x3d9b, 0x0c02, 
  22.201 +    0x8010, 0x0a98, 0x9810, 0x010a, 0x8080, 0x9b80, 0x043d, 0x0c0c, 0x0a98, 
  22.202 +    0x9820, 0xb10e, 0x8080, 0x3d83, 0x8002, 0x9880, 0x010a, 0x8080, 0x8080, 
  22.203 +    0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x830a, 0x033d, 0x9880, 0x010a, 
  22.204 +    0x8080, 0x8080, 0x9880, 0xb10e, 0x8380, 0x0135, 0x3d83, 0x8302, 0x043d, 
  22.205 +    0x9880, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x9880, 0xa104, 0x3d9b, 
  22.206 +    0x0c02, 0x8010, 0x9880, 0x010a, 0x8880, 0x8004, 0x8080, 0x0e98, 0x80b1, 
  22.207 +    0x0498, 0x8302, 0x023d, 0x3d83, 0x8003, 0x0a98, 0x8001, 0x0698, 0x8001, 
  22.208 +    0x8080, 0x0a98, 0x8001, 0x0488, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 
  22.209 +    0x9880, 0x0206, 0x9b80, 0x033d, 0x0c0c, 0x9880, 0x010a, 0x8880, 0x8304, 
  22.210 +    0x023d, 0x3d83, 0x8004, 0x0a98, 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 
  22.211 +    0x8001, 0x0488, 0x3d9b, 0x0c02, 0x8010, 0x8880, 0x800c, 0x0698, 0x8002, 
  22.212 +    0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x0e98, 0x80b1, 0x9880, 
  22.213 +    0x0106, 0x8080, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x3d83, 0x9803, 
  22.214 +    0xb10e, 0x8080, 0x0698, 0x8002, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 
  22.215 +    0x3d83, 0x8302, 0x043d, 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 0x0e98, 
  22.216 +    0x80b1, 0x8880, 0x9b04, 0x023d, 0x100c, 0x3d83, 0x9805, 0xb10e, 0x8080, 
  22.217 +    0x0698, 0x8002, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x0698, 0x8320, 
  22.218 +    0x023d, 0x3d83, 0x9803, 0x010a, 0x269b, 0x0c06, 0x8004, 0x0698, 0x8002, 
  22.219 +    0x9880, 0xb10e, 0x0a98, 0x8010, 0x0698, 0x9b20, 0x023d, 0x0a0c, 0x9880, 
  22.220 +    0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8010, 
  22.221 +    0x0698, 0x8320, 0x023d, 0x3d83, 0x9804, 0x010a, 0x0a98, 0x8010, 0x0698, 
  22.222 +    0x8002, 0x9880, 0xb10e, 0x0a98, 0x8020, 0x0698, 0x9b20, 0x023d, 0x100c, 
  22.223 +    0x9880, 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 0x3d83, 0x9805, 0xb10e, 
  22.224 +    0x0a98, 0x8020, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 0x8080, 0x0698, 
  22.225 +    0x8002, 0x9880, 0xb10e, 0x8080, 0x0698, 0x9b20, 0x023d, 0x0a0c, 0x3d83, 
  22.226 +    0x9803, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 0xb10e, 0x8080, 0x0698, 
  22.227 +    0x8320, 0x023d, 0x3d83, 0x9804, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 
  22.228 +    0xb10e, 0x8080, 0x0698, 0x9b20, 0x023d, 0x100c, 0x3d83, 0x9805, 0x010a, 
  22.229 +    0x8080, 0x0698, 0x8002, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x0698, 
  22.230 +    0x8320, 0x023d, 0x3d83, 0x8803, 0x800c, 0x9880, 0x0206, 0x8080, 0x8080, 
  22.231 +    0x9880, 0x2006, 0x3d9b, 0x0c02, 0x800a, 0x8080, 0x9880, 0x0206, 0x8080, 
  22.232 +    0x8080, 0x9880, 0x1006, 0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 0x2006, 
  22.233 +    0x8080, 0x8080, 0x9b80, 0x013d, 0x1a0c, 0x3d9b, 0x0c02, 0x8010, 0x8080, 
  22.234 +    0x8080, 0x8380, 0x053d, 0x8080, 0x8080, 0x3d83, 0x8002, 0x9880, 0xb10e, 
  22.235 +    0x8080, 0x8080, 0x8080, 0x8080, 0x3d9b, 0x0c02, 0x830a, 0x033d, 0x9880, 
  22.236 +    0xb10e, 0x8080, 0x8080, 0x8080, 0x8380, 0x0135, 0x3d83, 0x8302, 0x043d, 
  22.237 +    0x9880, 0xb10e, 0x8080, 0x9b80, 0x033d, 0x0c0c, 0x9880, 0xb10e, 0x8080, 
  22.238 +    0x3d9b, 0x0c02, 0x830a, 0x033d, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 
  22.239 +    0x8310, 0x053d, 0x9880, 0xb10e, 0x0980, 0x0000, 0x0000, 0x0040, 0x026c, 
  22.240 +    0x3c83, 0x8301, 0x023d, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 
  22.241 +    0x023d, 0x100c, 0x8080, 0x8380, 0x0737, 0x8080, 0x8080, 0x8080, 0x8380, 
  22.242 +    0x023d, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x3483, 
  22.243 +    0x9b01, 0x023d, 0x100c, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x8080, 
  22.244 +    0x8080, 0x8380, 0x023d, 0x8080, 0x8380, 0x0737, 0x8080, 0x8080, 0x8080, 
  22.245 +    0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 
  22.246 +    0x0c0c, 0x3483, 0x8301, 0x023d, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.247 +    0x0498, 0x9ba1, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0737, 0x050c, 0x0488, 
  22.248 +    0x8080, 0x8080, 0x9880, 0x0204, 0x3d83, 0x8002, 0x8080, 0x9880, 0x0106, 
  22.249 +    0x8080, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 0x8380, 0x0737, 
  22.250 +    0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 0x9880, 
  22.251 +    0x0106, 0x8080, 0x8080, 0x379b, 0x0c07, 0x880c, 0x9b04, 0x023d, 0x100c, 
  22.252 +    0x8080, 0x8080, 0x0698, 0x9b02, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x0488, 
  22.253 +    0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 0x0106, 0x8080, 0x8080, 0x8880, 
  22.254 +    0x9b04, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x0698, 0x8002, 0x8080, 0x9b80, 
  22.255 +    0x0737, 0x0c0c, 0x0488, 0x3d83, 0x8002, 0x8080, 0x9880, 0x0106, 0x8080, 
  22.256 +    0x8080, 0x8880, 0x9b04, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0737, 0x050c, 
  22.257 +    0x8080, 0x8080, 0x8080, 0x3683, 0x8301, 0x023d, 0x8080, 0x8080, 0x8080, 
  22.258 +    0x8080, 0x8080, 0x0a98, 0x9b0f, 0x023d, 0x0a0c, 0x8080, 0x8380, 0x0737, 
  22.259 +    0x0c98, 0x800a, 0x8080, 0x8080, 0x8380, 0x023d, 0x8080, 0x8080, 0x9b80, 
  22.260 +    0x023d, 0x0a0c, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x9b80, 0x023d, 0x100c, 
  22.261 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x023d, 0x8080, 0x8380, 
  22.262 +    0x0737, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 
  22.263 +    0x8080, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x8380, 0x023d, 0x8080, 0x8080, 
  22.264 +    0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0737, 
  22.265 +    0x050c, 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x3483, 0x8301, 0x023d, 
  22.266 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x0a98, 0x9b0f, 0x023d, 0x0a0c, 
  22.267 +    0x8080, 0x8380, 0x0737, 0x0c98, 0x800a, 0x8080, 0x8080, 0x8380, 0x023d, 
  22.268 +    0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x9b80, 0x023d, 
  22.269 +    0x100c, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x8380, 
  22.270 +    0x023d, 0x8080, 0x8380, 0x0738, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 
  22.271 +    0x0a0c, 0x8080, 0x8080, 0x9b80, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0738, 
  22.272 +    0x0c0c, 0x349b, 0x0e01, 0x83b1, 0x023d, 0x8080, 0x8080, 0x0a98, 0x8001, 
  22.273 +    0x8080, 0x8080, 0x0e98, 0x83b1, 0x023d, 0x8080, 0x9b80, 0x0738, 0x050c, 
  22.274 +    0x0a98, 0x8001, 0x8080, 0x8080, 0x0009, 0x0000, 0x4000, 0xde00, 0x8302, 
  22.275 +    0x013c, 0x3d83, 0x8302, 0x033d, 0x259b, 0x0c06, 0x9804, 0x010a, 0x8080, 
  22.276 +    0x8080, 0x0a98, 0x9810, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x8010, 0x0a98, 
  22.277 +    0x9810, 0x010a, 0x8080, 0x9b80, 0x033d, 0x0c0c, 0x0a98, 0x9810, 0xb10e, 
  22.278 +    0x8080, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 
  22.279 +    0x0a98, 0x9820, 0xb10e, 0x8380, 0x0134, 0x3d9b, 0x0c02, 0x830a, 0x033d, 
  22.280 +    0x0a98, 0x9810, 0x010a, 0x8080, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 0x0c0c, 
  22.281 +    0x0a98, 0x9820, 0xb10e, 0x8080, 0x3d83, 0x8002, 0x9880, 0x010a, 0x8080, 
  22.282 +    0x9b80, 0x033d, 0x0c0c, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x830a, 
  22.283 +    0x043d, 0x9880, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x8380, 0x0134, 
  22.284 +    0x3d83, 0x8302, 0x053d, 0x9880, 0x010a, 0x8080, 0x9b80, 0x043d, 0x0c0c, 
  22.285 +    0x9880, 0xb10e, 0x9880, 0xa104, 0x3d9b, 0x0c02, 0x8010, 0x9880, 0x010a, 
  22.286 +    0x8880, 0x8004, 0x8080, 0x0e98, 0x80b1, 0x0498, 0x8302, 0x023d, 0x3d83, 
  22.287 +    0x8003, 0x0a98, 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 0x8001, 0x0488, 
  22.288 +    0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 0x9880, 0x0206, 0x9b80, 0x033d, 
  22.289 +    0x0c0c, 0x9880, 0x010a, 0x8880, 0x8304, 0x023d, 0x3d83, 0x8004, 0x0a98, 
  22.290 +    0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 0x8001, 0x0488, 0x3d9b, 0x0c02, 
  22.291 +    0x8010, 0x8880, 0x800c, 0x0698, 0x9b02, 0x023d, 0x0a0c, 0x3d83, 0x8005, 
  22.292 +    0x8080, 0x0488, 0x3d83, 0x8002, 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 
  22.293 +    0x8080, 0x8880, 0x9b04, 0x023d, 0x100c, 0x3d83, 0x9803, 0xb10e, 0x8080, 
  22.294 +    0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8302, 0x043d, 0x0e98, 
  22.295 +    0x80b1, 0x9880, 0x0106, 0x9880, 0x0f0a, 0x0e98, 0x80b1, 0x8880, 0x9b04, 
  22.296 +    0x023d, 0x0a0c, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8002, 0x3a9b, 0x0c04, 
  22.297 +    0x980a, 0xb10e, 0x8080, 0x3683, 0x8301, 0x023d, 0x3d83, 0x9803, 0x010a, 
  22.298 +    0x8080, 0x8080, 0x9880, 0xb10e, 0x8080, 0x0a98, 0x9b0f, 0x023d, 0x100c, 
  22.299 +    0x9880, 0x010a, 0x8080, 0x0c98, 0x800a, 0x9880, 0xb10e, 0x8080, 0x8380, 
  22.300 +    0x023d, 0x3d83, 0x9804, 0x010a, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x9880, 
  22.301 +    0xb10e, 0x8080, 0x9b80, 0x023d, 0x100c, 0x3d83, 0x9804, 0x010a, 0x8080, 
  22.302 +    0x8080, 0x3d83, 0x9805, 0xb10e, 0x8080, 0x8380, 0x023d, 0x9880, 0x010a, 
  22.303 +    0x8080, 0x8080, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x9b80, 0x023d, 
  22.304 +    0x0a0c, 0x3d83, 0x9803, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x8080, 
  22.305 +    0x8380, 0x023d, 0x3d83, 0x9804, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 
  22.306 +    0x8080, 0x9b80, 0x023d, 0x190c, 0x3d83, 0x9805, 0x010a, 0x8080, 0x9b80, 
  22.307 +    0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x3483, 0x8301, 
  22.308 +    0x023d, 0x3d83, 0x8803, 0x800c, 0x8080, 0x8080, 0x8080, 0x9880, 0x0f0a, 
  22.309 +    0x3d9b, 0x0c02, 0x800a, 0x8080, 0x9880, 0x0a0c, 0x9b80, 0x033d, 0x0c0c, 
  22.310 +    0x8080, 0x8080, 0x3d83, 0x8302, 0x043d, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.311 +    0x8080, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x8080, 0x8380, 0x053d, 0x8080, 
  22.312 +    0x8080, 0x3d83, 0x8002, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 
  22.313 +    0x053d, 0x0f0c, 0x8080, 0x8080, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x8080, 
  22.314 +    0x8080, 0x8080, 0x8080, 0x9b80, 0x053d, 0x050c, 0x8080, 0x8080, 0x3d9b, 
  22.315 +    0x0c02, 0x800a, 0x8080, 0x8080, 0x8080, 0x8080, 0x0980, 0x0000, 0x0000, 
  22.316 +    0x0040, 0x02f7, 0x3283, 0x8301, 0x023d, 0x3183, 0x8308, 0x092b, 0x8080, 
  22.317 +    0x3e9b, 0x0301, 0x8008, 0x8080, 0x8080, 0x0388, 0x3d9b, 0x0c02, 0x8010, 
  22.318 +    0x8080, 0x3783, 0x8807, 0x8003, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0388, 
  22.319 +    0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8003, 0x8080, 0x9b80, 0x0737, 
  22.320 +    0x0c0c, 0x0388, 0x3d9b, 0x0c02, 0x8310, 0x033d, 0x8080, 0x9880, 0x010a, 
  22.321 +    0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x8080, 0x8880, 0x8303, 0x023d, 
  22.322 +    0x8080, 0x8380, 0x0737, 0x0a98, 0x8001, 0x3d9b, 0x0c03, 0x800c, 0x8080, 
  22.323 +    0x0388, 0x3d9b, 0x0c02, 0x830a, 0x043d, 0x8080, 0x9880, 0x010a, 0x8080, 
  22.324 +    0x8080, 0x379b, 0x0c07, 0x880c, 0x8303, 0x023d, 0x3183, 0x8008, 0x8080, 
  22.325 +    0x0598, 0x8001, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 
  22.326 +    0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 0x010a, 0x8080, 0x8080, 0x9880, 
  22.327 +    0x1005, 0x3d83, 0x8302, 0x0831, 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 
  22.328 +    0x9880, 0x1005, 0x3d9b, 0x0c02, 0x800a, 0x8080, 0x3783, 0x9807, 0x0105, 
  22.329 +    0x9b80, 0x0831, 0x0c0c, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8302, 0x043d, 
  22.330 +    0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 
  22.331 +    0x3d9b, 0x0c02, 0x8010, 0x8080, 0x9880, 0x0105, 0x3d9b, 0x0c02, 0x830a, 
  22.332 +    0x053d, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 
  22.333 +    0x0105, 0x8080, 0x8080, 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x830a, 0x0831, 
  22.334 +    0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 
  22.335 +    0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 0x0105, 0x9880, 0x0f0a, 0x8080, 
  22.336 +    0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 
  22.337 +    0x0105, 0x9b80, 0x043a, 0x1c0c, 0x8080, 0x9b80, 0x0138, 0xa404, 0x3d83, 
  22.338 +    0x8302, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d9b, 
  22.339 +    0x0c02, 0x800a, 0x8080, 0x3783, 0x8807, 0x8004, 0x8080, 0x8080, 0x0488, 
  22.340 +    0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 
  22.341 +    0x9b80, 0x0737, 0x0c0c, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 
  22.342 +    0x8880, 0x8004, 0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 
  22.343 +    0x3783, 0x8807, 0x8004, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 0x3d9b, 
  22.344 +    0x0c02, 0x830a, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x9b80, 0x0737, 
  22.345 +    0x0c0c, 0x0488, 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8004, 0x8080, 
  22.346 +    0x8080, 0x0488, 0x3d9b, 0x0c02, 0x9b10, 0x053d, 0x0f0a, 0x8080, 0x379b, 
  22.347 +    0x0c07, 0x8805, 0x9b04, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x800c, 0x8080, 
  22.348 +    0x3b83, 0x8301, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.349 +    0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8380, 0x0737, 0x8080, 0x319b, 0x0c08, 
  22.350 +    0x800c, 0x8080, 0x0498, 0x83a2, 0x023d, 0x3d83, 0x8004, 0x8080, 0x0488, 
  22.351 +    0x8080, 0x8080, 0x379b, 0x0c07, 0x880c, 0x9b04, 0x023d, 0x100c, 0x8080, 
  22.352 +    0x8080, 0x0488, 0x3d9b, 0x0c02, 0x830a, 0x053d, 0x8080, 0x9880, 0x0106, 
  22.353 +    0x3d83, 0x8002, 0x8080, 0x3883, 0x8807, 0x8004, 0x8080, 0x8080, 0x0698, 
  22.354 +    0x9b01, 0x023d, 0x0a0c, 0x3183, 0x8008, 0x8080, 0x0488, 0x3d9b, 0x0c02, 
  22.355 +    0x8010, 0x8080, 0x389b, 0x0c07, 0x980c, 0x0106, 0x3d83, 0x9b02, 0x043d, 
  22.356 +    0x930e, 0x8080, 0x8880, 0x8004, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0698, 
  22.357 +    0x8301, 0x023d, 0x3a83, 0x8004, 0x9b80, 0x0738, 0x050c, 0x0488, 0x9b80, 
  22.358 +    0x043d, 0x200c, 0x8080, 0x0980, 0x0000, 0x0000, 0x0040, 0x02ff, 0x3283, 
  22.359 +    0x8301, 0x023d, 0x3183, 0x8308, 0x092b, 0x8080, 0x3e9b, 0x0301, 0x8008, 
  22.360 +    0x8080, 0x8080, 0x0388, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x3783, 0x8807, 
  22.361 +    0x8003, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0388, 0x3d83, 0x8302, 0x043d, 
  22.362 +    0x8080, 0x8880, 0x8003, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x0388, 0x3d9b, 
  22.363 +    0x0c02, 0x8310, 0x033d, 0x8080, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x9b0a, 
  22.364 +    0x043d, 0x0c0c, 0x8080, 0x8880, 0x8303, 0x023d, 0x8080, 0x8380, 0x0737, 
  22.365 +    0x0a98, 0x8001, 0x3d9b, 0x0c03, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 
  22.366 +    0x830a, 0x043d, 0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 
  22.367 +    0x880c, 0x8303, 0x023d, 0x319b, 0x0e08, 0x8093, 0x8080, 0x0598, 0x8001, 
  22.368 +    0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 0x8010, 0x8080, 
  22.369 +    0x379b, 0x0c07, 0x9805, 0x010a, 0x8080, 0x8080, 0x9880, 0x1005, 0x3d83, 
  22.370 +    0x8302, 0x0831, 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 0x9880, 0x1005, 
  22.371 +    0x3d9b, 0x0c02, 0x800a, 0x8080, 0x3783, 0x9807, 0x0105, 0x9b80, 0x0831, 
  22.372 +    0x0c0c, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 
  22.373 +    0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 0x3d9b, 0x0c02, 
  22.374 +    0x8010, 0x8080, 0x9880, 0x0105, 0x3d9b, 0x0c02, 0x830a, 0x053d, 0x8080, 
  22.375 +    0x9880, 0x1005, 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 0x0105, 0x8080, 
  22.376 +    0x8080, 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x830a, 0x0831, 0x8080, 0x9880, 
  22.377 +    0x0105, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 0x3d83, 0x8302, 
  22.378 +    0x043d, 0x8080, 0x9880, 0x0105, 0x9880, 0x0f0a, 0x8080, 0x9880, 0x1005, 
  22.379 +    0x3d9b, 0x0c02, 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 0x0105, 0x9b80, 
  22.380 +    0x043a, 0x1c0c, 0x8080, 0x9b80, 0x0138, 0xa404, 0x3d83, 0x8302, 0x0831, 
  22.381 +    0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x800a, 
  22.382 +    0x8080, 0x3783, 0x8807, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8302, 
  22.383 +    0x043d, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 0x9b80, 0x0737, 
  22.384 +    0x0c0c, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 0x8880, 0x8004, 
  22.385 +    0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 0x3783, 0x8807, 
  22.386 +    0x8004, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x830a, 
  22.387 +    0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x0488, 
  22.388 +    0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 
  22.389 +    0x3d9b, 0x0c02, 0x8310, 0x053d, 0x8080, 0x379b, 0x0c07, 0x8805, 0x9b04, 
  22.390 +    0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x3b83, 0x8301, 0x023d, 
  22.391 +    0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 
  22.392 +    0x8080, 0x8380, 0x0737, 0x8080, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0498, 
  22.393 +    0x83a2, 0x023d, 0x3d83, 0x8004, 0x8080, 0x0488, 0x8080, 0x8080, 0x379b, 
  22.394 +    0x0c07, 0x880c, 0x9b04, 0x023d, 0x100c, 0x8080, 0x8080, 0x0488, 0x3d9b, 
  22.395 +    0x0c02, 0x830a, 0x053d, 0x8080, 0x9880, 0x0106, 0x3d83, 0x8002, 0x8080, 
  22.396 +    0x3883, 0x8807, 0x8004, 0x8080, 0x8080, 0x0698, 0x9b01, 0x023d, 0x0a0c, 
  22.397 +    0x3183, 0x8008, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x389b, 
  22.398 +    0x0c07, 0x980c, 0x0106, 0x3d83, 0x9b02, 0x043d, 0x930e, 0x0298, 0x8005, 
  22.399 +    0x8880, 0x8004, 0x319b, 0x0c08, 0x980c, 0x0502, 0x8080, 0x0698, 0x8301, 
  22.400 +    0x023d, 0x3183, 0x9808, 0x0502, 0x9b80, 0x0738, 0x050c, 0x0488, 0x9b80, 
  22.401 +    0x043d, 0x200c, 0x0298, 0x8005, 0x0980, 0x0000, 0x0000, 0x0040, 0x03f2, 
  22.402 +    0x3283, 0x8301, 0x023d, 0x3183, 0x9b08, 0x092b, 0x0c0a, 0x1f9b, 0x0409, 
  22.403 +    0x80a4, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x8004, 0x9b80, 0x023d, 0x100c, 
  22.404 +    0x9a80, 0x0a09, 0x880e, 0x8304, 0x0737, 0x8080, 0x319b, 0x0c08, 0x9a0c, 
  22.405 +    0x0a09, 0x880f, 0x8004, 0x4a83, 0x8301, 0x023d, 0x3d83, 0x9a04, 0x0a09, 
  22.406 +    0x880c, 0x8004, 0x8080, 0x0c88, 0x099a, 0x0d0a, 0x0488, 0x379b, 0x0c07, 
  22.407 +    0x830c, 0x0132, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x8080, 
  22.408 +    0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x9880, 
  22.409 +    0xa204, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x3783, 0x8807, 0x8004, 
  22.410 +    0x9a80, 0x0a09, 0x880d, 0x8004, 0x0488, 0x3d9b, 0x0c02, 0x830a, 0x0831, 
  22.411 +    0x099a, 0x0e0a, 0x0488, 0x8880, 0x8004, 0x9a80, 0x0a09, 0x880f, 0x9b04, 
  22.412 +    0x0737, 0x0c0c, 0x3e83, 0x8301, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 
  22.413 +    0x8004, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880d, 0x8004, 0x9b80, 
  22.414 +    0x023d, 0x100c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8304, 0x0737, 0x8080, 
  22.415 +    0x9a80, 0x0a09, 0x880f, 0x8004, 0x4a83, 0x8301, 0x023d, 0x3183, 0x9a08, 
  22.416 +    0x0a09, 0x880c, 0x8004, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880d, 
  22.417 +    0x9b04, 0x0737, 0x0c0c, 0x4183, 0x9b01, 0x023d, 0x0a0c, 0x9a80, 0x0a09, 
  22.418 +    0x880e, 0x8304, 0x073a, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880f, 
  22.419 +    0x8004, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x9b04, 0x0738, 
  22.420 +    0xc20e, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x9b04, 0x0738, 0x0c0c, 0x4b83, 
  22.421 +    0x9b01, 0x023d, 0x100c, 0x9a80, 0x0a09, 0x880e, 0x8004, 0x9b80, 0x023d, 
  22.422 +    0x0a0c, 0x3d9b, 0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x3f83, 0x8301, 
  22.423 +    0x023d, 0x9a80, 0x0a09, 0x880c, 0x8304, 0x0738, 0x8080, 0x9a80, 0x0a09, 
  22.424 +    0x880d, 0x8004, 0x9b80, 0x023d, 0x0a0c, 0x3183, 0x9a08, 0x0a09, 0x880e, 
  22.425 +    0x8004, 0x8080, 0x9a80, 0x0a09, 0x880f, 0x9b04, 0x0738, 0x0c0c, 0x489b, 
  22.426 +    0x0401, 0x83a2, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x0488, 
  22.427 +    0x9b80, 0x0831, 0x0c0c, 0x099a, 0x0d0a, 0x0488, 0x8880, 0x9b04, 0x023d, 
  22.428 +    0x100c, 0x9a80, 0x0a09, 0x880e, 0x8304, 0x0735, 0x0298, 0x8010, 0x3d9b, 
  22.429 +    0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x3283, 0x8301, 0x023d, 0x3183, 
  22.430 +    0x9a08, 0x0a09, 0x880c, 0x9b04, 0x0735, 0x0c0c, 0x8080, 0x9a80, 0x0a09, 
  22.431 +    0x880d, 0x8004, 0x9b80, 0x023d, 0x0a0c, 0x9a80, 0x0a09, 0x880e, 0x8304, 
  22.432 +    0x0737, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x4a83, 
  22.433 +    0x8301, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x9b80, 0x023d, 
  22.434 +    0x0a0c, 0x9a80, 0x0a09, 0x880d, 0x9b04, 0x0737, 0x0c0c, 0x3283, 0x9b01, 
  22.435 +    0x023d, 0x100c, 0x9a80, 0x0a09, 0x880e, 0x8004, 0x8080, 0x3d9b, 0x0c04, 
  22.436 +    0x9a0c, 0x0a09, 0x880f, 0x8004, 0x0498, 0x83a2, 0x023d, 0x9a80, 0x0a09, 
  22.437 +    0x880c, 0x8304, 0x0737, 0x0488, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x9880, 
  22.438 +    0x0404, 0x3d9b, 0x0c02, 0x830a, 0x0831, 0x099a, 0x0e0a, 0x0488, 0x8880, 
  22.439 +    0x8004, 0x9a80, 0x0a09, 0x880f, 0x9b04, 0x0737, 0x0c0c, 0x3e83, 0x8301, 
  22.440 +    0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x8080, 0x319b, 0x0c08, 
  22.441 +    0x9a0c, 0x0a09, 0x880d, 0x8004, 0x9b80, 0x023d, 0x100c, 0x3183, 0x9a08, 
  22.442 +    0x0a09, 0x880e, 0x9b04, 0x0737, 0x0109, 0x9b80, 0x023d, 0x0a0c, 0x3d9b, 
  22.443 +    0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x4a83, 0x8301, 0x023d, 0x3183, 
  22.444 +    0x9a08, 0x0a09, 0x880c, 0x8004, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 
  22.445 +    0x880d, 0x9b04, 0x0737, 0x0c0c, 0x4583, 0x9b01, 0x023d, 0x0a0c, 0x9a80, 
  22.446 +    0x0a09, 0x880e, 0x8304, 0x073e, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 
  22.447 +    0x880f, 0x8004, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x9b04, 
  22.448 +    0x073e, 0x0c0c, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x9b04, 0x0738, 0x0c0c, 
  22.449 +    0x5083, 0x9b01, 0x023d, 0x100c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8004, 
  22.450 +    0x9b80, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x9b04, 
  22.451 +    0x0738, 0x0c0c, 0x4483, 0x8301, 0x023d, 0x3183, 0x9a08, 0x0a09, 0x880c, 
  22.452 +    0x8304, 0x073d, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x8004, 0x9b80, 0x023d, 
  22.453 +    0x0a0c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8004, 0x9b80, 0x023d, 0x100c, 
  22.454 +    0x9a80, 0x0a09, 0x880f, 0x9b04, 0x073d, 0x0c0c, 0x489b, 0x0401, 0x83a4, 
  22.455 +    0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x0488, 0x8080, 0x099a, 
  22.456 +    0x0d0a, 0x0488, 0x8880, 0x8304, 0x023d, 0x3183, 0x9a08, 0x0a09, 0x880e, 
  22.457 +    0x8304, 0x0738, 0x0298, 0x8010, 0x3d9b, 0x0c04, 0x9a0c, 0x0a09, 0x880f, 
  22.458 +    0x8004, 0x0009, 0x0000, 0x4000, 0xcf00, 0x8302, 0x013e, 0x3d83, 0x8302, 
  22.459 +    0x033a, 0x2b83, 0x9b09, 0x062c, 0x100c, 0x9880, 0x300c, 0x8080, 0x099a, 
  22.460 +    0x0a0a, 0x0a98, 0x8010, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x980e, 0x100a, 
  22.461 +    0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x0a98, 0x8010, 0x0c88, 0x3d83, 
  22.462 +    0x8002, 0x099a, 0x0c0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980d, 
  22.463 +    0x100a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 
  22.464 +    0x0a09, 0x980a, 0x100a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x0a98, 
  22.465 +    0x8010, 0x8080, 0x9a80, 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 
  22.466 +    0x8080, 0x8080, 0x9a80, 0x0a09, 0x800f, 0x8080, 0x3d83, 0x8002, 0x099a, 
  22.467 +    0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 0x8380, 0x013c, 0x8380, 
  22.468 +    0x053d, 0x099a, 0x0e0a, 0x8080, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x800a, 
  22.469 +    0x8380, 0x013e, 0x3d83, 0x8302, 0x033a, 0x0982, 0x8080, 0x0c98, 0x8030, 
  22.470 +    0x9a80, 0x0a09, 0x800a, 0x9880, 0x200c, 0x8080, 0x099a, 0x0e0a, 0x8080, 
  22.471 +    0x0c98, 0x8010, 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 
  22.472 +    0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 
  22.473 +    0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 
  22.474 +    0x3d83, 0x8204, 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 
  22.475 +    0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x3c83, 
  22.476 +    0x8301, 0x023d, 0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 
  22.477 +    0x0d0a, 0x8080, 0x0c98, 0x9b10, 0x023d, 0x200c, 0x9a80, 0x0a09, 0x800e, 
  22.478 +    0x8880, 0x800c, 0x9a80, 0x0a09, 0x800a, 0x8380, 0x013e, 0x3d83, 0x8302, 
  22.479 +    0x033a, 0x0982, 0x8080, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x800a, 0x9080, 
  22.480 +    0x8020, 0x9a80, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 
  22.481 +    0x8080, 0x0c88, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 
  22.482 +    0x0a09, 0x800d, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 
  22.483 +    0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 
  22.484 +    0x9a80, 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 
  22.485 +    0x9a80, 0x0a09, 0x800f, 0x8080, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 
  22.486 +    0x8080, 0x9a80, 0x0a09, 0x800d, 0x8380, 0x013c, 0x8380, 0x053d, 0x0982, 
  22.487 +    0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800a, 0x8380, 0x013e, 0x3d83, 
  22.488 +    0x8302, 0x033a, 0x0982, 0x8080, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x800a, 
  22.489 +    0x9880, 0x200c, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 
  22.490 +    0x0f0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x9a80, 0x0a09, 0x800c, 0x9880, 
  22.491 +    0x200c, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x0c98, 0x8010, 0x9a80, 0x0a09, 
  22.492 +    0x800e, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 
  22.493 +    0x043d, 0x0982, 0x0a98, 0x8001, 0x8080, 0x9a80, 0x0a09, 0x980a, 0x010a, 
  22.494 +    0x8380, 0x013c, 0x8380, 0x053d, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c98, 
  22.495 +    0x8020, 0x9a80, 0x0a09, 0x980f, 0x010a, 0x9880, 0x100c, 0x3d83, 0x8002, 
  22.496 +    0x099a, 0x0c0a, 0x0a98, 0x8001, 0x0c88, 0x8080, 0x099a, 0x0d0a, 0x0a98, 
  22.497 +    0x8001, 0x3c83, 0x8001, 0x9a80, 0x0a09, 0x980e, 0x010a, 0x9880, 0x100c, 
  22.498 +    0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x0009, 0x0000, 0x4000, 0xf100, 
  22.499 +    0x8302, 0x0132, 0x3d83, 0x8302, 0x0831, 0x2b83, 0x8009, 0x9b80, 0x013e, 
  22.500 +    0x0803, 0x8080, 0x8080, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x8010, 0x8080, 
  22.501 +    0x3783, 0x8807, 0x8003, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0388, 0x3d83, 
  22.502 +    0x8302, 0x043d, 0x8080, 0x8880, 0x8003, 0x8080, 0x9b80, 0x0737, 0x0c0c, 
  22.503 +    0x0388, 0x3d9b, 0x0c02, 0x8310, 0x033d, 0x8080, 0x9880, 0x010a, 0x3d9b, 
  22.504 +    0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x8080, 0x8880, 0x8303, 0x023d, 0x8080, 
  22.505 +    0x8380, 0x0737, 0x0a98, 0x8001, 0x3d9b, 0x0c03, 0x800c, 0x8080, 0x0388, 
  22.506 +    0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 
  22.507 +    0x379b, 0x0c07, 0x880c, 0x8303, 0x023d, 0x319b, 0x0e08, 0x8093, 0x8080, 
  22.508 +    0x0598, 0x8001, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 
  22.509 +    0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 0x010a, 0x8080, 0x8080, 0x9880, 
  22.510 +    0x1005, 0x3d83, 0x8302, 0x0831, 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 
  22.511 +    0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x3783, 0x9807, 0x0105, 
  22.512 +    0x9b80, 0x0831, 0x0c0c, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8302, 0x043d, 
  22.513 +    0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 
  22.514 +    0x3d9b, 0x0c02, 0x8010, 0x8080, 0x9880, 0x0105, 0x3d9b, 0x0c02, 0x830a, 
  22.515 +    0x053d, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 
  22.516 +    0x0105, 0x8080, 0x8080, 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8310, 0x0831, 
  22.517 +    0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 
  22.518 +    0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 0x0105, 0x9880, 0x0f0a, 0x8080, 
  22.519 +    0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 
  22.520 +    0x0105, 0x9b80, 0x043a, 0x1c0c, 0x8080, 0x9b80, 0x0138, 0xa404, 0x3d83, 
  22.521 +    0x8302, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d9b, 
  22.522 +    0x0c02, 0x8010, 0x8080, 0x3783, 0x8807, 0x8004, 0x8080, 0x8080, 0x0488, 
  22.523 +    0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 
  22.524 +    0x9b80, 0x0737, 0x0c0c, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 
  22.525 +    0x8880, 0x8004, 0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 
  22.526 +    0x3783, 0x8807, 0x8004, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 0x3d9b, 
  22.527 +    0x0c02, 0x8310, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x9b80, 0x0737, 
  22.528 +    0x0c0c, 0x0488, 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8004, 0x8080, 
  22.529 +    0x8080, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x053d, 0x8080, 0x379b, 0x0c07, 
  22.530 +    0x8805, 0x9b04, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x3c83, 
  22.531 +    0x8301, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 
  22.532 +    0x030c, 0x0a98, 0x9b03, 0x023d, 0x100c, 0x9880, 0x030a, 0x8080, 0x0a98, 
  22.533 +    0x8003, 0x319b, 0x0c08, 0x980c, 0x030a, 0x8080, 0x0498, 0x83a2, 0x023d, 
  22.534 +    0x9880, 0x030a, 0x9b80, 0x0737, 0x010c, 0x0488, 0x8080, 0x0a98, 0x8003, 
  22.535 +    0x0c98, 0x980c, 0x050a, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 0x300c, 0x0a98, 
  22.536 +    0x8003, 0x8880, 0x8004, 0x9880, 0x010a, 0x8080, 0x0698, 0x8301, 0x023d, 
  22.537 +    0x9880, 0x010a, 0x8080, 0x0488, 0x9b80, 0x043d, 0x200c, 0x8080, 0x9880, 
  22.538 +    0x0106, 0x8080, 0x8080, 0x8880, 0x8004, 0x8080, 0x9880, 0x0c0c, 0x8380, 
  22.539 +    0x023d, 0x3d9b, 0x0c04, 0x8010, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.540 +    0x8080, 0x9880, 0x050c, 0x8080, 0x3d9b, 0x0c04, 0x8003, 0x8080, 0x0009, 
  22.541 +    0x0000, 0x4000, 0xf000, 0x8303, 0x0132, 0x3d83, 0x8302, 0x0831, 0x2b9b, 
  22.542 +    0x0a09, 0x9b0c, 0x091f, 0xa404, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0488, 
  22.543 +    0x8080, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x3783, 0x8007, 
  22.544 +    0x9b80, 0x0831, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8380, 0x014a, 0x3d83, 
  22.545 +    0x8302, 0x043d, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x8880, 0x9a0c, 0x0a09, 
  22.546 +    0x880d, 0x9b04, 0x0737, 0x0c0c, 0x3283, 0x9b01, 0x023d, 0x100c, 0x9a80, 
  22.547 +    0x0a09, 0x880e, 0x8004, 0x9b80, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x9a0c, 
  22.548 +    0x0a09, 0x880f, 0x8004, 0x0498, 0x83a2, 0x023d, 0x9a80, 0x0a09, 0x880c, 
  22.549 +    0x8304, 0x0737, 0x0488, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x8880, 0x9b04, 
  22.550 +    0x023d, 0x100c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8004, 0x0488, 0x8080, 
  22.551 +    0x099a, 0x0f0a, 0x0488, 0x379b, 0x0c07, 0x830c, 0x013e, 0x3d83, 0x8302, 
  22.552 +    0x043d, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x9b80, 0x0831, 0x0c0c, 0x099a, 
  22.553 +    0x0d0a, 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x8310, 0x0831, 0x099a, 0x0e0a, 
  22.554 +    0x0488, 0x3783, 0x8007, 0x8080, 0x099a, 0x0f0a, 0x0488, 0x8380, 0x014a, 
  22.555 +    0x3d83, 0x8302, 0x0831, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x9b80, 0x0831, 
  22.556 +    0x0c0c, 0x099a, 0x0d0a, 0x0488, 0x379b, 0x0c07, 0x830c, 0x0141, 0x3d9b, 
  22.557 +    0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x3a83, 0x8007, 0x9b80, 0x0831, 
  22.558 +    0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8080, 0x3d83, 0x8302, 0x043d, 0x099a, 
  22.559 +    0x0c0a, 0x0488, 0x389b, 0x0e07, 0x80c2, 0x8080, 0x099a, 0x0d0a, 0x0488, 
  22.560 +    0x389b, 0x0c07, 0x830c, 0x014b, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 
  22.561 +    0x0488, 0x8080, 0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 
  22.562 +    0x0488, 0x8380, 0x013f, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x3883, 
  22.563 +    0x8007, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x8310, 
  22.564 +    0x0831, 0x099a, 0x0e0a, 0x0488, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x0488, 
  22.565 +    0x389b, 0x0c07, 0x9b0c, 0x0148, 0xa204, 0x3d83, 0x8302, 0x043d, 0x099a, 
  22.566 +    0x0c0a, 0x0488, 0x8880, 0x8004, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880d, 
  22.567 +    0x8004, 0x0488, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x3583, 
  22.568 +    0x9807, 0x1002, 0x9b80, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8380, 
  22.569 +    0x0132, 0x3d83, 0x8302, 0x0831, 0x099a, 0x0c0a, 0x0488, 0x359b, 0x0c07, 
  22.570 +    0x800c, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x8010, 
  22.571 +    0x099a, 0x0e0a, 0x0488, 0x3783, 0x8007, 0x9b80, 0x0831, 0x0c0c, 0x099a, 
  22.572 +    0x0f0a, 0x0488, 0x8380, 0x014a, 0x3d83, 0x8302, 0x043d, 0x099a, 0x0c0a, 
  22.573 +    0x0488, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x099a, 0x0d0a, 0x0488, 0x379b, 
  22.574 +    0x0c07, 0x830c, 0x0132, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 
  22.575 +    0x8080, 0x9b80, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x9880, 0xa204, 
  22.576 +    0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x3783, 0x8807, 0x8004, 0x9a80, 
  22.577 +    0x0a09, 0x880d, 0x8004, 0x0498, 0x9b04, 0x023d, 0x100c, 0x3183, 0x9a08, 
  22.578 +    0x0a09, 0x880e, 0x8004, 0x0488, 0x8080, 0x099a, 0x0f0a, 0x0488, 0x379b, 
  22.579 +    0x0c07, 0x830c, 0x013e, 0x3d83, 0x8302, 0x043d, 0x099a, 0x0c0a, 0x0488, 
  22.580 +    0x8080, 0x9b80, 0x0831, 0x0c0c, 0x099a, 0x0d0a, 0x0488, 0x8080, 0x3d9b, 
  22.581 +    0x0c02, 0x8310, 0x0831, 0x099a, 0x0e0a, 0x0488, 0x379b, 0x0907, 0x8001, 
  22.582 +    0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8380, 
  22.583 +    0x014a, 0x3d83, 0x8302, 0x0831, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x8080, 
  22.584 +    0x099a, 0x0d0a, 0x0488, 0x379b, 0x0c07, 0x9b0c, 0x0139, 0x010a, 0x3d9b, 
  22.585 +    0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x8080, 0x9b80, 0x0831, 0x0c0c, 
  22.586 +    0x099a, 0x0f0a, 0x0488, 0x9880, 0x010a, 0x3d83, 0x8002, 0x099a, 0x0c0a, 
  22.587 +    0x0488, 0x379b, 0x0c07, 0x9807, 0x010a, 0x8080, 0x099a, 0x0d0a, 0x0488, 
  22.588 +    0x0c98, 0x980c, 0x010a, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 
  22.589 +    0x9880, 0x010a, 0x8080, 0x099a, 0x0f0a, 0x0488, 0x379b, 0x0c07, 0x9804, 
  22.590 +    0x010a, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x9880, 0x010a, 0x8080, 
  22.591 +    0x099a, 0x0d0a, 0x0488, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x8010, 0x099a, 
  22.592 +    0x0e0a, 0x0488, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x800a, 0x099a, 0x0f0a, 
  22.593 +    0x0488, 0x379b, 0x0c07, 0x9802, 0x010a, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 
  22.594 +    0x100c, 0x099a, 0x0c0a, 0x0488, 0x9880, 0x010a, 0x9b80, 0x043d, 0x200c, 
  22.595 +    0x099a, 0x0d0a, 0x0488, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 
  22.596 +    0x300c, 0x099a, 0x0e0a, 0x0488, 0x9880, 0x010a, 0x9b80, 0x043d, 0x400c, 
  22.597 +    0x099a, 0x0f0a, 0x0488, 0x0980, 0x0000, 0x0000, 0x0040, 0x02cb, 0x3e83, 
  22.598 +    0x8301, 0x023d, 0x3a83, 0x8303, 0x092b, 0x2a9b, 0x0c06, 0x8010, 0x0c98, 
  22.599 +    0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 0x8080, 0x099a, 
  22.600 +    0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980f, 0x100a, 
  22.601 +    0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 0x8080, 0x8080, 
  22.602 +    0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980e, 0x100a, 
  22.603 +    0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 0x023d, 0x3d83, 
  22.604 +    0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 
  22.605 +    0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 
  22.606 +    0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 
  22.607 +    0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 
  22.608 +    0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 
  22.609 +    0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 
  22.610 +    0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x0c88, 
  22.611 +    0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 
  22.612 +    0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 
  22.613 +    0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.614 +    0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.615 +    0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 0x8080, 0x0c98, 
  22.616 +    0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 0x0c02, 0x8020, 
  22.617 +    0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 
  22.618 +    0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 0x099a, 
  22.619 +    0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c98, 0x8010, 
  22.620 +    0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x800c, 
  22.621 +    0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 
  22.622 +    0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 
  22.623 +    0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.624 +    0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 0x9a80, 
  22.625 +    0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 0x8001, 
  22.626 +    0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 0x0a0a, 0x8080, 
  22.627 +    0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 
  22.628 +    0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800e, 0x8880, 
  22.629 +    0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 0x3d83, 0x8002, 0x099a, 
  22.630 +    0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 
  22.631 +    0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 
  22.632 +    0x8380, 0x023d, 0x3d83, 0x8204, 0x9809, 0x010a, 0x8080, 0x8080, 0x099a, 
  22.633 +    0x0a0a, 0x0a98, 0x8001, 0x4183, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x980e, 
  22.634 +    0x010a, 0x9880, 0x200c, 0x8080, 0x099a, 0x0f0a, 0x0a98, 0x8001, 0x0c98, 
  22.635 +    0x8010, 0x9a80, 0x0a09, 0x980c, 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 
  22.636 +    0x980d, 0x010a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c98, 
  22.637 +    0x8010, 0x9a80, 0x0a09, 0x980a, 0x010a, 0x0980, 0x0000, 0x0000, 0x0040, 
  22.638 +    0x02d7, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8303, 0x092b, 0x2c9b, 0x0c06, 
  22.639 +    0x8010, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 
  22.640 +    0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 
  22.641 +    0x980f, 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 
  22.642 +    0x8080, 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 
  22.643 +    0x980e, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 
  22.644 +    0x023d, 0x3d83, 0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 
  22.645 +    0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 
  22.646 +    0x8080, 0x8380, 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 
  22.647 +    0x0d0a, 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 
  22.648 +    0x100c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 
  22.649 +    0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 
  22.650 +    0x8020, 0x9a80, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 
  22.651 +    0x8080, 0x0c88, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 
  22.652 +    0x0a09, 0x800d, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 
  22.653 +    0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 
  22.654 +    0x9a80, 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 
  22.655 +    0x9a80, 0x0a09, 0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 
  22.656 +    0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 
  22.657 +    0x0c02, 0x8020, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 
  22.658 +    0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 
  22.659 +    0x8080, 0x099a, 0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 
  22.660 +    0x0c98, 0x8010, 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 
  22.661 +    0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 
  22.662 +    0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 
  22.663 +    0x3d83, 0x8204, 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 
  22.664 +    0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 
  22.665 +    0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 
  22.666 +    0x3c83, 0x8001, 0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 
  22.667 +    0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 
  22.668 +    0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 
  22.669 +    0x800e, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 0x3d83, 
  22.670 +    0x8002, 0x099a, 0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 
  22.671 +    0x9880, 0x100c, 0x3d80, 0x3004, 0x930e, 0x099a, 0x0e0a, 0x8080, 0x0c88, 
  22.672 +    0x9880, 0x200c, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 
  22.673 +    0x9809, 0x010a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x3c83, 
  22.674 +    0x8001, 0x3d83, 0x9a05, 0x0a09, 0x980e, 0x010a, 0x9880, 0x200c, 0x8080, 
  22.675 +    0x099a, 0x0f0a, 0x0a98, 0x8001, 0x0c98, 0x8310, 0x023d, 0x3d83, 0x9a04, 
  22.676 +    0x0a09, 0x980c, 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x980d, 0x010a, 
  22.677 +    0x8380, 0x013c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c98, 0x8010, 
  22.678 +    0x9a80, 0x0a09, 0x980a, 0x010a, 0x0980, 0x0000, 0x0000, 0x0040, 0x02dd, 
  22.679 +    0x3e83, 0x8301, 0x023d, 0x3a83, 0x8303, 0x092b, 0x2f9b, 0x0c06, 0x8010, 
  22.680 +    0x0c98, 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 0x8080, 
  22.681 +    0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980f, 
  22.682 +    0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 0x8080, 
  22.683 +    0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980e, 
  22.684 +    0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 0x023d, 
  22.685 +    0x3d83, 0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 
  22.686 +    0x8080, 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 
  22.687 +    0x8380, 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 
  22.688 +    0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x100c, 
  22.689 +    0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 
  22.690 +    0x8009, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 
  22.691 +    0x9a80, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 
  22.692 +    0x0c88, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.693 +    0x800d, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.694 +    0x800a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 0x9a80, 
  22.695 +    0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 
  22.696 +    0x0a09, 0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 0x8080, 
  22.697 +    0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 0x0c02, 
  22.698 +    0x8020, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 
  22.699 +    0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 
  22.700 +    0x099a, 0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c98, 
  22.701 +    0x8010, 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 
  22.702 +    0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.703 +    0x800e, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 
  22.704 +    0x8204, 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 
  22.705 +    0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 
  22.706 +    0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8001, 
  22.707 +    0x3c83, 0x8001, 0x3d83, 0x8205, 0x9809, 0x010a, 0x9880, 0x200c, 0x8080, 
  22.708 +    0x099a, 0x0a0a, 0x0a98, 0x8001, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 
  22.709 +    0x9b09, 0x0631, 0x100c, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x0a98, 
  22.710 +    0x8010, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x980e, 0x100a, 0x8880, 0x800c, 
  22.711 +    0x9a80, 0x0a09, 0x980f, 0x100a, 0x8380, 0x013e, 0x3d83, 0x8002, 0x099a, 
  22.712 +    0x0c0a, 0x0a98, 0x8010, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x980d, 0x100a, 
  22.713 +    0x9880, 0x100c, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 
  22.714 +    0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 0x8009, 0x8080, 0x8080, 
  22.715 +    0x099a, 0x0a0a, 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 
  22.716 +    0x9880, 0x200c, 0x8080, 0x099a, 0x0f0a, 0x0a98, 0x8001, 0x0c98, 0x8310, 
  22.717 +    0x023d, 0x9a80, 0x0a09, 0x980c, 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 
  22.718 +    0x980d, 0x010a, 0x8380, 0x013c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8001, 
  22.719 +    0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980a, 0x010a, 0x0980, 0x0000, 0x0000, 
  22.720 +    0x0040, 0x02e9, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x9b03, 0x092b, 0x050a, 
  22.721 +    0x2c9b, 0x0c06, 0x8010, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 
  22.722 +    0x9880, 0x200c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 
  22.723 +    0x9a80, 0x0a09, 0x980f, 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 
  22.724 +    0x980c, 0x100a, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 
  22.725 +    0x9a80, 0x0a09, 0x980e, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 
  22.726 +    0x8010, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x9805, 0x100a, 0x8080, 
  22.727 +    0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 0x8080, 
  22.728 +    0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 0x9a80, 0x0a09, 0x800c, 
  22.729 +    0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 
  22.730 +    0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 
  22.731 +    0x8301, 0x023d, 0x3a83, 0x9a03, 0x0a09, 0x8005, 0x9880, 0x300c, 0x8080, 
  22.732 +    0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800e, 0x9880, 
  22.733 +    0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x0c88, 0x3d83, 0x8002, 0x099a, 
  22.734 +    0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 0x8080, 0x8080, 0x099a, 
  22.735 +    0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 
  22.736 +    0x043d, 0x099a, 0x050a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 0x8080, 
  22.737 +    0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800f, 0x8380, 
  22.738 +    0x013c, 0x3d83, 0x8302, 0x053d, 0x099a, 0x0c0a, 0x8080, 0x0c98, 0x8020, 
  22.739 +    0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 0x0c02, 0x8020, 0x099a, 
  22.740 +    0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 
  22.741 +    0x023d, 0x3a83, 0x9a03, 0x0a09, 0x8005, 0x9880, 0x300c, 0x8080, 0x099a, 
  22.742 +    0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c98, 0x8010, 
  22.743 +    0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x800c, 
  22.744 +    0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 
  22.745 +    0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x9a04, 
  22.746 +    0x0a09, 0x8005, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 
  22.747 +    0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 
  22.748 +    0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 
  22.749 +    0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x200c, 0x8080, 0x099a, 
  22.750 +    0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x9a03, 0x0a09, 0x8005, 
  22.751 +    0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 
  22.752 +    0x0a09, 0x800e, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 
  22.753 +    0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 
  22.754 +    0x800d, 0x9880, 0x100c, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 
  22.755 +    0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x9805, 
  22.756 +    0x010a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x3c83, 0x8001, 
  22.757 +    0x3d83, 0x9a05, 0x0a09, 0x980e, 0x010a, 0x9880, 0x200c, 0x8080, 0x099a, 
  22.758 +    0x0f0a, 0x0a98, 0x8001, 0x0c98, 0x8310, 0x023d, 0x9a80, 0x0a09, 0x980c, 
  22.759 +    0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x980d, 0x010a, 0x0298, 0x8304, 
  22.760 +    0x013c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x9801, 0x0402, 0x0c98, 0x8010, 
  22.761 +    0x9a80, 0x0a09, 0x980a, 0x010a, 0x0298, 0x0904, 0x0000, 0x0000, 0x0040, 
  22.762 +    0x01e1, 0x8380, 0x023d, 0x319b, 0x0f08, 0x8403, 0x8410, 0x8410, 0x8010, 
  22.763 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 
  22.764 +    0x0143, 0x3d83, 0x8002, 0x8080, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 
  22.765 +    0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 
  22.766 +    0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.767 +    0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 
  22.768 +    0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 
  22.769 +    0x3d83, 0x8302, 0x0831, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.770 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x0143, 0x3d83, 0x8002, 0x8080, 
  22.771 +    0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 
  22.772 +    0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 
  22.773 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 
  22.774 +    0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x9b20, 0x023d, 
  22.775 +    0x200c, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 
  22.776 +    0x0831, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.777 +    0x8080, 0x8080, 0x8380, 0x0143, 0x3d83, 0x8002, 0x8080, 0x8480, 0x8030, 
  22.778 +    0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 
  22.779 +    0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.780 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8080, 
  22.781 +    0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 
  22.782 +    0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 0x0831, 0x8080, 0x8080, 0x8080, 
  22.783 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x013e, 
  22.784 +    0x3d83, 0x8002, 0x8080, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 
  22.785 +    0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 
  22.786 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.787 +    0x8080, 0x4183, 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 
  22.788 +    0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x0980, 0x0000, 
  22.789 +    0x0000, 0x0040, 0x021a, 0x8380, 0x023d, 0x319b, 0x0f08, 0x8703, 0x0855, 
  22.790 +    0x8030, 0x0a98, 0x8007, 0x8080, 0x8080, 0x0a98, 0x8007, 0x8080, 0x8080, 
  22.791 +    0x0a98, 0x8007, 0x8080, 0x5587, 0x2008, 0x8880, 0x830c, 0x0143, 0x3d83, 
  22.792 +    0x8002, 0x8080, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 
  22.793 +    0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 
  22.794 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.795 +    0x4383, 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 
  22.796 +    0x8020, 0x8380, 0x073c, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x3d83, 
  22.797 +    0x8302, 0x0831, 0x8080, 0x8080, 0x8080, 0x3c87, 0x1507, 0x8080, 0x8080, 
  22.798 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8380, 
  22.799 +    0x073c, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 
  22.800 +    0x1084, 0x8080, 0x3c87, 0x1507, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 
  22.801 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.802 +    0x8080, 0x4383, 0x8301, 0x023d, 0x8780, 0x0855, 0x8030, 0x8480, 0x8030, 
  22.803 +    0x8080, 0x8080, 0x2084, 0x3d9b, 0x0c02, 0x8020, 0x5587, 0x3008, 0x8080, 
  22.804 +    0x1084, 0x8080, 0x5587, 0x2008, 0x8080, 0x8380, 0x023d, 0x3183, 0x8708, 
  22.805 +    0x0855, 0x8030, 0x8080, 0x8080, 0x5587, 0x2008, 0x8080, 0x8080, 0x8080, 
  22.806 +    0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8780, 0x0855, 
  22.807 +    0x8020, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 0x8480, 
  22.808 +    0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 
  22.809 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 
  22.810 +    0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 
  22.811 +    0x8380, 0x073c, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 
  22.812 +    0x0831, 0x8080, 0x8080, 0x8080, 0x3c87, 0x1507, 0x8080, 0x8080, 0x8080, 
  22.813 +    0x8080, 0x8080, 0x8080, 0x8080, 0x3e83, 0x8301, 0x023d, 0x8380, 0x073c, 
  22.814 +    0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 
  22.815 +    0x8080, 0x3c87, 0x1507, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 
  22.816 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.817 +    0x4183, 0x8301, 0x023d, 0x8780, 0x0855, 0x8030, 0x8480, 0x8030, 0x8080, 
  22.818 +    0x8080, 0x2084, 0x8080, 0x5587, 0x3008, 0x8080, 0x1084, 0x8080, 0x5587, 
  22.819 +    0x2008, 0x8080, 0x0009, 0x0000, 0x4000, 0x6a00, 0x8002, 0x3d83, 0x9b02, 
  22.820 +    0x0831, 0x030f, 0x5587, 0x3008, 0x8380, 0x0644, 0x8080, 0x8080, 0x8480, 
  22.821 +    0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8780, 0x0855, 0x8020, 0x5087, 
  22.822 +    0x2006, 0x4383, 0x8301, 0x023d, 0x8080, 0x8480, 0x8415, 0x8030, 0x8080, 
  22.823 +    0x8480, 0x8410, 0x8020, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 
  22.824 +    0x3d83, 0x8302, 0x0831, 0x8080, 0x4483, 0x8006, 0x8080, 0x8080, 0x1584, 
  22.825 +    0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x5087, 0x2006, 0x4383, 
  22.826 +    0x8301, 0x023d, 0x8080, 0x8480, 0x8415, 0x8030, 0x8080, 0x8480, 0x8410, 
  22.827 +    0x8020, 0x8380, 0x073c, 0x8380, 0x0644, 0x1084, 0x8080, 0x8080, 0x1584, 
  22.828 +    0x8380, 0x023d, 0x3183, 0x8008, 0x8480, 0x8010, 0x8080, 0x3c87, 0x1507, 
  22.829 +    0x8780, 0x0650, 0x8020, 0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 
  22.830 +    0x8310, 0x0143, 0x3d83, 0x8002, 0x3c83, 0x8007, 0x3f83, 0x8406, 0x8030, 
  22.831 +    0x8080, 0x8480, 0x8415, 0x8020, 0x8080, 0x8480, 0x8410, 0x8010, 0x8780, 
  22.832 +    0x073c, 0x8015, 0x4b87, 0x2006, 0x8380, 0x023d, 0x3183, 0x8008, 0x8480, 
  22.833 +    0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 
  22.834 +    0x8380, 0x063f, 0x4383, 0x8301, 0x023d, 0x8780, 0x0855, 0x8030, 0x1584, 
  22.835 +    0x3084, 0x8080, 0x8080, 0x1084, 0x2084, 0x3d9b, 0x0c02, 0x8020, 0x5587, 
  22.836 +    0x3008, 0x8780, 0x064b, 0x8420, 0x8010, 0x8780, 0x0855, 0x8020, 0x1584, 
  22.837 +    0x8380, 0x023d, 0x3183, 0x8708, 0x0855, 0x8030, 0x4283, 0x8006, 0x8080, 
  22.838 +    0x5587, 0x2008, 0x8480, 0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 
  22.839 +    0x8780, 0x064e, 0x8320, 0x0143, 0x3d83, 0x8002, 0x5587, 0x2008, 0x8480, 
  22.840 +    0x8415, 0x8030, 0x8080, 0x8480, 0x8410, 0x8020, 0x8080, 0x8080, 0x1084, 
  22.841 +    0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 0x0831, 0x8080, 0x4283, 0x8006, 
  22.842 +    0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 
  22.843 +    0x4e87, 0x2006, 0x4383, 0x8301, 0x023d, 0x8080, 0x8480, 0x8415, 0x8030, 
  22.844 +    0x8080, 0x8480, 0x8410, 0x8020, 0x8380, 0x073c, 0x8380, 0x0642, 0x1084, 
  22.845 +    0x8080, 0x8080, 0x1584, 0x8380, 0x023d, 0x3183, 0x8008, 0x8480, 0x8010, 
  22.846 +    0x8080, 0x3c87, 0x1507, 0x8780, 0x064e, 0x8020, 0x8080, 0x8080, 0x1584, 
  22.847 +    0x8080, 0x8080, 0x8480, 0x8310, 0x013e, 0x3d83, 0x8002, 0x3c83, 0x8007, 
  22.848 +    0x3d83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 0x8020, 0x8080, 0x8480, 
  22.849 +    0x8410, 0x8010, 0x8780, 0x073c, 0x8015, 0x4987, 0x2006, 0x8380, 0x023d, 
  22.850 +    0x3183, 0x8008, 0x8480, 0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 
  22.851 +    0x8080, 0x8080, 0x8080, 0x8080, 0x4183, 0x8301, 0x023d, 0x8780, 0x0855, 
  22.852 +    0x8030, 0x3d83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 0x8020, 0x8780, 
  22.853 +    0x0855, 0x8030, 0x1084, 0x1084, 0x8080, 0x5587, 0x2008, 0x8780, 0x0649, 
  22.854 +    0x0920, 0x0000, 0x0000, 0x0040, 0x0260, 0x8380, 0x023d, 0x319b, 0x0f08, 
  22.855 +    0x8703, 0x0855, 0x8030, 0x4483, 0x8006, 0x8080, 0x8080, 0x1584, 0x8080, 
  22.856 +    0x8080, 0x8480, 0x8010, 0x8080, 0x5587, 0x2008, 0x8780, 0x0650, 0x8320, 
  22.857 +    0x0143, 0x3d83, 0x8002, 0x8080, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 
  22.858 +    0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 
  22.859 +    0x3183, 0x8008, 0x8380, 0x0644, 0x8080, 0x8080, 0x8480, 0x8015, 0x8080, 
  22.860 +    0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x0650, 0x8320, 0x0143, 0x3d83, 
  22.861 +    0x8002, 0x8080, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 0x2084, 0x8080, 
  22.862 +    0x3c83, 0x8007, 0x4483, 0x8406, 0x8010, 0x8080, 0x8480, 0x8015, 0x3d83, 
  22.863 +    0x8302, 0x0831, 0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x0650, 0x8020, 
  22.864 +    0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8310, 0x0143, 0x3d83, 
  22.865 +    0x8002, 0x3c83, 0x8007, 0x3f83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 
  22.866 +    0x8020, 0x8080, 0x8480, 0x8410, 0x8010, 0x8080, 0x8780, 0x064b, 0x8020, 
  22.867 +    0x3d83, 0x8302, 0x0831, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8010, 
  22.868 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x3f83, 0x8306, 0x0143, 0x3d83, 
  22.869 +    0x8002, 0x5587, 0x3008, 0x8480, 0x8415, 0x8030, 0x8080, 0x8480, 0x8410, 
  22.870 +    0x9b20, 0x023d, 0x200c, 0x8780, 0x0855, 0x8030, 0x4b87, 0x2006, 0x1084, 
  22.871 +    0x8080, 0x5587, 0x2008, 0x8480, 0x8015, 0x3d83, 0x8302, 0x0831, 0x5587, 
  22.872 +    0x3008, 0x8380, 0x0642, 0x8080, 0x8780, 0x0855, 0x8020, 0x1584, 0x8080, 
  22.873 +    0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x4e87, 0x2006, 0x4383, 0x8301, 
  22.874 +    0x023d, 0x8780, 0x0855, 0x8020, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 
  22.875 +    0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 
  22.876 +    0x3183, 0x8008, 0x8380, 0x0642, 0x8080, 0x8080, 0x8480, 0x8015, 0x8080, 
  22.877 +    0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x064e, 0x8320, 0x0143, 0x3d83, 
  22.878 +    0x8002, 0x8080, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 0x2084, 0x8080, 
  22.879 +    0x3c83, 0x8007, 0x4283, 0x8406, 0x8010, 0x8080, 0x8480, 0x8015, 0x3d83, 
  22.880 +    0x8302, 0x0831, 0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x064e, 0x8020, 
  22.881 +    0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8310, 0x013e, 0x3d83, 
  22.882 +    0x8002, 0x3c83, 0x8007, 0x3d83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 
  22.883 +    0x8020, 0x8080, 0x8480, 0x8410, 0x8010, 0x8080, 0x8780, 0x0649, 0x8020, 
  22.884 +    0x3d83, 0x8302, 0x0831, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8010, 
  22.885 +    0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x0141, 0x3d83, 0x8002, 
  22.886 +    0x5587, 0x3008, 0x8380, 0x063d, 0x3084, 0x8080, 0x8080, 0x1584, 0x2084, 
  22.887 +    0x8080, 0x5587, 0x3008, 0x8480, 0x9c10, 0x0b10, 0x8019, 0x8780, 0x0855, 
  22.888 +    0x8020, 0x4987, 0x2006, 0x0009, 0x0000, 0x4000, 0xe400, 0x8302, 0x013e, 
  22.889 +    0x3d83, 0x8302, 0x033a, 0x2b83, 0x9b09, 0x062f, 0x100c, 0x0c88, 0x0c98, 
  22.890 +    0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 0x8080, 0x099a, 
  22.891 +    0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980f, 0x100a, 
  22.892 +    0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 0x8080, 0x8080, 
  22.893 +    0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980e, 0x100a, 
  22.894 +    0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 0x023d, 0x3d83, 
  22.895 +    0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 
  22.896 +    0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 
  22.897 +    0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 
  22.898 +    0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 
  22.899 +    0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 
  22.900 +    0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 
  22.901 +    0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x0c88, 
  22.902 +    0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 
  22.903 +    0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 
  22.904 +    0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.905 +    0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.906 +    0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 0x8080, 0x0c98, 
  22.907 +    0x8020, 0x9a80, 0x0a09, 0x980d, 0x010a, 0x9880, 0x100c, 0x3d9b, 0x0c02, 
  22.908 +    0x8020, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c88, 0x8080, 0x099a, 0x0a0a, 
  22.909 +    0x0a98, 0x8001, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x9b09, 0x062a, 
  22.910 +    0x100c, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x2090, 
  22.911 +    0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 
  22.912 +    0x980f, 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 
  22.913 +    0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 
  22.914 +    0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 
  22.915 +    0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 
  22.916 +    0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 0x9a80, 
  22.917 +    0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 0x8001, 
  22.918 +    0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 0x0a0a, 0x8080, 
  22.919 +    0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 
  22.920 +    0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800e, 0x8880, 
  22.921 +    0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 0x3d83, 0x8002, 0x099a, 
  22.922 +    0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 
  22.923 +    0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 
  22.924 +    0x8380, 0x023d, 0x3d83, 0x8204, 0x9809, 0x010a, 0x8080, 0x8080, 0x099e, 
  22.925 +    0x0a40, 0x980a, 0x010a, 0x8380, 0x0141, 0x9b80, 0x043d, 0x1002, 0x099e, 
  22.926 +    0x0a30, 0x980e, 0x010a, 0x9880, 0x1002, 0x3d87, 0x2002, 0x0298, 0x9e10, 
  22.927 +    0x2009, 0x0f0a, 0x0a98, 0x8001, 0x0298, 0x8010, 0x0298, 0x8410, 0x9810, 
  22.928 +    0x010a, 0x9880, 0x1002, 0x8080, 0x9880, 0x010a, 0x9c80, 0x0220, 0x8010, 
  22.929 +    0x8080, 0x0a98, 0x8001, 0x159c, 0x1002, 0x8080, 0x9880, 0x010a, 0x0780, 
  22.930 +    0x0001, 0x7300, 0x6275, 0x3162, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.931 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 
  22.932 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.933 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.934 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.935 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.936 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.937 +    0x0000, 0x0000, 0x0020, 0x0007, 0x0006, 0x0022, 0x000c, 0x0038, 0x0004, 
  22.938 +    0x0053, 0x0008, 0x006c, 0x0004, 0x006c, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.939 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 
  22.940 +    0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 
  22.941 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.942 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.943 +    0x0000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.944 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x054c, 0x0000, 0x0468, 0x0000, 
  22.945 +    0x00e2, 0x0000, 0x0040, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  22.946 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff01, 
  22.947 +    0x00ff, 0xfbfe, 0xf7f5, 0xf8f2, 0x03b2, 0xfe1a, 0x1201, 0xfeff, 0x0102, 
  22.948 +    0xfeff, 0x0005, 0x0102, 0x02ff, 0x0607, 0x0707, 0x0608, 0x0607, 0x0305, 
  22.949 +    0x0505, 0x0205, 0x0206, 0x0604, 0x0401, 0x0206, 0x0403, 0xfeff, 0xff00, 
  22.950 +    0x0003, 0xffff, 0xfefd, 0xfdfd, 0xfafd, 0xfcfe, 0x00fc, 0xfdfe, 0xf8fd, 
  22.951 +    0xfcf8, 0xfcfe, 0x0001, 0xfffc, 0xffff, 0x02fc, 0x01ff, 0x0103, 0x0101, 
  22.952 +    0x03ff, 0x0403, 0x0905, 0x0504, 0x0204, 0x0406, 0x0805, 0x0102, 0x0704, 
  22.953 +    0x0303, 0x0301, 0x0100, 0x0005, 0x0303, 0x04ff, 0x00ff, 0xfd02, 0x01ff, 
  22.954 +    0xfefe, 0xfbfe, 0xfbfe, 0xfefd, 0xfefa, 0xf8fe, 0xfcfb, 0xfdfc, 0xfafb, 
  22.955 +    0xfefc, 0xfffe, 0xfdfc, 0x01fd, 0xfefd, 0xfffd, 0xff02, 0x00ff, 0x0000, 
  22.956 +    0x0000, 0x0301, 0x0404, 0x0505, 0x0205, 0x0305, 0x0402, 0x0406, 0x0504, 
  22.957 +    0x0204, 0x0404, 0x0103, 0x02ff, 0x0102, 0x0103, 0x0500, 0xfe01, 0x0200, 
  22.958 +    0xff01, 0x0000, 0x00ff, 0xfeff, 0xfffc, 0xfcfe, 0xfdfe, 0xfbfb, 0xfbfb, 
  22.959 +    0xfdfc, 0xfdfb, 0xfcfc, 0xfcfc, 0xfdfb, 0xfefb, 0xfdfe, 0xfefe, 0xffff, 
  22.960 +    0xfffd, 0xfffe, 0xfe01, 0xffff, 0x0100, 0x0100, 0x0200, 0x0301, 0x0502, 
  22.961 +    0x0404, 0x0404, 0x0304, 0x0203, 0x0403, 0x0403, 0x0403, 0x0104, 0x0105, 
  22.962 +    0x0204, 0x0300, 0x0301, 0x0001, 0x0202, 0x0301, 0x0100, 0x0001, 0x00ff, 
  22.963 +    0x01ff, 0xfeff, 0xffff, 0xfdff, 0xfdfe, 0xfdff, 0xfefe, 0xfbfd, 0xfcfc, 
  22.964 +    0xfcfb, 0xfbfb, 0xfcfd, 0xfcfb, 0xfdfc, 0xfdfd, 0xfdfe, 0xfefe, 0xfdfe, 
  22.965 +    0xfefe, 0xfffd, 0xfdff, 0xff00, 0xfe00, 0xff00, 0x0000, 0x0201, 0x0100, 
  22.966 +    0x0300, 0x0203, 0x0404, 0x0303, 0x0203, 0x0304, 0x0403, 0x0305, 0x0303, 
  22.967 +    0x0403, 0x0503, 0x0303, 0x0303, 0x0203, 0x0300, 0x0102, 0x0102, 0x0202, 
  22.968 +    0x0201, 0x0002, 0x0100, 0x0100, 0x0200, 0xff00, 0xff00, 0xfe00, 0xfeff, 
  22.969 +    0xfeff, 0xfefd, 0xfdfd, 0xfdfd, 0xfdfe, 0xfdfc, 0xfcfd, 0xfcfc, 0xfdfd, 
  22.970 +    0xfbfc, 0xfcfc, 0xfcfc, 0xfdfc, 0xfefe, 0xfefd, 0xfefe, 0xfffd, 0xfdfe, 
  22.971 +    0xfeff, 0xfefe, 0xff00, 0xfe01, 0xff00, 0x00ff, 0x0100, 0x0100, 0x0002, 
  22.972 +    0x0101, 0x0202, 0x0303, 0x0303, 0x0203, 0x0304, 0x0403, 0x0303, 0x0304, 
  22.973 +    0x0403, 0x0303, 0x0304, 0x0303, 0x0304, 0x0204, 0x0203, 0x0202, 0x0103, 
  22.974 +    0x0202, 0x0202, 0x0201, 0x0201, 0x0201, 0x0000, 0x0200, 0x0000, 0x0100, 
  22.975 +    0x0000, 0xff00, 0xff00, 0xffff, 0xfeff, 0xfdfe, 0xfefe, 0xfdfe, 0xfefd, 
  22.976 +    0xfdfd, 0xfcfe, 0xfdfd, 0xfdfd, 0xfdfc, 0xfcfc, 0xfcfc, 0xfcfd, 0xfdfc, 
  22.977 +    0xfcfd, 0xfefd, 0xfdfd, 0xfefe, 0xfefe, 0xfffd, 0xfdfe, 0xfe00, 0xfffe, 
  22.978 +    0xfffe, 0x00fe, 0xff00, 0xff00, 0x0000, 0x0000, 0x0100, 0x0001, 0x0101, 
  22.979 +    0x0201, 0x0301, 0x0302, 0x0302, 0x0303, 0x0303, 0x0303, 0x0303, 0x0403, 
  22.980 +    0x0303, 0x0303, 0x0304, 0x0403, 0x0303, 0x0403, 0x0303, 0x0303, 0x0203, 
  22.981 +    0x0203, 0x0202, 0x0202, 0x0202, 0x0201, 0x0201, 0x0201, 0x0101, 0x0201, 
  22.982 +    0x0000, 0x0000, 0x0000, 0x0102, 0x0000, 0x00ff, 0xfe00, 0xff00, 0xff00, 
  22.983 +    0xfefe, 0xfeff, 0xfefe, 0xfdfe, 0xfdfe, 0xfefe, 0xfdfd, 0xfdfd, 0xfdfe, 
  22.984 +    0xfcfd, 0xfdfd, 0xfdfd, 0xfcfc, 0xfcfd, 0xfcfd, 0xfcfd, 0xfdfd, 0xfdfd, 
  22.985 +    0xfdfd, 0xfdfe, 0xfefe, 0xfefe, 0xfefe, 0xfeff, 0xfeff, 0xfefe, 0xffff, 
  22.986 +    0xfffe, 0x00ff, 0xff00, 0xff01, 0x0000, 0x0000, 0x0100, 0x01ff, 0x0100, 
  22.987 +    0x0101, 0x0201, 0x0201, 0x0202, 0x0103, 0x0303, 0x0203, 0x0303, 0x0303, 
  22.988 +    0x0303, 0x0303, 0x0303, 0x0403, 0x0303, 0x0403, 0x0303, 0x0303, 0x0403, 
  22.989 +    0x0402, 0x0303, 0x0402, 0x0302, 0x0203, 0x0202, 0x0202, 0x0202, 0x0201, 
  22.990 +    0x0201, 0x0300, 0x0201, 0x0101, 0x0101, 0x0101, 0x0100, 0x0000, 0x0000, 
  22.991 +    0x0100, 0x00ff, 0x0000, 0x00ff, 0x00ff, 0x00ff, 0xffff, 0xfffe, 0xfffe, 
  22.992 +    0xfefe, 0xfefe, 0xfefd, 0xfdfe, 0xfefe, 0xfefd, 0xfdfd, 0xfdfe, 0xfdfd, 
  22.993 +    0xfdfd, 0xfdfd, 0xfdfd, 0xfcfd, 0xfdfd, 0xfdfc, 0xfdfd, 0xfdfc, 0xfdfd, 
  22.994 +    0xfefc, 0xfdfd, 0xfefe, 0xfefd, 0xfefe, 0xfffe, 0xfffd, 0xfefe, 0xffff, 
  22.995 +    0xfffe, 0xfffe, 0xfe00, 0xffff, 0xfe00, 0x01ff, 0x0000, 0x0000, 0x0000, 
  22.996 +    0x0001, 0x0100, 0x0100, 0x0101, 0x0100, 0x0101, 0x0102, 0x0202, 0x0102, 
  22.997 +    0x0104, 0x0302, 0x0303, 0x0302, 0x0303, 0x0402, 0x0203, 0x0303, 0x0304, 
  22.998 +    0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 
  22.999 +    0x0303, 0x0202, 0x0303, 0x0202, 0x0203, 0x0201, 0x0202, 0x0201, 0x0102, 
 22.1000 +    0x0101, 0x0002, 0x0102, 0x0101, 0x0001, 0x0101, 0x0000, 0x0001, 0x0000, 
 22.1001 +    0x0000, 0x00ff, 0x0000, 0xff00, 0xff00, 0xff00, 0xffff, 0xfe00, 0xffff, 
 22.1002 +    0xfeff, 0xfeff, 0xfeff, 0xfefe, 0xfefe, 0xfdfe, 0xfefe, 0xfefd, 0xfdfe, 
 22.1003 +    0xfdfe, 0xfefd, 0xfefd, 0xfdfd, 0xfefd, 0xfefc, 0xfdfd, 0xfdfd, 0xfdfd, 
 22.1004 +    0xfcfe, 0xfcfe, 0xfdfe, 0xfdfd, 0xfdfd, 0xfdfe, 0xfefd, 0xfdfe, 0xfefe, 
 22.1005 +    0xfefe, 0xfefe, 0xffff, 0xfffe, 0xfffe, 0xfffe, 0xffff, 0xffff, 0x00ff, 
 22.1006 +    0xffff, 0xff00, 0x00ff, 0x00ff, 0x0000, 0x0001, 0x0000, 0x0101, 0x0000, 
 22.1007 +    0x0101, 0x0000, 0x0101, 0x0101, 0x0201, 0x0101, 0x0201, 0x0301, 0x0200, 
 22.1008 +    0x0202, 0x0202, 0x0203, 0x0203, 0x0203, 0x0203, 0x0303, 0x0302, 0x0302, 
 22.1009 +    0x0302, 0x0303, 0x0302, 0x0302, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203, 
 22.1010 +    0x0203, 0x0203, 0x0202, 0x0203, 0x0202, 0x0202, 0x0202, 0x0102, 0x0201, 
 22.1011 +    0x0102, 0x0102, 0x0200, 0x0101, 0x0101, 0x0100, 0x0001, 0x0101, 0x0100, 
 22.1012 +    0x0100, 0x0000, 0x0000, 0x0100, 0xff00, 0xff00, 0xff01, 0xff00, 0x0000, 
 22.1013 +    0xffff, 0xff00, 0x00ff, 0x00fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xfefe, 
 22.1014 +    0xffff, 0xfefe, 0xfeff, 0xfefe, 0xfeff, 0xfefe, 0xfefe, 0xfefe, 0xfefe, 
 22.1015 +    0xfefe, 0xfdfe, 0xfefe, 0xfefe, 0xfffd, 0xfefd, 0xfdfe, 0xfefe, 0xfefe, 
 22.1016 +    0xfefd, 0xfdfe, 0xfefe, 0xfdfe, 0xfefe, 0xfefe, 0xfefe, 0xfefe, 0xfefe, 
 22.1017 +    0xfeff, 0xfffe, 0xfeff, 0xffff, 0xfffe, 0xffff, 0x00ff, 0xffff, 0x00ff, 
 22.1018 +    0xffff, 0x00ff, 0x00ff, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0001, 
 22.1019 +    0x0000, 0x0001, 0x0001, 0x0101, 0x0100, 0x0001, 0x0002, 0x0100, 0x0101, 
 22.1020 +    0x0101, 0x0201, 0x0101, 0x0201, 0x0201, 0x0201, 0x0201, 0x0202, 0x0202, 
 22.1021 +    0x0102, 0x0202, 0x0202, 0x0103, 0x0202, 0x0203, 0x0202, 0x0202, 0x0202, 
 22.1022 +    0x0002, 0x0107, 0x0000, 0x6863, 0x3168, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1023 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x2800, 0x0000, 0x0000, 
 22.1024 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1025 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1026 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1027 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1028 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1029 +    0x0000, 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 
 22.1030 +    0x2000, 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1031 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1032 +    0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 
 22.1033 +    0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1034 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0001, 0x0000, 0x0000, 
 22.1035 +    0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1036 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x0002, 0x0000, 
 22.1037 +    0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 
 22.1038 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1039 +    0x0000, 0xfc00, 0xfc05, 0xd518, 0x1a15, 0x00d9, 0xf519, 0xc71b, 0xd138, 
 22.1040 +    0x0522, 0x65b1, 0x15cf, 0x3ada, 0x15d0, 0xb80e, 0x7280, 0x948e, 0x001b, 
 22.1041 +    0x28f4, 0xd4f0, 0x9367, 0x9979, 0x6ce5, 0x13a6, 0x9d4e, 0xa45c, 0xea41, 
 22.1042 +    0x03fb, 0x51d5, 0x6db0, 0xfd96, 0xe23b, 0x2d03, 0x49b6, 0x31ba, 0xf4f8, 
 22.1043 +    0x1bff, 0x40c3, 0xc502, 0x121d, 0x26ca, 0xe227, 0x08e4, 0x0e08, 0xf208, 
 22.1044 +    0x33d7, 0xbd10, 0xce46, 0xcc27, 0x50f8, 0x0dbc, 0x0717, 0x01e7, 0x0a09, 
 22.1045 +    0xe2f3, 0x8b51, 0xc880, 0xf6f5, 0xe61a, 0xf32b, 0x35cb, 0xe505, 0x0509, 
 22.1046 +    0x65cf, 0x6498, 0x28a6, 0x070d, 0x2dca, 0x0ce0, 0xf212, 0xe80e, 0x20f3, 
 22.1047 +    0xb31e, 0xd345, 0xd320, 0xe432, 0x2503, 0x48b3, 0x46c7, 0x17c6, 0xe3fe, 
 22.1048 +    0x151a, 0x49cb, 0x32b8, 0xf2ee, 0x0c0f, 0x35ce, 0x36dd, 0x11c4, 0xd512, 
 22.1049 +    0x0c2f, 0x51bd, 0xeac5, 0x1625, 0xc2f5, 0xc254, 0xdd49, 0x07e6, 0xbf27, 
 22.1050 +    0x3028, 0xf8b6, 0x1714, 0x0ff8, 0x15d0, 0xbf30, 0xed22, 0xf210, 0xfe09, 
 22.1051 +    0xfa0a, 0x09f3, 0x0bfe, 0xf5fa, 0x1104, 0xecfa, 0xff11, 0x09f7, 0xf9fd, 
 22.1052 +    0xb52c, 0xca45, 0xe334, 0x13ec, 0xed14, 0x4ee1, 0x02b4, 0xc92b, 0xd43f, 
 22.1053 +    0xcc28, 0xe137, 0x0312, 0xffdf, 0xb543, 0xb944, 0xf128, 0xfc13, 0x20e7, 
 22.1054 +    0x33d7, 0xffde, 0xfb19, 0x34d4, 0x58c9, 0x50a7, 0xdbdb, 0x5006, 0x02c0, 
 22.1055 +    0x25f7, 0x28d9, 0xddef, 0xef2b, 0xfa0d, 0x3be9, 0x11c7, 0xf000, 0xae3f, 
 22.1056 +    0xaa56, 0xde43, 0xfd08, 0xedff, 0xef23, 0xe908, 0xe623, 0x3bea, 0xf1e1, 
 22.1057 +    0xf81a, 0xfefd, 0xee0e, 0xfc0c, 0xec04, 0x0317, 0xedf5, 0x091a, 0x31da, 
 22.1058 +    0x4ec0, 0x10c6, 0xf80a, 0x04fb, 0xf703, 0x0e0b, 0x0adb, 0xb72b, 0xbc44, 
 22.1059 +    0xc058, 0x1aff, 0xc401, 0xb665, 0x0214, 0xf901, 0xf617, 0x3bd3, 0x31d7, 
 22.1060 +    0x08d2, 0xf41d, 0x27d3, 0xe914, 0x0af5, 0x18ff, 0xdde6, 0xd04d, 0x27fb, 
 22.1061 +    0xf5e7, 0x2108, 0xf1d8, 0xc040, 0xc237, 0xcb49, 0x23f8, 0x00f1, 0x010a, 
 22.1062 +    0x26dc, 0xef01, 0x05fd, 0x1107, 0x32cd, 0x1bde, 0x06ec, 0xc31b, 0xcb3d, 
 22.1063 +    0xec29, 0xdb1b, 0x040e, 0xe607, 0xfc19, 0xe8fe, 0x0220, 0xdefa, 0xdc2d, 
 22.1064 +    0xc92f, 0x55f7, 0x479b, 0x3bd8, 0x1fc1, 0x00fa, 0x1cf5, 0x01e5, 0xf316, 
 22.1065 +    0x18f5, 0xe6f0, 0xc03c, 0xda35, 0xc133, 0x0721, 0x2ae1, 0x04e0, 0x22fb, 
 22.1066 +    0xdcf2, 0xf82d, 0x66d0, 0x329d, 0x11e8, 0x0cf8, 0x0cea, 0x1ff2, 0x26e2, 
 22.1067 +    0x07cd, 0xdf2d, 0xfd06, 0x36f1, 0x0dc4, 0xeb1a, 0xcb14, 0xcd46, 0x021c, 
 22.1068 +    0xeaf9, 0x010e, 0xcd21, 0xcc2b, 0x2711, 0x1dd2, 0x09f4, 0x0700, 0x0001, 
 22.1069 +    0x6200, 0x3164, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1070 +    0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1071 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1072 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1073 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1074 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1075 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1076 +    0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 
 22.1077 +    0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1078 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 
 22.1079 +    0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 
 22.1080 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1081 +    0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1082 +    0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1083 +    0x0000, 0x0000, 0x0000, 0x0000, 0x14f6, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1084 +    0x0000, 0x0040, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1085 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0101, 
 22.1086 +    0x0000, 0xff00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1087 +    0x00fe, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1088 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1089 +    0x0001, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0100, 0x01ff, 0x00ff, 
 22.1090 +    0x0000, 0x0001, 0x0000, 0x2201, 0x0f4c, 0x0000, 0xeffa, 0xf0ef, 0xf4f4, 
 22.1091 +    0xf2f7, 0xf3f0, 0xf2f6, 0xe6ef, 0xedeb, 0x00f0, 0x0000, 0x0000, 0x0000, 
 22.1092 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x090a, 0x0f0c, 0x0c09, 
 22.1093 +    0x080d, 0x070a, 0x080b, 0x0a0b, 0x090a, 0x070c, 0x090a, 0x070c, 0x070c, 
 22.1094 +    0x0807, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1095 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1096 +    0x0000, 0xf4fa, 0xeff4, 0xf0f9, 0xf4f6, 0xf4f4, 0xf5f8, 0xf6fa, 0xfcf6, 
 22.1097 +    0xfef2, 0xf8f7, 0xfbfc, 0xfef6, 0xfcf9, 0xf9ff, 0xfdfd, 0x00f7, 0xfd01, 
 22.1098 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1099 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 
 22.1100 +    0x0601, 0x0001, 0x0afc, 0x04fe, 0x0004, 0x0402, 0x0402, 0x0402, 0x07fd, 
 22.1101 +    0xfc06, 0xfd0d, 0xf70d, 0xfb0e, 0x0304, 0x0305, 0x0701, 0xfe03, 0xfe07, 
 22.1102 +    0x0009, 0x0005, 0x0404, 0x0202, 0x0402, 0x0402, 0x0102, 0x0702, 0x09ff, 
 22.1103 +    0x04fa, 0x0402, 0xfe04, 0xfe07, 0x0106, 0xff03, 0x0405, 0x0afe, 0xfffb, 
 22.1104 +    0x0007, 0x0204, 0x0402, 0x09fe, 0x11f9, 0x04f4, 0xff00, 0xfd06, 0x0806, 
 22.1105 +    0x0af5, 0x09fb, 0x05f8, 0x0201, 0xfc00, 0x0004, 0xf808, 0xfc09, 0xf506, 
 22.1106 +    0x0211, 0x01f8, 0x0105, 0x02fe, 0x0100, 0xfa02, 0x0006, 0xfdfd, 0xfc04, 
 22.1107 +    0x06f7, 0xfb03, 0xf905, 0xfb05, 0xfc02, 0x01fc, 0xfefd, 0xf900, 0xfd01, 
 22.1108 +    0x08fb, 0x06f1, 0x00f5, 0xfb00, 0xfcfe, 0xfefd, 0x06f8, 0x01f3, 0x00fa, 
 22.1109 +    0xfef9, 0xfafd, 0xf902, 0xfbfd, 0xfcfa, 0xfa00, 0xfbfc, 0xfafe, 0xf9ff, 
 22.1110 +    0xfdfc, 0x00fa, 0x04f5, 0x00f9, 0xfbfc, 0xfdfd, 0xfcfe, 0xfefe, 0xfdfd, 
 22.1111 +    0xf901, 0xfdff, 0xfeff, 0xfefe, 0xf902, 0xff00, 0x00fd, 0xfb00, 0xff00, 
 22.1112 +    0xfefe, 0xff00, 0xff00, 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1113 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0001, 0x0101, 0x0100, 
 22.1114 +    0x0002, 0x0101, 0x0100, 0x0201, 0x0101, 0x0101, 0x0201, 0x0102, 0x0201, 
 22.1115 +    0x0102, 0x0301, 0x0202, 0x0102, 0x0203, 0x0103, 0x0204, 0x0203, 0x0401, 
 22.1116 +    0x0302, 0x0202, 0x0203, 0x0302, 0x0303, 0x0202, 0x0303, 0x0204, 0x0304, 
 22.1117 +    0x0203, 0x0303, 0x0303, 0x0204, 0x0304, 0x0203, 0x0302, 0x0402, 0x0202, 
 22.1118 +    0x0203, 0x0302, 0x0302, 0x0202, 0x0203, 0x0302, 0x0302, 0x0202, 0x0203, 
 22.1119 +    0x0301, 0x0201, 0x0201, 0x0101, 0x0202, 0x0101, 0x0002, 0x0201, 0x0001, 
 22.1120 +    0x0001, 0x0101, 0x0002, 0x0000, 0x0001, 0x0000, 0x0001, 0x0100, 0x0100, 
 22.1121 +    0x0000, 0x0002, 0x0000, 0x0100, 0x0000, 0x0001, 0x0000, 0x0100, 0x0000, 
 22.1122 +    0x0001, 0x0100, 0x0000, 0x0200, 0x0000, 0x00fe, 0xff00, 0x0000, 0xff00, 
 22.1123 +    0xff00, 0xff00, 0xff00, 0x0000, 0xfffd, 0xffff, 0xfe00, 0xffff, 0xffff, 
 22.1124 +    0xfffe, 0xffff, 0xfdfe, 0xfeff, 0xfefd, 0xfdff, 0xfcfe, 0xfcfe, 0xfcfe, 
 22.1125 +    0xfdfe, 0xfcfc, 0xfcfe, 0xfefd, 0xfcfb, 0xfcfd, 0xfbfd, 0xfdfc, 0xfcfd, 
 22.1126 +    0xfcfc, 0xfcfc, 0xfbfd, 0xfdfc, 0xfefb, 0xfcfb, 0xfcfd, 0xfcfd, 0xfefc, 
 22.1127 +    0xfdfc, 0xfdfc, 0xfefd, 0xfefc, 0xfdfd, 0xfcfe, 0xfcfe, 0xfefe, 0xfefd, 
 22.1128 +    0xfdff, 0xfdfe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1129 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1130 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 
 22.1131 +    0x0101, 0x0301, 0x0101, 0x0301, 0x0101, 0x0102, 0x0203, 0x0301, 0x0102, 
 22.1132 +    0x0103, 0x0102, 0x0203, 0x0201, 0x0202, 0x0203, 0x0301, 0x0201, 0x0203, 
 22.1133 +    0x0302, 0x0102, 0x0203, 0x0302, 0x0302, 0x0302, 0x0203, 0x0303, 0x0203, 
 22.1134 +    0x0303, 0x0303, 0x0303, 0x0402, 0x0402, 0x0202, 0x0204, 0x0203, 0x0402, 
 22.1135 +    0x0302, 0x0202, 0x0103, 0x0202, 0x0202, 0x0103, 0x0201, 0x0103, 0x0202, 
 22.1136 +    0x0202, 0x0203, 0x0202, 0x0102, 0x0103, 0x0201, 0x0102, 0x0101, 0x0101, 
 22.1137 +    0x0102, 0x0100, 0x0001, 0x0001, 0x0000, 0x0002, 0x0000, 0xff01, 0x0100, 
 22.1138 +    0x0001, 0x0101, 0x0200, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 
 22.1139 +    0x0000, 0x0100, 0x0000, 0x00ff, 0x0000, 0x0000, 0xffff, 0x0000, 0xfe00, 
 22.1140 +    0x0000, 0xff00, 0xff00, 0xffff, 0xfffe, 0x00ff, 0xffff, 0xfffe, 0xffff, 
 22.1141 +    0xfefe, 0xfffe, 0xfffd, 0xfdfe, 0xfeff, 0xfdfe, 0xfcff, 0xfefe, 0xfefd, 
 22.1142 +    0xfcfe, 0xfcff, 0xfdfe, 0xfefd, 0xfefd, 0xfdfc, 0xfcfd, 0xfcfc, 0xfbfe, 
 22.1143 +    0xfcfd, 0xfcfe, 0xfdfd, 0xfcfd, 0xfcfd, 0xfdfc, 0xfcfe, 0xfdfc, 0xfefc, 
 22.1144 +    0xfdfc, 0xfdfd, 0xfdfd, 0xfdfe, 0xfdfe, 0xfefe, 0xfefd, 0xfdfe, 0xffff, 
 22.1145 +    0xfffd, 0xfffe, 0xfffd, 0xffff, 0xfdff, 0xffff, 0xfffd, 0xffff, 0x00ff, 
 22.1146 +    0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1147 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0101, 0x0100, 0x0201, 
 22.1148 +    0x0100, 0x0101, 0x0103, 0x0101, 0x0301, 0x0101, 0x0302, 0x0201, 0x0102, 
 22.1149 +    0x0202, 0x0102, 0x0302, 0x0201, 0x0301, 0x0102, 0x0203, 0x0302, 0x0302, 
 22.1150 +    0x0202, 0x0203, 0x0302, 0x0302, 0x0202, 0x0203, 0x0202, 0x0103, 0x0104, 
 22.1151 +    0x0302, 0x0302, 0x0202, 0x0203, 0x0202, 0x0202, 0x0202, 0x0202, 0x0103, 
 22.1152 +    0x0204, 0x0203, 0x0301, 0x0201, 0x0302, 0x0102, 0x0103, 0x0302, 0x0101, 
 22.1153 +    0x0301, 0x0101, 0x0101, 0x0102, 0x0101, 0x0301, 0x0201, 0x0201, 0x0101, 
 22.1154 +    0x0101, 0x0102, 0x0100, 0x0001, 0x0201, 0x0100, 0x0100, 0x0100, 0x0000, 
 22.1155 +    0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0200, 0x0100, 0x0000, 0x0001, 
 22.1156 +    0x0000, 0x0000, 0x0001, 0x0100, 0x0000, 0x0002, 0x0000, 0xfe00, 0x0002, 
 22.1157 +    0x0000, 0x0000, 0x0000, 0x00fe, 0x0000, 0x0000, 0xffff, 0xff00, 0xfeff, 
 22.1158 +    0xff00, 0xffff, 0xffff, 0xfffd, 0xfdfe, 0xffff, 0xfffd, 0xfcfe, 0xfeff, 
 22.1159 +    0xfefc, 0xfdfd, 0xfdfe, 0xfcfe, 0xfdfe, 0xfefd, 0xfdfd, 0xfefc, 0xfdfc, 
 22.1160 +    0xfcfc, 0xfbfe, 0xfcfd, 0xfcfe, 0xfcfd, 0xfcfd, 0xfdfc, 0xfdfc, 0xfefc, 
 22.1161 +    0xfdfc, 0xfefc, 0xfefc, 0xfefd, 0xfefc, 0xfcfe, 0xfdfe, 0xfffe, 0xfdff, 
 22.1162 +    0xfeff, 0xfdff, 0xffff, 0xfffd, 0xffff, 0xfeff, 0xffff, 0x00ff, 0xffff, 
 22.1163 +    0xfe00, 0xffff, 0x0000, 0x00ff, 0xff00, 0x0000, 0x0000, 0x00fe, 0x0000, 
 22.1164 +    0x0000, 0x0000, 0x0000, 0x0002, 0x0101, 0x0000, 0x0001, 0x0201, 0x0001, 
 22.1165 +    0x0101, 0x0001, 0x0100, 0x0200, 0x0001, 0x0101, 0x0201, 0x0101, 0x0101, 
 22.1166 +    0x0102, 0x0101, 0x0202, 0x0101, 0x0101, 0x0103, 0x0101, 0x0103, 0x0102, 
 22.1167 +    0x0103, 0x0301, 0x0202, 0x0202, 0x0201, 0x0102, 0x0302, 0x0201, 0x0301, 
 22.1168 +    0x0202, 0x0202, 0x0302, 0x0102, 0x0203, 0x0302, 0x0102, 0x0203, 0x0301, 
 22.1169 +    0x0202, 0x0202, 0x0302, 0x0201, 0x0203, 0x0301, 0x0202, 0x0202, 0x0202, 
 22.1170 +    0x0202, 0x0301, 0x0101, 0x0103, 0x0101, 0x0201, 0x0102, 0x0101, 0x0202, 
 22.1171 +    0x0101, 0x0102, 0x0101, 0x0201, 0x0102, 0x0101, 0x0102, 0x0101, 0x0201, 
 22.1172 +    0x0101, 0x0101, 0x0200, 0x0101, 0x0100, 0x0001, 0x0001, 0x0002, 0x0001, 
 22.1173 +    0x0000, 0x0100, 0x0000, 0x0000, 0x0001, 0x0000, 0xff00, 0x0000, 0x0000, 
 22.1174 +    0x00ff, 0x0000, 0x00ff, 0x00fe, 0xff00, 0xff00, 0xff00, 0x00ff, 0xfeff, 
 22.1175 +    0xff00, 0xffff, 0xff00, 0xfffe, 0xffff, 0xfeff, 0xffff, 0xffff, 0xfffd, 
 22.1176 +    0xffff, 0xfeff, 0xfeff, 0xfdff, 0xfeff, 0xfdff, 0xfeff, 0xfefe, 0xfdfe, 
 22.1177 +    0xfeff, 0xfcff, 0xfdff, 0xfffe, 0xfefd, 0xfdfd, 0xfdfe, 0xfdfd, 0xfefd, 
 22.1178 +    0xfefd, 0xfefd, 0xfefc, 0xfdfd, 0xfdfe, 0xfcfe, 0xfefe, 0xfefc, 0xfefd, 
 22.1179 +    0xfcff, 0xfefe, 0xfefd, 0xfefd, 0xfdfe, 0xfcfe, 0xfeff, 0xfdff, 0xfffe, 
 22.1180 +    0xfefd, 0xfdff, 0xffff, 0xfdff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xff00, 
 22.1181 +    0x00ff, 0xfe00, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1182 +    0x0000, 0x0001, 0x0002, 0x0100, 0x0000, 0x0001, 0x0001, 0x0001, 0x0201, 
 22.1183 +    0x0101, 0x0100, 0x0201, 0x0101, 0x0101, 0x0102, 0x0101, 0x0202, 0x0101, 
 22.1184 +    0x0101, 0x0202, 0x0101, 0x0300, 0x0101, 0x0101, 0x0103, 0x0101, 0x0103, 
 22.1185 +    0x0202, 0x0102, 0x0301, 0x0201, 0x0103, 0x0302, 0x0202, 0x0301, 0x0302, 
 22.1186 +    0x0202, 0x0202, 0x0302, 0x0202, 0x0202, 0x0302, 0x0202, 0x0203, 0x0301, 
 22.1187 +    0x0102, 0x0203, 0x0302, 0x0302, 0x0202, 0x0103, 0x0102, 0x0203, 0x0301, 
 22.1188 +    0x0201, 0x0202, 0x0201, 0x0102, 0x0102, 0x0102, 0x0101, 0x0201, 0x0101, 
 22.1189 +    0x0101, 0x0001, 0x0102, 0x0101, 0x0100, 0x0002, 0x0001, 0x0101, 0x0100, 
 22.1190 +    0x0000, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe00, 0x0000, 
 22.1191 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0xff00, 0xff00, 0x0000, 
 22.1192 +    0x00ff, 0xfe00, 0x0002, 0x0000, 0x00fe, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 
 22.1193 +    0xfe00, 0xff00, 0x00ff, 0xffff, 0xfd00, 0xff00, 0xffff, 0xfeff, 0xffff, 
 22.1194 +    0xfefe, 0xfeff, 0xfdff, 0xfffe, 0xfefd, 0xfdff, 0xfeff, 0xfefe, 0xfefe, 
 22.1195 +    0xfffd, 0xfdfe, 0xfefe, 0xfffc, 0xfefd, 0xfdfe, 0xfefe, 0xfdfd, 0xfdfd, 
 22.1196 +    0xfefd, 0xfdfe, 0xfdfe, 0xfefe, 0xfdfd, 0xfefd, 0xfdfe, 0xfeff, 0xfefd, 
 22.1197 +    0xfdfe, 0xfeff, 0xfefe, 0xfdff, 0xfeff, 0xfdff, 0xffff, 0xfdff, 0xfffe, 
 22.1198 +    0xfdff, 0xffff, 0xfefe, 0xfeff, 0xfeff, 0x00ff, 0xffff, 0x00ff, 0xfffe, 
 22.1199 +    0x0000, 0x00ff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 
 22.1200 +    0x0000, 0x0001, 0x0000, 0x0001, 0x0200, 0x0100, 0x0001, 0x0101, 0x0200, 
 22.1201 +    0x0101, 0x0100, 0x0201, 0x0001, 0x0102, 0x0201, 0x0101, 0x0101, 0x0103, 
 22.1202 +    0x0101, 0x0203, 0x0202, 0x0202, 0x0102, 0x0201, 0x0202, 0x0102, 0x0103, 
 22.1203 +    0x0301, 0x0101, 0x0301, 0x0201, 0x0301, 0x0201, 0x0103, 0x0302, 0x0102, 
 22.1204 +    0x0302, 0x0201, 0x0203, 0x0301, 0x0202, 0x0202, 0x0202, 0x0202, 0x0102, 
 22.1205 +    0x0202, 0x0103, 0x0202, 0x0201, 0x0103, 0x0102, 0x0301, 0x0101, 0x0201, 
 22.1206 +    0x0102, 0x0301, 0x0101, 0x0202, 0x0101, 0x0301, 0x0101, 0x0101, 0x0000, 
 22.1207 +    0x0103, 0x0001, 0x0101, 0x0002, 0x0001, 0x0001, 0x0100, 0x0000, 0x0001, 
 22.1208 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1209 +    0x0000, 0x0000, 0xff00, 0x0100, 0x0000, 0x00ff, 0x0000, 0x00ff, 0x0000, 
 22.1210 +    0xff00, 0xff00, 0x0000, 0x00fe, 0xff00, 0x0000, 0x00ff, 0x0000, 0x00ff, 
 22.1211 +    0x0000, 0xfdff, 0x0000, 0x00ff, 0xffff, 0xfeff, 0xff00, 0xffff, 0xfeff, 
 22.1212 +    0xfffe, 0xffff, 0xfffd, 0xfefe, 0xfffe, 0xfefd, 0xfffe, 0xfefd, 0xfefd, 
 22.1213 +    0xfefc, 0xfdfe, 0xfefe, 0xfefc, 0xfefd, 0xfcfe, 0xfdfe, 0xfffe, 0xfefd, 
 22.1214 +    0xfcfe, 0xfdfe, 0xfcfe, 0xfdff, 0xfefe, 0xfdfe, 0xfdfe, 0xfffe, 0xfdfe, 
 22.1215 +    0xfdfe, 0xfeff, 0xfdff, 0xffff, 0xfefe, 0xfffe, 0xfeff, 0xfffe, 0xff00, 
 22.1216 +    0xfffe, 0xff00, 0x00ff, 0xffff, 0xfe00, 0x0000, 0xff00, 0xff00, 0xff00, 
 22.1217 +    0x0000, 0x00ff, 0x0000, 0xfe00, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 
 22.1218 +    0x0000, 0x0000, 0x0100, 0x0200, 0x0000, 0x0101, 0x0100, 0x0201, 0x0101, 
 22.1219 +    0x0100, 0x0101, 0x0102, 0x0100, 0x0101, 0x0102, 0x0101, 0x0201, 0x0201, 
 22.1220 +    0x0101, 0x0202, 0x0301, 0x0201, 0x0201, 0x0102, 0x0202, 0x0102, 0x0103, 
 22.1221 +    0x0302, 0x0201, 0x0301, 0x0201, 0x0301, 0x0201, 0x0202, 0x0201, 0x0102, 
 22.1222 +    0x0302, 0x0201, 0x0301, 0x0101, 0x0202, 0x0201, 0x0201, 0x0102, 0x0301, 
 22.1223 +    0x0101, 0x0202, 0x0201, 0x0201, 0x0101, 0x0301, 0x0101, 0x0201, 0x0102, 
 22.1224 +    0x0101, 0x0201, 0x0201, 0x0001, 0x0103, 0x0100, 0x0101, 0x0102, 0x0102, 
 22.1225 +    0x0200, 0x0101, 0x0101, 0x0300, 0x0001, 0x0001, 0x0001, 0x0201, 0x0100, 
 22.1226 +    0x0000, 0x0001, 0x0001, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1227 +    0x0000, 0x00ff, 0x0000, 0x00ff, 0x0000, 0x0000, 0xff00, 0xff00, 0x0000, 
 22.1228 +    0x00fe, 0x00ff, 0x00ff, 0xff00, 0xff00, 0xfd00, 0x0000, 0xff00, 0xffff, 
 22.1229 +    0xff00, 0xfffe, 0xffff, 0xfeff, 0xffff, 0x00ff, 0xffff, 0xfd00, 0xffff, 
 22.1230 +    0xfeff, 0xfffe, 0xfeff, 0xfeff, 0xffff, 0xfefd, 0xfffd, 0xfdfe, 0xfeff, 
 22.1231 +    0xfdff, 0xfffe, 0xfffd, 0xfffe, 0xfefd, 0xfdff, 0xfffe, 0xfefd, 0xfdff, 
 22.1232 +    0xfffe, 0xfdfe, 0xfeff, 0xfefe, 0xffff, 0xfffd, 0xfeff, 0xfefe, 0xfdff, 
 22.1233 +    0xfeff, 0xfdff, 0xfefe, 0xfefe, 0xffff, 0xfefe, 0xfdff, 0xfeff, 0xfdff, 
 22.1234 +    0xffff, 0xffff, 0xfefe, 0xffff, 0xfffd, 0x00ff, 0xffff, 0xfffe, 0xff00, 
 22.1235 +    0xff00, 0x00ff, 0x00fe, 0x00ff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0100, 
 22.1236 +    0x0000, 0x0100, 0x0200, 0x0100, 0x0100, 0x0001, 0x0201, 0x0101, 0x0001, 
 22.1237 +    0x0101, 0x0102, 0x0001, 0x0301, 0x0101, 0x0002, 0x0103, 0x0101, 0x0301, 
 22.1238 +    0x0101, 0x0201, 0x0101, 0x0301, 0x0201, 0x0101, 0x0202, 0x0101, 0x0202, 
 22.1239 +    0x0101, 0x0203, 0x0301, 0x0101, 0x0301, 0x0101, 0x0302, 0x0201, 0x0301, 
 22.1240 +    0x0201, 0x0200, 0x0003, 0x0301, 0x0002, 0x0202, 0x0200, 0x0202, 0x0101, 
 22.1241 +    0x0101, 0x0103, 0x0201, 0x0300, 0x0201, 0x0102, 0x0201, 0x0200, 0x0102, 
 22.1242 +    0x0101, 0x0102, 0x0003, 0x0103, 0x0100, 0x0103, 0x0100, 0x0201, 0x0102, 
 22.1243 +    0x0001, 0x0101, 0x0200, 0x0001, 0x0102, 0x0000, 0x0103, 0x0100, 0x0200, 
 22.1244 +    0x04fe, 0x0100, 0x02ff, 0x02fe, 0x0200, 0x01fd, 0x0000, 0xfe02, 0xff01, 
 22.1245 +    0x0000, 0x0000, 0xff00, 0x0000, 0x03fd, 0x00ff, 0x00fe, 0xfe00, 0xfe02, 
 22.1246 +    0xff00, 0xff00, 0xfd00, 0x0000, 0x00ff, 0x01fe, 0xfefe, 0x0000, 0x00fe, 
 22.1247 +    0xffff, 0xfd01, 0xffff, 0x00fd, 0xfd01, 0x00ff, 0xfffe, 0xfffe, 0xfe00, 
 22.1248 +    0x00ff, 0x00fd, 0x00fd, 0x00ff, 0xfd00, 0xfe00, 0x00ff, 0xfffe, 0x01fd, 
 22.1249 +    0xfcff, 0x00ff, 0xfefe, 0xfffe, 0x00fb, 0xffff, 0xfefd, 0x03fb, 0x00fa, 
 22.1250 +    0xfefe, 0xfefe, 0xfefe, 0xfffd, 0x00fb, 0xfdff, 0xfb00, 0xf902, 0xfb03, 
 22.1251 +    0xfefd, 0xfdff, 0xffff, 0xfcff, 0xfdff, 0xfc02, 0xfd00, 0xfeff, 0xffff, 
 22.1252 +    0xfeff, 0xfffe, 0xffff, 0x02fd, 0x02fb, 0x00fe, 0xfeff, 0xfc03, 0xff01, 
 22.1253 +    0x00ff, 0xff01, 0x01ff, 0x00ff, 0xfe01, 0x0001, 0x0000, 0x0000, 0x02fe, 
 22.1254 +    0x03ff, 0x01ff, 0x01fe, 0x0001, 0x05fe, 0x05fc, 0x04fd, 0x01ff, 0x02ff, 
 22.1255 +    0xfd03, 0x0100, 0xfe04, 0x0001, 0xfe03, 0x0401, 0xfe02, 0x0102, 0x0001, 
 22.1256 +    0x0102, 0xff01, 0x0501, 0x01ff, 0xff03, 0xfc08, 0xff03, 0xfe04, 0x0004, 
 22.1257 +    0x0401, 0x0200, 0x0201, 0x0101, 0xfb06, 0x0604, 0x05fd, 0x0000, 0x0104, 
 22.1258 +    0x0201, 0x0301, 0x0600, 0x01ff, 0x0201, 0x0300, 0x0101, 0x0202, 0x0201, 
 22.1259 +    0x0300, 0x0102, 0x0103, 0x0002, 0x0302, 0x0101, 0x0103, 0x0201, 0x0002, 
 22.1260 +    0x0102, 0x0101, 0x0103, 0x0101, 0x0200, 0x0101, 0x0101, 0x0200, 0x0001, 
 22.1261 +    0x0002, 0x0101, 0x0000, 0x0102, 0x0101, 0x0300, 0x0100, 0x0100, 0x0100, 
 22.1262 +    0x0000, 0x0001, 0x0000, 0x0003, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 
 22.1263 +    0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 
 22.1264 +    0x00ff, 0xfd00, 0x0000, 0xffff, 0xff00, 0x00ff, 0xfe00, 0xff00, 0xff00, 
 22.1265 +    0xff00, 0x00ff, 0x00fe, 0x00ff, 0xffff, 0xff00, 0xfeff, 0xffff, 0x00ff, 
 22.1266 +    0xfeff, 0xffff, 0xffff, 0xfffe, 0xfffe, 0xfeff, 0xfeff, 0xfeff, 0xfffe, 
 22.1267 +    0xfeff, 0xfeff, 0xffff, 0xfefe, 0xffff, 0xfffd, 0xfefe, 0xfeff, 0xffff, 
 22.1268 +    0xfefd, 0xfeff, 0xfefe, 0xfefe, 0xfffe, 0xfffd, 0xfefe, 0xfffe, 0xfffd, 
 22.1269 +    0xfefe, 0xfefe, 0xfdff, 0xfffe, 0xfffd, 0xfeff, 0xfdff, 0xffff, 0xfffd, 
 22.1270 +    0xffff, 0xfeff, 0xffff, 0xffff, 0xfeff, 0xffff, 0xffff, 0x00fe, 0xffff, 
 22.1271 +    0xff00, 0xff00, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1272 +    0x0000, 0x0200, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0100, 0x0200, 
 22.1273 +    0x0001, 0x0101, 0x0100, 0x0200, 0x0101, 0x0001, 0x0101, 0x0102, 0x0101, 
 22.1274 +    0x0201, 0x0101, 0x0101, 0x0102, 0x0100, 0x0101, 0x0201, 0x0101, 0x0001, 
 22.1275 +    0x0201, 0x0002, 0x0101, 0x0003, 0x0101, 0x0101, 0x0102, 0x0102, 0x0102, 
 22.1276 +    0x0101, 0x0201, 0x0101, 0x0102, 0x0102, 0x0101, 0x0103, 0x0101, 0x0201, 
 22.1277 +    0x0101, 0x0101, 0x0301, 0x0101, 0x0301, 0x0101, 0x0201, 0x0102, 0x0101, 
 22.1278 +    0x0102, 0x0101, 0x0201, 0x0102, 0x0201, 0x0102, 0x0200, 0x0300, 0x0101, 
 22.1279 +    0x0201, 0x0102, 0x0201, 0x0101, 0x0101, 0x0201, 0x0001, 0x0101, 0x0100, 
 22.1280 +    0x0200, 0x0001, 0x0001, 0x0100, 0x0000, 0x0001, 0x0200, 0x0001, 0x0100, 
 22.1281 +    0x0000, 0x0000, 0x0100, 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0xfd00, 
 22.1282 +    0x0000, 0xff00, 0xff00, 0xff00, 0xff00, 0xfe00, 0xff00, 0x0000, 0x00ff, 
 22.1283 +    0xffff, 0x00fe, 0xffff, 0xff00, 0xffff, 0x00fe, 0xffff, 0x00ff, 0xfeff, 
 22.1284 +    0xffff, 0xff00, 0xfdff, 0xff00, 0xffff, 0xfeff, 0xffff, 0xffff, 0xfffe, 
 22.1285 +    0xffff, 0xfeff, 0xffff, 0xffff, 0xfeff, 0xfeff, 0xfeff, 0xffff, 0xfefe, 
 22.1286 +    0xffff, 0xfffe, 0xfefe, 0xffff, 0xfffe, 0xfeff, 0xfffe, 0xffff, 0xfefe, 
 22.1287 +    0xfeff, 0xfeff, 0xffff, 0xfefe, 0xfeff, 0xfdff, 0xffff, 0xfdff, 0xffff, 
 22.1288 +    0xffff, 0xfffd, 0xffff, 0xfeff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xff00, 
 22.1289 +    0x00fe, 0xffff, 0x00ff, 0xffff, 0x00fe, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 
 22.1290 +    0x00fe, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0001, 0x0000, 
 22.1291 +    0x0200, 0x0000, 0x0001, 0x0100, 0x0000, 0x0001, 0x0001, 0x0003, 0x0001, 
 22.1292 +    0x0100, 0x0001, 0x0201, 0x0001, 0x0101, 0x0201, 0x0101, 0x0101, 0x0102, 
 22.1293 +    0x0102, 0x0201, 0x0201, 0x0201, 0x0101, 0x0202, 0x0101, 0x0102, 0x0103, 
 22.1294 +    0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 0x0101, 0x0201, 0x0101, 0x0101, 
 22.1295 +    0x0102, 0x0101, 0x0301, 0x0101, 0x0301, 0x0101, 0x0101, 0x0102, 0x0201, 
 22.1296 +    0x0102, 0x0101, 0x0202, 0x0101, 0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 
 22.1297 +    0x0101, 0x0100, 0x0102, 0x0101, 0x0201, 0x0101, 0x0001, 0x0201, 0x0101, 
 22.1298 +    0x0001, 0x0101, 0x0200, 0x0100, 0x0100, 0x0000, 0x0100, 0x0000, 0x0001, 
 22.1299 +    0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fe, 0x0000, 0x0000, 0x0000, 
 22.1300 +    0x0000, 0xff00, 0x0000, 0x00ff, 0x0000, 0xff00, 0x0000, 0x0000, 0xff00, 
 22.1301 +    0x0000, 0x00fe, 0x0000, 0x00ff, 0x00ff, 0x00ff, 0xff00, 0xff00, 0x00fe, 
 22.1302 +    0xffff, 0x00ff, 0xfeff, 0xff00, 0xffff, 0xff00, 0xfffe, 0x00ff, 0xffff, 
 22.1303 +    0x00ff, 0xfffd, 0xffff, 0xfffe, 0xffff, 0xfeff, 0xffff, 0x00ff, 0xffff, 
 22.1304 +    0xfffe, 0xfffe, 0xfffe, 0xffff, 0xfeff, 0xfffe, 0xfefe, 0xfffe, 0xfffd, 
 22.1305 +    0xfffe, 0xfffe, 0xfffe, 0xfdff, 0xffff, 0xfffd, 0xffff, 0xfffd, 0xffff, 
 22.1306 +    0xffff, 0xfffd, 0xffff, 0xfffe, 0xffff, 0xfeff, 0xffff, 0xfeff, 0xfffe, 
 22.1307 +    0x00ff, 0xffff, 0xfffe, 0xff00, 0x00ff, 0xfeff, 0x00ff, 0xff00, 0xff00, 
 22.1308 +    0xff00, 0x0000, 0x00ff, 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1309 +    0x0000, 0x0000, 0x0000, 0x0200, 0x0001, 0x0000, 0x0001, 0x0100, 0x0000, 
 22.1310 +    0x0100, 0x0000, 0x0001, 0x0002, 0x0101, 0x0100, 0x0001, 0x0002, 0x0101, 
 22.1311 +    0x0100, 0x0201, 0x0101, 0x0101, 0x0100, 0x0102, 0x0101, 0x0201, 0x0101, 
 22.1312 +    0x0100, 0x0201, 0x0102, 0x0101, 0x0102, 0x0101, 0x0201, 0x0201, 0x0201, 
 22.1313 +    0x0101, 0x0101, 0x0103, 0x0101, 0x0103, 0x0101, 0x0301, 0x0101, 0x0301, 
 22.1314 +    0x0101, 0x0202, 0x0101, 0x0202, 0x0201, 0x0101, 0x0102, 0x0101, 0x0201, 
 22.1315 +    0x0101, 0x0101, 0x0002, 0x0101, 0x0001, 0x0101, 0x0002, 0x0101, 0x0101, 
 22.1316 +    0x0002, 0x0101, 0x0100, 0x0100, 0x0200, 0x0001, 0x0001, 0x0100, 0x0000, 
 22.1317 +    0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1318 +    0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 
 22.1319 +    0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0xff00, 0x0000, 0x0000, 
 22.1320 +    0xfe00, 0x0000, 0xff00, 0x0000, 0x00ff, 0x0000, 0xff00, 0xff00, 0xfe00, 
 22.1321 +    0xff00, 0xff00, 0xff00, 0x00ff, 0x00fe, 0xffff, 0xffff, 0x00ff, 0xfefe, 
 22.1322 +    0xffff, 0xfefe, 0xffff, 0xfffd, 0xfeff, 0xfffe, 0xfffe, 0xfffd, 0xfefe, 
 22.1323 +    0xfffe, 0xfefe, 0xfffe, 0xfffd, 0xfeff, 0xfffd, 0xfffe, 0xfffd, 0xfdff, 
 22.1324 +    0xfeff, 0xfeff, 0xfeff, 0xffff, 0xfefe, 0xffff, 0xfffe, 0xffff, 0xfeff, 
 22.1325 +    0xffff, 0xffff, 0xfeff, 0xff00, 0xff00, 0x00ff, 0x0000, 0xfeff, 0xff00, 
 22.1326 +    0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x00ff, 0x0000, 0x0000, 0xfe00, 
 22.1327 +    0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 
 22.1328 +    0x0002, 0x0100, 0x0000, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0100, 
 22.1329 +    0x0000, 0x0101, 0x0100, 0x0200, 0x0001, 0x0101, 0x0100, 0x0001, 0x0102, 
 22.1330 +    0x0100, 0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 0x0101, 0x0201, 0x0101, 
 22.1331 +    0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 0x0101, 0x0001, 0x0103, 0x0101, 
 22.1332 +    0x0102, 0x0101, 0x0201, 0x0201, 0x0101, 0x0102, 0x0101, 0x0201, 0x0100, 
 22.1333 +    0x0101, 0x0201, 0x0101, 0x0100, 0x0101, 0x0200, 0x0101, 0x0101, 0x0102, 
 22.1334 +    0x0001, 0x0101, 0x0102, 0x0001, 0x0101, 0x0100, 0x0102, 0x0001, 0x0101, 
 22.1335 +    0x0200, 0x0100, 0x0001, 0x0101, 0x0200, 0x0001, 0x0101, 0x0100, 0x0100, 
 22.1336 +    0x0000, 0x0002, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 
 22.1337 +    0x0000, 0xfe00, 0xff00, 0x0000, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0xfe00, 
 22.1338 +    0xff00, 0x0000, 0xff00, 0x0000, 0xff00, 0x0000, 0x00ff, 0x0000, 0xfe00, 
 22.1339 +    0x0000, 0x0000, 0xff00, 0xff00, 0xff00, 0x00ff, 0x00fe, 0x00ff, 0xffff, 
 22.1340 +    0xffff, 0xfd00, 0xff00, 0xffff, 0xfffe, 0xffff, 0xfeff, 0xffff, 0xfeff, 
 22.1341 +    0xfefe, 0xffff, 0xfffd, 0xffff, 0xfffd, 0xfeff, 0xfffe, 0xfeff, 0xfffe, 
 22.1342 +    0xfffe, 0xfffe, 0xfffe, 0xfeff, 0xfffe, 0xfeff, 0xffff, 0xffff, 0xfefe, 
 22.1343 +    0xffff, 0x00ff, 0xfffe, 0xff00, 0xff00, 0xfeff, 0xff00, 0xff00, 0xff00, 
 22.1344 +    0x0000, 0x00ff, 0xfe00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0x0000, 
 22.1345 +    0x00fe, 0x00ff, 0xff00, 0x0000, 0x00ff, 0xff00, 0x0000, 0xfe00, 0x0000, 
 22.1346 +    0xff00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0100, 0x0000, 
 22.1347 +    0x0000, 0x0100, 0x0000, 0x0000, 0x0002, 0x0001, 0x0001, 0x0001, 0x0201, 
 22.1348 +    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0102, 0x0101, 0x0201, 0x0100, 
 22.1349 +    0x0001, 0x0101, 0x0102, 0x0101, 0x0301, 0x0100, 0x0101, 0x0103, 0x0201, 
 22.1350 +    0x0102, 0x0101, 0x0301, 0x0100, 0x0101, 0x0301, 0x0101, 0x0001, 0x0002, 
 22.1351 +    0x0101, 0x0101, 0x0201, 0x0101, 0x0101, 0x0200, 0x0101, 0x0100, 0x0201, 
 22.1352 +    0x0101, 0x01ff, 0x0101, 0x0100, 0x0002, 0x02fe, 0x0001, 0x0101, 0x0000, 
 22.1353 +    0x0001, 0x0002, 0x0001, 0x0100, 0x0100, 0x0100, 0x00ff, 0x0001, 0x0002, 
 22.1354 +    0x0000, 0x0100, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 
 22.1355 +    0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x00ff, 
 22.1356 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0xff00, 0x0000, 
 22.1357 +    0xff00, 0x0000, 0xff00, 0xfe00, 0x0000, 0xff00, 0x00ff, 0x00ff, 0xff00, 
 22.1358 +    0xfe00, 0xffff, 0x0000, 0xffff, 0xfe00, 0x0000, 0xfffe, 0x0000, 0x00fe, 
 22.1359 +    0x00fe, 0xffff, 0xff00, 0x00ff, 0xfffe, 0xff00, 0x00ff, 0xfeff, 0xff00, 
 22.1360 +    0xff00, 0xffff, 0xff00, 0x0000, 0xfffe, 0xffff, 0xff00, 0xfe00, 0x00ff, 
 22.1361 +    0x00ff, 0xffff, 0x0000, 0x00fe, 0xffff, 0x0000, 0x00ff, 0x00ff, 0x00ff, 
 22.1362 +    0x00fe, 0xffff, 0x0000, 0x00ff, 0x00ff, 0x00fe, 0x00ff, 0xff00, 0xff00, 
 22.1363 +    0x0000, 0x00ff, 0xfe00, 0x0000, 0x0000, 0x00ff, 0x0000, 0xff00, 0x0001, 
 22.1364 +    0x00ff, 0x0000, 0x0100, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1365 +    0x0100, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0002, 0x0000, 
 22.1366 +    0x0001, 0x0000, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100, 0x0000, 0x0002, 
 22.1367 +    0x0001, 0x0001, 0x0001, 0x0100, 0x0200, 0x0100, 0x0100, 0x0100, 0x0100, 
 22.1368 +    0x0000, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0100, 
 22.1369 +    0x0100, 0x0100, 0x0100, 0x0200, 0x0000, 0x0100, 0x0000, 0x0001, 0x0000, 
 22.1370 +    0x0001, 0x0000, 0x0001, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0000, 0x0000, 
 22.1371 +    0x0002, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 
 22.1372 +    0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 
 22.1373 +    0x0000, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x01ff, 
 22.1374 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 
 22.1375 +    0x0000, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 
 22.1376 +    0xff00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 
 22.1377 +    0xfe00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 
 22.1378 +    0xff00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 
 22.1379 +    0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 
 22.1380 +    0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1381 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 
 22.1382 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1383 +    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0000, 
 22.1384 +    0x6473, 0x0031, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1385 +    0x0000, 0x0000, 0x0100, 0x2800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1386 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1387 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1388 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1389 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1390 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1391 +    0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 
 22.1392 +    0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1393 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 
 22.1394 +    0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 
 22.1395 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1396 +    0x0000, 0x0000, 0x0100, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1397 +    0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1398 +    0x0000, 0x0000, 0x0000, 0x0e00, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1399 +    0x4000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1400 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0xfafb, 0xff00, 
 22.1401 +    0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0xf833, 0xdbe3, 0xf8e6, 0x2113, 
 22.1402 +    0x121f, 0xd400, 0x0000, 0x2b00, 0x4095, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1403 +    0x0000, 0x0000, 0x0000, 0x7308, 0xe7cf, 0xf5ff, 0xbaec, 0x08be, 0xce4e, 
 22.1404 +    0x00d3, 0x2102, 0x5171, 0xc6fe, 0x0dd8, 0x1616, 0xf305, 0x1538, 0x0000, 
 22.1405 +    0xaab1, 0xce19, 0x0030, 0x4eb7, 0x0204, 0x930d, 0xfe70, 0xc900, 0xd9f2, 
 22.1406 +    0xba3e, 0xad44, 0x0305, 0x02f1, 0x3b04, 0x3849, 0xbeea, 0x17d7, 0x1c22, 
 22.1407 +    0x3af6, 0x0ee6, 0x0045, 0xb000, 0x3818, 0x14ec, 0x0ee4, 0x000e, 0x0cf3, 
 22.1408 +    0xb3f0, 0x43e3, 0x0bc4, 0x2595, 0x3637, 0x82e9, 0x3e17, 0xf89c, 0x03ef, 
 22.1409 +    0xc93c, 0x0213, 0xea0f, 0xffed, 0x0000, 0x4f00, 0xd9fd, 0x30de, 0xa76f, 
 22.1410 +    0x96ea, 0x2014, 0x7e00, 0x5ed1, 0x4bf7, 0x2dd2, 0x5e3f, 0x7a52, 0xf3a9, 
 22.1411 +    0xcb08, 0x72b0, 0x1463, 0x1b10, 0xf95e, 0xc2df, 0xceb3, 0x3a06, 0xe7e7, 
 22.1412 +    0xa422, 0xc691, 0x7d59, 0x04fd, 0x6a22, 0xbdb7, 0x280b, 0x1d36, 0x35b7, 
 22.1413 +    0xcbc2, 0x562f, 0x066f, 0x3eec, 0x595c, 0xf5f8, 0x28f5, 0x0316, 0x27d9, 
 22.1414 +    0x425b, 0x16fb, 0x68e6, 0xbbfc, 0x2304, 0xca8d, 0xe259, 0xf6b7, 0xeeb6, 
 22.1415 +    0xb7a6, 0x1e0d, 0x19cb, 0xbc40, 0xb666, 0xb413, 0x2a6a, 0x698f, 0xa20a, 
 22.1416 +    0xf7e7, 0x76f5, 0xddd4, 0xef03, 0x8cd4, 0x7e50, 0x0f1d, 0x13c4, 0x3952, 
 22.1417 +    0xe0e4, 0x02fc, 0x19cd, 0x0b37, 0x5425, 0x872e, 0x61d6, 0x592f, 0x033c, 
 22.1418 +    0x28ee, 0x0b91, 0xcd1a, 0x6377, 0x21ed, 0xc592, 0x84e0, 0x01d3, 0xfc19, 
 22.1419 +    0x1703, 0x9176, 0xfcf1, 0xc259, 0xdc2d, 0x2f20, 0xddde, 0x3edb, 0x8da6, 
 22.1420 +    0x0bb0, 0x42a8, 0x128a, 0xeaf3, 0xe6a1, 0xbcca, 0x551b, 0x4058, 0x23f8, 
 22.1421 +    0x2e8a, 0x8234, 0xff1c, 0x40f9, 0xe1f5, 0x6c8d, 0xf2f6, 0xdc4c, 0xcd3b, 
 22.1422 +    0xdc9d, 0x103a, 0xba53, 0x6179, 0xdfeb, 0x5100, 0xd531, 0xe7bc, 0x7935, 
 22.1423 +    0x7b71, 0xc8ac, 0x78f6, 0x36b4, 0xc401, 0xf41c, 0x284f, 0x10dd, 0x93d3, 
 22.1424 +    0x366d, 0xe746, 0xfb87, 0x5544, 0x2da9, 0x9fef, 0x8406, 0x6ade, 0xe769, 
 22.1425 +    0x0003, 0x221b, 0x9bf9, 0x370b, 0xee0a, 0x10dd, 0x21a4, 0x4ecf, 0xa9d5, 
 22.1426 +    0x5005, 0x5bf3, 0xcb1d, 0x30e1, 0x16a3, 0x0a2f, 0x1cbd, 0xfa1b, 0xef30, 
 22.1427 +    0x31ff, 0xa9f1, 0x04d4, 0x6656, 0x1cbb, 0x82fb, 0xfd71, 0x2ff4, 0xc61e, 
 22.1428 +    0xe0fd, 0x084a, 0xa0fc, 0xe848, 0x0e0e, 0x47da, 0xc9c7, 0xdf05, 0x3925, 
 22.1429 +    0xebc6, 0x45cf, 0xf21c, 0xe7ff, 0x50da, 0xead1, 0xd911, 0x5a13, 0xc5f2, 
 22.1430 +    0x0cea, 0xde1c, 0x4234, 0x3fd3, 0x2e9d, 0xede6, 0xe257, 0x35c4, 0xf1f2, 
 22.1431 +    0x17f0, 0x17f1, 0xd3fb, 0x7901, 0xcdfc, 0xfded, 0x16c6, 0xf416, 0x232a, 
 22.1432 +    0xc1da, 0x1612, 0xdae3, 0xf360, 0x70b0, 0xfdfc, 0x15d9, 0xe7cd, 0x55f2, 
 22.1433 +    0xd129, 0xb93a, 0x27e9, 0xbdeb, 0x0059, 0x10e1, 0x2ed6, 0xde10, 0xf70a, 
 22.1434 +    0xba08, 0xba6a, 0x1402, 0xd3fe, 0x212f, 0xe4b8, 0x1b5d, 0x09e1, 0x0f12, 
 22.1435 +    0x2ebf, 0x15c2, 0x05f7, 0x4511, 0xefc4, 0xe723, 0x0919, 0x34cf, 0xe6cc, 
 22.1436 +    0x1222, 0xe837, 0xeeeb, 0xf810, 0xd2ee, 0xf829, 0xf6d9, 0xe360, 0xe3fe, 
 22.1437 +    0x1a0e, 0x0ccd, 0x18fc, 0x0502, 0x0afa, 0xdbf8, 0xd82d, 0xef12, 0x20f3, 
 22.1438 +    0xc824, 0x2b16, 0xe2f1, 0xf602, 0xb630, 0x4630, 0x1dca, 0xf6d3, 0x14f9, 
 22.1439 +    0x000c, 0x55f9, 0xab01, 0xc91e, 0x1cb7, 0xf94e, 0x043b, 0xfcd5, 0xdaf9, 
 22.1440 +    0x0ae1, 0x0c08, 0x0b3b, 0xcff9, 0x1fe3, 0x0f17, 0xe9bc, 0x1507, 0x1e12, 
 22.1441 +    0xf400, 0x0eff, 0x04d4, 0xec06, 0x2105, 0xdeee, 0xf328, 0x030c, 0x43dc, 
 22.1442 +    0xe7fc, 0xe817, 0xe607, 0xfbfb, 0xf50d, 0xd04d, 0x321d, 0xd2f3, 0x0cd7, 
 22.1443 +    0x201b, 0x47a2, 0xdd0e, 0x1fdd, 0x37dc, 0xec1c, 0xd8d6, 0x2a1f, 0x0107, 
 22.1444 +    0xe7fd, 0x22df, 0xdd30, 0xf0d9, 0x0623, 0x12e7, 0x151f, 0xe3e8, 0x47cd, 
 22.1445 +    0xda0b, 0x2809, 0xdcf0, 0xfe08, 0x0def, 0x270c, 0xd702, 0xe00a, 0x011b, 
 22.1446 +    0x14f9, 0x1acc, 0x400f, 0xc5de, 0x2b0e, 0xf7de, 0x03ff, 0x2204, 0xc539, 
 22.1447 +    0x16e7, 0xf4ed, 0xf003, 0x1cf7, 0x0bf0, 0xe727, 0x11fd, 0x23ef, 0xf8de, 
 22.1448 +    0xed0d, 0xe321, 0xfd01, 0xf011, 0x001f, 0x36b3, 0xdb16, 0x18e9, 0x000c, 
 22.1449 +    0x0af5, 0xfcfe, 0x2523, 0x00b3, 0x2dfd, 0xdb01, 0xfeff, 0xf1ef, 0x2720, 
 22.1450 +    0xef1a, 0xe5d5, 0x0b14, 0x34f3, 0x09f3, 0xfcc4, 0xfc1f, 0x070d, 0x1ae0, 
 22.1451 +    0xfeee, 0xeb0e, 0xe710, 0xe73a, 0xe708, 0x0807, 0xfae8, 0x3200, 0xf619, 
 22.1452 +    0xf3d2, 0x1eff, 0xbf2c, 0x17ef, 0x2cd0, 0xe939, 0x1bce, 0xed03, 0x2fe8, 
 22.1453 +    0x1df2, 0xc105, 0x33fd, 0x13de, 0x14e6, 0x022b, 0x0ce9, 0xcff2, 0xee06, 
 22.1454 +    0x142e, 0x27f1, 0xfdf0, 0xfff5, 0xf6f1, 0x1e03, 0xf5ed, 0xf903, 0x150d, 
 22.1455 +    0x03d3, 0x2c0c, 0xdef3, 0x0ddd, 0xfe19, 0x0630, 0xeddf, 0x0207, 0x0118, 
 22.1456 +    0xdc0c, 0x02d4, 0x2428, 0xf9ff, 0x01e2, 0x22f7, 0xed04, 0x1af0, 0x03ef, 
 22.1457 +    0xf9ff, 0xeb19, 0x09ec, 0x0112, 0xd314, 0x000f, 0x00ed, 0xf71f, 0xfa21, 
 22.1458 +    0xe7fb, 0x0204, 0x20dd, 0x12f9, 0xf103, 0xf504, 0x010d, 0x39c8, 0xfff5, 
 22.1459 +    0x0710, 0x0ff2, 0xfaeb, 0x08fa, 0x12fa, 0x0cfa, 0xe7f0, 0x071c, 0xfd0a, 
 22.1460 +    0xf6fc, 0xcf19, 0x0c03, 0x1405, 0xf207, 0x01e4, 0x121c, 0xf906, 0x0ad6, 
 22.1461 +    0xfd01, 0x050b, 0x02e6, 0xf027, 0x11e4, 0x1a15, 0xe5dd, 0xf901, 0xfe19, 
 22.1462 +    0x1610, 0xfbd8, 0x1cf5, 0xfd03, 0xfaf0, 0xde19, 0x2401, 0xd90d, 0x0402, 
 22.1463 +    0x1513, 0xe701, 0xfcea, 0x17fd, 0xf516, 0xfe0b, 0xfbe3, 0xf821, 0x13f5, 
 22.1464 +    0xdbf9, 0xeb0a, 0x2312, 0xfcf7, 0xeaff, 0x1301, 0x020e, 0xe5f9, 0xe511, 
 22.1465 +    0xf922, 0xf905, 0x0bf7, 0xf7fd, 0xf203, 0xf705, 0xf61c, 0x0424, 0xfcdf, 
 22.1466 +    0x08fb, 0x12ff, 0xf7f1, 0x1af5, 0xda22, 0xeeec, 0x1c21, 0x14e6, 0xe1f5, 
 22.1467 +    0x040b, 0x0a03, 0xf100, 0x12ef, 0x02fa, 0x1009, 0xe025, 0x11d3, 0xe81d, 
 22.1468 +    0x0afc, 0xf71a, 0x04f8, 0x0efb, 0xf4ea, 0x08fb, 0x1afe, 0x0803, 0xe1e9, 
 22.1469 +    0x1a1f, 0xf0ce, 0x20fd, 0xec20, 0xf2f2, 0xfa0e, 0xf4ff, 0x0e0f, 0x04f7, 
 22.1470 +    0x26e2, 0xd915, 0xfefc, 0x1908, 0xe90c, 0xfd04, 0x0dea, 0x110e, 0xfde9, 
 22.1471 +    0xf619, 0xefe8, 0x270e, 0x000f, 0xeedf, 0x270e, 0x03e8, 0x0ae3, 0x15e8, 
 22.1472 +    0xf013, 0xfd01, 0x03e3, 0xee0e, 0x1614, 0x02fe, 0x07d0, 0xef24, 0xfde8, 
 22.1473 +    0x1e1c, 0x1ade, 0xcdef, 0x3608, 0xfe07, 0x29df, 0xdc12, 0xeef5, 0xf900, 
 22.1474 +    0x0e25, 0xfd0f, 0x07e2, 0xeb0a, 0xf8fb, 0x0116, 0x0708, 0x07de, 0xf115, 
 22.1475 +    0x19f8, 0x05ee, 0xfb03, 0x1111, 0xc906, 0x0002, 0x05f2, 0x0a0e, 0xfffb, 
 22.1476 +    0x1c08, 0xe9d0, 0x1706, 0xde0e, 0x0d0b, 0x15f3, 0x0b06, 0xe6fe, 0xe706, 
 22.1477 +    0x3bf9, 0xd2ff, 0xfd09, 0x1a15, 0xdde0, 0x070e, 0xf813, 0x1d20, 0xd9e1, 
 22.1478 +    0x02f3, 0xf717, 0x150d, 0x02f4, 0x1101, 0xdddd, 0x2e0c, 0x08f0, 0xf80c, 
 22.1479 +    0x0fd6, 0x00fb, 0x1a14, 0xd6e5, 0x1309, 0x1501, 0x08e8, 0xd804, 0x2319, 
 22.1480 +    0xecef, 0x0aff, 0x0df8, 0x091f, 0xf9d7, 0x01f9, 0xfb0b, 0x041f, 0xf4fe, 
 22.1481 +    0x04f0, 0x0414, 0xecf0, 0x1912, 0xfdec, 0xdbfa, 0x0f11, 0xff13, 0xf5fb, 
 22.1482 +    0xfd11, 0x04d4, 0xf418, 0x1af2, 0x0d04, 0x020c, 0xe2e9, 0x0bfc, 0x180c, 
 22.1483 +    0xfaf6, 0x10f1, 0x0cff, 0xf801, 0xeefd, 0x0f1b, 0xe901, 0xee0c, 0xf5f5, 
 22.1484 +    0x0816, 0x0606, 0xedf5, 0x1d0a, 0xffe5, 0xf9f6, 0xfd15, 0x13ff, 0xfff4, 
 22.1485 +    0xf3ee, 0x060b, 0x1206, 0xf5fb, 0x04f0, 0x0c03, 0x0709, 0xfaea, 0x06f8, 
 22.1486 +    0xfe05, 0x0d14, 0xf208, 0xf6f4, 0x0b0a, 0xf1f8, 0xee1c, 0x0afb, 0xf208, 
 22.1487 +    0xfdf0, 0x0b04, 0x08fa, 0xf6f5, 0x04ff, 0x170a, 0xf5fd, 0xe7fb, 0xfa13, 
 22.1488 +    0xda0b, 0xfd2f, 0x11fa, 0xeced, 0x1202, 0xf902, 0xf70f, 0xfd0d, 0x18e7, 
 22.1489 +    0x00fe, 0xfd09, 0xf010, 0x0308, 0xf306, 0xf4fa, 0x0414, 0x0fef, 0x06f0, 
 22.1490 +    0xfff5, 0x16fa, 0x10e6, 0x0401, 0x0002, 0xf508, 0xdcfa, 0x130e, 0x0802, 
 22.1491 +    0x06e2, 0xf90e, 0xf911, 0xe617, 0xfff6, 0x15f6, 0xf8fe, 0x0010, 0x24ee, 
 22.1492 +    0xe8f8, 0xfd09, 0xff05, 0x15f7, 0x0cf9, 0x0af6, 0x06ff, 0xfbf1, 0xf915, 
 22.1493 +    0x0bf9, 0xf3f9, 0x0ffc, 0x0007, 0xecfd, 0x0008, 0xf20d, 0x17e5, 0xec02, 
 22.1494 +    0x0d09, 0x10f7, 0xe40b, 0x07ed, 0x0709, 0x0500, 0x06fa, 0xf702, 0xfd0b, 
 22.1495 +    0x00f4, 0xfefa, 0x0210, 0xf713, 0x03ff, 0xf5fd, 0x150a, 0xeff8, 0xfc02, 
 22.1496 +    0x000b, 0xf614, 0x04f6, 0x05f4, 0xf904, 0x0a06, 0xfbf0, 0xf909, 0xea15, 
 22.1497 +    0x0cf3, 0x0205, 0xf3f8, 0xfafa, 0x0403, 0xfe10, 0xfdfe, 0xfc06, 0x05f2, 
 22.1498 +    0xfc06, 0x0cf6, 0x080a, 0xf6fc, 0x0613, 0x02fa, 0xf6fd, 0xfa0b, 0x16f5, 
 22.1499 +    0xfd0d, 0x06ec, 0xf705, 0xfd0b, 0xfd01, 0x01fd, 0xfcfe, 0x17f4, 0x00f7, 
 22.1500 +    0xf8f2, 0x0305, 0xf8fe, 0x030a, 0x0707, 0x02f1, 0xf4fb, 0xfb07, 0xff08, 
 22.1501 +    0x07fd, 0x01fe, 0x0b11, 0xffec, 0xf00c, 0xf901, 0x1101, 0xf7fe, 0x0c0e, 
 22.1502 +    0xf9f6, 0x0102, 0x02f5, 0x0505, 0xffff, 0x01ff, 0xfd00, 0xf4ff, 0x0e02, 
 22.1503 +    0xfef7, 0xf2ff, 0x0909, 0x0302, 0xfdf9, 0x1407, 0xecf2, 0x0301, 0xfc07, 
 22.1504 +    0x0b03, 0xfefc, 0x0ef4, 0xf801, 0x0dfa, 0xfefc, 0xfe0b, 0xe904, 0x0c0d, 
 22.1505 +    0x03fc, 0xf6fd, 0x0301, 0x0af8, 0xf801, 0xff01, 0xff0b, 0x0bec, 0xfafb, 
 22.1506 +    0x0d0f, 0xfefa, 0xf304, 0xf902, 0x03f9, 0x0704, 0xfffe, 0xfffb, 0x0ff9, 
 22.1507 +    0x0407, 0xee06, 0xfb00, 0x020e, 0xf6f4, 0x0f00, 0xfe05, 0x03fc, 0xfeef, 
 22.1508 +    0x0709, 0x04f9, 0xfc02, 0x0a02, 0xfbff, 0xf9f9, 0xf908, 0xfe12, 0xfafa, 
 22.1509 +    0x07fe, 0x0510, 0xf2fd, 0x0301, 0xf303, 0x0004, 0x0af3, 0x050c, 0xf7f1, 
 22.1510 +    0x11fc, 0xfc00, 0xff06, 0x08fb, 0xfcfb, 0x0aff, 0xfafc, 0xfe07, 0xfbf4, 
 22.1511 +    0xf609, 0xfc1a, 0x01ee, 0x0208, 0x0007, 0xffef, 0x0005, 0x0603, 0xf9fe, 
 22.1512 +    0x0905, 0xfdff, 0xf206, 0x0cfb, 0x0207, 0xf600, 0x0305, 0x0000, 0xfefb, 
 22.1513 +    0x0004, 0x0afd, 0x05f1, 0xf6ff, 0x0afe, 0xf40b, 0x07f8, 0x0205, 0x03f7, 
 22.1514 +    0x06fd, 0xf100, 0x0009, 0x04f8, 0xff04, 0x0000, 0x07fc, 0x0600, 0xef03, 
 22.1515 +    0x00fd, 0x080a, 0xfcf9, 0x0204, 0x0103, 0x0604, 0xf8fa, 0x00ff, 0x000b, 
 22.1516 +    0x03f5, 0xf30a, 0x0601, 0x00fe, 0x00fa, 0xfe12, 0xfdea, 0x0705, 0xfffc, 
 22.1517 +    0x010b, 0xf2fb, 0x07ff, 0x0300, 0x09fb, 0x07f9, 0x00f6, 0xf907, 0x09f7, 
 22.1518 +    0x050d, 0xf6f8, 0x0704, 0xff07, 0xfaf7, 0xfa03, 0x0805, 0xfcf9, 0x0404, 
 22.1519 +    0xfc03, 0x06fd, 0x05fb, 0x0206, 0x02f5, 0x09fc, 0x00ff, 0xfefe, 0xff01, 
 22.1520 +    0xfe07, 0xf8fa, 0x0704, 0x07f7, 0xfb03, 0xf702, 0x12fb, 0xfbfb, 0x02fe, 
 22.1521 +    0xff02, 0xfbfc, 0x0e0b, 0xf8f8, 0xfefe, 0xfffb, 0x0703, 0x07ff, 0xf609, 
 22.1522 +    0xfcf9, 0x0302, 0x0206, 0x06fe, 0xef06, 0x04ff, 0x0102, 0xfc02, 0xfd05, 
 22.1523 +    0x02f8, 0x0703, 0x02fb, 0xfc04, 0xff00, 0x07f4, 0x0703, 0x05f7, 0xfd01, 
 22.1524 +    0x0002, 0xf9fc, 0x0afb, 0xfb05, 0x03fe, 0xf906, 0x06f3, 0x0407, 0xf900, 
 22.1525 +    0x05fa, 0x0200, 0xfdfe, 0xfc0f, 0xfff5, 0xfe07, 0x01fb, 0x0507, 0xf805, 
 22.1526 +    0x07fa, 0xff07, 0x0100, 0x01fe, 0x11f4, 0xfffa, 0xfbff, 0x0309, 0x04f6, 
 22.1527 +    0x0302, 0xfef3, 0xff05, 0x0200, 0x03ff, 0xfd00, 0x00fd, 0x0304, 0xf7f8, 
 22.1528 +    0xff04, 0x0901, 0x00fe, 0xfef5, 0x0202, 0x0a04, 0xf5fa, 0x000e, 0x0000, 
 22.1529 +    0xfd04, 0xfd02, 0x0801, 0xfdfd, 0xfef9, 0x020d, 0x02ff, 0xfbf9, 0x0502, 
 22.1530 +    0xff05, 0xfefb, 0xfc03, 0x0102, 0x02fc, 0xfefe, 0x02fd, 0xfd03, 0x03f8, 
 22.1531 +    0x0509, 0x00fa, 0xf800, 0xfff6, 0x0112, 0x04f9, 0x0203, 0xfd00, 0xfa05, 
 22.1532 +    0xfa01, 0xfd07, 0x08f9, 0xfb0a, 0x02fb, 0x0700, 0xfbf9, 0x000b, 0xfb06, 
 22.1533 +    0x05f4, 0xf906, 0x0501, 0x00fd, 0x0100, 0xf900, 0x0101, 0x0000, 0xfd02, 
 22.1534 +    0x0302, 0x01fe, 0xfefe, 0xff04, 0x01ff, 0xf9ff, 0x0b01, 0x00fc, 0xff00, 
 22.1535 +    0xfffa, 0x0003, 0x0201, 0xfd06, 0xfaff, 0x0306, 0xfffa, 0x0201, 0x0307, 
 22.1536 +    0x00ff, 0xfefa, 0xfafe, 0x0606, 0x05fb, 0xff00, 0xfbfe, 0xfd09, 0x06fe, 
 22.1537 +    0xfcfe, 0x00fd, 0xff00, 0x03ff, 0xfd02, 0xff03, 0x00ff, 0x00fd, 0x0001, 
 22.1538 +    0x0404, 0x00fb, 0xfe03, 0x00ff, 0x02ff, 0x0403, 0xf9fb, 0x09fe, 0x05fc, 
 22.1539 +    0xfa03, 0x04fc, 0x0301, 0xffff, 0x01fc, 0x0301, 0x0003, 0xfefe, 0xfffd, 
 22.1540 +    0x0201, 0xfe01, 0xfc00, 0x03ff, 0x00fe, 0x0000, 0xfb04, 0x06ff, 0x0005, 
 22.1541 +    0xf9ff, 0x05fc, 0x0201, 0xfb06, 0xfefb, 0x0203, 0x0000, 0x0001, 0x0502, 
 22.1542 +    0xfdfb, 0xfe01, 0x0601, 0xfdfe, 0x01ff, 0x01fe, 0xfd03, 0x02fd, 0xfe02, 
 22.1543 +    0x0002, 0xff00, 0x05fb, 0xfd03, 0x00fc, 0x00fd, 0xff05, 0xfd03, 0x0201, 
 22.1544 +    0xfefd, 0x0300, 0x0201, 0x00ff, 0x02fd, 0xfe04, 0x00fe, 0x0000, 0x0101, 
 22.1545 +    0x01ff, 0x01ff, 0x0005, 0xff00, 0xfffd, 0x0300, 0x01ff, 0x0002, 0xfdfb, 
 22.1546 +    0x0201, 0x0100, 0x00fd, 0x0101, 0xfe01, 0xfc00, 0x02ff, 0xff01, 0x0003, 
 22.1547 +    0xfefe, 0x01fd, 0x0003, 0x02ff, 0xfe00, 0x0301, 0xffff, 0xfd02, 0x03ff, 
 22.1548 +    0x0100, 0xff01, 0x0002, 0x02ff, 0xfeff, 0x0300, 0x0104, 0xfdfe, 0xfffe, 
 22.1549 +    0x0101, 0xff01, 0x00ff, 0x0301, 0xfffd, 0x01fe, 0x01ff, 0xff00, 0xfefd, 
 22.1550 +    0x0200, 0x0201, 0xfe00, 0xfffe, 0x0302, 0xff01, 0xfefd, 0x0401, 0x0001, 
 22.1551 +    0x02fe, 0x0000, 0x0100, 0xff00, 0x0000, 0x0001, 0x0201, 0xff00, 0x0001, 
 22.1552 +    0xffff, 0xfe02, 0x03fe, 0xfeff, 0x0000, 0x0000, 0x0000, 0x0001, 0xff00, 
 22.1553 +    0x00fe, 0x0001, 0xfd00, 0x0101, 0x0000, 0x0001, 0xffff, 0xfe01, 0x0103, 
 22.1554 +    0x01ff, 0x00fe, 0x0000, 0x0000, 0x0102, 0x01ff, 0xfd02, 0x0100, 0x0300, 
 22.1555 +    0xffff, 0x01ff, 0x0001, 0x00fe, 0x0100, 0x0100, 0x00fd, 0x01ff, 0x0000, 
 22.1556 +    0x0000, 0x0100, 0xfeff, 0x0001, 0xff01, 0x00ff, 0x0100, 0x0000, 0xff01, 
 22.1557 +    0x0000, 0x0000, 0xff01, 0x0100, 0x0000, 0x0301, 0x00ff, 0x0700, 0x0001, 
 22.1558 +    0x6200, 0x3264, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1559 +    0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1560 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1561 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1562 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1563 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1564 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1565 +    0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 
 22.1566 +    0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1567 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 
 22.1568 +    0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 
 22.1569 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1570 +    0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1571 +    0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1572 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1573 +    0x0000, 0x0040, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1574 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 
 22.1575 +    0xffff, 0x0000, 0x0000, 0xfe00, 0x00fe, 0x0101, 0xfbfe, 0xfffd, 0xfe00, 
 22.1576 +    0xfefd, 0xffff, 0xfdff, 0xfdfe, 0xfdfd, 0xfcfd, 0xfbfb, 0x00fe, 0xfc00, 
 22.1577 +    0xfafa, 0xfdfc, 0xfcfb, 0xfefe, 0xfcfd, 0xfcfc, 0xfffd, 0xfeff, 0xfefd, 
 22.1578 +    0xfffe, 0x0000, 0x0000, 0x0200, 0x0302, 0x0604, 0x0a09, 0x0608, 0x0506, 
 22.1579 +    0x0706, 0x0808, 0x0809, 0x0608, 0x0304, 0x0403, 0x0504, 0x0707, 0x0606, 
 22.1580 +    0x0505, 0x0506, 0x0505, 0x0304, 0x0303, 0x0003, 0xfdfe, 0x00fe, 0xffff, 
 22.1581 +    0xfdff, 0xfcfc, 0xfdfd, 0xfdfd, 0xfafb, 0xfafa, 0xfcfb, 0xfbfb, 0xfcfc, 
 22.1582 +    0xfdfd, 0xfdfe, 0xfdfd, 0xfdfd, 0xfcfb, 0xfffe, 0xfeff, 0x0000, 0x0102, 
 22.1583 +    0x02ff, 0x0304, 0x0203, 0x0202, 0x0404, 0x0203, 0x0705, 0x0508, 0x0606, 
 22.1584 +    0x0605, 0x0707, 0x0607, 0x0706, 0x0405, 0x0404, 0x0405, 0x0003, 0x0200, 
 22.1585 +    0x0103, 0x0101, 0x0001, 0x0000, 0x0000, 0x0000, 0xff00, 0xffff, 0xfeff, 
 22.1586 +    0xfbfb, 0xfafa, 0xf9f9, 0xf8f8, 0xf8f9, 0xf7f7, 0xf8f7, 0xf8f8, 0xfafa, 
 22.1587 +    0xf9fa, 0xf8f9, 0xf9f8, 0xfafa, 0xfbfa, 0xfafb, 0xfcfa, 0xfdfd, 0xfdfd, 
 22.1588 +    0xfefd, 0xfefe, 0xffff, 0xfefe, 0xfffe, 0x0100, 0x0201, 0x0302, 0x0504, 
 22.1589 +    0x0605, 0x0707, 0x0505, 0x0707, 0x0807, 0x0808, 0x0808, 0x0605, 0x0606, 
 22.1590 +    0x0706, 0x0808, 0x0707, 0x0507, 0x0404, 0x0506, 0x0403, 0x0404, 0x0103, 
 22.1591 +    0x0202, 0x0202, 0x0002, 0xfeff, 0xffff, 0xffff, 0xfdff, 0xfcfd, 0xfbfb, 
 22.1592 +    0xf9fb, 0xf9f9, 0xf9fa, 0xf9f9, 0xf8f9, 0xfafa, 0xf9fa, 0xf9f9, 0xf7f9, 
 22.1593 +    0xf8f8, 0xf8f8, 0xf9f8, 0xf9f9, 0xfafa, 0xfbfa, 0xfdfc, 0x0000, 0x0000, 
 22.1594 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1595 +    0x0000, 0x0000, 0x0401, 0x0404, 0x0605, 0x0807, 0x0808, 0x0807, 0x0a08, 
 22.1596 +    0x150f, 0x1318, 0x090c, 0x0808, 0x0707, 0x0607, 0x0607, 0x0304, 0x0102, 
 22.1597 +    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1598 +    0x0000, 0x0000, 0x0000, 0xff00, 0xffff, 0xfdff, 0xfbfd, 0xfbfb, 0xf9f9, 
 22.1599 +    0xf9f9, 0xf8f9, 0xf9f8, 0xf9f9, 0xf8f8, 0xfaf9, 0xfbfb, 0xfafa, 0xf9f9, 
 22.1600 +    0xf8f7, 0xfafa, 0xfafa, 0xfbfc, 0xf9f9, 0xfcfb, 0xfdfd, 0xfcfb, 0xfffc, 
 22.1601 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1602 +    0x0000, 0x0302, 0x0303, 0x0404, 0x0404, 0x0505, 0x0605, 0x0b09, 0x0d0e, 
 22.1603 +    0x0b0d, 0x090b, 0x0809, 0x0707, 0x0607, 0x0706, 0x0606, 0x0707, 0x0505, 
 22.1604 +    0x0405, 0x0304, 0x0203, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1605 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 
 22.1606 +    0xfdff, 0xfcfd, 0xfbfc, 0xfbfb, 0xfbfb, 0xfbfb, 0xfbfb, 0xfafb, 0xf9fa, 
 22.1607 +    0xf9f9, 0xfafa, 0xfafa, 0xfafb, 0xfafa, 0xfafa, 0xf9fa, 0xfafa, 0xf9f9, 
 22.1608 +    0xf8f9, 0xf8f8, 0xfaf9, 0xfcfb, 0xfffd, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1609 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1610 +    0x0200, 0x0402, 0x0404, 0x0504, 0x0405, 0x0404, 0x0504, 0x0606, 0x0606, 
 22.1611 +    0x0605, 0x0606, 0x0707, 0x0505, 0x0404, 0x0705, 0x0707, 0x0506, 0x0605, 
 22.1612 +    0x0604, 0x0505, 0x0504, 0x0504, 0x0504, 0x0302, 0x0300, 0x01ff, 0x00fe, 
 22.1613 +    0x00fd, 0x00fd, 0x00fe, 0x00fd, 0x00fd, 0x00fe, 0x00fd, 0x00fe, 0x00fd, 
 22.1614 +    0x00fd, 0x00fe, 0x00fc, 0xfffd, 0xfefc, 0xfefd, 0xfdfc, 0xfefc, 0xfefc, 
 22.1615 +    0xfefc, 0xfefd, 0xfefd, 0xfefd, 0xfefe, 0xfefd, 0xfffe, 0xfffe, 0xfeff, 
 22.1616 +    0xffff, 0xfeff, 0xff00, 0xfe00, 0xff01, 0xff01, 0xff02, 0xff02, 0x0002, 
 22.1617 +    0x0002, 0x0003, 0x0002, 0x0107, 0x0000, 0x7273, 0x3274, 0x0000, 0x0000, 
 22.1618 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x2800, 
 22.1619 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1620 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1621 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1622 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1623 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1624 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 
 22.1625 +    0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 
 22.1626 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1627 +    0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 
 22.1628 +    0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1629 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0001, 
 22.1630 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 
 22.1631 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5800, 
 22.1632 +    0x0011, 0x0e00, 0x0001, 0x4400, 0x0010, 0x4000, 0x0200, 0x0080, 0x0000, 
 22.1633 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1634 +    0x0000, 0x0000, 0x0100, 0x2c1d, 0xe8fd, 0xe7e8, 0x07fa, 0x0101, 0xfa02, 
 22.1635 +    0x02fe, 0x01f2, 0x0d0e, 0xf8f3, 0x0911, 0xf2f0, 0x06fd, 0x1006, 0x050e, 
 22.1636 +    0x01fe, 0x02fd, 0xf5e5, 0x00f3, 0x0a02, 0xf209, 0x09ff, 0x080f, 0xfff9, 
 22.1637 +    0xf108, 0x04e0, 0xfef6, 0x0d07, 0x0e1e, 0x0a06, 0xe8ff, 0xf7f9, 0x05fc, 
 22.1638 +    0xffff, 0xfbfb, 0x07fb, 0xf105, 0x13f7, 0x0416, 0x0003, 0xe7ee, 0xf6f3, 
 22.1639 +    0x100c, 0xfd18, 0xf9f7, 0x1c15, 0xeafd, 0x16fc, 0xfa01, 0xeff7, 0xfbf4, 
 22.1640 +    0x0d06, 0xf808, 0xfcf2, 0xfcfb, 0xfb04, 0x00ed, 0x2f19, 0xfd10, 0xecfd, 
 22.1641 +    0x03df, 0x0d06, 0xf903, 0x0cfc, 0xeffb, 0x03fc, 0xf4ff, 0x0c03, 0x0eff, 
 22.1642 +    0xfa11, 0x03f9, 0xf0fb, 0x06fb, 0x0907, 0x06fd, 0xf9fd, 0xfbf6, 0x150f, 
 22.1643 +    0x0409, 0xe300, 0x06fd, 0x0202, 0x00f8, 0xf7f7, 0xfef5, 0xfc02, 0x09f8, 
 22.1644 +    0x0f20, 0xfbf8, 0xe9ff, 0xedfe, 0x0ef9, 0x141b, 0xfb0a, 0x00fc, 0x00f6, 
 22.1645 +    0xf7eb, 0x030f, 0x1001, 0xf202, 0xfef7, 0x0906, 0xfc0d, 0x02f1, 0x0911, 
 22.1646 +    0xf4f7, 0xeafa, 0x1006, 0x0e15, 0xf5ee, 0x04ff, 0xe401, 0x02f2, 0x04fe, 
 22.1647 +    0x0005, 0x07f9, 0x1a0b, 0x0313, 0xecf6, 0x00f1, 0x0bf9, 0x0101, 0x0003, 
 22.1648 +    0x06fb, 0x0606, 0xfd02, 0x09fa, 0xf909, 0xf8fe, 0xfdf9, 0x08ed, 0x110b, 
 22.1649 +    0xfe09, 0xfefa, 0xf2f9, 0x00ec, 0x1005, 0xff07, 0xf4f3, 0x161b, 0xfe09, 
 22.1650 +    0xeff8, 0xfdf6, 0x05f3, 0xff03, 0x01fc, 0x0e1b, 0xfcff, 0xf3fb, 0xf0fc, 
 22.1651 +    0x11f9, 0x040d, 0xfdff, 0xf1f5, 0x0701, 0x070f, 0x0407, 0x0200, 0xecf2, 
 22.1652 +    0x07f8, 0x0807, 0x050c, 0x09fd, 0x0200, 0xedf8, 0xfef1, 0x0a17, 0x0004, 
 22.1653 +    0xf9ec, 0x0104, 0x08fc, 0x0006, 0x00f9, 0xfbfc, 0xee0a, 0x1105, 0xf71b, 
 22.1654 +    0xfdf8, 0x06f3, 0xfffb, 0xfa00, 0xfdfa, 0x0300, 0x0801, 0xf9fb, 0x0ced, 
 22.1655 +    0x1026, 0xf609, 0xf1ea, 0x0007, 0x09fc, 0xfd05, 0x0203, 0xf9fb, 0x00f7, 
 22.1656 +    0x11fd, 0xfb07, 0x00f8, 0x0a01, 0xfc09, 0xf8e9, 0x06f7, 0x0819, 0xfe00, 
 22.1657 +    0xf9fc, 0x1106, 0xfefb, 0xeff6, 0xfb01, 0x120b, 0xfe00, 0xf4f7, 0x03f5, 
 22.1658 +    0x0a08, 0xfa00, 0x0803, 0xf7fb, 0x07f6, 0x0909, 0x0301, 0xf90c, 0x0104, 
 22.1659 +    0x0101, 0xe9f1, 0x0001, 0x0f1a, 0xf402, 0xeeeb, 0x0800, 0x00fd, 0xf603, 
 22.1660 +    0x0a01, 0x05fe, 0x0e10, 0x09fa, 0xf80f, 0xed00, 0xfdf3, 0x04fd, 0x0005, 
 22.1661 +    0xfe02, 0x00ff, 0xfffc, 0xfbfd, 0x18fb, 0xfd0f, 0xe2f9, 0x02ed, 0x0c0d, 
 22.1662 +    0x1513, 0xfbfe, 0x00fa, 0xeafc, 0x06f6, 0x1106, 0x000d, 0xf007, 0x01fb, 
 22.1663 +    0xebfe, 0x02ff, 0x05fa, 0x0204, 0xfd00, 0x0000, 0x2900, 0xff0f, 0xeef3, 
 22.1664 +    0xf9fb, 0xfd05, 0x0002, 0x01f1, 0x0808, 0xfe04, 0xf9fc, 0x05f7, 0xfd05, 
 22.1665 +    0xf9f3, 0x0a04, 0xfb04, 0x130a, 0x1004, 0xf1fe, 0xf6ef, 0xfc04, 0x1006, 
 22.1666 +    0xf801, 0xffe9, 0x040a, 0x0001, 0xf3fa, 0x03fc, 0x0e0b, 0x0501, 0xecf8, 
 22.1667 +    0x051d, 0xf105, 0x0801, 0xfcf8, 0x0300, 0xf2fa, 0x0403, 0x0804, 0xfafe, 
 22.1668 +    0x060d, 0xfd06, 0xefe3, 0x0df6, 0x040f, 0x0a00, 0xfa01, 0x0005, 0x01f8, 
 22.1669 +    0x0305, 0x0c02, 0x0b0d, 0xe6ee, 0xfcfb, 0x03f4, 0x0807, 0x03fe, 0xf902, 
 22.1670 +    0x04f7, 0x0203, 0x1a01, 0xfc08, 0xf2f0, 0x0efc, 0x0f00, 0xebfd, 0x0302, 
 22.1671 +    0xf904, 0x00f8, 0x03fc, 0x100c, 0xf901, 0xfbf0, 0x0501, 0x0302, 0x110c, 
 22.1672 +    0xfdfc, 0xedf2, 0x00f8, 0x0405, 0x1120, 0xf2f7, 0xfbee, 0xf5fb, 0x04ff, 
 22.1673 +    0x0402, 0x0904, 0xff08, 0xf8ff, 0x02ee, 0x1123, 0xeefd, 0xf9f1, 0x03f8, 
 22.1674 +    0x0108, 0x07ff, 0x0218, 0xfbfb, 0xfdf7, 0x02fe, 0xfa06, 0xf2f6, 0x090a, 
 22.1675 +    0xff06, 0xf1f9, 0x010c, 0xfb05, 0xf2f6, 0x0905, 0x1208, 0x0314, 0xf3f7, 
 22.1676 +    0xfbf8, 0x04ff, 0xf3fc, 0x0100, 0x02fc, 0x0a05, 0x0006, 0x1805, 0xf404, 
 22.1677 +    0xecf5, 0xfe05, 0xf9ff, 0x04f3, 0x0e04, 0xff01, 0xfd09, 0x04fa, 0x0c05, 
 22.1678 +    0xf6f1, 0xfaf3, 0x0b12, 0x0c00, 0x0c02, 0xe9f7, 0xfbf1, 0x05fc, 0x0505, 
 22.1679 +    0x0e10, 0xfcfc, 0xf9ed, 0xff08, 0xff0d, 0x00fe, 0xfe04, 0xfafa, 0xf6f5, 
 22.1680 +    0x0d09, 0x1620, 0xf2f7, 0xfad8, 0x08fa, 0xfb04, 0x0208, 0x0208, 0x0202, 
 22.1681 +    0x0009, 0x0b04, 0xfc00, 0xfbf8, 0x02e9, 0xfa05, 0x07f9, 0x0411, 0xfbfe, 
 22.1682 +    0xf1f7, 0x05f4, 0x1e09, 0xfd22, 0xdcf4, 0x09ee, 0x0004, 0x03fc, 0x0a06, 
 22.1683 +    0xfc00, 0xfcfd, 0xffef, 0x1c05, 0xfe1f, 0xef02, 0xf5fd, 0xe3f5, 0x15ff, 
 22.1684 +    0x040b, 0xf800, 0xfdf3, 0x0b03, 0x0e09, 0xf808, 0xee05, 0x030e, 0xf405, 
 22.1685 +    0x06f5, 0xfcf2, 0x0705, 0xfbf9, 0xf903, 0x1104, 0xffff, 0xebf4, 0x0309, 
 22.1686 +    0xfcfd, 0x0d07, 0x020b, 0x0101, 0x05f4, 0xfd05, 0x0e08, 0xfbf8, 0xfaeb, 
 22.1687 +    0xfd04, 0x01fb, 0x0007, 0x0301, 0x0b02, 0xfb01, 0xf2ff, 0x1109, 0xfcfe, 
 22.1688 +    0x08eb, 0x0307, 0x04fb, 0xfe05, 0xf7f3, 0xf8f8, 0x0603, 0x1d15, 0xfc10, 
 22.1689 +    0xdfe6, 0x15f0, 0xf904, 0x00f6, 0x0108, 0x0305, 0x00fd, 0x0b03, 0x1706, 
 22.1690 +    0xfa1d, 0xe002, 0xfeda, 0x05ec, 0x100a, 0x0102, 0xf8fa, 0x01f2, 0x0204, 
 22.1691 +    0x0a09, 0xfb0e, 0xf4ff, 0x1709, 0xf309, 0x0a03, 0x09f3, 0xef02, 0xeee5, 
 22.1692 +    0x0af8, 0x1a10, 0xf907, 0xe4f6, 0x02fc, 0xfc00, 0x1b0e, 0xf8fe, 0xeafc, 
 22.1693 +    0x0f03, 0x0204, 0x190c, 0xf90e, 0xe6f2, 0xf6f1, 0xfcf2, 0x0e0a, 0x080e, 
 22.1694 +    0x040d, 0xf8f3, 0xf5f3, 0x1610, 0xf7fc, 0xf2f2, 0x070a, 0xfe00, 0x0411, 
 22.1695 +    0x0aff, 0xee01, 0x05ff, 0xf50d, 0x11fe, 0xffee, 0xf004, 0xfa01, 0xfaef, 
 22.1696 +    0x0304, 0x0506, 0xfd01, 0x0404, 0x0a03, 0x1e1e, 0xee02, 0xdfeb, 0x0d01, 
 22.1697 +    0xfafe, 0xf8ee, 0x0504, 0x0404, 0x00ff, 0x0301, 0xff0e, 0xfefe, 0x0d02, 
 22.1698 +    0xf500, 0xfdf7, 0x0611, 0xf7fb, 0xfde5, 0x0f12, 0x0506, 0xf20e, 0xf4e8, 
 22.1699 +    0x0df1, 0xff07, 0x0a15, 0xfaf6, 0xf9f0, 0x040d, 0xfbfd, 0x1e04, 0xfc11, 
 22.1700 +    0xf7f8, 0x07db, 0x080b, 0x0006, 0x0a00, 0xde03, 0xf903, 0x0ef6, 0x0a08, 
 22.1701 +    0xf302, 0xfbf8, 0x07fb, 0x0000, 0x060d, 0xffff, 0xf6fd, 0x17fe, 0x000b, 
 22.1702 +    0x080d, 0xf904, 0xe7f0, 0xfbdf, 0x0bfe, 0x010e, 0x0203, 0xf8fe, 0x0302, 
 22.1703 +    0x0a03, 0x172c, 0xeef7, 0xc7ea, 0x0e04, 0x03ff, 0x0cfe, 0x0512, 0x00fb, 
 22.1704 +    0xf6fc, 0x02f2, 0x0b15, 0x0202, 0xf209, 0xf9fe, 0x0cf4, 0x0110, 0xf3f7, 
 22.1705 +    0xf5f0, 0x0e09, 0x0306, 0x0608, 0x08fb, 0xf6f8, 0x0500, 0xee01, 0x00f7, 
 22.1706 +    0x0300, 0x0105, 0xf7fc, 0x1e08, 0xfd10, 0xfcfc, 0xf5d4, 0x010a, 0x0701, 
 22.1707 +    0x1505, 0x0102, 0x0a06, 0xfff7, 0x02fe, 0xf4ef, 0x050a, 0x02eb, 0xffff, 
 22.1708 +    0x0f09, 0xfc00, 0xf700, 0x0afb, 0xfc0b, 0x02fb, 0x0103, 0xf200, 0x0be8, 
 22.1709 +    0x0417, 0xfcfe, 0xf8f7, 0x02f1, 0x0a0c, 0x0806, 0x1225, 0xf6f6, 0xcef3, 
 22.1710 +    0x0de9, 0xfc01, 0x0405, 0x0100, 0x0404, 0x0500, 0x0b07, 0x0916, 0x0e01, 
 22.1711 +    0xd7ff, 0x02ef, 0x07f9, 0xfb17, 0xf7f0, 0xf100, 0x1202, 0xfd07, 0x0405, 
 22.1712 +    0xfbfb, 0xeffb, 0x0d09, 0x0007, 0x0903, 0x00f5, 0xf701, 0xf8ed, 0x1f0e, 
 22.1713 +    0x021b, 0xf3f9, 0xdce5, 0x0a05, 0x0a04, 0xfd0b, 0xf700, 0xf6fc, 0x0904, 
 22.1714 +    0xfffd, 0x0d0e, 0x0317, 0xefea, 0xfdf8, 0x17f5, 0xfd0b, 0x0a02, 0xfdf7, 
 22.1715 +    0x0407, 0xfdf5, 0x0007, 0xf1f9, 0xfcf1, 0x09fb, 0x0209, 0x06fc, 0x0b06, 
 22.1716 +    0x020e, 0x0c04, 0x0c0e, 0x01f4, 0xe3f1, 0xf5da, 0x09fa, 0xfe08, 0x04fb, 
 22.1717 +    0x0408, 0x0905, 0xfe00, 0x0f07, 0x0d12, 0xeaff, 0x00f3, 0x0df5, 0xf812, 
 22.1718 +    0xf3f0, 0xfb03, 0x10f9, 0xf804, 0x0208, 0x07ff, 0xf7f9, 0xfbfd, 0x0504, 
 22.1719 +    0xe9f9, 0x0800, 0xff00, 0x0a0c, 0x1810, 0x0221, 0xf9f5, 0xdeda, 0x04fc, 
 22.1720 +    0x110a, 0xf502, 0x05fc, 0xf3f6, 0x040a, 0x01fc, 0x040e, 0x0006, 0xebf8, 
 22.1721 +    0x00f6, 0x1f11, 0xfa19, 0x0500, 0xe3f6, 0x09fa, 0x03f0, 0xf508, 0x00fd, 
 22.1722 +    0xf4fa, 0x01fb, 0x050a, 0xfffb, 0x0505, 0x0604, 0x0c11, 0x2306, 0xfe09, 
 22.1723 +    0xebf5, 0xe2de, 0xfaf7, 0x090b, 0xfdfe, 0xfd00, 0x0cff, 0x0509, 0x1300, 
 22.1724 +    0x0a15, 0xeefb, 0xdbec, 0x08f5, 0x1213, 0x0602, 0x0b07, 0xf1f9, 0x00fe, 
 22.1725 +    0x08fc, 0x0605, 0xfbfd, 0xf0f2, 0x09fc, 0xf3fb, 0x02fe, 0x0403, 0x0302, 
 22.1726 +    0x0c01, 0x1324, 0xf808, 0xf7f7, 0xf2ed, 0x130d, 0xef04, 0xf8e9, 0x01f6, 
 22.1727 +    0xfc00, 0x07fe, 0x0714, 0x0107, 0xf6f4, 0xfae9, 0x0f09, 0x0515, 0x030e, 
 22.1728 +    0xfbfd, 0xfef4, 0x0e05, 0xff00, 0xeef9, 0xf5f5, 0x03f7, 0x0505, 0x05fb, 
 22.1729 +    0x0107, 0x0e02, 0x040a, 0x1706, 0xf403, 0xedf6, 0xe5f3, 0x07eb, 0x1918, 
 22.1730 +    0xf9fd, 0x03fc, 0xfb04, 0x01fc, 0x161a, 0xff05, 0xf0f9, 0xdde6, 0xfff6, 
 22.1731 +    0x1818, 0x0107, 0x02fd, 0xf5fd, 0x06f8, 0x0c18, 0x0611, 0xf70d, 0xebee, 
 22.1732 +    0xeef1, 0x04f7, 0x05fb, 0xfcff, 0x04ff, 0x0909, 0x191d, 0x0109, 0xedf3, 
 22.1733 +    0xeceb, 0x110a, 0xfa0a, 0xf6f5, 0x0006, 0x06fc, 0xfe00, 0x0605, 0x030a, 
 22.1734 +    0xedf5, 0xfbe4, 0x1207, 0x1417, 0xfc09, 0xf800, 0xe8e2, 0x0bfb, 0x0818, 
 22.1735 +    0xfdfe, 0x09ff, 0x00e8, 0x0502, 0xfe09, 0x00f6, 0x0616, 0xfeff, 0x17ff, 
 22.1736 +    0xfa0d, 0xeef9, 0xeefb, 0xf9da, 0x0d0a, 0xfe00, 0x0902, 0x0709, 0x0c0f, 
 22.1737 +    0x1d13, 0xfc02, 0xdaef, 0xebe1, 0x05ec, 0x0f0d, 0x080f, 0x0300, 0xf7fe, 
 22.1738 +    0x02f5, 0x1411, 0x0cfd, 0x0000, 0xe5f1, 0x06f9, 0xff01, 0x0401, 0xff08, 
 22.1739 +    0xf9f1, 0x0d06, 0x151e, 0xff04, 0xf3f3, 0xedf1, 0x0dfd, 0xfa06, 0xf2f4, 
 22.1740 +    0xfffb, 0x0b02, 0x0502, 0x161e, 0x0000, 0xeff6, 0xebea, 0x0df5, 0x1723, 
 22.1741 +    0xfb07, 0xfaf7, 0xe1ea, 0x0efc, 0x0823, 0xfbf9, 0xf200, 0xfbe6, 0x0a09, 
 22.1742 +    0x1004, 0x120f, 0x080d, 0xfafe, 0xf8f3, 0x0008, 0xf8fe, 0xe4f3, 0xf8e1, 
 22.1743 +    0x0a0c, 0x0306, 0x0005, 0x0004, 0x0f0a, 0x1d13, 0xf40c, 0xf4f3, 0xe3ec, 
 22.1744 +    0x00fc, 0x090b, 0x0405, 0x0103, 0xf6ff, 0xfbe8, 0x1f0b, 0x0512, 0xfc04, 
 22.1745 +    0xd8ea, 0xf4f2, 0x0400, 0x150a, 0x01ff, 0x0b0f, 0x0702, 0x250e, 0xf40b, 
 22.1746 +    0x00eb, 0xeaf5, 0xfcea, 0xfc00, 0xfcf0, 0x0bfe, 0x0606, 0x08fa, 0x1316, 
 22.1747 +    0xfdff, 0xf7fb, 0xf6e6, 0x1612, 0x1817, 0x0103, 0xe1ee, 0xe7de, 0x0cf9, 
 22.1748 +    0x0b1b, 0x0000, 0xf1fa, 0xfde6, 0x0e0b, 0x0b01, 0x0b1b, 0x0408, 0xfafa, 
 22.1749 +    0x02f5, 0x111b, 0xff05, 0xe5f7, 0xdbd9, 0x0bfe, 0xfd04, 0x000b, 0x0e05, 
 22.1750 +    0x070b, 0x110d, 0xf214, 0xe0f2, 0xeaee, 0x08f8, 0x1105, 0x1115, 0x0610, 
 22.1751 +    0xf700, 0xeaf2, 0x1ff1, 0x0418, 0xf1f8, 0xdde8, 0xf8ea, 0x0a0c, 0x0f0e, 
 22.1752 +    0x0407, 0x0005, 0x0001, 0x260d, 0x020d, 0x0e10, 0xe4e8, 0xf6ea, 0xe8f9, 
 22.1753 +    0x07db, 0x0a08, 0x0103, 0x0805, 0x180f, 0xfb02, 0xf6ff, 0xfbe2, 0x0d15, 
 22.1754 +    0x0d14, 0x0206, 0xeff4, 0xfbf5, 0x05f4, 0x1114, 0xe4fe, 0xedf7, 0xf5e4, 
 22.1755 +    0x0b0a, 0x1e0d, 0x0b0e, 0x0102, 0xeffc, 0xeff2, 0x1826, 0xff04, 0xe101, 
 22.1756 +    0xf2e8, 0x0905, 0x0504, 0x030b, 0x0bff, 0xff00, 0x06fb, 0xfc12, 0xeee5, 
 22.1757 +    0xe5f9, 0x0400, 0x1406, 0x0910, 0x060f, 0xf700, 0xf3ef, 0x1f18, 0x0215, 
 22.1758 +    0xf3ff, 0xc2da, 0x02d4, 0x0b0e, 0x0e09, 0x0412, 0x0304, 0x00fd, 0x1f0a, 
 22.1759 +    0x131e, 0xff0f, 0xdde0, 0xebe7, 0xf7f3, 0x1205, 0x0615, 0xfe01, 0xf1f8, 
 22.1760 +    0x1b05, 0xf905, 0xfcfd, 0x0beb, 0x0301, 0x100d, 0xfb00, 0xf7f1, 0xfcfd, 
 22.1761 +    0xf7f5, 0x150c, 0x0d09, 0xf006, 0xffdf, 0x06fb, 0x0a10, 0x0400, 0x00fa, 
 22.1762 +    0xe9fa, 0xfdec, 0x2325, 0x040c, 0xe606, 0xf3de, 0xfbf8, 0xfd06, 0x2207, 
 22.1763 +    0x052a, 0xf9fc, 0x00fb, 0xeefc, 0xf6ec, 0xddff, 0x08fb, 0x0a05, 0x0917, 
 22.1764 +    0x0e0b, 0xfc02, 0x06f9, 0x04fa, 0xfe19, 0xf4f8, 0xe3d2, 0x0205, 0x1210, 
 22.1765 +    0x040c, 0xf302, 0xfcf9, 0xf9f9, 0x2304, 0x1d32, 0xf802, 0xe1dc, 0xdbee, 
 22.1766 +    0x03de, 0x0e04, 0x0d17, 0x0203, 0x0aff, 0x1a0c, 0x0518, 0xf3fa, 0xf9e6, 
 22.1767 +    0xf4f6, 0x13fd, 0xf002, 0x0208, 0xfafb, 0xf4fc, 0x1703, 0x0504, 0xf907, 
 22.1768 +    0xf7db, 0x0fff, 0x1030, 0x0602, 0xf704, 0xdfdf, 0xf9ec, 0x2414, 0x0b0d, 
 22.1769 +    0xe112, 0xf2e5, 0xf8f1, 0x0305, 0x240a, 0x0615, 0xf4fa, 0xf4f5, 0x19f3, 
 22.1770 +    0x0614, 0xeaff, 0x00f6, 0xfaf6, 0x030d, 0x0904, 0x0104, 0x0706, 0xf7ee, 
 22.1771 +    0x0708, 0xe9fb, 0xe2e4, 0x08ff, 0x0e06, 0x0e0d, 0x1605, 0x000c, 0xfcfd, 
 22.1772 +    0x1502, 0x0d30, 0xf5f5, 0xd8d8, 0xe4e1, 0x04ed, 0x0609, 0x1217, 0xfa0d, 
 22.1773 +    0x01f9, 0x1104, 0x0417, 0x0b04, 0xf803, 0xf7fa, 0x0301, 0xf3f3, 0xf607, 
 22.1774 +    0xf2f9, 0xf9f2, 0x0b04, 0x0816, 0xf7ff, 0xfbe7, 0x150e, 0x0a0c, 0xff01, 
 22.1775 +    0xe4fc, 0x02ea, 0x090c, 0x271c, 0x0d17, 0xddf3, 0xe7da, 0xe9ee, 0x15f9, 
 22.1776 +    0x1b1e, 0x0109, 0xf5f3, 0xebe8, 0x1706, 0x0515, 0xebfb, 0x04fa, 0x15fd, 
 22.1777 +    0x121c, 0x0d0b, 0x0002, 0xea01, 0xe6e0, 0x09f5, 0xf9ee, 0xf2fa, 0x03fd, 
 22.1778 +    0x0c02, 0x0814, 0x0a04, 0x0104, 0xf8f6, 0x2d08, 0x232e, 0xf704, 0xcdda, 
 22.1779 +    0xe4df, 0xebe5, 0x0604, 0x170c, 0x0512, 0x00fc, 0x09fe, 0x1510, 0x0812, 
 22.1780 +    0xf6e6, 0xf5f6, 0x00eb, 0x120d, 0x0d1b, 0x0005, 0xfaf2, 0xf0e8, 0xfb06, 
 22.1781 +    0xeff8, 0x0cf0, 0x0c1b, 0x05fe, 0xfb02, 0xf6e9, 0x03f8, 0x0a01, 0x1b15, 
 22.1782 +    0x0f21, 0xf1fe, 0xfbee, 0xf2f3, 0x11ef, 0xff12, 0xf6f5, 0xe6f6, 0x04ed, 
 22.1783 +    0x100a, 0x0619, 0xeafa, 0x0003, 0xfff8, 0x1118, 0x080b, 0x1811, 0xf50c, 
 22.1784 +    0xf1f4, 0xe8e2, 0xf208, 0xe5f1, 0x00f8, 0x0903, 0x1213, 0x0605, 0xff03, 
 22.1785 +    0xfd00, 0x2312, 0x1417, 0xea07, 0xdbcb, 0xf9fb, 0xfa00, 0x0d0e, 0x1406, 
 22.1786 +    0xf4fc, 0xe9f3, 0x01f9, 0x230e, 0xfd1d, 0xf2e8, 0xe4fc, 0x16e4, 0x0e14, 
 22.1787 +    0x110c, 0xfdfe, 0xfbf9, 0xfa01, 0x150f, 0xf2f9, 0x11f1, 0xf505, 0xf4ea, 
 22.1788 +    0xeafc, 0x0603, 0x0600, 0x0903, 0x1e12, 0x0821, 0xe9f1, 0xf8eb, 0xf3f0, 
 22.1789 +    0x1efb, 0x0d1a, 0x010a, 0xeddd, 0xf7fb, 0x08f8, 0xf908, 0xfaf7, 0x0402, 
 22.1790 +    0x00fa, 0x1c10, 0x0b09, 0x031b, 0xf3f7, 0xe4eb, 0x0ad3, 0x0413, 0x0205, 
 22.1791 +    0x0509, 0x0401, 0x00ff, 0xf2f9, 0xfbf7, 0x0e05, 0x151a, 0x1e19, 0xd1f8, 
 22.1792 +    0xf0df, 0xf6f8, 0xf8f7, 0x0b01, 0x0f0f, 0x0410, 0x0305, 0xfd03, 0x250f, 
 22.1793 +    0xeefe, 0xead5, 0xe8df, 0x1301, 0x171a, 0x0e0d, 0xfbff, 0xf401, 0xeaf3, 
 22.1794 +    0x0b07, 0x00fb, 0x1ffe, 0x0417, 0xf200, 0xf9e9, 0xf804, 0xfbf2, 0xfdf0, 
 22.1795 +    0x2111, 0x032a, 0xeef8, 0xfeed, 0xf7f5, 0x0400, 0x0209, 0xe806, 0xfced, 
 22.1796 +    0x1809, 0x130e, 0xf91c, 0xedfb, 0xf3f7, 0xebef, 0x18fc, 0x1018, 0xfd21, 
 22.1797 +    0xf7f9, 0xd1e3, 0x0dec, 0xff0a, 0xf907, 0x0604, 0x0708, 0x120b, 0x0907, 
 22.1798 +    0xf802, 0x1001, 0x0406, 0x0001, 0xeee3, 0xeff3, 0x02fb, 0xf2fb, 0x0afa, 
 22.1799 +    0x0f0f, 0xf701, 0x02fb, 0x090b, 0x320f, 0x010e, 0xddec, 0xf4e8, 0x00fe, 
 22.1800 +    0x080d, 0x01fe, 0x03fc, 0xfbfc, 0xeff1, 0x0f05, 0x0c00, 0x0508, 0xfb01, 
 22.1801 +    0xe5f7, 0x05fa, 0x140d, 0x070e, 0x0800, 0x0c0c, 0xf71c, 0xe7e8, 0xf7db, 
 22.1802 +    0x0109, 0xfcfb, 0x0104, 0xf5fb, 0xfef9, 0x0f00, 0x0411, 0x030f, 0xfa06, 
 22.1803 +    0x0bfd, 0xfcfe, 0x1b04, 0x1711, 0xed02, 0xd4de, 0xf6e6, 0xfced, 0x080e, 
 22.1804 +    0x0112, 0x0afc, 0x0902, 0xf8fd, 0x06ff, 0x0a0b, 0x130d, 0x1416, 0x05fd, 
 22.1805 +    0xf4fe, 0xdbf3, 0xf3ef, 0xe3ea, 0x09f9, 0x0b0c, 0x0009, 0x0502, 0x1612, 
 22.1806 +    0x0d14, 0xf100, 0xe0e6, 0xfcfb, 0x1701, 0x182b, 0x0906, 0xf103, 0xecec, 
 22.1807 +    0xd8dd, 0x0ff4, 0x1511, 0xf70d, 0xee01, 0x01f8, 0x00f8, 0x0a07, 0x0109, 
 22.1808 +    0x08fc, 0x1316, 0x1a25, 0xfaff, 0xf2eb, 0x00fd, 0xe2e4, 0xe6d8, 0x0c02, 
 22.1809 +    0xfc01, 0x1705, 0x0a1b, 0x120a, 0xfef9, 0xf7ea, 0x00fa, 0x1a07, 0x1a22, 
 22.1810 +    0x0013, 0xe0e1, 0xecf0, 0xefec, 0xf804, 0x0102, 0x0df3, 0x0702, 0xfb0a, 
 22.1811 +    0x1002, 0x0a0d, 0xfc0d, 0xfefe, 0x15f7, 0xfd08, 0xfb00, 0x0509, 0xeaf3, 
 22.1812 +    0xf4fb, 0xfcfb, 0xf1f2, 0x04fb, 0x2214, 0x010f, 0xf0fe, 0xf5f7, 0xf8ee, 
 22.1813 +    0x0e03, 0x131b, 0x0505, 0xfc07, 0x08fc, 0xeff6, 0x07fb, 0x0e0f, 0xddfd, 
 22.1814 +    0xe9d6, 0x0801, 0xfffd, 0x1104, 0x0211, 0x0c06, 0x0908, 0x0814, 0x02fe, 
 22.1815 +    0xeefb, 0x0007, 0xfbf5, 0xf6ec, 0x0000, 0xf701, 0xfffc, 0x0305, 0x0a0d, 
 22.1816 +    0x0302, 0xeff5, 0x0dfc, 0x1a0e, 0xfe1b, 0xeff5, 0xf6f3, 0xebf1, 0x08f7, 
 22.1817 +    0x1221, 0x070b, 0xebf9, 0xfbf9, 0xedf3, 0x05f6, 0x1415, 0xf307, 0xfff3, 
 22.1818 +    0x1c0a, 0xff0e, 0x0100, 0xf1f7, 0xedf4, 0xfdfd, 0x1805, 0x0b07, 0x0403, 
 22.1819 +    0x0d13, 0xe9f5, 0xefde, 0xf701, 0xfcee, 0x1406, 0x151c, 0x0612, 0xfef9, 
 22.1820 +    0xedfb, 0xf4ee, 0x0fff, 0x0c13, 0xfc10, 0xfbe9, 0x00fd, 0xf1fc, 0xf9f0, 
 22.1821 +    0x07f9, 0x0506, 0x0d08, 0x170f, 0x050b, 0x000b, 0xeeed, 0xe6db, 0xf9fc, 
 22.1822 +    0x04fa, 0x1611, 0x0c21, 0x110b, 0xf901, 0xf1f4, 0xe2df, 0x04f4, 0x181d, 
 22.1823 +    0x0012, 0xfdee, 0x0602, 0xefef, 0x0aeb, 0x0409, 0x0b0c, 0xf0fb, 0x110c, 
 22.1824 +    0x0c14, 0xfff8, 0xf70b, 0xddf5, 0xffe1, 0x0f0a, 0x071c, 0x0705, 0xf2f8, 
 22.1825 +    0xe9fe, 0xfcf5, 0xfbf7, 0x070c, 0x170c, 0x0909, 0x0314, 0xff01, 0xf3fa, 
 22.1826 +    0xe6ea, 0xf5f7, 0x1706, 0xfe0e, 0x0204, 0x0000, 0xf3f2, 0x0d16, 0xfffb, 
 22.1827 +    0xf0fb, 0xfbf2, 0x04fd, 0x0e0e, 0x060e, 0x0605, 0xf9fc, 0xf9f9, 0x17f5, 
 22.1828 +    0x0702, 0xf813, 0xefe2, 0xf6dc, 0x0008, 0x06f3, 0x1309, 0x060f, 0x0b0b, 
 22.1829 +    0x0cfc, 0x0e0d, 0xf70a, 0x0de6, 0xff01, 0xe503, 0x02e1, 0xfefb, 0xe9fd, 
 22.1830 +    0x06fa, 0x100d, 0x0610, 0xeffe, 0x0af2, 0x0908, 0x0805, 0x07f5, 0x0409, 
 22.1831 +    0xfd08, 0x05ff, 0x0217, 0xe9f4, 0xebf9, 0xe9ed, 0x08fc, 0xfb01, 0x0c07, 
 22.1832 +    0x0b20, 0x0000, 0xfaff, 0xff09, 0xfaf9, 0xf5fa, 0x0d16, 0x1612, 0xf204, 
 22.1833 +    0xf1fd, 0xfdeb, 0xf7dd, 0xff0b, 0x030e, 0x06f4, 0xf2fe, 0x0405, 0x040e, 
 22.1834 +    0xfafb, 0xfe09, 0x05fc, 0x1707, 0x191f, 0x0f16, 0xeff9, 0xbddb, 0xfdcc, 
 22.1835 +    0xfdff, 0x08f3, 0x0f14, 0x1111, 0x0909, 0x0504, 0x0407, 0xf3fd, 0x03ef, 
 22.1836 +    0x0ffd, 0x1119, 0x05fc, 0xf7fb, 0xe400, 0xe9d7, 0x1007, 0x0000, 0x0005, 
 22.1837 +    0x09f7, 0x1106, 0xfa1c, 0x03f3, 0xfaed, 0xfa09, 0x05fc, 0x2b13, 0x0d1a, 
 22.1838 +    0xef03, 0xe0d7, 0xf0ed, 0xedf5, 0x10fb, 0x0c0e, 0xfd12, 0x0af5, 0x100b, 
 22.1839 +    0xfa03, 0xeaf9, 0x05f4, 0x0a10, 0xfb0a, 0x1b0e, 0x0312, 0xeff3, 0xfef0, 
 22.1840 +    0xdef7, 0x03f2, 0xe8ff, 0x0afc, 0x0d12, 0x0002, 0x0306, 0x05fd, 0x0205, 
 22.1841 +    0x1005, 0x0d23, 0x01fc, 0xdafa, 0xf9ee, 0xfbfe, 0xeef2, 0x01ec, 0x120f, 
 22.1842 +    0xfcff, 0x1209, 0x051a, 0xfdfd, 0xef00, 0x07fd, 0x05fa, 0x0102, 0xff00, 
 22.1843 +    0xff01, 0x03fc, 0x1007, 0xf7ff, 0xf1f9, 0xf2e8, 0x0e04, 0xff09, 0xfffc, 
 22.1844 +    0x03f3, 0x0b05, 0x0804, 0x1a0d, 0x020f, 0xf1ff, 0xe2d8, 0x1bff, 0xfe12, 
 22.1845 +    0x0afb, 0x0805, 0xdbf1, 0x08f7, 0x0609, 0xff05, 0xfefc, 0xfdec, 0x130f, 
 22.1846 +    0x0608, 0x0609, 0xfbfe, 0xf1f8, 0x06f7, 0x0a0c, 0x0407, 0xfa02, 0xf0ee, 
 22.1847 +    0x01ec, 0xfffc, 0xf9fb, 0x0e02, 0x0710, 0x0f07, 0x172b, 0xfa04, 0xd7e0, 
 22.1848 +    0xf5d9, 0x0401, 0xf800, 0x1911, 0x0e14, 0xfcff, 0xfdfb, 0x02fd, 0xfbfd, 
 22.1849 +    0xf4f6, 0x01f3, 0x0b04, 0x030b, 0x0508, 0xecfe, 0xf7f4, 0x0801, 0x0205, 
 22.1850 +    0x150c, 0xfa12, 0x0cf8, 0xfc0a, 0xd5e4, 0xfeee, 0xf90b, 0x0605, 0x200d, 
 22.1851 +    0x081c, 0xfc03, 0xdde6, 0x01fa, 0xfefe, 0xfcf5, 0x140f, 0x010a, 0x090d, 
 22.1852 +    0x0b08, 0xee04, 0xefdc, 0xebf4, 0x0604, 0x1a0c, 0x070b, 0x0302, 0xf8f9, 
 22.1853 +    0xfc01, 0x02f0, 0x03fe, 0x0305, 0xedfe, 0x220e, 0xff05, 0xf7f8, 0xfcf7, 
 22.1854 +    0xfbf0, 0x0b09, 0x220d, 0xfb08, 0xebf0, 0xeedf, 0x050c, 0xedfd, 0x08f6, 
 22.1855 +    0x1210, 0x00fe, 0x1616, 0x141c, 0xfc04, 0xeff9, 0xd0d6, 0x07ff, 0x0014, 
 22.1856 +    0x02fc, 0xfb00, 0x02ee, 0x0606, 0x090e, 0x0706, 0xff00, 0xfeef, 0x0611, 
 22.1857 +    0xf9f7, 0x0507, 0x0207, 0xf9f7, 0x05ed, 0x0d1d, 0xef00, 0xedf4, 0x01f1, 
 22.1858 +    0x0308, 0x0400, 0x0700, 0xf700, 0x09fd, 0x0708, 0x030e, 0x0904, 0xf802, 
 22.1859 +    0xffee, 0x0203, 0xfcf8, 0xfd00, 0xeafa, 0xfdfa, 0x0cfb, 0x040b, 0x0812, 
 22.1860 +    0xedfd, 0x0df2, 0xfd09, 0xfdf6, 0x0c0d, 0x0c14, 0x0c06, 0x120a, 0xe2ed, 
 22.1861 +    0xf5ea, 0xe4e6, 0x03f6, 0x0004, 0x0002, 0x1814, 0x000c, 0x0a07, 0x1201, 
 22.1862 +    0x0100, 0xfbf6, 0xedee, 0x1213, 0x070d, 0xe0f2, 0xf8ed, 0xfeec, 0xfb04, 
 22.1863 +    0x1705, 0x0d09, 0x080e, 0x05f1, 0x0209, 0xf5ec, 0xf9f9, 0x0607, 0x02fa, 
 22.1864 +    0x2809, 0x0f23, 0xf0fe, 0xe0e8, 0xfbd3, 0x000c, 0xfbf9, 0x01f8, 0x0a11, 
 22.1865 +    0x0700, 0x0b14, 0xfa03, 0xf903, 0xf3fa, 0x04ec, 0x171a, 0x1417, 0xfdf7, 
 22.1866 +    0xe4f7, 0xe2de, 0x08fa, 0x000a, 0x0404, 0xf403, 0x0eff, 0x0a0e, 0xfc03, 
 22.1867 +    0x04fc, 0x0404, 0x0000, 0x1811, 0xf405, 0xf710, 0xdced, 0xecf5, 0xffee, 
 22.1868 +    0xf500, 0x1807, 0x0505, 0x0a0b, 0x1118, 0x0908, 0xeef9, 0xe9e0, 0x06ff, 
 22.1869 +    0x0818, 0xedfd, 0x1006, 0xfd02, 0xf600, 0xfbf9, 0x06fb, 0x0310, 0xeeeb, 
 22.1870 +    0x0409, 0x04fd, 0xfffc, 0x0d0b, 0xf8f5, 0x0d04, 0x1417, 0xf900, 0xeaff, 
 22.1871 +    0x0ff5, 0x010a, 0xf7f6, 0xe2dc, 0x0712, 0x04fd, 0x0001, 0x1605, 0x0008, 
 22.1872 +    0x0001, 0xfbf8, 0x150a, 0x000e, 0xf3f4, 0xf5fb, 0x00ef, 0x080c, 0x0112, 
 22.1873 +    0xf4f1, 0xf3f2, 0x06f2, 0x0512, 0x00fd, 0x0802, 0x0916, 0x0404, 0x0705, 
 22.1874 +    0xf902, 0xf7fb, 0xe5ea, 0xfef9, 0x0f10, 0x000a, 0x0001, 0xef01, 0x07ff, 
 22.1875 +    0x030c, 0xfb07, 0xf4fb, 0xf6f1, 0x0e00, 0x0f1d, 0xf6f0, 0xf800, 0x05f2, 
 22.1876 +    0xf803, 0x1200, 0x171a, 0xfd12, 0xe9e1, 0xeeef, 0xff03, 0xfbfd, 0xf8fe, 
 22.1877 +    0x1204, 0x0603, 0x1f22, 0xf905, 0xecf9, 0x02e8, 0xff01, 0xfefd, 0x01ee, 
 22.1878 +    0x0c14, 0xff01, 0xe9f8, 0x0fff, 0xfe02, 0xf507, 0xfbeb, 0x210e, 0x0720, 
 22.1879 +    0x00f8, 0xe4f4, 0xffea, 0xf9f9, 0x0c10, 0x04f7, 0xfb12, 0x0801, 0xfe0a, 
 22.1880 +    0xf2f0, 0x07fd, 0x0409, 0xfafe, 0x0eef, 0x0914, 0x0400, 0x07f0, 0x0001, 
 22.1881 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1882 +    0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1883 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1884 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1885 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1886 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1887 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1888 +    0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 
 22.1889 +    0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1890 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 
 22.1891 +    0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 
 22.1892 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1893 +    0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1894 +    0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1895 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0a89, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1896 +    0x0000, 0x0032, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1897 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x44d7, 
 22.1898 +    0xde87, 0xe03d, 0x0639, 0x06ea, 0xa8c0, 0x2e4b, 0x0c40, 0x202c, 0xd7c9, 
 22.1899 +    0x5d29, 0x3356, 0x1e8b, 0xab17, 0xaf04, 0x65b3, 0x58d5, 0x30d3, 0x459b, 
 22.1900 +    0xb322, 0x4d23, 0x6790, 0xa709, 0xad10, 0x2573, 0x1c98, 0x31b9, 0xfef2, 
 22.1901 +    0xf8ec, 0xc642, 0x028b, 0xdffd, 0xebb4, 0x37a7, 0xf239, 0x06dc, 0xf15b, 
 22.1902 +    0xc6ba, 0xd82f, 0x57c5, 0x00a9, 0xff01, 0x0000, 0x0000, 0x521c, 0x0092, 
 22.1903 +    0xf44c, 0x7d4f, 0x6292, 0x8c00, 0x6da7, 0x7886, 0x1361, 0x3e44, 0x002b, 
 22.1904 +    0x477b, 0x8d7e, 0x721a, 0x6d7a, 0xa300, 0x26fb, 0x003c, 0x1f42, 0x5c2c, 
 22.1905 +    0xe317, 0xe38c, 0x1353, 0x6dc0, 0x709e, 0x000d, 0xadc6, 0xfcaa, 0x2e3d, 
 22.1906 +    0x807c, 0x8f81, 0xebf2, 0x0594, 0x00fb, 0x5700, 0x23ed, 0xcccd, 0x1238, 
 22.1907 +    0xed1e, 0x3339, 0x5d91, 0xe81f, 0xa9ad, 0x16dd, 0x6dc7, 0xa527, 0x7500, 
 22.1908 +    0x5105, 0x092c, 0x7f81, 0xcd00, 0xe305, 0xe9c1, 0x5030, 0xca9c, 0xc039, 
 22.1909 +    0xd235, 0x03e2, 0x39f4, 0xa913, 0x00ee, 0x1c00, 0x479f, 0x0cfe, 0x4328, 
 22.1910 +    0x2695, 0x1a51, 0x6003, 0x4600, 0xd7e3, 0x3910, 0xc525, 0x111e, 0x1b12, 
 22.1911 +    0x53f0, 0xebfa, 0x0408, 0x003c, 0x11ef, 0x79f6, 0x0091, 0x0000, 0x0000, 
 22.1912 +    0xc9ee, 0x45ea, 0xbafa, 0x49e8, 0xb02a, 0xede3, 0x0609, 0xfa00, 0x03da, 
 22.1913 +    0xc201, 0x09f6, 0x00e4, 0x4400, 0xf9c3, 0xe917, 0xa65a, 0x872a, 0xee61, 
 22.1914 +    0x0000, 0x0b00, 0x0275, 0x007e, 0x2a5c, 0xb6c4, 0x0000, 0x451b, 0xf5c7, 
 22.1915 +    0x1305, 0x1e1a, 0xd714, 0x0622, 0x0c08, 0x0b00, 0xf607, 0x76ee, 0xaf00, 
 22.1916 +    0x2615, 0x0016, 0x1ddf, 0x0004, 0x0000, 0x0000, 0x12ee, 0x0000, 0x0000, 
 22.1917 +    0x0000, 0xff00, 0x43be, 0xc000, 0xdef7, 0x0166, 0xf99e, 0xdae2, 0x3d54, 
 22.1918 +    0x158e, 0xd5fe, 0xf932, 0x0cdc, 0xd1de, 0xf323, 0xe3f0, 0x0000, 0x0000, 
 22.1919 +    0x0000, 0x0000, 0x0000, 0xdf21, 0x0000, 0x0000, 0x1d00, 0xe9fa, 0x5600, 
 22.1920 +    0x7238, 0x0106, 0x0f11, 0xff1e, 0x180b, 0xea0d, 0x3bf9, 0xf1f4, 0x0208, 
 22.1921 +    0x280b, 0xbd4b, 0x3edd, 0x1c03, 0xdcf8, 0x08ea, 0x350e, 0xce00, 0x110f, 
 22.1922 +    0x1bf7, 0x0000, 0xbaf1, 0xfcd8, 0x453c, 0xa100, 0x67c5, 0xd0e3, 0x9981, 
 22.1923 +    0xe3f2, 0x0306, 0x0a00, 0xeffe, 0xdd37, 0x42dc, 0x0be0, 0xf723, 0xfede, 
 22.1924 +    0x230a, 0xa640, 0x0710, 0xfff3, 0x1ff2, 0xb950, 0x2cf7, 0x29f3, 0xc0e3, 
 22.1925 +    0x0110, 0x1bed, 0xd121, 0xfcef, 0xf8fa, 0xfd02, 0x05e3, 0x00fb, 0xde05, 
 22.1926 +    0x23d1, 0xfae4, 0xde37, 0x06d3, 0x00fa, 0x2a00, 0xdef8, 0x0b13, 0xe931, 
 22.1927 +    0x00c8, 0x0000, 0x4500, 0x00bb, 0x6c36, 0x0588, 0x4bef, 0x1015, 0x00c3, 
 22.1928 +    0x7336, 0xbab1, 0x0694, 0x00db, 0x229f, 0x2df8, 0xb83f, 0x04e9, 0xfcdd, 
 22.1929 +    0x0b04, 0x0fe8, 0xe1f6, 0xe9e7, 0x1ed6, 0x50b4, 0xe218, 0x0d05, 0x18ee, 
 22.1930 +    0xec09, 0xc80f, 0x3701, 0xdd3d, 0x00ae, 0x0000, 0x0600, 0xfb23, 0x0cfe, 
 22.1931 +    0x0d21, 0x0ed3, 0x120d, 0x080d, 0x0709, 0x08fe, 0x080c, 0x120a, 0xfe0e, 
 22.1932 +    0x0300, 0x1e16, 0xcdf4, 0x0044, 0x0000, 0x11ef, 0x0000, 0x0000, 0x0000, 
 22.1933 +    0x0000, 0x0000, 0x0000, 0x0000, 0x05fb, 0xff00, 0xd701, 0x0029, 0xe600, 
 22.1934 +    0x39bb, 0xdedd, 0xe62b, 0x3e89, 0xf34a, 0xf7bc, 0x08d7, 0x1709, 0xeff7, 
 22.1935 +    0x1edb, 0xeae3, 0x00f9, 0x2400, 0x00dc, 0x0200, 0x00fe, 0x7200, 0xc3cb, 
 22.1936 +    0x0c00, 0xc034, 0x4c02, 0x0edc, 0x01fb, 0x0c49, 0xff9e, 0x1d0e, 0x35fb, 
 22.1937 +    0xbdfd, 0xfd1a, 0x0def, 0x2729, 0xdccb, 0xf12d, 0x0200, 0x1dea, 0x271f, 
 22.1938 +    0xc9e7, 0x0624, 0xf80b, 0x020c, 0xdd00, 0x4c2a, 0xeeba, 0x0cd9, 0x080a, 
 22.1939 +    0x47f2, 0xf9fb, 0xcbe6, 0xd056, 0xd2f6, 0x223e, 0x12c5, 0xcd12, 0x46f8, 
 22.1940 +    0xc51e, 0xf622, 0x12dd, 0x0202, 0xbb14, 0x392d, 0x00ea, 0xdf16, 0xc0fd, 
 22.1941 +    0x2c29, 0x06e8, 0xf3e2, 0xf735, 0xd4ee, 0xfa1e, 0xf703, 0xfb1a, 0x1ed6, 
 22.1942 +    0x12f3, 0xbe3a, 0xe506, 0x1908, 0xf6f3, 0xd836, 0x09d6, 0xfce8, 0xf7e6, 
 22.1943 +    0x27f8, 0xd117, 0xe8e2, 0xdc2e, 0x37fc, 0xd2f1, 0x0700, 0x00f9, 0x0700, 
 22.1944 +    0x00f9, 0x1798, 0x4a69, 0xe00c, 0x32b2, 0xe765, 0x5301, 0xc4c5, 0x1368, 
 22.1945 +    0x1e6e, 0x3c07, 0xf209, 0xc817, 0xe5fa, 0xe831, 0xeb1b, 0xf7d8, 0xc148, 
 22.1946 +    0x3cdd, 0x22d3, 0xf717, 0x28b1, 0xfefc, 0xc529, 0xf9fc, 0x41d9, 0x9734, 
 22.1947 +    0xe90b, 0xf90c, 0x2200, 0xe10b, 0x1920, 0x2ac0, 0xde36, 0x1105, 0xfc07, 
 22.1948 +    0x1105, 0x0608, 0x16fa, 0xe818, 0x1913, 0x05f7, 0x0713, 0x0ff1, 0xf726, 
 22.1949 +    0x1dec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1950 +    0x0000, 0xe400, 0x0517, 0xe300, 0xd21d, 0xe000, 0xdd01, 0x1ff7, 0xf8e9, 
 22.1951 +    0x14d8, 0x00fb, 0x19dd, 0xf4f8, 0xe9df, 0x22eb, 0xcc10, 0x3b00, 0x00c5, 
 22.1952 +    0x0000, 0x0000, 0x0000, 0x0000, 0x2222, 0x44bc, 0xecd1, 0x00ff, 0x2222, 
 22.1953 +    0x4112, 0x5b0f, 0x614d, 0xbbca, 0x2c0d, 0x0d21, 0xdbec, 0xee05, 0xfd13, 
 22.1954 +    0x1dfe, 0xce17, 0xe914, 0x22c5, 0x1c09, 0xe915, 0xe450, 0x0505, 0xe0ea, 
 22.1955 +    0x28d5, 0x050d, 0x4334, 0xc1aa, 0x8fb2, 0xffc8, 0xfb42, 0x0ee5, 0xe600, 
 22.1956 +    0x25fe, 0xfef7, 0x21df, 0x19da, 0x3816, 0xb3f2, 0x1f4b, 0x30c3, 0xcafe, 
 22.1957 +    0xf315, 0xfc00, 0xe235, 0x08c5, 0xff60, 0x2791, 0xf720, 0x14cd, 0x00d7, 
 22.1958 +    0xc88a, 0x14b1, 0x120c, 0x2fcc, 0x85f9, 0x2833, 0xd644, 0x4be3, 0xd3a0, 
 22.1959 +    0xd461, 0x3fe2, 0xe10a, 0xc0f0, 0xd133, 0x3bd3, 0xa074, 0xdafd, 0x1eda, 
 22.1960 +    0x0c4f, 0x1f9c, 0x1723, 0x3b94, 0xf4f6, 0x1013, 0xf0c6, 0x3e60, 0x10c7, 
 22.1961 +    0x17e6, 0x16e0, 0xe81e, 0x3403, 0xe9e9, 0x1df2, 0xbd3a, 0x31f0, 0xeff0, 
 22.1962 +    0xd9f0, 0x152c, 0x0dd4, 0xcc00, 0x4600, 0xbbd2, 0x35fa, 0x1eda, 0xe624, 
 22.1963 +    0x18e3, 0x3d1b, 0x068d, 0xfb03, 0x51ea, 0xb964, 0x01ad, 0xec18, 0x0e04, 
 22.1964 +    0xec2a, 0xc523, 0x2bee, 0x0d0d, 0xecfa, 0xfc1d, 0xfe11, 0x010b, 0x0c00, 
 22.1965 +    0x0108, 0xfc1a, 0x0f15, 0xf6fb, 0x0b03, 0x1b01, 0xf203, 0x1b02, 0xd700, 
 22.1966 +    0x0029, 0x01ff, 0xfb00, 0x0005, 0x0000, 0x06fa, 0x0000, 0xe400, 0xec08, 
 22.1967 +    0x0028, 0x05f5, 0xf4f7, 0xf0d0, 0x0700, 0xe915, 0xefe5, 0xf4fc, 0xf300, 
 22.1968 +    0xea05, 0xe9e9, 0xda05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1969 +    0x0000, 0xd729, 0x0000, 0x0000, 0x1700, 0x38e9, 0xb22b, 0x1411, 0x3ef9, 
 22.1970 +    0xcfe1, 0x017c, 0x2eab, 0xeaf6, 0x343d, 0xfbd6, 0x56d0, 0xa317, 0x07e7, 
 22.1971 +    0x0a22, 0x39f4, 0x16b5, 0x3313, 0xc8d8, 0xfd1b, 0xfaf6, 0x1019, 0xda07, 
 22.1972 +    0x2df6, 0x3fb4, 0xe52c, 0xd4f3, 0x0fe5, 0x1549, 0xc8e1, 0x17f2, 0x0df8, 
 22.1973 +    0xf811, 0x0e06, 0xd517, 0x34f7, 0xfbf4, 0xf319, 0x0d01, 0xc620, 0x1323, 
 22.1974 +    0x34ca, 0x0908, 0xf206, 0x10d0, 0x0fdd, 0xb83d, 0xd043, 0x04d9, 0x1601, 
 22.1975 +    0xd807, 0xf8f4, 0x2af5, 0xea11, 0x04f8, 0xd700, 0xff14, 0x0019, 0xc8d4, 
 22.1976 +    0xdb35, 0x3fea, 0x2bb0, 0xb218, 0xb64a, 0x570b, 0x06bc, 0xca25, 0x80ed, 
 22.1977 +    0x29a1, 0xaf3d, 0x40df, 0x312e, 0xecd2, 0x866a, 0x0d3c, 0x3be0, 0xce07, 
 22.1978 +    0xf01b, 0x0adc, 0x3dfd, 0x09c9, 0xfdea, 0xe813, 0x00e9, 0xda12, 0xec02, 
 22.1979 +    0x3307, 0xfcaa, 0x0009, 0xeafc, 0x0b1d, 0xfbe9, 0xf6f8, 0xf10f, 0x120f, 
 22.1980 +    0x33d9, 0xc711, 0xf317, 0xd318, 0x2f26, 0x2fe5, 0x04cb, 0xf426, 0xf13d, 
 22.1981 +    0x18e8, 0xf603, 0xfa10, 0x0516, 0x2bfa, 0xb41c, 0x2c0d, 0x0f07, 0xf3d9, 
 22.1982 +    0x0051, 0x06da, 0xf300, 0x0d04, 0x001c, 0x0000, 0xf300, 0x000d, 0x16d8, 
 22.1983 +    0xfb12, 0xc905, 0x1126, 0xf9df, 0xbd0e, 0x3528, 0x03cf, 0xe5f9, 0x23d2, 
 22.1984 +    0xf8ea, 0xcf5d, 0x1dc0, 0xf5fa, 0x08eb, 0xee09, 0xf2ef, 0xe6ed, 0xef17, 
 22.1985 +    0xf600, 0xffe9, 0x0000, 0xf907, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.1986 +    0x0600, 0x52fa, 0xbbf3, 0xf92d, 0x36da, 0x3902, 0xabeb, 0xdc5c, 0x2828, 
 22.1987 +    0x2ba0, 0x1b35, 0x2da7, 0xdbf9, 0xed40, 0x2fdd, 0xcc0c, 0xf15e, 0xe413, 
 22.1988 +    0x0bf2, 0xc158, 0x00fb, 0x31ef, 0x05d5, 0xbb2e, 0x0311, 0x4ff5, 0x0885, 
 22.1989 +    0xf427, 0xeafb, 0xfb1e, 0xffdf, 0xe01b, 0x120d, 0xd80f, 0x3f07, 0xc7e2, 
 22.1990 +    0x0a20, 0xc3f9, 0x243f, 0xc121, 0xc717, 0xf633, 0x20dc, 0x8862, 0x2821, 
 22.1991 +    0xfec1, 0xf13d, 0x55ae, 0x9545, 0x0dfa, 0x1033, 0xf7b4, 0xf100, 0x6506, 
 22.1992 +    0xebbf, 0xc916, 0xdd13, 0x0619, 0xe404, 0xeffd, 0x08e2, 0x22e0, 0xc300, 
 22.1993 +    0xb14f, 0xff2e, 0x0001, 0x1ef3, 0xf2f0, 0xde03, 0x3e22, 0x05c0, 0x242f, 
 22.1994 +    0x50b5, 0xbb1c, 0x3008, 0xeff5, 0xe177, 0x36a4, 0xc61f, 0xfb26, 0x3f16, 
 22.1995 +    0xbdc4, 0xfe34, 0xddf4, 0x01fc, 0x2900, 0xf3cb, 0xe8f0, 0xc13f, 0x09f0, 
 22.1996 +    0x11ea, 0xb02d, 0xf312, 0x10eb, 0x110e, 0xf5f8, 0xf912, 0x02d9, 0xca4c, 
 22.1997 +    0x1f06, 0x0fcf, 0x0d13, 0x01ff, 0xdb2a, 0x0329, 0xfb00, 0xe316, 0x0b17, 
 22.1998 +    0xef12, 0x3408, 0x1ee3, 0xdd03, 0x1a0b, 0x0831, 0xe301, 0xf607, 0x1604, 
 22.1999 +    0x0df9, 0xe400, 0x001c, 0x0ff1, 0xe500, 0x20fa, 0xbd01, 0x211e, 0xdd04, 
 22.2000 +    0x07f0, 0xf3e3, 0xf149, 0x26b8, 0xddee, 0xf4ed, 0xf235, 0xf0f3, 0x11fb, 
 22.2001 +    0x37c3, 0xf3e5, 0xc6e6, 0xdc3f, 0x0f16, 0x0ec1, 0xe72b, 0xb727, 0x0c06, 
 22.2002 +    0x1ef9, 0x44d7, 0x08be, 0x0a01, 0xb739, 0x33fb, 0x1f11, 0xc105, 0xfb16, 
 22.2003 +    0x2cf4, 0x00c2, 0xf570, 0x0fad, 0x122f, 0xeef0, 0x000d, 0x3803, 0xc4d3, 
 22.2004 +    0x0b11, 0xbf3c, 0xfa1c, 0x4cfb, 0xa3fa, 0xe556, 0x0c00, 0x26eb, 0x09fc, 
 22.2005 +    0xa112, 0x6b26, 0xf7e1, 0x0e15, 0x688f, 0xd3ee, 0xc143, 0x58d1, 0xe70c, 
 22.2006 +    0xbb08, 0x09f4, 0x1643, 0xdab6, 0x1f2a, 0xf705, 0xb8bb, 0x5847, 0x9132, 
 22.2007 +    0x27ef, 0xf70b, 0xecd7, 0x3246, 0xbcd5, 0x51e8, 0xe512, 0xf5d6, 0x3524, 
 22.2008 +    0xe1d9, 0x0e16, 0xfcea, 0x07f8, 0x08fc, 0x00fe, 0xfc12, 0xbc24, 0x1003, 
 22.2009 +    0xff1d, 0x0ccb, 0x14e6, 0xe915, 0xd8ea, 0x040d, 0xab24, 0x2d2d, 0xe3f6, 
 22.2010 +    0xf528, 0x06ac, 0x1024, 0x1af9, 0xd807, 0x172c, 0x1cc7, 0x0f06, 0xce18, 
 22.2011 +    0x1738, 0x08e0, 0xcff4, 0x63fd, 0xae0e, 0xf344, 0x0ed9, 0xf509, 0xffdf, 
 22.2012 +    0xd33d, 0x60e3, 0xe4b8, 0xd92b, 0xf02f, 0xba01, 0x3a11, 0x12cf, 0xfcda, 
 22.2013 +    0x41ee, 0xe202, 0xd4f8, 0x042c, 0x0ce9, 0x1ae2, 0xb737, 0x3bde, 0x1a42, 
 22.2014 +    0xc6b8, 0x5028, 0xe8e5, 0xaf27, 0x2f28, 0xe8f8, 0x2e00, 0xe213, 0xe50f, 
 22.2015 +    0x3200, 0x0008, 0x05ef, 0xde3a, 0x24d7, 0x0f2f, 0xbc00, 0x1c28, 0x0000, 
 22.2016 +    0xc3db, 0x0062, 0xd8e3, 0x3f06, 0xe500, 0x0bc5, 0x0c23, 0xf8cb, 0xd519, 
 22.2017 +    0x38dd, 0xd4f5, 0x1400, 0x0005, 0x0bcf, 0xf71e, 0xc2e6, 0x3818, 0x188e, 
 22.2018 +    0xcb50, 0xd23a, 0x0ac1, 0x273b, 0x059f, 0x1105, 0x0812, 0xf2dc, 0xe232, 
 22.2019 +    0xf516, 0x6c00, 0x1fcf, 0xf616, 0xf2ef, 0x12d1, 0x083c, 0x28b4, 0xc649, 
 22.2020 +    0x30dd, 0xf2f4, 0x0dfb, 0xf1ff, 0x05f7, 0x08ee, 0x11ef, 0xd4ff, 0xf448, 
 22.2021 +    0xf130, 0xdcef, 0x36f8, 0xdef6, 0xd346, 0x0be3, 0xed37, 0x06ef, 0x30fe, 
 22.2022 +    0xb511, 0x020a, 0x171d, 0xeecf, 0x142c, 0x55a9, 0xc2fc, 0x184d, 0xe9c2, 
 22.2023 +    0x1d1c, 0xef0a, 0xeab8, 0x3f41, 0x1dd8, 0xfed5, 0xda3e, 0xfdb7, 0x0838, 
 22.2024 +    0x05ff, 0x0eb5, 0xf338, 0xd509, 0x0aee, 0x0121, 0x15f3, 0xcb00, 0x271d, 
 22.2025 +    0xf0b8, 0x3627, 0xc0d4, 0x4717, 0xe6ee, 0x05f8, 0x13f9, 0xf7fb, 0x02e0, 
 22.2026 +    0x0001, 0xc14c, 0x6dcb, 0xc2f8, 0xf509, 0x4614, 0xcadc, 0x1ed6, 0x1437, 
 22.2027 +    0xd2f5, 0xf416, 0x0804, 0xe11e, 0x1f01, 0x03f3, 0xd929, 0x0cf6, 0x00ff, 
 22.2028 +    0xd429, 0x0cf8, 0xaf45, 0x3ebf, 0xe039, 0xecec, 0x0104, 0x1f04, 0xc6ee, 
 22.2029 +    0x2018, 0xb612, 0x093a, 0xb2fe, 0x37f2, 0x1d1a, 0xd8f4, 0xd21f, 0x092e, 
 22.2030 +    0xddec, 0x03ff, 0x1c1c, 0x08f0, 0x11fc, 0xfce4, 0x0ef5, 0xcf2d, 0x26d4, 
 22.2031 +    0xfdfe, 0x1905, 0xfbfa, 0xff09, 0x0003, 0x02f5, 0x000a, 0x0c05, 0xcf19, 
 22.2032 +    0x0105, 0x2b07, 0xe209, 0x1fef, 0x00f3, 0xe81e, 0x1101, 0xf7d1, 0x1d02, 
 22.2033 +    0x0c2d, 0x03d5, 0x0ee6, 0xf414, 0x16fc, 0xdae4, 0x1bfd, 0xef24, 0x03e4, 
 22.2034 +    0xf6f5, 0x180a, 0xe8f3, 0x09e1, 0x06fe, 0xf8fc, 0xec2a, 0x33cf, 0x1bf5, 
 22.2035 +    0xd3f9, 0x0df7, 0x1d14, 0xd8ef, 0x2e0b, 0xf1df, 0x1a14, 0xfe04, 0x0100, 
 22.2036 +    0x0d24, 0xe3e1, 0x0802, 0xe533, 0x16d2, 0x151e, 0x1ac2, 0x070f, 0xf4fc, 
 22.2037 +    0xeced, 0x1901, 0xfffc, 0xfdfe, 0x0103, 0x12f0, 0xe511, 0x10f8, 0x01fe, 
 22.2038 +    0x03f1, 0xeff8, 0x210d, 0xe1fd, 0x1aeb, 0xe517, 0x111f, 0x08d9, 0xedf5, 
 22.2039 +    0x061e, 0xfb19, 0x0bc7, 0x150d, 0x00f9, 0xfa0f, 0xf405, 0xf1f0, 0x150b, 
 22.2040 +    0x0a0c, 0xfee7, 0x0d19, 0x19d5, 0x160c, 0xe8e5, 0xeffd, 0x301a, 0xf0e4, 
 22.2041 +    0xf701, 0xe908, 0x1af9, 0xf417, 0xfdef, 0x01ff, 0xf102, 0x1101, 0xfefd, 
 22.2042 +    0xfdf3, 0x0b06, 0xdcff, 0xf723, 0x14ef, 0xf4db, 0x081f, 0x02fa, 0xf2fc, 
 22.2043 +    0xfd20, 0x1fe2, 0x0af3, 0xe603, 0xfe05, 0x041b, 0x22e1, 0x02fd, 0xf401, 
 22.2044 +    0x1800, 0xf9fa, 0x12f2, 0xf118, 0xeb0b, 0x1501, 0xea01, 0x02fb, 0x1d00, 
 22.2045 +    0xfae3, 0x0006, 0x0100, 0xfcfd, 0xfa03, 0xf500, 0x0a01, 0x0909, 0x0dd4, 
 22.2046 +    0xf705, 0xff14, 0xfa07, 0x0005, 0x19e1, 0x10ec, 0xe311, 0x0315, 0x0de1, 
 22.2047 +    0x0616, 0x0ff4, 0xe804, 0x0601, 0x0702, 0x0001, 0x0000, 0x0000, 0x0000, 
 22.2048 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2049 +    0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2050 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2051 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2052 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2053 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2054 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 
 22.2055 +    0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 
 22.2056 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2057 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 
 22.2058 +    0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2059 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2060 +    0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0000, 
 22.2061 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2062 +    0x0000, 0x0bca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, 0x8000, 
 22.2063 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2064 +    0x0000, 0x0000, 0x0000, 0xfc00, 0xf8fa, 0xfaf4, 0x2e44, 0x0208, 0x0000, 
 22.2065 +    0xfe00, 0xfcfe, 0xf6fa, 0xfefe, 0xfcfe, 0xfafc, 0xfcfe, 0xf0fa, 0xfafc, 
 22.2066 +    0xfef4, 0xf4f6, 0x009e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2067 +    0x8400, 0x105c, 0xf4fe, 0x0002, 0x0002, 0xf600, 0xfcfc, 0xfafc, 0xfafa, 
 22.2068 +    0xfefe, 0x96fe, 0xeac8, 0x0000, 0x0808, 0x0406, 0x0c06, 0x0610, 0x0410, 
 22.2069 +    0x1208, 0x3e32, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2070 +    0xfd00, 0xfcf8, 0xf8fa, 0xf4fc, 0xa69a, 0x0804, 0x0406, 0x0602, 0x0206, 
 22.2071 +    0x0804, 0x020c, 0x020a, 0x0c04, 0x1606, 0x0075, 0x0000, 0x0000, 0x0000, 
 22.2072 +    0x0000, 0xfaf9, 0xf0fc, 0xfafa, 0xfaf8, 0xf6f8, 0xfcfc, 0xf8fc, 0x94e0, 
 22.2073 +    0x00ee, 0x0000, 0x0000, 0x0000, 0x0600, 0x0404, 0x0c04, 0x0406, 0x0208, 
 22.2074 +    0x0a04, 0x2004, 0x6536, 0xfaf7, 0xfefc, 0xfa00, 0xfcfe, 0xfcf6, 0xf2fa, 
 22.2075 +    0xfcfc, 0xf8fc, 0xfcfa, 0xfcfa, 0xf6fc, 0xfefe, 0xfcfa, 0xfe8a, 0x0000, 
 22.2076 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0a04, 0x0608, 0x0608, 0x0c02, 
 22.2077 +    0x0406, 0x0406, 0xa806, 0x0003, 0xfaff, 0x00fe, 0xfc00, 0xf6fc, 0xfcfe, 
 22.2078 +    0xfafa, 0xf6fa, 0xfefc, 0xfafc, 0xfcfa, 0xfefa, 0xf8fc, 0xfcfc, 0xf800, 
 22.2079 +    0xf8fa, 0x008a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0a06, 0x0608, 
 22.2080 +    0x040a, 0x0206, 0x060c, 0x0804, 0x0c06, 0x0204, 0x0804, 0x2e26, 0x0031, 
 22.2081 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf500, 0xfafa, 0xfcfa, 0xf4fe, 
 22.2082 +    0xfefc, 0xfafc, 0xfcfa, 0xfcfa, 0xfefc, 0xfcf6, 0xfcfa, 0xf8fc, 0xd4e8, 
 22.2083 +    0x00c2, 0x0000, 0x0000, 0x0000, 0x0202, 0x0c06, 0x0e02, 0x0606, 0x0a02, 
 22.2084 +    0x0608, 0x0408, 0x0e02, 0x0602, 0x0804, 0x0804, 0x0406, 0x0206, 0x2e0c, 
 22.2085 +    0x002b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6fb, 
 22.2086 +    0xf4fe, 0xfcfa, 0xf6fe, 0xfcfa, 0xfaf8, 0xfa00, 0xfcf4, 0xf8fc, 0xfafc, 
 22.2087 +    0xfcf8, 0xfefc, 0xfef6, 0xf4fa, 0xf0b8, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2088 +    0x0000, 0x0406, 0x0a04, 0x0e06, 0x0606, 0x0a02, 0x0a04, 0x0606, 0x0602, 
 22.2089 +    0x060c, 0x0a02, 0x0804, 0x0606, 0x0204, 0x020c, 0x0606, 0x192a, 0x0000, 
 22.2090 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfcf2, 0xf4fc, 
 22.2091 +    0xf6fe, 0xfaf8, 0xfafe, 0xfcf2, 0xf4fe, 0xf8fc, 0xfaf8, 0xf8fc, 0xfafc, 
 22.2092 +    0xfcf8, 0xfefc, 0xfcf6, 0xfafe, 0xfafe, 0xf4fa, 0x00dc, 0x0000, 0x0000, 
 22.2093 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0602, 0x0610, 0x0c04, 0x0602, 
 22.2094 +    0x0410, 0x0808, 0x0806, 0x0608, 0x0206, 0x060c, 0x0806, 0x0604, 0x0408, 
 22.2095 +    0x0204, 0x0606, 0x0006, 0x1404, 0x0015, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2096 +    0x0000, 0x0000, 0x0000, 0xfaf5, 0xf6fa, 0xf6fa, 0xf8f8, 0xfcfc, 0xfaf0, 
 22.2097 +    0xf8fa, 0xfafa, 0xfef2, 0xfafa, 0xf8fa, 0xfef4, 0xfcfc, 0xfef6, 0xf8fc, 
 22.2098 +    0xfa00, 0xfefa, 0xfc00, 0xfcfe, 0xfc00, 0xfe00, 0x00f0, 0x0000, 0x0000, 
 22.2099 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0806, 0x0a0c, 0x020e, 
 22.2100 +    0x0608, 0x0410, 0x0c06, 0x0604, 0x060e, 0x0604, 0x0a08, 0x0a02, 0x0602, 
 22.2101 +    0x040a, 0x0604, 0x0202, 0x0008, 0x0004, 0x0204, 0x0202, 0x0003, 0x0000, 
 22.2102 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8f3, 0xf8fc, 
 22.2103 +    0xf2f6, 0xf2fc, 0xf8fe, 0xf8f0, 0xf4fe, 0xfcfa, 0xfaf0, 0xfcfc, 0xfaf4, 
 22.2104 +    0xfafa, 0xfefa, 0xfef4, 0xfafc, 0xfefe, 0xfef8, 0xfefe, 0xfefe, 0xfefe, 
 22.2105 +    0xfe00, 0x0000, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2106 +    0x0000, 0x0000, 0x0e04, 0x0c08, 0x0408, 0x1408, 0x0a08, 0x0608, 0x0212, 
 22.2107 +    0x0608, 0x0a0a, 0x0a06, 0x0406, 0x060e, 0x0602, 0x0406, 0x040c, 0x0202, 
 22.2108 +    0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2109 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8fb, 
 22.2110 +    0xf8f4, 0xf8ea, 0xfafc, 0xf2f4, 0xf2fc, 0xfafc, 0xfaee, 0xfcfa, 0xfef4, 
 22.2111 +    0xf8f4, 0xfefa, 0xfaf6, 0xfafa, 0xfefc, 0x00f6, 0xfefc, 0x00fe, 0x0000, 
 22.2112 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2113 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0e0a, 0x0408, 0x041a, 
 22.2114 +    0x080a, 0x080a, 0x0a0c, 0x0808, 0x1202, 0x0606, 0x060a, 0x060e, 0x0602, 
 22.2115 +    0x0408, 0x0808, 0x0302, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2116 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2117 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf700, 0xe8f8, 0xf8fc, 0xfcee, 
 22.2118 +    0xf4f0, 0xfef8, 0xfcf0, 0xf6f2, 0xfcfa, 0xf0fa, 0xfafa, 0xfcf8, 0xf8f8, 
 22.2119 +    0xfafc, 0xf6fe, 0xfefe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2120 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2121 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e02, 0x0a0a, 0x1c04, 0x0804, 
 22.2122 +    0x080c, 0x0e0e, 0x0804, 0x0c06, 0x060a, 0x060a, 0x1006, 0x0404, 0x020a, 
 22.2123 +    0x060a, 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2124 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2125 +    0xff00, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8f3, 0xe8fa, 
 22.2126 +    0xf6f8, 0xf6f4, 0xf4f4, 0xf8fa, 0xeefc, 0xfaf8, 0xfcf4, 0xf2f8, 0xfcfc, 
 22.2127 +    0xf8fa, 0xfcf8, 0xfcf8, 0xfefc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2128 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2129 +    0x0000, 0x0600, 0xf802, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0602, 
 22.2130 +    0x1a08, 0x0608, 0x0e08, 0x0412, 0x0410, 0x1408, 0x0806, 0x060a, 0x1004, 
 22.2131 +    0x0606, 0x0a04, 0x0608, 0x0606, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2132 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2133 +    0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfcfa, 0x0efe, 0x0003, 0x0000, 
 22.2134 +    0x0000, 0x0000, 0x0000, 0xf2f5, 0xf6f2, 0xfaee, 0xeaf8, 0xfcf8, 0xf4f8, 
 22.2135 +    0xfcf2, 0xfef2, 0xf6f8, 0xfaf4, 0xfaf8, 0xf2fe, 0xfafc, 0xf8fe, 0x0000, 
 22.2136 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2137 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0406, 0xf402, 
 22.2138 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a0c, 0x0810, 0x180a, 0x0804, 
 22.2139 +    0x0c0a, 0x080c, 0x080c, 0x0806, 0x0410, 0x0a06, 0x0806, 0x020c, 0x0806, 
 22.2140 +    0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2141 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2142 +    0x0000, 0xfefd, 0xfafe, 0x00f8, 0x06fc, 0x0013, 0x0000, 0x0000, 0x0000, 
 22.2143 +    0xf6fd, 0xf6fc, 0xf6e8, 0xf8f2, 0xfaf8, 0xf8ec, 0xf4f8, 0xf4fa, 0xfaf6, 
 22.2144 +    0xfefa, 0xfeec, 0xf8fa, 0xf4fa, 0xfefc, 0xfcfc, 0x0000, 0x0000, 0x0000, 
 22.2145 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2146 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0404, 0xf802, 0x00fc, 0x0000, 
 22.2147 +    0x0000, 0x0000, 0x0000, 0x0a10, 0x1404, 0x1406, 0x080c, 0x1204, 0x1004, 
 22.2148 +    0x060c, 0x0804, 0x0610, 0x0808, 0x0808, 0x0608, 0x0204, 0x010c, 0x0000, 
 22.2149 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2150 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 
 22.2151 +    0xfefe, 0xfcf8, 0xfcfa, 0x0a00, 0x0015, 0x0000, 0x0000, 0x0000, 0xf6f9, 
 22.2152 +    0xf2f2, 0xecf8, 0xf6fc, 0xf8ec, 0xf0fa, 0xf0fe, 0xfaf6, 0xfafc, 0xfaf0, 
 22.2153 +    0xf8fa, 0xfcfa, 0xfcf4, 0xfcfc, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2154 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2155 +    0x0000, 0x0000, 0x0000, 0x0400, 0x0204, 0x00f6, 0x0000, 0x0000, 0x0000, 
 22.2156 +    0x0000, 0x0600, 0x0e0a, 0x0a0a, 0x0418, 0x0a08, 0x0c0c, 0x0c0a, 0x0806, 
 22.2157 +    0x0612, 0x0c04, 0x0604, 0x0410, 0x0404, 0x0a08, 0x0003, 0x0000, 0x0000, 
 22.2158 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2159 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd00, 0xf8fc, 
 22.2160 +    0xf8fe, 0xfefc, 0x0e00, 0x0110, 0x0000, 0x0000, 0x0000, 0xf4f5, 0xf4f6, 
 22.2161 +    0xf6f6, 0xfcea, 0xf6f6, 0xf8f4, 0xf4f6, 0xf8fa, 0xf4f6, 0xf4fc, 0xf8fe, 
 22.2162 +    0xfcf4, 0xfafe, 0xf8f8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2163 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2164 +    0x0000, 0x0000, 0x0200, 0xfc06, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2165 +    0x0600, 0x060a, 0x0a18, 0x040a, 0x0e12, 0x0c08, 0x0808, 0x1204, 0x0806, 
 22.2166 +    0x080a, 0x0210, 0x0606, 0x0808, 0x0a06, 0x0001, 0x0000, 0x0000, 0x0000, 
 22.2167 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2168 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfafc, 0xfcfe, 
 22.2169 +    0xf6fc, 0x0400, 0x0d12, 0x0000, 0x0000, 0xfd00, 0xf2fa, 0xfcf8, 0xeaf6, 
 22.2170 +    0xfcf6, 0xfcee, 0xf4ee, 0xfafa, 0xeefa, 0xf6fa, 0xfafa, 0xfcf2, 0xfafa, 
 22.2171 +    0xfcfa, 0xfaf8, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2172 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2173 +    0x0000, 0x0200, 0x0004, 0x00fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2174 +    0x140a, 0x0806, 0x0a0e, 0x120e, 0x0408, 0x1408, 0x0208, 0x0410, 0x0a0e, 
 22.2175 +    0x0206, 0x0a06, 0x060c, 0x0406, 0x0504, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2176 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2177 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfcfe, 0xf6fe, 0xfcfc, 
 22.2178 +    0x08fe, 0x0b0e, 0x0000, 0x0000, 0x0000, 0xf8fb, 0xeaf8, 0xf6fc, 0xf8f2, 
 22.2179 +    0xeef2, 0xf8fc, 0xeef8, 0xfef8, 0xfcf2, 0xf0fa, 0xfefa, 0xfef4, 0xf8f6, 
 22.2180 +    0xfafc, 0xfcfe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2181 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2182 +    0x0000, 0x0006, 0x00fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a08, 
 22.2183 +    0x1404, 0x0e0e, 0x080a, 0x1608, 0x0804, 0x080c, 0x1206, 0x0604, 0x0808, 
 22.2184 +    0x040c, 0x020c, 0x0c06, 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2185 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2186 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6fd, 0xfefe, 0xfef8, 0x0efe, 
 22.2187 +    0x0408, 0x0003, 0x0000, 0x0000, 0xf100, 0xf6f8, 0xeefc, 0xe8fc, 0xf6f8, 
 22.2188 +    0xeefe, 0xf8f4, 0xf8f6, 0xeefa, 0xfafe, 0xf6fa, 0xfaf8, 0xfef6, 0xf8fc, 
 22.2189 +    0x00f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2190 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2191 +    0x0202, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x0612, 
 22.2192 +    0x0a12, 0x0806, 0x0816, 0x080e, 0x1204, 0x0808, 0x0e02, 0x060a, 0x060a, 
 22.2193 +    0x0206, 0x040e, 0x0906, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2194 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2195 +    0x0000, 0x0000, 0x0000, 0x0000, 0xfcfd, 0xfcfc, 0xfefc, 0x0602, 0x0706, 
 22.2196 +    0x0000, 0x0000, 0x0000, 0xfb00, 0xf4f6, 0xf4f6, 0xfaee, 0xf8f8, 0xf8ea, 
 22.2197 +    0xf8f4, 0xeefc, 0xfaf8, 0xf4fc, 0xf4fc, 0xfcf8, 0xfefa, 0xfcf2, 0xfafc, 
 22.2198 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2199 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0202, 
 22.2200 +    0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0612, 0x080a, 
 22.2201 +    0x0418, 0x0e0a, 0x0c08, 0x0410, 0x0a08, 0x0e08, 0x060a, 0x0404, 0x0610, 
 22.2202 +    0x0a02, 0x0a04, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2203 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2204 +    0x0000, 0x0000, 0x0000, 0xfb00, 0xf8fe, 0x02fe, 0x0602, 0x0007, 0x0000, 
 22.2205 +    0x0000, 0x0000, 0xfd00, 0xf4f4, 0xf8f2, 0xf6f8, 0xfcea, 0xf4f6, 0xf8f8, 
 22.2206 +    0xfcee, 0xf6f8, 0xf6fa, 0xfaf4, 0xfcfc, 0xfaf2, 0xf6fe, 0xfcfe, 0x00fc, 
 22.2207 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2208 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0402, 0xfa00, 
 22.2209 +    0xfc00, 0x0000, 0x0000, 0x0000, 0x0a04, 0x080e, 0x040a, 0x0814, 0x0a08, 
 22.2210 +    0x0408, 0x0812, 0x0406, 0x080c, 0x0806, 0x0604, 0x020c, 0x0604, 0x0602, 
 22.2211 +    0x0206, 0x0204, 0x0204, 0x0402, 0x0200, 0x0004, 0x0200, 0xff01, 0xff01, 
 22.2212 +    0x0000, 0x00fe, 0x00fe, 0x00fe, 0x00fc, 0xfefe, 0xfefe, 0xfcfe, 0x00fe, 
 22.2213 +    0xfefa, 0xfefe, 0xfcfe, 0xfefc, 0xfe00, 0x0000, 0xfefe, 0x0000, 0xfefc, 
 22.2214 +    0xfc00, 0xfc00, 0xfef8, 0xfefc, 0xfafa, 0xfcfe, 0xfefc, 0xfefa, 0xfefc, 
 22.2215 +    0xfcfc, 0xfcfe, 0xfe00, 0xfefc, 0xfefe, 0xfefe, 0xfefe, 0xfe00, 0xfefe, 
 22.2216 +    0xfe00, 0x0000, 0x00fe, 0xfe00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2217 +    0x0000, 0x0002, 0x0000, 0x0002, 0x0000, 0x0002, 0x0002, 0x0000, 0x0000, 
 22.2218 +    0x0000, 0x0000, 0x0002, 0x0200, 0x0200, 0x0400, 0x0200, 0x0200, 0x0004, 
 22.2219 +    0x0200, 0x0002, 0x0002, 0x0002, 0x0202, 0x0000, 0x0002, 0x0002, 0x0002, 
 22.2220 +    0x0200, 0x0200, 0x0000, 0x0200, 0x0000, 0x0000, 0x0002, 0x0000, 0x0200, 
 22.2221 +    0x02fe, 0xfe00, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2222 +    0x0000, 0x0000, 0x02fe, 0xfe00, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2223 +    0x0000, 0x00fe, 0x0000, 0x0000, 0x0000, 0x00fe, 0x0000, 0x0000, 0x02fe, 
 22.2224 +    0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe00, 0x0200, 0x00fe, 
 22.2225 +    0xfe00, 0x0000, 0x0200, 0x0200, 0x0000, 0x02fe, 0x0000, 0xfe00, 0x0200, 
 22.2226 +    0x0000, 0x02fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe00, 
 22.2227 +    0xfe02, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 
 22.2228 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2229 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2230 +    0x0000, 0x0200, 0x02fe, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0200, 0x02fe, 
 22.2231 +    0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2232 +    0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2233 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x2800, 0x0000, 0x0000, 0x0000, 
 22.2234 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2235 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2236 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2237 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2238 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2239 +    0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 
 22.2240 +    0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2241 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 
 22.2242 +    0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 0xa000, 
 22.2243 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2244 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0001, 0x0000, 0x0000, 0x0000, 
 22.2245 +    0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2246 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9600, 0x000f, 0x1400, 0x0003, 
 22.2247 +    0x8200, 0x000c, 0x3500, 0x0200, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2248 +    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
 22.2249 +    0x0a00, 0x02f3, 0x0200, 0x05ff, 0xf605, 0x06f5, 0x08f9, 0x090a, 0xf4fb, 
 22.2250 +    0xf50a, 0xfef7, 0xff1e, 0x00fb, 0xe9fd, 0x0802, 0x06ff, 0xfd10, 0xfff4, 
 22.2251 +    0xfc05, 0xffff, 0xf8fc, 0xfffe, 0x0d0b, 0xfe04, 0xf1ff, 0xf4f4, 0x1004, 
 22.2252 +    0x0402, 0x04fc, 0xedfd, 0x070d, 0xff00, 0xf800, 0x0a03, 0x0aff, 0xf804, 
 22.2253 +    0x06fb, 0x04fc, 0x0b0f, 0xf4f6, 0xeffe, 0x0dfa, 0xfe07, 0x0207, 0xee02, 
 22.2254 +    0x0600, 0x0509, 0xee01, 0xfd01, 0x10ff, 0x000a, 0xfcff, 0xf4fe, 0x14f7, 
 22.2255 +    0x0109, 0xf4fb, 0xf202, 0x06fd, 0xfff9, 0x0209, 0x09f7, 0xf9fc, 0x03ff, 
 22.2256 +    0xf2f9, 0x0200, 0x090d, 0xff04, 0xf501, 0xfcfd, 0x0b08, 0x06fd, 0x0106, 
 22.2257 +    0xfd06, 0xf7ff, 0x0702, 0x0e02, 0xfcf3, 0x01f8, 0x01f5, 0xf812, 0xfb12, 
 22.2258 +    0x03f8, 0x07ef, 0x0c02, 0xf205, 0xfb08, 0x05ff, 0xfd04, 0xf206, 0xf3f3, 
 22.2259 +    0x0a01, 0x0b0a, 0x03f2, 0xfcfd, 0x05f2, 0xfd08, 0xed00, 0xfb08, 0x1205, 
 22.2260 +    0xfd06, 0xeb09, 0x0209, 0xfb0a, 0xf70a, 0xeffb, 0x0b02, 0x0209, 0xfe03, 
 22.2261 +    0xf101, 0xfc04, 0x0004, 0x0201, 0xfdf9, 0x0308, 0xfd07, 0xec08, 0x08ef, 
 22.2262 +    0x0705, 0x0807, 0xeffb, 0x09f9, 0x1405, 0xfe06, 0xf5fc, 0xfdf9, 0x0103, 
 22.2263 +    0x01fe, 0x0505, 0x0701, 0x0907, 0xeb05, 0xeaff, 0x04f8, 0x080b, 0x0306, 
 22.2264 +    0xfbfa, 0xfffd, 0x03fa, 0xfaf3, 0x0702, 0x0008, 0xef06, 0x07fc, 0x0d01, 
 22.2265 +    0x05f8, 0xeafd, 0x0607, 0x0902, 0x1106, 0xf908, 0xf000, 0xf502, 0xf6f9, 
 22.2266 +    0xfb09, 0x0bff, 0x0d0b, 0xf608, 0xeafe, 0xfd07, 0x0313, 0x03fb, 0x07ec, 
 22.2267 +    0x0604, 0x04ff, 0xf9f8, 0x02fd, 0xfb02, 0xff08, 0xf9ff, 0xfef9, 0x10f6, 
 22.2268 +    0x05fc, 0xf00a, 0xf8fb, 0x06fb, 0xf90a, 0x0402, 0x0e06, 0x0005, 0xf7f0, 
 22.2269 +    0x03f3, 0x0e0e, 0xfafe, 0xf201, 0x050d, 0x070d, 0x0af5, 0xfff3, 0x00f7, 
 22.2270 +    0x03fa, 0x0c02, 0x06ff, 0xfc06, 0x0101, 0xf3f1, 0x08f6, 0x1409, 0xff0b, 
 22.2271 +    0xf201, 0xfff3, 0xf908, 0xf102, 0x06f8, 0x0508, 0x070e, 0xfe02, 0x00fc, 
 22.2272 +    0x01ef, 0xf5f2, 0xfa0e, 0x070e, 0x10fd, 0x0804, 0xf7f5, 0xeaf9, 0xffff, 
 22.2273 +    0x0008, 0x06ff, 0x0806, 0x0809, 0xeaf6, 0xeff4, 0x0b0f, 0x130a, 0x02fb, 
 22.2274 +    0x01fb, 0xf2fe, 0xf708, 0x0901, 0x0df9, 0x08f5, 0xf902, 0x0003, 0x0502, 
 22.2275 +    0x0f04, 0xfcfd, 0xeaee, 0x0cf8, 0x13ff, 0x0301, 0x03f3, 0xf50f, 0xfa06, 
 22.2276 +    0x07f1, 0x0101, 0x0204, 0xf5f9, 0x1405, 0x0df8, 0xf4fc, 0xf7fd, 0xf801, 
 22.2277 +    0x10fd, 0x0500, 0x0804, 0xfa05, 0x0301, 0xeafc, 0xf8f6, 0x0507, 0x091d, 
 22.2278 +    0x010f, 0xf0f6, 0x01fd, 0x04ee, 0x05f0, 0x0b03, 0x0812, 0x0106, 0xf600, 
 22.2279 +    0xf1f5, 0x0208, 0x0fff, 0xfd04, 0xfe08, 0x0206, 0xee09, 0xeeee, 0xf6fa, 
 22.2280 +    0x100f, 0x08fe, 0xf00b, 0x01ff, 0xf6f6, 0x07f5, 0xff00, 0x0114, 0xff03, 
 22.2281 +    0x0bf2, 0xfff9, 0x0508, 0xff06, 0xf4fe, 0xfefc, 0x0602, 0xff0a, 0x08f6, 
 22.2282 +    0x10fd, 0x00fd, 0xf4f6, 0x07fb, 0x0b04, 0xfb07, 0x00ff, 0x08fd, 0xfa01, 
 22.2283 +    0xfa04, 0xfd09, 0x0bea, 0xfffd, 0xfe10, 0xff05, 0x07f3, 0xfbf9, 0xf0f9, 
 22.2284 +    0xee05, 0x0d1c, 0x1407, 0xf4fd, 0xf8ff, 0xf2ef, 0x05fd, 0x0cfd, 0x0720, 
 22.2285 +    0xf9f8, 0xf3f9, 0xfbfc, 0xfa01, 0x1100, 0x1204, 0x06f4, 0xff02, 0xfa0f, 
 22.2286 +    0xf4fc, 0xfcf0, 0x0f04, 0x0d06, 0x0df6, 0xf8ff, 0xe810, 0xf6fb, 0x0fed, 
 22.2287 +    0x1df8, 0x0af5, 0xf60b, 0xf30f, 0xfdf5, 0x0cfd, 0x0b04, 0xf4ff, 0xff04, 
 22.2288 +    0xfafe, 0x04fc, 0x0ff0, 0x0e02, 0xea0d, 0xeefd, 0x0109, 0x08fc, 0xf8fc, 
 22.2289 +    0x080e, 0xfe09, 0xf8f0, 0x08ee, 0x0b01, 0xff00, 0xff06, 0xf905, 0x0df9, 
 22.2290 +    0x09f0, 0xfb05, 0xe401, 0xfd07, 0x170b, 0x010d, 0x00f6, 0x07f3, 0xfaee, 
 22.2291 +    0xfa03, 0x1312, 0x110d, 0xf7f6, 0xe6ff, 0xf5fd, 0x0afd, 0x20ff, 0x0705, 
 22.2292 +    0xf3fc, 0xf8f1, 0xf9fe, 0xf4fd, 0x0006, 0x0d11, 0x0501, 0xecf9, 0x050e, 
 22.2293 +    0xf9fd, 0x0af0, 0x06f5, 0x050f, 0x0504, 0x08f3, 0x06f6, 0xf5f9, 0xf903, 
 22.2294 +    0x060c, 0xfa02, 0x0208, 0x06f1, 0x08f5, 0x06ed, 0x090e, 0x0208, 0xf901, 
 22.2295 +    0x02f5, 0x04f7, 0x0b02, 0x0d09, 0xfb02, 0xfef3, 0x09ea, 0x03ff, 0xf009, 
 22.2296 +    0xf810, 0x030d, 0x0cf3, 0xfaeb, 0xfdfe, 0xfd0b, 0xfd07, 0xfd02, 0x030d, 
 22.2297 +    0xfafe, 0x0501, 0xfae0, 0x1403, 0x11f5, 0xf419, 0xfdf6, 0xe7fe, 0x0a07, 
 22.2298 +    0x02fd, 0x000d, 0xfe16, 0xfe04, 0xf0f1, 0xf4f4, 0x050f, 0x0809, 0x060a, 
 22.2299 +    0xfaf3, 0xf102, 0xf60a, 0x05fd, 0x0efa, 0x0604, 0x0007, 0xf104, 0xfe03, 
 22.2300 +    0x0205, 0x04ee, 0xfc01, 0x0ef9, 0x010a, 0xf7fd, 0xf3f3, 0x0200, 0x16f7, 
 22.2301 +    0x0108, 0x02fb, 0xf403, 0xfa08, 0x0400, 0x0dff, 0x0af7, 0xf209, 0xf9fc, 
 22.2302 +    0x01f9, 0x10fe, 0x0cfe, 0x0206, 0xf6f5, 0xfb09, 0x0af5, 0x03f5, 0x06ff, 
 22.2303 +    0x09f8, 0xf410, 0xf408, 0xfd02, 0xfefb, 0xf809, 0x0709, 0x0206, 0x0000, 
 22.2304 +    0x0bfc, 0xf4f4, 0xf7ff, 0x0502, 0x0211, 0x020b, 0xf002, 0xfeea, 0x05f4, 
 22.2305 +    0xf908, 0x0511, 0xf806, 0x0dee, 0x04f6, 0xf601, 0xfb08, 0x0708, 0x18f3, 
 22.2306 +    0x01e9, 0x0303, 0xf701, 0xfa0c, 0xf601, 0xf507, 0x070d, 0x12ff, 0x08f1, 
 22.2307 +    0xf4f6, 0xf5fc, 0x0e14, 0xfe01, 0x0204, 0xfff9, 0x03fb, 0x15f0, 0x08fd, 
 22.2308 +    0x0908, 0xf8f7, 0x07f6, 0xf7ef, 0xf112, 0xf911, 0x0e0b, 0xfff6, 0xfbec, 
 22.2309 +    0xf6fb, 0x0eff, 0x060a, 0x050c, 0xe5fd, 0xff01, 0x0208, 0xf606, 0x08fb, 
 22.2310 +    0x0ae9, 0x1d02, 0xe901, 0xf914, 0xffe9, 0x11fe, 0x0bf3, 0x0507, 0xf80e, 
 22.2311 +    0xf105, 0xfa05, 0x04eb, 0x19f3, 0x0505, 0xed0f, 0xf207, 0xfbfd, 0x18fd, 
 22.2312 +    0x09ff, 0xfd01, 0xf310, 0x05f7, 0xfdff, 0x08f7, 0x0308, 0xf8fa, 0xfdfe, 
 22.2313 +    0xfcfd, 0x0206, 0x0af1, 0x00f9, 0x0001, 0xf506, 0x0601, 0xfe0e, 0xf60c, 
 22.2314 +    0xf5fd, 0xf4ff, 0xfc11, 0x0417, 0xff03, 0xf2fa, 0xfdec, 0x0307, 0xfe07, 
 22.2315 +    0xfe12, 0x12ff, 0xf8e7, 0x01f2, 0x0202, 0x061a, 0xfaf9, 0x0bf6, 0xfbfd, 
 22.2316 +    0x07fb, 0x00f8, 0xf615, 0x0812, 0xfdfd, 0x0cf8, 0xf8e2, 0x05fc, 0xfe17, 
 22.2317 +    0xf202, 0x09f8, 0x0afa, 0xfdf8, 0xfbee, 0xff09, 0x0b16, 0x04f2, 0x01fd, 
 22.2318 +    0x03f8, 0x01fd, 0xf7fc, 0x040d, 0x1102, 0xfffe, 0xfc02, 0xdafa, 0x0e1c, 
 22.2319 +    0x0502, 0x11f7, 0x05e1, 0xf30c, 0xf70a, 0x13ef, 0x0005, 0xf30c, 0xeafc, 
 22.2320 +    0x1101, 0x1405, 0x06f6, 0x01f4, 0x0bfa, 0xfdfb, 0xfc21, 0xf20e, 0xf1fb, 
 22.2321 +    0x10e7, 0x0604, 0x0bff, 0xfcf7, 0xf708, 0xeb08, 0x06ef, 0x0700, 0xfb0a, 
 22.2322 +    0xf714, 0xf70d, 0x01f7, 0x09dc, 0x0bfb, 0xf61e, 0xf518, 0x0bfa, 0x07f2, 
 22.2323 +    0xf4ec, 0x11fb, 0x060b, 0x000c, 0xfbfa, 0xf9fa, 0xfff3, 0x0703, 0xfe10, 
 22.2324 +    0xeaff, 0x0204, 0x12ff, 0xfb0e, 0xf0e8, 0x0e07, 0x020e, 0x0108, 0x03f7, 
 22.2325 +    0x02fc, 0xf7f6, 0xfa02, 0x050e, 0x01fa, 0xf9f9, 0x02f7, 0xf6f7, 0x0d20, 
 22.2326 +    0x06fc, 0xe8fe, 0x08ef, 0x150b, 0xf013, 0xf0f2, 0x0402, 0x1104, 0x0af4, 
 22.2327 +    0xf608, 0xf7fe, 0xec09, 0x0112, 0x0f03, 0x01f1, 0x0205, 0x00fd, 0xe6fe, 
 22.2328 +    0x11f9, 0x1cfd, 0xfbfb, 0xf708, 0xfc08, 0x01ef, 0x11e2, 0x100c, 0x010d, 
 22.2329 +    0x02fc, 0xff02, 0xf1f5, 0x02ec, 0x1bfb, 0x1120, 0xe8f9, 0xeff1, 0xf0fe, 
 22.2330 +    0x0d08, 0xfc0c, 0xfb10, 0x00ec, 0x16fd, 0x0806, 0xf0f9, 0xfaeb, 0x0a04, 
 22.2331 +    0xf820, 0xf90c, 0x13f7, 0x03ee, 0xfdf9, 0xf902, 0x10fd, 0xf7f7, 0x020c, 
 22.2332 +    0xec07, 0x0eff, 0x07f9, 0x01fe, 0xfeec, 0x0cfa, 0x1415, 0xf4ff, 0xfbfc, 
 22.2333 +    0x0804, 0xf405, 0xf104, 0x0c02, 0xf902, 0x00fa, 0x0dfd, 0x0202, 0xf7f6, 
 22.2334 +    0xf9fd, 0xf9ff, 0x00ff, 0x12fb, 0x100e, 0xf7f7, 0x01fc, 0xfe01, 0xf3f9, 
 22.2335 +    0x06f0, 0x1010, 0x0813, 0x03ef, 0xffff, 0xf1f7, 0x01fb, 0x0c0b, 0x031a, 
 22.2336 +    0xf0f8, 0xfaeb, 0xfe05, 0x0502, 0x01fe, 0x10ff, 0xfbf3, 0x0002, 0x0210, 
 22.2337 +    0xec05, 0x0e00, 0x0ef7, 0xfc01, 0xf8f2, 0xfd1a, 0xf316, 0xfeee, 0x01ec, 
 22.2338 +    0x0512, 0xfa05, 0xf203, 0x0402, 0x00ef, 0xfa0e, 0x050a, 0xf5f9, 0x10fd, 
 22.2339 +    0x0c04, 0xf1fd, 0xf001, 0x0f0b, 0xf900, 0xfdfd, 0x0efa, 0xfffd, 0xf805, 
 22.2340 +    0x0005, 0x050e, 0x01e2, 0xf5fb, 0x0814, 0xfb08, 0x05f7, 0xf806, 0x10fe, 
 22.2341 +    0x04f9, 0xff04, 0xf7e6, 0xf90f, 0x1a0c, 0xf807, 0x02f1, 0xfff1, 0xf7fe, 
 22.2342 +    0xf4fd, 0x1610, 0x0d0e, 0xe9f2, 0xf4f8, 0xf3fa, 0x1609, 0x0c0a, 0xfc0e, 
 22.2343 +    0xf0f0, 0x00fb, 0xf911, 0x0402, 0x07f0, 0x0bfd, 0xf00c, 0xec09, 0x150b, 
 22.2344 +    0x0ef1, 0xf6f2, 0x01fd, 0xef0e, 0x0901, 0x08f8, 0xfc0a, 0xfcf5, 0xf6f9, 
 22.2345 +    0x060d, 0x0eff, 0x0a02, 0x0507, 0xf1f6, 0xf4ff, 0x120b, 0xf80f, 0xfff0, 
 22.2346 +    0x0802, 0xfff6, 0xfa00, 0x0f08, 0xef0a, 0xf8f0, 0xfbe8, 0x1008, 0x09fe, 
 22.2347 +    0x0609, 0xfd04, 0xea06, 0xf500, 0x050c, 0x0d02, 0xfff5, 0xfe13, 0xdf02, 
 22.2348 +    0xfe01, 0x14fb, 0x06fa, 0xf7f0, 0x1d00, 0x0e00, 0xeaf5, 0xf7f4, 0x050a, 
 22.2349 +    0x0c05, 0xfefb, 0x0b0b, 0x03f5, 0x07fc, 0x0302, 0xe902, 0xfb02, 0x1b09, 
 22.2350 +    0xeefe, 0xe9fe, 0x0204, 0x0909, 0xf9fd, 0x07f5, 0x020a, 0x07f5, 0xfdf7, 
 22.2351 +    0xf70b, 0xf60f, 0x0bf0, 0x13fc, 0xfbfd, 0xfd01, 0xfc0f, 0xfb02, 0xf4ef, 
 22.2352 +    0x0e10, 0xff01, 0xf20f, 0x0ef2, 0xf70b, 0x0bfb, 0x06f5, 0xfb10, 0xe2fc, 
 22.2353 +    0x02ec, 0x0b06, 0x0b16, 0x06f5, 0xfaff, 0xf2fc, 0xf308, 0x1206, 0xff04, 
 22.2354 +    0x0afa, 0x0001, 0xfc03, 0xf0f4, 0x0bfd, 0x0a19, 0x0005, 0xf7e4, 0x0007, 
 22.2355 +    0x06ef, 0xfefd, 0xff0c, 0x0102, 0xfff4, 0x0c0c, 0xfe02, 0xfdfc, 0x0cef, 
 22.2356 +    0xf801, 0x06f9, 0x0105, 0x090d, 0xeaf9, 0x0cf8, 0xfe02, 0x0903, 0xf9fa, 
 22.2357 +    0x0514, 0xf6e3, 0xffff, 0x0e06, 0xf605, 0xf503, 0x0c03, 0xfc0e, 0x0202, 
 22.2358 +    0x0ef8, 0x0005, 0xe000, 0xf603, 0x0a02, 0x0bf4, 0x0e05, 0xf701, 0xfbfd, 
 22.2359 +    0xf9fd, 0xf20a, 0xf7fc, 0x0a00, 0x1b09, 0xfdef, 0xf6f6, 0x0811, 0xfb22, 
 22.2360 +    0xe8ee, 0x0bf4, 0x1ef4, 0x0c12, 0xe803, 0xe8f8, 0x01e6, 0x1b12, 0xfd0c, 
 22.2361 +    0xf6f7, 0x01f6, 0xfe0e, 0xf8fb, 0x08f0, 0x110b, 0x010b, 0xfef3, 0xf9fa, 
 22.2362 +    0x0e03, 0x0801, 0xfd0b, 0xe8f6, 0x00fd, 0x1602, 0xfe05, 0xf4f4, 0xfe0d, 
 22.2363 +    0xfa13, 0x04fc, 0xfbf0, 0x0206, 0x0801, 0x05f5, 0xfbfb, 0x03ed, 0x1dfa, 
 22.2364 +    0x0f10, 0xf5fe, 0xebf4, 0x0a06, 0x07f8, 0xfa09, 0xfe02, 0xfdfb, 0x12f7, 
 22.2365 +    0x0408, 0xf70d, 0xf5f8, 0x08eb, 0xf3fd, 0x050a, 0x0804, 0x0601, 0xf7f3, 
 22.2366 +    0xff07, 0x0215, 0xfff7, 0x0a05, 0xffff, 0xec09, 0xf7fd, 0xfd00, 0xff12, 
 22.2367 +    0x00f6, 0x09fa, 0x11ee, 0x0613, 0xfefc, 0xeff1, 0xf5f9, 0x140a, 0xf0fc, 
 22.2368 +    0xfffd, 0x0a10, 0x120a, 0xfbfa, 0xfde4, 0xf508, 0x1c0d, 0xfcfc, 0xfcf7, 
 22.2369 +    0xf6f2, 0x0012, 0x060d, 0xfafa, 0xf9f2, 0x0907, 0x03f6, 0xf80b, 0xfdf7, 
 22.2370 +    0xfef8, 0x0af9, 0x0215, 0x0211, 0xfb06, 0x01f7, 0xfaff, 0x03f5, 0xfb05, 
 22.2371 +    0x060c, 0xf80b, 0x08f1, 0x03f9, 0x03f9, 0x0506, 0xfcfc, 0xf7ff, 0x07f8, 
 22.2372 +    0x0105, 0x0307, 0xf0fd, 0x07fe, 0xf70f, 0x020a, 0x04fc, 0x03ef, 0x0afd, 
 22.2373 +    0x01fa, 0xf7fd, 0xfeec, 0x1010, 0x0a06, 0xf607, 0x01e2, 0x0400, 0x140c, 
 22.2374 +    0xf7f0, 0xedf2, 0x13f7, 0x1c18, 0x070f, 0xd903, 0x03ec, 0x02ff, 0xf405, 
 22.2375 +    0x06ff, 0x1402, 0x0dfb, 0xdeed, 0x0307, 0x1508, 0x0e0e, 0x03ed, 0xe7fa, 
 22.2376 +    0xfbfb, 0xf40a, 0x1003, 0xfcf2, 0x0709, 0x0a06, 0xf308, 0x0cfb, 0x07fd, 
 22.2377 +    0x02fa, 0xf6f5, 0xf80d, 0x030c, 0x01ff, 0x0ff9, 0xe7f7, 0xf5ff, 0x1502, 
 22.2378 +    0x1208, 0xfbf1, 0xdcff, 0xf4fc, 0x0b07, 0x2615, 0xfd0e, 0xeaf6, 0xfef2, 
 22.2379 +    0x1009, 0xfc09, 0xfc04, 0xfbfc, 0xecf7, 0x03f5, 0x1812, 0x0b0f, 0xf8f2, 
 22.2380 +    0x04ef, 0xf0fb, 0x0003, 0x1102, 0x0dfc, 0xfd00, 0x09f6, 0x00fd, 0xfaf8, 
 22.2381 +    0x0003, 0x050a, 0xf8ee, 0x0308, 0xf916, 0xec08, 0xf2f6, 0x0ef7, 0x050e, 
 22.2382 +    0x09f0, 0x1016, 0xf401, 0xeaec, 0x03da, 0x0e06, 0x1424, 0x011c, 0xedf8, 
 22.2383 +    0xeadb, 0x18ff, 0x0a0c, 0xee15, 0xeefa, 0x09fc, 0x03f2, 0x0306, 0xff22, 
 22.2384 +    0xe80a, 0xf0ea, 0x24fd, 0xfcf9, 0x040e, 0xf5f0, 0xfd10, 0x0ce6, 0x13fe, 
 22.2385 +    0x060c, 0xfc05, 0xef03, 0xfbf6, 0x0700, 0x0d06, 0xf118, 0xe6f6, 0xfff2, 
 22.2386 +    0x1f06, 0x0004, 0x0103, 0xf501, 0xf1fc, 0xf6df, 0x23ed, 0x121b, 0xef26, 
 22.2387 +    0xedff, 0xf5e7, 0x16f1, 0x1c08, 0xfe1b, 0xe6fc, 0xf8f1, 0x0a00, 0x02fc, 
 22.2388 +    0x030b, 0x030a, 0xec02, 0x0af1, 0x050e, 0x01f4, 0xe2f9, 0x1105, 0x03f8, 
 22.2389 +    0x0110, 0x0ffc, 0xf714, 0xfaea, 0xf9f2, 0xfa0d, 0x1013, 0x030e, 0xfafa, 
 22.2390 +    0xeeda, 0x01f0, 0x111e, 0x0b03, 0xf301, 0x0103, 0xeaf2, 0x0bfa, 0x1808, 
 22.2391 +    0xfd11, 0xecff, 0xfafa, 0x0a01, 0x0408, 0x0507, 0xf4f9, 0xe0f2, 0x13f2, 
 22.2392 +    0x080c, 0x0118, 0xfd01, 0xee00, 0x07f4, 0xfb17, 0x070e, 0xe5f5, 0x17e0, 
 22.2393 +    0x0d0b, 0x011b, 0xf3fe, 0xfef9, 0x0102, 0xedf3, 0x0af9, 0x0a0c, 0x0f1c, 
 22.2394 +    0xf9f6, 0xedeb, 0xffdf, 0x051f, 0x1924, 0x00f1, 0x00e4, 0xf1ef, 0xed0a, 
 22.2395 +    0x1607, 0x16fc, 0x06f5, 0xdffc, 0x100d, 0x0501, 0xfe07, 0x07fe, 0xeafe, 
 22.2396 +    0xf8fa, 0x020d, 0x0a1c, 0xf2f9, 0x06f3, 0x05f4, 0x1005, 0xf613, 0xfe02, 
 22.2397 +    0xe9dc, 0xffff, 0x1018, 0x0118, 0x0de9, 0xf7f6, 0xf50c, 0x06f7, 0x0604, 
 22.2398 +    0x070b, 0xe8f9, 0xf208, 0xfdf5, 0x0109, 0x1209, 0xfb05, 0xfff1, 0xf7e9, 
 22.2399 +    0x0110, 0x0a07, 0x0908, 0xf702, 0xecfd, 0x12fd, 0x0a06, 0x03ff, 0xebf4, 
 22.2400 +    0x0b0a, 0x07f3, 0xf40c, 0xe901, 0x030a, 0x03f8, 0xff05, 0xfd01, 0x0e0c, 
 22.2401 +    0x0ef8, 0xeeed, 0xf3e8, 0x1014, 0x1e1a, 0xfb10, 0xf5e0, 0xfef5, 0x0d02, 
 22.2402 +    0x0103, 0xf902, 0xf010, 0xf905, 0x03fb, 0x08f2, 0xf8ff, 0x090b, 0xeb02, 
 22.2403 +    0xedfc, 0x0209, 0x230e, 0xf7ef, 0xfef4, 0x0fe9, 0x0d0d, 0x0d11, 0xef03, 
 22.2404 +    0xef02, 0x05ec, 0x06fe, 0xf509, 0xee06, 0x0712, 0x1301, 0xfbf1, 0xfd07, 
 22.2405 +    0x14fa, 0xf1fa, 0xf8fb, 0x0bf8, 0x00fc, 0x1004, 0xfffd, 0xf70e, 0x0ae5, 
 22.2406 +    0xf9fb, 0x050b, 0x040e, 0x0c0a, 0xf0f2, 0xefeb, 0x080c, 0x1113, 0xe904, 
 22.2407 +    0xfaf6, 0x020a, 0x0d07, 0x07e4, 0xf501, 0xf202, 0xfc09, 0x0609, 0x0b05, 
 22.2408 +    0xf20f, 0xfa04, 0xf2e8, 0xfff8, 0x2019, 0xfd05, 0xe1ec, 0x09fa, 0x1a09, 
 22.2409 +    0xf303, 0x04f3, 0x0106, 0x03fd, 0xf9f8, 0x0405, 0x02f9, 0x0707, 0x0009, 
 22.2410 +    0xff03, 0xfef3, 0x1c01, 0xf702, 0xfee9, 0x0101, 0x010c, 0xecf6, 0x140f, 
 22.2411 +    0x010b, 0xfce9, 0xf1dc, 0x0b1a, 0x10fd, 0x0501, 0xf404, 0xebfd, 0xfb06, 
 22.2412 +    0x1211, 0x0216, 0xf5e8, 0xfff4, 0x0110, 0x04f6, 0x0c05, 0xf9ef, 0xf6f5, 
 22.2413 +    0x1906, 0x150b, 0xf5ff, 0xfffb, 0xf708, 0xf5f0, 0x0afa, 0x1802, 0xf405, 
 22.2414 +    0x00f5, 0xfd09, 0xf419, 0xeef6, 0x0e06, 0xf704, 0xfa04, 0xfe02, 0x0ef6, 
 22.2415 +    0x03ee, 0xff07, 0xe910, 0xfafd, 0x16ef, 0x0b11, 0xe613, 0xf9fd, 0x02f5, 
 22.2416 +    0xfa07, 0x0505, 0x1315, 0xfcfe, 0xedec, 0xfdfb, 0x0209, 0x0001, 0xf2fd, 
 22.2417 +    0xfd01, 0xf901, 0x0e0f, 0x0206, 0xeaf7, 0xfffd, 0x1603, 0xfefd, 0x01ff, 
 22.2418 +    0xf010, 0x0007, 0x02f1, 0x15f6, 0xec13, 0xfe11, 0x0b06, 0xfbf8, 0xf2f1, 
 22.2419 +    0x0401, 0x0612, 0xf8ff, 0xf0f8, 0x120b, 0xfaf3, 0x07f2, 0xf6fd, 0xf919, 
 22.2420 +    0x00f2, 0x0a01, 0x0ffb, 0xef1b, 0xfa19, 0xefea, 0x01f7, 0x1210, 0xf811, 
 22.2421 +    0xf4f5, 0x0bdf, 0xff14, 0xfa08, 0x08f7, 0x0f07, 0xf9fa, 0xf4f2, 0x03fe, 
 22.2422 +    0x140e, 0xf7fc, 0xfdfd, 0x09f4, 0xff05, 0xfd1a, 0x0af6, 0x06f5, 0x03f5, 
 22.2423 +    0xf007, 0xf3f9, 0x2003, 0xff06, 0xf2f4, 0xebf4, 0x1006, 0x1908, 0xfcf8, 
 22.2424 +    0xf7fc, 0x0b01, 0x02ed, 0xf213, 0x0104, 0xf90f, 0x10f9, 0xfef7, 0x04fc, 
 22.2425 +    0x06f9, 0xf2ff, 0xe903, 0xfaff, 0x1018, 0x0b03, 0x0600, 0x01f1, 0xe8ff, 
 22.2426 +    0x04fa, 0x0b08, 0x1505, 0xf9e9, 0xf903, 0xf216, 0xf705, 0x07fe, 0x0904, 
 22.2427 +    0x0301, 0xf001, 0x0301, 0xf700, 0x1208, 0xf103, 0xf7f0, 0x07f0, 0x1014, 
 22.2428 +    0xf803, 0xecf6, 0x0bf8, 0x040e, 0xfa00, 0xf310, 0xff0b, 0x0bff, 0x01f6, 
 22.2429 +    0x0b04, 0x08f4, 0xfefc, 0xf7ef, 0xfdf4, 0x1816, 0xf60d, 0xea06, 0xfbf4, 
 22.2430 +    0x1afe, 0xff04, 0xf5fe, 0xf305, 0xf510, 0x12f0, 0x00ef, 0x0d0a, 0x1901, 
 22.2431 +    0xf400, 0xf8fb, 0xf8f5, 0x0409, 0x10f6, 0xf1fb, 0x0912, 0xf507, 0xfbf0, 
 22.2432 +    0x09f1, 0x0607, 0xf115, 0xfaff, 0x10ec, 0x0709, 0xfa0d, 0xe70f, 0x0ff7, 
 22.2433 +    0x13e0, 0x040c, 0x09fa, 0xf002, 0xfafc, 0xf4f2, 0x0cf7, 0x0a10, 0xf205, 
 22.2434 +    0xfd09, 0x05f9, 0x13ff, 0x0fee, 0xfdfe, 0xf70f, 0xf404, 0x0cfc, 0x0bf8, 
 22.2435 +    0xfb07, 0xea15, 0x010b, 0x03e8, 0x0501, 0xf503, 0xec08, 0x0f04, 0xf706, 
 22.2436 +    0xf407, 0x08ef, 0x08fa, 0x0315, 0xf803, 0xf7f5, 0xfb01, 0xff04, 0xf718, 
 22.2437 +    0xff03, 0x08f5, 0x0a00, 0x0602, 0xf8ed, 0x06f4, 0xfefa, 0xf70e, 0x100e, 
 22.2438 +    0x0703, 0xee0b, 0xf6fc, 0xf9f3, 0x0715, 0x16ef, 0xf505, 0x07f3, 0xf7f1, 
 22.2439 +    0x0607, 0x02fd, 0xff0e, 0x0afc, 0x04fb, 0xfaf9, 0x0b06, 0x10e9, 0xfef6, 
 22.2440 +    0xf800, 0xe612, 0xfd09, 0x0efb, 0x060a, 0x0cf9, 0xf3e4, 0x0a08, 0x0406, 
 22.2441 +    0x0612, 0xfee7, 0x12f5, 0xfffb, 0xf52c, 0xf6fa, 0x04e9, 0x07ea, 0x00f4, 
 22.2442 +    0x0906, 0x0e00, 0xf404, 0xf600, 0x09f5, 0x0807, 0x1107, 0xec08, 0xfbf8, 
 22.2443 +    0x02f3, 0x0e03, 0xf20c, 0x0518, 0x00f7, 0xee03, 0xecfe, 0x0c05, 0x0f05, 
 22.2444 +    0x00fb, 0xf705, 0x03fb, 0x02f4, 0xfdf6, 0xf60b, 0x0603, 0xff06, 0x0bfb, 
 22.2445 +    0xf508, 0xf512, 0x01f8, 0xf3eb, 0x110c, 0x0c0e, 0x030d, 0xeef2, 0xf1ec, 
 22.2446 +    0x01f7, 0x0e12, 0x0214, 0xf0fb, 0x01f6, 0x0907, 0x1101, 0x04f0, 0xf400, 
 22.2447 +    0x01fc, 0xfa08, 0xfe03, 0xfd11, 0xf909, 0xf70a, 0xf6ed, 0x0b01, 0x000e, 
 22.2448 +    0xf104, 0x02f2, 0x06f7, 0x010c, 0x0b01, 0xfdfc, 0xf7f5, 0xfcfc, 0x0117, 
 22.2449 +    0xfb08, 0x0403, 0x05f7, 0xf902, 0xe0fc, 0x1909, 0x1605, 0xf409, 0xf5f2, 
 22.2450 +    0xf7e5, 0x0303, 0x180c, 0x0010, 0xfdf6, 0xf4e4, 0x060b, 0x0efe, 0x030d, 
 22.2451 +    0xff08, 0xeb03, 0xf8f5, 0x090a, 0x1106, 0xe9eb, 0xfe05, 0x0b0c, 0x0d06, 
 22.2452 +    0x0ffc, 0xef00, 0xf0ee, 0xfffd, 0x20f9, 0x0ffb, 0x03fc, 0xf501, 0xe8f4, 
 22.2453 +    0x0ced, 0x120e, 0x0122, 0xebee, 0x07fd, 0x1806, 0xf7fd, 0x0104, 0xf4f2, 
 22.2454 +    0x0d04, 0x02fa, 0xf701, 0xeff1, 0x0318, 0x0d09, 0xf5f4, 0xf8f7, 0x1a0f, 
 22.2455 +    0xe913, 0x01ed, 0xfb06, 0x0f0b, 0xf206, 0x0006, 0xfff6, 0xfefb, 0x14f5, 
 22.2456 +    0xfe01, 0x0bfd, 0xfef6, 0xffff, 0xe8f0, 0x1117, 0x26fd, 0xec01, 0xf3e5, 
 22.2457 +    0xf508, 0xff14, 0x1502, 0x09f3, 0xf7f5, 0xed0a, 0x0309, 0x1105, 0xfdf3, 
 22.2458 +    0x0803, 0xf605, 0x04fb, 0xfffc, 0x14fd, 0xdeef, 0x04fc, 0x010b, 0x0a14, 
 22.2459 +    0x08f3, 0xf905, 0xf3f7, 0xfb06, 0x0a05, 0x0506, 0xf80a, 0xfdfe, 0xef08, 
 22.2460 +    0xfe04, 0x12fd, 0x070c, 0xf1f2, 0xf7ff, 0x0808, 0x09fb, 0x00fb, 0xfa08, 
 22.2461 +    0xf6f5, 0x03ff, 0x0af0, 0xfc03, 0xf311, 0xff03, 0x0005, 0x05f8, 0x030f, 
 22.2462 +    0xf107, 0x0be7, 0xfd0e, 0x0512, 0xf00c, 0x07f0, 0xf801, 0xf0f9, 0x0015, 
 22.2463 +    0x09ff, 0x0111, 0xf6ef, 0xfcfd, 0xfe06, 0xff0f, 0x0101, 0xf300, 0x04f5, 
 22.2464 +    0xfd0f, 0x0609, 0xf6ef, 0x000e, 0x0007, 0xecfd, 0x10f7, 0x13f9, 0xf40f, 
 22.2465 +    0xecef, 0x000c, 0x0c0a, 0x0601, 0x00f7, 0xf2ef, 0x0004, 0x1207, 0x040b, 
 22.2466 +    0xfff2, 0xf809, 0xed17, 0x0aee, 0x12ed, 0x1afe, 0xe0ff, 0xf5f2, 0x0000, 
 22.2467 +    0x1602, 0x0403, 0xfe0a, 0xf0fc, 0xfe00, 0x050e, 0x0106, 0x0df6, 0xfbff, 
 22.2468 +    0xf90c, 0xf4ef, 0xf910, 0x0a07, 0xfefc, 0x08f5, 0x010b, 0x00ff, 0xfb02, 
 22.2469 +    0xfa05, 0xebfd, 0xff07, 0x0705, 0x0918, 0x0be2, 0xfff7, 0xedf9, 0x01ff, 
 22.2470 +    0x0700, 0x0a05, 0xfb0a, 0x10f7, "\374" 
 22.2471 +END
 22.2472 +
 22.2473 +
 22.2474 +/////////////////////////////////////////////////////////////////////////////
 22.2475 +//
 22.2476 +// Bitmap
 22.2477 +//
 22.2478 +
 22.2479 +IDB_BITMAP7             BITMAP  DISCARDABLE     "font_16x16_corrected.bmp"
 22.2480 +#endif    // French (France) resources
 22.2481 +/////////////////////////////////////////////////////////////////////////////
 22.2482 +
 22.2483 +
 22.2484 +
 22.2485 +#ifndef APSTUDIO_INVOKED
 22.2486 +/////////////////////////////////////////////////////////////////////////////
 22.2487 +//
 22.2488 +// Generated from the TEXTINCLUDE 3 resource.
 22.2489 +//
 22.2490 +
 22.2491 +
 22.2492 +/////////////////////////////////////////////////////////////////////////////
 22.2493 +#endif    // not APSTUDIO_INVOKED
 22.2494 +
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/cmn_design.cxx	Tue Nov 27 15:23:52 2007 +0100
    23.3 @@ -0,0 +1,104 @@
    23.4 +#include "sys_assert.h"
    23.5 +#include "mth_vector3.h"
    23.6 +#include "gl_header.h"
    23.7 +#include "cmn_intro.h"
    23.8 +#include "cmn_design.h"
    23.9 +
   23.10 +
   23.11 +void cmnDesignScroller_t::Init(GLuint _texture)
   23.12 +{
   23.13 +  texture=_texture;
   23.14 +  uvs[0]=uvs[1]=0;
   23.15 +  scroll[0]=scroll[1]=1.0;
   23.16 +}
   23.17 +
   23.18 +void cmnDesignScroller_t::Update()
   23.19 +{
   23.20 +  double dt=Timer->GetFrameTime();
   23.21 +  uvs[0]+=scroll[0]*dt;
   23.22 +  uvs[1]+=scroll[1]*dt;
   23.23 +}
   23.24 +
   23.25 +void cmnDesignScroller_t::Draw()
   23.26 +{
   23.27 +  cmnPushMatrix();
   23.28 +
   23.29 +  cmnSetPlanarView();
   23.30 +
   23.31 +  txtBindTexture2d(texture,0);
   23.32 +  glMatrixMode(GL_TEXTURE);
   23.33 +  glTranslatef(uvs[0],uvs[1],0);
   23.34 +
   23.35 +  glBegin(GL_QUADS);
   23.36 +
   23.37 +  glTexCoord2f(0,0);
   23.38 +  glVertex2f(0,0);
   23.39 +
   23.40 +  glTexCoord2f(0,1);
   23.41 +  glVertex2f(0,RY);
   23.42 +
   23.43 +  glTexCoord2f(1,1);
   23.44 +  glVertex2f(RX,RY);
   23.45 +
   23.46 +  glTexCoord2f(1,0);
   23.47 +  glVertex2f(RX,0);
   23.48 +
   23.49 +  glEnd();
   23.50 +  glLoadIdentity();
   23.51 +  txtUnBindTexture2d(0);
   23.52 +  cmnPopMatrix();
   23.53 +  glMatrixMode(GL_MODELVIEW);
   23.54 +}
   23.55 +
   23.56 +
   23.57 +void cmnDesign_t::Update()
   23.58 +{
   23.59 +  internalTime+=Timer->GetFrameTime();
   23.60 +  for (int i=0;i<nbElements;i++)
   23.61 +    if (!elements[i]->active) {
   23.62 +      if (elements[i]->start<=internalTime)
   23.63 +        elements[i]->active=true;
   23.64 +    } else
   23.65 +      elements[i]->Update();
   23.66 +}
   23.67 +
   23.68 +
   23.69 +void cmnDesign_t::Draw()
   23.70 +{
   23.71 +  for (int i=0;i<nbElements;i++)
   23.72 +    if (elements[i]->active)
   23.73 +      elements[i]->Draw();
   23.74 +}
   23.75 +
   23.76 +
   23.77 +
   23.78 +
   23.79 +
   23.80 +void cmnDesignElementTexturedQuad_t::Draw() 
   23.81 +{
   23.82 +  if (texture) {
   23.83 +    glColor4f(color[0],color[1],color[2],alpha);
   23.84 +//    glColor4f(1,1,1,1);
   23.85 +    txtBindTexture2d(texture,0);
   23.86 +    glBegin(GL_QUADS);
   23.87 +    glTexCoord2f(0,0);
   23.88 +    glVertex3f(position[0],position[1],position[2]);
   23.89 +    glTexCoord2f(0,0.999);
   23.90 +    glVertex3f(position[0],position[1]+sizey,position[2]);
   23.91 +    glTexCoord2f(0.999,0.999);
   23.92 +    glVertex3f(position[0]+sizex,position[1]+sizey,position[2]);
   23.93 +    glTexCoord2f(0.999,0);
   23.94 +    glVertex3f(position[0]+sizex,position[1],position[2]);
   23.95 +    glEnd();
   23.96 +    txtUnBindTexture2d(0);
   23.97 +  } else {
   23.98 +    SYS_ASSERT(0);
   23.99 +    glBegin(GL_QUADS);
  23.100 +    glVertex3f(position[0],position[1],position[2]);
  23.101 +    glVertex3f(position[0],position[1]+sizey,position[2]);
  23.102 +    glVertex3f(position[0]+sizex,position[1]+sizey,position[2]);
  23.103 +    glVertex3f(position[0]+sizex,position[1],position[2]);
  23.104 +    glEnd();
  23.105 +  }
  23.106 +}
  23.107 +
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/cmn_design.h	Tue Nov 27 15:23:52 2007 +0100
    24.3 @@ -0,0 +1,195 @@
    24.4 +#ifndef CMN_DESIGN_H
    24.5 +#define CMN_DESIGN_H
    24.6 +
    24.7 +#include "cmn_intro.h"
    24.8 +#include "cmn_texture.h"
    24.9 +#include "mth_vector2.h"
   24.10 +#include "mth_vector3.h"
   24.11 +
   24.12 +
   24.13 +
   24.14 +struct cmnDesignElement_t
   24.15 +{
   24.16 +  mth::Vector3_t position;
   24.17 +  mth::Vector3_t target;
   24.18 +  float factor;
   24.19 +  float start;
   24.20 +//  float start;
   24.21 +  bool active;
   24.22 +
   24.23 +  virtual void Update() {
   24.24 +      position+=(target-position)*factor*Timer->GetFrameTime();
   24.25 +
   24.26 +#if 0 // put one to debug your position ...
   24.27 +    cmnPushMatrix();
   24.28 +    cmnPushGLState();
   24.29 +    cmnSetPlanarView();
   24.30 +    glDisable(GL_BLEND);
   24.31 +    glColor3f(1,1,1);
   24.32 +    font->Print("Position %f %f %f\n",position[0],position[1],position[2]);
   24.33 +    cmnPopGLState();
   24.34 +    cmnPopMatrix();
   24.35 +#endif
   24.36 +  }
   24.37 +
   24.38 +  cmnDesignElement_t() {start=1e5;}
   24.39 +
   24.40 +  void Init(float _time,const mth::Vector3_t& _pos,const mth::Vector3_t& _target,float _factor=1.0) {
   24.41 +    active=false;
   24.42 +    start=_time;
   24.43 +    position=_pos;
   24.44 +    target=_target;
   24.45 +    factor=_factor;
   24.46 +  }
   24.47 +
   24.48 +  void Init(float _time) {
   24.49 +    active=false;
   24.50 +    start=_time;
   24.51 +  }
   24.52 +
   24.53 +  virtual void Draw() {}
   24.54 +};
   24.55 +
   24.56 +
   24.57 +struct cmnDesignElementFont_t : public cmnDesignElement_t
   24.58 +{
   24.59 +  const char* text;
   24.60 +  float alpha;
   24.61 +  float endLife;
   24.62 +  float scalex;
   24.63 +  float scaley;
   24.64 +  float alphaFactor;
   24.65 +
   24.66 +  cmnDesignElementFont_t() { factor=1;scalex=scaley=1.0;alphaFactor=-0.1;}
   24.67 +
   24.68 +  void Update() {
   24.69 +    float dt=Timer->GetFrameTime();
   24.70 +    position+=(target-position)*factor*dt;
   24.71 +
   24.72 +    if (active) {
   24.73 +      alpha+=alphaFactor*dt;
   24.74 +      endLife-=dt;
   24.75 +      if (endLife<0) {
   24.76 +        active=false;
   24.77 +        start=1e5;
   24.78 +      }
   24.79 +    }
   24.80 +  }
   24.81 +
   24.82 +  void Draw() {
   24.83 +    if (text) {
   24.84 +      //text[1]=0;
   24.85 +      glColor4f(1,1,1,alpha);
   24.86 +      font->SetScaleX(scalex);
   24.87 +      font->SetScaleY(scaley);
   24.88 +      font->Clear();
   24.89 +      float t[2]={position[0],position[1]};
   24.90 +      font->SetZ(position[2]);
   24.91 +      font->Print(t[0],t[1],text);
   24.92 +      font->SetZ(0);
   24.93 +      font->SetScale(1);
   24.94 +    }
   24.95 +  }
   24.96 +
   24.97 +};
   24.98 +
   24.99 +
  24.100 +
  24.101 +struct cmnDesignElementTexturedQuad_t : public cmnDesignElement_t
  24.102 +{
  24.103 +  GLuint texture;
  24.104 +  float sizex,sizey;
  24.105 +  float alpha;
  24.106 +  float fadeAlpha;
  24.107 +  float color[3];
  24.108 +public:
  24.109 +
  24.110 +  void Draw();
  24.111 +  cmnDesignElementTexturedQuad_t() { texture=0; alpha=1;fadeAlpha=0; color[0]=color[1]=color[2]=1.0;}
  24.112 +  void Color(float a,float b,float c) { color[0]=a;color[1]=b;color[2]=c;}
  24.113 +  void Update() {
  24.114 +    float dt=Timer->GetFrameTime();
  24.115 +    position+=(target-position)*factor*dt;
  24.116 +
  24.117 +    if (active) {
  24.118 +      alpha-=0.1*fadeAlpha*dt;
  24.119 +      if (alpha<0) {
  24.120 +        active=false;
  24.121 +        start=1e5;
  24.122 +      }
  24.123 +    }
  24.124 +  }
  24.125 +
  24.126 +};
  24.127 +
  24.128 +
  24.129 +
  24.130 +
  24.131 +class cmnDesign_t
  24.132 +{
  24.133 +  typedef cmnDesignElement_t* ElementPtr_t;
  24.134 +  double internalTime;
  24.135 +  cmnDesignElement_t** elements;
  24.136 +  int nbElements;
  24.137 +  int maxNbElements;
  24.138 +
  24.139 +public:
  24.140 +
  24.141 +
  24.142 +  cmnDesign_t() { elements=0;maxNbElements= nbElements=0;internalTime=0;}
  24.143 +
  24.144 +
  24.145 +  void Init(int _nbElements) { 
  24.146 +    if (elements)
  24.147 +      delete [] elements;
  24.148 +    elements=new ElementPtr_t[_nbElements]; 
  24.149 +    maxNbElements=_nbElements;
  24.150 +  }
  24.151 +
  24.152 +  void InitTime(double _time=0) {internalTime=_time;}
  24.153 +
  24.154 +  void Kill() {}
  24.155 +
  24.156 +  cmnDesignElement_t* Element(int _i) { SYS_ASSERT(_i>=0 && _i<nbElements); return elements[_i];}
  24.157 +
  24.158 +
  24.159 +  void AddElement(cmnDesignElement_t* _e) { 
  24.160 +    SYS_ASSERT(nbElements<maxNbElements);
  24.161 +    elements[nbElements++]=_e;
  24.162 +  }
  24.163 +
  24.164 +  void Update();
  24.165 +
  24.166 +  void Draw();
  24.167 +
  24.168 +};
  24.169 +
  24.170 +
  24.171 +
  24.172 +
  24.173 +class cmnDesignScroller_t
  24.174 +{
  24.175 +
  24.176 +  GLuint texture;
  24.177 +  
  24.178 +  float uvs[2];
  24.179 +  float scroll[2];
  24.180 +
  24.181 +public:
  24.182 +
  24.183 +
  24.184 +  cmnDesignScroller_t() {}
  24.185 +
  24.186 +  void Init(GLuint _texture);
  24.187 +  void ScrollX(float _x) { scroll[0]=_x;}
  24.188 +  void ScrollY(float _y) { scroll[1]=_y;}
  24.189 +  void Update();
  24.190 +  void Draw();
  24.191 +
  24.192 +
  24.193 +};
  24.194 +
  24.195 +
  24.196 +
  24.197 +
  24.198 +#endif
  24.199 \ No newline at end of file
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/cmn_intro.cxx	Tue Nov 27 15:23:52 2007 +0100
    25.3 @@ -0,0 +1,239 @@
    25.4 +#include "cmn_intro.h"
    25.5 +#include <windows.h>
    25.6 +#include <GL/gl.h>
    25.7 +#include <GL/glu.h>
    25.8 +#include "cmn_texture.h"
    25.9 +
   25.10 +// DBUG TIME (Console)
   25.11 +#ifdef SOTA_DEBUG_MODE
   25.12 +HANDLE stdOut;
   25.13 +
   25.14 +#include <string.h>
   25.15 +void Write2Console(const char * data )
   25.16 +{
   25.17 +	WriteConsole( stdOut, data, strlen( data ), NULL, NULL );
   25.18 +	WriteConsole( stdOut, "\n", 1, NULL, NULL );
   25.19 +}
   25.20 +#endif
   25.21 +
   25.22 +
   25.23 +void cmnClearScreen(float r,float g,float b,float a)
   25.24 +{
   25.25 +  glClearColor(r,g,b,a);
   25.26 +  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   25.27 +}
   25.28 +
   25.29 +
   25.30 +void cmnSetFrustrum(float _fov,float _zmin,float _zmax)
   25.31 +{
   25.32 +	glMatrixMode(GL_PROJECTION);
   25.33 +	glLoadIdentity();
   25.34 +	gluPerspective(_fov,800/600,_zmin,_zmax);
   25.35 +}
   25.36 +
   25.37 +
   25.38 +void cmnSetCamera(const mth::Vector3_t& _position,const mth::Vector3_t& _lookat,const mth::Vector3_t& up)
   25.39 +{
   25.40 +	glMatrixMode(GL_MODELVIEW);
   25.41 +	glLoadIdentity();
   25.42 +	gluLookAt(_position[0],_position[1],_position[2],_lookat[0],_lookat[1],_lookat[2],up[0],up[1],up[2]);
   25.43 +
   25.44 +}
   25.45 +
   25.46 +
   25.47 +#ifndef FINAL_RELEASE
   25.48 +static int cmnPushStateValue=0;
   25.49 +void cmnPushGLState()
   25.50 +{
   25.51 +	glPushAttrib(GL_ALL_ATTRIB_BITS);
   25.52 +	cmnPushStateValue++;
   25.53 +}
   25.54 +
   25.55 +
   25.56 +void cmnPopGLState()
   25.57 +{
   25.58 +	glPopAttrib();
   25.59 +	cmnPushStateValue--;
   25.60 +	SYS_ASSERT(cmnPushStateValue>=0);
   25.61 +}
   25.62 +
   25.63 +
   25.64 +#endif
   25.65 +
   25.66 +
   25.67 +
   25.68 +
   25.69 +static double cmnTimerGetTime()
   25.70 +{
   25.71 +  static double SCALE_COUNTER=-1;
   25.72 +
   25.73 +  if (SCALE_COUNTER==-1.0) {
   25.74 +	LARGE_INTEGER pc;
   25.75 +
   25.76 +	if(!QueryPerformanceFrequency((LARGE_INTEGER *)&pc)) {
   25.77 +		SYS_ASSERT(0 && "No freqency !!!\n");
   25.78 +	}
   25.79 +
   25.80 +	SCALE_COUNTER=1.0/((double)pc.QuadPart);
   25.81 +
   25.82 +  }
   25.83 +  //unsigned int perf_cnt = pc.QuadPart;
   25.84 +
   25.85 +  //double scale_time = 1.0 / perf_cnt;
   25.86 +  LARGE_INTEGER ct;
   25.87 +  double count;
   25.88 +  if(!QueryPerformanceCounter((LARGE_INTEGER *) &ct)) {
   25.89 +	SYS_ASSERT(0 && "No timer !!!\n");
   25.90 +	return 1;
   25.91 +  }
   25.92 +  count=(double)ct.QuadPart;
   25.93 +  count*=SCALE_COUNTER;
   25.94 +  return count;
   25.95 +}
   25.96 +
   25.97 +
   25.98 +
   25.99 +void cmnTimer_t::Init()
  25.100 +{
  25.101 +	startTime=cmnTimerGetTime();
  25.102 +  currentTime=0;
  25.103 +  frameTime=0;
  25.104 +}
  25.105 +
  25.106 +
  25.107 +double cmnTimer_t::GetRealTime()
  25.108 +{
  25.109 +	return currentTime; //cmnTimerGetTime()-startTime;
  25.110 +}
  25.111 +
  25.112 +
  25.113 +double cmnTimer_t::GetFrameTime()
  25.114 +{
  25.115 +	return frameTime;
  25.116 +}
  25.117 +
  25.118 +void cmnTimer_t::Update()
  25.119 +{
  25.120 +	double tmp=cmnTimerGetTime()-startTime; //GetRealTime();
  25.121 +	frameTime=tmp-currentTime;
  25.122 +	currentTime=tmp;
  25.123 +}
  25.124 +
  25.125 +
  25.126 +void cmnPushMatrix()
  25.127 +{
  25.128 +  glMatrixMode(GL_PROJECTION);
  25.129 +	glPushMatrix();
  25.130 +
  25.131 +  glMatrixMode(GL_MODELVIEW);
  25.132 +	glPushMatrix();
  25.133 +}
  25.134 +
  25.135 +void cmnPopMatrix()
  25.136 +{
  25.137 +	glMatrixMode(GL_MODELVIEW);
  25.138 +	glPopMatrix();
  25.139 +
  25.140 +  glMatrixMode(GL_PROJECTION);
  25.141 +	glPopMatrix();
  25.142 +}
  25.143 +
  25.144 +
  25.145 +void cmnSetPlanarView()
  25.146 +{
  25.147 +  glMatrixMode(GL_PROJECTION);
  25.148 +  glLoadIdentity();
  25.149 +  glOrtho(0,RX,0,RY,-100,100);
  25.150 +  glMatrixMode(GL_MODELVIEW);
  25.151 +  glLoadIdentity();
  25.152 +}
  25.153 +
  25.154 +
  25.155 +void cmnScope(unsigned char alpha, float trans)
  25.156 +{
  25.157 +	glEnable(GL_BLEND);
  25.158 +	glBlendFunc(GL_ONE, GL_SRC_ALPHA);
  25.159 +	
  25.160 +	glColor4ub(0, 0, 0, alpha);
  25.161 +	
  25.162 +  cmnPushMatrix();
  25.163 +  glMatrixMode(GL_PROJECTION);
  25.164 +  glLoadIdentity();
  25.165 +  glMatrixMode(GL_MODELVIEW);
  25.166 +  glLoadIdentity();
  25.167 +	
  25.168 +	glBegin(GL_QUADS);
  25.169 +	glVertex2f(-1.f, -1.f);
  25.170 +	glVertex2f(-1.f, -trans);
  25.171 +	glVertex2f(1.f, -trans);
  25.172 +	glVertex2f(1.f, -1.f);
  25.173 +	glEnd();
  25.174 +	
  25.175 +	glBegin(GL_QUADS);
  25.176 +	glVertex2f(-1.f, trans);
  25.177 +	glVertex2f(-1.f, 1.f);
  25.178 +	glVertex2f(1.f, 1.f);
  25.179 +	glVertex2f(1.f, trans);
  25.180 +	glEnd();
  25.181 +	
  25.182 +
  25.183 +  cmnPopMatrix();
  25.184 +  glDisable(GL_BLEND);
  25.185 +
  25.186 +}
  25.187 +
  25.188 +void cmnDisplayBackground(GLuint _texture,int _r,int _g,int _b,int _a, int _nbPasses,int _side)
  25.189 +{
  25.190 +  cmnPushMatrix();
  25.191 +  cmnPushGLState();
  25.192 +
  25.193 +  glMatrixMode(GL_PROJECTION);
  25.194 +  glLoadIdentity();
  25.195 +
  25.196 +  glMatrixMode(GL_MODELVIEW);
  25.197 +  glLoadIdentity();
  25.198 +
  25.199 +  glDisable(GL_DEPTH_TEST);
  25.200 +  glShadeModel(GL_SMOOTH);
  25.201 +
  25.202 +//  glEnable(GL_BLEND);
  25.203 +//  glBlendFunc(GL_ONE,GL_ONE);
  25.204 +
  25.205 +  txtBindTexture2d(_texture,0);
  25.206 +  glBegin(GL_QUADS);
  25.207 +  
  25.208 +  for (int i=0;i<_nbPasses;i++) {
  25.209 +
  25.210 +    glColor4ub(0,0,0,0);
  25.211 +    glTexCoord2f(0,0);
  25.212 +    glVertex3f(-1,1,0);
  25.213 +
  25.214 +    if (_side)
  25.215 +      glColor4ub(0,0,0,0);
  25.216 +    else
  25.217 +      glColor4ub(_r,_g,_b,_a);
  25.218 +    glTexCoord2f(1,0);
  25.219 +    glVertex3f(1,1,0);
  25.220 +
  25.221 +    glColor4ub(_r,_g,_b,_a);
  25.222 +    glTexCoord2f(1,1);
  25.223 +    glVertex3f(1,-1,0);
  25.224 +
  25.225 +    if (_side)
  25.226 +      glColor4ub(0,0,0,0);
  25.227 +    else
  25.228 +      glColor4ub(_r,_g,_b,_a);
  25.229 +    glTexCoord2f(0,1);
  25.230 +    glVertex3f(-1,-1,0);
  25.231 +  }
  25.232 +
  25.233 +  glEnd();
  25.234 +
  25.235 +  cmnPopGLState();
  25.236 +  
  25.237 +//  txtUnBindTexture2d(0);
  25.238 +//  glEnable(GL_DEPTH_TEST);  
  25.239 +
  25.240 +  cmnPopMatrix();
  25.241 +  glMatrixMode(GL_MODELVIEW);
  25.242 +}
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/cmn_intro.h	Tue Nov 27 15:23:52 2007 +0100
    26.3 @@ -0,0 +1,85 @@
    26.4 +#ifndef CMN_INTRO_H
    26.5 +#define CMN_INTRO_H
    26.6 +
    26.7 +#include "mth_vector3.h"
    26.8 +#include "rdr_font.h"
    26.9 +
   26.10 +
   26.11 +extern rdrFont_t* font;
   26.12 +
   26.13 +
   26.14 +
   26.15 +
   26.16 +// define common
   26.17 +#define RX 800
   26.18 +#define RY 600
   26.19 +                  
   26.20 +
   26.21 +
   26.22 +// DBUG TIME (Console)
   26.23 +#ifdef SOTA_DEBUG_MODE
   26.24 +#include <windows.h>
   26.25 +#include <cstring>
   26.26 +#include <cstdio>
   26.27 +extern HANDLE stdOut;
   26.28 +void Write2Console(const char * data );
   26.29 +
   26.30 +#endif
   26.31 +
   26.32 +
   26.33 +/** 
   26.34 + *  Clear screen for all effects
   26.35 + */
   26.36 +#define DEFAULT_BGCOLOR_R 0
   26.37 +#define DEFAULT_BGCOLOR_G 0
   26.38 +#define DEFAULT_BGCOLOR_B 0
   26.39 +void cmnClearScreen(float r=DEFAULT_BGCOLOR_R,float g=DEFAULT_BGCOLOR_G,float b=DEFAULT_BGCOLOR_B,float a=1.0);
   26.40 +
   26.41 +void cmnSetCamera(const mth::Vector3_t& _position,
   26.42 +                  const mth::Vector3_t& _lookat,
   26.43 +                  const mth::Vector3_t& _up=mth::Vector3_t(0,1,0));
   26.44 +
   26.45 +void cmnSetFrustrum(float _fov=120,float _zmin=0.1,float _zmax=1000);
   26.46 +
   26.47 +void cmnSetPlanarView();
   26.48 +
   26.49 +void cmnDisplayBackground(GLuint _texture,int _r=33,int _g=137,int _b=255,int _a=255, int _nbPasses=2,int _side=0);
   26.50 +
   26.51 +
   26.52 +/// use this in your effect ( at the begin and at the end)
   26.53 +#ifndef FINAL_RELEASE
   26.54 +void cmnPushGLState();
   26.55 +void cmnPopGLState();
   26.56 +#else
   26.57 +#define cmnPushGLState() glPushAttrib(GL_ALL_ATTRIB_BITS)
   26.58 +#define cmnPopGLState glPopAttrib
   26.59 +#endif
   26.60 +
   26.61 +void cmnPushMatrix();
   26.62 +void cmnPopMatrix();
   26.63 +
   26.64 +
   26.65 +void cmnScope(unsigned char alpha=100, float trans=0.68);
   26.66 +
   26.67 +
   26.68 +/// Timer class update it at each frame
   26.69 +class cmnTimer_t
   26.70 +{
   26.71 +	double startTime;
   26.72 +	double frameTime;
   26.73 +	double currentTime;
   26.74 +
   26.75 +public:
   26.76 +
   26.77 +	void Init();
   26.78 +
   26.79 +	double GetRealTime();
   26.80 +	double GetFrameTime();
   26.81 +
   26.82 +	void Update();
   26.83 +};
   26.84 +
   26.85 +
   26.86 +extern cmnTimer_t* Timer;
   26.87 +
   26.88 +#endif 
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/cmn_shape.cxx	Tue Nov 27 15:23:52 2007 +0100
    27.3 @@ -0,0 +1,143 @@
    27.4 +#include "cmn_shape.h"
    27.5 +#include "sys_assert.h"
    27.6 +#include "mth_vector3.h"
    27.7 +#include "gl_header.h"
    27.8 +#include "cmn_intro.h"
    27.9 +
   27.10 +
   27.11 +
   27.12 +void cmnSquareShape_t::Init(int _resx,int _resy)
   27.13 +{
   27.14 +
   27.15 +	Kill();
   27.16 +
   27.17 +	nbVertexes=_resx*_resy;
   27.18 +	vertexes=new mth::Vector3_t[nbVertexes+_resy]; // alloc more for vertex array trick
   27.19 +	normals=new mth::Vector3_t[nbVertexes+_resy];
   27.20 +  resx=_resx;
   27.21 +  resy=_resy;
   27.22 +
   27.23 +#if 0
   27.24 +  if (GL_ARB_vertex_buffer_object) {
   27.25 +    glGen
   27.26 +  }
   27.27 +#endif
   27.28 +
   27.29 +}
   27.30 +
   27.31 +
   27.32 +void cmnSquareShape_t::Kill()
   27.33 +{
   27.34 +	if (vertexes)
   27.35 +		delete [] vertexes;
   27.36 +	vertexes=0;
   27.37 +
   27.38 +	if (normals)
   27.39 +		delete [] normals;
   27.40 +	normals=0;
   27.41 +
   27.42 +  if (indexes)
   27.43 +    delete [] indexes;
   27.44 +  indexes=0;
   27.45 +
   27.46 +}
   27.47 +
   27.48 +
   27.49 +void cmnSquareShape_t::MakeMorphFrom(cmnSquareShape_t& _shape1,cmnSquareShape_t& _shape2,float _t)
   27.50 +{
   27.51 +
   27.52 +  if (_t<1e-3) {
   27.53 +    memcpy(vertexes,_shape1.vertexes,sizeof(mth::Vector3_t)*nbVertexes);
   27.54 +    memcpy(normals,_shape1.normals,sizeof(mth::Vector3_t)*nbVertexes);
   27.55 +  } else if (_t>1.0-1e-3) {
   27.56 +    memcpy(vertexes,_shape2.vertexes,sizeof(mth::Vector3_t)*nbVertexes);
   27.57 +    memcpy(normals,_shape2.normals,sizeof(mth::Vector3_t)*nbVertexes);
   27.58 +  }
   27.59 +
   27.60 +  mth::Vector3_t tmp;
   27.61 +  float a;
   27.62 +  for (int i=0;i<nbVertexes;i++) {
   27.63 +    vertexes[i]=_shape1.vertexes[i];
   27.64 +    tmp=_shape2.vertexes[i];
   27.65 +    tmp-=vertexes[i];
   27.66 +    tmp*=_t;
   27.67 +    vertexes[i]+=tmp;
   27.68 +
   27.69 +    normals[i]=_shape1.normals[i];
   27.70 +    tmp=_shape2.normals[i];
   27.71 +    tmp-=normals[i];
   27.72 +    tmp*=_t;
   27.73 +    normals[i]+=tmp;
   27.74 +    a=normals[i].MagSqr();
   27.75 +    if (a>1e-4)
   27.76 +      normals[i]*=1.0/mth::Sqrt(a);
   27.77 +  }
   27.78 +
   27.79 +}
   27.80 +
   27.81 +
   27.82 +void cmnSquareShape_t::FixForVArray()
   27.83 +{
   27.84 +
   27.85 +  int index;
   27.86 +
   27.87 +
   27.88 +  for (int i=0;i<resy;i++) {
   27.89 +    index=0+i*resx;
   27.90 +    vertexes[nbVertexes+i]=vertexes[index];
   27.91 +    normals[nbVertexes+i]=normals[index];
   27.92 +
   27.93 +    if (uvs) {
   27.94 +      index=resx-1+i*resx;
   27.95 +      uvs[nbVertexes+i]=uvs[index]+(uvs[(index-1+resx)%resx]-uvs[(index-2+resx)%resx]);
   27.96 +    }
   27.97 +  }
   27.98 +}
   27.99 +
  27.100 +
  27.101 +
  27.102 +mth::Vector2_t* cmnSquareShape_t::GetNewUVsBuffer()
  27.103 +{
  27.104 +  return new mth::Vector2_t[nbVertexes+resy];
  27.105 +}
  27.106 +
  27.107 +
  27.108 +
  27.109 +void cmnSquareShape_t::EnableArray()
  27.110 +{
  27.111 +  glEnableClientState(GL_VERTEX_ARRAY);
  27.112 +  glVertexPointer(3,GL_FLOAT,0,vertexes);
  27.113 +
  27.114 +  glEnableClientState(GL_NORMAL_ARRAY);
  27.115 +  glNormalPointer(GL_FLOAT,0,normals);
  27.116 +
  27.117 +  if (uvs) {
  27.118 +    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  27.119 +    glTexCoordPointer(2,GL_FLOAT,0,uvs);
  27.120 +  }
  27.121 +}
  27.122 +
  27.123 +void cmnSquareShape_t::DisableArray()
  27.124 +{
  27.125 +  glDisableClientState(GL_VERTEX_ARRAY);
  27.126 +  glDisableClientState(GL_NORMAL_ARRAY);
  27.127 +  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
  27.128 +}
  27.129 +
  27.130 +
  27.131 +cmnSquareShape_t::IndexBuffers_t* cmnSquareShape_t::GetNewIndexBuffer()
  27.132 +{
  27.133 +  // and fill the indexes buffer
  27.134 +  indexes=new IndexBuffers_t(resy-1,2*(resx+1));
  27.135 +  for (int j=0; j<resy-1; j++) {
  27.136 +  int curi=0;
  27.137 +    for (int i=0; i<resx; i++) {
  27.138 +      indexes->indexes[j][curi++]=i+j*resx;
  27.139 +      indexes->indexes[j][curi++]=i+(j+1)*resx;
  27.140 +    }
  27.141 +    indexes->indexes[j][curi++]=nbVertexes+j+0;
  27.142 +    indexes->indexes[j][curi++]=nbVertexes+j+1;
  27.143 +  }
  27.144 +
  27.145 +  return indexes;
  27.146 +}
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/cmn_shape.h	Tue Nov 27 15:23:52 2007 +0100
    28.3 @@ -0,0 +1,78 @@
    28.4 +#ifndef CMN_SHAPE_H
    28.5 +#define CMN_SHAPE_H
    28.6 +
    28.7 +
    28.8 +#include "cmn_texture.h"
    28.9 +#include "mth_vector2.h"
   28.10 +#include "mth_vector3.h"
   28.11 +
   28.12 +/*
   28.13 + * miniFMod
   28.14 + *  include
   28.15 + *  resource
   28.16 + */
   28.17 +#include "minifmod/minifmod.h"
   28.18 +extern FMUSIC_MODULE * intro_mod;
   28.19 +
   28.20 +
   28.21 +class cmnSquareShape_t
   28.22 +{
   28.23 +public:
   28.24 +typedef int* IntPtr_t;
   28.25 +
   28.26 +  struct IndexBuffers_t {
   28.27 +    int** indexes;
   28.28 +    int nbBuffers;
   28.29 +    int sizeOfBuffer;
   28.30 +
   28.31 +    IndexBuffers_t(int _nbBuffers,int _sizeOfBuffers) {
   28.32 +      sizeOfBuffer=_sizeOfBuffers;
   28.33 +      nbBuffers=_nbBuffers;
   28.34 +
   28.35 +      indexes=new IntPtr_t[nbBuffers];
   28.36 +      indexes[0]=new int[sizeOfBuffer*nbBuffers];
   28.37 +      for (int i=1;i<nbBuffers;i++)
   28.38 +        indexes[i]=&(indexes[0][sizeOfBuffer*i]);
   28.39 +    }
   28.40 +  };
   28.41 +
   28.42 +
   28.43 +protected:
   28.44 +
   28.45 +  mth::Vector3_t* vertexes;
   28.46 +  mth::Vector3_t* normals;
   28.47 +  mth::Vector2_t* uvs; // shared data don't manage it
   28.48 +  IndexBuffers_t* indexes;
   28.49 +  int nbVertexes;
   28.50 +  int resx;
   28.51 +  int resy;
   28.52 +
   28.53 +public:
   28.54 +
   28.55 +  cmnSquareShape_t() {vertexes=normals=0;uvs=0;indexes=0;}
   28.56 +
   28.57 +  void SetUVs(mth::Vector2_t* _uvs) { uvs=_uvs;}
   28.58 +  void SetIndexes(IndexBuffers_t* _indexes) { indexes=_indexes;}
   28.59 +
   28.60 +  void Init(int _resx,int _resy);
   28.61 +  void Kill();
   28.62 +
   28.63 +  int ResX() const { return resx;}
   28.64 +  int ResY() const { return resy;}
   28.65 +
   28.66 +  int NbVertexes() { return nbVertexes;}
   28.67 +  void MakeMorphFrom(cmnSquareShape_t& _shape1,cmnSquareShape_t& _shape2,float _t);
   28.68 +  mth::Vector3_t* Vertexes() { return vertexes;}
   28.69 +  void FixForVArray();
   28.70 +
   28.71 +  mth::Vector2_t* GetNewUVsBuffer();
   28.72 +  IndexBuffers_t* GetNewIndexBuffer();
   28.73 +
   28.74 +  void EnableArray();
   28.75 +  void DisableArray();
   28.76 +
   28.77 +  IndexBuffers_t* Indexes() { return indexes;}
   28.78 +
   28.79 +};
   28.80 +
   28.81 +#endif
   28.82 \ No newline at end of file
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/cmn_texture.cxx	Tue Nov 27 15:23:52 2007 +0100
    29.3 @@ -0,0 +1,366 @@
    29.4 +#include "cmn_texture.h"
    29.5 +#include "cmn_intro.h"
    29.6 +#include "sys_assert.h"
    29.7 +#include "mth_perlin.h"
    29.8 +#include "gl_header.h"
    29.9 +
   29.10 +void txtBindTexture2d(GLuint _texture,int _unit)
   29.11 +{
   29.12 +//  glActiveTextureEXT(GL_TEXTURE0+_unit);
   29.13 +  glEnable(GL_TEXTURE_2D);
   29.14 +  glBindTexture(GL_TEXTURE_2D,_texture);
   29.15 +}
   29.16 +
   29.17 +void txtUnBindTexture2d(int _unit)
   29.18 +{
   29.19 +//  glActiveTextureEXT(GL_TEXTURE0+_unit);
   29.20 +  glDisable(GL_TEXTURE_2D);
   29.21 +}
   29.22 +
   29.23 +
   29.24 +GLuint txtInitTexture(GLenum _internalFormat,int _width,int _height,void* _data,bool _clamp,GLenum _type) 
   29.25 +{
   29.26 +  GLuint id;
   29.27 +  glGenTextures(1, &id);								
   29.28 +	glBindTexture(GL_TEXTURE_2D, id);
   29.29 +	glPixelStorei(GL_UNPACK_ALIGNMENT,1);
   29.30 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); //_MIPMAP_LINEAR);
   29.31 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);//_MIPMAP_LINEAR); // _MIPMAP_LINEAR
   29.32 +  if (_clamp) {
   29.33 +	  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); //_MIPMAP_LINEAR);
   29.34 +	  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); //_MIPMAP_LINEAR);
   29.35 +  }
   29.36 +	glTexImage2D(GL_TEXTURE_2D, 0, 4, _width, _height, 0, _internalFormat, _type, _data);	
   29.37 +  SYS_ASSERT(id && "No Id ???");
   29.38 +  return id;
   29.39 +}
   29.40 +
   29.41 +
   29.42 +GLuint txtLoadTextureFromMemory(int _name)
   29.43 +{
   29.44 +	HBITMAP bkg;
   29.45 +	BITMAP bmp;
   29.46 +  GLuint id;
   29.47 +
   29.48 +  bkg = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(_name), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
   29.49 +  SYS_ASSERT( bkg && "Texture not found\n");
   29.50 +
   29.51 +  GetObject(bkg, sizeof(bmp), &bmp);
   29.52 +  id=txtInitTexture(GL_BGR_EXT,bmp.bmWidth,bmp.bmHeight,bmp.bmBits);
   29.53 +  DeleteObject(bkg);
   29.54 +  return id;
   29.55 +}
   29.56 +
   29.57 +
   29.58 +
   29.59 +// Create an empty texture
   29.60 +GLuint txtCreateEmptyTexture(int _width,int _height)
   29.61 +{
   29.62 +	GLuint id;	
   29.63 +	unsigned char *data;
   29.64 +
   29.65 +	data = (unsigned char *)new GLuint[ ((_width * _height)* 4 * sizeof(unsigned int)) ];
   29.66 +  id=txtInitTexture(GL_RGBA,_width,_height,data);
   29.67 +	delete [] data;
   29.68 +	return id;										
   29.69 +}
   29.70 +
   29.71 +
   29.72 +
   29.73 +
   29.74 +static float F1(float _x,float _y,float _amp,int _freq)
   29.75 +{
   29.76 +  float amplitude = 1.0;
   29.77 +  float result = 0.0;
   29.78 +  float freq=1.0;
   29.79 +  float x=_x;
   29.80 +  float y=_y;
   29.81 +  float persistance;
   29.82 +  for (int i=0; i<_freq; i++) {
   29.83 +    freq=(1<<i);
   29.84 +    persistance=mth::Pow(_amp,i);
   29.85 +    result += _y+mth::noise2d(_x*freq,_y*freq) * persistance;
   29.86 +/*    amplitude *= persistance;
   29.87 +    x *= 2.0; 
   29.88 +    y *= 2.0;*/
   29.89 +  }
   29.90 +  return result;
   29.91 +}
   29.92 +
   29.93 +
   29.94 +float Tileable(/*mth::Perlin_t& _p,*/float _x,float _y,float _w,float _h,float _amp,int _freq)
   29.95 +{
   29.96 +  //return F1(_x, _y, _amp,_freq);
   29.97 +  return (F1(_x, _y, _amp,_freq)*(_w-_x)*(_h-_y)+
   29.98 +         F1(_x-_w, _y, _amp,_freq)*(_x)*(_h-_y)+
   29.99 +         F1(_x-_w, _y-_h,_amp,_freq)*(_x)*(_y)+
  29.100 +         F1(_x, _y-_h,_amp,_freq)*(_w-_x)*(_y))*1.0/(_w*_h);
  29.101 +}
  29.102 +
  29.103 +
  29.104 +
  29.105 +GLuint txtCreatePerlin2d(int _width,int _height,float _scaleOnX,float _scaleOnY,float _amp,int _freq,uchar* _keepMap)
  29.106 +{
  29.107 +  typedef unsigned char uchar;
  29.108 +  uchar* map=0;
  29.109 +  if (!_keepMap)
  29.110 +	  map= new uchar[_width*_height*4];
  29.111 +  else
  29.112 +    map=_keepMap;
  29.113 +
  29.114 +  float* data= new float[_width*_height];
  29.115 +
  29.116 +  //mth::Perlin_t perlin;
  29.117 +  float maxval=0;
  29.118 +  int x,y;
  29.119 +  float value;
  29.120 +
  29.121 +  for (x=0; x<_width; x++)
  29.122 +		for (y=0; y<_height; y++) {
  29.123 +      //value = perlin.Perturb(x*_scaleOnX, y*_scaleOnY, 5.2f, 3.5f);
  29.124 +      value=Tileable(x*_scaleOnX,y*_scaleOnY,_width*_scaleOnX,_height*_scaleOnY,_amp,_freq);
  29.125 +      data[x+y*_width]=value;//mth::Clamp(value,0,255);
  29.126 +      maxval=mth::Max(mth::Abs(value),maxval);
  29.127 +    }
  29.128 +
  29.129 +
  29.130 +  for (x=0; x<_width; x++)
  29.131 +		for (y=0; y<_height; y++) {
  29.132 +
  29.133 +//      value=data[x+y*_width]/maxval*255;///maxval;
  29.134 +      value=(data[x+y*_width]+maxval)/(2.0*maxval)*255;///maxval;
  29.135 +      map[(x+y*_width)*4+0] = (uchar)value;
  29.136 +			map[(x+y*_width)*4+1] = (uchar)value;
  29.137 +			map[(x+y*_width)*4+2] = (uchar)value;
  29.138 +      map[(x+y*_width)*4+3] = 255;
  29.139 +//			map[x+y*_width+3] = 255;
  29.140 +		}
  29.141 +
  29.142 +  int id=txtInitTexture(GL_RGBA,_width,_height,map);//,GL_UNSIGNED_INT);
  29.143 +  if (!_keepMap)
  29.144 +    delete [] map;
  29.145 +  delete [] data;
  29.146 +  return id;
  29.147 +}
  29.148 +
  29.149 +
  29.150 +
  29.151 +void txtGetTextureFromBackBuffer(void* _result,int _cornerX,int _cornerY,int _width,int _height)
  29.152 +{
  29.153 +  glFlush();
  29.154 +  glReadPixels(_cornerX,_cornerY,_width,_height,GL_RGBA,/*GL_UNSIGNED_INT_8_8_8_8*/GL_UNSIGNED_BYTE,_result);
  29.155 +}
  29.156 +
  29.157 +
  29.158 +GLuint txtCreateGrid(int _width,int _height,int _sizeofSquare,float _minValue)
  29.159 +{
  29.160 +	uchar* map= new uchar[_width*_height*4];
  29.161 +
  29.162 +  int x,y;
  29.163 +  int xend=_width/_sizeofSquare;
  29.164 +  int yend=_height/_sizeofSquare;
  29.165 +  uchar pixel;
  29.166 +
  29.167 +  int base=_minValue*=255;
  29.168 +  float p;
  29.169 +  for (x=0; x<xend; x++)
  29.170 +		for (y=0; y<yend; y++) {
  29.171 +      p=_minValue+1.0*mth::Rand()/(mth::RANDOM_MAX+1);
  29.172 +      pixel=(int)(mth::Max(p,1.f)*255);
  29.173 +      int index=x*_sizeofSquare+(y*_sizeofSquare)*_width;
  29.174 +      for (int i=0;i<_sizeofSquare;i++)
  29.175 +        for (int j=0;j<_sizeofSquare;j++) {
  29.176 +          int idx=(index+i+j*_width)*4;
  29.177 +          map[idx]=pixel;
  29.178 +          map[idx+1]=pixel;
  29.179 +          map[idx+2]=pixel;
  29.180 +          map[idx+3]=pixel;
  29.181 +        }
  29.182 +    }
  29.183 +
  29.184 +  int id=txtInitTexture(GL_RGBA,_width,_height,map);//,GL_UNSIGNED_INT);
  29.185 +  delete [] map;
  29.186 +  return id;
  29.187 +}
  29.188 +
  29.189 +
  29.190 +GLuint txtCreateObliqueTexture(int _width,int _height,float _angle,const char* _text,char _letter)
  29.191 +{
  29.192 +	uchar* map= new uchar[_width*_height*4];
  29.193 +  
  29.194 +  cmnClearScreen(0,0,0,1);
  29.195 +
  29.196 +  cmnPushMatrix();
  29.197 +  cmnSetPlanarView();
  29.198 +  glDisable(GL_CULL_FACE);
  29.199 +  glDisable(GL_DEPTH_TEST);  
  29.200 +  glDisable(GL_BLEND);
  29.201 +
  29.202 +  float sizex=_height*mth::Tan( (180.0-90.0-_angle)*mth::PI/180.0);
  29.203 +  float hyp=mth::Sqrt(sizex*sizex+_height*_height);
  29.204 +
  29.205 +  cmnPushMatrix();
  29.206 +  if (_text) {
  29.207 +    glColor4f(1,1,1,1);
  29.208 +    glTranslatef(font->SizeOfCharX()*1.5,0,0);
  29.209 +    glRotatef(_angle,0,0,1);
  29.210 +    int b=strlen(_text);
  29.211 +    int startx=(hyp-b*font->SizeOfCharX())*.5-font->SizeOfCharX()*0.5;
  29.212 +    SYS_ASSERT(startx>=0);
  29.213 +    font->Print(startx,0,_text);
  29.214 +  }
  29.215 +  cmnPopMatrix();
  29.216 +
  29.217 +#if 1
  29.218 +  cmnPushMatrix();
  29.219 +  if (_letter) {
  29.220 +    glColor4f(1,1,1,1);
  29.221 +    //glEnable(GL_BLEND);
  29.222 +    //glBlendFunc(GL_ONE,GL_ONE);
  29.223 +    const float OffsetPerCent = 0.10;
  29.224 +    float startx=_width*OffsetPerCent;
  29.225 +    float starty=_height*OffsetPerCent;
  29.226 +    //float sizex=_width-(_width*2*OffsetPerCent);
  29.227 +    //float sizey=_height-(_height*2*OffsetPerCent);
  29.228 +
  29.229 +    float u,v;
  29.230 +    font->GetUVsOfChar(_letter,u,v);
  29.231 +    txtBindTexture2d(font->TextureId(),0);
  29.232 +
  29.233 +    glBegin(GL_QUADS);
  29.234 +    glTexCoord2f(u,0);
  29.235 +    glVertex2f(startx,starty);
  29.236 +
  29.237 +    glTexCoord2f(u,1);
  29.238 +    glVertex2f(sizex+startx,_height-starty);
  29.239 +    
  29.240 +    float div=font->SizeOfCharX()*1.0/font->TextureWidth();
  29.241 +    glTexCoord2f(u+div,1);
  29.242 +    glVertex2f(_width-startx,_height-starty);
  29.243 +
  29.244 +    glTexCoord2f(u+div,0);
  29.245 +    glVertex2f(_width-sizex-startx,starty);
  29.246 +    glEnd();
  29.247 +    txtUnBindTexture2d(0);
  29.248 +  }
  29.249 +  cmnPopMatrix();
  29.250 +#endif
  29.251 +
  29.252 +  glEnable(GL_BLEND);
  29.253 +  glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_DST_COLOR);
  29.254 +
  29.255 +  glBegin(GL_QUADS);
  29.256 +  glVertex2f(0,0);
  29.257 +  glVertex2f(sizex,_height);
  29.258 +  glVertex2f(_width,_height);
  29.259 +  glVertex2f(_width-sizex,0);
  29.260 +  glEnd();
  29.261 +  glFlush();
  29.262 +
  29.263 +  txtGetTextureFromBackBuffer(map,0,0,_width,_height);
  29.264 +  int id=txtInitTexture(GL_RGBA,_width,_height,map,true);//,GL_UNSIGNED_INT);
  29.265 +  delete [] map;
  29.266 +  return id;
  29.267 +}
  29.268 +
  29.269 +
  29.270 +
  29.271 +// use it to have letter as texture filtered twice
  29.272 +GLuint txtCreateTextureFromLetter(int _width,int _height,char _letter)
  29.273 +{
  29.274 +  SYS_ASSERT(_letter);
  29.275 +  uchar* map= new uchar[_width*_height*4];
  29.276 +  
  29.277 +  cmnClearScreen(0,0,0,1);
  29.278 +
  29.279 +  cmnPushMatrix();
  29.280 +  cmnSetPlanarView();
  29.281 +  glDisable(GL_CULL_FACE);
  29.282 +  glDisable(GL_DEPTH_TEST);  
  29.283 +  glDisable(GL_BLEND);
  29.284 +
  29.285 +  glColor4f(1,1,1,1);
  29.286 +
  29.287 +  float u,v;
  29.288 +  font->GetUVsOfChar(_letter,u,v);
  29.289 +  txtBindTexture2d(font->TextureId(),0);
  29.290 +
  29.291 +  glBegin(GL_QUADS);
  29.292 +  glTexCoord2f(u,0);
  29.293 +  glVertex2f(0,0);
  29.294 +
  29.295 +  glTexCoord2f(u,1);
  29.296 +  glVertex2f(0,_height);
  29.297 +  
  29.298 +  float div=font->SizeOfCharX()*1.0/font->TextureWidth();
  29.299 +  glTexCoord2f(u+div,1);
  29.300 +  glVertex2f(_width,_height);
  29.301 +
  29.302 +  glTexCoord2f(u+div,0);
  29.303 +  glVertex2f(_width,0);
  29.304 +  glEnd();
  29.305 +  txtUnBindTexture2d(0);
  29.306 +
  29.307 +  cmnPopMatrix();
  29.308 +
  29.309 +  glFlush();
  29.310 +
  29.311 +  txtGetTextureFromBackBuffer(map,0,0,_width,_height);
  29.312 +  int id=txtInitTexture(GL_RGBA,_width,_height,map,true);//,GL_UNSIGNED_INT);
  29.313 +  delete [] map;
  29.314 +  return id;
  29.315 +}
  29.316 +
  29.317 +
  29.318 +
  29.319 +#if 1
  29.320 +GLuint txtCreateTextureCircular(int _width,int _height,float _radius,int _fade)
  29.321 +{
  29.322 +  uchar* map= new uchar[_width*_height*4];
  29.323 +  
  29.324 +  cmnClearScreen(0,0,0,1);
  29.325 +  cmnPushMatrix();
  29.326 +  cmnSetPlanarView();
  29.327 +  glDisable(GL_CULL_FACE);
  29.328 +  glDisable(GL_DEPTH_TEST);  
  29.329 +  glDisable(GL_BLEND);
  29.330 +  glColor4f(1,1,1,1);
  29.331 +
  29.332 +  const int Section=360;
  29.333 +  const float Radius=mth::Min(_width,_height)*0.5;
  29.334 +  const float Div=mth::TWOPI/Section;
  29.335 +  glBegin(GL_TRIANGLE_FAN);
  29.336 +  if (_fade)
  29.337 +    glColor3f(1,1,1);
  29.338 +  glVertex2f(_width*0.5,_height*0.5);
  29.339 +  for (int i=0;i<Section+1;i++) {
  29.340 +    float x,y;
  29.341 +    x=Radius * mth::Sin(-i *Div);
  29.342 +    y=Radius * mth::Cos(-i *Div);
  29.343 +    x+=_width*0.5;
  29.344 +    y+=_height*0.5;
  29.345 +    if (_fade)
  29.346 +      glColor3f(0,0,0);
  29.347 +    glVertex2f(x,y);
  29.348 +  }
  29.349 +  glEnd();
  29.350 +
  29.351 +  cmnPopMatrix();
  29.352 +
  29.353 +  glFlush();
  29.354 +
  29.355 +  txtGetTextureFromBackBuffer(map,0,0,_width,_height);
  29.356 +  int id=txtInitTexture(GL_RGBA,_width,_height,map,true);//,GL_UNSIGNED_INT);
  29.357 +  delete [] map;
  29.358 +  return id;
  29.359 +}
  29.360 +#endif
  29.361 +
  29.362 +
  29.363 +
  29.364 +void CopyBackBufferToTexture(GLuint _destination,int _sizex,int _sizey,int _bgOffsetX,int _bgOffsetY,int _txtOffsetX,int _txtOffsetY)
  29.365 +{
  29.366 +  txtBindTexture2d(_destination,0);
  29.367 +  glCopyTexSubImage2D(GL_TEXTURE_2D,0,_txtOffsetX,_txtOffsetY,_bgOffsetX,_bgOffsetY,_sizex,_sizey);
  29.368 +  txtUnBindTexture2d(0);
  29.369 +}
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/cmn_texture.h	Tue Nov 27 15:23:52 2007 +0100
    30.3 @@ -0,0 +1,44 @@
    30.4 +#ifndef CMN_TEXTURE_H
    30.5 +#define CMN_TEXTURE_H
    30.6 +
    30.7 +#include "gl_header.h"
    30.8 +
    30.9 +void txtBindTexture2d(GLuint _texture,int _unit);
   30.10 +void txtUnBindTexture2d(int _unit);
   30.11 +
   30.12 +
   30.13 +
   30.14 +GLuint txtInitTexture(GLenum _internalFormat,int _width,int _height,void* _data,bool _clamp=false,GLenum _type=GL_UNSIGNED_BYTE);
   30.15 +
   30.16 +
   30.17 +GLuint txtLoadTextureFromMemory(int _name);
   30.18 +
   30.19 +
   30.20 +
   30.21 +// Create an empty texture
   30.22 +GLuint txtCreateEmptyTexture(int _width,int _height);
   30.23 +
   30.24 +
   30.25 +typedef unsigned char uchar;
   30.26 +// defaut value for the back ground of screen1
   30.27 +GLuint txtCreatePerlin2d(int _width,int _height,float _scaleOnX=1.0,float _scaleOnY=1.0,float _amp=0.5,int _freq=6,uchar* _map=0);
   30.28 +
   30.29 +// get a image in rgba format from backbuffer
   30.30 +typedef unsigned char uchar;
   30.31 +void txtGetTextureFromBackBuffer(void* _result,int _cornerX,int _cornerY,int _width,int _height);
   30.32 +
   30.33 +
   30.34 +GLuint txtCreateGrid(int _width,int _height,int _sizeofSquare,float _minValue);
   30.35 +
   30.36 +
   30.37 +GLuint txtCreateObliqueTexture(int _width,int _height,float _angle,const char* _text=0,char _letter=0);
   30.38 +
   30.39 +
   30.40 +GLuint txtCreateTextureFromLetter(int _width,int _height,char _letter);
   30.41 +
   30.42 +GLuint txtCreateTextureCircular(int _width,int _height,float _radius,int _fade=0);
   30.43 +
   30.44 +
   30.45 +void CopyBackBufferToTexture(GLuint _destination,int _sizex,int _sizey,int _bgOffsetX=0,int _bgOffsetY=0,int _txtOffsetX=0,int _txtOffsetY=0);
   30.46 +
   30.47 +#endif
   30.48 \ No newline at end of file
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/efx_equa.cxx	Tue Nov 27 15:23:52 2007 +0100
    31.3 @@ -0,0 +1,159 @@
    31.4 +#include "efx_equa.h"
    31.5 +#include "gl_header.h"
    31.6 +#include "cmn_intro.h"
    31.7 +
    31.8 +#define FINAL_RELEASE
    31.9 +
   31.10 +void efxEquaBox_t::Init(const mth::Vector3_t& _pos)
   31.11 +{
   31.12 +
   31.13 +  x.Init(EQUA_SIZE_X/2,0,0);
   31.14 +  y.Init(0,EQUA_SIZE_Y/2,0);
   31.15 +  z.Init(0,0,EQUA_DEPTH);
   31.16 +  z2.Init(0,0,EQUA_DEPTH+EQUA_DEPTH_OFFSET);
   31.17 +  
   31.18 +
   31.19 +  vertexes[0]=_pos-x+y;
   31.20 +  vertexes[1]=_pos+x+y;
   31.21 +  vertexes[2]=_pos+x-y;
   31.22 +  vertexes[3]=_pos-x-y;
   31.23 +
   31.24 +  vertexes[4]=vertexes[0]+z;
   31.25 +  vertexes[5]=vertexes[1]+z;
   31.26 +  vertexes[6]=vertexes[2]+z2;
   31.27 +  vertexes[7]=vertexes[3]+z2;
   31.28 +
   31.29 +  baseLevel=0;
   31.30 +}
   31.31 +
   31.32 +void efxEquaBox_t::SetDepthLevel(float _level)
   31.33 +{
   31.34 +  vertexes[4]=vertexes[0]+z *(_level);
   31.35 +  vertexes[5]=vertexes[1]+z *(_level);
   31.36 +  vertexes[6]=vertexes[2]+z2*(_level);
   31.37 +  vertexes[7]=vertexes[3]+z2*(_level);
   31.38 +  vertexes[4][2]+=baseLevel;
   31.39 +  vertexes[5][2]+=baseLevel;
   31.40 +  vertexes[6][2]+=baseLevel;
   31.41 +  vertexes[7][2]+=baseLevel;
   31.42 +  level=_level;
   31.43 +
   31.44 +}
   31.45 +
   31.46 +
   31.47 +void efxEquaBox_t::DrawQuad(int _number,float _nx,float _ny)
   31.48 +{
   31.49 +  glNormal3f(_nx,_ny,0);
   31.50 +  glTexCoord2f(0,0);
   31.51 +  glVertex3fv(vertexes[4+_number]);
   31.52 +  glTexCoord2f(1,0);
   31.53 +  glVertex3fv(vertexes[4+(1+_number)%4]);
   31.54 +  glTexCoord2f(1,1);
   31.55 +  glVertex3fv(vertexes[0+(1+_number)%4]);
   31.56 +  glTexCoord2f(0,1);
   31.57 +  glVertex3fv(vertexes[0+_number]);
   31.58 +}
   31.59 +
   31.60 +
   31.61 +void efxEquaBox_t::Draw()
   31.62 +{
   31.63 +#ifdef FINAL_RELEASE
   31.64 +  DrawQuad(0,0,1);
   31.65 +  DrawQuad(1,1,0);
   31.66 +  DrawQuad(2,0,-1);
   31.67 +  DrawQuad(3,-1,0);
   31.68 +#else
   31.69 +  glNormal3f(0,1,0);
   31.70 +  glVertex3fv(&vertexes[4][0]);
   31.71 +  glVertex3fv(&vertexes[5][0]);
   31.72 +  glVertex3fv(&vertexes[1][0]);
   31.73 +  glVertex3fv(&vertexes[0][0]);
   31.74 +
   31.75 +  glNormal3f(1,0,0);
   31.76 +  glVertex3fv(&vertexes[5][0]);
   31.77 +  glVertex3fv(&vertexes[6][0]);
   31.78 +  glVertex3fv(&vertexes[2][0]);
   31.79 +  glVertex3fv(&vertexes[1][0]);
   31.80 +
   31.81 +  glNormal3f(0,-1,0);
   31.82 +  glVertex3fv(&vertexes[6][0]);
   31.83 +  glVertex3fv(&vertexes[7][0]);
   31.84 +  glVertex3fv(&vertexes[3][0]);
   31.85 +  glVertex3fv(&vertexes[2][0]);
   31.86 +
   31.87 +  glNormal3f(-1,0,0);
   31.88 +  glVertex3fv(&vertexes[7][0]);
   31.89 +  glVertex3fv(&vertexes[4][0]);
   31.90 +  glVertex3fv(&vertexes[0][0]);
   31.91 +  glVertex3fv(&vertexes[3][0]);
   31.92 +#endif
   31.93 +
   31.94 +  glNormal3f(0,0.7,0.7);
   31.95 +  glTexCoord2f(0,0);
   31.96 +  glVertex3fv(vertexes[7]);
   31.97 +  glTexCoord2f(1,0);
   31.98 +  glVertex3fv(vertexes[6]);
   31.99 +  glTexCoord2f(1,1);
  31.100 +  glVertex3fv(vertexes[5]);
  31.101 +  glTexCoord2f(0,1);
  31.102 +  glVertex3fv(vertexes[4]);
  31.103 +
  31.104 +
  31.105 +}
  31.106 +
  31.107 +
  31.108 +void efxEqua_t::Kill()
  31.109 +{
  31.110 +  if (box)
  31.111 +    delete [] box;
  31.112 +  box=0;
  31.113 +}
  31.114 +
  31.115 +
  31.116 +
  31.117 +efxEqua_t::efxEqua_t()
  31.118 +{
  31.119 +  box=0;
  31.120 +  pos[0]=pos[1]=pos[2]=0;
  31.121 +}
  31.122 +
  31.123 +
  31.124 +void efxEqua_t::Init(int _res)
  31.125 +{
  31.126 +  resolution=_res;
  31.127 +  Kill();
  31.128 +  box=new efxEquaBox_t[resolution*resolution];
  31.129 +
  31.130 +  mth::Vector3_t pos;
  31.131 +  for (int i=0;i<resolution;i++)
  31.132 +    for (int j=0;j<resolution;j++) {
  31.133 +      pos.Init( (i-resolution*1.0/4)*(EQUA_SIZE_X+EQUA_SIZE_SPACE),
  31.134 +                (j-resolution*1.0/4)*(EQUA_SIZE_Y+EQUA_SIZE_SPACE),
  31.135 +                0);
  31.136 +      box[i+j*resolution].Init(pos);
  31.137 +    }
  31.138 +
  31.139 +
  31.140 +  lightIntensity=0.9;
  31.141 +}
  31.142 +
  31.143 +
  31.144 +void efxEqua_t::SetDepthLevel(int _i,float _level)
  31.145 +{
  31.146 +  SYS_ASSERT(_i>=0 && _i<resolution*resolution);
  31.147 +  box[_i].SetDepthLevel(_level);
  31.148 +}
  31.149 +
  31.150 +
  31.151 +
  31.152 +void efxEqua_t::Draw(/*GLenum _mode*/)
  31.153 +{
  31.154 +  cmnPushMatrix();
  31.155 +  glTranslatef(pos[0],pos[1],pos[2]);
  31.156 +  glBegin(/*_mode*/ GL_QUADS);
  31.157 +  for (int i=0;i<resolution*resolution;i++)
  31.158 +    box[i].Draw();
  31.159 +  glEnd();
  31.160 +  cmnPopMatrix();
  31.161 +}
  31.162 +
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/efx_equa.h	Tue Nov 27 15:23:52 2007 +0100
    32.3 @@ -0,0 +1,76 @@
    32.4 +#ifndef EFX_EQUA_H
    32.5 +#define EFX_EQUA_H
    32.6 +
    32.7 +#include "mth_vector3.h"
    32.8 +#include "gl_header.h"
    32.9 +
   32.10 +#define EQUA_DEPTH 30
   32.11 +#define EQUA_SIZE_X 5
   32.12 +#define EQUA_SIZE_Y 5
   32.13 +#define EQUA_DEPTH_OFFSET 15 // define the size of the top of equa
   32.14 +#define EQUA_SIZE_SPACE 4.0
   32.15 +
   32.16 +
   32.17 +struct efxEquaBox_t
   32.18 +{
   32.19 +  mth::Vector3_t x;
   32.20 +  mth::Vector3_t y;
   32.21 +  mth::Vector3_t z;
   32.22 +  mth::Vector3_t z2;
   32.23 +
   32.24 +  float level;
   32.25 +  float baseLevel;
   32.26 +  mth::Vector3_t vertexes[8];
   32.27 +
   32.28 +  void Init(const mth::Vector3_t& _pos);
   32.29 +
   32.30 +  // between 0-1
   32.31 +  void SetDepthLevel(float _level);
   32.32 +
   32.33 +  // draw a box
   32.34 +  void DrawQuad(int _number,float _nx,float _ny);
   32.35 +  void Draw();
   32.36 +  void SetBaseLevel(float _level) { baseLevel=_level;}
   32.37 +};
   32.38 +
   32.39 +
   32.40 +
   32.41 +class efxEqua_t
   32.42 +{
   32.43 +
   32.44 +  efxEquaBox_t* box;
   32.45 +  int resolution;
   32.46 +  float lightIntensity;
   32.47 +  float pos[3];
   32.48 +  
   32.49 +public:
   32.50 +
   32.51 +  efxEqua_t();
   32.52 +
   32.53 +  void Kill();
   32.54 +
   32.55 +  int NbElements() { return resolution*resolution;}
   32.56 +  int ResX() { return resolution;}
   32.57 +  int ResY() { return resolution;}
   32.58 +
   32.59 +
   32.60 +  void SetPosition(float _x,float _y,float _z) { pos[0]=_x;pos[1]=_y;pos[2]=_z;}
   32.61 +
   32.62 +  void SetDepthLevel(int _i,float _level);
   32.63 +
   32.64 +  efxEquaBox_t& GetBox(int _i) { return box[_i];}
   32.65 +
   32.66 +  // init the classe with the number of elements to use
   32.67 +  void Init(int _resolution);
   32.68 +
   32.69 +  void Update(){}
   32.70 +
   32.71 +
   32.72 +  // Draw
   32.73 +  void Draw(/*GLenum _mode=GL_QUADS*/);
   32.74 +
   32.75 +
   32.76 +};
   32.77 +
   32.78 +
   32.79 +#endif 
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/efx_equa2.cxx	Tue Nov 27 15:23:52 2007 +0100
    33.3 @@ -0,0 +1,49 @@
    33.4 +#include "efx_equa2.h"
    33.5 +#include "gl_header.h"
    33.6 +#include "cmn_intro.h"
    33.7 +
    33.8 +
    33.9 +
   33.10 +void efxEquaBase_t::Draw()
   33.11 +{
   33.12 +  glPushMatrix();
   33.13 +  glTranslatef(position[0],position[1],position[2]);
   33.14 +  float light[4];
   33.15 +  light[3]=1.0;
   33.16 +
   33.17 +  int lineIndex;
   33.18 +  int index;
   33.19 +  int rX=resolutionX/2;
   33.20 +  int rY=resolutionY/2;
   33.21 +  for (int j=0;j<resolutionY;j++) {
   33.22 +    lineIndex=resolutionX*j;
   33.23 +    for (int i=0;i<resolutionX;i++) {
   33.24 +      index=lineIndex+i;
   33.25 +
   33.26 +      if (elements[index].level>0) {
   33.27 +        light[0]=219.0/255*elements[index].level;
   33.28 +        light[1]=127.0/255*elements[index].level;
   33.29 +        light[2]=13.0/255*elements[index].level;
   33.30 +      } else {
   33.31 +        light[0]=1.0;
   33.32 +        light[1]=1.0;
   33.33 +        light[2]=1.0;
   33.34 +      }
   33.35 +      glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,light);
   33.36 +      
   33.37 +      glPushMatrix();
   33.38 +      glTranslatef((i-rX)*sizeElementX,elements[index].level,(j-rY)*sizeElementY);
   33.39 +      glCallList(elements[index].meshId);
   33.40 +      glPopMatrix();
   33.41 +    }
   33.42 +  }
   33.43 +  glPopMatrix();
   33.44 +}
   33.45 +
   33.46 +
   33.47 +void efxEquaBase_t::SetGeometry(GLuint _id)
   33.48 +{
   33.49 +  int nb=NbElements();
   33.50 +  for (int i=0;i<nb;i++)
   33.51 +    elements[i].SetMesh(_id);
   33.52 +}
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/efx_equa2.h	Tue Nov 27 15:23:52 2007 +0100
    34.3 @@ -0,0 +1,81 @@
    34.4 +#ifndef EFX_EQUA2_H
    34.5 +#define EFX_EQUA2_H
    34.6 +
    34.7 +#include "mth_vector3.h"
    34.8 +#include "gl_header.h"
    34.9 +
   34.10 +#define EQUA_DEPTH 30
   34.11 +#define EQUA_SIZE_X 5
   34.12 +#define EQUA_SIZE_Y 5
   34.13 +#define EQUA_DEPTH_OFFSET 15 // define the size of the top of equa
   34.14 +#define EQUA_SIZE_SPACE 4.0
   34.15 +
   34.16 +
   34.17 +
   34.18 +struct efxEquaElement_t
   34.19 +{
   34.20 +  float level;
   34.21 +  GLuint meshId;
   34.22 +
   34.23 +public:
   34.24 +
   34.25 +  efxEquaElement_t() { level=0;meshId=0;}
   34.26 +
   34.27 +  void SetLevel(float _a) { level=_a;}
   34.28 +  void SetMesh(GLuint _id) {meshId=_id;}
   34.29 +
   34.30 +};
   34.31 +
   34.32 +
   34.33 +
   34.34 +
   34.35 +
   34.36 +class efxEquaBase_t
   34.37 +{
   34.38 +  int resolutionX;
   34.39 +  int resolutionY;
   34.40 +
   34.41 +  efxEquaElement_t* elements;
   34.42 +
   34.43 +  // it can be positioned -> for shared usage
   34.44 +  float position[3];
   34.45 +
   34.46 +  float sizeElementX;
   34.47 +  float sizeElementY;
   34.48 +
   34.49 +public:
   34.50 +
   34.51 +  efxEquaBase_t() {elements=0;sizeElementX=sizeElementY=1.0; position[0]=position[1]=position[2]=0;}
   34.52 +
   34.53 +  int NbElements() { return resolutionX*resolutionY;}
   34.54 +  int ResX() { return resolutionX;}
   34.55 +  int ResY() { return resolutionY;}
   34.56 +
   34.57 +
   34.58 +  void SetPosition(float _x,float _y,float _z) { position[0]=_x;position[1]=_y;position[2]=_z;}
   34.59 +
   34.60 +  void SetDepthLevel(int _i,float _level) {elements[_i].SetLevel(_level);}
   34.61 +
   34.62 +  efxEquaElement_t& GetElement(int _i) { return elements[_i];}
   34.63 +
   34.64 +  // init the classe with the number of elements to use
   34.65 +  void Init(int _resolutionX,int _resolutionY) {
   34.66 +    resolutionX=_resolutionX;
   34.67 +    resolutionY=_resolutionY;
   34.68 +    if (elements)
   34.69 +      delete [] elements;
   34.70 +    elements=new efxEquaElement_t[resolutionY*resolutionX];
   34.71 +  }
   34.72 +
   34.73 +  void SetGeometry(GLuint _id);
   34.74 +
   34.75 +
   34.76 +  void SetElementSize(float _x,float _y) {sizeElementX=_x;sizeElementY=_y;}
   34.77 +
   34.78 +  void Draw();
   34.79 +
   34.80 +
   34.81 +};
   34.82 +
   34.83 +
   34.84 +#endif 
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/efx_harmonics.cxx	Tue Nov 27 15:23:52 2007 +0100
    35.3 @@ -0,0 +1,375 @@
    35.4 +/** @file   stv_harmonics.cxx
    35.5 +*
    35.6 +* @brief   Sphericals Harmonics Effect
    35.7 +*
    35.8 +******************************************************************************************************************
    35.9 +*
   35.10 +* @author  Stv based on Paul Bourke's web site (http://astronomy.swin.edu.au/~pbourke/surfaces/sphericalh/)
   35.11 +*
   35.12 +* @date    Created 2003/09
   35.13 +*
   35.14 +* @version $Id: efx_harmonics.cxx,v 1.9 2004/01/17 09:49:49 psc80 Exp $
   35.15 +*
   35.16 +*****************************************************************************************************************/
   35.17 +
   35.18 +#include "efx_harmonics.h"
   35.19 +#include "mth_vector3.h"
   35.20 +#include "sys_assert.h"
   35.21 +
   35.22 +#include "gl_header.h"
   35.23 +
   35.24 +//109056 ->     38912
   35.25 +#if 0
   35.26 +void efxSphericalShape_t::Init(int _resolution)
   35.27 +{
   35.28 +
   35.29 +	Kill();
   35.30 +	vertexes=new mth::Vector3_t[_resolution*_resolution];
   35.31 +	normals=new mth::Vector3_t[_resolution*_resolution];
   35.32 +
   35.33 +	resolution=_resolution;
   35.34 +}
   35.35 +
   35.36 +
   35.37 +void efxSphericalShape_t::Kill()
   35.38 +{
   35.39 +	if (vertexes)
   35.40 +		delete [] vertexes;
   35.41 +	vertexes=0;
   35.42 +
   35.43 +	if (normals)
   35.44 +		delete [] normals;
   35.45 +	normals=0;
   35.46 +
   35.47 +}
   35.48 +#endif
   35.49 +mth::Vector3_t efxSphericalShape_t::ComputeVertex(double _theta, double _phi,double _scale)
   35.50 +{
   35.51 +	double radius = 0;
   35.52 +	mth::Vector3_t v_output;
   35.53 +
   35.54 +	radius += mth::Pow(mth::Sin(params[0]*_phi),params[1]);
   35.55 +	radius += mth::Pow(mth::Cos(params[2]*_phi),params[3]);
   35.56 +	radius += mth::Pow(mth::Sin(params[4]*_theta),params[5]);
   35.57 +	radius += mth::Pow(mth::Cos(params[6]*_theta),params[7]);
   35.58 +  radius*=_scale;
   35.59 +
   35.60 +	v_output[0] = float(radius * mth::Sin(_phi) * mth::Cos(_theta));
   35.61 +	v_output[1] = float(radius * mth::Cos(_phi));
   35.62 +	v_output[2] = float(radius * mth::Sin(_phi) * mth::Sin(_theta)); 
   35.63 +
   35.64 +	return v_output;
   35.65 +
   35.66 +}
   35.67 +
   35.68 +
   35.69 +mth::Vector3_t efxSphericalShape_t::ComputeNormal(const mth::Vector3_t& _a,const mth::Vector3_t& _b, const mth::Vector3_t& _c)
   35.70 +{
   35.71 +	mth::Vector3_t vNorm;
   35.72 +	mth::Vector3_t v1 = _b - _a;
   35.73 +	mth::Vector3_t v2 = _c - _a;
   35.74 +
   35.75 +  vNorm=v1.Cross(v2);
   35.76 +  vNorm.Normalize();
   35.77 +
   35.78 +	return vNorm;
   35.79 +}
   35.80 +
   35.81 +
   35.82 +void efxSphericalShape_t::Params(int _a0,int _a1,int _a2,int _a3,int _a4,int _a5,int _a6,int _a7)
   35.83 +{
   35.84 +  params[0] = _a0;
   35.85 +  params[1] = _a1;
   35.86 +  params[2] = _a2;
   35.87 +  params[3] = _a3;
   35.88 +  params[4] = _a4;
   35.89 +  params[5] = _a5;
   35.90 +  params[6] = _a6;
   35.91 +  params[7] = _a7;
   35.92 +}
   35.93 +
   35.94 +void efxSphericalShape_t::RandomizeParams()
   35.95 +{
   35.96 +	for (int i=0; i<2; i++)
   35.97 +    for (int s=0; s<8; s++) {
   35.98 +    params[s] = (int)(6*mth::Rand()/mth::RANDOM_MAX+1);
   35.99 +    params[s]=6;
  35.100 +    }
  35.101 +    //params[s] =mth::Rand()%6;
  35.102 +    params[0]=2;
  35.103 +    params[1]=4;
  35.104 +    params[2]=6;
  35.105 +    params[3]=2;
  35.106 +    params[4]=4;
  35.107 +    params[5]=6;
  35.108 +    params[6]=2;
  35.109 +    params[7]=4;
  35.110 +
  35.111 +#if 0 // tested shape that are usable
  35.112 +    params[0]=0;
  35.113 +    params[1]=2;
  35.114 +    params[2]=4;
  35.115 +    params[3]=0;
  35.116 +    params[4]=2;
  35.117 +    params[5]=4;
  35.118 +    params[6]=0;
  35.119 +    params[7]=2;
  35.120 +
  35.121 +
  35.122 +    params[0]=4;
  35.123 +    params[1]=0;
  35.124 +    params[2]=2;
  35.125 +    params[3]=4;
  35.126 +    params[4]=0;
  35.127 +    params[5]=2;
  35.128 +    params[6]=4;
  35.129 +    params[7]=0;
  35.130 +
  35.131 +#endif
  35.132 +
  35.133 +}
  35.134 +
  35.135 +
  35.136 +void efxSphericalShape_t::Generate(float _scale,bool _reverse)
  35.137 +{
  35.138 +  SYS_ASSERT(vertexes && normals);
  35.139 +
  35.140 +	double du = mth::TWOPI / (double)(ResX());
  35.141 +	double dv = mth::PI / (double)(ResY()-1);
  35.142 +
  35.143 +  int i,j;
  35.144 +  double u,v;
  35.145 +  for (i=0; i<ResX(); i++)
  35.146 +    for (j=0; j<ResY(); j++) {
  35.147 +      u = i*du;
  35.148 +			v = j*dv;
  35.149 +
  35.150 +      vertexes[i+j*ResX()]=ComputeVertex(u,v,_scale);
  35.151 +    }
  35.152 +
  35.153 +
  35.154 +    mth::Vector3_t normal;
  35.155 +
  35.156 +  // build normals
  35.157 +  for (i=0; i<ResX(); i++)
  35.158 +    for ( j=0; j<ResY(); j++) {
  35.159 +      u = i*du;
  35.160 +			v = j*dv;
  35.161 +
  35.162 +      normal=ComputeNormal(ComputeVertex(u,v,_scale),
  35.163 +                                            ComputeVertex(u+du/10.0,v,_scale),
  35.164 +                                            ComputeVertex(u,v+dv/10.0,_scale));
  35.165 +      if (_reverse)
  35.166 +        normal=-normal;
  35.167 +      normals[i+j*ResX()]=normal;
  35.168 +      //vertexes[i+j*resolution],
  35.169 +    }
  35.170 +
  35.171 +}
  35.172 +
  35.173 +#if 0
  35.174 +void efxSphericalShape_t::Draw() const
  35.175 +{
  35.176 +
  35.177 +  glShadeModel(GL_SMOOTH);
  35.178 +
  35.179 +  
  35.180 +  glEnable(GL_LIGHTING);
  35.181 +  glEnable(GL_LIGHT0);
  35.182 +
  35.183 +  float light[4]={0.333,0.333,0.333,0};
  35.184 +  glLightfv(GL_LIGHT0,GL_POSITION,light);
  35.185 +
  35.186 +  int i,j;
  35.187 +
  35.188 +#if 1 // test render mode
  35.189 +
  35.190 +  for (int t=0;t<2;t++) {
  35.191 +    GLenum mode=GL_QUAD_STRIP;
  35.192 +    if (t==1) {
  35.193 +      mode=GL_LINE_STRIP;
  35.194 +      glDisable(GL_CULL_FACE);
  35.195 +      glDisable(GL_DEPTH_TEST);
  35.196 +    }
  35.197 +
  35.198 +
  35.199 +    glBegin(mode); 
  35.200 +    for (j=0; j<ResY()-1; j++)
  35.201 +      for (i=0; i<ResX(); i++) {
  35.202 +        glNormal3fv(normals[(i)%ResX()+(j%ResY())*ResX()]);
  35.203 +        glVertex3fv(vertexes[(i)%ResX()+(j%ResY())*ResX()]);
  35.204 +
  35.205 +        glNormal3fv(normals[(i)%ResX()+((j+1)%ResY())*ResX()]);
  35.206 +        glVertex3fv(vertexes[(i)%ResX()+((j+1)%ResY())*ResX()]);
  35.207 +      }
  35.208 +    glEnd();
  35.209 +  }
  35.210 +
  35.211 +#else
  35.212 +
  35.213 +  
  35.214 +  glBegin(GL_LINES);
  35.215 +  for (j=0; j<resolution-1; j++)
  35.216 +    for (i=0; i<resolution; i++) {
  35.217 +
  35.218 +      glVertex3fv(vertexes[(i)%resolution+(j%resolution)*resolution]);
  35.219 +      glVertex3fv(vertexes[(i+1)%resolution+(j%resolution)*resolution]);
  35.220 +
  35.221 +      glVertex3fv(vertexes[(i)%resolution+(j%resolution)*resolution]);
  35.222 +      glVertex3fv(vertexes[(i)%resolution+((j+1)%resolution)*resolution]);
  35.223 +
  35.224 +
  35.225 +    }
  35.226 +  glEnd();
  35.227 +#endif
  35.228 +
  35.229 +  glDisable(GL_LIGHT0);
  35.230 +  glDisable(GL_LIGHTING);
  35.231 +}
  35.232 +#endif
  35.233 +
  35.234 +
  35.235 +
  35.236 +// used for screen 2
  35.237 +void efxSphericalShape_t::Draw()
  35.238 +{
  35.239 +  int i,j;
  35.240 +  GLenum mode=GL_QUAD_STRIP;
  35.241 +
  35.242 +#if 0
  35.243 +  int sx;int sy;
  35.244 +  sx=ResX();
  35.245 +  sy=ResY();
  35.246 +  txtBindTexture2d(textureBase,0);
  35.247 +
  35.248 +  int index;
  35.249 +  glBegin(mode); 
  35.250 +
  35.251 +  for (j=0; j<sy-1; j++)
  35.252 +    for (i=0; i<sx; i++) {
  35.253 +      index=i+j*sx;
  35.254 +      glNormal3fv(normals[index]);
  35.255 +      glTexCoord2fv(uvs[index]);
  35.256 +      glVertex3fv(vertexes[index]);
  35.257 +
  35.258 +      index+=sx;
  35.259 +      glNormal3fv(normals[index]);
  35.260 +      glTexCoord2fv(uvs[index]);
  35.261 +      glVertex3fv(vertexes[index]);
  35.262 +    }
  35.263 +  glEnd();
  35.264 +  txtBindTexture2d(textureBase,0);
  35.265 +#else
  35.266 +
  35.267 +  txtBindTexture2d(textureBase,0);
  35.268 +
  35.269 +  FixForVArray();
  35.270 +  EnableArray();
  35.271 +
  35.272 +  for (i=0;i<Indexes()->nbBuffers;i++)
  35.273 +    glDrawElements(mode,Indexes()->sizeOfBuffer,GL_UNSIGNED_INT,Indexes()->indexes[i]);
  35.274 +  
  35.275 +  DisableArray();
  35.276 +  txtBindTexture2d(textureBase,0);
  35.277 +
  35.278 +#endif
  35.279 +}
  35.280 +
  35.281 +
  35.282 +
  35.283 +
  35.284 +
  35.285 +
  35.286 +void efxSpherical_t::Init(int _nbShapes,int _resolutions,float _scale)
  35.287 +{
  35.288 +
  35.289 +  Kill();
  35.290 +  resolutions=_resolutions;
  35.291 +  nbShapes=_nbShapes;
  35.292 +
  35.293 +  int q=resolutions*resolutions;
  35.294 +
  35.295 +#if 0
  35.296 +  uvs=new mth::Vector2_t[q];
  35.297 +  for (int i=0;i<resolutions;i++)
  35.298 +    for (int j=0;j<resolutions;j++) {
  35.299 +      uvs[i+j*resolutions][0]=i*4*1.0/resolutions;
  35.300 +      uvs[i+j*resolutions][1]=j*4*1.0/resolutions;
  35.301 +    }
  35.302 +
  35.303 +  SYS_ASSERT(uvs);
  35.304 +#endif
  35.305 +
  35.306 +  shapes=new efxSphericalShape_t[_nbShapes];
  35.307 +
  35.308 +#if 1 // use this new version (remove old code in next commit)
  35.309 +  shapes[0].Init(_resolutions,_resolutions);
  35.310 +  uvs=shapes[0].GetNewUVsBuffer();
  35.311 +  cmnSquareShape_t::IndexBuffers_t* idx=shapes[0].GetNewIndexBuffer();
  35.312 +  shapes[0].SetUVs(uvs);
  35.313 +  shapes[0].SetIndexes(idx);
  35.314 +
  35.315 +  for (int i=0;i<resolutions;i++)
  35.316 +    for (int j=0;j<resolutions;j++) {
  35.317 +      uvs[i+j*resolutions][0]=i*4.0/resolutions;
  35.318 +      uvs[i+j*resolutions][1]=j*4.0/resolutions;
  35.319 +    }
  35.320 +  SYS_ASSERT(uvs);
  35.321 +
  35.322 +  for (i=1;i<_nbShapes;i++) {
  35.323 +    shapes[i].Init(_resolutions,_resolutions);
  35.324 +    shapes[i].RandomizeParams();
  35.325 +    shapes[i].Generate(_scale);
  35.326 +    shapes[i].SetUVs(uvs);
  35.327 +    shapes[i].SetIndexes(idx);
  35.328 +  }
  35.329 +  morph.Init(_resolutions,_resolutions);
  35.330 +  morph.SetUVs(uvs);
  35.331 +  morph.SetIndexes(idx);
  35.332 +#else  
  35.333 +  for (i=0;i<_nbShapes;i++) {
  35.334 +    shapes[i].Init(_resolutions,_resolutions);
  35.335 +    shapes[i].RandomizeParams();
  35.336 +    shapes[i].Generate(_scale);
  35.337 +    shapes[i].SetUVs(uvs);
  35.338 +  }
  35.339 +
  35.340 +  morph.Init(_resolutions,_resolutions);
  35.341 +  morph.SetUVs(uvs);
  35.342 +#endif
  35.343 +  nbShapes=_nbShapes;
  35.344 +  resolutions=_resolutions;
  35.345 +
  35.346 +}
  35.347 +
  35.348 +void efxSpherical_t::SetTexture(GLuint _id){
  35.349 +
  35.350 +  for (int i=0;i<nbShapes;i++)
  35.351 +    shapes[i].SetTexture(_id);
  35.352 +  morph.SetTexture(_id);
  35.353 +}
  35.354 +
  35.355 +
  35.356 +void efxSpherical_t::Kill()
  35.357 +{
  35.358 +  if (shapes)
  35.359 +    delete [] shapes;
  35.360 +  shapes=0;
  35.361 +
  35.362 +  morph.Kill();
  35.363 +  if (uvs)
  35.364 +    delete [] uvs;
  35.365 +  uvs=0;
  35.366 +}
  35.367 +
  35.368 +
  35.369 +
  35.370 +
  35.371 +void efxSpherical_t::MakeMorph(int _shape1,int _shape2,float _t)
  35.372 +{
  35.373 +  SYS_ASSERT(_shape1>=0 && _shape1<nbShapes);
  35.374 +  SYS_ASSERT(_shape2>=0 && _shape2<nbShapes);
  35.375 +
  35.376 +  morph.MakeMorphFrom(shapes[_shape1],shapes[_shape2],_t);
  35.377 +
  35.378 +}
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/efx_harmonics.h	Tue Nov 27 15:23:52 2007 +0100
    36.3 @@ -0,0 +1,94 @@
    36.4 +/** @file   stv_harmonics.h
    36.5 +*
    36.6 +* @brief   Sphericals Harmonics Effect
    36.7 +*
    36.8 +******************************************************************************************************************
    36.9 +*
   36.10 +* @author  Stv based on Paul Bourke's web site (http://astronomy.swin.edu.au/~pbourke/surfaces/sphericalh/)
   36.11 +*
   36.12 +* @date    Created 2003/10
   36.13 +*
   36.14 +* @version $Id: efx_harmonics.h,v 1.6 2004/01/17 08:37:27 psc80 Exp $
   36.15 +*
   36.16 +******************************************************************************************************************/
   36.17 +
   36.18 +#ifndef EFX_SPHERICAL_H
   36.19 +#define EFX_SPHERICAL_H
   36.20 +
   36.21 +#include "mth_vector3.h"
   36.22 +#include "mth_vector2.h"
   36.23 +#include "cmn_shape.h"
   36.24 +
   36.25 +class efxSpherical_t;
   36.26 +
   36.27 +class efxSphericalShape_t : public cmnSquareShape_t
   36.28 +{
   36.29 +	int params[8];
   36.30 +
   36.31 +  mth::Vector3_t ComputeVertex(double _theta, double _phi,double _scale);
   36.32 +  mth::Vector3_t ComputeNormal(const mth::Vector3_t& _a,const mth::Vector3_t& _b, const mth::Vector3_t& _c);
   36.33 +
   36.34 +  GLuint textureBase;
   36.35 +
   36.36 +public:
   36.37 +
   36.38 +  efxSphericalShape_t():cmnSquareShape_t() {textureBase=0;}
   36.39 +
   36.40 +  // specify params or use random
   36.41 +  void Params(int _a0,int _a1,int _a2,int _a3,int _a4,int _a5,int _a6,int _a7);
   36.42 +  void RandomizeParams();
   36.43 +
   36.44 +  // generate shape with a scale factor
   36.45 +  void Generate(float _scale,bool _reverse=false);
   36.46 +
   36.47 +  void Draw() ;
   36.48 +  void SetTexture(GLuint _id) { textureBase=_id;}
   36.49 +
   36.50 +};
   36.51 +
   36.52 +
   36.53 +
   36.54 +class efxSpherical_t
   36.55 +{
   36.56 +
   36.57 +	int nbShapes;
   36.58 +	int resolutions;
   36.59 +
   36.60 +	efxSphericalShape_t* shapes;
   36.61 +
   36.62 +  //shape used to morph
   36.63 +	efxSphericalShape_t morph;
   36.64 +
   36.65 +  // shared uvs
   36.66 +  mth::Vector2_t* uvs;
   36.67 +
   36.68 +public:
   36.69 +
   36.70 +  efxSpherical_t(){ shapes=0;uvs=0;}
   36.71 +	~efxSpherical_t(){}
   36.72 +
   36.73 +
   36.74 +	void Init(int _nbShapes,int _resolutions,float _scale=15);
   36.75 +
   36.76 +
   36.77 +  int NbShapes() { return nbShapes;}
   36.78 +
   36.79 +  int ResolutionOfGrid() { return resolutions;}
   36.80 +
   36.81 +	void Kill();
   36.82 +
   36.83 +
   36.84 +  /// morph a shape 1 with a shape 2 with a range t [0-1]. the result is into morph, given by MorphShape
   36.85 +  void MakeMorph(int _shape1,int _shape2,float _t);
   36.86 +
   36.87 +  efxSphericalShape_t& MorphShape() { return morph;}
   36.88 +
   36.89 +  
   36.90 +  efxSphericalShape_t& Shape(int _i) { return shapes[_i];}
   36.91 +
   36.92 +  void SetTexture(GLuint _id);
   36.93 +
   36.94 +};
   36.95 +
   36.96 +
   36.97 +#endif
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/efx_rub.cxx	Tue Nov 27 15:23:52 2007 +0100
    37.3 @@ -0,0 +1,359 @@
    37.4 +#include "efx_rub.h"
    37.5 +#include "sys_assert.h"
    37.6 +#include "mth_vector3.h"
    37.7 +#include "gl_header.h"
    37.8 +#include "cmn_intro.h"
    37.9 +#include "cmn_texture.h"
   37.10 +
   37.11 +void efxRubShape_t::Init(int _xres,int _yres)
   37.12 +{
   37.13 +  cmnSquareShape_t::Init(_xres,_yres);
   37.14 +}
   37.15 +
   37.16 +
   37.17 +void efxRubShape_t::Generate(int _nbElements,const char** _text,float _alpha,
   37.18 +                              GLuint _texture,int _xTex,int _yTex,
   37.19 +                              float _radius,float _length)
   37.20 +{
   37.21 +  SYS_ASSERT(vertexes && normals);
   37.22 +
   37.23 +  uchar* maps=new uchar[_xTex*_yTex*4];
   37.24 +  SYS_ASSERT(maps);
   37.25 +
   37.26 +
   37.27 +  const float OffsetStepY=0.02;
   37.28 +
   37.29 +	cmnPushGLState();
   37.30 +  cmnPushMatrix();
   37.31 +  
   37.32 +  GLuint tmpTexture=_texture;
   37.33 +  //float div=4.0;
   37.34 +  //tmpTexture=txtCreatePerlin2d(texResX,texResY,div*1.0/texResX,div*1.0/texResX);
   37.35 +
   37.36 +  cmnClearScreen(0,0,0,1);
   37.37 +  cmnSetPlanarView();
   37.38 +
   37.39 +  glDisable(GL_CULL_FACE);
   37.40 +
   37.41 +  glDisable(GL_DEPTH_TEST);  
   37.42 +  glColor3f(1,1,1);
   37.43 +
   37.44 +  // draw the texture
   37.45 +  txtBindTexture2d(tmpTexture,0);
   37.46 +  glBegin(GL_QUADS);
   37.47 +  for (int i=0;i<1;i++) {
   37.48 +    //glColor4ub(0,0,0,0);
   37.49 +    glTexCoord2f(0,0);
   37.50 +    glVertex2f(0,_yTex);
   37.51 +
   37.52 +    //glColor4ub(0,0,0,0);
   37.53 +    glTexCoord2f(1,0);
   37.54 +    glVertex2f(_xTex,_yTex);
   37.55 +
   37.56 +    //glColor4ub(167,92,5,255);
   37.57 +    glTexCoord2f(1,1);
   37.58 +    glVertex2f(_xTex,0);
   37.59 +
   37.60 +    //glColor4ub(167,92,5,255);
   37.61 +    glTexCoord2f(0,1);
   37.62 +    glVertex2f(0,0);
   37.63 +  }
   37.64 +  glEnd();
   37.65 +  txtUnBindTexture2d(0);
   37.66 +
   37.67 +  glEnable(GL_BLEND);
   37.68 +  glBlendFunc(GL_ONE,GL_ONE);
   37.69 +
   37.70 +  // draw the text
   37.71 +  font->SetScaleY(3.0);
   37.72 +  
   37.73 +  glColor4f(_alpha,_alpha,_alpha,1);
   37.74 +  float sizey=_nbElements*(font->SizeOfCharY()+OffsetStepY*_yTex);
   37.75 +  float starty=(_yTex-sizey)/2+OffsetStepY*_yTex;
   37.76 +  SYS_ASSERT(starty>0);
   37.77 +  //float sizex=(_nbElement+OffsetStepX*_nbElement)*font->SizeOfCharY();
   37.78 +  
   37.79 +  for (i=0;i<_nbElements;i++) {
   37.80 +    font->Print(0,starty+(i*(OffsetStepY*_yTex+font->SizeOfCharY())),_text[i]);
   37.81 +  }
   37.82 +
   37.83 +  glColor4f(1,1,1,1);
   37.84 +  font->SetScale(1.0);
   37.85 +
   37.86 +  glFlush();
   37.87 +
   37.88 +  txtGetTextureFromBackBuffer(maps,0,0,_xTex,_yTex);
   37.89 +
   37.90 +  cmnPopMatrix();
   37.91 +	cmnPopGLState();
   37.92 +
   37.93 +
   37.94 +
   37.95 +
   37.96 +
   37.97 +  const double one_on_xsection=1.0/ResX();
   37.98 +  const double one_on_ysection=_length*1.0/ResY();
   37.99 +
  37.100 +  const double one_on_xTexSection=_xTex*1.0/ResX();
  37.101 +  const double one_on_yTexSection=_yTex*1.0/ResY();
  37.102 +
  37.103 +  mth::Vector3_t tmp;
  37.104 +  for (i=0;i<ResY();i++)
  37.105 +    for (int s=0; s < ResX(); s++) {
  37.106 +      tmp.Init(mth::Sin(2 * mth::PI * s * one_on_xsection),
  37.107 +               -_length*0.5+i*one_on_ysection,
  37.108 +               mth::Cos(2 * mth::PI * s * one_on_xsection));
  37.109 +
  37.110 +      vertexes[s+i*ResX()]=tmp;
  37.111 +      tmp[1]=0;
  37.112 +      tmp.Normalize();
  37.113 +
  37.114 +      // todo: improve quality using a bilinear value
  37.115 +      int x=(int)(s*one_on_xTexSection);
  37.116 +      int y=(int)(i*one_on_yTexSection);
  37.117 +
  37.118 +      int sum=0;
  37.119 +//      sum+=_scalePixelMap*maps[(x+y*texResX)*4+0];
  37.120 +      sum+=maps[(x+y*_xTex)*4+1];
  37.121 +      sum+=maps[(x+y*_xTex)*4+2];
  37.122 +      sum+=maps[(x+y*_xTex)*4+3];
  37.123 +      float a=_radius*sum*1.0/3.0/255.0;
  37.124 +      vertexes[s+i*ResX()]+=tmp*a;
  37.125 +    }
  37.126 +
  37.127 +  // compute normals
  37.128 +  for (i=0;i<ResY();i++)
  37.129 +    for (int s=0; s < ResX(); s++) {
  37.130 +      tmp=GetNormalFace(s-1,i-1);
  37.131 +      tmp+=GetNormalFace(s,i-1);
  37.132 +      tmp+=GetNormalFace(s-1,i);
  37.133 +      tmp+=GetNormalFace(s,i);
  37.134 +      tmp.Normalize();
  37.135 +      normals[s+i*ResX()]=tmp;
  37.136 +    }
  37.137 +
  37.138 +  delete [] maps;
  37.139 +}
  37.140 +
  37.141 +
  37.142 +void efxRubShape_t::Kill()
  37.143 +{
  37.144 +  //glDeleteTextures(1,&texture);
  37.145 +}
  37.146 +
  37.147 +
  37.148 +// return the normal of the given face
  37.149 +mth::Vector3_t efxRubShape_t::GetNormalFace(int _i,int _j)
  37.150 +{
  37.151 +#define GetVertex(i,j) vertexes[((i)+ResX())%ResX()+(((j)+ResY())%ResY())*ResX()]
  37.152 +  mth::Vector3_t v1=GetVertex((_i),(_j+1))-GetVertex((_i),(_j));
  37.153 +  mth::Vector3_t v2=GetVertex((_i+1),_j)-GetVertex((_i),(_j));
  37.154 +
  37.155 +  mth::Vector3_t v3=GetVertex((_i+1),_j)-GetVertex((_i+1),(_j+1));
  37.156 +  mth::Vector3_t v4=GetVertex(_i,(_j+1))-GetVertex((_i+1),(_j+1));
  37.157 +
  37.158 +#undef GetVertex
  37.159 +
  37.160 +  mth::Vector3_t result;
  37.161 +  result=v1.Cross(v2);
  37.162 +  result+=v3.Cross(v4);
  37.163 +  result.Normalize();
  37.164 +  return -result;
  37.165 +}
  37.166 +
  37.167 +
  37.168 +
  37.169 +void efxRubShape_t::Draw()
  37.170 +{
  37.171 +  typedef int* IntPtr_t;
  37.172 +
  37.173 +
  37.174 +  SYS_ASSERT(uvs && vertexes && normals);
  37.175 +
  37.176 +  int i,j;
  37.177 +  GLenum mode=GL_QUAD_STRIP;
  37.178 +  float a[2];
  37.179 +  txtBindTexture2d(textureBase,0);
  37.180 +
  37.181 +  FixForVArray();
  37.182 +  EnableArray();
  37.183 +
  37.184 +  for (i=0;i<Indexes()->nbBuffers;i++)
  37.185 +    glDrawElements(mode,Indexes()->sizeOfBuffer,GL_UNSIGNED_INT,Indexes()->indexes[i]);
  37.186 +  
  37.187 +  DisableArray();
  37.188 +  txtUnBindTexture2d(0);
  37.189 +
  37.190 +}
  37.191 +
  37.192 +void efxRubShape_t::DrawRow(int _row) const
  37.193 +{
  37.194 +  SYS_ASSERT(uvs && vertexes && normals);
  37.195 +
  37.196 +  int i,j;
  37.197 +  GLenum mode=GL_QUAD_STRIP;
  37.198 +  float a[2];
  37.199 +  txtBindTexture2d(textureBase,0);
  37.200 +
  37.201 +  int index;
  37.202 +  int index1;
  37.203 +  j=_row;
  37.204 +  glBegin(mode); 
  37.205 +
  37.206 +    for (i=0; i<resx; i++) {
  37.207 +      index=i+j*resx;
  37.208 +      glNormal3fv(normals[index]);
  37.209 +      glTexCoord2fv(uvs[index]);
  37.210 +      glVertex3fv(vertexes[index]);
  37.211 +
  37.212 +      index+=resx;
  37.213 +      glNormal3fv(normals[index]);
  37.214 +      glTexCoord2fv(uvs[index]);
  37.215 +      glVertex3fv(vertexes[index]);
  37.216 +    }
  37.217 +
  37.218 +
  37.219 +    index1=j*resx;
  37.220 +    index=resx-1+index1;
  37.221 +    glNormal3fv(normals[index1]);
  37.222 +    a[0]=uvs[index][0]+(uvs[index-1][0]-uvs[index-2][0]);
  37.223 +    a[1]=uvs[index][1]+(uvs[index-1][1]-uvs[index-2][1]);
  37.224 +    glTexCoord2fv(a);
  37.225 +    glVertex3fv(vertexes[index1]);
  37.226 +
  37.227 +    index1+=resx;
  37.228 +    index=resx-1+index1;
  37.229 +    glNormal3fv(normals[index1]);
  37.230 +    a[0]=uvs[index][0]+(uvs[index][0]-uvs[index][0]);
  37.231 +    a[1]=uvs[index][1]+(uvs[index][1]-uvs[index][1]);
  37.232 +    glTexCoord2fv(a);
  37.233 +    glVertex3fv(vertexes[index1]);
  37.234 +  glEnd();
  37.235 +  txtUnBindTexture2d(0);
  37.236 +
  37.237 +}
  37.238 +
  37.239 +
  37.240 +
  37.241 +
  37.242 +
  37.243 +
  37.244 +
  37.245 +
  37.246 +efxRub_t::efxRub_t() 
  37.247 +{
  37.248 +  rubbers=0;
  37.249 +  nbRubbers=0;
  37.250 +  uvs=0;
  37.251 +}
  37.252 +
  37.253 +
  37.254 +void efxRub_t::Init(int _nbBuffers,int _xres,int _yres)
  37.255 +{
  37.256 +  if (rubbers)
  37.257 +    delete [] rubbers;
  37.258 +  nbRubbers=_nbBuffers;
  37.259 +  rubbers=new efxRubShape_t[nbRubbers];
  37.260 +
  37.261 +  rubbers[0].Init(_xres,_yres);
  37.262 +  uvs=rubbers[0].GetNewUVsBuffer();
  37.263 +  cmnSquareShape_t::IndexBuffers_t* idx=rubbers[0].GetNewIndexBuffer();
  37.264 +  rubbers[0].SetUVs(uvs);
  37.265 +  rubbers[0].SetIndexes(idx);
  37.266 +
  37.267 +  //uvs=new mth::Vector2_t[_xres*_yres];
  37.268 +  for (int i=0;i<_xres;i++)
  37.269 +    for (int j=0;j<_yres;j++) {
  37.270 +      uvs[i+j*_xres][0]=i*1.0/_xres;
  37.271 +      uvs[i+j*_xres][1]=j*1.0/_yres;
  37.272 +    }
  37.273 +  SYS_ASSERT(uvs);
  37.274 +
  37.275 +  for (i=1;i<nbRubbers;i++) {
  37.276 +    rubbers[i].Init(_xres,_yres);
  37.277 +    rubbers[i].SetUVs(uvs);
  37.278 +    rubbers[i].SetIndexes(idx);
  37.279 +  }
  37.280 +
  37.281 +  morph.Init(_xres,_yres);
  37.282 +  morph.SetUVs(uvs);
  37.283 +  morph.SetIndexes(idx);
  37.284 +}
  37.285 +
  37.286 +
  37.287 +void efxRub_t::GenerateRandom(int _xTex,int _yTex,float _radius,float _length)
  37.288 +{
  37.289 +
  37.290 +  const int nbTextes=3;
  37.291 +  const char* text[nbTextes]={
  37.292 +    "syn[rj] [psc80]",
  37.293 +    "[kohai] [evil]",
  37.294 +    "[mryoung] [stv]"};
  37.295 +
  37.296 +
  37.297 +  float div=2.0;
  37.298 +  GLuint tmpTexture;
  37.299 +  int freq;
  37.300 +  float amp;
  37.301 +  for (int i=0;i<nbRubbers;i++) {
  37.302 +
  37.303 +    freq=1+(int)(8.0*mth::Rand()/(mth::RANDOM_MAX+1.0));
  37.304 +    amp=0.5+0.2*mth::Rand()/(mth::RANDOM_MAX+1.0);
  37.305 +    
  37.306 +    tmpTexture=txtCreatePerlin2d(_xTex,_yTex,div*1.0/_xTex,div*1.0/_yTex,amp,freq);
  37.307 +    SYS_ASSERT(tmpTexture);
  37.308 +    rubbers[i].Generate(nbTextes,text,0.2,tmpTexture,_xTex,_yTex,_radius,_length);
  37.309 +    glDeleteTextures(1,&tmpTexture);
  37.310 +  }
  37.311 +
  37.312 +}
  37.313 +
  37.314 +
  37.315 +void efxRub_t::Generate(int _xTex,int _yTex,float _radius,float _length,int _shape,const char** _elements,int _nbElements)
  37.316 +{
  37.317 +  SYS_ASSERT(_shape>=0 && _shape<nbRubbers);
  37.318 +  const int nbTextes=_nbElements;
  37.319 +
  37.320 +  float div=2.0;
  37.321 +  GLuint tmpTexture;
  37.322 +  int freq;
  37.323 +  float amp;
  37.324 +//  for (int i=0;i<nbRubbers;i++) {
  37.325 +
  37.326 +    freq=1+(int)(8.0*mth::Rand()/(mth::RANDOM_MAX+1.0));
  37.327 +    amp=0.5+0.2*mth::Rand()/(mth::RANDOM_MAX+1.0);
  37.328 +
  37.329 +    // big hack we generate a big shape for the second call
  37.330 +    static int nbCallFromOut=0;
  37.331 +    nbCallFromOut++;
  37.332 +
  37.333 +    if (nbCallFromOut==2) // big hack
  37.334 +      tmpTexture=txtCreatePerlin2d(_xTex,_yTex,div*1.0/_xTex,div*1.0/_yTex,0.8,5);
  37.335 +    else
  37.336 +      tmpTexture=txtCreatePerlin2d(_xTex,_yTex,div*1.0/_xTex,div*1.0/_yTex,amp,freq);
  37.337 +    SYS_ASSERT(tmpTexture);
  37.338 +    rubbers[_shape].Generate(nbTextes,_elements,0.2,tmpTexture,_xTex,_yTex,_radius,_length);
  37.339 +    glDeleteTextures(1,&tmpTexture);
  37.340 +//  }
  37.341 +
  37.342 +}
  37.343 +
  37.344 +
  37.345 +
  37.346 +
  37.347 +void efxRub_t::SetTexture(GLuint _id)
  37.348 +{
  37.349 +
  37.350 +  for (int i=0;i<nbRubbers;i++)
  37.351 +    rubbers[i].SetTexture(_id);
  37.352 +  morph.SetTexture(_id);
  37.353 +}
  37.354 +
  37.355 +
  37.356 +void efxRub_t::MakeMorph(int _shape1,int _shape2,float _t)
  37.357 +{
  37.358 +  SYS_ASSERT(_shape1>=0 && _shape1<nbRubbers);
  37.359 +  SYS_ASSERT(_shape2>=0 && _shape2<nbRubbers);
  37.360 +
  37.361 +  morph.MakeMorphFrom(rubbers[_shape1],rubbers[_shape2],_t);
  37.362 +}
  37.363 \ No newline at end of file
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/efx_rub.h	Tue Nov 27 15:23:52 2007 +0100
    38.3 @@ -0,0 +1,83 @@
    38.4 +#ifndef EFX_RUB_H
    38.5 +#define EFX_RUB_H
    38.6 +
    38.7 +
    38.8 +#include "cmn_texture.h"
    38.9 +#include "mth_vector2.h"
   38.10 +#include "cmn_shape.h"
   38.11 +
   38.12 +/*
   38.13 + * miniFMod
   38.14 + *  include
   38.15 + *  resource
   38.16 + */
   38.17 +#include "minifmod/minifmod.h"
   38.18 +extern FMUSIC_MODULE * intro_mod;
   38.19 +
   38.20 +
   38.21 +class efxRubShape_t : public cmnSquareShape_t
   38.22 +{
   38.23 +
   38.24 +  GLuint textureBase;
   38.25 +
   38.26 +
   38.27 +public:
   38.28 +
   38.29 +  efxRubShape_t():cmnSquareShape_t() { textureBase=0;}
   38.30 +  mth::Vector3_t efxRubShape_t::GetNormalFace(int _i,int _j);
   38.31 +
   38.32 +  void Generate(int _nbElements,const char** _text,float _alpha,
   38.33 +                GLuint _texture,int _xTex,int _yTex,
   38.34 +                float _radius,float _length);
   38.35 +
   38.36 +  void SetTexture(GLuint _id) { textureBase=_id;}
   38.37 +
   38.38 +  void Init(int _xres,int _yres);
   38.39 +  void Kill();
   38.40 +
   38.41 +  void Draw();
   38.42 +  void DrawRow(int _row) const;
   38.43 +
   38.44 +
   38.45 +};
   38.46 +
   38.47 +
   38.48 +
   38.49 +
   38.50 +class efxRub_t
   38.51 +{
   38.52 +
   38.53 +  // rubbers
   38.54 +  efxRubShape_t* rubbers;
   38.55 +  int nbRubbers;
   38.56 +
   38.57 +  // morphed rubbers
   38.58 +  efxRubShape_t morph;
   38.59 +
   38.60 +  // shared uvs
   38.61 +  mth::Vector2_t* uvs;
   38.62 +
   38.63 +public:
   38.64 +
   38.65 +  efxRub_t();
   38.66 +
   38.67 +
   38.68 +  void Init(int _nbBuffers,int _xres,int _yres);
   38.69 +  //void Update();
   38.70 +  //void Draw();
   38.71 +  void GenerateRandom(int _xTex,int _yTex,float _radius,float _length);
   38.72 +  void Generate(int _xTex,int _yTex,float _radius,float _length,int _shape,const char** _elements,int _nbElements);
   38.73 +  void MakeMorph(int _shape1,int _shape2,float _t);
   38.74 +  void SetTexture(GLuint _id);
   38.75 +
   38.76 +  void PreDraw();
   38.77 +  void PostDraw();
   38.78 +
   38.79 +  int NbShapes() { return nbRubbers;}
   38.80 +
   38.81 +  efxRubShape_t& Rubber(int _i) {return rubbers[_i];}
   38.82 +
   38.83 +  efxRubShape_t& MorphShape() { return morph;}
   38.84 +
   38.85 +};
   38.86 +#endif
   38.87 \ No newline at end of file
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/efx_screen0.cxx	Tue Nov 27 15:23:52 2007 +0100
    39.3 @@ -0,0 +1,231 @@
    39.4 +#include "efx_screen0.h"
    39.5 +#include "sys_assert.h"
    39.6 +#include "mth_vector3.h"
    39.7 +#include "gl_header.h"
    39.8 +#include "cmn_intro.h"
    39.9 +
   39.10 +
   39.11 +
   39.12 +efxScreen0_t::efxScreen0_t()
   39.13 +{
   39.14 +}
   39.15 +
   39.16 +
   39.17 +void efxScreen0_t::Init()
   39.18 +{
   39.19 +
   39.20 +#ifndef NO_LOADER
   39.21 +  loadingLevel=0;
   39.22 +  textureStart=txtCreateObliqueTexture(256,128,45,"Generating");
   39.23 +  textureCurrent=txtCreateObliqueTexture(256,128,45);
   39.24 +  textureEnd=txtCreateObliqueTexture(256,128,45,"finish");
   39.25 +#endif
   39.26 +  int size = 256;
   39.27 +  float div=1.0/size;
   39.28 +  backgroundTexture1=txtCreatePerlin2d(size,size,div,div,0.8,10);
   39.29 +  backgroundTexture2=txtCreatePerlin2d(size,size,div,div,0.8,5);
   39.30 +
   39.31 +  InitDesign();
   39.32 +}
   39.33 +
   39.34 +
   39.35 +void efxScreen0_t::InitDesign()
   39.36 +{                 //0123456789a
   39.37 +  const char* text[]= {
   39.38 +    "st",
   39.39 +    "  (   )",
   39.40 +    "        2k4",
   39.41 +    "   art ",
   39.42 +    };
   39.43 +  const int NbCharsText=11;
   39.44 +  const int PosYText=25;
   39.45 +
   39.46 +  const char* text1[]= {
   39.47 +    "syn",
   39.48 +    "    rj",
   39.49 +    "   [  ]",
   39.50 +    "presents",
   39.51 +    };
   39.52 +  const int NbCharsText1=7;
   39.53 +  const int PosYText1=-20;
   39.54 +
   39.55 +  const float ScaleFontX=0.9;
   39.56 +  const float ScaleFontY=2;
   39.57 +  const int NbDesignElements=6;
   39.58 +  const int Repeat=4;
   39.59 +
   39.60 +  design.Init(NbDesignElements*Repeat);
   39.61 +  designElements=new cmnDesignElementFont_t[NbDesignElements*Repeat];
   39.62 +
   39.63 +
   39.64 +  font->SetScaleX(ScaleFontX);
   39.65 +  font->SetScaleY(ScaleFontY);
   39.66 +
   39.67 +  MakeSync(0,0,text,NbCharsText,PosYText,ScaleFontX,ScaleFontY);
   39.68 +  MakeSync(4.66,3,text,NbCharsText,PosYText,ScaleFontX,ScaleFontY);
   39.69 +  MakeSync(6.149,6,text1,NbCharsText1,PosYText1,ScaleFontX,ScaleFontY);
   39.70 +  MakeSync(10.75,9,text1,NbCharsText1,PosYText1,ScaleFontX,ScaleFontY);
   39.71 +
   39.72 +  int index2=Repeat*3;
   39.73 +  designElements[index2].Init(0);
   39.74 +  designElements[index2].position.Init(-(NbCharsText*font->SizeOfCharX()/2),PosYText,0);
   39.75 +  designElements[index2].target.Init(designElements[index2].position);
   39.76 +  designElements[index2].text=text[3];
   39.77 +  designElements[index2].endLife=1e5;
   39.78 +  designElements[index2].factor=0;
   39.79 +  designElements[index2].alphaFactor=0.2;
   39.80 +  designElements[index2].start=3.3;
   39.81 +  designElements[index2].alpha=0;
   39.82 +  designElements[index2].scaley=ScaleFontY;
   39.83 +  designElements[index2].scalex=ScaleFontX;
   39.84 +  design.AddElement(&designElements[index2]);
   39.85 +  index2++;
   39.86 +
   39.87 +
   39.88 +  font->SetScaleX(ScaleFontX*0.6);
   39.89 +  font->SetScaleY(ScaleFontY*0.6);
   39.90 +
   39.91 +  designElements[index2].Init(0);
   39.92 +  designElements[index2].position.Init(-(NbCharsText1*font->SizeOfCharX()/2),PosYText1-40,0);
   39.93 +  designElements[index2].target.Init(designElements[index2].position);
   39.94 +  designElements[index2].text=text1[3];
   39.95 +  designElements[index2].endLife=1e5;
   39.96 +  designElements[index2].factor=0;
   39.97 +  designElements[index2].alphaFactor=0.2;
   39.98 +  designElements[index2].start=9.2;
   39.99 +  designElements[index2].alpha=0;
  39.100 +  designElements[index2].scaley=ScaleFontY*0.6;
  39.101 +  designElements[index2].scalex=ScaleFontX*0.6;
  39.102 +  design.AddElement(&designElements[index2]);
  39.103 +
  39.104 +
  39.105 +}
  39.106 +
  39.107 +void efxScreen0_t::Update() 
  39.108 +{
  39.109 +
  39.110 +  const float First=3.3;
  39.111 +  const float Second=6.2;
  39.112 +  const float Third=9.2;
  39.113 +  const int ElementToUpdate=12; // very bad :(
  39.114 +  float time=Timer->GetRealTime();
  39.115 +
  39.116 +  if (time>Second && time<Third)
  39.117 +    designElements[ElementToUpdate].alphaFactor=-0.15;
  39.118 +  else if (time>Third)
  39.119 +    designElements[ElementToUpdate].alphaFactor=0.2;
  39.120 +
  39.121 +
  39.122 +  design.Update();
  39.123 +}
  39.124 +
  39.125 +
  39.126 +void efxScreen0_t::MakeSync(float _offset,int _index,const char** text,int _nbChars,float StartY,float _scaleX,float _scaleY)
  39.127 +{
  39.128 +  const int NbDesignElements=3;
  39.129 +  const float StartX=-(font->SizeOfCharX()*_nbChars)/2; //-(11*16/2); // 11*16/2-16/2
  39.130 +  //const float StartY=0;
  39.131 +
  39.132 +  int index2;
  39.133 +  for (int i=0;i<NbDesignElements;i++) {
  39.134 +    index2=_index+i;
  39.135 +    designElements[index2].Init(0);
  39.136 +    designElements[index2].position.Init(StartX,StartY,100);
  39.137 +    designElements[index2].target.Init(StartX,StartY,0);
  39.138 +    designElements[index2].text=text[i];
  39.139 +    designElements[index2].endLife=1e5;
  39.140 +    designElements[index2].factor=5;
  39.141 +    designElements[index2].start=0;
  39.142 +    designElements[index2].alpha=1;
  39.143 +    designElements[index2].scaley=_scaleY;
  39.144 +    designElements[index2].scalex=_scaleX;
  39.145 +    design.AddElement(&designElements[index2]);
  39.146 +  }
  39.147 +
  39.148 +  designElements[_index+0].start=0.0+_offset;
  39.149 +  designElements[_index+1].start=0.58+_offset;
  39.150 +  designElements[_index+2].start=1.10+_offset;
  39.151 +}
  39.152 +
  39.153 +
  39.154 +
  39.155 +
  39.156 +
  39.157 +#ifndef NO_LOADER
  39.158 +
  39.159 +void efxScreen0_t::DrawLoader()
  39.160 +{
  39.161 +  const float BarHeight=64;
  39.162 +  const float BarSpace=-16;
  39.163 +  const float BarWidth=128;
  39.164 +  const float MaxBar=mth::Floor(RX/(BarWidth+BarSpace));
  39.165 +  const float MaxBarWidth=MaxBar*(BarWidth+BarSpace)-BarSpace;
  39.166 +  const float BarStartY=200;
  39.167 +  const float StartXCentered=(RX-MaxBarWidth)*0.5;
  39.168 +
  39.169 +  cmnPushMatrix();
  39.170 +  cmnSetPlanarView();
  39.171 +  loadingLevel=1.0;
  39.172 +  int nbElements=mth::Min(loadingLevel*MaxBar,MaxBar);
  39.173 +
  39.174 +  glColor3f(1,1,1);
  39.175 +  glEnable(GL_BLEND);
  39.176 +  glBlendFunc(GL_ONE,GL_ONE);
  39.177 +  for (int i=0;i<nbElements;i++) {
  39.178 +    if (i==0)
  39.179 +      txtBindTexture2d(textureStart,0);
  39.180 +    else if (i==MaxBar-1)
  39.181 +      txtBindTexture2d(textureEnd,0);
  39.182 +    else 
  39.183 +      txtBindTexture2d(textureCurrent,0);
  39.184 +
  39.185 +    glBegin(GL_QUADS);
  39.186 +    glTexCoord2f(0,0);
  39.187 +    glVertex2f(StartXCentered+i*(BarWidth+BarSpace),BarStartY);
  39.188 +
  39.189 +    glTexCoord2f(0,1);
  39.190 +    glVertex2f(StartXCentered+i*(BarWidth+BarSpace),BarStartY+BarHeight);
  39.191 +
  39.192 +    glTexCoord2f(1,1);
  39.193 +    glVertex2f(StartXCentered+i*(BarWidth+BarSpace)+BarWidth,BarStartY+BarHeight);
  39.194 +
  39.195 +    glTexCoord2f(1,0);
  39.196 +    glVertex2f(StartXCentered+i*(BarWidth+BarSpace)+BarWidth,BarStartY);
  39.197 +    glEnd();
  39.198 +    txtUnBindTexture2d(0);
  39.199 +  }
  39.200 +
  39.201 +  cmnPopMatrix();
  39.202 +}
  39.203 +#endif
  39.204 +
  39.205 +
  39.206 +
  39.207 +void efxScreen0_t::Draw()
  39.208 +{
  39.209 +  cmnSetFrustrum(90);
  39.210 +	cmnSetCamera( mth::Vector3_t( 0, 0, 100 ), mth::Vector3_t( 0 , 0, 0 ) );
  39.211 +
  39.212 +  //cmnDisplayBackground(backgroundTexture1,167,92,5,255,1);
  39.213 +  //cmnDisplayBackground(backgroundTexture2,167,92,5,255,2);
  39.214 +
  39.215 +  glDisable(GL_DEPTH_TEST);
  39.216 +  glDisable(GL_CULL_FACE);
  39.217 +  glEnable(GL_BLEND);
  39.218 +
  39.219 +  glBlendFunc(GL_ONE,GL_ONE);
  39.220 +  glColor4f(1,1,1,1);
  39.221 +  cmnDisplayBackground(backgroundTexture1,10,12,90,50,1);
  39.222 +  cmnDisplayBackground(backgroundTexture2,10,18,70,200,1);
  39.223 +
  39.224 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  39.225 +
  39.226 +  design.Draw();
  39.227 +
  39.228 +#ifndef NO_LOADER
  39.229 +  DrawLoader();
  39.230 +#endif
  39.231 +  
  39.232 +}
  39.233 +
  39.234 +
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/efx_screen0.h	Tue Nov 27 15:23:52 2007 +0100
    40.3 @@ -0,0 +1,57 @@
    40.4 +#ifndef EFX_SCREEN0_H
    40.5 +#define EFX_SCREEN0_H
    40.6 +
    40.7 +
    40.8 +#include "cmn_texture.h"
    40.9 +#include "efx_equa.h"
   40.10 +#include "efx_harmonics.h"
   40.11 +#include "cmn_design.h"
   40.12 +
   40.13 +
   40.14 +#define NO_LOADER
   40.15 +
   40.16 +
   40.17 +class efxScreen0_t
   40.18 +{
   40.19 +
   40.20 +  GLuint backgroundTexture2;
   40.21 +  GLuint backgroundTexture1;
   40.22 +
   40.23 +  cmnDesign_t design;
   40.24 +  cmnDesignElementFont_t* designElements;
   40.25 +//  cmnDesignElementTexturedQuad_t* designElements;
   40.26 +
   40.27 +
   40.28 +#ifndef NO_LOADER // no loading
   40.29 +  float loadingLevel;
   40.30 +  GLuint textureStart;
   40.31 +  GLuint textureCurrent;
   40.32 +  GLuint textureEnd;
   40.33 +
   40.34 +  void DrawLoader();
   40.35 +#endif
   40.36 +
   40.37 +  void InitDesign();
   40.38 +  void MakeSync(float _offset,int _index,const char** text,int _nbChars,float _y,float _scaleX,float _scaleY);
   40.39 +
   40.40 +
   40.41 +public:
   40.42 +
   40.43 +  efxScreen0_t();
   40.44 +
   40.45 +  void Init();
   40.46 +
   40.47 +  void Update();
   40.48 +
   40.49 +  void Draw();
   40.50 +
   40.51 +
   40.52 +#ifndef NO_LOADER // no loading
   40.53 +  void SetLoadLevel(float _level) {loadingLevel=_level;}
   40.54 +  float GetLoadLevel() { return loadingLevel;}
   40.55 +#endif
   40.56 +
   40.57 +};
   40.58 +
   40.59 +
   40.60 +#endif
   40.61 \ No newline at end of file
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/efx_screen1.cxx	Tue Nov 27 15:23:52 2007 +0100
    41.3 @@ -0,0 +1,508 @@
    41.4 +#include "efx_screen1.h"
    41.5 +#include "sys_assert.h"
    41.6 +#include "mth_vector3.h"
    41.7 +#include "gl_header.h"
    41.8 +#include "cmn_intro.h"
    41.9 +#include "cmn_design.h"
   41.10 +
   41.11 +
   41.12 +// sync
   41.13 +extern fxSync * sync;
   41.14 +
   41.15 +efxScreen1_t::efxScreen1_t()
   41.16 +{
   41.17 +  texture=0;
   41.18 +  equaResX=equaResY=0;
   41.19 +  mapOfNoise=0;
   41.20 +  equaCenter=0;
   41.21 +  equaTransition=false;
   41.22 +  equaTransitionFinished=false;
   41.23 +  equaAlpha=0;
   41.24 +  cameraRestoreAngle=-mth::PI/2;
   41.25 +}
   41.26 +
   41.27 +
   41.28 +void efxScreen1_t::Init()
   41.29 +{
   41.30 +
   41.31 +  internalTime=0;
   41.32 +
   41.33 +  // background init
   41.34 +  int size=256;
   41.35 +  float div=4.0/size;
   41.36 +  if (mapOfNoise)
   41.37 +    delete [] mapOfNoise;
   41.38 +  mapOfNoise=new uchar[size*size*4];
   41.39 +  texture=txtCreatePerlin2d(size,size,div,div,0.5,6,mapOfNoise);
   41.40 +
   41.41 +
   41.42 +  InitEquaLand(9,9,mapOfNoise,size,size);
   41.43 +
   41.44 +
   41.45 +
   41.46 +  // camera init
   41.47 +  const int CameraNbKeys=15;
   41.48 +  const float CameraKeyTime=3.0;
   41.49 +  cameraLookAt.Init(50,-15,0);
   41.50 +  cameraPosition.Init(-50.2,-8,95);
   41.51 +
   41.52 +  cameraLookAt.Init(50,0,15);
   41.53 +  cameraPosition.Init(-50.2,95,8);
   41.54 +  cameraUp.Init(0,0,-1);
   41.55 +
   41.56 +  cameraPath= new mth::Hermite_t(CameraNbKeys*2);
   41.57 +  cameraKeyData= new mth::HermiteKey_t[CameraNbKeys];
   41.58 +  mth::Vector3_t cpos[CameraNbKeys]= {
   41.59 +    cameraPosition,
   41.60 +    mth::Vector3_t(110,140,-190),
   41.61 +    mth::Vector3_t(130,130,-160),
   41.62 +    mth::Vector3_t(-130,150,-130),
   41.63 +    mth::Vector3_t(-160,120,-110),
   41.64 +    mth::Vector3_t(-190,160,50),
   41.65 +    mth::Vector3_t(-170,180,100),
   41.66 +    mth::Vector3_t(-130,140,140),
   41.67 +/*
   41.68 +    mth::Vector3_t(-140,150,170),
   41.69 +    mth::Vector3_t(-130,180,190),
   41.70 +    mth::Vector3_t(-120,160,150),
   41.71 +*/
   41.72 +    mth::Vector3_t(-110,100,120),
   41.73 +    mth::Vector3_t(-100,110,-110),
   41.74 +    mth::Vector3_t(-110,150,-150),
   41.75 +    mth::Vector3_t(110,250,-190),
   41.76 +    mth::Vector3_t(110,140,-190),
   41.77 +    mth::Vector3_t(130,130,-160),
   41.78 +    mth::Vector3_t(-160,120,-110),
   41.79 +  };
   41.80 +  for (int i=0;i<CameraNbKeys;i++) {
   41.81 +    cameraKeyData[i].Init(CameraKeyTime*i,cpos[i]);
   41.82 +    cameraPath->AddKey(&cameraKeyData[i]);
   41.83 +  }
   41.84 +
   41.85 +
   41.86 +  InitDesign();
   41.87 +}
   41.88 +
   41.89 +
   41.90 +void efxScreen1_t::InitDesign()
   41.91 +{
   41.92 +  const char* text1="morph";
   41.93 +  const int NbChars=strlen(text1);
   41.94 +  const float StartPositionX=-1000;
   41.95 +  const float SpaceElement=30;
   41.96 +  const float StartYDesign=600-350;
   41.97 +  const float QuadSizeX = (RX-SpaceElement*NbChars)/NbChars;///150;
   41.98 +  const float QuadSizeY = 150;
   41.99 +  const float PositionXElement=0;
  41.100 +  const float TimeStartIntro=10;
  41.101 +  const float AngleTexture=90; //45
  41.102 +
  41.103 +  nbDesignElements=24;
  41.104 +  design.Init(nbDesignElements);
  41.105 +  designElements=new cmnDesignElementTexturedQuad_t[nbDesignElements];
  41.106 +
  41.107 +  glColor4f(1,1,1,1);
  41.108 +
  41.109 +  font->SetScale(1);
  41.110 +  for (int i=0;i<NbChars;i++) {
  41.111 +
  41.112 +    designElements[i].texture=txtCreateObliqueTexture(256,128,AngleTexture,0,text1[i]);
  41.113 +    designElements[i].Init(TimeStartIntro+i*0.1);
  41.114 +    designElements[i].position.Init(StartPositionX,StartYDesign,0);
  41.115 +    designElements[i].target.Init(PositionXElement+SpaceElement/2+i*(QuadSizeX+SpaceElement),StartYDesign,0);
  41.116 +    designElements[i].factor=20;
  41.117 +    designElements[i].sizex=QuadSizeX;
  41.118 +    designElements[i].sizey=QuadSizeY;
  41.119 +    designElements[i].fadeAlpha=1.0;
  41.120 +
  41.121 +    design.AddElement(&designElements[i]);
  41.122 +  }
  41.123 +}
  41.124 +
  41.125 +
  41.126 +void efxScreen1_t::DisplayDesign()
  41.127 +{
  41.128 +  cmnPushMatrix();
  41.129 +
  41.130 +  cmnSetPlanarView();
  41.131 +
  41.132 +  glDisable(GL_CULL_FACE);
  41.133 +  glDisable(GL_DEPTH_TEST); 
  41.134 +  glEnable(GL_BLEND);
  41.135 +
  41.136 +//  glBlendFunc(GL_ONE,GL_ONE);
  41.137 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  41.138 +
  41.139 +  design.Draw();
  41.140 +
  41.141 +
  41.142 +
  41.143 +  cmnPopMatrix();
  41.144 +  glMatrixMode(GL_MODELVIEW);
  41.145 +
  41.146 +}
  41.147 +
  41.148 +
  41.149 +
  41.150 +
  41.151 +
  41.152 +void efxScreen1_t::InitEquaLand(int _sizeX,int _sizeY,uchar* _map,int _mapSizeX,int _mapSizeY)
  41.153 +{
  41.154 +  SYS_ASSERT(_map);
  41.155 +
  41.156 +  equaResX=_sizeX;
  41.157 +  equaResY=_sizeY;
  41.158 +
  41.159 +  const int EquaBoxRes=8;
  41.160 +  const float Mapdu=_mapSizeX*1.0/(1.0*equaResX*EquaBoxRes);
  41.161 +  const float Mapdv=_mapSizeY*1.0/(1.0*equaResY*EquaBoxRes);
  41.162 +  const float ScaleDepth=0.5;
  41.163 +  const float SizeOfEquaBoxX=(EQUA_SIZE_X+EQUA_SIZE_SPACE)*EquaBoxRes;
  41.164 +  const float SizeOfEquaBoxY=(EQUA_SIZE_Y+EQUA_SIZE_SPACE)*EquaBoxRes;
  41.165 +  const float TotalSizeX=SizeOfEquaBoxX*equaResX;
  41.166 +  const float TotalSizeY=SizeOfEquaBoxY*equaResY;
  41.167 +
  41.168 +  // equa init
  41.169 +  fxEqua=new efxEqua_t[equaResX*equaResY];
  41.170 +  for (int j=0;j<equaResY;j++)
  41.171 +    for (int i=0;i<equaResX;i++) {
  41.172 +
  41.173 +      float positionX=i*(SizeOfEquaBoxX)-TotalSizeX*0.5;
  41.174 +      float positionY=j*(SizeOfEquaBoxY)-TotalSizeY*0.5;
  41.175 +
  41.176 +      fxEqua[i+j*equaResX].Init(EquaBoxRes);
  41.177 +      fxEqua[i+j*equaResX].SetPosition(positionX,positionY,0);
  41.178 +      for (int jj=0;jj<fxEqua[i+j*equaResX].ResY();jj++)
  41.179 +        for( int ii = 0; ii < fxEqua[i+j*equaResX].ResX(); ii++ ) {
  41.180 +          int u,v;
  41.181 +          u=i*EquaBoxRes+ii;
  41.182 +          v=j*EquaBoxRes+jj;
  41.183 +          u=(int)(u*1.0*Mapdu);
  41.184 +          v=(int)(v*1.0*Mapdv);
  41.185 +          float texel=(float)(_map[(u+v*_mapSizeX)*4+0])+(float)(_map[(u+v*_mapSizeX)*4+1])+(float)(_map[(u+v*_mapSizeX)*4+2]);
  41.186 +          texel/=3;
  41.187 +          fxEqua[i+j*equaResX].GetBox(ii+jj*EquaBoxRes).SetBaseLevel(texel*1.0*ScaleDepth);
  41.188 +          fxEqua[i+j*equaResX].GetBox(ii+jj*EquaBoxRes).SetDepthLevel(0);
  41.189 +        }
  41.190 +    }
  41.191 +
  41.192 +  equaLightIntensity=1.0;
  41.193 +
  41.194 +
  41.195 +  equaCenter=equaResX/2+equaResX/2*equaResX;
  41.196 +
  41.197 +#ifdef WAVE
  41.198 +  waveSimulation[0]=new float[equaResX*equaResY*EquaBoxRes*EquaBoxRes*2];
  41.199 +  waveSimulation[1]=&waveSimulation[0][equaResX*equaResY*EquaBoxRes*EquaBoxRes];
  41.200 +  memset(waveSimulation[0],0,sizeof(float)*equaResX*equaResY*EquaBoxRes*EquaBoxRes*2);
  41.201 +  currentWaveBuffer=0;
  41.202 +
  41.203 +  InitSimulation(0.02/*1.0/33*/,10.0,0.01,1);
  41.204 +#endif
  41.205 +
  41.206 +
  41.207 +}
  41.208 +
  41.209 +
  41.210 +#ifdef WAVE
  41.211 +void efxScreen1_t::InitSimulation(float _timeStep,float _speedOfWave,float _viscosity,float _sizeCell)
  41.212 +{
  41.213 +#define Sqr(a) (a*a)
  41.214 +
  41.215 +  speedOfWave=_speedOfWave;
  41.216 +  viscosity=_viscosity;
  41.217 +  timeStepSimulation=_timeStep;
  41.218 +  
  41.219 +  f1=Sqr(speedOfWave)*Sqr(timeStepSimulation)/Sqr(_sizeCell);
  41.220 +  f2=1.0/(viscosity*timeStepSimulation+2.0);
  41.221 +  k1=(4.0-8.0*f1)*f2;
  41.222 +  k2=(viscosity*timeStepSimulation-2)*f2;
  41.223 +  k3= 2.0*f1*f2;
  41.224 +#undef Sqr
  41.225 +}
  41.226 +
  41.227 +
  41.228 +void efxScreen1_t::Simulate()
  41.229 +{
  41.230 +  // we should use a threshold
  41.231 +  if (internalTime-counterSimulation<timeStepSimulation)
  41.232 +    return;
  41.233 +
  41.234 +  counterSimulation=internalTime;
  41.235 +
  41.236 +
  41.237 +  currentWaveBuffer^=1;
  41.238 +  float* c=waveSimulation[currentWaveBuffer];
  41.239 +  float* o=waveSimulation[(currentWaveBuffer+1)%2];
  41.240 +
  41.241 +  int sizex=equaResX*fxEqua[0].ResX();
  41.242 +  int jend=equaResY*fxEqua[0].ResY();
  41.243 +  int iend=sizex;
  41.244 +  int jindex;
  41.245 +  int jindexM1;
  41.246 +  int jindexA1;
  41.247 +  int jindexi;
  41.248 +
  41.249 +
  41.250 +//      o[j*nbCells+i][1]= 
  41.251 +//	k3* (c[(j-1)*nbCells+i][1] + c[(j+1)*nbCells+i][1] + c[j*nbCells+(i-1)][1] + c[j*nbCells+(i+1)][1]) +
  41.252 +//	k1* c[j*nbCells+i][1] + k2*o[j*nbCells+i][1];
  41.253 +
  41.254 +
  41.255 +  for (int j=1;j<jend-1;j++) {
  41.256 +    jindex=j*sizex;
  41.257 +    jindexM1=jindex-sizex;
  41.258 +    jindexA1=jindex+sizex;
  41.259 +    for (int i=1;i<iend-1;i++) {
  41.260 +      jindexi=jindex+i;
  41.261 +      o[jindexi]= k3* (c[jindexM1+i] + c[jindexA1+i] + c[jindex+(i-1)]+c[jindex+(i+1)]) +  k1* c[jindexi] + k2*o[jindexi];
  41.262 +    }
  41.263 +  }
  41.264 +}
  41.265 +
  41.266 +
  41.267 +void efxScreen1_t::UpdateWave()
  41.268 +{
  41.269 +
  41.270 +  Simulate();
  41.271 +
  41.272 +  int i,j;
  41.273 +
  41.274 +  // now update the equalizer
  41.275 +  float* o=waveSimulation[(currentWaveBuffer+1)%2];
  41.276 +  int sizex=equaResX*fxEqua[0].ResX();
  41.277 +  int sizey=equaResY*fxEqua[0].ResY();
  41.278 +  int resBoxX=fxEqua[0].ResX();
  41.279 +  int resBoxY=fxEqua[0].ResY();
  41.280 +  
  41.281 +  for (j=0;j<equaResY;j++)
  41.282 +    for (i=0;i<equaResX;i++) {
  41.283 +      for (int jj=0;jj<resBoxY;jj++)
  41.284 +        for( int ii = 0; ii < resBoxX; ii++ ) {
  41.285 +          fxEqua[i+j*equaResX].GetBox(ii+jj*resBoxX).SetDepthLevel(o[ (j*resBoxY+jj)*sizex+(i*resBoxX+ii)]);
  41.286 +        }
  41.287 +    }
  41.288 +}
  41.289 +
  41.290 +
  41.291 +void efxScreen1_t::UpdateWaveBuffer()
  41.292 +{
  41.293 +//  return ;
  41.294 +  int centerx=mth::Floor(equaResX*1.0/2);
  41.295 +  int centery=mth::Floor(equaResY*1.0/2);
  41.296 +
  41.297 +  int sizex=equaResX*fxEqua[0].ResX();
  41.298 +  int sizey=equaResY*fxEqua[0].ResY();
  41.299 +  int resBoxX=fxEqua[0].ResX();
  41.300 +  int resBoxY=fxEqua[0].ResY();
  41.301 +
  41.302 +  int boxRes=fxEqua[0].ResX();
  41.303 +
  41.304 +  float maxValue=0;
  41.305 +  float value=0;
  41.306 +  for (int j=0;j<resBoxY;j++)
  41.307 +    for (int i=0;i<resBoxX;i++) {
  41.308 +      value+=fxEqua[equaCenter].GetBox(i+j*resBoxX).level;
  41.309 +      maxValue=mth::Max(maxValue,fxEqua[equaCenter].GetBox(i+j*resBoxX).level);
  41.310 +    }
  41.311 +  value/=resBoxY*resBoxX;
  41.312 +//  waveSimulation[currentWaveBuffer][(centery*resBoxY+j)*sizex+(centerx*resBoxX+i)]=fxEqua[equaCenter].GetBox(i+j*resBoxX).level;
  41.313 +
  41.314 +//  for (j=0;j<resBoxY;j++)
  41.315 +//    for (int i=0;i<resBoxX;i++)
  41.316 +//      waveSimulation[currentWaveBuffer][(centery*resBoxY+j)*sizex+(centerx*resBoxX+i)]=value;
  41.317 +      waveSimulation[currentWaveBuffer][(centery*resBoxY+boxRes/2)*sizex+(centerx*resBoxX+boxRes/2)]=maxValue;
  41.318 +
  41.319 +}
  41.320 +
  41.321 +
  41.322 +#endif
  41.323 +
  41.324 +void efxScreen1_t::DrawEquaOnce(int _i/*,GLenum _mode*/)
  41.325 +{
  41.326 +  cmnPushMatrix();      
  41.327 +  fxEqua[_i].Draw(/*_mode*/);
  41.328 +  glTranslatef(1.5,1.5,1.5);
  41.329 +  fxEqua[_i].Draw(/*_mode*/);
  41.330 +  glTranslatef(-3,-3,-3);
  41.331 +  fxEqua[_i].Draw(/*_mode*/);
  41.332 +  cmnPopMatrix();      
  41.333 +}
  41.334 +
  41.335 +
  41.336 +
  41.337 +
  41.338 +void efxScreen1_t::DrawEquaFullExceptCenter()
  41.339 +{
  41.340 +  int add;
  41.341 +
  41.342 +  if (equaTransition && !equaTransitionFinished)
  41.343 +    add=2;
  41.344 +  else
  41.345 +    add=1;
  41.346 +
  41.347 +  for (int j=0;j<equaResY;j+=add)
  41.348 +    for (int i=0;i<equaResX;i+=add) {
  41.349 +      int index=i+j*equaResX;
  41.350 +      if (index!=equaCenter)
  41.351 +        DrawEquaOnce(index);
  41.352 +    }
  41.353 +}
  41.354 +
  41.355 +
  41.356 +
  41.357 +void efxScreen1_t::DrawEquaCenter()
  41.358 +{
  41.359 +  DrawEquaOnce(equaCenter);
  41.360 +}
  41.361 +
  41.362 +
  41.363 +
  41.364 +
  41.365 +
  41.366 +
  41.367 +void efxScreen1_t::Update()
  41.368 +{
  41.369 +
  41.370 +  const float EquaTransitionStart=6;
  41.371 +  const float EquaTransitionEnd=24.99-12.312; // from start
  41.372 +  const float EquaAlphaAdd=0.05;
  41.373 +  const float CameraRestoreUp=0.5; // value in radian/second
  41.374 +  const float TimeRefreshWave = 2.0;//8.0;
  41.375 +
  41.376 +  const float TimeStartDesign1 = 3.0;
  41.377 +
  41.378 +//  const mth::Vector3_t CameraInitialUp=mth::Vector3_t(0,0,-1);
  41.379 +
  41.380 +  internalTime+=Timer->GetFrameTime();
  41.381 +
  41.382 +#ifdef WAVE
  41.383 +  UpdateWave();
  41.384 +#endif
  41.385 +
  41.386 +	sync->SyncEqua();
  41.387 +
  41.388 +#ifdef WAVE
  41.389 +  // to test only
  41.390 +  static float test=0;
  41.391 +  test+=Timer->GetFrameTime();
  41.392 +  if (internalTime>EquaTransitionEnd && test>TimeRefreshWave) {
  41.393 +    test=0;
  41.394 +    UpdateWaveBuffer();
  41.395 +  }
  41.396 +#endif
  41.397 +
  41.398 +  //fxEqua->Update();
  41.399 +//  UpdateSpherical();
  41.400 +
  41.401 +//#if 0
  41.402 +
  41.403 +  if (internalTime>=EquaTransitionStart && internalTime<EquaTransitionEnd) {
  41.404 +    equaTransition=true;
  41.405 +    cameraRestoreAngle+=CameraRestoreUp*Timer->GetFrameTime();
  41.406 +  } else if (internalTime>EquaTransitionEnd) {
  41.407 +    equaTransition=false;
  41.408 +    equaTransitionFinished=true;
  41.409 +  }
  41.410 +
  41.411 +  if (internalTime>=EquaTransitionStart) {
  41.412 +    equaAlpha+=EquaAlphaAdd*Timer->GetFrameTime();
  41.413 +    equaAlpha=mth::Min(0.5,equaAlpha);
  41.414 +    cameraPath->GetData(internalTime-EquaTransitionStart,cameraPosition);
  41.415 +  }
  41.416 +
  41.417 +
  41.418 +
  41.419 +  cameraRestoreAngle=mth::Min(cameraRestoreAngle,0);
  41.420 +  cameraUp[0]=0;
  41.421 +  cameraUp[1]=mth::Cos(cameraRestoreAngle);
  41.422 +  cameraUp[2]=mth::Sin(cameraRestoreAngle);
  41.423 +
  41.424 +//  if (internalTime>=TimeStartDesign1)
  41.425 +    //UpdateDesign1();
  41.426 +  design.Update();
  41.427 +//#endif
  41.428 +}
  41.429 +
  41.430 +
  41.431 +
  41.432 +void efxScreen1_t::DrawEqua()
  41.433 +{
  41.434 +
  41.435 +  glEnable(GL_CULL_FACE);
  41.436 +  glDisable(GL_BLEND);
  41.437 +
  41.438 +  glColor3f(1,1,1);
  41.439 +
  41.440 +  glEnable(GL_LIGHTING);
  41.441 +  glEnable(GL_LIGHT0);
  41.442 +
  41.443 +  float light[4]={0.7,0,0.7,0};
  41.444 +  glLightfv(GL_LIGHT0,GL_POSITION,light);
  41.445 +
  41.446 +  equaLightIntensity=1;
  41.447 +
  41.448 +  light[0]=219.0/255*equaLightIntensity;
  41.449 +  light[1]=127.0/255*equaLightIntensity;
  41.450 +  light[2]=13.0/255*equaLightIntensity;
  41.451 +  light[3]=1.0;
  41.452 +  glLightfv(GL_LIGHT0,GL_DIFFUSE,light) ;
  41.453 +
  41.454 +  glEnable(GL_BLEND);
  41.455 +  glBlendFunc(GL_ONE,GL_ONE);
  41.456 +
  41.457 +
  41.458 +  DrawEquaCenter();
  41.459 +
  41.460 +  if (equaTransition  || equaTransitionFinished) {
  41.461 +    if (equaTransition && !equaTransitionFinished) {
  41.462 +      light[0]=1;
  41.463 +      light[1]=1;
  41.464 +      light[2]=1;
  41.465 +      light[3]=equaAlpha;
  41.466 +      glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  41.467 +      glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,light);
  41.468 +    }
  41.469 +  
  41.470 +    DrawEquaFullExceptCenter();
  41.471 +  }
  41.472 +
  41.473 +
  41.474 +  glDisable(GL_BLEND);
  41.475 +  glDisable(GL_LIGHT0);
  41.476 +  glDisable(GL_LIGHTING);
  41.477 +
  41.478 +  //cmnPopMatrix();
  41.479 +}
  41.480 +
  41.481 +
  41.482 +void efxScreen1_t::Draw()
  41.483 +{
  41.484 +  cmnSetFrustrum(121);
  41.485 +  cmnSetCamera( cameraPosition,cameraLookAt,cameraUp); // good camera on gf4
  41.486 +
  41.487 +
  41.488 +	DisplayBackground();
  41.489 +
  41.490 +  cmnPushGLState();
  41.491 +  glRotatef(-90,1,0,0); // to see the mesh as a human
  41.492 +  DrawEqua();
  41.493 +  cmnPopGLState();
  41.494 +
  41.495 +  DisplayDesign();
  41.496 +  //design.Draw();
  41.497 +
  41.498 +}
  41.499 +
  41.500 +
  41.501 +void efxScreen1_t::DisplayBackground()
  41.502 +{
  41.503 +
  41.504 +  glEnable(GL_BLEND);
  41.505 +  glBlendFunc(GL_ONE,GL_ONE);
  41.506 +
  41.507 +  cmnDisplayBackground(texture);
  41.508 +}
  41.509 +
  41.510 +
  41.511 +
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/efx_screen1.h	Tue Nov 27 15:23:52 2007 +0100
    42.3 @@ -0,0 +1,97 @@
    42.4 +#ifndef EFX_SCREEN1_H
    42.5 +#define EFX_SCREEN1_H
    42.6 +
    42.7 +
    42.8 +#include "cmn_texture.h"
    42.9 +#include "efx_equa.h"
   42.10 +#include "efx_harmonics.h"
   42.11 +#include "mth_hermite.h"
   42.12 +#include "cmn_design.h"
   42.13 +
   42.14 +// sync
   42.15 +#include "fxSync.h"
   42.16 +
   42.17 +#define WAVE
   42.18 +
   42.19 +class efxScreen1_t
   42.20 +{
   42.21 +  double internalTime;
   42.22 +
   42.23 +  GLuint texture;
   42.24 +  
   42.25 +  efxEqua_t* fxEqua;
   42.26 +  float equaLightIntensity;
   42.27 +  int equaResX;
   42.28 +  int equaResY;
   42.29 +  uchar* mapOfNoise;
   42.30 +  int equaCenter;
   42.31 +  bool equaTransition;
   42.32 +  bool equaTransitionFinished;
   42.33 +  float equaAlpha;
   42.34 +
   42.35 +  void InitDesign();
   42.36 +  void InitEquaLand(int _sizex,int sizey,uchar* _map,int _mapSizeX,int _mapSizeY);
   42.37 +  void DrawEquaOnce(int _i/*,GLenum _mode=GL_QUADS*/);
   42.38 +  void DrawEquaFullExceptCenter();
   42.39 +  void DrawEquaCenter();
   42.40 +
   42.41 +
   42.42 +#ifdef WAVE
   42.43 +  int currentWaveBuffer;
   42.44 +  float* waveSimulation[2];
   42.45 +  float speedOfWave;
   42.46 +  float viscosity;
   42.47 +  float timeStepSimulation;
   42.48 +  float counterSimulation;
   42.49 +  float f1;
   42.50 +  float f2;
   42.51 +  float k1;
   42.52 +  float k2;
   42.53 +  float k3;
   42.54 +
   42.55 +  void InitSimulation(float _timeStep,float _speedOfWave,float _viscosity,float _sizeCell);
   42.56 +  void Simulate();
   42.57 +  void UpdateWave();
   42.58 +  void UpdateWaveBuffer();
   42.59 +
   42.60 +#endif
   42.61 +
   42.62 +  // camera
   42.63 +  mth::Hermite_t* cameraPath;
   42.64 +  mth::HermiteKey_t* cameraKeyData;
   42.65 +  mth::Vector3_t cameraLookAt;
   42.66 +  mth::Vector3_t cameraPosition;
   42.67 +  mth::Vector3_t cameraUp;
   42.68 +  float cameraRestoreAngle;
   42.69 +  
   42.70 +
   42.71 +
   42.72 +  void DisplayBackground();
   42.73 +  void DrawEqua();
   42.74 +  void DisplayDesign();
   42.75 +
   42.76 +
   42.77 +
   42.78 +  cmnDesign_t design;
   42.79 +  cmnDesignElementTexturedQuad_t* designElements;
   42.80 +  int nbDesignElements;
   42.81 +
   42.82 +
   42.83 +public:
   42.84 +
   42.85 +  efxScreen1_t();
   42.86 +
   42.87 +
   42.88 +  void Init();
   42.89 +
   42.90 +  void Update();
   42.91 +  void Draw();
   42.92 +
   42.93 +  efxEqua_t * GetFxEqua() { return &fxEqua[equaCenter];}
   42.94 +  efxSpherical_t * GetFxSpherical() { return 0;}
   42.95 +
   42.96 +
   42.97 +};
   42.98 +
   42.99 +
  42.100 +#endif
  42.101 \ No newline at end of file
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/efx_screen2.cxx	Tue Nov 27 15:23:52 2007 +0100
    43.3 @@ -0,0 +1,661 @@
    43.4 +#include "efx_screen2.h"
    43.5 +#include "sys_assert.h"
    43.6 +#include "mth_vector3.h"
    43.7 +#include "gl_header.h"
    43.8 +#include "cmn_intro.h"
    43.9 +
   43.10 +// sync
   43.11 +extern fxSync * sync;
   43.12 +
   43.13 +efxScreen2_t::efxScreen2_t()
   43.14 +{
   43.15 +  textureForSpherical=0;
   43.16 +  spherical=0;
   43.17 +  currentShapeToMorph=0;
   43.18 +  morphFrac=0;
   43.19 +
   43.20 +
   43.21 +  stepDanceYTargetPosition=0;
   43.22 +  stepDanceDirection=0;
   43.23 +  toufForce.Init();
   43.24 +  internalTime=0;
   43.25 +  textureTouf=0;
   43.26 +
   43.27 +  endPart=false;
   43.28 +  restingTime=0;
   43.29 +
   43.30 +}
   43.31 +
   43.32 +
   43.33 +
   43.34 +
   43.35 +
   43.36 +void efxScreen2_t::InitDesign()
   43.37 +{                 //0123456789a
   43.38 +
   43.39 +  const int NbDesignElements=16;
   43.40 +  const float QuadSizeX = 100;
   43.41 +  const float QuadSizeY = 100;
   43.42 +  const float DelayStart=0.1;
   43.43 +  const float StartPositionX=-1000;
   43.44 +  const float OffsetY=0.14;
   43.45 +  const float ResizeElement = 0.1;
   43.46 +  const float Space = 0.8;
   43.47 +  const float baseColor[3]={0.1,0.1,0.1};
   43.48 +
   43.49 +  design.Init(NbDesignElements);
   43.50 +  designElements=new cmnDesignElementTexturedQuad_t[NbDesignElements];
   43.51 +
   43.52 +  GLuint tex=txtCreateTextureCircular(128,128,1.0);
   43.53 +
   43.54 +  float currentPosx=0;
   43.55 +  float currentPosy=0;
   43.56 +  float currentSizeX=QuadSizeX ;
   43.57 +  float currentSizeY=QuadSizeY ;
   43.58 +  int half=NbDesignElements/2;
   43.59 +  int index=0;
   43.60 +
   43.61 +  for (int i=0;i<half;i++) {
   43.62 +
   43.63 +    designElements[index+i].texture=tex;
   43.64 +    designElements[index+i].Init(
   43.65 +      3.0+i*0.1,
   43.66 +      mth::Vector3_t(StartPositionX,OffsetY*RY,0),
   43.67 +      mth::Vector3_t(currentPosx,OffsetY*RY,0),10);
   43.68 +
   43.69 +    designElements[index+i].sizex=currentSizeX;
   43.70 +    designElements[index+i].sizey=currentSizeY;
   43.71 +    designElements[index+i].Color(baseColor[0],baseColor[1],baseColor[2]);
   43.72 +    currentPosx+=currentSizeX*Space;
   43.73 +    currentSizeX=currentSizeX*(1.0-ResizeElement);
   43.74 +    currentSizeY=currentSizeY*(1.0-ResizeElement);
   43.75 +    design.AddElement(&designElements[index+i]);
   43.76 +  }
   43.77 +  index+=i;
   43.78 +
   43.79 +
   43.80 +  currentPosx=0;
   43.81 +  currentSizeX=QuadSizeX;
   43.82 +  currentSizeY=QuadSizeY ;
   43.83 +
   43.84 +  //currentPosy=RY-QuadSizeY;
   43.85 +  for (i=0;i<half;i++) {
   43.86 +    designElements[index+i].texture=tex;
   43.87 +    designElements[index+i].Init(
   43.88 +      3.0+i*0.1,
   43.89 +      mth::Vector3_t(-StartPositionX,RY-OffsetY*RY-currentSizeY,0),
   43.90 +      mth::Vector3_t(RX-currentPosx-currentSizeX,RY-OffsetY*RY-currentSizeY,0),10);
   43.91 +
   43.92 +    designElements[index+i].sizex=currentSizeX;
   43.93 +    designElements[index+i].sizey=currentSizeY;
   43.94 +    designElements[index+i].Color(baseColor[0],baseColor[1],baseColor[2]);
   43.95 +    currentPosx+=currentSizeX*Space;
   43.96 +    currentSizeX=currentSizeX*(1.0-ResizeElement);
   43.97 +    currentSizeY=currentSizeY*(1.0-ResizeElement);
   43.98 +    design.AddElement(&designElements[index+i]);
   43.99 +  }
  43.100 +
  43.101 +}
  43.102 +
  43.103 +
  43.104 +
  43.105 +
  43.106 +
  43.107 +void efxScreen2_t::Init()
  43.108 +{
  43.109 +  // Spherical harmonics meshs init
  43.110 +  int size=256;
  43.111 +  float div=1.0/size;
  43.112 +  textureForSpherical=txtCreatePerlin2d(size,size,div,div);
  43.113 +
  43.114 +  spherical=new efxSpherical_t;
  43.115 +#ifdef HIGHRES
  43.116 +  const int ResConfig=100;
  43.117 +#else
  43.118 +#ifdef MIDDLERES
  43.119 +  const int ResConfig=80;
  43.120 +#endif
  43.121 +#endif
  43.122 +  spherical->Init(7,ResConfig,20);
  43.123 +
  43.124 +  bool order=true;
  43.125 +  radius=150;
  43.126 +  spherical->Shape(6).Params(4,4,0,0,2,0,0,0);
  43.127 +  spherical->Shape(6).Generate(radius,order); // generate a shape with reverse normal
  43.128 +  spherical->Shape(5).Params(6,6,0,0,2,0,0,0);
  43.129 +  spherical->Shape(5).Generate(radius,order); // generate a shape with reverse normal
  43.130 +  spherical->Shape(4).Params(2,2,6,4,2,4,0,0);
  43.131 +  spherical->Shape(4).Generate(radius,order); // generate a shape with reverse normal
  43.132 +  spherical->Shape(3).Params(2,2,6,4,0,2,0,0);
  43.133 +  spherical->Shape(3).Generate(radius,order); // generate a shape with reverse normal
  43.134 +  spherical->Shape(2).Params(2,2,4,4,0,0,4,2);
  43.135 +  spherical->Shape(2).Generate(radius,order); // generate a shape with reverse normal
  43.136 +  spherical->Shape(1).Params(2,2,4,0,0,0,4,2);
  43.137 +  spherical->Shape(1).Generate(radius,order); // generate a shape with reverse normal
  43.138 +  spherical->Shape(0).Params(0,4,4,0,2,0,0,0);
  43.139 +  spherical->Shape(0).Generate(radius,order); // generate a shape with reverse normal
  43.140 +  
  43.141 +  spherical->SetTexture(textureForSpherical);
  43.142 +
  43.143 +
  43.144 +  // touf init
  43.145 +  InitToufs(5);
  43.146 +
  43.147 +
  43.148 +  // init path
  43.149 +//  path.Init(4096);
  43.150 +
  43.151 +
  43.152 +  // camera init
  43.153 +  const int CameraNbKeys=15;
  43.154 +  const float CameraKeyTime=1.5;
  43.155 +  camera.Init(0,0,-90);
  43.156 +  lookat.Init(0,0,0);
  43.157 +
  43.158 +  cameraPath= new mth::Hermite_t(CameraNbKeys*2);
  43.159 +  cameraKeyData= new mth::HermiteKey_t[CameraNbKeys];
  43.160 +  mth::Vector3_t cpos[CameraNbKeys]= {
  43.161 +    camera,
  43.162 +    mth::Vector3_t(10,10,-90),
  43.163 +    mth::Vector3_t(0,30,-60),
  43.164 +    mth::Vector3_t(-30,30,-30),
  43.165 +    mth::Vector3_t(-60,20,-10),
  43.166 +    mth::Vector3_t(-90,0,0),
  43.167 +    mth::Vector3_t(-70,-10,10),
  43.168 +    mth::Vector3_t(-50,-40,40),
  43.169 +    mth::Vector3_t(-40,-50,70),
  43.170 +    mth::Vector3_t(-30,-80,90),
  43.171 +    mth::Vector3_t(-20,-60,50),
  43.172 +    mth::Vector3_t(-10,-30,20),
  43.173 +    mth::Vector3_t(0,-10,-10),
  43.174 +    mth::Vector3_t(0,0,-50),
  43.175 +    mth::Vector3_t(0,0,-90)};
  43.176 +
  43.177 +  for (int i=0;i<CameraNbKeys;i++) {
  43.178 +    cameraKeyData[i].Init(CameraKeyTime*i,cpos[i]);
  43.179 +    cameraPath->AddKey(&cameraKeyData[i]);
  43.180 +  }
  43.181 +
  43.182 +  InitDesign();
  43.183 +
  43.184 +  scroller.Init(textureForSpherical);
  43.185 +  scroller.ScrollX(1);
  43.186 +  scroller.ScrollY(0.5);
  43.187 +}
  43.188 +
  43.189 +
  43.190 +
  43.191 +
  43.192 +void efxScreen2_t::GetRandomPos(float _rangeRandomRadius,float _distmin,const mth::Vector3_t& _fromPosition,mth::Vector3_t& _result)
  43.193 +{
  43.194 +  for (int j=0;j<100;j++) {
  43.195 +    _result.InitRandomVectorInBox(_rangeRandomRadius);
  43.196 +    if (_result.DistSqr(_fromPosition)>_distmin*_distmin && _result.DistSqr(_fromPosition)<150*150)
  43.197 +      break;
  43.198 +  }
  43.199 +}
  43.200 +
  43.201 +
  43.202 +void efxScreen2_t::InitToufs(int _nbToufs)
  43.203 +{
  43.204 +
  43.205 +#ifdef HIGHRES
  43.206 +  const int VToufsSection=12; //12; //15
  43.207 +  const int HToufsSection=12; //12; //15
  43.208 +  const int SToufsSection=10; //10;
  43.209 +#else
  43.210 +#ifdef MIDDLERES
  43.211 +  const int VToufsSection=11; //12; //15
  43.212 +  const int HToufsSection=11; //12; //15
  43.213 +  const int SToufsSection=9; //10;
  43.214 +#endif
  43.215 +#endif
  43.216 +
  43.217 +
  43.218 +  const float RandomDistFromMum=120;
  43.219 +  const float RandomMinDistFromMum=80;
  43.220 +//  const float RandomDistFromMum=50;
  43.221 +//  const float RandomMinDistFromMum=80;
  43.222 +  const float RandomMinimumDistForMum=10;
  43.223 +//  const float StepTimeOfKeyFrame=1.5;
  43.224 +  const float StepTimeOfKeyFrame=2.0;
  43.225 +//  const float StepTimeOfKeyFrame=3.0;
  43.226 +
  43.227 +  typedef mth::Hermite_t* Hptr_t;
  43.228 +  nbKeys=60;
  43.229 +
  43.230 +  nbToufs=_nbToufs;
  43.231 +  touffus=new efxTouf_t[nbToufs];
  43.232 +  SYS_ASSERT(touffus);
  43.233 +
  43.234 +  // use a spline for mum touf
  43.235 +  toufPaths=new Hptr_t[nbToufs];
  43.236 +
  43.237 +
  43.238 +  touffus[0].Init(VToufsSection,HToufsSection,SToufsSection,3.0); // mum touf is bigger than her children
  43.239 +  toufPaths[0]=new mth::Hermite_t(nbKeys*4);
  43.240 +  for (int i=1;i<nbToufs;i++) {
  43.241 +    touffus[i].Init(VToufsSection,HToufsSection,SToufsSection,3.0);
  43.242 +//    touffus[i].SetTint(0.2,0.2,0.7);
  43.243 +//    touffus[i].SetTint(239.0/255,150.0/255,26.0/255);
  43.244 +    touffus[i].SetTint(219.0/255,127.0/255,13.0/255);
  43.245 +    toufPaths[i]=new mth::Hermite_t(nbKeys*4);
  43.246 +  }
  43.247 +
  43.248 +  keyData=new mth::HermiteKey_t[nbKeys*nbToufs];
  43.249 +  float a[3];
  43.250 +  mth::Vector3_t tmpPos;
  43.251 +  mth::Vector3_t tmpPrevPos(0,0,0);
  43.252 +  mth::Vector3_t tmpPos2;
  43.253 +
  43.254 +  float minFromMum;
  43.255 +  float minForMum;
  43.256 +  float maxRadius;
  43.257 +  float stepTime;
  43.258 +  float currentTime=0;
  43.259 +  for (i=0;i<nbKeys-1;i++) {
  43.260 +    maxRadius=radius;
  43.261 +    minFromMum=RandomDistFromMum;
  43.262 +    minForMum=RandomMinimumDistForMum;
  43.263 +    stepTime=StepTimeOfKeyFrame;
  43.264 +
  43.265 +    // one key on two I made a small and a large step
  43.266 +    if (i%2==0) {
  43.267 +      maxRadius*=0.5;
  43.268 +      minForMum*=0.5;
  43.269 +      stepTime*=2;
  43.270 +    } else {
  43.271 +      maxRadius*=0.8;
  43.272 +      minForMum*=0.8;
  43.273 +      //stepTime*=2;
  43.274 +    }
  43.275 +
  43.276 +    GetRandomPos(maxRadius,minForMum,tmpPrevPos,tmpPos);
  43.277 +    tmpPrevPos=tmpPos;
  43.278 +
  43.279 +    keyData[i].Init(currentTime,tmpPos);
  43.280 +    toufPaths[0]->AddKey(&keyData[i]);
  43.281 +    for (int k=1;k<nbToufs;k++) {
  43.282 +      tmpPos2.InitRandomVectorInBox(minFromMum);
  43.283 +      GetRandomPos(minFromMum,minFromMum,tmpPrevPos,tmpPos2);
  43.284 +      keyData[i+k*nbKeys].Init(currentTime,tmpPos+tmpPos2);
  43.285 +      toufPaths[k]->AddKey(&keyData[i+k*nbKeys]);
  43.286 +    }
  43.287 +    currentTime+=stepTime;
  43.288 +
  43.289 +  }
  43.290 +
  43.291 +  toufStartMoving=1;
  43.292 +
  43.293 +  textureTouf=txtCreateTextureCircular(256,256,0.9,1);
  43.294 +}
  43.295 +
  43.296 +#if 0
  43.297 +void efxScreen2_t::DrawPath()
  43.298 +{
  43.299 +  glColor3f(1,1,1);
  43.300 +  glBegin(GL_LINE_STRIP);
  43.301 +  for (int i=0;i<path.NbCurrentVertexes();i++)
  43.302 +    glVertex3fv(path.GetReverseVertex(i));
  43.303 +  glEnd();
  43.304 +}
  43.305 +#endif
  43.306 +
  43.307 +
  43.308 +void efxScreen2_t::UpdateToufs()
  43.309 +{
  43.310 +  const float DragForceScale=0.4;
  43.311 +
  43.312 +  HandleToufs();
  43.313 +
  43.314 +  for (int i=0;i<nbToufs;i++) {
  43.315 +    touffus[i].ApplyForce(-touffus[i].Element().Velocity()*DragForceScale+toufForce); // apply a drag force
  43.316 +    touffus[i].Update(Timer->GetFrameTime());
  43.317 +  }
  43.318 +
  43.319 +  toufForce.Init();
  43.320 +
  43.321 +}
  43.322 +
  43.323 +
  43.324 +
  43.325 +
  43.326 +void efxScreen2_t::HandleToufs()
  43.327 +{
  43.328 +  const double WaitStart=1;
  43.329 +  const double TimeDanceStart=1;
  43.330 +  const double TimeDanceEnd=25;
  43.331 +  const double TimeMoveCameraStart=7;
  43.332 +  const double TimeMoveCameraEnd=86;
  43.333 +  const double TimeMoveToufsStart=12;
  43.334 +  const double TimeMoveToufsEnd=86;
  43.335 +
  43.336 +  const float DistFromMum=30;
  43.337 +
  43.338 +
  43.339 +  // fixe position at start
  43.340 +  if (internalTime<WaitStart) {
  43.341 +    touffus[0].Element().Position().Init();
  43.342 +    touffus[0].Element().Velocity().Init();
  43.343 +
  43.344 +    int nb=(nbToufs-1)/2;
  43.345 +    int index=1;
  43.346 +    float sign=1;
  43.347 +    for (int j=0;j<2;j++) {
  43.348 +      if (j==1)
  43.349 +        sign=-1;
  43.350 +      for (int i=0;i<nb;i++) {
  43.351 +        touffus[index].Element().Position().Init(sign*DistFromMum*(i+1),0,0);
  43.352 +        touffus[index].Element().Velocity().Init();
  43.353 +        index++;
  43.354 +      }
  43.355 +    }
  43.356 +
  43.357 +  } /* else if (internalTime>=TimeDanceStart && internalTime < TimeDanceEnd ) {
  43.358 +    sync->SyncSnareTouf();
  43.359 +    //HandleSnareSound();
  43.360 +  }*/
  43.361 +
  43.362 +  if (internalTime>=TimeMoveCameraStart && internalTime < TimeMoveCameraEnd)
  43.363 +    HandleCameraMoving(internalTime-TimeMoveCameraStart);
  43.364 +
  43.365 +  if (internalTime>=TimeMoveToufsStart && internalTime < TimeMoveToufsEnd ) {
  43.366 +    HandleToufsMoving(internalTime-TimeMoveToufsStart);
  43.367 +    HandleCameraTarget();
  43.368 +  }
  43.369 +
  43.370 +
  43.371 +
  43.372 +//  if (internalTime>WaitStart) {
  43.373 +    sync->SyncWindTouf();
  43.374 +    //HandleWindSound();
  43.375 +//  }
  43.376 +
  43.377 +
  43.378 +}
  43.379 +
  43.380 +
  43.381 +
  43.382 +
  43.383 +void efxScreen2_t::HandleWindSound()
  43.384 +{
  43.385 +  const float WindForce=600;
  43.386 +  const double WindTime=3;
  43.387 +  
  43.388 +#if 0
  43.389 +  static double time=0;
  43.390 +  time+=Timer->GetFrameTime();
  43.391 +  double nb=time/WindTime;
  43.392 +  int n= mth::Floor(nb);
  43.393 +
  43.394 +  mth::Vector3_t f;
  43.395 +  for (int i=0;i<n;i++) {
  43.396 +    f.InitRandomVectorInBox(5);
  43.397 +    f.Normalize();
  43.398 +    toufForce+=f*WindForce;
  43.399 +  }
  43.400 +  time=mth::Frac(nb)*WindTime;
  43.401 +#else
  43.402 +  mth::Vector3_t f;
  43.403 +  f.InitRandomVectorInBox(5);
  43.404 +  f.Normalize();
  43.405 +  toufForce+=f*WindForce;
  43.406 +#endif
  43.407 +
  43.408 +}
  43.409 +
  43.410 +
  43.411 +void efxScreen2_t::HandleCameraTarget()
  43.412 +{
  43.413 +  mth::Vector3_t cmin(1e5,1e5,1e5);
  43.414 +  mth::Vector3_t cmax(-cmin);
  43.415 +  for (int i=0;i<nbToufs;i++)
  43.416 +    for (int j=0;j<3;j++) {
  43.417 +      cmin[j]=mth::Min(cmin[j],touffus[0].Element().Position()[j]);
  43.418 +      cmax[j]=mth::Max(cmax[j],touffus[0].Element().Position()[j]);
  43.419 +    }
  43.420 +
  43.421 +  cmax-=cmin;
  43.422 +  cmin+=cmax*0.5;
  43.423 +  lookat=cmin;
  43.424 +}
  43.425 +
  43.426 +
  43.427 +void efxScreen2_t::HandleCameraMoving(double _time)
  43.428 +{
  43.429 +  mth::Vector3_t result;
  43.430 +  cameraPath->GetData(_time,result);
  43.431 +  camera=result;
  43.432 +}
  43.433 +
  43.434 +
  43.435 +
  43.436 +void efxScreen2_t::HandleToufsMoving(double _time)
  43.437 +{
  43.438 +
  43.439 +  // set up the first keyframe of splines
  43.440 +  if (toufStartMoving) {
  43.441 +    for (int k=0;k<nbToufs;k++)
  43.442 +      keyData[0+k*nbKeys].Data()=touffus[k].Element().Position();
  43.443 +    toufStartMoving=0;
  43.444 +  }
  43.445 +
  43.446 +
  43.447 +
  43.448 +  mth::Vector3_t result;
  43.449 +  mth::Vector3_t currentPos;
  43.450 +  mth::Vector3_t pos;
  43.451 +  for (int i=0;i<nbToufs;i++) {
  43.452 +    currentPos=touffus[i].Element().Position();
  43.453 +    toufPaths[i]->GetData(_time,result);
  43.454 +
  43.455 +    if (endPart) {
  43.456 +      result=currentPos+(camera-currentPos)*Timer->GetFrameTime()*1.0/restingTime;
  43.457 +    }
  43.458 +
  43.459 +    pos=(result-currentPos)*1.0/Timer->GetFrameTime();
  43.460 +    touffus[i].Element().Velocity(pos);
  43.461 +    touffus[i].Element().Position(result);
  43.462 +  }
  43.463 +
  43.464 +}
  43.465 +
  43.466 +
  43.467 +
  43.468 +
  43.469 +void efxScreen2_t::DrawParticle(float _r,
  43.470 +                                float _g,
  43.471 +                                float _b,
  43.472 +                                float _alpha,
  43.473 +                                int _i,
  43.474 +                                const mth::Vector3_t& _v0,
  43.475 +                                const mth::Vector3_t& _v1)
  43.476 +{
  43.477 +  glColor4f(_r,_g,_b,_alpha);
  43.478 +  glBegin(GL_QUADS);
  43.479 +  glTexCoord2f(0,0);
  43.480 +  glVertex3fv(touffus[_i].Element().Position()-_v0-_v1);
  43.481 +  glTexCoord2f(0,1);
  43.482 +  glVertex3fv(touffus[_i].Element().Position()+_v0-_v1);
  43.483 +  glTexCoord2f(1,1);
  43.484 +  glVertex3fv(touffus[_i].Element().Position()+_v0+_v1);
  43.485 +  glTexCoord2f(1,0);
  43.486 +  glVertex3fv(touffus[_i].Element().Position()-_v0+_v1);
  43.487 +  glEnd();
  43.488 +}
  43.489 +
  43.490 +
  43.491 +void efxScreen2_t::DrawToufs()
  43.492 +{
  43.493 +  const float ScaleColor=0.6;
  43.494 +  const float ScaleLine=10;
  43.495 +
  43.496 +#ifndef FINALE_RELEASE
  43.497 +  cmnPushMatrix();
  43.498 +  cmnSetPlanarView();
  43.499 +  font->Clear();
  43.500 +  font->Print("time %f\n",Timer->GetRealTime());
  43.501 +  cmnPopMatrix();
  43.502 +#endif
  43.503 +  glMatrixMode(GL_MODELVIEW);
  43.504 +
  43.505 +
  43.506 +  glEnable(GL_BLEND);
  43.507 +  glBlendFunc(GL_ONE,GL_ONE);
  43.508 +
  43.509 +#define USE_PARTICULE
  43.510 +
  43.511 +#ifdef USE_PARTICULE
  43.512 +  float m[16];
  43.513 +  glGetFloatv(GL_MODELVIEW_MATRIX,m);
  43.514 +  mth::Vector3_t v[4];
  43.515 +  v[0].Init(m[0],m[4],m[8]);
  43.516 +  v[1].Init(m[1],m[5],m[9]);
  43.517 +//  v[2].Init(m[2],m[6],m[10]);
  43.518 +  v[2]=v[0];
  43.519 +  v[3]=v[1];
  43.520 +  v[0]*=5;
  43.521 +  v[1]*=5;
  43.522 +  v[2]*=1.5;
  43.523 +  v[3]*=1.5;
  43.524 +
  43.525 +#endif
  43.526 +
  43.527 +  for (int i=0;i<nbToufs;i++) {
  43.528 +#if 0 // enable it for better GPU
  43.529 +    glEnable(GL_LINE_SMOOTH);
  43.530 +    float a=camera.Dist(touffus[i].Element().Position());
  43.531 +    glLineWidth(ScaleLine*1.0/a);
  43.532 +    touffus[i].Draw(ScaleColor);
  43.533 +    glLineWidth(0.5*ScaleLine*1.0/a);
  43.534 +    touffus[i].Draw(ScaleColor);
  43.535 +#else
  43.536 +    touffus[i].Draw(ScaleColor);
  43.537 +#endif
  43.538 +
  43.539 +#ifdef USE_PARTICULE // enable a particule for toufs
  43.540 +    // draw a srpite at the center of the toufs
  43.541 +    txtBindTexture2d(textureTouf,0);
  43.542 +    glDisable(GL_DEPTH_TEST);
  43.543 +#if 1
  43.544 +
  43.545 +    mth::Vector3_t color;
  43.546 +    if (i==0)
  43.547 +      color.Init(1,1,1);
  43.548 +    else
  43.549 +      color.Init(219.0/255,127.0/255,13.0/255);
  43.550 +  
  43.551 +    DrawParticle(color[0],color[1],color[2],1,i,v[2],v[3]);
  43.552 +    color*=0.5;
  43.553 +    DrawParticle(color[0],color[1],color[2],0.01,i,v[0],v[1]);
  43.554 +  
  43.555 +#else
  43.556 +    for (int t=0;t<4;t+=2) {
  43.557 +      glColor4f(0.5+t,0.5+t,0.5+t,0.01+t);
  43.558 +      glBegin(GL_QUADS);
  43.559 +      glTexCoord2f(0,0);
  43.560 +      glVertex3fv(touffus[i].Element().Position()-v[t+0]-v[t+1]);
  43.561 +      glTexCoord2f(0,1);
  43.562 +      glVertex3fv(touffus[i].Element().Position()+v[t+0]-v[t+1]);
  43.563 +      glTexCoord2f(1,1);
  43.564 +      glVertex3fv(touffus[i].Element().Position()+v[t+0]+v[t+1]);
  43.565 +      glTexCoord2f(1,0);
  43.566 +      glVertex3fv(touffus[i].Element().Position()-v[t+0]+v[t+1]);
  43.567 +      glEnd();
  43.568 +    }
  43.569 +#endif
  43.570 +    txtUnBindTexture2d(0);
  43.571 +    glEnable(GL_DEPTH_TEST);
  43.572 +#endif
  43.573 +  }
  43.574 +  
  43.575 +  glDisable(GL_BLEND);
  43.576 +}
  43.577 +
  43.578 +
  43.579 +
  43.580 +void efxScreen2_t::UpdateSpherical()
  43.581 +{
  43.582 +
  43.583 +  const float MorphAdd = 0.5;
  43.584 +  morphFrac+=MorphAdd *Timer->GetFrameTime();
  43.585 +  if (morphFrac>1.0) {
  43.586 +    morphFrac=0;
  43.587 +    currentShapeToMorph++;
  43.588 +  }
  43.589 +
  43.590 +  spherical->MakeMorph(currentShapeToMorph%spherical->NbShapes(),(currentShapeToMorph+1)%spherical->NbShapes(),morphFrac);
  43.591 +
  43.592 +}
  43.593 +
  43.594 +void efxScreen2_t::DrawSpherical()
  43.595 +{
  43.596 +  cmnPushMatrix();
  43.597 +  glShadeModel(GL_SMOOTH);
  43.598 +  txtBindTexture2d(textureForSpherical,0);
  43.599 +  spherical->MorphShape().Draw();
  43.600 +  txtUnBindTexture2d(0);
  43.601 +  cmnPopMatrix();
  43.602 +}
  43.603 +
  43.604 +
  43.605 +
  43.606 +void efxScreen2_t::Update()
  43.607 +{
  43.608 +  internalTime+=Timer->GetFrameTime();
  43.609 +
  43.610 +  UpdateSpherical();
  43.611 +  UpdateToufs();
  43.612 +  design.Update();
  43.613 +  scroller.Update();
  43.614 +}
  43.615 +
  43.616 +
  43.617 +void efxScreen2_t::Draw()
  43.618 +{
  43.619 +  cmnPushMatrix();
  43.620 +  cmnSetFrustrum(90);
  43.621 +
  43.622 +
  43.623 +  glEnable(GL_LIGHTING);
  43.624 +  glEnable(GL_LIGHT0);
  43.625 +
  43.626 +  float light[4]={0.0,0.0,1,0};
  43.627 +  glLightfv(GL_LIGHT0,GL_POSITION,light);
  43.628 +
  43.629 +//  light[0]=167.0/255;light[1]=92.0/255;light[2]=5.0/255;
  43.630 +  light[0]=33.0/255;light[1]=137.0/255;light[2]=255/255;
  43.631 +  glLightfv(GL_LIGHT0,GL_DIFFUSE,light) ;
  43.632 +
  43.633 +//  light[0]=167.0/2550;light[1]=92.0/2550;light[2]=5.0/2550;
  43.634 +  light[0]=0;light[1]=0;light[2]=0;
  43.635 +  glLightfv(GL_LIGHT0,GL_AMBIENT,light) ;
  43.636 +
  43.637 +  cmnSetCamera (camera,lookat);
  43.638 +
  43.639 +#ifndef _DEBUG
  43.640 +  DrawSpherical();
  43.641 +#endif
  43.642 +
  43.643 +  glDisable(GL_LIGHT0);
  43.644 +  glDisable(GL_LIGHTING);
  43.645 +
  43.646 +  DrawToufs();
  43.647 +
  43.648 +  //UpdatePath(); for debugging path of toufs
  43.649 +
  43.650 +  glDisable(GL_DEPTH_TEST);
  43.651 +  glColor4f(0.1,0.1,0.1,1);
  43.652 +  glEnable(GL_BLEND);
  43.653 +  glBlendFunc(GL_ONE,GL_ONE);
  43.654 +  cmnSetPlanarView();
  43.655 +  design.Draw();
  43.656 +
  43.657 +
  43.658 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  43.659 +  glColor4f(1,1,1,0.2);
  43.660 +  scroller.Draw();
  43.661 +
  43.662 +  cmnPopMatrix();
  43.663 +}
  43.664 +
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/efx_screen2.h	Tue Nov 27 15:23:52 2007 +0100
    44.3 @@ -0,0 +1,157 @@
    44.4 +#ifndef EFX_SCREEN2_H
    44.5 +#define EFX_SCREEN2_H
    44.6 +
    44.7 +
    44.8 +#include "cmn_texture.h"
    44.9 +#include "efx_harmonics.h"
   44.10 +#include "mth_vector2.h"
   44.11 +#include "efx_touf.h"
   44.12 +#include "mth_hermite.h"
   44.13 +
   44.14 +// Sync ...
   44.15 +#include "fxSync.h"
   44.16 +
   44.17 +
   44.18 +#if 0
   44.19 +class efxFollowPath_t
   44.20 +{
   44.21 +
   44.22 +  mth::Vector3_t* vertexes;
   44.23 +  int nbMaxElements;
   44.24 +  int indexVertexes;
   44.25 +  int nbVertexes;
   44.26 +public:
   44.27 +
   44.28 +  efxFollowPath_t(){vertexes=0;indexVertexes=0;nbVertexes=0;}
   44.29 +
   44.30 +  void Init(int _nbkeys) {
   44.31 +    if (vertexes)
   44.32 +      delete [] vertexes;
   44.33 +    vertexes=new mth::Vector3_t[_nbkeys];
   44.34 +    nbMaxElements=_nbkeys;
   44.35 +  }
   44.36 +
   44.37 +
   44.38 +  mth::Vector3_t* Vertexes() { return vertexes;}
   44.39 +
   44.40 +  void PushVertex(mth::Vector3_t& _v) { 
   44.41 +    vertexes[indexVertexes]=_v;
   44.42 +    indexVertexes=(indexVertexes+1)%nbMaxElements;
   44.43 +    nbVertexes=mth::Min(nbVertexes+1,nbMaxElements);;
   44.44 +
   44.45 +  }
   44.46 +
   44.47 +  int NbCurrentVertexes() { return nbVertexes;}
   44.48 +  int Index() { return indexVertexes;}
   44.49 +
   44.50 +  mth::Vector3_t& GetReverseVertex(int _index) {
   44.51 +    return vertexes[(nbMaxElements+indexVertexes-_index-1)%nbMaxElements];
   44.52 +  }
   44.53 +
   44.54 +};
   44.55 +
   44.56 +#endif
   44.57 +
   44.58 +
   44.59 +class efxScreen2_t
   44.60 +{
   44.61 +
   44.62 +  double internalTime;
   44.63 +
   44.64 +
   44.65 +  // spercial harmonics data
   44.66 +  GLuint textureForSpherical;
   44.67 +  efxSpherical_t* spherical;
   44.68 +  float radius; // infos used to know where to put the touffus family
   44.69 +  // internal update for spherical harmonics
   44.70 +  void UpdateSpherical();
   44.71 +
   44.72 +  // morph spherical
   44.73 +  float morphFrac;
   44.74 +  int currentShapeToMorph;
   44.75 +
   44.76 +
   44.77 +
   44.78 +  // toufs data
   44.79 +  efxTouf_t* touffus;
   44.80 +  int nbToufs;
   44.81 +  mth::Hermite_t** toufPaths;
   44.82 +  mth::HermiteKey_t* keyData;
   44.83 +  int nbKeys;
   44.84 +
   44.85 +  GLuint textureTouf;
   44.86 +  mth::Vector3_t toufForce;
   44.87 +
   44.88 +  float stepDanceYTargetPosition;
   44.89 +  int stepDanceDirection;
   44.90 +  bool toufStartMoving;
   44.91 +
   44.92 +  void InitToufs(int _nbToufs);
   44.93 +  void UpdateToufs();
   44.94 +  void SynchroniseToufs();
   44.95 +  void HandleToufs();
   44.96 +  //void HandleWindSound();
   44.97 +  //void HandleSnareSound();
   44.98 +  void HandleCameraMoving(double _time);
   44.99 +  void HandleToufsMoving(double _time);
  44.100 +  void HandleCameraTarget();
  44.101 +
  44.102 +
  44.103 +
  44.104 +  // path
  44.105 +//  efxFollowPath_t path;
  44.106 +//  void UpdatePath();
  44.107 +  void GetRandomPos(float _rangeRandomRadius,float _distmin,const mth::Vector3_t& _fromPosition,mth::Vector3_t& _result);
  44.108 +
  44.109 +  void DrawSpherical();
  44.110 +  void DrawToufs();
  44.111 +  void DrawPath();
  44.112 +
  44.113 +
  44.114 +  // camera 
  44.115 +  mth::Vector3_t camera;
  44.116 +  mth::Vector3_t lookat;
  44.117 +  mth::Hermite_t* cameraPath;
  44.118 +  mth::HermiteKey_t* cameraKeyData;
  44.119 +
  44.120 +
  44.121 +
  44.122 +  cmnDesign_t design;
  44.123 +  cmnDesignElementTexturedQuad_t* designElements;
  44.124 +  void InitDesign();
  44.125 +
  44.126 +  cmnDesignScroller_t scroller;
  44.127 +
  44.128 +
  44.129 +
  44.130 +  void DrawParticle(float _r,
  44.131 +                    float _g,
  44.132 +                    float _b,
  44.133 +                    float _alpha,
  44.134 +                    int _i,
  44.135 +                    const mth::Vector3_t& _v0,
  44.136 +                    const mth::Vector3_t& _v1);
  44.137 +
  44.138 +
  44.139 +
  44.140 +
  44.141 +  bool endPart;
  44.142 +  float restingTime;
  44.143 +
  44.144 +
  44.145 +public:
  44.146 +
  44.147 +  efxScreen2_t();
  44.148 +
  44.149 +  void Init();
  44.150 +  void Update();
  44.151 +  void Draw();
  44.152 +  void SetEnd(float _restingTime) { endPart=true; restingTime=_restingTime;}
  44.153 +  bool SetEnd() { return endPart;}
  44.154 +
  44.155 +//  void HandleSnareSound();
  44.156 +  void HandleWindSound();
  44.157 +};
  44.158 +
  44.159 +
  44.160 +#endif
  44.161 \ No newline at end of file
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/efx_screen3.cxx	Tue Nov 27 15:23:52 2007 +0100
    45.3 @@ -0,0 +1,540 @@
    45.4 +#include "efx_screen3.h"
    45.5 +#include "sys_assert.h"
    45.6 +#include "mth_vector3.h"
    45.7 +#include "gl_header.h"
    45.8 +#include "cmn_intro.h"
    45.9 +#include "mth_quaternion.h"
   45.10 +
   45.11 +extern fxSync * sync;
   45.12 +
   45.13 +#define END_PART_OF_RUBBER 39
   45.14 +
   45.15 +const float ColorMesh[]={167.0/255,92.0/255,5.0/255,1};
   45.16 +
   45.17 +static const char* Greetz[]={
   45.18 +//"---------------- ----------------"
   45.19 +
   45.20 +//"            2004",
   45.21 +//"       sota",
   45.22 +//"[ SYNrJ ]",0};
   45.23 +
   45.24 +	" by syn[rj]",
   45.25 +	"Morph",
   45.26 +	"",
   45.27 +  "",
   45.28 +  "",
   45.29 +  "",0 };
   45.30 +
   45.31 +
   45.32 +static const char* GreetzList[]={
   45.33 +  "analogik",
   45.34 +  "bypass",
   45.35 +  "calodox",
   45.36 +  "deathless",
   45.37 +  "conspiracy",
   45.38 +  "condense",
   45.39 +  "cryonics",
   45.40 +  "eldorado",
   45.41 +  "equinox",
   45.42 +  "excess",
   45.43 +  "fairlight",
   45.44 +  "farbraush",
   45.45 +  "hansa",
   45.46 +  "haujobb",
   45.47 +  "inf",
   45.48 +  "kewlers",
   45.49 +  "kolor",
   45.50 +  "mankind",
   45.51 +  "mfx",
   45.52 +  "moppi",
   45.53 +  "nomad",
   45.54 +  "tpolm",
   45.55 +  "orange juice",
   45.56 +  "scenemusic",
   45.57 +  "scoopex",
   45.58 +  "razor 1911",
   45.59 +  0};
   45.60 +
   45.61 +
   45.62 +efxScreen3_t::efxScreen3_t()
   45.63 +{
   45.64 +  internalTime=0;
   45.65 +  currentShapeToMorph=0;
   45.66 +  morphFrac=0;
   45.67 +  rub=0;
   45.68 +  rubTexture=0;
   45.69 +  backGroundTexture=0;
   45.70 +  backGroundTexture2=0;
   45.71 +  waitingRubber=10;
   45.72 +  rubberAngle=-240;
   45.73 +  rubberTransition=true;
   45.74 +  rubberTransformPart2=false;
   45.75 +  Effect3StartInitialized=false;
   45.76 +}
   45.77 +
   45.78 +void efxScreen3_t::Init()
   45.79 +{
   45.80 +  // make a background
   45.81 +  int size=256;
   45.82 +  float div=4.0/size;
   45.83 +  backGroundTexture=txtCreatePerlin2d(size,size,div,div,0.8,10);
   45.84 +  backGroundTexture2=txtCreateGrid(size,size,8,0.2);
   45.85 +
   45.86 +
   45.87 +
   45.88 +  // count greetz list
   45.89 +  nbGreetz=0;
   45.90 +  nbLetters=0;
   45.91 +  while (GreetzList[nbGreetz]!=0) {
   45.92 +    nbLetters+=strlen(GreetzList[nbGreetz]);
   45.93 +    nbGreetz++;
   45.94 +  }
   45.95 +//  nbGreetz--;
   45.96 +
   45.97 +
   45.98 +  // init rubber
   45.99 +  InitRubbers(2);
  45.100 +
  45.101 +  // must be called after InitRubber because there is a dependance
  45.102 +  InitDesign();
  45.103 +}
  45.104 +
  45.105 +
  45.106 +
  45.107 +
  45.108 +void efxScreen3_t::InitDesign()
  45.109 +{                 //0123456789a
  45.110 +
  45.111 +  const int ResYRub=rub->MorphShape().ResY();
  45.112 +
  45.113 +  SYS_ASSERT(rub);
  45.114 +
  45.115 +
  45.116 +  design.Init(ResYRub*2+nbGreetz);
  45.117 +
  45.118 +
  45.119 +  /// exit the rubber
  45.120 +  const float EndPartOfRubber=END_PART_OF_RUBBER+1    ;
  45.121 +  const float EndPartOfRubberAlpha=END_PART_OF_RUBBER;
  45.122 +  const float EndPartOfRubberOffset=0.01;
  45.123 +  designElementsRubber=new cmnDesignElementRubberEnd_t[ResYRub];
  45.124 +
  45.125 +  for (int i=0;i<ResYRub;i++) {
  45.126 +    designElementsRubber[i].position.Init();
  45.127 +    designElementsRubber[i].target.InitRandomVectorInBox(100);
  45.128 +    designElementsRubber[i].target.Normalize();
  45.129 +    designElementsRubber[i].alpha=1;
  45.130 +    designElementsRubber[i].target*=100;
  45.131 +    designElementsRubber[i].Init(EndPartOfRubber+EndPartOfRubberOffset*i,designElementsRubber[i].position,designElementsRubber[i].target,1);
  45.132 +    design.AddElement(&designElementsRubber[i]);
  45.133 +  }
  45.134 +
  45.135 +  designElementsRubberAlpha=new cmnDesignElementRubberEnd_t[ResYRub];
  45.136 +  for (i=0;i<ResYRub;i++) {
  45.137 +    designElementsRubberAlpha[i].position.Init();
  45.138 +    designElementsRubberAlpha[i].alpha=1;
  45.139 +    designElementsRubberAlpha[i].target.Init();
  45.140 +    designElementsRubberAlpha[i].Init(EndPartOfRubberAlpha+EndPartOfRubberOffset*i,designElementsRubberAlpha[i].position,designElementsRubberAlpha[i].target,1);
  45.141 +    design.AddElement(&designElementsRubberAlpha[i]);
  45.142 +  }
  45.143 +
  45.144 +
  45.145 +  const float StartTimeGreetz=15;
  45.146 +  const float StepTimeGreetz=1.0;
  45.147 +  const float StartGreetzPositionX=-90;
  45.148 +  const float StartGreetzPositionY=-65;
  45.149 +  const int nbLinesPerPass=13;
  45.150 +  //const float StepTimeGreetz=0.5;
  45.151 +
  45.152 +  font->SetScale(0.6);
  45.153 +
  45.154 +  designElementsFont=new cmnDesignElementFont_t[nbGreetz];
  45.155 +  float currentTimeToadd=0;
  45.156 +  for (i=0;i<nbGreetz;i++) {
  45.157 +    int modulex=(i%2?0:1)*10;
  45.158 +    designElementsFont[i].position.Init(StartGreetzPositionX+modulex,StartGreetzPositionY+(i%nbLinesPerPass)*font->SizeOfCharY(),100);
  45.159 +    designElementsFont[i].target.Init(StartGreetzPositionX+modulex,StartGreetzPositionY+(i%nbLinesPerPass)*font->SizeOfCharY(),0);
  45.160 +    designElementsFont[i].endLife=100.0;
  45.161 +    designElementsFont[i].alpha=1.0;
  45.162 +    designElementsFont[i].scalex=0.6;
  45.163 +    designElementsFont[i].scaley=0.6;
  45.164 +    designElementsFont[i].alphaFactor=-0.05;
  45.165 +    designElementsFont[i].text=GreetzList[i];
  45.166 +    designElementsFont[i].Init(1e6+StartTimeGreetz+i*StepTimeGreetz+currentTimeToadd); 
  45.167 +    if ((i+1)%nbLinesPerPass==0)
  45.168 +      currentTimeToadd+=0.3;
  45.169 +    design.AddElement(&designElementsFont[i]);
  45.170 +  }
  45.171 +}
  45.172 +
  45.173 +
  45.174 +
  45.175 +void efxScreen3_t::InitRubbers(int _nbShapes)
  45.176 +{
  45.177 +
  45.178 +  const int NbLigneByMap=3;
  45.179 +  const int SizeOfGenerateMap=256;
  45.180 +
  45.181 +#ifdef HIGHRES
  45.182 +  const int RubberResolutionX=256;
  45.183 +  const int RubberResolutionY=256;
  45.184 +#else
  45.185 +#ifdef MIDDLERES
  45.186 +  const int RubberResolutionX=190;
  45.187 +  const int RubberResolutionY=210;
  45.188 +#endif
  45.189 +#endif
  45.190 +
  45.191 +
  45.192 +  
  45.193 +  
  45.194 +  if (rubTexture)
  45.195 +    glDeleteTextures(1,&rubTexture);
  45.196 +  int size=256;
  45.197 +  float div=1.0/size;
  45.198 +  rubTexture=txtCreatePerlin2d(size,size,div,div,1.0,6);
  45.199 +
  45.200 +  rub=new efxRub_t;
  45.201 +  rub->Init(_nbShapes,RubberResolutionX,RubberResolutionY);
  45.202 +  rub->SetTexture(rubTexture);
  45.203 +  //rub->GenerateRandom(256,256,40,180);
  45.204 +
  45.205 +  int nbTexts=0;
  45.206 +  while (Greetz[nbTexts]!=0)
  45.207 +    nbTexts++;
  45.208 +  //nbTexts--;
  45.209 +
  45.210 +  int nb=mth::Floor(nbTexts*1.0/NbLigneByMap);
  45.211 +  int maxShape=mth::Min(nb,_nbShapes);
  45.212 +  int i=0;
  45.213 +  for (i=0;i<maxShape;i++)
  45.214 +    rub->Generate(SizeOfGenerateMap,SizeOfGenerateMap,40,180,i,&Greetz[i*NbLigneByMap],NbLigneByMap);
  45.215 +  
  45.216 +  int nb2=nbTexts-(nb*NbLigneByMap);
  45.217 +  if (nb2>0 && maxShape-nb>0)
  45.218 +    rub->Generate(SizeOfGenerateMap,SizeOfGenerateMap,40,180,i,&Greetz[nb*NbLigneByMap],nb2);
  45.219 +
  45.220 +
  45.221 +
  45.222 +  translateYrubber=new mth::Vector3_t[RubberResolutionY];
  45.223 +  float minRadius=20;
  45.224 +
  45.225 +  for ( i=0;i<RubberResolutionY;i++) {
  45.226 +retry:
  45.227 +    translateYrubber[i].InitRandomVectorInBox(25);
  45.228 +    translateYrubber[i][1]=0;
  45.229 +    if (translateYrubber[i].MagSqr()>1e-4)
  45.230 +      translateYrubber[i].Normalize();
  45.231 +    else
  45.232 +      goto retry;
  45.233 +    translateYrubber[i][2]=mth::Abs(translateYrubber[i][2]);
  45.234 +    translateYrubber[i]*=minRadius+i;
  45.235 +  }
  45.236 +
  45.237 +  rubberTransitionAlpha=new float[RubberResolutionY];
  45.238 +  rubberEffect1Angle=new float[RubberResolutionY];
  45.239 +  rubberEffect2Translation=new float[RubberResolutionY];
  45.240 +  for (i=0;i<RubberResolutionY;i++) {
  45.241 +    rubberTransitionAlpha[i]=0;
  45.242 +    rubberEffect1Angle[i]=0;
  45.243 +    rubberEffect2Translation[i]=0;
  45.244 +  }
  45.245 +  rubberIndexEffect2=0;
  45.246 +  rubberIndexEffect1=0;
  45.247 +
  45.248 +}
  45.249 +
  45.250 +
  45.251 +
  45.252 +void efxScreen3_t::UpdateRubbers()
  45.253 +{
  45.254 +  const float MorphAdd = 2.5;
  45.255 +  const float StartPosRubber = 12.0;
  45.256 +  const float TranslateAdd = 1.0;
  45.257 +  const float TranslateOffsetY = 1.0;
  45.258 +  const float RotationAdd = -15.0;
  45.259 +  const float RubberMaxRadiusTransition=20; // voir dans initRubbers
  45.260 +  const float MaxRadiusOfAcylinder=RubberMaxRadiusTransition+rub->MorphShape().ResY();
  45.261 +  const float TransitionAdd = 20;
  45.262 +  const float TimeRubberStart = 1;
  45.263 +  const float TimeRubberTransitionEnd = TimeRubberStart+MaxRadiusOfAcylinder/TransitionAdd ;
  45.264 +  const float TimeRubberWait =mth::Abs(/*375.0*/90.0/RotationAdd) ;
  45.265 +
  45.266 +  const float BaseDistBlend = 5.0;
  45.267 +  const float BaseDistBlendSqr = 1.0/(BaseDistBlend*BaseDistBlend);
  45.268 +  const float BaseMinimumBlend = 0.15;
  45.269 +  const float AlphaDelay=0.5;
  45.270 +  const float AlphaVariablePartTransition = 0.15f;
  45.271 +
  45.272 +  const float TimeRubberEffect1Start  = TimeRubberTransitionEnd+5; //+0.5;
  45.273 +  const float TimeRubberEffect1End  = TimeRubberEffect1Start+15;
  45.274 +  const float RotationEffect1Add = -2.0;
  45.275 +  const float RotationEffect1AddPerY = -0.05;
  45.276 +
  45.277 +  const float TimeRubberEffect2Start  = TimeRubberEffect1Start+3.5;//TimeRubberTransitionEnd+4;
  45.278 +  const float TimeRubberEffect2End  = TimeRubberEffect1Start+15;
  45.279 +  const float TranslationEffect2Add = -2.0;
  45.280 +  const float TranslationEffect2AddPerY = -0.1;
  45.281 +
  45.282 +  const float TimeAttenuateTransformStart = mth::Min(TimeRubberEffect1Start,TimeRubberEffect2Start)+(mth::Max(TimeRubberEffect2End,TimeRubberEffect1End)-mth::Min(TimeRubberEffect1Start,TimeRubberEffect2Start))*0.75;
  45.283 +  const float TimeAttenuateTransformEnd = mth::Max(TimeRubberEffect2End,TimeRubberEffect1End)+15;
  45.284 +
  45.285 +
  45.286 +  const float TimeRubberEffect3Start  = END_PART_OF_RUBBER;//TimeAttenuateTransformEnd-5;
  45.287 +  const float TimeRubberEffect3End  = TimeRubberEffect3Start+10;
  45.288 +
  45.289 +
  45.290 +  if (internalTime>=TimeRubberStart && internalTime<TimeRubberTransitionEnd) {
  45.291 +
  45.292 +    float dt=Timer->GetFrameTime();
  45.293 +    float factor;
  45.294 +    mth::Vector3_t n;
  45.295 +    int jend=rub->MorphShape().ResY();
  45.296 +    for (int j=0;j<jend-1;j++) {
  45.297 +      n=translateYrubber[j];
  45.298 +      factor=n.MagSqr();
  45.299 +      if (factor>1e-1)
  45.300 +        n*=1.0/mth::Sqrt(factor);
  45.301 +
  45.302 +      if ( internalTime > TimeRubberStart+(RubberMaxRadiusTransition+j)/TransitionAdd) {
  45.303 +        translateYrubber[j].Init();
  45.304 +        rubberTransitionAlpha[j]+=AlphaDelay*Timer->GetFrameTime();
  45.305 +      } else {
  45.306 +        translateYrubber[j]+=n*(-TransitionAdd*dt);
  45.307 +        rubberTransitionAlpha[j]=BaseMinimumBlend + mth::Max(0,AlphaVariablePartTransition-translateYrubber[j].MagSqr()*BaseDistBlendSqr);
  45.308 +      }
  45.309 +
  45.310 +    
  45.311 +    }
  45.312 +
  45.313 +  } else {
  45.314 +    
  45.315 +    if (internalTime>=TimeRubberTransitionEnd && rubberTransition) {
  45.316 +      rubberTransition=false;
  45.317 +      waitingRubber=TimeRubberWait;
  45.318 +    }
  45.319 +
  45.320 +    if (waitingRubber>0)
  45.321 +      waitingRubber-=Timer->GetFrameTime();
  45.322 +    else
  45.323 +      morphFrac+=MorphAdd *Timer->GetFrameTime();
  45.324 +
  45.325 +    if (morphFrac>1.0) {
  45.326 +      morphFrac=0;
  45.327 +      currentShapeToMorph++;
  45.328 +      waitingRubber=TimeRubberWait;
  45.329 +    }
  45.330 +
  45.331 +    int resolutionY=rub->MorphShape().ResY();
  45.332 +    if (internalTime>=TimeRubberEffect1Start && internalTime<TimeAttenuateTransformEnd) {
  45.333 +      rubberTransformPart2=true;
  45.334 +      float prevVal=rubberEffect1Angle[rubberIndexEffect1];
  45.335 +      rubberIndexEffect1=(rubberIndexEffect1+1)%resolutionY;
  45.336 +      rubberEffect1Angle[rubberIndexEffect1]=(prevVal+3.14/4*mth::Sin(RotationEffect1Add*mth::Sin(Timer->GetRealTime())*Timer->GetFrameTime()));
  45.337 +    }
  45.338 +
  45.339 +    if (internalTime>=TimeRubberEffect2Start && internalTime<TimeAttenuateTransformEnd) {
  45.340 +      rubberTransformPart2=true;
  45.341 +      float prevVal=rubberEffect2Translation[rubberIndexEffect2];
  45.342 +      rubberIndexEffect2=(rubberIndexEffect2+1)%resolutionY;
  45.343 +      rubberEffect2Translation[rubberIndexEffect2]=(prevVal+10*TranslationEffect2Add*mth::Sin(Timer->GetRealTime())*Timer->GetFrameTime());
  45.344 +    }
  45.345 +
  45.346 +    if (internalTime>=TimeAttenuateTransformStart && internalTime<TimeAttenuateTransformEnd) {
  45.347 +      float factor=1-(internalTime-TimeAttenuateTransformStart)/(TimeAttenuateTransformEnd-TimeAttenuateTransformStart);
  45.348 +      rubberEffect1Angle[rubberIndexEffect1]*=factor;
  45.349 +      rubberEffect2Translation[rubberIndexEffect2]*=factor;
  45.350 +    } else if (internalTime>TimeAttenuateTransformEnd)
  45.351 +      rubberTransformPart2=false;
  45.352 +
  45.353 +
  45.354 +
  45.355 +
  45.356 +  }
  45.357 +
  45.358 +  // end part
  45.359 +  if (internalTime>=TimeRubberEffect3Start)
  45.360 +    Effect3StartInitialized=true;
  45.361 +
  45.362 +
  45.363 +  rubberAngle+=RotationAdd*Timer->GetFrameTime();
  45.364 +  rub->MakeMorph(currentShapeToMorph%rub->NbShapes(),(currentShapeToMorph+1)%rub->NbShapes(),morphFrac);
  45.365 +
  45.366 +  if (rubberTransformPart2 && internalTime<TimeAttenuateTransformEnd) {
  45.367 +    int y=rub->MorphShape().ResY();
  45.368 +    mth::Vector3_t* vertexes=rub->MorphShape().Vertexes();
  45.369 +    for (int k=0;k<y;k++) {
  45.370 +      mth::Quaternion_t q(0,rubberEffect1Angle[(rubberIndexEffect1-k+y)%y],0);
  45.371 +      int x=rub->MorphShape().ResX();
  45.372 +      int idx=k*x;
  45.373 +      for (int l=0;l<x;l++) {
  45.374 +        vertexes[idx+l]=q.Rotate(vertexes[idx+l]);
  45.375 +        vertexes[idx+l][0]+=rubberEffect2Translation[(rubberIndexEffect2-k+y)%y];
  45.376 +      }
  45.377 +    }
  45.378 +  }
  45.379 +
  45.380 +
  45.381 +}
  45.382 +
  45.383 +void efxScreen3_t::Update()
  45.384 +{
  45.385 +  internalTime+=Timer->GetFrameTime();
  45.386 +
  45.387 +  UpdateRubbers();
  45.388 +
  45.389 +  // activate one greetz
  45.390 +  if (sync->GetGreetzSync() == true) {
  45.391 +    for (int i=0;i<nbGreetz;i++)
  45.392 +      if (designElementsFont[i].start>1e5+0.5) {
  45.393 +        designElementsFont[i].start=0;
  45.394 +        break;
  45.395 +      }
  45.396 +  }
  45.397 +
  45.398 +  design.Update();
  45.399 +}
  45.400 +
  45.401 +
  45.402 +
  45.403 +void efxScreen3_t::DrawRubber()
  45.404 +{
  45.405 +
  45.406 +  cmnPushMatrix();
  45.407 +
  45.408 +  glFrontFace(GL_CW);
  45.409 +  glEnable(GL_LIGHTING);
  45.410 +  glEnable(GL_LIGHT0);
  45.411 +  glShadeModel(GL_SMOOTH);
  45.412 +
  45.413 +
  45.414 +  float light[4]={0.0,0.0,1,0};
  45.415 +  mth::Vector3_t l(0,0,1);
  45.416 +  l[0]=mth::Cos(Timer->GetRealTime());
  45.417 +  l[1]=mth::Sin(Timer->GetRealTime());
  45.418 +  l[2]=1;
  45.419 +  l.Normalize();
  45.420 +  light[0]=l[0];
  45.421 +  light[1]=l[1];
  45.422 +  light[2]=l[2];
  45.423 +
  45.424 +  glLightfv(GL_LIGHT0,GL_POSITION,light);
  45.425 +
  45.426 +//  touffus[i].SetTint(219.0/255,127.0/255,13.0/255);
  45.427 +
  45.428 +//  light[0]=1.0*0+146.0/255;light[1]=1.0*0+148.0/255;light[2]=1.0*0+173.0/255;
  45.429 +  light[0]=219.0/255;light[1]=127.0/255;light[2]=0.0/255;
  45.430 +
  45.431 +  memcpy(light,ColorMesh,sizeof(float)*4);
  45.432 +
  45.433 +
  45.434 +//  light[0]=219.0/255;light[1]=127.0/255;light[2]=13.0/255;
  45.435 +  glLightfv(GL_LIGHT0,GL_DIFFUSE,light) ;
  45.436 +
  45.437 +  light[0]=0.2;light[1]=0.2;light[2]=0.2;
  45.438 +  glLightfv(GL_LIGHT0,GL_AMBIENT,light) ;
  45.439 +
  45.440 +  glTranslatef(35,0,0);
  45.441 +
  45.442 +  if (rubberTransition || Effect3StartInitialized)
  45.443 +    DrawRubberTransition();
  45.444 +  else
  45.445 +    DrawRubberFull();
  45.446 +
  45.447 +  glDisable(GL_LIGHT0);
  45.448 +  glDisable(GL_LIGHTING);
  45.449 +
  45.450 +  cmnPopMatrix();
  45.451 +
  45.452 +}
  45.453 +
  45.454 +void efxScreen3_t::DrawRubberFull()
  45.455 +{
  45.456 +  glEnable(GL_CULL_FACE);
  45.457 +  glDisable(GL_BLEND);
  45.458 +  glBlendFunc(GL_ONE,GL_ONE);
  45.459 +
  45.460 +
  45.461 +  glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
  45.462 +  float mt[4]={1,1,1,1};
  45.463 +  glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mt);
  45.464 +
  45.465 +
  45.466 +  glRotatef(rubberAngle,0,1,0);
  45.467 +  rub->MorphShape().Draw();
  45.468 +}
  45.469 +
  45.470 +void efxScreen3_t::DrawRubberTransition()
  45.471 +{
  45.472 +
  45.473 +  const float BaseDistBlend = 5.0;
  45.474 +  const float BaseDistBlendSqr = 1.0/(BaseDistBlend*BaseDistBlend);
  45.475 +  const float BaseMinimumBlend = 0.15;
  45.476 +
  45.477 +  glDisable(GL_CULL_FACE);
  45.478 +  glEnable(GL_BLEND);
  45.479 +  glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
  45.480 +//  glBlendFunc(GL_ONE,GL_ONE);
  45.481 +
  45.482 +  float mt[4]={1,1,1,1};
  45.483 +  float a;
  45.484 +  int jend=rub->MorphShape().ResY();
  45.485 +  for (int j=0;j<jend-1;j++) {
  45.486 +
  45.487 +    if (Effect3StartInitialized) {
  45.488 +      translateYrubber[j]=designElementsRubber[j].position;
  45.489 +      rubberTransitionAlpha[j]=designElementsRubberAlpha[j].alpha;
  45.490 +
  45.491 +    } 
  45.492 +
  45.493 +     //a=BaseMinimumBlend + mth::Max(0,1.0-translateYrubber[j].MagSqr()*BaseDistBlendSqr);
  45.494 +     mt[3]=rubberTransitionAlpha[j];
  45.495 +     if (translateYrubber[j][0]==0 && translateYrubber[j][2]==0 )
  45.496 +       glEnable(GL_CULL_FACE);
  45.497 +     else
  45.498 +       glDisable(GL_CULL_FACE);
  45.499 +
  45.500 +  
  45.501 +     glPushMatrix();
  45.502 +     glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mt);
  45.503 +     glTranslatef(translateYrubber[j][0],translateYrubber[j][1],translateYrubber[j][2]);
  45.504 +     glRotatef(rubberAngle,0,1,0);
  45.505 +     rub->MorphShape().DrawRow(j);
  45.506 +     glPopMatrix();
  45.507 +  }
  45.508 +
  45.509 +}
  45.510 +
  45.511 +
  45.512 +void efxScreen3_t::Draw()
  45.513 +{
  45.514 +	cmnSetFrustrum(90);
  45.515 +	cmnSetCamera( mth::Vector3_t(0* 12.5, 0, 100 ), mth::Vector3_t( 0 , 0, 0 ) );
  45.516 +
  45.517 +  cmnPushGLState();
  45.518 +  cmnPushMatrix();
  45.519 +  
  45.520 +  glEnable(GL_BLEND);
  45.521 +  glBlendFunc(GL_ONE,GL_ONE);
  45.522 +//  cmnDisplayBackground(backGroundTexture,167,92,5,255,1);
  45.523 +//  cmnDisplayBackground(backGroundTexture2,167,92,5,255,1);GLuint _texture,int _r=33,int _g=137,int _b=255,int _a=255, int _nbPasses=2,int _side=0);
  45.524 +  cmnDisplayBackground(backGroundTexture,33,137,255,255,1);
  45.525 +  cmnDisplayBackground(backGroundTexture2,33,137,255,255,1);
  45.526 +
  45.527 +//  design.Draw();
  45.528 +
  45.529 +  
  45.530 +  DrawRubber();
  45.531 +  cmnPopMatrix();
  45.532 +  cmnPopGLState();
  45.533 +
  45.534 +  glDisable(GL_DEPTH_TEST);
  45.535 +  glColor4f(0.1,0.1,0.1,1);
  45.536 +  glEnable(GL_BLEND);
  45.537 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  45.538 +  design.Draw();
  45.539 +  cmnSetPlanarView();
  45.540 +//  design.Draw();
  45.541 +
  45.542 +
  45.543 +}
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/efx_screen3.h	Tue Nov 27 15:23:52 2007 +0100
    46.3 @@ -0,0 +1,91 @@
    46.4 +#ifndef EFX_SCREEN3_H
    46.5 +#define EFX_SCREEN3_H
    46.6 +
    46.7 +
    46.8 +#include "cmn_texture.h"
    46.9 +#include "mth_vector2.h"
   46.10 +#include "efx_rub.h"
   46.11 +#include "cmn_design.h"
   46.12 +
   46.13 +/*
   46.14 + * miniFMod
   46.15 + *  include
   46.16 + *  resource
   46.17 + */
   46.18 +#include "minifmod/minifmod.h"
   46.19 +extern FMUSIC_MODULE * intro_mod;
   46.20 +#include "fxSync.h"
   46.21 +
   46.22 +
   46.23 +
   46.24 +struct cmnDesignElementRubberEnd_t: public cmnDesignElement_t
   46.25 +{
   46.26 +  float alpha;
   46.27 +
   46.28 +  void Update() {
   46.29 +    float f=position.MagSqr();
   46.30 +    f=mth::Max(0.1,f);
   46.31 +    float dt=Timer->GetFrameTime();
   46.32 +    position+=(target-position)*1.0/factor*dt;
   46.33 +    alpha-=1*dt;
   46.34 +    alpha=mth::Max(0.05,alpha);
   46.35 +  }
   46.36 +};
   46.37 +
   46.38 +
   46.39 +
   46.40 +
   46.41 +class efxScreen3_t
   46.42 +{
   46.43 +
   46.44 +  double internalTime;
   46.45 +
   46.46 +  efxRub_t* rub;
   46.47 +  int currentShapeToMorph;
   46.48 +  float morphFrac;
   46.49 +  float waitingRubber;
   46.50 +  float translateRubberFrac;
   46.51 +  mth::Vector3_t* translateYrubber; 
   46.52 +  float* rubberTransitionAlpha;
   46.53 +  GLuint rubTexture;
   46.54 +  float rubberAngle;
   46.55 +  bool rubberTransition;
   46.56 +  float* rubberEffect1Angle;
   46.57 +  int rubberIndexEffect1;
   46.58 +  float* rubberEffect2Translation;
   46.59 +  int rubberIndexEffect2;
   46.60 +  bool rubberTransformPart2;
   46.61 +  bool Effect3StartInitialized;
   46.62 +
   46.63 +  void InitRubbers(int _nbShapes);
   46.64 +  void UpdateRubbers();
   46.65 +  void DrawRubber();
   46.66 +  void DrawRubberFull();
   46.67 +  void DrawRubberTransition();
   46.68 +
   46.69 +  GLuint backGroundTexture;
   46.70 +  GLuint backGroundTexture2;
   46.71 +
   46.72 +
   46.73 +  cmnDesign_t design;
   46.74 +  cmnDesignElementRubberEnd_t* designElementsRubber;
   46.75 +  cmnDesignElementRubberEnd_t* designElementsRubberAlpha;
   46.76 +  cmnDesignElementFont_t* designElementsFont;
   46.77 +  int nbLetters;
   46.78 +  int nbGreetz;
   46.79 +  void InitDesign();
   46.80 +
   46.81 +
   46.82 +public:
   46.83 +
   46.84 +  efxScreen3_t();
   46.85 +
   46.86 +  void Init();
   46.87 +  void Update();
   46.88 +  void Draw();
   46.89 +
   46.90 +
   46.91 +};
   46.92 +
   46.93 +
   46.94 +#endif
   46.95 \ No newline at end of file
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/efx_screen4.cxx	Tue Nov 27 15:23:52 2007 +0100
    47.3 @@ -0,0 +1,493 @@
    47.4 +#include "efx_screen4.h"
    47.5 +#include "sys_assert.h"
    47.6 +#include "mth_vector3.h"
    47.7 +#include "gl_header.h"
    47.8 +#include "cmn_intro.h"
    47.9 +#include "cmn_design.h"
   47.10 +
   47.11 +static const char* OriginalScrollText1[]=
   47.12 +{
   47.13 +
   47.14 +"",
   47.15 +"",
   47.16 +"",
   47.17 +"",
   47.18 +"",
   47.19 +"",
   47.20 +"",
   47.21 +"",
   47.22 +"",
   47.23 +"",
   47.24 +"",
   47.25 +"",
   47.26 +"",
   47.27 +"",
   47.28 +"",
   47.29 +"",
   47.30 +"",
   47.31 +"",
   47.32 +"  you have experienced",
   47.33 +"  . morph / syn[rj] .",
   47.34 +"      presented at",
   47.35 +"   . st(art) 2004 .",
   47.36 +"",
   47.37 +"this prod was made in 2.5",
   47.38 +"weeks and finished some",
   47.39 +"minutes before the",
   47.40 +"deadline.",
   47.41 +"most effects are fastly",
   47.42 +"coded, and can be really",
   47.43 +"slow on 'medium' class",
   47.44 +"computer.",
   47.45 +"",
   47.46 +"credits",
   47.47 +"  code",
   47.48 +"    Stv",
   47.49 +"    psc80",
   47.50 +"    mRyOuNg",
   47.51 +"  design",
   47.52 +"    kohai",
   47.53 +"  music",
   47.54 +"    Evil",
   47.55 +"",
   47.56 +"greetings fly to ...",
   47.57 +" Ziggy stardust",
   47.58 +" Zann / grumly&compagny",
   47.59 +" Keops / Equinox",
   47.60 +" rahow / apex",
   47.61 +" scalpos / apex",
   47.62 +" codac / apex",
   47.63 +" cyborg / deathless",
   47.64 +" MrHoward / ambre",
   47.65 +" debug / defence force",
   47.66 +" Squaley",
   47.67 +" impulse",
   47.68 +" st(art) team",
   47.69 +" CodeFr (ircnet)",
   47.70 +"  ...",
   47.71 +" st(art) 2k4 audience",
   47.72 +"",
   47.73 +"  thanks for watching",
   47.74 +"",
   47.75 +0
   47.76 +
   47.77 +};
   47.78 +
   47.79 +
   47.80 +
   47.81 +
   47.82 +static const char* OriginalScrollText2[]=
   47.83 +{
   47.84 +  "",
   47.85 +  "",
   47.86 +  "",
   47.87 +  "",
   47.88 +  "",
   47.89 +  "",
   47.90 +  "",
   47.91 +"Credits:",
   47.92 +"",
   47.93 +"Code:",
   47.94 +"stv",
   47.95 +"psc80",
   47.96 +"mryoung",
   47.97 +"",
   47.98 +"design:",
   47.99 +"kohai",
  47.100 +"",
  47.101 +"sound:",
  47.102 +"evil",
  47.103 +"",
  47.104 +"contrib:",
  47.105 +"zann",
  47.106 +"squaley",
  47.107 +"",
  47.108 +0
  47.109 +
  47.110 +};
  47.111 +
  47.112 +
  47.113 +
  47.114 +const int ScrollText2ResolutionX=96;
  47.115 +const int ScrollText2ResolutionY=96;
  47.116 +
  47.117 +
  47.118 +// sync
  47.119 +extern fxSync * sync;
  47.120 +
  47.121 +efxScreen4_t::efxScreen4_t()
  47.122 +{
  47.123 +  cameraLookAt.Init();
  47.124 +  cameraPosition.Init(0,50,100);
  47.125 +  scrollText2map=0;
  47.126 +  linesScroll1=linesScroll2=-8;
  47.127 +  ScrollText2=0;
  47.128 +  ScrollText1=0;
  47.129 +
  47.130 +  indexInSample=0;
  47.131 +  for (int i=0;i<NbSampleSoundLevel;i++)
  47.132 +    sampleLevelSound[i]=0;
  47.133 +}
  47.134 +
  47.135 +
  47.136 +void efxScreen4_t::InitTextchar(char**& _dst,const char** _src,int& _nbLines)
  47.137 +{
  47.138 +  _nbLines=0;
  47.139 +  while (_src[_nbLines]!=0)
  47.140 +    _nbLines++;
  47.141 +
  47.142 + typedef char* CharPtr_t;
  47.143 +  _dst=new CharPtr_t[_nbLines+1];
  47.144 +  for (int i=0;i<_nbLines;i++)
  47.145 +    _dst[_nbLines-i-1]=strdup(_src[i]);
  47.146 +
  47.147 +}
  47.148 +
  47.149 +void efxScreen4_t::Init()
  47.150 +{
  47.151 +  const float Radius=0.95;
  47.152 +  const float Height=1.0;
  47.153 +
  47.154 +#ifdef HIGHRES
  47.155 +  const int Sections=24;
  47.156 +#else
  47.157 +#ifdef MIDDLERES
  47.158 +  const int Sections=14;
  47.159 +#endif
  47.160 +#endif  
  47.161 +
  47.162 +  equa.Init(ScrollText2ResolutionX,ScrollText2ResolutionY);
  47.163 +  scrollText2map=new uchar[ScrollText2ResolutionX*ScrollText2ResolutionY*4];
  47.164 +
  47.165 +
  47.166 +  InitTextchar(ScrollText2,OriginalScrollText2,nbLinesScroll2);
  47.167 +  InitTextchar(ScrollText1,OriginalScrollText1,nbLinesScroll1);
  47.168 +  linesScroll1=nbLinesScroll1/2;
  47.169 +  linesScroll2=-nbLinesScroll2/2+3;
  47.170 +
  47.171 +  GLuint id=glGenLists(1);
  47.172 +  SYS_ASSERT(id);
  47.173 +  glNewList(id,GL_COMPILE);
  47.174 +
  47.175 +  glBegin(GL_TRIANGLE_FAN);
  47.176 +  glNormal3f(0,1,0);
  47.177 +  glVertex3f(0,Height,0);
  47.178 +  
  47.179 +  double one_on_section=mth::TWOPI*1.0/Sections;
  47.180 +  for (int s=0;s<Sections+1;s++) {
  47.181 +    glNormal3f(0,1,0);
  47.182 +    glVertex3f(Radius * mth::Sin( -s * one_on_section),Height,Radius * mth::Cos(-s * one_on_section));
  47.183 +  }
  47.184 +  glEnd();
  47.185 +
  47.186 +
  47.187 +  // make core of cylinder
  47.188 +  glBegin(GL_QUAD_STRIP);
  47.189 +  for (s=0; s < Sections; s++)
  47.190 +    for (int i=0;i<2;i++) {
  47.191 +      glNormal3f( mth::Sin(s * one_on_section), 0, mth::Cos(s * one_on_section));
  47.192 +      glVertex3f(Radius* mth::Sin(s * one_on_section),Height*(i%2?1:-1),Radius* mth::Cos(s * one_on_section));
  47.193 +    }
  47.194 +  glEnd();
  47.195 +  glEndList();
  47.196 +
  47.197 +  equa.SetGeometry(id);
  47.198 +
  47.199 +
  47.200 +  int size=256;
  47.201 +  float div=2.0/size;
  47.202 +  background=txtCreatePerlin2d(size,size,div,div,0.6,6);
  47.203 +
  47.204 +
  47.205 +
  47.206 +
  47.207 +
  47.208 +  const int NbKeys=4096;
  47.209 +  const float TimeStep=10.0;
  47.210 +
  47.211 +  cameraPath=new mth::Hermite_t(NbKeys*2);
  47.212 +  cameraKeyData=new mth::HermiteKey_t[NbKeys];
  47.213 +
  47.214 +  mth::Vector3_t tmpPos;
  47.215 +  for (int i=0;i<NbKeys;i++) {
  47.216 +    tmpPos.InitRandomVectorInBox(ScrollText2ResolutionX);
  47.217 +    tmpPos[1]=20+mth::Abs(3*tmpPos[1]);
  47.218 +    tmpPos[2]=mth::Abs(tmpPos[2]);
  47.219 +    cameraKeyData[i].Init(TimeStep*i,tmpPos);
  47.220 +    cameraPath->AddKey(&cameraKeyData[i]);
  47.221 +  }
  47.222 +
  47.223 +}
  47.224 +
  47.225 +
  47.226 +
  47.227 +float Mod(float _x,float _mod) {
  47.228 +  int n=(int)(_x/_mod);
  47.229 +  float x2=_x-n*_mod;
  47.230 +  if (x2<0)
  47.231 +    x2+=_mod;
  47.232 +  return x2;}
  47.233 +
  47.234 +
  47.235 +void efxScreen4_t::UpdateScrollText1()
  47.236 +{
  47.237 +  const float LinesPerSecond=1;
  47.238 +  linesScroll1-=LinesPerSecond*Timer->GetFrameTime();
  47.239 +  linesScroll1=Mod(linesScroll1,nbLinesScroll1);
  47.240 +}
  47.241 +
  47.242 +
  47.243 +
  47.244 +void efxScreen4_t::UpdateScrollText2()
  47.245 +{
  47.246 +  const float LinesPerSecond=1;
  47.247 +  linesScroll2-=LinesPerSecond*Timer->GetFrameTime();
  47.248 +  linesScroll2=Mod(linesScroll2,nbLinesScroll2);
  47.249 +}
  47.250 +
  47.251 +
  47.252 +void efxScreen4_t::Update()
  47.253 +{
  47.254 +  internalTime+=Timer->GetFrameTime();
  47.255 +
  47.256 +  cameraPath->GetData(internalTime,cameraPosition);
  47.257 +
  47.258 +  UpdateScrollText1();
  47.259 +  UpdateScrollText2();
  47.260 +
  47.261 +  sampleLevelSound[indexInSample]=(sync->GetDetection()->GetSampleData(INST_BIGBD).playing==true?5:0);
  47.262 +  indexInSample=(indexInSample+1)%NbSampleSoundLevel;
  47.263 +  levelSound=0;
  47.264 +  for (int i=0;i<NbSampleSoundLevel;i++)
  47.265 +    levelSound+=sampleLevelSound[i];
  47.266 +  levelSound/=NbSampleSoundLevel;
  47.267 +
  47.268 +  cameraPosition[1]+=levelSound*10;
  47.269 +/*
  47.270 +  INST_BASS   = 0,
  47.271 +	INST_HHAT   = 1,
  47.272 +	INST_BDRUM  = 2,
  47.273 +	INST_SNARE  = 3,
  47.274 +	INST_SBDRUM = 4,
  47.275 +	INST_NAP1   = 5,
  47.276 +	INST_NAP2   = 6,
  47.277 +	INST_BIGBD  = 7
  47.278 +*/
  47.279 +}
  47.280 +
  47.281 +
  47.282 +void efxScreen4_t::DrawScrollText1()
  47.283 +{
  47.284 +  const int StartPositionY=0;
  47.285 +  const int StartPositionX=32;
  47.286 +  const int FilterY=(1-0.34)*2*RY;
  47.287 +  const int FilterX=300;
  47.288 +  font->SetScaleX(0.75);
  47.289 +  const int NbLinesToDisplay=2+RY/font->SizeOfCharY();
  47.290 +
  47.291 +
  47.292 +
  47.293 +  //glDisable(GL_BLEND);
  47.294 +  glBlendFunc(GL_ONE,GL_ONE);
  47.295 +
  47.296 +
  47.297 +  font->SetScaleY(1);
  47.298 +  glColor4f(1,1,1,1);
  47.299 +  float starty=StartPositionY-mth::Frac(linesScroll1)*font->SizeOfCharY();
  47.300 +  int indexLine=mth::Floor(linesScroll1);
  47.301 +  int nb=mth::Min(indexLine,RY/font->SizeOfCharY());
  47.302 +  for (int i=0;i<NbLinesToDisplay;i++)
  47.303 +    font->Print(StartPositionX,starty+(i)*font->SizeOfCharY(),ScrollText1[(indexLine+i+2*nbLinesScroll1)%nbLinesScroll1]);
  47.304 +
  47.305 +  //cmnPopMatrix();
  47.306 +  font->SetScale(1);
  47.307 +}
  47.308 +
  47.309 +void efxScreen4_t::DrawScrollText2()
  47.310 +{
  47.311 +  cmnPushMatrix();
  47.312 +  cmnClearScreen(0,0,0,1);
  47.313 +  glFlush();
  47.314 +  glDisable(GL_BLEND);
  47.315 +  cmnSetPlanarView();
  47.316 +  font->SetScaleX(0.75);
  47.317 +  font->SetScaleY(1);
  47.318 +
  47.319 +  const int StartPositionInMapY=32;
  47.320 +  const int StartPositionInMapX=16;
  47.321 +  const float OffsetFactor=0.02;
  47.322 +
  47.323 +  int nb=ScrollText2ResolutionY/font->SizeOfCharY();
  47.324 +  int indexLine=mth::Floor(linesScroll2);
  47.325 +  float frac=mth::Frac(linesScroll2);
  47.326 +  for (int i=0;i<nb+1;i++) {
  47.327 +    font->Print(StartPositionInMapX,StartPositionInMapY-frac*font->SizeOfCharY()+i*font->SizeOfCharY(),ScrollText2[(indexLine+i+2*nbLinesScroll2)%nbLinesScroll2]);
  47.328 +  }
  47.329 +
  47.330 +  glFlush();
  47.331 +
  47.332 +  txtGetTextureFromBackBuffer(
  47.333 +    scrollText2map,
  47.334 +    StartPositionInMapX,
  47.335 +    StartPositionInMapY,
  47.336 +    ScrollText2ResolutionX,
  47.337 +    ScrollText2ResolutionY);
  47.338 +
  47.339 +  float pixel;
  47.340 +  for (i=0;i<ScrollText2ResolutionX;i++)
  47.341 +    for (int j=0;j<ScrollText2ResolutionY;j++) {
  47.342 +      int index=(i+(ScrollText2ResolutionY-1-j)*ScrollText2ResolutionY)*4;
  47.343 +      pixel=scrollText2map[index+0]+scrollText2map[index+1]+scrollText2map[index+2];
  47.344 +      pixel/=3;
  47.345 +      pixel*=OffsetFactor;
  47.346 +      if (pixel>1)
  47.347 +        pixel+=levelSound;
  47.348 +      equa.SetDepthLevel(i+(/*ScrollText2ResolutionY-*/j)*equa.ResX(),pixel);
  47.349 +    }
  47.350 +
  47.351 +  cmnPopMatrix();
  47.352 +  cmnClearScreen(0,0,0,1);
  47.353 +}
  47.354 +
  47.355 +
  47.356 +#if 1
  47.357 +
  47.358 +
  47.359 +void efxScreen4_t::DrawBackScrollLine(const float* _pnts,int _nbPts,float _offsetY,float _offsetX)
  47.360 +{
  47.361 +  glBegin(GL_LINE_STRIP);
  47.362 +  for (int i=0;i<_nbPts*2;i+=2) {
  47.363 +    glVertex2f(_pnts[i]+_offsetX,_pnts[i+1]+_offsetY);
  47.364 +  }
  47.365 +  glEnd();
  47.366 +}
  47.367 +
  47.368 +void efxScreen4_t::DrawBackScrollBg(const float* _pntsTop,int _nbPts, float _OffsetTop,float _OffsetBottomY,float _offsetX)
  47.369 +{
  47.370 +
  47.371 +  int nbQuads=_nbPts/2;
  47.372 +
  47.373 +  glBegin(GL_QUADS);
  47.374 +  for (int i=0;i<nbQuads*4;i+=4) {
  47.375 +    glVertex2f(_pntsTop[i]+_offsetX,_pntsTop[i+1]+_OffsetTop);
  47.376 +    glVertex2f(_pntsTop[i+2]+_offsetX,_pntsTop[i+3]+_OffsetTop);
  47.377 +
  47.378 +    glVertex2f(_pntsTop[i+2]+_offsetX,_pntsTop[i+3]+_OffsetBottomY);
  47.379 +    glVertex2f(_pntsTop[i]+_offsetX,_pntsTop[i+1]+_OffsetBottomY);
  47.380 +  }
  47.381 +  glEnd();
  47.382 +
  47.383 +}
  47.384 +
  47.385 +void efxScreen4_t::DrawBackScroll()
  47.386 +{
  47.387 +  const int NbPoints=16;
  47.388 +  const float OffsetY2=400;
  47.389 +  const float OffsetY1=-50;
  47.390 +  const float OffsetX=30;
  47.391 +  const float CoordLines[]={
  47.392 +    1,123,
  47.393 +    55,123,
  47.394 +    55,108,
  47.395 +    102,108,
  47.396 +    102,123,
  47.397 +    140,123,
  47.398 +    140,94,
  47.399 +    194,94,
  47.400 +    194,123,
  47.401 +    213,123,
  47.402 +    213,114,
  47.403 +    235,114,
  47.404 +    235,123,
  47.405 +    256,123,
  47.406 +    256,98,
  47.407 +    303,98,
  47.408 +//    303,98,
  47.409 +    403,98,
  47.410 +//    303,98,
  47.411 +  };
  47.412 +
  47.413 +
  47.414 +  glLineWidth(2);
  47.415 +	glBlendFunc(GL_ONE, GL_SRC_ALPHA);
  47.416 +	glColor4ub(0, 0, 0, 100);
  47.417 +
  47.418 +
  47.419 +  DrawBackScrollBg(CoordLines,NbPoints,OffsetY2,OffsetY1,OffsetX);
  47.420 +  glDisable(GL_BLEND);
  47.421 +  glColor4f(1,1,1,1);
  47.422 +  DrawBackScrollLine(CoordLines,NbPoints,OffsetY1,OffsetX);
  47.423 +  DrawBackScrollLine(CoordLines,NbPoints,OffsetY2,OffsetX);
  47.424 +  
  47.425 +  glBegin(GL_LINES);
  47.426 +  glVertex2f(CoordLines[0]+OffsetX,CoordLines[1]+OffsetY1);
  47.427 +  glVertex2f(CoordLines[0]+OffsetX,CoordLines[1]+OffsetY2);
  47.428 +  glVertex2f(CoordLines[(NbPoints-1)*2]+OffsetX,CoordLines[(NbPoints-1)*2+1]+OffsetY1);
  47.429 +  glVertex2f(CoordLines[(NbPoints-1)*2]+OffsetX,CoordLines[(NbPoints-1)*2+1]+OffsetY2);
  47.430 +  glEnd();
  47.431 +
  47.432 +}
  47.433 +
  47.434 +#endif
  47.435 +
  47.436 +void efxScreen4_t::Draw()
  47.437 +{
  47.438 +  cmnSetFrustrum(90);
  47.439 +  cmnSetCamera(cameraPosition,cameraLookAt);
  47.440 +  DrawScrollText2();
  47.441 +
  47.442 +
  47.443 +  glEnable(GL_BLEND);
  47.444 +  glBlendFunc(GL_ONE,GL_ONE);
  47.445 +  cmnDisplayBackground(background,33,137,255,255,2,1);
  47.446 +
  47.447 +
  47.448 +
  47.449 +  cmnPushGLState();
  47.450 +  glEnable(GL_LIGHTING);
  47.451 +  glEnable(GL_LIGHT0);
  47.452 +  equa.SetElementSize(2,2);
  47.453 +  glScalef(1,2,1);
  47.454 +  equa.Draw();
  47.455 +  cmnPopGLState();
  47.456 +
  47.457 +
  47.458 +
  47.459 +  cmnSetPlanarView();
  47.460 +
  47.461 +//#define TRY_STENCIL
  47.462 +#ifdef TRY_STENCIL
  47.463 +  glDisable(GL_DEPTH_TEST);
  47.464 +  glEnable(GL_STENCIL_TEST);
  47.465 +  glClearStencil(0);
  47.466 +  glClear(GL_STENCIL_BUFFER_BIT);
  47.467 +  glStencilFunc(GL_ALWAYS,1,1);
  47.468 +  glStencilOp(GL_REPLACE,GL_REPLACE,GL_REPLACE);
  47.469 +#else
  47.470 +
  47.471 +  glEnable(GL_DEPTH_TEST);
  47.472 +  glDepthFunc(GL_ALWAYS);
  47.473 +#endif
  47.474 +  DrawBackScroll();
  47.475 +
  47.476 +#ifdef TRY_STENCIL
  47.477 +  glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP);
  47.478 +  glStencilFunc(GL_EQUAL,1,1);
  47.479 +#else
  47.480 +  glDepthFunc(GL_EQUAL);
  47.481 +#endif
  47.482 +  font->SetZ(0);
  47.483 +  glEnable(GL_BLEND);
  47.484 +  DrawScrollText1();
  47.485 +
  47.486 +
  47.487 +//  cmnPopGLState();
  47.488 +//  cmnPopMatrix();  
  47.489 +
  47.490 +#ifndef FINALE_RELEASE
  47.491 +  cmnSetPlanarView();
  47.492 +  font->Print("Camera %f %f %f\n",cameraPosition[0],cameraPosition[1],cameraPosition[2]);
  47.493 +#endif
  47.494 +
  47.495 +}
  47.496 +
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/efx_screen4.h	Tue Nov 27 15:23:52 2007 +0100
    48.3 @@ -0,0 +1,78 @@
    48.4 +#ifndef EFX_SCREEN4_H
    48.5 +#define EFX_SCREEN4_H
    48.6 +
    48.7 +
    48.8 +#include "cmn_texture.h"
    48.9 +#include "efx_equa2.h"
   48.10 +#include "efx_harmonics.h"
   48.11 +#include "mth_hermite.h"
   48.12 +#include "cmn_design.h"
   48.13 +
   48.14 +// sync
   48.15 +#include "fxSync.h"
   48.16 +
   48.17 +
   48.18 +
   48.19 +#define NbSampleSoundLevel 10
   48.20 +
   48.21 +class efxScreen4_t
   48.22 +{
   48.23 +  double internalTime;
   48.24 +
   48.25 +
   48.26 +  GLuint background;
   48.27 +
   48.28 +
   48.29 +  int indexInSample;
   48.30 +  float sampleLevelSound[NbSampleSoundLevel];
   48.31 +  float levelSound;
   48.32 +  efxEquaBase_t equa;
   48.33 +
   48.34 +
   48.35 +  // camera
   48.36 +  mth::Hermite_t* cameraPath;
   48.37 +  mth::HermiteKey_t* cameraKeyData;
   48.38 +  mth::Vector3_t cameraLookAt;
   48.39 +  mth::Vector3_t cameraPosition;
   48.40 +  
   48.41 +  float linesScroll1;
   48.42 +  float linesScroll2;
   48.43 +  int nbLinesScroll1;
   48.44 +  int nbLinesScroll2;
   48.45 +  uchar* scrollText2map;
   48.46 +  void UpdateScrollText1();
   48.47 +  void UpdateScrollText2();
   48.48 +
   48.49 +
   48.50 +  char** ScrollText2;
   48.51 +  char** ScrollText1;
   48.52 +  void InitTextchar(char**& _dst,const char** _src,int& _nbLines);
   48.53 +  void DrawScrollText1();
   48.54 +  void DrawScrollText2();
   48.55 +
   48.56 +//  void DisplayBackground();
   48.57 +//  void DrawEqua();
   48.58 +//  void DisplayDesign();
   48.59 +
   48.60 +
   48.61 +  void DrawBackScrollLine(const float* _pnts,int _nbPts,float _offsetY,float _offsetX);
   48.62 +  void DrawBackScrollBg(const float* _pntsTop,int _nbPts, float _OffsetTop,float _OffsetBottomY,float _offsetX);
   48.63 +  void DrawBackScroll();
   48.64 +
   48.65 +
   48.66 +
   48.67 +public:
   48.68 +
   48.69 +  efxScreen4_t();
   48.70 +
   48.71 +
   48.72 +  void Init();
   48.73 +  void Kill();
   48.74 +
   48.75 +  void Update();
   48.76 +  void Draw();
   48.77 +
   48.78 +};
   48.79 +
   48.80 +//146432 ->     52224
   48.81 +#endif
   48.82 \ No newline at end of file
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/efx_touf.cxx	Tue Nov 27 15:23:52 2007 +0100
    49.3 @@ -0,0 +1,344 @@
    49.4 +#include "efx_touf.h"
    49.5 +#include "gl_header.h"
    49.6 +
    49.7 +efxToufElement_t::efxToufElement_t()
    49.8 +{
    49.9 +  elements=0;
   49.10 +  springs=0;
   49.11 +}
   49.12 +
   49.13 +
   49.14 +void efxToufElement_t::Kill()
   49.15 +{
   49.16 +  if (elements)
   49.17 +    delete [] elements;
   49.18 +  elements=0;
   49.19 +
   49.20 +  if (springs)
   49.21 +    delete [] springs;
   49.22 +  springs=0;
   49.23 +}
   49.24 +
   49.25 +#if 0 //not used
   49.26 +void efxToufElement_t::ApplyRotation(const mth::Quaternion_t& _q)
   49.27 +{
   49.28 +  elements[0].Position(_q.Rotate(elements[0].Position()));
   49.29 +  elements[0].Velocity(_q.Rotate(elements[0].Velocity()));
   49.30 +}
   49.31 +#endif
   49.32 +
   49.33 +void efxToufElement_t::Init(int _section)
   49.34 +{
   49.35 +  Kill();
   49.36 +  nbSections=_section;
   49.37 +
   49.38 +  elements=new phy::Element_t[nbSections];
   49.39 +  springs=new phy::SpringDamper_t[nbSections];
   49.40 +
   49.41 +#ifdef USE_QUALITY_TOUFS
   49.42 +  spline= new mth::Hermite_t(nbSections+1);
   49.43 +  keyData=new mth::HermiteKey_t[nbSections+1];
   49.44 +#endif
   49.45 +}
   49.46 +
   49.47 +
   49.48 +void efxToufElement_t::ApplyForce(const mth::Vector3_t& _force)
   49.49 +{
   49.50 + for (int i=0;i<nbSections;i++)
   49.51 +    elements[i].ApplyForce(_force);
   49.52 +}
   49.53 +
   49.54 +
   49.55 +void efxToufElement_t::AddSphercialForce()
   49.56 +{
   49.57 +//  return;
   49.58 +  for (int i=0;i<nbSections;i++)
   49.59 +    elements[i].ApplyForce(initialDirection*(elements[i].Mass()*100*1.0/(i+1)));
   49.60 +}
   49.61 +
   49.62 +
   49.63 +
   49.64 +void efxToufElement_t::InitData(const mth::Vector3_t& _start,float _massPerTouf)
   49.65 +{
   49.66 +  initialDirection=_start;
   49.67 +
   49.68 +  float l=_start.Mag()*1.0;
   49.69 +  mth::Vector3_t vec=_start;
   49.70 +  //float massStart=_massPerTouf;
   49.71 +  for (int i=0;i<nbSections;i++) {
   49.72 +    elements[i].Position(vec);
   49.73 +    vec+=_start;
   49.74 +    elements[i].Mass(_massPerTouf/nbSections);
   49.75 +//    massStart*=0.8;
   49.76 +//    elements[i].Mass(massStart);
   49.77 +//    springs[i].Init(/*32*8*/ 256*2,50,l);
   49.78 +   // springs[i].Init(1000,30,l);
   49.79 +//    springs[i].Init(1000,10,l);
   49.80 +//    springs[i].Init(200,5,l);
   49.81 +    springs[i].Init(1000,5,l);
   49.82 +
   49.83 +#ifdef USE_QUALITY_TOUFS
   49.84 +    spline->AddKey(&keyData[i]);
   49.85 +#endif
   49.86 +
   49.87 +  }
   49.88 +}
   49.89 +
   49.90 +
   49.91 +void efxToufElement_t::RegisterElements(phy::Server_t& _server,phy::Element_t* _central)
   49.92 +{
   49.93 +
   49.94 +  springs[0].Init(_central,&elements[0]);
   49.95 +  _server.AddElement(&elements[0]);
   49.96 +  _server.AddLink(&springs[0]);
   49.97 +  for (int i=1;i<nbSections;i++) {
   49.98 +    springs[i].Init(&elements[i-1],&elements[i]);
   49.99 +
  49.100 +    _server.AddElement(&elements[i]);
  49.101 +    _server.AddLink(&springs[i]);
  49.102 +  }
  49.103 +}
  49.104 +
  49.105 +
  49.106 +void efxToufElement_t::ApplyDrag()
  49.107 +{
  49.108 +  const float InternalDragCoef=0.3;
  49.109 +  mth::Vector3_t f;
  49.110 +  for (int i=0;i<nbSections;i++) {
  49.111 +    f=elements[i].Velocity();
  49.112 +    f*=-0.3;
  49.113 +    elements[i].ApplyForce(f);
  49.114 +  }
  49.115 +}
  49.116 +
  49.117 +
  49.118 +
  49.119 +void efxToufElement_t::Draw(const mth::Vector3_t& _central,float _radius,float _scaleColor,float* _tint)
  49.120 +{
  49.121 +  
  49.122 +  float a;
  49.123 +  _radius*=0.8; // factor to attenuate color quickely
  49.124 +  _radius*=nbSections;
  49.125 +  _radius*=_radius;
  49.126 +
  49.127 +  int i;
  49.128 +
  49.129 +#ifdef USE_QUALITY_TOUFS
  49.130 +  const float div=1.0/(nbSections-1);
  49.131 +  keyData[0].Init(0,_central);
  49.132 +  for (i=1;i<nbSections+1;i++)
  49.133 +    keyData[i].Init(i*div,elements[i].Position());
  49.134 +
  49.135 +  
  49.136 +  mth::Vector3_t tmp,tmpPrev=_central;
  49.137 +  const int SectionSpline=30;
  49.138 +  const float SectionSplineDiv=1.0/(SectionSpline+2);
  49.139 +  for (i=0;i<SectionSpline;i++) {
  49.140 +    spline->GetData((i+1)*SectionSplineDiv,tmp);
  49.141 +
  49.142 +    a=_radius-_central.DistSqr(tmp);
  49.143 +    a/=_radius;
  49.144 +    a=mth::Clamp(a*_scaleColor,0,1.0);
  49.145 +    glColor3f(a*_tint[0],a*_tint[1],a*_tint[2]);
  49.146 +#ifdef POLYGON_MODEL
  49.147 +    mth::Vector3_t dir=tmp;
  49.148 +    dir[1]+=0.5;
  49.149 +    glVertex3fv(tmp);
  49.150 +    glColor3f(a*_tint[0],a*_tint[1],a*_tint[2]);
  49.151 +    glVertex3fv(dir);
  49.152 +#else
  49.153 +    glVertex3fv(tmp);
  49.154 +#endif
  49.155 +  }
  49.156 +
  49.157 +
  49.158 +
  49.159 +#else
  49.160 +
  49.161 +  for (i=0;i<nbSections;i++) {
  49.162 +    a=_radius-_central.DistSqr(elements[i].Position());
  49.163 +    a/=_radius;
  49.164 +//    a*=255;
  49.165 +    a=mth::Clamp(a*_scaleColor,0,1.0);
  49.166 +    glColor3f(a*_tint[0],a*_tint[1],a*_tint[2]);
  49.167 +    glVertex3fv(elements[i].Position());
  49.168 +  }
  49.169 +#endif
  49.170 +
  49.171 +}
  49.172 +
  49.173 +
  49.174 +
  49.175 +
  49.176 +
  49.177 +efxTouf_t::efxTouf_t()
  49.178 +{
  49.179 +  elements=0;
  49.180 +  tint[0]=1.0;
  49.181 +  tint[1]=1.0;
  49.182 +  tint[2]=1.0;
  49.183 +}
  49.184 +
  49.185 +
  49.186 +void efxTouf_t::Kill()
  49.187 +{
  49.188 +  if (elements)
  49.189 +    delete [] elements;
  49.190 +  elements=0;
  49.191 +}
  49.192 +
  49.193 +
  49.194 +#if 0 //not used
  49.195 +void efxTouf_t::ApplyRotation(const mth::Quaternion_t& _q)
  49.196 +{
  49.197 +  for (int j=0;j<nbElements;j++) {
  49.198 +    elements[j].ApplyRotation(_q);
  49.199 +  }
  49.200 +
  49.201 +}
  49.202 +#endif
  49.203 +
  49.204 +void efxTouf_t::Init(int _widthResolution,int _heightResolution,int _section,float _radius)
  49.205 +{
  49.206 +  Kill();
  49.207 +
  49.208 +  sizex=_widthResolution;
  49.209 +  sizey=_heightResolution;
  49.210 +  nbElements=sizex*sizey;
  49.211 +  radius=_radius;
  49.212 +
  49.213 +  elements=new efxToufElement_t[nbElements];
  49.214 +
  49.215 +  int i;
  49.216 +  for (i=0;i<nbElements;i++) {
  49.217 +    elements[i].Init(_section);
  49.218 +    elements[i].RegisterElements(server,&central);
  49.219 +  }
  49.220 +
  49.221 +
  49.222 +  mth::Vector3_t startPosition(0,0,0);
  49.223 +
  49.224 +  // init the center of the touf
  49.225 +  central.Position(startPosition);
  49.226 +  central.Mass(3);
  49.227 +  central.Blocked();
  49.228 +
  49.229 +  int j;
  49.230 +  for (j=0;j<sizey;j++)
  49.231 +    for (i=0;i<sizex;i++) {
  49.232 +      InitPosition(_radius,i,j,startPosition);
  49.233 +      elements[i+j*sizex].InitData(startPosition,5);
  49.234 +    }
  49.235 +}
  49.236 +
  49.237 +
  49.238 +
  49.239 +void efxTouf_t::Update(double _dt)
  49.240 +{
  49.241 +
  49.242 +
  49.243 +  const double IntegrationTime=1e-2;
  49.244 +
  49.245 +//#define TEST
  49.246 +#ifdef TEST
  49.247 +static int testToRemove=0;
  49.248 +  testToRemove++;
  49.249 +
  49.250 +  mth::Vector3_t vel=-central.Position();
  49.251 +  mth::Vector3_t v(0,0,0);
  49.252 +  v[0]=50*mth::Cos(1.0*testToRemove/50);
  49.253 +  vel+=v;
  49.254 +
  49.255 +  central.Position(v);
  49.256 +  central.Velocity(vel/_dt*0.5);
  49.257 +#endif
  49.258 +
  49.259 +  int nbIntegrations=mth::Floor(_dt/IntegrationTime);
  49.260 +
  49.261 +  for (int i=0;i<nbIntegrations;i++) {
  49.262 +    server.StartForceSession();
  49.263 +    for (int j=0;j<nbElements;j++) {
  49.264 +      elements[j].AddSphercialForce();
  49.265 +      elements[j].ApplyForce(force);
  49.266 +      elements[j].ApplyDrag();
  49.267 +    }
  49.268 +    server.EndForceSession();
  49.269 +    server.Try1(IntegrationTime);
  49.270 +  }
  49.271 +
  49.272 +  double notFinished=_dt-nbIntegrations*IntegrationTime;
  49.273 +  if (notFinished>1e-5) {
  49.274 +    server.StartForceSession();
  49.275 +    for (int j=0;j<nbElements;j++) {
  49.276 +      elements[j].AddSphercialForce();
  49.277 +      elements[j].ApplyForce(force);
  49.278 +      elements[j].ApplyDrag();
  49.279 +    }
  49.280 +    server.EndForceSession();
  49.281 +    server.Try1(notFinished);
  49.282 +  }
  49.283 +
  49.284 +
  49.285 +  force.Init();
  49.286 +}
  49.287 +
  49.288 +
  49.289 +
  49.290 +
  49.291 +void efxTouf_t::Draw(float _scaleColor)
  49.292 +{
  49.293 +
  49.294 +//  glEnable(GL_BLEND);
  49.295 +
  49.296 +//  glEnable(GL_LINE_SMOOTH);
  49.297 +//  glLineWidth(1.0);
  49.298 +
  49.299 +
  49.300 +#ifndef POLYGON_MODEL
  49.301 +
  49.302 +  for (int i=0;i<nbElements;i++) {
  49.303 +    glBegin(GL_LINE_STRIP);
  49.304 +    glColor3f(tint[0],tint[1],tint[2]);
  49.305 +    glVertex3fv(central.Position());
  49.306 +    elements[i].Draw(central.Position(),radius,_scaleColor,tint);
  49.307 +    glEnd();
  49.308 +  }
  49.309 +#else
  49.310 +
  49.311 +  for (int i=0;i<nbElements;i++) {
  49.312 +    glBegin(GL_QUAD_STRIP);
  49.313 +    glColor3f(tint[0],tint[1],tint[2]);
  49.314 +    glVertex3fv(central.Position());
  49.315 +    glColor3f(tint[0],tint[1],tint[2]);
  49.316 +    glVertex3fv(central.Position()+mth::Vector3_t(0,0.5,0));
  49.317 +    elements[i].Draw(central.Position(),radius,_scaleColor,tint);
  49.318 +    glEnd();
  49.319 +  }
  49.320 +
  49.321 +#endif
  49.322 +
  49.323 +
  49.324 +#if 0
  49.325 +  for (int i=0;i<nbElements;i++) {
  49.326 +    glBegin(GL_LINE_STRIP);
  49.327 +    glVertex3fv(central.Position());
  49.328 +    elements[i].Draw();
  49.329 +    glEnd();
  49.330 +  }
  49.331 +#endif
  49.332 +
  49.333 +
  49.334 +}
  49.335 +
  49.336 +
  49.337 +void efxTouf_t::InitPosition(float _radius,float _u,float _v,mth::Vector3_t& _result)
  49.338 +{
  49.339 +  double du=1.0/sizex;
  49.340 +  double dv=1.0/(sizey);
  49.341 +
  49.342 +  _result.Init(
  49.343 +    _radius * mth::Cos(mth::TWOPI * _u * du) * mth::Sin(mth::PI * _v * dv),
  49.344 +    _radius * mth::Cos( mth::PI * _v * dv) ,
  49.345 +    _radius * mth::Sin(2 * mth::PI * _u * du) * mth::Sin( mth::PI * _v * dv)
  49.346 +    );
  49.347 +}
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/efx_touf.h	Tue Nov 27 15:23:52 2007 +0100
    50.3 @@ -0,0 +1,102 @@
    50.4 +#ifndef EFX_TOUF_H
    50.5 +#define EFX_TOUF_H
    50.6 +
    50.7 +
    50.8 +#include "mth_vector3.h"
    50.9 +#include "phy_element.h"
   50.10 +#include "phy_server.h"
   50.11 +#include "mth_hermite.h"
   50.12 +
   50.13 +#define USE_QUALITY_TOUFS
   50.14 +#define POLYGON_MODEL
   50.15 +
   50.16 +struct efxToufElement_t
   50.17 +{
   50.18 +  phy::Element_t* elements;
   50.19 +  phy::SpringDamper_t* springs;
   50.20 +
   50.21 +  int nbSections;
   50.22 +
   50.23 +  mth::Vector3_t initialDirection;
   50.24 +
   50.25 +#ifdef USE_QUALITY_TOUFS
   50.26 +  mth::Hermite_t* spline;
   50.27 +  mth::HermiteKey_t* keyData;
   50.28 +
   50.29 +#endif
   50.30 +
   50.31 +public:
   50.32 +
   50.33 +  efxToufElement_t();
   50.34 +
   50.35 +  void Kill();
   50.36 +  void Init(int _section);
   50.37 +  void Draw(const mth::Vector3_t& _central, float _radius,float _scaleColor,float* _tint);
   50.38 +  void RegisterElements(phy::Server_t& _server,phy::Element_t* _central);
   50.39 +  void InitData(const mth::Vector3_t& _start,float _massPerTouf);
   50.40 +  void AddSphercialForce();
   50.41 +  void ApplyForce(const mth::Vector3_t& _force);
   50.42 +  void ApplyDrag();
   50.43 +
   50.44 +};
   50.45 +
   50.46 +
   50.47 +
   50.48 +
   50.49 +class efxTouf_t
   50.50 +{
   50.51 +
   50.52 +  phy::Element_t central;
   50.53 +
   50.54 +  int sizex;
   50.55 +  int sizey;
   50.56 +  int nbElements;
   50.57 +  float radius;
   50.58 +
   50.59 +  phy::Server_t server;
   50.60 +
   50.61 +  efxToufElement_t* elements;
   50.62 +  mth::Vector3_t force;
   50.63 +
   50.64 +
   50.65 +  float tint[3];
   50.66 +
   50.67 +  void InitPosition(float _radius,float _u,float _v,mth::Vector3_t& _result);
   50.68 +
   50.69 +
   50.70 + public:
   50.71 +
   50.72 +  efxTouf_t();
   50.73 +
   50.74 +  void Kill();
   50.75 +
   50.76 +
   50.77 +  // init the classe with the number of elements to use
   50.78 +  void Init(int _widthResolution,int _heightResolution,int _section,float _radius);
   50.79 +
   50.80 +
   50.81 +  void Update(double _dt);
   50.82 +
   50.83 +
   50.84 +  phy::Element_t& Element() { return central;}
   50.85 +
   50.86 +
   50.87 +  void ApplyForce(const mth::Vector3_t& _force) {force+=_force;}
   50.88 +
   50.89 +
   50.90 +
   50.91 +  // Draw
   50.92 +  void Draw(float _scaleColor=1.0);
   50.93 +
   50.94 +  void SetTint(float _a,float _b,float _c) {
   50.95 +    tint[0]=_a;
   50.96 +    tint[1]=_b;
   50.97 +    tint[2]=_c;
   50.98 +  }
   50.99 +
  50.100 +
  50.101 +
  50.102 +};
  50.103 +
  50.104 +
  50.105 +#endif 
    51.1 Binary file font_16x16.bmp has changed
    52.1 Binary file font_16x16_corrected.bmp has changed
    53.1 Binary file font_8x16.bmp has changed
    54.1 Binary file font_8x16squaremin.bmp has changed
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/fxSync.cxx	Tue Nov 27 15:23:52 2007 +0100
    55.3 @@ -0,0 +1,459 @@
    55.4 +
    55.5 +#include "fxSync.h"
    55.6 +#include <math.h>
    55.7 +extern cmnTimer_t* Timer;
    55.8 +// efx
    55.9 +extern efxScreen1_t * fxScreen1;
   55.10 +extern efxScreen2_t * fxScreen2;
   55.11 +
   55.12 +fxSync :: fxSync()
   55.13 +{
   55.14 + // Nada !
   55.15 +}
   55.16 +
   55.17 +
   55.18 +fxSync :: ~fxSync()
   55.19 +{
   55.20 + // Nada !
   55.21 +}
   55.22 +
   55.23 +void fxSync :: Init( void )
   55.24 +{
   55.25 +
   55.26 +	int i, j;
   55.27 +
   55.28 +	// Sound Detection ...
   55.29 +	detection = new sndDetect();
   55.30 +
   55.31 +	// Average Filter ...
   55.32 +	equaIncDecLevel = new float * [NB_INST];
   55.33 +	for( i = 0; i < NB_INST; i++ )
   55.34 +	{
   55.35 +		equaIncDecLevel[i] = new float [3];
   55.36 +		for( j = 0; j < 3; j++ )
   55.37 +			equaIncDecLevel[i][j] = 0.0f;
   55.38 +	}
   55.39 +	this->InitEquaIncDecLevel();
   55.40 +
   55.41 +	// equa Depth & Def
   55.42 +	equaNbElements = sqrt( fxScreen1->GetFxEqua()->NbElements() );
   55.43 +	equaDef   = new int   * [equaNbElements];
   55.44 +	equaDepth = new float * [equaNbElements];
   55.45 +	for( i = 0; i < equaNbElements; i++ )
   55.46 +	{
   55.47 +		equaDef  [i] = new int   [equaNbElements];
   55.48 +		equaDepth[i] = new float [equaNbElements];
   55.49 +		for( j = 0; j < equaNbElements; j++ )
   55.50 +		{
   55.51 +			equaDef  [i][j] = 0;
   55.52 +			equaDepth[i][j] = 0.0f;
   55.53 +		}
   55.54 +	}
   55.55 +	this->InitEquaDefDepth();
   55.56 +
   55.57 +	// Spherical
   55.58 +	target      =   0;
   55.59 +	lastTarget  = - 1;
   55.60 +	morphFactor = 0.0f;
   55.61 +
   55.62 +	// Touff
   55.63 +	stepDance     = 0;
   55.64 +	lastStepDance = - 1;
   55.65 +	windTouf      = 0;
   55.66 +	lastWindTouf  = - 1;
   55.67 +
   55.68 +	// greetz
   55.69 +	greetz     = 0;
   55.70 +	lastGreetz = 0;
   55.71 +
   55.72 +	return;
   55.73 +
   55.74 +}
   55.75 +
   55.76 +void fxSync :: Kill( void )
   55.77 +{
   55.78 +
   55.79 +	int i;
   55.80 +
   55.81 +	// Sound Detection ...
   55.82 +	delete detection;
   55.83 +
   55.84 +	// Average Filter ...
   55.85 +	for( i = 0; i < NB_INST; i++ )
   55.86 +		delete [] equaIncDecLevel[i];
   55.87 +	delete [] equaIncDecLevel;
   55.88 +
   55.89 +	// equa Depth & Def
   55.90 +	for( i = 0; i < equaNbElements; i++ )
   55.91 +	{
   55.92 +		delete [] equaDef  [i];
   55.93 +		delete [] equaDepth[i];
   55.94 +	}
   55.95 +	delete [] equaDef;
   55.96 +	delete [] equaDepth;
   55.97 +
   55.98 +	return;
   55.99 +}
  55.100 +
  55.101 +void fxSync :: InitEquaIncDecLevel( void )
  55.102 +{
  55.103 +	// Bass ...
  55.104 +	equaIncDecLevel[INST_BASS][SMPL_DEC]   = 1.5f;
  55.105 +	// HHat ...
  55.106 +	equaIncDecLevel[INST_HHAT][SMPL_DEC]   = 4.0f;
  55.107 +	// BassDrum
  55.108 +	equaIncDecLevel[INST_BDRUM][SMPL_DEC]  = 4.0f;
  55.109 +	// Snare Drum
  55.110 +	equaIncDecLevel[INST_SNARE][SMPL_DEC]  = 4.0f;
  55.111 +	// Small BassDrum
  55.112 +	equaIncDecLevel[INST_SBDRUM][SMPL_DEC] = 4.0f;
  55.113 +	// Nap 1
  55.114 +	equaIncDecLevel[INST_NAP1][SMPL_INC]   = 0.2f;
  55.115 +	equaIncDecLevel[INST_NAP1][SMPL_DEC]   = 0.4f;
  55.116 +	// Nap 2
  55.117 +	equaIncDecLevel[INST_NAP2][SMPL_INC]   = 0.2f;
  55.118 +	equaIncDecLevel[INST_NAP2][SMPL_DEC]   = 0.4f;
  55.119 +
  55.120 +	return;
  55.121 +
  55.122 +}
  55.123 +extern void Write2Console( const char * data );
  55.124 +#include <string.h>
  55.125 +void fxSync :: InitEquaDefDepth( void )
  55.126 +{
  55.127 +
  55.128 +#if 0
  55.129 +	// Bass Def ...
  55.130 +	equaDef  [INST_BASS][0] =  4;
  55.131 +	equaDef  [INST_BASS][1] = 13;
  55.132 +	equaDef  [INST_BASS][2] = 15;
  55.133 +	equaDef  [INST_BASS][3] = 27;
  55.134 +	equaDef  [INST_BASS][4] = 28;
  55.135 +	equaDef  [INST_BASS][5] = 36;
  55.136 +	equaDef  [INST_BASS][6] = 45;
  55.137 +	equaDepth[INST_BASS][0] = 1.0f;
  55.138 +	equaDepth[INST_BASS][1] = 0.4f;
  55.139 +	equaDepth[INST_BASS][2] = 0.8f;
  55.140 +	equaDepth[INST_BASS][3] = 0.1f;
  55.141 +	equaDepth[INST_BASS][4] = 0.3f;
  55.142 +	equaDepth[INST_BASS][5] = 0.2f;
  55.143 +	equaDepth[INST_BASS][6] = 0.6f;
  55.144 +	// HHat Def ...
  55.145 +	equaDef  [INST_HHAT][0] =  3;
  55.146 +	equaDef  [INST_HHAT][1] = 10;
  55.147 +	equaDef  [INST_HHAT][2] = 20;
  55.148 +	equaDef  [INST_HHAT][3] = 21;
  55.149 +	equaDef  [INST_HHAT][4] = 32;
  55.150 +	equaDef  [INST_HHAT][5] = 38;
  55.151 +	equaDef  [INST_HHAT][6] = 42;
  55.152 +	equaDepth[INST_HHAT][0] = 0.2f;
  55.153 +	equaDepth[INST_HHAT][1] = 0.8f;
  55.154 +	equaDepth[INST_HHAT][2] = 0.1f;
  55.155 +	equaDepth[INST_HHAT][3] = 0.6f;
  55.156 +	equaDepth[INST_HHAT][4] = 1.0f;
  55.157 +	equaDepth[INST_HHAT][5] = 0.4f;
  55.158 +	equaDepth[INST_HHAT][6] = 0.3f;
  55.159 +	// Bass Drum
  55.160 +	equaDef  [INST_BDRUM][0] =  2;
  55.161 +	equaDef  [INST_BDRUM][1] =  9;
  55.162 +	equaDef  [INST_BDRUM][2] = 16;
  55.163 +	equaDef  [INST_BDRUM][3] = 26;
  55.164 +	equaDef  [INST_BDRUM][4] = 29;
  55.165 +	equaDef  [INST_BDRUM][5] = 35;
  55.166 +	equaDef  [INST_BDRUM][6] = 44;
  55.167 +	equaDepth[INST_BDRUM][0] = 0.6f;
  55.168 +	equaDepth[INST_BDRUM][1] = 0.2f;
  55.169 +	equaDepth[INST_BDRUM][2] = 1.0f;
  55.170 +	equaDepth[INST_BDRUM][3] = 0.4f;
  55.171 +	equaDepth[INST_BDRUM][4] = 0.1f;
  55.172 +	equaDepth[INST_BDRUM][5] = 0.8f;
  55.173 +	equaDepth[INST_BDRUM][6] = 0.3f;
  55.174 +	// Snare Drum
  55.175 +	equaDef  [INST_SNARE][0] =  5;
  55.176 +	equaDef  [INST_SNARE][1] =  8;
  55.177 +	equaDef  [INST_SNARE][2] = 14;
  55.178 +	equaDef  [INST_SNARE][3] = 24;
  55.179 +	equaDef  [INST_SNARE][4] = 33;
  55.180 +	equaDef  [INST_SNARE][5] = 40;
  55.181 +	equaDef  [INST_SNARE][6] = 46;
  55.182 +	equaDepth[INST_SNARE][0] = 0.4f;
  55.183 +	equaDepth[INST_SNARE][1] = 0.6f;
  55.184 +	equaDepth[INST_SNARE][2] = 0.1f;
  55.185 +	equaDepth[INST_SNARE][3] = 1.0f;
  55.186 +	equaDepth[INST_SNARE][4] = 0.2f;
  55.187 +	equaDepth[INST_SNARE][5] = 0.3f;
  55.188 +	equaDepth[INST_SNARE][6] = 0.8f;
  55.189 +	// Small BassDrum
  55.190 +	equaDef  [INST_SBDRUM][0] =  1;
  55.191 +	equaDef  [INST_SBDRUM][1] = 11;
  55.192 +	equaDef  [INST_SBDRUM][2] = 18;
  55.193 +	equaDef  [INST_SBDRUM][3] = 23;
  55.194 +	equaDef  [INST_SBDRUM][4] = 31;
  55.195 +	equaDef  [INST_SBDRUM][5] = 39;
  55.196 +	equaDef  [INST_SBDRUM][6] = 47;
  55.197 +	equaDepth[INST_SBDRUM][0] = 0.4f;
  55.198 +	equaDepth[INST_SBDRUM][1] = 1.0f;
  55.199 +	equaDepth[INST_SBDRUM][2] = 0.3f;
  55.200 +	equaDepth[INST_SBDRUM][3] = 0.8f;
  55.201 +	equaDepth[INST_SBDRUM][4] = 0.2f;
  55.202 +	equaDepth[INST_SBDRUM][5] = 0.1f;
  55.203 +	equaDepth[INST_SBDRUM][6] = 0.6f;
  55.204 +	// Nap 1
  55.205 +	equaDef  [INST_NAP1][0] =  0;
  55.206 +	equaDef  [INST_NAP1][1] = 12;
  55.207 +	equaDef  [INST_NAP1][2] = 17;
  55.208 +	equaDef  [INST_NAP1][3] = 25;
  55.209 +	equaDef  [INST_NAP1][4] = 30;
  55.210 +	equaDef  [INST_NAP1][5] = 41;
  55.211 +	equaDef  [INST_NAP1][6] = 43;
  55.212 +	equaDepth[INST_NAP1][0] = 0.3f;
  55.213 +	equaDepth[INST_NAP1][1] = 0.6f;
  55.214 +	equaDepth[INST_NAP1][2] = 0.1f;
  55.215 +	equaDepth[INST_NAP1][3] = 0.8f;
  55.216 +	equaDepth[INST_NAP1][4] = 0.4f;
  55.217 +	equaDepth[INST_NAP1][5] = 1.0f;
  55.218 +	equaDepth[INST_NAP1][6] = 0.2f;
  55.219 +	// Nap 2
  55.220 +	equaDef  [INST_NAP2][0] =  6;
  55.221 +	equaDef  [INST_NAP2][1] =  7;
  55.222 +	equaDef  [INST_NAP2][2] = 19;
  55.223 +	equaDef  [INST_NAP2][3] = 22;
  55.224 +	equaDef  [INST_NAP2][4] = 34;
  55.225 +	equaDef  [INST_NAP2][5] = 37;
  55.226 +	equaDef  [INST_NAP2][6] = 48;
  55.227 +	equaDepth[INST_NAP2][0] = 0.8f;
  55.228 +	equaDepth[INST_NAP2][1] = 0.2f;
  55.229 +	equaDepth[INST_NAP2][2] = 0.6f;
  55.230 +	equaDepth[INST_NAP2][3] = 1.0f;
  55.231 +	equaDepth[INST_NAP2][4] = 0.2f;
  55.232 +	equaDepth[INST_NAP2][5] = 0.3f;
  55.233 +	equaDepth[INST_NAP2][6] = 0.4f;
  55.234 +
  55.235 +#endif
  55.236 +char toto[1024];
  55.237 +
  55.238 +	for( int i = 0; i < equaNbElements; i++ )
  55.239 +	{
  55.240 +		for( int j = 0; j < equaNbElements; j++ )
  55.241 +		{
  55.242 +			equaDef  [i%NB_INST][j] = ( i * equaNbElements + j + NB_INST ) % fxScreen1->GetFxEqua()->NbElements();
  55.243 +			equaDepth[i%NB_INST][j] = ( ( i * equaNbElements + j * NB_INST ) ) % 10 / 10.0 + 0.1;
  55.244 +		}
  55.245 +	}
  55.246 +	return;
  55.247 +
  55.248 +}
  55.249 +
  55.250 +void fxSync :: SetSmplLevel( enum SamplesDef i, float _level )
  55.251 +{
  55.252 +
  55.253 +	equaIncDecLevel[i][SMPL_LEVEL] = _level;
  55.254 +
  55.255 +	return;
  55.256 +}
  55.257 +
  55.258 +float fxSync :: GetSmplLevel( enum SamplesDef i )
  55.259 +{
  55.260 +
  55.261 +	return ( equaIncDecLevel[i][SMPL_LEVEL] );
  55.262 +
  55.263 +}
  55.264 +
  55.265 +void fxSync :: SmplInc( enum SamplesDef i )
  55.266 +{
  55.267 +
  55.268 +	equaIncDecLevel[i][SMPL_LEVEL] += equaIncDecLevel[i][SMPL_INC] * Timer->GetFrameTime();
  55.269 +	if( equaIncDecLevel[i][SMPL_LEVEL] > 1.0f )
  55.270 +		equaIncDecLevel[i][SMPL_LEVEL] = 1.0f;
  55.271 +	else
  55.272 +	{
  55.273 +		if( equaIncDecLevel[i][SMPL_LEVEL] < 0.0f )
  55.274 +			equaIncDecLevel[i][SMPL_LEVEL] = 0.0f;
  55.275 +	}
  55.276 +
  55.277 +	return;
  55.278 +
  55.279 +}
  55.280 +
  55.281 +void fxSync :: SmplDec( enum SamplesDef i )
  55.282 +{
  55.283 +
  55.284 +	equaIncDecLevel[i][SMPL_LEVEL] -= equaIncDecLevel[i][SMPL_DEC] * Timer->GetFrameTime();
  55.285 +	if( equaIncDecLevel[i][SMPL_LEVEL] > 1.0f )
  55.286 +		equaIncDecLevel[i][SMPL_LEVEL] = 1.0f;
  55.287 +	else
  55.288 +	{
  55.289 +		if( equaIncDecLevel[i][SMPL_LEVEL] < 0.0f )
  55.290 +			equaIncDecLevel[i][SMPL_LEVEL] = 0.0f;
  55.291 +	}
  55.292 +
  55.293 +	return;
  55.294 +
  55.295 +}
  55.296 +
  55.297 +void  fxSync :: SetEquaDefDepth ( enum SamplesDef i, float _factor )
  55.298 +{
  55.299 +	int j;
  55.300 +	for( j = 0; j < equaNbElements; j++ )
  55.301 +		fxScreen1->GetFxEqua()->SetDepthLevel( equaDef[i][j], equaDepth[i][j] * _factor );
  55.302 +}
  55.303 +
  55.304 +
  55.305 +void  fxSync :: SyncEqua( void )
  55.306 +{
  55.307 +//	if( this->detection->InFxScreen1() )
  55.308 +//	{
  55.309 +		enum SamplesDef i;
  55.310 +		SamplesData data;
  55.311 +	
  55.312 +		for( i = INST_BASS; i <= INST_SBDRUM; i = ( (enum SamplesDef) ( (int)i + 1 ) ) )
  55.313 +		{
  55.314 +			data = this->detection->GetSampleData( i );
  55.315 +			if( data.playing )
  55.316 +			{
  55.317 +				SetEquaDefDepth( i, data.volume );
  55.318 +				SetSmplLevel( i, data.volume );
  55.319 +			}
  55.320 +			else	
  55.321 +			{
  55.322 +				SmplDec( i );
  55.323 +				SetEquaDefDepth( i, GetSmplLevel( i ) );
  55.324 +			}
  55.325 +		}	
  55.326 +
  55.327 +		// Nap 1
  55.328 +		data = this->detection->GetSampleData( INST_NAP1 );
  55.329 +		if( data.playing )
  55.330 +		{
  55.331 +			SmplInc( INST_NAP1 );
  55.332 +			SetEquaDefDepth( INST_NAP1, GetSmplLevel( INST_NAP1 ) );
  55.333 +		}
  55.334 +		else
  55.335 +		{
  55.336 +			SmplDec( INST_NAP1 );
  55.337 +			SetEquaDefDepth( INST_NAP1, GetSmplLevel( INST_NAP1 ) );
  55.338 +		}
  55.339 +
  55.340 +		// Nap 2
  55.341 +		data = this->detection->GetSampleData( INST_NAP2 );
  55.342 +		if( data.playing )
  55.343 +		{
  55.344 +			SmplInc( INST_NAP2 );
  55.345 +			SetEquaDefDepth( INST_NAP2, GetSmplLevel( INST_NAP2 ) );
  55.346 +		}
  55.347 +		else
  55.348 +		{
  55.349 +			SmplDec( INST_NAP2 );
  55.350 +			SetEquaDefDepth( INST_NAP2, GetSmplLevel( INST_NAP2 ) );
  55.351 +		}
  55.352 +
  55.353 +//	}
  55.354 +	return;
  55.355 +
  55.356 +}
  55.357 +
  55.358 +void fxSync :: SyncSpherical( void )
  55.359 +{
  55.360 +//	if( this->detection->InFxScreen1() )
  55.361 +//	{
  55.362 +		SamplesData data;
  55.363 +
  55.364 +		data = this->detection->GetSampleData( INST_NAP2 );
  55.365 +		if( data.playing )
  55.366 +		{
  55.367 +			lastTarget = target;
  55.368 +			morphFactor += 1.0f / MORPH_RATE * Timer->GetFrameTime();
  55.369 +			if( morphFactor > 1.0f )
  55.370 +				morphFactor = 1.0f;
  55.371 +		}
  55.372 +		else
  55.373 +		{
  55.374 +			if( lastTarget == target )
  55.375 +				target++;
  55.376 +			morphFactor = 0.0f;
  55.377 +		}
  55.378 +		
  55.379 +		fxScreen1->GetFxSpherical()->MakeMorph( target % fxScreen1->GetFxSpherical()->NbShapes(),
  55.380 +												( target + 1 ) % fxScreen1->GetFxSpherical()->NbShapes(),
  55.381 +												morphFactor );
  55.382 +//	}
  55.383 +
  55.384 +	return;
  55.385 +
  55.386 +}
  55.387 +
  55.388 +#ifdef SOTA_DEBUG_MODE
  55.389 +extern void Write2Console( const char * data );
  55.390 +#endif
  55.391 +void fxSync :: SyncSnareTouf( void )
  55.392 +{
  55.393 +//	if( this->detection->InFxScreen2() )
  55.394 +//	{
  55.395 +		SamplesData data;
  55.396 +		data = this->detection->GetSampleData( INST_SNARE );
  55.397 +		if( data.playing )
  55.398 +		{   
  55.399 +			if( lastStepDance == stepDance )
  55.400 +			{
  55.401 +				stepDance++;
  55.402 +				#ifdef SOTA_DEBUG_MODE
  55.403 +				Write2Console( "fxScreen2->HandleSnareSound();" );
  55.404 +				Write2Console( "ok" );
  55.405 +				#endif
  55.406 +
  55.407 +        //fxScreen2->HandleSnareSound(); // to not compile code not used
  55.408 +			}
  55.409 +		}
  55.410 +		else
  55.411 +			lastStepDance = stepDance;
  55.412 +
  55.413 +//	}
  55.414 +
  55.415 +	return;
  55.416 +}
  55.417 +
  55.418 +void fxSync :: SyncWindTouf( void )
  55.419 +{
  55.420 +//	if( this->detection->InFxScreen2() )
  55.421 +//	{
  55.422 +
  55.423 +	SamplesData data;
  55.424 +	data = this->detection->GetSampleData( INST_GROOVE );
  55.425 +
  55.426 +	if( data.playing )
  55.427 +	{
  55.428 +		if( lastWindTouf == windTouf )
  55.429 +		{
  55.430 +			windTouf++;
  55.431 +			fxScreen2->HandleWindSound();
  55.432 +		}
  55.433 +	}
  55.434 +	else
  55.435 +		lastWindTouf = windTouf;
  55.436 +
  55.437 +	
  55.438 +//  }
  55.439 +	return;
  55.440 +
  55.441 +}
  55.442 +
  55.443 +bool fxSync :: GetGreetzSync( void )
  55.444 +{
  55.445 +
  55.446 +	if( this->detection->GetSampleData( INST_BDRUM ).playing )
  55.447 +	{
  55.448 +		if( greetz == lastGreetz )
  55.449 +		{
  55.450 +			greetz++;
  55.451 +			return true;
  55.452 +		}
  55.453 +	}
  55.454 +	else
  55.455 +	{
  55.456 +		lastGreetz = greetz;
  55.457 +		return false;
  55.458 +	}
  55.459 +
  55.460 +	return false;
  55.461 +
  55.462 +}
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/fxSync.h	Tue Nov 27 15:23:52 2007 +0100
    56.3 @@ -0,0 +1,75 @@
    56.4 +
    56.5 +
    56.6 +#ifndef __FX_SYNC__
    56.7 +#define __FX_SYNC__
    56.8 +
    56.9 +#include "smplInfo.h"
   56.10 +#include "sndDetect.h"
   56.11 +#include "cmn_intro.h"
   56.12 +// efx
   56.13 +#include "efx_screen1.h"
   56.14 +#include "efx_screen2.h"
   56.15 +
   56.16 +// Spherical Morph Rate
   56.17 +#define MORPH_RATE 3.0f
   56.18 +
   56.19 +
   56.20 +class fxSync
   56.21 +{
   56.22 +
   56.23 +private:
   56.24 +	sndDetect * detection;
   56.25 +	
   56.26 +	// Equa ...
   56.27 +	float ** equaIncDecLevel;
   56.28 +	int   ** equaDef;
   56.29 +	float ** equaDepth;
   56.30 +	int      equaNbElements;
   56.31 +
   56.32 +	// Spherical
   56.33 +	int target;
   56.34 +	int lastTarget;
   56.35 +	float morphFactor;
   56.36 +
   56.37 +	// Touff
   56.38 +	int stepDance;
   56.39 +	int lastStepDance;
   56.40 +	int windTouf;
   56.41 +	int lastWindTouf;
   56.42 +
   56.43 +	// Greetz
   56.44 +	int greetz;
   56.45 +	int lastGreetz;
   56.46 +
   56.47 +public:
   56.48 +	fxSync();
   56.49 +	~fxSync();
   56.50 +
   56.51 +	void Init( void );
   56.52 +	void Kill( void );
   56.53 +
   56.54 +	sndDetect * GetDetection( void ) { return ( detection ); }
   56.55 +
   56.56 +	// Equa Related Funcs ...
   56.57 +	void  InitEquaIncDecLevel( void );
   56.58 +	void  InitEquaDefDepth( void );
   56.59 +	void  SetSmplLevel( enum SamplesDef i, float _level );
   56.60 +	float GetSmplLevel( enum SamplesDef i );
   56.61 +	void  SetEquaDefDepth ( enum SamplesDef i, float _factor );
   56.62 +	void  SmplInc( enum SamplesDef i );
   56.63 +	void  SmplDec( enum SamplesDef i );
   56.64 +	void  SyncEqua( void );
   56.65 +
   56.66 +	// Spherical Sync ...
   56.67 +	void SyncSpherical( void );
   56.68 +
   56.69 +	// Touffes Sync ...
   56.70 +	void SyncSnareTouf( void );
   56.71 +	void SyncWindTouf( void );
   56.72 +
   56.73 +	// Greetz
   56.74 +	bool GetGreetzSync( void );
   56.75 +
   56.76 +};
   56.77 +
   56.78 +#endif
   56.79 \ No newline at end of file
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/gl_header.h	Tue Nov 27 15:23:52 2007 +0100
    57.3 @@ -0,0 +1,8 @@
    57.4 +#ifndef GL_HEADER_H
    57.5 +#define GL_HEADER_H
    57.6 +
    57.7 +#include <windows.h>
    57.8 +#include <GL/gl.h>
    57.9 +#include <GL/glu.h>
   57.10 +                       
   57.11 +#endif
   57.12 \ No newline at end of file
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/main.cxx	Tue Nov 27 15:23:52 2007 +0100
    58.3 @@ -0,0 +1,780 @@
    58.4 +/************************************************************************/
    58.5 +
    58.6 +/* Intro Framework for SOTA 2003 - Stv | Syn[Rj]                        */
    58.7 +
    58.8 +/************************************************************************/
    58.9 +
   58.10 +
   58.11 +
   58.12 +#include <stdio.h>
   58.13 +#include <stdlib.h>
   58.14 +#include <windows.h>
   58.15 +#include "window_fmod_init.h"
   58.16 +#include <math.h>
   58.17 +#include "gl_header.h"
   58.18 +#include "resource.h"
   58.19 +#include "minifmod/minifmod.h"
   58.20 +
   58.21 +
   58.22 +// Effects
   58.23 +#include "cmn_intro.h"
   58.24 +#include "efx_touf.h"
   58.25 +#include "efx_screen0.h"
   58.26 +#include "efx_screen1.h"
   58.27 +#include "efx_screen2.h"
   58.28 +#include "efx_screen3.h"
   58.29 +#include "efx_screen4.h"
   58.30 +#include "rdr_font.h"
   58.31 +//#include "efx_rub.h"
   58.32 +
   58.33 +// Transistion
   58.34 +#include "trans_glow.h"
   58.35 +#include "trans_explode.h"
   58.36 +#include "trans_fade.h"
   58.37 +#include "trans_explode2.h"
   58.38 +#include "trans_radial.h"
   58.39 +#include "trans_puzzle.h"
   58.40 +
   58.41 +// undefine this to skip sound system
   58.42 +#define SOUND
   58.43 +
   58.44 +
   58.45 +
   58.46 +// Some pragmas to avoid VC's fucking warnings ....
   58.47 +#pragma warning (disable:4305 4244 4800)
   58.48 +#pragma comment(linker, "/OPT:NOWIN98" )
   58.49 +#pragma comment(lib, "minifmod.lib") // Minifmod
   58.50 +#pragma comment(lib, "winmm.lib") // For minifmod lib
   58.51 +#pragma comment(lib, "opengl32.lib") // Opengl lib
   58.52 +#pragma comment(lib, "glu32.lib") // Glu lib
   58.53 +
   58.54 +
   58.55 +extern HDC hDC;		
   58.56 +
   58.57 +
   58.58 +
   58.59 +FMUSIC_MODULE *intro_mod;          
   58.60 +
   58.61 +
   58.62 +
   58.63 +extern BOOL fullscreen;
   58.64 +extern BOOL done;	
   58.65 +
   58.66 +
   58.67 +
   58.68 +EXTERN_C int WINAPI WinMainCRTStartup();
   58.69 +EXTERN_C int WINAPI WinMainCRTStartup()
   58.70 +{
   58.71 +  HINSTANCE hInstance = GetModuleHandle(NULL);
   58.72 +  LPSTR lpszCmdLine = GetCommandLine();
   58.73 +  int r = WinMain(hInstance,NULL,lpszCmdLine,SW_SHOWDEFAULT);
   58.74 +  ExitProcess(r);
   58.75 +  return r;
   58.76 +}
   58.77 +
   58.78 +
   58.79 +// Effects
   58.80 +efxScreen0_t* fxScreen0;
   58.81 +efxScreen1_t* fxScreen1;
   58.82 +efxScreen2_t* fxScreen2;
   58.83 +efxScreen3_t* fxScreen3;
   58.84 +efxScreen4_t* fxScreen4;
   58.85 +//efxRub_t* fxRub;
   58.86 +
   58.87 +// Font
   58.88 +rdrFont_t* font;
   58.89 +
   58.90 +// Timer
   58.91 +cmnTimer_t* Timer;
   58.92 +
   58.93 +// Transitions
   58.94 +#ifdef TRY_GLOW
   58.95 +trans_Glow_t *glowTrans;
   58.96 +#endif
   58.97 +
   58.98 +#ifdef TRY_OLD_EXPLODE
   58.99 +trans_Explode_t *explode;
  58.100 +#endif
  58.101 +transFade_t *fade;
  58.102 +transExplode2_t *explode2;
  58.103 +
  58.104 +#ifdef TEST_RADIAL
  58.105 +transRadial_t *radial;
  58.106 +#endif
  58.107 +
  58.108 +transPuzzle_t *puzzle;
  58.109 +
  58.110 +// Sync
  58.111 +fxSync * sync;
  58.112 +
  58.113 +float mosaik_alpha = 0.f;
  58.114 +
  58.115 +
  58.116 +
  58.117 +
  58.118 +
  58.119 +#define ACTIVATED_EFFECT0
  58.120 +#define ACTIVATED_EFFECT1
  58.121 +#define ACTIVATED_EFFECT2
  58.122 +#define ACTIVATED_EFFECT3
  58.123 +#define ACTIVATED_EFFECT4
  58.124 +
  58.125 +//#define JUMP_TO_EFFET
  58.126 +
  58.127 +//#define ACTIVE_TRANSITION // comment it to remove transition
  58.128 +
  58.129 +#define SCREEN0_START 0.0
  58.130 +#define SCREEN0_END (12.312+2)
  58.131 +
  58.132 +#define SCREEN1_START (12.312-2)
  58.133 +#define SCREEN1_END (49.000)
  58.134 +
  58.135 +#define SCREEN2_START (49.000)
  58.136 +#define SCREEN2_END (86.0+2)
  58.137 +
  58.138 +#define SCREEN3_START (86.0-2)
  58.139 +#define SCREEN3_END (129.0-2)
  58.140 +
  58.141 +#define SCREEN4_START (129.0-2)
  58.142 +#define SCREEN4_END 1e5
  58.143 +
  58.144 +
  58.145 +#define TRANS0_START (mth::Min(SCREEN0_END,SCREEN1_START))
  58.146 +#define TRANS0_END (mth::Max(SCREEN0_END,SCREEN1_START))
  58.147 +
  58.148 +#define TRANS1_START (SCREEN1_END)
  58.149 +#define TRANS1_END (TRANS1_START+4)
  58.150 +
  58.151 +#define TRANS2_START (mth::Min(SCREEN2_END,SCREEN3_START))
  58.152 +#define TRANS2_END (mth::Max(SCREEN2_END,SCREEN3_START))
  58.153 +
  58.154 +#define TRANS3_START (SCREEN3_END-0.5) // warning transition must start to a quarter of time
  58.155 +#define TRANS3_END (SCREEN4_START+1.5)
  58.156 +
  58.157 +float Transition0=0;
  58.158 +float Transition2=0;
  58.159 +float Transition3=0;
  58.160 +
  58.161 +
  58.162 +void UpdateLoading(float move)
  58.163 +{
  58.164 +//  cmnPushGLState();
  58.165 +//  cmnPushMatrix();
  58.166 +  cmnClearScreen();
  58.167 +
  58.168 +	glLoadIdentity();
  58.169 +	
  58.170 +	glPushMatrix();
  58.171 +	
  58.172 +	glBegin(GL_QUADS);
  58.173 +		// Left
  58.174 +		glColor4ub(0, 0, 0, 255);
  58.175 +		glVertex3f(-1.f, -.1f, 0.f);
  58.176 +		glColor4ub(0, 0, 0, 255);
  58.177 +		glVertex3f(-1.f, .005f, 0.f);
  58.178 +		// Right
  58.179 +		glColor4ub(255, 255, 255, 255);
  58.180 +		glVertex3f(move, .005f, 0.f);
  58.181 +		glColor4ub(255, 255, 255, 255);
  58.182 +		glVertex3f(move, -.1f, 0.f);
  58.183 +	glEnd();
  58.184 +	
  58.185 +	glPopMatrix();
  58.186 +	
  58.187 +	SwapBuffers(hDC);
  58.188 +//  cmnPopMatrix();
  58.189 +//  cmnPopGLState();
  58.190 +}
  58.191 +
  58.192 +
  58.193 +void InitDemo(void)               
  58.194 +{
  58.195 +
  58.196 +	cmnClearScreen();
  58.197 +
  58.198 +	float loading = -0.85f;
  58.199 +	float loading_step = 0.152f;
  58.200 +	/*
  58.201 +	 *	Init Effect here eg. MyEffect_Init()
  58.202 +	 */
  58.203 +
  58.204 +	UpdateLoading(loading);
  58.205 +
  58.206 +	Timer = new cmnTimer_t;
  58.207 +	Timer->Init();
  58.208 +
  58.209 +	loading += loading_step;
  58.210 +	UpdateLoading(loading);
  58.211 +
  58.212 +	font=new rdrFont_t;
  58.213 +	font->Init(txtLoadTextureFromMemory(IDB_BITMAP1),' ',16,1024,16);
  58.214 +	
  58.215 +	loading += loading_step;
  58.216 +	UpdateLoading(loading);
  58.217 +
  58.218 +    fxScreen0 =new efxScreen0_t;
  58.219 +	fxScreen0->Init();
  58.220 +
  58.221 +	loading += loading_step;
  58.222 +	UpdateLoading(loading);
  58.223 +
  58.224 +	fxScreen1 =new efxScreen1_t;
  58.225 +	fxScreen1->Init();
  58.226 +
  58.227 +	loading += loading_step;
  58.228 +	UpdateLoading(loading);
  58.229 +
  58.230 +	fxScreen2=new efxScreen2_t;
  58.231 +	fxScreen2->Init();
  58.232 +
  58.233 +	loading += loading_step;
  58.234 +	UpdateLoading(loading);
  58.235 +
  58.236 +#ifdef ACTIVATED_EFFECT3
  58.237 +	fxScreen3=new efxScreen3_t;
  58.238 +	fxScreen3->Init();
  58.239 +#endif
  58.240 +
  58.241 +	loading += loading_step;
  58.242 +	UpdateLoading(loading);
  58.243 +
  58.244 +	
  58.245 +	fxScreen4=new efxScreen4_t;
  58.246 +	fxScreen4->Init();
  58.247 +
  58.248 +	loading += loading_step;
  58.249 +	UpdateLoading(loading);
  58.250 +
  58.251 +#ifdef TRY_GLOW
  58.252 +
  58.253 +	glowTrans = new trans_Glow_t;
  58.254 +	cmnPushGLState();
  58.255 +	glowTrans->glowPass[0] = glowTrans->CreateOnePass(32, 32);
  58.256 +	glowTrans->glowPass[1] = glowTrans->CreateOnePass(64, 64);
  58.257 +	glowTrans->glowPass[2] = glowTrans->CreateOnePass(128, 128);
  58.258 +	glowTrans->glowPass[3] = glowTrans->CreateOnePass(256, 256);
  58.259 +	cmnPopGLState();
  58.260 +#endif
  58.261 +
  58.262 +	loading += loading_step;
  58.263 +	UpdateLoading(loading);
  58.264 +
  58.265 +#ifdef TRY_OLD_EXPLODE
  58.266 +	cmnPushGLState();
  58.267 +	explode = new trans_Explode_t(10, 10); // x and y param should be EXACTLY the same (i'll fix it asap :))
  58.268 +	explode->SetQuadsProperty();
  58.269 +	explode->explode_map = explode->CreateTextureTransition(256, 256);
  58.270 +	cmnPopGLState();
  58.271 +#endif
  58.272 +
  58.273 +  fade=new transFade_t;
  58.274 +  fade->Init();
  58.275 +
  58.276 +  loading += loading_step;
  58.277 +  UpdateLoading(loading);
  58.278 +
  58.279 +  explode2= new transExplode2_t;
  58.280 +  explode2->Init(20,20);
  58.281 +
  58.282 +  loading += loading_step;
  58.283 +  UpdateLoading(loading);
  58.284 +
  58.285 +#ifdef TEST_RADIAL
  58.286 +  radial= new transRadial_t;
  58.287 +  radial->Init();
  58.288 +#endif
  58.289 +
  58.290 +  puzzle= new transPuzzle_t;
  58.291 +  puzzle->Init(20,20);
  58.292 +
  58.293 +  loading += loading_step;
  58.294 +  UpdateLoading(loading);
  58.295 +
  58.296 +  // sync
  58.297 +	sync = new fxSync();
  58.298 +	sync->Init();
  58.299 +
  58.300 +  loading += loading_step;
  58.301 +  UpdateLoading(loading);
  58.302 +
  58.303 +
  58.304 +//  loading += loading_step;
  58.305 +//  UpdateLoading(loading);
  58.306 +
  58.307 +
  58.308 +  // to be sure to have the good time after init
  58.309 +  Timer->Init();
  58.310 +
  58.311 +}
  58.312 +
  58.313 +
  58.314 +
  58.315 +
  58.316 +
  58.317 +#if 0
  58.318 + // Set it to one for the rendering with STV
  58.319 +	fxScreen2->Update();
  58.320 +
  58.321 +	cmnPushGLState();
  58.322 +	
  58.323 +	glowTrans->StartGlow();
  58.324 +
  58.325 +	cmnPushGLState();
  58.326 +	fxScreen2->Draw();
  58.327 +	cmnPopGLState();
  58.328 +	
  58.329 +	glowTrans->StartRendering(glowTrans->glowPass[0], 32, 32);	
  58.330 +	glowTrans->DoAllDefaultPasses();
  58.331 +	glowTrans->EndGlow();
  58.332 +
  58.333 +	// Original scene
  58.334 +	cmnPushGLState();
  58.335 +	fxScreen2->Draw();
  58.336 +	cmnPopGLState();
  58.337 +
  58.338 +	// Apply glow over original scene
  58.339 +	if (FMUSIC_GetOrder(intro_mod)>=3)
  58.340 +		if ((FMUSIC_GetRow(intro_mod)+4)&8)
  58.341 +			mosaik_alpha = 0.5f;
  58.342 +
  58.343 +	if (mosaik_alpha > 0.f)
  58.344 +		mosaik_alpha -= Timer->GetFrameTime()*2.5f;
  58.345 +
  58.346 +	glowTrans->ApplyGlowToScene(glowTrans->glowPass[3], 0.75f);//mosaik_alpha);
  58.347 +	cmnPopGLState();
  58.348 +
  58.349 +#endif
  58.350 +
  58.351 +
  58.352 +
  58.353 +
  58.354 +
  58.355 +
  58.356 +
  58.357 +
  58.358 +
  58.359 +
  58.360 +
  58.361 +
  58.362 +
  58.363 +
  58.364 +   
  58.365 +void RunDemo(void)               
  58.366 +{
  58.367 +
  58.368 +  glEnable(GL_DEPTH_TEST);              // Enables Depth Testing 
  58.369 +  glDepthFunc(GL_LESS);
  58.370 +  glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
  58.371 +
  58.372 +	cmnClearScreen();
  58.373 +	cmnSetFrustrum(90);
  58.374 +
  58.375 +  // Default camera do not modify it, see in screenx_t->Draw(). A camera should created in it
  58.376 +	cmnSetCamera( mth::Vector3_t( 12.5, 0, 100 ), mth::Vector3_t( 15 , 15, 0 ) );
  58.377 +
  58.378 +
  58.379 +
  58.380 + /** PSC80
  58.381 +  *  I have put some define to buy pass the current sync on screen
  58.382 +  *  If you want to use the sync from mod remove comment this define
  58.383 +  */
  58.384 +#define DO_NOT_SYNC_SCREEN_FROM_FMOD
  58.385 +
  58.386 +
  58.387 +
  58.388 +
  58.389 +
  58.390 +
  58.391 +
  58.392 +#ifdef ACTIVATED_EFFECT0
  58.393 +  #ifndef JUMP_TO_EFFET
  58.394 +    #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD
  58.395 +
  58.396 +  if(sync->GetDetection()->InFxScreen0() )
  58.397 +
  58.398 +    #else
  58.399 +
  58.400 +  if (Timer->GetRealTime()>=SCREEN0_START && Timer->GetRealTime()<SCREEN0_END)
  58.401 +
  58.402 +    #endif
  58.403 +
  58.404 +  #endif
  58.405 +	{
  58.406 +	cmnPushGLState();
  58.407 +	fxScreen0->Update();
  58.408 +	fxScreen0->Draw();
  58.409 +	cmnPopGLState();
  58.410 +
  58.411 +#ifdef ACTIVE_TRANSITION 
  58.412 +	cmnPushGLState();
  58.413 +
  58.414 +	explode->GetScene(explode->explode_map);
  58.415 +
  58.416 +	if (Timer->GetRealTime() >= SCREEN0_START+((SCREEN0_END-SCREEN0_START)/2.f))
  58.417 +		explode->Animate(0.f, 0.f, Timer->GetFrameTime()/10.f);
  58.418 +
  58.419 +	glEnable(GL_TEXTURE_2D);
  58.420 +	glBindTexture(GL_TEXTURE_2D, explode->explode_map);
  58.421 +
  58.422 +	explode->Draw(Timer->GetFrameTime()/10.f);
  58.423 +
  58.424 +	glDisable(GL_TEXTURE_2D);
  58.425 +	
  58.426 +	cmnPopGLState();
  58.427 +#endif
  58.428 +	}
  58.429 +#endif
  58.430 +
  58.431 +
  58.432 +
  58.433 +
  58.434 +  // transition screen 0 -> screen 1
  58.435 +  if (Timer->GetRealTime()>=TRANS0_START && Timer->GetRealTime() <TRANS0_END) {
  58.436 +    fade->GetBuffer1();
  58.437 +    cmnClearScreen();
  58.438 +  }
  58.439 +
  58.440 +
  58.441 +
  58.442 +
  58.443 +#ifdef ACTIVATED_EFFECT1
  58.444 +  #ifndef JUMP_TO_EFFET
  58.445 +    #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD
  58.446 +
  58.447 +  if(sync->GetDetection()->InFxScreen1() )
  58.448 +
  58.449 +    #else
  58.450 +
  58.451 +  if (Timer->GetRealTime()>=SCREEN1_START && Timer->GetRealTime()<SCREEN1_END)
  58.452 +
  58.453 +    #endif
  58.454 +
  58.455 +  #endif
  58.456 +	{
  58.457 +	cmnPushGLState();
  58.458 +	fxScreen1->Update();
  58.459 +	fxScreen1->Draw();
  58.460 +	cmnPopGLState();
  58.461 +	}
  58.462 +#endif
  58.463 +
  58.464 +  // transition screen 0 -> screen 1
  58.465 +  if (Timer->GetRealTime()>=TRANS0_START && Timer->GetRealTime() <TRANS0_END) {
  58.466 +    fade->GetBuffer2();
  58.467 +    cmnClearScreen();
  58.468 +  }
  58.469 +  
  58.470 +  // transition screen 0 -> screen 1
  58.471 +  if (Timer->GetRealTime()>=TRANS0_START && Timer->GetRealTime() <TRANS0_END) {
  58.472 +    cmnPushGLState();
  58.473 +    Transition0=(Timer->GetRealTime()-TRANS0_START) *1.0 / (TRANS0_END-TRANS0_START);
  58.474 +    
  58.475 +    fade->Draw(Transition0);
  58.476 +  	cmnPopGLState();
  58.477 +  }
  58.478 +
  58.479 +
  58.480 +
  58.481 +
  58.482 +
  58.483 +  // transition screen 1 -> screen 2
  58.484 +  if (Timer->GetRealTime()>=TRANS1_START-0.5 && Timer->GetRealTime() <TRANS1_START && !explode2->Started()) {
  58.485 +    explode2->GetBuffer1();
  58.486 +  }
  58.487 +  if (Timer->GetRealTime()>= TRANS1_START)
  58.488 +    explode2->Start();
  58.489 +
  58.490 +
  58.491 +#ifdef USE_TRANSITION_MOZAIK
  58.492 +  if (Timer->GetRealTime()>= TRANS2_START)
  58.493 +    glowTrans->StartGlow();
  58.494 +#else
  58.495 +#endif
  58.496 +
  58.497 +
  58.498 +#ifdef ACTIVATED_EFFECT2
  58.499 +  #ifndef JUMP_TO_EFFET
  58.500 +    #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD
  58.501 +
  58.502 +	if( sync->GetDetection()->InFxScreen2() )
  58.503 +
  58.504 +    #else
  58.505 +
  58.506 +  if (Timer->GetRealTime()>=SCREEN2_START && Timer->GetRealTime()<SCREEN2_END)
  58.507 +
  58.508 +    #endif
  58.509 +
  58.510 +  #endif
  58.511 +	{
  58.512 +	cmnPushGLState();
  58.513 +	fxScreen2->Update();
  58.514 +	fxScreen2->Draw();
  58.515 +	cmnPopGLState();
  58.516 +	}
  58.517 +#endif
  58.518 +
  58.519 +
  58.520 +  // transition screen 1 -> screen 2
  58.521 +  if (Timer->GetRealTime()>=TRANS1_START && Timer->GetRealTime() <TRANS1_END && explode2->Started()) {
  58.522 +  	cmnPushGLState();
  58.523 +    explode2->Update();
  58.524 +    explode2->Draw();
  58.525 +    cmnPopGLState();
  58.526 +  }
  58.527 +
  58.528 +
  58.529 +
  58.530 +  // transition screen 2 -> screen 3
  58.531 +  if (Timer->GetRealTime()>=TRANS2_START && Timer->GetRealTime() <TRANS2_END) {
  58.532 +    if (!fxScreen2->SetEnd())
  58.533 +      fxScreen2->SetEnd((TRANS2_END-TRANS2_START)/4.0);
  58.534 +    fade->GetBuffer1();
  58.535 +    cmnClearScreen();
  58.536 +  }
  58.537 +
  58.538 +
  58.539 +
  58.540 +#ifdef ACTIVATED_EFFECT3
  58.541 +  #ifndef JUMP_TO_EFFET
  58.542 +    #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD
  58.543 +
  58.544 +	if(!sync->GetDetection()->InFxScreen1() && !sync->GetDetection()->InFxScreen2() )
  58.545 +
  58.546 +    #else
  58.547 +
  58.548 +  if (Timer->GetRealTime()>=SCREEN3_START && Timer->GetRealTime()<SCREEN3_END)
  58.549 +
  58.550 +    #endif
  58.551 +
  58.552 +  #endif
  58.553 +	{
  58.554 +	cmnPushGLState();
  58.555 +	fxScreen3->Update();
  58.556 +	fxScreen3->Draw();
  58.557 +	cmnPopGLState();
  58.558 +	}
  58.559 +#endif
  58.560 +
  58.561 +
  58.562 +  // transition screen 2 -> screen 3
  58.563 +  if (Timer->GetRealTime()>=TRANS2_START && Timer->GetRealTime() <TRANS2_END) {
  58.564 +    fade->GetBuffer2();
  58.565 +    cmnClearScreen();
  58.566 +  }
  58.567 +  
  58.568 +  // transition screen 0 -> screen 1
  58.569 +  if (Timer->GetRealTime()>=TRANS2_START && Timer->GetRealTime() <TRANS2_END) {
  58.570 +    cmnPushGLState();
  58.571 +    Transition2=(Timer->GetRealTime()-TRANS2_START) *1.0 / (TRANS2_END-TRANS2_START);
  58.572 +    fade->Draw(Transition2);
  58.573 +  	cmnPopGLState();
  58.574 +  }
  58.575 +
  58.576 +
  58.577 +
  58.578 +
  58.579 +
  58.580 +
  58.581 +
  58.582 +  // transition screen 3 -> screen 4
  58.583 +  if (Timer->GetRealTime()>=TRANS3_START && Timer->GetRealTime() <SCREEN3_END) {
  58.584 +    puzzle->GetBuffer1();
  58.585 +  }
  58.586 +
  58.587 +
  58.588 +
  58.589 +#ifdef ACTIVATED_EFFECT4
  58.590 +  #ifndef JUMP_TO_EFFET
  58.591 +    #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD
  58.592 +
  58.593 +  if(sync->GetDetection()->InFxScreen4() )
  58.594 +
  58.595 +    #else
  58.596 +
  58.597 +  if (Timer->GetRealTime()>=SCREEN4_START && Timer->GetRealTime()<SCREEN4_END)
  58.598 +
  58.599 +    #endif
  58.600 +
  58.601 +  #endif
  58.602 +	{
  58.603 +	cmnPushGLState();
  58.604 +	fxScreen4->Update();
  58.605 +	fxScreen4->Draw();
  58.606 +	cmnPopGLState();
  58.607 +	}
  58.608 +#endif
  58.609 +
  58.610 +
  58.611 +  // transition screen 3 -> screen 4
  58.612 +  if (Timer->GetRealTime()>=SCREEN4_START && Timer->GetRealTime() <TRANS3_END) {
  58.613 +    puzzle->GetBuffer2();
  58.614 +  }
  58.615 +
  58.616 +  if (Timer->GetRealTime()>=TRANS3_START && Timer->GetRealTime() <TRANS3_END) {
  58.617 +    cmnClearScreen();
  58.618 +    cmnPushGLState();
  58.619 +    Transition3=(Timer->GetRealTime()-TRANS3_START) *1.0 / (TRANS3_END-TRANS3_START);
  58.620 +    puzzle->Update(Transition3);
  58.621 +    puzzle->Draw();
  58.622 +  	cmnPopGLState();
  58.623 +  }
  58.624 +
  58.625 +
  58.626 +
  58.627 +
  58.628 +
  58.629 +
  58.630 +
  58.631 +
  58.632 +
  58.633 +
  58.634 +
  58.635 +
  58.636 +
  58.637 +
  58.638 +  if (Timer->GetRealTime() <SCREEN4_START) {
  58.639 +	  cmnPushGLState();
  58.640 +	  cmnScope();
  58.641 +	  cmnPopGLState();
  58.642 +  }
  58.643 +
  58.644 +#ifndef FINALE_RELEASE
  58.645 +	cmnPushGLState();
  58.646 +  cmnPushMatrix();
  58.647 +  cmnSetPlanarView();
  58.648 +  glDisable(GL_BLEND);
  58.649 +  glDisable(GL_DEPTH_TEST);
  58.650 +  font->SetScale(1);
  58.651 +  font->SetZ(0);
  58.652 +
  58.653 +  font->Print("Time: %f\n",Timer->GetRealTime());
  58.654 +  font->Print("FPS: %f\n",1.0/Timer->GetFrameTime());
  58.655 +  font->Print("Transition 0: %f\n",Transition0);
  58.656 +  
  58.657 +  cmnPopMatrix();
  58.658 +  cmnPopGLState();
  58.659 +  font->Clear();
  58.660 +#endif
  58.661 +
  58.662 +
  58.663 +
  58.664 +
  58.665 +	Timer->Update();
  58.666 +	SwapBuffers(hDC);
  58.667 +
  58.668 +}
  58.669 +
  58.670 +
  58.671 +void KillDemo(void)
  58.672 +
  58.673 +{
  58.674 +
  58.675 +	/*
  58.676 +	 *	Kill Effects here eg. MyEffect_Kill()
  58.677 +	 */
  58.678 +
  58.679 +
  58.680 +	// Sync
  58.681 +	sync->Kill();
  58.682 +}
  58.683 +
  58.684 +
  58.685 +
  58.686 +int WINAPI WinMain(	HINSTANCE hInstance, HINSTANCE	hPrevInstance, LPSTR lpCmdLine, int nCmdShow )			
  58.687 +{
  58.688 +
  58.689 +	MSG		msg;									        
  58.690 +	bool    wnd;                  
  58.691 +
  58.692 +
  58.693 +#ifdef SOUND
  58.694 +	FSOUND_File_SetCallbacks(memopen, memclose, memread, memseek, memtell);
  58.695 +	intro_mod = FMUSIC_LoadSong(MAKEINTRESOURCE(IDR_DATA9),NULL);
  58.696 +	FSOUND_Init(44100, 0);
  58.697 +#endif
  58.698 +
  58.699 +#ifdef SOTA_DEBUG_MODE
  58.700 +	AllocConsole();
  58.701 +	stdOut = GetStdHandle( STD_OUTPUT_HANDLE );
  58.702 +#endif
  58.703 +
  58.704 +	if (MessageBox(NULL,"Have fun in fullscreen ? (RECOMMENDED)", "-*- SOTA Temp gfx mode selection -*-",MB_YESNO|MB_ICONQUESTION)==IDNO)
  58.705 +	{
  58.706 +		fullscreen=FALSE;					       		
  58.707 +	}           
  58.708 +
  58.709 +	
  58.710 +  wnd = CreateGLWindow( "Intro", (int)RX, (int)RY, 32, (int)fullscreen);     
  58.711 +  if ( wnd == FALSE )
  58.712 +		return FALSE;
  58.713 +
  58.714 +  InitDemo();
  58.715 +#ifdef SOUND
  58.716 +	if (!intro_mod)  
  58.717 +		return 0;
  58.718 +
  58.719 +  FMUSIC_PlaySong(intro_mod);
  58.720 +#endif
  58.721 +  Timer->Init();
  58.722 +
  58.723 +
  58.724 +	while( done != NULL )									
  58.725 +
  58.726 +	{
  58.727 +
  58.728 +		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))	
  58.729 +
  58.730 +		{
  58.731 +
  58.732 +			if (msg.message==WM_QUIT)				
  58.733 +
  58.734 +				done=TRUE;							
  58.735 +
  58.736 +			
  58.737 +
  58.738 +			else							       		
  58.739 +
  58.740 +			{
  58.741 +
  58.742 +				TranslateMessage(&msg);				         
  58.743 +
  58.744 +				DispatchMessage(&msg);				
  58.745 +
  58.746 +			}
  58.747 +
  58.748 +		}
  58.749 +
  58.750 +		else										
  58.751 +
  58.752 +		{
  58.753 +
  58.754 +			RunDemo();					
  58.755 +
  58.756 +		}
  58.757 +
  58.758 +	}
  58.759 +
  58.760 +
  58.761 +
  58.762 +	KillDemo();
  58.763 +
  58.764 +
  58.765 +#ifdef SOUND
  58.766 +  FMUSIC_FreeSong(intro_mod);
  58.767 +	FSOUND_Close();
  58.768 +#endif
  58.769 +
  58.770 +#ifdef SOTA_DEBUG_MODE
  58.771 +	FreeConsole();
  58.772 +#endif
  58.773 +	KillGLWindow();									
  58.774 +
  58.775 +      
  58.776 +
  58.777 +	return (msg.wParam);							
  58.778 +
  58.779 +}
  58.780 +
  58.781 +    
  58.782 +
  58.783 +       
    59.1 Binary file minifmod.lib has changed
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/minifmod/Fmusic.c	Tue Nov 27 15:23:52 2007 +0100
    60.3 @@ -0,0 +1,531 @@
    60.4 +/******************************************************************************/
    60.5 +/* FMUSIC.C                                                                   */
    60.6 +/* ----------------                                                           */
    60.7 +/* MiniFMOD public source code release.                                       */
    60.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    60.9 +/* or answer questions about the source provided.                             */
   60.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   60.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   60.12 +/* Firelight Multimedia is a registered business name.                        */
   60.13 +/* This source must not be redistributed without this notice.                 */
   60.14 +/******************************************************************************/
   60.15 +
   60.16 +#include "minifmod.h"
   60.17 +
   60.18 +#include "music_formatxm.h"
   60.19 +#include "sound.h"
   60.20 +#include "system_file.h"
   60.21 +#include "system_memory.h"
   60.22 +
   60.23 +FMUSIC_MODULE *		FMUSIC_PlayingSong = NULL;
   60.24 +FMUSIC_CHANNEL		FMUSIC_Channel[32];		// channel array for this song
   60.25 +FMUSIC_TIMMEINFO *	FMUSIC_TimeInfo;
   60.26 +FSOUND_SAMPLE		FMUSIC_DummySample;
   60.27 +// initialization taken out due to size.. should be ok.
   60.28 +/* =
   60.29 +{
   60.30 +//	0,								// index
   60.31 +	NULL,							// buff
   60.32 +
   60.33 +	0,								// length
   60.34 +	0,								// loopstart
   60.35 +	0,								// looplen
   60.36 +	0,								// default volume
   60.37 +	0,								// finetune value from -128 to 127 
   60.38 +
   60.39 +	44100,							// default frequency
   60.40 +	128,							// default pan
   60.41 +
   60.42 +	8,								// bits
   60.43 +	FSOUND_LOOP_OFF,				// loop mode
   60.44 +
   60.45 +
   60.46 +	TRUE,							// music owned
   60.47 +	0,								// sample global volume (scalar)
   60.48 +	0,								// relative note 
   60.49 +	8363,							// finetuning adjustment to make for music samples.. relative to 8363hz
   60.50 +	0,								// sample loop start
   60.51 +	0,								// sample loop length
   60.52 +	0,								// vibrato speed 0-64 
   60.53 +	0,								// vibrato depth 0-64 
   60.54 +	0,								// vibrato type 0=sine, 1=rampdown, 2=square, 3=random
   60.55 +	0,								// vibrato rate 0-64 (like sweep?) 
   60.56 +};
   60.57 +*/
   60.58 +
   60.59 +FSOUND_CHANNEL			FMUSIC_DummyChannel;
   60.60 +FMUSIC_INSTRUMENT		FMUSIC_DummyInstrument;
   60.61 +
   60.62 +//= PRIVATE FUNCTIONS ==============================================================================
   60.63 +
   60.64 +
   60.65 +/*
   60.66 +[
   60.67 +	[DESCRIPTION]
   60.68 +
   60.69 +	[PARAMETERS]
   60.70 + 
   60.71 +	[RETURN_VALUE]
   60.72 +
   60.73 +	[REMARKS]
   60.74 +
   60.75 +	[SEE_ALSO]
   60.76 +]
   60.77 +*/
   60.78 +
   60.79 +void FMUSIC_SetBPM(FMUSIC_MODULE *module, int bpm)
   60.80 +{
   60.81 +	float hz;
   60.82 +
   60.83 +	module->bpm = bpm;
   60.84 +
   60.85 +	hz = (float)bpm * 2.0f / 5.0f;
   60.86 +	
   60.87 +	// number of samples
   60.88 +	module->mixer_samplespertick = (int)((float)FSOUND_MixRate * (1000.0f / hz) / 1000.0f);	
   60.89 +}
   60.90 +
   60.91 +
   60.92 +//= API FUNCTIONS ==============================================================================
   60.93 +
   60.94 +/*
   60.95 +[API]
   60.96 +[
   60.97 +	[DESCRIPTION]
   60.98 +	To load a module with a given filename.  FMUSIC Supports loading of 
   60.99 +	- .MOD (protracker/fasttracker modules)
  60.100 +	- .S3M (screamtracker 3 modules)
  60.101 +	- .XM  (fasttracker 2 modules)
  60.102 +	- .IT  (impulse tracker modules)
  60.103 +
  60.104 +	[PARAMETERS]
  60.105 +	'name'		Filename of module to load.
  60.106 + 
  60.107 +	[RETURN_VALUE]
  60.108 +	On success, a pointer to a FMUSIC_MODULE handle is returned.
  60.109 +	On failure, NULL is returned.
  60.110 +
  60.111 +	[REMARKS]
  60.112 +	This function autodetects the format type, regardless of filename.
  60.113 +
  60.114 +	[SEE_ALSO]
  60.115 +	FMUSIC_FreeSong
  60.116 +]
  60.117 +*/
  60.118 +FMUSIC_MODULE * FMUSIC_LoadSong(signed char *name, SAMPLELOADCALLBACK sampleloadcallback)
  60.119 +{
  60.120 +	FMUSIC_MODULE		*mod;
  60.121 +	signed char			retcode=FALSE;
  60.122 +	FSOUND_FILE_HANDLE	*fp;
  60.123 +
  60.124 +	// create a mod instance
  60.125 +	mod = FSOUND_Memory_Calloc(sizeof(FMUSIC_MODULE));
  60.126 +
  60.127 +	fp = FSOUND_File_Open(name, 0, 0);
  60.128 +	if (!fp)
  60.129 +		return NULL;
  60.130 +
  60.131 +	mod->samplecallback = sampleloadcallback;
  60.132 +
  60.133 +	// try opening all as all formats until correct loader is found
  60.134 +	retcode = FMUSIC_LoadXM(mod, fp);
  60.135 +
  60.136 +	FSOUND_File_Close(fp);
  60.137 +
  60.138 +	if (!retcode)
  60.139 +	{
  60.140 +		FMUSIC_FreeSong(mod);
  60.141 +		return NULL;
  60.142 +	}
  60.143 +
  60.144 +	return mod;
  60.145 +}
  60.146 +
  60.147 +
  60.148 +/*
  60.149 +[API]
  60.150 +[
  60.151 +	[DESCRIPTION]
  60.152 +	Frees memory allocated for a song and removes it from the FMUSIC system.
  60.153 +
  60.154 +	[PARAMETERS]
  60.155 +	'mod'		Pointer to the song to be freed.
  60.156 + 
  60.157 +	[RETURN_VALUE]
  60.158 +	void
  60.159 +
  60.160 +	[REMARKS]
  60.161 +
  60.162 +	[SEE_ALSO]
  60.163 +	FMUSIC_LoadSong
  60.164 +]
  60.165 +*/
  60.166 +signed char FMUSIC_FreeSong(FMUSIC_MODULE *mod)
  60.167 +{
  60.168 +	int count;
  60.169 +
  60.170 +	if (!mod) 
  60.171 +		return FALSE;
  60.172 +
  60.173 +	BLOCK_ON_SOFTWAREUPDATE();
  60.174 +
  60.175 +	FMUSIC_StopSong(mod);
  60.176 +
  60.177 +	// free samples
  60.178 +	if (mod->instrument)
  60.179 +	{
  60.180 +		for (count=0; count<(int)mod->numinsts; count++) 
  60.181 +		{
  60.182 +			int count2;
  60.183 +
  60.184 +			FMUSIC_INSTRUMENT	*iptr = &mod->instrument[count];
  60.185 +			for (count2=0; count2<iptr->numsamples; count2++) 
  60.186 +			{
  60.187 +				if (iptr->sample[count2])
  60.188 +				{
  60.189 +					FSOUND_SAMPLE *sptr = iptr->sample[count2];
  60.190 +					FSOUND_Memory_Free(sptr->buff);
  60.191 +					FSOUND_Memory_Free(sptr);
  60.192 +				}
  60.193 +			}
  60.194 +
  60.195 +
  60.196 +		}
  60.197 +	}
  60.198 +
  60.199 +	// free instruments
  60.200 +	if (mod->instrument)
  60.201 +		FSOUND_Memory_Free(mod->instrument);
  60.202 +
  60.203 +	// free patterns
  60.204 +	if (mod->pattern)
  60.205 +	{
  60.206 +		for (count=0; count<mod->numpatternsmem; count++)
  60.207 +			if (mod->pattern[count].data) 
  60.208 +				FSOUND_Memory_Free(mod->pattern[count].data);
  60.209 +
  60.210 +		if (mod->pattern) 
  60.211 +			FSOUND_Memory_Free(mod->pattern);
  60.212 +	}
  60.213 +
  60.214 +	// free song
  60.215 +	FSOUND_Memory_Free(mod);
  60.216 +
  60.217 +	return TRUE;
  60.218 +}
  60.219 +
  60.220 +
  60.221 +
  60.222 +/*
  60.223 +[API]
  60.224 +[
  60.225 +	[DESCRIPTION]
  60.226 +	Starts a song playing.
  60.227 +
  60.228 +	[PARAMETERS]
  60.229 +	'mod'		Pointer to the song to be played.
  60.230 + 
  60.231 +	[RETURN_VALUE]
  60.232 +	TRUE		song succeeded playing
  60.233 +	FALSE		song failed playing
  60.234 +
  60.235 +	[REMARKS]
  60.236 +
  60.237 +	[SEE_ALSO]
  60.238 +	FMUSIC_StopSong
  60.239 +]
  60.240 +*/
  60.241 +signed char FMUSIC_PlaySong(FMUSIC_MODULE *mod)
  60.242 +{
  60.243 +	int				count;
  60.244 +	FMUSIC_CHANNEL	*cptr;
  60.245 +	int				totalblocks = FSOUND_BufferSize / FSOUND_BlockSize; 
  60.246 +
  60.247 +	if (!mod) 
  60.248 +		return FALSE;
  60.249 +
  60.250 +	FMUSIC_StopSong(mod);
  60.251 +
  60.252 +	mod->globalvolume = mod->defaultglobalvolume;
  60.253 + 	mod->speed = (int)mod->defaultspeed;
  60.254 +	mod->row = 0;
  60.255 +	mod->order = 0;
  60.256 +	mod->nextorder = -1;
  60.257 +	mod->nextrow = -1;
  60.258 +	mod->mixer_samplesleft = 0;
  60.259 +	mod->tick = 0;
  60.260 +	mod->patterndelay = 0;
  60.261 +	mod->time_ms = 0;
  60.262 +
  60.263 +	if (mod->Play)
  60.264 +		mod->Play(mod);
  60.265 +
  60.266 +	FMUSIC_SetBPM(mod, mod->defaultbpm);
  60.267 +
  60.268 +	memset(FMUSIC_Channel, 0, mod->numchannels * sizeof(FMUSIC_CHANNEL));
  60.269 +
  60.270 +	for (count=0; count<mod->numchannels; count++)
  60.271 +	{
  60.272 +		cptr = &FMUSIC_Channel[count];
  60.273 +		cptr->cptr = &FSOUND_Channel[count];
  60.274 +
  60.275 +		// music system channel initialization
  60.276 +/*
  60.277 +		// removed for size .. should be ok ..
  60.278 +
  60.279 +		cptr->volume		= 0;
  60.280 +		cptr->voldelta		= 0;
  60.281 +		cptr->inst			= 0;
  60.282 +		cptr->note			= 0;
  60.283 +		cptr->period		= 0;
  60.284 +		cptr->portaupdown	= 0;
  60.285 +		cptr->volslide		= 0;
  60.286 +		cptr->panslide		= 0;
  60.287 +		cptr->portatarget	= 0;
  60.288 +		cptr->portaspeed	= 0;
  60.289 +		cptr->portareached  = FALSE;
  60.290 +		cptr->sampleoffset	= 0;
  60.291 +		cptr->retrigx		= 0;
  60.292 +		cptr->retrigy		= 0;
  60.293 +		cptr->retrigcount	= 0;
  60.294 +		cptr->vibpos		= 0;
  60.295 +		cptr->vibspeed		= 0;
  60.296 +		cptr->vibdepth		= 0;
  60.297 +		cptr->tremolopos	= 0;
  60.298 +		cptr->tremolospeed	= 0;
  60.299 +		cptr->tremolodepth	= 0;
  60.300 +		cptr->panbrellopos	= 0;
  60.301 +		cptr->panbrellospeed = 0;
  60.302 +		cptr->panbrellodepth = 0;
  60.303 +		cptr->patlooprow	= 0;
  60.304 +		cptr->patloopno		= 0;
  60.305 +		cptr->wavecontrol	= 0;
  60.306 +		cptr->wavecontrolvib = 0;
  60.307 +		cptr->wavecontroltrem = 0;
  60.308 +		cptr->wavecontrolpan = 0;
  60.309 +		cptr->tremorpos		= 0;
  60.310 +		cptr->arpeggio		= 0;
  60.311 +		cptr->channelvsl	= 0;
  60.312 +		cptr->recenteffect  = 0;
  60.313 +		cptr->highoffset	= 0;
  60.314 +		cptr->volcolumn_volslide = 0;
  60.315 +		cptr->fineportaup	= 0;
  60.316 +		cptr->fineportadown = 0;
  60.317 +*/
  60.318 +	}
  60.319 +
  60.320 +	FMUSIC_PlayingSong = mod;
  60.321 +
  60.322 +	FMUSIC_TimeInfo = FSOUND_Memory_Calloc(sizeof(FMUSIC_TIMMEINFO) * totalblocks);
  60.323 +
  60.324 +	// ========================================================================================================
  60.325 +	// PREPARE THE OUTPUT
  60.326 +	// ========================================================================================================
  60.327 +
  60.328 +	{
  60.329 +		WAVEHDR	*wavehdr;
  60.330 +		int	length = 0;
  60.331 +
  60.332 +		// CREATE AND START LOOPING WAVEOUT BLOCK
  60.333 +		wavehdr = &FSOUND_MixBlock.wavehdr;
  60.334 +
  60.335 +		length = FSOUND_BufferSize;
  60.336 +		length <<= 2;	// 16bits
  60.337 +
  60.338 +		FSOUND_MixBlock.data = FSOUND_Memory_Calloc(length);
  60.339 +		
  60.340 +		wavehdr->dwFlags			= WHDR_BEGINLOOP | WHDR_ENDLOOP;
  60.341 +		wavehdr->lpData				= (LPSTR)FSOUND_MixBlock.data;
  60.342 +		wavehdr->dwBufferLength		= length;
  60.343 +		wavehdr->dwBytesRecorded	= 0;
  60.344 +		wavehdr->dwUser				= 0;
  60.345 +		wavehdr->dwLoops			= -1;
  60.346 +		waveOutPrepareHeader(FSOUND_WaveOutHandle, wavehdr, sizeof(WAVEHDR));
  60.347 +
  60.348 +	}
  60.349 +
  60.350 +	// ========================================================================================================
  60.351 +	// ALLOCATE MIXBUFFER
  60.352 +	// ========================================================================================================
  60.353 +	FSOUND_MixBufferMem = (signed char *)FSOUND_Memory_Calloc((FSOUND_BufferSize << 3) + 256);
  60.354 +	FSOUND_MixBuffer = (signed char *)(((unsigned int)FSOUND_MixBufferMem + 15) & 0xFFFFFFF0);
  60.355 +
  60.356 +	// ========================================================================================================
  60.357 +	// PREFILL THE MIXER BUFFER 
  60.358 +	// ========================================================================================================
  60.359 +
  60.360 +	FSOUND_Software_FillBlock = 0;
  60.361 +
  60.362 +	do 
  60.363 +	{
  60.364 +		FSOUND_Software_Fill();
  60.365 +	} while (FSOUND_Software_FillBlock);
  60.366 +
  60.367 +	// ========================================================================================================
  60.368 +	// START THE OUTPUT
  60.369 +	// ========================================================================================================
  60.370 +
  60.371 +	waveOutWrite(FSOUND_WaveOutHandle, &FSOUND_MixBlock.wavehdr, sizeof(WAVEHDR));
  60.372 +
  60.373 +	{
  60.374 +		DWORD	FSOUND_dwThreadId;
  60.375 +
  60.376 +		// ========================================================================================================
  60.377 +		// CREATE THREADS / TIMERS (last)
  60.378 +		// ========================================================================================================
  60.379 +		FSOUND_Software_Exit = FALSE;
  60.380 +
  60.381 +		FSOUND_Software_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)FSOUND_Software_DoubleBufferThread, 0,0, &FSOUND_dwThreadId);
  60.382 +
  60.383 +		SetThreadPriority(FSOUND_Software_hThread, THREAD_PRIORITY_TIME_CRITICAL);	// THREAD_PRIORITY_HIGHEST);
  60.384 +	}
  60.385 +	return TRUE;
  60.386 +}
  60.387 +
  60.388 +
  60.389 +/*
  60.390 +[API]
  60.391 +[
  60.392 +	[DESCRIPTION]
  60.393 +	Stops a song from playing.
  60.394 +
  60.395 +	[PARAMETERS]
  60.396 +	'mod'		Pointer to the song to be stopped.
  60.397 + 
  60.398 +	[RETURN_VALUE]
  60.399 +	void
  60.400 +
  60.401 +	[REMARKS]
  60.402 +
  60.403 +	[SEE_ALSO]
  60.404 +	FMUSIC_PlaySong
  60.405 +]
  60.406 +*/
  60.407 +signed char FMUSIC_StopSong(FMUSIC_MODULE *mod)
  60.408 +{
  60.409 +	if (!mod) 
  60.410 +		return FALSE;
  60.411 +
  60.412 +	// Kill the thread
  60.413 +	FSOUND_Software_Exit = TRUE;
  60.414 +
  60.415 +	// wait until callback has settled down and exited
  60.416 +	BLOCK_ON_SOFTWAREUPDATE();
  60.417 +
  60.418 +	if (FSOUND_Software_hThread) 
  60.419 +	{
  60.420 +		while (!FSOUND_Software_ThreadFinished) 
  60.421 +        {
  60.422 +			Sleep(50);
  60.423 +        }
  60.424 +		FSOUND_Software_hThread = NULL;
  60.425 +	}
  60.426 +
  60.427 +	// remove the output mixbuffer
  60.428 +	if (FSOUND_MixBufferMem)
  60.429 +    {
  60.430 +		FSOUND_Memory_Free(FSOUND_MixBufferMem);
  60.431 +    }
  60.432 +
  60.433 +    if (FSOUND_MixBlock.wavehdr.lpData)
  60.434 +    {
  60.435 +    	waveOutUnprepareHeader(FSOUND_WaveOutHandle, &FSOUND_MixBlock.wavehdr, sizeof(WAVEHDR));
  60.436 +	    FSOUND_MixBlock.wavehdr.dwFlags &= ~WHDR_PREPARED;
  60.437 +    }
  60.438 +
  60.439 +	FMUSIC_PlayingSong = NULL;
  60.440 +
  60.441 +	if (FMUSIC_TimeInfo)
  60.442 +    {
  60.443 +		FSOUND_Memory_Free(FMUSIC_TimeInfo);
  60.444 +    }
  60.445 +
  60.446 +	return TRUE;
  60.447 +}
  60.448 +
  60.449 +//= INFORMATION FUNCTIONS ======================================================================
  60.450 +
  60.451 +/*
  60.452 +[API]
  60.453 +[
  60.454 +	[DESCRIPTION]
  60.455 +	Returns the song's current order number
  60.456 +
  60.457 +	[PARAMETERS]
  60.458 +	'mod'		Pointer to the song to retrieve current order number from.
  60.459 + 
  60.460 +	[RETURN_VALUE]
  60.461 +	The song's current order number.
  60.462 +	On failure, 0 is returned.
  60.463 +
  60.464 +	[REMARKS]
  60.465 +
  60.466 +	[SEE_ALSO]
  60.467 +	FMUSIC_GetPattern
  60.468 +]
  60.469 +*/
  60.470 +int FMUSIC_GetOrder(FMUSIC_MODULE *mod)
  60.471 +{
  60.472 +	if (!mod) 
  60.473 +		return 0;
  60.474 +
  60.475 +	return FMUSIC_TimeInfo[FSOUND_Software_RealBlock].order;
  60.476 +}
  60.477 +
  60.478 +
  60.479 +/*
  60.480 +[API]
  60.481 +[
  60.482 +	[DESCRIPTION]
  60.483 +	Returns the song's current row number.
  60.484 +
  60.485 +	[PARAMETERS]
  60.486 + 	'mod'		Pointer to the song to retrieve current row from.
  60.487 +
  60.488 +	[RETURN_VALUE]
  60.489 +	On success, the song's current row number is returned.
  60.490 +	On failure, 0 is returned.
  60.491 +
  60.492 +	[REMARKS]
  60.493 +
  60.494 +	[SEE_ALSO]
  60.495 +]
  60.496 +*/
  60.497 +int FMUSIC_GetRow(FMUSIC_MODULE *mod)
  60.498 +{
  60.499 +	if (!mod) 
  60.500 +		return 0;
  60.501 +
  60.502 +	return FMUSIC_TimeInfo[FSOUND_Software_RealBlock].row;
  60.503 +}
  60.504 +
  60.505 +
  60.506 +/*
  60.507 +[API]
  60.508 +[
  60.509 +	[DESCRIPTION]
  60.510 +	Returns the time in milliseconds since the song was started.  This is useful for
  60.511 +	synchronizing purposes becuase it will be exactly the same every time, and it is 
  60.512 +	reliably retriggered upon starting the song.  Trying to synchronize using other 
  60.513 +	windows timers can lead to varying results, and inexact performance.  This fixes that
  60.514 +	problem by actually using the number of samples sent to the soundcard as a reference.
  60.515 +
  60.516 +	[PARAMETERS]
  60.517 +	'mod'		Pointer to the song to get time from.
  60.518 + 
  60.519 +	[RETURN_VALUE]
  60.520 +	On success, the time played in milliseconds is returned.
  60.521 +	On failure, 0 is returned.
  60.522 +
  60.523 +	[REMARKS]
  60.524 +
  60.525 +	[SEE_ALSO]
  60.526 +]
  60.527 +*/
  60.528 +unsigned int FMUSIC_GetTime(FMUSIC_MODULE *mod)
  60.529 +{
  60.530 +	if (!mod) 
  60.531 +		return 0;
  60.532 +
  60.533 +	return FMUSIC_TimeInfo[FSOUND_Software_RealBlock].ms;
  60.534 +}
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/minifmod/Fsound.c	Tue Nov 27 15:23:52 2007 +0100
    61.3 @@ -0,0 +1,322 @@
    61.4 +/******************************************************************************/
    61.5 +/* FSOUND.C                                                                   */
    61.6 +/* ----------------                                                           */
    61.7 +/* MiniFMOD public source code release.                                       */
    61.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    61.9 +/* or answer questions about the source provided.                             */
   61.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   61.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   61.12 +/* Firelight Multimedia is a registered business name.                        */
   61.13 +/* This source must not be redistributed without this notice.                 */
   61.14 +/******************************************************************************/
   61.15 +
   61.16 +#include "minifmod.h"
   61.17 +#include "mixer.h"
   61.18 +#include "mixer_clipcopy.h"
   61.19 +#include "mixer_fpu_ramp.h"
   61.20 +#include "music.h"
   61.21 +#include "sound.h"
   61.22 +#include "system_file.h"
   61.23 +#include "system_memory.h"
   61.24 +
   61.25 +#include <windows.h>
   61.26 +#include <mmsystem.h>
   61.27 +
   61.28 +//= GLOBALS ================================================================================
   61.29 +
   61.30 +FSOUND_CHANNEL		FSOUND_Channel[256];		// channel pool 
   61.31 +int					FSOUND_MixRate;				// mixing rate in hz.
   61.32 +int					FSOUND_BufferSizeMs = 1000;
   61.33 +HWAVEOUT			FSOUND_WaveOutHandle;
   61.34 +FSOUND_SoundBlock	FSOUND_MixBlock;
   61.35 +
   61.36 +// mixing info
   61.37 +signed char		*	FSOUND_MixBufferMem;		// mix buffer memory block
   61.38 +signed char		*	FSOUND_MixBuffer;			// mix output buffer (16bit or 32bit)
   61.39 +float				FSOUND_OOMixRate;			// mixing rate in hz.
   61.40 +int					FSOUND_BufferSize;			// size of 1 'latency' ms buffer in bytes
   61.41 +int					FSOUND_BlockSize;			// LATENCY ms worth of samples
   61.42 +
   61.43 +// thread control variables
   61.44 +volatile signed char	FSOUND_Software_Exit			= FALSE;		// mixing thread termination flag
   61.45 +volatile signed char	FSOUND_Software_UpdateMutex		= FALSE;
   61.46 +volatile signed char	FSOUND_Software_ThreadFinished	= TRUE;
   61.47 +volatile HANDLE			FSOUND_Software_hThread			= NULL;
   61.48 +volatile int			FSOUND_Software_FillBlock		= 0;
   61.49 +volatile int			FSOUND_Software_RealBlock		= 0;
   61.50 +
   61.51 +
   61.52 +
   61.53 +/*
   61.54 +[API]
   61.55 +[
   61.56 +	[DESCRIPTION]
   61.57 +	Initializes the FMOD Sound System.
   61.58 +
   61.59 +	[PARAMETERS]
   61.60 +	'mixrate'		Output rate in hz.  
   61.61 +	'vcmmode'		This is reserved for future expansion.  Set it to 0.
   61.62 +	 
   61.63 +	[RETURN_VALUE]
   61.64 +	On success, TRUE is returned.
   61.65 +	On failure, FALSE is returned.
   61.66 +
   61.67 +	[REMARKS]
   61.68 +	
   61.69 +	[SEE_ALSO]
   61.70 +	FSOUND_Init
   61.71 +	FSOUND_Close
   61.72 +]
   61.73 +*/
   61.74 +signed char FSOUND_Init(int mixrate, int vcmmode)
   61.75 +{
   61.76 +	int	count;
   61.77 +
   61.78 +	if (!FSOUND_File_OpenCallback || !FSOUND_File_CloseCallback || !FSOUND_File_ReadCallback || !FSOUND_File_SeekCallback || !FSOUND_File_TellCallback)
   61.79 +		return FALSE;
   61.80 +
   61.81 +	//=======================================================================================
   61.82 +	// CLOSE IT DOWN FIRST IF IT IS ALREADY OPEN
   61.83 +	//=======================================================================================
   61.84 +	FSOUND_Close();
   61.85 +
   61.86 +	//=======================================================================================
   61.87 +	// SET SOME DEFAULTS
   61.88 +	//=======================================================================================
   61.89 +	FSOUND_MixRate			= mixrate;
   61.90 +
   61.91 +	{
   61.92 +		WAVEFORMATEX	pcmwf;
   61.93 +		UINT			hr;
   61.94 +
   61.95 +		// ========================================================================================================
   61.96 +		// INITIALIZE WAVEOUT
   61.97 +		// ========================================================================================================
   61.98 +		pcmwf.wFormatTag		= WAVE_FORMAT_PCM; 
   61.99 +		pcmwf.nChannels			= 2;
  61.100 +		pcmwf.wBitsPerSample	= 16; 
  61.101 +		pcmwf.nBlockAlign		= pcmwf.nChannels * pcmwf.wBitsPerSample / 8;
  61.102 +		pcmwf.nSamplesPerSec	= mixrate; 
  61.103 +		pcmwf.nAvgBytesPerSec	= pcmwf.nSamplesPerSec * pcmwf.nBlockAlign; 
  61.104 +		pcmwf.cbSize			= 0;
  61.105 +
  61.106 +		hr = waveOutOpen(&FSOUND_WaveOutHandle, WAVE_MAPPER, &pcmwf, 0, 0, 0);
  61.107 +
  61.108 +		if (hr) 
  61.109 +			return FALSE;
  61.110 +
  61.111 +	}
  61.112 +
  61.113 +	// ========================================================================================================
  61.114 +	// INITIALIZE SOFTWARE MIXER 
  61.115 +	// ========================================================================================================
  61.116 +
  61.117 +	FSOUND_OOMixRate	= 1.0f / (float)mixrate;
  61.118 +
  61.119 +	FSOUND_BlockSize = ((FSOUND_MixRate * FSOUND_LATENCY / 1000) + 3) & 0xFFFFFFFC;	// Number of *samples*
  61.120 +	FSOUND_BufferSize = FSOUND_BlockSize * (FSOUND_BufferSizeMs / FSOUND_LATENCY);	// make it perfectly divisible by granularity
  61.121 +	FSOUND_BufferSize <<= 1;	// double buffer
  61.122 +
  61.123 +	mix_volumerampsteps = FSOUND_MixRate * FSOUND_VOLUMERAMP_STEPS / 44100;
  61.124 +	mix_1overvolumerampsteps = 1.0f / mix_volumerampsteps;
  61.125 +
  61.126 +	//=======================================================================================
  61.127 +	// ALLOC GLOBAL CHANNEL POOL
  61.128 +	//=======================================================================================
  61.129 +	memset(FSOUND_Channel, 0, sizeof(FSOUND_CHANNEL) * 256);
  61.130 +
  61.131 +	// ========================================================================================================
  61.132 +	// SET UP CHANNELS
  61.133 +	// ========================================================================================================
  61.134 +
  61.135 +	for (count=0; count < 256; count++)
  61.136 +	{
  61.137 +		FSOUND_Channel[count].index = count;
  61.138 +		FSOUND_Channel[count].speedhi = 1;
  61.139 +	}
  61.140 +
  61.141 +	return TRUE;
  61.142 +}
  61.143 +
  61.144 +
  61.145 +/*
  61.146 +[API]
  61.147 +[
  61.148 +	[DESCRIPTION]
  61.149 +	Shuts down the WHOLE FMOD Sound System.
  61.150 +
  61.151 +	[PARAMETERS]
  61.152 + 
  61.153 +	[RETURN_VALUE]
  61.154 +	void
  61.155 +
  61.156 +	[REMARKS]
  61.157 +	This also closes down the sample management system, freeing all MANAGED samples loaded (unless they	were allocated with the FSOUND_UNMANAGED flag).
  61.158 +	All songs (mods) are stopped (but does not free them).
  61.159 +	All streams are stopped and freed.
  61.160 +	CD Tracks are stopped.
  61.161 +
  61.162 +	[SEE_ALSO]
  61.163 +	FSOUND_Init
  61.164 +]
  61.165 +*/
  61.166 +void FSOUND_Close()
  61.167 +{
  61.168 +	// ========================================================================================================
  61.169 +	// SHUT DOWN OUTPUT DRIVER 
  61.170 +	// ========================================================================================================
  61.171 +	waveOutReset(FSOUND_WaveOutHandle);
  61.172 +
  61.173 +	waveOutClose(FSOUND_WaveOutHandle);
  61.174 +}
  61.175 +
  61.176 +
  61.177 +
  61.178 +
  61.179 +/*
  61.180 +	[DESCRIPTION]
  61.181 +
  61.182 +	[PARAMETERS]
  61.183 + 
  61.184 +	[RETURN_VALUE]
  61.185 +
  61.186 +	[REMARKS]
  61.187 +
  61.188 +	[SEE_ALSO]
  61.189 +*/
  61.190 +void FSOUND_Software_Fill()
  61.191 +{
  61.192 +	void  *	mixbuffer; 
  61.193 +	int		mixpos		= FSOUND_Software_FillBlock * FSOUND_BlockSize;
  61.194 +	int		totalblocks = FSOUND_BufferSize / FSOUND_BlockSize; 
  61.195 +
  61.196 +
  61.197 +	mixbuffer = (char *)FSOUND_MixBuffer + (mixpos << 3);
  61.198 +
  61.199 +	//==============================================================================
  61.200 +	// MIXBUFFER CLEAR
  61.201 +	//==============================================================================
  61.202 +	memset(mixbuffer, 0, FSOUND_BlockSize << 3);
  61.203 +
  61.204 +	//==============================================================================
  61.205 +	// UPDATE MUSIC
  61.206 +	//==============================================================================
  61.207 +
  61.208 +	{
  61.209 +		int MixedSoFar = 0;
  61.210 +		int MixedLeft = FMUSIC_PlayingSong->mixer_samplesleft;
  61.211 +		int SamplesToMix;
  61.212 +		signed char *MixPtr;
  61.213 +
  61.214 +		// keep resetting the mix pointer to the beginning of this portion of the ring buffer
  61.215 +		MixPtr = mixbuffer;
  61.216 +
  61.217 +		while (MixedSoFar < FSOUND_BlockSize)
  61.218 +		{
  61.219 +			if (!MixedLeft)
  61.220 +			{
  61.221 +				FMUSIC_PlayingSong->Update(FMUSIC_PlayingSong);		// update new mod tick
  61.222 +				SamplesToMix = FMUSIC_PlayingSong->mixer_samplespertick;
  61.223 +				MixedLeft = SamplesToMix;
  61.224 +			}
  61.225 +			else SamplesToMix = MixedLeft;
  61.226 +
  61.227 +			if (MixedSoFar + SamplesToMix > FSOUND_BlockSize) 
  61.228 +				SamplesToMix = FSOUND_BlockSize - MixedSoFar;
  61.229 +
  61.230 +			FSOUND_Mixer_FPU_Ramp(MixPtr, SamplesToMix, FALSE); 
  61.231 +
  61.232 +			MixedSoFar	+= SamplesToMix;
  61.233 +			MixPtr		+= (SamplesToMix << 3);
  61.234 +			MixedLeft	-= SamplesToMix;
  61.235 +
  61.236 +			FMUSIC_PlayingSong->time_ms += (int)(((float)SamplesToMix * FSOUND_OOMixRate) * 1000);
  61.237 +		}
  61.238 +
  61.239 +		FMUSIC_TimeInfo[FSOUND_Software_FillBlock].ms = FMUSIC_PlayingSong->time_ms;
  61.240 +		FMUSIC_TimeInfo[FSOUND_Software_FillBlock].row = FMUSIC_PlayingSong->row;
  61.241 +		FMUSIC_TimeInfo[FSOUND_Software_FillBlock].order = FMUSIC_PlayingSong->order;
  61.242 +		
  61.243 +		FMUSIC_PlayingSong->mixer_samplesleft = MixedLeft;
  61.244 +	}
  61.245 +
  61.246 +
  61.247 +	// ====================================================================================
  61.248 +	// CLIP AND COPY BLOCK TO OUTPUT BUFFER
  61.249 +	// ====================================================================================
  61.250 +	{
  61.251 +		void  			*ptr1, *ptr2; 
  61.252 +		unsigned int	len1, len2;
  61.253 +
  61.254 +		ptr1 = FSOUND_MixBlock.data + (mixpos << 2);
  61.255 +		ptr2 = NULL;
  61.256 +		len1 = FSOUND_BlockSize << 2;
  61.257 +		len2 = 0;
  61.258 +
  61.259 +		FSOUND_MixerClipCopy_Float32(ptr1, mixbuffer, len1>>2); 
  61.260 +	}
  61.261 +
  61.262 +	FSOUND_Software_FillBlock++;
  61.263 +	if (FSOUND_Software_FillBlock >= totalblocks)
  61.264 +		FSOUND_Software_FillBlock = 0;
  61.265 +}
  61.266 +
  61.267 +
  61.268 +/*
  61.269 +	[DESCRIPTION]
  61.270 +
  61.271 +	[PARAMETERS]
  61.272 + 
  61.273 +	[RETURN_VALUE]
  61.274 +
  61.275 +	[REMARKS]
  61.276 +
  61.277 +	[SEE_ALSO]
  61.278 +*/
  61.279 +DWORD FSOUND_Software_DoubleBufferThread(LPDWORD lpdwParam)
  61.280 +{
  61.281 +	int totalblocks; 
  61.282 +
  61.283 +	FSOUND_Software_ThreadFinished = FALSE;
  61.284 +
  61.285 +	totalblocks = FSOUND_BufferSize / FSOUND_BlockSize; 
  61.286 +
  61.287 +	while (!FSOUND_Software_Exit)
  61.288 +	{
  61.289 +		int		cursorpos,cursorblock,prevblock;
  61.290 +		MMTIME	mmt;
  61.291 +
  61.292 +		mmt.wType = TIME_BYTES;
  61.293 +		waveOutGetPosition(FSOUND_WaveOutHandle, &mmt, sizeof(MMTIME));
  61.294 +		mmt.u.cb >>= 2;
  61.295 +		cursorpos = mmt.u.cb;
  61.296 +
  61.297 +		cursorpos %= FSOUND_BufferSize;
  61.298 +		cursorblock = cursorpos / FSOUND_BlockSize;
  61.299 +
  61.300 +		prevblock = cursorblock - 1;
  61.301 +		if (prevblock < 0)
  61.302 +			prevblock = totalblocks - 1;
  61.303 +
  61.304 +		while (FSOUND_Software_FillBlock != cursorblock)
  61.305 +		{
  61.306 +			FSOUND_Software_UpdateMutex = TRUE;
  61.307 +
  61.308 +			FSOUND_Software_Fill();
  61.309 +	
  61.310 +			FSOUND_Software_RealBlock++;
  61.311 +			if (FSOUND_Software_RealBlock >= totalblocks)
  61.312 +				FSOUND_Software_RealBlock = 0;
  61.313 +
  61.314 +			FSOUND_Software_UpdateMutex = FALSE;
  61.315 +		}
  61.316 +
  61.317 +		Sleep(5);
  61.318 +	};
  61.319 +
  61.320 +	FSOUND_Software_ThreadFinished = TRUE;
  61.321 +
  61.322 +	return 0;
  61.323 +}
  61.324 +
  61.325 +
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/minifmod/Mixer.h	Tue Nov 27 15:23:52 2007 +0100
    62.3 @@ -0,0 +1,23 @@
    62.4 +/******************************************************************************/
    62.5 +/* MIXER.H                                                                    */
    62.6 +/* ----------------                                                           */
    62.7 +/* MiniFMOD public source code release.                                       */
    62.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    62.9 +/* or answer questions about the source provided.                             */
   62.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   62.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   62.12 +/* Firelight Multimedia is a registered business name.                        */
   62.13 +/* This source must not be redistributed without this notice.                 */
   62.14 +/******************************************************************************/
   62.15 +
   62.16 +#ifndef _MIXER_H_
   62.17 +#define _MIXER_H_
   62.18 +
   62.19 +#define FSOUND_MIXDIR_FORWARDS		1
   62.20 +#define FSOUND_MIXDIR_BACKWARDS		2
   62.21 +
   62.22 +#define FSOUND_OUTPUTBUFF_END		0
   62.23 +#define FSOUND_SAMPLEBUFF_END		1
   62.24 +#define FSOUND_VOLUMERAMP_END		2
   62.25 +
   62.26 +#endif
   62.27 \ No newline at end of file
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/minifmod/Music.h	Tue Nov 27 15:23:52 2007 +0100
    63.3 @@ -0,0 +1,296 @@
    63.4 +/******************************************************************************/
    63.5 +/* MUSIC.H                                                                    */
    63.6 +/* ----------------                                                           */
    63.7 +/* MiniFMOD public source code release.                                       */
    63.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    63.9 +/* or answer questions about the source provided.                             */
   63.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   63.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   63.12 +/* Firelight Multimedia is a registered business name.                        */
   63.13 +/* This source must not be redistributed without this notice.                 */
   63.14 +/******************************************************************************/
   63.15 +
   63.16 +#ifndef _MUSIC_H
   63.17 +#define _MUSIC_H
   63.18 +
   63.19 +#include "sound.h"
   63.20 +
   63.21 +#define FMUSIC_FLAGS_NORMALVOLUMESLIDES	0
   63.22 +#define FMUSIC_FLAGS_FASTVOLUMESLIDES		1
   63.23 +//#define FMUSIC_FLAGS_LINEARFREQUENCY		2
   63.24 +//#define FMUSIC_FLAGS_AMIGAFREQUENCY		4
   63.25 +
   63.26 +#define FMUSIC_MAXORDERS					256
   63.27 +
   63.28 +#define FMUSIC_KEYCUT						254
   63.29 +#define FMUSIC_KEYOFF						255
   63.30 +
   63.31 +#define FMUSIC_FREQ							1
   63.32 +#define FMUSIC_VOLUME						2
   63.33 +#define FMUSIC_PAN							4
   63.34 +#define FMUSIC_TRIGGER						8
   63.35 +#define FMUSIC_SURROUND						16
   63.36 +#define FMUSIC_STOP							32
   63.37 +#define FMUSIC_SURROUNDOFF					64
   63.38 +
   63.39 +#define FMUSIC_ENVELOPE_OFF					0
   63.40 +#define FMUSIC_ENVELOPE_ON					1
   63.41 +#define FMUSIC_ENVELOPE_SUSTAIN				2
   63.42 +#define FMUSIC_ENVELOPE_LOOP				4
   63.43 +#define FMUSIC_ENVELOPE_CARRY				8
   63.44 +
   63.45 +#define FMUSIC_CUT							0
   63.46 +#define FMUSIC_CONTINUE						1
   63.47 +#define FMUSIC_OFF							2
   63.48 +#define FMUSIC_FADEOUT						3
   63.49 +
   63.50 +#define FMUSIC_PLAYPACKED					TRUE
   63.51 +
   63.52 +#if !defined (FMUSIC_PLAYPACKED) && defined (FINAL)
   63.53 +	#error Error - packed music playing is not turned on for FINAL
   63.54 +#endif
   63.55 +
   63.56 +// Single note type - contains info on 1 note in a pattern
   63.57 +typedef struct 
   63.58 +{        
   63.59 +	unsigned char	note;			// note to play at     (0-133) 132=none,133=keyoff
   63.60 +	unsigned char	number;			// sample being played (0-99)
   63.61 +	unsigned char	volume;			// volume column value (0-64)  255=no volume
   63.62 +	unsigned char	effect;			// effect number       (0-1Ah)
   63.63 +	unsigned char	eparam;			// effect parameter    (0-255)
   63.64 +} FMUSIC_NOTE;
   63.65 +
   63.66 +// pattern data type 
   63.67 +typedef struct
   63.68 +{
   63.69 +	int		rows;
   63.70 +	FMUSIC_NOTE	*data;
   63.71 +} FMUSIC_PATTERN;
   63.72 +
   63.73 +#pragma pack(1)
   63.74 +
   63.75 +typedef struct
   63.76 +{
   63.77 +	unsigned char order;
   63.78 +	unsigned char row;
   63.79 +	unsigned int  ms;
   63.80 +} FMUSIC_TIMMEINFO;
   63.81 +
   63.82 +typedef struct
   63.83 +{
   63.84 +	signed char value;
   63.85 +	unsigned short tick;
   63.86 +} FMUSIC_ENVNODE;
   63.87 +
   63.88 +
   63.89 +#pragma pack()
   63.90 +
   63.91 +// Multi sample extended instrument
   63.92 +typedef struct FMUSIC_INSTRUMENT
   63.93 +{
   63.94 +	int			numsamples;			// number of samples in this instrument 
   63.95 +	FSOUND_SAMPLE	*sample[16];		// 16 samples per instrument 
   63.96 +	unsigned char	keymap[96];			// sample keymap assignments 
   63.97 +										
   63.98 +	unsigned short	VOLPoints[40];		// Volume envelope points (80 bytes - enough for 25 3 byte IT envelopes)
   63.99 +	unsigned short	PANPoints[40];		// Panning envelope points 
  63.100 +
  63.101 +	// ====================================================================================
  63.102 +	// 16 bytes read here in the loader for size, dont alter order or insert!!!
  63.103 +	unsigned char	VOLnumpoints;		// Number of volume envelope points 
  63.104 +	unsigned char	PANnumpoints;		// Number of panning envelope points 
  63.105 +	unsigned char	VOLsustain;			// Volume sustain point 
  63.106 +	unsigned char	VOLLoopStart;		// Volume envelope loop start 
  63.107 +	unsigned char	VOLLoopEnd;			// Volume envelope loop end 
  63.108 +	unsigned char	PANsustain;			// Panning sustain point 
  63.109 +	unsigned char	PANLoopStart;		// Panning envelope loop start 
  63.110 +	unsigned char	PANLoopEnd;			// Panning envelope loop end 
  63.111 +	unsigned char	VOLtype;			// Type of envelope,bit 0:On 1:Sustain 2:Loop 
  63.112 +	unsigned char	PANtype;			// Type of envelope,bit 0:On 1:Sustain 2:Loop 
  63.113 +	unsigned char	VIBtype;			// Instrument Vibrato type 
  63.114 +	unsigned char	VIBsweep;			// Time it takes for vibrato to fully kick in 
  63.115 +	unsigned char	VIBdepth;			// depth of vibrato 
  63.116 +	unsigned char	VIBrate;			// rate of vibrato 
  63.117 +	unsigned short	VOLfade;			// fade out value 
  63.118 +	// ====================================================================================
  63.119 +
  63.120 +
  63.121 +} FMUSIC_INSTRUMENT;
  63.122 +
  63.123 +
  63.124 +
  63.125 +// Channel type - contains information on a mod channel
  63.126 +typedef struct FMUSIC_CHANNEL
  63.127 +{
  63.128 +									
  63.129 +	unsigned char  	note;  				// last note set in channel 
  63.130 +	unsigned char	samp;				// last sample set in channel 
  63.131 +										
  63.132 +	unsigned char	notectrl;			// flags for FSOUND 
  63.133 +					
  63.134 +	FSOUND_CHANNEL	*cptr;				// pointer to FSOUND system mixing channel 
  63.135 +	FSOUND_SAMPLE	*sptr;				// pointer to FSOUND system sample 
  63.136 +
  63.137 +	int			freq;				// current mod frequency period for this channel 
  63.138 +	int			volume;				// current mod volume for this channel 
  63.139 +	int			pan;				// current mod pan for this channel 
  63.140 +	int			voldelta;			// delta for volume commands.. tremolo/tremor etc 
  63.141 +	int			freqdelta;			// delta for frequency commands.. vibrato/arpeggio etc 
  63.142 +	int			pandelta;			// delta for pan commands.. panbrello
  63.143 +										
  63.144 +	int			samp_globalvol;		// this current sample's global volume 
  63.145 +										
  63.146 +	int			envvoltick;			// tick counter for envelope position 
  63.147 +	int			envvolpos;			// envelope position 
  63.148 +	int			envvolfrac;			// fractional interpolated envelope volume 
  63.149 +	int			envvol;				// final interpolated envelope volume 
  63.150 +	int			envvoldelta;		// delta step between points 
  63.151 +	signed char	envvolstopped;		// flag to say whether envelope has finished or not 
  63.152 +										
  63.153 +	int			envpantick;			// tick counter for envelope position 
  63.154 +	int			envpanpos;			// envelope position 
  63.155 +	int			envpanfrac;			// fractional interpolated envelope pan 
  63.156 +	int			envpan;				// final interpolated envelope pan 
  63.157 +	int			envpandelta;		// delta step between points 
  63.158 +	signed char	envpanstopped;		// flag to say whether envelope has finished or not 
  63.159 +										
  63.160 +	int			fadeoutvol;			// volume fade out 
  63.161 +	int			ivibpos;   			// instrument vibrato position
  63.162 +	int			ivibsweeppos;		// instrument vibrato sweep position
  63.163 +	signed char	fade;				// flag whether to start fade or not 
  63.164 +	signed char	keyoff;				// flag whether keyoff has been hit or not) 
  63.165 +									
  63.166 +	unsigned char	inst;				// last instrument set in channel 
  63.167 +	unsigned char  	realnote;  			// last realnote set in channel 
  63.168 +	unsigned int	period;				// last period set in channel 
  63.169 +	unsigned char	recenteffect;		// previous row's effect.. used to correct tremolo volume 
  63.170 +
  63.171 +	unsigned int	sampleoffset;		// sample offset for this channel in SAMPLES
  63.172 +
  63.173 +	int			globalvolume;		// global volume for this channel 
  63.174 +//	unsigned char	portaupdown;  		// last porta up or down value (S3M / IT)
  63.175 +	unsigned char	portadown;  		// last porta down value (XM) 
  63.176 +	unsigned char	portaup;   			// last porta up value (XM) 
  63.177 +	unsigned char	xtraportadown;		// last porta down value (XM) 
  63.178 +	unsigned char	xtraportaup;  		// last porta up value (XM) 
  63.179 +	unsigned char	volslide;   		// last volume slide value (XM + S3M)
  63.180 +	unsigned char	panslide;			// pan slide parameter (XM) 
  63.181 +	unsigned char	retrigx;   			// last retrig volume slide used (XM + S3M)
  63.182 +	unsigned char	retrigy;   			// last retrig tick count used (XM + S3M)
  63.183 +//	unsigned char	retrigcount;		// retrig timer (IT)
  63.184 +
  63.185 +	int			portatarget; 		// note to porta to 
  63.186 +	unsigned char	portaspeed;			// porta speed
  63.187 +//	unsigned char	portareached;		// flag for IT to say portamento has been reached
  63.188 +
  63.189 +	signed char		vibpos;   			// vibrato position
  63.190 +	unsigned char	vibspeed;  			// vibrato speed
  63.191 +	unsigned char	vibdepth;  			// vibrato depth
  63.192 +	unsigned char	vibtype;			// vibrato type (IT) .. I cant believe this shit
  63.193 +	
  63.194 +	signed char		tremolopos;   		// tremolo position
  63.195 +	unsigned char  	tremolospeed; 		// tremolo speed
  63.196 +	unsigned char  	tremolodepth; 		// tremolo depth
  63.197 +	
  63.198 +	int			panbrellopos;  		// panbrello position
  63.199 +	unsigned char  	panbrellospeed;		// panbrello speed
  63.200 +	unsigned char  	panbrellodepth;		// panbrello depth
  63.201 +	
  63.202 +	unsigned char	tremorpos; 			// tremor position (XM + S3M)
  63.203 +	unsigned char 	tremoron;   		// remembered parameters for tremor (XM + S3M) 
  63.204 +	unsigned char 	tremoroff;   		// remembered parameters for tremor (XM + S3M) 
  63.205 +	unsigned char	arpeggio;			// remembered parameters for arpeggio (S3M) 
  63.206 + 	int			patlooprow;			
  63.207 + 	int 			patloopno;  		// pattern loop variables for effect  E6x
  63.208 +	unsigned char  	channelvsl;			// global volume slide parameters
  63.209 +
  63.210 +	unsigned char	specialparam;		// remembered parameter for Sxy
  63.211 +	unsigned char 	wavecontrol;		// waveform type for vibrato and tremolo (4bits each)
  63.212 +	unsigned char 	wavecontrolvib;		// waveform type for vibrato (IT) 
  63.213 +	unsigned char 	wavecontroltrem;	// waveform type for tremolo (IT)
  63.214 +	unsigned char 	wavecontrolpan;		// waveform type for panbrello (IT)
  63.215 +
  63.216 +	unsigned char	finevsldown;		// parameter for fine volume slide down 
  63.217 +	unsigned char	finevslup;			// parameter for fine volume slide down 
  63.218 +	unsigned char	fineportaup;		// parameter for fine porta slide up
  63.219 +	unsigned char	fineportadown;		// parameter for fine porta slide down 
  63.220 +	unsigned char	highoffset;			// high part of sample offset - ie the 'y' part of yxx00 (IT) 
  63.221 +	unsigned char	volcolumn_volslide; // volume column parameter remembered for volume sliding (IT) 
  63.222 +} FMUSIC_CHANNEL;
  63.223 +
  63.224 +
  63.225 +// Song type - contains info on song
  63.226 +typedef struct FMUSIC_MODULE 
  63.227 +{							
  63.228 +	FMUSIC_PATTERN	*pattern;			// patterns array for this song
  63.229 +	FMUSIC_INSTRUMENT *instrument;		// instrument array for this song (not used in MOD/S3M)
  63.230 +	int				mixer_samplesleft;
  63.231 +	int				mixer_samplespertick;
  63.232 +
  63.233 +	// ====================================================================================
  63.234 +	// 6 bytes read here in the loader for size, dont alter order or insert!!!
  63.235 +	short			numorders;			// number of orders (song length)
  63.236 +	short			restart;			// restart position
  63.237 +	short			numchannels;		// number of channels
  63.238 +	// ====================================================================================
  63.239 +
  63.240 +	int				numpatterns;		// number of physical patterns
  63.241 +	int				numpatternsmem;		// number of allocated patterns
  63.242 +
  63.243 +	// ====================================================================================
  63.244 +	// 256+8 6 bytes read here in the loader for size, dont alter order or insert!!!
  63.245 +	short			numinsts;			// number of instruments
  63.246 +	unsigned short	flags;				// flags such as linear frequency, format specific quirks etc
  63.247 +	short			defaultspeed;
  63.248 +	short			defaultbpm;
  63.249 +	unsigned char	orderlist[FMUSIC_MAXORDERS];	// pattern playing order list
  63.250 +	// ====================================================================================
  63.251 +
  63.252 +	unsigned char	defaultglobalvolume;
  63.253 +
  63.254 +	int				globalvolume;		// global mod volume
  63.255 +	unsigned char	globalvsl;			// global mod volume
  63.256 +	int				tick;				// current mod tick	
  63.257 +	int				speed;				// speed of song in ticks per row
  63.258 +	int				bpm;				// speed of song in bpm
  63.259 +	int				row;				// current row in pattern
  63.260 +	int				order;				// current song order position
  63.261 +	int				patterndelay;		// pattern delay counter
  63.262 +	int				nextrow;			// current row in pattern
  63.263 +	int				nextorder;			// current song order position
  63.264 +	int				time_ms;			// time passed in seconds since song started
  63.265 +
  63.266 +	void			(*Play)(struct FMUSIC_MODULE *mod);		// callback when the song starts
  63.267 +	void			(*Update)(struct FMUSIC_MODULE *mod);	// playback routine callback... for different formats
  63.268 +	SAMPLELOADCALLBACK	samplecallback;
  63.269 +
  63.270 +} FMUSIC_MODULE;
  63.271 +
  63.272 +
  63.273 +//= VARIABLE EXTERNS ========================================================================
  63.274 +#ifdef __cplusplus
  63.275 +extern "C" 
  63.276 +{
  63.277 +#endif
  63.278 +
  63.279 +extern FMUSIC_MODULE *			FMUSIC_PlayingSong;
  63.280 +extern FSOUND_SAMPLE			FMUSIC_DummySample;
  63.281 +extern FSOUND_CHANNEL			FMUSIC_DummyChannel;
  63.282 +extern FMUSIC_INSTRUMENT		FMUSIC_DummyInstrument;
  63.283 +extern FMUSIC_CHANNEL			FMUSIC_Channel[];		// channel array for this song
  63.284 +extern FMUSIC_TIMMEINFO *		FMUSIC_TimeInfo;
  63.285 +
  63.286 +#ifdef __cplusplus
  63.287 +}
  63.288 +#endif
  63.289 +
  63.290 +
  63.291 +//= FUNCTION DECLARATIONS ====================================================================
  63.292 +
  63.293 +#define FMUSIC_PERIOD2HZ(_per) (14317056L / (_per))
  63.294 +
  63.295 +// private (internal functions)
  63.296 +void	FMUSIC_SetBPM(FMUSIC_MODULE *mod, int bpm);
  63.297 +int		FMUSIC_FineTune2Hz(unsigned char ft);
  63.298 +
  63.299 +#endif
  63.300 \ No newline at end of file
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/minifmod/Sound.h	Tue Nov 27 15:23:52 2007 +0100
    64.3 @@ -0,0 +1,196 @@
    64.4 +/******************************************************************************/
    64.5 +/* SOUND.H                                                                    */
    64.6 +/* ----------------                                                           */
    64.7 +/* MiniFMOD public source code release.                                       */
    64.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    64.9 +/* or answer questions about the source provided.                             */
   64.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   64.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   64.12 +/* Firelight Multimedia is a registered business name.                        */
   64.13 +/* This source must not be redistributed without this notice.                 */
   64.14 +/******************************************************************************/
   64.15 +
   64.16 +#ifndef _SOUND_H_
   64.17 +#define _SOUND_H_
   64.18 +
   64.19 +#include <windows.h>
   64.20 +#include <mmsystem.h>
   64.21 +
   64.22 +#include "system_memory.h"
   64.23 +
   64.24 +//= DEFINITIONS ===============================================================================
   64.25 +
   64.26 +#ifndef NULL
   64.27 +	#define NULL ((void *)(0L))
   64.28 +#endif
   64.29 +#ifndef TRUE
   64.30 +	#define TRUE 1L
   64.31 +#endif
   64.32 +#ifndef FALSE    
   64.33 +	#define FALSE 0L
   64.34 +#endif
   64.35 +
   64.36 +#define FSOUND_LATENCY	20
   64.37 +
   64.38 +#define BLOCK_ON_SOFTWAREUPDATE() while(FSOUND_Software_UpdateMutex);
   64.39 +
   64.40 +/*
   64.41 +[DEFINE_START] 
   64.42 +[
   64.43 + 	[NAME] 
   64.44 +	FSOUND_MODES
   64.45 +	
   64.46 +	[DESCRIPTION]	
   64.47 +	Sample description bitfields, OR them together for loading and describing samples.
   64.48 +]
   64.49 +*/
   64.50 +#define FSOUND_NORMAL		0x0			// Default sample type.  Loop off, 8bit mono, signed, not hardware accelerated.
   64.51 +#define FSOUND_LOOP_OFF		0x01		// For non looping samples.
   64.52 +#define FSOUND_LOOP_NORMAL	0x02		// For forward looping samples.
   64.53 +#define FSOUND_LOOP_BIDI	0x04		// For bidirectional looping samples.  (no effect if in hardware).
   64.54 +#define FSOUND_8BITS		0x08		// For 8 bit samples.
   64.55 +#define FSOUND_16BITS		0x10		// For 16 bit samples.
   64.56 +#define FSOUND_MONO			0x20		// For mono samples.
   64.57 +#define FSOUND_STEREO		0x40		// For stereo samples.
   64.58 +#define FSOUND_UNSIGNED		0x80		// For source data containing unsigned samples.
   64.59 +#define FSOUND_SIGNED		0x100		// For source data containing signed data.
   64.60 +#define FSOUND_DELTA		0x200		// For source data stored as delta values.
   64.61 +#define FSOUND_IT214		0x400		// For source data stored using IT214 compression.
   64.62 +#define FSOUND_IT215		0x800		// For source data stored using IT215 compression.
   64.63 +// [DEFINE_END]
   64.64 +
   64.65 +
   64.66 +
   64.67 +/*
   64.68 +[DEFINE_START] 
   64.69 +[
   64.70 + 	[NAME] 
   64.71 +	FSOUND_SAMPLEMODE
   64.72 +	
   64.73 +	[DESCRIPTION]	
   64.74 +
   64.75 +	[SEE_ALSO]		
   64.76 +	FSOUND_CD_Play
   64.77 +]
   64.78 +*/
   64.79 +#define FSOUND_FREE					-1	// definition for dynamically allocated channel or sample
   64.80 +// [DEFINE_END]
   64.81 +
   64.82 +
   64.83 +// ==============================================================================================
   64.84 +// STRUCTURE DEFINITIONS 
   64.85 +// ==============================================================================================
   64.86 +
   64.87 +// Sample type - contains info on sample
   64.88 +typedef struct FSOUND_SAMPLE
   64.89 +{                	
   64.90 +	unsigned char 	*buff;			// pointer to sound data
   64.91 +
   64.92 +	// ====================================================================================
   64.93 +	// BUGFIX 1.5 (finetune was in wrong place)
   64.94 +	// DONT CHANGE THE ORDER OF THESE NEXT MEMBERS AS THEY ARE ALL LOADED IN A SINGLE READ
   64.95 +	unsigned int 	length;       	// sample length (samples)
   64.96 +	unsigned int 	loopstart;    	// sample loop start (samples)
   64.97 +	unsigned int 	looplen;      	// sample loop length (samples) 
   64.98 +	unsigned char	defvol;    		// sample default volume
   64.99 +	signed char		finetune;		// finetune value from -128 to 127 
  64.100 +	// ====================================================================================
  64.101 +
  64.102 +	int 			deffreq;     	// sample default speed in hz
  64.103 +	int				defpan;       	// sample default pan
  64.104 +
  64.105 +	unsigned char	bits;			// bits per sample
  64.106 +	unsigned char	loopmode;      	// loop type 
  64.107 +
  64.108 +	// music stuff
  64.109 +	unsigned char 	globalvol;    	// sample global volume (scalar)
  64.110 +	signed char		relative;	  	// relative note 
  64.111 +	int				middlec;      	// finetuning adjustment to make for music samples.. relative to 8363hz 
  64.112 +	unsigned int 	susloopbegin;  	// sample loop start
  64.113 +	unsigned int 	susloopend;    	// sample loop length
  64.114 +	unsigned char 	vibspeed;		// vibrato speed 0-64 
  64.115 +	unsigned char	vibdepth;		// vibrato depth 0-64 
  64.116 +	unsigned char	vibtype;		// vibrato type 0=sine, 1=rampdown, 2=square, 3=random
  64.117 +	unsigned char	vibrate;		// vibrato rate 0-64 (like sweep?) 
  64.118 +
  64.119 +} FSOUND_SAMPLE;
  64.120 +
  64.121 +
  64.122 +// Channel type - contains information on a mixing channel
  64.123 +typedef struct 
  64.124 +{
  64.125 +	int				index;			// position in channel pool.
  64.126 +	int				volume;   		// current volume (00-FFh).
  64.127 +	int				frequency;		// speed or rate of playback in hz.
  64.128 +	int				pan;   			// panning value (00-FFh).
  64.129 +	int				actualvolume;   // driver level current volume.
  64.130 +	int				actualpan;   	// driver level panning value.
  64.131 +	unsigned int 	sampleoffset; 	// sample offset (sample starts playing from here).
  64.132 +
  64.133 +	FSOUND_SAMPLE	*sptr;			// currently playing sample
  64.134 +
  64.135 +	// software mixer stuff
  64.136 +	unsigned int	leftvolume;     // mixing information. adjusted volume for left channel (panning involved)
  64.137 +	unsigned int	rightvolume;    // mixing information. adjusted volume for right channel (panning involved)
  64.138 +	unsigned int	mixpos;			// mixing information. high part of 32:32 fractional position in sample
  64.139 +	unsigned int	mixposlo;		// mixing information. low part of 32:32 fractional position in sample
  64.140 +	unsigned int	speedlo;		// mixing information. playback rate - low part fractional
  64.141 +	unsigned int	speedhi;		// mixing information. playback rate - high part fractional
  64.142 +	unsigned int	speeddir;		// mixing information. playback direction - forwards or backwards
  64.143 +
  64.144 +	// software mixer volume ramping stuff
  64.145 +	unsigned int	ramp_lefttarget;     
  64.146 +	unsigned int	ramp_righttarget;    
  64.147 +	unsigned int	ramp_leftvolume;     
  64.148 +	unsigned int	ramp_rightvolume;    
  64.149 +	unsigned int	ramp_leftspeed;
  64.150 +	unsigned int	ramp_rightspeed;
  64.151 +	unsigned int	ramp_count;
  64.152 +} FSOUND_CHANNEL;
  64.153 +
  64.154 +//= FUNCTIONS =================================================================================
  64.155 +
  64.156 +typedef struct 
  64.157 +{
  64.158 +	WAVEHDR		wavehdr;
  64.159 +	signed char	*data;
  64.160 +} FSOUND_SoundBlock;
  64.161 +
  64.162 +
  64.163 +//= VARIABLE EXTERNS ==========================================================================
  64.164 +#ifdef __cplusplus
  64.165 +extern "C" 
  64.166 +{
  64.167 +#endif
  64.168 +
  64.169 +FSOUND_CHANNEL			FSOUND_Channel[];
  64.170 +int						FSOUND_MixRate;
  64.171 +int						FSOUND_BufferSize;			// software buffersize
  64.172 +int						FSOUND_BufferSizeMs;
  64.173 +HWAVEOUT				FSOUND_WaveOutHandle;
  64.174 +FSOUND_SoundBlock		FSOUND_MixBlock;
  64.175 +
  64.176 +// mixing info
  64.177 +signed char *			FSOUND_MixBufferMem;		// mix buffer memory block
  64.178 +signed char	*			FSOUND_MixBuffer;			// mix output buffer (16bit or 32bit)
  64.179 +unsigned int			FSOUND_MixerAddress;		// actual address of the function
  64.180 +int						FSOUND_HWMixOffset;			// the offset in the output buffer to mix into in bytes
  64.181 +float					FSOUND_OOMixRate;			// mixing rate in hz.
  64.182 +int						FSOUND_BufferSize;			// size of 1 'latency' ms buffer in bytes
  64.183 +int						FSOUND_BlockSize;			// LATENCY ms worth of samples
  64.184 +
  64.185 +volatile signed char	FSOUND_Software_Exit;		// mixing thread termination flag
  64.186 +volatile signed char	FSOUND_Software_UpdateMutex;
  64.187 +volatile signed char	FSOUND_Software_ThreadFinished;
  64.188 +volatile HANDLE			FSOUND_Software_hThread;
  64.189 +volatile int			FSOUND_Software_FillBlock;
  64.190 +volatile int			FSOUND_Software_RealBlock;
  64.191 +
  64.192 +DWORD					FSOUND_Software_DoubleBufferThread(LPDWORD lpdwParam);
  64.193 +void					FSOUND_Software_Fill();
  64.194 +
  64.195 +#ifdef __cplusplus
  64.196 +}
  64.197 +#endif
  64.198 +
  64.199 +#endif
  64.200 \ No newline at end of file
    65.1 Binary file minifmod/Winmm.lib has changed
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/minifmod/minifmod.h	Tue Nov 27 15:23:52 2007 +0100
    66.3 @@ -0,0 +1,73 @@
    66.4 +/******************************************************************************/
    66.5 +/* MINIFMOD.H                                                                 */
    66.6 +/* ----------------                                                           */
    66.7 +/* MiniFMOD public source code release.                                       */
    66.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    66.9 +/* or answer questions about the source provided.                             */
   66.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   66.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   66.12 +/* Firelight Multimedia is a registered business name.                        */
   66.13 +/* This source must not be redistributed without this notice.                 */
   66.14 +/******************************************************************************/
   66.15 +
   66.16 +//==========================================================================================
   66.17 +// MINIFMOD Main header file. Copyright (c), FireLight Multimedia 2000.
   66.18 +// Based on FMOD, copyright (c), FireLight Multimedia 2000.
   66.19 +//==========================================================================================
   66.20 +
   66.21 +#ifndef _MINIFMOD_H_
   66.22 +#define _MINIFMOD_H_
   66.23 +
   66.24 +//===============================================================================================
   66.25 +//= DEFINITIONS
   66.26 +//===============================================================================================
   66.27 +
   66.28 +// fmod defined types
   66.29 +typedef struct FMUSIC_MODULE	FMUSIC_MODULE;
   66.30 +
   66.31 +//===============================================================================================
   66.32 +//= FUNCTION PROTOTYPES
   66.33 +//===============================================================================================
   66.34 +
   66.35 +#ifdef __cplusplus
   66.36 +extern "C" {
   66.37 +#endif
   66.38 +
   66.39 +// ==================================
   66.40 +// Initialization / Global functions.
   66.41 +// ==================================
   66.42 +typedef void (*SAMPLELOADCALLBACK)(void *buff, int lenbytes, int numbits, int instno, int sampno);
   66.43 +typedef void (*FMUSIC_CALLBACK)(FMUSIC_MODULE *mod, unsigned char param);
   66.44 +
   66.45 +// this must be called before FSOUND_Init!
   66.46 +void FSOUND_File_SetCallbacks(unsigned int	(*OpenCallback)(char *name),
   66.47 +                              void			(*CloseCallback)(unsigned int handle),
   66.48 +                              int			(*ReadCallback)(void *buffer, int size, unsigned int handle),
   66.49 +                              void			(*SeekCallback)(unsigned int handle, int pos, signed char mode),
   66.50 +                              int			(*TellCallback)(unsigned int handle));
   66.51 +
   66.52 +signed char		FSOUND_Init(int mixrate, int vcmmode);
   66.53 +void			FSOUND_Close();
   66.54 +
   66.55 +// =============================================================================================
   66.56 +// FMUSIC API
   66.57 +// =============================================================================================
   66.58 +
   66.59 +// Song management / playback functions.
   66.60 +// =====================================
   66.61 +FMUSIC_MODULE * FMUSIC_LoadSong(char *data, SAMPLELOADCALLBACK sampleloadcallback);
   66.62 +signed char		FMUSIC_FreeSong(FMUSIC_MODULE *mod);
   66.63 +signed char		FMUSIC_PlaySong(FMUSIC_MODULE *mod);
   66.64 +signed char		FMUSIC_StopSong(FMUSIC_MODULE *mod);
   66.65 +
   66.66 +// Runtime song information.
   66.67 +// =========================
   66.68 +int				FMUSIC_GetOrder(FMUSIC_MODULE *mod);
   66.69 +int				FMUSIC_GetRow(FMUSIC_MODULE *mod);
   66.70 +unsigned int	FMUSIC_GetTime(FMUSIC_MODULE *mod);
   66.71 +
   66.72 +#ifdef __cplusplus
   66.73 +}
   66.74 +#endif
   66.75 +
   66.76 +#endif
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/minifmod/mixer_clipcopy.c	Tue Nov 27 15:23:52 2007 +0100
    67.3 @@ -0,0 +1,211 @@
    67.4 +/******************************************************************************/
    67.5 +/* MIXER_CLIPCOPY.C                                                           */
    67.6 +/* ----------------                                                           */
    67.7 +/* MiniFMOD public source code release.                                       */
    67.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    67.9 +/* or answer questions about the source provided.                             */
   67.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   67.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   67.12 +/* Firelight Multimedia is a registered business name.                        */
   67.13 +/* This source must not be redistributed without this notice.                 */
   67.14 +/******************************************************************************/
   67.15 +
   67.16 +#include "sound.h"
   67.17 +
   67.18 +static unsigned long mix_temp1		= 0;
   67.19 +static const float	 mix_3times2pow51 = 3.0f * (float)(1L<<25) * (float)(1L<<26);
   67.20 +
   67.21 +// this is smaller but slower.
   67.22 +#define USER_SMALLER_CLIPCOPY
   67.23 +
   67.24 +/*
   67.25 +[API]
   67.26 +[
   67.27 +	[DESCRIPTION]
   67.28 +	Size optimized version of the commented out clipper below
   67.29 +
   67.30 +	[PARAMETERS]
   67.31 + 
   67.32 +	[RETURN_VALUE]
   67.33 +
   67.34 +	[REMARKS]
   67.35 +	This uses an fadd trick and does 2 float to ints in about 8 cycles.. which is what just 1 
   67.36 +	fistp would take normally.. note this is meant for p5 machines, as ppro has a 1cycle 
   67.37 +	fistp which is faster.
   67.38 +
   67.39 +	[SEE_ALSO]
   67.40 +]
   67.41 +*/
   67.42 +#ifdef USER_SMALLER_CLIPCOPY
   67.43 +void FSOUND_MixerClipCopy_Float32(void *dest, void *src, long len)
   67.44 +{
   67.45 +	int count;
   67.46 +	short *destptr = (short *)dest;
   67.47 +	float *srcptr = (float *)src;
   67.48 +
   67.49 +	if (len <=0 || !dest || !src) 
   67.50 +		return;
   67.51 +
   67.52 +	for (count=0; count<len<<1; count++)
   67.53 +	{
   67.54 +		int val;
   67.55 +		__asm
   67.56 +		{
   67.57 +			mov eax, srcptr
   67.58 +			fld [eax]
   67.59 +			add srcptr, 4
   67.60 +			fistp val
   67.61 +		}
   67.62 +		*destptr++ = (val < -32768 ? -32768 : val > 32767 ? 32767 : val);
   67.63 +	}
   67.64 +		
   67.65 +}
   67.66 +#else
   67.67 +
   67.68 +void FSOUND_MixerClipCopy_Float32(void *dest, void *src, long len)
   67.69 +{
   67.70 +	__int64 lefti,righti;
   67.71 +
   67.72 +	if (len <=0 || !dest || !src) 
   67.73 +		return;
   67.74 +
   67.75 +	__asm
   67.76 +	{
   67.77 +		fld		mix_3times2pow51		// st0:magic
   67.78 +
   67.79 +		// if there wasnt any channels mixed (all their sptr's were null) then just clear, dont clip
   67.80 +		jne		ClipAndCopySetup
   67.81 +		xor		eax, eax
   67.82 +
   67.83 +		mov		edi, dest
   67.84 +		mov		ecx, len				// number of dwords in 16bit stereo output stream
   67.85 +		rep		stosd
   67.86 +		jmp		MixerFPU_Stereo16_Finished
   67.87 +
   67.88 +		//= Clip and copy 32bit mixbuffer to 16bit output for both pointers
   67.89 +	ClipAndCopySetup:
   67.90 +		mov		esi, src				// point esi to float 32bit mix buffer
   67.91 +		mov		edi, dest				// point edi to 16bit output stream
   67.92 +		mov		ecx, len				
   67.93 +		mov		ebx, [edi]				// preread destination into cache
   67.94 +
   67.95 +	ClipAndCopyLoop:
   67.96 +		fld		dword ptr [esi]			// st0:left  st1:magic
   67.97 +		fld		dword ptr [esi+4]		// st0:right st1:left  st2:magic
   67.98 +		fadd	st(0), st(2)			// st0:right+magic st1:left  st2:magic
   67.99 +		fxch							// st0:left st1:right+magic st2:magic
  67.100 +		fadd	st(0), st(2)			// st0:left+magic st1:right+magic st2:magic
  67.101 +		fxch							// st0:right+magic st1:left+magic st2:magic
  67.102 +		// 1st fadd
  67.103 +		//
  67.104 +		fstp	qword ptr righti		// st0:left+magic st1:magic
  67.105 +		fstp	qword ptr lefti			// st0:magic
  67.106 +
  67.107 +		mov		ebx, dword ptr lefti
  67.108 +		mov		eax, dword ptr righti
  67.109 +
  67.110 +		cmp     eax, 32767
  67.111 +		jg		clampmax2
  67.112 +		cmp     eax, -32768
  67.113 +		jl		clampmin2
  67.114 +		cmp     ebx, 32767
  67.115 +		jg		clampmax3
  67.116 +		cmp     ebx, -32768
  67.117 +		jl		clampmin3
  67.118 +
  67.119 +		shl		eax, 16
  67.120 +		and		ebx, 00000FFFFh
  67.121 +		add		esi, 8
  67.122 +		or		eax, ebx
  67.123 +		mov		[edi], eax
  67.124 +		add		edi, 4
  67.125 +		dec		ecx
  67.126 +		jnz		ClipAndCopyLoop
  67.127 +		jmp		MixerFPU_Stereo16_Finished
  67.128 +
  67.129 +	clampmax2:
  67.130 +		mov		eax, 07fff0000h
  67.131 +		nop
  67.132 +		cmp     ebx, 32767
  67.133 +		jg		clampmax4
  67.134 +		cmp     ebx, -32768
  67.135 +		jl		clampmin4
  67.136 +
  67.137 +		and		ebx, 00000FFFFh
  67.138 +		add		esi, 8
  67.139 +		or		eax, ebx
  67.140 +		nop
  67.141 +		mov		[edi], eax
  67.142 +		add		edi, 4
  67.143 +		dec		ecx
  67.144 +		jnz		ClipAndCopyLoop
  67.145 +		jmp		MixerFPU_Stereo16_Finished
  67.146 +
  67.147 +	clampmin2:
  67.148 +		mov		eax, 080000000h
  67.149 +		nop
  67.150 +		cmp     ebx, 32767
  67.151 +		jg		clampmax4
  67.152 +		cmp     ebx, -32768
  67.153 +		jl		clampmin4
  67.154 +
  67.155 +		and		ebx, 00000FFFFh
  67.156 +		add		esi, 8
  67.157 +		or		eax, ebx
  67.158 +		nop
  67.159 +		mov		[edi], eax
  67.160 +		add		edi, 4
  67.161 +		dec		ecx
  67.162 +		jnz		ClipAndCopyLoop
  67.163 +		jmp		MixerFPU_Stereo16_Finished
  67.164 +
  67.165 +	clampmax3:
  67.166 +		shl		eax, 16
  67.167 +		mov		ebx, 000007FFFh
  67.168 +		or		eax, ebx
  67.169 +		add		esi, 8
  67.170 +		mov		[edi], eax
  67.171 +		add		edi, 4
  67.172 +		dec		ecx
  67.173 +		jnz		ClipAndCopyLoop
  67.174 +		jmp		MixerFPU_Stereo16_Finished
  67.175 +
  67.176 +	clampmin3:
  67.177 +		shl		eax, 16
  67.178 +		mov		ebx, 000008000h
  67.179 +		or		eax, ebx
  67.180 +		add		esi, 8
  67.181 +		mov		[edi], eax
  67.182 +		add		edi, 4
  67.183 +		dec		ecx
  67.184 +		jnz		ClipAndCopyLoop
  67.185 +		jmp		MixerFPU_Stereo16_Finished
  67.186 +
  67.187 +	clampmax4:
  67.188 +		mov		ebx, 000007fffh
  67.189 +		add		esi, 8
  67.190 +		or		eax, ebx
  67.191 +		nop
  67.192 +		mov		[edi], eax
  67.193 +		add		edi, 4
  67.194 +		dec		ecx
  67.195 +		jnz		ClipAndCopyLoop
  67.196 +		jmp		MixerFPU_Stereo16_Finished
  67.197 +
  67.198 +	clampmin4:
  67.199 +		mov		ebx, 000008000h
  67.200 +		add		esi, 8
  67.201 +		or		eax, ebx
  67.202 +		nop
  67.203 +		mov		[edi], eax
  67.204 +		add		edi, 4
  67.205 +		dec		ecx
  67.206 +		jnz		ClipAndCopyLoop
  67.207 +
  67.208 +	MixerFPU_Stereo16_Finished:	
  67.209 +		fstp	mix_temp1
  67.210 +
  67.211 +	}
  67.212 +}
  67.213 +#endif
  67.214 +
    68.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.2 +++ b/minifmod/mixer_clipcopy.h	Tue Nov 27 15:23:52 2007 +0100
    68.3 @@ -0,0 +1,18 @@
    68.4 +/******************************************************************************/
    68.5 +/* MIXER_CLIPCOPY.H                                                           */
    68.6 +/* ----------------                                                           */
    68.7 +/* MiniFMOD public source code release.                                       */
    68.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    68.9 +/* or answer questions about the source provided.                             */
   68.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   68.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   68.12 +/* Firelight Multimedia is a registered business name.                        */
   68.13 +/* This source must not be redistributed without this notice.                 */
   68.14 +/******************************************************************************/
   68.15 +
   68.16 +#ifndef _MIXER_CLIPCOPY_H
   68.17 +#define _MIXER_CLIPCOPY_H
   68.18 +
   68.19 +void FSOUND_MixerClipCopy_Float32(void *dest, void *src, int len);
   68.20 +
   68.21 +#endif
   68.22 \ No newline at end of file
    69.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.2 +++ b/minifmod/mixer_fpu_ramp.c	Tue Nov 27 15:23:52 2007 +0100
    69.3 @@ -0,0 +1,777 @@
    69.4 +/******************************************************************************/
    69.5 +/* MIXER_FPU_RAMP.C                                                           */
    69.6 +/* ----------------                                                           */
    69.7 +/* MiniFMOD public source code release.                                       */
    69.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    69.9 +/* or answer questions about the source provided.                             */
   69.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   69.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   69.12 +/* Firelight Multimedia is a registered business name.                        */
   69.13 +/* This source must not be redistributed without this notice.                 */
   69.14 +/******************************************************************************/
   69.15 +
   69.16 +#include "minifmod.h"
   69.17 +#include "sound.h"
   69.18 +#include "mixer.h"
   69.19 +#include "mixer_clipcopy.h"
   69.20 +#include "mixer_fpu_ramp.h"
   69.21 +#include "system_memory.h"
   69.22 +
   69.23 +//#define ROLLED			TRUE		// this would make it smaller but quite slow
   69.24 +#define VOLUMERAMPING	TRUE		// enable/disable volume ramping
   69.25 +
   69.26 +#pragma warning(disable:4731)
   69.27 +
   69.28 +// =========================================================================================
   69.29 +// GLOBAL VARIABLES
   69.30 +// =========================================================================================
   69.31 +
   69.32 +//= made global to free ebp.============================================================================
   69.33 +static unsigned int mix_numsamples	= 0;	// number of samples to mix 
   69.34 +static unsigned int mix_mixptr		= 0;
   69.35 +static unsigned int mix_mixbuffend	= 0;
   69.36 +static unsigned int mix_mixbuffptr	= 0;
   69.37 +static unsigned int mix_endflag		= 0;
   69.38 +static unsigned int mix_sptr		= 0;
   69.39 +static unsigned int mix_cptr		= 0;
   69.40 +static unsigned int mix_count		= 0;
   69.41 +static unsigned int mix_samplebuff	= 0;
   69.42 +static float		mix_leftvol		= 0;
   69.43 +static float		mix_rightvol	= 0;
   69.44 +static unsigned int mix_temp1		= 0;
   69.45 +
   69.46 +static unsigned int mix_count_old	= 0;
   69.47 +static unsigned int mix_rampleftvol = 0;
   69.48 +static unsigned int mix_ramprightvol= 0;
   69.49 +static unsigned int mix_rampcount	= 0;
   69.50 +static unsigned int mix_rampspeedleft	= 0;
   69.51 +static unsigned int mix_rampspeedright	= 0;
   69.52 +unsigned int		mix_volumerampsteps	= 0;
   69.53 +float				mix_1overvolumerampsteps = 0;
   69.54 +
   69.55 +static const float	mix_255			= 255.0f;	
   69.56 +static const float	mix_256			= 256.0f;	
   69.57 +static const float	mix_1over255	= 1.0f / 255.0f;	
   69.58 +static const float	mix_1over256	= 1.0f / 256.0f;
   69.59 +static const float	mix_1over2gig	= 1.0f / 2147483648.0f;
   69.60 +
   69.61 +/*
   69.62 +[API]
   69.63 +[
   69.64 +	[DESCRIPTION]
   69.65 +
   69.66 +	[PARAMETERS]
   69.67 + 
   69.68 +	[RETURN_VALUE]
   69.69 +
   69.70 +	[REMARKS]
   69.71 +
   69.72 +	[SEE_ALSO]
   69.73 +]
   69.74 +*/
   69.75 +
   69.76 +void FSOUND_Mixer_FPU_Ramp(void *mixptr, int len, char returnaddress) 
   69.77 +{
   69.78 +	static FSOUND_CHANNEL *cptr;
   69.79 +	static int count;
   69.80 +	// IMPORTANT no local variables on stack.. we are trashing EBP.  static puts values on heap.
   69.81 +
   69.82 +	if (len <=0) 
   69.83 +		return;
   69.84 +
   69.85 +	mix_numsamples	= len;
   69.86 +	mix_mixptr		= (unsigned int)mixptr;
   69.87 +	mix_mixbuffend	= (unsigned int)mix_mixptr + (mix_numsamples << 3);
   69.88 +
   69.89 +
   69.90 +	//==============================================================================================
   69.91 +	// LOOP THROUGH CHANNELS
   69.92 +	//==============================================================================================
   69.93 +	for (count=0; count<64; count++)
   69.94 +	{
   69.95 +		cptr = &FSOUND_Channel[count];
   69.96 +
   69.97 +		__asm 
   69.98 +		{
   69.99 +			push	ebp
  69.100 +
  69.101 +			mov		ebx, mix_mixptr
  69.102 +			mov		mix_mixbuffptr, ebx
  69.103 +
  69.104 +			mov		ecx, cptr
  69.105 +			mov		mix_cptr, ecx
  69.106 +
  69.107 +			cmp		ecx, 0						// if (!cptr) ...
  69.108 +			je		MixExit						//			  ... then skip this channel!
  69.109 +
  69.110 +			mov		ebx, [ecx]FSOUND_CHANNEL.sptr				// load the correct SAMPLE  pointer for this channel
  69.111 +			mov		mix_sptr, ebx				// store sample pointer away
  69.112 +			cmp		ebx, 0						// if (!sptr) ...
  69.113 +			je		MixExit						//			  ... then skip this channel!
  69.114 +
  69.115 +			// get pointer to sample buffer
  69.116 +			mov		eax, [ebx].buff
  69.117 +			mov		mix_samplebuff, eax
  69.118 +
  69.119 +			//==============================================================================================
  69.120 +			// LOOP THROUGH CHANNELS
  69.121 +			// through setup code:- usually ebx = sample pointer, ecx = channel pointer
  69.122 +			//==============================================================================================
  69.123 +
  69.124 +			//= SUCCESS - SETUP CODE FOR THIS CHANNEL ======================================================
  69.125 +
  69.126 +			// =========================================================================================
  69.127 +			// the following code sets up a mix counter. it sees what will happen first, will the output buffer
  69.128 +			// end be reached first? or will the end of the sample be reached first? whatever is smallest will
  69.129 +			// be the mixcount.
  69.130 +
  69.131 +			// first base mixcount on size of OUTPUT BUFFER (in samples not bytes)
  69.132 +			mov		eax, mix_numsamples
  69.133 +
  69.134 +		CalculateLoopCount:
  69.135 +			mov		mix_count, eax
  69.136 +			mov		esi, [ecx].mixpos
  69.137 +			mov		ebp, FSOUND_OUTPUTBUFF_END	
  69.138 +			mov		mix_endflag, ebp			// set a flag to say mixing will end when end of output buffer is reached
  69.139 +
  69.140 +			cmp		[ecx].speeddir, FSOUND_MIXDIR_FORWARDS
  69.141 +			jne		samplesleftbackwards
  69.142 +
  69.143 +			// work out how many samples left from mixpos to loop end	
  69.144 +			mov		edx, [ebx].loopstart
  69.145 +			add		edx, [ebx].looplen
  69.146 +			sub		edx, esi					// eax = samples left (loopstart+looplen-mixpos)
  69.147 +			mov		eax, [ecx].mixposlo
  69.148 +			xor		ebp, ebp
  69.149 +			sub		ebp, eax
  69.150 +			sbb		edx, 0
  69.151 +			mov		eax, ebp
  69.152 +			jmp		samplesleftfinish
  69.153 +
  69.154 +		samplesleftbackwards:
  69.155 +			// work out how many samples left from mixpos to loop start
  69.156 +			mov		edx, [ecx].mixpos
  69.157 +			mov		eax, [ecx].mixposlo
  69.158 +
  69.159 +			sub		eax, 0h
  69.160 +			sbb		edx, [ebx].loopstart
  69.161 +
  69.162 +		samplesleftfinish:
  69.163 +
  69.164 +			// edx:eax now contains number of samples left to mix
  69.165 +			cmp		edx, 1000000h
  69.166 +			jae		staywithoutputbuffend
  69.167 +
  69.168 +			shrd	eax, edx, 8
  69.169 +			shr		edx, 8
  69.170 +			
  69.171 +			// now samples left = EDX:EAX -> hhhhhlll
  69.172 +			mov		ebp, [ecx].speedhi
  69.173 +			mov		edi, [ecx].speedlo
  69.174 +			shl		ebp, 24
  69.175 +			shr		edi, 8
  69.176 +			and		edi, 000FFFFFFh
  69.177 +			or		ebp, edi
  69.178 +			div		ebp
  69.179 +
  69.180 +			or		edx,edx						// if fractional 16-bit part is zero we must add an extra carry number 
  69.181 +			jz		dontaddbyte					//  to the resultant in EDX:EAX.
  69.182 +			inc		eax
  69.183 +		dontaddbyte:							// we must remove the fractional part of the multiply by shifting EDX:EAX
  69.184 +			cmp		eax, mix_count
  69.185 +			ja		staywithoutputbuffend
  69.186 +			mov		mix_count, eax
  69.187 +			mov		edx, FSOUND_SAMPLEBUFF_END	// set a flag to say mix will end when end of output buffer is reached
  69.188 +			mov		mix_endflag, edx
  69.189 +		staywithoutputbuffend:
  69.190 +
  69.191 +			mov		ecx, mix_cptr
  69.192 +
  69.193 +			//= VOLUME RAMP SETUP =========================================================
  69.194 +			// Reasons to ramp
  69.195 +			// 1. volume change
  69.196 +			// 2. sample starts (just treat as volume change - 0 to volume)
  69.197 +			// 3. sample ends (ramp last n number of samples from volume to 0)
  69.198 +
  69.199 +			// now if the volume has changed, make end condition equal a volume ramp
  69.200 +			mov		mix_rampspeedleft, 0		// clear out volume ramp
  69.201 +			mov		mix_rampspeedright, 0		// clear out volume ramp
  69.202 +
  69.203 +#ifdef VOLUMERAMPING
  69.204 +			mov		eax, mix_count
  69.205 +			mov		mix_count_old, eax			// remember mix count before modifying it	
  69.206 +			
  69.207 +			mov		mix_rampcount, 0
  69.208 +			cmp		[ecx].ramp_count, 0
  69.209 +			je		volumerampstart
  69.210 +
  69.211 +			// if it tries to continue an old ramp, but the target has changed, 
  69.212 +			// set up a new ramp
  69.213 +			mov		eax, [ecx].leftvolume
  69.214 +			mov		edx, [ecx].ramp_lefttarget
  69.215 +			cmp		eax,edx
  69.216 +			jne		volumerampstart
  69.217 +			mov		eax, [ecx].rightvolume
  69.218 +			mov		edx, [ecx].ramp_righttarget
  69.219 +			cmp		eax,edx
  69.220 +			jne		volumerampstart
  69.221 +
  69.222 +			// restore old ramp
  69.223 +			mov		eax, [ecx].ramp_count
  69.224 +			mov		mix_rampcount, eax
  69.225 +			mov		eax, [ecx].ramp_leftspeed
  69.226 +			mov		mix_rampspeedleft, eax
  69.227 +			mov		eax, [ecx].ramp_rightspeed
  69.228 +			mov		mix_rampspeedright, eax
  69.229 +
  69.230 +			jmp		novolumerampR
  69.231 +
  69.232 +		volumerampstart:
  69.233 +			mov		eax, [ecx].leftvolume
  69.234 +			mov		edx, [ecx].ramp_leftvolume 
  69.235 +			shr		edx, 8
  69.236 +			mov		[ecx].ramp_lefttarget, eax
  69.237 +			sub		eax, edx
  69.238 +			cmp		eax, 0
  69.239 +			je		novolumerampL
  69.240 +
  69.241 +			mov		mix_temp1, eax
  69.242 +			fild	mix_temp1
  69.243 +			fmul	mix_1over255 
  69.244 +			fmul	mix_1overvolumerampsteps
  69.245 +			fstp	mix_rampspeedleft
  69.246 +			mov		eax, mix_rampspeedleft
  69.247 +			mov		[ecx].ramp_leftspeed, eax
  69.248 +			mov		eax, mix_volumerampsteps
  69.249 +			mov		mix_rampcount, eax
  69.250 +
  69.251 +
  69.252 +		novolumerampL:
  69.253 +			mov		eax, [ecx].rightvolume
  69.254 +			mov		edx, [ecx].ramp_rightvolume 
  69.255 +			shr		edx, 8
  69.256 +			mov		[ecx].ramp_righttarget, eax
  69.257 +			sub		eax, edx
  69.258 +			cmp		eax, 0
  69.259 +			je		novolumerampR
  69.260 +
  69.261 +			mov		mix_temp1, eax
  69.262 +			fild	mix_temp1
  69.263 +			fmul	mix_1over255 
  69.264 +			fmul	mix_1overvolumerampsteps
  69.265 +			fstp	mix_rampspeedright
  69.266 +			mov		eax, mix_rampspeedright
  69.267 +			mov		[ecx].ramp_rightspeed, eax
  69.268 +			mov		eax, mix_volumerampsteps
  69.269 +			mov		mix_rampcount, eax
  69.270 +
  69.271 +
  69.272 +		novolumerampR:
  69.273 +
  69.274 +			mov		eax, mix_rampcount
  69.275 +			cmp		eax, 0
  69.276 +			jle		volumerampend
  69.277 +
  69.278 +			mov		[ecx].ramp_count, eax
  69.279 +
  69.280 +			cmp		mix_count, eax
  69.281 +			jbe		volumerampend	// dont clamp mixcount 
  69.282 +			mov		mix_count, eax
  69.283 +		volumerampend:
  69.284 +#endif
  69.285 +
  69.286 +
  69.287 +			//= SET UP VOLUME MULTIPLIERS ==================================================
  69.288 +
  69.289 +			// set up left/right volumes
  69.290 +			mov		ecx, mix_cptr
  69.291 +
  69.292 +
  69.293 +			// right volume
  69.294 +			mov		eax, [ecx].rightvolume
  69.295 +			mov		mix_temp1, eax
  69.296 +			fild	mix_temp1
  69.297 +			fmul	mix_1over255 
  69.298 +			fstp	mix_rightvol
  69.299 +
  69.300 +			// left volume
  69.301 +			mov		eax, [ecx].leftvolume
  69.302 +			mov		mix_temp1, eax
  69.303 +			fild	mix_temp1
  69.304 +			fmul	mix_1over255 
  69.305 +			fstp	mix_leftvol
  69.306 +
  69.307 +			// right ramp volume
  69.308 +			mov		eax, [ecx].ramp_rightvolume
  69.309 +			mov		mix_temp1, eax
  69.310 +			fild	mix_temp1
  69.311 +			fmul	mix_1over256			// first convert from 24:8 to 0-255
  69.312 +			fmul	mix_1over255			// now make 0-1.0f
  69.313 +			fstp	mix_ramprightvol
  69.314 +
  69.315 +			// left ramp volume
  69.316 +			mov		eax, [ecx].ramp_leftvolume
  69.317 +			mov		mix_temp1, eax
  69.318 +			fild	mix_temp1
  69.319 +			fmul	mix_1over256			// first convert from 24:8 to 0-255
  69.320 +			fmul	mix_1over255			// now make 0-1.0f
  69.321 +			fstp	mix_rampleftvol
  69.322 +
  69.323 +
  69.324 +			//= SET UP ALL OF THE REGISTERS HERE FOR THE INNER LOOP ====================================
  69.325 +			// eax = ---
  69.326 +			// ebx = speed low
  69.327 +			// ecx = speed high
  69.328 +			// edx = counter
  69.329 +			// esi = mixpos
  69.330 +			// edi = destination pointer
  69.331 +			// ebp = mixpos low
  69.332 +
  69.333 +			mov		eax, mix_cptr
  69.334 +			mov		ebx, [eax].speedlo
  69.335 +			mov		ecx, [eax].speedhi
  69.336 +		//  mov		edx, mix_count
  69.337 +			mov		ebp, [eax].mixposlo
  69.338 +			mov		esi, [eax].mixpos
  69.339 +			mov		edi, mix_mixbuffptr		// point edi to 16bit output stream
  69.340 +
  69.341 +			cmp		[eax].speeddir, FSOUND_MIXDIR_FORWARDS
  69.342 +			je		NoChangeSpeed
  69.343 +			xor		ebx, 0FFFFFFFFh
  69.344 +			xor		ecx, 0FFFFFFFFh
  69.345 +			add		ebx, 1
  69.346 +			adc		ecx, 0
  69.347 +		NoChangeSpeed:
  69.348 +
  69.349 +
  69.350 +			//======================================================================================
  69.351 +			// ** 16 BIT NORMAL FUNCTIONS **********************************************************
  69.352 +			//======================================================================================
  69.353 +
  69.354 +			mov		eax, mix_samplebuff
  69.355 +			shr		eax, 1
  69.356 +			add		esi, eax
  69.357 +
  69.358 +			mov		edx, mix_count
  69.359 +
  69.360 +	#ifdef VOLUMERAMPING
  69.361 +			cmp		mix_rampcount, 0
  69.362 +			jne		MixLoopStart16_2
  69.363 +	#endif
  69.364 +
  69.365 +	#ifdef ROLLED
  69.366 +			jmp		MixLoopStart16
  69.367 +	#endif
  69.368 +			shr		edx, 1
  69.369 +			or		edx, edx
  69.370 +			jz		MixLoopStart16				// no groups of 2 samples to mix!
  69.371 +
  69.372 +// START
  69.373 +
  69.374 +			shr		ebp, 1					// 1 make 31bit coz fpu only loads signed values
  69.375 +			add		edi, 16					// 
  69.376 +			fild	word ptr [esi+esi+2]	// 1 [0]samp1+1
  69.377 +			mov		mix_temp1, ebp			// 1
  69.378 +//			nop
  69.379 +			fild	word ptr [esi+esi]		// 1 [0]samp1 [1]samp1+1
  69.380 +			fild	dword ptr mix_temp1		// 1 [0]ifrac1 [1]samp1 [2]samp1+1
  69.381 +			add		ebp, ebp				// 1 
  69.382 +//			nop
  69.383 +			add		ebp, ebx				// 1
  69.384 +			adc		esi, ecx				// 1 
  69.385 +			fmul	mix_1over2gig			// 1 [0]ffrac1 [1]samp1 [2]samp1+1
  69.386 +			fild	word ptr [esi+esi+2]	// 1 [0]samp2+1 [1]ffrac1 [2]samp1 [3]samp1+1
  69.387 +			shr		ebp, 1					// 1
  69.388 +//			nop
  69.389 +			mov		mix_temp1, ebp			// 1
  69.390 +//			nop
  69.391 +			fild	dword ptr mix_temp1		// 1 [0]ifrac2 [1]samp2+1 [2]ffrac1 [3]samp1 [4]samp1+1
  69.392 +			fild	word ptr [esi+esi]		// 1 [0]samp2 [1]ifrac2 [2]samp2+1 [3]ffrac1 [4]samp1 [5]samp1+1
  69.393 +			fxch	st(5)					//   [0]samp1+1 [1]ifrac2 [2]samp2+1 [3]ffrac1 [4]samp1 [5]samp2
  69.394 +			fsub	st(0), st(4)			// 1 [0]delta1 [1]ifrac2 [2]samp2+1 [3]ffrac1 [4]samp1 [5]samp2
  69.395 +//			fnop							// 1 fsub stall
  69.396 +			shl		ebp, 1					// 1 
  69.397 +//			nop
  69.398 +			fmulp	st(3), st(0)			// 1 [0]ifrac2 [1]samp2+1 [2]interp1 [3]samp1 [4]samp2
  69.399 +			fmul	mix_1over2gig			// 1 [0]ffrac2 [1]samp2+1 [2]interp1 [3]samp1 [4]samp2
  69.400 +			fxch	st(1)					//   [0]samp2+1 [1]ffrac2 [2]interp1 [3]samp1 [4]samp2
  69.401 +			fsub	st(0), st(4)			// 1 [0]delta2 [1]ffrac2 [2]interp1 [3]samp1 [4]samp2
  69.402 +			add		ebp, ebx				// 1 
  69.403 +//			nop
  69.404 +			adc		esi, ecx				// 1 
  69.405 +//			nop									 
  69.406 +			fmulp	st(1), st(0)			// 1 [0]interp2 [1]interp1 [2]samp1 [3]samp2
  69.407 +			fxch	st(1)					//   [0]interp1 [1]interp2 [2]samp1 [3]samp2
  69.408 +			faddp	st(2), st(0)			// 1 [0]interp2 [1]newsamp1 [2]samp2
  69.409 +//			fnop							// 1 fadd stall
  69.410 +//			fnop							// 1 fadd stall
  69.411 +			fld		st(1)					// 1 [0]newsamp1 [1]interp2 [2]newsamp1 [3]samp2
  69.412 +			fmul	mix_leftvol				// 1 [0]newsampL1 [1]interp2 [2]newsamp1 [3]samp2
  69.413 +			fxch	st(1)					//   [0]interp2 [1]newsampL1 [2]newsamp1 [3]samp2
  69.414 +			faddp	st(3), st(0)			// 1 [0]newsampL1 [1]newsamp1 [2]newsamp2
  69.415 +			fxch	st(1)					// 1 [0]newsamp1 [1]newsampL1 [2]newsamp2
  69.416 +			jmp		MixLoopUnroll16CoilEntry// 1
  69.417 +
  69.418 +			ALIGN 16
  69.419 +
  69.420 +		MixLoopUnroll16:
  69.421 +			shr		ebp, 1					// 1 
  69.422 +//			nop
  69.423 +			mov		mix_temp1, ebp			// 1
  69.424 +//			nop
  69.425 +			fild	word ptr [esi+esi+2]	// 1 [0]samp1+1 [1]finalR2 [2]finalR1 [3]finalL2
  69.426 +			fild	word ptr [esi+esi]		// 1 [0]samp1 [1]samp1+1 [2]finalR2 [3]finalR1 [4]finalL2
  69.427 +			fild	dword ptr mix_temp1		// 1 [0]ifrac1 [1]samp1 [2]samp1+1 [3]finalR2 [4]finalR1 [5]finalL2
  69.428 +			add		ebp, ebp				// 1 
  69.429 +//			nop
  69.430 +			add		ebp, ebx				// 1
  69.431 +//			nop
  69.432 +			adc		esi, ecx				// 1 
  69.433 +			add		edi, 16					// 
  69.434 +			fmul	mix_1over2gig			// 1 [0]ffrac1 [1]samp1 [2]samp1+1 [3]finalR2 [4]finalR1 [5]finalL2
  69.435 +			shr		ebp, 1					// 1
  69.436 +//			nop
  69.437 +			mov		mix_temp1, ebp			// 1
  69.438 +//			nop
  69.439 +			fild	dword ptr mix_temp1		// 1 [0]ifrac2 [1]ffrac1 [2]samp1 [3]samp1+1 [4]finalR2 [5]finalR1 [6]finalL2
  69.440 +			fild	word ptr [esi+esi+2]	// 1 [0]samp2+1 [1]ifrac2 [2]ffrac1 [3]samp1 [4]samp1+1 [5]finalR2 [6]finalR1 [7]finalL2
  69.441 +			fxch	st(4)					//   [0]samp1+1 [1]ifrac2 [2]ffrac1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2
  69.442 +			fsub	st(0), st(3)			// 1 [0]delta1 [1]ifrac2 [2]ffrac1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2
  69.443 +//			fnop							// 1 fsub stall
  69.444 +			shl		ebp, 1					// 1 
  69.445 +//			nop
  69.446 +			fmulp	st(2), st(0)			// 1 [0]ifrac2 [1]interp1 [2]samp1 [3]samp2+1 [4]finalR2 [5]finalR1 [6]finalL2
  69.447 +			fild	word ptr [esi+esi]		// 1 [0]samp2 [1]ifrac2 [2]interp1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2
  69.448 +			fxch	st(1)					//   [0]ifrac2 [1]samp2 [2]interp1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2
  69.449 +			fmul	mix_1over2gig			// 1 [0]ffrac2 [1]samp2 [2]interp1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2
  69.450 +			fxch	st(4)					//   [0]samp2+1 [1]samp2 [2]interp1 [3]samp1 [4]ffrac2 [5]finalR2 [6]finalR1 [7]finalL2
  69.451 +			fsub	st(0), st(1)			// 1 [0]delta2 [1]samp2 [2]interp1 [3]samp1 [4]ffrac2 [5]finalR2 [6]finalR1 [7]finalL2
  69.452 +			add		ebp, ebx				// 1 
  69.453 +//			nop
  69.454 +			adc		esi, ecx				// 1 
  69.455 +//			nop                                  
  69.456 +			fmulp	st(4), st(0)			// 1 [0]samp2 [1]interp1 [2]samp1 [3]interp2 [4]finalR2 [5]finalR1 [6]finalL2
  69.457 +			fxch	st(2)					//   [0]samp1 [1]interp1 [2]samp2 [3]interp2 [4]finalR2 [5]finalR1 [6]finalL2
  69.458 +			faddp	st(1), st(0)			// 1 [0]newsamp1 [1]samp2 [2]interp2 [3]finalR2 [4]finalR1 [5]finalL2
  69.459 +			fxch	st(4)					//	 [0]finalR1 [1]samp2 [2]interp2 [3]finalR2 [4]newsamp1 [5]finalL2
  69.460 +			fstp	dword ptr [edi-28]		// 2 [0]samp2 [1]interp2 [2]finalR2 [3]newsamp1 [4]finalL2
  69.461 +			fxch	st(4)					// 1 [0]finalL2 [1]interp2 [2]finalR2 [3]newsamp1 [4]samp2
  69.462 +			fstp	dword ptr [edi-24]		// 2 [0]interp2 [1]finalR2 [2]newsamp1 [3]samp2
  69.463 +			fld		st(2)					// 1 [0]newsamp1 [1]interp2 [2]finalR2 [3]newsamp1 [4]samp2
  69.464 +			fmul	mix_leftvol				// 1 [0]newsampL1 [1]interp2 [2]finalR2 [3]newsamp1 [4]samp2
  69.465 +			fxch	st(1)					//   [0]interp2 [1]newsampL1 [2]finalR2 [3]newsamp1 [4]samp2
  69.466 +			faddp	st(4), st(0)			// 1 [0]newsampL1 [1]finalR2 [2]newsamp1 [3]newsamp2
  69.467 +			fxch	st(1)					//   [0]finalR2 [1]newsampL1 [2]newsamp1 [3]newsamp2
  69.468 +			fstp	dword ptr [edi-20]		// 2 [0]newsampL1 [1]newsamp1 [2]newsamp2
  69.469 +			fxch	st(1)					// 1 [0]newsamp1 [1]newsampL1 [2]newsamp2 
  69.470 +											
  69.471 +		MixLoopUnroll16CoilEntry:			//   [0]newsamp1 [1]newsampL1 [2]newsamp2
  69.472 +
  69.473 +			fmul	mix_rightvol			// 1 [0]newsampR1 [1]newsampL1 [2]newsamp2
  69.474 +			fxch	st(2)					//   [0]newsamp2 [1]newsampL1 [2]newsampR1
  69.475 +			fld		st(0)					// 1 [0]newsamp2 [1]newsamp2 [2]newsampL1 [3]newsampR1
  69.476 +			fmul	mix_leftvol				// 1 [0]newsampL2 [1]newsamp2 [2]newsampL1 [3]newsampR1
  69.477 +			fxch	st(1)					//   [0]newsamp2 [1]newsampL2 [2]newsampL1 [3]newsampR1
  69.478 +//			fnop							// 1 delay on mul unit
  69.479 +			fmul	mix_rightvol			// 1 [0]newsampR2 [1]newsampL2 [2]newsampL1 [3]newsampR1
  69.480 +			fxch	st(2)					//   [0]newsampL1 [1]newsampL2 [2]newsampR2 [3]newsampR1
  69.481 +			fadd	dword ptr [edi-16]		// 1 [0]finalL1 [1]newsampL2 [2]newsampR2 [3]newsampR1
  69.482 +			fxch	st(3)					//   [0]newsampR1 [1]newsampL2 [2]newsampR2 [3]finalL1
  69.483 +			fadd	dword ptr [edi-12]		// 1 [0]finalR1 [1]newsampL2 [2]newsampR2 [3]finalL1
  69.484 +			fxch	st(1)					//   [0]newsampL2 [1]finalR1 [2]newsampR2 [3]finalL1
  69.485 +			fadd	dword ptr [edi-8]		// 1 [0]finalL2 [1]finalR1 [2]newsampR2 [3]finalL1
  69.486 +			fxch	st(3)					//   [0]finalL1 [1]finalR1 [2]newsampR2 [3]finalL2
  69.487 +//			fnop							// 1 delay on store?
  69.488 +			fstp	dword ptr [edi-16]		// 2 [0]finalR1 [1]newsampR2 [2]finalL2
  69.489 +			fxch	st(1)					// 1 [0]newsampR2 [1]finalR1 [2]finalL2
  69.490 +			fadd	dword ptr [edi-4]		// 1 [0]finalR2 [1]finalR1 [2]finalL2
  69.491 +
  69.492 +			dec		edx						// 1
  69.493 +			jnz		MixLoopUnroll16			// 
  69.494 +
  69.495 +			fxch	st(1)					// 1 [0]finalR1 [1]finalR2 [2]finalL2
  69.496 +			fstp	dword ptr [edi-12]		// 2 [0]finalR2 [1]finalL2
  69.497 +			fxch	st(1)					// 1 [0]finalL2 [1]finalR2
  69.498 +			fstp	dword ptr [edi-8]		// 2 [0]finalR2
  69.499 +			fstp	dword ptr [edi-4]		// 2 
  69.500 +
  69.501 +			//= MIX 16BIT, ROLLED ==================================================================
  69.502 +		MixLoopStart16:
  69.503 +			mov		edx, mix_count
  69.504 +	#ifndef ROLLED
  69.505 +			and		edx, 1
  69.506 +	#endif
  69.507 +
  69.508 +	#ifdef VOLUMERAMPING
  69.509 +		MixLoopStart16_2:
  69.510 +	#endif
  69.511 +			or		edx, edx					// if count == 0 dont enter the mix loop
  69.512 +			jz		MixLoopEnd16
  69.513 +
  69.514 +	#ifdef VOLUMERAMPING
  69.515 +			fld		mix_rampspeedleft		// [0]rampspeedL
  69.516 +			fld		mix_rampspeedright		// [0]rampspeedR [1]rampspeedL
  69.517 +			fld		mix_rampleftvol			// [0]lvol [1]rampspeedR [2]rampspeedL
  69.518 +			fld		mix_ramprightvol		// [0]rvol [1]lvol [2]rampspeedR [3]rampspeedL
  69.519 +	#else
  69.520 +			fldz						// [0]rampspeedL
  69.521 +			fldz						// [0]rampspeedR [1]rampspeedL
  69.522 +			fld		mix_leftvol			// [0]lvol [1]rampspeedR [2]rampspeedL
  69.523 +			fld		mix_rightvol		// [0]rvol [1]lvol [2]rampspeedR [3]rampspeedL
  69.524 +	#endif
  69.525 +			jmp		MixLoop16
  69.526 +
  69.527 +			ALIGN 16
  69.528 +
  69.529 +		MixLoop16:
  69.530 +			shr		ebp, 1					// 1 make 31bit coz fpu only loads signed values
  69.531 +			add		edi, 8					// 
  69.532 +			fild	word ptr [esi+esi+2]	// 1 [0]samp1+1 [1]rvol [2]lvol [3]rampspeedR [4]rampspeedL
  69.533 +			mov		mix_temp1, ebp			// 1
  69.534 +			fild	word ptr [esi+esi]		// 1 [0]samp1 [2]samp1+1 [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL
  69.535 +			fild	dword ptr mix_temp1		// 1 [0]ifrac [1]samp1 [2]samp1+1 [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL
  69.536 +			shl		ebp, 1					// 1 restore mixpos low
  69.537 +			add		ebp, ebx				//   add speed low to mixpos low
  69.538 +			adc		esi, ecx				// 1 add upper portion of speed plus carry	
  69.539 +//			nop
  69.540 +			fmul	mix_1over2gig			// 1 [0]ifrac [1]samp1 [2]samp1+1 [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL
  69.541 +			fxch	st(2)					//   [0]samp1+1 [1]samp1 [2]ffrac [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL
  69.542 +			fsub	st(0), st(1)			// 1 [0]delta1 [1]samp1 [2]ffrac [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL
  69.543 +//			fnop							// 1
  69.544 +//			fnop							// 1
  69.545 +//			fnop							// 1
  69.546 +			fmulp	st(2), st(0)			// 1 [0]sample [1]interp [2]rvol [3]lvol [4]rampspeedR [5]rampspeedL
  69.547 +//			fnop							// 1
  69.548 +//			fnop							// 1
  69.549 +//			fnop							// 1
  69.550 +//			fnop							// 1
  69.551 +			faddp	st(1), st(0)			// 1 [0]newsamp [1]rvol [2]lvol [3]rampspeedR [4]rampspeedL
  69.552 +//			fnop							// 1
  69.553 +//			fnop							// 1
  69.554 +			fld		st(0)					// 1 [0]newsamp [1]newsamp [2]rvol [3]lvol [4]rampspeedR [5]rampspeedL
  69.555 +			fmul	st(0), st(3)			// 1 [0]newsampL [1]newsamp [2]rvol [3]lvol [4]rampspeedR [5]rampspeedL
  69.556 +			fxch	st(3)					//   [0]lvol [1]newsamp [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL
  69.557 +			fadd	st(0), st(5)			// 1 [0]lvol [1]newsamp [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL
  69.558 +			fxch	st(1)					//   [0]newsamp [1]lvol [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL
  69.559 +			fmul	st(0), st(2)			// 1 [0]newsampR [1]lvol [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL
  69.560 +			fxch	st(2)					//   [0]rvol [1]lvol [2]newsampR [3]newsampL [4]rampspeedR [5]rampspeedL
  69.561 +			fadd	st(0), st(4)			// 1 [0]rvol [1]lvol [2]newsampR [3]newsampL [4]rampspeedR [5]rampspeedL
  69.562 +			fxch	st(3)					//   [0]newsampL [1]lvol [2]newsampR [3]rvol [4]rampspeedR [5]rampspeedL
  69.563 +//			fnop							// 1
  69.564 +//			fnop							// 1
  69.565 +			fadd	dword ptr [edi-8]		// 1 [0]finalL [1]lvol [2]newsampR [3]rvol [4]rampspeedR [5]rampspeedL
  69.566 +			fxch	st(2)					//   [0]newsampR [1]lvol [2]finalL [3]rvol [4]rampspeedR [5]rampspeedL
  69.567 +			fadd	dword ptr [edi-4]		// 1 [0]finalR [1]lvol [2]finalL [3]rvol [4]rampspeedR [5]rampspeedL
  69.568 +			fxch	st(2)					//   [0]finalL [1]lvol [2]finalR [3]rvol [4]rampspeedR [5]rampspeedL
  69.569 +//			fnop							// 1
  69.570 +			fstp	dword ptr [edi-8]		// 1 [0]lvol [1]finalR [2]rvol [3]rampspeedR [4]rampspeedL
  69.571 +			fxch	st(1)					//   [0]finalR [1]lvol [2]rvol [3]rampspeedR [4]rampspeedL
  69.572 +			fstp	dword ptr [edi-4]		// 3 [0]lvol [1]rvol [2]rampspeedR [3]rampspeedL
  69.573 +			fxch	st(1)					//   [0]rvol [1]lvol [2]rampspeedR [3]rampspeedL
  69.574 +
  69.575 +			dec		edx						// 1
  69.576 +			jnz		MixLoop16				// 
  69.577 +
  69.578 +			fxch	st(2)					// [0]rampspeedR [1]lvol [2]rvol [3]rampspeedL
  69.579 +			fstp	mix_rampspeedright		// [0]lvol [1]rvol [2]rampspeedL
  69.580 +			fxch	st(2)					// [0]rampspeedL [1]rvol [2]lvol
  69.581 +			fstp	mix_rampspeedleft		// [0]rvol [1]lvol
  69.582 +			
  69.583 +			fmul	mix_255					// [0]rvol*255 [1]lvol
  69.584 +			fmul	mix_256					// [0]rvol*255*256 [1]lvol
  69.585 +			fxch	st(1)					// [0]lvol [1]rvol*255*256
  69.586 +			fmul	mix_255					// [0]lvol*255 [1]rvol*255*256
  69.587 +			fmul	mix_256					// [0]lvol*255*256 [1]rvol*255*256
  69.588 +
  69.589 +			xor		eax, eax
  69.590 +			fistp	mix_rampleftvol			// [0]rvol*255*256
  69.591 +			fistp	mix_ramprightvol		// 
  69.592 +
  69.593 +		MixLoopEnd16:
  69.594 +			mov		eax, mix_samplebuff
  69.595 +			shr		eax, 1
  69.596 +			sub		esi, eax
  69.597 +
  69.598 +#ifdef VOLUMERAMPING
  69.599 +			//=============================================================================================
  69.600 +			// DID A VOLUME RAMP JUST HAPPEN
  69.601 +			//=============================================================================================
  69.602 +			cmp		mix_rampcount, 0
  69.603 +			je		DoOutputbuffEnd		// no, no ramp
  69.604 +
  69.605 +			mov		ebx, mix_sptr		// load ebx with sample pointer
  69.606 +			mov		ecx, mix_cptr		// load ecx with channel pointer
  69.607 +
  69.608 +			mov		eax, mix_rampleftvol
  69.609 +			mov		[ecx].ramp_leftvolume, eax
  69.610 +			mov		eax, mix_ramprightvol
  69.611 +			mov		[ecx].ramp_rightvolume, eax
  69.612 +
  69.613 +			mov		eax, mix_count
  69.614 +			mov		edx, mix_rampcount
  69.615 +
  69.616 +			sub		edx, eax
  69.617 +	
  69.618 +			mov		mix_rampspeedleft, 0		// clear out volume ramp
  69.619 +			mov		mix_rampspeedright, 0		// clear out volume ramp
  69.620 +			mov		mix_rampcount, edx
  69.621 +			mov		[ecx].ramp_count, edx
  69.622 +	
  69.623 +			// if rampcount now = 0, a ramp has FINISHED, so finish the rest of the mix
  69.624 +			cmp		edx, 0
  69.625 +			jne		DoOutputbuffEnd
  69.626 +
  69.627 +			// clear out the ramp speeds
  69.628 +			mov		[ecx].ramp_leftspeed, 0
  69.629 +			mov		[ecx].ramp_rightspeed, 0
  69.630 +
  69.631 +			// clamp the 2 volumes together in case the speed wasnt accurate enough!
  69.632 +			mov		edx, [ecx].leftvolume
  69.633 +			shl		edx, 8
  69.634 +			mov		[ecx].ramp_leftvolume, edx
  69.635 +			mov		edx, [ecx].rightvolume
  69.636 +			shl		edx, 8
  69.637 +			mov		[ecx].ramp_rightvolume, edx
  69.638 +
  69.639 +			// is it 0 because ramp ended only? or both ended together??
  69.640 +			// if sample ended together with ramp.. problems .. loop isnt handled
  69.641 +
  69.642 +			cmp		mix_count_old, eax		// ramp and output mode ended together
  69.643 +			je		DoOutputbuffEnd
  69.644 +
  69.645 +			// start again and continue rest of mix
  69.646 +			mov		[ecx].mixpos, esi
  69.647 +			mov		[ecx].mixposlo, ebp
  69.648 +			
  69.649 +			mov		eax, mix_mixbuffend	// find out how many OUTPUT samples left to mix 
  69.650 +			sub		eax, edi
  69.651 +			shr		eax, 3				// eax now holds # of samples left, go recalculate mix_count!!!
  69.652 +			mov		mix_mixbuffptr, edi	// update the new mixbuffer pointer
  69.653 +
  69.654 +			cmp		eax, 0				// dont start again if nothing left
  69.655 +			jne		CalculateLoopCount
  69.656 +
  69.657 +		DoOutputbuffEnd:
  69.658 +#endif
  69.659 +			cmp		mix_endflag, FSOUND_OUTPUTBUFF_END
  69.660 +			je		FinishUpChannel
  69.661 +
  69.662 +			//=============================================================================================
  69.663 +			// SWITCH ON LOOP MODE TYPE
  69.664 +			//=============================================================================================
  69.665 +			mov		ebx, mix_sptr				// load ebx with sample pointer
  69.666 +			mov		ecx, mix_cptr				// load ecx with sample pointer
  69.667 +
  69.668 +			mov		dl,	[ebx].loopmode
  69.669 +
  69.670 +			// check for normal loop
  69.671 +			test	dl, FSOUND_LOOP_NORMAL
  69.672 +			jz		CheckBidiLoop
  69.673 +
  69.674 +			mov		eax, [ebx].loopstart
  69.675 +			add		eax, [ebx].looplen
  69.676 +		rewindsample:
  69.677 +			sub		esi, [ebx].looplen
  69.678 +			cmp		esi, eax
  69.679 +			jae		rewindsample
  69.680 +
  69.681 +			mov		[ecx].mixpos, esi
  69.682 +			mov		[ecx].mixposlo, ebp
  69.683 +			mov		eax, mix_mixbuffend			// find out how many samples left to mix for the output buffer
  69.684 +			sub		eax, edi
  69.685 +			shr		eax, 3						// eax now holds # of samples left, go recalculate mix_count!!!
  69.686 +			mov		mix_mixbuffptr, edi			// update the new mixbuffer pointer
  69.687 +
  69.688 +			cmp		eax, 0
  69.689 +			je		FinishUpChannel
  69.690 +
  69.691 +			jmp		CalculateLoopCount
  69.692 +
  69.693 +		CheckBidiLoop:
  69.694 +			test	dl, FSOUND_LOOP_BIDI
  69.695 +			jz		NoLoop
  69.696 +			cmp		[ecx].speeddir, FSOUND_MIXDIR_FORWARDS
  69.697 +			je		BidiForward
  69.698 +
  69.699 +		BidiBackwards:
  69.700 +			mov		eax, [ebx].loopstart
  69.701 +			dec		eax
  69.702 +	//		mov		edx, 0ffffff00h
  69.703 +			mov		edx, 0ffffffffh
  69.704 +			sub		edx, ebp
  69.705 +			sbb		eax, esi			
  69.706 +				
  69.707 +			mov		esi, eax
  69.708 +			mov		ebp, edx					// esi:ebp = loopstart - mixpos
  69.709 +			mov		eax, [ebx].loopstart
  69.710 +			mov		edx, 0h
  69.711 +			add		ebp, edx
  69.712 +			adc		esi, eax					// esi:ebp += loopstart
  69.713 +				
  69.714 +			mov		[ecx].speeddir, FSOUND_MIXDIR_FORWARDS
  69.715 +
  69.716 +			mov		eax, [ebx].loopstart
  69.717 +			add		eax, [ebx].looplen
  69.718 +			cmp		esi, eax
  69.719 +			jge		BidiForward
  69.720 +
  69.721 +			jmp		BidiFinish
  69.722 +		BidiForward:
  69.723 +			mov		eax, [ebx].loopstart
  69.724 +			add		eax, [ebx].looplen
  69.725 +			mov		edx, 0h
  69.726 +			sub		edx, ebp
  69.727 +			sbb		eax, esi				
  69.728 +			mov		esi, eax
  69.729 +			mov		ebp, edx					// esi:ebp = loopstart+looplen - mixpos
  69.730 +
  69.731 +			mov		eax, [ebx].loopstart
  69.732 +			add		eax, [ebx].looplen
  69.733 +			dec		eax
  69.734 +	//		mov		edx, 0ffffff00h
  69.735 +			mov		edx, 0ffffffffh
  69.736 +			add		ebp, edx
  69.737 +			adc		esi, eax
  69.738 +
  69.739 +			mov		[ecx].speeddir, FSOUND_MIXDIR_BACKWARDS
  69.740 +
  69.741 +			cmp		esi, [ebx].loopstart
  69.742 +			jl		BidiBackwards
  69.743 +
  69.744 +		BidiFinish:
  69.745 +
  69.746 +			mov		[ecx].mixpos, esi
  69.747 +			mov		[ecx].mixposlo, ebp
  69.748 +
  69.749 +			mov		eax, mix_mixbuffend			// find out how many samples left to mix for the output buffer
  69.750 +			sub		eax, edi
  69.751 +			shr		eax, 3						// eax now holds # of samples left, go recalculate mix_count!!!
  69.752 +			mov		mix_mixbuffptr, edi			// update the new mixbuffer pointer
  69.753 +
  69.754 +			cmp		eax, 0
  69.755 +			je		FinishUpChannel
  69.756 +
  69.757 +			jmp		CalculateLoopCount
  69.758 +
  69.759 +		NoLoop:
  69.760 +			xor		ebp, ebp
  69.761 +			xor		esi, esi
  69.762 +			mov		[ecx]FSOUND_CHANNEL.sptr, esi		// clear the sample pointer out
  69.763 +
  69.764 +			//= LEAVE INNER LOOP
  69.765 +		FinishUpChannel:
  69.766 +			mov		ecx, [mix_cptr]
  69.767 +
  69.768 +			mov		[ecx].mixposlo, ebp
  69.769 +			mov		[ecx].mixpos, esi			// reset mixpos based on esi for next time around
  69.770 +
  69.771 +		//===================================================================================================
  69.772 +		// EXIT
  69.773 +		//===================================================================================================
  69.774 +		MixExit:
  69.775 +			pop		ebp						//= RESTORE EBP
  69.776 +		}
  69.777 +	}
  69.778 +} 
  69.779 +
  69.780 +
    70.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.2 +++ b/minifmod/mixer_fpu_ramp.h	Tue Nov 27 15:23:52 2007 +0100
    70.3 @@ -0,0 +1,23 @@
    70.4 +/******************************************************************************/
    70.5 +/* MIXER_FPU_RAMP.H                                                           */
    70.6 +/* ----------------                                                           */
    70.7 +/* MiniFMOD public source code release.                                       */
    70.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    70.9 +/* or answer questions about the source provided.                             */
   70.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   70.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   70.12 +/* Firelight Multimedia is a registered business name.                        */
   70.13 +/* This source must not be redistributed without this notice.                 */
   70.14 +/******************************************************************************/
   70.15 +
   70.16 +#ifndef _MIXER_FPU_RAMP_H
   70.17 +#define _MIXER_FPU_RAMP_H
   70.18 +
   70.19 +#define FSOUND_VOLUMERAMP_STEPS	128		// at 44.1khz
   70.20 +
   70.21 +void FSOUND_Mixer_FPU_Ramp(void *mixptr, int len, signed char returnaddress);
   70.22 +
   70.23 +extern unsigned int mix_volumerampsteps;
   70.24 +extern float		mix_1overvolumerampsteps;
   70.25 +
   70.26 +#endif
   70.27 \ No newline at end of file
    71.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.2 +++ b/minifmod/music_formatxm.c	Tue Nov 27 15:23:52 2007 +0100
    71.3 @@ -0,0 +1,4406 @@
    71.4 +/******************************************************************************/
    71.5 +
    71.6 +/* FORMATXM.C                                                                 */
    71.7 +
    71.8 +/* ----------------                                                           */
    71.9 +
   71.10 +/* MiniFMOD public source code release.                                       */
   71.11 +
   71.12 +/* This source is provided as-is.  Firelight Multimedia will not support      */
   71.13 +
   71.14 +/* or answer questions about the source provided.                             */
   71.15 +
   71.16 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   71.17 +
   71.18 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   71.19 +
   71.20 +/* Firelight Multimedia is a registered business name.                        */
   71.21 +
   71.22 +/* This source must not be redistributed without this notice.                 */
   71.23 +
   71.24 +/******************************************************************************/
   71.25 +
   71.26 +
   71.27 +
   71.28 +#include <string.h>
   71.29 +
   71.30 +#include <math.h>
   71.31 +
   71.32 +
   71.33 +
   71.34 +#include "minifmod.h"
   71.35 +
   71.36 +#include "mixer.h"
   71.37 +
   71.38 +#include "music.h"
   71.39 +
   71.40 +#include "music_formatxm.h"
   71.41 +
   71.42 +#include "sound.h"
   71.43 +
   71.44 +
   71.45 +
   71.46 +#include "xmeffects.h"
   71.47 +
   71.48 +
   71.49 +
   71.50 +// Frequency = 8363*2^((6*12*16*4 - Period) / (12*16*4));
   71.51 +
   71.52 +
   71.53 +
   71.54 +#define FMUSIC_XMLINEARPERIOD2HZ(_per) ( (int)(8363.0f*pow(2.0f, ((6.0f*12.0f*16.0f*4.0f - _per) / (float)(12*16*4)))) )
   71.55 +
   71.56 +
   71.57 +
   71.58 +/*
   71.59 +
   71.60 +[API]
   71.61 +
   71.62 +[
   71.63 +
   71.64 +	[DESCRIPTION]
   71.65 +
   71.66 +
   71.67 +
   71.68 +	[PARAMETERS]
   71.69 +
   71.70 + 
   71.71 +
   71.72 +	[RETURN_VALUE]
   71.73 +
   71.74 +
   71.75 +
   71.76 +	[REMARKS]
   71.77 +
   71.78 +
   71.79 +
   71.80 +	[SEE_ALSO]
   71.81 +
   71.82 +]
   71.83 +
   71.84 +*/
   71.85 +
   71.86 +#if defined(FMUSIC_XM_PORTATO_ACTIVE) || defined(FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE)
   71.87 +
   71.88 +void FMUSIC_XM_Portamento(FMUSIC_CHANNEL *cptr)
   71.89 +
   71.90 +{
   71.91 +
   71.92 +	// slide pitch down if it needs too.
   71.93 +
   71.94 +	if (cptr->freq < cptr->portatarget) 
   71.95 +
   71.96 +	{
   71.97 +
   71.98 +		cptr->freq += (int)cptr->portaspeed << 2;
   71.99 +
  71.100 +		if (cptr->freq > cptr->portatarget) 
  71.101 +
  71.102 +			cptr->freq = cptr->portatarget;
  71.103 +
  71.104 +	}
  71.105 +
  71.106 +
  71.107 +
  71.108 +	// slide pitch up if it needs too.
  71.109 +
  71.110 +	else if (cptr->freq > cptr->portatarget) 
  71.111 +
  71.112 +	{
  71.113 +
  71.114 +		cptr->freq -= (int)cptr->portaspeed << 2;
  71.115 +
  71.116 +		if (cptr->freq < cptr->portatarget) 
  71.117 +
  71.118 +			cptr->freq=cptr->portatarget;
  71.119 +
  71.120 +	}
  71.121 +
  71.122 +
  71.123 +
  71.124 +	 //
  71.125 +
  71.126 +	 //if (glissando[track]) 
  71.127 +
  71.128 +	 //{
  71.129 +
  71.130 +	 //}
  71.131 +
  71.132 +	 //
  71.133 +
  71.134 +
  71.135 +
  71.136 +	 cptr->notectrl |= FMUSIC_FREQ;
  71.137 +
  71.138 +}
  71.139 +
  71.140 +#endif // FMUSIC_XM_PORTATO_ACTIVE
  71.141 +
  71.142 +
  71.143 +
  71.144 +
  71.145 +
  71.146 +#if defined(FMUSIC_XM_VIBRATO_ACTIVE) || defined(FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE)
  71.147 +
  71.148 +/*
  71.149 +
  71.150 +[API]
  71.151 +
  71.152 +[
  71.153 +
  71.154 +	[DESCRIPTION]
  71.155 +
  71.156 +	to carry out a vibrato at a certain depth and speed            
  71.157 +
  71.158 +
  71.159 +
  71.160 +	[PARAMETERS]
  71.161 +
  71.162 +	track - the track number to do the vibrato too           
  71.163 +
  71.164 + 
  71.165 +
  71.166 +	[RETURN_VALUE]
  71.167 +
  71.168 +
  71.169 +
  71.170 +	[REMARKS]
  71.171 +
  71.172 +	AND'ing temp with 31 removes the sign bit giving the abs value
  71.173 +
  71.174 +
  71.175 +
  71.176 +	[SEE_ALSO]
  71.177 +
  71.178 +]
  71.179 +
  71.180 +*/
  71.181 +
  71.182 +void FMUSIC_XM_Vibrato(FMUSIC_CHANNEL *cptr) 
  71.183 +
  71.184 +{
  71.185 +
  71.186 +	int delta;
  71.187 +
  71.188 +	unsigned char temp;
  71.189 +
  71.190 +
  71.191 +
  71.192 +	temp = (cptr->vibpos & 31);
  71.193 +
  71.194 +
  71.195 +
  71.196 +	switch (cptr->wavecontrol & 3)
  71.197 +
  71.198 +	{
  71.199 +
  71.200 +//		case 0: delta = FMUSIC_SineTable[temp];			// sine
  71.201 +
  71.202 +		case 0: delta = (int)(fabs ((sin( (float)(cptr->vibpos) * 2 * 3.141592 / 64.0f )) * 256.0f));
  71.203 +
  71.204 +				break;
  71.205 +
  71.206 +		case 1: temp <<= 3;									// ramp down
  71.207 +
  71.208 +				if (cptr->vibpos < 0) 
  71.209 +
  71.210 +					temp=255-temp;
  71.211 +
  71.212 +				delta=temp;
  71.213 +
  71.214 +				break;
  71.215 +
  71.216 +		case 2: 
  71.217 +
  71.218 +		case 3: delta = 255;//rand()&255;					// random
  71.219 +
  71.220 +				break;
  71.221 +
  71.222 +		//default:
  71.223 +
  71.224 +				//__assume(0);
  71.225 +
  71.226 +	};
  71.227 +
  71.228 +
  71.229 +
  71.230 +	delta *= cptr->vibdepth;
  71.231 +
  71.232 +	delta >>=7;
  71.233 +
  71.234 +	delta <<=2;   // we use 4*periods so make vibrato 4 times bigger
  71.235 +
  71.236 +
  71.237 +
  71.238 +	if (cptr->vibpos >= 0) 
  71.239 +
  71.240 +		cptr->freqdelta = -delta;
  71.241 +
  71.242 +	else
  71.243 +
  71.244 +		cptr->freqdelta = delta;
  71.245 +
  71.246 +
  71.247 +
  71.248 +	cptr->notectrl |= FMUSIC_FREQ;
  71.249 +
  71.250 +}
  71.251 +
  71.252 +#endif // defined(FMUSIC_XM_VIBRATO_ACTIVE) || defined(FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE)
  71.253 +
  71.254 +
  71.255 +
  71.256 +
  71.257 +
  71.258 +
  71.259 +
  71.260 +
  71.261 +
  71.262 +
  71.263 +
  71.264 +#ifdef FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE
  71.265 +
  71.266 +
  71.267 +
  71.268 +void FMUSIC_XM_InstrumentVibrato(FMUSIC_CHANNEL *cptr, FMUSIC_INSTRUMENT *iptr) 
  71.269 +
  71.270 +{
  71.271 +
  71.272 +	int delta;
  71.273 +
  71.274 +
  71.275 +
  71.276 +	switch (iptr->VIBtype)
  71.277 +
  71.278 +	{
  71.279 +
  71.280 +		case 0: delta = (int)(sin( (float)(cptr->ivibpos) * 2.0f * 3.141592f / 256.0f ) * 64.0f);
  71.281 +
  71.282 +				//delta = (int)FMUSIC_FineSineTable[cptr->ivibpos];	// sine
  71.283 +
  71.284 +				break;
  71.285 +
  71.286 +		case 1: if (cptr->ivibpos < 128) 
  71.287 +
  71.288 +					delta=64;						// square
  71.289 +
  71.290 +				else 
  71.291 +
  71.292 +					delta = -64;								
  71.293 +
  71.294 +				break;
  71.295 +
  71.296 +		case 2: delta = (128-((cptr->ivibpos+128)%256))>>1;
  71.297 +
  71.298 +				break;
  71.299 +
  71.300 +		case 3: delta = (128-(((256-cptr->ivibpos)+128)%256))>>1;
  71.301 +
  71.302 +				break;
  71.303 +
  71.304 +		//default:
  71.305 +
  71.306 +				//__assume(0);
  71.307 +
  71.308 +	};
  71.309 +
  71.310 +
  71.311 +
  71.312 +	delta *= iptr->VIBdepth;
  71.313 +
  71.314 +	if (iptr->VIBsweep) 
  71.315 +
  71.316 +		delta = delta * cptr->ivibsweeppos / iptr->VIBsweep;
  71.317 +
  71.318 +	delta >>=6;
  71.319 +
  71.320 +
  71.321 +
  71.322 +	cptr->freqdelta += delta;
  71.323 +
  71.324 +	
  71.325 +
  71.326 +	cptr->ivibsweeppos++;
  71.327 +
  71.328 +	if (cptr->ivibsweeppos > iptr->VIBsweep) 
  71.329 +
  71.330 +		cptr->ivibsweeppos = iptr->VIBsweep;
  71.331 +
  71.332 +
  71.333 +
  71.334 +	cptr->ivibpos += iptr->VIBrate;
  71.335 +
  71.336 +	if (cptr->ivibpos > 255) 
  71.337 +
  71.338 +		cptr->ivibpos -= 256;
  71.339 +
  71.340 +
  71.341 +
  71.342 +	cptr->notectrl |= FMUSIC_FREQ;
  71.343 +
  71.344 +}
  71.345 +
  71.346 +#endif	// FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE
  71.347 +
  71.348 +
  71.349 +
  71.350 +
  71.351 +
  71.352 +#ifdef FMUSIC_XM_TREMOLO_ACTIVE
  71.353 +
  71.354 +void FMUSIC_XM_Tremolo(FMUSIC_CHANNEL *cptr) 
  71.355 +
  71.356 +{
  71.357 +
  71.358 +	unsigned char temp;
  71.359 +
  71.360 +
  71.361 +
  71.362 +	temp = (cptr->tremolopos & 31);
  71.363 +
  71.364 +
  71.365 +
  71.366 +	switch((cptr->wavecontrol>>4) & 3)
  71.367 +
  71.368 +	{
  71.369 +
  71.370 +//		case 0: cptr->voldelta = FMUSIC_SineTable[temp];			// sine
  71.371 +
  71.372 +		case 0: cptr->voldelta = (int)(fabs ((sin( (float)(cptr->vibpos) * 2 * 3.141592 / 64.0f )) * 256.0f));
  71.373 +
  71.374 +				break;
  71.375 +
  71.376 +		case 1: temp <<= 3;										// ramp down
  71.377 +
  71.378 +				if (cptr->tremolopos < 0) 
  71.379 +
  71.380 +					temp=255-temp;
  71.381 +
  71.382 +				cptr->voldelta=temp;
  71.383 +
  71.384 +				break;
  71.385 +
  71.386 +		case 2: cptr->voldelta = 255;							// square
  71.387 +
  71.388 +				break;
  71.389 +
  71.390 +//		case 3: cptr->voldelta = FMUSIC_SineTable[temp];		// random (just use sine for now)
  71.391 +
  71.392 +		case 3: cptr->voldelta = (int)(fabs ((sin( (float)(cptr->vibpos) * 2 * 3.141592 / 64.0f )) * 256.0f));
  71.393 +
  71.394 +				break;
  71.395 +
  71.396 +	};
  71.397 +
  71.398 +
  71.399 +
  71.400 +	cptr->voldelta *= cptr->tremolodepth;
  71.401 +
  71.402 +	cptr->voldelta >>= 6;
  71.403 +
  71.404 +
  71.405 +
  71.406 +	if (cptr->tremolopos >= 0) 
  71.407 +
  71.408 +	{
  71.409 +
  71.410 +		if (cptr->volume+cptr->voldelta > 64) 
  71.411 +
  71.412 +			cptr->voldelta = 64-cptr->volume;
  71.413 +
  71.414 +	}
  71.415 +
  71.416 +	else 
  71.417 +
  71.418 +	{
  71.419 +
  71.420 +		if ((short)(cptr->volume-cptr->voldelta) < 0) 
  71.421 +
  71.422 +			cptr->voldelta = cptr->volume;
  71.423 +
  71.424 +		cptr->voldelta = -cptr->voldelta;
  71.425 +
  71.426 +	}
  71.427 +
  71.428 +
  71.429 +
  71.430 +	cptr->tremolopos += cptr->tremolospeed;
  71.431 +
  71.432 +	if (cptr->tremolopos > 31) 
  71.433 +
  71.434 +		cptr->tremolopos -=64;
  71.435 +
  71.436 +
  71.437 +
  71.438 +	cptr->notectrl |= FMUSIC_VOLUME;
  71.439 +
  71.440 +}
  71.441 +
  71.442 +#endif // FMUSIC_XM_TREMOLO_ACTIVE
  71.443 +
  71.444 +
  71.445 +
  71.446 +
  71.447 +
  71.448 +/*
  71.449 +
  71.450 +[API]
  71.451 +
  71.452 +[
  71.453 +
  71.454 +	[DESCRIPTION]
  71.455 +
  71.456 +
  71.457 +
  71.458 +	[PARAMETERS]
  71.459 +
  71.460 + 
  71.461 +
  71.462 +	[RETURN_VALUE]
  71.463 +
  71.464 +
  71.465 +
  71.466 +	[REMARKS]
  71.467 +
  71.468 +
  71.469 +
  71.470 +	[SEE_ALSO]
  71.471 +
  71.472 +]
  71.473 +
  71.474 +*/
  71.475 +
  71.476 +#if defined(FMUSIC_XM_VOLUMEENVELOPE_ACTIVE) || defined(FMUSIC_XM_PANENVELOPE_ACTIVE)
  71.477 +
  71.478 +
  71.479 +
  71.480 +void FMUSIC_XM_ProcessEnvelope(FMUSIC_CHANNEL *cptr, int *pos, int *tick, unsigned char type, int numpoints, unsigned short *points, unsigned char loopend, unsigned char loopstart, unsigned char sustain, int *value, int *valfrac, signed char *envstopped, int *envdelta, unsigned char control)
  71.481 +
  71.482 +{
  71.483 +
  71.484 +	// Envelope
  71.485 +
  71.486 +	if (*pos < numpoints) 
  71.487 +
  71.488 +	{
  71.489 +
  71.490 +		if (*tick == points[(*pos)<<1])	// if we are at the correct tick for the position
  71.491 +
  71.492 +		{
  71.493 +
  71.494 +			int currpos, nextpos;
  71.495 +
  71.496 +			int currtick, nexttick;
  71.497 +
  71.498 +			int curr, next, tickdiff;
  71.499 +
  71.500 +
  71.501 +
  71.502 +			// handle loop
  71.503 +
  71.504 +			if ((type & FMUSIC_ENVELOPE_LOOP) && *pos == loopend) 
  71.505 +
  71.506 +			{
  71.507 +
  71.508 +				*pos  = loopstart;
  71.509 +
  71.510 +				*tick = points[(*pos) <<1];
  71.511 +
  71.512 +			}
  71.513 +
  71.514 +
  71.515 +
  71.516 +			currpos	= *pos;
  71.517 +
  71.518 +			nextpos	= (*pos) + 1;
  71.519 +
  71.520 +			currtick = points[currpos<<1];				// get tick at this point
  71.521 +
  71.522 +			nexttick = points[nextpos<<1];				// get tick at next point
  71.523 +
  71.524 +			curr = points[(currpos<<1)+1] << 16;	// get  at this point << 16
  71.525 +
  71.526 +			next = points[(nextpos<<1)+1] << 16;	// get  at next point << 16
  71.527 +
  71.528 +
  71.529 +
  71.530 +			// if it is at the last position, abort the envelope and continue last value
  71.531 +
  71.532 +			if (*pos == numpoints - 1) 
  71.533 +
  71.534 +			{
  71.535 +
  71.536 +				*value = points[(currpos<<1)+1];
  71.537 +
  71.538 +				*envstopped = TRUE;
  71.539 +
  71.540 +				cptr->notectrl |= control;
  71.541 +
  71.542 +				return;
  71.543 +
  71.544 +			}
  71.545 +
  71.546 +			// sustain
  71.547 +
  71.548 +			if ((type & FMUSIC_ENVELOPE_SUSTAIN) && currpos == sustain && !cptr->keyoff)
  71.549 +
  71.550 +			{
  71.551 +
  71.552 +				*value = points[(currpos<<1)+1];
  71.553 +
  71.554 +				cptr->notectrl |= control;
  71.555 +
  71.556 +				return;
  71.557 +
  71.558 +			}
  71.559 +
  71.560 +			// interpolate 2 points to find delta step
  71.561 +
  71.562 +			tickdiff = nexttick - currtick;
  71.563 +
  71.564 +			if (tickdiff) 
  71.565 +
  71.566 +				*envdelta = (next-curr) / tickdiff;
  71.567 +
  71.568 +			else
  71.569 +
  71.570 +				*envdelta = 0;
  71.571 +
  71.572 +
  71.573 +
  71.574 +			*valfrac = curr;
  71.575 +
  71.576 +
  71.577 +
  71.578 +			(*pos)++;
  71.579 +
  71.580 +		}
  71.581 +
  71.582 +		else
  71.583 +
  71.584 +			*valfrac += *envdelta;				// interpolate
  71.585 +
  71.586 +	}
  71.587 +
  71.588 +
  71.589 +
  71.590 +	*value = *valfrac >> 16;
  71.591 +
  71.592 +	(*tick)++;
  71.593 +
  71.594 +
  71.595 +
  71.596 +	cptr->notectrl |= control;
  71.597 +
  71.598 +}
  71.599 +
  71.600 +#endif // (FMUSIC_XM_VOLUMEENVELOPE_ACTIVE) || defined(FMUSIC_XM_PANENVELOPE_ACTIVE)
  71.601 +
  71.602 +
  71.603 +
  71.604 +
  71.605 +
  71.606 +/*
  71.607 +
  71.608 +[API]
  71.609 +
  71.610 +[
  71.611 +
  71.612 +	[DESCRIPTION]
  71.613 +
  71.614 +
  71.615 +
  71.616 +	[PARAMETERS]
  71.617 +
  71.618 + 
  71.619 +
  71.620 +	[RETURN_VALUE]
  71.621 +
  71.622 +
  71.623 +
  71.624 +	[REMARKS]
  71.625 +
  71.626 +
  71.627 +
  71.628 +	[SEE_ALSO]
  71.629 +
  71.630 +]
  71.631 +
  71.632 +*/
  71.633 +
  71.634 +#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE
  71.635 +
  71.636 +
  71.637 +
  71.638 +void FMUSIC_XM_ProcessVolumeByte(FMUSIC_CHANNEL *cptr, unsigned char volume)
  71.639 +
  71.640 +{
  71.641 +
  71.642 +	if (volume >= 0x10 && volume <= 0x50) 
  71.643 +
  71.644 +	{
  71.645 +
  71.646 +		cptr->volume = volume-0x10;
  71.647 +
  71.648 +		cptr->notectrl |= FMUSIC_VOLUME;
  71.649 +
  71.650 +	}
  71.651 +
  71.652 +	else
  71.653 +
  71.654 +	{
  71.655 +
  71.656 +		switch (volume >> 4) 
  71.657 +
  71.658 +		{
  71.659 +
  71.660 +			case 0x6 : 
  71.661 +
  71.662 +			{
  71.663 +
  71.664 +				cptr->volume -= (volume & 0xF);
  71.665 +
  71.666 +				if (cptr->volume < 0) 
  71.667 +
  71.668 +					cptr->volume = 0;
  71.669 +
  71.670 +				cptr->notectrl |= FMUSIC_VOLUME;
  71.671 +
  71.672 +				break;
  71.673 +
  71.674 +			}
  71.675 +
  71.676 +			case 0x7 : 
  71.677 +
  71.678 +			{
  71.679 +
  71.680 +				cptr->volume += (volume & 0xF);
  71.681 +
  71.682 +				if (cptr->volume > 0x40) 
  71.683 +
  71.684 +					cptr->volume = 0x40;
  71.685 +
  71.686 +				cptr->notectrl |= FMUSIC_VOLUME;
  71.687 +
  71.688 +				break;
  71.689 +
  71.690 +			}
  71.691 +
  71.692 +			case 0x8 :
  71.693 +
  71.694 +			{
  71.695 +
  71.696 +				cptr->volume -= (volume & 0xF);
  71.697 +
  71.698 +				if (cptr->volume < 0) 
  71.699 +
  71.700 +					cptr->volume = 0;
  71.701 +
  71.702 +				cptr->notectrl |= FMUSIC_VOLUME;
  71.703 +
  71.704 +				break;
  71.705 +
  71.706 +			}
  71.707 +
  71.708 +			case 0x9 :
  71.709 +
  71.710 +			{
  71.711 +
  71.712 +				cptr->volume += (volume & 0xF);
  71.713 +
  71.714 +				if (cptr->volume > 0x40) 
  71.715 +
  71.716 +					cptr->volume = 0x40;
  71.717 +
  71.718 +				cptr->notectrl |= FMUSIC_VOLUME;
  71.719 +
  71.720 +				break;
  71.721 +
  71.722 +			}
  71.723 +
  71.724 +			case 0xa :
  71.725 +
  71.726 +			{
  71.727 +
  71.728 +				cptr->vibspeed = (volume & 0xF);
  71.729 +
  71.730 +				break;
  71.731 +
  71.732 +			}
  71.733 +
  71.734 +			case 0xb :
  71.735 +
  71.736 +			{
  71.737 +
  71.738 +				cptr->vibdepth = (volume & 0xF);
  71.739 +
  71.740 +				break;
  71.741 +
  71.742 +			}
  71.743 +
  71.744 +			case 0xc :
  71.745 +
  71.746 +			{
  71.747 +
  71.748 +				cptr->pan = (volume & 0xF) << 4;
  71.749 +
  71.750 +				cptr->notectrl |= FMUSIC_PAN;
  71.751 +
  71.752 +				break;
  71.753 +
  71.754 +			}
  71.755 +
  71.756 +			case 0xd :
  71.757 +
  71.758 +			{
  71.759 +
  71.760 +				cptr->pan -= (volume & 0xF);
  71.761 +
  71.762 +				cptr->notectrl |= FMUSIC_PAN;
  71.763 +
  71.764 +				break;
  71.765 +
  71.766 +			}
  71.767 +
  71.768 +			case 0xe :
  71.769 +
  71.770 +			{
  71.771 +
  71.772 +				cptr->pan += (volume & 0xF);
  71.773 +
  71.774 +				cptr->notectrl |= FMUSIC_PAN;
  71.775 +
  71.776 +				break;
  71.777 +
  71.778 +			}
  71.779 +
  71.780 +			case 0xf :
  71.781 +
  71.782 +			{
  71.783 +
  71.784 +				if (volume & 0xF) 
  71.785 +
  71.786 +					cptr->portaspeed = (volume & 0xF) << 4;
  71.787 +
  71.788 +				cptr->portatarget = cptr->period;
  71.789 +
  71.790 +				cptr->notectrl &= ~FMUSIC_TRIGGER;
  71.791 +
  71.792 +				break;
  71.793 +
  71.794 +			}
  71.795 +
  71.796 +		//default:
  71.797 +
  71.798 +				//__assume(0);
  71.799 +
  71.800 +		};
  71.801 +
  71.802 +	}
  71.803 +
  71.804 +}
  71.805 +
  71.806 +#endif // #define FMUSIC_XM_VOLUMEBYTE_ACTIVE
  71.807 +
  71.808 +
  71.809 +
  71.810 +/*
  71.811 +
  71.812 +[API]
  71.813 +
  71.814 +[
  71.815 +
  71.816 +	[DESCRIPTION]
  71.817 +
  71.818 +
  71.819 +
  71.820 +	[PARAMETERS]
  71.821 +
  71.822 + 
  71.823 +
  71.824 +	[RETURN_VALUE]
  71.825 +
  71.826 +
  71.827 +
  71.828 +	[REMARKS]
  71.829 +
  71.830 +
  71.831 +
  71.832 +	[SEE_ALSO]
  71.833 +
  71.834 +]
  71.835 +
  71.836 +*/
  71.837 +
  71.838 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE
  71.839 +
  71.840 +int FMUSIC_XM_GetAmigaPeriod(int note, int finetune)
  71.841 +
  71.842 +{
  71.843 +
  71.844 +	int period;
  71.845 +
  71.846 +
  71.847 +
  71.848 +	period = (int)(pow(2.0f, (float)(132-note) / 12.0f) * 13.375f);
  71.849 +
  71.850 +
  71.851 +
  71.852 +	// interpolate for finer tuning
  71.853 +
  71.854 +	if (finetune < 0 && note)
  71.855 +
  71.856 +	{
  71.857 +
  71.858 +		int diff = period - (int)(pow(2.0f, (float)(132-(note-1)) / 12.0f) * 13.375f);
  71.859 +
  71.860 +		diff *= abs(finetune);
  71.861 +
  71.862 +		diff /= 128;
  71.863 +
  71.864 +		period -= diff;
  71.865 +
  71.866 +	}
  71.867 +
  71.868 +	else
  71.869 +
  71.870 +	{
  71.871 +
  71.872 +		int diff = (int)(pow(2.0f, (float)(132-(note+1)) / 12.0f) * 13.375f) - period;
  71.873 +
  71.874 +		diff *= finetune;
  71.875 +
  71.876 +		diff /= 128;
  71.877 +
  71.878 +		period += diff;
  71.879 +
  71.880 +	}
  71.881 +
  71.882 +
  71.883 +
  71.884 +	return period;
  71.885 +
  71.886 +}
  71.887 +
  71.888 +#endif // FMUSIC_XM_AMIGAPERIODS_ACTIVE
  71.889 +
  71.890 +
  71.891 +
  71.892 +
  71.893 +
  71.894 +/*
  71.895 +
  71.896 +[API]
  71.897 +
  71.898 +[
  71.899 +
  71.900 +	[DESCRIPTION]
  71.901 +
  71.902 +
  71.903 +
  71.904 +	[PARAMETERS]
  71.905 +
  71.906 + 
  71.907 +
  71.908 +	[RETURN_VALUE]
  71.909 +
  71.910 +
  71.911 +
  71.912 +	[REMARKS]
  71.913 +
  71.914 +
  71.915 +
  71.916 +	[SEE_ALSO]
  71.917 +
  71.918 +]
  71.919 +
  71.920 +*/
  71.921 +
  71.922 +#ifdef FMUSIC_XM_TREMOR_ACTIVE
  71.923 +
  71.924 +void FMUSIC_XM_Tremor(FMUSIC_CHANNEL *cptr)
  71.925 +
  71.926 +{
  71.927 +
  71.928 +	if (cptr->tremorpos >= cptr->tremoron) 
  71.929 +
  71.930 +		cptr->voldelta = -cptr->volume;
  71.931 +
  71.932 +	cptr->tremorpos++;
  71.933 +
  71.934 +	if (cptr->tremorpos >= (cptr->tremoron + cptr->tremoroff)) 
  71.935 +
  71.936 +		cptr->tremorpos = 0;
  71.937 +
  71.938 +	cptr->notectrl |= FMUSIC_VOLUME;
  71.939 +
  71.940 +}
  71.941 +
  71.942 +#endif
  71.943 +
  71.944 +
  71.945 +
  71.946 +/*
  71.947 +
  71.948 +[API]
  71.949 +
  71.950 +[
  71.951 +
  71.952 +	[DESCRIPTION]
  71.953 +
  71.954 +
  71.955 +
  71.956 +	[PARAMETERS]
  71.957 +
  71.958 + 
  71.959 +
  71.960 +	[RETURN_VALUE]
  71.961 +
  71.962 +
  71.963 +
  71.964 +	[REMARKS]
  71.965 +
  71.966 +
  71.967 +
  71.968 +	[SEE_ALSO]
  71.969 +
  71.970 +]
  71.971 +
  71.972 +*/
  71.973 +
  71.974 +void FMUSIC_XM_UpdateFlags(FMUSIC_CHANNEL *cptr, FSOUND_SAMPLE *sptr, FMUSIC_MODULE *mod)
  71.975 +
  71.976 +{
  71.977 +
  71.978 +	FSOUND_CHANNEL *ccptr = cptr->cptr;
  71.979 +
  71.980 +	int channel;
  71.981 +
  71.982 +    
  71.983 +
  71.984 +    if (ccptr)
  71.985 +
  71.986 +        channel = ccptr->index;
  71.987 +
  71.988 +	
  71.989 +
  71.990 +	if (!(cptr->freq + cptr->freqdelta)) 
  71.991 +
  71.992 +		cptr->notectrl &= ~FMUSIC_FREQ;	// divide by 0 check
  71.993 +
  71.994 +
  71.995 +
  71.996 +	if (cptr->notectrl & FMUSIC_TRIGGER)		
  71.997 +
  71.998 +	{
  71.999 +
 71.1000 +		//==========================================================================================
 71.1001 +
 71.1002 +		// ALLOCATE A CHANNEL
 71.1003 +
 71.1004 +		//==========================================================================================
 71.1005 +
 71.1006 +		ccptr = &FSOUND_Channel[channel];
 71.1007 +
 71.1008 +
 71.1009 +
 71.1010 +        // this swaps between channels to avoid sounds cutting each other off and causing a click
 71.1011 +
 71.1012 +        if (ccptr->sptr != NULL)
 71.1013 +
 71.1014 +        {
 71.1015 +
 71.1016 +            if (channel < 32)
 71.1017 +
 71.1018 +                channel += 32;
 71.1019 +
 71.1020 +            else
 71.1021 +
 71.1022 +                channel -= 32;
 71.1023 +
 71.1024 +
 71.1025 +
 71.1026 +            memcpy(&FSOUND_Channel[channel], ccptr, sizeof(FSOUND_CHANNEL));
 71.1027 +
 71.1028 +            FSOUND_Channel[channel].index = channel; // oops dont want its index
 71.1029 +
 71.1030 +
 71.1031 +
 71.1032 +            // this should cause the old channel to ramp out nicely.
 71.1033 +
 71.1034 +		    ccptr->volume = ccptr->actualvolume = 0;
 71.1035 +
 71.1036 +		    ccptr->leftvolume  = 0;
 71.1037 +
 71.1038 +		    ccptr->rightvolume = 0;
 71.1039 +
 71.1040 +
 71.1041 +
 71.1042 +            ccptr = &FSOUND_Channel[channel];
 71.1043 +
 71.1044 +            cptr->cptr = ccptr;
 71.1045 +
 71.1046 +        }
 71.1047 +
 71.1048 +
 71.1049 +
 71.1050 +		ccptr->sptr = sptr;
 71.1051 +
 71.1052 +			
 71.1053 +
 71.1054 +		//==========================================================================================
 71.1055 +
 71.1056 +		// START THE SOUND!
 71.1057 +
 71.1058 +		//==========================================================================================
 71.1059 +
 71.1060 +		if (ccptr->sampleoffset >= sptr->loopstart + sptr->looplen)
 71.1061 +
 71.1062 +			ccptr->sampleoffset = 0;
 71.1063 +
 71.1064 +
 71.1065 +
 71.1066 +		ccptr->mixpos    = ccptr->sampleoffset;
 71.1067 +
 71.1068 +		ccptr->mixposlo  = 0;
 71.1069 +
 71.1070 +		ccptr->speeddir  = FSOUND_MIXDIR_FORWARDS;
 71.1071 +
 71.1072 +		ccptr->sampleoffset = 0;	// reset it (in case other samples come in and get corrupted etc)
 71.1073 +
 71.1074 +
 71.1075 +
 71.1076 +		// volume ramping
 71.1077 +
 71.1078 +		ccptr->ramp_leftvolume	= 0;
 71.1079 +
 71.1080 +		ccptr->ramp_rightvolume	= 0;
 71.1081 +
 71.1082 +		ccptr->ramp_count		= 0;
 71.1083 +
 71.1084 +	}
 71.1085 +
 71.1086 +
 71.1087 +
 71.1088 +	if (cptr->notectrl & FMUSIC_VOLUME)	
 71.1089 +
 71.1090 +	{
 71.1091 +
 71.1092 +		float finalvol;
 71.1093 +
 71.1094 +		int volume;
 71.1095 +
 71.1096 +		
 71.1097 +
 71.1098 +		finalvol = (float)cptr->envvol;				//  6 bits (   64)
 71.1099 +
 71.1100 +		finalvol *= (cptr->volume+cptr->voldelta);	//  6 bits (   64)
 71.1101 +
 71.1102 +		finalvol *= cptr->fadeoutvol;				// 16 bits (65536)
 71.1103 +
 71.1104 +		finalvol *= mod->globalvolume;				//  6 bits (   64)
 71.1105 +
 71.1106 +														// ==============
 71.1107 +
 71.1108 +														// 42 bits
 71.1109 +
 71.1110 +	
 71.1111 +
 71.1112 +		// Any half arsed compiler will convert this into 1 constant at compile time.
 71.1113 +
 71.1114 +		finalvol *= (255.0f / (64.0f * 64.0f * 65536.0f * 64.0f)) * 0.5f;
 71.1115 +
 71.1116 +		volume = (int)finalvol;
 71.1117 +
 71.1118 +
 71.1119 +
 71.1120 +        if (ccptr)
 71.1121 +
 71.1122 +        {
 71.1123 +
 71.1124 +    		ccptr->volume = ccptr->actualvolume = volume;
 71.1125 +
 71.1126 +	    	ccptr->leftvolume  = (volume * ccptr->actualpan) / 255;
 71.1127 +
 71.1128 +		    ccptr->rightvolume = (volume * (255L-ccptr->actualpan)) / 255;
 71.1129 +
 71.1130 +        }
 71.1131 +
 71.1132 +
 71.1133 +
 71.1134 +//		FSOUND_Software_SetVolume(&FSOUND_Channel[channel], (int)finalvol);
 71.1135 +
 71.1136 +	}
 71.1137 +
 71.1138 +	if (cptr->notectrl & FMUSIC_PAN)
 71.1139 +
 71.1140 +	{
 71.1141 +
 71.1142 +		int pan = cptr->pan+( (cptr->envpan-32) * ( (128-abs(cptr->pan-128))/32 ) );
 71.1143 +
 71.1144 +
 71.1145 +
 71.1146 +		if (pan < 0)
 71.1147 +
 71.1148 +			pan = 0;
 71.1149 +
 71.1150 +		if (pan > 255)
 71.1151 +
 71.1152 +			pan = 255;
 71.1153 +
 71.1154 +
 71.1155 +
 71.1156 +        if (ccptr)
 71.1157 +
 71.1158 +        {
 71.1159 +
 71.1160 +		    ccptr->pan = ccptr->actualpan = pan;
 71.1161 +
 71.1162 +		    ccptr->leftvolume  = (ccptr->actualvolume * pan) / 255;
 71.1163 +
 71.1164 +		    ccptr->rightvolume = (ccptr->actualvolume * (255L-pan)) / 255;
 71.1165 +
 71.1166 +        }
 71.1167 +
 71.1168 +			
 71.1169 +
 71.1170 +//		FSOUND_Software_SetPan(&FSOUND_Channel[channel], finalpan);
 71.1171 +
 71.1172 +	}
 71.1173 +
 71.1174 +	if (cptr->notectrl & FMUSIC_FREQ)		
 71.1175 +
 71.1176 +	{
 71.1177 +
 71.1178 +		int freq;
 71.1179 +
 71.1180 +
 71.1181 +
 71.1182 +		if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY)
 71.1183 +
 71.1184 +			freq = FMUSIC_XMLINEARPERIOD2HZ(cptr->freq+cptr->freqdelta);
 71.1185 +
 71.1186 +		else
 71.1187 +
 71.1188 +			freq = FMUSIC_PERIOD2HZ(cptr->freq+cptr->freqdelta);
 71.1189 +
 71.1190 +
 71.1191 +
 71.1192 +		ccptr->frequency = freq;
 71.1193 +
 71.1194 +
 71.1195 +
 71.1196 +		if (freq < 100) 
 71.1197 +
 71.1198 +			freq = 100;
 71.1199 +
 71.1200 +
 71.1201 +
 71.1202 +		__asm
 71.1203 +
 71.1204 +		{
 71.1205 +
 71.1206 +			push	eax
 71.1207 +
 71.1208 +			push	ebx
 71.1209 +
 71.1210 +			push	ecx
 71.1211 +
 71.1212 +			push	edx
 71.1213 +
 71.1214 +
 71.1215 +
 71.1216 +			// work out low fractional part of the speed using a 64bit divide
 71.1217 +
 71.1218 +			mov		ecx, ccptr
 71.1219 +
 71.1220 +			mov		ebx, FSOUND_MixRate
 71.1221 +
 71.1222 +			mov		eax, freq
 71.1223 +
 71.1224 +			xor		edx, edx
 71.1225 +
 71.1226 +			div		ebx							// get quotient and remainder
 71.1227 +
 71.1228 +			mov		[ecx].speedhi, eax
 71.1229 +
 71.1230 +			div		ebx							// now divide remainder by rate to get lower 32bit fraction
 71.1231 +
 71.1232 +			mov		[ecx].speedlo, eax
 71.1233 +
 71.1234 +
 71.1235 +
 71.1236 +			pop		edx
 71.1237 +
 71.1238 +			pop		ecx
 71.1239 +
 71.1240 +			pop		ebx
 71.1241 +
 71.1242 +			pop		eax
 71.1243 +
 71.1244 +		}
 71.1245 +
 71.1246 +	}
 71.1247 +
 71.1248 +	if (cptr->notectrl & FMUSIC_STOP)		
 71.1249 +
 71.1250 +	{
 71.1251 +
 71.1252 +//		FSOUND_StopSound(channel);
 71.1253 +
 71.1254 +
 71.1255 +
 71.1256 +		ccptr->mixposlo = 0;
 71.1257 +
 71.1258 +		ccptr->mixpos = 0;
 71.1259 +
 71.1260 +//		ccptr->sptr = NULL;
 71.1261 +
 71.1262 +		ccptr->sampleoffset = 0;	// if this channel gets stolen it will be safe
 71.1263 +
 71.1264 +	}
 71.1265 +
 71.1266 +}
 71.1267 +
 71.1268 +
 71.1269 +
 71.1270 +
 71.1271 +
 71.1272 +
 71.1273 +
 71.1274 +void FMUSIC_XM_Resetcptr(FMUSIC_CHANNEL *cptr, FSOUND_SAMPLE	*sptr)
 71.1275 +
 71.1276 +{
 71.1277 +
 71.1278 +	cptr->volume		= (int)sptr->defvol;
 71.1279 +
 71.1280 +	cptr->pan			= sptr->defpan;
 71.1281 +
 71.1282 +	cptr->envvol		= 64;
 71.1283 +
 71.1284 +	cptr->envvolpos		= 0;
 71.1285 +
 71.1286 +	cptr->envvoltick	= 0;
 71.1287 +
 71.1288 +	cptr->envvoldelta	= 0;
 71.1289 +
 71.1290 +
 71.1291 +
 71.1292 +	cptr->envpan		= 32;
 71.1293 +
 71.1294 +	cptr->envpanpos		= 0;
 71.1295 +
 71.1296 +	cptr->envpantick	= 0;
 71.1297 +
 71.1298 +	cptr->envpandelta	= 0;
 71.1299 +
 71.1300 +
 71.1301 +
 71.1302 +	cptr->keyoff		= FALSE;
 71.1303 +
 71.1304 +	cptr->fadeoutvol	= 65536;
 71.1305 +
 71.1306 +	cptr->envvolstopped = FALSE;
 71.1307 +
 71.1308 +	cptr->envpanstopped = FALSE;
 71.1309 +
 71.1310 +	cptr->ivibsweeppos = 0;
 71.1311 +
 71.1312 +	cptr->ivibpos = 0;
 71.1313 +
 71.1314 +
 71.1315 +
 71.1316 +	// retrigger tremolo and vibrato waveforms
 71.1317 +
 71.1318 +	if ((cptr->wavecontrol & 0xF) < 4) 
 71.1319 +
 71.1320 +		cptr->vibpos=0;
 71.1321 +
 71.1322 +	if ((cptr->wavecontrol >> 4) < 4) 
 71.1323 +
 71.1324 +		cptr->tremolopos=0;
 71.1325 +
 71.1326 +
 71.1327 +
 71.1328 +	cptr->tremorpos	= 0;								// retrigger tremor count
 71.1329 +
 71.1330 +
 71.1331 +
 71.1332 +	cptr->notectrl |= FMUSIC_VOLUME;
 71.1333 +
 71.1334 +	cptr->notectrl |= FMUSIC_PAN;
 71.1335 +
 71.1336 +}
 71.1337 +
 71.1338 +
 71.1339 +
 71.1340 +
 71.1341 +
 71.1342 +
 71.1343 +
 71.1344 +/*
 71.1345 +
 71.1346 +[API]
 71.1347 +
 71.1348 +[
 71.1349 +
 71.1350 +	[DESCRIPTION]
 71.1351 +
 71.1352 +
 71.1353 +
 71.1354 +	[PARAMETERS]
 71.1355 +
 71.1356 + 
 71.1357 +
 71.1358 +	[RETURN_VALUE]
 71.1359 +
 71.1360 +
 71.1361 +
 71.1362 +	[REMARKS]
 71.1363 +
 71.1364 +
 71.1365 +
 71.1366 +	[SEE_ALSO]
 71.1367 +
 71.1368 +]
 71.1369 +
 71.1370 +*/
 71.1371 +
 71.1372 +void FMUSIC_UpdateXMNote(FMUSIC_MODULE *mod) 
 71.1373 +
 71.1374 +{
 71.1375 +
 71.1376 +	signed char	breakflag=FALSE;
 71.1377 +
 71.1378 +	signed char	jumpflag=FALSE;
 71.1379 +
 71.1380 +	FMUSIC_NOTE	*current;
 71.1381 +
 71.1382 +	int		count;
 71.1383 +
 71.1384 +
 71.1385 +
 71.1386 +	mod->nextorder = -1;
 71.1387 +
 71.1388 +	mod->nextrow = -1;
 71.1389 +
 71.1390 +
 71.1391 +
 71.1392 +	// Point our note pointer to the correct pattern buffer, and to the
 71.1393 +
 71.1394 +	// correct offset in this buffer indicated by row and number of channels
 71.1395 +
 71.1396 +	current = mod->pattern[mod->orderlist[mod->order]].data + (mod->row*mod->numchannels);
 71.1397 +
 71.1398 +
 71.1399 +
 71.1400 +	if (!current) 
 71.1401 +
 71.1402 +		return;
 71.1403 +
 71.1404 +
 71.1405 +
 71.1406 +	// Loop through each channel in the row until we have finished
 71.1407 +
 71.1408 +	for (count=0; count<mod->numchannels; count++,current++)
 71.1409 +
 71.1410 +	{
 71.1411 +
 71.1412 +		FMUSIC_CHANNEL			*cptr  = NULL;
 71.1413 +
 71.1414 +		FMUSIC_INSTRUMENT		*iptr  = NULL;
 71.1415 +
 71.1416 +		FSOUND_SAMPLE			*sptr  = NULL;
 71.1417 +
 71.1418 +		unsigned char			paramx, paramy;
 71.1419 +
 71.1420 +		int						oldvolume, oldfreq, oldpan;
 71.1421 +
 71.1422 +		signed char				porta = FALSE;
 71.1423 +
 71.1424 +
 71.1425 +
 71.1426 +		paramx = current->eparam >> 4;			// get effect param x
 71.1427 +
 71.1428 +		paramy = current->eparam & 0xF;			// get effect param y
 71.1429 +
 71.1430 +
 71.1431 +
 71.1432 +		cptr = &FMUSIC_Channel[count];
 71.1433 +
 71.1434 +
 71.1435 +
 71.1436 +
 71.1437 +
 71.1438 +//			**** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
 71.1439 +
 71.1440 +//		if (LinkedListIsRootNode(cptr, &cptr->vchannelhead)) 
 71.1441 +
 71.1442 +//			cptr = &FMUSIC_DummyVirtualChannel; // no channels allocated yet
 71.1443 +
 71.1444 +//			**** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
 71.1445 +
 71.1446 +
 71.1447 +
 71.1448 +
 71.1449 +
 71.1450 +		porta = (current->effect == FMUSIC_XM_PORTATO || current->effect == FMUSIC_XM_PORTATOVOLSLIDE);
 71.1451 +
 71.1452 +
 71.1453 +
 71.1454 +		// first store note and instrument number if there was one
 71.1455 +
 71.1456 +		if (current->number && !porta)							//  bugfix 3.20 (&& !porta)
 71.1457 +
 71.1458 +			cptr->inst = current->number-1;						// remember the Instrument #
 71.1459 +
 71.1460 +
 71.1461 +
 71.1462 +		if (current->note && current->note != FMUSIC_KEYOFF && !porta) //  bugfix 3.20 (&& !porta)
 71.1463 +
 71.1464 +			cptr->note = current->note-1;						// remember the note
 71.1465 +
 71.1466 +
 71.1467 +
 71.1468 +		if (cptr->inst >= (int)mod->numinsts)
 71.1469 +
 71.1470 +		{
 71.1471 +
 71.1472 +			iptr = &FMUSIC_DummyInstrument;
 71.1473 +
 71.1474 +			sptr = &FMUSIC_DummySample;
 71.1475 +
 71.1476 +			sptr->buff = NULL;
 71.1477 +
 71.1478 +		}
 71.1479 +
 71.1480 +		else
 71.1481 +
 71.1482 +		{
 71.1483 +
 71.1484 +			// set up some instrument and sample pointers
 71.1485 +
 71.1486 +			iptr = &mod->instrument[cptr->inst];
 71.1487 +
 71.1488 +			if (iptr->keymap[cptr->note] >= 16) 
 71.1489 +
 71.1490 +				sptr = &FMUSIC_DummySample;
 71.1491 +
 71.1492 +			else 
 71.1493 +
 71.1494 +				sptr = iptr->sample[iptr->keymap[cptr->note]];
 71.1495 +
 71.1496 +
 71.1497 +
 71.1498 +			if (!porta)
 71.1499 +
 71.1500 +				cptr->sptr = sptr;
 71.1501 +
 71.1502 +		}
 71.1503 +
 71.1504 +
 71.1505 +
 71.1506 +		oldvolume = cptr->volume;
 71.1507 +
 71.1508 +		oldfreq   = cptr->freq;
 71.1509 +
 71.1510 +		oldpan    = cptr->pan;
 71.1511 +
 71.1512 +
 71.1513 +
 71.1514 +		// if there is no more tremolo, set volume to volume + last tremolo delta
 71.1515 +
 71.1516 +		if (cptr->recenteffect == FMUSIC_XM_TREMOLO && current->effect != FMUSIC_XM_TREMOLO)
 71.1517 +
 71.1518 +			cptr->volume += cptr->voldelta;		
 71.1519 +
 71.1520 +		cptr->recenteffect  = current->effect;
 71.1521 +
 71.1522 +
 71.1523 +
 71.1524 +		cptr->voldelta = 0;
 71.1525 +
 71.1526 +		cptr->notectrl	= 0;
 71.1527 +
 71.1528 +
 71.1529 +
 71.1530 +		//= PROCESS NOTE ===============================================================================
 71.1531 +
 71.1532 +		if (current->note && current->note != FMUSIC_KEYOFF) 
 71.1533 +
 71.1534 +		{
 71.1535 +
 71.1536 +			// get note according to relative note
 71.1537 +
 71.1538 +			cptr->realnote = current->note + sptr->relative - 1;
 71.1539 +
 71.1540 +
 71.1541 +
 71.1542 +			// get period according to realnote and finetune
 71.1543 +
 71.1544 +			if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 
 71.1545 +
 71.1546 +			{
 71.1547 +
 71.1548 +				cptr->period = (10*12*16*4) - (cptr->realnote*16*4) - (sptr->finetune / 2);
 71.1549 +
 71.1550 +			}
 71.1551 +
 71.1552 +			else 
 71.1553 +
 71.1554 +			{
 71.1555 +
 71.1556 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE
 71.1557 +
 71.1558 +				cptr->period = FMUSIC_XM_GetAmigaPeriod(cptr->realnote, sptr->finetune);
 71.1559 +
 71.1560 +#endif
 71.1561 +
 71.1562 +			}
 71.1563 +
 71.1564 +			
 71.1565 +
 71.1566 +			// frequency only changes if there are no portamento effects
 71.1567 +
 71.1568 +			if (!porta)
 71.1569 +
 71.1570 +				cptr->freq = cptr->period;
 71.1571 +
 71.1572 +
 71.1573 +
 71.1574 +			cptr->notectrl = FMUSIC_TRIGGER;
 71.1575 +
 71.1576 +		}
 71.1577 +
 71.1578 +
 71.1579 +
 71.1580 +		cptr->freqdelta	= 0;
 71.1581 +
 71.1582 +		cptr->notectrl		|= FMUSIC_FREQ;
 71.1583 +
 71.1584 +		cptr->notectrl		|= FMUSIC_VOLUME;
 71.1585 +
 71.1586 +
 71.1587 +
 71.1588 +
 71.1589 +
 71.1590 +		//= PROCESS INSTRUMENT NUMBER ==================================================================
 71.1591 +
 71.1592 +		if (current->number)
 71.1593 +
 71.1594 +			FMUSIC_XM_Resetcptr(cptr,sptr);
 71.1595 +
 71.1596 +
 71.1597 +
 71.1598 +		//= PROCESS VOLUME BYTE ========================================================================
 71.1599 +
 71.1600 +#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE
 71.1601 +
 71.1602 +		if (current->volume) 
 71.1603 +
 71.1604 +			FMUSIC_XM_ProcessVolumeByte(cptr, current->volume);
 71.1605 +
 71.1606 +#endif
 71.1607 +
 71.1608 +
 71.1609 +
 71.1610 +		//= PROCESS KEY OFF ============================================================================
 71.1611 +
 71.1612 +		if (current->note == FMUSIC_KEYOFF || current->effect == FMUSIC_XM_KEYOFF) 
 71.1613 +
 71.1614 +			cptr->keyoff = TRUE;
 71.1615 +
 71.1616 +
 71.1617 +
 71.1618 +		//= PROCESS ENVELOPES ==========================================================================
 71.1619 +
 71.1620 +#ifdef FMUSIC_XM_VOLUMEENVELOPE_ACTIVE
 71.1621 +
 71.1622 +		if (iptr->VOLtype & FMUSIC_ENVELOPE_ON)
 71.1623 +
 71.1624 +		{
 71.1625 +
 71.1626 +			if (!cptr->envvolstopped) 
 71.1627 +
 71.1628 +				FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envvolpos, &cptr->envvoltick, iptr->VOLtype, iptr->VOLnumpoints, &iptr->VOLPoints[0], iptr->VOLLoopEnd, iptr->VOLLoopStart, iptr->VOLsustain, &cptr->envvol, &cptr->envvolfrac, &cptr->envvolstopped, &cptr->envvoldelta, FMUSIC_VOLUME);
 71.1629 +
 71.1630 +		}
 71.1631 +
 71.1632 +		else 
 71.1633 +
 71.1634 +#endif
 71.1635 +
 71.1636 +			if (cptr->keyoff) 
 71.1637 +
 71.1638 +				cptr->envvol = 0;
 71.1639 +
 71.1640 +
 71.1641 +
 71.1642 +#ifdef FMUSIC_XM_PANENVELOPE_ACTIVE
 71.1643 +
 71.1644 +		if (iptr->PANtype & FMUSIC_ENVELOPE_ON && !cptr->envpanstopped) 
 71.1645 +
 71.1646 +			FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envpanpos, &cptr->envpantick, iptr->PANtype, iptr->PANnumpoints, &iptr->PANPoints[0], iptr->PANLoopEnd, iptr->PANLoopStart, iptr->PANsustain, &cptr->envpan, &cptr->envpanfrac, &cptr->envpanstopped, &cptr->envpandelta, FMUSIC_PAN);
 71.1647 +
 71.1648 +#endif
 71.1649 +
 71.1650 +
 71.1651 +
 71.1652 +		//= PROCESS VOLUME FADEOUT =====================================================================
 71.1653 +
 71.1654 +		if (cptr->keyoff) 
 71.1655 +
 71.1656 +		{
 71.1657 +
 71.1658 +			cptr->fadeoutvol -= iptr->VOLfade;
 71.1659 +
 71.1660 +			if (cptr->fadeoutvol < 0) 
 71.1661 +
 71.1662 +				cptr->fadeoutvol = 0;
 71.1663 +
 71.1664 +			cptr->notectrl |= FMUSIC_VOLUME;
 71.1665 +
 71.1666 +		}
 71.1667 +
 71.1668 +
 71.1669 +
 71.1670 +
 71.1671 +
 71.1672 +		//= PROCESS TICK 0 EFFECTS =====================================================================
 71.1673 +
 71.1674 +#if  1
 71.1675 +
 71.1676 +		switch (current->effect) 
 71.1677 +
 71.1678 +		{
 71.1679 +
 71.1680 +			// not processed on tick 0
 71.1681 +
 71.1682 +#ifdef FMUSIC_XM_ARPEGGIO_ACTIVE
 71.1683 +
 71.1684 +			case FMUSIC_XM_ARPEGGIO : 
 71.1685 +
 71.1686 +			{
 71.1687 +
 71.1688 +				break;
 71.1689 +
 71.1690 +			}
 71.1691 +
 71.1692 +#endif
 71.1693 +
 71.1694 +#ifdef FMUSIC_XM_PORTAUP_ACTIVE
 71.1695 +
 71.1696 +			case FMUSIC_XM_PORTAUP :
 71.1697 +
 71.1698 +			{
 71.1699 +
 71.1700 +				if (current->eparam) 
 71.1701 +
 71.1702 +					cptr->portaup = current->eparam;
 71.1703 +
 71.1704 +				break;
 71.1705 +
 71.1706 +			}
 71.1707 +
 71.1708 +#endif
 71.1709 +
 71.1710 +#ifdef FMUSIC_XM_PORTADOWN_ACTIVE
 71.1711 +
 71.1712 +			case FMUSIC_XM_PORTADOWN :
 71.1713 +
 71.1714 +			{
 71.1715 +
 71.1716 +				if (current->eparam) 
 71.1717 +
 71.1718 +					cptr->portadown = current->eparam;
 71.1719 +
 71.1720 +				break;
 71.1721 +
 71.1722 +			}
 71.1723 +
 71.1724 +#endif
 71.1725 +
 71.1726 +#ifdef FMUSIC_XM_PORTATO_ACTIVE
 71.1727 +
 71.1728 +			case FMUSIC_XM_PORTATO :
 71.1729 +
 71.1730 +			{
 71.1731 +
 71.1732 +				if (current->eparam) 
 71.1733 +
 71.1734 +					cptr->portaspeed = current->eparam;
 71.1735 +
 71.1736 +				cptr->portatarget = cptr->period;
 71.1737 +
 71.1738 +				cptr->notectrl &= ~FMUSIC_TRIGGER;
 71.1739 +
 71.1740 +				cptr->notectrl &= ~FMUSIC_FREQ;
 71.1741 +
 71.1742 +				break;
 71.1743 +
 71.1744 +			}
 71.1745 +
 71.1746 +#endif
 71.1747 +
 71.1748 +#ifdef FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE
 71.1749 +
 71.1750 +			case FMUSIC_XM_PORTATOVOLSLIDE : 
 71.1751 +
 71.1752 +			{
 71.1753 +
 71.1754 +				cptr->portatarget = cptr->period;
 71.1755 +
 71.1756 +				if (current->eparam) 
 71.1757 +
 71.1758 +					cptr->volslide = current->eparam;
 71.1759 +
 71.1760 +				cptr->notectrl &= ~FMUSIC_TRIGGER;
 71.1761 +
 71.1762 +				cptr->notectrl &= ~FMUSIC_FREQ;
 71.1763 +
 71.1764 +				break;
 71.1765 +
 71.1766 +			}
 71.1767 +
 71.1768 +#endif
 71.1769 +
 71.1770 +#ifdef FMUSIC_XM_VIBRATO_ACTIVE
 71.1771 +
 71.1772 +			case FMUSIC_XM_VIBRATO :
 71.1773 +
 71.1774 +			{
 71.1775 +
 71.1776 +				if (paramx) 
 71.1777 +
 71.1778 +					cptr->vibspeed = paramx;
 71.1779 +
 71.1780 +				if (paramy) 
 71.1781 +
 71.1782 +					cptr->vibdepth = paramy;
 71.1783 +
 71.1784 +				FMUSIC_XM_Vibrato(cptr);
 71.1785 +
 71.1786 +				break;
 71.1787 +
 71.1788 +			}
 71.1789 +
 71.1790 +#endif
 71.1791 +
 71.1792 +#ifdef FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE
 71.1793 +
 71.1794 +			case FMUSIC_XM_VIBRATOVOLSLIDE : 
 71.1795 +
 71.1796 +			{
 71.1797 +
 71.1798 +				if (current->eparam) 
 71.1799 +
 71.1800 +					cptr->volslide = current->eparam;
 71.1801 +
 71.1802 +				FMUSIC_XM_Vibrato(cptr);
 71.1803 +
 71.1804 +				break;								// not processed on tick 0
 71.1805 +
 71.1806 +			}
 71.1807 +
 71.1808 +#endif
 71.1809 +
 71.1810 +#ifdef FMUSIC_XM_TREMOLO_ACTIVE
 71.1811 +
 71.1812 +			case FMUSIC_XM_TREMOLO : 
 71.1813 +
 71.1814 +			{
 71.1815 +
 71.1816 +				if (paramx) 
 71.1817 +
 71.1818 +					cptr->tremolospeed = paramx;
 71.1819 +
 71.1820 +				if (paramy) 
 71.1821 +
 71.1822 +					cptr->tremolodepth = paramy;
 71.1823 +
 71.1824 +				break;
 71.1825 +
 71.1826 +			}
 71.1827 +
 71.1828 +#endif
 71.1829 +
 71.1830 +#ifdef FMUSIC_XM_SETPANPOSITION_ACTIVE
 71.1831 +
 71.1832 +			case FMUSIC_XM_SETPANPOSITION : 
 71.1833 +
 71.1834 +			{
 71.1835 +
 71.1836 +				cptr->pan = current->eparam;
 71.1837 +
 71.1838 +				cptr->notectrl |= FMUSIC_PAN;
 71.1839 +
 71.1840 +				break;
 71.1841 +
 71.1842 +			}
 71.1843 +
 71.1844 +#endif
 71.1845 +
 71.1846 +#ifdef FMUSIC_XM_SETSAMPLEOFFSET_ACTIVE
 71.1847 +
 71.1848 +			case FMUSIC_XM_SETSAMPLEOFFSET : 
 71.1849 +
 71.1850 +			{
 71.1851 +
 71.1852 +				unsigned int offset;
 71.1853 +
 71.1854 +
 71.1855 +
 71.1856 +				if (current->eparam) 
 71.1857 +
 71.1858 +					cptr->sampleoffset = current->eparam;
 71.1859 +
 71.1860 +
 71.1861 +
 71.1862 +				if (!cptr->cptr) break;
 71.1863 +
 71.1864 +
 71.1865 +
 71.1866 +				offset = (int)(cptr->sampleoffset) << 8;
 71.1867 +
 71.1868 +
 71.1869 +
 71.1870 +				if (offset >= sptr->loopstart + sptr->looplen) 
 71.1871 +
 71.1872 +				{
 71.1873 +
 71.1874 +					cptr->notectrl &= ~FMUSIC_TRIGGER;
 71.1875 +
 71.1876 +					cptr->notectrl |= FMUSIC_STOP;
 71.1877 +
 71.1878 +				}
 71.1879 +
 71.1880 +				else 
 71.1881 +
 71.1882 +					cptr->cptr->sampleoffset = offset;
 71.1883 +
 71.1884 +				break;
 71.1885 +
 71.1886 +			}
 71.1887 +
 71.1888 +#endif
 71.1889 +
 71.1890 +#ifdef FMUSIC_XM_VOLUMESLIDE_ACTIVE
 71.1891 +
 71.1892 +			case FMUSIC_XM_VOLUMESLIDE : 
 71.1893 +
 71.1894 +			{
 71.1895 +
 71.1896 +				if (current->eparam) 
 71.1897 +
 71.1898 +					cptr->volslide  = current->eparam;
 71.1899 +
 71.1900 +				break;				
 71.1901 +
 71.1902 +			}
 71.1903 +
 71.1904 +#endif
 71.1905 +
 71.1906 +#ifdef FMUSIC_XM_PATTERNJUMP_ACTIVE
 71.1907 +
 71.1908 +			case FMUSIC_XM_PATTERNJUMP : // --- 00 B00 : --- 00 D63 , should put us at ord=0, row=63
 71.1909 +
 71.1910 +			{
 71.1911 +
 71.1912 +				mod->nextorder = current->eparam;
 71.1913 +
 71.1914 +				mod->nextrow = 0;
 71.1915 +
 71.1916 +				if (mod->nextorder >= (int)mod->numorders) 
 71.1917 +
 71.1918 +					mod->nextorder=0;
 71.1919 +
 71.1920 +				jumpflag = 1;
 71.1921 +
 71.1922 +				break;
 71.1923 +
 71.1924 +			}
 71.1925 +
 71.1926 +#endif
 71.1927 +
 71.1928 +#ifdef FMUSIC_XM_SETVOLUME_ACTIVE
 71.1929 +
 71.1930 +			case FMUSIC_XM_SETVOLUME : 
 71.1931 +
 71.1932 +			{
 71.1933 +
 71.1934 +				cptr->volume = current->eparam;
 71.1935 +
 71.1936 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.1937 +
 71.1938 +				break;
 71.1939 +
 71.1940 +			}
 71.1941 +
 71.1942 +#endif
 71.1943 +
 71.1944 +#ifdef FMUSIC_XM_PATTERNBREAK_ACTIVE
 71.1945 +
 71.1946 +			case FMUSIC_XM_PATTERNBREAK : 
 71.1947 +
 71.1948 +			{
 71.1949 +
 71.1950 +				mod->nextrow = (paramx*10) + paramy;
 71.1951 +
 71.1952 +				if (mod->nextrow > 63) 
 71.1953 +
 71.1954 +					mod->nextrow = 0;
 71.1955 +
 71.1956 +				if (!breakflag && !jumpflag) 
 71.1957 +
 71.1958 +					mod->nextorder = mod->order+1;
 71.1959 +
 71.1960 +				if (mod->nextorder >= (int)mod->numorders) 
 71.1961 +
 71.1962 +					mod->nextorder=0;
 71.1963 +
 71.1964 +				break;
 71.1965 +
 71.1966 +			}
 71.1967 +
 71.1968 +#endif
 71.1969 +
 71.1970 +			case FMUSIC_XM_SPECIAL : 
 71.1971 +
 71.1972 +			{
 71.1973 +
 71.1974 +				switch (paramx) 
 71.1975 +
 71.1976 +				{
 71.1977 +
 71.1978 +					// not processed on tick 0 / unsupported
 71.1979 +
 71.1980 +					case FMUSIC_XM_RETRIG :
 71.1981 +
 71.1982 +					case FMUSIC_XM_NOTECUT :
 71.1983 +
 71.1984 +					case FMUSIC_XM_SETFILTER :
 71.1985 +
 71.1986 +					case FMUSIC_XM_FUNKREPEAT :
 71.1987 +
 71.1988 +					case FMUSIC_XM_SETGLISSANDO : 
 71.1989 +
 71.1990 +					{
 71.1991 +
 71.1992 +						break;
 71.1993 +
 71.1994 +					}
 71.1995 +
 71.1996 +#ifdef FMUSIC_XM_FINEPORTAUP_ACTIVE
 71.1997 +
 71.1998 +					case FMUSIC_XM_FINEPORTAUP : 
 71.1999 +
 71.2000 +					{
 71.2001 +
 71.2002 +						if (paramy) 
 71.2003 +
 71.2004 +							cptr->fineportaup = paramy;
 71.2005 +
 71.2006 +						cptr->freq -= (cptr->fineportaup << 2);
 71.2007 +
 71.2008 +						break;
 71.2009 +
 71.2010 +					}
 71.2011 +
 71.2012 +#endif
 71.2013 +
 71.2014 +#ifdef FMUSIC_XM_FINEPORTADOWN_ACTIVE
 71.2015 +
 71.2016 +					case FMUSIC_XM_FINEPORTADOWN :
 71.2017 +
 71.2018 +					{
 71.2019 +
 71.2020 +						if (paramy) 
 71.2021 +
 71.2022 +							cptr->fineportadown = paramy;
 71.2023 +
 71.2024 +						cptr->freq += (cptr->fineportadown << 2);
 71.2025 +
 71.2026 +						break;
 71.2027 +
 71.2028 +					}
 71.2029 +
 71.2030 +#endif
 71.2031 +
 71.2032 +#ifdef FMUSIC_XM_SETVIBRATOWAVE_ACTIVE
 71.2033 +
 71.2034 +					case FMUSIC_XM_SETVIBRATOWAVE : 
 71.2035 +
 71.2036 +					{
 71.2037 +
 71.2038 +						cptr->wavecontrol &= 0xF0;
 71.2039 +
 71.2040 +						cptr->wavecontrol |= paramy;
 71.2041 +
 71.2042 +						break;
 71.2043 +
 71.2044 +					}
 71.2045 +
 71.2046 +#endif
 71.2047 +
 71.2048 +#ifdef FMUSIC_XM_SETFINETUNE_ACTIVE
 71.2049 +
 71.2050 +					case FMUSIC_XM_SETFINETUNE :
 71.2051 +
 71.2052 +					{
 71.2053 +
 71.2054 +						sptr->finetune = paramy;
 71.2055 +
 71.2056 +						break;
 71.2057 +
 71.2058 +					}
 71.2059 +
 71.2060 +#endif
 71.2061 +
 71.2062 +#ifdef FMUSIC_XM_PATTERNLOOP_ACTIVE
 71.2063 +
 71.2064 +					case FMUSIC_XM_PATTERNLOOP :
 71.2065 +
 71.2066 +					{
 71.2067 +
 71.2068 +						if (paramy == 0) 
 71.2069 +
 71.2070 +							cptr->patlooprow = mod->row;
 71.2071 +
 71.2072 +						else 
 71.2073 +
 71.2074 +						{
 71.2075 +
 71.2076 +							if (!cptr->patloopno) 
 71.2077 +
 71.2078 +								cptr->patloopno = paramy;
 71.2079 +
 71.2080 +							else cptr->patloopno--;
 71.2081 +
 71.2082 +							if (cptr->patloopno) 
 71.2083 +
 71.2084 +								mod->row = cptr->patlooprow-1;
 71.2085 +
 71.2086 +						}
 71.2087 +
 71.2088 +						break;
 71.2089 +
 71.2090 +					}
 71.2091 +
 71.2092 +#endif
 71.2093 +
 71.2094 +#ifdef FMUSIC_XM_SETTREMOLOWAVE_ACTIVE
 71.2095 +
 71.2096 +					case FMUSIC_XM_SETTREMOLOWAVE : 
 71.2097 +
 71.2098 +					{
 71.2099 +
 71.2100 +						cptr->wavecontrol &= 0xF;
 71.2101 +
 71.2102 +						cptr->wavecontrol |= (paramy<<4);
 71.2103 +
 71.2104 +						break;
 71.2105 +
 71.2106 +					}
 71.2107 +
 71.2108 +#endif
 71.2109 +
 71.2110 +#ifdef FMUSIC_XM_SETPANPOSITION16_ACTIVE
 71.2111 +
 71.2112 +					case FMUSIC_XM_SETPANPOSITION16 :
 71.2113 +
 71.2114 +					{
 71.2115 +
 71.2116 +						cptr->pan = paramy<<4;
 71.2117 +
 71.2118 +						cptr->notectrl |= FMUSIC_PAN;
 71.2119 +
 71.2120 +						break;
 71.2121 +
 71.2122 +					}
 71.2123 +
 71.2124 +#endif
 71.2125 +
 71.2126 +#ifdef FMUSIC_XM_FINEVOLUMESLIDEUP_ACTIVE
 71.2127 +
 71.2128 +					case FMUSIC_XM_FINEVOLUMESLIDEUP :
 71.2129 +
 71.2130 +					{
 71.2131 +
 71.2132 +						if (paramy) 
 71.2133 +
 71.2134 +							cptr->finevslup = paramy;
 71.2135 +
 71.2136 +
 71.2137 +
 71.2138 +						cptr->volume += cptr->finevslup;
 71.2139 +
 71.2140 +						
 71.2141 +
 71.2142 +						if (cptr->volume > 64) 
 71.2143 +
 71.2144 +							cptr->volume=64;
 71.2145 +
 71.2146 +
 71.2147 +
 71.2148 +						cptr->notectrl |= FMUSIC_VOLUME;
 71.2149 +
 71.2150 +						break;
 71.2151 +
 71.2152 +					}
 71.2153 +
 71.2154 +#endif
 71.2155 +
 71.2156 +#ifdef FMUSIC_XM_FINEVOLUMESLIDEDOWN_ACTIVE
 71.2157 +
 71.2158 +					case FMUSIC_XM_FINEVOLUMESLIDEDOWN :
 71.2159 +
 71.2160 +					{
 71.2161 +
 71.2162 +						if (paramy) cptr->finevslup = paramy;
 71.2163 +
 71.2164 +
 71.2165 +
 71.2166 +						cptr->volume -= cptr->finevslup;
 71.2167 +
 71.2168 +						
 71.2169 +
 71.2170 +						if (cptr->volume < 0) 
 71.2171 +
 71.2172 +							cptr->volume =0;
 71.2173 +
 71.2174 +
 71.2175 +
 71.2176 +						cptr->notectrl |= FMUSIC_VOLUME;
 71.2177 +
 71.2178 +						break;
 71.2179 +
 71.2180 +					}
 71.2181 +
 71.2182 +#endif
 71.2183 +
 71.2184 +#ifdef FMUSIC_XM_NOTEDELAY_ACTIVE
 71.2185 +
 71.2186 +					case FMUSIC_XM_NOTEDELAY : 
 71.2187 +
 71.2188 +					{
 71.2189 +
 71.2190 +						cptr->volume = oldvolume;
 71.2191 +
 71.2192 +						cptr->freq   = oldfreq;
 71.2193 +
 71.2194 +						cptr->pan    = oldpan;
 71.2195 +
 71.2196 +						cptr->notectrl &= ~FMUSIC_FREQ;
 71.2197 +
 71.2198 +						cptr->notectrl &= ~FMUSIC_VOLUME;
 71.2199 +
 71.2200 +						cptr->notectrl &= ~FMUSIC_PAN;
 71.2201 +
 71.2202 +						cptr->notectrl &= ~FMUSIC_TRIGGER;
 71.2203 +
 71.2204 +						break;
 71.2205 +
 71.2206 +					}
 71.2207 +
 71.2208 +#endif
 71.2209 +
 71.2210 +#ifdef FMUSIC_XM_PATTERNDELAY_ACTIVE
 71.2211 +
 71.2212 +					case FMUSIC_XM_PATTERNDELAY : 
 71.2213 +
 71.2214 +					{
 71.2215 +
 71.2216 +						mod->patterndelay = paramy;
 71.2217 +
 71.2218 +						mod->patterndelay *= mod->speed;
 71.2219 +
 71.2220 +						break;
 71.2221 +
 71.2222 +					}
 71.2223 +
 71.2224 +#endif
 71.2225 +
 71.2226 +				};
 71.2227 +
 71.2228 +				break;
 71.2229 +
 71.2230 +			}
 71.2231 +
 71.2232 +#ifdef FMUSIC_XM_SETSPEED_ACTIVE
 71.2233 +
 71.2234 +			case FMUSIC_XM_SETSPEED : 
 71.2235 +
 71.2236 +			{
 71.2237 +
 71.2238 +				if (current->eparam < 0x20)
 71.2239 +
 71.2240 +					mod->speed = current->eparam;
 71.2241 +
 71.2242 +				else
 71.2243 +
 71.2244 +					FMUSIC_SetBPM(mod, current->eparam); 
 71.2245 +
 71.2246 +				break;
 71.2247 +
 71.2248 +			}
 71.2249 +
 71.2250 +#endif
 71.2251 +
 71.2252 +#ifdef FMUSIC_XM_SETGLOBALVOLUME_ACTIVE
 71.2253 +
 71.2254 +			case FMUSIC_XM_SETGLOBALVOLUME : 
 71.2255 +
 71.2256 +			{
 71.2257 +
 71.2258 +				mod->globalvolume = current->eparam;
 71.2259 +
 71.2260 +				if (mod->globalvolume > 64) 
 71.2261 +
 71.2262 +					mod->globalvolume=64;
 71.2263 +
 71.2264 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.2265 +
 71.2266 +				break;
 71.2267 +
 71.2268 +			}
 71.2269 +
 71.2270 +#endif
 71.2271 +
 71.2272 +#ifdef FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE
 71.2273 +
 71.2274 +			case FMUSIC_XM_GLOBALVOLSLIDE :
 71.2275 +
 71.2276 +			{
 71.2277 +
 71.2278 +				if (current->eparam) 
 71.2279 +
 71.2280 +					mod->globalvsl = current->eparam;
 71.2281 +
 71.2282 +				break;
 71.2283 +
 71.2284 +			}
 71.2285 +
 71.2286 +#endif
 71.2287 +
 71.2288 +#ifdef FMUSIC_XM_SETENVELOPEPOS_ACTIVE
 71.2289 +
 71.2290 +			case FMUSIC_XM_SETENVELOPEPOS :
 71.2291 +
 71.2292 +			{
 71.2293 +
 71.2294 +				int currpos, nextpos;
 71.2295 +
 71.2296 +				int currtick, nexttick;
 71.2297 +
 71.2298 +				int currvol, nextvol, tickdiff;
 71.2299 +
 71.2300 +
 71.2301 +
 71.2302 +				if (!(iptr->VOLtype & FMUSIC_ENVELOPE_ON)) 
 71.2303 +
 71.2304 +					break;
 71.2305 +
 71.2306 +
 71.2307 +
 71.2308 +				currpos = 0;
 71.2309 +
 71.2310 +				
 71.2311 +
 71.2312 +				// search and reinterpolate new envelope position				
 71.2313 +
 71.2314 +				while (current->eparam > iptr->VOLPoints[(currpos+1)<<1] && currpos < iptr->VOLnumpoints) currpos++;
 71.2315 +
 71.2316 +
 71.2317 +
 71.2318 +				cptr->envvolpos = currpos;
 71.2319 +
 71.2320 +
 71.2321 +
 71.2322 +				// if it is at the last position, abort the envelope and continue last volume
 71.2323 +
 71.2324 +				if (cptr->envvolpos >= iptr->VOLnumpoints - 1) 
 71.2325 +
 71.2326 +				{
 71.2327 +
 71.2328 +					cptr->envvol = iptr->VOLPoints[((iptr->VOLnumpoints-1)<<1)+1];
 71.2329 +
 71.2330 +					cptr->envvolstopped = TRUE;
 71.2331 +
 71.2332 +					break;
 71.2333 +
 71.2334 +				}
 71.2335 +
 71.2336 +				
 71.2337 +
 71.2338 +				cptr->envvolstopped = FALSE;
 71.2339 +
 71.2340 +				cptr->envvoltick = current->eparam;
 71.2341 +
 71.2342 +
 71.2343 +
 71.2344 +				nextpos	= cptr->envvolpos + 1;
 71.2345 +
 71.2346 +
 71.2347 +
 71.2348 +				currtick = iptr->VOLPoints[currpos<<1];				// get tick at this point
 71.2349 +
 71.2350 +				nexttick = iptr->VOLPoints[nextpos<<1];				// get tick at next point
 71.2351 +
 71.2352 +
 71.2353 +
 71.2354 +				currvol = iptr->VOLPoints[(currpos<<1)+1] << 16;	// get VOL at this point << 16
 71.2355 +
 71.2356 +				nextvol	= iptr->VOLPoints[(nextpos<<1)+1] << 16;	// get VOL at next point << 16
 71.2357 +
 71.2358 +
 71.2359 +
 71.2360 +				// interpolate 2 points to find delta step
 71.2361 +
 71.2362 +				tickdiff = nexttick - currtick;
 71.2363 +
 71.2364 +				if (tickdiff) cptr->envvoldelta = (nextvol-currvol) / tickdiff;
 71.2365 +
 71.2366 +				else		  cptr->envvoldelta = 0;
 71.2367 +
 71.2368 +
 71.2369 +
 71.2370 +				tickdiff = cptr->envvoltick - currtick;
 71.2371 +
 71.2372 +
 71.2373 +
 71.2374 +				cptr->envvolfrac  = currvol + (cptr->envvoldelta * tickdiff);
 71.2375 +
 71.2376 +				cptr->envvol = cptr->envvolfrac >> 16;
 71.2377 +
 71.2378 +				cptr->envvolpos++;
 71.2379 +
 71.2380 +				break;
 71.2381 +
 71.2382 +			}
 71.2383 +
 71.2384 +#endif
 71.2385 +
 71.2386 +#ifdef FMUSIC_XM_PANSLIDE_ACTIVE
 71.2387 +
 71.2388 +			case FMUSIC_XM_PANSLIDE :
 71.2389 +
 71.2390 +			{
 71.2391 +
 71.2392 +				if (current->eparam) 
 71.2393 +
 71.2394 +				{
 71.2395 +
 71.2396 +					cptr->panslide = current->eparam;
 71.2397 +
 71.2398 +					cptr->notectrl |= FMUSIC_PAN;
 71.2399 +
 71.2400 +				}
 71.2401 +
 71.2402 +				break;
 71.2403 +
 71.2404 +			}
 71.2405 +
 71.2406 +#endif
 71.2407 +
 71.2408 +#ifdef FMUSIC_XM_MULTIRETRIG_ACTIVE
 71.2409 +
 71.2410 +			case FMUSIC_XM_MULTIRETRIG:
 71.2411 +
 71.2412 +			{
 71.2413 +
 71.2414 +				if (current->eparam) 
 71.2415 +
 71.2416 +				{
 71.2417 +
 71.2418 +					cptr->retrigx = paramx;
 71.2419 +
 71.2420 +					cptr->retrigy = paramy;
 71.2421 +
 71.2422 +				}
 71.2423 +
 71.2424 +				break;
 71.2425 +
 71.2426 +			}
 71.2427 +
 71.2428 +#endif
 71.2429 +
 71.2430 +#ifdef FMUSIC_XM_TREMOR_ACTIVE
 71.2431 +
 71.2432 +			case FMUSIC_XM_TREMOR :
 71.2433 +
 71.2434 +			{
 71.2435 +
 71.2436 +				if (current->eparam) 
 71.2437 +
 71.2438 +				{
 71.2439 +
 71.2440 +					cptr->tremoron = (paramx+1);
 71.2441 +
 71.2442 +					cptr->tremoroff = (paramy+1);
 71.2443 +
 71.2444 +				}
 71.2445 +
 71.2446 +				FMUSIC_XM_Tremor(cptr);
 71.2447 +
 71.2448 +				break;
 71.2449 +
 71.2450 +			}
 71.2451 +
 71.2452 +#endif
 71.2453 +
 71.2454 +#ifdef FMUSIC_XM_EXTRAFINEPORTA_ACTIVE
 71.2455 +
 71.2456 +			case FMUSIC_XM_EXTRAFINEPORTA :
 71.2457 +
 71.2458 +			{
 71.2459 +
 71.2460 +				
 71.2461 +
 71.2462 +				if (paramx == 1) 
 71.2463 +
 71.2464 +				{
 71.2465 +
 71.2466 +					if (paramy) 
 71.2467 +
 71.2468 +						cptr->xtraportaup = paramy;
 71.2469 +
 71.2470 +					cptr->freq -= cptr->xtraportaup;
 71.2471 +
 71.2472 +				}
 71.2473 +
 71.2474 +				else if (paramx == 2) 
 71.2475 +
 71.2476 +				{
 71.2477 +
 71.2478 +					if (paramy) 
 71.2479 +
 71.2480 +						cptr->xtraportadown = paramy;
 71.2481 +
 71.2482 +					cptr->freq += cptr->xtraportadown;
 71.2483 +
 71.2484 +				}
 71.2485 +
 71.2486 +				break;
 71.2487 +
 71.2488 +			}
 71.2489 +
 71.2490 +#endif
 71.2491 +
 71.2492 +//			default:
 71.2493 +
 71.2494 +//				__assume(0);
 71.2495 +
 71.2496 +		};
 71.2497 +
 71.2498 +#endif
 71.2499 +
 71.2500 +		//= INSTRUMENT VIBRATO ============================================================================
 71.2501 +
 71.2502 +#ifdef FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE
 71.2503 +
 71.2504 +		FMUSIC_XM_InstrumentVibrato(cptr, iptr);	// this gets added to previous freqdeltas
 71.2505 +
 71.2506 +#endif	
 71.2507 +
 71.2508 +		FMUSIC_XM_UpdateFlags(cptr,sptr,mod);
 71.2509 +
 71.2510 +	}
 71.2511 +
 71.2512 + }           
 71.2513 +
 71.2514 +
 71.2515 +
 71.2516 +
 71.2517 +
 71.2518 +/*
 71.2519 +
 71.2520 +[API]
 71.2521 +
 71.2522 +[
 71.2523 +
 71.2524 +	[DESCRIPTION]
 71.2525 +
 71.2526 +
 71.2527 +
 71.2528 +	[PARAMETERS]
 71.2529 +
 71.2530 + 
 71.2531 +
 71.2532 +	[RETURN_VALUE]
 71.2533 +
 71.2534 +
 71.2535 +
 71.2536 +	[REMARKS]
 71.2537 +
 71.2538 +
 71.2539 +
 71.2540 +	[SEE_ALSO]
 71.2541 +
 71.2542 +]
 71.2543 +
 71.2544 +*/
 71.2545 +
 71.2546 +void FMUSIC_UpdateXMEffects(FMUSIC_MODULE *mod) 
 71.2547 +
 71.2548 +{
 71.2549 +
 71.2550 +	FMUSIC_NOTE	*current;
 71.2551 +
 71.2552 +	int		count;
 71.2553 +
 71.2554 +
 71.2555 +
 71.2556 +	current = mod->pattern[mod->orderlist[mod->order]].data + (mod->row*mod->numchannels);
 71.2557 +
 71.2558 +
 71.2559 +
 71.2560 +	if (!current) 
 71.2561 +
 71.2562 +		return;
 71.2563 +
 71.2564 +
 71.2565 +
 71.2566 +	for (count=0; count<mod->numchannels; count++,current++)
 71.2567 +
 71.2568 +	{
 71.2569 +
 71.2570 +		FMUSIC_CHANNEL			*cptr  = NULL;
 71.2571 +
 71.2572 +		FMUSIC_INSTRUMENT		*iptr  = NULL;
 71.2573 +
 71.2574 +		FSOUND_SAMPLE			*sptr  = NULL;
 71.2575 +
 71.2576 +		unsigned char			effect, paramx, paramy;
 71.2577 +
 71.2578 +		
 71.2579 +
 71.2580 +		cptr = &FMUSIC_Channel[count];
 71.2581 +
 71.2582 +
 71.2583 +
 71.2584 +//			**** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
 71.2585 +
 71.2586 +//		cptr = LinkedListNextNode(&cptr->vchannelhead);
 71.2587 +
 71.2588 +//
 71.2589 +
 71.2590 +//		if (LinkedListIsRootNode(cptr, &cptr->vchannelhead)) 
 71.2591 +
 71.2592 +//			cptr = &FMUSIC_DummyVirtualChannel; // no channels allocated yet
 71.2593 +
 71.2594 +//			**** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
 71.2595 +
 71.2596 +
 71.2597 +
 71.2598 +		if (cptr->inst >= (int)mod->numinsts)
 71.2599 +
 71.2600 +		{
 71.2601 +
 71.2602 +			iptr = &FMUSIC_DummyInstrument;
 71.2603 +
 71.2604 +			sptr = &FMUSIC_DummySample;
 71.2605 +
 71.2606 +			sptr->buff = NULL;
 71.2607 +
 71.2608 +		}
 71.2609 +
 71.2610 +		else
 71.2611 +
 71.2612 +		{
 71.2613 +
 71.2614 +			iptr = &mod->instrument[cptr->inst];
 71.2615 +
 71.2616 +			if (iptr->keymap[cptr->note] >= 16) 
 71.2617 +
 71.2618 +				sptr = &FMUSIC_DummySample;
 71.2619 +
 71.2620 +			else 
 71.2621 +
 71.2622 +				sptr = iptr->sample[iptr->keymap[cptr->note]];
 71.2623 +
 71.2624 +
 71.2625 +
 71.2626 +			if (!sptr)
 71.2627 +
 71.2628 +				sptr = &FMUSIC_DummySample;
 71.2629 +
 71.2630 +		}
 71.2631 +
 71.2632 +
 71.2633 +
 71.2634 +		effect = current->effect;			// grab the effect number
 71.2635 +
 71.2636 +		paramx = current->eparam >> 4;		// grab the effect parameter x
 71.2637 +
 71.2638 +		paramy = current->eparam & 0xF;		// grab the effect parameter y
 71.2639 +
 71.2640 +
 71.2641 +
 71.2642 +		cptr->voldelta	= 0;				// this is for tremolo / tremor etc
 71.2643 +
 71.2644 +		cptr->freqdelta = 0;				// this is for vibrato / arpeggio etc
 71.2645 +
 71.2646 +		cptr->notectrl	= 0;
 71.2647 +
 71.2648 +
 71.2649 +
 71.2650 +		//= PROCESS ENVELOPES ==========================================================================
 71.2651 +
 71.2652 +#ifdef FMUSIC_XM_VOLUMEENVELOPE_ACTIVE
 71.2653 +
 71.2654 +		if (iptr->VOLtype & FMUSIC_ENVELOPE_ON && !cptr->envvolstopped) 
 71.2655 +
 71.2656 +			FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envvolpos, &cptr->envvoltick, iptr->VOLtype, iptr->VOLnumpoints, &iptr->VOLPoints[0], iptr->VOLLoopEnd, iptr->VOLLoopStart, iptr->VOLsustain, &cptr->envvol, &cptr->envvolfrac, &cptr->envvolstopped, &cptr->envvoldelta, FMUSIC_VOLUME);
 71.2657 +
 71.2658 +#endif
 71.2659 +
 71.2660 +#ifdef FMUSIC_XM_PANENVELOPE_ACTIVE
 71.2661 +
 71.2662 +		if (iptr->PANtype & FMUSIC_ENVELOPE_ON && !cptr->envpanstopped) 
 71.2663 +
 71.2664 +			FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envpanpos, &cptr->envpantick, iptr->PANtype, iptr->PANnumpoints, &iptr->PANPoints[0], iptr->PANLoopEnd, iptr->PANLoopStart, iptr->PANsustain, &cptr->envpan, &cptr->envpanfrac, &cptr->envpanstopped, &cptr->envpandelta, FMUSIC_PAN);
 71.2665 +
 71.2666 +#endif
 71.2667 +
 71.2668 +
 71.2669 +
 71.2670 +		//= PROCESS VOLUME FADEOUT =====================================================================
 71.2671 +
 71.2672 +		if (cptr->keyoff) 
 71.2673 +
 71.2674 +		{
 71.2675 +
 71.2676 +			cptr->fadeoutvol -= iptr->VOLfade;
 71.2677 +
 71.2678 +			if (cptr->fadeoutvol < 0) 
 71.2679 +
 71.2680 +				cptr->fadeoutvol = 0;
 71.2681 +
 71.2682 +			cptr->notectrl |= FMUSIC_VOLUME;
 71.2683 +
 71.2684 +		}
 71.2685 +
 71.2686 +
 71.2687 +
 71.2688 +		#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE
 71.2689 +
 71.2690 +		switch (current->volume >> 4) 
 71.2691 +
 71.2692 +		{
 71.2693 +
 71.2694 +//			case 0x0: 
 71.2695 +
 71.2696 +//			case 0x1: 
 71.2697 +
 71.2698 +//			case 0x2: 
 71.2699 +
 71.2700 +//			case 0x3: 
 71.2701 +
 71.2702 +//			case 0x4: 
 71.2703 +
 71.2704 +//			case 0x5: 
 71.2705 +
 71.2706 +//				break;
 71.2707 +
 71.2708 +			case 0x6: 
 71.2709 +
 71.2710 +			{
 71.2711 +
 71.2712 +				cptr->volume -= (current->volume & 0xF);
 71.2713 +
 71.2714 +				if (cptr->volume < 0) 
 71.2715 +
 71.2716 +					cptr->volume = 0;
 71.2717 +
 71.2718 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.2719 +
 71.2720 +				break;
 71.2721 +
 71.2722 +			}
 71.2723 +
 71.2724 +			case 0x7 :
 71.2725 +
 71.2726 +			{
 71.2727 +
 71.2728 +				cptr->volume += (current->volume & 0xF);
 71.2729 +
 71.2730 +				if (cptr->volume > 0x40) 
 71.2731 +
 71.2732 +					cptr->volume = 0x40;
 71.2733 +
 71.2734 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.2735 +
 71.2736 +				break;
 71.2737 +
 71.2738 +			}
 71.2739 +
 71.2740 +#ifdef FMUSIC_XM_VIBRATO_ACTIVE
 71.2741 +
 71.2742 +			case 0xb :
 71.2743 +
 71.2744 +			{
 71.2745 +
 71.2746 +				cptr->vibdepth = (current->volume & 0xF);
 71.2747 +
 71.2748 +
 71.2749 +
 71.2750 +				FMUSIC_XM_Vibrato(cptr);
 71.2751 +
 71.2752 +
 71.2753 +
 71.2754 +				cptr->vibpos += cptr->vibspeed;
 71.2755 +
 71.2756 +				if (cptr->vibpos > 31) 
 71.2757 +
 71.2758 +					cptr->vibpos -= 64;
 71.2759 +
 71.2760 +				break;
 71.2761 +
 71.2762 +			}
 71.2763 +
 71.2764 +#endif
 71.2765 +
 71.2766 +			case 0xd :
 71.2767 +
 71.2768 +			{
 71.2769 +
 71.2770 +				cptr->pan -= (current->volume & 0xF);
 71.2771 +
 71.2772 +				cptr->notectrl |= FMUSIC_PAN;
 71.2773 +
 71.2774 +				break;
 71.2775 +
 71.2776 +			}
 71.2777 +
 71.2778 +			case 0xe :
 71.2779 +
 71.2780 +			{
 71.2781 +
 71.2782 +				cptr->pan += (current->volume & 0xF);
 71.2783 +
 71.2784 +				cptr->notectrl |= FMUSIC_PAN;
 71.2785 +
 71.2786 +				break;
 71.2787 +
 71.2788 +			}
 71.2789 +
 71.2790 +#ifdef FMUSIC_XM_PORTATO_ACTIVE
 71.2791 +
 71.2792 +			case 0xf :
 71.2793 +
 71.2794 +			{
 71.2795 +
 71.2796 +				FMUSIC_XM_Portamento(cptr);
 71.2797 +
 71.2798 +				break;
 71.2799 +
 71.2800 +			}
 71.2801 +
 71.2802 +#endif
 71.2803 +
 71.2804 +//			default:
 71.2805 +
 71.2806 +//				__assume(0);
 71.2807 +
 71.2808 +		};
 71.2809 +
 71.2810 +		#endif
 71.2811 +
 71.2812 +
 71.2813 +
 71.2814 +
 71.2815 +
 71.2816 +		switch(effect) 
 71.2817 +
 71.2818 +		{
 71.2819 +
 71.2820 +#ifdef FMUSIC_XM_ARPEGGIO_ACTIVE
 71.2821 +
 71.2822 +			case FMUSIC_XM_ARPEGGIO : 
 71.2823 +
 71.2824 +			{
 71.2825 +
 71.2826 +				if (current->eparam > 0)
 71.2827 +
 71.2828 +				{
 71.2829 +
 71.2830 +					switch (mod->tick % 3) 
 71.2831 +
 71.2832 +					{
 71.2833 +
 71.2834 +						case 1: 
 71.2835 +
 71.2836 +							if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 
 71.2837 +
 71.2838 +								cptr->freqdelta = paramx << 6;
 71.2839 +
 71.2840 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE
 71.2841 +
 71.2842 +							else 
 71.2843 +
 71.2844 +								cptr->freqdelta = FMUSIC_XM_GetAmigaPeriod(cptr->realnote+paramx, sptr->finetune) -
 71.2845 +
 71.2846 +												  FMUSIC_XM_GetAmigaPeriod(cptr->realnote, sptr->finetune);
 71.2847 +
 71.2848 +#endif
 71.2849 +
 71.2850 +							break;
 71.2851 +
 71.2852 +						case 2: 
 71.2853 +
 71.2854 +							if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 
 71.2855 +
 71.2856 +								cptr->freqdelta = paramy << 6;
 71.2857 +
 71.2858 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE
 71.2859 +
 71.2860 +							else 
 71.2861 +
 71.2862 +								cptr->freqdelta = FMUSIC_XM_GetAmigaPeriod(cptr->realnote+paramy, sptr->finetune) -
 71.2863 +
 71.2864 +												  FMUSIC_XM_GetAmigaPeriod(cptr->realnote, sptr->finetune);
 71.2865 +
 71.2866 +#endif
 71.2867 +
 71.2868 +							break;
 71.2869 +
 71.2870 +						//default:
 71.2871 +
 71.2872 +								//__assume(0);
 71.2873 +
 71.2874 +					};
 71.2875 +
 71.2876 +					cptr->notectrl |= FMUSIC_FREQ;
 71.2877 +
 71.2878 +				}
 71.2879 +
 71.2880 +				break;
 71.2881 +
 71.2882 +			}
 71.2883 +
 71.2884 +#endif
 71.2885 +
 71.2886 +#ifdef FMUSIC_XM_PORTAUP_ACTIVE
 71.2887 +
 71.2888 +			case FMUSIC_XM_PORTAUP : 
 71.2889 +
 71.2890 +			{
 71.2891 +
 71.2892 +				cptr->freqdelta = 0;
 71.2893 +
 71.2894 +
 71.2895 +
 71.2896 +				cptr->freq -= cptr->portaup << 2; // subtract freq
 71.2897 +
 71.2898 +				if (cptr->freq < 56) 
 71.2899 +
 71.2900 +					cptr->freq=56;  // stop at B#8
 71.2901 +
 71.2902 +				cptr->notectrl |= FMUSIC_FREQ;
 71.2903 +
 71.2904 +				break;
 71.2905 +
 71.2906 +			}
 71.2907 +
 71.2908 +#endif
 71.2909 +
 71.2910 +#ifdef FMUSIC_XM_PORTADOWN_ACTIVE
 71.2911 +
 71.2912 +			case FMUSIC_XM_PORTADOWN : 
 71.2913 +
 71.2914 +			{
 71.2915 +
 71.2916 +				cptr->freqdelta = 0;
 71.2917 +
 71.2918 +
 71.2919 +
 71.2920 +				cptr->freq += cptr->portadown << 2; // subtract freq
 71.2921 +
 71.2922 +				cptr->notectrl |= FMUSIC_FREQ;
 71.2923 +
 71.2924 +				break;
 71.2925 +
 71.2926 +			}
 71.2927 +
 71.2928 +#endif
 71.2929 +
 71.2930 +#ifdef FMUSIC_XM_PORTATO_ACTIVE
 71.2931 +
 71.2932 +			case FMUSIC_XM_PORTATO : 
 71.2933 +
 71.2934 +			{
 71.2935 +
 71.2936 +				cptr->freqdelta = 0;
 71.2937 +
 71.2938 +
 71.2939 +
 71.2940 +				FMUSIC_XM_Portamento(cptr);
 71.2941 +
 71.2942 +				break;
 71.2943 +
 71.2944 +			}
 71.2945 +
 71.2946 +#endif
 71.2947 +
 71.2948 +#ifdef FMUSIC_XM_VIBRATO_ACTIVE
 71.2949 +
 71.2950 +			case FMUSIC_XM_VIBRATO :
 71.2951 +
 71.2952 +			{
 71.2953 +
 71.2954 +				FMUSIC_XM_Vibrato(cptr);
 71.2955 +
 71.2956 +				cptr->vibpos += cptr->vibspeed;
 71.2957 +
 71.2958 +				if (cptr->vibpos > 31) 
 71.2959 +
 71.2960 +					cptr->vibpos -= 64;
 71.2961 +
 71.2962 +				break;
 71.2963 +
 71.2964 +			}
 71.2965 +
 71.2966 +#endif
 71.2967 +
 71.2968 +#ifdef FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE
 71.2969 +
 71.2970 +			case FMUSIC_XM_PORTATOVOLSLIDE : 
 71.2971 +
 71.2972 +			{
 71.2973 +
 71.2974 +				cptr->freqdelta = 0;
 71.2975 +
 71.2976 +
 71.2977 +
 71.2978 +				FMUSIC_XM_Portamento(cptr);
 71.2979 +
 71.2980 +
 71.2981 +
 71.2982 +				paramx = cptr->volslide >> 4;    // grab the effect parameter x
 71.2983 +
 71.2984 +				paramy = cptr->volslide & 0xF;   // grab the effect parameter y
 71.2985 +
 71.2986 +
 71.2987 +
 71.2988 +				// slide up takes precedence over down
 71.2989 +
 71.2990 +				if (paramx) 
 71.2991 +
 71.2992 +				{
 71.2993 +
 71.2994 +					cptr->volume += paramx;
 71.2995 +
 71.2996 +					if (cptr->volume > 64) 
 71.2997 +
 71.2998 +						cptr->volume = 64;
 71.2999 +
 71.3000 +				}
 71.3001 +
 71.3002 +				else if (paramy) 
 71.3003 +
 71.3004 +				{
 71.3005 +
 71.3006 +					cptr->volume -= paramy;
 71.3007 +
 71.3008 +					if (cptr->volume < 0)
 71.3009 +
 71.3010 +						cptr->volume = 0;
 71.3011 +
 71.3012 +				}
 71.3013 +
 71.3014 +
 71.3015 +
 71.3016 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.3017 +
 71.3018 +				break;
 71.3019 +
 71.3020 +			}
 71.3021 +
 71.3022 +#endif
 71.3023 +
 71.3024 +#ifdef FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE
 71.3025 +
 71.3026 +			case FMUSIC_XM_VIBRATOVOLSLIDE : 
 71.3027 +
 71.3028 +			{
 71.3029 +
 71.3030 +				FMUSIC_XM_Vibrato(cptr);
 71.3031 +
 71.3032 +				cptr->vibpos += cptr->vibspeed;
 71.3033 +
 71.3034 +				if (cptr->vibpos > 31)
 71.3035 +
 71.3036 +					cptr->vibpos -= 64;
 71.3037 +
 71.3038 +
 71.3039 +
 71.3040 +				paramx = cptr->volslide >> 4;    // grab the effect parameter x
 71.3041 +
 71.3042 +				paramy = cptr->volslide & 0xF;   // grab the effect parameter y
 71.3043 +
 71.3044 +
 71.3045 +
 71.3046 +				// slide up takes precedence over down
 71.3047 +
 71.3048 +				if (paramx) 
 71.3049 +
 71.3050 +				{
 71.3051 +
 71.3052 +					cptr->volume += paramx;
 71.3053 +
 71.3054 +					if (cptr->volume > 64)
 71.3055 +
 71.3056 +						cptr->volume = 64;
 71.3057 +
 71.3058 +				}
 71.3059 +
 71.3060 +				else if (paramy) 
 71.3061 +
 71.3062 +				{
 71.3063 +
 71.3064 +					cptr->volume -= paramy;
 71.3065 +
 71.3066 +					if (cptr->volume < 0)
 71.3067 +
 71.3068 +						cptr->volume = 0;
 71.3069 +
 71.3070 +				}
 71.3071 +
 71.3072 +
 71.3073 +
 71.3074 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.3075 +
 71.3076 +				break;
 71.3077 +
 71.3078 +			}
 71.3079 +
 71.3080 +#endif
 71.3081 +
 71.3082 +#ifdef FMUSIC_XM_TREMOLO_ACTIVE
 71.3083 +
 71.3084 +			case FMUSIC_XM_TREMOLO :
 71.3085 +
 71.3086 +			{
 71.3087 +
 71.3088 +				FMUSIC_XM_Tremolo(cptr);
 71.3089 +
 71.3090 +				break;
 71.3091 +
 71.3092 +			}
 71.3093 +
 71.3094 +#endif
 71.3095 +
 71.3096 +#ifdef FMUSIC_XM_VOLUMESLIDE_ACTIVE
 71.3097 +
 71.3098 +			case FMUSIC_XM_VOLUMESLIDE : 
 71.3099 +
 71.3100 +			{
 71.3101 +
 71.3102 +				paramx = cptr->volslide >> 4;    // grab the effect parameter x
 71.3103 +
 71.3104 +				paramy = cptr->volslide & 0xF;   // grab the effect parameter y
 71.3105 +
 71.3106 +				
 71.3107 +
 71.3108 +				// slide up takes precedence over down
 71.3109 +
 71.3110 +				if (paramx) 
 71.3111 +
 71.3112 +				{
 71.3113 +
 71.3114 +					cptr->volume += paramx;
 71.3115 +
 71.3116 +					if (cptr->volume > 64) 
 71.3117 +
 71.3118 +						cptr->volume = 64;
 71.3119 +
 71.3120 +				}
 71.3121 +
 71.3122 +				else if (paramy) 
 71.3123 +
 71.3124 +				{
 71.3125 +
 71.3126 +					cptr->volume -= paramy;
 71.3127 +
 71.3128 +					if (cptr->volume < 0)  
 71.3129 +
 71.3130 +						cptr->volume = 0;
 71.3131 +
 71.3132 +				}
 71.3133 +
 71.3134 +
 71.3135 +
 71.3136 +				cptr->notectrl |= FMUSIC_VOLUME;
 71.3137 +
 71.3138 +				break;
 71.3139 +
 71.3140 +			}
 71.3141 +
 71.3142 +#endif
 71.3143 +
 71.3144 +			// extended PT effects
 71.3145 +
 71.3146 +			case FMUSIC_XM_SPECIAL: 
 71.3147 +
 71.3148 +			{
 71.3149 +
 71.3150 +				switch (paramx) 
 71.3151 +
 71.3152 +				{
 71.3153 +
 71.3154 +#ifdef FMUSIC_XM_NOTECUT_ACTIVE
 71.3155 +
 71.3156 +					case FMUSIC_XM_NOTECUT: 
 71.3157 +
 71.3158 +					{
 71.3159 +
 71.3160 +						if (mod->tick==paramy) 
 71.3161 +
 71.3162 +						{
 71.3163 +
 71.3164 +							cptr->volume = 0;
 71.3165 +
 71.3166 +							cptr->notectrl |= FMUSIC_VOLUME;
 71.3167 +
 71.3168 +						}
 71.3169 +
 71.3170 +						break;
 71.3171 +
 71.3172 +					}
 71.3173 +
 71.3174 +#endif
 71.3175 +
 71.3176 +#ifdef FMUSIC_XM_RETRIG_ACTIVE
 71.3177 +
 71.3178 +					case FMUSIC_XM_RETRIG : 
 71.3179 +
 71.3180 +					{
 71.3181 +
 71.3182 +						if (!paramy) 
 71.3183 +
 71.3184 +							break; // divide by 0 bugfix
 71.3185 +
 71.3186 +						if (!(mod->tick % paramy)) 
 71.3187 +
 71.3188 +						{
 71.3189 +
 71.3190 +							cptr->notectrl |= FMUSIC_TRIGGER;
 71.3191 +
 71.3192 +							cptr->notectrl |= FMUSIC_VOLUME;
 71.3193 +
 71.3194 +							cptr->notectrl |= FMUSIC_FREQ;
 71.3195 +
 71.3196 +						}
 71.3197 +
 71.3198 +						break;
 71.3199 +
 71.3200 +					}
 71.3201 +
 71.3202 +#endif
 71.3203 +
 71.3204 +#ifdef FMUSIC_XM_NOTEDELAY_ACTIVE
 71.3205 +
 71.3206 +					case FMUSIC_XM_NOTEDELAY : 
 71.3207 +
 71.3208 +					{
 71.3209 +
 71.3210 +						if (mod->tick == paramy) 
 71.3211 +
 71.3212 +						{
 71.3213 +
 71.3214 +							//= PROCESS INSTRUMENT NUMBER ==================================================================
 71.3215 +
 71.3216 +							FMUSIC_XM_Resetcptr(cptr,sptr);
 71.3217 +
 71.3218 +
 71.3219 +
 71.3220 +							cptr->freq = cptr->period;
 71.3221 +
 71.3222 +							cptr->notectrl |= FMUSIC_FREQ;
 71.3223 +
 71.3224 +#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE
 71.3225 +
 71.3226 +							if (current->volume) 
 71.3227 +
 71.3228 +								FMUSIC_XM_ProcessVolumeByte(cptr, current->volume);
 71.3229 +
 71.3230 +#endif
 71.3231 +
 71.3232 +							cptr->notectrl |= FMUSIC_TRIGGER;
 71.3233 +
 71.3234 +						}
 71.3235 +
 71.3236 +						else
 71.3237 +
 71.3238 +						{
 71.3239 +
 71.3240 +							cptr->notectrl &= ~FMUSIC_VOLUME;
 71.3241 +
 71.3242 +							cptr->notectrl &= ~FMUSIC_FREQ;
 71.3243 +
 71.3244 +							cptr->notectrl &= ~FMUSIC_PAN;
 71.3245 +
 71.3246 +							cptr->notectrl &= ~FMUSIC_TRIGGER;
 71.3247 +
 71.3248 +						}
 71.3249 +
 71.3250 +						break;
 71.3251 +
 71.3252 +					}
 71.3253 +
 71.3254 +#endif
 71.3255 +
 71.3256 +					//default:
 71.3257 +
 71.3258 +							//__assume(0);
 71.3259 +
 71.3260 +				};
 71.3261 +
 71.3262 +				break;
 71.3263 +
 71.3264 +			}
 71.3265 +
 71.3266 +#ifdef FMUSIC_XM_MULTIRETRIG_ACTIVE
 71.3267 +
 71.3268 +			case FMUSIC_XM_MULTIRETRIG : 
 71.3269 +
 71.3270 +			{
 71.3271 +
 71.3272 +				if (!cptr->retrigy) break; // divide by 0 bugfix
 71.3273 +
 71.3274 +				
 71.3275 +
 71.3276 +				if (!(mod->tick % cptr->retrigy)) 
 71.3277 +
 71.3278 +				{
 71.3279 +
 71.3280 +					if (cptr->retrigx) 
 71.3281 +
 71.3282 +					{
 71.3283 +
 71.3284 +						switch (cptr->retrigx) 
 71.3285 +
 71.3286 +						{
 71.3287 +
 71.3288 +							case 1: cptr->volume--;
 71.3289 +
 71.3290 +									break;
 71.3291 +
 71.3292 +							case 2: cptr->volume -= 2;
 71.3293 +
 71.3294 +									break;
 71.3295 +
 71.3296 +							case 3: cptr->volume -= 4;
 71.3297 +
 71.3298 +									break;
 71.3299 +
 71.3300 +							case 4: cptr->volume -= 8;
 71.3301 +
 71.3302 +									break;
 71.3303 +
 71.3304 +							case 5: cptr->volume -= 16;
 71.3305 +
 71.3306 +									break;
 71.3307 +
 71.3308 +							case 6: cptr->volume = cptr->volume * 2 / 3;
 71.3309 +
 71.3310 +									break;
 71.3311 +
 71.3312 +							case 7: cptr->volume >>= 1;
 71.3313 +
 71.3314 +									break;
 71.3315 +
 71.3316 +							case 8: // ?
 71.3317 +
 71.3318 +									break;
 71.3319 +
 71.3320 +							case 9: cptr->volume++;
 71.3321 +
 71.3322 +									break;
 71.3323 +
 71.3324 +							case 0xA: cptr->volume += 2;
 71.3325 +
 71.3326 +									break;
 71.3327 +
 71.3328 +							case 0xB: cptr->volume += 4;
 71.3329 +
 71.3330 +									break;
 71.3331 +
 71.3332 +							case 0xC: cptr->volume += 8;
 71.3333 +
 71.3334 +									break;
 71.3335 +
 71.3336 +							case 0xD: cptr->volume += 16;
 71.3337 +
 71.3338 +									break;
 71.3339 +
 71.3340 +							case 0xE: cptr->volume = cptr->volume * 3 / 2;
 71.3341 +
 71.3342 +									break;
 71.3343 +
 71.3344 +							case 0xF: cptr->volume <<= 1;
 71.3345 +
 71.3346 +									break;
 71.3347 +
 71.3348 +						//default:
 71.3349 +
 71.3350 +								//__assume(0);
 71.3351 +
 71.3352 +						};
 71.3353 +
 71.3354 +						if (cptr->volume > 64) 
 71.3355 +
 71.3356 +							cptr->volume = 64;
 71.3357 +
 71.3358 +						if (cptr->volume < 0)  
 71.3359 +
 71.3360 +							cptr->volume = 0;
 71.3361 +
 71.3362 +						cptr->notectrl |= FMUSIC_VOLUME;
 71.3363 +
 71.3364 +					}
 71.3365 +
 71.3366 +					cptr->notectrl |= FMUSIC_TRIGGER;
 71.3367 +
 71.3368 +				}
 71.3369 +
 71.3370 +				break;
 71.3371 +
 71.3372 +			}
 71.3373 +
 71.3374 +#endif
 71.3375 +
 71.3376 +#ifdef FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE
 71.3377 +
 71.3378 +			case FMUSIC_XM_GLOBALVOLSLIDE : 
 71.3379 +
 71.3380 +			{
 71.3381 +
 71.3382 +				paramx = mod->globalvsl >> 4;    // grab the effect parameter x
 71.3383 +
 71.3384 +				paramy = mod->globalvsl & 0xF;   // grab the effect parameter y
 71.3385 +
 71.3386 +				
 71.3387 +
 71.3388 +				// slide up takes precedence over down
 71.3389 +
 71.3390 +				if (paramx) 
 71.3391 +
 71.3392 +				{
 71.3393 +
 71.3394 +					mod->globalvolume += paramx;
 71.3395 +
 71.3396 +					if (mod->globalvolume > 64) 
 71.3397 +
 71.3398 +						mod->globalvolume = 64;
 71.3399 +
 71.3400 +				}
 71.3401 +
 71.3402 +				else if (paramy) 
 71.3403 +
 71.3404 +				{
 71.3405 +
 71.3406 +					mod->globalvolume -= paramy;
 71.3407 +
 71.3408 +					if (mod->globalvolume < 0)  
 71.3409 +
 71.3410 +						mod->globalvolume = 0;
 71.3411 +
 71.3412 +				}
 71.3413 +
 71.3414 +				break;
 71.3415 +
 71.3416 +			}
 71.3417 +
 71.3418 +#endif
 71.3419 +
 71.3420 +#ifdef FMUSIC_XM_PANSLIDE_ACTIVE
 71.3421 +
 71.3422 +			case FMUSIC_XM_PANSLIDE :
 71.3423 +
 71.3424 +			{
 71.3425 +
 71.3426 +				paramx = cptr->panslide >> 4;    // grab the effect parameter x
 71.3427 +
 71.3428 +				paramy = cptr->panslide & 0xF;   // grab the effect parameter y
 71.3429 +
 71.3430 +				
 71.3431 +
 71.3432 +				// slide right takes precedence over left
 71.3433 +
 71.3434 +				if (paramx) 
 71.3435 +
 71.3436 +				{
 71.3437 +
 71.3438 +					cptr->pan += paramx;
 71.3439 +
 71.3440 +					if (cptr->pan > 255) 
 71.3441 +
 71.3442 +						cptr->pan = 255;
 71.3443 +
 71.3444 +				}
 71.3445 +
 71.3446 +				else if (paramy) 
 71.3447 +
 71.3448 +				{
 71.3449 +
 71.3450 +					cptr->pan -= paramy;
 71.3451 +
 71.3452 +					if (cptr->pan < 0)  
 71.3453 +
 71.3454 +						cptr->pan = 0;
 71.3455 +
 71.3456 +				}
 71.3457 +
 71.3458 +
 71.3459 +
 71.3460 +				cptr->notectrl |= FMUSIC_PAN;
 71.3461 +
 71.3462 +				break;
 71.3463 +
 71.3464 +			}
 71.3465 +
 71.3466 +#endif
 71.3467 +
 71.3468 +#ifdef FMUSIC_XM_TREMOR_ACTIVE
 71.3469 +
 71.3470 +			case FMUSIC_XM_TREMOR :
 71.3471 +
 71.3472 +			{
 71.3473 +
 71.3474 +				FMUSIC_XM_Tremor(cptr);
 71.3475 +
 71.3476 +				break;
 71.3477 +
 71.3478 +			}
 71.3479 +
 71.3480 +#endif
 71.3481 +
 71.3482 +//			default:
 71.3483 +
 71.3484 +//				__assume(0);
 71.3485 +
 71.3486 +		};
 71.3487 +
 71.3488 +
 71.3489 +
 71.3490 +		//= INSTRUMENT VIBRATO ============================================================================
 71.3491 +
 71.3492 +#ifdef FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE
 71.3493 +
 71.3494 +		FMUSIC_XM_InstrumentVibrato(cptr, iptr);	// this gets added to previous freqdeltas
 71.3495 +
 71.3496 +#endif
 71.3497 +
 71.3498 +
 71.3499 +
 71.3500 +		FMUSIC_XM_UpdateFlags(cptr, sptr,mod);
 71.3501 +
 71.3502 +	}
 71.3503 +
 71.3504 +}
 71.3505 +
 71.3506 +
 71.3507 +
 71.3508 +
 71.3509 +
 71.3510 +
 71.3511 +
 71.3512 +/*
 71.3513 +
 71.3514 +[API]
 71.3515 +
 71.3516 +[
 71.3517 +
 71.3518 +	[DESCRIPTION]
 71.3519 +
 71.3520 +
 71.3521 +
 71.3522 +	[PARAMETERS]
 71.3523 +
 71.3524 + 
 71.3525 +
 71.3526 +	[RETURN_VALUE]
 71.3527 +
 71.3528 +
 71.3529 +
 71.3530 +	[REMARKS]
 71.3531 +
 71.3532 +
 71.3533 +
 71.3534 +	[SEE_ALSO]
 71.3535 +
 71.3536 +]
 71.3537 +
 71.3538 +*/
 71.3539 +
 71.3540 +void FMUSIC_UpdateXM(FMUSIC_MODULE *mod)
 71.3541 +
 71.3542 +{
 71.3543 +
 71.3544 +	if (mod->tick == 0)									// new note
 71.3545 +
 71.3546 +	{
 71.3547 +
 71.3548 +		// process any rows commands to set the next order/row
 71.3549 +
 71.3550 +		if (mod->nextorder >= 0) 
 71.3551 +
 71.3552 +			mod->order = mod->nextorder;
 71.3553 +
 71.3554 +		if (mod->nextrow >= 0)   
 71.3555 +
 71.3556 +			mod->row = mod->nextrow;
 71.3557 +
 71.3558 +
 71.3559 +
 71.3560 +		FMUSIC_UpdateXMNote(mod);					// Update and play the note
 71.3561 +
 71.3562 +
 71.3563 +
 71.3564 +		// if there were no row commands
 71.3565 +
 71.3566 +		if (mod->nextrow == -1)
 71.3567 +
 71.3568 +		{
 71.3569 +
 71.3570 +			mod->nextrow = mod->row+1;
 71.3571 +
 71.3572 +			if (mod->nextrow >= mod->pattern[mod->orderlist[mod->order]].rows)	// if end of pattern 
 71.3573 +
 71.3574 +			{ 
 71.3575 +
 71.3576 +				mod->nextorder = mod->order+1;			// so increment the order
 71.3577 +
 71.3578 +				if (mod->nextorder >= (int)mod->numorders) 
 71.3579 +
 71.3580 +					mod->nextorder = (int)mod->restart;
 71.3581 +
 71.3582 +				mod->nextrow = 0;						// start at top of pattn
 71.3583 +
 71.3584 +			}
 71.3585 +
 71.3586 +		}
 71.3587 +
 71.3588 +	}
 71.3589 +
 71.3590 +	else 
 71.3591 +
 71.3592 +		FMUSIC_UpdateXMEffects(mod);					// Else update the inbetween row effects
 71.3593 +
 71.3594 +
 71.3595 +
 71.3596 +
 71.3597 +
 71.3598 +	mod->tick++;
 71.3599 +
 71.3600 +	if (mod->tick >= mod->speed + mod->patterndelay)
 71.3601 +
 71.3602 +	{
 71.3603 +
 71.3604 +		mod->patterndelay = 0;
 71.3605 +
 71.3606 +		mod->tick = 0;
 71.3607 +
 71.3608 +	}
 71.3609 +
 71.3610 +}
 71.3611 +
 71.3612 +
 71.3613 +
 71.3614 +
 71.3615 +
 71.3616 +/*
 71.3617 +
 71.3618 +[API]
 71.3619 +
 71.3620 +[
 71.3621 +
 71.3622 +	[DESCRIPTION]
 71.3623 +
 71.3624 +
 71.3625 +
 71.3626 +	[PARAMETERS]
 71.3627 +
 71.3628 + 
 71.3629 +
 71.3630 +	[RETURN_VALUE]
 71.3631 +
 71.3632 +
 71.3633 +
 71.3634 +	[REMARKS]
 71.3635 +
 71.3636 +
 71.3637 +
 71.3638 +	[SEE_ALSO]
 71.3639 +
 71.3640 +]
 71.3641 +
 71.3642 +*/
 71.3643 +
 71.3644 +signed char FMUSIC_LoadXM(FMUSIC_MODULE *mod, FSOUND_FILE_HANDLE *fp)
 71.3645 +
 71.3646 +{
 71.3647 +
 71.3648 +	unsigned short	filenumpatterns=0;
 71.3649 +
 71.3650 +	int				count;
 71.3651 +
 71.3652 +	unsigned int	mainHDRsize;
 71.3653 +
 71.3654 +	signed char		str[256];
 71.3655 +
 71.3656 +	char			*ComparisonStr = "Extended Module: "; 
 71.3657 +
 71.3658 +
 71.3659 +
 71.3660 +	//= VERIFY ==================================================================================
 71.3661 +
 71.3662 +
 71.3663 +
 71.3664 +	FSOUND_File_Seek(fp, 0, SEEK_SET);
 71.3665 +
 71.3666 +
 71.3667 +
 71.3668 +	FSOUND_File_Read(str, 17, fp);
 71.3669 +
 71.3670 +
 71.3671 +
 71.3672 +	for (count=0; count < 17; count++)
 71.3673 +
 71.3674 +		if (str[count] != ComparisonStr[count])
 71.3675 +
 71.3676 +			return FALSE;
 71.3677 +
 71.3678 +
 71.3679 +
 71.3680 +	// set a few default values for this format
 71.3681 +
 71.3682 +	mod->Update			= &FMUSIC_UpdateXM;
 71.3683 +
 71.3684 +	mod->defaultglobalvolume = 64;
 71.3685 +
 71.3686 +
 71.3687 +
 71.3688 +//	FSOUND_File_Seek(fp, 21, SEEK_CUR);      		// read in module name.
 71.3689 +
 71.3690 +
 71.3691 +
 71.3692 +	// Skip tracker name and version number
 71.3693 +
 71.3694 +	FSOUND_File_Seek(fp, 60, SEEK_SET);
 71.3695 +
 71.3696 +	FSOUND_File_Read(&mainHDRsize, 4, fp);
 71.3697 +
 71.3698 +	
 71.3699 +
 71.3700 +#if 1	// WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK.
 71.3701 +
 71.3702 +	FSOUND_File_Read(&mod->numorders, 6, fp);
 71.3703 +
 71.3704 +#else
 71.3705 +
 71.3706 +	FSOUND_File_Read(&mod->numorders, 2, fp);
 71.3707 +
 71.3708 +	FSOUND_File_Read(&mod->restart, 2, fp);
 71.3709 +
 71.3710 +	FSOUND_File_Read(&mod->numchannels, 2, fp);
 71.3711 +
 71.3712 +#endif
 71.3713 +
 71.3714 +
 71.3715 +
 71.3716 +	FSOUND_File_Read(&filenumpatterns, 2, fp);
 71.3717 +
 71.3718 +
 71.3719 +
 71.3720 +#if 1	// WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK.
 71.3721 +
 71.3722 +	FSOUND_File_Read(&mod->numinsts, 256+8, fp);
 71.3723 +
 71.3724 +#else
 71.3725 +
 71.3726 +	FSOUND_File_Read(&mod->numinsts, 2, fp);
 71.3727 +
 71.3728 +	FSOUND_File_Read(&mod->flags, 2, fp);
 71.3729 +
 71.3730 +	FSOUND_File_Read(&mod->defaultspeed, 2, fp);
 71.3731 +
 71.3732 +	FSOUND_File_Read(&mod->defaultbpm, 2, fp);
 71.3733 +
 71.3734 +	FSOUND_File_Read(&mod->orderlist, 256, fp);
 71.3735 +
 71.3736 +#endif
 71.3737 +
 71.3738 +
 71.3739 +
 71.3740 +	// seek to patterndata
 71.3741 +
 71.3742 +	FSOUND_File_Seek(fp, 60L+mainHDRsize, SEEK_SET);
 71.3743 +
 71.3744 +
 71.3745 +
 71.3746 +	mod->numpatterns = 0;
 71.3747 +
 71.3748 +	for (count=0; count<(int)mod->numorders; count++)
 71.3749 +
 71.3750 +	{
 71.3751 +
 71.3752 +		if (mod->orderlist[count] >= mod->numpatterns) 
 71.3753 +
 71.3754 +			mod->numpatterns = mod->orderlist[count]+1;
 71.3755 +
 71.3756 +	}
 71.3757 +
 71.3758 +
 71.3759 +
 71.3760 +	// alloc pattern array (whatever is bigger.. filenumpatterns or mod->numpatterns)
 71.3761 +
 71.3762 +	mod->numpatternsmem = (mod->numpatterns > filenumpatterns ? mod->numpatterns : filenumpatterns);
 71.3763 +
 71.3764 +	mod->pattern = (FMUSIC_PATTERN *)FSOUND_Memory_Calloc(mod->numpatternsmem * sizeof(FMUSIC_PATTERN));	//FIXME:MEMLEAK
 71.3765 +
 71.3766 +
 71.3767 +
 71.3768 +	// unpack and read patterns
 71.3769 +
 71.3770 +	for (count=0; count < filenumpatterns; count++) 
 71.3771 +
 71.3772 +	{
 71.3773 +
 71.3774 +		FMUSIC_PATTERN *pptr;
 71.3775 +
 71.3776 +		unsigned short	patternsize, rows;
 71.3777 +
 71.3778 +		unsigned int	patternHDRsize;
 71.3779 +
 71.3780 +		unsigned char tempchar = 0;
 71.3781 +
 71.3782 +
 71.3783 +
 71.3784 +		pptr = &mod->pattern[count];
 71.3785 +
 71.3786 +
 71.3787 +
 71.3788 +		FSOUND_File_Read(&patternHDRsize, 4, fp);
 71.3789 +
 71.3790 +		FSOUND_File_Read(&tempchar, 1, fp);				
 71.3791 +
 71.3792 +		FSOUND_File_Read(&rows, 2, fp);				// length of pattern
 71.3793 +
 71.3794 +		pptr->rows = rows;
 71.3795 +
 71.3796 +		FSOUND_File_Read(&patternsize, 2, fp);		// packed pattern size
 71.3797 +
 71.3798 +
 71.3799 +
 71.3800 +		// allocate memory for pattern buffer
 71.3801 +
 71.3802 +		pptr->data = (FMUSIC_NOTE *)FSOUND_Memory_Calloc(mod->numchannels * pptr->rows * sizeof(FMUSIC_NOTE));	//FIXME:MEMLEAK
 71.3803 +
 71.3804 +
 71.3805 +
 71.3806 +		if (patternsize > 0) 
 71.3807 +
 71.3808 +		{
 71.3809 +
 71.3810 +			int count2;
 71.3811 +
 71.3812 +			FMUSIC_NOTE *nptr;
 71.3813 +
 71.3814 +
 71.3815 +
 71.3816 +			nptr = pptr->data;
 71.3817 +
 71.3818 +
 71.3819 +
 71.3820 +			for (count2=0; count2< (pptr->rows*mod->numchannels); count2++) 
 71.3821 +
 71.3822 +			{
 71.3823 +
 71.3824 +				unsigned char dat;
 71.3825 +
 71.3826 +
 71.3827 +
 71.3828 +				FSOUND_File_Read(&dat, 1, fp);
 71.3829 +
 71.3830 +				if (dat & 0x80) 
 71.3831 +
 71.3832 +				{
 71.3833 +
 71.3834 +					if (dat & 1)  FSOUND_File_Read(&nptr->note, 1, fp);
 71.3835 +
 71.3836 +					if (dat & 2)  FSOUND_File_Read(&nptr->number, 1, fp);
 71.3837 +
 71.3838 +					if (dat & 4)  FSOUND_File_Read(&nptr->volume, 1, fp);
 71.3839 +
 71.3840 +					if (dat & 8)  FSOUND_File_Read(&nptr->effect, 1, fp);
 71.3841 +
 71.3842 +					if (dat & 16) FSOUND_File_Read(&nptr->eparam, 1, fp);
 71.3843 +
 71.3844 +				}
 71.3845 +
 71.3846 +				else 
 71.3847 +
 71.3848 +				{
 71.3849 +
 71.3850 +					if (dat) 
 71.3851 +
 71.3852 +						nptr->note = dat;
 71.3853 +
 71.3854 +			
 71.3855 +
 71.3856 +					FSOUND_File_Read(&nptr->number, 4, fp);
 71.3857 +
 71.3858 +			
 71.3859 +
 71.3860 +				}
 71.3861 +
 71.3862 +				if (nptr->note == 97) 
 71.3863 +
 71.3864 +					nptr->note = FMUSIC_KEYOFF;
 71.3865 +
 71.3866 +
 71.3867 +
 71.3868 +				if (nptr->number > 0x80)
 71.3869 +
 71.3870 +					nptr->number = 0;
 71.3871 +
 71.3872 +
 71.3873 +
 71.3874 +				nptr++;
 71.3875 +
 71.3876 +			}
 71.3877 +
 71.3878 +		}
 71.3879 +
 71.3880 +	}
 71.3881 +
 71.3882 +
 71.3883 +
 71.3884 +	// allocate and clean out any extra patterns 
 71.3885 +
 71.3886 +	if (mod->numpatterns > filenumpatterns)
 71.3887 +
 71.3888 +	{
 71.3889 +
 71.3890 +		for (count=filenumpatterns; count < mod->numpatterns; count++) 
 71.3891 +
 71.3892 +		{			
 71.3893 +
 71.3894 +			FMUSIC_PATTERN *pptr;
 71.3895 +
 71.3896 +
 71.3897 +
 71.3898 +			pptr = &mod->pattern[count];
 71.3899 +
 71.3900 +			pptr->rows = 64;
 71.3901 +
 71.3902 +
 71.3903 +
 71.3904 +			// allocate memory for pattern buffer
 71.3905 +
 71.3906 +			pptr->data = (FMUSIC_NOTE *)FSOUND_Memory_Calloc(mod->numchannels * pptr->rows * sizeof(FMUSIC_NOTE));
 71.3907 +
 71.3908 +		}
 71.3909 +
 71.3910 +	}
 71.3911 +
 71.3912 +
 71.3913 +
 71.3914 +
 71.3915 +
 71.3916 +	// alloc instrument array
 71.3917 +
 71.3918 +	mod->instrument = (FMUSIC_INSTRUMENT *)FSOUND_Memory_Calloc((int)(mod->numinsts) * sizeof(FMUSIC_INSTRUMENT));
 71.3919 +
 71.3920 +
 71.3921 +
 71.3922 +	// load instrument information
 71.3923 +
 71.3924 +	for (count=0; count<(int)mod->numinsts; count++) 
 71.3925 +
 71.3926 +	{
 71.3927 +
 71.3928 +		unsigned int		count2;
 71.3929 +
 71.3930 +		FMUSIC_INSTRUMENT	*iptr;
 71.3931 +
 71.3932 +		unsigned int		instHDRsize;
 71.3933 +
 71.3934 +		unsigned short		numsamples;
 71.3935 +
 71.3936 +		int				firstsampleoffset;
 71.3937 +
 71.3938 +
 71.3939 +
 71.3940 +		// point a pointer to that particular instrument
 71.3941 +
 71.3942 +		iptr = &mod->instrument[count];
 71.3943 +
 71.3944 +
 71.3945 +
 71.3946 +		firstsampleoffset = FSOUND_File_Tell(fp);
 71.3947 +
 71.3948 +		FSOUND_File_Read(&instHDRsize, 4, fp);				// instrument size
 71.3949 +
 71.3950 +		firstsampleoffset += instHDRsize;
 71.3951 +
 71.3952 +
 71.3953 +
 71.3954 +		FSOUND_File_Seek(fp, 23, SEEK_CUR); 				// instrument name
 71.3955 +
 71.3956 +		FSOUND_File_Read(&numsamples, 2, fp);				// number of samples in this instrument
 71.3957 +
 71.3958 +
 71.3959 +
 71.3960 +		if (numsamples >16)
 71.3961 +
 71.3962 +			return FALSE;
 71.3963 +
 71.3964 +
 71.3965 +
 71.3966 +		iptr->numsamples = numsamples;
 71.3967 +
 71.3968 +
 71.3969 +
 71.3970 +		if (numsamples > 0) 
 71.3971 +
 71.3972 +		{
 71.3973 +
 71.3974 +			unsigned int sampHDRsize;
 71.3975 +
 71.3976 +			unsigned char tempchar = 0;
 71.3977 +
 71.3978 +
 71.3979 +
 71.3980 +			FSOUND_File_Read(&sampHDRsize, 4, fp);			// sampleheader size
 71.3981 +
 71.3982 +			FSOUND_File_Read(iptr->keymap, 96, fp);			// sample numbers
 71.3983 +
 71.3984 +			FSOUND_File_Read(iptr->VOLPoints, 48, fp);		// Volume Envelope (24 words)
 71.3985 +
 71.3986 +			FSOUND_File_Read(iptr->PANPoints, 48, fp);		// Panning Envelope (24 words)
 71.3987 +
 71.3988 +
 71.3989 +
 71.3990 +#if 1	// WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK.
 71.3991 +
 71.3992 +			FSOUND_File_Read(&iptr->VOLnumpoints, 16, fp);
 71.3993 +
 71.3994 +#else
 71.3995 +
 71.3996 +			iptr->VOLnumpoints	= FSOUND_File_GetChar(fp);
 71.3997 +
 71.3998 +			iptr->PANnumpoints	= FSOUND_File_GetChar(fp);
 71.3999 +
 71.4000 +			iptr->VOLsustain	= FSOUND_File_GetChar(fp);
 71.4001 +
 71.4002 +			iptr->VOLLoopStart	= FSOUND_File_GetChar(fp);
 71.4003 +
 71.4004 +			iptr->VOLLoopEnd	= FSOUND_File_GetChar(fp);
 71.4005 +
 71.4006 +			iptr->PANsustain	= FSOUND_File_GetChar(fp);
 71.4007 +
 71.4008 +			iptr->PANLoopStart	= FSOUND_File_GetChar(fp);
 71.4009 +
 71.4010 +			iptr->PANLoopEnd	= FSOUND_File_GetChar(fp);
 71.4011 +
 71.4012 +			iptr->VOLtype		= FSOUND_File_GetChar(fp);
 71.4013 +
 71.4014 +			iptr->PANtype		= FSOUND_File_GetChar(fp);
 71.4015 +
 71.4016 +			iptr->VIBtype		= FSOUND_File_GetChar(fp);
 71.4017 +
 71.4018 +			iptr->VIBsweep		= FSOUND_File_GetChar(fp);
 71.4019 +
 71.4020 +			iptr->VIBdepth		= FSOUND_File_GetChar(fp);
 71.4021 +
 71.4022 +			iptr->VIBrate		= FSOUND_File_GetChar(fp);
 71.4023 +
 71.4024 +			FSOUND_File_Read(&iptr->VOLfade, 2, fp);
 71.4025 +
 71.4026 +#endif
 71.4027 +
 71.4028 +
 71.4029 +
 71.4030 +			iptr->VOLfade *= 2;		// i DONT KNOW why i needed this.. it just made it work
 71.4031 +
 71.4032 +
 71.4033 +
 71.4034 +			if (iptr->VOLnumpoints < 2) 
 71.4035 +
 71.4036 +				iptr->VOLtype = FMUSIC_ENVELOPE_OFF;
 71.4037 +
 71.4038 +			if (iptr->PANnumpoints < 2) 
 71.4039 +
 71.4040 +				iptr->PANtype = FMUSIC_ENVELOPE_OFF;
 71.4041 +
 71.4042 +
 71.4043 +
 71.4044 +			// seek to first sample
 71.4045 +
 71.4046 +			FSOUND_File_Seek(fp, firstsampleoffset, SEEK_SET);
 71.4047 +
 71.4048 +			for (count2=0; count2<numsamples; count2++) 
 71.4049 +
 71.4050 +			{
 71.4051 +
 71.4052 +				FSOUND_SAMPLE	*sptr;
 71.4053 +
 71.4054 +				unsigned char	dat;
 71.4055 +
 71.4056 +
 71.4057 +
 71.4058 +				iptr->sample[count2] = (FSOUND_SAMPLE *)FSOUND_Memory_Calloc(sizeof(FSOUND_SAMPLE));
 71.4059 +
 71.4060 +				sptr = iptr->sample[count2];
 71.4061 +
 71.4062 +
 71.4063 +
 71.4064 +#if 1	// WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK.
 71.4065 +
 71.4066 +				FSOUND_File_Read(&sptr->length, 14, fp);
 71.4067 +
 71.4068 +#else
 71.4069 +
 71.4070 +				FSOUND_File_Read(&sptr->length, 4, fp);
 71.4071 +
 71.4072 +				FSOUND_File_Read(&sptr->loopstart, 4, fp);
 71.4073 +
 71.4074 +				FSOUND_File_Read(&sptr->looplen, 4, fp);
 71.4075 +
 71.4076 +				sptr->defvol = FSOUND_File_GetChar(fp);
 71.4077 +
 71.4078 +				sptr->finetune = FSOUND_File_GetChar(fp);			// finetune -128 to +127
 71.4079 +
 71.4080 +#endif
 71.4081 +
 71.4082 +
 71.4083 +
 71.4084 +				// type of sample
 71.4085 +
 71.4086 +				sptr->loopmode = FSOUND_LOOP_OFF;
 71.4087 +
 71.4088 +				sptr->bits = 8;
 71.4089 +
 71.4090 +
 71.4091 +
 71.4092 +				FSOUND_File_Read(&dat, 1, fp);
 71.4093 +
 71.4094 +				if (dat & 1) 
 71.4095 +
 71.4096 +				{
 71.4097 +
 71.4098 +					sptr->loopmode &= ~(FSOUND_LOOP_OFF);
 71.4099 +
 71.4100 +					sptr->loopmode |= FSOUND_LOOP_NORMAL;
 71.4101 +
 71.4102 +				}
 71.4103 +
 71.4104 +				if (dat & 2) 
 71.4105 +
 71.4106 +				{
 71.4107 +
 71.4108 +					sptr->loopmode &= ~(FSOUND_LOOP_OFF | FSOUND_LOOP_NORMAL);
 71.4109 +
 71.4110 +					sptr->loopmode |= FSOUND_LOOP_BIDI;		// bidirectional
 71.4111 +
 71.4112 +				}
 71.4113 +
 71.4114 +				if (dat & 16)	sptr->bits = 16;		
 71.4115 +
 71.4116 +
 71.4117 +
 71.4118 +
 71.4119 +
 71.4120 +				if (sptr->loopmode & FSOUND_LOOP_OFF) 
 71.4121 +
 71.4122 +				{
 71.4123 +
 71.4124 +					sptr->loopstart = 0;
 71.4125 +
 71.4126 +					sptr->looplen = sptr->length;
 71.4127 +
 71.4128 +				}
 71.4129 +
 71.4130 +
 71.4131 +
 71.4132 +				if (sptr->bits == 16)
 71.4133 +
 71.4134 +				{
 71.4135 +
 71.4136 +					sptr->length >>= 1;
 71.4137 +
 71.4138 +					sptr->loopstart >>= 1;
 71.4139 +
 71.4140 +					sptr->looplen >>= 1;
 71.4141 +
 71.4142 +				}
 71.4143 +
 71.4144 +
 71.4145 +
 71.4146 +				if (!sptr->looplen) 
 71.4147 +
 71.4148 +				{
 71.4149 +
 71.4150 +					sptr->loopstart = 0;
 71.4151 +
 71.4152 +					sptr->looplen = sptr->length;
 71.4153 +
 71.4154 +					sptr->loopmode = FSOUND_LOOP_OFF;
 71.4155 +
 71.4156 +				}
 71.4157 +
 71.4158 +
 71.4159 +
 71.4160 +				FSOUND_File_Read(&tempchar, 1, fp);
 71.4161 +
 71.4162 +				sptr->defpan = (int)tempchar;
 71.4163 +
 71.4164 +				FSOUND_File_Read(&tempchar, 1, fp);
 71.4165 +
 71.4166 +				sptr->relative = (int)tempchar;
 71.4167 +
 71.4168 +
 71.4169 +
 71.4170 +				FSOUND_File_Seek(fp, 23, SEEK_CUR);
 71.4171 +
 71.4172 +
 71.4173 +
 71.4174 +				//= ALLOCATE MEMORY FOR THE SAMPLE BUFFER ==============================================
 71.4175 +
 71.4176 +
 71.4177 +
 71.4178 +				{
 71.4179 +
 71.4180 +					int lenbytes = sptr->length;
 71.4181 +
 71.4182 +//					if (sptr->bits == 16) 
 71.4183 +
 71.4184 +						lenbytes <<= 1;
 71.4185 +
 71.4186 +
 71.4187 +
 71.4188 +					if (sptr->buff) 
 71.4189 +
 71.4190 +						FSOUND_Memory_Free(sptr->buff);
 71.4191 +
 71.4192 +
 71.4193 +
 71.4194 +					if (lenbytes)
 71.4195 +
 71.4196 +						sptr->buff = (unsigned char *)FSOUND_Memory_Calloc(lenbytes+16);
 71.4197 +
 71.4198 +					else 
 71.4199 +
 71.4200 +						sptr->buff = NULL;
 71.4201 +
 71.4202 +				}
 71.4203 +
 71.4204 +
 71.4205 +
 71.4206 +			}
 71.4207 +
 71.4208 +			
 71.4209 +
 71.4210 +			// clear out the rest of the samples
 71.4211 +
 71.4212 +			for (;count2<16; count2++) 
 71.4213 +
 71.4214 +				iptr->sample[count2] = &FMUSIC_DummySample;
 71.4215 +
 71.4216 +
 71.4217 +
 71.4218 +
 71.4219 +
 71.4220 +
 71.4221 +
 71.4222 +			// Load sample data
 71.4223 +
 71.4224 +			for (count2=0; count2<numsamples; count2++) 
 71.4225 +
 71.4226 +			{
 71.4227 +
 71.4228 +				FSOUND_SAMPLE	*sptr = iptr->sample[count2];
 71.4229 +
 71.4230 +				unsigned int	samplelenbytes = sptr->length * sptr->bits / 8;
 71.4231 +
 71.4232 +				int				count3;
 71.4233 +
 71.4234 +				char			*buff = NULL;
 71.4235 +
 71.4236 +
 71.4237 +
 71.4238 +				if (sptr->length)
 71.4239 +
 71.4240 +				{
 71.4241 +
 71.4242 +					unsigned int mode;
 71.4243 +
 71.4244 +
 71.4245 +
 71.4246 +					buff = FSOUND_Memory_Calloc((sptr->length * 2)+16);
 71.4247 +
 71.4248 +
 71.4249 +
 71.4250 +					if (mod->samplecallback)
 71.4251 +
 71.4252 +					{
 71.4253 +
 71.4254 +						mod->samplecallback(buff, samplelenbytes, sptr->bits, count, count2);
 71.4255 +
 71.4256 +						FSOUND_File_Seek(fp, samplelenbytes, SEEK_CUR);
 71.4257 +
 71.4258 +					}
 71.4259 +
 71.4260 +					else
 71.4261 +
 71.4262 +						FSOUND_File_Read(buff, samplelenbytes, fp);
 71.4263 +
 71.4264 +
 71.4265 +
 71.4266 +					if (sptr->bits == 8)
 71.4267 +
 71.4268 +					{
 71.4269 +
 71.4270 +						signed short *wptr;
 71.4271 +
 71.4272 +
 71.4273 +
 71.4274 +						// promote to 16bits
 71.4275 +
 71.4276 +						wptr = (signed short *)sptr->buff;
 71.4277 +
 71.4278 +
 71.4279 +
 71.4280 +						for (count3=0; count3 < (int)sptr->length; count3++)
 71.4281 +
 71.4282 +							*wptr++ = (signed short)(buff[count3]) << 8;
 71.4283 +
 71.4284 +
 71.4285 +
 71.4286 +						sptr->bits = 16;
 71.4287 +
 71.4288 +
 71.4289 +
 71.4290 +						FSOUND_Memory_Free(buff);
 71.4291 +
 71.4292 +					}
 71.4293 +
 71.4294 +					else
 71.4295 +
 71.4296 +					{
 71.4297 +
 71.4298 +						FSOUND_Memory_Free(sptr->buff);
 71.4299 +
 71.4300 +						sptr->buff = buff;
 71.4301 +
 71.4302 +					}
 71.4303 +
 71.4304 +
 71.4305 +
 71.4306 +					mode = FSOUND_DELTA | FSOUND_SIGNED;
 71.4307 +
 71.4308 +					mode |= FSOUND_16BITS;
 71.4309 +
 71.4310 +
 71.4311 +
 71.4312 +
 71.4313 +
 71.4314 +					if (!mod->samplecallback)
 71.4315 +
 71.4316 +					{
 71.4317 +
 71.4318 +						void			*destdata = sptr->buff;
 71.4319 +
 71.4320 +						unsigned int	count;
 71.4321 +
 71.4322 +						unsigned char	*bptr = (unsigned char *)destdata;
 71.4323 +
 71.4324 +						unsigned short	*wptr = (unsigned short *)destdata;
 71.4325 +
 71.4326 +						int				oldval, newval;
 71.4327 +
 71.4328 +
 71.4329 +
 71.4330 +						// DO DELTA CONVERSION
 71.4331 +
 71.4332 +						oldval = 0;
 71.4333 +
 71.4334 +						for (count=0; count < sptr->length; count++) 
 71.4335 +
 71.4336 +						{
 71.4337 +
 71.4338 +							newval = *wptr + oldval;
 71.4339 +
 71.4340 +							*wptr = (short)newval;
 71.4341 +
 71.4342 +							oldval = newval;
 71.4343 +
 71.4344 +							wptr++;
 71.4345 +
 71.4346 +						}
 71.4347 +
 71.4348 +					}
 71.4349 +
 71.4350 +
 71.4351 +
 71.4352 +					{
 71.4353 +
 71.4354 +						signed short *buff = (signed short *)sptr->buff;
 71.4355 +
 71.4356 +					
 71.4357 +
 71.4358 +						// BUGFIX 1.3 - removed click for end of non looping sample (also size optimized a bit)
 71.4359 +
 71.4360 +						if (sptr->loopmode == FSOUND_LOOP_BIDI)
 71.4361 +
 71.4362 +						{
 71.4363 +
 71.4364 +							buff[sptr->loopstart+sptr->looplen] = buff[sptr->loopstart+sptr->looplen-1];// fix it
 71.4365 +
 71.4366 +						}
 71.4367 +
 71.4368 +						else if (sptr->loopmode == FSOUND_LOOP_NORMAL)
 71.4369 +
 71.4370 +						{
 71.4371 +
 71.4372 +							buff[sptr->loopstart+sptr->looplen] = buff[sptr->loopstart];// fix it
 71.4373 +
 71.4374 +						}
 71.4375 +
 71.4376 +					}
 71.4377 +
 71.4378 +				}
 71.4379 +
 71.4380 +			}
 71.4381 +
 71.4382 +		}
 71.4383 +
 71.4384 +		else 
 71.4385 +
 71.4386 +		{
 71.4387 +
 71.4388 +			// clear out the rest of the samples
 71.4389 +
 71.4390 +			for (count2=0; count2<16; count2++) 
 71.4391 +
 71.4392 +				iptr->sample[count2] = &FMUSIC_DummySample;
 71.4393 +
 71.4394 +
 71.4395 +
 71.4396 +			FSOUND_File_Seek(fp, firstsampleoffset, SEEK_SET);
 71.4397 +
 71.4398 +		}
 71.4399 +
 71.4400 +	}
 71.4401 +
 71.4402 +
 71.4403 +
 71.4404 +
 71.4405 +
 71.4406 +	return TRUE;
 71.4407 +
 71.4408 +}
 71.4409 +
    72.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.2 +++ b/minifmod/music_formatxm.h	Tue Nov 27 15:23:52 2007 +0100
    72.3 @@ -0,0 +1,119 @@
    72.4 +/******************************************************************************/
    72.5 +/* FORMATXM.H                                                                 */
    72.6 +/* ----------------                                                           */
    72.7 +/* MiniFMOD public source code release.                                       */
    72.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    72.9 +/* or answer questions about the source provided.                             */
   72.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   72.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   72.12 +/* Firelight Multimedia is a registered business name.                        */
   72.13 +/* This source must not be redistributed without this notice.                 */
   72.14 +/******************************************************************************/
   72.15 +
   72.16 +#ifndef _FMUSIC_FORMATXM
   72.17 +#define _FMUSIC_FORMATXM
   72.18 +
   72.19 +#include "music.h"
   72.20 +#include "system_file.h"
   72.21 +
   72.22 +
   72.23 +enum FMUSIC_XMCOMMANDS
   72.24 +{
   72.25 +	FMUSIC_XM_ARPEGGIO,
   72.26 +	FMUSIC_XM_PORTAUP,
   72.27 +	FMUSIC_XM_PORTADOWN,
   72.28 +	FMUSIC_XM_PORTATO,
   72.29 +	FMUSIC_XM_VIBRATO,
   72.30 +	FMUSIC_XM_PORTATOVOLSLIDE,
   72.31 +	FMUSIC_XM_VIBRATOVOLSLIDE,
   72.32 +	FMUSIC_XM_TREMOLO,
   72.33 +	FMUSIC_XM_SETPANPOSITION,
   72.34 +	FMUSIC_XM_SETSAMPLEOFFSET,
   72.35 +	FMUSIC_XM_VOLUMESLIDE,
   72.36 +	FMUSIC_XM_PATTERNJUMP,
   72.37 +	FMUSIC_XM_SETVOLUME,
   72.38 +	FMUSIC_XM_PATTERNBREAK,
   72.39 +	FMUSIC_XM_SPECIAL,
   72.40 +	FMUSIC_XM_SETSPEED,
   72.41 +	FMUSIC_XM_SETGLOBALVOLUME,
   72.42 +	FMUSIC_XM_GLOBALVOLSLIDE,
   72.43 +	FMUSIC_XM_I,
   72.44 +	FMUSIC_XM_J,
   72.45 +	FMUSIC_XM_KEYOFF,
   72.46 +	FMUSIC_XM_SETENVELOPEPOS,
   72.47 +	FMUSIC_XM_M,
   72.48 +	FMUSIC_XM_N,
   72.49 +	FMUSIC_XM_O,
   72.50 +	FMUSIC_XM_PANSLIDE,
   72.51 +	FMUSIC_XM_Q,
   72.52 +	FMUSIC_XM_MULTIRETRIG,
   72.53 +	FMUSIC_XM_S,
   72.54 +	FMUSIC_XM_TREMOR,
   72.55 +	FMUSIC_XM_U,
   72.56 +	FMUSIC_XM_V,
   72.57 +	FMUSIC_XM_W,
   72.58 +	FMUSIC_XM_EXTRAFINEPORTA,
   72.59 +	FMUSIC_XM_Y,
   72.60 +	FMUSIC_XM_Z,
   72.61 +};
   72.62 +
   72.63 +
   72.64 +enum FMUSIC_XMCOMMANDSSPECIAL
   72.65 +{
   72.66 +	FMUSIC_XM_SETFILTER,
   72.67 +	FMUSIC_XM_FINEPORTAUP,
   72.68 +	FMUSIC_XM_FINEPORTADOWN,
   72.69 +	FMUSIC_XM_SETGLISSANDO,
   72.70 +	FMUSIC_XM_SETVIBRATOWAVE,
   72.71 +	FMUSIC_XM_SETFINETUNE,
   72.72 +	FMUSIC_XM_PATTERNLOOP,
   72.73 +	FMUSIC_XM_SETTREMOLOWAVE,
   72.74 +	FMUSIC_XM_SETPANPOSITION16,
   72.75 +	FMUSIC_XM_RETRIG,
   72.76 +	FMUSIC_XM_FINEVOLUMESLIDEUP,
   72.77 +	FMUSIC_XM_FINEVOLUMESLIDEDOWN,
   72.78 +	FMUSIC_XM_NOTECUT,
   72.79 +	FMUSIC_XM_NOTEDELAY,
   72.80 +	FMUSIC_XM_PATTERNDELAY,
   72.81 +	FMUSIC_XM_FUNKREPEAT,
   72.82 +};
   72.83 +
   72.84 +#define FMUSIC_XMFLAGS_LINEARFREQUENCY		1
   72.85 +
   72.86 +typedef struct
   72.87 +{
   72.88 +    unsigned long	instSize;               // instrument size
   72.89 +    signed char		instName[22];           // instrument filename
   72.90 +    unsigned char	instType;               // instrument type (now 0)
   72.91 +    unsigned short  numSamples;             // number of samples in instrument
   72.92 +} FMUSIC_XM_INSTHEADER;
   72.93 +
   72.94 +typedef struct
   72.95 +{
   72.96 +    unsigned long	headerSize;             // sample header size
   72.97 +    unsigned char	noteSmpNums[96];        // sample numbers for notes
   72.98 +    unsigned short  volEnvelope[2*12];      // volume envelope points
   72.99 +    unsigned short  panEnvelope[2*12];      // panning envelope points
  72.100 +    unsigned char   numVolPoints;           // number of volume envelope points
  72.101 +    unsigned char   numPanPoints;           // number of panning env. points
  72.102 +    unsigned char   volSustain;             // volume sustain point
  72.103 +    unsigned char   volLoopStart;           // volume loop start point
  72.104 +    unsigned char   volLoopEnd;             // volume loop end point
  72.105 +    unsigned char   panSustain;             // panning sustain point
  72.106 +    unsigned char   panLoopStart;           // panning loop start point
  72.107 +    unsigned char   panLoopEnd;             // panning loop end point
  72.108 +    unsigned char   volEnvFlags;            // volume envelope flags
  72.109 +    unsigned char   panEnvFlags;            // panning envelope flags
  72.110 +
  72.111 +    unsigned char   vibType;                // vibrato type
  72.112 +    unsigned char   vibSweep;               // vibrato sweep
  72.113 +    unsigned char   vibDepth;               // vibrato depth
  72.114 +    unsigned char   vibRate;                // vibrato rate
  72.115 +    unsigned short  volFadeout;             // volume fadeout
  72.116 +    unsigned short  reserved;
  72.117 +} FMUSIC_XM_INSTSAMPLEHEADER;
  72.118 +
  72.119 +
  72.120 +signed char FMUSIC_LoadXM(FMUSIC_MODULE *mod, FSOUND_FILE_HANDLE *fp);
  72.121 +
  72.122 +#endif
  72.123 \ No newline at end of file
    73.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.2 +++ b/minifmod/system_file.c	Tue Nov 27 15:23:52 2007 +0100
    73.3 @@ -0,0 +1,246 @@
    73.4 +/******************************************************************************/
    73.5 +/* SYSTEM_FILE.C                                                              */
    73.6 +/* ----------------                                                           */
    73.7 +/* MiniFMOD public source code release.                                       */
    73.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    73.9 +/* or answer questions about the source provided.                             */
   73.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   73.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   73.12 +/* Firelight Multimedia is a registered business name.                        */
   73.13 +/* This source must not be redistributed without this notice.                 */
   73.14 +/******************************************************************************/
   73.15 +
   73.16 +#include <stdio.h>
   73.17 +#include <stdlib.h>
   73.18 +#include <string.h>
   73.19 +
   73.20 +#include "minifmod.h"
   73.21 +#include "system_file.h"
   73.22 +#include "system_memory.h"
   73.23 +#include "sound.h"
   73.24 +
   73.25 +
   73.26 +unsigned int	(*FSOUND_File_OpenCallback)(char *name) = NULL;
   73.27 +void			(*FSOUND_File_CloseCallback)(unsigned int handle) = NULL;
   73.28 +int				(*FSOUND_File_ReadCallback)(void *buffer, int size, unsigned int handle) = NULL;
   73.29 +void			(*FSOUND_File_SeekCallback)(unsigned int handle, int pos, signed char mode) = NULL;
   73.30 +int				(*FSOUND_File_TellCallback)(unsigned int handle) = NULL;
   73.31 +
   73.32 +
   73.33 +/*
   73.34 +[API]
   73.35 +[
   73.36 +	[DESCRIPTION]
   73.37 +	Specify user callbacks for FMOD's internal file manipulation.
   73.38 +	If ANY of these parameters are NULL, then FMOD will switch back to its own file routines.
   73.39 +	You can replace this with memory routines (ie name can be cast to a memory address for example, then open sets up
   73.40 +	a handle based on this information), or alternate file routines, ie a WAD file reader.
   73.41 +
   73.42 +	[PARAMETERS]
   73.43 +
   73.44 +	'OpenCallback'		
   73.45 +	Callback for opening a file.  
   73.46 +	Parameters:
   73.47 +	-----------
   73.48 +	"name"	This is the filename.  You may treat this how you like.  
   73.49 +	Instructions:
   73.50 +	-------------
   73.51 +	You MUST open the file and return a handle for future file function calls.  Cast the handle to an unsigned int when returning it, then in later functions, cast it back to your own handle type.
   73.52 +	Return 0 signify an open error.  This is very important.
   73.53 +	It is a good idea if you are using memory based file routines, to store the size of the file here, as it is needed to support SEEK_END in the seek function, described below.
   73.54 +
   73.55 +	'CloseCallback'
   73.56 +	Callback for closing a file.
   73.57 +	Parameters:
   73.58 +	-----------
   73.59 +	"handle"	This is the handle you returned from the open callback to use for your own file routines.
   73.60 +	Instructions:
   73.61 +	-------------
   73.62 +	Close your file handle and do any cleanup here.
   73.63 +
   73.64 +	'ReadCallback'
   73.65 +	Callback for opening a file.  
   73.66 +	Parameters:
   73.67 +	-----------
   73.68 +	"buffer"	You must read and copy your file data into this pointer.
   73.69 +	"length"    You must read this many bytes from your file data.
   73.70 +	"handle"	This is the handle you returned from the open callback to use for your own file routines.
   73.71 +	Instructions:
   73.72 +	-------------
   73.73 +	You must read "length" number of bytes into the "buffer" provided, then if you need to, increment your file pointer.
   73.74 +	IMPORTANT: you MUST return the number of bytes that were *successfully* read here.  Normally this is just the same as "length", but if you are at the end of the file, you will probably only read successfully the number of bytes up to the end of the file (if you tried to read more than that).
   73.75 +
   73.76 +	'SeekCallback'
   73.77 +	Callback for seeking within a file.  There are 3 modes of seeking, as described below.
   73.78 +	Parameters:
   73.79 +	-----------
   73.80 +	"handle"	This is the handle you returned from the open callback to use for your own file routines.
   73.81 +	"pos"		This is the position or offset to seek by depending on the mode.
   73.82 +	"mode"		This is the seek command.  It uses and is compatible with SEEK_SET, SEEK_CUR and SEEK_END from stdio.h, so use them.
   73.83 +	Instructions:
   73.84 +	-------------
   73.85 +	You must reset your file pointer based on the commands given above.
   73.86 +	SEEK_END must reposition your file pointer at the END of the file, plus any negative offset.  To do this you must know the size of the file, it is suggested you find and store this in the open function.  Remember that a SEEK_END position value of -1 is the last byte.
   73.87 +
   73.88 +	'TellCallback'
   73.89 +	Callback for returning the offset from the base of the file in BYTES.
   73.90 +	Parameters:
   73.91 +	-----------
   73.92 +	"handle"	This is the handle you returned from the open callback to use for your own file routines.
   73.93 +	Instructions:
   73.94 +	-------------
   73.95 +	You must return the offset from the base of the file, using this routine.
   73.96 +
   73.97 + 	[RETURN_VALUE]
   73.98 +	void
   73.99 +
  73.100 +	[REMARKS]
  73.101 +	Memory loader FMOD functions are not affected, such as FMUSIC_LoadSongMemory etc.
  73.102 +	WARNING : This function is dangerous in the wrong hands.  You must return the right values, and each
  73.103 +	command must work properly, or FMOD will not function, or it may even crash if you give it invalid data.
  73.104 +	You must support SEEK_SET, SEEK_CUR and SEEK_END properly, or FMOD will not work properly.  See standard I/O help files on how these work under fseek().
  73.105 +	Read the documentation in REMARKS and do exactly what it says.  See the 'simple' example for how it is
  73.106 +	used properly.
  73.107 +]
  73.108 +*/
  73.109 +void FSOUND_File_SetCallbacks(unsigned int (*OpenCallback)(char *name), void	(*CloseCallback)(unsigned int handle),	int (*ReadCallback)(void *buffer, int size, unsigned int handle), void (*SeekCallback)(unsigned int handle, int pos, signed char mode), int (*TellCallback)(unsigned int handle))
  73.110 +{
  73.111 +	if (!OpenCallback || !CloseCallback || !ReadCallback || !SeekCallback || !TellCallback)
  73.112 +	{
  73.113 +		FSOUND_File_OpenCallback = NULL;
  73.114 +		FSOUND_File_CloseCallback = NULL;
  73.115 +		FSOUND_File_ReadCallback = NULL;
  73.116 +		FSOUND_File_SeekCallback = NULL;
  73.117 +		FSOUND_File_TellCallback = NULL;
  73.118 +	}
  73.119 +	else
  73.120 +	{
  73.121 +		FSOUND_File_OpenCallback = OpenCallback;
  73.122 +		FSOUND_File_CloseCallback = CloseCallback;
  73.123 +		FSOUND_File_ReadCallback = ReadCallback;
  73.124 +		FSOUND_File_SeekCallback = SeekCallback;
  73.125 +		FSOUND_File_TellCallback = TellCallback;
  73.126 +	}
  73.127 +}
  73.128 +
  73.129 +
  73.130 +/*
  73.131 +[
  73.132 +	[DESCRIPTION]
  73.133 +
  73.134 +	[PARAMETERS]
  73.135 + 
  73.136 +	[RETURN_VALUE]
  73.137 +
  73.138 +	[REMARKS]
  73.139 +
  73.140 +	[SEE_ALSO]
  73.141 +]
  73.142 +*/
  73.143 +FSOUND_FILE_HANDLE *FSOUND_File_Open(void *data, signed char type, int length)
  73.144 +{
  73.145 +	FSOUND_FILE_HANDLE *handle;
  73.146 +
  73.147 +	handle = (FSOUND_FILE_HANDLE *)FSOUND_Memory_Alloc(sizeof(FSOUND_FILE_HANDLE));
  73.148 +	handle->type = type;
  73.149 +	handle->length = length;
  73.150 +	handle->userhandle = FSOUND_File_OpenCallback(data);
  73.151 +
  73.152 +	if (!handle->userhandle)
  73.153 +	{
  73.154 +		FSOUND_Memory_Free(handle);
  73.155 +		return NULL;
  73.156 +	}
  73.157 +
  73.158 +	return handle;
  73.159 +}
  73.160 +
  73.161 +
  73.162 +/*
  73.163 +[
  73.164 +	[DESCRIPTION]
  73.165 +
  73.166 +	[PARAMETERS]
  73.167 + 
  73.168 +	[RETURN_VALUE]
  73.169 +
  73.170 +	[REMARKS]
  73.171 +
  73.172 +	[SEE_ALSO]
  73.173 +]
  73.174 +*/
  73.175 +void FSOUND_File_Close(FSOUND_FILE_HANDLE *handle)
  73.176 +{
  73.177 +	if (!handle) 
  73.178 +		return;
  73.179 +
  73.180 +	FSOUND_File_CloseCallback(handle->userhandle);
  73.181 +	FSOUND_Memory_Free(handle);
  73.182 +}
  73.183 +
  73.184 +
  73.185 +/*
  73.186 +[
  73.187 +	[DESCRIPTION]
  73.188 +
  73.189 +	[PARAMETERS]
  73.190 + 
  73.191 +	[RETURN_VALUE]
  73.192 +
  73.193 +	[REMARKS]
  73.194 +
  73.195 +	[SEE_ALSO]
  73.196 +]
  73.197 +*/
  73.198 +int FSOUND_File_Read(void *buffer, int size, FSOUND_FILE_HANDLE *handle)
  73.199 +{
  73.200 +	if (!handle) 
  73.201 +		return 0;
  73.202 +
  73.203 +	return FSOUND_File_ReadCallback(buffer, size, handle->userhandle);
  73.204 +}
  73.205 +
  73.206 +
  73.207 +
  73.208 +/*
  73.209 +[
  73.210 +	[DESCRIPTION]
  73.211 +
  73.212 +	[PARAMETERS]
  73.213 + 
  73.214 +	[RETURN_VALUE]
  73.215 +
  73.216 +	[REMARKS]
  73.217 +
  73.218 +	[SEE_ALSO]
  73.219 +]
  73.220 +*/
  73.221 +void FSOUND_File_Seek(FSOUND_FILE_HANDLE *handle, int pos, signed char mode)
  73.222 +{
  73.223 +	if (!handle) 
  73.224 +		return;
  73.225 +
  73.226 +	FSOUND_File_SeekCallback(handle->userhandle, pos, mode);
  73.227 +}
  73.228 +
  73.229 +
  73.230 +/*
  73.231 +[
  73.232 +	[DESCRIPTION]
  73.233 +
  73.234 +	[PARAMETERS]
  73.235 + 
  73.236 +	[RETURN_VALUE]
  73.237 +
  73.238 +	[REMARKS]
  73.239 +
  73.240 +	[SEE_ALSO]
  73.241 +]
  73.242 +*/
  73.243 +int FSOUND_File_Tell(FSOUND_FILE_HANDLE *handle)
  73.244 +{
  73.245 +	if (!handle) 
  73.246 +		return 0;
  73.247 +
  73.248 +	return FSOUND_File_TellCallback(handle->userhandle);
  73.249 +}
    74.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.2 +++ b/minifmod/system_file.h	Tue Nov 27 15:23:52 2007 +0100
    74.3 @@ -0,0 +1,39 @@
    74.4 +/******************************************************************************/
    74.5 +/* SYSTEM_FILE.H                                                              */
    74.6 +/* ----------------                                                           */
    74.7 +/* MiniFMOD public source code release.                                       */
    74.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    74.9 +/* or answer questions about the source provided.                             */
   74.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   74.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   74.12 +/* Firelight Multimedia is a registered business name.                        */
   74.13 +/* This source must not be redistributed without this notice.                 */
   74.14 +/******************************************************************************/
   74.15 +
   74.16 +#ifndef _SYSTEM_FILE_H_
   74.17 +#define _SYSTEM_FILE_H_
   74.18 +
   74.19 +typedef struct tag_FSOUND_FILE_HANDLE 
   74.20 +{
   74.21 +	signed char		type;
   74.22 +	void			*fp;
   74.23 +	signed char		*mem;
   74.24 +	int				basepos;
   74.25 +	unsigned int	userhandle;
   74.26 +	int				length;
   74.27 +} FSOUND_FILE_HANDLE;
   74.28 +
   74.29 +FSOUND_FILE_HANDLE *FSOUND_File_Open(void *data, signed char type, int length);
   74.30 +void				FSOUND_File_Close(FSOUND_FILE_HANDLE *handle);
   74.31 +int					FSOUND_File_Read(void *buffer, int size, FSOUND_FILE_HANDLE *handle);
   74.32 +void				FSOUND_File_Seek(FSOUND_FILE_HANDLE *handle, int pos, signed char mode);
   74.33 +int					FSOUND_File_Tell(FSOUND_FILE_HANDLE *handle);
   74.34 +
   74.35 +
   74.36 +extern unsigned int	(*FSOUND_File_OpenCallback)(char *name);
   74.37 +extern void			(*FSOUND_File_CloseCallback)(unsigned int handle);
   74.38 +extern int			(*FSOUND_File_ReadCallback)(void *buffer, int size, unsigned int handle);
   74.39 +extern void			(*FSOUND_File_SeekCallback)(unsigned int handle, int pos, signed char mode);
   74.40 +extern int			(*FSOUND_File_TellCallback)(unsigned int handle);
   74.41 +
   74.42 +#endif
   74.43 \ No newline at end of file
    75.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.2 +++ b/minifmod/system_memory.h	Tue Nov 27 15:23:52 2007 +0100
    75.3 @@ -0,0 +1,25 @@
    75.4 +/******************************************************************************/
    75.5 +/* SYSTEM_MEMORY.H                                                            */
    75.6 +/* ----------------                                                           */
    75.7 +/* MiniFMOD public source code release.                                       */
    75.8 +/* This source is provided as-is.  Firelight Multimedia will not support      */
    75.9 +/* or answer questions about the source provided.                             */
   75.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia.           */
   75.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source.          */
   75.12 +/* Firelight Multimedia is a registered business name.                        */
   75.13 +/* This source must not be redistributed without this notice.                 */
   75.14 +/******************************************************************************/
   75.15 +
   75.16 +#ifndef _SYSTEM_MEMORY_H_
   75.17 +#define _SYSTEM_MEMORY_H_
   75.18 +
   75.19 +// include your system's header here
   75.20 +#include <stdlib.h>
   75.21 +
   75.22 +// redefine here
   75.23 +#define FSOUND_Memory_Free(_ptr)			free(_ptr)
   75.24 +#define FSOUND_Memory_Alloc(_len)			calloc(_len, 1)
   75.25 +#define FSOUND_Memory_Calloc(_len)			calloc(_len, 1)
   75.26 +#define FSOUND_Memory_Realloc(_ptr, _len)	realloc(_ptr, _len)
   75.27 +
   75.28 +#endif
    76.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.2 +++ b/minifmod/xmeffects.h	Tue Nov 27 15:23:52 2007 +0100
    76.3 @@ -0,0 +1,100 @@
    76.4 +// =============================================================================
    76.5 +// XM Effect header generated by FEXP.EXE, Copyright (c) 2000-2001, Firelight Multimedia.
    76.6 +// =============================================================================
    76.7 +
    76.8 +// Generated for urk7.xm
    76.9 +
   76.10 +#ifndef _XMEFFECTS_H
   76.11 +#define _XMEFFECTS_H
   76.12 +
   76.13 +#ifdef FMUSIC_ALL_ACTIVE
   76.14 +
   76.15 +#define FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE
   76.16 +#define FMUSIC_XM_VOLUMEENVELOPE_ACTIVE
   76.17 +#define FMUSIC_XM_PANENVELOPE_ACTIVE
   76.18 +#define FMUSIC_XM_VOLUMEBYTE_ACTIVE
   76.19 +#define FMUSIC_XM_AMIGAPERIODS_ACTIVE
   76.20 +#define FMUSIC_XM_TREMOLO_ACTIVE
   76.21 +#define FMUSIC_XM_TREMOR_ACTIVE
   76.22 +#define FMUSIC_XM_ARPEGGIO_ACTIVE
   76.23 +#define FMUSIC_XM_PORTATO_ACTIVE
   76.24 +#define FMUSIC_XM_PORTAUP_ACTIVE
   76.25 +#define FMUSIC_XM_PORTADOWN_ACTIVE
   76.26 +#define FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE
   76.27 +#define FMUSIC_XM_VIBRATO_ACTIVE
   76.28 +#define FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE
   76.29 +#define FMUSIC_XM_SETPANPOSITION_ACTIVE
   76.30 +#define FMUSIC_XM_SETSAMPLEOFFSET_ACTIVE
   76.31 +#define FMUSIC_XM_VOLUMESLIDE_ACTIVE
   76.32 +#define FMUSIC_XM_PATTERNJUMP_ACTIVE
   76.33 +#define FMUSIC_XM_SETVOLUME_ACTIVE
   76.34 +#define FMUSIC_XM_PATTERNBREAK_ACTIVE
   76.35 +#define FMUSIC_XM_FINEPORTAUP_ACTIVE
   76.36 +#define FMUSIC_XM_FINEPORTADOWN_ACTIVE
   76.37 +#define FMUSIC_XM_SETVIBRATOWAVE_ACTIVE
   76.38 +#define FMUSIC_XM_SETFINETUNE_ACTIVE
   76.39 +#define FMUSIC_XM_PATTERNLOOP_ACTIVE
   76.40 +#define FMUSIC_XM_SETTREMOLOWAVE_ACTIVE
   76.41 +#define FMUSIC_XM_SETPANPOSITION16_ACTIVE
   76.42 +#define FMUSIC_XM_RETRIG_ACTIVE
   76.43 +#define FMUSIC_XM_FINEVOLUMESLIDEUP_ACTIVE
   76.44 +#define FMUSIC_XM_FINEVOLUMESLIDEDOWN_ACTIVE
   76.45 +#define FMUSIC_XM_NOTECUT_ACTIVE
   76.46 +#define FMUSIC_XM_NOTEDELAY_ACTIVE
   76.47 +#define FMUSIC_XM_PATTERNDELAY_ACTIVE
   76.48 +#define FMUSIC_XM_SETSPEED_ACTIVE
   76.49 +#define FMUSIC_XM_SETGLOBALVOLUME_ACTIVE
   76.50 +#define FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE
   76.51 +#define FMUSIC_XM_KEYOFF_ACTIVE
   76.52 +#define FMUSIC_XM_SETENVELOPEPOS_ACTIVE
   76.53 +#define FMUSIC_XM_PANSLIDE_ACTIVE
   76.54 +#define FMUSIC_XM_MULTIRETRIG_ACTIVE
   76.55 +#define FMUSIC_XM_EXTRAFINEPORTA_ACTIVE
   76.56 +
   76.57 +#else // FMUSIC_ALL_ACTIVE 
   76.58 +
   76.59 +#define FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE
   76.60 +#define FMUSIC_XM_VOLUMEENVELOPE_ACTIVE
   76.61 +#define FMUSIC_XM_PANENVELOPE_ACTIVE
   76.62 +#define FMUSIC_XM_VOLUMEBYTE_ACTIVE
   76.63 +#define FMUSIC_XM_AMIGAPERIODS_ACTIVE
   76.64 +#define FMUSIC_XM_TREMOLO_ACTIVE
   76.65 +#define FMUSIC_XM_TREMOR_ACTIVE
   76.66 +#define FMUSIC_XM_ARPEGGIO_ACTIVE
   76.67 +#define FMUSIC_XM_PORTATO_ACTIVE
   76.68 +#define FMUSIC_XM_PORTAUP_ACTIVE
   76.69 +#define FMUSIC_XM_PORTADOWN_ACTIVE
   76.70 +#define FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE
   76.71 +#define FMUSIC_XM_VIBRATO_ACTIVE
   76.72 +#define FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE
   76.73 +#define FMUSIC_XM_SETPANPOSITION_ACTIVE
   76.74 +#define FMUSIC_XM_SETSAMPLEOFFSET_ACTIVE
   76.75 +#define FMUSIC_XM_VOLUMESLIDE_ACTIVE
   76.76 +#define FMUSIC_XM_PATTERNJUMP_ACTIVE
   76.77 +#define FMUSIC_XM_SETVOLUME_ACTIVE
   76.78 +#define FMUSIC_XM_PATTERNBREAK_ACTIVE
   76.79 +#define FMUSIC_XM_FINEPORTAUP_ACTIVE
   76.80 +#define FMUSIC_XM_FINEPORTADOWN_ACTIVE
   76.81 +#define FMUSIC_XM_SETVIBRATOWAVE_ACTIVE
   76.82 +#define FMUSIC_XM_SETFINETUNE_ACTIVE
   76.83 +#define FMUSIC_XM_PATTERNLOOP_ACTIVE
   76.84 +#define FMUSIC_XM_SETTREMOLOWAVE_ACTIVE
   76.85 +#define FMUSIC_XM_SETPANPOSITION16_ACTIVE
   76.86 +#define FMUSIC_XM_RETRIG_ACTIVE
   76.87 +#define FMUSIC_XM_FINEVOLUMESLIDEUP_ACTIVE
   76.88 +#define FMUSIC_XM_FINEVOLUMESLIDEDOWN_ACTIVE
   76.89 +#define FMUSIC_XM_NOTECUT_ACTIVE
   76.90 +#define FMUSIC_XM_NOTEDELAY_ACTIVE
   76.91 +#define FMUSIC_XM_PATTERNDELAY_ACTIVE
   76.92 +#define FMUSIC_XM_SETSPEED_ACTIVE
   76.93 +#define FMUSIC_XM_SETGLOBALVOLUME_ACTIVE
   76.94 +#define FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE
   76.95 +#define FMUSIC_XM_KEYOFF_ACTIVE
   76.96 +#define FMUSIC_XM_SETENVELOPEPOS_ACTIVE
   76.97 +#define FMUSIC_XM_PANSLIDE_ACTIVE
   76.98 +#define FMUSIC_XM_MULTIRETRIG_ACTIVE
   76.99 +#define FMUSIC_XM_EXTRAFINEPORTA_ACTIVE
  76.100 +
  76.101 +#endif // FMUSIC_ALL_ACTIVE 
  76.102 +
  76.103 +#endif
    77.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.2 +++ b/mth.cxx	Tue Nov 27 15:23:52 2007 +0100
    77.3 @@ -0,0 +1,144 @@
    77.4 +/** @file   mth.h
    77.5 + *
    77.6 + * @brief   mth facility
    77.7 + *
    77.8 + *****************************************************************************
    77.9 + *
   77.10 + * @author  psc80
   77.11 + *
   77.12 + * @date    Created 2001/05
   77.13 + *
   77.14 + * @version $Id: mth.cxx,v 1.4 2004/01/16 23:38:23 psc80 Exp $
   77.15 + *
   77.16 + ****************************************************************************/
   77.17 +
   77.18 +#include "mth.h"
   77.19 +
   77.20 +
   77.21 +namespace mth {
   77.22 +
   77.23 +  /// Return the square root
   77.24 +  float Sqrt(const float& _a) { SYS_ASSERT(_a>=0); return sqrtf(_a);}
   77.25 +  double Sqrt(const double& _a) { SYS_ASSERT(_a>=0); return sqrt(_a);}
   77.26 +
   77.27 +  float Tan(float _a) { return tan(_a);}
   77.28 +
   77.29 +
   77.30 +  float Abs(float _v) { if (_v<0) return -_v; return _v;}
   77.31 +
   77.32 +
   77.33 +  /// Return the maximum value between 2 value
   77.34 +	float Max(const float& a, const float& b) { return a<b? b:a; }
   77.35 +
   77.36 +
   77.37 +  /// Return the minimum value between 2 value
   77.38 +	float Min(const float& a, const float& b) { return a>b? b:a; }
   77.39 +
   77.40 +
   77.41 +  float Pow(const float& _a,const float& _b) { return powf(_a,_b);}
   77.42 +
   77.43 +  /// Specialisation of pow for double
   77.44 +  double Pow(const double& _a,const double& _b) { return pow(_a,_b);}
   77.45 +
   77.46 +
   77.47 +  float Frac(const float& _x) { return _x-Floor(_x);}
   77.48 +
   77.49 +
   77.50 +
   77.51 +  float Clamp(const float& _x,const float& _min,const float& _max) { 
   77.52 +    return Max(Min(_x,_max),_min);}
   77.53 +
   77.54 +  /// Return the cos
   77.55 +  float Cos(const float& _a) { return cosf((float)_a);}
   77.56 +
   77.57 +  /// Specialisation of cos for double
   77.58 +  double Cos(const double& _a) { return cos(_a);}
   77.59 +
   77.60 +
   77.61 +
   77.62 +  /// Return the sin
   77.63 +  float Sin(const float& _a) { return sinf((float)_a);}
   77.64 +
   77.65 +  /// Specialisation of sin for double
   77.66 +   double Sin(const double& _a) { return sin(_a);}
   77.67 +
   77.68 +
   77.69 +
   77.70 +  /// Return the atan
   77.71 +  float ATan(const float& _a) { return atanf((float)_a);}
   77.72 +
   77.73 +  /// Specialisation of atan for double
   77.74 +   double ATan(const double& _a) { return atan(_a);}
   77.75 +
   77.76 +
   77.77 +
   77.78 +  /// Return acos
   77.79 +    float ACos(const float& _a) { return acosf((float)_a);}
   77.80 +
   77.81 +  /// Specialisation of acos for double
   77.82 +   double ACos(const double& _a) { return acos(_a);}
   77.83 +
   77.84 +
   77.85 +
   77.86 +  /// Return asin
   77.87 +    float ASin(const float& _a) { return asinf((float)_a);}
   77.88 +
   77.89 +  /// Specialisation of asin for double
   77.90 +   double ASin(const double& _a) { return asin(_a);}
   77.91 +
   77.92 +
   77.93 +
   77.94 +
   77.95 +  /// Return floor
   77.96 +    float Floor(const float& _a) { return floorf((float)_a);}
   77.97 +
   77.98 +  /// Specialisation of floor for double
   77.99 +   double Floor(const double& _a) { return floor(_a);}
  77.100 +
  77.101 +
  77.102 +
  77.103 +  /// Return ceil
  77.104 +    float Ceil(const float& _a) { return ceilf((float)_a);}
  77.105 +
  77.106 +  /// Specialisation of ceil for double
  77.107 +   double Ceil(const double& _a) { return ceil(_a);}
  77.108 +
  77.109 +
  77.110 +
  77.111 +
  77.112 +  /// Return sign of a float
  77.113 +  float Sign(const float& _a) { if (_a<0) return -1; return 1;}
  77.114 +
  77.115 +
  77.116 +
  77.117 +
  77.118 +
  77.119 +  /// floathe function returns a pseudo-random integer between 0 and RANDOM_MAX
  77.120 +   int Rand() { return rand();}
  77.121 +
  77.122 +   
  77.123 +   /// floathe function returns a pseudo-random integer between 0 and RANDOM_MAX
  77.124 +   int Random() { 
  77.125 +     static int i=0;
  77.126 +     srand(i++);
  77.127 +     return rand();
  77.128 +    const int NOISE_WRAP_INDEX=256;
  77.129 +    return (float)((rand() % (NOISE_WRAP_INDEX + NOISE_WRAP_INDEX)) - 
  77.130 +                 NOISE_WRAP_INDEX) / NOISE_WRAP_INDEX;
  77.131 +     //return Rand();
  77.132 +   }
  77.133 +
  77.134 +
  77.135 +  /** The SRand() function  sets  its  argument as the seed for a new 
  77.136 +   *  sequence of pseudo-random integers to be returned by rand(). These
  77.137 +   *  sequences are repeatable by calling srand() with the same seed value
  77.138 +   */
  77.139 +   void SRand(unsigned int _seed) { srand(_seed);}
  77.140 +
  77.141 +
  77.142 +
  77.143 +
  77.144 +
  77.145 +
  77.146 +
  77.147 +   }
  77.148 \ No newline at end of file
    78.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.2 +++ b/mth.h	Tue Nov 27 15:23:52 2007 +0100
    78.3 @@ -0,0 +1,152 @@
    78.4 +/** @file   mth.h
    78.5 + *
    78.6 + * @brief   mth facility
    78.7 + *
    78.8 + *****************************************************************************
    78.9 + *
   78.10 + * @author  psc80
   78.11 + *
   78.12 + * @date    Created 2001/05
   78.13 + *
   78.14 + * @version $Id: mth.h,v 1.4 2004/01/16 23:38:23 psc80 Exp $
   78.15 + *
   78.16 + ****************************************************************************/
   78.17 +
   78.18 +#ifndef MTH_H
   78.19 +#define MTH_H
   78.20 +
   78.21 +#include <cmath>
   78.22 +#include <cstdlib>
   78.23 +#include "sys_assert.h"
   78.24 +
   78.25 +namespace mth {
   78.26 +
   78.27 +  typedef float Real_t;
   78.28 +
   78.29 +  const double PI=3.14159265358979323846;
   78.30 +  const double TWOPI=2.0*PI;
   78.31 +  const double EPSILON=1e-6;
   78.32 +
   78.33 +
   78.34 +
   78.35 +  /// Return the square root
   78.36 +  float Sqrt(const float& _a);
   78.37 +  double Sqrt(const double& _a);
   78.38 +
   78.39 +
   78.40 +
   78.41 +  float Abs(float _v);
   78.42 +
   78.43 +
   78.44 +
   78.45 +  /// Return the maximum value between 2 value
   78.46 +	float Max(const float& a, const float& b);
   78.47 +
   78.48 +
   78.49 +  /// Return the minimum value between 2 value
   78.50 +	float Min(const float& a, const float& b);
   78.51 +
   78.52 +
   78.53 +  float Pow(const float& _a,const float& _b);
   78.54 +
   78.55 +  /// Specialisation of pow for double
   78.56 +  double Pow(const double& _a,const double& _b);
   78.57 +
   78.58 +
   78.59 +  float Frac(const float& _x);
   78.60 +
   78.61 +
   78.62 +  float Tan(float _a);
   78.63 +
   78.64 +
   78.65 +  float Clamp(const float& _x,const float& _min,const float& _max);
   78.66 +
   78.67 +  /// Return the cos
   78.68 +  float Cos(const float& _a);
   78.69 +
   78.70 +  /// Specialisation of cos for double
   78.71 +  double Cos(const double& _a);
   78.72 +
   78.73 +
   78.74 +
   78.75 +  /// Return the sin
   78.76 +  float Sin(const float& _a);
   78.77 +
   78.78 +  /// Specialisation of sin for double
   78.79 +   double Sin(const double& _a);
   78.80 +
   78.81 +
   78.82 +
   78.83 +  /// Return the atan
   78.84 +  float ATan(const float& _a);
   78.85 +
   78.86 +  /// Specialisation of atan for double
   78.87 +   double ATan(const double& _a);
   78.88 +
   78.89 +
   78.90 +
   78.91 +  /// Return acos
   78.92 +    float ACos(const float& _a);
   78.93 +
   78.94 +  /// Specialisation of acos for double
   78.95 +   double ACos(const double& _a);
   78.96 +
   78.97 +
   78.98 +
   78.99 +  /// Return asin
  78.100 +    float ASin(const float& _a);
  78.101 +
  78.102 +  /// Specialisation of asin for double
  78.103 +   double ASin(const double& _a);
  78.104 +
  78.105 +
  78.106 +
  78.107 +
  78.108 +  /// Return floor
  78.109 +    float Floor(const float& _a);
  78.110 +
  78.111 +  /// Specialisation of floor for double
  78.112 +   double Floor(const double& _a);
  78.113 +
  78.114 +
  78.115 +
  78.116 +  /// Return ceil
  78.117 +    float Ceil(const float& _a);
  78.118 +
  78.119 +  /// Specialisation of ceil for double
  78.120 +   double Ceil(const double& _a);
  78.121 +
  78.122 +
  78.123 +
  78.124 +
  78.125 +  /// Return sign of a float
  78.126 +  float Sign(const float& _a);
  78.127 +
  78.128 +
  78.129 +
  78.130 +  const unsigned int RANDOM_MAX=RAND_MAX;
  78.131 +
  78.132 +
  78.133 +  /// floathe function returns a pseudo-random integer between 0 and RANDOM_MAX
  78.134 +   int Rand(); 
  78.135 +
  78.136 +
  78.137 +   int Random();
  78.138 +
  78.139 +
  78.140 +  /** The SRand() function  sets  its  argument as the seed for a new 
  78.141 +   *  sequence of pseudo-random integers to be returned by rand(). These
  78.142 +   *  sequences are repeatable by calling srand() with the same seed value
  78.143 +   */
  78.144 +   void SRand(unsigned int _seed);
  78.145 +
  78.146 +
  78.147 +
  78.148 +
  78.149 +
  78.150 +}
  78.151 +
  78.152 +
  78.153 +
  78.154 +
  78.155 +#endif
    79.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.2 +++ b/mth_hermite.h	Tue Nov 27 15:23:52 2007 +0100
    79.3 @@ -0,0 +1,317 @@
    79.4 +/** @file   mth_hermite.h
    79.5 + *
    79.6 + * @brief   hermite curve
    79.7 + *
    79.8 + *****************************************************************************
    79.9 + *
   79.10 + * @author  psc80
   79.11 + *
   79.12 + * @date    Created 2003/05 modified for sota intro 
   79.13 + *
   79.14 + * @version $Id: mth_hermite.h,v 1.4 2004/01/22 13:23:37 psc80 Exp $
   79.15 + *
   79.16 + ****************************************************************************/
   79.17 +
   79.18 +#ifndef MTH_HERMITE_H
   79.19 +#define MTH_HERMITE_H
   79.20 +
   79.21 +#include "mth.h"
   79.22 +#include "sys_assert.h"
   79.23 +
   79.24 +#define WITHOUT_EXTRADATA
   79.25 +
   79.26 +namespace mth {
   79.27 +
   79.28 +  
   79.29 +  
   79.30 +  struct HermiteKey_t
   79.31 +  {
   79.32 +    typedef Vector3_t data_type; 
   79.33 +    typedef float param_type; 
   79.34 +#ifndef WITHOUT_EXTRADATA
   79.35 +    param_type tens;
   79.36 +    param_type cont;
   79.37 +    param_type bias;
   79.38 +#endif
   79.39 +    param_type time;
   79.40 +
   79.41 +    data_type data;
   79.42 +
   79.43 +
   79.44 +
   79.45 +
   79.46 +
   79.47 +    /**
   79.48 +     *   Init internal parmaters
   79.49 +     */
   79.50 +    void Init() {
   79.51 +      time=0;
   79.52 +#ifndef WITHOUT_EXTRADATA
   79.53 +      tens=0; 
   79.54 +      cont=0; 
   79.55 +      bias=0;
   79.56 +#endif
   79.57 +    }
   79.58 +
   79.59 +    /**
   79.60 +     *   Default Constructor
   79.61 +     */
   79.62 +    HermiteKey_t() {Init();}
   79.63 +
   79.64 +
   79.65 +
   79.66 +    void Init(const param_type& _time,
   79.67 +              const data_type& _data
   79.68 +#ifndef WITHOUT_EXTRADATA
   79.69 +              ,const param_type& _tens=(param_type)0,
   79.70 +              const param_type& _cont=(param_type)0,
   79.71 +              const param_type& _bias=(param_type)0
   79.72 +#endif
   79.73 +              )
   79.74 +    {
   79.75 +      time=_time;
   79.76 +      data=_data;
   79.77 +#ifndef WITHOUT_EXTRADATA
   79.78 +      tens=_tens;
   79.79 +      cont=_cont;
   79.80 +      bias=_bias;
   79.81 +#endif
   79.82 +    }
   79.83 +
   79.84 +
   79.85 +    /**
   79.86 +     *  Accessors
   79.87 +     */
   79.88 +    const data_type& Data() const { return data;}
   79.89 +    data_type& Data() { return data;}
   79.90 +
   79.91 +  };
   79.92 +
   79.93 +
   79.94 +
   79.95 +
   79.96 +
   79.97 +
   79.98 +/**
   79.99 + *  General hermite curve.
  79.100 + */
  79.101 +class Hermite_t
  79.102 +{
  79.103 +  typedef HermiteKey_t* T2ptr_t;
  79.104 +
  79.105 +  HermiteKey_t** keys;
  79.106 +  int nbKeys;
  79.107 +  
  79.108 +  // short cut of type
  79.109 +  typedef HermiteKey_t::param_type param_key;
  79.110 +  typedef HermiteKey_t::data_type data_key;
  79.111 +
  79.112 +
  79.113 +
  79.114 +  void BuildSi(int _prev,int _cur,int _next,data_key& _ts) {
  79.115 +
  79.116 +    SYS_ASSERT(_prev>=0 && _prev<nbKeys);
  79.117 +    SYS_ASSERT(_cur >=0 && _cur <nbKeys);
  79.118 +    SYS_ASSERT(_next>=0 && _next<nbKeys);
  79.119 +
  79.120 +    data_key tmp1=keys[_cur]->Data()-keys[_prev]->Data();
  79.121 +    data_key tmp2=keys[_next]->Data()-keys[_cur]->Data();
  79.122 +    
  79.123 +    const param_key one=1;    //just to avoid big syntax
  79.124 +    const param_key two=2;    //just to avoid big syntax
  79.125 +    const param_key half=0.5; //just to avoid big syntax
  79.126 +
  79.127 +#ifndef WITHOUT_EXTRADATA
  79.128 +    param_key pars3= one - keys[_cur]->tens;
  79.129 +    param_key pars0= pars3 * ( one + keys[_cur]->bias )*( one - keys[_cur]->cont) * half;
  79.130 +    param_key pars1= pars3 * ( one - keys[_cur]->bias )*( one + keys[_cur]->cont) * half;
  79.131 +#else
  79.132 +    const param_key pars0=0.5;
  79.133 +    const param_key pars1=0.5;
  79.134 +#endif
  79.135 +    param_key curDeltaI=keys[_next]->time-keys[_cur]->time;
  79.136 +    param_key prevDeltaI=keys[_cur]->time-keys[_prev]->time;
  79.137 +    
  79.138 +    param_key delta=two * curDeltaI/(prevDeltaI+curDeltaI);
  79.139 +
  79.140 +    _ts=(tmp1*pars0+tmp2*pars1)*delta;
  79.141 +  }
  79.142 +
  79.143 +
  79.144 +  void BuildDi(int _prev,int _cur,int _next,data_key& _td) {
  79.145 +
  79.146 +    SYS_ASSERT(_prev>=0 && _prev<nbKeys);
  79.147 +    SYS_ASSERT(_cur >=0 && _cur <nbKeys);
  79.148 +    SYS_ASSERT(_next>=0 && _next<nbKeys);
  79.149 +
  79.150 +    data_key tmp1=keys[_cur]->Data()-keys[_prev]->Data();
  79.151 +    data_key tmp2=keys[_next]->Data()-keys[_cur]->Data();
  79.152 +
  79.153 +    const param_key one=1;    //just to avoid big syntax
  79.154 +    const param_key two=2;    //just to avoid big syntax
  79.155 +    const param_key half=0.5; //just to avoid big syntax
  79.156 +
  79.157 +#ifndef WITHOUT_EXTRADATA
  79.158 +    param_key pars3= one - keys[_cur]->tens;
  79.159 +    param_key pars0= pars3 * ( one + keys[_cur]->bias)*( one + keys[_cur]->cont) * half;
  79.160 +    param_key pars1= pars3 * ( one - keys[_cur]->bias)*( one - keys[_cur]->cont) * half;
  79.161 +#else
  79.162 +    const param_key pars0=0.5;
  79.163 +    const param_key pars1=0.5;
  79.164 +
  79.165 +#endif    
  79.166 +    param_key curDeltaI=keys[_next]->time-keys[_cur]->time;
  79.167 +    param_key prevDeltaI=keys[_cur]->time-keys[_prev]->time;
  79.168 +    
  79.169 +    param_key delta= two *prevDeltaI/(prevDeltaI+curDeltaI);
  79.170 +
  79.171 +    _td=(tmp1*pars0+tmp2*pars1)*delta;
  79.172 +  }
  79.173 +
  79.174 +  
  79.175 +
  79.176 +  const int MAX_KEYS; 
  79.177 +
  79.178 + public:
  79.179 +
  79.180 +  /**
  79.181 +   *  Default constructor
  79.182 +   */
  79.183 +   Hermite_t(int _size) : MAX_KEYS(_size) {
  79.184 +    keys=new T2ptr_t[_size];
  79.185 +    nbKeys=0;
  79.186 +   }
  79.187 +
  79.188 +   ~Hermite_t() {
  79.189 +      delete [] keys;
  79.190 +   }
  79.191 +
  79.192 +
  79.193 +
  79.194 +  /**
  79.195 +   *  Clear the list of keyframes
  79.196 +   */
  79.197 +  void Clear() { nbKeys=0;}
  79.198 +
  79.199 +  /**
  79.200 +   *  Insert a key frame with this time in the spline.
  79.201 +   *  warning you can't insert more than one time an element
  79.202 +   *
  79.203 +   *  @param mthHermiteKeyFrame_T* key to insert
  79.204 +   *  @return 0 if ok else -1
  79.205 +   */
  79.206 +  void AddKey(HermiteKey_t* _key) {
  79.207 +
  79.208 +    SYS_ASSERT(_key);
  79.209 +
  79.210 +    SYS_ASSERT(nbKeys<MAX_KEYS);
  79.211 +    keys[nbKeys++]=_key;
  79.212 +  }
  79.213 +
  79.214 +
  79.215 +  /**
  79.216 +   *  GetData return a interpolated value from time given as parameter
  79.217 +   *  We use data type defined by keyframe
  79.218 +   *	
  79.219 +   *  @param mthHermiteKeyFrame_T::param_type time step you want
  79.220 +   *  @param mthHermiteKeyFrame_T::data_type& result of interpolation
  79.221 +   *  @param bool loop or not
  79.222 +   *  @return int 0 if ok else -1
  79.223 +   */
  79.224 +  int GetData(param_key _time,data_key& _result,bool _loop=1) {
  79.225 +
  79.226 +    if (!nbKeys)
  79.227 +      return -1;
  79.228 +
  79.229 +
  79.230 +    if (nbKeys<2) {
  79.231 +      _result=keys[0]->Data();
  79.232 +      return 0;
  79.233 +    }
  79.234 +
  79.235 +    
  79.236 +    // cheking range
  79.237 +    param_key limit_t0=keys[0]->time;
  79.238 +    param_key limit_t1=keys[nbKeys-1]->time;
  79.239 +
  79.240 +
  79.241 +    if (_loop) {
  79.242 +      // loop mode
  79.243 +      if (_time < limit_t0)
  79.244 +        _time=limit_t0;
  79.245 +      if (_time>limit_t1) {
  79.246 +        param_key dist=limit_t1-limit_t0;
  79.247 +        _time=_time/dist;
  79.248 +        _time=Frac(_time)*dist;
  79.249 +      }
  79.250 +
  79.251 +    } else {
  79.252 +      // stop mode
  79.253 +      if (_time < limit_t0)
  79.254 +        _time=limit_t0;
  79.255 +
  79.256 +      if (_time>limit_t1)
  79.257 +        _time=limit_t1;
  79.258 +    }
  79.259 +
  79.260 +
  79.261 +    int itPrev,itCur,itNext,itNext2;
  79.262 +    itCur=0;
  79.263 +
  79.264 +    itCur++; //start at the second key
  79.265 +    // give me the good interval p0---t------p1
  79.266 +    while ( _time>keys[itCur]->time) {
  79.267 +      itCur++;
  79.268 +    }
  79.269 +    itCur--;
  79.270 +    
  79.271 +    // check valid prev and next
  79.272 +    itPrev=itCur;
  79.273 +    if (itCur!=0)
  79.274 +      itPrev--;
  79.275 +
  79.276 +    itNext=itCur;
  79.277 +    if (itCur!=nbKeys-1)
  79.278 +      itNext++;
  79.279 +    
  79.280 +    
  79.281 +    param_key t=(_time-keys[itCur]->time)/(keys[itNext]->time-keys[itCur]->time); // rescale the time
  79.282 +    param_key t2=t*t;
  79.283 +    param_key t3=t2*t;
  79.284 +
  79.285 +    param_key c2t3= t3 * (param_key)2;
  79.286 +    param_key c3t2= t2 * (param_key)3;
  79.287 +
  79.288 +    // p=(2t3-3t2+1)*p0 + (t3-2t2+t)*tg0 + (-2t3+3t2)*p1 + (t3-t2)*tg1
  79.289 +    param_key one=1;
  79.290 +    param_key two=2;
  79.291 +    param_key h1= c2t3 - c3t2 + one;           // 2t3-3t2+1 
  79.292 +    param_key h2= t3 + t  - t2 * two;          // t3-2t2+t
  79.293 +    param_key h3= -c2t3 + c3t2;                // -2t3+3t2 
  79.294 +    param_key h4= t3 - t2;                     // t3-t2
  79.295 +
  79.296 +    data_key tg0,tg1;
  79.297 +    
  79.298 +    BuildDi(itPrev,itCur,itNext,tg0);
  79.299 +
  79.300 +
  79.301 +    itNext2=itNext;
  79.302 +    if (itNext!=nbKeys-1)
  79.303 +      itNext2++;
  79.304 +
  79.305 +    BuildSi(itCur,itNext,itNext2,tg1);
  79.306 +    
  79.307 +    _result=keys[itCur]->Data()*h1+ tg0*h2 + keys[itNext]->Data()*h3+ tg1*h4;
  79.308 +    return 0;
  79.309 +  }
  79.310 +
  79.311 +
  79.312 +};
  79.313 +
  79.314 +}
  79.315 +
  79.316 +
  79.317 +#undef WITHOUT_EXTRADATA
  79.318 +
  79.319 +
  79.320 +#endif
    80.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.2 +++ b/mth_perlin.cxx	Tue Nov 27 15:23:52 2007 +0100
    80.3 @@ -0,0 +1,231 @@
    80.4 +/** @file   mth_perlin.cxx
    80.5 + *
    80.6 + * @brief   perlin noise class
    80.7 + *
    80.8 + *****************************************************************************
    80.9 + *
   80.10 + * @author  STV & psc80
   80.11 + *
   80.12 + * @date    Created 2003/08
   80.13 + *
   80.14 + * @version $Id: mth_perlin.cxx,v 1.3 2004/01/10 22:38:31 psc80 Exp $
   80.15 + *
   80.16 + ****************************************************************************/
   80.17 +
   80.18 +#include "mth_perlin.h"
   80.19 +
   80.20 +/* coherent noise function over 1, 2 or 3 dimensions */
   80.21 +/* (copyright Ken Perlin) */
   80.22 +
   80.23 +#include <stdlib.h>
   80.24 +#include <stdio.h>
   80.25 +#include <math.h>
   80.26 +
   80.27 +
   80.28 +namespace mth {
   80.29 +
   80.30 +
   80.31 +
   80.32 +#define B 0x100
   80.33 +#define BM 0xff
   80.34 +
   80.35 +#define N 0x1000
   80.36 +#define NP 12   /* 2^N */
   80.37 +#define NM 0xfff
   80.38 +
   80.39 +static p[B + B + 2];
   80.40 +static float g3[B + B + 2][3];
   80.41 +static float g2[B + B + 2][2];
   80.42 +static float g1[B + B + 2];
   80.43 +static start = 1;
   80.44 +
   80.45 +static void init(void);
   80.46 +
   80.47 +#define s_curve(t) ( t * t * (3. - 2. * t) )
   80.48 +
   80.49 +#define lerp(t, a, b) ( a + t * (b - a) )
   80.50 +
   80.51 +void setup(int i,float* vec,float& t,int& b0,int& b1,float& r0,float& r1)
   80.52 +{
   80.53 +	t = vec[i] + N;
   80.54 +	b0 = ((int)t) & BM;
   80.55 +	b1 = (b0+1) & BM;
   80.56 +	r0 = t - (int)t;
   80.57 +	r1 = r0 - 1.;
   80.58 +}
   80.59 +
   80.60 +double noise1(double arg)
   80.61 +{
   80.62 +	int bx0, bx1;
   80.63 +	float rx0, rx1, sx, t, u, v, vec[1];
   80.64 +
   80.65 +	vec[0] = arg;
   80.66 +	if (start) {
   80.67 +		start = 0;
   80.68 +		init();
   80.69 +	}
   80.70 +
   80.71 +//	setup(0, bx0,bx1, rx0,rx1);
   80.72 +
   80.73 +	sx = s_curve(rx0);
   80.74 +
   80.75 +	u = rx0 * g1[ p[ bx0 ] ];
   80.76 +	v = rx1 * g1[ p[ bx1 ] ];
   80.77 +
   80.78 +	return lerp(sx, u, v);
   80.79 +}
   80.80 +
   80.81 +float noise2(float vec[2])
   80.82 +{
   80.83 +	int bx0, bx1, by0, by1, b00, b10, b01, b11;
   80.84 +	float rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v;
   80.85 +	register i, j;
   80.86 +
   80.87 +	if (start) {
   80.88 +		start = 0;
   80.89 +		init();
   80.90 +	}
   80.91 +
   80.92 +	setup(0,vec,t,bx0,bx1, rx0,rx1);
   80.93 +	setup(1,vec,t, by0,by1, ry0,ry1);
   80.94 +
   80.95 +	i = p[ bx0 ];
   80.96 +	j = p[ bx1 ];
   80.97 +
   80.98 +	b00 = p[ i + by0 ];
   80.99 +	b10 = p[ j + by0 ];
  80.100 +	b01 = p[ i + by1 ];
  80.101 +	b11 = p[ j + by1 ];
  80.102 +
  80.103 +	sx = s_curve(rx0);
  80.104 +	sy = s_curve(ry0);
  80.105 +
  80.106 +#define at2(rx,ry) ( rx * q[0] + ry * q[1] )
  80.107 +
  80.108 +	q = g2[ b00 ] ; u = at2(rx0,ry0);
  80.109 +	q = g2[ b10 ] ; v = at2(rx1,ry0);
  80.110 +	a = lerp(sx, u, v);
  80.111 +
  80.112 +	q = g2[ b01 ] ; u = at2(rx0,ry1);
  80.113 +	q = g2[ b11 ] ; v = at2(rx1,ry1);
  80.114 +	b = lerp(sx, u, v);
  80.115 +
  80.116 +	return lerp(sy, a, b);
  80.117 +}
  80.118 +
  80.119 +float noise3(float vec[3])
  80.120 +{
  80.121 +	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
  80.122 +	float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
  80.123 +	register i, j;
  80.124 +
  80.125 +	if (start) {
  80.126 +		start = 0;
  80.127 +		init();
  80.128 +	}
  80.129 +
  80.130 +//	setup(0, bx0,bx1, rx0,rx1);
  80.131 +//	setup(1, by0,by1, ry0,ry1);
  80.132 +//	setup(2, bz0,bz1, rz0,rz1);
  80.133 +
  80.134 +	i = p[ bx0 ];
  80.135 +	j = p[ bx1 ];
  80.136 +
  80.137 +	b00 = p[ i + by0 ];
  80.138 +	b10 = p[ j + by0 ];
  80.139 +	b01 = p[ i + by1 ];
  80.140 +	b11 = p[ j + by1 ];
  80.141 +
  80.142 +	t  = s_curve(rx0);
  80.143 +	sy = s_curve(ry0);
  80.144 +	sz = s_curve(rz0);
  80.145 +
  80.146 +#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
  80.147 +
  80.148 +	q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
  80.149 +	q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
  80.150 +	a = lerp(t, u, v);
  80.151 +
  80.152 +	q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
  80.153 +	q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
  80.154 +	b = lerp(t, u, v);
  80.155 +
  80.156 +	c = lerp(sy, a, b);
  80.157 +
  80.158 +	q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
  80.159 +	q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
  80.160 +	a = lerp(t, u, v);
  80.161 +
  80.162 +	q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
  80.163 +	q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
  80.164 +	b = lerp(t, u, v);
  80.165 +
  80.166 +	d = lerp(sy, a, b);
  80.167 +
  80.168 +	return lerp(sz, c, d);
  80.169 +}
  80.170 +
  80.171 +static void normalize2(float v[2])
  80.172 +{
  80.173 +	float s;
  80.174 +
  80.175 +  s = Sqrt(v[0] * v[0] + v[1] * v[1]);
  80.176 +	v[0] = v[0] / s;
  80.177 +	v[1] = v[1] / s;
  80.178 +}
  80.179 +
  80.180 +static void normalize3(float v[3])
  80.181 +{
  80.182 +	float s;
  80.183 +
  80.184 +	s = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
  80.185 +	v[0] = v[0] / s;
  80.186 +	v[1] = v[1] / s;
  80.187 +	v[2] = v[2] / s;
  80.188 +}
  80.189 +
  80.190 +static void init(void)
  80.191 +{
  80.192 +	int i, j, k;
  80.193 +
  80.194 +	for (i = 0 ; i < B ; i++) {
  80.195 +		p[i] = i;
  80.196 +
  80.197 +    g1[i] = (float)((Random() % (B + B)) - B) / B;
  80.198 +
  80.199 +		for (j = 0 ; j < 2 ; j++)
  80.200 +			g2[i][j] = (float)((Random() % (B + B)) - B) / B;
  80.201 +		normalize2(g2[i]);
  80.202 +
  80.203 +		for (j = 0 ; j < 3 ; j++)
  80.204 +			g3[i][j] = (float)((Random() % (B + B)) - B) / B;
  80.205 +		normalize3(g3[i]);
  80.206 +	}
  80.207 +
  80.208 +	while (--i) {
  80.209 +		k = p[i];
  80.210 +		p[i] = p[j = Random() % B];
  80.211 +		p[j] = k;
  80.212 +	}
  80.213 +
  80.214 +	for (i = 0 ; i < B + 2 ; i++) {
  80.215 +		p[B + i] = p[i];
  80.216 +		g1[B + i] = g1[i];
  80.217 +		for (j = 0 ; j < 2 ; j++)
  80.218 +			g2[B + i][j] = g2[i][j];
  80.219 +		for (j = 0 ; j < 3 ; j++)
  80.220 +			g3[B + i][j] = g3[i][j];
  80.221 +	}
  80.222 +}
  80.223 +
  80.224 +
  80.225 +
  80.226 +float noise2d(float _x,float _y)
  80.227 +{
  80.228 +  float a[2]={_x,_y};
  80.229 +  return noise2(a);
  80.230 +}
  80.231 +
  80.232 +
  80.233 +
  80.234 +}
  80.235 \ No newline at end of file
    81.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.2 +++ b/mth_perlin.h	Tue Nov 27 15:23:52 2007 +0100
    81.3 @@ -0,0 +1,27 @@
    81.4 +/** @file   mth_perlin.h
    81.5 + *
    81.6 + * @brief   perlin noise class
    81.7 + *
    81.8 + *****************************************************************************
    81.9 + *
   81.10 + * @author  original by [stv] modified by psc80
   81.11 + *
   81.12 + * @date    Created 2003/08
   81.13 + *
   81.14 + * @version $Id: mth_perlin.h,v 1.3 2004/01/10 22:38:31 psc80 Exp $
   81.15 + *
   81.16 + ****************************************************************************/
   81.17 +
   81.18 +#ifndef MTH_PERLIN_H
   81.19 +#define MTH_PERLIN_H
   81.20 +
   81.21 +
   81.22 +#include "mth.h"
   81.23 +
   81.24 +namespace mth {
   81.25 +
   81.26 +  float noise2d(float _x,float _y);
   81.27 +
   81.28 +}
   81.29 +
   81.30 +#endif 
    82.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.2 +++ b/mth_plane3.h	Tue Nov 27 15:23:52 2007 +0100
    82.3 @@ -0,0 +1,126 @@
    82.4 +/** @file   mth_plane3.h
    82.5 + *
    82.6 + * @brief   Oriented plane
    82.7 + *
    82.8 + *****************************************************************************
    82.9 + *
   82.10 + * @author  Cedric Pinson
   82.11 + *
   82.12 + * @date    Created 2001/08
   82.13 + *
   82.14 + * @version $Id: mth_plane3.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $
   82.15 + *
   82.16 + ****************************************************************************/
   82.17 +
   82.18 +#ifndef MTH_PLANE3_H
   82.19 +#define MTH_PLANE3_H
   82.20 +
   82.21 +#include "mth_vector3.h"
   82.22 +
   82.23 +
   82.24 +
   82.25 +/** Oriented plane
   82.26 + *
   82.27 + * An oriented plane is described by a normal and a signed distance to the
   82.28 + * origin with respect to this normal. 
   82.29 + *
   82.30 + */
   82.31 +namespace mth {
   82.32 +
   82.33 +  struct Plane3_t {
   82.34 +
   82.35 +    /// Normal of plane
   82.36 +    Vector3_t normal;
   82.37 +
   82.38 +    /// position on axis
   82.39 +    float pos;
   82.40 +
   82.41 +
   82.42 +    /** Default constructor*/
   82.43 +    Plane3_t() { }
   82.44 +
   82.45 +
   82.46 +    /** Initialize a plane with a normal and a signed position*/
   82.47 +    Plane3_t(const Vector3_t& n, const float p) : normal(n), pos(p) { }
   82.48 +
   82.49 +
   82.50 +
   82.51 +    Plane3_t(const Plane3_t& v)
   82.52 +      { normal=v.normal; pos=v.pos; }
   82.53 +
   82.54 +
   82.55 +    /** Initialise a plane passing through three points v, v1 and v2
   82.56 +     *
   82.57 +     * @param v  point to pass through
   82.58 +     * @param v1 point to pass through
   82.59 +     * @param v2 point to pass through
   82.60 +     *
   82.61 +     * @return 0 if no error, -1 if the plane could not be determined 
   82.62 +     *
   82.63 +     */
   82.64 +    int Init(const Vector3_t& v, const Vector3_t& v1, const Vector3_t& v2) {
   82.65 +      normal = (v1-v).Cross((v2-v));
   82.66 +      if (normal.Normalize() < 0) return -1;
   82.67 +      pos = v.Dot(normal);
   82.68 +      return 0;
   82.69 +    }
   82.70 +
   82.71 +
   82.72 +    /** Initialize a plane with a normal and a signed position*/
   82.73 +    void Init(const Vector3_t& n, const float p) { normal=n; pos=p; }
   82.74 +
   82.75 +
   82.76 +    /** Initialize a plane with a normal and a signed position*/
   82.77 +    void Init(const Plane3_t& n) { normal=n.normal; pos=n.pos; }
   82.78 +
   82.79 +
   82.80 +
   82.81 +    /** Initialize a plane with a normal and a vector*/
   82.82 +    void Init(const Vector3_t& n, const Vector3_t &p) { normal=n; pos=n*p ; }
   82.83 +
   82.84 +
   82.85 +
   82.86 +    /** Constructor from three points*/
   82.87 +    Plane3_t(const Vector3_t& v, const Vector3_t& v1, const Vector3_t& v2) {
   82.88 +      Init(v, v1, v2);
   82.89 +    }
   82.90 +
   82.91 +
   82.92 +    /** Return the signed distance of a point from the plane.
   82.93 +     *
   82.94 +     * @param p Point to test
   82.95 +     *
   82.96 +     * @return positive if in the front half space, negative otherwise.
   82.97 +     *
   82.98 +     */
   82.99 +    float Dist(const Vector3_t& p) const {
  82.100 +      return p.Dot(normal) - pos;  }
  82.101 +
  82.102 +
  82.103 +    /// Return normal
  82.104 +    const Vector3_t& Direction() const { return normal;}
  82.105 +
  82.106 +    /// Return position on axis
  82.107 +    const float& Position() const { return pos;}
  82.108 +
  82.109 +
  82.110 +    /** unari minus operator*/
  82.111 +    const Plane3_t operator - () const {
  82.112 +      return Plane3_t(-normal, -pos);  }
  82.113 +
  82.114 +
  82.115 +    /** operator translation*/
  82.116 +    const Plane3_t operator + (const Vector3_t & v) const {
  82.117 +      return Plane3_t(normal, pos + v.Dot(normal));
  82.118 +    }
  82.119 +
  82.120 +
  82.121 +    /** operator translation inverse*/
  82.122 +    const Plane3_t operator - (const Vector3_t & v) const {
  82.123 +      return Plane3_t(normal, pos - v.Dot(normal));
  82.124 +    }
  82.125 +
  82.126 +  };
  82.127 +
  82.128 +}
  82.129 +#endif
    83.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.2 +++ b/mth_quaternion.h	Tue Nov 27 15:23:52 2007 +0100
    83.3 @@ -0,0 +1,182 @@
    83.4 +/** @file   mth_quaternion.h
    83.5 + *
    83.6 + * @brief   quaternion class
    83.7 + *
    83.8 + *****************************************************************************
    83.9 + *
   83.10 + * @author  psc80
   83.11 + *
   83.12 + * @date    Created 2001/05
   83.13 + *
   83.14 + * @version $Id: mth_quaternion.h,v 1.1 2004/01/18 07:16:45 psc80 Exp $
   83.15 + *
   83.16 + ****************************************************************************/
   83.17 +
   83.18 +#ifndef MTH_QUATERNION_H
   83.19 +#define MTH_QUATERNION_H
   83.20 +
   83.21 +#include <cmath>
   83.22 +#include "mth.h"
   83.23 +#include "mth_vector3.h"
   83.24 +
   83.25 +namespace mth {
   83.26 +
   83.27 +
   83.28 +  /**
   83.29 +   *  Class Quaternion, essentially used for rotation in some cases @see phy
   83.30 +   */
   83.31 +  class Quaternion_t {
   83.32 +
   83.33 +    float n;
   83.34 +    Vector3_t v;
   83.35 +
   83.36 +   public:
   83.37 +
   83.38 +    /// do nothing
   83.39 +    Quaternion_t() {}
   83.40 +
   83.41 +
   83.42 +    /// constructor with four scalar
   83.43 +     Quaternion_t(const float& _n,const float& _v0, const float& _v1, const float& _v2) {n=_n;v.Init(_v0,_v1,_v2);}
   83.44 +
   83.45 +
   83.46 +    /// constructor with n and a vector3
   83.47 +     Quaternion_t(const float& _n,const Vector3_t& _v) {n=_n;v=_v;}
   83.48 +
   83.49 +
   83.50 +    /// Constructor with three scalar to build a rotation quaternion
   83.51 +     Quaternion_t(const float& _y,const float& _p,const float& _r) { MakeFromEuler(_y,_p,_r);}
   83.52 +
   83.53 +
   83.54 +    /// Set the quaternion to 0
   83.55 +     void Init() { n=0;v.Init();}
   83.56 +
   83.57 +
   83.58 +    /// Return the scalar part of the quaternion
   83.59 +     const float& Scalar() { return n;}
   83.60 +
   83.61 +
   83.62 +    /// Return the vector part of the quaternion
   83.63 +     const Vector3_t& Vector() { return v;}
   83.64 +
   83.65 +
   83.66 +    /// return the magnitude squared
   83.67 +     float MagSqr() { return v.MagSqr()+n*n;}
   83.68 +
   83.69 +
   83.70 +    /// return the magnitude
   83.71 +     float Mag() { return Sqrt(MagSqr());}
   83.72 +
   83.73 +
   83.74 +    /// Return a conjugate quaternion
   83.75 +     Quaternion_t Conjugate() const { return Quaternion_t(n,-v);}
   83.76 +
   83.77 +
   83.78 +    /// Normalize
   83.79 +     void Normalize() { float a=1.0/Mag();n*=a;v*=a;}
   83.80 +
   83.81 +
   83.82 +
   83.83 +    /// Rotate a vector
   83.84 +     Vector3_t Rotate(const Vector3_t& _v) const {
   83.85 +      return ((*this)*_v*Conjugate()).Vector();}
   83.86 +
   83.87 +
   83.88 +    /// Rotate a vector
   83.89 +     //Quaternion_t Rotate(const Quaternion_t& _q) const {
   83.90 +     // return ((*this)*_q*Conjugate()).Vector();}
   83.91 +    
   83.92 +
   83.93 +    /// Return the angle of rotation about the axis represented by the vector part
   83.94 +     float Angle() { return ACos(n);}
   83.95 +
   83.96 +
   83.97 +    /// Return a unit vector along the axis of rotation represented by the vector part
   83.98 +     Vector3_t Axis() { 
   83.99 +      float m=v.Mag();
  83.100 +      if (m<=(float)0.0)
  83.101 +        return v;
  83.102 +      return v*(1.0/m);}
  83.103 +
  83.104 +
  83.105 +
  83.106 +     void MakeFromEuler(const float& _y,const float& _p,const float& _r) {
  83.107 +      Quaternion_t roll( Cos(_r*0.5), Vector3_t(Sin(_r*0.5),0,0));
  83.108 +      Quaternion_t pitch( Cos(_p*0.5), Vector3_t(0,Sin(_p*0.5),0));
  83.109 +      Quaternion_t yaw( Cos(_y*0.5), Vector3_t(0,0,Sin(_y*0.5)));
  83.110 +      (*this)=yaw*pitch*roll;
  83.111 +    }
  83.112 +
  83.113 +
  83.114 +    /// multiplication operator
  83.115 +     Quaternion_t operator * (const Vector3_t& _v) const {
  83.116 +      Quaternion_t r(0,_v);
  83.117 +      return (*this)*r;}
  83.118 +
  83.119 +
  83.120 +    /// Multiplication operator
  83.121 +     Quaternion_t operator * (const Quaternion_t& _q) const {
  83.122 +      return Quaternion_t( n*_q.n - ( v*_q.v ),
  83.123 +                           n*_q.v[0] + v[0]*_q.n + v[1]*_q.v[2] - v[2]*_q.v[1],
  83.124 +                           n*_q.v[1] + v[1]*_q.n + v[2]*_q.v[0] - v[0]*_q.v[2],
  83.125 +                           n*_q.v[2] + v[2]*_q.n + v[0]*_q.v[1] - v[1]*_q.v[0]);}
  83.126 +
  83.127 +    /// Multiplication operator
  83.128 +     Quaternion_t operator * ( const float& _v ) const {
  83.129 +      return Quaternion_t(n*_v,v*_v);}
  83.130 +    
  83.131 +
  83.132 +    /// Add two quaternion
  83.133 +     Quaternion_t operator + (const Quaternion_t& _q) const {
  83.134 +      return Quaternion_t(n+_q.n,v+_q.v); }
  83.135 +
  83.136 +
  83.137 +    /// Sub two quaternion
  83.138 +     Quaternion_t operator - (const Quaternion_t& _q) const {
  83.139 +      return Quaternion_t(n-_q.n,v-_q.v); }
  83.140 +
  83.141 +
  83.142 +
  83.143 +    /// Comparaison operator ==
  83.144 +     bool operator == ( const Quaternion_t& _q ) const {
  83.145 +      return n == _q.n && v==_q.v;  }
  83.146 +
  83.147 +
  83.148 +    /// Comparaison operator !=
  83.149 +     bool operator != ( const Quaternion_t& _q ) const {
  83.150 +      return !(*this==_q); }
  83.151 +
  83.152 +
  83.153 +    /// += operator
  83.154 +     const Quaternion_t& operator += ( const Quaternion_t& _q ) {
  83.155 +      n+=_q.n; v+=_q.v; return *this;}
  83.156 +
  83.157 +
  83.158 +    /// -= operator
  83.159 +     const Quaternion_t& operator -= ( const Quaternion_t& _q ) {
  83.160 +      n-=_q.n; v-=_q.v; return *this;}
  83.161 +
  83.162 +
  83.163 +    /// *= operator
  83.164 +     const Quaternion_t& operator *= ( const float& _v ) {
  83.165 +      n*=_v; v*=_v; return *this;}
  83.166 +
  83.167 +
  83.168 +    /// /= operator
  83.169 +     const Quaternion_t& operator /= ( const float& _v ) {
  83.170 +      float a=(float)1.0/_v;
  83.171 +      n*=a; v*=a; return *this;}
  83.172 +
  83.173 +
  83.174 +    /// Operator -
  83.175 +     Quaternion_t operator - () const {
  83.176 +      return Quaternion_t(-n,-v);}
  83.177 +
  83.178 +
  83.179 +  };
  83.180 +
  83.181 +
  83.182 +}
  83.183 +
  83.184 +
  83.185 +#endif
    84.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.2 +++ b/mth_vector2.h	Tue Nov 27 15:23:52 2007 +0100
    84.3 @@ -0,0 +1,89 @@
    84.4 +/** @file   mth_vector3.h
    84.5 + *
    84.6 + * @brief   3 dimensional vectors
    84.7 + *
    84.8 + *****************************************************************************
    84.9 + *
   84.10 + * @author  psc80
   84.11 + *
   84.12 + * @date    Created 2001/05
   84.13 + *
   84.14 + * @version $Id: mth_vector2.h,v 1.3 2004/01/23 07:16:09 psc80 Exp $
   84.15 + *
   84.16 + ****************************************************************************/
   84.17 +
   84.18 +#ifndef MTH_VECTOR2_H
   84.19 +#define MTH_VECTOR2_H
   84.20 +
   84.21 +
   84.22 +#include <cmath>
   84.23 +#include "mth.h"
   84.24 +#include "sys_assert.h"
   84.25 +
   84.26 +namespace mth {
   84.27 +
   84.28 +  
   84.29 +  class Vector2_t {
   84.30 +
   84.31 +   protected:
   84.32 +
   84.33 +    float c[2];
   84.34 +   
   84.35 +   public:
   84.36 +
   84.37 +
   84.38 +    /// do nothing
   84.39 +    Vector2_t() {}
   84.40 +
   84.41 +
   84.42 +    /// constructo with scalar
   84.43 +    Vector2_t(float _a,float _b) {
   84.44 +      c[0]=_a;c[1]=_b;
   84.45 +    }
   84.46 +
   84.47 +
   84.48 +
   84.49 +    /// Initialize the vector with another vector
   84.50 +    Vector2_t(const Vector2_t& _v) {
   84.51 +      c[0]=_v.c[0];c[1]=_v.c[1];
   84.52 +    }
   84.53 +
   84.54 +
   84.55 +    /// Set the vector to 0
   84.56 +     void Init() {
   84.57 +      c[0]=0; c[1]=0;
   84.58 +    }
   84.59 +
   84.60 +
   84.61 +     void Init(float _i,float _j) {c[0]=_i;c[1]=_j;}
   84.62 +
   84.63 +    /// Coordinates accessor operator
   84.64 +     float& operator [] (const int& _i) { return c[_i]; }
   84.65 +
   84.66 +    
   84.67 +    /// Const coordinates accessor operator
   84.68 +     const float& operator [] (const int& _i) const { return c[_i]; }
   84.69 +
   84.70 +
   84.71 +    /// Substract of two vectors
   84.72 +     Vector2_t operator - (const Vector2_t& _v) const {
   84.73 +      return Vector2_t(c[0]-_v.c[0],c[1]-_v.c[1]);
   84.74 +    }
   84.75 +
   84.76 +
   84.77 +     /// Addition of two vectors
   84.78 +     Vector2_t operator + (const Vector2_t& _v) const {
   84.79 +      return Vector2_t(c[0]+_v.c[0],c[1]+_v.c[1]);
   84.80 +    }
   84.81 +
   84.82 +
   84.83 +	 typedef const float* ConversionForGL;
   84.84 +	 operator ConversionForGL() const { return &c[0];}
   84.85 +
   84.86 +
   84.87 +  };
   84.88 +
   84.89 +
   84.90 +}
   84.91 +
   84.92 +#endif
    85.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.2 +++ b/mth_vector3.h	Tue Nov 27 15:23:52 2007 +0100
    85.3 @@ -0,0 +1,238 @@
    85.4 +/** @file   mth_vector3.h
    85.5 + *
    85.6 + * @brief   3 dimensional vectors
    85.7 + *
    85.8 + *****************************************************************************
    85.9 + *
   85.10 + * @author  psc80
   85.11 + *
   85.12 + * @date    Created 2001/05
   85.13 + *
   85.14 + * @version $Id: mth_vector3.h,v 1.3 2004/01/22 10:53:04 psc80 Exp $
   85.15 + *
   85.16 + ****************************************************************************/
   85.17 +
   85.18 +#ifndef MTH_VECTOR3_H
   85.19 +#define MTH_VECTOR3_H
   85.20 +
   85.21 +
   85.22 +#include <cmath>
   85.23 +#include "mth.h"
   85.24 +#include "sys_assert.h"
   85.25 +
   85.26 +namespace mth {
   85.27 +
   85.28 +  
   85.29 +  class Vector3_t {
   85.30 +
   85.31 +   protected:
   85.32 +
   85.33 +    float c[3];
   85.34 +   
   85.35 +   public:
   85.36 +
   85.37 +
   85.38 +    /// do nothing
   85.39 +    Vector3_t() {}
   85.40 +
   85.41 +
   85.42 +    /// constructo with scalar
   85.43 +    Vector3_t(float _a,float _b,float _c) {
   85.44 +      Init(_a,_b,_c);
   85.45 +    }
   85.46 +
   85.47 +
   85.48 +
   85.49 +    /// Initialize the vector with another vector
   85.50 +    Vector3_t(const Vector3_t& _v) {
   85.51 +      c[0]=(float)_v[0]; c[1]=(float)_v[1]; c[2]=(float)_v[2];
   85.52 +    }
   85.53 +
   85.54 +
   85.55 +    void InitRandomVectorInBox(float _sizeBox) {
   85.56 +      for (int j=0;j<3;j++)
   85.57 +        c[j]=-_sizeBox/2 + (_sizeBox*mth::Rand()/(mth::RANDOM_MAX+1));
   85.58 +    }
   85.59 +
   85.60 +
   85.61 +    /// Set the vector to 0
   85.62 +     void Init() {
   85.63 +      c[0]=0; c[1]=0; c[2]=0;
   85.64 +    }
   85.65 +
   85.66 +
   85.67 +    /// Set the vector to 0
   85.68 +     void Init(float _a,float _b,float _c) {
   85.69 +      c[0]=_a; c[1]=_b; c[2]=_c;
   85.70 +    }
   85.71 +
   85.72 +
   85.73 +    /// Initialize the vector with another vector
   85.74 +    void Init(const Vector3_t& _v) {
   85.75 +      c[0]=(float)_v.c[0]; c[1]=(float)_v.c[1]; c[2]=(float)_v.c[2];
   85.76 +    }
   85.77 +
   85.78 +
   85.79 +
   85.80 +    /// Compute the dot product against another vector
   85.81 +     float Dot(const Vector3_t& _v) const {
   85.82 +      return c[0]*_v.c[0]+c[1]*_v.c[1]+c[2]*_v.c[2];
   85.83 +    }
   85.84 +
   85.85 +
   85.86 +
   85.87 +    /// Multiply by row
   85.88 +     Vector3_t Multiply(const Vector3_t& _v) const {
   85.89 +      return Vector3_t(c[0]*_v.c[0],c[1]*_v.c[1],c[2]*_v.c[2]);
   85.90 +    }
   85.91 +
   85.92 +
   85.93 +
   85.94 +    /// Return the squared magnitude (length) of the vector
   85.95 +     float MagSqr() const { 
   85.96 +      return c[0]*c[0]+c[1]*c[1]+c[2]*c[2];
   85.97 +    }
   85.98 +
   85.99 +
  85.100 +    /// Return the magnitude (length) of the vector
  85.101 +     float Mag() const { return Sqrt(MagSqr()); }
  85.102 +
  85.103 +
  85.104 +    
  85.105 +    /// Return the squared distance between two vectors
  85.106 +     float DistSqr(const Vector3_t& _v) const {
  85.107 +      return (*this-_v).MagSqr();}
  85.108 +
  85.109 +
  85.110 +    /// Return the distance between two vectors
  85.111 +     float Dist(const Vector3_t& _v) const {
  85.112 +      return (*this-_v).Mag(); }
  85.113 +
  85.114 +
  85.115 +
  85.116 +    
  85.117 +    /** Normalize this vector
  85.118 +     *
  85.119 +     * @return int 0 if succeded, -1 if the vector was zero or too small
  85.120 +     * (its squared magnitude was less than MTH_EPSILON)
  85.121 +     */
  85.122 +     int Normalize() {
  85.123 +      float a = MagSqr();
  85.124 +      SYS_ASSERT(a>=0);
  85.125 +      *this *= (float)(1./Sqrt(a));
  85.126 +      return 0;
  85.127 +    }
  85.128 +
  85.129 +
  85.130 +    /// Cross product
  85.131 +     Vector3_t Cross( const Vector3_t& _v ) const {
  85.132 +      return Vector3_t(c[1]*_v.c[2] - c[2]*_v.c[1], 
  85.133 +                       c[2]*_v.c[0] - c[0]*_v.c[2], 
  85.134 +                       c[0]*_v.c[1] - c[1]*_v.c[0]);
  85.135 +    }
  85.136 +
  85.137 +
  85.138 +
  85.139 +
  85.140 +
  85.141 +
  85.142 +     Vector3_t operator ^ (const Vector3_t& _v) const {
  85.143 +      return this->Cross(_v); }
  85.144 +
  85.145 +
  85.146 +    /// Coordinates accessor operator
  85.147 +     float& operator [] (int _i) { return c[_i]; }
  85.148 +
  85.149 +    
  85.150 +    /// Const coordinates accessor operator
  85.151 +     const float& operator [] (int _i) const { return c[_i]; }
  85.152 +
  85.153 +
  85.154 +    /// Operator * (dot product)
  85.155 +     float operator * (const Vector3_t& _v) const {
  85.156 +      return this->Dot(_v);}
  85.157 +
  85.158 +
  85.159 +    /// Addition of two vectors
  85.160 +     Vector3_t operator + (const Vector3_t& _v) const {
  85.161 +      return Vector3_t(c[0]+_v.c[0],c[1]+_v.c[1],c[2]+_v.c[2]);
  85.162 +    }
  85.163 +
  85.164 +
  85.165 +    /// Substract of two vectors
  85.166 +     Vector3_t operator - (const Vector3_t& _v) const {
  85.167 +      return Vector3_t(c[0]-_v.c[0],c[1]-_v.c[1],c[2]-_v.c[2]);
  85.168 +    }
  85.169 +
  85.170 +
  85.171 +    /// Comparaison operator
  85.172 +    bool operator == ( const Vector3_t& _v ) const {
  85.173 +      return c[0]==_v.c[0] && c[1]==_v.c[1] && c[2]==_v.c[2];
  85.174 +    }
  85.175 +
  85.176 +
  85.177 +    /// Comparaison operator
  85.178 +    bool operator != ( const Vector3_t& _v ) const {
  85.179 +      return !(*this==_v);}
  85.180 +
  85.181 +
  85.182 +    /// += operator
  85.183 +     const Vector3_t& operator += ( const Vector3_t& _v ) {
  85.184 +      c[0]+=_v.c[0]; c[1]+=_v.c[1]; c[2]+=_v.c[2];
  85.185 +      return *this;}
  85.186 +
  85.187 +
  85.188 +    /// -= operator
  85.189 +     const Vector3_t& operator -= ( const Vector3_t& _v ) {
  85.190 +      c[0]-=_v.c[0]; c[1]-=_v.c[1]; c[2]-=_v.c[2];
  85.191 +      return *this;}
  85.192 +
  85.193 +
  85.194 +    /// *= operator
  85.195 +     const Vector3_t& operator *= ( const float& _v ) {
  85.196 +      c[0]*=_v; c[1]*=_v; c[2]*=_v;
  85.197 +      return *this;}
  85.198 +
  85.199 +
  85.200 +    /// /= operator
  85.201 +     const Vector3_t& operator /= ( const float& _v ) {
  85.202 +      float a=(float)1.0/_v;
  85.203 +      c[0]*=a; c[1]*=a; c[2]*=a;
  85.204 +      return *this;}
  85.205 +
  85.206 +
  85.207 +
  85.208 +    /// Operator -
  85.209 +     Vector3_t operator - () const {
  85.210 +      return Vector3_t(-c[0],-c[1],-c[2]);
  85.211 +    }
  85.212 +
  85.213 +
  85.214 +    /// Mutliplication by a scalar value (to the right)
  85.215 +     Vector3_t operator * ( const float& _a) const {
  85.216 +      return Vector3_t(c[0]*_a,c[1]*_a,c[2]*_a);
  85.217 +    }
  85.218 +
  85.219 +
  85.220 +    /// Division by a scalar value
  85.221 +     Vector3_t operator / (const float& _v) const {
  85.222 +      float a=(float)1.0/_v;
  85.223 +      return Vector3_t(c[0]*a,c[1]*a,c[2]*a);
  85.224 +    }
  85.225 +
  85.226 +
  85.227 +
  85.228 +	 typedef const float* ConversionForGL;
  85.229 +	 operator ConversionForGL() const { return &c[0];}
  85.230 +
  85.231 +
  85.232 +  };
  85.233 +
  85.234 +
  85.235 +//  Vector3_t operator * (const float& _a, const Vector3_t& _v) {
  85.236 +//    return Vector3_t(_a*_v[0], _a*_v[1], _a*_v[2]); }
  85.237 +
  85.238 +
  85.239 +}
  85.240 +
  85.241 +#endif
    86.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.2 +++ b/phy.h	Tue Nov 27 15:23:52 2007 +0100
    86.3 @@ -0,0 +1,19 @@
    86.4 +/** @file   phy.h
    86.5 + *
    86.6 + * @brief   physic types ...
    86.7 + *
    86.8 + *****************************************************************************
    86.9 + *
   86.10 + * @author  psc80
   86.11 + *
   86.12 + * @date    Created 2003/02
   86.13 + *
   86.14 + * @version $Id: phy.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $
   86.15 + *
   86.16 + ****************************************************************************/
   86.17 +
   86.18 +#ifndef PHY_H
   86.19 +#define PHY_H
   86.20 +
   86.21 +
   86.22 +#endif
    87.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.2 +++ b/phy_element.h	Tue Nov 27 15:23:52 2007 +0100
    87.3 @@ -0,0 +1,127 @@
    87.4 +/** @file   phy_element.h
    87.5 + *
    87.6 + * @brief    element base class
    87.7 + *
    87.8 + *****************************************************************************
    87.9 + *
   87.10 + * @author  psc80
   87.11 + *
   87.12 + * @date    Created 2003/02
   87.13 + *
   87.14 + * @version $Id: phy_element.h,v 1.5 2004/01/14 20:36:54 psc80 Exp $
   87.15 + *
   87.16 + ****************************************************************************/
   87.17 +
   87.18 +#ifndef PHY_ELEMENT_H
   87.19 +#define PHY_ELEMENT_H
   87.20 +
   87.21 +
   87.22 +#include "sys_assert.h"
   87.23 +#include "mth_vector3.h"
   87.24 +
   87.25 +
   87.26 +namespace phy {
   87.27 +
   87.28 +  class Element_t
   87.29 +  {
   87.30 +
   87.31 +    mth::Vector3_t position;
   87.32 +    mth::Vector3_t force;
   87.33 +    mth::Vector3_t velocity;
   87.34 +    float mass;
   87.35 +
   87.36 +    bool blocked;
   87.37 +
   87.38 +    void Init() {
   87.39 +      position.Init();
   87.40 +      force.Init();
   87.41 +      velocity.Init();
   87.42 +      mass=1;
   87.43 +      blocked=false;
   87.44 +    }
   87.45 +
   87.46 +   public:
   87.47 +
   87.48 +
   87.49 +    Element_t() { Init();}
   87.50 +    ~Element_t() {}
   87.51 +
   87.52 +    void Blocked() { blocked=true;}
   87.53 +    bool IsBlocked() { return blocked;}
   87.54 +
   87.55 +    void Mass(float _m) { mass=_m;}
   87.56 +    float Mass() const { return mass;}
   87.57 +
   87.58 +    void Position(const mth::Vector3_t& _pos) { position=_pos;}
   87.59 +    const mth::Vector3_t& Position() const { return position;}
   87.60 +    mth::Vector3_t& Position() { return position;}
   87.61 +
   87.62 +    void InitForce() { force.Init();}
   87.63 +    void ApplyForce(const mth::Vector3_t& _f) { force+=_f;}
   87.64 +
   87.65 +
   87.66 +    mth::Vector3_t& Velocity() { return velocity;}
   87.67 +    const mth::Vector3_t& Velocity() const { return velocity;}
   87.68 +    void Velocity(const mth::Vector3_t& _vel) {velocity=_vel;}
   87.69 +    void Update(double _dt) {
   87.70 +      SYS_ASSERT(mass>0);
   87.71 +      mth::Vector3_t acceleration=force/mass;
   87.72 +      velocity+=acceleration*_dt;
   87.73 +      position+=velocity*_dt;
   87.74 +    }
   87.75 +
   87.76 +  };
   87.77 +
   87.78 +
   87.79 +
   87.80 +  class SpringDamper_t {
   87.81 +
   87.82 +    Element_t* link[2];
   87.83 +
   87.84 +    float ks,kd;
   87.85 +    float l;
   87.86 +
   87.87 +
   87.88 +    void Init() { 
   87.89 +      link[0]=link[1]=0;
   87.90 +      ks=kd=0;
   87.91 +    }
   87.92 +
   87.93 +   public:
   87.94 +
   87.95 +    SpringDamper_t() { Init(); }
   87.96 +
   87.97 +    void Init(float _ks, float _kd,float _l) { ks=_ks;kd=_kd;l=_l;}
   87.98 +    void Init(Element_t* _e0, Element_t* _e1) { link[0]=_e0;link[1]=_e1;}
   87.99 +    
  87.100 +    void Update(/*double _dt*/) {
  87.101 +
  87.102 +      SYS_ASSERT(link[0] && link[1]);
  87.103 +      mth::Vector3_t L=link[0]->Position()-link[1]->Position();
  87.104 +      mth::Vector3_t vel=link[0]->Velocity()-link[1]->Velocity();
  87.105 +
  87.106 +      float magL=L.MagSqr();
  87.107 +      if (magL>1e-5)
  87.108 +        magL=mth::Sqrt(magL);
  87.109 +      //L*=1.0/magL;
  87.110 +
  87.111 +      float springTension=((magL-l)*(ks));
  87.112 +//      mth::Vector3_t force=L*((magL-l)*(-ks));
  87.113 +
  87.114 +      float val=(springTension + ( (vel*L)*kd / magL ))/magL ;
  87.115 +      //val=mth::Sign(val)*mth::Abs(mth::Min(50,val));
  87.116 +      mth::Vector3_t force= L * (-val);
  87.117 +
  87.118 +      if (!link[0]->IsBlocked())
  87.119 +        link[0]->ApplyForce(force);
  87.120 +      if (!link[1]->IsBlocked())
  87.121 +        link[1]->ApplyForce(-force);
  87.122 +
  87.123 +    }
  87.124 +
  87.125 +  };
  87.126 +
  87.127 +
  87.128 +}
  87.129 +
  87.130 +#endif 
    88.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    88.2 +++ b/phy_server.cxx	Tue Nov 27 15:23:52 2007 +0100
    88.3 @@ -0,0 +1,82 @@
    88.4 +/** @file   phy_server.cxx
    88.5 + *
    88.6 + * @brief   server for solving physic entity
    88.7 + *
    88.8 + *****************************************************************************
    88.9 + *
   88.10 + * @author  psc80
   88.11 + *
   88.12 + * @date    Created 2003/11
   88.13 + *
   88.14 + * @version $Id: phy_server.cxx,v 1.4 2004/01/18 04:06:08 psc80 Exp $
   88.15 + *
   88.16 + ****************************************************************************/
   88.17 +
   88.18 +#include "phy_server.h"
   88.19 +
   88.20 +namespace phy {
   88.21 +
   88.22 +  const int MaxLinks=16384;
   88.23 +  const int MaxElements=16384*2;
   88.24 +
   88.25 +
   88.26 +  typedef SpringDamper_t* SDptr_t;
   88.27 +  typedef Element_t* Eptr_t;
   88.28 +
   88.29 +  Server_t::Server_t() 
   88.30 +  {
   88.31 +    links=new SDptr_t[MaxLinks];
   88.32 +    elements=new Eptr_t[MaxElements];
   88.33 +    Init();
   88.34 +  }
   88.35 +
   88.36 +  void Server_t::Init() 
   88.37 +  {
   88.38 +    nbLinks=0;
   88.39 +    nbElements=0;
   88.40 +  }
   88.41 +
   88.42 +
   88.43 +  void Server_t::StartForceSession()
   88.44 +  {
   88.45 +    mth::Vector3_t gravity(0,-38.81,0);
   88.46 +    for (int i=0;i<nbElements;i++) {
   88.47 +      elements[i]->InitForce();
   88.48 +      elements[i]->ApplyForce(gravity*elements[i]->Mass());
   88.49 +    }
   88.50 +  }
   88.51 +
   88.52 +
   88.53 +  void Server_t::EndForceSession()
   88.54 +  {
   88.55 +    for (int i=0;i<nbLinks;i++)
   88.56 +      links[i]->Update();
   88.57 +  }
   88.58 +
   88.59 +
   88.60 +  int Server_t::Try1(const double& _dt)
   88.61 +  {
   88.62 +    for (int j=0;j<nbElements;j++)
   88.63 +      if (!elements[j]->IsBlocked())
   88.64 +        elements[j]->Update(_dt);
   88.65 +
   88.66 +    return 0;
   88.67 +  }
   88.68 +
   88.69 +
   88.70 +
   88.71 +  void Server_t::AddElement(Element_t* _element) 
   88.72 +  { 
   88.73 +    elements[nbElements++]=_element;
   88.74 +    SYS_ASSERT(_element && nbElements<MaxElements && "Too many elements increase MaxElements");
   88.75 +  }
   88.76 +
   88.77 +
   88.78 +  void Server_t::AddLink(SpringDamper_t* _element) 
   88.79 +  { 
   88.80 +    links[nbLinks++]=_element;
   88.81 +    SYS_ASSERT(_element && nbLinks<MaxLinks && "Too many links increase MaxLinks");
   88.82 +  }
   88.83 +
   88.84 +
   88.85 +}
    89.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    89.2 +++ b/phy_server.h	Tue Nov 27 15:23:52 2007 +0100
    89.3 @@ -0,0 +1,194 @@
    89.4 +/** @file   phy_server.h
    89.5 + *
    89.6 + * @brief   server for solving physic entity
    89.7 + *
    89.8 + *****************************************************************************
    89.9 + *
   89.10 + * @author  psc80
   89.11 + *
   89.12 + * @date    Created 2003/11
   89.13 + *
   89.14 + * @version $Id: phy_server.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $
   89.15 + *
   89.16 + ****************************************************************************/
   89.17 +
   89.18 +#ifndef PHY_SERVER_H
   89.19 +#define PHY_SERVER_H
   89.20 +
   89.21 +#include "phy.h"
   89.22 +#include "phy_element.h"
   89.23 +
   89.24 +
   89.25 +namespace phy {
   89.26 +
   89.27 +
   89.28 +  class Server_t
   89.29 +  {
   89.30 +
   89.31 +    SpringDamper_t** links;
   89.32 +    Element_t** elements;
   89.33 +    
   89.34 +    
   89.35 +    int nbLinks;
   89.36 +    int nbElements;
   89.37 +
   89.38 +
   89.39 +    void Init();
   89.40 +
   89.41 +   public:
   89.42 +
   89.43 +
   89.44 +    Server_t();
   89.45 +
   89.46 +    int Try1(const double& _dt);
   89.47 +    void StartForceSession();
   89.48 +    void EndForceSession();
   89.49 +
   89.50 +#if 0
   89.51 +    /// Return the state of the simulation
   89.52 +    int Try(const float& _dt) {
   89.53 +
   89.54 +      nbCollisions=0;
   89.55 +      nbPenetrations=0;
   89.56 +      nbContacts=0;
   89.57 +
   89.58 +        for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++)
   89.59 +          (*it)->Update(_dt);
   89.60 +      
   89.61 +        for (typename EntityContainer_t::iterator it1=entities.begin();it1!=entities.end();it1++) {
   89.62 +          for (typename EntityContainer_t::iterator it2=it1+1;it2!=entities.end();it2++)
   89.63 +            currentNbContacts+=CheckCollision(*it1,
   89.64 +                                              *it2,
   89.65 +                                              &contactElements[currentNbContacts],
   89.66 +                                              nbMaxContacts-currentNbContacts);
   89.67 +          
   89.68 +          for (typename EntityContainer_t::iterator it3=staticEntities.begin();it3!=staticEntities.end();it3++)
   89.69 +          currentNbContacts+=CheckCollision(*it1,
   89.70 +                                            *it3,
   89.71 +                                            &contactElements[currentNbContacts],
   89.72 +                                            nbMaxContacts-currentNbContacts);
   89.73 +        }
   89.74 +
   89.75 +
   89.76 +
   89.77 +      if (nbPenetrations)
   89.78 +        return PENETRATION;
   89.79 +
   89.80 +      else if (nbCollisions) {
   89.81 +        for (int i=0;i<nbCollisions;i++)
   89.82 +          collisions[i]->ApplyCollision();
   89.83 +        
   89.84 +        return COLLISION;
   89.85 +      } else if (nbContacts)
   89.86 +        return CONTACT;
   89.87 +      return NO_COLLISION;
   89.88 +    }
   89.89 +
   89.90 +
   89.91 +
   89.92 +    /// Return the state of the simulation
   89.93 +    CollisionType_t Try(const float& _dt) {
   89.94 +
   89.95 +      nbCollisions=0;
   89.96 +      nbPenetrations=0;
   89.97 +      nbContacts=0;
   89.98 +
   89.99 +      int currentNbContacts=0;
  89.100 +
  89.101 +        for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++)
  89.102 +          (*it)->Update(_dt);
  89.103 +      
  89.104 +        for (typename EntityContainer_t::iterator it1=entities.begin();it1!=entities.end();it1++) {
  89.105 +          for (typename EntityContainer_t::iterator it2=it1+1;it2!=entities.end();it2++)
  89.106 +            currentNbContacts+=CheckCollision(*it1,
  89.107 +                                              *it2,
  89.108 +                                              &contactElements[currentNbContacts],
  89.109 +                                              nbMaxContacts-currentNbContacts);
  89.110 +          
  89.111 +          for (typename EntityContainer_t::iterator it3=staticEntities.begin();it3!=staticEntities.end();it3++)
  89.112 +          currentNbContacts+=CheckCollision(*it1,
  89.113 +                                            *it3,
  89.114 +                                            &contactElements[currentNbContacts],
  89.115 +                                            nbMaxContacts-currentNbContacts);
  89.116 +        }
  89.117 +
  89.118 +
  89.119 +
  89.120 +      if (nbPenetrations)
  89.121 +        return PENETRATION;
  89.122 +
  89.123 +      else if (nbCollisions) {
  89.124 +        for (int i=0;i<nbCollisions;i++)
  89.125 +          collisions[i]->ApplyCollision();
  89.126 +        
  89.127 +        return COLLISION;
  89.128 +      } else if (nbContacts)
  89.129 +        return CONTACT;
  89.130 +      return NO_COLLISION;
  89.131 +    }
  89.132 +
  89.133 +
  89.134 +    void Validate() {
  89.135 +      for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++)
  89.136 +        (*it)->ValidateStep();
  89.137 +    }
  89.138 +
  89.139 +    void ComputeForces() {
  89.140 +
  89.141 +      for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++)
  89.142 +        (*it)->StartForces();
  89.143 +
  89.144 +      nbContacts=0;
  89.145 +      int currentNbContacts=0;
  89.146 +
  89.147 +        // check contacts force (not efficient)
  89.148 +        for (typename EntityContainer_t::iterator it=staticEntities.begin();it!=staticEntities.end();it++)
  89.149 +          for (typename EntityContainer_t::iterator it1=entities.begin();it1!=entities.end();it1++)
  89.150 +            currentNbContacts+=CheckContact(*it1,
  89.151 +                                            *it,
  89.152 +                                            &contactElements[currentNbContacts],
  89.153 +                                            nbMaxContacts-currentNbContacts);
  89.154 +
  89.155 +      for (int i=0;i<nbContacts;i++)
  89.156 +        contacts[i]->ApplyContact();
  89.157 +
  89.158 +//      if (nbContacts)
  89.159 +//        std::cout << "contact found " << nbContacts << "\n";
  89.160 +
  89.161 +      for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++)
  89.162 +        (*it)->EndForces();
  89.163 +
  89.164 +    }
  89.165 +
  89.166 +
  89.167 +
  89.168 +    int NbCollisions() { return nbCollisions;}
  89.169 +    int NbContacts() { return nbContacts;}
  89.170 +
  89.171 +
  89.172 +
  89.173 +    void AddElement(Element_T<T>* _element) { 
  89.174 +      SYS_ASSERT(_element); 
  89.175 +      if (_element->Type()==PLANE)
  89.176 +        staticEntities.push_back(_element);
  89.177 +      else
  89.178 +        entities.push_back(_element); 
  89.179 +    }
  89.180 +
  89.181 +#endif
  89.182 +
  89.183 +
  89.184 +    void AddElement(Element_t* _element);
  89.185 +    void AddLink(SpringDamper_t* _element);
  89.186 +
  89.187 +
  89.188 +  };
  89.189 +
  89.190 +
  89.191 +
  89.192 +
  89.193 +
  89.194 +
  89.195 +}
  89.196 +
  89.197 +#endif 
    90.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    90.2 +++ b/rdr_font.cxx	Tue Nov 27 15:23:52 2007 +0100
    90.3 @@ -0,0 +1,187 @@
    90.4 +/** @file   rdr_font.cxx
    90.5 + *
    90.6 + * @brief   use font 2d in screen
    90.7 + *
    90.8 + *****************************************************************************
    90.9 + *
   90.10 + * @author  psc80
   90.11 + *
   90.12 + * @date    Created 2001/11
   90.13 + *
   90.14 + * @version $Id: rdr_font.cxx,v 1.7 2004/01/21 06:01:04 psc80 Exp $
   90.15 + *
   90.16 + ****************************************************************************/
   90.17 +
   90.18 +#include "rdr_font.h"
   90.19 +#include "cmn_texture.h"
   90.20 +#include "cmn_intro.h"
   90.21 +#include <cstdarg>
   90.22 +#include <cstdio>
   90.23 +#include <cctype>
   90.24 +#include "sys_assert.h"
   90.25 +
   90.26 +
   90.27 +/** take trace of cursor on screen*/
   90.28 +static int RdrFontScreenPositionX=0;
   90.29 +static int RdrFontScreenPositionY=0;
   90.30 +
   90.31 +
   90.32 +rdrFont_t::rdrFont_t()
   90.33 +{
   90.34 +  texture=0 ;
   90.35 +  scalex=1.0;
   90.36 +  scaley=1.0;
   90.37 +  z=0;
   90.38 +}
   90.39 +
   90.40 +
   90.41 +rdrFont_t::~rdrFont_t()
   90.42 +{
   90.43 +  Kill() ;
   90.44 +}
   90.45 +
   90.46 +
   90.47 +void rdrFont_t::Kill()
   90.48 +{
   90.49 +//  if (texture)
   90.50 +//    glDelete(texture);
   90.51 +  texture=0 ;
   90.52 +}
   90.53 +
   90.54 +
   90.55 +void rdrFont_t::Init()
   90.56 +{
   90.57 +  Kill() ;
   90.58 +  sizeCharX=sizeCharY=0 ;
   90.59 +  firstChar=lastChar=0 ;
   90.60 +}
   90.61 +
   90.62 +
   90.63 +int rdrFont_t::Init(GLuint _t,int _firstCharInFont ,int _sizeOfCharX,int _widthOfTexture,int _heightOfTexture)
   90.64 +{
   90.65 +  SYS_ASSERT(_t);
   90.66 +
   90.67 +  Init() ;
   90.68 +  texture=_t ;
   90.69 +
   90.70 +  firstChar=_firstCharInFont;
   90.71 +  sizeCharX=_sizeOfCharX;
   90.72 +  textureWidth=_widthOfTexture;
   90.73 +  textureHeight=_heightOfTexture;
   90.74 +  sizeCharY=_heightOfTexture;
   90.75 +  lastChar=firstChar+textureWidth*1.0/sizeCharX ;
   90.76 +  return 0 ;
   90.77 +}
   90.78 +
   90.79 +
   90.80 +
   90.81 +void rdrFont_t::GetUVsOfChar(char _letter,float& _u,float& _v)
   90.82 +{
   90.83 +  _letter=toupper(_letter) ;
   90.84 +  _letter-=firstChar;
   90.85 +  _u=_letter*sizeCharX*1.0/textureWidth;
   90.86 +  _v=0;
   90.87 +}
   90.88 +
   90.89 +
   90.90 +
   90.91 +/// TODO use echap command from ascii character
   90.92 +void rdrFont_t::_Print(int &x,int &y,char *s)
   90.93 +{
   90.94 +  SYS_ASSERT(texture);
   90.95 +
   90.96 +  int sizex=textureWidth;
   90.97 +
   90.98 +//  cmnPushMatrix();
   90.99 +
  90.100 +  //glDisable(GL_BLEND);
  90.101 +
  90.102 +//  cmnSetPlanarView();
  90.103 +
  90.104 +//  glColor4f(1,1,1,1);
  90.105 +//  glDisable(GL_DEPTH_TEST);
  90.106 +
  90.107 +
  90.108 +  txtBindTexture2d(texture,0);
  90.109 +
  90.110 +  int c,tx ;
  90.111 +
  90.112 +  double div=sizeCharX*1.0/sizex;
  90.113 +
  90.114 +  glBegin(GL_QUADS);
  90.115 +  while ( (c = *s++) ) {
  90.116 +    c=toupper(c) ;
  90.117 +
  90.118 +    if (c=='\n') {
  90.119 +      y-=sizeCharY*scaley;
  90.120 +      x=0;
  90.121 +
  90.122 +    } else if ( c >= firstChar && c <= lastChar) {
  90.123 +
  90.124 +      c-=firstChar ;
  90.125 +      tx=c ;
  90.126 +
  90.127 +      float x1,y1,z1;
  90.128 +      x1=x;
  90.129 +      y1=y;
  90.130 +      z1=0;
  90.131 +
  90.132 +      glTexCoord2f(tx*div,0);
  90.133 +      glVertex3f(x1,y1,z);
  90.134 +
  90.135 +      glTexCoord2f((tx+1)*div,0);
  90.136 +      glVertex3f(x1+sizeCharX*scalex,y1,z);
  90.137 +
  90.138 +      glTexCoord2f((tx+1)*div,1);
  90.139 +      glVertex3f(x1+sizeCharX*scalex,y1+sizeCharY*scaley,z);
  90.140 +
  90.141 +      glTexCoord2f(tx*div,1);
  90.142 +      glVertex3f(x1,y1+sizeCharY*scaley,z);
  90.143 +
  90.144 +      x+=sizeCharX*scalex ;
  90.145 +    }
  90.146 +  }
  90.147 +
  90.148 +  glEnd();
  90.149 +
  90.150 +  txtUnBindTexture2d(0);
  90.151 +
  90.152 +//  cmnPopMatrix();
  90.153 +}
  90.154 +
  90.155 +
  90.156 +void rdrFont_t::Clear()
  90.157 +{
  90.158 +  RdrFontScreenPositionY=RY-sizeCharY ;
  90.159 +//  RdrFontScreenPositionY=0;
  90.160 +  RdrFontScreenPositionX=0 ;
  90.161 +}
  90.162 +
  90.163 +
  90.164 +void rdrFont_t::Print(const char *fmt,...)
  90.165 +{
  90.166 +  va_list list;
  90.167 +  va_start(list, fmt);
  90.168 +
  90.169 +  char str[32768] ;
  90.170 +  va_start(list, fmt);
  90.171 +  vsprintf(str, fmt, list);
  90.172 +  va_end(list);
  90.173 +
  90.174 +  _Print(RdrFontScreenPositionX,RdrFontScreenPositionY,str) ;
  90.175 +}
  90.176 +
  90.177 +void rdrFont_t::Print(int x,int y,const char *fmt,...)
  90.178 +{
  90.179 +  va_list list;
  90.180 +  va_start(list, fmt);
  90.181 +
  90.182 +  char str[32768] ;
  90.183 +  va_start(list, fmt);
  90.184 +  vsprintf(str, fmt, list);
  90.185 +  va_end(list);
  90.186 +  
  90.187 +  int x2=x ;
  90.188 +  int y2=y ;
  90.189 +  _Print(x2,y2,str) ;
  90.190 +}
    91.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    91.2 +++ b/rdr_font.h	Tue Nov 27 15:23:52 2007 +0100
    91.3 @@ -0,0 +1,88 @@
    91.4 +/** @file   rdr_font.cxx
    91.5 + *
    91.6 + * @brief   use font 2d in screen
    91.7 + *
    91.8 + *****************************************************************************
    91.9 + *
   91.10 + * @author  psc80
   91.11 + *
   91.12 + * @date    Created 2001/11
   91.13 + *
   91.14 + * @version $Id: rdr_font.h,v 1.5 2004/01/18 08:42:17 psc80 Exp $
   91.15 + *
   91.16 + ****************************************************************************/
   91.17 +#ifndef RDR_FONT_H
   91.18 +#define RDR_FONT_H
   91.19 +
   91.20 +#include "gl_header.h"
   91.21 +
   91.22 +class rdrFont_t
   91.23 +{
   91.24 +
   91.25 +  /** texture used*/
   91.26 +  GLuint texture ;
   91.27 +
   91.28 +  int sizeCharX;
   91.29 +  int sizeCharY;
   91.30 +
   91.31 +  int textureWidth;
   91.32 +  int textureHeight;
   91.33 +
   91.34 +
   91.35 +  int firstChar ;
   91.36 +  int lastChar ;
   91.37 +
   91.38 +
   91.39 +  float z;
   91.40 +
   91.41 +  float scalex;
   91.42 +  float scaley;
   91.43 +
   91.44 +  /** Print the string to screen*/
   91.45 +  void _Print(int &x,int &y,char *s) ;
   91.46 +
   91.47 +  void Init();
   91.48 +
   91.49 + public:
   91.50 +
   91.51 +  rdrFont_t() ;
   91.52 +  ~rdrFont_t() ;
   91.53 +
   91.54 +
   91.55 +  /// Kill the font
   91.56 +  void Kill() ;
   91.57 +
   91.58 +  void SetScale(float _a) { scalex=_a; scaley=_a;}
   91.59 +  void SetScaleX(float _a) { scalex=_a;}
   91.60 +  void SetScaleY(float _a) { scaley=_a;}
   91.61 +
   91.62 +
   91.63 +  void SetZ(float _z) { z=_z;}
   91.64 +
   91.65 +  float SizeOfCharX() { return scalex*sizeCharX;}
   91.66 +  float SizeOfCharY() { return scaley*sizeCharY;}
   91.67 +
   91.68 +  /// Init the font with the given texture name
   91.69 +  int Init(GLuint _t,int _firstCharInFont,int _sizeOfCharX,int _widthOfTexture,int _heightOfTexture);
   91.70 +  
   91.71 +
   91.72 +  /// Print like printf
   91.73 +  void Print(const char *s,...) ;
   91.74 +
   91.75 +
   91.76 +  /// Print like printf a the given location on screen
   91.77 +  void Print(int x,int y,const char *s,...) ;
   91.78 +
   91.79 +  void GetUVsOfChar(char _letter,float& _u,float& _v);
   91.80 +
   91.81 +  /// Init the virtual buffer to write top of screen
   91.82 +  void Clear() ;
   91.83 +
   91.84 +
   91.85 +  int TextureWidth() { return textureWidth;}
   91.86 +  GLuint TextureId() { return texture;}
   91.87 +
   91.88 +} ;
   91.89 +
   91.90 +
   91.91 +#endif 
    92.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    92.2 +++ b/resource.h	Tue Nov 27 15:23:52 2007 +0100
    92.3 @@ -0,0 +1,34 @@
    92.4 +//{{NO_DEPENDENCIES}}
    92.5 +// Microsoft Developer Studio generated include file.
    92.6 +// Used by Script5.rc
    92.7 +//
    92.8 +#define IDR_DATA1                       105
    92.9 +#define IDR_DATA2                       108
   92.10 +#define IDR_DATA3                       108
   92.11 +#define IDR_DATA4                       108
   92.12 +#define IDR_DATA5                       108
   92.13 +#define IDR_DATA6                       108
   92.14 +#define IDR_DATA7                       108
   92.15 +#define IDR_DATA8                       108
   92.16 +#define IDR_DATA9                       108
   92.17 +#define IDR_DATA10                      108
   92.18 +#define IDR_DATA11                      108
   92.19 +#define IDR_DATA12                      108
   92.20 +#define IDB_BITMAP1                     120
   92.21 +#define IDB_BITMAP2                     120
   92.22 +#define IDB_BITMAP3                     120
   92.23 +#define IDB_BITMAP4                     120
   92.24 +#define IDB_BITMAP5                     120
   92.25 +#define IDB_BITMAP6                     120
   92.26 +#define IDB_BITMAP7                     120
   92.27 +
   92.28 +// Next default values for new objects
   92.29 +// 
   92.30 +#ifdef APSTUDIO_INVOKED
   92.31 +#ifndef APSTUDIO_READONLY_SYMBOLS
   92.32 +#define _APS_NEXT_RESOURCE_VALUE        133
   92.33 +#define _APS_NEXT_COMMAND_VALUE         40001
   92.34 +#define _APS_NEXT_CONTROL_VALUE         1000
   92.35 +#define _APS_NEXT_SYMED_VALUE           101
   92.36 +#endif
   92.37 +#endif
    93.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.2 +++ b/smplInfo.h	Tue Nov 27 15:23:52 2007 +0100
    93.3 @@ -0,0 +1,32 @@
    93.4 +
    93.5 +#ifndef __SMPL_INFO__
    93.6 +#define __SMPL_INFO__
    93.7 +
    93.8 +#define NB_INST             7
    93.9 +#define AVGFILTER_NBELEMTS 16
   93.10 +
   93.11 +#define SMPL_INC   0
   93.12 +#define SMPL_DEC   1
   93.13 +#define SMPL_LEVEL 2
   93.14 +
   93.15 +enum SamplesDef
   93.16 +{
   93.17 +	INST_BASS   = 0,
   93.18 +	INST_HHAT   = 1,
   93.19 +	INST_BDRUM  = 2,
   93.20 +	INST_SNARE  = 3,
   93.21 +	INST_SBDRUM = 4,
   93.22 +	INST_NAP1   = 5,
   93.23 +	INST_NAP2   = 6,
   93.24 +	INST_BIGBD  = 7,
   93.25 +	INST_GROOVE = 8
   93.26 +};
   93.27 +
   93.28 +
   93.29 +typedef struct
   93.30 +{
   93.31 +	bool  playing;
   93.32 +	float volume;
   93.33 +} SamplesData;
   93.34 +
   93.35 +#endif
   93.36 \ No newline at end of file
    94.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.2 +++ b/sndDetect.cxx	Tue Nov 27 15:23:52 2007 +0100
    94.3 @@ -0,0 +1,664 @@
    94.4 +
    94.5 +#include "sndDetect.h"
    94.6 +
    94.7 +// MiniFmod ...
    94.8 +extern FMUSIC_MODULE * intro_mod;
    94.9 +
   94.10 +
   94.11 +sndDetect :: sndDetect()
   94.12 +{
   94.13 + // Nada !
   94.14 +}
   94.15 +
   94.16 +sndDetect :: ~sndDetect()
   94.17 +{
   94.18 + // Nada !
   94.19 +}
   94.20 +
   94.21 +SamplesData sndDetect :: GetSampleData( enum SamplesDef sample )
   94.22 +{
   94.23 +
   94.24 +	SamplesData result;
   94.25 +	result.playing = false;
   94.26 +
   94.27 +	switch( sample )
   94.28 +	{
   94.29 +	/*
   94.30 +	 * Bass Sync ...
   94.31 +	 */
   94.32 +	case INST_BASS:
   94.33 +
   94.34 +		switch( FMUSIC_GetOrder( intro_mod ) )
   94.35 +		{
   94.36 +		case 0:
   94.37 +		case 1:
   94.38 +		case 2:
   94.39 +
   94.40 +			switch( FMUSIC_GetRow( intro_mod ) )
   94.41 +			{
   94.42 +			case 0:
   94.43 +			case 6:
   94.44 +			case 12:
   94.45 +			case 48:
   94.46 +			case 54:
   94.47 +			case 60:
   94.48 +				result.playing = true;
   94.49 +				result.volume  = 1.0f;
   94.50 +				break;
   94.51 +			}
   94.52 +			break;
   94.53 +
   94.54 +		case 3:
   94.55 +		case 4:
   94.56 +		case 5:
   94.57 +		case 6:
   94.58 +
   94.59 +			switch( FMUSIC_GetRow( intro_mod ) )
   94.60 +			{
   94.61 +			case 0:
   94.62 +			case 6:
   94.63 +			case 12:
   94.64 +			case 60:
   94.65 +				result.playing = true;
   94.66 +				result.volume  = 1.0f;
   94.67 +				break;
   94.68 +
   94.69 +			case 54:
   94.70 +				result.playing = true;
   94.71 +				result.volume  = 0.6f;
   94.72 +				break;
   94.73 +			}
   94.74 +			break;
   94.75 +
   94.76 +		case 7:
   94.77 +			
   94.78 +			switch( FMUSIC_GetRow( intro_mod ) )
   94.79 +			{
   94.80 +			case 0:
   94.81 +			case 6:
   94.82 +			case 12:
   94.83 +			case 32:
   94.84 +			case 48:
   94.85 +				result.playing = true;
   94.86 +				result.volume  = 1.0f;
   94.87 +				break;
   94.88 +			}
   94.89 +			break;
   94.90 +
   94.91 +		}
   94.92 +		break;
   94.93 +
   94.94 +	case INST_HHAT:
   94.95 +		
   94.96 +		switch( FMUSIC_GetOrder( intro_mod ) )
   94.97 +		{
   94.98 +		case 2:
   94.99 +		case 3:
  94.100 +		case 4:
  94.101 +		case 5:
  94.102 +		case 6:
  94.103 +
  94.104 +			if( !( FMUSIC_GetRow( intro_mod ) % 2 ) )
  94.105 +			{
  94.106 +				result.playing = true;
  94.107 +
  94.108 +				if( !( FMUSIC_GetRow( intro_mod ) %4 ) )
  94.109 +					
  94.110 +					result.volume = 1.0f;
  94.111 +				else
  94.112 +					result.volume = 0.25f;
  94.113 +			}
  94.114 +			else
  94.115 +			{
  94.116 +				if( FMUSIC_GetRow( intro_mod ) == 63 )
  94.117 +				{
  94.118 +					result.playing = true;
  94.119 +					result.volume  = 0.5f;
  94.120 +				}
  94.121 +			}
  94.122 +
  94.123 +			break;
  94.124 +
  94.125 +		case 7:
  94.126 +
  94.127 +			if( !( FMUSIC_GetRow( intro_mod ) % 2 ) && ( FMUSIC_GetRow( intro_mod ) <= 56 ) )
  94.128 +			{
  94.129 +				result.playing = true;
  94.130 +
  94.131 +				if( !( FMUSIC_GetRow( intro_mod ) %4 ) )
  94.132 +					
  94.133 +					result.volume = 1.0f;
  94.134 +				else
  94.135 +					result.volume = 0.25f;
  94.136 +			}
  94.137 +			else
  94.138 +			{
  94.139 +				switch( FMUSIC_GetRow( intro_mod ) )
  94.140 +				{
  94.141 +				case 7:
  94.142 +				case 23:
  94.143 +				case 37:
  94.144 +				case 47:
  94.145 +				case 59:
  94.146 +					result.playing = true;
  94.147 +					result.volume  = 0.5f;
  94.148 +					break;
  94.149 +				case 62:
  94.150 +					result.playing = true;
  94.151 +					result.volume  = 0.25f;
  94.152 +					break;
  94.153 +				}
  94.154 +			}
  94.155 +
  94.156 +			break;
  94.157 +		}
  94.158 +
  94.159 +		break;
  94.160 +
  94.161 +	case INST_BDRUM:
  94.162 +
  94.163 +		switch( FMUSIC_GetOrder( intro_mod ) )
  94.164 +		{
  94.165 +		case 2:
  94.166 +
  94.167 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.168 +			{
  94.169 +			case 62:
  94.170 +				result.playing = true;
  94.171 +				result.volume  = 1.0f;
  94.172 +				break;
  94.173 +			case 61:
  94.174 +				result.playing = true;
  94.175 +				result.volume  = 0.25f;
  94.176 +				break;
  94.177 +			}
  94.178 +			break;
  94.179 +
  94.180 +		case 3:
  94.181 +		case 5:
  94.182 +			
  94.183 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.184 +			{
  94.185 +			case 0:
  94.186 +			case 6:
  94.187 +			case 16:
  94.188 +			case 26:
  94.189 +			case 32:
  94.190 +			case 42:
  94.191 +			case 48:
  94.192 +			case 58:
  94.193 +			case 62:
  94.194 +				result.playing = true;
  94.195 +				result.volume  = 1.0f;
  94.196 +				break;
  94.197 +			case 19:
  94.198 +			case 61:
  94.199 +				result.playing = true;
  94.200 +				result.volume  = 0.25f;
  94.201 +				break;
  94.202 +			}
  94.203 +			break;
  94.204 +
  94.205 +		case 4:
  94.206 +		case 6:
  94.207 +			
  94.208 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.209 +			{
  94.210 +			case 0:
  94.211 +			case 10:
  94.212 +			case 16:
  94.213 +			case 26:
  94.214 +			case 32:
  94.215 +			case 42:
  94.216 +			case 48:
  94.217 +			case 58:
  94.218 +			case 62:
  94.219 +				result.playing = true;
  94.220 +				result.volume  = 1.0f;
  94.221 +				break;
  94.222 +			case 19:
  94.223 +			case 61:
  94.224 +				result.playing = true;
  94.225 +				result.volume  = 0.25f;
  94.226 +				break;
  94.227 +			}
  94.228 +			break;
  94.229 +
  94.230 +		case 7:
  94.231 +			
  94.232 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.233 +			{
  94.234 +			case 0:
  94.235 +			case 6:
  94.236 +			case 16:
  94.237 +			case 26:
  94.238 +			case 32:
  94.239 +			case 42:
  94.240 +			case 48:
  94.241 +				result.playing = true;
  94.242 +				result.volume  = 1.0f;
  94.243 +				break;
  94.244 +			case 3:
  94.245 +			case 9:
  94.246 +			case 19:
  94.247 +			case 51:
  94.248 +				result.playing = true;
  94.249 +				result.volume  = 0.25f;
  94.250 +				break;
  94.251 +			}
  94.252 +
  94.253 +			break;
  94.254 +
  94.255 +		case 0x0E:
  94.256 +		case 0x0F:
  94.257 +		case 0x10:
  94.258 +		case 0x11:
  94.259 +		case 0x12:
  94.260 +		case 0x13:
  94.261 +		case 0x14:
  94.262 +
  94.263 +			if( ( FMUSIC_GetRow( intro_mod ) % 16 ) == 0 )
  94.264 +				result.playing = true;
  94.265 +
  94.266 +			break;
  94.267 +
  94.268 +		}
  94.269 +
  94.270 +		break;
  94.271 +
  94.272 +	case INST_SNARE:
  94.273 +
  94.274 +		switch( FMUSIC_GetOrder( intro_mod ) )
  94.275 +		{
  94.276 +		case 2:
  94.277 +
  94.278 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.279 +			{
  94.280 +			case 60:
  94.281 +				result.playing = true;
  94.282 +				result.volume  = 1.0f;
  94.283 +				break;
  94.284 +			case 63:
  94.285 +				result.playing = true;
  94.286 +				result.volume  = 0.5f;
  94.287 +				break;
  94.288 +			}
  94.289 +
  94.290 +			break;
  94.291 +
  94.292 +		case 3:
  94.293 +		case 5:
  94.294 +
  94.295 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.296 +			{
  94.297 +			case 4:
  94.298 +			case 10:
  94.299 +			case 20:
  94.300 +			case 28:
  94.301 +			case 36:
  94.302 +			case 44:
  94.303 +			case 52:
  94.304 +			case 60:
  94.305 +				result.playing = true;
  94.306 +				result.volume  = 1.0f;
  94.307 +				break;
  94.308 +			case 7:
  94.309 +			case 31:
  94.310 +			case 47:
  94.311 +			case 63:
  94.312 +				result.playing = true;
  94.313 +				result.volume  = 0.25f;
  94.314 +				break;
  94.315 +			}
  94.316 +
  94.317 +			break;
  94.318 +
  94.319 +		case 4:
  94.320 +		case 6:
  94.321 +
  94.322 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.323 +			{
  94.324 +			case 4:
  94.325 +			case 12:
  94.326 +			case 20:
  94.327 +			case 28:
  94.328 +			case 36:
  94.329 +			case 44:
  94.330 +			case 52:
  94.331 +			case 60:
  94.332 +				result.playing = true;
  94.333 +				result.volume  = 1.0f;
  94.334 +				break;
  94.335 +			case 7:
  94.336 +			case 27:
  94.337 +			case 31:
  94.338 +			case 47:
  94.339 +				result.playing = true;
  94.340 +				result.volume  = 0.25f;
  94.341 +				break;
  94.342 +			}
  94.343 +
  94.344 +			break;
  94.345 +
  94.346 +		case 7:
  94.347 +
  94.348 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.349 +			{
  94.350 +			case 4:
  94.351 +			case 10:
  94.352 +			case 20:
  94.353 +			case 28:
  94.354 +			case 36:
  94.355 +			case 38:
  94.356 +			case 44:
  94.357 +			case 52:
  94.358 +				result.playing = true;
  94.359 +				result.volume  = 1.0f;
  94.360 +				break;
  94.361 +			case 7:
  94.362 +			case 13:
  94.363 +			case 31:
  94.364 +			case 41:
  94.365 +			case 47:
  94.366 +				result.playing = true;
  94.367 +				result.volume  = 0.25f;
  94.368 +				break;
  94.369 +			}
  94.370 +
  94.371 +			break;
  94.372 +
  94.373 +		case 0x0a:
  94.374 +		case 0x0c:
  94.375 +
  94.376 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.377 +			{
  94.378 +			case 4:
  94.379 +			case 10:
  94.380 +			case 20:
  94.381 +			case 28:
  94.382 +			case 31:
  94.383 +			case 36:
  94.384 +			case 38:
  94.385 +			case 44:
  94.386 +			case 52:
  94.387 +			case 60:
  94.388 +			case 62:
  94.389 +			case 63:
  94.390 +				result.playing = true;
  94.391 +				break;
  94.392 +			}
  94.393 +
  94.394 +			break;
  94.395 +
  94.396 +		case 0x0b:
  94.397 +
  94.398 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.399 +			{
  94.400 +			case 4:
  94.401 +			case 10:
  94.402 +			case 20:
  94.403 +			case 28:
  94.404 +			case 31:
  94.405 +			case 36:
  94.406 +			case 38:
  94.407 +			case 44:
  94.408 +			case 52:
  94.409 +			case 60:
  94.410 +			case 63:
  94.411 +				result.playing = true;
  94.412 +				break;
  94.413 +			}
  94.414 +
  94.415 +			break;
  94.416 +
  94.417 +		case 0x0d:
  94.418 +
  94.419 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.420 +			{
  94.421 +			case 4:
  94.422 +			case 10:
  94.423 +			case 20:
  94.424 +			case 28:
  94.425 +			case 31:
  94.426 +			case 36:
  94.427 +			case 38:
  94.428 +			case 44:
  94.429 +			case 54:
  94.430 +			case 57:
  94.431 +			case 60:
  94.432 +				result.playing = true;
  94.433 +				break;
  94.434 +			}
  94.435 +
  94.436 +			break;
  94.437 +
  94.438 +		}
  94.439 +
  94.440 +		break;
  94.441 +
  94.442 +	case INST_SBDRUM:
  94.443 +
  94.444 +		switch( FMUSIC_GetOrder( intro_mod ) )
  94.445 +		{
  94.446 +		case 3:
  94.447 +		case 5:
  94.448 +
  94.449 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.450 +			{
  94.451 +			case 12:
  94.452 +			case 23:
  94.453 +			case 39:
  94.454 +			case 46:
  94.455 +			case 55:
  94.456 +				result.playing = true;
  94.457 +				result.volume  = 1.0f;
  94.458 +				break;
  94.459 +			}
  94.460 +
  94.461 +			break;
  94.462 +
  94.463 +		case 4:
  94.464 +		case 6:
  94.465 +
  94.466 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.467 +			{
  94.468 +			case 23:
  94.469 +			case 30:
  94.470 +			case 39:
  94.471 +			case 46:
  94.472 +			case 55:
  94.473 +				result.playing = true;
  94.474 +				result.volume  = 1.0f;
  94.475 +				break;
  94.476 +			}
  94.477 +
  94.478 +			break;
  94.479 +
  94.480 +		case 7:
  94.481 +
  94.482 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.483 +			{
  94.484 +			case 12:
  94.485 +			case 23:
  94.486 +			case 39:
  94.487 +			case 46:
  94.488 +			case 55:
  94.489 +				result.playing = true;
  94.490 +				result.volume  = 1.0f;
  94.491 +				break;
  94.492 +			case 59:
  94.493 +				result.playing = true;
  94.494 +				result.volume  = 0.5f;
  94.495 +				break;
  94.496 +			case 61:
  94.497 +				result.playing = true;
  94.498 +				result.volume  = 0.25f;
  94.499 +				break;
  94.500 +			}
  94.501 +
  94.502 +			break;
  94.503 +
  94.504 +		}
  94.505 +
  94.506 +		break;
  94.507 +
  94.508 +	case INST_NAP1:
  94.509 +
  94.510 +		if( ( FMUSIC_GetRow( intro_mod ) < 32 ) && ( FMUSIC_GetOrder( intro_mod ) < 8 ) )
  94.511 +			result.playing = true;
  94.512 +
  94.513 +		break;
  94.514 +
  94.515 +	case INST_NAP2:
  94.516 +
  94.517 +		if( ( FMUSIC_GetRow( intro_mod ) >= 32 ) && ( FMUSIC_GetOrder( intro_mod ) < 7 ) )
  94.518 +			result.playing = true;
  94.519 +
  94.520 +		break;
  94.521 +
  94.522 +	case INST_BIGBD:
  94.523 +		
  94.524 +		switch( FMUSIC_GetOrder( intro_mod ) )
  94.525 +		{
  94.526 +		case 10:
  94.527 +		case 12:
  94.528 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.529 +			{
  94.530 +			case 0:
  94.531 +			case 12:
  94.532 +			case 16:
  94.533 +			case 26:
  94.534 +			case 32:
  94.535 +			case 42:
  94.536 +			case 48:
  94.537 +			case 58:
  94.538 +			case 61:
  94.539 +				result.playing = true;
  94.540 +				break;
  94.541 +			}
  94.542 +
  94.543 +			break;
  94.544 +
  94.545 +		case 11:
  94.546 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.547 +			{
  94.548 +			case 0:
  94.549 +			case 12:
  94.550 +			case 16:
  94.551 +			case 26:
  94.552 +			case 32:
  94.553 +			case 42:
  94.554 +			case 48:
  94.555 +			case 58:
  94.556 +			case 62:
  94.557 +				result.playing = true;
  94.558 +				break;
  94.559 +			}
  94.560 +
  94.561 +			break;
  94.562 +
  94.563 +		case 13:
  94.564 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.565 +			{
  94.566 +			case 0:
  94.567 +			case 12:
  94.568 +			case 16:
  94.569 +			case 26:
  94.570 +			case 32:
  94.571 +			case 42:
  94.572 +			case 48:
  94.573 +				result.playing = true;
  94.574 +				break;
  94.575 +			}
  94.576 +
  94.577 +			break;
  94.578 +
  94.579 +		case 0x15:
  94.580 +		case 0x16:
  94.581 +		case 0x17:
  94.582 +		case 0x18:
  94.583 +		case 0x19:
  94.584 +		case 0x1a:
  94.585 +		case 0x1b:
  94.586 +		case 0x1c:
  94.587 +			if( ( FMUSIC_GetRow( intro_mod ) % 8 ) == 0 )
  94.588 +				result.playing = true;
  94.589 +
  94.590 +			break;
  94.591 +		}
  94.592 +
  94.593 +
  94.594 +		break;
  94.595 +
  94.596 +	case INST_GROOVE:
  94.597 +
  94.598 +		switch( FMUSIC_GetOrder( intro_mod ) )
  94.599 +		{
  94.600 +
  94.601 +		case 0x08:
  94.602 +		case 0x09:
  94.603 +		case 0x0a:
  94.604 +		case 0x0b:
  94.605 +		case 0x0c:
  94.606 +
  94.607 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.608 +			{
  94.609 +			case 2:
  94.610 +			case 8:
  94.611 +			case 18:
  94.612 +			case 24:
  94.613 +			case 34:
  94.614 +			case 40:
  94.615 +			case 50:
  94.616 +			case 56:
  94.617 +				result.playing = true;
  94.618 +
  94.619 +				break;
  94.620 +			}
  94.621 +
  94.622 +			break;
  94.623 +
  94.624 +		case 0x0d:
  94.625 +
  94.626 +			switch( FMUSIC_GetRow( intro_mod ) )
  94.627 +			{
  94.628 +			case 2:
  94.629 +			case 8:
  94.630 +			case 18:
  94.631 +			case 24:
  94.632 +			case 34:
  94.633 +			case 40:
  94.634 +				result.playing = true;
  94.635 +
  94.636 +				break;
  94.637 +			}
  94.638 +
  94.639 +			break;
  94.640 +
  94.641 +		}
  94.642 +
  94.643 +		break;
  94.644 +
  94.645 +	}
  94.646 +
  94.647 +	return result;
  94.648 +
  94.649 +}
  94.650 +
  94.651 +bool sndDetect :: InFxScreen1( void )
  94.652 +{
  94.653 +	if( ( FMUSIC_GetOrder( intro_mod ) >=0 ) &&
  94.654 +		( FMUSIC_GetOrder( intro_mod ) <=7 ) )
  94.655 +		return true;
  94.656 +	else
  94.657 +		return false;
  94.658 +}
  94.659 +
  94.660 +bool sndDetect :: InFxScreen2( void )
  94.661 +{
  94.662 +	if( ( FMUSIC_GetOrder( intro_mod ) >= 8 ) &&
  94.663 +		( FMUSIC_GetOrder( intro_mod ) <= 13 ) )
  94.664 +		return true;
  94.665 +	else
  94.666 +		return false;
  94.667 +}
  94.668 \ No newline at end of file
    95.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.2 +++ b/sndDetect.h	Tue Nov 27 15:23:52 2007 +0100
    95.3 @@ -0,0 +1,25 @@
    95.4 +
    95.5 +#ifndef __SND_DETECT__
    95.6 +#define __SND_DETECT__
    95.7 +
    95.8 +#include "smplInfo.h"
    95.9 +#include "minifmod/minifmod.h"
   95.10 +
   95.11 +class sndDetect
   95.12 +{
   95.13 +
   95.14 +private:
   95.15 +
   95.16 +public:
   95.17 +	sndDetect();
   95.18 +	~sndDetect();
   95.19 +	
   95.20 +	SamplesData GetSampleData( enum SamplesDef );
   95.21 +	
   95.22 +	// Fx Related ...
   95.23 +	bool InFxScreen1( void );
   95.24 +	bool InFxScreen2( void );
   95.25 +
   95.26 +};
   95.27 +
   95.28 +#endif
   95.29 \ No newline at end of file
    96.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.2 +++ b/sys_assert.cxx	Tue Nov 27 15:23:52 2007 +0100
    96.3 @@ -0,0 +1,9 @@
    96.4 +#include <cstdlib>
    96.5 +#include <cstdio>
    96.6 +
    96.7 +void sysAssertInternal(const char* text, const char* file, int line)
    96.8 +{
    96.9 +  fprintf(stderr, text, file, line);
   96.10 +  *((const char**)0) = text;
   96.11 +  exit(1);
   96.12 +}
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/sys_assert.h	Tue Nov 27 15:23:52 2007 +0100
    97.3 @@ -0,0 +1,46 @@
    97.4 +/** @file   sys_assert.h
    97.5 + *
    97.6 + * @brief   Assert debug function
    97.7 + *
    97.8 + *****************************************************************************
    97.9 + *
   97.10 + * @author  psc80
   97.11 + *
   97.12 + * @date    Created 2001/05
   97.13 + *
   97.14 + * @version $Id: sys_assert.h,v 1.2 2004/01/18 10:43:42 psc80 Exp $
   97.15 + *
   97.16 + ****************************************************************************/
   97.17 +
   97.18 +#ifndef SYS_ASSERT_H
   97.19 +#define SYS_ASSERT_H
   97.20 +
   97.21 +#ifndef FINALE_RELEASE
   97.22 +
   97.23 +
   97.24 +void sysAssertInternal(const char* text, const char* file, int line);
   97.25 +
   97.26 +inline void sysAssert(bool test, const char* text, 
   97.27 +		  const char* file, int line) {
   97.28 +if (!test)
   97.29 +sysAssertInternal(text, file, line);
   97.30 +}
   97.31 +
   97.32 +#define SYS_ASSERT(test) \
   97.33 +  sysAssert(test, \
   97.34 +  "\nSYS_ASSERT FAILED AT %s (%d) : '"#test"'\n\n", __FILE__, __LINE__)
   97.35 +
   97.36 +#else // #if SYS_USE_ASSERT
   97.37 +
   97.38 +#define SYS_ASSERT(test) // nothing ...
   97.39 +
   97.40 +
   97.41 +
   97.42 +#endif // #ifdef SYS_ASSERT_H
   97.43 +
   97.44 +
   97.45 +
   97.46 +
   97.47 +
   97.48 +
   97.49 +#endif
   97.50 \ No newline at end of file
    98.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.2 +++ b/trans_crossradial.cxx	Tue Nov 27 15:23:52 2007 +0100
    98.3 @@ -0,0 +1,30 @@
    98.4 +#include "trans_crossradial.h"
    98.5 +#include "gl_header.h"
    98.6 +#include "cmn_intro.h"
    98.7 +#include "cmn_texture.h"
    98.8 +
    98.9 +
   98.10 +void transCrossRadial_t::GetBuffer1()
   98.11 +{
   98.12 +  fade.GetBuffer1();
   98.13 +}
   98.14 +
   98.15 +void transCrossRadial_t::GetBuffer2()
   98.16 +{
   98.17 +  fade.GetBuffer2();
   98.18 +}
   98.19 +
   98.20 +
   98.21 +void transCrossRadial_t::DrawRadialForCurrentScreen()
   98.22 +{
   98.23 +  radial.GetBuffer1();
   98.24 +  radial.Draw(0);
   98.25 +}
   98.26 +
   98.27 +
   98.28 +
   98.29 +void transCrossRadial_t::Init()
   98.30 +{
   98.31 +  fade.Init();
   98.32 +  radial.Init();
   98.33 +}
    99.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.2 +++ b/trans_crossradial.h	Tue Nov 27 15:23:52 2007 +0100
    99.3 @@ -0,0 +1,28 @@
    99.4 +#ifndef TRANS_CROSSRADIAL_H
    99.5 +#define TRANS_CROSSRADIAL_H
    99.6 +
    99.7 +#include "gl_header.h"
    99.8 +#include "cmn_texture.h"
    99.9 +#include "trans_radial.h"
   99.10 +#include "trans_fade.h"
   99.11 +
   99.12 +class transCrossRadial_t
   99.13 +{
   99.14 +
   99.15 +  transFade_t fade;
   99.16 +  transRadial_t radial;
   99.17 +
   99.18 +public:
   99.19 +
   99.20 +  transCrossRadial_t(){}
   99.21 +  void Init();
   99.22 +
   99.23 +  void DrawRadialForCurrentScreen();
   99.24 +  void GetBuffer1();
   99.25 +  void GetBuffer2();
   99.26 +  void Draw(float _time);
   99.27 +
   99.28 +};
   99.29 +
   99.30 +
   99.31 +#endif
   99.32 \ No newline at end of file
   100.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.2 +++ b/trans_explode.cxx	Tue Nov 27 15:23:52 2007 +0100
   100.3 @@ -0,0 +1,206 @@
   100.4 +#include "trans_explode.h"
   100.5 +#include "gl_header.h"
   100.6 +#include "cmn_intro.h"
   100.7 +#include "cmn_texture.h"
   100.8 +
   100.9 +trans_Explode_t::trans_Explode_t(int max_x_quads, int max_y_quads)
  100.10 +{
  100.11 +	res_x = max_x_quads;
  100.12 +	res_y = max_y_quads;
  100.13 +	
  100.14 +	quads = new transExplodeQuad[max_x_quads*max_y_quads];
  100.15 +
  100.16 +}
  100.17 +
  100.18 +trans_Explode_t::~trans_Explode_t(void)
  100.19 +{
  100.20 +	if (quads)
  100.21 +	delete [] quads;
  100.22 +
  100.23 +}
  100.24 +
  100.25 +GLuint trans_Explode_t::CreateTextureTransition(int x, int y)
  100.26 +{
  100.27 +	GLuint txtnumber;	
  100.28 +	unsigned char *data;
  100.29 +
  100.30 +	glEnable(GL_TEXTURE_2D);
  100.31 +
  100.32 +	data = (unsigned char *)new GLuint[((x * y)*4*sizeof(unsigned int))];
  100.33 +
  100.34 +	glGenTextures(1, &txtnumber);								
  100.35 +	glBindTexture(GL_TEXTURE_2D, txtnumber);			
  100.36 +	glTexImage2D(GL_TEXTURE_2D, 0, 4, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);	
  100.37 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  100.38 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  100.39 +
  100.40 +	delete [] data;						  						
  100.41 +
  100.42 +	return txtnumber;					
  100.43 +}
  100.44 +
  100.45 +
  100.46 +#define TEST_PSC80
  100.47 +
  100.48 +void trans_Explode_t::PutOneQuad(float size, float px, float py, float pz, float u, float v, float rx, float ry, float rz)
  100.49 +{	
  100.50 +	glPushMatrix();
  100.51 +
  100.52 +	glTranslatef(px, py, pz);
  100.53 +
  100.54 +	float uv_size = 256.f*size;
  100.55 +
  100.56 +#ifdef TEST_PSC80
  100.57 +  float quad_size = 2.f/res_x;
  100.58 +  uv_size=quad_size/256.0;
  100.59 +  uv_size=1.0/res_x;
  100.60 +
  100.61 +	glBegin(GL_QUADS);             
  100.62 +		glTexCoord2f(u, v); glVertex3f(-size, -size, 0.f);
  100.63 +		glTexCoord2f(u, v+uv_size); glVertex3f(-size,  size, 0.f);
  100.64 +		glTexCoord2f(u+uv_size, v+uv_size); glVertex3f( size,  size, 0.f);
  100.65 +		glTexCoord2f(u+uv_size, v); glVertex3f( size, -size, 0.f);
  100.66 +	glEnd();     
  100.67 +
  100.68 +#else
  100.69 +
  100.70 +	glBegin(GL_QUADS);             
  100.71 +		glTexCoord2f(u-uv_size, v-uv_size); glVertex3f(-size, -size, 0.f);
  100.72 +		glTexCoord2f(u-uv_size, v+uv_size); glVertex3f(-size,  size, 0.f);
  100.73 +		glTexCoord2f(u+uv_size, v+uv_size); glVertex3f( size,  size, 0.f);
  100.74 +		glTexCoord2f(u+uv_size, v-uv_size); glVertex3f( size, -size, 0.f);
  100.75 +	glEnd();     
  100.76 +#endif
  100.77 +
  100.78 +	glPopMatrix();
  100.79 +}
  100.80 +
  100.81 +void trans_Explode_t::SetQuadsProperty(void)
  100.82 +{
  100.83 +	float quad_size = 2.f/res_x;
  100.84 +
  100.85 +	for (int x=0; x<res_x; x++)
  100.86 +	{	
  100.87 +		for (int y=0; y<res_y; y++)
  100.88 +		{
  100.89 +			quads[x+y*res_x].Position[0] = (quad_size/2) + x * quad_size - res_x * (quad_size/2);
  100.90 +			quads[x+y*res_y].Position[1] = (quad_size/2) + y * quad_size - res_y * (quad_size/2);
  100.91 +			quads[x+y*res_x].Position[2] = 0.f;
  100.92 +
  100.93 +			// quads[x+y*res_x].Uvs[0] = x * 256.f / ((quad_size/2) * quad_size - res_x * (quad_size/2));
  100.94 +			// quads[x+y*res_x].Uvs[1] = y * 256.f / ((quad_size/2) * quad_size - res_y * (quad_size/2));
  100.95 +#ifndef TEST_PSC80 // your version
  100.96 +      quads[x+y*res_x].Uvs[0] = x * 256.f / quads[x+y*res_x].Position[0];
  100.97 +			quads[x+y*res_x].Uvs[1] = y * 256.f / quads[x+y*res_x].Position[1];
  100.98 +#else
  100.99 +			quads[x+y*res_x].Uvs[0] = x  / (quad_size*res_x);//+ 256.f / (quad_size*rex_x);
 100.100 +			quads[x+y*res_x].Uvs[1] = y  / (quad_size*res_y);//+ 256.f / (quad_size*rex_x);
 100.101 +#endif
 100.102 +			quads[x+y*res_x].Uvs[2] = 0.f;
 100.103 +		}
 100.104 +	}
 100.105 +
 100.106 +	for (int i=0; i<res_x*res_y; i++)
 100.107 +	{
 100.108 +		quads[i].size = 0.1f;
 100.109 +
 100.110 +		quads[i].Velocity[0] = float(4000-mth::Rand()%8000)/1000.f;
 100.111 +		quads[i].Velocity[1] = float(4000-mth::Rand()%8000)/1000.f;
 100.112 +		quads[i].Velocity[2] = float(mth::Rand()%4000)/1000.f;
 100.113 +
 100.114 +		quads[i].Rotation[0] = 10.f;//float(mth::Rand()%2000)/100.f;
 100.115 +		quads[i].Rotation[1] = 20.f;//float(mth::Rand()%2000)/100.f;
 100.116 +		quads[i].Rotation[2] = 30.f;//float(mth::Rand()%2000)/100.f;
 100.117 +
 100.118 +		quads[i].alpha = 1.f;
 100.119 +
 100.120 +	}
 100.121 +
 100.122 +}
 100.123 +
 100.124 +void trans_Explode_t::GetScene(GLuint texture)
 100.125 +{
 100.126 +	glDisable(GL_BLEND);
 100.127 +
 100.128 +
 100.129 +#ifdef TEST_PSC80
 100.130 +
 100.131 +  txtBindTexture2d(texture,0);
 100.132 +  glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,200,200,256,256);
 100.133 +  txtUnBindTexture2d(0);
 100.134 +
 100.135 +
 100.136 +#else
 100.137 +	glViewport(0, 0, 256, 256);
 100.138 +
 100.139 +	glEnable(GL_TEXTURE_2D);
 100.140 +	glBindTexture(GL_TEXTURE_2D, texture);	
 100.141 +	
 100.142 +	// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 100.143 +    // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 100.144 +	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 100.145 +    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
 100.146 +	
 100.147 +	glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 256, 256, 0);  
 100.148 +	
 100.149 +	// glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 100.150 +	glDisable(GL_TEXTURE_2D);
 100.151 +
 100.152 +	glViewport(0, 0, RX, RY);
 100.153 +#endif
 100.154 +	glEnable(GL_BLEND);
 100.155 +}
 100.156 +
 100.157 +void trans_Explode_t::Draw(float speed)
 100.158 +{
 100.159 +	cmnSetFrustrum(90);
 100.160 +	cmnSetCamera( mth::Vector3_t(0, 0, 1), mth::Vector3_t(0 ,0, 0));
 100.161 +	
 100.162 +	//glEnable(GL_BLEND);
 100.163 +	//glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
 100.164 +
 100.165 +	glDisable(GL_BLEND);
 100.166 +	
 100.167 +	for (int i=0; i<res_x*res_y; i++)
 100.168 +	{
 100.169 +		glColor4f(1.f, 1.f, 1.f, quads[i].alpha);
 100.170 +
 100.171 +		PutOneQuad(quads[i].size, 
 100.172 +			       quads[i].Position[0], quads[i].Position[1], quads[i].Position[2],
 100.173 +				   quads[i].Uvs[0], quads[i].Uvs[1],
 100.174 +				   quads[i].Rotation[0]+speed, quads[i].Rotation[1]+speed, quads[i].Rotation[2]+speed);
 100.175 +
 100.176 +#define DEBUG_QUADS 
 100.177 +#ifdef DEBUG_QUADS
 100.178 +
 100.179 +		glLineWidth(2.f);
 100.180 +	
 100.181 +		glDisable(GL_TEXTURE_2D);
 100.182 +
 100.183 +		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 100.184 +		PutOneQuad(quads[i].size, 
 100.185 +			       quads[i].Position[0], quads[i].Position[1], quads[i].Position[2],
 100.186 +				   quads[i].Uvs[0], quads[i].Uvs[1],
 100.187 +				   quads[i].Rotation[0]+speed, quads[i].Rotation[1]+speed, quads[i].Rotation[2]+speed);
 100.188 +		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 100.189 +
 100.190 +		glEnable(GL_TEXTURE_2D);
 100.191 +#endif
 100.192 +
 100.193 +	}
 100.194 +
 100.195 +	glEnable(GL_BLEND);
 100.196 +}
 100.197 +
 100.198 +void trans_Explode_t::Animate(float start_time, float end_time, float speed)
 100.199 +{
 100.200 +	for (int i=0; i<=res_x*res_y; i++)
 100.201 +	{
 100.202 +		if (quads[i].alpha > 0.f) quads[i].alpha -= speed*2.f;
 100.203 +		
 100.204 +		quads[i].Position[0] += 6.f*quads[i].Velocity[0]*speed/2.f;
 100.205 +		quads[i].Position[1] += 6.f*quads[i].Velocity[1]*speed/2.f;
 100.206 +		quads[i].Position[2] -= quads[i].Velocity[2]*speed;
 100.207 +	}
 100.208 +
 100.209 +}
   101.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   101.2 +++ b/trans_explode.h	Tue Nov 27 15:23:52 2007 +0100
   101.3 @@ -0,0 +1,45 @@
   101.4 +#ifndef TRANS_EXPLODE_H
   101.5 +#define TRANS_EXPLODE_H
   101.6 +
   101.7 +#include "mth_vector3.h"
   101.8 +#include "gl_header.h"
   101.9 +
  101.10 +typedef struct transExplodeQuad
  101.11 +{
  101.12 +	mth::Vector3_t Position; // Position for one quad
  101.13 +	mth::Vector3_t Rotation; // Rotation for one quad
  101.14 +	mth::Vector3_t Velocity; // Velocity for one quad
  101.15 +	mth::Vector3_t Uvs; // Uv for one quad ... Uvs[2] will be always at 0.f !
  101.16 +	
  101.17 +	float alpha; // Alpha for one quad
  101.18 +
  101.19 +	// Size for a quad - Size is computed from the center of quad to one border, so the real
  101.20 +	// quad size is size*2
  101.21 +	float size;
  101.22 +
  101.23 +
  101.24 +}transExplodeQuad;
  101.25 +
  101.26 +class trans_Explode_t
  101.27 +{
  101.28 +	
  101.29 +public:
  101.30 +
  101.31 +	GLuint explode_map;
  101.32 +	int res_x, res_y;
  101.33 +
  101.34 +	transExplodeQuad *quads;
  101.35 +
  101.36 +	trans_Explode_t(int max_x_quads, int max_y_quads);
  101.37 +	~trans_Explode_t();
  101.38 +
  101.39 +	GLuint CreateTextureTransition(int x, int y);
  101.40 +	void PutOneQuad(float size, float px, float py, float pz, float u, float v, float rx, float ry, float rz);
  101.41 +	void GetScene(GLuint texture);
  101.42 +	void SetQuadsProperty(void);
  101.43 +	void Draw(float speed);
  101.44 +	void Animate(float start, float end, float speed);
  101.45 +	
  101.46 +};
  101.47 +
  101.48 +#endif
  101.49 \ No newline at end of file
   102.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   102.2 +++ b/trans_explode2.cxx	Tue Nov 27 15:23:52 2007 +0100
   102.3 @@ -0,0 +1,143 @@
   102.4 +#include "trans_explode2.h"
   102.5 +#include "gl_header.h"
   102.6 +#include "cmn_intro.h"
   102.7 +#include "cmn_texture.h"
   102.8 +
   102.9 +
  102.10 +
  102.11 +
  102.12 +
  102.13 +
  102.14 +
  102.15 +void transExplode2_t::Init(int _xsection,int _ysection)
  102.16 +{
  102.17 +  texture=txtCreateEmptyTexture(1024,1024);
  102.18 +
  102.19 +  nbElements=_xsection*_ysection;
  102.20 +  resY=_ysection;
  102.21 +  resX=_xsection;
  102.22 +
  102.23 +
  102.24 +  elements=new transExplode2Element_t[nbElements];
  102.25 +
  102.26 +  float divx=RX*1.0/1024/resX;
  102.27 +  float divy=RY*1.0/1024/resY;
  102.28 +
  102.29 +  const float SizeX=1.5*800.0/600/resX;
  102.30 +  const float SizeY=SizeX;
  102.31 +  
  102.32 +
  102.33 +  int i,j;
  102.34 +  for (j=0;j<resY;j++)
  102.35 +    for (i=0;i<resX;i++) {
  102.36 +      elements[i+j*resX].position.Init(i*SizeX-resX*SizeX/2+SizeX/2,j*SizeY-resY*SizeY/2+SizeY/2,0);
  102.37 +      elements[i+j*resX].size[0]=SizeX*1.0/2;
  102.38 +      elements[i+j*resX].size[1]=SizeY*1.0/2;
  102.39 +      elements[i+j*resX].uvs.Init(i*divx,j*divy);
  102.40 +      elements[i+j*resX].uvsVec.Init(divx,divy);
  102.41 +//      elements[i+j*resX].uvs.Init(0,0);
  102.42 +//      elements[i+j*resX].uvsVec.Init(800.0/1024,600.0/1024);
  102.43 +      elements[i+j*resX].alpha=1.0;
  102.44 +      elements[i+j*resX].angle=5;
  102.45 +      elements[i+j*resX].rotation.InitRandomVectorInBox(20);
  102.46 +      elements[i+j*resX].rotation.Normalize();
  102.47 +      elements[i+j*resX].velocity.InitRandomVectorInBox(20);
  102.48 +      elements[i+j*resX].velocity[2]=-mth::Abs(elements[i+j*resX].velocity[2]);
  102.49 +      elements[i+j*resX].velocity.Normalize();
  102.50 +      //elements[i+j*resX].velocity*=5;
  102.51 +    }
  102.52 +
  102.53 +
  102.54 +    started=false;
  102.55 +}
  102.56 +
  102.57 +
  102.58 +void transExplode2_t::GetBuffer1()
  102.59 +{
  102.60 +  CopyBackBufferToTexture(texture,RX,RY);
  102.61 +  //started=true;
  102.62 +}
  102.63 +
  102.64 +
  102.65 +
  102.66 +void transExplode2Element_t::Update()
  102.67 +{
  102.68 +  const float AngleAdd=100;
  102.69 +  const float AlphaAdd=-0.5;
  102.70 +
  102.71 +  double dt=Timer->GetFrameTime();
  102.72 +  angle+=AngleAdd*dt;
  102.73 +  position+=velocity*dt;
  102.74 +  alpha+=AlphaAdd*dt;
  102.75 +
  102.76 +}
  102.77 +
  102.78 +
  102.79 +
  102.80 +
  102.81 +void transExplode2Element_t::Draw()
  102.82 +{
  102.83 +
  102.84 +//  cmnDisplayBackground(texture[0]);
  102.85 +//  return ;
  102.86 +
  102.87 +  cmnPushMatrix();
  102.88 +  glMatrixMode(GL_MODELVIEW);
  102.89 +  glTranslatef(position[0],position[1],position[2]);
  102.90 +  glRotatef(angle,rotation[0],rotation[1],rotation[2]);
  102.91 +
  102.92 +  glBegin(GL_QUADS);
  102.93 +  glColor4f(1,1,1,alpha);
  102.94 +  glTexCoord2f(uvs[0],uvs[1]+uvsVec[1]);
  102.95 +  glVertex3f(-size[0],size[1],0);
  102.96 +
  102.97 +  glColor4f(1,1,1,alpha);
  102.98 +  glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]+uvsVec[1]);
  102.99 +  glVertex3f(size[0],size[1],0);
 102.100 +
 102.101 +  glColor4f(1,1,1,alpha);
 102.102 +  glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]);
 102.103 +  glVertex3f(size[0],-size[1],0);
 102.104 +
 102.105 +  glColor4f(1,1,1,alpha);
 102.106 +  glTexCoord2f(uvs[0],uvs[1]);
 102.107 +  glVertex3f(-size[0],-size[1],0);
 102.108 +  glEnd();
 102.109 +    //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR);
 102.110 +
 102.111 +  cmnPopMatrix();
 102.112 +}
 102.113 +
 102.114 +
 102.115 +void transExplode2_t::Draw()
 102.116 +{
 102.117 +  int i;
 102.118 +
 102.119 +  cmnPushMatrix();
 102.120 +  cmnSetFrustrum(90);
 102.121 +  cmnSetCamera(mth::Vector3_t(0,0,1),mth::Vector3_t(0,0,0));
 102.122 +  glMatrixMode(GL_MODELVIEW);
 102.123 +  //glLoadIdentity();
 102.124 +  glEnable(GL_BLEND);
 102.125 +  //glEnable(GL_BLEND);
 102.126 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
 102.127 +  glDisable(GL_DEPTH_TEST);
 102.128 +  glDisable(GL_CULL_FACE);
 102.129 +  txtBindTexture2d(texture,0);
 102.130 +  for (i=0;i<nbElements;i++)
 102.131 +    elements[i].Draw();
 102.132 +
 102.133 +  txtUnBindTexture2d(0);
 102.134 +
 102.135 +  cmnPopMatrix();
 102.136 +}
 102.137 +
 102.138 +
 102.139 +void transExplode2_t::Update()
 102.140 +{
 102.141 +  int i;
 102.142 +  for (i=0;i<nbElements;i++)
 102.143 +    elements[i].Update();
 102.144 +//    elements[i].position+=mth::Vector3_t(0,0,-10)*Timer->GetFrameTime();
 102.145 +  
 102.146 +}
   103.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   103.2 +++ b/trans_explode2.h	Tue Nov 27 15:23:52 2007 +0100
   103.3 @@ -0,0 +1,53 @@
   103.4 +#ifndef TRANS_EXPLODE2_H
   103.5 +#define TRANS_EXPLODE2_H
   103.6 +
   103.7 +#include "gl_header.h"
   103.8 +#include "cmn_texture.h"
   103.9 +#include "mth_vector3.h"
  103.10 +#include "mth_vector2.h"
  103.11 +
  103.12 +struct transExplode2Element_t
  103.13 +{
  103.14 +  mth::Vector2_t uvs;
  103.15 +  mth::Vector2_t uvsVec;
  103.16 +  mth::Vector3_t rotation;
  103.17 +  mth::Vector3_t position;
  103.18 +  mth::Vector3_t velocity;
  103.19 +  float angle;
  103.20 +  float size[2];
  103.21 +  float alpha;
  103.22 +
  103.23 +  void Draw();
  103.24 +  void Update();
  103.25 +};
  103.26 +
  103.27 +
  103.28 +class transExplode2_t
  103.29 +{
  103.30 +  GLuint texture;
  103.31 +
  103.32 +
  103.33 +  transExplode2Element_t* elements;
  103.34 +  int nbElements;
  103.35 +
  103.36 +  int resX;
  103.37 +  int resY;
  103.38 +
  103.39 +  bool started;
  103.40 +
  103.41 +public:
  103.42 +
  103.43 +  transExplode2_t(){}
  103.44 +  void Init(int _xsection,int _ysection);
  103.45 +
  103.46 +
  103.47 +  void GetBuffer1();
  103.48 +  void Draw();
  103.49 +  void Update();
  103.50 +
  103.51 +  bool Started() { return started;}
  103.52 +  void Start() { started=true;}
  103.53 +
  103.54 +};
  103.55 +
  103.56 +#endif
   104.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   104.2 +++ b/trans_fade.cxx	Tue Nov 27 15:23:52 2007 +0100
   104.3 @@ -0,0 +1,73 @@
   104.4 +#include "trans_fade.h"
   104.5 +#include "gl_header.h"
   104.6 +#include "cmn_intro.h"
   104.7 +#include "cmn_texture.h"
   104.8 +
   104.9 +
  104.10 +
  104.11 +
  104.12 +
  104.13 +
  104.14 +
  104.15 +void transFade_t::Init()
  104.16 +{
  104.17 +  texture[0]=txtCreateEmptyTexture(1024,1024);
  104.18 +  texture[1]=txtCreateEmptyTexture(1024,1024);
  104.19 +  alpha[0]=1;
  104.20 +  alpha[1]=0;
  104.21 +}
  104.22 +
  104.23 +
  104.24 +void transFade_t::GetBuffer1()
  104.25 +{
  104.26 +  CopyBackBufferToTexture(texture[0],RX,RY);
  104.27 +}
  104.28 +
  104.29 +void transFade_t::GetBuffer2()
  104.30 +{
  104.31 +  CopyBackBufferToTexture(texture[1],RX,RY);
  104.32 +}
  104.33 +
  104.34 +
  104.35 +void transFade_t::Draw(float _time)
  104.36 +{
  104.37 +  alpha[1]=_time;
  104.38 +  alpha[0]=1-_time;
  104.39 +
  104.40 +
  104.41 +//  cmnDisplayBackground(texture[0]);
  104.42 +//  return ;
  104.43 +
  104.44 +  cmnPushMatrix();
  104.45 +  cmnSetPlanarView();
  104.46 +  //glDisable(GL_BLEND);
  104.47 +  glEnable(GL_BLEND);
  104.48 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  104.49 +  glDisable(GL_DEPTH_TEST);
  104.50 +
  104.51 +  for (int i=0;i<2;i++) {
  104.52 +    txtBindTexture2d(texture[i],0);
  104.53 +    glBegin(GL_QUADS);
  104.54 +    glColor4f(1,1,1,alpha[i]);
  104.55 +    glTexCoord2f(0,RY*1.0/1024);
  104.56 +    glVertex2f(0,RY);
  104.57 +
  104.58 +    glColor4f(1,1,1,alpha[i]);
  104.59 +    glTexCoord2f(RX*1.0/1024,RY*1.0/1024);
  104.60 +    glVertex2f(RX,RY);
  104.61 +
  104.62 +    glColor4f(1,1,1,alpha[i]);
  104.63 +    glTexCoord2f(RX*1.0/1024,0);
  104.64 +    glVertex2f(RX,0);
  104.65 +
  104.66 +    glColor4f(1,1,1,alpha[i]);
  104.67 +    glTexCoord2f(0,0);
  104.68 +    glVertex2f(0,0);
  104.69 +    glEnd();
  104.70 +    //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR);
  104.71 +  }
  104.72 +  txtUnBindTexture2d(0);
  104.73 +
  104.74 +  cmnPopMatrix();
  104.75 +  glMatrixMode(GL_MODELVIEW);
  104.76 +}
   105.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   105.2 +++ b/trans_fade.h	Tue Nov 27 15:23:52 2007 +0100
   105.3 @@ -0,0 +1,24 @@
   105.4 +#ifndef TRANS_FADE_H
   105.5 +#define TRANS_FADE_H
   105.6 +
   105.7 +#include "gl_header.h"
   105.8 +#include "cmn_texture.h"
   105.9 +
  105.10 +class transFade_t
  105.11 +{
  105.12 +  GLuint texture[2];
  105.13 +  float alpha[2];
  105.14 +
  105.15 +public:
  105.16 +
  105.17 +  transFade_t(){}
  105.18 +  void Init();
  105.19 +
  105.20 +
  105.21 +  void GetBuffer1();
  105.22 +  void GetBuffer2();
  105.23 +  void Draw(float _time);
  105.24 +
  105.25 +};
  105.26 +
  105.27 +#endif
  105.28 \ No newline at end of file
   106.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   106.2 +++ b/trans_glow.cxx	Tue Nov 27 15:23:52 2007 +0100
   106.3 @@ -0,0 +1,152 @@
   106.4 +#include "trans_glow.h"
   106.5 +#include "gl_header.h"
   106.6 +#include "cmn_intro.h"
   106.7 +
   106.8 +GLuint trans_Glow_t::CreateOnePass(int x, int y)
   106.9 +{
  106.10 +	GLuint txtnumber;	
  106.11 +	unsigned char *data;
  106.12 +
  106.13 +	glEnable(GL_TEXTURE_2D);
  106.14 +
  106.15 +	data = (unsigned char *)new GLuint[((x * y)*4*sizeof(unsigned int))];
  106.16 +
  106.17 +	glGenTextures(1, &txtnumber);								
  106.18 +	glBindTexture(GL_TEXTURE_2D, txtnumber);			
  106.19 +	glTexImage2D(GL_TEXTURE_2D, 0, 4, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);	
  106.20 +#ifdef USE_MOZAIK
  106.21 +  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  106.22 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  106.23 +#else
  106.24 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  106.25 +	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  106.26 +#endif
  106.27 +	delete [] data;						  						
  106.28 +
  106.29 +	return txtnumber;					
  106.30 +}
  106.31 +
  106.32 +void trans_Glow_t::RenderSceneToQuad(GLuint dst, float alpha)
  106.33 +{
  106.34 +	glEnable(GL_TEXTURE_2D);
  106.35 +	glBindTexture(GL_TEXTURE_2D, dst);
  106.36 +
  106.37 +    glLoadIdentity();               
  106.38 +    
  106.39 +	glEnable(GL_BLEND); 
  106.40 +	glDepthMask(false);
  106.41 +    
  106.42 +	glColor4f( 1, 1, 1, alpha);     
  106.43 +		
  106.44 +	glBegin(GL_QUADS);
  106.45 +		glTexCoord2f(0.f, 0.f); glVertex3f(-1.f, -1.f, 0.f);
  106.46 +		glTexCoord2f(0.f, 1.f); glVertex3f(-1.f, 1.f, 0.f);
  106.47 +		glTexCoord2f(1.f, 1.f); glVertex3f(1.f, 1.f, 0.f);
  106.48 +		glTexCoord2f(1.f, 0.f); glVertex3f(1.f, -1.f, 0.f);
  106.49 +	glEnd();
  106.50 +
  106.51 +    glDepthMask(true);
  106.52 +}
  106.53 +
  106.54 +void trans_Glow_t::StartGlow(void)
  106.55 +{
  106.56 +	glMatrixMode(GL_MODELVIEW);
  106.57 +	glLoadIdentity();
  106.58 +
  106.59 +	glMatrixMode(GL_PROJECTION);
  106.60 +	glLoadIdentity();
  106.61 +
  106.62 +	gluPerspective(90.f,1.33333f,1.f,5000.0f);
  106.63 +
  106.64 +	glDisable(GL_LIGHTING);
  106.65 +
  106.66 +	glViewport(0, 0, 32, 32);
  106.67 +}
  106.68 +
  106.69 +void trans_Glow_t::EndGlow(void)
  106.70 +{
  106.71 +	glMatrixMode(GL_MODELVIEW);
  106.72 +	glLoadIdentity();
  106.73 +
  106.74 +	glMatrixMode(GL_PROJECTION);
  106.75 +	glLoadIdentity();
  106.76 +
  106.77 +	glViewport(0, 0, RX, RY);
  106.78 +
  106.79 +	glEnable(GL_LIGHTING);
  106.80 +}
  106.81 +
  106.82 +void trans_Glow_t::StartRendering(GLuint dst, int x, int y)
  106.83 +{
  106.84 +	glEnable(GL_TEXTURE_2D);
  106.85 +	glBindTexture(GL_TEXTURE_2D, dst);	
  106.86 +	
  106.87 +#ifdef USE_MOZAIK
  106.88 +	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  106.89 +  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  106.90 +#else
  106.91 +  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  106.92 +  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  106.93 +#endif
  106.94 +	glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, x, y, 0);  
  106.95 +	
  106.96 +	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  106.97 +	glDisable(GL_TEXTURE_2D);
  106.98 +}
  106.99 +
 106.100 +void trans_Glow_t::AddPass(GLuint src, GLuint dst, int render_size_x, int render_size_y)
 106.101 +{
 106.102 +	glViewport(0, 0, render_size_x, render_size_y);	
 106.103 +	
 106.104 +	glPushMatrix();
 106.105 +	
 106.106 +	glDisable(GL_CULL_FACE);
 106.107 +	RenderSceneToQuad(src, 1.f);
 106.108 +	glEnable(GL_CULL_FACE);
 106.109 +	
 106.110 +	glPopMatrix();
 106.111 +
 106.112 +	glEnable(GL_TEXTURE_2D);
 106.113 +	glBindTexture(GL_TEXTURE_2D,dst);	
 106.114 +	
 106.115 +#ifdef USE_MOZAIK
 106.116 +	 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 106.117 +   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
 106.118 +#else
 106.119 +  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 106.120 +  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 106.121 +#endif
 106.122 +	glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, render_size_x, render_size_y, 0);  
 106.123 +
 106.124 +	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 106.125 +	glDisable(GL_TEXTURE_2D);
 106.126 +}
 106.127 +
 106.128 +void trans_Glow_t::DoAllDefaultPasses(void)
 106.129 +{
 106.130 +	glDisable(GL_LIGHTING);
 106.131 +
 106.132 +	AddPass(glowPass[0], glowPass[1], 64, 64);
 106.133 +	AddPass(glowPass[1], glowPass[2], 128, 128);
 106.134 +	AddPass(glowPass[2], glowPass[3], 256, 256);
 106.135 +
 106.136 +	glEnable(GL_LIGHTING);
 106.137 +}
 106.138 +
 106.139 +void trans_Glow_t::ApplyGlowToScene(GLuint last_glow_pass, float alpha)
 106.140 +{
 106.141 +	glDisable(GL_CULL_FACE);
 106.142 +	glDisable(GL_LIGHTING);
 106.143 +	glEnable(GL_BLEND);
 106.144 +	glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
 106.145 +	// glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
 106.146 +	// glBlendFunc(GL_SRC_ALPHA, GL_SRC_COLOR);
 106.147 +	// glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_DST_ALPHA);
 106.148 +	
 106.149 +	glDisable(GL_CULL_FACE);
 106.150 +	RenderSceneToQuad(last_glow_pass, alpha);
 106.151 +	glEnable(GL_CULL_FACE);
 106.152 +
 106.153 +	glDisable(GL_BLEND);
 106.154 +	glEnable(GL_LIGHTING);
 106.155 +}
   107.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   107.2 +++ b/trans_glow.h	Tue Nov 27 15:23:52 2007 +0100
   107.3 @@ -0,0 +1,25 @@
   107.4 +#ifndef TRANS_GLOW_H
   107.5 +#define TRANS_GLOW_H
   107.6 +
   107.7 +#include "mth_vector3.h"
   107.8 +#include "gl_header.h"
   107.9 +
  107.10 +#define USE_MOZAIK
  107.11 +
  107.12 +class trans_Glow_t
  107.13 +{
  107.14 +public:
  107.15 +	GLuint glowPass[4];
  107.16 +
  107.17 +	GLuint CreateOnePass(int x, int y);
  107.18 +	void RenderSceneToQuad(GLuint dst, float alpha);
  107.19 +	void StartGlow(void);
  107.20 +	void EndGlow(void);
  107.21 +	void StartRendering(GLuint dst, int x, int y);
  107.22 +	void AddPass(GLuint src, GLuint dst, int render_size_x, int render_size_y);
  107.23 +	void DoAllDefaultPasses(void);
  107.24 +	void ApplyGlowToScene(GLuint last_glow_pass, float alpha);
  107.25 +
  107.26 +};
  107.27 +
  107.28 +#endif
  107.29 \ No newline at end of file
   108.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   108.2 +++ b/trans_puzzle.cxx	Tue Nov 27 15:23:52 2007 +0100
   108.3 @@ -0,0 +1,159 @@
   108.4 +#include "trans_puzzle.h"
   108.5 +#include "gl_header.h"
   108.6 +#include "cmn_intro.h"
   108.7 +#include "cmn_texture.h"
   108.8 +
   108.9 +
  108.10 +
  108.11 +
  108.12 +
  108.13 +
  108.14 +
  108.15 +void transPuzzle_t::Init(int _xsection,int _ysection)
  108.16 +{
  108.17 +  internalTime=0;
  108.18 +  texture[0]=txtCreateEmptyTexture(1024,1024);
  108.19 +  texture[1]=txtCreateEmptyTexture(1024,1024);
  108.20 +
  108.21 +  nbElements=_xsection*_ysection;
  108.22 +  resY=_ysection;
  108.23 +  resX=_xsection;
  108.24 +
  108.25 +
  108.26 +  elements=new transPuzzleElement_t[nbElements];
  108.27 +
  108.28 +  float divx=RX*1.0/1024/resX;
  108.29 +  float divy=RY*1.0/1024/resY;
  108.30 +
  108.31 +  const float SizeX=1.5*800.0/600/resX;
  108.32 +  const float SizeY=SizeX;
  108.33 +  const float TimeStep=0.5/nbElements;
  108.34 +  const float MaxDist=mth::Sqrt(1.0*(resY*resY+resX*resX));
  108.35 +
  108.36 +  int i,j;
  108.37 +  for (j=0;j<resY;j++)
  108.38 +    for (i=0;i<resX;i++) {
  108.39 +      elements[i+j*resX].position.Init(i*SizeX-resX*SizeX/2+SizeX/2,j*SizeY-resY*SizeY/2+SizeY/2,0);
  108.40 +      elements[i+j*resX].size[0]=SizeX*1.0/2;
  108.41 +      elements[i+j*resX].size[1]=SizeY*1.0/2;
  108.42 +      elements[i+j*resX].uvs.Init(i*divx,j*divy);
  108.43 +      elements[i+j*resX].uvsVec.Init(divx,divy);
  108.44 +      elements[i+j*resX].angle=0;
  108.45 +//      elements[i+j*resX].start=TimeStep*(i+j*resX);
  108.46 +      elements[i+j*resX].start=0.5*mth::Sqrt(1.0*(i*i+j*j))/MaxDist;
  108.47 +      elements[i+j*resX].rotation.Init(0,1,0);
  108.48 +    }
  108.49 +
  108.50 +
  108.51 +    started=false;
  108.52 +}
  108.53 +
  108.54 +
  108.55 +void transPuzzle_t::GetBuffer1()
  108.56 +{
  108.57 +  CopyBackBufferToTexture(texture[0],RX,RY);
  108.58 +  //started=true;
  108.59 +}
  108.60 +
  108.61 +void transPuzzle_t::GetBuffer2()
  108.62 +{
  108.63 +  CopyBackBufferToTexture(texture[1],RX,RY);
  108.64 +  //started=true;
  108.65 +}
  108.66 +
  108.67 +
  108.68 +
  108.69 +
  108.70 +
  108.71 +void transPuzzleElement_t::Draw(bool reverse)
  108.72 +{
  108.73 +
  108.74 +//  cmnDisplayBackground(texture[0]);
  108.75 +//  return ;
  108.76 +
  108.77 +  cmnPushMatrix();
  108.78 +  glMatrixMode(GL_MODELVIEW);
  108.79 +
  108.80 +  glTranslatef(position[0],position[1],position[2]);
  108.81 +  glRotatef(angle,rotation[0],rotation[1],rotation[2]);
  108.82 +
  108.83 +  glBegin(GL_QUADS);
  108.84 +  if (reverse) {
  108.85 +
  108.86 +    glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]+uvsVec[1]);
  108.87 +    glVertex3f(-size[0],size[1],0);
  108.88 +
  108.89 +    glTexCoord2f(uvs[0],uvs[1]+uvsVec[1]);
  108.90 +    glVertex3f(size[0],size[1],0);
  108.91 +
  108.92 +    glTexCoord2f(uvs[0],uvs[1]);
  108.93 +    glVertex3f(size[0],-size[1],0);
  108.94 +
  108.95 +    glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]);
  108.96 +    glVertex3f(-size[0],-size[1],0);
  108.97 +
  108.98 +
  108.99 +  } else {
 108.100 +
 108.101 +    glTexCoord2f(uvs[0],uvs[1]);
 108.102 +    glVertex3f(-size[0],-size[1],0);
 108.103 +
 108.104 +    glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]);
 108.105 +    glVertex3f(size[0],-size[1],0);
 108.106 +
 108.107 +    glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]+uvsVec[1]);
 108.108 +    glVertex3f(size[0],size[1],0);
 108.109 +
 108.110 +    glTexCoord2f(uvs[0],uvs[1]+uvsVec[1]);
 108.111 +    glVertex3f(-size[0],size[1],0);
 108.112 +
 108.113 +
 108.114 +  }
 108.115 +  glEnd();
 108.116 +  cmnPopMatrix();
 108.117 +}
 108.118 +
 108.119 +
 108.120 +void transPuzzle_t::Draw()
 108.121 +{
 108.122 +  int i;
 108.123 +
 108.124 +  cmnPushMatrix();
 108.125 +  cmnSetFrustrum(90);
 108.126 +  cmnSetCamera(mth::Vector3_t(0,0,1),mth::Vector3_t(0,0,0));
 108.127 +  glMatrixMode(GL_MODELVIEW);
 108.128 +  //glLoadIdentity();
 108.129 +  glDisable(GL_BLEND);
 108.130 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
 108.131 +  glDisable(GL_DEPTH_TEST);
 108.132 +  glEnable(GL_CULL_FACE);
 108.133 +  //glDisable(GL_CULL_FACE);
 108.134 +  txtBindTexture2d(texture[0],0);
 108.135 +  for (i=0;i<nbElements;i++)
 108.136 +    elements[i].Draw();
 108.137 +  txtBindTexture2d(texture[1],0);
 108.138 +  for (i=0;i<nbElements;i++)
 108.139 +    elements[i].Draw(true);
 108.140 +  txtUnBindTexture2d(0);
 108.141 +
 108.142 +  cmnPopMatrix();
 108.143 +}
 108.144 +
 108.145 +
 108.146 +void transPuzzle_t::Update(float _time)
 108.147 +{
 108.148 +  int i;
 108.149 +  const float AngleAdd=360;
 108.150 +  const float MaxAngle=180;
 108.151 +
 108.152 +  double dt=Timer->GetFrameTime();
 108.153 +  internalTime+=dt;
 108.154 +
 108.155 +  for (i=0;i<nbElements;i++)
 108.156 +    if (elements[i].start<=_time) {
 108.157 +      elements[i].angle=AngleAdd*(_time-elements[i].start);
 108.158 +      elements[i].angle=mth::Min(MaxAngle,elements[i].angle);
 108.159 +    }
 108.160 +//    elements[i].position+=mth::Vector3_t(0,0,-10)*Timer->GetFrameTime();
 108.161 +  
 108.162 +}
   109.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   109.2 +++ b/trans_puzzle.h	Tue Nov 27 15:23:52 2007 +0100
   109.3 @@ -0,0 +1,55 @@
   109.4 +#ifndef TRANS_PUZZLE_H
   109.5 +#define TRANS_PUZZLE_H
   109.6 +
   109.7 +#include "gl_header.h"
   109.8 +#include "cmn_texture.h"
   109.9 +#include "mth_vector3.h"
  109.10 +#include "mth_vector2.h"
  109.11 +
  109.12 +struct transPuzzleElement_t
  109.13 +{
  109.14 +  mth::Vector2_t uvs;
  109.15 +  mth::Vector2_t uvsVec;
  109.16 +  mth::Vector3_t position;
  109.17 +  mth::Vector3_t rotation;
  109.18 +  float angle;
  109.19 +  float size[2];
  109.20 +  float start;
  109.21 +
  109.22 +  void Draw(bool _reverse=false);
  109.23 +};
  109.24 +
  109.25 +
  109.26 +
  109.27 +
  109.28 +class transPuzzle_t
  109.29 +{
  109.30 +  double internalTime;
  109.31 +
  109.32 +  GLuint texture[2];
  109.33 +
  109.34 +  transPuzzleElement_t* elements;
  109.35 +  int nbElements;
  109.36 +
  109.37 +  int resX;
  109.38 +  int resY;
  109.39 +
  109.40 +  bool started;
  109.41 +
  109.42 +public:
  109.43 +
  109.44 +  transPuzzle_t(){}
  109.45 +  void Init(int _xsection,int _ysection);
  109.46 +
  109.47 +
  109.48 +  void GetBuffer1();
  109.49 +  void GetBuffer2();
  109.50 +  void Draw();
  109.51 +  void Update(float _time);
  109.52 +
  109.53 +  bool Started() { return started;}
  109.54 +  void Start() { started=true;}
  109.55 +
  109.56 +};
  109.57 +
  109.58 +#endif
   110.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   110.2 +++ b/trans_radial.cxx	Tue Nov 27 15:23:52 2007 +0100
   110.3 @@ -0,0 +1,64 @@
   110.4 +#include "trans_radial.h"
   110.5 +#include "gl_header.h"
   110.6 +#include "cmn_intro.h"
   110.7 +#include "cmn_texture.h"
   110.8 +
   110.9 +
  110.10 +void transRadial_t::Init()
  110.11 +{
  110.12 +  level=0;
  110.13 +  texture=txtCreateEmptyTexture(1024,1024);
  110.14 +}
  110.15 +
  110.16 +
  110.17 +void transRadial_t::GetBuffer1()
  110.18 +{
  110.19 +  CopyBackBufferToTexture(texture,RX,RY);
  110.20 +}
  110.21 +
  110.22 +void transRadial_t::Draw(float _time)
  110.23 +{
  110.24 +
  110.25 +  const NbPasses=5;
  110.26 +  const Scale=30;
  110.27 +  const Alpha=1.0/NbPasses;
  110.28 +
  110.29 +  cmnPushMatrix();
  110.30 +  cmnSetPlanarView();
  110.31 +  glEnable(GL_BLEND);
  110.32 +  glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  110.33 +  //glBlendFunc(GL_ONE,GL_ONE);
  110.34 +  glDisable(GL_DEPTH_TEST);
  110.35 +
  110.36 +//  float scale=Scale*_time;
  110.37 +  float tr=0;
  110.38 +  float alpha=0;
  110.39 +
  110.40 +  for (int i=0;i<NbPasses;i++) {
  110.41 +    txtBindTexture2d(texture,0);
  110.42 +    glBegin(GL_QUADS);
  110.43 +    glColor4f(1,1,1,alpha);
  110.44 +    glTexCoord2f(0,RY*1.0/1024);
  110.45 +    glVertex2f(0-tr,RY+tr);
  110.46 +
  110.47 +    glColor4f(1,1,1,alpha);
  110.48 +    glTexCoord2f(RX*1.0/1024,RY*1.0/1024);
  110.49 +    glVertex2f(RX+tr,RY+tr);
  110.50 +
  110.51 +    glColor4f(1,1,1,alpha);
  110.52 +    glTexCoord2f(RX*1.0/1024,0);
  110.53 +    glVertex2f(RX+tr,0-tr);
  110.54 +
  110.55 +    glColor4f(1,1,1,alpha);
  110.56 +    glTexCoord2f(0,0);
  110.57 +    glVertex2f(0-tr,0-tr);
  110.58 +    glEnd();
  110.59 +    tr+=Scale*_time;
  110.60 +    alpha+=Alpha*_time;
  110.61 +    //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR);
  110.62 +  }
  110.63 +  txtUnBindTexture2d(0);
  110.64 +
  110.65 +  cmnPopMatrix();
  110.66 +  glMatrixMode(GL_MODELVIEW);
  110.67 +}
   111.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   111.2 +++ b/trans_radial.h	Tue Nov 27 15:23:52 2007 +0100
   111.3 @@ -0,0 +1,22 @@
   111.4 +#ifndef TRANS_RADIAL_H
   111.5 +#define TRANS_RADIAL_H
   111.6 +
   111.7 +#include "gl_header.h"
   111.8 +#include "cmn_texture.h"
   111.9 +
  111.10 +class transRadial_t
  111.11 +{
  111.12 +  GLuint texture;
  111.13 +  float level;
  111.14 +
  111.15 +public:
  111.16 +
  111.17 +  transRadial_t(){}
  111.18 +  void Init();
  111.19 +
  111.20 +  void GetBuffer1();
  111.21 +  void Draw(float _time);
  111.22 +
  111.23 +};
  111.24 +
  111.25 +#endif
  111.26 \ No newline at end of file
   112.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   112.2 +++ b/window_fmod_init.cpp	Tue Nov 27 15:23:52 2007 +0100
   112.3 @@ -0,0 +1,605 @@
   112.4 +#include <stdio.h>
   112.5 +
   112.6 +#include <stdlib.h>
   112.7 +
   112.8 +#include <windows.h>
   112.9 +
  112.10 +#include <math.h>
  112.11 +
  112.12 +#include <gl/gl.h>            
  112.13 +
  112.14 +#include <gl/glu.h>   
  112.15 +
  112.16 +
  112.17 +HDC			hDC  = NULL;		
  112.18 +
  112.19 +HGLRC		hRC  = NULL;	              	
  112.20 +
  112.21 +HWND		hWnd = NULL;		         
  112.22 +
  112.23 +HINSTANCE	hInstance;	                        
  112.24 +
  112.25 +SYSTEMTIME  tm;
  112.26 +
  112.27 +
  112.28 +
  112.29 +BOOL fullscreen = TRUE;
  112.30 +
  112.31 +BOOL done = TRUE;	
  112.32 +
  112.33 +
  112.34 +
  112.35 +typedef struct 
  112.36 +
  112.37 +{
  112.38 +
  112.39 +	int length;
  112.40 +
  112.41 +	int pos;
  112.42 +
  112.43 +	void *data;
  112.44 +
  112.45 +} MEMFILE;
  112.46 +
  112.47 +
  112.48 +
  112.49 +
  112.50 +
  112.51 +unsigned int memopen(char *name)
  112.52 +
  112.53 +{
  112.54 +
  112.55 +	MEMFILE *memfile;
  112.56 +
  112.57 +
  112.58 +
  112.59 +	memfile = (MEMFILE *)calloc(sizeof(MEMFILE),1);
  112.60 +
  112.61 +
  112.62 +
  112.63 +	// hey look some load from resource code!
  112.64 +
  112.65 +	HRSRC		rec;
  112.66 +
  112.67 +	HGLOBAL		handle;
  112.68 +
  112.69 +
  112.70 +
  112.71 +	rec = FindResource(NULL, name, RT_RCDATA);
  112.72 +
  112.73 +	handle = LoadResource(NULL, rec);
  112.74 +
  112.75 +	
  112.76 +
  112.77 +	memfile->data = LockResource(handle);
  112.78 +
  112.79 +	memfile->length = SizeofResource(NULL, rec);
  112.80 +
  112.81 +	memfile->pos = 0;
  112.82 +
  112.83 +
  112.84 +
  112.85 +	return (unsigned int)memfile;
  112.86 +
  112.87 +}
  112.88 +
  112.89 +
  112.90 +
  112.91 +void memclose(unsigned int handle)
  112.92 +
  112.93 +{
  112.94 +
  112.95 +	MEMFILE *memfile = (MEMFILE *)handle;
  112.96 +
  112.97 +
  112.98 +
  112.99 +	free(memfile);
 112.100 +
 112.101 +}
 112.102 +
 112.103 +
 112.104 +
 112.105 +int memread(void *buffer, int size, unsigned int handle)
 112.106 +
 112.107 +{
 112.108 +
 112.109 +	MEMFILE *memfile = (MEMFILE *)handle;
 112.110 +
 112.111 +
 112.112 +
 112.113 +	if (memfile->pos + size >= memfile->length)
 112.114 +
 112.115 +		size = memfile->length - memfile->pos;
 112.116 +
 112.117 +
 112.118 +
 112.119 +	memcpy(buffer, (char *)memfile->data+memfile->pos, size);
 112.120 +
 112.121 +	memfile->pos += size;
 112.122 +
 112.123 +	
 112.124 +
 112.125 +	return size;
 112.126 +
 112.127 +}
 112.128 +
 112.129 +
 112.130 +
 112.131 +void memseek(unsigned int handle, int pos, signed char mode)
 112.132 +
 112.133 +{
 112.134 +
 112.135 +	MEMFILE *memfile = (MEMFILE *)handle;
 112.136 +
 112.137 +
 112.138 +
 112.139 +	if (mode == SEEK_SET) 
 112.140 +
 112.141 +		memfile->pos = pos;
 112.142 +
 112.143 +	else if (mode == SEEK_CUR) 
 112.144 +
 112.145 +		memfile->pos += pos;
 112.146 +
 112.147 +	else if (mode == SEEK_END)
 112.148 +
 112.149 +		memfile->pos = memfile->length + pos;
 112.150 +
 112.151 +
 112.152 +
 112.153 +	if (memfile->pos > memfile->length)
 112.154 +
 112.155 +		memfile->pos = memfile->length;
 112.156 +
 112.157 +}
 112.158 +
 112.159 +
 112.160 +
 112.161 +int memtell(unsigned int handle)
 112.162 +
 112.163 +{
 112.164 +
 112.165 +	MEMFILE *memfile = (MEMFILE *)handle;
 112.166 +
 112.167 +
 112.168 +
 112.169 +	return memfile->pos;
 112.170 +
 112.171 +}
 112.172 +
 112.173 +
 112.174 +
 112.175 +LRESULT CALLBACK WndProc( HWND	hWnd, UINT uMsg, WPARAM	wParam, LPARAM	lParam )			
 112.176 +
 112.177 +{
 112.178 +
 112.179 +	switch (uMsg)									     
 112.180 +
 112.181 +	{      
 112.182 +
 112.183 +		case WM_CREATE :
 112.184 +
 112.185 +		break;      
 112.186 +
 112.187 +         
 112.188 +
 112.189 +		case WM_CLOSE:								
 112.190 +
 112.191 +		{
 112.192 +
 112.193 +			PostQuitMessage(0);						
 112.194 +
 112.195 +			done = NULL;
 112.196 +
 112.197 +			return 0;								
 112.198 +
 112.199 +		}
 112.200 +
 112.201 +
 112.202 +
 112.203 +		case WM_QUIT:								
 112.204 +
 112.205 +		{
 112.206 +
 112.207 +			PostQuitMessage(0);
 112.208 +
 112.209 +			done = NULL;
 112.210 +
 112.211 +			return 0;								
 112.212 +
 112.213 +		}
 112.214 +
 112.215 +
 112.216 +
 112.217 +		case WM_KEYDOWN :
 112.218 +
 112.219 +		{
 112.220 +
 112.221 +			switch ( wParam )     
 112.222 +
 112.223 +			{
 112.224 +
 112.225 +			case VK_ESCAPE :
 112.226 +
 112.227 +				done = NULL;
 112.228 +
 112.229 +				PostQuitMessage( 0 );
 112.230 +				break;
 112.231 +
 112.232 +			}
 112.233 +
 112.234 +			break;
 112.235 +
 112.236 +		}
 112.237 +
 112.238 +	
 112.239 +
 112.240 +	}
 112.241 +
 112.242 +
 112.243 +
 112.244 +	return DefWindowProc(hWnd,uMsg,wParam,lParam);
 112.245 +
 112.246 +}
 112.247 +
 112.248 +
 112.249 +
 112.250 +
 112.251 +
 112.252 +void KillGLWindow( void )								
 112.253 +
 112.254 +{             
 112.255 +
 112.256 +	if ( fullscreen )				    						
 112.257 +
 112.258 +	{
 112.259 +
 112.260 +		ChangeDisplaySettings( NULL, 0 );					
 112.261 +
 112.262 +		ShowCursor( TRUE );								
 112.263 +
 112.264 +	}        
 112.265 +
 112.266 +
 112.267 +
 112.268 +	if ( hRC )											
 112.269 +
 112.270 +	{
 112.271 +
 112.272 +		if ( !wglMakeCurrent( NULL, NULL ) )					
 112.273 +
 112.274 +		{   
 112.275 +
 112.276 +			MessageBox( NULL, "Release Of DC And RC Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
 112.277 +
 112.278 +		}
 112.279 +
 112.280 +
 112.281 +
 112.282 +		if ( !wglDeleteContext( hRC ) ) 						
 112.283 +
 112.284 +		{
 112.285 +
 112.286 +			MessageBox( NULL, "Release Rendering Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
 112.287 +
 112.288 +		}
 112.289 +
 112.290 +		hRC = NULL;
 112.291 +
 112.292 +	}
 112.293 +
 112.294 +}
 112.295 +
 112.296 +
 112.297 +
 112.298 +BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)
 112.299 +
 112.300 +{
 112.301 +
 112.302 +	GLuint		PixelFormat;	   		
 112.303 +
 112.304 +	WNDCLASS	wc;						
 112.305 +
 112.306 +	DWORD		dwExStyle;				
 112.307 +
 112.308 +	DWORD		dwStyle;				
 112.309 +
 112.310 +	RECT		WindowRect;				      
 112.311 +
 112.312 +	WindowRect.left=(long)0;			
 112.313 +
 112.314 +	WindowRect.right=(long)width;		
 112.315 +
 112.316 +	WindowRect.top=(long)0;				   
 112.317 +
 112.318 +	WindowRect.bottom=(long)height;		
 112.319 +
 112.320 +
 112.321 +
 112.322 +	fullscreen = fullscreenflag;			
 112.323 +
 112.324 +
 112.325 +
 112.326 +	hInstance			= GetModuleHandle(NULL);				
 112.327 +
 112.328 +	wc.style			= CS_HREDRAW | CS_VREDRAW | CS_OWNDC;	
 112.329 +
 112.330 +	wc.lpfnWndProc		= (WNDPROC) WndProc;					
 112.331 +
 112.332 +	wc.cbClsExtra		= 0;									
 112.333 +
 112.334 +	wc.cbWndExtra		= 0;									
 112.335 +
 112.336 +	wc.hInstance		= hInstance;							
 112.337 +
 112.338 +	wc.hIcon			= LoadIcon(NULL, IDI_WINLOGO);			
 112.339 +
 112.340 +	wc.hCursor			= LoadCursor(NULL, IDC_ARROW);			
 112.341 +
 112.342 +	wc.hbrBackground	= NULL;									
 112.343 +
 112.344 +	wc.lpszMenuName		= NULL;									
 112.345 +
 112.346 +	wc.lpszClassName	= "OpenGL";								
 112.347 +
 112.348 +
 112.349 +
 112.350 +	if (!RegisterClass(&wc))									
 112.351 +
 112.352 +	{
 112.353 +
 112.354 +		MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.355 +
 112.356 +		return FALSE;											
 112.357 +
 112.358 +	}
 112.359 +
 112.360 +	
 112.361 +
 112.362 +	if (fullscreen)												
 112.363 +
 112.364 +	{
 112.365 +
 112.366 +		DEVMODE dmScreenSettings;								
 112.367 +
 112.368 +		memset(&dmScreenSettings,0,sizeof(dmScreenSettings));	
 112.369 +
 112.370 +		dmScreenSettings.dmSize=sizeof(dmScreenSettings);		
 112.371 +
 112.372 +		dmScreenSettings.dmPelsWidth	= width;				
 112.373 +
 112.374 +		dmScreenSettings.dmPelsHeight	= height;				
 112.375 +
 112.376 +		dmScreenSettings.dmBitsPerPel	= bits;					
 112.377 +
 112.378 +		dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
 112.379 +
 112.380 +
 112.381 +
 112.382 +		
 112.383 +
 112.384 +		if (ChangeDisplaySettings( &dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL )
 112.385 +
 112.386 +		{
 112.387 +
 112.388 +		
 112.389 +
 112.390 +			if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
 112.391 +
 112.392 +			{
 112.393 +
 112.394 +				fullscreen=FALSE;
 112.395 +
 112.396 +			}
 112.397 +
 112.398 +			else
 112.399 +
 112.400 +			{
 112.401 +
 112.402 +				
 112.403 +
 112.404 +				MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);
 112.405 +
 112.406 +				return FALSE;									
 112.407 +
 112.408 +			}
 112.409 +
 112.410 +		}
 112.411 +
 112.412 +	}
 112.413 +
 112.414 +
 112.415 +
 112.416 +	if (fullscreen)												// Are We Still In Fullscreen Mode?
 112.417 +
 112.418 +	{    
 112.419 +
 112.420 +		dwExStyle=WS_EX_APPWINDOW;			   	    			// Window Extended Style
 112.421 +
 112.422 +		dwStyle=WS_POPUP;										// Windows Style
 112.423 +
 112.424 +		ShowCursor(FALSE);										// Hide Mouse Pointer
 112.425 +
 112.426 +	}
 112.427 +
 112.428 +	else
 112.429 +
 112.430 +	{
 112.431 +
 112.432 +		dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;			// Window Extended Style
 112.433 +
 112.434 +		dwStyle=WS_OVERLAPPEDWINDOW;							// Windows Style
 112.435 +
 112.436 +	}
 112.437 +
 112.438 +
 112.439 +
 112.440 +	AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle);		// Adjust Window To True Requested Size
 112.441 +
 112.442 +
 112.443 +
 112.444 +	// Create The Window
 112.445 +
 112.446 +	if (!(hWnd=CreateWindowEx(	dwExStyle,							// Extended Style For The Window
 112.447 +
 112.448 +								"OpenGL",							// Class Name
 112.449 +
 112.450 +								title,								// Window Title
 112.451 +
 112.452 +								dwStyle |							// Defined Window Style
 112.453 +
 112.454 +								WS_CLIPSIBLINGS |					// Required Window Style
 112.455 +
 112.456 +								WS_CLIPCHILDREN,					// Required Window Style
 112.457 +
 112.458 +								0, 0,								// Window Position
 112.459 +
 112.460 +								WindowRect.right-WindowRect.left,	// Calculate Window Width
 112.461 +
 112.462 +								WindowRect.bottom-WindowRect.top,	// Calculate Window Height
 112.463 +
 112.464 +								NULL,								// No Parent Window
 112.465 +
 112.466 +								NULL,								// No Menu
 112.467 +
 112.468 +								hInstance,							// Instance
 112.469 +
 112.470 +								NULL)))								// Dont Pass Anything To WM_CREATE
 112.471 +
 112.472 +	{
 112.473 +
 112.474 +		KillGLWindow();								// Reset The Display
 112.475 +
 112.476 +		MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.477 +
 112.478 +		return FALSE;								// Return FALSE
 112.479 +
 112.480 +	}
 112.481 +
 112.482 +
 112.483 +
 112.484 +	static	PIXELFORMATDESCRIPTOR pfd=				// pfd Tells Windows How We Want Things To Be
 112.485 +
 112.486 +	{
 112.487 +
 112.488 +		sizeof(PIXELFORMATDESCRIPTOR),				// Size Of This Pixel Format Descriptor
 112.489 +
 112.490 +		1,											// Version Number
 112.491 +
 112.492 +		PFD_DRAW_TO_WINDOW |						// Format Must Support Window
 112.493 +
 112.494 +		PFD_SUPPORT_OPENGL |						// Format Must Support OpenGL
 112.495 +
 112.496 +		PFD_DOUBLEBUFFER,							// Must Support Double Buffering
 112.497 +
 112.498 +		PFD_TYPE_RGBA,								// Request An RGBA Format
 112.499 +
 112.500 +		bits,										// Select Our Color Depth
 112.501 +
 112.502 +		0, 0, 0, 0, 0, 0,							// Color Bits Ignored
 112.503 +
 112.504 +		0,											// No Alpha Buffer
 112.505 +
 112.506 +		0,											// Shift Bit Ignored
 112.507 +
 112.508 +		0,											// No Accumulation Buffer
 112.509 +
 112.510 +		0, 0, 0, 0,									// Accumulation Bits Ignored
 112.511 +
 112.512 +		32,											// 16Bit Z-Buffer (Depth Buffer)  
 112.513 +
 112.514 +		32,											// No Stencil Buffer
 112.515 +
 112.516 +		0,											// No Auxiliary Buffer
 112.517 +
 112.518 +		PFD_MAIN_PLANE,								// Main Drawing Layer
 112.519 +
 112.520 +		0,											// Reserved
 112.521 +
 112.522 +		0, 0, 0										// Layer Masks Ignored
 112.523 +
 112.524 +	};
 112.525 +
 112.526 +	
 112.527 +
 112.528 +	if (!(hDC=GetDC(hWnd)))							// Did We Get A Device Context?
 112.529 +
 112.530 +	{
 112.531 +
 112.532 +		KillGLWindow();								// Reset The Display
 112.533 +
 112.534 +		MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.535 +
 112.536 +		return FALSE;								// Return FALSE
 112.537 +
 112.538 +	}
 112.539 +
 112.540 +
 112.541 +
 112.542 +	if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd)))	// Did Windows Find A Matching Pixel Format?
 112.543 +
 112.544 +	{
 112.545 +
 112.546 +		KillGLWindow();								// Reset The Display
 112.547 +
 112.548 +		MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.549 +
 112.550 +		return FALSE;								// Return FALSE
 112.551 +
 112.552 +	}
 112.553 +
 112.554 +      
 112.555 +
 112.556 +	if(!SetPixelFormat(hDC,PixelFormat,&pfd))		// Are We Able To Set The Pixel Format?
 112.557 +
 112.558 +	{
 112.559 +
 112.560 +		KillGLWindow();								// Reset The Display
 112.561 +
 112.562 +		MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.563 +
 112.564 +		return FALSE;								// Return FALSE
 112.565 +
 112.566 +	}
 112.567 +
 112.568 +    
 112.569 +
 112.570 +	if (!(hRC=wglCreateContext(hDC)))				// Are We Able To Get A Rendering Context?
 112.571 +
 112.572 +	{
 112.573 +
 112.574 +		KillGLWindow();								// Reset The Display
 112.575 +
 112.576 +		MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.577 +
 112.578 +		return FALSE;								// Return FALSE
 112.579 +
 112.580 +	}
 112.581 +
 112.582 +           
 112.583 +
 112.584 +	if(!wglMakeCurrent(hDC,hRC))					// Try To Activate The Rendering Context
 112.585 +
 112.586 +	{
 112.587 +
 112.588 +		KillGLWindow();								// Reset The Display
 112.589 +
 112.590 +		MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
 112.591 +
 112.592 +		return FALSE;								// Return FALSE
 112.593 +
 112.594 +	}
 112.595 +
 112.596 +
 112.597 +
 112.598 +	ShowWindow(hWnd,SW_SHOW);						// Show The Window
 112.599 +
 112.600 +	SetForegroundWindow(hWnd);						// Slightly Higher Priority
 112.601 +
 112.602 +	SetFocus(hWnd);									// Sets Keyboard Focus To The Window
 112.603 +
 112.604 +
 112.605 +
 112.606 +	return TRUE;									// Success
 112.607 +
 112.608 +}                       
 112.609 \ No newline at end of file
   113.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   113.2 +++ b/window_fmod_init.h	Tue Nov 27 15:23:52 2007 +0100
   113.3 @@ -0,0 +1,37 @@
   113.4 +// Fmod
   113.5 +
   113.6 +typedef struct 
   113.7 +
   113.8 +{
   113.9 +
  113.10 +	int length;
  113.11 +
  113.12 +	int pos;
  113.13 +
  113.14 +	void *data;
  113.15 +
  113.16 +} MEMFILE;
  113.17 +
  113.18 +
  113.19 +
  113.20 +unsigned int memopen(char *);
  113.21 +
  113.22 +void memclose(unsigned int);
  113.23 +
  113.24 +int memread(void *, int, unsigned int);
  113.25 +
  113.26 +void memseek(unsigned int, int, signed char);
  113.27 +
  113.28 +int memtell(unsigned int);
  113.29 +
  113.30 +
  113.31 +
  113.32 +// Windows
  113.33 +
  113.34 +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);			
  113.35 +
  113.36 +void KillGLWindow(void);								
  113.37 +
  113.38 +BOOL CreateGLWindow(char*, int, int, int, bool);
  113.39 +
  113.40 +                       
  113.41 \ No newline at end of file