mirror of
https://github.com/zeldaret/tp
synced 2026-07-08 22:44:44 -04:00
Various Matches, J2DTextBoxEx and J2DTevs OK (#2025)
* Work on src/d/bg * misc work * J2dTextBoxEx OK * J2DTevs OK * Better return values for bool
This commit is contained in:
@@ -10,7 +10,9 @@
|
||||
#include "SSystem/SComponent/c_m3d_g_lin.h"
|
||||
#include "SSystem/SComponent/c_m3d_g_sph.h"
|
||||
#include "SSystem/SComponent/c_m3d_g_tri.h"
|
||||
#include "SSystem/SComponent/c_m3d_g_cps.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "SSystem/SComponent/c_sxyz.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
@@ -611,16 +613,48 @@ bool cM3d_InclusionCheckPosIn3PosBox3d(const Vec* pVecA, const Vec* pVecB, const
|
||||
|
||||
/* 80269D64-80269E18 2646A4 00B4+00 11/11 0/0 0/0 .text
|
||||
* cM3d_InclusionCheckPosIn3PosBox2d__Ffffffffff */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm bool cM3d_InclusionCheckPosIn3PosBox2d(f32 param_0, f32 param_1, f32 param_2,
|
||||
f32 param_3, f32 param_4, f32 param_5,
|
||||
f32 param_6, f32 param_7, f32 param_8) {
|
||||
nofralloc
|
||||
#include "asm/SSystem/SComponent/c_m3d/cM3d_InclusionCheckPosIn3PosBox2d__Ffffffffff.s"
|
||||
static bool cM3d_InclusionCheckPosIn3PosBox2d(f32 param_1, f32 param_2, f32 param_3,
|
||||
f32 param_4, f32 param_5, f32 param_6,
|
||||
f32 param_7, f32 param_8, f32 param_9) {
|
||||
f32 dVar6 = param_9;
|
||||
f32 dVar7;
|
||||
if (param_1 < param_3) {
|
||||
dVar7 = param_1;
|
||||
} else {
|
||||
dVar7 = param_3;
|
||||
param_3 = param_1;
|
||||
}
|
||||
|
||||
if (dVar7 > param_5) {
|
||||
dVar7 = param_5;
|
||||
} else if (param_3 < param_5) {
|
||||
param_3 = param_5;
|
||||
}
|
||||
|
||||
if (dVar7 - dVar6 > param_7 || param_3 + dVar6 < param_7) {
|
||||
return false;
|
||||
}
|
||||
|
||||
f32 fVar1;
|
||||
if (param_2 < param_4) {
|
||||
fVar1 = param_2;
|
||||
} else {
|
||||
fVar1 = param_4;
|
||||
param_4 = param_2;
|
||||
}
|
||||
|
||||
if (fVar1 > param_6) {
|
||||
fVar1 = param_6;
|
||||
} else if (param_4 < param_6) {
|
||||
param_4 = param_6;
|
||||
}
|
||||
|
||||
if (fVar1 - dVar6 > param_8 || param_4 + dVar6 < param_8)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804551AC-804551B0 0037AC 0004+00 11/11 0/0 0/0 .sdata2 @3205 */
|
||||
@@ -1036,6 +1070,36 @@ asm bool cM3d_Cross_CpsCyl(cM3dGCps const& param_0, cM3dGCyl const& param_1, Vec
|
||||
|
||||
/* 8026DAE0-8026DC3C 268420 015C+00 1/1 0/0 0/0 .text
|
||||
* cM3d_Cross_CpsSph_CrossPos__FRC8cM3dGCpsRC8cM3dGSphRC3VecP3Vec */
|
||||
// Matches with literals
|
||||
#ifdef NONMATCHING
|
||||
static bool cM3d_Cross_CpsSph_CrossPos(cM3dGCps const& param_1, cM3dGSph const& param_2,
|
||||
Vec const& param_3, Vec* param_4) {
|
||||
Vec aVStack_70;
|
||||
Vec VStack_7c;
|
||||
int iVar5 = cM3d_Cross_LinSph_CrossPos(param_2, param_1, &aVStack_70, &VStack_7c);
|
||||
if (iVar5 == 1) {
|
||||
*param_4 = aVStack_70;
|
||||
} else if (iVar5 == 2) {
|
||||
f32 dVar8 = VECSquareDistance(&aVStack_70, ¶m_1.GetStartP());
|
||||
f32 dVar9 = VECSquareDistance(&VStack_7c, ¶m_1.GetStartP());
|
||||
if (dVar8 < dVar9) {
|
||||
*param_4 = aVStack_70;
|
||||
} else {
|
||||
*param_4 = VStack_7c;
|
||||
}
|
||||
} else {
|
||||
f32 dVar8 = param_1.GetR() + param_2.GetR();
|
||||
*param_4 = param_3;
|
||||
if (cM3d_IsZero(dVar8)) {
|
||||
*param_4 = param_3;
|
||||
}
|
||||
Vec auStack_88;
|
||||
VECSubtract(¶m_3, param_2.GetCP(), &auStack_88);
|
||||
VECScale(&auStack_88, &auStack_88, 0.5f);
|
||||
VECAdd(param_4, &auStack_88, param_4);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -1045,9 +1109,33 @@ static asm bool cM3d_Cross_CpsSph_CrossPos(cM3dGCps const& param_0, cM3dGSph con
|
||||
#include "asm/SSystem/SComponent/c_m3d/cM3d_Cross_CpsSph_CrossPos__FRC8cM3dGCpsRC8cM3dGSphRC3VecP3Vec.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8026DC3C-8026DE2C 26857C 01F0+00 0/0 4/4 0/0 .text
|
||||
* cM3d_Cross_CpsSph__FRC8cM3dGCpsRC8cM3dGSphP3Vec */
|
||||
// Matches with literals
|
||||
#ifdef NONMATCHING
|
||||
bool cM3d_Cross_CpsSph(cM3dGCps const& param_1, cM3dGSph const& param_2, Vec* param_3) {
|
||||
f32 local_38 = VECDistance(¶m_1.GetStartP(), param_2.GetCP());
|
||||
if (local_38 < param_1.GetR() + param_2.GetR()) {
|
||||
cM3d_Cross_CpsSph_CrossPos(param_1, param_2, param_1.GetStartP(), param_3);
|
||||
return true;
|
||||
}
|
||||
local_38 = VECDistance(¶m_1.GetEndP(), param_2.GetCP());
|
||||
if (local_38 < param_1.GetR() + param_2.GetR()) {
|
||||
cM3d_Cross_CpsSph_CrossPos(param_1, param_2, param_1.GetEndP(), param_3);
|
||||
return true;
|
||||
}
|
||||
Vec auStack_34;
|
||||
if (cM3d_Len3dSqPntAndSegLine(¶m_1, param_2.GetCP(), &auStack_34, &local_38) != 0) {
|
||||
if (sqrtf(local_38) < param_1.GetR() + param_2.GetR()) {
|
||||
cM3d_Cross_CpsSph_CrossPos(param_1, param_2, auStack_34, param_3);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -1056,6 +1144,7 @@ asm bool cM3d_Cross_CpsSph(cM3dGCps const& param_0, cM3dGSph const& param_1, Vec
|
||||
#include "asm/SSystem/SComponent/c_m3d/cM3d_Cross_CpsSph__FRC8cM3dGCpsRC8cM3dGSphP3Vec.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8026DE2C-8026E12C 26876C 0300+00 0/0 1/1 0/0 .text
|
||||
* cM3d_Cross_TriTri__FRC8cM3dGTriRC8cM3dGTriP3Vec */
|
||||
@@ -1096,6 +1185,14 @@ void cM3d_CalcVecAngle(const Vec& pVec, s16* pOutA, s16* pOutB) {
|
||||
|
||||
/* 8026E570-8026E6C4 268EB0 0154+00 0/0 1/1 0/0 .text cM3d_CalcVecZAngle__FRC3VecP5csXyz
|
||||
*/
|
||||
// Matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void cM3d_CalcVecZAngle(Vec const& param_0, csXyz* param_1) {
|
||||
param_1->x = -cM_atan2s(param_0.y, sqrtf(param_0.x * param_0.x + param_0.z * param_0.z));;
|
||||
param_1->y = cM_atan2s(param_0.x, param_0.z);
|
||||
param_1->z = 0;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -1104,6 +1201,7 @@ asm void cM3d_CalcVecZAngle(Vec const& param_0, csXyz* param_1) {
|
||||
#include "asm/SSystem/SComponent/c_m3d/cM3d_CalcVecZAngle__FRC3VecP5csXyz.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8026E6C4-8026E6F0 269004 002C+00 1/1 0/0 0/0 .text cM3d_PlaneCrossLineProcWork__FfffffffPfPf */
|
||||
void cM3d_PlaneCrossLineProcWork(f32 f1, f32 f2, f32 f3, f32 f4, f32 f5, f32 f6, f32 f7, f32* pF1,
|
||||
|
||||
Reference in New Issue
Block a user