rename variable 'i' in setupTexture to 'tx' :)

This commit is contained in:
mtabachenko 2009-01-11 10:41:00 +00:00
parent 4c322a586b
commit 0caab415d6
1 changed files with 50 additions and 50 deletions

View File

@ -754,57 +754,57 @@ static void setTexture(unsigned int format, unsigned int texpal)
mspal.dump(pal);
u32 i=texcache_start;
u32 tx=texcache_start;
while (TRUE)
{
//conditions where we give up and regenerate the texture:
if (texcache_stop==i) break;
if (texcache[i].frm==0) break;
if (texcache_stop == tx) break;
if (texcache[tx].frm == 0) break;
//conditions where we reject matches:
//when the teximage or texpal params dont match
//(this is our key for identifying palettes in the cache)
if(texcache[i].frm != format) goto REJECT;
if(texcache[i].pal != texpal) goto REJECT;
if (texcache[tx].frm != format) goto REJECT;
if (texcache[tx].pal != texpal) goto REJECT;
//the texture matches params, but isnt suspected invalid. accept it.
if(!texcache[i].suspectedInvalid) goto ACCEPT;
if (!texcache[tx].suspectedInvalid) goto ACCEPT;
//if we couldnt cache this entire texture due to it being too large, then reject it
if(texSize+indexSize > (int)sizeof(texcache[i].texture)) goto REJECT;
if (texSize+indexSize > (int)sizeof(texcache[tx].texture)) goto REJECT;
//when the palettes dont match:
//note that we are considering 4x4 textures to have a palette size of 0.
//they really have a potentially HUGE palette, too big for us to handle like a normal palette,
//so they go through a different system
if(mspal.size != 0 && memcmp(texcache[i].palette,pal,mspal.size)) goto REJECT;
if (mspal.size != 0 && memcmp(texcache[tx].palette,pal,mspal.size)) goto REJECT;
//when the texture data doesn't match
if(ms.memcmp(texcache[i].texture,sizeof(texcache[i].texture))) goto REJECT;
if(ms.memcmp(texcache[tx].texture,sizeof(texcache[tx].texture))) goto REJECT;
//if the texture is 4x4 then the index data must match
if(textureMode == TEXMODE_4X4) {
if(msIndex.memcmp(texcache[i].texture + texcache[i].textureSize,texcache[i].indexSize)) goto REJECT;
if(msIndex.memcmp(texcache[tx].texture + texcache[tx].textureSize,texcache[tx].indexSize)) goto REJECT;
}
ACCEPT:
texcache[i].suspectedInvalid = false;
texcache_count=i;
if(lastTexture == -1 || (int)i != lastTexture)
texcache[tx].suspectedInvalid = false;
texcache_count = tx;
if(lastTexture == -1 || (int)tx != lastTexture)
{
lastTexture = i;
glBindTexture(GL_TEXTURE_2D,texcache[i].id);
lastTexture = tx;
glBindTexture(GL_TEXTURE_2D,texcache[tx].id);
glMatrixMode (GL_TEXTURE);
glLoadIdentity ();
glScaled (texcache[i].invSizeX, texcache[i].invSizeY, 1.0f);
glScaled (texcache[tx].invSizeX, texcache[tx].invSizeY, 1.0f);
}
return;
REJECT:
i++;
if (i>MAX_TEXTURE)
tx++;
if ( tx > MAX_TEXTURE )
{
texcache_stop=texcache_start;
texcache[texcache_stop].frm=0;
@ -814,41 +814,41 @@ REJECT:
texcache_start=0;
texcache_stop=MAX_TEXTURE<<1;
}
i=0;
tx=0;
}
}
lastTexture = i;
glBindTexture(GL_TEXTURE_2D, texcache[i].id);
lastTexture = tx;
glBindTexture(GL_TEXTURE_2D, texcache[tx].id);
texcache[i].suspectedInvalid = false;
texcache[i].frm=format;
texcache[i].mode=textureMode;
texcache[i].pal=texpal;
texcache[i].sizeX=sizeX;
texcache[i].sizeY=sizeY;
texcache[i].invSizeX=1.0f/((float)(sizeX));
texcache[i].invSizeY=1.0f/((float)(sizeY));
texcache[i].textureSize = ms.dump(texcache[i].texture,sizeof(texcache[i].texture));
texcache[tx].suspectedInvalid = false;
texcache[tx].frm=format;
texcache[tx].mode=textureMode;
texcache[tx].pal=texpal;
texcache[tx].sizeX=sizeX;
texcache[tx].sizeY=sizeY;
texcache[tx].invSizeX=1.0f/((float)(sizeX));
texcache[tx].invSizeY=1.0f/((float)(sizeY));
texcache[tx].textureSize = ms.dump(texcache[tx].texture,sizeof(texcache[tx].texture));
//dump palette data for cache keying
texcache[i].palSize = mspal.size;
if ( texcache[i].palSize != 0 )
texcache[tx].palSize = mspal.size;
if ( texcache[tx].palSize )
{
memcpy(texcache[i].palette, pal, texcache[i].palSize*2);
memcpy(texcache[tx].palette, pal, texcache[tx].palSize*2);
}
//dump 4x4 index data for cache keying
texcache[i].indexSize = 0;
texcache[tx].indexSize = 0;
if(textureMode == TEXMODE_4X4)
{
texcache[i].indexSize = std::min(msIndex.size,(int)sizeof(texcache[i].texture) - texcache[i].textureSize);
msIndex.dump(texcache[i].texture,texcache[i].indexSize);
texcache[tx].indexSize = std::min(msIndex.size,(int)sizeof(texcache[tx].texture) - texcache[tx].textureSize);
msIndex.dump(texcache[tx].texture,texcache[tx].indexSize);
}
glMatrixMode (GL_TEXTURE);
glLoadIdentity ();
glScaled (texcache[i].invSizeX, texcache[i].invSizeY, 1.0f);
glScaled (texcache[tx].invSizeX, texcache[tx].invSizeY, 1.0f);
//INFO("Texture %03i - format=%08X; pal=%04X (mode %X, width %04i, height %04i)\n",i, texcache[i].frm, texcache[i].pal, texcache[i].mode, sizeX, sizeY);
@ -856,7 +856,7 @@ REJECT:
//============================================================================ Texture conversion
u32 palZeroTransparent = (1-((format>>29)&1))*255; // shash: CONVERT THIS TO A TABLE :)
switch (texcache[i].mode)
switch (texcache[tx].mode)
{
case TEXMODE_A3I5:
{
@ -952,14 +952,14 @@ REJECT:
u32* map = (u32*)ms.items[0].ptr;
u32 limit = ms.items[0].len<<2;
u32 d = 0;
if ( (texcache[i].frm & 0xc000) == 0x8000)
if ( (texcache[tx].frm & 0xc000) == 0x8000)
// texel are in slot 2
slot1=(u16*)&ARM9Mem.textureSlotAddr[1][((texcache[i].frm&0x3FFF)<<2)+0x010000];
slot1=(u16*)&ARM9Mem.textureSlotAddr[1][((texcache[tx].frm & 0x3FFF)<<2)+0x010000];
else
slot1=(u16*)&ARM9Mem.textureSlotAddr[1][(texcache[i].frm&0x3FFF)<<2];
slot1=(u16*)&ARM9Mem.textureSlotAddr[1][(texcache[tx].frm & 0x3FFF)<<2];
u16 yTmpSize = (texcache[i].sizeY>>2);
u16 xTmpSize = (texcache[i].sizeX>>2);
u16 yTmpSize = (texcache[tx].sizeY>>2);
u16 xTmpSize = (texcache[tx].sizeX>>2);
//this is flagged whenever a 4x4 overruns its slot.
//i am guessing we just generate black in that case
@ -967,8 +967,8 @@ REJECT:
for (int y = 0; y < yTmpSize; y ++)
{
u32 tmpPos[4]={(y<<2)*texcache[i].sizeX,((y<<2)+1)*texcache[i].sizeX,
((y<<2)+2)*texcache[i].sizeX,((y<<2)+3)*texcache[i].sizeX};
u32 tmpPos[4]={(y<<2)*texcache[tx].sizeX,((y<<2)+1)*texcache[tx].sizeX,
((y<<2)+2)*texcache[tx].sizeX,((y<<2)+3)*texcache[tx].sizeX};
for (int x = 0; x < xTmpSize; x ++, d++)
{
if(d >= limit)
@ -1086,19 +1086,19 @@ REJECT:
}
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
texcache[i].sizeX, texcache[i].sizeY, 0,
texcache[tx].sizeX, texcache[tx].sizeY, 0,
GL_RGBA, GL_UNSIGNED_BYTE, texMAP);
DebugDumpTexture(i);
DebugDumpTexture(tx);
//============================================================================================
texcache_count=i;
texcache_count=tx;
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, (BIT16(texcache[i].frm) ? (BIT18(texcache[i].frm)?GL_MIRRORED_REPEAT:GL_REPEAT) : GL_CLAMP));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, (BIT17(texcache[i].frm) ? (BIT19(texcache[i].frm)?GL_MIRRORED_REPEAT:GL_REPEAT) : GL_CLAMP));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, (BIT16(texcache[tx].frm) ? (BIT18(texcache[tx].frm)?GL_MIRRORED_REPEAT:GL_REPEAT) : GL_CLAMP));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, (BIT17(texcache[tx].frm) ? (BIT19(texcache[tx].frm)?GL_MIRRORED_REPEAT:GL_REPEAT) : GL_CLAMP));
}