mirror of
https://github.com/zeldaret/tp
synced 2026-08-04 01:03:47 -04:00
c_m3d, c_request OK. Work on Z2Audience (#1900)
This commit is contained in:
@@ -4,67 +4,65 @@
|
||||
//
|
||||
|
||||
#include "SSystem/SComponent/c_m2d.h"
|
||||
#include "dol2asm.h"
|
||||
#include "SSystem/SComponent/c_m3d.h"
|
||||
#include "SSystem/SComponent/c_m3d_g_cir.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct cM2dGCir {};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void cM2d_CrossCirLin__FR8cM2dGCirffffPfPf();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" extern u32 __float_nan;
|
||||
extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804550F0-804550F4 0036F0 0004+00 1/1 0/0 0/0 .sdata2 @2266 */
|
||||
SECTION_SDATA2 static f32 lit_2266 = 2.0f;
|
||||
|
||||
/* 804550F4-804550F8 0036F4 0004+00 1/1 0/0 0/0 .sdata2 @2267 */
|
||||
SECTION_SDATA2 static f32 lit_2267 = 4.0f;
|
||||
|
||||
/* 804550F8-804550FC 0036F8 0004+00 1/1 0/0 0/0 .sdata2 @2268 */
|
||||
SECTION_SDATA2 static u8 lit_2268[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
|
||||
/* 804550FC-80455100 0036FC 0004+00 1/1 0/0 0/0 .sdata2 @2269 */
|
||||
SECTION_SDATA2 static f32 lit_2269 = 1.0f;
|
||||
|
||||
/* 80455100-80455108 003700 0008+00 1/1 0/0 0/0 .sdata2 @2270 */
|
||||
SECTION_SDATA2 static f64 lit_2270 = 0.5;
|
||||
|
||||
/* 80455108-80455110 003708 0008+00 1/1 0/0 0/0 .sdata2 @2271 */
|
||||
SECTION_SDATA2 static f64 lit_2271 = 3.0;
|
||||
|
||||
/* 80455110-80455118 003710 0008+00 1/1 0/0 0/0 .sdata2 @2272 */
|
||||
SECTION_SDATA2 static u8 lit_2272[8] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80268260-80268560 262BA0 0300+00 0/0 4/4 0/0 .text cM2d_CrossCirLin__FR8cM2dGCirffffPfPf */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void cM2d_CrossCirLin(cM2dGCir& param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4,
|
||||
void cM2d_CrossCirLin(cM2dGCir& param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4,
|
||||
f32* param_5, f32* param_6) {
|
||||
nofralloc
|
||||
#include "asm/SSystem/SComponent/c_m2d/cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s"
|
||||
f32 fVar1 = param_1 - param_0.GetCx();
|
||||
f32 fVar15 = param_2 - param_0.GetCy();
|
||||
f32 dVar13 = param_3 * param_3 + param_4 * param_4;
|
||||
f32 dVar14 = 2.0f * ((param_3 * fVar1) + (param_4 * fVar15));
|
||||
f32 fVar3 = (fVar1 * fVar1 + fVar15 * fVar15) - (param_0.GetR() * param_0.GetR());
|
||||
f32 in_f31;
|
||||
|
||||
if (cM3d_IsZero(dVar13)) {
|
||||
if (!cM3d_IsZero(dVar14)) {
|
||||
in_f31 = -fVar3 / dVar14;
|
||||
}
|
||||
} else {
|
||||
f32 dVar10 = ((dVar14 * dVar14) - (4.0f * dVar13) * fVar3);
|
||||
if (cM3d_IsZero(dVar10)) {
|
||||
in_f31 =(-dVar14 / (2.0f * dVar13));
|
||||
} else {
|
||||
if (dVar10 < 0.0f) {
|
||||
} else {
|
||||
f32 fVar2 = 1.0f / (2.0f * dVar13);
|
||||
f32 fVar15 = sqrtf(dVar10);
|
||||
fVar15 = fVar2 * (-dVar14 + fVar15);
|
||||
f32 fVar16 = sqrtf(dVar10);
|
||||
f32 fVar4 = fVar2 * (-dVar14 - fVar16);
|
||||
if (fVar15 > fVar4) {
|
||||
in_f31 = fVar15;
|
||||
} else {
|
||||
in_f31 = fVar4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cM3d_IsZero(in_f31)) {
|
||||
*param_5 = param_1;
|
||||
*param_6 = param_2;
|
||||
} else {
|
||||
*param_5 = param_1 + (in_f31 * param_3);
|
||||
*param_6 = param_2 + (in_f31 * param_4);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
Reference in New Issue
Block a user