Fixes Wario World for using an Invalid Texture coordinate, Tell me if it breaks anything
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@852 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
e13ca7e384
commit
41b72ffc8b
|
@ -606,21 +606,26 @@ void WriteStage(char *&p, int n, u32 texture_mask)
|
||||||
int texmap = bpmem.tevorders[n/2].getTexMap(n&1);
|
int texmap = bpmem.tevorders[n/2].getTexMap(n&1);
|
||||||
if(!bHasIndStage) {
|
if(!bHasIndStage) {
|
||||||
// calc tevcord
|
// calc tevcord
|
||||||
|
//tevcoord.xy = texdim[1].xy * uv1.xy / uv1.z;
|
||||||
|
int OurTexCoord = 0;
|
||||||
|
if(bpmem.genMode.numtexgens)
|
||||||
|
OurTexCoord = texcoord;
|
||||||
|
else
|
||||||
|
OurTexCoord = 0;
|
||||||
if( texture_mask & (1<<texmap) ) {
|
if( texture_mask & (1<<texmap) ) {
|
||||||
// nonpow2
|
// nonpow2
|
||||||
if( texfun == XF_TEXPROJ_STQ )
|
if( texfun == XF_TEXPROJ_STQ )
|
||||||
WRITE(p,"tevcoord.xy = uv%d.xy / uv%d.z;\n", texcoord, texcoord);
|
WRITE(p,"tevcoord.xy = uv%d.xy / uv%d.z;\n", texcoord, OurTexCoord);
|
||||||
else
|
else
|
||||||
WRITE(p,"tevcoord.xy = uv%d.xy;\n", texcoord);
|
WRITE(p,"tevcoord.xy = uv%d.xy;\n", OurTexCoord);
|
||||||
WrapNonPow2Tex(p, "tevcoord", texmap, texture_mask);
|
WrapNonPow2Tex(p, "tevcoord", texmap, texture_mask);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if( texfun == XF_TEXPROJ_STQ ) {
|
if( texfun == XF_TEXPROJ_STQ )
|
||||||
WRITE(p,"tevcoord.xy = "I_TEXDIMS"[%d].xy * uv%d.xy / uv%d.z;\n", texmap, texcoord, texcoord);
|
WRITE(p,"tevcoord.xy = "I_TEXDIMS"[%d].xy * uv%d.xy / uv%d.z;\n", texmap, OurTexCoord , OurTexCoord );
|
||||||
}
|
else
|
||||||
else {
|
WRITE(p,"tevcoord.xy = "I_TEXDIMS"[%d].xy * uv%d.xy;\n", texmap, OurTexCoord);
|
||||||
WRITE(p,"tevcoord.xy = "I_TEXDIMS"[%d].xy * uv%d.xy;\n", texmap, texcoord);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( texture_mask & (1<<texmap) ) {
|
else if( texture_mask & (1<<texmap) ) {
|
||||||
|
|
|
@ -163,11 +163,7 @@ bool VertexShaderMngr::CompileVertexShader(VERTEXSHADER& vs, const char* pstrpro
|
||||||
{
|
{
|
||||||
char stropt[64];
|
char stropt[64];
|
||||||
sprintf(stropt, "MaxLocalParams=256,MaxInstructions=%d", s_nMaxVertexInstructions);
|
sprintf(stropt, "MaxLocalParams=256,MaxInstructions=%d", s_nMaxVertexInstructions);
|
||||||
#ifdef _WIN32
|
|
||||||
const char* opts[] = {"-profileopts",stropt,"-O2", "-q", NULL};
|
const char* opts[] = {"-profileopts",stropt,"-O2", "-q", NULL};
|
||||||
#else
|
|
||||||
const char* opts[] = {"-profileopts",stropt,"-q", NULL};
|
|
||||||
#endif
|
|
||||||
CGprogram tempprog = cgCreateProgram(g_cgcontext, CG_SOURCE, pstrprogram, g_cgvProf, "main", opts);
|
CGprogram tempprog = cgCreateProgram(g_cgcontext, CG_SOURCE, pstrprogram, g_cgvProf, "main", opts);
|
||||||
if (!cgIsProgram(tempprog) || cgGetError() != CG_NO_ERROR) {
|
if (!cgIsProgram(tempprog) || cgGetError() != CG_NO_ERROR) {
|
||||||
ERROR_LOG("Failed to load vs %s:\n", cgGetLastListing(g_cgcontext));
|
ERROR_LOG("Failed to load vs %s:\n", cgGetLastListing(g_cgcontext));
|
||||||
|
|
Loading…
Reference in New Issue