diff options
| author | hev7 <143887945+hev7@users.noreply.github.com> | 2025-11-08 00:51:13 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-07 16:51:13 -0800 |
| commit | e331c37001975a0db51a2ee9b024f37e9097b24f (patch) | |
| tree | 9144e2176ff61d25083b66f94424c87e88b784b2 /src | |
| parent | 3981a9d359eaf9677155b035371539c56cae1039 (diff) | |
d_a_npc_knj matching (#2779)
* d_a_npc_knj matching
* remove casts
Diffstat (limited to 'src')
| -rw-r--r-- | src/d/actor/d_a_npc_knj.cpp | 1211 |
1 files changed, 450 insertions, 761 deletions
diff --git a/src/d/actor/d_a_npc_knj.cpp b/src/d/actor/d_a_npc_knj.cpp index 77a67eb367..1588a962fa 100644 --- a/src/d/actor/d_a_npc_knj.cpp +++ b/src/d/actor/d_a_npc_knj.cpp @@ -1,216 +1,90 @@ /** * @file d_a_npc_knj.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_knj.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void __dt__11daNpc_Knj_cFv(); -extern "C" void create__11daNpc_Knj_cFv(); -extern "C" void CreateHeap__11daNpc_Knj_cFv(); -extern "C" void Delete__11daNpc_Knj_cFv(); -extern "C" void Execute__11daNpc_Knj_cFv(); -extern "C" void Draw__11daNpc_Knj_cFv(); -extern "C" void createHeapCallBack__11daNpc_Knj_cFP10fopAc_ac_c(); -extern "C" void getType__11daNpc_Knj_cFv(); -extern "C" void getFlowNodeNo__11daNpc_Knj_cFv(); -extern "C" bool isDelete__11daNpc_Knj_cFv(); -extern "C" void reset__11daNpc_Knj_cFv(); -extern "C" void setParam__11daNpc_Knj_cFv(); -extern "C" void srchActors__11daNpc_Knj_cFv(); -extern "C" void evtTalk__11daNpc_Knj_cFv(); -extern "C" void evtCutProc__11daNpc_Knj_cFv(); -extern "C" void action__11daNpc_Knj_cFv(); -extern "C" void beforeMove__11daNpc_Knj_cFv(); -extern "C" void setAttnPos__11daNpc_Knj_cFv(); -extern "C" bool drawDbgInfo__11daNpc_Knj_cFv(); -extern "C" void afterSetMotionAnm__11daNpc_Knj_cFiifi(); -extern "C" void drawGhost__11daNpc_Knj_cFv(); -extern "C" void selectAction__11daNpc_Knj_cFv(); -extern "C" void chkAction__11daNpc_Knj_cFM11daNpc_Knj_cFPCvPvPv_i(); -extern "C" void setAction__11daNpc_Knj_cFM11daNpc_Knj_cFPCvPvPv_i(); -extern "C" void wait__11daNpc_Knj_cFPv(); -extern "C" void talk__11daNpc_Knj_cFPv(); -extern "C" static void daNpc_Knj_Create__FPv(); -extern "C" static void daNpc_Knj_Delete__FPv(); -extern "C" static void daNpc_Knj_Execute__FPv(); -extern "C" static void daNpc_Knj_Draw__FPv(); -extern "C" static bool daNpc_Knj_IsDelete__FPv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__8daNpcT_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void -__ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__15daNpcT_JntAnm_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" u16 getEyeballMaterialNo__8daNpcT_cFv(); -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi(); -extern "C" bool checkChangeJoint__8daNpcT_cFi(); -extern "C" bool checkRemoveJoint__8daNpcT_cFi(); -extern "C" s32 getBackboneJointNo__8daNpcT_cFv(); -extern "C" s32 getNeckJointNo__8daNpcT_cFv(); -extern "C" s32 getHeadJointNo__8daNpcT_cFv(); -extern "C" s32 getFootLJointNo__8daNpcT_cFv(); -extern "C" s32 getFootRJointNo__8daNpcT_cFv(); -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv(); -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv(); -extern "C" void afterJntAnm__8daNpcT_cFi(); -extern "C" bool checkChangeEvt__8daNpcT_cFv(); -extern "C" bool evtEndProc__8daNpcT_cFv(); -extern "C" void setAfterTalkMotion__8daNpcT_cFv(); -extern "C" void afterMoved__8daNpcT_cFv(); -extern "C" void setCollision__8daNpcT_cFv(); -extern "C" bool chkXYItems__8daNpcT_cFv(); -extern "C" void decTmr__8daNpcT_cFv(); -extern "C" void drawOtherMdl__8daNpcT_cFv(); -extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi(); -extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c(); -extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c(); -extern "C" void changeAnm__8daNpcT_cFPiPi(); -extern "C" void changeBck__8daNpcT_cFPiPi(); -extern "C" void changeBtp__8daNpcT_cFPiPi(); -extern "C" void changeBtk__8daNpcT_cFPiPi(); -extern "C" void __sinit_d_a_npc_knj_cpp(); -extern "C" void -__ct__11daNpc_Knj_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" void __dt__17daNpc_Knj_Param_cFv(); -extern "C" static void func_80A454EC(); -extern "C" static void func_80A454F4(); -extern "C" u8 const m__17daNpc_Knj_Param_c[140]; -extern "C" extern char const* const d_a_npc_knj__stringBase0; -extern "C" void* mCutNameList__11daNpc_Knj_c; -extern "C" u8 mCutList__11daNpc_Knj_c[12]; - -// -// External References: -// - -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWallR__12dBgS_AcchCirFf(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void initialize__18daNpcT_ActorMngr_cFv(); -extern "C" void entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c(); -extern "C" void remove__18daNpcT_ActorMngr_cFv(); -extern "C" void initialize__15daNpcT_MatAnm_cFv(); -extern "C" void initialize__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void initialize__15daNpcT_JntAnm_cFv(); -extern "C" void getTexPtrnAnmP__8daNpcT_cFPCci(); -extern "C" void getTevRegKeyAnmP__8daNpcT_cFPCci(); -extern "C" void setBtpAnm__8daNpcT_cFP16J3DAnmTexPatternP12J3DModelDatafi(); -extern "C" void setBrkAnm__8daNpcT_cFP15J3DAnmTevRegKeyP12J3DModelDatafi(); -extern "C" void loadRes__8daNpcT_cFPCScPPCc(); -extern "C" void deleteRes__8daNpcT_cFPCScPPCc(); -extern "C" void execute__8daNpcT_cFv(); -extern "C" void draw__8daNpcT_cFiifP11_GXColorS10fiii(); -extern "C" void setEnvTevColor__8daNpcT_cFv(); -extern "C" void setRoomNo__8daNpcT_cFv(); -extern "C" void ctrlBtk__8daNpcT_cFv(); -extern "C" void setMtx__8daNpcT_cFv(); -extern "C" void ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel(); -extern "C" void evtProc__8daNpcT_cFv(); -extern "C" void setFootPos__8daNpcT_cFv(); -extern "C" void setFootPrtcl__8daNpcT_cFP4cXyzff(); -extern "C" bool checkCullDraw__8daNpcT_cFv(); -extern "C" void twilight__8daNpcT_cFv(); -extern "C" void evtOrder__8daNpcT_cFv(); -extern "C" void evtChange__8daNpcT_cFv(); -extern "C" void clrParam__8daNpcT_cFv(); -extern "C" void setFaceMotionAnm__8daNpcT_cFib(); -extern "C" void setMotionAnm__8daNpcT_cFifi(); -extern "C" void setAngle__8daNpcT_cFs(); -extern "C" void srchPlayerActor__8daNpcT_cFv(); -extern "C" void step__8daNpcT_cFsiiii(); -extern "C" void initTalk__8daNpcT_cFiPP10fopAc_ac_c(); -extern "C" void talkProc__8daNpcT_cFPiiPP10fopAc_ac_ci(); -extern "C" void daNpcT_getDistTableIdx__Fii(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void cM_rndF__Ff(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void __dt__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_cmpr(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__8daNpcT_c[49]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80A455BC-80A455BC 0000AC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A455BC = ""; -SECTION_DEAD static char const* const stringBase_80A455BD = "NO_RESPONSE"; -SECTION_DEAD static char const* const stringBase_80A455C9 = "Knj"; -#pragma pop + +const daNpc_Knj_HIOParam daNpc_Knj_Param_c::m = { + 0.0f, // attention_offset + 0.0f, // gravity + 1.0f, // scale + 4000.0f, // real_shadow_size + 0.0f, // weight + 0.0f, // height + 0.0f, // knee_length + 0.0f, // width + 0.0f, // body_angleX_max + 0.0f, // body_angleX_min + 0.0f, // body_angleY_max + 0.0f, // body_angleY_min + 0.0f, // head_angleX_max + 0.0f, // head_angleX_min + 0.0f, // head_angleY_max + 0.0f, // head_angleY_min + 0.0f, // neck_rotation_ratio + 0.0f, // morf_frame + 0, // talk_distance + 0, // talk_angle + 0, // attention_distance + 0, // attention_angle + 0.0f, // fov + 0.0f, // search_distance + 0.0f, // search_height + 0.0f, // search_depth + 0, // attention_time + 0, // damage_time + 0, // face_expression + 0, // motion + 0, // look_mode + 0, // debug_mode_ON + 0, // debug_info_ON + 0.0f, // expression_morf_frame + 0.0f, // box_min_x + 0.0f, // box_min_y + 0.0f, // box_min_z + 0.0f, // box_max_x + 0.0f, // box_max_y + 0.0f, // box_max_z + 0.0f, // box_offset +}; + +#if DEBUG +daNpc_Knj_HIO_c::daNpc_Knj_HIO_c() { + m = daNpc_Knj_Param_c::m; +} + +void daNpc_Knj_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) { + // TODO +} + +void daNpc_Knj_HIO_c::genMessage(JORMContext* ctext) { + // TODO +} +#endif + +enum Type { + /* 0x0 */ TYPE_0, + /* 0x1 */ TYPE_1, + /* 0x2 */ TYPE_2, + /* 0x3 */ TYPE_3, + /* 0x4 */ TYPE_4, + /* 0x5 */ TYPE_5, +}; + +enum FaceMotion { + /* 0x00 */ FACE_MOT_UNK_0 = 0, +}; + +enum Motion { + /* 0x00 */ MOT_UNK_0 = 0, +}; /* 80A455F0-80A455F8 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[8] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +static int l_bmdData[1][2] = { + {9, 1}, }; /* 80A455F8-80A45608 -00001 0010+00 0/1 0/0 0/0 .data l_evtList */ @@ -226,684 +100,499 @@ static char* l_resNameList[2] = { }; /* 80A45610-80A45614 000040 0002+02 1/0 0/0 0/0 .data l_loadResPtrn0 */ -SECTION_DATA static u16 l_loadResPtrn0[1 + 1 /* padding */] = { - 0x01FF, - /* padding */ - 0x0000, -}; +static s8 l_loadResPtrn0[2] = {1, -1}; /* 80A45614-80A4562C -00001 0018+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList[6] = { - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, +static s8* l_loadResPtrnList[6] = { + l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, }; /* 80A4562C-80A45648 00005C 001C+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[28] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[1] = { + {-1, 0, 0, -1, 0, 0, 0}, }; -#pragma pop /* 80A45648-80A45664 000078 001C+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[28] = { - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpcT_motionAnmData_c l_motionAnmData[1] = { + {6, 2, 1, -1, 0, 0, 0, 0}, }; -#pragma pop /* 80A45664-80A45674 000094 0010+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[16] = { - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[4] = { + {-1, 0, 0}, + {-1, 0, 0}, + {-1, 0, 0}, + {-1, 0, 0}, }; -#pragma pop /* 80A45674-80A45684 0000A4 0010+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[16] = { - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[4] = { + {0, 0, 0}, + {-1, 0, 0}, + {-1, 0, 0}, + {-1, 0, 0}, }; -#pragma pop /* 80A45684-80A45688 -00001 0004+00 1/1 0/0 0/0 .data mCutNameList__11daNpc_Knj_c */ char* daNpc_Knj_c::mCutNameList[1] = {""}; /* 80A45688-80A45694 0000B8 000C+00 2/2 0/0 0/0 .data mCutList__11daNpc_Knj_c */ -SECTION_DATA u8 daNpc_Knj_c::mCutList[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80A45694-80A456A0 -00001 000C+00 1/1 0/0 0/0 .data @4329 */ -SECTION_DATA static void* lit_4329[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Knj_cFPv, -}; - -/* 80A456A0-80A456AC -00001 000C+00 1/1 0/0 0/0 .data @4339 */ -SECTION_DATA static void* lit_4339[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Knj_cFPv, -}; - -/* 80A456AC-80A456DC 0000DC 0030+00 0/1 0/0 0/0 .data btpAnmData$4403 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 btpAnmData[48] = { - 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, -}; -#pragma pop - -/* 80A456DC-80A456E4 00010C 0008+00 0/1 0/0 0/0 .data brkAnmData$4404 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 brkAnmData[8] = { - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, -}; -#pragma pop - -/* 80A456E4-80A456F0 -00001 000C+00 1/1 0/0 0/0 .data @4468 */ -SECTION_DATA static void* lit_4468[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpc_Knj_cFPv, -}; - -/* 80A456F0-80A45710 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Knj_MethodTable */ -static actor_method_class daNpc_Knj_MethodTable = { - (process_method_func)daNpc_Knj_Create__FPv, - (process_method_func)daNpc_Knj_Delete__FPv, - (process_method_func)daNpc_Knj_Execute__FPv, - (process_method_func)daNpc_Knj_IsDelete__FPv, - (process_method_func)daNpc_Knj_Draw__FPv, -}; - -/* 80A45710-80A45740 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_KNJ */ -extern actor_process_profile_definition g_profile_NPC_KNJ = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_KNJ, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_Knj_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 349, // mPriority - &daNpc_Knj_MethodTable, // sub_method - 0x00044000, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80A45740-80A4574C 000170 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80A4574C-80A45770 00017C 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80A454F4, - (void*)NULL, - (void*)NULL, - (void*)func_80A454EC, +daNpc_Knj_c::cutFunc daNpc_Knj_c::mCutList[1] = { + NULL, }; -/* 80A45770-80A4577C 0001A0 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80A4577C-80A45788 0001AC 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80A45788-80A45794 0001B8 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80A45794-80A457A0 0001C4 000C+00 3/3 0/0 0/0 .data __vt__22daNpcT_MotionSeqMngr_c */ -SECTION_DATA extern void* __vt__22daNpcT_MotionSeqMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__22daNpcT_MotionSeqMngr_cFv, -}; - -/* 80A457A0-80A457AC 0001D0 000C+00 4/4 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcT_ActorMngr_cFv, -}; - -/* 80A457AC-80A457B8 0001DC 000C+00 3/3 0/0 0/0 .data __vt__15daNpcT_JntAnm_c */ -SECTION_DATA extern void* __vt__15daNpcT_JntAnm_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daNpcT_JntAnm_cFv, -}; - -/* 80A457B8-80A4587C 0001E8 00C4+00 2/2 0/0 0/0 .data __vt__11daNpc_Knj_c */ -SECTION_DATA extern void* __vt__11daNpc_Knj_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daNpc_Knj_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__8daNpcT_cFi, - (void*)checkChangeJoint__8daNpcT_cFi, - (void*)checkRemoveJoint__8daNpcT_cFi, - (void*)getBackboneJointNo__8daNpcT_cFv, - (void*)getNeckJointNo__8daNpcT_cFv, - (void*)getHeadJointNo__8daNpcT_cFv, - (void*)getFootLJointNo__8daNpcT_cFv, - (void*)getFootRJointNo__8daNpcT_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__8daNpcT_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__8daNpcT_cFi, - (void*)setParam__11daNpc_Knj_cFv, - (void*)checkChangeEvt__8daNpcT_cFv, - (void*)evtTalk__11daNpc_Knj_cFv, - (void*)evtEndProc__8daNpcT_cFv, - (void*)evtCutProc__11daNpc_Knj_cFv, - (void*)setAfterTalkMotion__8daNpcT_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__11daNpc_Knj_cFv, - (void*)beforeMove__11daNpc_Knj_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__11daNpc_Knj_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__8daNpcT_cFv, - (void*)setFootPrtcl__8daNpcT_cFP4cXyzff, - (void*)checkCullDraw__8daNpcT_cFv, - (void*)twilight__8daNpcT_cFv, - (void*)chkXYItems__8daNpcT_cFv, - (void*)evtOrder__8daNpcT_cFv, - (void*)decTmr__8daNpcT_cFv, - (void*)clrParam__8daNpcT_cFv, - (void*)drawDbgInfo__11daNpc_Knj_cFv, - (void*)drawOtherMdl__8daNpcT_cFv, - (void*)drawGhost__11daNpc_Knj_cFv, - (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi, - (void*)afterSetMotionAnm__11daNpc_Knj_cFiifi, - (void*)getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c, - (void*)getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c, - (void*)changeAnm__8daNpcT_cFPiPi, - (void*)changeBck__8daNpcT_cFPiPi, - (void*)changeBtp__8daNpcT_cFPiPi, - (void*)changeBtk__8daNpcT_cFPiPi, - (void*)setMotionAnm__8daNpcT_cFifi, -}; +/* 80A4589C-80A458A0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +NPC_KNJ_HIO_CLASS l_HIO; /* 80A4356C-80A43608 0000EC 009C+00 1/0 0/0 0/0 .text __dt__11daNpc_Knj_cFv */ daNpc_Knj_c::~daNpc_Knj_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80A45510-80A4559C 000000 008C+00 4/4 0/0 0/0 .rodata m__17daNpc_Knj_Param_c */ -SECTION_RODATA u8 const daNpc_Knj_Param_c::m[140] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x45, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A45510, &daNpc_Knj_Param_c::m); + if (heap != NULL) { + mpMorf[0]->stopZelAnime(); + } + deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList); +} /* 80A43608-80A43848 000188 0240+00 1/1 0/0 0/0 .text create__11daNpc_Knj_cFv */ -void daNpc_Knj_c::create() { - // NONMATCHING +int daNpc_Knj_c::create() { + daNpcT_ct(this, daNpc_Knj_c, l_faceMotionAnmData, l_motionAnmData, l_faceMotionSequenceData, 4, + l_motionSequenceData, 4, l_evtList, l_resNameList); + + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = 0; + + int rv = loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList); + if (rv == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0)) { + return cPhs_ERROR_e; + } + + if (isDelete()) { + return cPhs_ERROR_e; + } + + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx()); + mSound.init(¤t.pos, &eyePos, 3, 1); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + setEnvTevColor(); + setRoomNo(); + mCcStts.Init(mpHIO->m.common.weight, 0, this); + reset(); + mCreating = true; + Execute(); + mCreating = false; + } + + return rv; } -/* ############################################################################################## */ -/* 80A4559C-80A455A0 00008C 0004+00 4/6 0/0 0/0 .rodata @4089 */ -SECTION_RODATA static u8 const lit_4089[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80A4559C, &lit_4089); - -/* 80A455A0-80A455A4 000090 0004+00 0/2 0/0 0/0 .rodata @4090 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4090 = 65536.0f; -COMPILER_STRIP_GATE(0x80A455A0, &lit_4090); -#pragma pop - -/* 80A455A4-80A455A8 000094 0004+00 0/2 0/0 0/0 .rodata @4091 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4091 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80A455A4, &lit_4091); -#pragma pop - -/* 80A455A8-80A455B0 000098 0004+04 2/2 0/0 0/0 .rodata @4215 */ -SECTION_RODATA static f32 const lit_4215[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80A455A8, &lit_4215); - /* 80A43848-80A439A0 0003C8 0158+00 1/1 0/0 0/0 .text CreateHeap__11daNpc_Knj_cFv */ -void daNpc_Knj_c::CreateHeap() { - // NONMATCHING +int daNpc_Knj_c::CreateHeap() { + J3DModelData* modelData = static_cast<J3DModelData*>( + dComIfG_getObjectRes(l_resNameList[l_bmdData[0][1]], l_bmdData[0][0])); + + mpMorf[0] = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, + 0x11020084); + + if (mpMorf[0] != NULL && mpMorf[0]->getModel() == NULL) { + mpMorf[0]->stopZelAnime(); + mpMorf[0] = NULL; + } + + if (mpMorf[0] == NULL) { + return 0; + } + + J3DModel* model = mpMorf[0]->getModel(); + model->setUserArea((uintptr_t)this); + + if (setFaceMotionAnm(0, false) && setMotionAnm(0, 0.0f, 0)) { + return 1; + } + return 0; } /* 80A439A0-80A439D4 000520 0034+00 1/1 0/0 0/0 .text Delete__11daNpc_Knj_cFv */ -void daNpc_Knj_c::Delete() { - // NONMATCHING +int daNpc_Knj_c::Delete() { + fopAcM_GetID(this); + this->~daNpc_Knj_c(); + return 1; } /* 80A439D4-80A439F4 000554 0020+00 2/2 0/0 0/0 .text Execute__11daNpc_Knj_cFv */ -void daNpc_Knj_c::Execute() { - // NONMATCHING +int daNpc_Knj_c::Execute() { + return daNpcT_c::execute(); } /* 80A439F4-80A43A88 000574 0094+00 1/1 0/0 0/0 .text Draw__11daNpc_Knj_cFv */ -void daNpc_Knj_c::Draw() { - // NONMATCHING +int daNpc_Knj_c::Draw() { + if (mpMatAnm[0] != NULL) { + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + modelData->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + return daNpcT_c::draw(0, 0, mRealShadowSize, NULL, 0.0f, 1, 0, 0); } /* 80A43A88-80A43AA8 000608 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__11daNpc_Knj_cFP10fopAc_ac_c */ -void daNpc_Knj_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daNpc_Knj_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast<daNpc_Knj_c*>(i_this)->CreateHeap(); } /* 80A43AA8-80A43B1C 000628 0074+00 1/1 0/0 0/0 .text getType__11daNpc_Knj_cFv */ -void daNpc_Knj_c::getType() { - // NONMATCHING +u8 daNpc_Knj_c::getType() { + switch (fopAcM_GetParam(this) & 0xFF) { + case 0: + return TYPE_0; + case 1: + return TYPE_1; + case 2: + return TYPE_2; + case 3: + return TYPE_3; + case 4: + return TYPE_4; + case 5: + return TYPE_5; + } + return TYPE_0; } /* 80A43B1C-80A43B38 00069C 001C+00 1/1 0/0 0/0 .text getFlowNodeNo__11daNpc_Knj_cFv */ -void daNpc_Knj_c::getFlowNodeNo() { - // NONMATCHING +int daNpc_Knj_c::getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; } /* 80A43B38-80A43B40 0006B8 0008+00 1/1 0/0 0/0 .text isDelete__11daNpc_Knj_cFv */ -bool daNpc_Knj_c::isDelete() { - return false; +BOOL daNpc_Knj_c::isDelete() { + return FALSE; } /* 80A43B40-80A43C64 0006C0 0124+00 1/1 0/0 0/0 .text reset__11daNpc_Knj_cFv */ void daNpc_Knj_c::reset() { - // NONMATCHING + initialize(); + + memset(&mNextAction, 0, (u8*)&field_0xe64 - (u8*)&mNextAction); + + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + + setAngle(home.angle.y); } /* 80A43C64-80A43D58 0007E4 00F4+00 1/0 0/0 0/0 .text setParam__11daNpc_Knj_cFv */ void daNpc_Knj_c::setParam() { - // NONMATCHING + selectAction(); + srchActors(); + + s16 talk_distance = mpHIO->m.common.talk_distance; + s16 talk_angle = mpHIO->m.common.talk_angle; + s16 attention_distance = mpHIO->m.common.attention_distance; + s16 attention_angle = mpHIO->m.common.attention_angle; + + attention_info.distances[fopAc_attn_LOCK_e] = + daNpcT_getDistTableIdx(attention_distance, attention_angle); + attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; + attention_info.distances[fopAc_attn_SPEAK_e] = + daNpcT_getDistTableIdx(talk_distance, talk_angle); + attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e; + + scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale); + mCcStts.SetWeight(mpHIO->m.common.weight); + mCylH = mpHIO->m.common.height; + mWallR = mpHIO->m.common.width; + mAcchCir.SetWallR(mWallR); + mAcchCir.SetWallH(mpHIO->m.common.knee_length); + mRealShadowSize = mpHIO->m.common.real_shadow_size; + gravity = mpHIO->m.common.gravity; + mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame; + mMorfFrames = mpHIO->m.common.morf_frame; } /* 80A43D58-80A43D5C 0008D8 0004+00 1/1 0/0 0/0 .text srchActors__11daNpc_Knj_cFv */ -void daNpc_Knj_c::srchActors() { - /* empty function */ -} +void daNpc_Knj_c::srchActors() {} /* 80A43D5C-80A43E5C 0008DC 0100+00 1/0 0/0 0/0 .text evtTalk__11daNpc_Knj_cFv */ -void daNpc_Knj_c::evtTalk() { - // NONMATCHING +BOOL daNpc_Knj_c::evtTalk() { + if (chkAction(&daNpc_Knj_c::talk)) { + (this->*mAction)(NULL); + } else { + mPreItemNo = 0; + if (dComIfGp_event_chkTalkXY()) { + if (!dComIfGp_evmng_ChkPresentEnd()) { + return TRUE; + } + mEvtNo = 1; + evtChange(); + return TRUE; + } + setAction(&daNpc_Knj_c::talk); + } + return TRUE; } /* 80A43E5C-80A43F24 0009DC 00C8+00 1/0 0/0 0/0 .text evtCutProc__11daNpc_Knj_cFv */ -void daNpc_Knj_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_Knj_c::evtCutProc() { + BOOL rv = FALSE; + + int staffId = dComIfGp_getEventManager().getMyStaffId("Knj", this, -1); + if (staffId != -1) { + mStaffId = staffId; + int actIdx = + dComIfGp_getEventManager().getMyActIdx(mStaffId, (char**)mCutNameList, 1, 0, 0); + if ((this->*(mCutList[actIdx]))(mStaffId) != 0) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + rv = TRUE; + } + + return rv; } /* 80A43F24-80A43FAC 000AA4 0088+00 1/0 0/0 0/0 .text action__11daNpc_Knj_cFv */ void daNpc_Knj_c::action() { - // NONMATCHING + if (mNextAction != NULL) { + if (mAction == mNextAction) { + (this->*mAction)(NULL); + } else { + setAction(mNextAction); + } + } } /* 80A43FAC-80A44024 000B2C 0078+00 1/0 0/0 0/0 .text beforeMove__11daNpc_Knj_cFv */ void daNpc_Knj_c::beforeMove() { - // NONMATCHING + if (checkHide() || mNoDraw != 0) { + attention_info.flags = 0; + } } /* 80A44024-80A44080 000BA4 005C+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Knj_cFv */ void daNpc_Knj_c::setAttnPos() { - // NONMATCHING + setMtx(); + eyePos = current.pos; + attention_info.position = current.pos; } /* 80A44080-80A44088 000C00 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpc_Knj_cFv */ -bool daNpc_Knj_c::drawDbgInfo() { - return false; +BOOL daNpc_Knj_c::drawDbgInfo() { + return FALSE; } -/* ############################################################################################## */ -/* 80A455B0-80A455B8 0000A0 0008+00 1/1 0/0 0/0 .rodata @4453 */ -SECTION_RODATA static u8 const lit_4453[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A455B0, &lit_4453); - /* 80A44088-80A44264 000C08 01DC+00 1/0 0/0 0/0 .text afterSetMotionAnm__11daNpc_Knj_cFiifi */ -void daNpc_Knj_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { - // NONMATCHING +bool daNpc_Knj_c::afterSetMotionAnm(int param_1, int param_2, f32 param_3, int param_4) { + static struct { + int field_0x0; + u32 field_0x4; + } btpAnmData[6] = { + {15, 1}, {16, 1}, {17, 1}, {18, 1}, {19, 1}, {20, 1}, + }; + + static struct { + int field_0x0; + u32 field_0x4; + } brkAnmData[1] = { + {12, 1}, + }; + + J3DAnmTexPattern* anm_text = NULL; + J3DAnmTevRegKey* anm_tev = NULL; + if (btpAnmData[mType].field_0x0 != -1) { + anm_text = + getTexPtrnAnmP(l_resNameList[btpAnmData[mType].field_0x4], btpAnmData[mType].field_0x0); + } + + if (anm_text) { + if (mBtpAnm.getBtpAnm() == anm_text) { + mAnmFlags |= 0x800; + } else if (setBtpAnm(anm_text, mpMorf[0]->getModel()->getModelData(), 1.0f, param_2)) { + mAnmFlags |= 0x820; + } + } + + if (anm_text == NULL && btpAnmData[mType].field_0x0 != -1) { + return 0; + } + + if (brkAnmData[param_1].field_0x0 != -1) { + anm_tev = getTevRegKeyAnmP(l_resNameList[brkAnmData[param_1].field_0x4], + brkAnmData[param_1].field_0x0); + } + + if (anm_tev) { + if (mBrkAnm.getBrkAnm() == anm_tev) { + mAnmFlags |= 0x100; + } else if (setBrkAnm(anm_tev, mpMorf[0]->getModel()->getModelData(), 1.0f, param_2)) { + mBrkAnm.setFrame(mType * 10); + mAnmFlags |= 0x104; + } + } + + if (anm_tev == NULL && brkAnmData[param_1].field_0x0 != -1) { + return 0; + } + + return 1; } /* 80A44264-80A442D0 000DE4 006C+00 1/0 0/0 0/0 .text drawGhost__11daNpc_Knj_cFv */ void daNpc_Knj_c::drawGhost() { - // NONMATCHING + J3DModel* model = mpMorf[0]->getModel(); + g_env_light.settingTevStruct(5, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + mpMorf[0]->entryDL(); } /* 80A442D0-80A44318 000E50 0048+00 1/1 0/0 0/0 .text selectAction__11daNpc_Knj_cFv */ -void daNpc_Knj_c::selectAction() { - // NONMATCHING +int daNpc_Knj_c::selectAction() { + mNextAction = NULL; + mNextAction = &daNpc_Knj_c::wait; + return 1; } /* 80A44318-80A44344 000E98 002C+00 1/1 0/0 0/0 .text * chkAction__11daNpc_Knj_cFM11daNpc_Knj_cFPCvPvPv_i */ -void daNpc_Knj_c::chkAction(int (daNpc_Knj_c::*param_0)(void*)) { - // NONMATCHING +BOOL daNpc_Knj_c::chkAction(actionFunc param_0) { + return mAction == param_0; } /* 80A44344-80A443EC 000EC4 00A8+00 2/2 0/0 0/0 .text * setAction__11daNpc_Knj_cFM11daNpc_Knj_cFPCvPvPv_i */ -void daNpc_Knj_c::setAction(int (daNpc_Knj_c::*param_0)(void*)) { - // NONMATCHING -} +int daNpc_Knj_c::setAction(actionFunc param_0) { + mMode = MODE_EXIT; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } -/* ############################################################################################## */ -/* 80A455B8-80A455BC 0000A8 0004+00 1/1 0/0 0/0 .rodata @4529 */ -SECTION_RODATA static f32 const lit_4529 = -1.0f; -COMPILER_STRIP_GATE(0x80A455B8, &lit_4529); + mMode = MODE_ENTER; + mAction = param_0; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + return 1; +} /* 80A443EC-80A44598 000F6C 01AC+00 1/0 0/0 0/0 .text wait__11daNpc_Knj_cFPv */ -void daNpc_Knj_c::wait(void* param_0) { - // NONMATCHING +int daNpc_Knj_c::wait(void* param_0) { + BOOL uVar2; + + switch (mMode) { + case 0: + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_0, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + mMode = 2; + case 2: + if (!mStagger.checkStagger()) { + if (srchPlayerActor()) { + mJntAnm.lookPlayer(0); + uVar2 = checkStep(); + } else { + mJntAnm.lookNone(0); + uVar2 = home.angle.y != mCurAngle.y; + } + if (uVar2 != 0 && step(home.angle.y, -1, -1, 15, 0)) { + mMode = 1; + } + } + break; + case 3: + break; + } + + return 1; } /* 80A44598-80A446FC 001118 0164+00 2/0 0/0 0/0 .text talk__11daNpc_Knj_cFPv */ -void daNpc_Knj_c::talk(void* param_0) { - // NONMATCHING +int daNpc_Knj_c::talk(void* param_0) { + BOOL bVar1 = FALSE; + + switch (mMode) { + case 0: + case 1: + initTalk(mFlowNodeNo, NULL); + mMode = 2; + case 2: + if (mTwilight) { + bVar1 = TRUE; + } else { + mJntAnm.lookPlayer(0); + if (mCurAngle.y != fopAcM_searchPlayerAngleY(this)) { + step(fopAcM_searchPlayerAngleY(this), -1, -1, 15, 0); + } else { + bVar1 = TRUE; + } + } + if (bVar1 && talkProc(NULL, FALSE, NULL, FALSE)) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = 3; + } + break; + case 3: + break; + } + + return 0; } /* 80A446FC-80A4471C 00127C 0020+00 1/0 0/0 0/0 .text daNpc_Knj_Create__FPv */ -static void daNpc_Knj_Create(void* param_0) { - // NONMATCHING +static int daNpc_Knj_Create(void* i_this) { + return static_cast<daNpc_Knj_c*>(i_this)->create(); } /* 80A4471C-80A4473C 00129C 0020+00 1/0 0/0 0/0 .text daNpc_Knj_Delete__FPv */ -static void daNpc_Knj_Delete(void* param_0) { - // NONMATCHING +static int daNpc_Knj_Delete(void* i_this) { + return static_cast<daNpc_Knj_c*>(i_this)->Delete(); } /* 80A4473C-80A4475C 0012BC 0020+00 1/0 0/0 0/0 .text daNpc_Knj_Execute__FPv */ -static void daNpc_Knj_Execute(void* param_0) { - // NONMATCHING +static int daNpc_Knj_Execute(void* i_this) { + return static_cast<daNpc_Knj_c*>(i_this)->Execute(); } /* 80A4475C-80A4477C 0012DC 0020+00 1/0 0/0 0/0 .text daNpc_Knj_Draw__FPv */ -static void daNpc_Knj_Draw(void* param_0) { - // NONMATCHING +static int daNpc_Knj_Draw(void* i_this) { + return static_cast<daNpc_Knj_c*>(i_this)->Draw(); } /* 80A4477C-80A44784 0012FC 0008+00 1/0 0/0 0/0 .text daNpc_Knj_IsDelete__FPv */ -static bool daNpc_Knj_IsDelete(void* param_0) { - return true; -} - -/* 80A44784-80A447CC 001304 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80A447CC-80A44B54 00134C 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80A44B54-80A44B90 0016D4 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80A44B90-80A44BCC 001710 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80A44BCC-80A44FD0 00174C 0404+00 1/1 0/0 0/0 .text - * __ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -// daNpcT_c::daNpcT_c(daNpcT_faceMotionAnmData_c const* param_0, -// daNpcT_motionAnmData_c const* param_1, -// daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_2, int param_3, -// daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_4, int param_5, -// daNpcT_evtData_c const* param_6, char** param_7) { -extern "C" void __ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc() { - // NONMATCHING -} - -/* 80A44FD0-80A44FD4 001B50 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80A44FD4-80A450D0 001B54 00FC+00 1/0 0/0 0/0 .text __dt__15daNpcT_JntAnm_cFv */ -// daNpcT_JntAnm_c::~daNpcT_JntAnm_c() { -extern "C" void __dt__15daNpcT_JntAnm_cFv() { - // NONMATCHING -} - -/* 80A450D0-80A450D4 001C50 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80A450D4-80A4511C 001C54 0048+00 1/0 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() { -extern "C" void __dt__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80A4511C-80A45164 001C9C 0048+00 1/0 0/0 0/0 .text __dt__22daNpcT_MotionSeqMngr_cFv */ -// daNpcT_MotionSeqMngr_c::~daNpcT_MotionSeqMngr_c() { -extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv() { - // NONMATCHING -} - -/* 80A45164-80A451D4 001CE4 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80A451D4-80A45230 001D54 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80A45230-80A452A0 001DB0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80A452A0-80A452E8 001E20 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80A452F0-80A452F4 001E70 0004+00 1/0 0/0 0/0 .text ctrlSubFaceMotion__8daNpcT_cFi */ -// void daNpcT_c::ctrlSubFaceMotion(int param_0) { -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi() { - /* empty function */ -} - -/* 80A4532C-80A45334 001EAC 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80A45334-80A4533C 001EB4 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80A45348-80A45350 001EC8 0008+00 1/0 0/0 0/0 .text evtEndProc__8daNpcT_cFv */ -// bool daNpcT_c::evtEndProc() { -extern "C" bool evtEndProc__8daNpcT_cFv() { - return true; -} - -/* 80A4535C-80A45364 001EDC 0008+00 1/0 0/0 0/0 .text chkXYItems__8daNpcT_cFv */ -// bool daNpcT_c::chkXYItems() { -extern "C" bool chkXYItems__8daNpcT_cFv() { - return false; +static int daNpc_Knj_IsDelete(void* i_this) { + return 1; } -/* 80A45364-80A4537C 001EE4 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80A4537C-80A45380 001EFC 0004+00 1/0 0/0 0/0 .text drawOtherMdl__8daNpcT_cFv */ -// void daNpcT_c::drawOtherMdl() { -extern "C" void drawOtherMdl__8daNpcT_cFv() { - /* empty function */ -} - -/* 80A45380-80A45388 001F00 0008+00 1/0 0/0 0/0 .text afterSetFaceMotionAnm__8daNpcT_cFiifi */ -// bool daNpcT_c::afterSetFaceMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { -extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi() { - return true; -} - -/* 80A45388-80A453B8 001F08 0030+00 1/0 0/0 0/0 .text - * getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c */ -// void daNpcT_c::getFaceMotionAnm(daNpcT_faceMotionAnmData_c param_0) { -extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c() { - // NONMATCHING -} - -/* 80A453B8-80A453E8 001F38 0030+00 1/0 0/0 0/0 .text - * getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c */ -// void daNpcT_c::getMotionAnm(daNpcT_motionAnmData_c param_0) { -extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c() { - // NONMATCHING -} - -/* 80A453E8-80A453EC 001F68 0004+00 1/0 0/0 0/0 .text changeAnm__8daNpcT_cFPiPi */ -// void daNpcT_c::changeAnm(int* param_0, int* param_1) { -extern "C" void changeAnm__8daNpcT_cFPiPi() { - /* empty function */ -} - -/* 80A453EC-80A453F0 001F6C 0004+00 1/0 0/0 0/0 .text changeBck__8daNpcT_cFPiPi */ -// void daNpcT_c::changeBck(int* param_0, int* param_1) { -extern "C" void changeBck__8daNpcT_cFPiPi() { - /* empty function */ -} - -/* 80A453F0-80A453F4 001F70 0004+00 1/0 0/0 0/0 .text changeBtp__8daNpcT_cFPiPi */ -// void daNpcT_c::changeBtp(int* param_0, int* param_1) { -extern "C" void changeBtp__8daNpcT_cFPiPi() { - /* empty function */ -} - -/* 80A453F4-80A453F8 001F74 0004+00 1/0 0/0 0/0 .text changeBtk__8daNpcT_cFPiPi */ -// void daNpcT_c::changeBtk(int* param_0, int* param_1) { -extern "C" void changeBtk__8daNpcT_cFPiPi() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80A4587C-80A45888 0002AC 000C+00 2/2 0/0 0/0 .data __vt__17daNpc_Knj_Param_c */ -SECTION_DATA extern void* __vt__17daNpc_Knj_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daNpc_Knj_Param_cFv, +/* 80A456F0-80A45710 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Knj_MethodTable */ +static actor_method_class daNpc_Knj_MethodTable = { + (process_method_func)daNpc_Knj_Create, (process_method_func)daNpc_Knj_Delete, + (process_method_func)daNpc_Knj_Execute, (process_method_func)daNpc_Knj_IsDelete, + (process_method_func)daNpc_Knj_Draw, }; -/* 80A45890-80A4589C 000008 000C+00 1/1 0/0 0/0 .bss @3814 */ -static u8 lit_3814[12]; - -/* 80A4589C-80A458A0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 80A453F8-80A45460 001F78 0068+00 0/0 1/0 0/0 .text __sinit_d_a_npc_knj_cpp */ -void __sinit_d_a_npc_knj_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80A453F8, __sinit_d_a_npc_knj_cpp); -#pragma pop - -/* 80A45460-80A454A4 001FE0 0044+00 1/1 0/0 0/0 .text - * __ct__11daNpc_Knj_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_Knj_c::daNpc_Knj_c(daNpcT_faceMotionAnmData_c const* param_0, - daNpcT_motionAnmData_c const* param_1, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_2, int param_3, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_4, int param_5, - daNpcT_evtData_c const* param_6, char** param_7) { - // NONMATCHING -} - -/* 80A454A4-80A454EC 002024 0048+00 2/1 0/0 0/0 .text __dt__17daNpc_Knj_Param_cFv */ -daNpc_Knj_Param_c::~daNpc_Knj_Param_c() { - // NONMATCHING -} - -/* 80A454EC-80A454F4 00206C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80A454EC() { - // NONMATCHING -} - -/* 80A454F4-80A454FC 002074 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80A454F4() { - // NONMATCHING -} - -/* 80A455BC-80A455BC 0000AC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80A45710-80A45740 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_KNJ */ +extern actor_process_profile_definition g_profile_NPC_KNJ = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_KNJ, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_Knj_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 349, // mPriority + &daNpc_Knj_MethodTable, // sub_method + 0x00044000, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; |
