Vertical scale factor support added - fixes Crazy Taxi pause menu background positioning

This commit is contained in:
Marcel Szewczyk 2019-02-10 01:11:09 +01:00
parent 7869a84f88
commit 8d4188159e
1 changed files with 18 additions and 1 deletions

View File

@ -432,6 +432,17 @@ void createTexture(u32 w, u32 h, u32 textureFormat, u32 textureType, GLuint & te
glTexImage2D(GL_TEXTURE_2D, 0, textureFormat, w, h, 0, textureFormat, textureType, 0); glTexImage2D(GL_TEXTURE_2D, 0, textureFormat, w, h, 0, textureFormat, textureType, 0);
} }
double binaryFractionToDouble(u32 numberIntegerPart, u32 numberFractionalPart, u32 fractionalPartLength)
{
double sum = 0;
for (u32 i = 1; i <= fractionalPartLength; ++i) {
sum += !!(numberFractionalPart & (1 << fractionalPartLength - i)) * pow(.5, i);
}
return numberIntegerPart + sum;
}
map<u32, FBT> renderedTextures; map<u32, FBT> renderedTextures;
void BindRTT(u32 addy, u32 fbw, u32 fbh, u32 channels, u32 fmt) void BindRTT(u32 addy, u32 fbw, u32 fbh, u32 channels, u32 fmt)
@ -446,6 +457,12 @@ void BindRTT(u32 addy, u32 fbw, u32 fbh, u32 channels, u32 fmt)
renderedTexture = &renderedTextures[location]; renderedTexture = &renderedTextures[location];
} }
u32 fbhViewport = fbh;
if (SCALER_CTL.vscalefactor != 0x0400) {
fbh = round(fbw * binaryFractionToDouble(
SCALER_CTL.vscalefactor >> 10, SCALER_CTL.vscalefactor & 0x3FF, 10));
}
renderedTexture->texAddress = location; renderedTexture->texAddress = location;
renderedTexture->fb_packmode = FB_W_CTRL.fb_packmode; renderedTexture->fb_packmode = FB_W_CTRL.fb_packmode;
renderedTexture->updated = true; renderedTexture->updated = true;
@ -526,7 +543,7 @@ void BindRTT(u32 addy, u32 fbw, u32 fbh, u32 channels, u32 fmt)
glBindFramebuffer(GL_FRAMEBUFFER, renderedTexture->fbo); glBindFramebuffer(GL_FRAMEBUFFER, renderedTexture->fbo);
} }
glViewport(0, 0, fbw, fbh); glViewport(0, 0, fbw, fbhViewport);
} }
GLint checkSupportedReadFormat() GLint checkSupportedReadFormat()