Stop using illegal-for-OpenGL-ES glColorPointer(3 calls.

Fixes alias models.
Should have helped particles, but they are still missing-in-action.
diff --git a/quake/src/WinQuake/gl_rlight.cpp b/quake/src/WinQuake/gl_rlight.cpp
index 65da688..8a6fca2 100755
--- a/quake/src/WinQuake/gl_rlight.cpp
+++ b/quake/src/WinQuake/gl_rlight.cpp
@@ -8,7 +8,7 @@
 

 This program is distributed in the hope that it will be useful,

 but WITHOUT ANY WARRANTY; without even the implied warranty of

-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

 See the GNU General Public License for more details.

 

@@ -32,7 +32,7 @@
 void R_AnimateLight (void)

 {

 	int			i,j,k;

-	

+

 //

 // light animations

 // 'm' is normal light, 'a' is no light, 'z' is double bright

@@ -48,7 +48,7 @@
 		k = cl_lightstyle[j].map[k] - 'a';

 		k = k*22;

 		d_lightstylevalue[j] = k;

-	}	

+	}

 }

 

 /*

@@ -92,21 +92,23 @@
     glEnableClientState(GL_COLOR_ARRAY);

 	glDisableClientState(GL_TEXTURE_COORD_ARRAY);

 	glVertexPointer(3, GL_FLOAT, 0, gVertexBuffer);

-	glColorPointer(3, GL_FLOAT, 0, gColorBuffer);

+	glColorPointer(4, GL_FLOAT, 0, gColorBuffer);

 

 	{

 	    float* pPos = gVertexBuffer;

 		float* pColor = gColorBuffer;

-		*pColor++ = 0.2;

-		*pColor++ = 0.1;

-		*pColor++ = 0.0;

+		*pColor++ = 0.2f;

+		*pColor++ = 0.1f;

+		*pColor++ = 0.0f;

+		*pColor++ = 1.0f;

 		for (i=0 ; i<3 ; i++)

 			*pPos++ = light->origin[i] - vpn[i]*rad;

 		for (i=16 ; i>=0 ; i--)

 		{

-			*pColor++ = 0.0;

-			*pColor++ = 0.0;

-			*pColor++ = 0.0;

+			*pColor++ = 0.0f;

+			*pColor++ = 0.0f;

+			*pColor++ = 0.0f;

+			*pColor++ = 0.0f;

 			a = i/16.0 * M_PI*2;

 			for (j=0 ; j<3 ; j++)

 				*pPos++ = light->origin[j] + vright[j]*cos(a)*rad

@@ -117,7 +119,7 @@
     glDisableClientState(GL_COLOR_ARRAY);

 	glEnableClientState(GL_TEXTURE_COORD_ARRAY);

 	glColor3f(0,0,0); // Ensure the color ends up being zero just like the non-OpenGLES code

-	

+

 #else

 	glBegin (GL_TRIANGLE_FAN);

 	glColor3f (0.2,0.1,0.0);

@@ -193,13 +195,13 @@
 	float		dist;

 	msurface_t	*surf;

 	int			i;

-	

+

 	if (node->contents < 0)

 		return;

 

 	splitplane = node->plane;

 	dist = DotProduct (light->origin, splitplane->normal) - splitplane->dist;

-	

+

 	if (dist > light->radius)

 	{

 		R_MarkLights (light, bit, node->children[0]);

@@ -210,7 +212,7 @@
 		R_MarkLights (light, bit, node->children[1]);

 		return;

 	}

-		

+

 // mark the polygons

 	surf = cl.worldmodel->surfaces + node->firstsurface;

 	for (i=0 ; i<node->numsurfaces ; i++, surf++)

@@ -282,7 +284,7 @@
 

 	if (node->contents < 0)

 		return -1;		// didn't hit anything

-	

+

 // calculate mid point

 

 // FIXME: optimize for axial

@@ -290,23 +292,23 @@
 	front = DotProduct (start, plane->normal) - plane->dist;

 	back = DotProduct (end, plane->normal) - plane->dist;

 	side = front < 0;

-	

+

 	if ( (back < 0) == side)

 		return RecursiveLightPoint (node->children[side], start, end);

-	

+

 	frac = front / (front-back);

 	mid[0] = start[0] + (end[0] - start[0])*frac;

 	mid[1] = start[1] + (end[1] - start[1])*frac;

 	mid[2] = start[2] + (end[2] - start[2])*frac;

-	

-// go down front side	

+

+// go down front side

 	r = RecursiveLightPoint (node->children[side], start, mid);

 	if (r >= 0)

 		return r;		// hit something

-		

+

 	if ( (back < 0) == side )

 		return -1;		// didn't hit anuthing

-		

+

 // check for impact on this node

 	VectorCopy (mid, lightspot);

 	lightplane = plane;

@@ -318,17 +320,17 @@
 			continue;	// no lightmaps

 

 		tex = surf->texinfo;

-		

+

 		s = (int) (DotProduct (mid, tex->vecs[0]) + tex->vecs[0][3]);

 		t = (int) (DotProduct (mid, tex->vecs[1]) + tex->vecs[1][3]);

 

 		if (s < surf->texturemins[0] ||

 		t < surf->texturemins[1])

 			continue;

-		

+

 		ds = s - surf->texturemins[0];

 		dt = t - surf->texturemins[1];

-		

+

 		if ( ds > surf->extents[0] || dt > surf->extents[1] )

 			continue;

 

@@ -353,10 +355,10 @@
 				lightmap += ((surf->extents[0]>>4)+1) *

 						((surf->extents[1]>>4)+1);

 			}

-			

+

 			r >>= 8;

 		}

-		

+

 		return r;

 	}

 

@@ -368,16 +370,16 @@
 {

 	vec3_t		end;

 	int			r;

-	

+

 	if (!cl.worldmodel->lightdata)

 		return 255;

-	

+

 	end[0] = p[0];

 	end[1] = p[1];

 	end[2] = p[2] - 2048;

-	

+

 	r = RecursiveLightPoint (cl.worldmodel->nodes, p, end);

-	

+

 	if (r == -1)

 		r = 0;

 

diff --git a/quake/src/WinQuake/gl_rmain.cpp b/quake/src/WinQuake/gl_rmain.cpp
index 064deb4..03e7889 100755
--- a/quake/src/WinQuake/gl_rmain.cpp
+++ b/quake/src/WinQuake/gl_rmain.cpp
@@ -8,7 +8,7 @@
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 See the GNU General Public License for more details.
 
@@ -35,7 +35,7 @@
 
 int			c_brush_polys, c_alias_polys;
 
-qboolean	envmap;				// true during envmap command capture 
+qboolean	envmap;				// true during envmap command capture
 
 int			currenttexture = -1;		// to avoid unnecessary texture sets
 
@@ -237,7 +237,7 @@
 			1, 0,
 			1, 1
 		};
-		
+
 		VectorMA (e->origin, frame->down, up, point);
 		VectorMA (point, frame->left, right, pPoint);
 		pPoint += 3;
@@ -252,12 +252,12 @@
 
 		VectorMA (e->origin, frame->down, up, point);
 		VectorMA (point, frame->right, right, pPoint);
-		
+
 		glVertexPointer(3, GL_FLOAT, 0, gVertexBuffer);
 		glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
 		glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
 	}
-	
+
 #else
 	glBegin (GL_QUADS);
 
@@ -280,7 +280,7 @@
 	VectorMA (e->origin, frame->down, up, point);
 	VectorMA (point, frame->right, right, point);
 	glVertex3fv (point);
-	
+
 	glEnd ();
 #endif
 
@@ -349,7 +349,7 @@
 		count = *order++;
 		if (!count)
 			break;		// done
-			
+
 #ifdef USE_OPENGLES
 		{
 			int primType;
@@ -357,7 +357,7 @@
 			float* pColor;
 			float* pTexCoord;
 			float* pPos;
-			
+
 			if (count < 0)
 			{
 				count = -count;
@@ -365,12 +365,12 @@
 			}
 			else
 				primType = GL_TRIANGLE_STRIP;
-			
+
 			// texture coordinates come from the draw list
 			glTexCoordPointer(2, GL_FLOAT, 0, gTexCoordBuffer);
 			glVertexPointer(3, GL_FLOAT, 0, gVertexBuffer);
-			glColorPointer(3, GL_FLOAT, 0, gColorBuffer);
-		
+			glColorPointer(4, GL_FLOAT, 0, gColorBuffer);
+
 			pColor = gColorBuffer;
 			pPos = gVertexBuffer;
 			pTexCoord = gTexCoordBuffer;
@@ -381,18 +381,19 @@
 				*pTexCoord++ = ((float *)order)[0];
 				*pTexCoord++ = ((float *)order)[1];
 				order += 2;
-				
+
 				// normals and vertexes come from the frame list
 				l = shadedots[verts->lightnormalindex] * shadelight;
 				*pColor++ = l;
 				*pColor++ = l;
 				*pColor++ = l;
+				*pColor++ = 1.0f;
 				*pPos++ = verts->v[0];
 				*pPos++ = verts->v[1];
 				*pPos++ = verts->v[2];
 				verts++;
 		    } while (--c);
-									
+
 			glDrawArrays(primType, 0, count);
 		}
 
@@ -464,14 +465,14 @@
 		count = *order++;
 		if (!count)
 			break;		// done
-			
+
 #ifdef USE_OPENGLES
 
 		{
 			int primType;
 			int c;
 			float* pVertex;
-			
+
 			if (count < 0)
 			{
 				count = -count;
@@ -479,7 +480,7 @@
 			}
 			else
 				primType = GL_TRIANGLE_STRIP;
-					
+
 			pVertex = gVertexBuffer;
 			for(c = 0; c < count; c++)
 			{
@@ -496,11 +497,11 @@
 				pVertex[1] -= shadevector[1]*(pVertex[2]+lheight);
 				pVertex[2] = height;
 	//			height -= 0.001;
-	
+
 				pVertex += 3;
 				verts++;
 			}
-			
+
 			glVertexPointer(3, GL_FLOAT, 0, gVertexBuffer);
 			glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 			glDrawArrays(primType, 0, count);
@@ -538,10 +539,10 @@
 		} while (--count);
 
 		glEnd ();
-		
+
 #endif
 
-	}	
+	}
 }
 
 
@@ -655,7 +656,7 @@
 
 	shadedots = r_avertexnormal_dots[((int)(e->angles[1] * (SHADEDOT_QUANT / 360.0))) & (SHADEDOT_QUANT - 1)];
 	shadelight = shadelight / 200.0;
-	
+
 	an = e->angles[1]/180*M_PI;
 	shadevector[0] = cos(-an);
 	shadevector[1] = sin(-an);
@@ -826,7 +827,7 @@
 	ambientlight = j;
 	shadelight = j;
 
-// add dynamic lights		
+// add dynamic lights
 	for (lnum=0 ; lnum<MAX_DLIGHTS ; lnum++)
 	{
 		dl = &cl_dlights[lnum];
@@ -932,7 +933,7 @@
 {
 	int		i;
 
-	if (r_refdef.fov_x == 90) 
+	if (r_refdef.fov_x == 90)
 	{
 		// front side is visible
 
@@ -1130,7 +1131,7 @@
         float zx = z * x;
         float xs = x * s;
         float ys = y * s;
-        float zs = z * s;       
+        float zs = z * s;
         rm[rmOffset +  0] = x*x*nc +  c;
         rm[rmOffset +  4] =  xy*nc - zs;
         rm[rmOffset +  8] =  zx*nc + ys;
@@ -1215,7 +1216,7 @@
 		glCullFace(GL_FRONT);
 
 	glMatrixMode(GL_MODELVIEW);
-	
+
 #ifdef DO_OWN_MATRIX_MATH
 
 	float mv[16];
@@ -1229,7 +1230,7 @@
     translateM(mv, 0, -r_refdef.vieworg[0],  -r_refdef.vieworg[1],  -r_refdef.vieworg[2]);
 
     glLoadMatrixf(mv);
-    
+
     memcpy(r_world_matrix, mv, sizeof(r_world_matrix));
 
 #else
@@ -1523,6 +1524,6 @@
 	{
 //		glFinish ();
 		time2 = Sys_FloatTime ();
-		Con_Printf ("%3i ms  %4i wpoly %4i epoly\n", (int)((time2-time1)*1000), c_brush_polys, c_alias_polys); 
+		Con_Printf ("%3i ms  %4i wpoly %4i epoly\n", (int)((time2-time1)*1000), c_brush_polys, c_alias_polys);
 	}
 }
diff --git a/quake/src/WinQuake/r_part.cpp b/quake/src/WinQuake/r_part.cpp
index 3688c81..9ed4223 100755
--- a/quake/src/WinQuake/r_part.cpp
+++ b/quake/src/WinQuake/r_part.cpp
@@ -8,7 +8,7 @@
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 See the GNU General Public License for more details.
 
@@ -86,20 +86,20 @@
 				free_particles = p->next;
 				p->next = active_particles;
 				active_particles = p;
-		
+
 				p->die = cl.time + 0.2 + (rand()&7) * 0.02;
 				p->color = 150 + rand()%6;
 				p->type = pt_slowgrav;
-				
+
 				dir[0] = j*8;
 				dir[1] = i*8;
 				dir[2] = k*8;
-	
+
 				p->org[0] = org[0] + i + (rand()&3);
 				p->org[1] = org[1] + j + (rand()&3);
 				p->org[2] = org[2] + k + (rand()&3);
-	
-				VectorNormalize (dir);						
+
+				VectorNormalize (dir);
 				vel = 50 + (rand()&63);
 				VectorScale (dir, vel, p->vel);
 			}
@@ -130,7 +130,7 @@
 	float		sr, sp, sy, cr, cp, cy;
 	vec3_t		forward;
 	float		dist;
-	
+
 	dist = 64;
 	count = 50;
 
@@ -152,7 +152,7 @@
 		angle = cl.time * avelocities[i][2];
 		sr = sin(angle);
 		cr = cos(angle);
-	
+
 		forward[0] = cp*cy;
 		forward[1] = cp*sy;
 		forward[2] = -sp;
@@ -167,10 +167,10 @@
 		p->die = cl.time + 0.01;
 		p->color = 0x6f;
 		p->type = pt_explode;
-		
-		p->org[0] = ent->origin[0] + r_avertexnormals[i][0]*dist + forward[0]*beamlength;			
-		p->org[1] = ent->origin[1] + r_avertexnormals[i][1]*dist + forward[1]*beamlength;			
-		p->org[2] = ent->origin[2] + r_avertexnormals[i][2]*dist + forward[2]*beamlength;			
+
+		p->org[0] = ent->origin[0] + r_avertexnormals[i][0]*dist + forward[0]*beamlength;
+		p->org[1] = ent->origin[1] + r_avertexnormals[i][1]*dist + forward[1]*beamlength;
+		p->org[2] = ent->origin[2] + r_avertexnormals[i][2]*dist + forward[2]*beamlength;
 	}
 }
 
@@ -183,7 +183,7 @@
 void R_ClearParticles (void)
 {
 	int		i;
-	
+
 	free_particles = &particles[0];
 	active_particles = NULL;
 
@@ -201,7 +201,7 @@
 	int		c;
 	particle_t	*p;
 	char	name[MAX_OSPATH];
-	
+
 	sprintf (name,"maps/%s.pts", sv.name);
 
 	COM_FOpenFile (name, &f);
@@ -210,7 +210,7 @@
 		Con_Printf ("couldn't open %s\n", name);
 		return;
 	}
-	
+
 	Con_Printf ("Reading %s...\n", name);
 	c = 0;
 	for ( ;; )
@@ -219,7 +219,7 @@
 		if (r != 3)
 			break;
 		c++;
-		
+
 		if (!free_particles)
 		{
 			Con_Printf ("Not enough free particles\n");
@@ -229,7 +229,7 @@
 		free_particles = p->next;
 		p->next = active_particles;
 		active_particles = p;
-		
+
 		p->die = 99999;
 		p->color = (-c)&15;
 		p->type = pt_static;
@@ -252,7 +252,7 @@
 {
 	vec3_t		org, dir;
 	int			i, count, msgcount, color;
-	
+
 	for (i=0 ; i<3 ; i++)
 		org[i] = MSG_ReadCoord ();
 	for (i=0 ; i<3 ; i++)
@@ -264,10 +264,10 @@
 	count = 1024;
 else
 	count = msgcount;
-	
+
 	R_RunParticleEffect (org, dir, color, count);
 }
-	
+
 /*
 ===============
 R_ParticleExplosion
@@ -278,7 +278,7 @@
 {
 	int			i, j;
 	particle_t	*p;
-	
+
 	for (i=0 ; i<1024 ; i++)
 	{
 		if (!free_particles)
@@ -356,7 +356,7 @@
 {
 	int			i, j;
 	particle_t	*p;
-	
+
 	for (i=0 ; i<1024 ; i++)
 	{
 		if (!free_particles)
@@ -401,7 +401,7 @@
 {
 	int			i, j;
 	particle_t	*p;
-	
+
 	for (i=0 ; i<count ; i++)
 	{
 		if (!free_particles)
@@ -473,20 +473,20 @@
 				free_particles = p->next;
 				p->next = active_particles;
 				active_particles = p;
-		
+
 				p->die = cl.time + 2 + (rand()&31) * 0.02;
 				p->color = 224 + (rand()&7);
 				p->type = pt_slowgrav;
-				
+
 				dir[0] = j*8 + (rand()&7);
 				dir[1] = i*8 + (rand()&7);
 				dir[2] = 256;
-	
+
 				p->org[0] = org[0] + dir[0];
 				p->org[1] = org[1] + dir[1];
 				p->org[2] = org[2] + (rand()&63);
-	
-				VectorNormalize (dir);						
+
+				VectorNormalize (dir);
 				vel = 50 + (rand()&63);
 				VectorScale (dir, vel, p->vel);
 			}
@@ -515,20 +515,20 @@
 				free_particles = p->next;
 				p->next = active_particles;
 				active_particles = p;
-		
+
 				p->die = cl.time + 0.2 + (rand()&7) * 0.02;
 				p->color = 7 + (rand()&7);
 				p->type = pt_slowgrav;
-				
+
 				dir[0] = j*8;
 				dir[1] = i*8;
 				dir[2] = k*8;
-	
+
 				p->org[0] = org[0] + i + (rand()&3);
 				p->org[1] = org[1] + j + (rand()&3);
 				p->org[2] = org[2] + k + (rand()&3);
-	
-				VectorNormalize (dir);						
+
+				VectorNormalize (dir);
 				vel = 50 + (rand()&63);
 				VectorScale (dir, vel, p->vel);
 			}
@@ -563,7 +563,7 @@
 		free_particles = p->next;
 		p->next = active_particles;
 		active_particles = p;
-		
+
 		VectorCopy (vec3_origin, p->vel);
 		p->die = cl.time + 2;
 
@@ -600,7 +600,7 @@
 					p->color = 52 + ((tracercount&4)<<1);
 				else
 					p->color = 230 + ((tracercount&4)<<1);
-			
+
 				tracercount++;
 
 				VectorCopy (start, p->org);
@@ -632,7 +632,7 @@
 					p->org[j] = start[j] + ((rand()&15)-8);
 				break;
 		}
-		
+
 
 		VectorAdd (start, vec, start);
 	}
@@ -670,12 +670,12 @@
 
 	glEnable (GL_BLEND);
 	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-	
+
 #ifdef USE_OPENGLES
 	glEnableClientState(GL_COLOR_ARRAY);
     glVertexPointer(3, GL_FLOAT, 0, gVertexBuffer);
 	glTexCoordPointer(2, GL_BYTE, 0, gTexCoordBuffer);
-	glColorPointer(3, GL_UNSIGNED_BYTE, 0, gColorBuffer);
+	glColorPointer(4, GL_UNSIGNED_BYTE, 0, gColorBuffer);
 	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
 #else
 	glBegin (GL_TRIANGLES);
@@ -696,8 +696,8 @@
 	time1 = frametime * 5;
 	grav = frametime * sv_gravity.value * 0.05;
 	dvel = 4*frametime;
-	
-	for ( ;; ) 
+
+	for ( ;; )
 	{
 		kill = active_particles;
 		if (kill && kill->die < cl.time)
@@ -743,9 +743,10 @@
 			pColor = (unsigned char*) gColorBuffer;
 			pUV = (unsigned char*) gTexCoordBuffer;
 		}
-		
+
 		memcpy(pColor, (byte *)&d_8to24table[(int)p->color], 3);
-		pColor += 3;
+		pColor[3] = 1.0f;
+		pColor += 4;
 		*pUV++ = 0;
 		*pUV++ = 0;
 		*pPos++ = p->org[0];
@@ -753,7 +754,8 @@
 		*pPos++ = p->org[2];
 
 		memcpy(pColor, (byte *)&d_8to24table[(int)p->color], 3);
-		pColor += 3;
+		pColor[3] = 1.0f;
+		pColor += 4;
 		*pUV++ = 255;
 		*pUV++ = 0;
 		*pPos++ = p->org[0] + up[0]*scale;
@@ -761,15 +763,16 @@
 		*pPos++ = p->org[2] + up[2]*scale;
 
 		memcpy(pColor, (byte *)&d_8to24table[(int)p->color], 3);
-		pColor += 3;
+		pColor[3] = 1.0f;
+		pColor += 4;
 		*pUV++ = 0;
 		*pUV++ = 255;
 		*pPos++ = p->org[0] + right[0]*scale;
 		*pPos++ = p->org[1] + right[1]*scale;
 		*pPos++ = p->org[2] + right[2]*scale;
-		
+
 		particleIndex += 3;
-		
+
 #else
 		glColor3ubv ((byte *)&d_8to24table[(int)p->color]);
 		glTexCoord2f (0,0);
@@ -785,7 +788,7 @@
 		p->org[0] += p->vel[0]*frametime;
 		p->org[1] += p->vel[1]*frametime;
 		p->org[2] += p->vel[2]*frametime;
-		
+
 		switch (p->type)
 		{
 		case pt_static:
@@ -848,7 +851,7 @@
 
 #ifdef GLQUAKE
 #ifdef USE_OPENGLES
-	glDrawArrays(GL_TRIANGLES, 0, particleIndex); 
+	glDrawArrays(GL_TRIANGLES, 0, particleIndex);
 	glDisableClientState(GL_COLOR_ARRAY);
 	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
 #else