From ac81792c99d46f400d812bb2d43c47da65cb18e1 Mon Sep 17 00:00:00 2001 From: Gudf <28691694+Gudf@users.noreply.github.com> Date: Thu, 30 Jan 2025 17:49:09 +0100 Subject: [PATCH] `sub_0201E34C` to `CalcLinearFov` --- include/unk_0201E190.h | 2 +- src/overlay005/ov5_021D5EB8.c | 2 +- src/overlay113/ov113_0225C700.c | 2 +- src/unk_0201E190.c | 18 +++++++----------- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/include/unk_0201E190.h b/include/unk_0201E190.h index c5a4b9212f..b73f083028 100644 --- a/include/unk_0201E190.h +++ b/include/unk_0201E190.h @@ -8,6 +8,6 @@ fx32 FX_Max(fx32 a, fx32 b); fx32 VEC_AngleBetween(const VecFx32 *param0, const VecFx32 *param1); void MTX_Rot33Vec(MtxFx33 *outRot, VecFx32 *angles); void MTX_Rot33Angles(MtxFx33 *outRot, u16 alpha, u16 beta, u16 gamma); -void sub_0201E34C(u16 param0, fx32 param1, fx32 param2, fx32 *param3, fx32 *param4); +void CalcLinearFov(u16 angularFov, fx32 distance, fx32 aspectRatio, fx32 *outWidth, fx32 *outHeight); #endif // POKEPLATINUM_UNK_0201E190_H diff --git a/src/overlay005/ov5_021D5EB8.c b/src/overlay005/ov5_021D5EB8.c index 978b217bc2..6fecb0bd21 100644 --- a/src/overlay005/ov5_021D5EB8.c +++ b/src/overlay005/ov5_021D5EB8.c @@ -1667,7 +1667,7 @@ static void ov5_021D7028(fx32 *param0, fx32 *param1, UnkStruct_ov5_021DB4B8 *par v6 = (v0.z - param2->unk_B8C.z); v8 = FX_Div(FX32_CONST(4), FX32_CONST(3)); - sub_0201E34C(Camera_GetFOV(param2->unk_00->fieldSystem->camera), Camera_GetDistance(param2->unk_00->fieldSystem->camera), v8, &v3, &v4); + CalcLinearFov(Camera_GetFOV(param2->unk_00->fieldSystem->camera), Camera_GetDistance(param2->unk_00->fieldSystem->camera), v8, &v3, &v4); v3 = FX_Div(v3, 256 * FX32_ONE); if (v6 <= 0) { diff --git a/src/overlay113/ov113_0225C700.c b/src/overlay113/ov113_0225C700.c index 48d463caa7..c83a9a7caf 100644 --- a/src/overlay113/ov113_0225C700.c +++ b/src/overlay113/ov113_0225C700.c @@ -1174,7 +1174,7 @@ static void ov113_0225D9FC(UnkStruct_ov113_0225DBCC *param0) v2 = Camera_GetDistance(param0->camera); v3 = FX32_ONE * 4 / 3; - sub_0201E34C(v1, v2, v3, &v4, &v5); + CalcLinearFov(v1, v2, v3, &v4, &v5); param0->unk_D0 = v4; param0->unk_D4 = v5; diff --git a/src/unk_0201E190.c b/src/unk_0201E190.c index 460052a847..3aeed70506 100644 --- a/src/unk_0201E190.c +++ b/src/unk_0201E190.c @@ -71,17 +71,13 @@ void MTX_Rot33Angles(MtxFx33 *outRot, u16 alpha, u16 beta, u16 gamma) MTX_Concat33(outRot, &tmp, outRot); } -void sub_0201E34C(u16 param0, fx32 param1, fx32 param2, fx32 *param3, fx32 *param4) +void CalcLinearFov(u16 angularFov, fx32 distance, fx32 aspectRatio, fx32 *outWidth, fx32 *outHeight) { - fx32 v0; - fx32 v1; - fx32 v2; + fx32 sin = FX_SinIdx(angularFov); + fx32 cos = FX_CosIdx(angularFov); + fx32 tan = FX_Div(sin, cos); - v0 = FX_SinIdx(param0); - v1 = FX_CosIdx(param0); - v2 = FX_Div(v0, v1); - - *param4 = FX_Mul(param1, v2); - *param4 = FX_Mul(*param4, 2 * FX32_ONE); - *param3 = FX_Mul(*param4, param2); + *outHeight = FX_Mul(distance, tan); + *outHeight = FX_Mul(*outHeight, 2 * FX32_ONE); + *outWidth = FX_Mul(*outHeight, aspectRatio); }