diff options
author | aap <aap@papnet.eu> | 2019-07-02 21:30:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-02 21:30:45 +0200 |
commit | 743668c5c4c70f4e4e5d55c9dbabbbd766f97642 (patch) | |
tree | 5528c867887149a951ca73ec2492d05a8c7f5a46 /src/render/Draw.cpp | |
parent | Merge pull request #86 from erorcun/erorcun (diff) | |
parent | Removed macros from Pad.cpp: (diff) | |
download | re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.tar re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.tar.gz re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.tar.bz2 re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.tar.lz re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.tar.xz re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.tar.zst re3-743668c5c4c70f4e4e5d55c9dbabbbd766f97642.zip |
Diffstat (limited to 'src/render/Draw.cpp')
-rw-r--r-- | src/render/Draw.cpp | 65 |
1 files changed, 46 insertions, 19 deletions
diff --git a/src/render/Draw.cpp b/src/render/Draw.cpp index 90875299..f1b2147f 100644 --- a/src/render/Draw.cpp +++ b/src/render/Draw.cpp @@ -16,43 +16,70 @@ uint8 &CDraw::FadeRed = *(uint8*)0x95CD90; uint8 &CDraw::FadeGreen = *(uint8*)0x95CD71; uint8 &CDraw::FadeBlue = *(uint8*)0x95CD53; -void -CDraw::CalculateAspectRatio() +void CDraw::CalculateAspectRatio() { SetScreenMult(DEFAULT_SCALE); - if(FrontEndMenuManager.m_PrefsUseWideScreen) - ms_fAspectRatio = 16.0f/9.0f; +#ifndef HOR_PLUS + if (FrontEndMenuManager.m_PrefsUseWideScreen) + ms_fAspectRatio = 16.0f / 9.0f; else - ms_fAspectRatio = 4.0f/3.0f; + ms_fAspectRatio = 4.0f / 3.0f; +#else + switch (FrontEndMenuManager.m_PrefsUseWideScreen) { + case AR_AUTO: + ms_fAspectRatio = (float)SCREEN_WIDTH / (float)SCREEN_HEIGHT; + return; + case AR_3_2: + ms_fAspectRatio = 3.0f / 2.0f; + return; + case AR_4_3: + ms_fAspectRatio = 4.0f / 3.0f; + return; + case AR_5_3: + ms_fAspectRatio = 5.0f / 3.0f; + return; + case AR_5_4: + ms_fAspectRatio = 5.0f / 4.0f; + return; + case AR_15_9: + ms_fAspectRatio = 15.0f / 9.0f; + return; + case AR_16_9: + ms_fAspectRatio = 16.0f / 9.0f; + return; + case AR_16_10: + ms_fAspectRatio = 16.0f / 10.0f; + return; + case AR_64_27: + ms_fAspectRatio = 64.0f / 27.0f; + return; + }; + +#endif } -static float hFov2vFov(float hfov) +float +HorToVert(float hfov) { - float w = SCREENW; - float h = SCREENH; - - // => tan(hFOV/2) = tan(vFOV/2)*aspectRatio - // => tan(vFOV/2) = tan(hFOV/2)/aspectRatio - float ar1 = 4.0/3.0; - float ar2 = w/h; - hfov = DEGTORAD(hfov); - float vfov = atan(tan(hfov/2) / ar1) *2; - hfov = atan(tan(vfov/2) * ar2) *2; - return RADTODEG(hfov); + float vfov = atan(tan(DEGTORAD(hfov) / 2) / (4.0 / 3.0)) * 2; + return RADTODEG(hfov = atan(tan(vfov / 2) * CDraw::GetAspectRatio()) * 2); } void CDraw::SetFOV(float fov) { -// TODO: fix FOV here or somewhere else? -// ms_fFOV = hFov2vFov(fov); +#ifndef HOR_PLUS ms_fFOV = fov; +#else + ms_fFOV = HorToVert(fov); +#endif } STARTPATCHES InjectHook(0x4FE7B0, CDraw::SetFOV, PATCH_JUMP); + // Some patches to fix aiming offset on "CCamera::Find3rdPersonCamTargetVector". Nop(0x46B618, 2); Patch<float>(0x5F0A64, 1.3333334f); ENDPATCHES |