fix newly introduced bug which caused texcoord generation to totally break (level5 in nsmb)
This commit is contained in:
parent
3daa24c932
commit
2e7b135228
|
@ -1023,16 +1023,6 @@ __forceinline void setTexture(unsigned int format, unsigned int texpal)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//zero debug - dump tex4x4 to verify contents
|
|
||||||
/* {
|
|
||||||
int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename);
|
|
||||||
static int ctr = 0;
|
|
||||||
char fname[100];
|
|
||||||
FILE* outf;
|
|
||||||
sprintf(fname,"c:\\dump\\%d.bmp", ctr);
|
|
||||||
ctr++;
|
|
||||||
NDS_WriteBMP_32bppBuffer(sizeX,sizeY,texMAP,fname);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1077,6 +1067,18 @@ __forceinline void setTexture(unsigned int format, unsigned int texpal)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////zero debug - dump tex to verify contents
|
||||||
|
//{
|
||||||
|
// int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename);
|
||||||
|
// static int ctr = 0;
|
||||||
|
// char fname[100];
|
||||||
|
// FILE* outf;
|
||||||
|
// sprintf(fname,"c:\\dump\\%d.bmp", ctr);
|
||||||
|
// ctr++;
|
||||||
|
// NDS_WriteBMP_32bppBuffer(sizeX,sizeY,texMAP,fname);
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
|
||||||
texcache[i].sizeX, texcache[i].sizeY, 0,
|
texcache[i].sizeX, texcache[i].sizeY, 0,
|
||||||
GL_RGBA, GL_UNSIGNED_BYTE, texMAP);
|
GL_RGBA, GL_UNSIGNED_BYTE, texMAP);
|
||||||
|
@ -1213,14 +1215,12 @@ static __forceinline void SetVertex()
|
||||||
|
|
||||||
if (texCoordinateTransform == 3)
|
if (texCoordinateTransform == 3)
|
||||||
{
|
{
|
||||||
float s2 =((coord[0]*mtxCurrent[3][0] +
|
last_s =((coord[0]*mtxCurrent[3][0] +
|
||||||
coord[1]*mtxCurrent[3][4] +
|
coord[1]*mtxCurrent[3][4] +
|
||||||
coord[2]*mtxCurrent[3][8]) + _s);
|
coord[2]*mtxCurrent[3][8]) + _s);
|
||||||
float t2 =((coord[0]*mtxCurrent[3][1] +
|
last_t =((coord[0]*mtxCurrent[3][1] +
|
||||||
coord[1]*mtxCurrent[3][5] +
|
coord[1]*mtxCurrent[3][5] +
|
||||||
coord[2]*mtxCurrent[3][9]) + _t);
|
coord[2]*mtxCurrent[3][9]) + _t);
|
||||||
|
|
||||||
glTexCoord2f (last_s=s2, last_t=t2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//refuse to do anything if we have too many verts or polys
|
//refuse to do anything if we have too many verts or polys
|
||||||
|
@ -1589,6 +1589,7 @@ __forceinline void NDS_glShininess (unsigned long val)
|
||||||
__forceinline void NDS_glTexImage(unsigned long val)
|
__forceinline void NDS_glTexImage(unsigned long val)
|
||||||
{
|
{
|
||||||
textureFormat = val;
|
textureFormat = val;
|
||||||
|
texCoordinateTransform = (val>>30);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void NDS_glTexPalette(unsigned long val)
|
__forceinline void NDS_glTexPalette(unsigned long val)
|
||||||
|
@ -1603,16 +1604,16 @@ __forceinline void NDS_glTexCoord(unsigned long val)
|
||||||
|
|
||||||
if (texCoordinateTransform == 1)
|
if (texCoordinateTransform == 1)
|
||||||
{
|
{
|
||||||
float s2, t2;
|
last_s =_s*mtxCurrent[3][0] + _t*mtxCurrent[3][4] +
|
||||||
s2 =_s*mtxCurrent[3][0] + _t*mtxCurrent[3][4] +
|
|
||||||
0.0625f*mtxCurrent[3][8] + 0.0625f*mtxCurrent[3][12];
|
0.0625f*mtxCurrent[3][8] + 0.0625f*mtxCurrent[3][12];
|
||||||
t2 =_s*mtxCurrent[3][1] + _t*mtxCurrent[3][5] +
|
last_t =_s*mtxCurrent[3][1] + _t*mtxCurrent[3][5] +
|
||||||
0.0625f*mtxCurrent[3][9] + 0.0625f*mtxCurrent[3][13];
|
0.0625f*mtxCurrent[3][9] + 0.0625f*mtxCurrent[3][13];
|
||||||
|
|
||||||
glTexCoord2f (last_s=s2, last_t=t2);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
glTexCoord2f (last_s=_s, last_t=_t);
|
else
|
||||||
|
{
|
||||||
|
last_s=_s;
|
||||||
|
last_t=_t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline signed long NDS_glGetClipMatrix (unsigned int index)
|
__forceinline signed long NDS_glGetClipMatrix (unsigned int index)
|
||||||
|
@ -1720,12 +1721,10 @@ __forceinline void NDS_glNormal(unsigned long v)
|
||||||
|
|
||||||
if (texCoordinateTransform == 2)
|
if (texCoordinateTransform == 2)
|
||||||
{
|
{
|
||||||
float s2 =( (normal[0] *mtxCurrent[3][0] + normal[1] *mtxCurrent[3][4] +
|
last_s =( (normal[0] *mtxCurrent[3][0] + normal[1] *mtxCurrent[3][4] +
|
||||||
normal[2] *mtxCurrent[3][8]) + _s);
|
normal[2] *mtxCurrent[3][8]) + _s);
|
||||||
float t2 =( (normal[0] *mtxCurrent[3][1] + normal[1] *mtxCurrent[3][5] +
|
last_t =( (normal[0] *mtxCurrent[3][1] + normal[1] *mtxCurrent[3][5] +
|
||||||
normal[2] *mtxCurrent[3][9]) + _t);
|
normal[2] *mtxCurrent[3][9]) + _t);
|
||||||
|
|
||||||
glTexCoord2f (last_s=s2, last_t=t2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//use the current normal transform matrix
|
//use the current normal transform matrix
|
||||||
|
|
Loading…
Reference in New Issue