From a0df17da2b776c682a57d77da8a9cac4726fe047 Mon Sep 17 00:00:00 2001 From: hev7 <143887945+hev7@users.noreply.github.com> Date: Fri, 14 Nov 2025 10:32:10 +0000 Subject: [PATCH] npc_yamis, npc_yamit matching (#2801) --- configure.py | 4 +- include/d/actor/d_a_npc_yamis.h | 154 ++- include/d/actor/d_a_npc_yamit.h | 151 ++- include/d/actor/d_a_tag_yami.h | 2 + src/d/actor/d_a_npc_yamis.cpp | 1676 +++++++++++------------------- src/d/actor/d_a_npc_yamit.cpp | 1701 ++++++++++++------------------- 6 files changed, 1454 insertions(+), 2234 deletions(-) diff --git a/configure.py b/configure.py index 0a5645b83e5..a1445cc1bb7 100755 --- a/configure.py +++ b/configure.py @@ -1936,8 +1936,8 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_worm"), ActorRel(NonMatching, "d_a_npc_wrestler", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamid"), - ActorRel(NonMatching, "d_a_npc_yamis"), - ActorRel(NonMatching, "d_a_npc_yamit"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamis"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamit"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yelia"), ActorRel(NonMatching, "d_a_npc_ykm"), ActorRel(NonMatching, "d_a_npc_ykw"), diff --git a/include/d/actor/d_a_npc_yamis.h b/include/d/actor/d_a_npc_yamis.h index d62e1a73503..eee897c32da 100644 --- a/include/d/actor/d_a_npc_yamis.h +++ b/include/d/actor/d_a_npc_yamis.h @@ -3,6 +3,33 @@ #include "d/actor/d_a_npc.h" +struct daNpc_yamiS_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; +}; + +class daNpc_yamiS_Param_c { +public: + /* 80B4CD38 */ virtual ~daNpc_yamiS_Param_c() {} + + static const daNpc_yamiS_HIOParam m; +}; + +#if DEBUG +class daNpc_yamiS_HIO_c : public mDoHIO_entry_c { +public: + daNpc_yamiS_HIO_c(); + + void listenPropertyEvent(const JORPropertyEvent*); + void genMessage(JORMContext*); + + daNpc_yamiS_HIOParam m; +}; + +#define NPC_YAMIS_HIO_CLASS daNpc_yamiS_HIO_c +#else +#define NPC_YAMIS_HIO_CLASS daNpc_yamiS_Param_c +#endif + /** * @ingroup actors-npcs * @class daNpc_yamiS_c @@ -11,80 +38,109 @@ * @details * */ -class daNpc_yamiS_c : public fopAc_ac_c { +class daNpc_yamiS_c : public daNpcT_c { public: + typedef BOOL (daNpc_yamiS_c::*cutFunc)(int); + typedef int (daNpc_yamiS_c::*actionFunc)(void*); + /* 80B4656C */ ~daNpc_yamiS_c(); - /* 80B466A4 */ void create(); - /* 80B46958 */ void CreateHeap(); - /* 80B46DA8 */ void Delete(); - /* 80B46DDC */ void Execute(); - /* 80B46DFC */ void Draw(); - /* 80B46EA4 */ void createHeapCallBack(fopAc_ac_c*); - /* 80B46EC4 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80B46F1C */ void getType(); - /* 80B46F54 */ void getFlowNodeNo(); - /* 80B46FB8 */ void isDelete(); + /* 80B466A4 */ cPhs__Step create(); + /* 80B46958 */ int CreateHeap(); + /* 80B46DA8 */ int Delete(); + /* 80B46DDC */ int Execute(); + /* 80B46DFC */ int Draw(); + /* 80B46EA4 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80B46EC4 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80B46F1C */ u8 getType(); + /* 80B46F54 */ u32 getFlowNodeNo(); + /* 80B46FB8 */ BOOL isDelete(); /* 80B47040 */ void reset(); /* 80B47254 */ void afterJntAnm(int); /* 80B472E0 */ void setParam(); /* 80B473DC */ void setAfterTalkMotion(); /* 80B4743C */ void srchActors(); - /* 80B47440 */ void evtTalk(); - /* 80B47524 */ void evtCutProc(); + /* 80B47440 */ BOOL evtTalk(); + /* 80B47524 */ BOOL evtCutProc(); /* 80B475EC */ void action(); /* 80B476D8 */ void beforeMove(); /* 80B47750 */ void setAttnPos(); /* 80B4797C */ void setCollision(); - /* 80B47AE8 */ bool drawDbgInfo(); + /* 80B47AE8 */ int drawDbgInfo(); /* 80B47AF0 */ void drawGhost(); - /* 80B47B5C */ void selectAction(); - /* 80B47BA4 */ void chkAction(int (daNpc_yamiS_c::*)(void*)); - /* 80B47BD0 */ void setAction(int (daNpc_yamiS_c::*)(void*)); - /* 80B47C78 */ void wait(void*); - /* 80B47F50 */ void talk(void*); - /* 80B4815C */ void cutStopper(int); - /* 80B481F0 */ void _cutStopper_Init(int const&); - /* 80B48238 */ void _cutStopper_Main(int const&); - /* 80B494D8 */ daNpc_yamiS_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, - daNpcT_evtData_c const*, char**); - /* 80B49598 */ u16 getEyeballMaterialNo(); - /* 80B495A0 */ s32 getHeadJointNo(); - /* 80B495A8 */ s32 getNeckJointNo(); - /* 80B495B0 */ bool getBackboneJointNo(); - /* 80B495B8 */ void checkChangeJoint(int); - /* 80B495C8 */ void checkRemoveJoint(int); - /* 80B495D8 */ void evtEndProc(); - - void vanish_off() { - field_0xf81 = 0; + /* 80B47B5C */ int selectAction(); + /* 80B47BA4 */ BOOL chkAction(int (daNpc_yamiS_c::*)(void*)); + /* 80B47BD0 */ int setAction(int (daNpc_yamiS_c::*)(void*)); + /* 80B47C78 */ int wait(void*); + /* 80B47F50 */ int talk(void*); + /* 80B4815C */ BOOL cutStopper(int); + /* 80B481F0 */ BOOL _cutStopper_Init(int const&); + /* 80B48238 */ BOOL _cutStopper_Main(int const&); + /* 80B494D8 */ daNpc_yamiS_c( + daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, + daNpcT_motionAnmData_c const* i_motionAnmData, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, + int i_faceMotionStepNum, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, + daNpcT_evtData_c const* i_evtData, char** i_arcNames) + : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, + i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, + i_arcNames) {} + /* 80B49598 */ u16 getEyeballMaterialNo() { return 1; } + /* 80B495A0 */ s32 getHeadJointNo() { return 4; } + /* 80B495A8 */ s32 getNeckJointNo() { return 3; } + /* 80B495B0 */ s32 getBackboneJointNo() { return 1; } + /* 80B495B8 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; } + /* 80B495C8 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 6; } + /* 80B495D8 */ BOOL evtEndProc() { + mJntAnm.lookNone(0); + eventInfo.setIdx(0); + mEvtNo = 0; + return TRUE; } + u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } + int getSwitchBitNo() { + u32 full_prm = fopAcM_GetParam(this); + return (full_prm >> 16) & 0xFF; + } + BOOL _is_vanish_prm() { + int reg_r31 = (fopAcM_GetParam(this) >> 28) != 0; + if (reg_r31 == 15) { + reg_r31 = 0; + } + + return reg_r31; + } + + BOOL is_vanish() { return mVanish; } + void vanish_on() { mVanish = 1; } + void vanish_off() { mVanish = 0; } void on_CoHit() { field_0xe44.OnCoSetBit(); field_0xe44.OnTgSetBit(); } + void off_CoHit() { + field_0xe44.OffCoSetBit(); + field_0xe44.OffTgSetBit(); + } static char* mCutNameList[2]; - static u8 mCutList[24]; + static cutFunc mCutList[2]; private: - /* 0x568 */ u8 field_0x568[0xe44 - 0x568]; + /* 0xE40 */ NPC_YAMIS_HIO_CLASS* mpHIO; /* 0xE44 */ dCcD_Cyl field_0xe44; - /* 0xF80 */ u8 field_0xf80; - /* 0xF81 */ u8 field_0xf81; - /* 0xF82 */ u8 field_0xf82[0xFCC - 0xF82]; + /* 0xF80 */ u8 mType; + /* 0xF81 */ s8 mVanish; + /* 0xF82 */ s8 field_0xf82; + /* 0xF83 */ u8 field_0xf83; + /* 0xF84 */ actionFunc mNextAction; + /* 0xF90 */ actionFunc mAction; + /* 0xF9C */ daNpcT_Path_c mPath; + /* 0xFC4 */ u8 field_0xfc4; + /* 0xFC8 */ int field_0xfc8; }; STATIC_ASSERT(sizeof(daNpc_yamiS_c) == 0xfcc); -class daNpc_yamiS_Param_c { -public: - /* 80B49644 */ ~daNpc_yamiS_Param_c(); - - static u8 const m[140]; -}; - - #endif /* D_A_NPC_YAMIS_H */ diff --git a/include/d/actor/d_a_npc_yamit.h b/include/d/actor/d_a_npc_yamit.h index b4da5fa772e..0ff9e7979b3 100644 --- a/include/d/actor/d_a_npc_yamit.h +++ b/include/d/actor/d_a_npc_yamit.h @@ -4,6 +4,33 @@ #include "d/actor/d_a_npc.h" #include "d/actor/d_a_tag_yami.h" +struct daNpc_yamiT_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; +}; + +class daNpc_yamiT_Param_c { +public: + /* 80B4CD38 */ virtual ~daNpc_yamiT_Param_c() {} + + static const daNpc_yamiT_HIOParam m; +}; + +#if DEBUG +class daNpc_yamiT_HIO_c : public mDoHIO_entry_c { +public: + daNpc_yamiT_HIO_c(); + + void listenPropertyEvent(const JORPropertyEvent*); + void genMessage(JORMContext*); + + daNpc_yamiT_HIOParam m; +}; + +#define NPC_YAMIT_HIO_CLASS daNpc_yamiT_HIO_c +#else +#define NPC_YAMIT_HIO_CLASS daNpc_yamiT_Param_c +#endif + /** * @ingroup actors-npcs * @class daNpc_yamiT_c @@ -12,81 +39,107 @@ * @details * */ -class daNpc_yamiT_c : public fopAc_ac_c { +class daNpc_yamiT_c : public daNpcT_c { public: + typedef BOOL (daNpc_yamiT_c::*cutFunc)(int); + typedef int (daNpc_yamiT_c::*actionFunc)(void*); + /* 80B49BEC */ ~daNpc_yamiT_c(); - /* 80B49D24 */ void create(); - /* 80B49FD8 */ void CreateHeap(); - /* 80B4A428 */ void Delete(); - /* 80B4A45C */ void Execute(); - /* 80B4A47C */ void _search_Tag(void*, void*); - /* 80B4A4E0 */ void Draw(); - /* 80B4A588 */ void createHeapCallBack(fopAc_ac_c*); - /* 80B4A5A8 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80B4A600 */ void getType(); - /* 80B4A638 */ void getFlowNodeNo(); - /* 80B4A69C */ void isDelete(); + /* 80B49D24 */ cPhs__Step create(); + /* 80B49FD8 */ int CreateHeap(); + /* 80B4A428 */ int Delete(); + /* 80B4A45C */ int Execute(); + /* 80B4A47C */ static void* _search_Tag(void*, void*); + /* 80B4A4E0 */ int Draw(); + /* 80B4A588 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80B4A5A8 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80B4A600 */ u8 getType(); + /* 80B4A638 */ u32 getFlowNodeNo(); + /* 80B4A69C */ BOOL isDelete(); /* 80B4A724 */ void reset(); /* 80B4A914 */ void afterJntAnm(int); /* 80B4A9A0 */ void setParam(); /* 80B4AAD0 */ void setAfterTalkMotion(); /* 80B4AB30 */ void srchActors(); - /* 80B4ABA0 */ void evtTalk(); - /* 80B4AC84 */ void evtCutProc(); + /* 80B4ABA0 */ BOOL evtTalk(); + /* 80B4AC84 */ BOOL evtCutProc(); /* 80B4AD4C */ void action(); /* 80B4AE38 */ void beforeMove(); /* 80B4AEB0 */ void setAttnPos(); /* 80B4B0DC */ void setCollision(); - /* 80B4B210 */ bool drawDbgInfo(); - /* 80B4B218 */ void evtEndProc(); + /* 80B4B210 */ int drawDbgInfo(); + /* 80B4B218 */ BOOL evtEndProc(); /* 80B4B294 */ void drawGhost(); - /* 80B4B300 */ void selectAction(); - /* 80B4B348 */ void chkAction(int (daNpc_yamiT_c::*)(void*)); - /* 80B4B374 */ void setAction(int (daNpc_yamiT_c::*)(void*)); - /* 80B4B41C */ void wait(void*); - /* 80B4B7D4 */ void talk(void*); - /* 80B4B9E0 */ void cutStopper(int); - /* 80B4BA74 */ void _cutStopper_Init(int const&); - /* 80B4BAAC */ void _cutStopper_Main(int const&); - /* 80B4CC38 */ daNpc_yamiT_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, - daNpcT_evtData_c const*, char**); - /* 80B4CCF8 */ u16 getEyeballMaterialNo(); - /* 80B4CD00 */ s32 getHeadJointNo(); - /* 80B4CD08 */ s32 getNeckJointNo(); - /* 80B4CD10 */ bool getBackboneJointNo(); - /* 80B4CD18 */ void checkChangeJoint(int); - /* 80B4CD28 */ void checkRemoveJoint(int); + /* 80B4B300 */ int selectAction(); + /* 80B4B348 */ BOOL chkAction(int (daNpc_yamiT_c::*)(void*)); + /* 80B4B374 */ int setAction(int (daNpc_yamiT_c::*)(void*)); + /* 80B4B41C */ int wait(void*); + /* 80B4B7D4 */ int talk(void*); + /* 80B4B9E0 */ BOOL cutStopper(int); + /* 80B4BA74 */ BOOL _cutStopper_Init(int const&); + /* 80B4BAAC */ BOOL _cutStopper_Main(int const&); + /* 80B4CC38 */ daNpc_yamiT_c( + daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, + daNpcT_motionAnmData_c const* i_motionAnmData, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, + int i_faceMotionStepNum, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, + daNpcT_evtData_c const* i_evtData, char** i_arcNames) + : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, + i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, + i_arcNames) {} + /* 80B4CCF8 */ u16 getEyeballMaterialNo() { return 1; } + /* 80B4CD00 */ s32 getHeadJointNo() { return 4; } + /* 80B4CD08 */ s32 getNeckJointNo() { return 3; } + /* 80B4CD10 */ s32 getBackboneJointNo() { return 1; } + /* 80B4CD18 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; } + /* 80B4CD28 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 6; } - void vanish_off() { - field_0xf81 = 0; + u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } + int getSwitchBitNo() { + u32 full_prm = fopAcM_GetParam(this); + return (full_prm >> 16) & 0xFF; + } + u8 _chk_TagPrm(fopAc_ac_c* i_tag) { return (fopAcM_GetParam(i_tag) & 0xFF) == 2; } + BOOL _is_vanish_prm() { + int reg_r31 = (fopAcM_GetParam(this) >> 28) != 0; + if (reg_r31 == 15) { + reg_r31 = 0; + } + + return reg_r31; } + BOOL is_vanish() { return mVanish; } + void vanish_on() { mVanish = 1; } + void vanish_off() { mVanish = 0; } void on_CoHit() { field_0xe44.OnCoSetBit(); field_0xe44.OnTgSetBit(); } + void off_CoHit() { + field_0xe44.OffCoSetBit(); + field_0xe44.OffTgSetBit(); + } + u8 _is_stopper_off() { return fopAcM_isSwitch(this, 0x3D) && fopAcM_isSwitch(this, 0x3E); } static char* mCutNameList[2]; - static u8 mCutList[24]; + static cutFunc mCutList[2]; private: - /* 0x568 */ u8 field_0x568[0xe44 - 0x568]; + /* 0xE40 */ NPC_YAMIT_HIO_CLASS* mpHIO; /* 0xE44 */ dCcD_Cyl field_0xe44; - /* 0xF80 */ u8 field_0xf80; - /* 0xF81 */ u8 field_0xf81; - /* 0xF82 */ u8 field_0xf82[0xFCC - 0xF82]; + /* 0xF80 */ u8 mType; + /* 0xF81 */ s8 mVanish; + /* 0xF82 */ s8 field_0xf82; + /* 0xF83 */ s8 field_0xf83; + /* 0xF84 */ daTagYami_c* mpTagYami; + /* 0xF84 */ actionFunc mNextAction; + /* 0xF90 */ actionFunc mAction; + /* 0xF9C */ daNpcT_Path_c mPath; + /* 0xFC4 */ u8 field_0xfc4; }; STATIC_ASSERT(sizeof(daNpc_yamiT_c) == 0xfcc); -class daNpc_yamiT_Param_c { -public: - /* 80B4CD38 */ ~daNpc_yamiT_Param_c(); - - static u8 const m[140]; -}; - - #endif /* D_A_NPC_YAMIT_H */ diff --git a/include/d/actor/d_a_tag_yami.h b/include/d/actor/d_a_tag_yami.h index 7e5b8650fdf..094a993285e 100644 --- a/include/d/actor/d_a_tag_yami.h +++ b/include/d/actor/d_a_tag_yami.h @@ -20,6 +20,8 @@ public: u8 get_MTagSw2() { return fopAcM_GetParamBit(this, 16, 8); } s32 get_prm() { return fopAcM_GetParam(this) & 0xff; } + int is_CoHit() { return mIsCoHit; } + void on_CoHit() { mCyl.OnCoSetBit(); mCoHitValid = 1; diff --git a/src/d/actor/d_a_npc_yamis.cpp b/src/d/actor/d_a_npc_yamis.cpp index 7b22a65d463..cf979f3aa1d 100644 --- a/src/d/actor/d_a_npc_yamis.cpp +++ b/src/d/actor/d_a_npc_yamis.cpp @@ -1,271 +1,44 @@ /** * @file d_a_npc_yamis.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_yamis.h" -#include "dol2asm.h" -// -// Forward References: -// +enum RES_Name { + /* 0x0 */ NONE, + /* 0x1 */ YAMIS, +}; -extern "C" void __dt__13daNpc_yamiS_cFv(); -extern "C" void create__13daNpc_yamiS_cFv(); -extern "C" void CreateHeap__13daNpc_yamiS_cFv(); -extern "C" void __dt__15J3DTevKColorAnmFv(); -extern "C" void __ct__15J3DTevKColorAnmFv(); -extern "C" void __dt__14J3DTevColorAnmFv(); -extern "C" void __ct__14J3DTevColorAnmFv(); -extern "C" void __dt__11J3DTexNoAnmFv(); -extern "C" void __ct__11J3DTexNoAnmFv(); -extern "C" void __dt__12J3DTexMtxAnmFv(); -extern "C" void __ct__12J3DTexMtxAnmFv(); -extern "C" void __dt__14J3DMatColorAnmFv(); -extern "C" void __ct__14J3DMatColorAnmFv(); -extern "C" void Delete__13daNpc_yamiS_cFv(); -extern "C" void Execute__13daNpc_yamiS_cFv(); -extern "C" void Draw__13daNpc_yamiS_cFv(); -extern "C" void createHeapCallBack__13daNpc_yamiS_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__13daNpc_yamiS_cFP8J3DJointi(); -extern "C" void getType__13daNpc_yamiS_cFv(); -extern "C" void getFlowNodeNo__13daNpc_yamiS_cFv(); -extern "C" void isDelete__13daNpc_yamiS_cFv(); -extern "C" void reset__13daNpc_yamiS_cFv(); -extern "C" void afterJntAnm__13daNpc_yamiS_cFi(); -extern "C" void setParam__13daNpc_yamiS_cFv(); -extern "C" void setAfterTalkMotion__13daNpc_yamiS_cFv(); -extern "C" void srchActors__13daNpc_yamiS_cFv(); -extern "C" void evtTalk__13daNpc_yamiS_cFv(); -extern "C" void evtCutProc__13daNpc_yamiS_cFv(); -extern "C" void action__13daNpc_yamiS_cFv(); -extern "C" void beforeMove__13daNpc_yamiS_cFv(); -extern "C" void setAttnPos__13daNpc_yamiS_cFv(); -extern "C" void setCollision__13daNpc_yamiS_cFv(); -extern "C" bool drawDbgInfo__13daNpc_yamiS_cFv(); -extern "C" void drawGhost__13daNpc_yamiS_cFv(); -extern "C" void selectAction__13daNpc_yamiS_cFv(); -extern "C" void chkAction__13daNpc_yamiS_cFM13daNpc_yamiS_cFPCvPvPv_i(); -extern "C" void setAction__13daNpc_yamiS_cFM13daNpc_yamiS_cFPCvPvPv_i(); -extern "C" void wait__13daNpc_yamiS_cFPv(); -extern "C" void talk__13daNpc_yamiS_cFPv(); -extern "C" void cutStopper__13daNpc_yamiS_cFi(); -extern "C" void _cutStopper_Init__13daNpc_yamiS_cFRCi(); -extern "C" void _cutStopper_Main__13daNpc_yamiS_cFRCi(); -extern "C" static void daNpc_yamiS_Create__FPv(); -extern "C" static void daNpc_yamiS_Delete__FPv(); -extern "C" static void daNpc_yamiS_Execute__FPv(); -extern "C" static void daNpc_yamiS_Draw__FPv(); -extern "C" static bool daNpc_yamiS_IsDelete__FPv(); -extern "C" void calc__11J3DTexNoAnmCFPUs(); -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 __dt__13daNpcT_Path_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -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" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs(); -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs(); -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi(); -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" bool checkChangeEvt__8daNpcT_cFv(); -extern "C" void afterMoved__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" bool afterSetMotionAnm__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_yamis_cpp(); -extern "C" void -__ct__13daNpc_yamiS_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" u16 getEyeballMaterialNo__13daNpc_yamiS_cFv(); -extern "C" s32 getHeadJointNo__13daNpc_yamiS_cFv(); -extern "C" s32 getNeckJointNo__13daNpc_yamiS_cFv(); -extern "C" bool getBackboneJointNo__13daNpc_yamiS_cFv(); -extern "C" void checkChangeJoint__13daNpc_yamiS_cFi(); -extern "C" void checkRemoveJoint__13daNpc_yamiS_cFi(); -extern "C" void evtEndProc__13daNpc_yamiS_cFv(); -extern "C" void __dt__19daNpc_yamiS_Param_cFv(); -extern "C" static void func_80B4968C(); -extern "C" static void func_80B49694(); -extern "C" u8 const m__19daNpc_yamiS_Param_c[140]; -extern "C" extern char const* const d_a_npc_yamis__stringBase0; -extern "C" void* mCutNameList__13daNpc_yamiS_c[2]; -extern "C" u8 mCutList__13daNpc_yamiS_c[24]; +enum FaceMotion { + /* 0x0 */ FACE_TALKE_A, + /* 0x1 */ FACE_NONE, +}; -// -// External References: -// +enum Motion { + /* 0x0 */ MOT_WAIT_A, + /* 0x1 */ MOT_STEP, +}; -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -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_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -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 getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -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 __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -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 getActorP__18daNpcT_ActorMngr_cFv(); -extern "C" void initialize__15daNpcT_MatAnm_cFv(); -extern "C" void initialize__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void initialize__13daNpcT_Path_cFv(); -extern "C" void setPathInfo__13daNpcT_Path_cFUcScUc(); -extern "C" void initialize__15daNpcT_JntAnm_cFv(); -extern "C" void setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz(); -extern "C" void calcJntRad__15daNpcT_JntAnm_cFfff(); -extern "C" void calc__19daNpcT_DmgStagger_cFi(); -extern "C" void tgHitCallBack__8daNpcT_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -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 clrParam__8daNpcT_cFv(); -extern "C" void setFaceMotionAnm__8daNpcT_cFib(); -extern "C" void setMotionAnm__8daNpcT_cFifi(); -extern "C" void setAngle__8daNpcT_cFs(); -extern "C" void chkActorInSight__8daNpcT_cFP10fopAc_ac_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 daNpcT_chkEvtBit__FUl(); -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 Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -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 SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -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 getTexNo__16J3DAnmTexPatternCFUsPUs(); -extern "C" void initialize__14J3DMaterialAnmFv(); -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_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" u8 mCcDCyl__8daNpcT_c[68]; -extern "C" extern void* __vt__8daNpcT_c[49]; -extern "C" extern void* __vt__15daNpcT_MatAnm_c[4 + 1 /* padding */]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" extern void* __vt__14J3DMaterialAnm[4]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); +#if DEBUG +daNpc_yamiS_HIO_c::daNpc_yamiS_HIO_c() { + m = daNpc_yamiS_Param_c::m; +} -// -// Declarations: -// +void daNpc_yamiS_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) { + // TODO +} -/* ############################################################################################## */ -/* 80B49790-80B49790 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80B49790 = ""; -SECTION_DEAD static char const* const stringBase_80B49791 = "STOPPER"; -SECTION_DEAD static char const* const stringBase_80B49799 = "yamiS"; -#pragma pop +void daNpc_yamiS_HIO_c::genMessage(JORMContext* ctext) { + // TODO +} +#endif /* 80B497C8-80B497D0 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[8] = { - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, +static int l_bmdData[1][2] = { + {12, 1}, }; /* 80B497D0-80B497E0 -00001 0010+00 0/1 0/0 0/0 .data l_evtList */ @@ -281,58 +54,36 @@ static char* l_resNameList[2] = { }; /* 80B497E8-80B497EC 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}; /* 80B497EC-80B497F8 -00001 000C+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList[3] = { - (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, +static s8* l_loadResPtrnList[3] = { + l_loadResPtrn0, + l_loadResPtrn0, + l_loadResPtrn0, }; /* 80B497F8-80B49830 000050 0038+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[56] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[2] = { + {-1, 0, 0, 18, 2, 1, 1}, + {7, 0, 1, 18, 2, 1, 1}, }; -#pragma pop /* 80B49830-80B49868 000088 0038+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[56] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, +static daNpcT_motionAnmData_c l_motionAnmData[2] = { + {9, 2, 1, 15, 0, 1, 1, 0}, + {8, 0, 1, 15, 0, 1, 1, 0}, }; -#pragma pop /* 80B49868-80B49888 0000C0 0020+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[32] = { - 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[8] = { + {1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80B49888-80B498A8 0000E0 0020+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[32] = { - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[8] = { + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80B498A8-80B498B0 -00001 0008+00 1/1 0/0 0/0 .data mCutNameList__13daNpc_yamiS_c */ char* daNpc_yamiS_c::mCutNameList[2] = { @@ -340,916 +91,709 @@ char* daNpc_yamiS_c::mCutNameList[2] = { "STOPPER", }; -/* 80B498B0-80B498BC -00001 000C+00 1/1 0/0 0/0 .data @3815 */ -SECTION_DATA static void* lit_3815[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutStopper__13daNpc_yamiS_cFi, -}; - /* 80B498BC-80B498D4 000114 0018+00 2/2 0/0 0/0 .data mCutList__13daNpc_yamiS_c */ -SECTION_DATA u8 daNpc_yamiS_c::mCutList[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80B498D4-80B498E0 -00001 000C+00 1/1 0/0 0/0 .data @4472 */ -SECTION_DATA static void* lit_4472[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpc_yamiS_cFPv, -}; - -/* 80B498E0-80B498EC -00001 000C+00 1/1 0/0 0/0 .data @4588 */ -SECTION_DATA static void* lit_4588[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_yamiS_cFPv, -}; - -/* 80B498EC-80B498F8 -00001 000C+00 1/1 0/0 0/0 .data @4596 */ -SECTION_DATA static void* lit_4596[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_yamiS_cFPv, -}; - -/* 80B498F8-80B49904 -00001 000C+00 1/1 0/0 0/0 .data @4821 */ -SECTION_DATA static void* lit_4821[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpc_yamiS_cFPv, -}; - -/* 80B49904-80B49924 -00001 0020+00 1/0 0/0 0/0 .data daNpc_yamiS_MethodTable */ -static actor_method_class daNpc_yamiS_MethodTable = { - (process_method_func)daNpc_yamiS_Create__FPv, - (process_method_func)daNpc_yamiS_Delete__FPv, - (process_method_func)daNpc_yamiS_Execute__FPv, - (process_method_func)daNpc_yamiS_IsDelete__FPv, - (process_method_func)daNpc_yamiS_Draw__FPv, -}; - -/* 80B49924-80B49954 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_YAMIS */ -extern actor_process_profile_definition g_profile_NPC_YAMIS = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_YAMIS, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_yamiS_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 317, // mPriority - &daNpc_yamiS_MethodTable, // sub_method - 0x00044107, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80B49954-80B49960 0001AC 000C+00 2/2 0/0 0/0 .data __vt__11J3DTexNoAnm */ -SECTION_DATA extern void* __vt__11J3DTexNoAnm[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)calc__11J3DTexNoAnmCFPUs, -}; - -/* 80B49960-80B4996C 0001B8 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, -}; - -/* 80B4996C-80B49990 0001C4 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_80B49694, - (void*)NULL, - (void*)NULL, - (void*)func_80B4968C, -}; - -/* 80B49990-80B4999C 0001E8 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, -}; - -/* 80B4999C-80B499A8 0001F4 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, -}; - -/* 80B499A8-80B499B4 000200 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, -}; - -/* 80B499B4-80B499C0 00020C 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, -}; - -/* 80B499C0-80B499CC 000218 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, -}; - -/* 80B499CC-80B499D8 000224 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, -}; - -/* 80B499D8-80B499E4 000230 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80B499E4-80B499F0 00023C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80B499F0-80B499FC 000248 000C+00 3/3 0/0 0/0 .data __vt__13daNpcT_Path_c */ -SECTION_DATA extern void* __vt__13daNpcT_Path_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpcT_Path_cFv, -}; - -/* 80B499FC-80B49AC0 000254 00C4+00 2/2 0/0 0/0 .data __vt__13daNpc_yamiS_c */ -SECTION_DATA extern void* __vt__13daNpc_yamiS_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpc_yamiS_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__8daNpcT_cFi, - (void*)checkChangeJoint__13daNpc_yamiS_cFi, - (void*)checkRemoveJoint__13daNpc_yamiS_cFi, - (void*)getBackboneJointNo__13daNpc_yamiS_cFv, - (void*)getNeckJointNo__13daNpc_yamiS_cFv, - (void*)getHeadJointNo__13daNpc_yamiS_cFv, - (void*)getFootLJointNo__8daNpcT_cFv, - (void*)getFootRJointNo__8daNpcT_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__13daNpc_yamiS_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__13daNpc_yamiS_cFi, - (void*)setParam__13daNpc_yamiS_cFv, - (void*)checkChangeEvt__8daNpcT_cFv, - (void*)evtTalk__13daNpc_yamiS_cFv, - (void*)evtEndProc__13daNpc_yamiS_cFv, - (void*)evtCutProc__13daNpc_yamiS_cFv, - (void*)setAfterTalkMotion__13daNpc_yamiS_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__13daNpc_yamiS_cFv, - (void*)beforeMove__13daNpc_yamiS_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__13daNpc_yamiS_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__13daNpc_yamiS_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__13daNpc_yamiS_cFv, - (void*)drawOtherMdl__8daNpcT_cFv, - (void*)drawGhost__13daNpc_yamiS_cFv, - (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi, - (void*)afterSetMotionAnm__8daNpcT_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, +daNpc_yamiS_c::cutFunc daNpc_yamiS_c::mCutList[2] = { + NULL, + &daNpc_yamiS_c::cutStopper, }; /* 80B4656C-80B466A4 0000EC 0138+00 1/0 0/0 0/0 .text __dt__13daNpc_yamiS_cFv */ daNpc_yamiS_c::~daNpc_yamiS_c() { - // NONMATCHING + if (heap != NULL) { + mpMorf[0]->stopZelAnime(); + } + deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList); } -/* ############################################################################################## */ /* 80B496B0-80B4973C 000000 008C+00 7/7 0/0 0/0 .rodata m__19daNpc_yamiS_Param_c */ -SECTION_RODATA u8 const daNpc_yamiS_Param_c::m[140] = { - 0x43, 0x0C, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, - 0x42, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 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, +const daNpc_yamiS_HIOParam daNpc_yamiS_Param_c::m = { + 140.0f, // attention_offset + -3.0f, // gravity + 1.0f, // scale + 400.0f, // real_shadow_size + 255.0f, // weight + 120.0f, // height + 35.0f, // knee_length + 30.0f, // width + 0.0f, // body_angleX_max + 0.0f, // body_angleX_min + 10.0f, // body_angleY_max + -10.0f, // body_angleY_min + 30.0f, // head_angleX_max + -10.0f, // head_angleX_min + 45.0f, // head_angleY_max + -45.0f, // head_angleY_min + 0.6f, // neck_rotation_ratio + 12.0f, // morf_frame + 3, // talk_distance + 6, // talk_angle + 5, // attention_distance + 6, // attention_angle + 110.0f, // fov + 0.0f, // search_distance + 0.0f, // search_height + 0.0f, // search_depth + 60, // attention_time + 8, // damage_time + 0, // face_expression + 0, // motion + 0, // look_mode + 0, // debug_mode_ON + 0, // debug_info_ON + 4.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 }; -COMPILER_STRIP_GATE(0x80B496B0, &daNpc_yamiS_Param_c::m); -/* 80B4973C-80B49740 00008C 0004+00 0/1 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = 3.0f; -COMPILER_STRIP_GATE(0x80B4973C, &lit_4028); -#pragma pop - -/* 80B49740-80B49744 000090 0004+00 0/1 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = -300.0f; -COMPILER_STRIP_GATE(0x80B49740, &lit_4029); -#pragma pop - -/* 80B49744-80B49748 000094 0004+00 0/1 0/0 0/0 .rodata @4030 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4030 = -50.0f; -COMPILER_STRIP_GATE(0x80B49744, &lit_4030); -#pragma pop - -/* 80B49748-80B4974C 000098 0004+00 0/1 0/0 0/0 .rodata @4031 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4031 = 300.0f; -COMPILER_STRIP_GATE(0x80B49748, &lit_4031); -#pragma pop - -/* 80B4974C-80B49750 00009C 0004+00 0/1 0/0 0/0 .rodata @4032 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4032 = 450.0f; -COMPILER_STRIP_GATE(0x80B4974C, &lit_4032); -#pragma pop - -/* 80B49750-80B49754 0000A0 0004+00 0/1 0/0 0/0 .rodata @4033 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4033 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x80B49750, &lit_4033); -#pragma pop +/* 80B49AE4-80B49AE8 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +static NPC_YAMIS_HIO_CLASS l_HIO; /* 80B466A4-80B46958 000224 02B4+00 1/1 0/0 0/0 .text create__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::create() { - // NONMATCHING +cPhs__Step daNpc_yamiS_c::create() { + daNpcT_ct(this, daNpc_yamiS_c, l_faceMotionAnmData, l_motionAnmData, l_faceMotionSequenceData, + 4, l_motionSequenceData, 4, l_evtList, l_resNameList); + + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = false; + + cPhs__Step phase = (cPhs__Step)loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList); + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x3540)) { + return cPhs_ERROR_e; + } + + if (isDelete()) { + return cPhs_ERROR_e; + } + + J3DModelData* model_data = mpMorf[0]->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeFar(this, 3.0f); + fopAcM_setCullSizeBox(this, -300.0f, -50.0f, -300.0f, 300.0f, 450.0f, 300.0f); + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_0x8000000); + + 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)); + mCcStts.Init(mpHIO->m.common.weight, 0, this); + + field_0xe44.Set(mCcDCyl); + field_0xe44.SetStts(&mCcStts); + field_0xe44.SetTgHitCallback(tgHitCallBack); + + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + + if (mGroundH != -G_CM3D_F_INF) { + setEnvTevColor(); + setRoomNo(); + } + + field_0xfc8 = 0; + reset(); + mCreating = true; + Execute(); + mCreating = false; + } + + return phase; } -/* ############################################################################################## */ -/* 80B49754-80B49758 0000A4 0004+00 7/12 0/0 0/0 .rodata @4194 */ -SECTION_RODATA static u8 const lit_4194[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80B49754, &lit_4194); - -/* 80B49758-80B4975C 0000A8 0004+00 0/2 0/0 0/0 .rodata @4195 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4195 = 65536.0f; -COMPILER_STRIP_GATE(0x80B49758, &lit_4195); -#pragma pop - -/* 80B4975C-80B49760 0000AC 0004+00 0/3 0/0 0/0 .rodata @4196 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4196 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80B4975C, &lit_4196); -#pragma pop - -/* 80B49760-80B49764 0000B0 0004+00 2/5 0/0 0/0 .rodata @4345 */ -SECTION_RODATA static f32 const lit_4345 = 1.0f; -COMPILER_STRIP_GATE(0x80B49760, &lit_4345); - /* 80B46958-80B46BEC 0004D8 0294+00 1/1 0/0 0/0 .text CreateHeap__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::CreateHeap() { - // NONMATCHING -} +int daNpc_yamiS_c::CreateHeap() { + J3DModelData* mdlData_p = NULL; + J3DModel* model = NULL; + int bmdIdx = mTwilight == true ? NONE : NONE; -/* 80B46BEC-80B46C28 00076C 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + int res_name_idx = l_bmdData[bmdIdx][1]; + int index = l_bmdData[bmdIdx][0]; + mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNameList[res_name_idx], index); -/* 80B46C28-80B46C40 0007A8 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + u32 sp_0x1C = 0x11020284; + mpMorf[0] = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, + sp_0x1C); + if (mpMorf[0] != NULL && mpMorf[0]->getModel() == NULL) { + mpMorf[0]->stopZelAnime(); + mpMorf[0] = NULL; + } -/* 80B46C40-80B46C7C 0007C0 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + if (mpMorf[0] == NULL) { + return 0; + } -/* 80B46C7C-80B46C94 0007FC 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + model = mpMorf[0]->getModel(); + for (u16 i = 0; i < mdlData_p->getJointNum(); i++) { + mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } + model->setUserArea((uintptr_t)this); -/* 80B46C94-80B46CDC 000814 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} + mpMatAnm[0] = new daNpcT_MatAnm_c(); + if (mpMatAnm[0] == NULL) { + return 0; + } -/* 80B46CDC-80B46D00 00085C 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + if (setFaceMotionAnm(1, false) && setMotionAnm(0, 0.0f, FALSE)) { + return 1; + } -/* 80B46D00-80B46D3C 000880 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80B46D3C-80B46D54 0008BC 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80B46D54-80B46D90 0008D4 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} - -/* 80B46D90-80B46DA8 000910 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + return 0; } /* 80B46DA8-80B46DDC 000928 0034+00 1/1 0/0 0/0 .text Delete__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::Delete() { - // NONMATCHING +int daNpc_yamiS_c::Delete() { + fpc_ProcID reg_r30 = fopAcM_GetID(this); + this->~daNpc_yamiS_c(); + return 1; } /* 80B46DDC-80B46DFC 00095C 0020+00 2/2 0/0 0/0 .text Execute__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::Execute() { - // NONMATCHING +int daNpc_yamiS_c::Execute() { + return execute(); } /* 80B46DFC-80B46EA4 00097C 00A8+00 1/1 0/0 0/0 .text Draw__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::Draw() { - // NONMATCHING +int daNpc_yamiS_c::Draw() { + if (is_vanish()) { + return 0; + } + + if (mpMatAnm[0] != NULL) { + J3DModelData* mdlData_p = mpMorf[0]->getModel()->getModelData(); + mdlData_p->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + + return draw(FALSE, FALSE, mRealShadowSize, NULL, 0.0f, TRUE, FALSE, FALSE); } /* 80B46EA4-80B46EC4 000A24 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__13daNpc_yamiS_cFP10fopAc_ac_c */ -void daNpc_yamiS_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daNpc_yamiS_c::createHeapCallBack(fopAc_ac_c* i_this) { + daNpc_yamiS_c* a_this = (daNpc_yamiS_c*)i_this; + return a_this->CreateHeap(); } /* 80B46EC4-80B46F1C 000A44 0058+00 1/1 0/0 0/0 .text * ctrlJointCallBack__13daNpc_yamiS_cFP8J3DJointi */ -void daNpc_yamiS_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daNpc_yamiS_c::ctrlJointCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = j3dSys.getModel(); + daNpc_yamiS_c* i_this = (daNpc_yamiS_c*)model->getUserArea(); + + if (i_this != NULL) { + i_this->ctrlJoint(i_joint, model); + } + } + + return 1; } /* 80B46F1C-80B46F54 000A9C 0038+00 1/1 0/0 0/0 .text getType__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::getType() { - // NONMATCHING +u8 daNpc_yamiS_c::getType() { + u8 prm = fopAcM_GetParam(this); + switch (prm & 0xFF) { + case 0: + return 0; + + case 1: + return 1; + + default: + return 2; + } } /* 80B46F54-80B46FB8 000AD4 0064+00 2/2 0/0 0/0 .text getFlowNodeNo__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::getFlowNodeNo() { - // NONMATCHING +u32 daNpc_yamiS_c::getFlowNodeNo() { + u32 rv = -1; + + /* dSv_event_flag_c::F_0570 - Palace of Twilight - Cleared Palace of Twilight */ + if (daNpcT_chkEvtBit(570)) { + rv = 0x326; + } else { + u16 nodeNo = home.angle.x; + if (nodeNo != 0xFFFF) { + rv = nodeNo; + } + } + + return rv; } /* 80B46FB8-80B47040 000B38 0088+00 1/1 0/0 0/0 .text isDelete__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::isDelete() { - // NONMATCHING +BOOL daNpc_yamiS_c::isDelete() { + BOOL rv = FALSE; + + switch (mType) { + case 0: + case 1: + /* dSv_event_flag_c::F_0570 - Palace of Twilight - Cleared Palace of Twilight */ + if (!daNpcT_chkEvtBit(570)) { + if (!fopAcM_isSwitch(this, getSwitchBitNo())) { + rv = TRUE; + } + } + break; + } + + return rv; } /* 80B47040-80B47254 000BC0 0214+00 1/1 0/0 0/0 .text reset__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::reset() { - // NONMATCHING + initialize(); + + memset(&mNextAction, 0, (u8*)&field_0xfc4 - (u8*)&mNextAction); + + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + + if (getPathID() != 0xFF) { + mPath.initialize(); + mPath.setPathInfo(getPathID(), fopAcM_GetRoomNo(this), 0); + } + + if (_is_vanish_prm()) { + vanish_on(); + off_CoHit(); + } else { + vanish_off(); + on_CoHit(); + } + + if (mType == 1) { + fopAcM_offSwitch(this, 2); + } + + setAngle(home.angle.y); + setAction(&daNpc_yamiS_c::wait); } /* 80B47254-80B472E0 000DD4 008C+00 1/0 0/0 0/0 .text afterJntAnm__13daNpc_yamiS_cFi */ -void daNpc_yamiS_c::afterJntAnm(int param_0) { - // NONMATCHING +void daNpc_yamiS_c::afterJntAnm(int param_1) { + if (param_1 == 2) { + mDoMtx_stack_c::YrotM(mStagger.getAngleZ(1)); + mDoMtx_stack_c::ZrotM(-mStagger.getAngleX(1)); + } else if (param_1 == 4) { + mDoMtx_stack_c::YrotM(-mStagger.getAngleZ(0)); + mDoMtx_stack_c::ZrotM(mStagger.getAngleX(0)); + } } /* 80B472E0-80B473DC 000E60 00FC+00 1/0 0/0 0/0 .text setParam__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::setParam() { - // NONMATCHING -} + selectAction(); + srchActors(); -/* ############################################################################################## */ -/* 80B49764-80B49768 0000B4 0004+00 1/2 0/0 0/0 .rodata @4577 */ -SECTION_RODATA static f32 const lit_4577 = -1.0f; -COMPILER_STRIP_GATE(0x80B49764, &lit_4577); + 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 = 0; + + 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; + mAttnFovY = mpHIO->m.common.fov; + 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; +} /* 80B473DC-80B4743C 000F5C 0060+00 1/0 0/0 0/0 .text setAfterTalkMotion__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::setAfterTalkMotion() { - // NONMATCHING + int face = FACE_TALKE_A; + mFaceMotionSeqMngr.getNo(); + face = FACE_NONE; + mFaceMotionSeqMngr.setNo(face, -1.0f, FALSE, 0); } /* 80B4743C-80B47440 000FBC 0004+00 1/1 0/0 0/0 .text srchActors__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::srchActors() { - /* empty function */ -} +void daNpc_yamiS_c::srchActors() {} /* 80B47440-80B47524 000FC0 00E4+00 1/0 0/0 0/0 .text evtTalk__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::evtTalk() { - // NONMATCHING +BOOL daNpc_yamiS_c::evtTalk() { + if (chkAction(&daNpc_yamiS_c::talk)) { + (this->*mAction)(NULL); + } else if (dComIfGp_event_chkTalkXY() == 0 || dComIfGp_evmng_ChkPresentEnd()) { + setAction(&daNpc_yamiS_c::talk); + } + + return TRUE; } /* 80B47524-80B475EC 0010A4 00C8+00 1/0 0/0 0/0 .text evtCutProc__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_yamiS_c::evtCutProc() { + int rv = FALSE; + + int staffId = dComIfGp_getEventManager().getMyStaffId("yamiS", this, -1); + if (staffId != -1) { + mStaffId = staffId; + int actIdx = dComIfGp_getEventManager().getMyActIdx(mStaffId, mCutNameList, 2, 0, 0); + if ((this->*mCutList[actIdx])(mStaffId)) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + + rv = TRUE; + } + + return rv; } /* 80B475EC-80B476D8 00116C 00EC+00 1/0 0/0 0/0 .text action__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::action() { - // NONMATCHING + if (mStagger.checkRebirth()) { + mStagger.initialize(); + mMode = 1; + } + + if (mNextAction) { + if (mAction == mNextAction) { + (this->*mAction)(NULL); + } else { + setAction(mNextAction); + } + } } /* 80B476D8-80B47750 001258 0078+00 1/0 0/0 0/0 .text beforeMove__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::beforeMove() { - // NONMATCHING + if (checkHide() || mNoDraw) { + attention_info.flags = 0; + } } -/* ############################################################################################## */ -/* 80B49768-80B4976C 0000B8 0004+00 0/1 0/0 0/0 .rodata @4697 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4697 = -30.0f; -COMPILER_STRIP_GATE(0x80B49768, &lit_4697); -#pragma pop - -/* 80B4976C-80B49770 0000BC 0004+00 0/1 0/0 0/0 .rodata @4698 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4698 = 0x38C90FDB; -COMPILER_STRIP_GATE(0x80B4976C, &lit_4698); -#pragma pop - -/* 80B49770-80B49778 0000C0 0008+00 1/3 0/0 0/0 .rodata @4700 */ -SECTION_RODATA static u8 const lit_4700[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B49770, &lit_4700); - /* 80B47750-80B4797C 0012D0 022C+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::setAttnPos() { - // NONMATCHING + cXyz work(-30.0f, 0.0f, 0.0f); + + mStagger.calc(FALSE); + f32 rad = cM_s2rad(mCurAngle.y - field_0xd7e.y); + mJntAnm.setParam(this, mpMorf[0]->getModel(), &work, getBackboneJointNo(), getNeckJointNo(), + getHeadJointNo(), mpHIO->m.common.body_angleX_min, + mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min, + mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min, + mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min, + mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio, rad, + NULL); + mJntAnm.calcJntRad(0.2f, 1.0f, rad); + setMtx(); + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo())); + mDoMtx_stack_c::multVec(&work, &eyePos); + mJntAnm.setEyeAngleX(eyePos, 1.0f, 0); + mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, TRUE, 1.0f, 0); + + attention_info.position = current.pos; + attention_info.position.y += mpHIO->m.common.attention_offset; } /* 80B4797C-80B47AE8 0014FC 016C+00 1/0 0/0 0/0 .text setCollision__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::setCollision() { - // NONMATCHING + cXyz work; + u32 tgType = 0xD8FBFDFF; + u32 tgSPrm = 31; + + if (!mHide) { + if (dComIfGp_event_runCheck()) { + mJntAnm.lookNone(0); + tgType = 0; + tgSPrm = 0; + } else if (mTwilight) { + tgType = 0; + tgSPrm = 0; + } else if (mStagger.checkStagger()) { + tgType = 0; + tgSPrm = 0; + } + + f32 cyl_h = mCylH; + f32 wall_r = mWallR; + work = current.pos; + + field_0xe44.SetCoSPrm(0x79); + field_0xe44.SetTgType(tgType); + field_0xe44.SetTgSPrm(tgSPrm); + field_0xe44.OnTgNoHitMark(); + field_0xe44.SetH(cyl_h); + field_0xe44.SetR(wall_r); + field_0xe44.SetC(work); + dComIfG_Ccsp()->Set(&field_0xe44); + } + + field_0xe44.ClrCoHit(); + field_0xe44.ClrTgHit(); } /* 80B47AE8-80B47AF0 001668 0008+00 1/0 0/0 0/0 .text drawDbgInfo__13daNpc_yamiS_cFv */ -bool daNpc_yamiS_c::drawDbgInfo() { - return false; +int daNpc_yamiS_c::drawDbgInfo() { + return 0; } /* 80B47AF0-80B47B5C 001670 006C+00 1/0 0/0 0/0 .text drawGhost__13daNpc_yamiS_cFv */ void daNpc_yamiS_c::drawGhost() { - // NONMATCHING + J3DModel* model = mpMorf[0]->getModel(); + g_env_light.settingTevStruct(3, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + mpMorf[0]->entryDL(); } /* 80B47B5C-80B47BA4 0016DC 0048+00 1/1 0/0 0/0 .text selectAction__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::selectAction() { - // NONMATCHING +int daNpc_yamiS_c::selectAction() { + mNextAction = NULL; + mNextAction = &daNpc_yamiS_c::wait; + return 1; } /* 80B47BA4-80B47BD0 001724 002C+00 1/1 0/0 0/0 .text * chkAction__13daNpc_yamiS_cFM13daNpc_yamiS_cFPCvPvPv_i */ -void daNpc_yamiS_c::chkAction(int (daNpc_yamiS_c::*param_0)(void*)) { - // NONMATCHING +BOOL daNpc_yamiS_c::chkAction(actionFunc action) { + return mAction == action; } /* 80B47BD0-80B47C78 001750 00A8+00 3/3 0/0 0/0 .text * setAction__13daNpc_yamiS_cFM13daNpc_yamiS_cFPCvPvPv_i */ -void daNpc_yamiS_c::setAction(int (daNpc_yamiS_c::*param_0)(void*)) { - // NONMATCHING +int daNpc_yamiS_c::setAction(actionFunc action) { + mMode = 3; + + if (mAction) { + (this->*mAction)(NULL); + } + + mMode = 0; + + mAction = action; + if (mAction) { + (this->*mAction)(NULL); + } + + return 1; } /* 80B47C78-80B47F50 0017F8 02D8+00 2/0 0/0 0/0 .text wait__13daNpc_yamiS_cFPv */ -void daNpc_yamiS_c::wait(void* param_0) { - // NONMATCHING +int daNpc_yamiS_c::wait(void* param_1) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + mFaceMotionSeqMngr.setNo(FACE_NONE, -1.0f, FALSE, 0); + mMotionSeqMngr.setNo(MOT_WAIT_A, -1.0f, FALSE, 0); + field_0xf82 = 0; + mMode = 2; + } + // fallthrough + case 2: + if (!mStagger.checkStagger()) { + if (mPlayerActorMngr.getActorP() != NULL && !mTwilight) { + mJntAnm.lookNone(0); + + if (chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) { + mJntAnm.lookPlayer(0); + + if (field_0xf82 == 0 && !is_vanish()) { + cXyz pos(current.pos); + Z2GetAudioMgr()->seStart(Z2SE_YAMI_MURMUR_S, &pos, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + field_0xf82 = 1; + } + } + + if (!srchPlayerActor()) { + field_0xf82 = 0; + + if (home.angle.y == mCurAngle.y) { + mMode = 1; + } + } + } else { + mJntAnm.lookNone(0); + field_0xf82 = 0; + + if (home.angle.y != mCurAngle.y) { + if (field_0xe34 == 0) { + setAngle(home.angle.y); + mMode = 1; + } else if (step(home.angle.y, 1, 1, 15, 0)) { + mMode = 1; + } + + attention_info.flags = 0; + } else { + srchPlayerActor(); + } + } + } + break; + case 3: + break; + } + + return 1; } /* 80B47F50-80B4815C 001AD0 020C+00 2/0 0/0 0/0 .text talk__13daNpc_yamiS_cFPv */ -void daNpc_yamiS_c::talk(void* param_0) { - // NONMATCHING +int daNpc_yamiS_c::talk(void* param_1) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + initTalk(mFlowNodeNo, NULL); + + if (checkStep()) { + mStepMode = 0; + } + + mMode = 2; + } + // fallthrough + case 2: + if (!mStagger.checkStagger()) { + if (mTwilight || mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, FALSE, NULL, FALSE)) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = 3; + } + + mJntAnm.lookPlayer(0); + + if (mTwilight) { + mJntAnm.lookNone(0); + } + } else { + mJntAnm.lookPlayer(0); + step(fopAcM_searchPlayerAngleY(this), 1, 1, 15, 0); + } + } + break; + case 3: + mFlowNodeNo = getFlowNodeNo(); + break; + } + + return 0; } -/* ############################################################################################## */ -/* 80B49790-80B49790 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80B4979F = "cutId"; -#pragma pop - /* 80B4815C-80B481F0 001CDC 0094+00 1/0 0/0 0/0 .text cutStopper__13daNpc_yamiS_cFi */ -void daNpc_yamiS_c::cutStopper(int param_0) { - // NONMATCHING +BOOL daNpc_yamiS_c::cutStopper(int i_cutIndex) { + int* cutId = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "cutId"); + if (cutId == NULL) { + return TRUE; + } + + if (dComIfGp_getEventManager().getIsAddvance(i_cutIndex)) { + _cutStopper_Init(*cutId); + } + + return _cutStopper_Main(*cutId); } /* 80B481F0-80B48238 001D70 0048+00 1/1 0/0 0/0 .text _cutStopper_Init__13daNpc_yamiS_cFRCi */ -void daNpc_yamiS_c::_cutStopper_Init(int const& param_0) { - // NONMATCHING +BOOL daNpc_yamiS_c::_cutStopper_Init(int const& i_cutId) { + switch (i_cutId) { + case 10: + break; + + case 20: + initTalk(0x321, NULL); + break; + } + return TRUE; } /* 80B48238-80B48364 001DB8 012C+00 1/1 0/0 0/0 .text _cutStopper_Main__13daNpc_yamiS_cFRCi */ -void daNpc_yamiS_c::_cutStopper_Main(int const& param_0) { - // NONMATCHING +BOOL daNpc_yamiS_c::_cutStopper_Main(int const& i_cutId) { + BOOL rv = FALSE; + + switch (i_cutId) { + case 10: { + cXyz work(*fopAcM_GetPosition_p(daPy_getPlayerActorClass())); + int iVar1 = cLib_chaseAngleS(&mCurAngle.y, cLib_targetAngleY(¤t.pos, &work), 0x600); + current.angle.y = mCurAngle.y; + shape_angle.y = mCurAngle.y; + + if (iVar1 != 0) { + mJntAnm.lookPlayer(0); + rv = TRUE; + } + break; + } + + case 20: + if (talkProc(NULL, FALSE, NULL, FALSE)) { + daPy_getPlayerActorClass()->changeDemoMoveAngle( + fopAcM_searchPlayerAngleY(daPy_getPlayerActorClass())); + rv = TRUE; + } + break; + } + + return rv; } /* 80B48364-80B48384 001EE4 0020+00 1/0 0/0 0/0 .text daNpc_yamiS_Create__FPv */ -static void daNpc_yamiS_Create(void* param_0) { - // NONMATCHING +static int daNpc_yamiS_Create(void* i_this) { + return ((daNpc_yamiS_c*)i_this)->create(); } /* 80B48384-80B483A4 001F04 0020+00 1/0 0/0 0/0 .text daNpc_yamiS_Delete__FPv */ -static void daNpc_yamiS_Delete(void* param_0) { - // NONMATCHING +static int daNpc_yamiS_Delete(void* i_this) { + return ((daNpc_yamiS_c*)i_this)->Delete(); } /* 80B483A4-80B483C4 001F24 0020+00 1/0 0/0 0/0 .text daNpc_yamiS_Execute__FPv */ -static void daNpc_yamiS_Execute(void* param_0) { - // NONMATCHING +static int daNpc_yamiS_Execute(void* i_this) { + return ((daNpc_yamiS_c*)i_this)->Execute(); } /* 80B483C4-80B483E4 001F44 0020+00 1/0 0/0 0/0 .text daNpc_yamiS_Draw__FPv */ -static void daNpc_yamiS_Draw(void* param_0) { - // NONMATCHING +static int daNpc_yamiS_Draw(void* i_this) { + return ((daNpc_yamiS_c*)i_this)->Draw(); } /* 80B483E4-80B483EC 001F64 0008+00 1/0 0/0 0/0 .text daNpc_yamiS_IsDelete__FPv */ -static bool daNpc_yamiS_IsDelete(void* param_0) { - return true; +static int daNpc_yamiS_IsDelete(void* i_this) { + return 1; } -/* 80B483EC-80B4841C 001F6C 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* 80B4841C-80B48464 001F9C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80B48464-80B487EC 001FE4 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80B487EC-80B48828 00236C 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80B48828-80B48864 0023A8 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80B48864-80B488AC 0023E4 0048+00 1/0 0/0 0/0 .text __dt__13daNpcT_Path_cFv */ -// daNpcT_Path_c::~daNpcT_Path_c() { -extern "C" void __dt__13daNpcT_Path_cFv() { - // NONMATCHING -} - -/* 80B488AC-80B488F4 00242C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80B488F4-80B4893C 002474 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80B4893C-80B48D40 0024BC 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 -} - -/* 80B48D40-80B48D44 0028C0 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80B48D44-80B48E40 0028C4 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 -} - -/* 80B48E40-80B48E44 0029C0 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80B48E44-80B48E8C 0029C4 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 -} - -/* 80B48E8C-80B48ED4 002A0C 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 -} - -/* 80B48ED4-80B48F44 002A54 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80B48F44-80B48FA0 002AC4 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80B48FA0-80B49010 002B20 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80B49010-80B49058 002B90 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80B49058-80B49174 002BD8 011C+00 1/1 0/0 0/0 .text setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs */ -// void daNpcT_JntAnm_c::setEyeAngleY(cXyz param_0, s16 param_1, int param_2, f32 param_3, -// s16 param_4) { -extern "C" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B49778-80B49780 0000C8 0008+00 0/1 0/0 0/0 .rodata @4758 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4758[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B49778, &lit_4758); -#pragma pop - -/* 80B49780-80B49788 0000D0 0008+00 0/1 0/0 0/0 .rodata @4759 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4759[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B49780, &lit_4759); -#pragma pop - -/* 80B49788-80B49790 0000D8 0008+00 0/1 0/0 0/0 .rodata @4760 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4760[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B49788, &lit_4760); -#pragma pop - -/* 80B49174-80B4937C 002CF4 0208+00 1/1 0/0 0/0 .text setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs */ -// void daNpcT_JntAnm_c::setEyeAngleX(cXyz param_0, f32 param_1, s16 param_2) { -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs() { - // NONMATCHING -} - -/* 80B4937C-80B49380 002EFC 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 */ -} - -/* 80B49390-80B49398 002F10 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80B49398-80B493A0 002F18 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80B493AC-80B493B4 002F2C 0008+00 1/0 0/0 0/0 .text chkXYItems__8daNpcT_cFv */ -// bool daNpcT_c::chkXYItems() { -extern "C" bool chkXYItems__8daNpcT_cFv() { - return false; -} - -/* 80B493B4-80B493CC 002F34 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80B493CC-80B493D0 002F4C 0004+00 1/0 0/0 0/0 .text drawOtherMdl__8daNpcT_cFv */ -// void daNpcT_c::drawOtherMdl() { -extern "C" void drawOtherMdl__8daNpcT_cFv() { - /* empty function */ -} - -/* 80B493D0-80B493D8 002F50 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; -} - -/* 80B493D8-80B493E0 002F58 0008+00 1/0 0/0 0/0 .text afterSetMotionAnm__8daNpcT_cFiifi - */ -// bool daNpcT_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { -extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi() { - return true; -} - -/* 80B493E0-80B49410 002F60 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 -} - -/* 80B49410-80B49440 002F90 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 -} - -/* 80B49440-80B49444 002FC0 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 */ -} - -/* 80B49444-80B49448 002FC4 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 */ -} - -/* 80B49448-80B4944C 002FC8 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 */ -} - -/* 80B4944C-80B49450 002FCC 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 */ -} - -/* ############################################################################################## */ -/* 80B49AC0-80B49ACC 000318 000C+00 2/2 0/0 0/0 .data __vt__19daNpc_yamiS_Param_c */ -SECTION_DATA extern void* __vt__19daNpc_yamiS_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19daNpc_yamiS_Param_cFv, +/* 80B49904-80B49924 -00001 0020+00 1/0 0/0 0/0 .data daNpc_yamiS_MethodTable */ +static actor_method_class daNpc_yamiS_MethodTable = { + (process_method_func)daNpc_yamiS_Create, (process_method_func)daNpc_yamiS_Delete, + (process_method_func)daNpc_yamiS_Execute, (process_method_func)daNpc_yamiS_IsDelete, + (process_method_func)daNpc_yamiS_Draw, }; -/* 80B49AD8-80B49AE4 000008 000C+00 1/1 0/0 0/0 .bss @3816 */ -static u8 lit_3816[12]; - -/* 80B49AE4-80B49AE8 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 80B49450-80B494D8 002FD0 0088+00 0/0 1/0 0/0 .text __sinit_d_a_npc_yamis_cpp */ -void __sinit_d_a_npc_yamis_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80B49450, __sinit_d_a_npc_yamis_cpp); -#pragma pop - -/* 80B494D8-80B49598 003058 00C0+00 1/1 0/0 0/0 .text - * __ct__13daNpc_yamiS_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_yamiS_c::daNpc_yamiS_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 -} - -/* 80B49598-80B495A0 003118 0008+00 1/0 0/0 0/0 .text getEyeballMaterialNo__13daNpc_yamiS_cFv */ -u16 daNpc_yamiS_c::getEyeballMaterialNo() { - return true; -} - -/* 80B495A0-80B495A8 003120 0008+00 1/0 0/0 0/0 .text getHeadJointNo__13daNpc_yamiS_cFv - */ -s32 daNpc_yamiS_c::getHeadJointNo() { - return 4; -} - -/* 80B495A8-80B495B0 003128 0008+00 1/0 0/0 0/0 .text getNeckJointNo__13daNpc_yamiS_cFv - */ -s32 daNpc_yamiS_c::getNeckJointNo() { - return 3; -} - -/* 80B495B0-80B495B8 003130 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__13daNpc_yamiS_cFv */ -bool daNpc_yamiS_c::getBackboneJointNo() { - return true; -} - -/* 80B495B8-80B495C8 003138 0010+00 1/0 0/0 0/0 .text checkChangeJoint__13daNpc_yamiS_cFi - */ -void daNpc_yamiS_c::checkChangeJoint(int param_0) { - // NONMATCHING -} - -/* 80B495C8-80B495D8 003148 0010+00 1/0 0/0 0/0 .text checkRemoveJoint__13daNpc_yamiS_cFi - */ -void daNpc_yamiS_c::checkRemoveJoint(int param_0) { - // NONMATCHING -} - -/* 80B495D8-80B49644 003158 006C+00 1/0 0/0 0/0 .text evtEndProc__13daNpc_yamiS_cFv */ -void daNpc_yamiS_c::evtEndProc() { - // NONMATCHING -} - -/* 80B49644-80B4968C 0031C4 0048+00 2/1 0/0 0/0 .text __dt__19daNpc_yamiS_Param_cFv */ -daNpc_yamiS_Param_c::~daNpc_yamiS_Param_c() { - // NONMATCHING -} - -/* 80B4968C-80B49694 00320C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80B4968C() { - // NONMATCHING -} - -/* 80B49694-80B4969C 003214 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80B49694() { - // NONMATCHING -} - -/* 80B49790-80B49790 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80B49924-80B49954 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_YAMIS */ +extern actor_process_profile_definition g_profile_NPC_YAMIS = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_YAMIS, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_yamiS_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 317, // mPriority + &daNpc_yamiS_MethodTable, // sub_method + 0x00044107, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_npc_yamit.cpp b/src/d/actor/d_a_npc_yamit.cpp index c3a88e3ec1e..bb4b8670049 100644 --- a/src/d/actor/d_a_npc_yamit.cpp +++ b/src/d/actor/d_a_npc_yamit.cpp @@ -1,273 +1,45 @@ /** * @file d_a_npc_yamit.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_yamit.h" -#include "dol2asm.h" +#include "d/actor/d_a_tag_yami.h" -// -// Forward References: -// +enum RES_Name { + /* 0x0 */ NONE, + /* 0x1 */ YAMIT, +}; -extern "C" void __dt__13daNpc_yamiT_cFv(); -extern "C" void create__13daNpc_yamiT_cFv(); -extern "C" void CreateHeap__13daNpc_yamiT_cFv(); -extern "C" void __dt__15J3DTevKColorAnmFv(); -extern "C" void __ct__15J3DTevKColorAnmFv(); -extern "C" void __dt__14J3DTevColorAnmFv(); -extern "C" void __ct__14J3DTevColorAnmFv(); -extern "C" void __dt__11J3DTexNoAnmFv(); -extern "C" void __ct__11J3DTexNoAnmFv(); -extern "C" void __dt__12J3DTexMtxAnmFv(); -extern "C" void __ct__12J3DTexMtxAnmFv(); -extern "C" void __dt__14J3DMatColorAnmFv(); -extern "C" void __ct__14J3DMatColorAnmFv(); -extern "C" void Delete__13daNpc_yamiT_cFv(); -extern "C" void Execute__13daNpc_yamiT_cFv(); -extern "C" void _search_Tag__13daNpc_yamiT_cFPvPv(); -extern "C" void Draw__13daNpc_yamiT_cFv(); -extern "C" void createHeapCallBack__13daNpc_yamiT_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__13daNpc_yamiT_cFP8J3DJointi(); -extern "C" void getType__13daNpc_yamiT_cFv(); -extern "C" void getFlowNodeNo__13daNpc_yamiT_cFv(); -extern "C" void isDelete__13daNpc_yamiT_cFv(); -extern "C" void reset__13daNpc_yamiT_cFv(); -extern "C" void afterJntAnm__13daNpc_yamiT_cFi(); -extern "C" void setParam__13daNpc_yamiT_cFv(); -extern "C" void setAfterTalkMotion__13daNpc_yamiT_cFv(); -extern "C" void srchActors__13daNpc_yamiT_cFv(); -extern "C" void evtTalk__13daNpc_yamiT_cFv(); -extern "C" void evtCutProc__13daNpc_yamiT_cFv(); -extern "C" void action__13daNpc_yamiT_cFv(); -extern "C" void beforeMove__13daNpc_yamiT_cFv(); -extern "C" void setAttnPos__13daNpc_yamiT_cFv(); -extern "C" void setCollision__13daNpc_yamiT_cFv(); -extern "C" bool drawDbgInfo__13daNpc_yamiT_cFv(); -extern "C" void evtEndProc__13daNpc_yamiT_cFv(); -extern "C" void drawGhost__13daNpc_yamiT_cFv(); -extern "C" void selectAction__13daNpc_yamiT_cFv(); -extern "C" void chkAction__13daNpc_yamiT_cFM13daNpc_yamiT_cFPCvPvPv_i(); -extern "C" void setAction__13daNpc_yamiT_cFM13daNpc_yamiT_cFPCvPvPv_i(); -extern "C" void wait__13daNpc_yamiT_cFPv(); -extern "C" void talk__13daNpc_yamiT_cFPv(); -extern "C" void cutStopper__13daNpc_yamiT_cFi(); -extern "C" void _cutStopper_Init__13daNpc_yamiT_cFRCi(); -extern "C" void _cutStopper_Main__13daNpc_yamiT_cFRCi(); -extern "C" static void daNpc_yamiT_Create__FPv(); -extern "C" static void daNpc_yamiT_Delete__FPv(); -extern "C" static void daNpc_yamiT_Execute__FPv(); -extern "C" static void daNpc_yamiT_Draw__FPv(); -extern "C" static bool daNpc_yamiT_IsDelete__FPv(); -extern "C" void calc__11J3DTexNoAnmCFPUs(); -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 __dt__13daNpcT_Path_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -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" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs(); -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs(); -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi(); -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" bool checkChangeEvt__8daNpcT_cFv(); -extern "C" void afterMoved__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" bool afterSetMotionAnm__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_yamit_cpp(); -extern "C" void -__ct__13daNpc_yamiT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" u16 getEyeballMaterialNo__13daNpc_yamiT_cFv(); -extern "C" s32 getHeadJointNo__13daNpc_yamiT_cFv(); -extern "C" s32 getNeckJointNo__13daNpc_yamiT_cFv(); -extern "C" bool getBackboneJointNo__13daNpc_yamiT_cFv(); -extern "C" void checkChangeJoint__13daNpc_yamiT_cFi(); -extern "C" void checkRemoveJoint__13daNpc_yamiT_cFi(); -extern "C" void __dt__19daNpc_yamiT_Param_cFv(); -extern "C" static void func_80B4CD80(); -extern "C" static void func_80B4CD88(); -extern "C" u8 const m__19daNpc_yamiT_Param_c[140]; -extern "C" extern char const* const d_a_npc_yamit__stringBase0; -extern "C" void* mCutNameList__13daNpc_yamiT_c[2]; -extern "C" u8 mCutList__13daNpc_yamiT_c[24]; +enum FaceMotion { + /* 0x0 */ FACE_TALKE_A, + /* 0x1 */ FACE_NONE, +}; -// -// External References: -// +enum Motion { + /* 0x0 */ MOT_WAIT_A, + /* 0x1 */ MOT_STEP, +}; -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -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 fopAc_IsActor__FPv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void isSwitch__10dSv_info_cCFii(); -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 getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -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 __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -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 getActorP__18daNpcT_ActorMngr_cFv(); -extern "C" void initialize__15daNpcT_MatAnm_cFv(); -extern "C" void initialize__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void initialize__13daNpcT_Path_cFv(); -extern "C" void setPathInfo__13daNpcT_Path_cFUcScUc(); -extern "C" void initialize__15daNpcT_JntAnm_cFv(); -extern "C" void setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz(); -extern "C" void calcJntRad__15daNpcT_JntAnm_cFfff(); -extern "C" void calc__19daNpcT_DmgStagger_cFi(); -extern "C" void tgHitCallBack__8daNpcT_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -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 clrParam__8daNpcT_cFv(); -extern "C" void setFaceMotionAnm__8daNpcT_cFib(); -extern "C" void setMotionAnm__8daNpcT_cFifi(); -extern "C" void setAngle__8daNpcT_cFs(); -extern "C" void chkActorInSight__8daNpcT_cFP10fopAc_ac_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 daNpcT_chkEvtBit__FUl(); -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 Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -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 SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -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 getTexNo__16J3DAnmTexPatternCFUsPUs(); -extern "C" void initialize__14J3DMaterialAnmFv(); -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_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" u8 mCcDCyl__8daNpcT_c[68]; -extern "C" extern void* __vt__8daNpcT_c[49]; -extern "C" extern void* __vt__15daNpcT_MatAnm_c[4 + 1 /* padding */]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" extern void* __vt__14J3DMaterialAnm[4]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); -extern "C" void onMidnaTagSw__11daTagYami_cFv(); -extern "C" void offMidnaTagSw2__11daTagYami_cFv(); +#if DEBUG +daNpc_yamiT_HIO_c::daNpc_yamiT_HIO_c() { + m = daNpc_yamiT_Param_c::m; +} -// -// Declarations: -// +void daNpc_yamiT_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) { + // TODO +} -/* ############################################################################################## */ -/* 80B4CE84-80B4CE84 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80B4CE84 = ""; -SECTION_DEAD static char const* const stringBase_80B4CE85 = "STOPPER"; -SECTION_DEAD static char const* const stringBase_80B4CE8D = "yamiT"; -#pragma pop +void daNpc_yamiT_HIO_c::genMessage(JORMContext* ctext) { + // TODO +} +#endif /* 80B4CEBC-80B4CEC4 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[8] = { - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, +static int l_bmdData[1][2] = { + {12, 1}, }; /* 80B4CEC4-80B4CED4 -00001 0010+00 0/1 0/0 0/0 .data l_evtList */ @@ -283,61 +55,38 @@ static char* l_resNameList[2] = { }; /* 80B4CEDC-80B4CEE0 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}; /* 80B4CEE0-80B4CEEC -00001 000C+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList[3] = { - (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, +static s8* l_loadResPtrnList[3] = { + l_loadResPtrn0, + l_loadResPtrn0, + l_loadResPtrn0, }; /* 80B4CEEC-80B4CF24 000050 0038+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[56] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[2] = { + {-1, 0, 0, 15, 2, 1, 1}, + {6, 0, 1, 15, 2, 1, 1}, }; -#pragma pop /* 80B4CF24-80B4CF78 000088 0054+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[84] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 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[3] = { + {9, 2, 1, -1, 0, 0, 0, 0}, + {8, 0, 1, -1, 0, 0, 0, 0}, + {7, 0, 1, -1, 0, 0, 0, 0}, }; -#pragma pop /* 80B4CF78-80B4CF98 0000DC 0020+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[32] = { - 0x00, 0x01, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[8] = { + {1, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80B4CF98-80B4CFC8 0000FC 0030+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[48] = { - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x01, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x02, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[12] = { + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {1, -1, 1}, {0, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {2, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80B4CFC8-80B4CFD0 -00001 0008+00 1/1 0/0 0/0 .data mCutNameList__13daNpc_yamiT_c */ char* daNpc_yamiT_c::mCutNameList[2] = { @@ -345,922 +94,738 @@ char* daNpc_yamiT_c::mCutNameList[2] = { "STOPPER", }; -/* 80B4CFD0-80B4CFDC -00001 000C+00 1/1 0/0 0/0 .data @3814 */ -SECTION_DATA static void* lit_3814[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutStopper__13daNpc_yamiT_cFi, -}; - /* 80B4CFDC-80B4CFF4 000140 0018+00 2/2 0/0 0/0 .data mCutList__13daNpc_yamiT_c */ -SECTION_DATA u8 daNpc_yamiT_c::mCutList[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80B4CFF4-80B4D000 -00001 000C+00 1/1 0/0 0/0 .data @4469 */ -SECTION_DATA static void* lit_4469[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpc_yamiT_cFPv, -}; - -/* 80B4D000-80B4D00C -00001 000C+00 1/1 0/0 0/0 .data @4595 */ -SECTION_DATA static void* lit_4595[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_yamiT_cFPv, -}; - -/* 80B4D00C-80B4D018 -00001 000C+00 1/1 0/0 0/0 .data @4603 */ -SECTION_DATA static void* lit_4603[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_yamiT_cFPv, -}; - -/* 80B4D018-80B4D024 -00001 000C+00 1/1 0/0 0/0 .data @4836 */ -SECTION_DATA static void* lit_4836[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpc_yamiT_cFPv, -}; - -/* 80B4D024-80B4D044 -00001 0020+00 1/0 0/0 0/0 .data daNpc_yamiT_MethodTable */ -static actor_method_class daNpc_yamiT_MethodTable = { - (process_method_func)daNpc_yamiT_Create__FPv, - (process_method_func)daNpc_yamiT_Delete__FPv, - (process_method_func)daNpc_yamiT_Execute__FPv, - (process_method_func)daNpc_yamiT_IsDelete__FPv, - (process_method_func)daNpc_yamiT_Draw__FPv, -}; - -/* 80B4D044-80B4D074 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_YAMIT */ -extern actor_process_profile_definition g_profile_NPC_YAMIT = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_YAMIT, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_yamiT_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 316, // mPriority - &daNpc_yamiT_MethodTable, // sub_method - 0x00044107, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80B4D074-80B4D080 0001D8 000C+00 2/2 0/0 0/0 .data __vt__11J3DTexNoAnm */ -SECTION_DATA extern void* __vt__11J3DTexNoAnm[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)calc__11J3DTexNoAnmCFPUs, -}; - -/* 80B4D080-80B4D08C 0001E4 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, -}; - -/* 80B4D08C-80B4D0B0 0001F0 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_80B4CD88, - (void*)NULL, - (void*)NULL, - (void*)func_80B4CD80, -}; - -/* 80B4D0B0-80B4D0BC 000214 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, -}; - -/* 80B4D0BC-80B4D0C8 000220 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, -}; - -/* 80B4D0C8-80B4D0D4 00022C 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, -}; - -/* 80B4D0D4-80B4D0E0 000238 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, -}; - -/* 80B4D0E0-80B4D0EC 000244 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, -}; - -/* 80B4D0EC-80B4D0F8 000250 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, -}; - -/* 80B4D0F8-80B4D104 00025C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80B4D104-80B4D110 000268 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80B4D110-80B4D11C 000274 000C+00 3/3 0/0 0/0 .data __vt__13daNpcT_Path_c */ -SECTION_DATA extern void* __vt__13daNpcT_Path_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpcT_Path_cFv, -}; - -/* 80B4D11C-80B4D1E0 000280 00C4+00 2/2 0/0 0/0 .data __vt__13daNpc_yamiT_c */ -SECTION_DATA extern void* __vt__13daNpc_yamiT_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpc_yamiT_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__8daNpcT_cFi, - (void*)checkChangeJoint__13daNpc_yamiT_cFi, - (void*)checkRemoveJoint__13daNpc_yamiT_cFi, - (void*)getBackboneJointNo__13daNpc_yamiT_cFv, - (void*)getNeckJointNo__13daNpc_yamiT_cFv, - (void*)getHeadJointNo__13daNpc_yamiT_cFv, - (void*)getFootLJointNo__8daNpcT_cFv, - (void*)getFootRJointNo__8daNpcT_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__13daNpc_yamiT_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__13daNpc_yamiT_cFi, - (void*)setParam__13daNpc_yamiT_cFv, - (void*)checkChangeEvt__8daNpcT_cFv, - (void*)evtTalk__13daNpc_yamiT_cFv, - (void*)evtEndProc__13daNpc_yamiT_cFv, - (void*)evtCutProc__13daNpc_yamiT_cFv, - (void*)setAfterTalkMotion__13daNpc_yamiT_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__13daNpc_yamiT_cFv, - (void*)beforeMove__13daNpc_yamiT_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__13daNpc_yamiT_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__13daNpc_yamiT_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__13daNpc_yamiT_cFv, - (void*)drawOtherMdl__8daNpcT_cFv, - (void*)drawGhost__13daNpc_yamiT_cFv, - (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi, - (void*)afterSetMotionAnm__8daNpcT_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, +daNpc_yamiT_c::cutFunc daNpc_yamiT_c::mCutList[2] = { + NULL, + &daNpc_yamiT_c::cutStopper, }; /* 80B49BEC-80B49D24 0000EC 0138+00 1/0 0/0 0/0 .text __dt__13daNpc_yamiT_cFv */ daNpc_yamiT_c::~daNpc_yamiT_c() { - // NONMATCHING + if (heap != NULL) { + mpMorf[0]->stopZelAnime(); + } + deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList); } -/* ############################################################################################## */ /* 80B4CDA4-80B4CE30 000000 008C+00 7/7 0/0 0/0 .rodata m__19daNpc_yamiT_Param_c */ -SECTION_RODATA u8 const daNpc_yamiT_Param_c::m[140] = { - 0x43, 0x66, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x5C, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, - 0x42, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 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, +const daNpc_yamiT_HIOParam daNpc_yamiT_Param_c::m = { + 230.0f, // attention_offset + -3.0f, // gravity + 1.0f, // scale + 400.0f, // real_shadow_size + 255.0f, // weight + 220.0f, // height + 35.0f, // knee_length + 30.0f, // width + 0.0f, // body_angleX_max + 0.0f, // body_angleX_min + 10.0f, // body_angleY_max + -10.0f, // body_angleY_min + 30.0f, // head_angleX_max + -10.0f, // head_angleX_min + 45.0f, // head_angleY_max + -45.0f, // head_angleY_min + 0.6f, // neck_rotation_ratio + 12.0f, // morf_frame + 3, // talk_distance + 6, // talk_angle + 5, // attention_distance + 6, // attention_angle + 110.0f, // fov + 0.0f, // search_distance + 0.0f, // search_height + 0.0f, // search_depth + 60, // attention_time + 8, // damage_time + 0, // face_expression + 0, // motion + 0, // look_mode + 0, // debug_mode_ON + 0, // debug_info_ON + 4.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 }; -COMPILER_STRIP_GATE(0x80B4CDA4, &daNpc_yamiT_Param_c::m); -/* 80B4CE30-80B4CE34 00008C 0004+00 0/1 0/0 0/0 .rodata @4027 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4027 = 3.0f; -COMPILER_STRIP_GATE(0x80B4CE30, &lit_4027); -#pragma pop - -/* 80B4CE34-80B4CE38 000090 0004+00 0/1 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = -300.0f; -COMPILER_STRIP_GATE(0x80B4CE34, &lit_4028); -#pragma pop - -/* 80B4CE38-80B4CE3C 000094 0004+00 0/1 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = -50.0f; -COMPILER_STRIP_GATE(0x80B4CE38, &lit_4029); -#pragma pop - -/* 80B4CE3C-80B4CE40 000098 0004+00 0/1 0/0 0/0 .rodata @4030 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4030 = 300.0f; -COMPILER_STRIP_GATE(0x80B4CE3C, &lit_4030); -#pragma pop - -/* 80B4CE40-80B4CE44 00009C 0004+00 0/1 0/0 0/0 .rodata @4031 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4031 = 450.0f; -COMPILER_STRIP_GATE(0x80B4CE40, &lit_4031); -#pragma pop - -/* 80B4CE44-80B4CE48 0000A0 0004+00 0/1 0/0 0/0 .rodata @4032 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4032 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x80B4CE44, &lit_4032); -#pragma pop +/* 80B4D204-80B4D208 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +static NPC_YAMIT_HIO_CLASS l_HIO; /* 80B49D24-80B49FD8 000224 02B4+00 1/1 0/0 0/0 .text create__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::create() { - // NONMATCHING +cPhs__Step daNpc_yamiT_c::create() { + daNpcT_ct(this, daNpc_yamiT_c, l_faceMotionAnmData, l_motionAnmData, l_faceMotionSequenceData, + 4, l_motionSequenceData, 4, l_evtList, l_resNameList); + + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = false; + + cPhs__Step phase = (cPhs__Step)loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList); + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x3850)) { + return cPhs_ERROR_e; + } + + if (isDelete()) { + return cPhs_ERROR_e; + } + + J3DModelData* model_data = mpMorf[0]->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeFar(this, 3.0f); + fopAcM_setCullSizeBox(this, -300.0f, -50.0f, -300.0f, 300.0f, 450.0f, 300.0f); + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_0x8000000); + + 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)); + mCcStts.Init(mpHIO->m.common.weight, 0, this); + + field_0xe44.Set(mCcDCyl); + field_0xe44.SetStts(&mCcStts); + field_0xe44.SetTgHitCallback(tgHitCallBack); + + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + + if (mGroundH != -G_CM3D_F_INF) { + setEnvTevColor(); + setRoomNo(); + } + + mpTagYami = NULL; + reset(); + mCreating = true; + Execute(); + mCreating = false; + } + + return phase; } -/* ############################################################################################## */ -/* 80B4CE48-80B4CE4C 0000A4 0004+00 5/10 0/0 0/0 .rodata @4193 */ -SECTION_RODATA static u8 const lit_4193[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80B4CE48, &lit_4193); - -/* 80B4CE4C-80B4CE50 0000A8 0004+00 0/2 0/0 0/0 .rodata @4194 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4194 = 65536.0f; -COMPILER_STRIP_GATE(0x80B4CE4C, &lit_4194); -#pragma pop - -/* 80B4CE50-80B4CE54 0000AC 0004+00 0/3 0/0 0/0 .rodata @4195 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4195 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80B4CE50, &lit_4195); -#pragma pop - -/* 80B4CE54-80B4CE58 0000B0 0004+00 2/5 0/0 0/0 .rodata @4344 */ -SECTION_RODATA static f32 const lit_4344 = 1.0f; -COMPILER_STRIP_GATE(0x80B4CE54, &lit_4344); - /* 80B49FD8-80B4A26C 0004D8 0294+00 1/1 0/0 0/0 .text CreateHeap__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::CreateHeap() { - // NONMATCHING -} +int daNpc_yamiT_c::CreateHeap() { + J3DModelData* mdlData_p = NULL; + J3DModel* model = NULL; + int bmdIdx = mTwilight == true ? NONE : NONE; -/* 80B4A26C-80B4A2A8 00076C 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + int res_name_idx = l_bmdData[bmdIdx][1]; + int index = l_bmdData[bmdIdx][0]; + mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNameList[res_name_idx], index); -/* 80B4A2A8-80B4A2C0 0007A8 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + u32 sp_0x1C = 0x11020284; + mpMorf[0] = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, + sp_0x1C); + if (mpMorf[0] != NULL && mpMorf[0]->getModel() == NULL) { + mpMorf[0]->stopZelAnime(); + mpMorf[0] = NULL; + } -/* 80B4A2C0-80B4A2FC 0007C0 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + if (mpMorf[0] == NULL) { + return 0; + } -/* 80B4A2FC-80B4A314 0007FC 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + model = mpMorf[0]->getModel(); + for (u16 i = 0; i < mdlData_p->getJointNum(); i++) { + mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } + model->setUserArea((uintptr_t)this); -/* 80B4A314-80B4A35C 000814 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} + mpMatAnm[0] = new daNpcT_MatAnm_c(); + if (mpMatAnm[0] == NULL) { + return 0; + } -/* 80B4A35C-80B4A380 00085C 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + if (setFaceMotionAnm(1, false) && setMotionAnm(0, 0.0f, FALSE)) { + return 1; + } -/* 80B4A380-80B4A3BC 000880 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80B4A3BC-80B4A3D4 0008BC 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80B4A3D4-80B4A410 0008D4 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} - -/* 80B4A410-80B4A428 000910 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + return 0; } /* 80B4A428-80B4A45C 000928 0034+00 1/1 0/0 0/0 .text Delete__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::Delete() { - // NONMATCHING +int daNpc_yamiT_c::Delete() { + fpc_ProcID reg_r30 = fopAcM_GetID(this); + this->~daNpc_yamiT_c(); + return 1; } /* 80B4A45C-80B4A47C 00095C 0020+00 2/2 0/0 0/0 .text Execute__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::Execute() { - // NONMATCHING +int daNpc_yamiT_c::Execute() { + return execute(); } /* 80B4A47C-80B4A4E0 00097C 0064+00 1/1 0/0 0/0 .text _search_Tag__13daNpc_yamiT_cFPvPv */ -void daNpc_yamiT_c::_search_Tag(void* param_0, void* param_1) { - // NONMATCHING +void* daNpc_yamiT_c::_search_Tag(void* i_actor, void* i_data) { + if (!fopAcM_IsActor(i_actor)) { + return NULL; + } + + if (fopAcM_GetName(i_actor) == PROC_TAG_YAMI && + ((daNpc_yamiT_c*)i_data)->_chk_TagPrm((fopAc_ac_c*)i_actor)) + { + return i_actor; + } + + return NULL; } /* 80B4A4E0-80B4A588 0009E0 00A8+00 1/1 0/0 0/0 .text Draw__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::Draw() { - // NONMATCHING +int daNpc_yamiT_c::Draw() { + if (is_vanish()) { + return 0; + } + + if (mpMatAnm[0] != NULL) { + J3DModelData* mdlData_p = mpMorf[0]->getModel()->getModelData(); + mdlData_p->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + + return draw(FALSE, FALSE, mRealShadowSize, NULL, 0.0f, TRUE, FALSE, FALSE); } /* 80B4A588-80B4A5A8 000A88 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__13daNpc_yamiT_cFP10fopAc_ac_c */ -void daNpc_yamiT_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daNpc_yamiT_c::createHeapCallBack(fopAc_ac_c* i_this) { + daNpc_yamiT_c* a_this = (daNpc_yamiT_c*)i_this; + return a_this->CreateHeap(); } /* 80B4A5A8-80B4A600 000AA8 0058+00 1/1 0/0 0/0 .text * ctrlJointCallBack__13daNpc_yamiT_cFP8J3DJointi */ -void daNpc_yamiT_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daNpc_yamiT_c::ctrlJointCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = j3dSys.getModel(); + daNpc_yamiT_c* i_this = (daNpc_yamiT_c*)model->getUserArea(); + + if (i_this != NULL) { + i_this->ctrlJoint(i_joint, model); + } + } + + return 1; } /* 80B4A600-80B4A638 000B00 0038+00 1/1 0/0 0/0 .text getType__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::getType() { - // NONMATCHING +u8 daNpc_yamiT_c::getType() { + u8 prm = fopAcM_GetParam(this); + switch (prm & 0xFF) { + case 0: + return 0; + + case 1: + return 1; + + default: + return 2; + } } /* 80B4A638-80B4A69C 000B38 0064+00 2/2 0/0 0/0 .text getFlowNodeNo__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::getFlowNodeNo() { - // NONMATCHING +u32 daNpc_yamiT_c::getFlowNodeNo() { + u32 rv = -1; + + /* dSv_event_flag_c::F_0570 - Palace of Twilight - Cleared Palace of Twilight */ + if (daNpcT_chkEvtBit(570)) { + rv = 0x326; + } else { + u16 nodeNo = home.angle.x; + if (nodeNo != 0xFFFF) { + rv = nodeNo; + } + } + + return rv; } /* 80B4A69C-80B4A724 000B9C 0088+00 1/1 0/0 0/0 .text isDelete__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::isDelete() { - // NONMATCHING +BOOL daNpc_yamiT_c::isDelete() { + BOOL rv = FALSE; + + switch (mType) { + case 0: + case 1: + /* dSv_event_flag_c::F_0570 - Palace of Twilight - Cleared Palace of Twilight */ + if (!daNpcT_chkEvtBit(570)) { + if (!fopAcM_isSwitch(this, getSwitchBitNo())) { + rv = TRUE; + } + } + break; + } + + return rv; } /* 80B4A724-80B4A914 000C24 01F0+00 1/1 0/0 0/0 .text reset__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::reset() { - // NONMATCHING + initialize(); + + memset(&mNextAction, 0, (u8*)&field_0xfc4 - (u8*)&mNextAction); + + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + + if (getPathID() != 0xFF) { + mPath.initialize(); + mPath.setPathInfo(getPathID(), fopAcM_GetRoomNo(this), 0); + } + + if (_is_vanish_prm()) { + vanish_on(); + off_CoHit(); + } else { + vanish_off(); + on_CoHit(); + } + + setAngle(home.angle.y); + setAction(&daNpc_yamiT_c::wait); } /* 80B4A914-80B4A9A0 000E14 008C+00 1/0 0/0 0/0 .text afterJntAnm__13daNpc_yamiT_cFi */ -void daNpc_yamiT_c::afterJntAnm(int param_0) { - // NONMATCHING +void daNpc_yamiT_c::afterJntAnm(int param_1) { + if (param_1 == 2) { + mDoMtx_stack_c::YrotM(mStagger.getAngleZ(1)); + mDoMtx_stack_c::ZrotM(-mStagger.getAngleX(1)); + } else if (param_1 == 4) { + mDoMtx_stack_c::YrotM(-mStagger.getAngleZ(0)); + mDoMtx_stack_c::ZrotM(mStagger.getAngleX(0)); + } } /* 80B4A9A0-80B4AAD0 000EA0 0130+00 1/0 0/0 0/0 .text setParam__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::setParam() { - // NONMATCHING -} + selectAction(); + srchActors(); -/* ############################################################################################## */ -/* 80B4CE58-80B4CE5C 0000B4 0004+00 1/2 0/0 0/0 .rodata @4578 */ -SECTION_RODATA static f32 const lit_4578 = -1.0f; -COMPILER_STRIP_GATE(0x80B4CE58, &lit_4578); + 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; + + if (mType == 1 && mpTagYami != NULL && mpTagYami->is_CoHit() != 0) { + talk_distance = 0; + attention_distance = 0; + } + + 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 = 0; + + 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; + mAttnFovY = mpHIO->m.common.fov; + 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; +} /* 80B4AAD0-80B4AB30 000FD0 0060+00 1/0 0/0 0/0 .text setAfterTalkMotion__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::setAfterTalkMotion() { - // NONMATCHING + int face = FACE_TALKE_A; + mFaceMotionSeqMngr.getNo(); + face = FACE_NONE; + mFaceMotionSeqMngr.setNo(face, -1.0f, FALSE, 0); } /* 80B4AB30-80B4ABA0 001030 0070+00 1/1 0/0 0/0 .text srchActors__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::srchActors() { - // NONMATCHING + switch (mType) { + case 1: + if (mVanish == 0) { + if (!mpTagYami) { + mpTagYami = (daTagYami_c*)fpcM_Search(_search_Tag, this); + } + } else { + mpTagYami = NULL; + } + break; + } } /* 80B4ABA0-80B4AC84 0010A0 00E4+00 1/0 0/0 0/0 .text evtTalk__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::evtTalk() { - // NONMATCHING +BOOL daNpc_yamiT_c::evtTalk() { + if (chkAction(&daNpc_yamiT_c::talk)) { + (this->*mAction)(NULL); + } else if (dComIfGp_event_chkTalkXY() == 0 || dComIfGp_evmng_ChkPresentEnd()) { + setAction(&daNpc_yamiT_c::talk); + } + + return TRUE; } /* 80B4AC84-80B4AD4C 001184 00C8+00 1/0 0/0 0/0 .text evtCutProc__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_yamiT_c::evtCutProc() { + int rv = FALSE; + + int staffId = dComIfGp_getEventManager().getMyStaffId("yamiT", this, -1); + if (staffId != -1) { + mStaffId = staffId; + int actIdx = dComIfGp_getEventManager().getMyActIdx(mStaffId, mCutNameList, 2, 0, 0); + if ((this->*mCutList[actIdx])(mStaffId)) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + + rv = TRUE; + } + + return rv; } /* 80B4AD4C-80B4AE38 00124C 00EC+00 1/0 0/0 0/0 .text action__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::action() { - // NONMATCHING + if (mStagger.checkRebirth()) { + mStagger.initialize(); + mMode = 1; + } + + if (mNextAction) { + if (mAction == mNextAction) { + (this->*mAction)(NULL); + } else { + setAction(mNextAction); + } + } } /* 80B4AE38-80B4AEB0 001338 0078+00 1/0 0/0 0/0 .text beforeMove__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::beforeMove() { - // NONMATCHING + if (checkHide() || mNoDraw) { + attention_info.flags = 0; + } } -/* ############################################################################################## */ -/* 80B4CE5C-80B4CE60 0000B8 0004+00 0/1 0/0 0/0 .rodata @4704 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4704 = -30.0f; -COMPILER_STRIP_GATE(0x80B4CE5C, &lit_4704); -#pragma pop - -/* 80B4CE60-80B4CE64 0000BC 0004+00 0/1 0/0 0/0 .rodata @4705 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4705 = 0x38C90FDB; -COMPILER_STRIP_GATE(0x80B4CE60, &lit_4705); -#pragma pop - -/* 80B4CE64-80B4CE6C 0000C0 0008+00 1/3 0/0 0/0 .rodata @4707 */ -SECTION_RODATA static u8 const lit_4707[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B4CE64, &lit_4707); - /* 80B4AEB0-80B4B0DC 0013B0 022C+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::setAttnPos() { - // NONMATCHING + cXyz work(-30.0f, 0.0f, 0.0f); + + mStagger.calc(FALSE); + f32 rad = cM_s2rad(mCurAngle.y - field_0xd7e.y); + mJntAnm.setParam(this, mpMorf[0]->getModel(), &work, getBackboneJointNo(), getNeckJointNo(), + getHeadJointNo(), mpHIO->m.common.body_angleX_min, + mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min, + mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min, + mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min, + mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio, rad, + NULL); + mJntAnm.calcJntRad(0.2f, 1.0f, rad); + setMtx(); + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo())); + mDoMtx_stack_c::multVec(&work, &eyePos); + mJntAnm.setEyeAngleX(eyePos, 1.0f, 0); + mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, TRUE, 1.0f, 0); + + attention_info.position = current.pos; + attention_info.position.y += mpHIO->m.common.attention_offset; } /* 80B4B0DC-80B4B210 0015DC 0134+00 1/0 0/0 0/0 .text setCollision__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::setCollision() { - // NONMATCHING + cXyz work; + u32 tgType = 0xD8FBFDFF; + u32 tgSPrm = 31; + + if (!mHide) { + if (dComIfGp_event_runCheck()) { + tgType = 0; + tgSPrm = 0; + } else if (mTwilight) { + tgType = 0; + tgSPrm = 0; + } else if (mStagger.checkStagger()) { + tgType = 0; + tgSPrm = 0; + } + + f32 cyl_h = mCylH; + f32 wall_r = mWallR; + work = current.pos; + + field_0xe44.SetCoSPrm(0x79); + field_0xe44.SetTgType(tgType); + field_0xe44.SetTgSPrm(tgSPrm); + field_0xe44.OnTgNoHitMark(); + field_0xe44.SetH(cyl_h); + field_0xe44.SetR(wall_r); + field_0xe44.SetC(work); + dComIfG_Ccsp()->Set(&field_0xe44); + } + + field_0xe44.ClrCoHit(); + field_0xe44.ClrTgHit(); } /* 80B4B210-80B4B218 001710 0008+00 1/0 0/0 0/0 .text drawDbgInfo__13daNpc_yamiT_cFv */ -bool daNpc_yamiT_c::drawDbgInfo() { - return false; +int daNpc_yamiT_c::drawDbgInfo() { + return 0; } /* 80B4B218-80B4B294 001718 007C+00 1/0 0/0 0/0 .text evtEndProc__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::evtEndProc() { - // NONMATCHING +BOOL daNpc_yamiT_c::evtEndProc() { + if (mpTagYami) { + mpTagYami->onMidnaTagSw(); + } + mJntAnm.lookNone(0); + eventInfo.setIdx(0); + mEvtNo = 0; + return TRUE; } /* 80B4B294-80B4B300 001794 006C+00 1/0 0/0 0/0 .text drawGhost__13daNpc_yamiT_cFv */ void daNpc_yamiT_c::drawGhost() { - // NONMATCHING + J3DModel* model = mpMorf[0]->getModel(); + g_env_light.settingTevStruct(3, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + mpMorf[0]->entryDL(); } /* 80B4B300-80B4B348 001800 0048+00 1/1 0/0 0/0 .text selectAction__13daNpc_yamiT_cFv */ -void daNpc_yamiT_c::selectAction() { - // NONMATCHING +int daNpc_yamiT_c::selectAction() { + mNextAction = NULL; + mNextAction = &daNpc_yamiT_c::wait; + return 1; } /* 80B4B348-80B4B374 001848 002C+00 1/1 0/0 0/0 .text * chkAction__13daNpc_yamiT_cFM13daNpc_yamiT_cFPCvPvPv_i */ -void daNpc_yamiT_c::chkAction(int (daNpc_yamiT_c::*param_0)(void*)) { - // NONMATCHING +BOOL daNpc_yamiT_c::chkAction(actionFunc action) { + return mAction == action; } /* 80B4B374-80B4B41C 001874 00A8+00 3/3 0/0 0/0 .text * setAction__13daNpc_yamiT_cFM13daNpc_yamiT_cFPCvPvPv_i */ -void daNpc_yamiT_c::setAction(int (daNpc_yamiT_c::*param_0)(void*)) { - // NONMATCHING +int daNpc_yamiT_c::setAction(actionFunc action) { + mMode = 3; + + if (mAction) { + (this->*mAction)(NULL); + } + + mMode = 0; + + mAction = action; + if (mAction) { + (this->*mAction)(NULL); + } + + return 1; } /* 80B4B41C-80B4B7D4 00191C 03B8+00 2/0 0/0 0/0 .text wait__13daNpc_yamiT_cFPv */ -void daNpc_yamiT_c::wait(void* param_0) { - // NONMATCHING +int daNpc_yamiT_c::wait(void* param_1) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + mFaceMotionSeqMngr.setNo(FACE_NONE, -1.0f, FALSE, 0); + mMotionSeqMngr.setNo(MOT_WAIT_A, -1.0f, FALSE, 0); + field_0xf83 = 0; + mMode = 2; + } + // fallthrough + case 2: + if (!mStagger.checkStagger()) { + if (mPlayerActorMngr.getActorP() != NULL && !mTwilight) { + mJntAnm.lookNone(0); + + if (chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) { + mJntAnm.lookPlayer(0); + + if (field_0xf83 == 0 && !is_vanish()) { + cXyz pos(current.pos); + Z2GetAudioMgr()->seStart(Z2SE_YAMI_MURMUR_T, &pos, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + field_0xf83 = 1; + } + } + + if (!srchPlayerActor()) { + field_0xf83 = 0; + + if (home.angle.y == mCurAngle.y) { + mMode = 1; + } + } + } else { + mJntAnm.lookNone(0); + field_0xf83 = 0; + + if (home.angle.y != mCurAngle.y) { + if (field_0xe34 == 0) { + setAngle(home.angle.y); + mMode = 1; + } else if (step(home.angle.y, 1, 2, 15, 0)) { + mMode = 1; + } + + attention_info.flags = 0; + } else { + srchPlayerActor(); + } + } + if (mType == 1 && + daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) && mpTagYami) + { + if (_is_stopper_off()) { + mpTagYami->off_CoHit(); + } else { + mpTagYami->on_CoHit(); + if (mpTagYami->is_CoHit()) { + eventInfo.setIdx(1); + mpTagYami->off_CoHit(); + mEvtNo = 1; + } + } + } + } + break; + case 3: + break; + } + + return 1; } /* 80B4B7D4-80B4B9E0 001CD4 020C+00 2/0 0/0 0/0 .text talk__13daNpc_yamiT_cFPv */ -void daNpc_yamiT_c::talk(void* param_0) { - // NONMATCHING +int daNpc_yamiT_c::talk(void* param_1) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + initTalk(mFlowNodeNo, NULL); + + if (checkStep()) { + mStepMode = 0; + } + + mMode = 2; + } + // fallthrough + case 2: + if (!mStagger.checkStagger()) { + if (mTwilight || mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, FALSE, NULL, FALSE)) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = 3; + } + + mJntAnm.lookPlayer(0); + + if (mTwilight) { + mJntAnm.lookNone(0); + } + } else { + mJntAnm.lookPlayer(0); + step(fopAcM_searchPlayerAngleY(this), 1, 2, 15, 0); + } + } + break; + case 3: + mFlowNodeNo = getFlowNodeNo(); + break; + } + + return 0; } -/* ############################################################################################## */ -/* 80B4CE84-80B4CE84 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80B4CE93 = "cutId"; -#pragma pop - /* 80B4B9E0-80B4BA74 001EE0 0094+00 1/0 0/0 0/0 .text cutStopper__13daNpc_yamiT_cFi */ -void daNpc_yamiT_c::cutStopper(int param_0) { - // NONMATCHING +BOOL daNpc_yamiT_c::cutStopper(int i_cutIndex) { + int* cutId = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "cutId"); + if (cutId == NULL) { + return TRUE; + } + + if (dComIfGp_getEventManager().getIsAddvance(i_cutIndex)) { + _cutStopper_Init(*cutId); + } + + return _cutStopper_Main(*cutId); } /* 80B4BA74-80B4BAAC 001F74 0038+00 1/1 0/0 0/0 .text _cutStopper_Init__13daNpc_yamiT_cFRCi */ -void daNpc_yamiT_c::_cutStopper_Init(int const& param_0) { - // NONMATCHING +BOOL daNpc_yamiT_c::_cutStopper_Init(int const& i_cutId) { + switch (i_cutId) { + case 10: + mpTagYami->offMidnaTagSw2(); + break; + } + return TRUE; } /* 80B4BAAC-80B4BAC4 001FAC 0018+00 1/1 0/0 0/0 .text _cutStopper_Main__13daNpc_yamiT_cFRCi */ -void daNpc_yamiT_c::_cutStopper_Main(int const& param_0) { - // NONMATCHING +BOOL daNpc_yamiT_c::_cutStopper_Main(int const& i_cutId) { + BOOL rv = FALSE; + if (i_cutId == 10) { + rv = TRUE; + } + return rv; } /* 80B4BAC4-80B4BAE4 001FC4 0020+00 1/0 0/0 0/0 .text daNpc_yamiT_Create__FPv */ -static void daNpc_yamiT_Create(void* param_0) { - // NONMATCHING +static int daNpc_yamiT_Create(void* i_this) { + return ((daNpc_yamiT_c*)i_this)->create(); } /* 80B4BAE4-80B4BB04 001FE4 0020+00 1/0 0/0 0/0 .text daNpc_yamiT_Delete__FPv */ -static void daNpc_yamiT_Delete(void* param_0) { - // NONMATCHING +static int daNpc_yamiT_Delete(void* i_this) { + return ((daNpc_yamiT_c*)i_this)->Delete(); } /* 80B4BB04-80B4BB24 002004 0020+00 1/0 0/0 0/0 .text daNpc_yamiT_Execute__FPv */ -static void daNpc_yamiT_Execute(void* param_0) { - // NONMATCHING +static int daNpc_yamiT_Execute(void* i_this) { + return ((daNpc_yamiT_c*)i_this)->Execute(); } /* 80B4BB24-80B4BB44 002024 0020+00 1/0 0/0 0/0 .text daNpc_yamiT_Draw__FPv */ -static void daNpc_yamiT_Draw(void* param_0) { - // NONMATCHING +static int daNpc_yamiT_Draw(void* i_this) { + return ((daNpc_yamiT_c*)i_this)->Draw(); } /* 80B4BB44-80B4BB4C 002044 0008+00 1/0 0/0 0/0 .text daNpc_yamiT_IsDelete__FPv */ -static bool daNpc_yamiT_IsDelete(void* param_0) { - return true; +static int daNpc_yamiT_IsDelete(void* i_this) { + return 1; } -/* 80B4BB4C-80B4BB7C 00204C 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* 80B4BB7C-80B4BBC4 00207C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80B4BBC4-80B4BF4C 0020C4 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80B4BF4C-80B4BF88 00244C 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80B4BF88-80B4BFC4 002488 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80B4BFC4-80B4C00C 0024C4 0048+00 1/0 0/0 0/0 .text __dt__13daNpcT_Path_cFv */ -// daNpcT_Path_c::~daNpcT_Path_c() { -extern "C" void __dt__13daNpcT_Path_cFv() { - // NONMATCHING -} - -/* 80B4C00C-80B4C054 00250C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80B4C054-80B4C09C 002554 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80B4C09C-80B4C4A0 00259C 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 -} - -/* 80B4C4A0-80B4C4A4 0029A0 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80B4C4A4-80B4C5A0 0029A4 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 -} - -/* 80B4C5A0-80B4C5A4 002AA0 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80B4C5A4-80B4C5EC 002AA4 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 -} - -/* 80B4C5EC-80B4C634 002AEC 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 -} - -/* 80B4C634-80B4C6A4 002B34 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80B4C6A4-80B4C700 002BA4 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80B4C700-80B4C770 002C00 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80B4C770-80B4C7B8 002C70 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80B4C7B8-80B4C8D4 002CB8 011C+00 1/1 0/0 0/0 .text setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs */ -// void daNpcT_JntAnm_c::setEyeAngleY(cXyz param_0, s16 param_1, int param_2, f32 param_3, -// s16 param_4) { -extern "C" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B4CE6C-80B4CE74 0000C8 0008+00 0/1 0/0 0/0 .rodata @4765 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4765[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B4CE6C, &lit_4765); -#pragma pop - -/* 80B4CE74-80B4CE7C 0000D0 0008+00 0/1 0/0 0/0 .rodata @4766 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4766[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B4CE74, &lit_4766); -#pragma pop - -/* 80B4CE7C-80B4CE84 0000D8 0008+00 0/1 0/0 0/0 .rodata @4767 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4767[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B4CE7C, &lit_4767); -#pragma pop - -/* 80B4C8D4-80B4CADC 002DD4 0208+00 1/1 0/0 0/0 .text setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs */ -// void daNpcT_JntAnm_c::setEyeAngleX(cXyz param_0, f32 param_1, s16 param_2) { -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs() { - // NONMATCHING -} - -/* 80B4CADC-80B4CAE0 002FDC 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 */ -} - -/* 80B4CAF0-80B4CAF8 002FF0 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80B4CAF8-80B4CB00 002FF8 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80B4CB0C-80B4CB14 00300C 0008+00 1/0 0/0 0/0 .text chkXYItems__8daNpcT_cFv */ -// bool daNpcT_c::chkXYItems() { -extern "C" bool chkXYItems__8daNpcT_cFv() { - return false; -} - -/* 80B4CB14-80B4CB2C 003014 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80B4CB2C-80B4CB30 00302C 0004+00 1/0 0/0 0/0 .text drawOtherMdl__8daNpcT_cFv */ -// void daNpcT_c::drawOtherMdl() { -extern "C" void drawOtherMdl__8daNpcT_cFv() { - /* empty function */ -} - -/* 80B4CB30-80B4CB38 003030 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; -} - -/* 80B4CB38-80B4CB40 003038 0008+00 1/0 0/0 0/0 .text afterSetMotionAnm__8daNpcT_cFiifi - */ -// bool daNpcT_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { -extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi() { - return true; -} - -/* 80B4CB40-80B4CB70 003040 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 -} - -/* 80B4CB70-80B4CBA0 003070 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 -} - -/* 80B4CBA0-80B4CBA4 0030A0 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 */ -} - -/* 80B4CBA4-80B4CBA8 0030A4 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 */ -} - -/* 80B4CBA8-80B4CBAC 0030A8 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 */ -} - -/* 80B4CBAC-80B4CBB0 0030AC 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 */ -} - -/* ############################################################################################## */ -/* 80B4D1E0-80B4D1EC 000344 000C+00 2/2 0/0 0/0 .data __vt__19daNpc_yamiT_Param_c */ -SECTION_DATA extern void* __vt__19daNpc_yamiT_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19daNpc_yamiT_Param_cFv, +/* 80B4D024-80B4D044 -00001 0020+00 1/0 0/0 0/0 .data daNpc_yamiT_MethodTable */ +static actor_method_class daNpc_yamiT_MethodTable = { + (process_method_func)daNpc_yamiT_Create, (process_method_func)daNpc_yamiT_Delete, + (process_method_func)daNpc_yamiT_Execute, (process_method_func)daNpc_yamiT_IsDelete, + (process_method_func)daNpc_yamiT_Draw, }; -/* 80B4D1F8-80B4D204 000008 000C+00 1/1 0/0 0/0 .bss @3815 */ -static u8 lit_3815[12]; - -/* 80B4D204-80B4D208 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 80B4CBB0-80B4CC38 0030B0 0088+00 0/0 1/0 0/0 .text __sinit_d_a_npc_yamit_cpp */ -void __sinit_d_a_npc_yamit_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80B4CBB0, __sinit_d_a_npc_yamit_cpp); -#pragma pop - -/* 80B4CC38-80B4CCF8 003138 00C0+00 1/1 0/0 0/0 .text - * __ct__13daNpc_yamiT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_yamiT_c::daNpc_yamiT_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 -} - -/* 80B4CCF8-80B4CD00 0031F8 0008+00 1/0 0/0 0/0 .text getEyeballMaterialNo__13daNpc_yamiT_cFv */ -u16 daNpc_yamiT_c::getEyeballMaterialNo() { - return true; -} - -/* 80B4CD00-80B4CD08 003200 0008+00 1/0 0/0 0/0 .text getHeadJointNo__13daNpc_yamiT_cFv - */ -s32 daNpc_yamiT_c::getHeadJointNo() { - return 4; -} - -/* 80B4CD08-80B4CD10 003208 0008+00 1/0 0/0 0/0 .text getNeckJointNo__13daNpc_yamiT_cFv - */ -s32 daNpc_yamiT_c::getNeckJointNo() { - return 3; -} - -/* 80B4CD10-80B4CD18 003210 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__13daNpc_yamiT_cFv */ -bool daNpc_yamiT_c::getBackboneJointNo() { - return true; -} - -/* 80B4CD18-80B4CD28 003218 0010+00 1/0 0/0 0/0 .text checkChangeJoint__13daNpc_yamiT_cFi - */ -void daNpc_yamiT_c::checkChangeJoint(int param_0) { - // NONMATCHING -} - -/* 80B4CD28-80B4CD38 003228 0010+00 1/0 0/0 0/0 .text checkRemoveJoint__13daNpc_yamiT_cFi - */ -void daNpc_yamiT_c::checkRemoveJoint(int param_0) { - // NONMATCHING -} - -/* 80B4CD38-80B4CD80 003238 0048+00 2/1 0/0 0/0 .text __dt__19daNpc_yamiT_Param_cFv */ -daNpc_yamiT_Param_c::~daNpc_yamiT_Param_c() { - // NONMATCHING -} - -/* 80B4CD80-80B4CD88 003280 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80B4CD80() { - // NONMATCHING -} - -/* 80B4CD88-80B4CD90 003288 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80B4CD88() { - // NONMATCHING -} - -/* 80B4CE84-80B4CE84 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80B4D044-80B4D074 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_YAMIT */ +extern actor_process_profile_definition g_profile_NPC_YAMIT = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_YAMIT, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_yamiT_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 316, // mPriority + &daNpc_yamiT_MethodTable, // sub_method + 0x00044107, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};