From 867581cbdaf6bfcb13f0ec8a3b2d7b5051676c9a Mon Sep 17 00:00:00 2001 From: WilliamArnett Date: Wed, 14 May 2025 12:46:59 -0500 Subject: [PATCH] 99% match --- include/d/actor/d_a_tag_kk1.h | 31 +++++++++--- src/d/actor/d_a_tag_kk1.cpp | 93 +++++++++++++++++++++++++++++------ 2 files changed, 101 insertions(+), 23 deletions(-) diff --git a/include/d/actor/d_a_tag_kk1.h b/include/d/actor/d_a_tag_kk1.h index 96cb1240e..47b4e1d18 100644 --- a/include/d/actor/d_a_tag_kk1.h +++ b/include/d/actor/d_a_tag_kk1.h @@ -1,26 +1,43 @@ #ifndef D_A_TAG_KK1_H #define D_A_TAG_KK1_H -#include "f_op/f_op_actor.h" +#include "d/d_npc.h" +#include "m_Do/m_Do_hostIO.h" -class daTag_Kk1_c : public fopAc_ac_c { + + +class daTag_Kk1_c : public fopNpc_npc_c { public: - void createInit(); + BOOL createInit(); bool _draw(); bool _execute(); bool _delete(); cPhs_State _create(); public: - /* Place member variables here */ -}; + /* 0x6C4 */ u8 field_0x6C4; + /* 0x6C5 */ bool field_0x6C5; + /* 0x6C6 */ u8 field_0x6C6; + /* 0x6C7 */ u8 field_0x6C7; +}; // Size: 0x6C8 + + +class daTag_Kk1_HIO_c : public JORReflexible{ + -class daTag_Kk1_HIO_c { public: + + virtual void foo(); daTag_Kk1_HIO_c(); + virtual ~daTag_Kk1_HIO_c(){}; public: - /* Place member variables here */ + /* 0x4 */ s8 mNo; + /* 0x8 */ f32 field_0x8; + /* 0xC */ f32 field_0xC; + /* 0x10 */ u8 field_0x10; }; + + #endif /* D_A_TAG_KK1_H */ diff --git a/src/d/actor/d_a_tag_kk1.cpp b/src/d/actor/d_a_tag_kk1.cpp index 0bc9bb0bf..f1074e8d0 100644 --- a/src/d/actor/d_a_tag_kk1.cpp +++ b/src/d/actor/d_a_tag_kk1.cpp @@ -4,63 +4,124 @@ // #include "d/actor/d_a_tag_kk1.h" +#include "d/d_com_inf_game.h" #include "d/d_procname.h" -/* 000000EC-00000120 .text __ct__15daTag_Kk1_HIO_cFv */ + +static daTag_Kk1_HIO_c l_HIO; +static f32 a_prm_tbl[] = {350.0f,30.0f,0.0f}; + 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() { + } /* 00000120-00000128 .text createInit__11daTag_Kk1_cFv */ -void daTag_Kk1_c::createInit() { - /* Nonmatching */ +BOOL daTag_Kk1_c::createInit() { + return 1; } /* 00000128-00000130 .text _draw__11daTag_Kk1_cFv */ bool daTag_Kk1_c::_draw() { - /* Nonmatching */ + return 1; } /* 00000130-0000024C .text _execute__11daTag_Kk1_cFv */ bool daTag_Kk1_c::_execute() { /* Nonmatching */ + // 98% matched + short minadjustdistance = 0x1000; + f32 distance = PSVECSquareDistance(¤t.pos, &dComIfGp_getPlayer(0)->current.pos); + + + distance = std::sqrtf(distance); + f32 vertDistance = dComIfGp_getPlayer(0)->current.pos.y - this->current.pos.y; + + field_0x6C5 = 0; + + if ( + (distance < l_HIO.field_0x8) && + (vertDistance< l_HIO.field_0xC) && + ((short)abs((short)(dComIfGp_getPlayer(0)->shape_angle.y - current.angle.y)) < minadjustdistance)) { + field_0x6C5 = 1; + } + + return true; } + /* 0000024C-000002A0 .text _delete__11daTag_Kk1_cFv */ bool daTag_Kk1_c::_delete() { - /* Nonmatching */ + + if (l_HIO.mNo >= 0) { + mDoHIO_deleteChild(l_HIO.mNo); + l_HIO.mNo = 0xff; + } + return TRUE; } /* 000002A0-0000046C .text _create__11daTag_Kk1_cFv */ cPhs_State daTag_Kk1_c::_create() { - /* Nonmatching */ + + int test = 0; + s32 ret = cPhs_COMPLEATE_e; + + fopAcM_SetupActor(this, daTag_Kk1_c); + + switch(fopAcM_GetName(this)){ + case PROC_TAG_KK1: + this->field_0x6C6 = 0; + 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; + } + + fpcM_GetName(&test); + return ret; } /* 00000694-000006B4 .text daTag_Kk1_Create__FP10fopAc_ac_c */ -static cPhs_State daTag_Kk1_Create(fopAc_ac_c*) { - /* Nonmatching */ +static cPhs_State daTag_Kk1_Create(fopAc_ac_c* obj) { + (static_cast(obj))->_create(); } /* 000006B4-000006D4 .text daTag_Kk1_Delete__FP11daTag_Kk1_c */ -static BOOL daTag_Kk1_Delete(daTag_Kk1_c*) { - /* Nonmatching */ +static BOOL daTag_Kk1_Delete(daTag_Kk1_c* obj) { + (static_cast(obj))->_delete(); } /* 000006D4-000006F4 .text daTag_Kk1_Execute__FP11daTag_Kk1_c */ -static BOOL daTag_Kk1_Execute(daTag_Kk1_c*) { - /* Nonmatching */ +static BOOL daTag_Kk1_Execute(daTag_Kk1_c* obj) { + (static_cast(obj))->_execute(); } /* 000006F4-00000714 .text daTag_Kk1_Draw__FP11daTag_Kk1_c */ -static BOOL daTag_Kk1_Draw(daTag_Kk1_c*) { - /* Nonmatching */ +static BOOL daTag_Kk1_Draw(daTag_Kk1_c* obj) { + (static_cast(obj))->_draw(); + } /* 00000714-0000071C .text daTag_Kk1_IsDelete__FP11daTag_Kk1_c */ -static BOOL daTag_Kk1_IsDelete(daTag_Kk1_c*) { - /* Nonmatching */ +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, (process_method_func)daTag_Kk1_Delete,