Equivalent. Weak func ordering.

This commit is contained in:
WilliamArnett
2025-05-15 18:04:20 -05:00
parent 9d3beef798
commit 84f631e234
3 changed files with 45 additions and 61 deletions
+1 -1
View File
@@ -1432,7 +1432,7 @@ config.libs = [
ActorRel(Matching, "d_a_tag_ghostship"),
ActorRel(NonMatching, "d_a_tag_hint"),
ActorRel(Matching, "d_a_tag_kb_item"),
ActorRel(NonMatching, "d_a_tag_kk1"),
ActorRel(Equivalent, "d_a_tag_kk1", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_tag_light"),
ActorRel(Matching, "d_a_tag_msg"),
ActorRel(NonMatching, "d_a_tag_photo"),
+11 -19
View File
@@ -4,8 +4,6 @@
#include "d/d_npc.h"
#include "m_Do/m_Do_hostIO.h"
class daTag_Kk1_c : public fopNpc_npc_c {
public:
BOOL createInit();
@@ -15,29 +13,23 @@ public:
cPhs_State _create();
public:
/* 0x6C4 */ u8 field_0x6C4;
/* 0x6C5 */ bool field_0x6C5;
/* 0x6C6 */ u8 field_0x6C6;
/* 0x6C7 */ u8 field_0x6C7;
/* 0x6C4 */ u8 padding_0x6C4;
/* 0x6C5 */ bool mTagSet;
/* 0x6C6 */ bool mNameIsWrong;
}; // Size: 0x6C8
class daTag_Kk1_HIO_c : public JORReflexible{
public:
daTag_Kk1_HIO_c();
virtual ~daTag_Kk1_HIO_c(){};
public:
virtual void foo();
daTag_Kk1_HIO_c();
virtual ~daTag_Kk1_HIO_c(){};
public:
/* 0x4 */ s8 mNo;
/* 0x8 */ f32 field_0x8;
/* 0xC */ f32 field_0xC;
/* 0x10 */ u8 field_0x10;
public:
/* 0x04 */ s8 mNo;
/* 0x08 */ f32 mHorizontalDistance;
/* 0x0C */ f32 mVerticalDistance;
/* 0x10 */ u8 mUnusedU8;
};
#endif /* D_A_TAG_KK1_H */
+33 -41
View File
@@ -3,59 +3,50 @@
// Translation Unit: d_a_tag_kk1.cpp
//
#include "d/actor/d_a_tag_kk1.h"
#include "d/d_com_inf_game.h"
#include "d/d_procname.h"
static daTag_Kk1_HIO_c l_HIO;
static f32 a_prm_tbl[] = {350.0f,30.0f,0.0f};
static const u8 dummy5[] = { 0x00, 0xFF, 0x00, 0x80};
daTag_Kk1_HIO_c::daTag_Kk1_HIO_c() {
/* Nonmatching */
// 99% matched
field_0x8 = a_prm_tbl[0];
field_0xC = a_prm_tbl[1];
field_0x10 = *(u8*)&a_prm_tbl[2];
mNo = -0x01;
}
void daTag_Kk1_HIO_c::foo() {
static f32 a_prm_tbl[] = {350.0f,30.0f,0.0f};
mHorizontalDistance = a_prm_tbl[0];
mVerticalDistance = a_prm_tbl[1];
mUnusedU8 = *reinterpret_cast<u8*>(&a_prm_tbl[2]); //TODO: This u8 appears to be inside the float table. May be a better way to refactor.
mNo = -1;
}
/* 00000120-00000128 .text createInit__11daTag_Kk1_cFv */
BOOL daTag_Kk1_c::createInit() {
return 1;
return TRUE;
}
/* 00000128-00000130 .text _draw__11daTag_Kk1_cFv */
bool daTag_Kk1_c::_draw() {
return 1;
return true;
}
/* 00000130-0000024C .text _execute__11daTag_Kk1_cFv */
bool daTag_Kk1_c::_execute() {
/* Nonmatching */
// 98% matched
cXyz* thepos = &dComIfGp_getPlayer(0)->current.pos;
f32 distance = current.pos.abs(*thepos);
//distance = std::sqrtf(distance);
//distance = std::sqrtf(distance);
f32 vertDistance = dComIfGp_getPlayer(0)->current.pos.y - this->current.pos.y;
field_0x6C5 = 0;
cXyz* player_pos = &dComIfGp_getPlayer(0)->current.pos;
f32 distance = std::sqrtf(current.pos.abs2(*player_pos));
f32 vert_distance = dComIfGp_getPlayer(0)->current.pos.y - this->current.pos.y;
mTagSet = false;
if (
(distance < l_HIO.field_0x8) &&
(vertDistance< l_HIO.field_0xC)
(distance < l_HIO.mHorizontalDistance) && (vert_distance< l_HIO.mVerticalDistance)
){
s16 fillerVal = dComIfGp_getPlayer(0)->shape_angle.y - current.angle.y;
fillerVal =abs(fillerVal);
if(fillerVal < 0x1000){ //(iVar3 = abs((int)(short)((mpCurPlayerActor[0]->shape_angle.y -current.angle.y)),(short)iVar3 < 0x1000)
field_0x6C5 = 1;
s16 angle_deviation = dComIfGp_getPlayer(0)->shape_angle.y - current.angle.y;
angle_deviation =abs(angle_deviation);
if(angle_deviation < 0x1000){
mTagSet = true;
}
}
return true;
}
@@ -65,7 +56,7 @@ bool daTag_Kk1_c::_delete() {
if (l_HIO.mNo >= 0) {
mDoHIO_deleteChild(l_HIO.mNo);
l_HIO.mNo = 0xff;
l_HIO.mNo = -1;
}
return TRUE;
}
@@ -73,28 +64,30 @@ bool daTag_Kk1_c::_delete() {
/* 000002A0-0000046C .text _create__11daTag_Kk1_cFv */
cPhs_State daTag_Kk1_c::_create() {
int test = 0;
s32 ret = cPhs_COMPLEATE_e;
u32 name_int = 0;
s32 o_phsState = cPhs_COMPLEATE_e;
fopAcM_SetupActor(this, daTag_Kk1_c);
switch(fopAcM_GetName(this)){
case PROC_TAG_KK1:
this->field_0x6C6 = 0;
mNameIsWrong = false;
break;
default:
return cPhs_ERROR_e;
}
if((char)l_HIO.mNo < 0){
l_HIO.mNo = mDoHIO_createChild("貧乏ム−ル追跡起動タグ",&l_HIO); //Poor Muuru chase startup tag
}
if(!createInit()){
ret = cPhs_ERROR_e;
if(l_HIO.mNo < 0){
//Poor Muuru (Mila) chase startup tag
l_HIO.mNo = mDoHIO_createChild("貧乏ム−ル追跡起動タグ",&l_HIO);
}
fpcM_GetName(&test);
return ret;
if(!createInit()){
o_phsState = cPhs_ERROR_e;
}
fpcM_GetName(&name_int);
return o_phsState;
}
/* 00000694-000006B4 .text daTag_Kk1_Create__FP10fopAc_ac_c */
@@ -123,7 +116,6 @@ static BOOL daTag_Kk1_IsDelete(daTag_Kk1_c* obj) {
return TRUE;
}
// static float a_prm_tbl;
static actor_method_class l_daTag_Kk1_Method = {
(process_method_func)daTag_Kk1_Create,