summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2026-07-20 21:48:48 -0400
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2026-07-20 21:48:48 -0400
commitebc8cd2caf8a948c6f730a171cc3e88416cad1cb (patch)
treea9878447563306c87bd6b957a711bf2958b32191 /src/d
parent61a3a0ac17969f0d75f704ee43aefcc5a6c8ddb3 (diff)
d_cam_param OK
Diffstat (limited to 'src/d')
-rw-r--r--src/d/d_cam_param.cpp78
1 files changed, 32 insertions, 46 deletions
diff --git a/src/d/d_cam_param.cpp b/src/d/d_cam_param.cpp
index 7b92cf3e..8c3e6615 100644
--- a/src/d/d_cam_param.cpp
+++ b/src/d/d_cam_param.cpp
@@ -10,57 +10,39 @@
#include "SSystem/SComponent/c_math.h"
/* 800AF384-800AF4F4 .text rationalBezierRatio__8dCamMathFff */
-f32 dCamMath::rationalBezierRatio(f32 x, f32 y) {
- double a;
- double negA;
- double sign;
- double b;
- double disc;
- double root;
- double denomT;
- double t;
- double tSquared;
- double omt;
- double omtSquared;
- double crossTerm;
- double denom;
-
- if (x >= 0.0f) {
- sign = 1.0;
- } else {
- sign = -1.0;
- x = -x;
- }
+f32 dCamMath::rationalBezierRatio(f32 param_0, f32 param_1) {
+ f64 sp68;
- a = (x * 2.0 * y - x * 2.0) - y * 2.0;
- negA = -a;
- b = negA - 1.0;
- disc = a * a - b * 4.0 * x;
-
- root = 0.0;
- if (disc > 0.0) {
- root = sqrt(disc);
+ if (param_0 >= 0.0f) {
+ sp68 = 1.0;
+ } else {
+ sp68 = -1.0;
+ param_0 = -param_0;
}
- root = negA - root;
-
- denomT = b * 2.0;
- if (denomT > 1e-7 || denomT < -1e-7) {
- t = root / denomT;
- tSquared = t * t;
- omt = 1.0 - t;
- omtSquared = omt * omt;
- crossTerm = ((omt * 2.0) * t) * y;
- denom = tSquared + (omtSquared + crossTerm);
-
- if (denom > (f32)1e-7) {
- return sign * (tSquared / denom);
+ f64 sp60 = 2.0 * param_0;
+ f64 sp58 = 2.0 * param_1;
+ f64 sp50 = sp60 * param_1;
+ f64 var_f31 = sp50 - sp60 - sp58;
+ f64 sp48 = -var_f31 - 1.0;
+ f64 sp40 = param_0;
+ f64 sp38 = (var_f31 * var_f31) - (4.0 * sp48 * sp40);
+
+ f64 sp30 = -var_f31 - (sp38 > 0.0 ? sqrt(sp38) : 0.0);
+ f64 sp28 = sp48 * 2.0;
+ if (sp28 > 1e-07 || sp28 < -1e-07) {
+ f64 var_f30 = sp30 / sp28;
+ f64 sp20 = var_f30 * var_f30;
+ f64 sp18 = 1.0 - var_f30;
+ f64 sp10 = sp20 + ((sp18 * sp18) + (param_1 * (2.0 * sp18 * var_f30)));
+
+ if (sp10 > 1e-07f) {
+ return sp68 * (sp20 / sp10);
}
-
+ return 0.0f;
+ } else {
return 0.0f;
}
-
- return 0.0f;
}
/* 800AF4F4-800AF544 .text customRBRatio__8dCamMathFff */
@@ -164,6 +146,10 @@ dCamBGChk_c::dCamBGChk_c() {
m58 = 90.0f;
}
+static f32 dummy() {
+ return 182.04445f;
+}
+
/* 800AF8F4-800AF930 .text __ct__11dCamParam_cFl */
dCamParam_c::dCamParam_c(s32 styleIdx) {
Change(styleIdx);
@@ -342,7 +328,7 @@ dCamSetup_c::dCamSetup_c() {
mTrimCineScopeHeight = 65.0f;
m094 = 150;
- m098 = 60.0f;
+ m098 = DEMO_SELECT(70.0f, 60.0f);
m09C = 0.3f;
m0A0 = 0.2f;
mDMCValue = 0.1f;