mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-02 00:03:54 -04:00
Match a few nonmatchings and delete unused asm (#117)
* match a few nonmatchings, delete unused asm * fix missing returns in f_op_actor_iter * remove obsolete comments
This commit is contained in:
@@ -13,7 +13,7 @@ int fopAcIt_Executor(fopAcIt_ExecutorFunc pExecFunc, void* pData) {
|
||||
} userData;
|
||||
userData.func = pExecFunc;
|
||||
userData.data = pData;
|
||||
cLsIt_Method(&lbl_803A35E0, (cNdIt_MethodFunc)cTgIt_MethodCall, &userData);
|
||||
return cLsIt_Method(&lbl_803A35E0, (cNdIt_MethodFunc)cTgIt_MethodCall, &userData);
|
||||
}
|
||||
|
||||
// fopAcIt_Judge__FPFPvPv_PvPv
|
||||
@@ -24,5 +24,5 @@ void* fopAcIt_Judge(fopAcIt_JudgeFunc pJudgeFunc, void* pData) {
|
||||
} userData;
|
||||
userData.func = pJudgeFunc;
|
||||
userData.data = pData;
|
||||
cLsIt_Judge(&lbl_803A35E0, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &userData);
|
||||
return cLsIt_Judge(&lbl_803A35E0, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &userData);
|
||||
}
|
||||
|
||||
@@ -296,9 +296,26 @@ extern u8 lbl_80451C58;
|
||||
extern u8 lbl_80451C5C;
|
||||
extern u8 lbl_80451C60;
|
||||
extern j3dsys lbl_80434AC8;
|
||||
extern u8 lbl_80450AE0;
|
||||
extern f32 lbl_80450AE0[4]; // array is fake, to force 2 step load
|
||||
extern u8 lbl_803DD470;
|
||||
|
||||
// this belongs to msl_c/math.h, but can't go there currently because of data
|
||||
inline f32 sqrtf(f32 mag) {
|
||||
if (mag > FLOAT_LABEL(lbl_80451C04)) {
|
||||
f64 tmpd = __frsqrte(mag);
|
||||
tmpd = DOUBLE_LABEL(lbl_80451C08) * tmpd * (DOUBLE_LABEL(lbl_80451C10) - tmpd * tmpd * mag);
|
||||
tmpd = DOUBLE_LABEL(lbl_80451C08) * tmpd * (DOUBLE_LABEL(lbl_80451C10) - tmpd * tmpd * mag);
|
||||
return DOUBLE_LABEL(lbl_80451C08) * tmpd *
|
||||
(DOUBLE_LABEL(lbl_80451C10) - tmpd * tmpd * mag) * mag;
|
||||
} else if (mag < DOUBLE_LABEL(lbl_80451C18)) {
|
||||
return /* __float_nan */ lbl_80450AE0[0];
|
||||
} else if (fpclassify(mag) == 1) {
|
||||
return /* __float_nan */ lbl_80450AE0[0];
|
||||
} else {
|
||||
return mag;
|
||||
}
|
||||
}
|
||||
|
||||
inline u32 fopAcM_GetID(const void* pProc) {
|
||||
return fpcM_GetID(pProc);
|
||||
}
|
||||
@@ -777,8 +794,9 @@ s32 fopAcM_seenActorAngleY(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB)
|
||||
}
|
||||
|
||||
// fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c
|
||||
asm f32 fopAcM_searchActorDistance(const fopAc_ac_c*, const fopAc_ac_c*){nofralloc
|
||||
#include "f/f_op/f_op_actor_mng/asm/func_8001A7E0.s"
|
||||
f32 fopAcM_searchActorDistance(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) {
|
||||
cXyz tmp = (pActorB->mPosition - pActorA->mPosition);
|
||||
return sqrtf(tmp.abs2());
|
||||
}
|
||||
|
||||
// fopAcM_searchActorDistance2__FPC10fopAc_ac_cPC10fopAc_ac_c
|
||||
@@ -787,18 +805,19 @@ f32 fopAcM_searchActorDistance2(const fopAc_ac_c* pActorA, const fopAc_ac_c* pAc
|
||||
return tmp.abs2();
|
||||
}
|
||||
|
||||
// fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c
|
||||
asm f32 fopAcM_searchActorDistanceXZ(const fopAc_ac_c*, const fopAc_ac_c*) {
|
||||
nofralloc
|
||||
#include "f/f_op/f_op_actor_mng/asm/func_8001A964.s"
|
||||
}
|
||||
|
||||
// TODO: replace calls to this with .abs2XZ, needs additional float constant at the moment
|
||||
inline f32 cXyzAbs2XZ(const cXyz& ths) {
|
||||
cXyz tmp(ths.x, /* 0.0f */ lbl_80451C04, ths.z);
|
||||
return tmp.abs2();
|
||||
}
|
||||
|
||||
// fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c
|
||||
f32 fopAcM_searchActorDistanceXZ(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) {
|
||||
const cXyz& posA = fopAcM_GetPosition_p(pActorA);
|
||||
const cXyz& posB = fopAcM_GetPosition_p(pActorB);
|
||||
return sqrtf(cXyzAbs2XZ(posB - posA));
|
||||
}
|
||||
|
||||
// fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c
|
||||
f32 fopAcM_searchActorDistanceXZ2(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) {
|
||||
const cXyz& posA = fopAcM_GetPosition_p(pActorA);
|
||||
|
||||
@@ -43,17 +43,9 @@ int fopOvlpM_SceneIsStart(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// 1 instruction off
|
||||
#ifdef NONMATCHING
|
||||
int fopOvlpM_IsOutReq(overlap_task_class* pTaskClass) {
|
||||
return pTaskClass->field_0xc4 == 2;
|
||||
return (pTaskClass->field_0xc4 & 0x3F) == 2;
|
||||
}
|
||||
#else
|
||||
asm int fopOvlpM_IsOutReq(overlap_task_class* pTaskClass) {
|
||||
nofralloc
|
||||
#include "f/f_op_overlap_mng/asm/func_8001E504.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
void fopOvlpM_Done(overlap_task_class* pTaskClass) {
|
||||
cReq_Done((request_base_class*)&pTaskClass->field_0xc4);
|
||||
|
||||
@@ -50,19 +50,10 @@ int fopOvlpReq_phase_Done(overlap_request_class* pOvlpReq) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// return line is wrong
|
||||
#ifdef NONMATCHING
|
||||
s16 fopOvlpReq_phase_IsDone(overlap_request_class* param_1) {
|
||||
s32 fopOvlpReq_phase_IsDone(overlap_request_class* param_1) {
|
||||
cReq_Done((request_base_class*)param_1);
|
||||
param_1->field_0x2--;
|
||||
return ((int)param_1->field_0x2 | ~-(int)param_1->field_0x2) >> 0x1F & 2;
|
||||
return param_1->field_0x2-- <= 0 ? 2 : 0;
|
||||
}
|
||||
#else
|
||||
asm void fopOvlpReq_phase_IsDone(overlap_request_class*) {
|
||||
nofralloc
|
||||
#include "f/f_op/f_op_overlap_req/asm/func_8001E748.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
int fopOvlpReq_phase_IsWaitOfFadeout(overlap_request_class* pOvlpReq) {
|
||||
if (cReq_Is_Done((request_base_class*)(pOvlpReq->field_0x20 + 0xC4))) {
|
||||
@@ -131,9 +122,23 @@ request_base_class* fopOvlpReq_Request(overlap_request_class* pOvlpReq, s16 para
|
||||
return (request_base_class*)pOvlpReq;
|
||||
}
|
||||
|
||||
asm int fopOvlpReq_Handler(overlap_request_class*) {
|
||||
nofralloc
|
||||
#include "f/f_op/f_op_overlap_req/asm/func_8001E9F0.s"
|
||||
int fopOvlpReq_Handler(overlap_request_class* pOvlpReq) {
|
||||
int phsDo = cPhs_Do(&pOvlpReq->field_0x18, pOvlpReq);
|
||||
switch (phsDo) {
|
||||
case 2:
|
||||
return fopOvlpReq_Handler(pOvlpReq);
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
return 0;
|
||||
case 4:
|
||||
return 4;
|
||||
case 3:
|
||||
case 5:
|
||||
return 5;
|
||||
default:
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
int fopOvlpReq_Cancel(overlap_request_class* pOvlpReq) {
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
/* f_op_scene_iter.cpp autogenerated by split.py v0.4 at 2021-02-15 20:27:34.795954 */
|
||||
|
||||
#include "f/f_op/f_op_scene_iter.h"
|
||||
#include "SComponent/c_list.h"
|
||||
#include "SComponent/c_list_iter.h"
|
||||
#include "SComponent/c_tag_iter.h"
|
||||
#include "global.h"
|
||||
|
||||
// additional symbols needed for f_op_scene_iter.cpp
|
||||
// autogenerated by split.py v0.4 at 2021-02-15 20:27:34.795974
|
||||
extern "C" {
|
||||
void cLsIt_Judge(void);
|
||||
void fopScnIt_Judge(void);
|
||||
}
|
||||
|
||||
// additional symbols needed for f_op_scene_iter.cpp
|
||||
// autogenerated by split.py v0.4 at 2021-02-15 20:27:34.795978
|
||||
extern u8 lbl_803A3918;
|
||||
extern node_list_class lbl_803A3918; // f_op_scene_tag::g_fopScnTg_SceneList
|
||||
|
||||
asm void* fopScnIt_Judge(fop_ScnItFunc pFunc1, void* pFunc2) {
|
||||
nofralloc
|
||||
#include "f/f_op/f_op_scene_iter/asm/func_8001EC74.s"
|
||||
void* fopScnIt_Judge(fop_ScnItFunc pFunc1, void* pData) {
|
||||
struct {
|
||||
fop_ScnItFunc mFunc;
|
||||
void* mpData;
|
||||
} iterParams;
|
||||
iterParams.mFunc = pFunc1;
|
||||
iterParams.mpData = pData;
|
||||
return cLsIt_Judge(&lbl_803A3918, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &iterParams);
|
||||
}
|
||||
|
||||
@@ -14,53 +14,32 @@ void fopScnRq_Request__FiP11scene_classsPvsUs(void);
|
||||
// autogenerated by split.py v0.4 at 2021-02-13 20:33:37.409412
|
||||
extern unsigned int l_scnRqID;
|
||||
|
||||
// matches but can be improved
|
||||
void* fopScnM_SearchByID(unsigned int id) {
|
||||
unsigned int local_8[2];
|
||||
local_8[0] = id;
|
||||
return fopScnIt_Judge((fop_ScnItFunc)fpcSch_JudgeByID, (void*)local_8);
|
||||
return fopScnIt_Judge((fop_ScnItFunc)fpcSch_JudgeByID, &id);
|
||||
}
|
||||
|
||||
int fopScnM_ChangeReq(scene_class* pScene, s16 param_2, s16 param_3, u16 param_4) {
|
||||
u32 sceneRequestID = fopScnRq_Request(2, pScene, param_2, 0, param_3, param_4);
|
||||
|
||||
// can't get a match unless the request id is unsigned
|
||||
if (sceneRequestID == -1) {
|
||||
if (sceneRequestID == 0xFFFFFFFF) {
|
||||
return 0;
|
||||
}
|
||||
l_scnRqID = sceneRequestID;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
unsigned int fopScnM_DeleteReq(scene_class* pScene) {
|
||||
u32 sceneRequestID = fopScnRq_Request(1, pScene, 0x7fff, 0, 0x7fff, 0);
|
||||
u32 tmp = (-sceneRequestID - 1);
|
||||
u32 tmp2 = (tmp + -1);
|
||||
return tmp2;
|
||||
return sceneRequestID != 0xFFFFFFFF;
|
||||
}
|
||||
#else
|
||||
asm unsigned int fopScnM_DeleteReq(scene_class*) {
|
||||
nofralloc
|
||||
#include "f/f_op_scene_mng/asm/func_8001ED3C.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void fopScnM_CreateReq(s16 param_1, s16 param_2, u16 param_3, u32 param_4) {
|
||||
int fopScnM_CreateReq(s16 param_1, s16 param_2, u16 param_3, u32 param_4) {
|
||||
u32 sceneRequestID = fopScnRq_Request(0, 0, param_1, (void*)param_4, param_2, param_3);
|
||||
u32 tmp = (-sceneRequestID + -1);
|
||||
return tmp - (sceneRequestID == 0) + (-sceneRequestID + -2) & 0xFF;
|
||||
return sceneRequestID != 0xFFFFFFFF;
|
||||
}
|
||||
#else
|
||||
asm void fopScnM_CreateReq(s16, s16, u16, u32) {
|
||||
nofralloc
|
||||
#include "f/f_op_scene_mng/asm/func_8001ED84.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
u32 fopScnM_ReRequest(s16 param_1, u32 param_2) {
|
||||
if (l_scnRqID == -1) {
|
||||
if (l_scnRqID == 0xFFFFFFFF) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user