From 891b4f14b1c380bf5fd9948da348b3c6082b8244 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Sat, 6 Nov 2021 17:12:26 +0100 Subject: [PATCH] addCalc --- .../SComponent/c_lib/cLib_addCalc0__FPfff.s | 17 ----- .../SComponent/c_lib/cLib_addCalc2__FPffff.s | 20 ------ .../SComponent/c_lib/cLib_addCalc__FPfffff.s | 55 --------------- libs/SSystem/SComponent/c_lib.cpp | 70 +++++++++++++------ 4 files changed, 49 insertions(+), 113 deletions(-) delete mode 100644 asm/SSystem/SComponent/c_lib/cLib_addCalc0__FPfff.s delete mode 100644 asm/SSystem/SComponent/c_lib/cLib_addCalc2__FPffff.s delete mode 100644 asm/SSystem/SComponent/c_lib/cLib_addCalc__FPfffff.s diff --git a/asm/SSystem/SComponent/c_lib/cLib_addCalc0__FPfff.s b/asm/SSystem/SComponent/c_lib/cLib_addCalc0__FPfff.s deleted file mode 100644 index 708495dd7c4..00000000000 --- a/asm/SSystem/SComponent/c_lib/cLib_addCalc0__FPfff.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8026FA80: -/* 8026FA80 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026FA84 EC 20 00 72 */ fmuls f1, f0, f1 -/* 8026FA88 FC 01 10 40 */ fcmpo cr0, f1, f2 -/* 8026FA8C 40 81 00 0C */ ble lbl_8026FA98 -/* 8026FA90 FC 20 10 90 */ fmr f1, f2 -/* 8026FA94 48 00 00 14 */ b lbl_8026FAA8 -lbl_8026FA98: -/* 8026FA98 FC 00 10 50 */ fneg f0, f2 -/* 8026FA9C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8026FAA0 40 80 00 08 */ bge lbl_8026FAA8 -/* 8026FAA4 FC 20 00 90 */ fmr f1, f0 -lbl_8026FAA8: -/* 8026FAA8 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026FAAC EC 00 08 28 */ fsubs f0, f0, f1 -/* 8026FAB0 D0 03 00 00 */ stfs f0, 0(r3) -/* 8026FAB4 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_lib/cLib_addCalc2__FPffff.s b/asm/SSystem/SComponent/c_lib/cLib_addCalc2__FPffff.s deleted file mode 100644 index 6c0dd8c3fdb..00000000000 --- a/asm/SSystem/SComponent/c_lib/cLib_addCalc2__FPffff.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8026FA3C: -/* 8026FA3C C0 03 00 00 */ lfs f0, 0(r3) -/* 8026FA40 FC 00 08 00 */ fcmpu cr0, f0, f1 -/* 8026FA44 4D 82 00 20 */ beqlr -/* 8026FA48 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8026FA4C EC 22 00 32 */ fmuls f1, f2, f0 -/* 8026FA50 FC 01 18 40 */ fcmpo cr0, f1, f3 -/* 8026FA54 40 81 00 0C */ ble lbl_8026FA60 -/* 8026FA58 FC 20 18 90 */ fmr f1, f3 -/* 8026FA5C 48 00 00 14 */ b lbl_8026FA70 -lbl_8026FA60: -/* 8026FA60 FC 00 18 50 */ fneg f0, f3 -/* 8026FA64 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8026FA68 40 80 00 08 */ bge lbl_8026FA70 -/* 8026FA6C FC 20 00 90 */ fmr f1, f0 -lbl_8026FA70: -/* 8026FA70 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026FA74 EC 00 08 2A */ fadds f0, f0, f1 -/* 8026FA78 D0 03 00 00 */ stfs f0, 0(r3) -/* 8026FA7C 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_lib/cLib_addCalc__FPfffff.s b/asm/SSystem/SComponent/c_lib/cLib_addCalc__FPfffff.s deleted file mode 100644 index 71f113d0287..00000000000 --- a/asm/SSystem/SComponent/c_lib/cLib_addCalc__FPfffff.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_8026F97C: -/* 8026F97C C0 A3 00 00 */ lfs f5, 0(r3) -/* 8026F980 FC 05 08 00 */ fcmpu cr0, f5, f1 -/* 8026F984 41 82 00 A4 */ beq lbl_8026FA28 -/* 8026F988 EC 01 28 28 */ fsubs f0, f1, f5 -/* 8026F98C EC C2 00 32 */ fmuls f6, f2, f0 -/* 8026F990 FC 06 20 40 */ fcmpo cr0, f6, f4 -/* 8026F994 4C 41 13 82 */ cror 2, 1, 2 -/* 8026F998 41 82 00 14 */ beq lbl_8026F9AC -/* 8026F99C FC 40 20 50 */ fneg f2, f4 -/* 8026F9A0 FC 06 10 40 */ fcmpo cr0, f6, f2 -/* 8026F9A4 4C 40 13 82 */ cror 2, 0, 2 -/* 8026F9A8 40 82 00 30 */ bne lbl_8026F9D8 -lbl_8026F9AC: -/* 8026F9AC FC 06 18 40 */ fcmpo cr0, f6, f3 -/* 8026F9B0 40 81 00 08 */ ble lbl_8026F9B8 -/* 8026F9B4 FC C0 18 90 */ fmr f6, f3 -lbl_8026F9B8: -/* 8026F9B8 FC 00 18 50 */ fneg f0, f3 -/* 8026F9BC FC 06 00 40 */ fcmpo cr0, f6, f0 -/* 8026F9C0 40 80 00 08 */ bge lbl_8026F9C8 -/* 8026F9C4 FC C0 00 90 */ fmr f6, f0 -lbl_8026F9C8: -/* 8026F9C8 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026F9CC EC 00 30 2A */ fadds f0, f0, f6 -/* 8026F9D0 D0 03 00 00 */ stfs f0, 0(r3) -/* 8026F9D4 48 00 00 54 */ b lbl_8026FA28 -lbl_8026F9D8: -/* 8026F9D8 C0 02 B7 E0 */ lfs f0, lit_2262(r2) -/* 8026F9DC FC 06 00 40 */ fcmpo cr0, f6, f0 -/* 8026F9E0 40 81 00 28 */ ble lbl_8026FA08 -/* 8026F9E4 FC 06 20 40 */ fcmpo cr0, f6, f4 -/* 8026F9E8 40 80 00 40 */ bge lbl_8026FA28 -/* 8026F9EC EC 05 20 2A */ fadds f0, f5, f4 -/* 8026F9F0 D0 03 00 00 */ stfs f0, 0(r3) -/* 8026F9F4 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026F9F8 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 8026F9FC 40 81 00 2C */ ble lbl_8026FA28 -/* 8026FA00 D0 23 00 00 */ stfs f1, 0(r3) -/* 8026FA04 48 00 00 24 */ b lbl_8026FA28 -lbl_8026FA08: -/* 8026FA08 FC 06 10 40 */ fcmpo cr0, f6, f2 -/* 8026FA0C 40 81 00 1C */ ble lbl_8026FA28 -/* 8026FA10 EC 05 10 2A */ fadds f0, f5, f2 -/* 8026FA14 D0 03 00 00 */ stfs f0, 0(r3) -/* 8026FA18 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026FA1C FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 8026FA20 40 80 00 08 */ bge lbl_8026FA28 -/* 8026FA24 D0 23 00 00 */ stfs f1, 0(r3) -lbl_8026FA28: -/* 8026FA28 C0 03 00 00 */ lfs f0, 0(r3) -/* 8026FA2C EC 01 00 28 */ fsubs f0, f1, f0 -/* 8026FA30 FC 00 02 10 */ fabs f0, f0 -/* 8026FA34 FC 20 00 18 */ frsp f1, f0 -/* 8026FA38 4E 80 00 20 */ blr diff --git a/libs/SSystem/SComponent/c_lib.cpp b/libs/SSystem/SComponent/c_lib.cpp index d67da012d64..4f47d34749d 100644 --- a/libs/SSystem/SComponent/c_lib.cpp +++ b/libs/SSystem/SComponent/c_lib.cpp @@ -81,34 +81,62 @@ SECTION_SDATA2 static f32 lit_2262[1 + 1 /* padding */] = { }; /* 8026F97C-8026FA3C 26A2BC 00C0+00 0/0 50/50 178/178 .text cLib_addCalc__FPfffff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 cLib_addCalc(f32* param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4) { - nofralloc -#include "asm/SSystem/SComponent/c_lib/cLib_addCalc__FPfffff.s" +f32 cLib_addCalc(f32* pValue, f32 target, f32 scale, f32 minStep, f32 maxStep) { + if (*pValue != target) { + f32 step = scale * (target - *pValue); + if (step >= maxStep || step <= -maxStep) { + if (step > minStep) { + step = minStep; + } + if (step < -minStep) { + step = -minStep; + } + *pValue += step; + } else { + if (step > FLOAT_LABEL(/* 0.0f */ lit_2262)) { + if (step < maxStep) { + *pValue += maxStep; + if (*pValue > target) { + *pValue = target; + } + } + } else { + maxStep = -maxStep; + if (step > maxStep) { + *pValue += maxStep; + if (*pValue < target) { + *pValue = target; + } + } + } + } + } + return fabsf(target - *pValue); } -#pragma pop /* 8026FA3C-8026FA80 26A37C 0044+00 0/0 20/20 701/701 .text cLib_addCalc2__FPffff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cLib_addCalc2(f32* param_0, f32 param_1, f32 param_2, f32 param_3) { - nofralloc -#include "asm/SSystem/SComponent/c_lib/cLib_addCalc2__FPffff.s" +void cLib_addCalc2(f32* pValue, f32 target, f32 scale, f32 maxStep) { + if (*pValue != target) { + f32 step = scale * (target - *pValue); + if (step > maxStep) { + step = maxStep; + } else if (step < -maxStep) { + step = -maxStep; + } + *pValue += step; + } } -#pragma pop /* 8026FA80-8026FAB8 26A3C0 0038+00 0/0 2/2 322/322 .text cLib_addCalc0__FPfff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cLib_addCalc0(f32* param_0, f32 param_1, f32 param_2) { - nofralloc -#include "asm/SSystem/SComponent/c_lib/cLib_addCalc0__FPfff.s" +void cLib_addCalc0(f32* pValue, f32 scale, f32 maxStep) { + f32 step = *pValue * scale; + if (step > maxStep) { + step = maxStep; + } else if (step < -maxStep) { + step = -maxStep; + } + *pValue -= step; } -#pragma pop /* ############################################################################################## */ /* 804551E8-804551F0 0037E8 0008+00 7/7 0/0 0/0 .sdata2 @2379 */