mirror of
https://github.com/GTAmodding/re3.git
synced 2025-07-16 10:54:07 +00:00
parent
b2d1433392
commit
6c693e3bbf
25 changed files with 1387 additions and 126 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue