From 4635fcb666d7c5f256016d733584712a55f1c130 Mon Sep 17 00:00:00 2001 From: hev7 <143887945+hev7@users.noreply.github.com> Date: Thu, 25 Sep 2025 16:20:14 +0100 Subject: [PATCH] d_a_npc_lud matching (#2694) * d_a_npc_lud matching * Fixes --- configure.py | 4 +- include/d/actor/d_a_npc.h | 5 + include/d/actor/d_a_npc_lud.h | 142 +- include/d/actor/d_a_npc_moi.h | 40 +- src/d/actor/d_a_npc_lud.cpp | 2856 +++++++++++++++------------------ src/d/actor/d_a_npc_moi.cpp | 306 ++-- 6 files changed, 1546 insertions(+), 1807 deletions(-) diff --git a/configure.py b/configure.py index 71e4494f63b..2190f7e3315 100755 --- a/configure.py +++ b/configure.py @@ -1860,7 +1860,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_kyury"), ActorRel(NonMatching, "d_a_npc_len"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_lf"), - ActorRel(NonMatching, "d_a_npc_lud"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_lud"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_midp"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_mk"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_moi"), @@ -1902,7 +1902,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_tks", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_toby"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tr"), - ActorRel(NonMatching, "d_a_npc_uri"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_uri"), 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"), diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index c4e4b662b58..4f79103d66b 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -182,6 +182,11 @@ public: sVar3 * (1.0f / param_4); } + void setEyeAngleY(s16 param_1, f32 param_2) { + mEyeAngle.y = field_0x132.y * (1.0f - 1.0f / param_2) + + param_1 * (1.0f / param_2); + } + s16 getEyeAngleX() { return mEyeAngle.x; } s16 getEyeAngleY() { return mEyeAngle.y; } diff --git a/include/d/actor/d_a_npc_lud.h b/include/d/actor/d_a_npc_lud.h index 0d405199423..1bea412e64e 100644 --- a/include/d/actor/d_a_npc_lud.h +++ b/include/d/actor/d_a_npc_lud.h @@ -11,73 +11,115 @@ * @details * */ -class daNpc_Lud_c : public fopAc_ac_c { + +struct daNpc_Lud_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ f32 play_speed; +}; + +class daNpc_Lud_Param_c { public: + /* 80A6FD10 */ virtual ~daNpc_Lud_Param_c() {} + + static const daNpc_Lud_HIOParam m; +}; + +class daNpc_Lud_c : public daNpcT_c { +public: + typedef int (daNpc_Lud_c::*actionFunc)(void*); + typedef int (daNpc_Lud_c::*cutFunc)(int); + /* 80A6ABAC */ ~daNpc_Lud_c(); - /* 80A6ACF4 */ void create(); - /* 80A6AFA8 */ void CreateHeap(); - /* 80A6B5FC */ void Delete(); - /* 80A6B630 */ void Execute(); - /* 80A6B650 */ void Draw(); - /* 80A6B6E4 */ void createHeapCallBack(fopAc_ac_c*); - /* 80A6B704 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80A6B75C */ void getType(); - /* 80A6B7CC */ void isDelete(); + /* 80A6ACF4 */ int create(); + /* 80A6AFA8 */ int CreateHeap(); + /* 80A6B5FC */ int Delete(); + /* 80A6B630 */ int Execute(); + /* 80A6B650 */ int Draw(); + /* 80A6B6E4 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80A6B704 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80A6B75C */ u8 getType(); + /* 80A6B7CC */ BOOL isDelete(); /* 80A6B954 */ void reset(); /* 80A6BB1C */ void afterJntAnm(int); /* 80A6BBA8 */ void setParam(); - /* 80A6BD44 */ void checkChangeEvt(); + /* 80A6BD44 */ BOOL checkChangeEvt(); /* 80A6BE6C */ void setAfterTalkMotion(); /* 80A6BEE4 */ void srchActors(); - /* 80A6BFA4 */ void evtTalk(); - /* 80A6C044 */ void evtCutProc(); + /* 80A6BFA4 */ BOOL evtTalk(); + /* 80A6C044 */ BOOL evtCutProc(); /* 80A6C10C */ void action(); /* 80A6C2E4 */ void beforeMove(); /* 80A6C3A8 */ void setAttnPos(); /* 80A6C8EC */ void setCollision(); - /* 80A6CA9C */ bool drawDbgInfo(); + /* 80A6CA9C */ int drawDbgInfo(); /* 80A6CAA4 */ void drawOtherMdl(); - /* 80A6CC2C */ void setBowlAnm(int, int, f32); - /* 80A6CCFC */ void afterSetMotionAnm(int, int, f32, int); - /* 80A6CD30 */ void selectAction(); - /* 80A6CDF4 */ void chkAction(int (daNpc_Lud_c::*)(void*)); - /* 80A6CE20 */ void setAction(int (daNpc_Lud_c::*)(void*)); + /* 80A6CC2C */ bool setBowlAnm(int, int, f32); + /* 80A6CCFC */ bool afterSetMotionAnm(int, int, f32, int); + /* 80A6CD30 */ int selectAction(); + /* 80A6CDF4 */ BOOL chkAction(actionFunc); + /* 80A6CE20 */ int setAction(actionFunc); /* 80A6CEC8 */ void mop(int, int); - /* 80A6D01C */ void cutHurry(int); - /* 80A6D160 */ void cutConversationInHotel(int); - /* 80A6D450 */ void cutConversationAboutDeathMt(int); - /* 80A6D708 */ void cutConversationAboutGoron(int); - /* 80A6D998 */ void cutNurse(int); - /* 80A6DC48 */ void cutClothTry(int); - /* 80A6DCE8 */ void cutThankYou(int); - /* 80A6DE14 */ void wait(void*); - /* 80A6E32C */ void nurse(void*); - /* 80A6E6EC */ void giveSoup(void*); - /* 80A6E7EC */ void talk(void*); - /* 80A6FC04 */ daNpc_Lud_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**); - /* 80A6FCD0 */ u16 getEyeballMaterialNo(); - /* 80A6FCD8 */ s32 getHeadJointNo(); - /* 80A6FCE0 */ s32 getNeckJointNo(); - /* 80A6FCE8 */ bool getBackboneJointNo(); - /* 80A6FCF0 */ void checkChangeJoint(int); - /* 80A6FD00 */ void checkRemoveJoint(int); + /* 80A6D01C */ int cutHurry(int); + /* 80A6D160 */ int cutConversationInHotel(int); + /* 80A6D450 */ int cutConversationAboutDeathMt(int); + /* 80A6D708 */ int cutConversationAboutGoron(int); + /* 80A6D998 */ int cutNurse(int); + /* 80A6DC48 */ int cutClothTry(int); + /* 80A6DCE8 */ int cutThankYou(int); + /* 80A6DE14 */ int wait(void*); + /* 80A6E32C */ int nurse(void*); + /* 80A6E6EC */ int giveSoup(void*); + /* 80A6E7EC */ int talk(void*); + /* 80A6FC04 */ daNpc_Lud_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) {} + /* 80A6FCD0 */ u16 getEyeballMaterialNo() { return 1; } + /* 80A6FCD8 */ s32 getHeadJointNo() { return 4; } + /* 80A6FCE0 */ s32 getNeckJointNo() { return 3; } + /* 80A6FCE8 */ s32 getBackboneJointNo() { return 1; } + /* 80A6FCF0 */ BOOL checkChangeJoint(int param_0) { return param_0 == 4; } + /* 80A6FD00 */ BOOL checkRemoveJoint(int param_0) { return param_0 == 10; } + + int getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; + } + u8 getBitSW() { return (fopAcM_GetParam(this) & 0xff0000) >> 16; } + + static char* mCutNameList[8]; + static cutFunc mCutList[8]; - static void* mCutNameList[8]; - static u8 mCutList[96]; private: - /* 0x568 */ u8 field_0x568[0xfdc - 0x568]; + /* 0xE40 */ mDoExt_McaMorfSO* mpBowlMorf; + /* 0xE44 */ u8 field_0xe44[0xe48 - 0xe44]; + /* 0xE48 */ J3DModel* mpModel[2]; + /* 0xE50 */ dCcD_Cyl mCyl; + /* 0xF8C */ u8 mType; + /* 0xF90 */ daNpcT_ActorMngr_c mActorMngr[3]; + /* 0xFA8 */ actionFunc field_0xfa8; + /* 0xFB4 */ actionFunc mAction; + /* 0xFC0 */ int field_0xfc0; + /* 0xFC4 */ int field_0xfc4; + /* 0xFC8 */ int field_0xfc8; + /* 0xFCC */ int field_0xfcc; + /* 0xFD0 */ s16 field_0xfd0; + /* 0xFD2 */ u8 field_0xfd2; + /* 0xFD3 */ u8 field_0xfd3; + /* 0xFD4 */ u8 field_0xfd4; + /* 0xFD5 */ u8 field_0xfd5; + /* 0xFD8 */ int field_0xfd8; }; STATIC_ASSERT(sizeof(daNpc_Lud_c) == 0xfdc); -class daNpc_Lud_Param_c { -public: - /* 80A6FD10 */ ~daNpc_Lud_Param_c(); - - static u8 const m[144]; -}; - #endif /* D_A_NPC_LUD_H */ diff --git a/include/d/actor/d_a_npc_moi.h b/include/d/actor/d_a_npc_moi.h index 142d25fe891..5b15e11aa45 100644 --- a/include/d/actor/d_a_npc_moi.h +++ b/include/d/actor/d_a_npc_moi.h @@ -13,32 +13,8 @@ */ struct daNpc_Moi_HIOParam { - /* 0x00 */ f32 field_0x00; - /* 0x04 */ f32 field_0x04; - /* 0x08 */ f32 field_0x08; - /* 0x0C */ f32 field_0x0c; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ f32 field_0x14; - /* 0x18 */ f32 field_0x18; - /* 0x1C */ f32 field_0x1c; - /* 0x20 */ f32 field_0x20; - /* 0x24 */ f32 field_0x24; - /* 0x28 */ f32 field_0x28; - /* 0x2C */ f32 field_0x2c; - /* 0x30 */ f32 field_0x30; - /* 0x34 */ f32 field_0x34; - /* 0x38 */ f32 field_0x38; - /* 0x3C */ f32 field_0x3c; - /* 0x40 */ f32 field_0x40; - /* 0x44 */ f32 field_0x44; - /* 0x48 */ s16 field_0x48; - /* 0x4A */ s16 field_0x4a; - /* 0x4C */ s16 field_0x4c; - /* 0x4E */ s16 field_0x4e; - /* 0x50 */ f32 field_0x50; - /* 0x54 */ u8 field_0x54[24]; - /* 0x6C */ f32 field_0x6c; - /* 0x70 */ u8 field_0x70[40]; + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ u8 field_0x70[12]; /* 0x98 */ s16 field_0x98; /* 0x9A */ s16 field_0x9a; /* 0x9C */ s16 field_0x9c; @@ -55,7 +31,7 @@ class daNpc_Moi_Param_c { public: /* 80A7AE84 */ virtual ~daNpc_Moi_Param_c() {}; - static daNpc_Moi_HIOParam const m; + static const daNpc_Moi_HIOParam m; }; class daNpc_Moi_HIO_c @@ -146,7 +122,13 @@ public: : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) {} - /* 80A7AE0C */ u16 getEyeballMaterialNo() { if (chkMoiN()) { return 4; } else { return 2; } } + /* 80A7AE0C */ u16 getEyeballMaterialNo() { + if (chkMoiN()) { + return 4; + } else { + return 2; + } + } /* 80A7AE3C */ s32 getHeadJointNo() { return 4; } /* 80A7AE44 */ s32 getNeckJointNo() { return 3; } /* 80A7AE4C */ s32 getBackboneJointNo() { return 1; } @@ -166,7 +148,7 @@ public: bool chkSFight() { return field_0x166b == 1; } u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; } - static const char* mCutNameList[5]; + static char* mCutNameList[5]; static cutFunc mCutList[5]; private: diff --git a/src/d/actor/d_a_npc_lud.cpp b/src/d/actor/d_a_npc_lud.cpp index d072e8da065..efa0fc1ef64 100644 --- a/src/d/actor/d_a_npc_lud.cpp +++ b/src/d/actor/d_a_npc_lud.cpp @@ -1,1755 +1,1551 @@ /** * @file d_a_npc_lud.cpp - * + * */ #include "d/dolzel_rel.h" +#include "d/actor/d_a_npc_len.h" #include "d/actor/d_a_npc_lud.h" -#include "dol2asm.h" -// -// Forward References: -// +enum Type { + /* 0x0 */ TYPE_0, + /* 0x1 */ TYPE_1, + /* 0x2 */ TYPE_2, + /* 0x3 */ TYPE_3, + /* 0x4 */ TYPE_4, + /* 0x5 */ TYPE_5, + /* 0x6 */ TYPE_6, + /* 0x7 */ TYPE_7, + /* 0x8 */ TYPE_8, +}; -extern "C" void __dt__11daNpc_Lud_cFv(); -extern "C" void create__11daNpc_Lud_cFv(); -extern "C" void CreateHeap__11daNpc_Lud_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__11daNpc_Lud_cFv(); -extern "C" void Execute__11daNpc_Lud_cFv(); -extern "C" void Draw__11daNpc_Lud_cFv(); -extern "C" void createHeapCallBack__11daNpc_Lud_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__11daNpc_Lud_cFP8J3DJointi(); -extern "C" void getType__11daNpc_Lud_cFv(); -extern "C" void isDelete__11daNpc_Lud_cFv(); -extern "C" void reset__11daNpc_Lud_cFv(); -extern "C" void afterJntAnm__11daNpc_Lud_cFi(); -extern "C" void setParam__11daNpc_Lud_cFv(); -extern "C" void checkChangeEvt__11daNpc_Lud_cFv(); -extern "C" void setAfterTalkMotion__11daNpc_Lud_cFv(); -extern "C" void srchActors__11daNpc_Lud_cFv(); -extern "C" void evtTalk__11daNpc_Lud_cFv(); -extern "C" void evtCutProc__11daNpc_Lud_cFv(); -extern "C" void action__11daNpc_Lud_cFv(); -extern "C" void beforeMove__11daNpc_Lud_cFv(); -extern "C" void setAttnPos__11daNpc_Lud_cFv(); -extern "C" void setCollision__11daNpc_Lud_cFv(); -extern "C" bool drawDbgInfo__11daNpc_Lud_cFv(); -extern "C" void drawOtherMdl__11daNpc_Lud_cFv(); -extern "C" void setBowlAnm__11daNpc_Lud_cFiif(); -extern "C" void afterSetMotionAnm__11daNpc_Lud_cFiifi(); -extern "C" void selectAction__11daNpc_Lud_cFv(); -extern "C" void chkAction__11daNpc_Lud_cFM11daNpc_Lud_cFPCvPvPv_i(); -extern "C" void setAction__11daNpc_Lud_cFM11daNpc_Lud_cFPCvPvPv_i(); -extern "C" void mop__11daNpc_Lud_cFii(); -extern "C" void cutHurry__11daNpc_Lud_cFi(); -extern "C" void cutConversationInHotel__11daNpc_Lud_cFi(); -extern "C" void cutConversationAboutDeathMt__11daNpc_Lud_cFi(); -extern "C" void cutConversationAboutGoron__11daNpc_Lud_cFi(); -extern "C" void cutNurse__11daNpc_Lud_cFi(); -extern "C" void cutClothTry__11daNpc_Lud_cFi(); -extern "C" void cutThankYou__11daNpc_Lud_cFi(); -extern "C" void wait__11daNpc_Lud_cFPv(); -extern "C" void nurse__11daNpc_Lud_cFPv(); -extern "C" void giveSoup__11daNpc_Lud_cFPv(); -extern "C" void talk__11daNpc_Lud_cFPv(); -extern "C" static void daNpc_Lud_Create__FPv(); -extern "C" static void daNpc_Lud_Delete__FPv(); -extern "C" static void daNpc_Lud_Execute__FPv(); -extern "C" static void daNpc_Lud_Draw__FPv(); -extern "C" static bool daNpc_Lud_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__18daNpcT_ActorMngr_cFv(); -extern "C" void __ct__18daNpcT_ActorMngr_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__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 evtEndProc__8daNpcT_cFv(); -extern "C" void afterMoved__8daNpcT_cFv(); -extern "C" bool chkXYItems__8daNpcT_cFv(); -extern "C" void decTmr__8daNpcT_cFv(); -extern "C" void drawGhost__8daNpcT_cFv(); -extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi(); -extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c(); -extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c(); -extern "C" void changeAnm__8daNpcT_cFPiPi(); -extern "C" void changeBck__8daNpcT_cFPiPi(); -extern "C" void changeBtp__8daNpcT_cFPiPi(); -extern "C" void changeBtk__8daNpcT_cFPiPi(); -extern "C" void func_80A6FAD4(void* _this, int*); -extern "C" void __sinit_d_a_npc_lud_cpp(); -extern "C" void -__ct__11daNpc_Lud_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" u16 getEyeballMaterialNo__11daNpc_Lud_cFv(); -extern "C" s32 getHeadJointNo__11daNpc_Lud_cFv(); -extern "C" s32 getNeckJointNo__11daNpc_Lud_cFv(); -extern "C" bool getBackboneJointNo__11daNpc_Lud_cFv(); -extern "C" void checkChangeJoint__11daNpc_Lud_cFi(); -extern "C" void checkRemoveJoint__11daNpc_Lud_cFi(); -extern "C" void __dt__17daNpc_Lud_Param_cFv(); -extern "C" static void func_80A6FD58(); -extern "C" static void func_80A6FD60(); -extern "C" u8 const m__17daNpc_Lud_Param_c[144]; -extern "C" extern char const* const d_a_npc_lud__stringBase0; -extern "C" void* mCutNameList__11daNpc_Lud_c[8]; -extern "C" u8 mCutList__11daNpc_Lud_c[96]; +enum FaceMotion { + /* 0x01 */ FACE_MOT_UNK_1 = 1, + /* 0x02 */ FACE_MOT_UNK_2 = 2, + /* 0x03 */ FACE_MOT_UNK_3 = 3, + /* 0x04 */ FACE_MOT_UNK_4 = 4, + /* 0x05 */ FACE_MOT_UNK_5 = 5, + /* 0x06 */ FACE_MOT_UNK_6 = 6, + /* 0x07 */ FACE_MOT_UNK_7 = 7, + /* 0x08 */ FACE_MOT_UNK_8 = 8, + /* 0x09 */ FACE_MOT_UNK_9 = 9, + /* 0x0B */ FACE_MOT_UNK_11 = 11, + /* 0x0C */ FACE_MOT_UNK_12 = 12, + /* 0x0D */ FACE_MOT_UNK_13 = 13, + /* 0x0E */ FACE_MOT_UNK_14 = 14, + /* 0x0F */ FACE_MOT_UNK_15 = 15, + /* 0x10 */ FACE_MOT_UNK_16 = 16, + /* 0x11 */ FACE_MOT_UNK_17 = 17, + /* 0x12 */ FACE_MOT_UNK_18 = 18, +}; -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -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 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 getRunEventName__16dEvent_manager_cFv(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void addReal__21dDlst_shadowControl_cFUlP8J3DModel(); -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 GetTgHitObj__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 checkEndSequence__22daNpcT_MotionSeqMngr_cFv(); -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 setParam__19daNpcT_DmgStagger_cFP10fopAc_ac_cP10fopAc_ac_cs(); -extern "C" void calc__19daNpcT_DmgStagger_cFi(); -extern "C" void tgHitCallBack__8daNpcT_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" void getTrnsfrmKeyAnmP__8daNpcT_cFPCci(); -extern "C" void loadRes__8daNpcT_cFPCScPPCc(); -extern "C" void deleteRes__8daNpcT_cFPCScPPCc(); -extern "C" void execute__8daNpcT_cFv(); -extern "C" void draw__8daNpcT_cFiifP11_GXColorS10fiii(); -extern "C" void setEnvTevColor__8daNpcT_cFv(); -extern "C" void setRoomNo__8daNpcT_cFv(); -extern "C" void ctrlBtk__8daNpcT_cFv(); -extern "C" void setMtx__8daNpcT_cFv(); -extern "C" void ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel(); -extern "C" void evtProc__8daNpcT_cFv(); -extern "C" void setFootPos__8daNpcT_cFv(); -extern "C" void setFootPrtcl__8daNpcT_cFP4cXyzff(); -extern "C" bool checkCullDraw__8daNpcT_cFv(); -extern "C" void twilight__8daNpcT_cFv(); -extern "C" void evtOrder__8daNpcT_cFv(); -extern "C" void evtChange__8daNpcT_cFv(); -extern "C" void clrParam__8daNpcT_cFv(); -extern "C" void setFaceMotionAnm__8daNpcT_cFib(); -extern "C" void setMotionAnm__8daNpcT_cFifi(); -extern "C" void setAngle__8daNpcT_cF5csXyz(); -extern "C" void setAngle__8daNpcT_cFs(); -extern "C" void hitChk__8daNpcT_cFP12dCcD_GObjInfUl(); -extern "C" void setDamage__8daNpcT_cFiii(); -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 getNearestActorP__8daNpcT_cFs(); -extern "C" void daNpcT_getDistTableIdx__Fii(); -extern "C" void daNpcT_chkEvtBit__FUl(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -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_chaseS__FPsss(); -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 hide__13J3DShapeTableFv(); -extern "C" void show__13J3DShapeTableFv(); -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_24(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_26(); -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" void checkStartDemo13StbEvt__11daNpc_Len_cFP10fopAc_ac_cfffffff(); -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80A6FECC-80A6FECC 000150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A6FECC = ""; -SECTION_DEAD static char const* const stringBase_80A6FECD = "NO_RESPONSE"; -SECTION_DEAD static char const* const stringBase_80A6FED9 = "DEMO13_STB"; -SECTION_DEAD static char const* const stringBase_80A6FEE4 = "CONVERSATION_ABOUT_GORON"; -SECTION_DEAD static char const* const stringBase_80A6FEFD = "NURSE"; -SECTION_DEAD static char const* const stringBase_80A6FF03 = "GO_AHEAD"; -SECTION_DEAD static char const* const stringBase_80A6FF0C = "Lud"; -SECTION_DEAD static char const* const stringBase_80A6FF10 = "Lud_TW"; -SECTION_DEAD static char const* const stringBase_80A6FF17 = "Lud1"; -SECTION_DEAD static char const* const stringBase_80A6FF1C = "Lud2"; -SECTION_DEAD static char const* const stringBase_80A6FF21 = "Len1"; -SECTION_DEAD static char const* const stringBase_80A6FF26 = "HURRY"; -SECTION_DEAD static char const* const stringBase_80A6FF2C = "CONVERSATION_IN_HOTEL"; -SECTION_DEAD static char const* const stringBase_80A6FF42 = "CONVERSATION_ABOUT_DEATHMT"; -SECTION_DEAD static char const* const stringBase_80A6FF5D = "CLOTH_TRY"; -SECTION_DEAD static char const* const stringBase_80A6FF67 = "THANK_YOU"; -#pragma pop +enum Motion { + /* 0x00 */ MOT_UNK_0 = 0, + /* 0x01 */ MOT_UNK_1 = 1, + /* 0x02 */ MOT_UNK_2 = 2, + /* 0x03 */ MOT_UNK_3 = 3, + /* 0x04 */ MOT_UNK_4 = 4, + /* 0x06 */ MOT_UNK_6 = 6, + /* 0x07 */ MOT_UNK_7 = 7, + /* 0x08 */ MOT_UNK_8 = 8, + /* 0x09 */ MOT_UNK_9 = 9, + /* 0x0A */ MOT_UNK_10 = 10, + /* 0x0B */ MOT_UNK_11 = 11, + /* 0x0C */ MOT_UNK_12 = 12, + /* 0x0D */ MOT_UNK_13 = 13, + /* 0x0E */ MOT_UNK_14 = 14, + /* 0x0F */ MOT_UNK_15 = 15, + /* 0x10 */ MOT_UNK_16 = 16, + /* 0x11 */ MOT_UNK_17 = 17, + /* 0x12 */ MOT_UNK_18 = 18, + /* 0x13 */ MOT_UNK_19 = 19, +}; /* 80A6FFEC-80A70014 000020 0028+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[40] = { - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x28, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, +static int l_bmdData[5][2] = { + {11, 1}, {11, 2}, {39, 4}, {40, 4}, {38, 4}, }; /* 80A70014-80A70044 -00001 0030+00 0/1 0/0 0/0 .data l_evtList */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_evtList[12] = { - (void*)&d_a_npc_lud__stringBase0, - (void*)NULL, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x1), - (void*)NULL, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0xD), - (void*)NULL, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x18), - (void*)0x00000004, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x31), - (void*)0x00000004, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x37), - (void*)0x00000004, +static daNpcT_evtData_c l_evtList[6] = { + {"", 0}, {"NO_RESPONSE", 0}, {"DEMO13_STB", 0}, {"CONVERSATION_ABOUT_GORON", 4}, + {"NURSE", 4}, {"GO_AHEAD", 4}, }; -#pragma pop /* 80A70044-80A7005C -00001 0018+00 3/4 0/0 0/0 .data l_resNameList */ -SECTION_DATA static void* l_resNameList[6] = { - (void*)&d_a_npc_lud__stringBase0, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x40), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x44), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x4B), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x50), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x55), +static char* l_resNameList[6] = { + "", "Lud", "Lud_TW", "Lud1", "Lud2", "Len1", }; /* 80A7005C-80A70060 000090 0003+01 1/0 0/0 0/0 .data l_loadResPtrn0 */ -SECTION_DATA static u8 l_loadResPtrn0[3 + 1 /* padding */] = { - 0x01, - 0x03, - 0xFF, - /* padding */ - 0x00, +static s8 l_loadResPtrn0[3] = { + 1, + 3, + -1, }; /* 80A70060-80A70064 000094 0003+01 1/0 0/0 0/0 .data l_loadResPtrn1 */ -SECTION_DATA static u8 l_loadResPtrn1[3 + 1 /* padding */] = { - 0x01, - 0x02, - 0xFF, - /* padding */ - 0x00, +static s8 l_loadResPtrn1[3] = { + 1, + 2, + -1, }; /* 80A70064-80A70068 000098 0003+01 1/0 0/0 0/0 .data l_loadResPtrn2 */ -SECTION_DATA static u8 l_loadResPtrn2[3 + 1 /* padding */] = { - 0x01, - 0x04, - 0xFF, - /* padding */ - 0x00, +static s8 l_loadResPtrn2[3] = { + 1, + 4, + -1, }; /* 80A70068-80A70070 00009C 0005+03 1/0 0/0 0/0 .data l_loadResPtrn9 */ -SECTION_DATA static u8 l_loadResPtrn9[5 + 3 /* padding */] = { - 0x01, - 0x02, - 0x03, - 0x04, - 0xFF, - /* padding */ - 0x00, - 0x00, - 0x00, +s8 l_loadResPtrn9[5] = { + 1, 2, 3, 4, -1, }; /* 80A70070-80A70094 -00001 0024+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList[9] = { - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn1, (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn2, (void*)&l_loadResPtrn2, - (void*)&l_loadResPtrn2, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn9, +static s8* l_loadResPtrnList[9] = { + l_loadResPtrn0, l_loadResPtrn1, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn2, + l_loadResPtrn2, l_loadResPtrn2, l_loadResPtrn0, l_loadResPtrn9, }; /* 80A70094-80A702C4 0000C8 0230+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[560] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 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, 0x11, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x39, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x35, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[20] = { + {-1, 0, 0, 17, 2, 1, 1}, {6, 0, 1, 17, 2, 1, 1}, {18, 2, 4, 51, 2, 4, 0}, + {15, 0, 4, 48, 0, 4, 0}, {16, 2, 4, 49, 2, 4, 0}, {17, 0, 4, 50, 0, 4, 0}, + {21, 0, 4, 54, 0, 4, 0}, {22, 0, 4, 55, 0, 4, 0}, {24, 2, 4, 57, 2, 4, 0}, + {23, 0, 4, 56, 0, 4, 0}, {13, 0, 4, 46, 0, 4, 0}, {10, 0, 4, 43, 0, 4, 0}, + {11, 2, 4, 44, 2, 4, 0}, {12, 0, 4, 45, 0, 4, 0}, {14, 2, 4, 47, 2, 4, 0}, + {19, 2, 4, 52, 2, 4, 0}, {20, 2, 4, 53, 2, 4, 0}, {4, 2, 3, 10, 2, 3, 0}, + {8, 2, 2, 15, 2, 2, 0}, {7, 2, 2, 14, 2, 2, 0}, }; -#pragma pop /* 80A702C4-80A70510 0002F8 024C+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[588] = { - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpcT_motionAnmData_c l_motionAnmData[21] = { + {8, 2, 1, 14, 0, 1, 1, 0}, {6, 0, 3, 14, 0, 1, 1, 0}, {7, 0, 3, 14, 0, 1, 1, 0}, + {7, 0, 1, 14, 0, 1, 1, 0}, {30, 2, 4, 14, 0, 1, 1, 0}, {33, 0, 4, 14, 0, 1, 1, 0}, + {34, 2, 4, 14, 0, 1, 1, 0}, {35, 0, 4, 14, 0, 1, 1, 0}, {25, 0, 4, 14, 0, 1, 0, 0}, + {27, 0, 4, 14, 0, 1, 0, 0}, {28, 2, 4, 14, 0, 1, 0, 0}, {29, 0, 4, 14, 0, 1, 0, 0}, + {6, 0, 4, 14, 0, 1, 0, 0}, {7, 2, 4, 14, 0, 1, 0, 0}, {8, 0, 4, 14, 0, 1, 0, 0}, + {26, 2, 4, 14, 0, 1, 0, 0}, {31, 2, 4, 14, 0, 1, 0, 0}, {32, 2, 4, 14, 0, 1, 0, 0}, + {5, 2, 3, 14, 0, 1, 0, 0}, {6, 2, 2, -1, 0, 0, 0, 0}, {5, 2, 2, -1, 0, 0, 0, 0}, }; -#pragma pop /* 80A70510-80A70640 000544 0130+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[304] = { - 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x07, 0xFF, 0x01, 0x00, 0x08, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x02, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x06, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x09, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x11, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x08, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0A, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0B, 0xFF, 0x01, 0x00, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0D, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x10, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x12, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x13, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0E, 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[76] = { + {1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {8, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {15, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {3, 0, 1}, {5, 0, 1}, {-1, 0, 0}, {-1, 0, 0}, {3, 0, 1}, + {4, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {5, 0, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {6, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {9, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {17, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {10, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, + {12, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {13, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {16, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {18, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {19, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {14, -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 /* 80A70640-80A70780 000674 0140+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[320] = { - 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, 0x04, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x06, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x10, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x02, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x01, 0x00, 0x0B, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0B, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x05, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x07, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x12, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x08, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0C, 0xFF, 0x01, 0x00, 0x0D, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0E, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x11, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x13, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x14, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[80] = { + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {1, -1, 1}, {0, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {4, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {6, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {16, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 1}, + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {9, 0, 1}, {11, 0, 1}, {-1, 0, 0}, {-1, 0, 0}, + {9, 0, 1}, {10, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, 0, 1}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {5, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {18, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {12, -1, 1}, {13, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {14, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {17, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {19, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {20, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {3, 3, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80A70780-80A707A0 -00001 0020+00 1/1 0/0 0/0 .data mCutNameList__11daNpc_Lud_c */ -SECTION_DATA void* daNpc_Lud_c::mCutNameList[8] = { - (void*)&d_a_npc_lud__stringBase0, - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x5A), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x60), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x76), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x18), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x31), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x91), - (void*)(((char*)&d_a_npc_lud__stringBase0) + 0x9B), +char* daNpc_Lud_c::mCutNameList[8] = { + "", + "HURRY", + "CONVERSATION_IN_HOTEL", + "CONVERSATION_ABOUT_DEATHMT", + "CONVERSATION_ABOUT_GORON", + "NURSE", + "CLOTH_TRY", + "THANK_YOU", }; -/* 80A707A0-80A707AC -00001 000C+00 0/1 0/0 0/0 .data @3833 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3833[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutHurry__11daNpc_Lud_cFi, -}; -#pragma pop - -/* 80A707AC-80A707B8 -00001 000C+00 0/1 0/0 0/0 .data @3834 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3834[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutConversationInHotel__11daNpc_Lud_cFi, -}; -#pragma pop - -/* 80A707B8-80A707C4 -00001 000C+00 0/1 0/0 0/0 .data @3835 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3835[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutConversationAboutDeathMt__11daNpc_Lud_cFi, -}; -#pragma pop - -/* 80A707C4-80A707D0 -00001 000C+00 0/1 0/0 0/0 .data @3836 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3836[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutConversationAboutGoron__11daNpc_Lud_cFi, -}; -#pragma pop - -/* 80A707D0-80A707DC -00001 000C+00 0/1 0/0 0/0 .data @3837 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3837[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutNurse__11daNpc_Lud_cFi, -}; -#pragma pop - -/* 80A707DC-80A707E8 -00001 000C+00 0/1 0/0 0/0 .data @3838 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3838[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutClothTry__11daNpc_Lud_cFi, -}; -#pragma pop - -/* 80A707E8-80A707F4 -00001 000C+00 0/1 0/0 0/0 .data @3839 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3839[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutThankYou__11daNpc_Lud_cFi, -}; -#pragma pop - /* 80A707F4-80A70854 000828 0060+00 1/2 0/0 0/0 .data mCutList__11daNpc_Lud_c */ -SECTION_DATA u8 daNpc_Lud_c::mCutList[96] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80A70854-80A70874 -00001 0020+00 1/1 0/0 0/0 .data @4501 */ -SECTION_DATA static void* lit_4501[8] = { - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x28), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x30), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x38), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x40), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x48), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x50), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x58), - (void*)(((char*)getType__11daNpc_Lud_cFv) + 0x60), -}; - -/* 80A70874-80A70894 -00001 0020+00 1/1 0/0 0/0 .data @4528 */ -SECTION_DATA static void* lit_4528[8] = { - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0x34), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0x64), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0x6C), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0x9C), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0xCC), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0xFC), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0x12C), - (void*)(((char*)isDelete__11daNpc_Lud_cFv) + 0x15C), -}; - -/* 80A70894-80A708A0 -00001 000C+00 1/1 0/0 0/0 .data @4639 */ -SECTION_DATA static void* lit_4639[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Lud_cFPv, -}; - -/* 80A708A0-80A708AC -00001 000C+00 1/1 0/0 0/0 .data @4698 */ -SECTION_DATA static void* lit_4698[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Lud_cFPv, -}; - -/* 80A708AC-80A708B8 -00001 000C+00 1/1 0/0 0/0 .data @4703 */ -SECTION_DATA static void* lit_4703[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Lud_cFPv, -}; - -/* 80A708B8-80A70960 0008EC 00A8+00 1/1 0/0 0/0 .data bowlAnmData$5135 */ -SECTION_DATA static u8 bowlAnmData[168] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80A70960-80A7096C -00001 000C+00 0/1 0/0 0/0 .data @5162 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5162[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)nurse__11daNpc_Lud_cFPv, -}; -#pragma pop - -/* 80A7096C-80A70978 -00001 000C+00 0/1 0/0 0/0 .data @5164 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5164[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)giveSoup__11daNpc_Lud_cFPv, -}; -#pragma pop - -/* 80A70978-80A70984 -00001 000C+00 0/1 0/0 0/0 .data @5166 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5166[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)nurse__11daNpc_Lud_cFPv, -}; -#pragma pop - -/* 80A70984-80A70990 -00001 000C+00 0/1 0/0 0/0 .data @5168 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5168[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpc_Lud_cFPv, -}; -#pragma pop - -/* 80A70990-80A709B0 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Lud_MethodTable */ -static actor_method_class daNpc_Lud_MethodTable = { - (process_method_func)daNpc_Lud_Create__FPv, - (process_method_func)daNpc_Lud_Delete__FPv, - (process_method_func)daNpc_Lud_Execute__FPv, - (process_method_func)daNpc_Lud_IsDelete__FPv, - (process_method_func)daNpc_Lud_Draw__FPv, -}; - -/* 80A709B0-80A709E0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_LUD */ -extern actor_process_profile_definition g_profile_NPC_LUD = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_LUD, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_Lud_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 338, // mPriority - &daNpc_Lud_MethodTable, // sub_method - 0x00040108, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80A709E0-80A709EC 000A14 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, -}; - -/* 80A709EC-80A709F8 000A20 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, -}; - -/* 80A709F8-80A70A1C 000A2C 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_80A6FD60, - (void*)NULL, - (void*)NULL, - (void*)func_80A6FD58, -}; - -/* 80A70A1C-80A70A28 000A50 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, -}; - -/* 80A70A28-80A70A34 000A5C 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, -}; - -/* 80A70A34-80A70A40 000A68 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, -}; - -/* 80A70A40-80A70A4C 000A74 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, -}; - -/* 80A70A4C-80A70A58 000A80 000C+00 5/5 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, -}; - -/* 80A70A58-80A70A64 000A8C 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, -}; - -/* 80A70A64-80A70A70 000A98 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, -}; - -/* 80A70A70-80A70A7C 000AA4 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, -}; - -/* 80A70A7C-80A70B40 000AB0 00C4+00 2/2 0/0 0/0 .data __vt__11daNpc_Lud_c */ -SECTION_DATA extern void* __vt__11daNpc_Lud_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daNpc_Lud_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__8daNpcT_cFi, - (void*)checkChangeJoint__11daNpc_Lud_cFi, - (void*)checkRemoveJoint__11daNpc_Lud_cFi, - (void*)getBackboneJointNo__11daNpc_Lud_cFv, - (void*)getNeckJointNo__11daNpc_Lud_cFv, - (void*)getHeadJointNo__11daNpc_Lud_cFv, - (void*)getFootLJointNo__8daNpcT_cFv, - (void*)getFootRJointNo__8daNpcT_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__11daNpc_Lud_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__11daNpc_Lud_cFi, - (void*)setParam__11daNpc_Lud_cFv, - (void*)checkChangeEvt__11daNpc_Lud_cFv, - (void*)evtTalk__11daNpc_Lud_cFv, - (void*)evtEndProc__8daNpcT_cFv, - (void*)evtCutProc__11daNpc_Lud_cFv, - (void*)setAfterTalkMotion__11daNpc_Lud_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__11daNpc_Lud_cFv, - (void*)beforeMove__11daNpc_Lud_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__11daNpc_Lud_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__11daNpc_Lud_cFv, - (void*)setFootPrtcl__8daNpcT_cFP4cXyzff, - (void*)checkCullDraw__8daNpcT_cFv, - (void*)twilight__8daNpcT_cFv, - (void*)chkXYItems__8daNpcT_cFv, - (void*)evtOrder__8daNpcT_cFv, - (void*)decTmr__8daNpcT_cFv, - (void*)clrParam__8daNpcT_cFv, - (void*)drawDbgInfo__11daNpc_Lud_cFv, - (void*)drawOtherMdl__11daNpc_Lud_cFv, - (void*)drawGhost__8daNpcT_cFv, - (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi, - (void*)afterSetMotionAnm__11daNpc_Lud_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_Lud_c::cutFunc daNpc_Lud_c::mCutList[8] = { + NULL, + &daNpc_Lud_c::cutHurry, + &daNpc_Lud_c::cutConversationInHotel, + &daNpc_Lud_c::cutConversationAboutDeathMt, + &daNpc_Lud_c::cutConversationAboutGoron, + &daNpc_Lud_c::cutNurse, + &daNpc_Lud_c::cutClothTry, + &daNpc_Lud_c::cutThankYou, }; /* 80A6ABAC-80A6ACF4 0000EC 0148+00 1/0 0/0 0/0 .text __dt__11daNpc_Lud_cFv */ daNpc_Lud_c::~daNpc_Lud_c() { - // NONMATCHING + if (mpMorf[0] != NULL) { + mpMorf[0]->stopZelAnime(); + } + + if (mpBowlMorf != NULL) { + mpBowlMorf->stopZelAnime(); + } + + deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList); } -/* ############################################################################################## */ /* 80A6FD7C-80A6FE0C 000000 0090+00 10/10 0/0 0/0 .rodata m__17daNpc_Lud_Param_c */ -SECTION_RODATA u8 const daNpc_Lud_Param_c::m[144] = { - 0x43, 0x20, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0xC1, 0xF0, 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, - 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x70, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, - 0x42, 0x20, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x42, 0xB4, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, +const daNpc_Lud_HIOParam daNpc_Lud_Param_c::m = { + 160.0f, -3.0f, 1.0f, 400.0f, 255.0f, 150.0f, 35.0f, 30.0f, 0.0f, 0.0f, 30.0f, + -30.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6, + 110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0, + 4.0f, -15.0f, 0.0f, -15.0f, 15.0f, 40.0f, 15.0f, 90.0f, 1.0f, }; -COMPILER_STRIP_GATE(0x80A6FD7C, &daNpc_Lud_Param_c::m); - -/* 80A6FE0C-80A6FE30 000090 0024+00 0/1 0/0 0/0 .rodata heapSize$3993 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const heapSize[36] = { - 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x3E, 0xF0, - 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x46, 0xD0, 0x00, 0x00, 0x50, 0x00, - 0x00, 0x00, 0x46, 0xE0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FE0C, &heapSize); -#pragma pop - -/* 80A6FE30-80A6FE34 0000B4 0004+00 0/1 0/0 0/0 .rodata @4059 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4059 = -200.0f; -COMPILER_STRIP_GATE(0x80A6FE30, &lit_4059); -#pragma pop - -/* 80A6FE34-80A6FE38 0000B8 0004+00 0/1 0/0 0/0 .rodata @4060 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4060 = -100.0f; -COMPILER_STRIP_GATE(0x80A6FE34, &lit_4060); -#pragma pop - -/* 80A6FE38-80A6FE3C 0000BC 0004+00 0/1 0/0 0/0 .rodata @4061 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4061 = 200.0f; -COMPILER_STRIP_GATE(0x80A6FE38, &lit_4061); -#pragma pop - -/* 80A6FE3C-80A6FE40 0000C0 0004+00 0/1 0/0 0/0 .rodata @4062 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4062 = 300.0f; -COMPILER_STRIP_GATE(0x80A6FE3C, &lit_4062); -#pragma pop - -/* 80A6FE40-80A6FE44 0000C4 0004+00 0/1 0/0 0/0 .rodata @4063 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4063 = -1000000000.0f; -COMPILER_STRIP_GATE(0x80A6FE40, &lit_4063); -#pragma pop /* 80A6ACF4-80A6AFA8 000234 02B4+00 1/1 0/0 0/0 .text create__11daNpc_Lud_cFv */ -void daNpc_Lud_c::create() { - // NONMATCHING +int daNpc_Lud_c::create() { + static int const heapSize[9] = { + 0x3EF0, 0x3EF0, 0x3EF0, 0x3EF0, 0x46D0, 0x5000, 0x46E0, 0x3EF0, 0x0, + }; + + fopAcM_SetupActor2(this, daNpc_Lud_c, (daNpcT_faceMotionAnmData_c const*)l_faceMotionAnmData, + (const daNpcT_motionAnmData_c*)l_motionAnmData, + (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData, + 4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData, + 4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList); + + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = dKy_darkworld_check(); + + int phase = loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList); + if (phase == cPhs_COMPLEATE_e) { + if (isDelete()) { + return cPhs_ERROR_e; + } + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, heapSize[mType])) { + return cPhs_ERROR_e; + } + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -200.0f, -100.0f, -200.0f, 200.0f, 300.0f, 200.0f); + mSound.init(¤t.pos, &eyePos, 3, 1); + reset(); + 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(daNpc_Lud_Param_c::m.common.weight, 0, this); + mCyl.Set(mCcDCyl); + mCyl.SetStts(&mCcStts); + mCyl.SetTgHitCallback(tgHitCallBack); + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + if (mGroundH != -1000000000.0f) { + setEnvTevColor(); + setRoomNo(); + } + mCreating = true; + Execute(); + mCreating = false; + } + + return phase; } -/* ############################################################################################## */ -/* 80A6FE44-80A6FE48 0000C8 0004+00 10/18 0/0 0/0 .rodata @4218 */ -SECTION_RODATA static u8 const lit_4218[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FE44, &lit_4218); - -/* 80A6FE48-80A6FE4C 0000CC 0004+00 0/2 0/0 0/0 .rodata @4219 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4219 = 65536.0f; -COMPILER_STRIP_GATE(0x80A6FE48, &lit_4219); -#pragma pop - -/* 80A6FE4C-80A6FE50 0000D0 0004+00 0/3 0/0 0/0 .rodata @4220 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4220 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80A6FE4C, &lit_4220); -#pragma pop - -/* 80A6FE50-80A6FE54 0000D4 0004+00 2/5 0/0 0/0 .rodata @4421 */ -SECTION_RODATA static f32 const lit_4421 = 1.0f; -COMPILER_STRIP_GATE(0x80A6FE50, &lit_4421); - /* 80A6AFA8-80A6B440 0004E8 0498+00 1/1 0/0 0/0 .text CreateHeap__11daNpc_Lud_cFv */ -void daNpc_Lud_c::CreateHeap() { - // NONMATCHING -} +int daNpc_Lud_c::CreateHeap() { + u32 bmd_idx = mTwilight == 1 ? 1 : 0; + int arc_idx = l_bmdData[bmd_idx][1]; + int res_idx = l_bmdData[bmd_idx][0]; -/* 80A6B440-80A6B47C 000980 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + J3DModelData* modelData = + static_cast(dComIfG_getObjectRes(l_resNameList[arc_idx], res_idx)); + if (modelData == NULL) { + return 0; + } -/* 80A6B47C-80A6B494 0009BC 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + mpMorf[0] = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, + 0x11020284); + if (mpMorf[0] == NULL || mpMorf[0]->getModel() == NULL) { + return 0; + } -/* 80A6B494-80A6B4D0 0009D4 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + J3DModel* model = mpMorf[0]->getModel(); -/* 80A6B4D0-80A6B4E8 000A10 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + for (u16 i = 0; i < modelData->getJointNum(); i++) { + modelData->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } -/* 80A6B4E8-80A6B530 000A28 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} + model->setUserArea((uintptr_t)this); -/* 80A6B530-80A6B554 000A70 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + mpMatAnm[0] = new daNpcT_MatAnm_c(); + if (mpMatAnm[0] == NULL) { + return 0; + } -/* 80A6B554-80A6B590 000A94 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} + if (mType == TYPE_5) { + J3DModelData* modelData = NULL; + bmd_idx = 4; + arc_idx = l_bmdData[bmd_idx][1]; + res_idx = l_bmdData[bmd_idx][0]; + modelData = (J3DModelData*)dComIfG_getObjectRes(l_resNameList[arc_idx], res_idx); -/* 80A6B590-80A6B5A8 000AD0 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} + mpBowlMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, NULL, + 0x80000, 0x11000084); + if (mpBowlMorf == NULL || mpBowlMorf->getModel() == NULL) { + return 0; + } + } -/* 80A6B5A8-80A6B5E4 000AE8 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} + if (mType == TYPE_4 || mType == TYPE_6) { + modelData = l_bmdData[2][0] >= 0 ? (J3DModelData*)dComIfG_getObjectRes( + l_resNameList[l_bmdData[2][1]], l_bmdData[2][0]) : + NULL; + if (modelData != NULL) { + mpModel[0] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + } -/* 80A6B5E4-80A6B5FC 000B24 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + if (mpModel[0] == NULL) { + return 0; + } + } + + if (mType == TYPE_5) { + modelData = l_bmdData[3][0] >= 0 ? (J3DModelData*)dComIfG_getObjectRes( + l_resNameList[l_bmdData[3][1]], l_bmdData[3][0]) : + NULL; + + if (modelData != NULL) { + mpModel[1] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + } + + if (mpModel[1] == NULL) { + return 0; + } + } + + if (mTwilight) { + if (setFaceMotionAnm(18, false) && setMotionAnm(19, 0.0f, 0)) { + return 1; + } + return 0; + } + + if (setFaceMotionAnm(1, false) && setMotionAnm(0, 0, 0)) { + return 1; + } + return 0; } /* 80A6B5FC-80A6B630 000B3C 0034+00 1/1 0/0 0/0 .text Delete__11daNpc_Lud_cFv */ -void daNpc_Lud_c::Delete() { - // NONMATCHING +int daNpc_Lud_c::Delete() { + fopAcM_GetID(this); + this->~daNpc_Lud_c(); + return 1; } /* 80A6B630-80A6B650 000B70 0020+00 2/2 0/0 0/0 .text Execute__11daNpc_Lud_cFv */ -void daNpc_Lud_c::Execute() { - // NONMATCHING +int daNpc_Lud_c::Execute() { + return daNpcT_c::execute(); } -/* ############################################################################################## */ -/* 80A6FE54-80A6FE58 0000D8 0004+00 1/1 0/0 0/0 .rodata @4470 */ -SECTION_RODATA static f32 const lit_4470 = 100.0f; -COMPILER_STRIP_GATE(0x80A6FE54, &lit_4470); - /* 80A6B650-80A6B6E4 000B90 0094+00 1/1 0/0 0/0 .text Draw__11daNpc_Lud_cFv */ -void daNpc_Lud_c::Draw() { - // NONMATCHING +int daNpc_Lud_c::Draw() { + if (mpMatAnm[0] != NULL) { + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + modelData->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + return daNpcT_c::draw(0, 0, mRealShadowSize, NULL, 100.0f, 0, 0, 0); } /* 80A6B6E4-80A6B704 000C24 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__11daNpc_Lud_cFP10fopAc_ac_c */ -void daNpc_Lud_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daNpc_Lud_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); } /* 80A6B704-80A6B75C 000C44 0058+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpc_Lud_cFP8J3DJointi */ -void daNpc_Lud_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daNpc_Lud_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { + if (param_1 == 0) { + J3DModel* model = j3dSys.getModel(); + + daNpc_Lud_c* i_this = reinterpret_cast(model->getUserArea()); + if (i_this != 0) { + i_this->ctrlJoint(param_0, model); + } + } + + return 1; } /* 80A6B75C-80A6B7CC 000C9C 0070+00 2/1 0/0 0/0 .text getType__11daNpc_Lud_cFv */ -void daNpc_Lud_c::getType() { - // NONMATCHING +u8 daNpc_Lud_c::getType() { + switch (fopAcM_GetParam(this) & 0xFF) { + case 0: + return TYPE_0; + case 1: + return TYPE_1; + case 2: + return TYPE_2; + case 3: + return TYPE_3; + case 4: + return TYPE_4; + case 5: + return TYPE_5; + case 6: + return TYPE_6; + case 7: + return TYPE_7; + } + return TYPE_8; } /* 80A6B7CC-80A6B954 000D0C 0188+00 2/1 0/0 0/0 .text isDelete__11daNpc_Lud_cFv */ -void daNpc_Lud_c::isDelete() { - // NONMATCHING +BOOL daNpc_Lud_c::isDelete() { + switch (mType) { + case TYPE_0: + return !daNpcT_chkEvtBit(0x3d) || daNpcT_chkEvtBit(0xa4); + case TYPE_1: + return false; + case TYPE_2: + return !daNpcT_chkEvtBit(0xa4) || daNpcT_chkEvtBit(0x35); + case TYPE_3: + return !daNpcT_chkEvtBit(0x35) || daNpcT_chkEvtBit(0x55); + case TYPE_4: + return !daNpcT_chkEvtBit(0x55) || daNpcT_chkEvtBit(0x40); + case TYPE_5: + return !daNpcT_chkEvtBit(0x40) || daNpcT_chkEvtBit(0x44); + case TYPE_6: + return !daNpcT_chkEvtBit(0x44) || daNpcT_chkEvtBit(0x108); + case TYPE_7: + return daNpcT_chkEvtBit(0x108) == 0; + } + return false; } /* 80A6B954-80A6BB1C 000E94 01C8+00 1/1 0/0 0/0 .text reset__11daNpc_Lud_cFv */ void daNpc_Lud_c::reset() { - // NONMATCHING + csXyz acStack_20; + + int iVar1 = (u8*)&field_0xfd8 - (u8*)&field_0xfa8; + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + initialize(); + for (int i = 0; i < 3; i++) { + mActorMngr[i].initialize(); + } + memset(&field_0xfa8, 0, iVar1); + acStack_20.setall(0.0f); + acStack_20.y = home.angle.y; + + switch (mType) { + case TYPE_0: + case TYPE_1: + case TYPE_2: + case TYPE_3: + case TYPE_7: + break; + case TYPE_4: + field_0xfd2 = 1; + break; + case TYPE_5: + field_0xfd3 = 1; + field_0xfd4 = 1; + break; + case TYPE_6: + field_0xfd2 = 1; + break; + } + + setAngle(acStack_20); } /* 80A6BB1C-80A6BBA8 00105C 008C+00 1/0 0/0 0/0 .text afterJntAnm__11daNpc_Lud_cFi */ -void daNpc_Lud_c::afterJntAnm(int param_0) { - // NONMATCHING +void daNpc_Lud_c::afterJntAnm(int param_1) { + if (param_1 == 1) { + 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)); + } } -/* ############################################################################################## */ -/* 80A6FE58-80A6FE5C 0000DC 0004+00 0/1 0/0 0/0 .rodata @4633 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4633 = 120.0f; -COMPILER_STRIP_GATE(0x80A6FE58, &lit_4633); -#pragma pop - -/* 80A6FE5C-80A6FE60 0000E0 0004+00 0/1 0/0 0/0 .rodata @4634 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4634 = 500.0f; -COMPILER_STRIP_GATE(0x80A6FE5C, &lit_4634); -#pragma pop - /* 80A6BBA8-80A6BD44 0010E8 019C+00 1/0 0/0 0/0 .text setParam__11daNpc_Lud_cFv */ void daNpc_Lud_c::setParam() { - // NONMATCHING + selectAction(); + srchActors(); + + s16 talk_distance = daNpc_Lud_Param_c::m.common.talk_distance; + s16 talk_angle = daNpc_Lud_Param_c::m.common.talk_angle; + s16 attention_distance = daNpc_Lud_Param_c::m.common.attention_distance; + s16 attention_angle = daNpc_Lud_Param_c::m.common.attention_angle; + + switch (mType) { + case TYPE_0: + talk_angle = 3; + attention_angle = 3; + break; + case TYPE_2: + talk_angle = 3; + attention_angle = 3; + break; + case TYPE_3: + talk_distance = 13; + attention_distance = 15; + break; + case TYPE_4: + case TYPE_5: + case TYPE_6: + talk_distance = 1; + attention_distance = 1; + break; + } + + attention_info.distances[fopAc_attn_LOCK_e] = + daNpcT_getDistTableIdx(attention_distance, attention_angle); + attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; + attention_info.distances[fopAc_attn_SPEAK_e] = + daNpcT_getDistTableIdx(talk_distance, talk_angle); + attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e; + + scale.set(daNpc_Lud_Param_c::m.common.scale, daNpc_Lud_Param_c::m.common.scale, + daNpc_Lud_Param_c::m.common.scale); + mCcStts.SetWeight(daNpc_Lud_Param_c::m.common.weight); + mCylH = daNpc_Lud_Param_c::m.common.height; + mWallR = daNpc_Lud_Param_c::m.common.width; + if (mTwilight) { + mCylH = 120.0f; + } + mAttnFovY = daNpc_Lud_Param_c::m.common.fov; + mAcchCir.SetWallR(mWallR); + mAcchCir.SetWallH(daNpc_Lud_Param_c::m.common.knee_length); + mRealShadowSize = daNpc_Lud_Param_c::m.common.real_shadow_size; + if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) { + mRealShadowSize = 500.0f; + } + mExpressionMorfFrame = daNpc_Lud_Param_c::m.common.expression_morf_frame; + mMorfFrames = daNpc_Lud_Param_c::m.common.morf_frame; + gravity = daNpc_Lud_Param_c::m.common.gravity; } /* 80A6BD44-80A6BE6C 001284 0128+00 1/0 0/0 0/0 .text checkChangeEvt__11daNpc_Lud_cFv */ -void daNpc_Lud_c::checkChangeEvt() { - // NONMATCHING -} +BOOL daNpc_Lud_c::checkChangeEvt() { + if (!chkAction(&daNpc_Lud_c::talk)) { + mPreItemNo = 0; + if (dComIfGp_event_chkTalkXY()) { + if (dComIfGp_evmng_ChkPresentEnd()) { + mEvtNo = 1; + evtChange(); + } + return TRUE; + } -/* ############################################################################################## */ -/* 80A6FE60-80A6FE64 0000E4 0004+00 6/9 0/0 0/0 .rodata @4680 */ -SECTION_RODATA static f32 const lit_4680 = -1.0f; -COMPILER_STRIP_GATE(0x80A6FE60, &lit_4680); + switch (mType) { + case TYPE_0: + case TYPE_1: + case TYPE_2: + case TYPE_3: + case TYPE_7: + break; + case TYPE_4: + mEvtNo = 3; + evtChange(); + return TRUE; + case TYPE_5: + mEvtNo = 4; + evtChange(); + return TRUE; + case TYPE_6: + mEvtNo = 5; + evtChange(); + return TRUE; + } + } + + return FALSE; +} /* 80A6BE6C-80A6BEE4 0013AC 0078+00 1/0 0/0 0/0 .text setAfterTalkMotion__11daNpc_Lud_cFv */ void daNpc_Lud_c::setAfterTalkMotion() { - // NONMATCHING + int iVar2 = MOT_UNK_18; + switch (mFaceMotionSeqMngr.getNo()) { + case MOT_UNK_1: + iVar2 = MOT_UNK_10; + break; + } + mFaceMotionSeqMngr.setNo(iVar2, -1.0f, 0, 0); } /* 80A6BEE4-80A6BFA4 001424 00C0+00 1/1 0/0 0/0 .text srchActors__11daNpc_Lud_cFv */ void daNpc_Lud_c::srchActors() { - // NONMATCHING + switch (mType) { + case TYPE_1: + if (mActorMngr[2].getActorP() == NULL) { + mActorMngr[2].entry(getNearestActorP(PROC_NPC_LEN)); + } + break; + case TYPE_5: + if (mActorMngr[0].getActorP() == NULL) { + mActorMngr[0].entry(getNearestActorP(PROC_NPC_BESU)); + } + if (mActorMngr[1].getActorP() == NULL) { + mActorMngr[1].entry(getNearestActorP(PROC_NPC_KOLINB)); + } + break; + } } /* 80A6BFA4-80A6C044 0014E4 00A0+00 1/0 0/0 0/0 .text evtTalk__11daNpc_Lud_cFv */ -void daNpc_Lud_c::evtTalk() { - // NONMATCHING +BOOL daNpc_Lud_c::evtTalk() { + if (chkAction(&daNpc_Lud_c::talk)) { + (this->*mAction)(NULL); + } else { + setAction(&daNpc_Lud_c::talk); + } + return TRUE; } /* 80A6C044-80A6C10C 001584 00C8+00 1/0 0/0 0/0 .text evtCutProc__11daNpc_Lud_cFv */ -void daNpc_Lud_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_Lud_c::evtCutProc() { + int staffId = dComIfGp_getEventManager().getMyStaffId("Lud", this, -1); + if (staffId != -1) { + mStaffId = staffId; + int actIdx = + dComIfGp_getEventManager().getMyActIdx(mStaffId, (char**)mCutNameList, 8, 0, 0); + if ((this->*(mCutList[actIdx]))(mStaffId) != 0) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + return true; + } + return false; } /* 80A6C10C-80A6C2E4 00164C 01D8+00 1/0 0/0 0/0 .text action__11daNpc_Lud_cFv */ void daNpc_Lud_c::action() { - // NONMATCHING + fopAc_ac_c* hitActor = NULL; + if (!mTwilight) { + hitActor = hitChk(&mCyl, 0xffffffff); + } + + if (hitActor) { + if (mType != TYPE_4 && mType != TYPE_5 && mType != TYPE_6) { + cCcD_ObjHitInf* hit_obj = mCyl.GetTgHitObj(); + if (hit_obj->ChkAtType(AT_TYPE_THROW_OBJ)) { + mStagger.setParam(this, hitActor, mCurAngle.y); + setDamage(0, 18, 0); + mDamageTimerStart = 0; + mJntAnm.lookNone(1); + } + } + } + + if (mStagger.checkRebirth()) { + mStagger.initialize(); + mMode = MODE_INIT; + } + + if (field_0xfa8 != NULL) { + if (mAction == field_0xfa8) { + (this->*mAction)(NULL); + } else { + setAction(field_0xfa8); + } + } + + cLib_calcTimer(&field_0xfc8); + cLib_calcTimer(&field_0xfcc); } /* 80A6C2E4-80A6C3A8 001824 00C4+00 1/0 0/0 0/0 .text beforeMove__11daNpc_Lud_cFv */ void daNpc_Lud_c::beforeMove() { - // NONMATCHING + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x8000000); + if (checkHide()) { + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_0x8000000); + } + + if (checkHide() || mNoDraw != 0) { + attention_info.flags = 0; + } } -/* ############################################################################################## */ -/* 80A6FE64-80A6FE68 0000E8 0004+00 0/1 0/0 0/0 .rodata @4927 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4927 = 5.0f; -COMPILER_STRIP_GATE(0x80A6FE64, &lit_4927); -#pragma pop - -/* 80A6FE68-80A6FE6C 0000EC 0004+00 0/1 0/0 0/0 .rodata @4928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4928 = 30.0f; -COMPILER_STRIP_GATE(0x80A6FE68, &lit_4928); -#pragma pop - -/* 80A6FE6C-80A6FE70 0000F0 0004+00 0/1 0/0 0/0 .rodata @4929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4929 = 0x38C90FDB; -COMPILER_STRIP_GATE(0x80A6FE6C, &lit_4929); -#pragma pop - -/* 80A6FE70-80A6FE74 0000F4 0004+00 0/2 0/0 0/0 .rodata @4930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4930 = 94.0f; -COMPILER_STRIP_GATE(0x80A6FE70, &lit_4930); -#pragma pop - -/* 80A6FE74-80A6FE78 0000F8 0004+00 0/1 0/0 0/0 .rodata @4931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4931 = 160.0f; -COMPILER_STRIP_GATE(0x80A6FE74, &lit_4931); -#pragma pop - -/* 80A6FE78-80A6FE7C 0000FC 0004+00 0/1 0/0 0/0 .rodata @4932 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4932 = -79.0f; -COMPILER_STRIP_GATE(0x80A6FE78, &lit_4932); -#pragma pop - -/* 80A6FE7C-80A6FE84 000100 0008+00 1/3 0/0 0/0 .rodata @4934 */ -SECTION_RODATA static u8 const lit_4934[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FE7C, &lit_4934); +/* 80A70B64-80A70B68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +static daNpc_Lud_Param_c l_HIO; /* 80A6C3A8-80A6C8EC 0018E8 0544+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Lud_cFv */ void daNpc_Lud_c::setAttnPos() { - // NONMATCHING + cXyz cStack_70(5.0f, 30.0f, 0.0f); + Mtx mtx; + + if (field_0xfd5 != 0) { + daPy_getPlayerActorClass()->onWolfEyeKeep(); + } + + mStagger.calc(0); + + f32 dVar8 = cM_s2rad(mCurAngle.y - field_0xd7e.y); + + if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) { + mJntAnm.setParam(this, mpMorf[0]->getModel(), &cStack_70, getBackboneJointNo(), + getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min, + l_HIO.m.common.body_angleX_max, 0.0f, 0.0f, l_HIO.m.common.head_angleX_min, + l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min, + l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar8, + NULL); + } else { + mJntAnm.setParam(this, mpMorf[0]->getModel(), &cStack_70, getBackboneJointNo(), + getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min, + l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min, + l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min, + l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min, + l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar8, + NULL); + } + + mJntAnm.calcJntRad(0.2f, 1.0f, dVar8); + mpMorf[0]->setPlaySpeed(l_HIO.m.play_speed); + setMtx(); + + if (mpBowlMorf != NULL) { + mpBowlMorf->play(0, 0); + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(14)); + cMtx_copy(mDoMtx_stack_c::get(), mtx); + mpBowlMorf->getModel()->setBaseTRMtx(mtx); + mpBowlMorf->modelCalc(); + } + + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo())); + mDoMtx_stack_c::multVec(&cStack_70, &eyePos); + + if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) { + s16 angle = field_0xfd0; + if (angle != 0) { + mJntAnm.setEyeAngleY(angle, 1.0f); + } else { + mJntAnm.setEyeAngleX(eyePos, 1.0f, 0); + mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, 1, 1.0f, 0); + } + } else { + mJntAnm.setEyeAngleX(eyePos, 1.0f, 0); + mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, 1, 1.0f, 0); + } + + if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) { + cStack_70.set(94.0f, 160.0f, -79.0f); + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getBaseTRMtx()); + mDoMtx_stack_c::multVec(&cStack_70, &attention_info.position); + } else { + cStack_70.set(0.0f, 0.0f, 0.0f); + cStack_70.y = l_HIO.m.common.attention_offset; + mDoMtx_stack_c::YrotS(mCurAngle.y); + mDoMtx_stack_c::multVec(&cStack_70, &cStack_70); + attention_info.position = current.pos + cStack_70; + } + + if (mType == TYPE_3) { + mSound.startCreatureVoiceLevel(JAISoundID(Z2SE_LUD_V_HOUSHIN), -1); + } } -/* ############################################################################################## */ -/* 80A6FE84-80A6FE8C 000108 0008+00 0/1 0/0 0/0 .rodata @4994 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4994[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FE84, &lit_4994); -#pragma pop - -/* 80A6FE8C-80A6FE94 000110 0008+00 0/1 0/0 0/0 .rodata @4995 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4995[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FE8C, &lit_4995); -#pragma pop - -/* 80A6FE94-80A6FE9C 000118 0008+00 0/1 0/0 0/0 .rodata @4996 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4996[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FE94, &lit_4996); -#pragma pop - -/* 80A6FE9C-80A6FEA0 000120 0004+00 0/1 0/0 0/0 .rodata @5046 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5046 = 0x43050F5C; -COMPILER_STRIP_GATE(0x80A6FE9C, &lit_5046); -#pragma pop - -/* 80A6FEA0-80A6FEA4 000124 0004+00 0/1 0/0 0/0 .rodata @5047 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5047 = 66.0f / 25.0f; -COMPILER_STRIP_GATE(0x80A6FEA0, &lit_5047); -#pragma pop - -/* 80A6FEA4-80A6FEA8 000128 0004+00 0/1 0/0 0/0 .rodata @5048 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5048 = -89.0f; -COMPILER_STRIP_GATE(0x80A6FEA4, &lit_5048); -#pragma pop - /* 80A6C8EC-80A6CA9C 001E2C 01B0+00 1/0 0/0 0/0 .text setCollision__11daNpc_Lud_cFv */ void daNpc_Lud_c::setCollision() { - // NONMATCHING + cXyz cStack_48; + + if (mHide == 0) { + u32 tgType = 0xd8fbfdff; + u32 tgSPrm = 0x1f; + + if (mTwilight != 0) { + tgType = 0; + tgSPrm = 0; + } else if (mStagger.checkStagger()) { + tgType = 0; + tgSPrm = 0; + } + + mCyl.SetCoSPrm(0x79); + mCyl.SetTgType(tgType); + mCyl.SetTgSPrm(tgSPrm); + mCyl.OnTgNoHitMark(); + + cStack_48.set(0.0f, 0.0f, 0.0f); + + f32 cylHeight = mCylH; + f32 cylRadius = mWallR; + + if (mType == TYPE_1) { + cStack_48.set(133.06f, 0.0f, 2.64f); + } else if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) { + cStack_48.set(94.0f, 0.0f, -89.0f); + } + + mDoMtx_stack_c::YrotS(mCurAngle.y); + mDoMtx_stack_c::multVec(&cStack_48, &cStack_48); + cStack_48 += current.pos; + mCyl.SetH(cylHeight); + mCyl.SetR(cylRadius); + mCyl.SetC(cStack_48); + dComIfG_Ccsp()->Set(&mCyl); + } + + mCyl.ClrCoHit(); + mCyl.ClrTgHit(); } /* 80A6CA9C-80A6CAA4 001FDC 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpc_Lud_cFv */ -bool daNpc_Lud_c::drawDbgInfo() { - return false; +int daNpc_Lud_c::drawDbgInfo() { + return 0; } -/* ############################################################################################## */ -/* 80A6FEA8-80A6FEB0 00012C 0008+00 1/1 0/0 0/0 .rodata jointNo$5056 */ -SECTION_RODATA static u8 const jointNo[8] = { - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, -}; -COMPILER_STRIP_GATE(0x80A6FEA8, &jointNo); - /* 80A6CAA4-80A6CC2C 001FE4 0188+00 1/0 0/0 0/0 .text drawOtherMdl__11daNpc_Lud_cFv */ void daNpc_Lud_c::drawOtherMdl() { - // NONMATCHING + static int const jointNo[2] = {20, 20}; + + J3DModel* model_p = mpMorf[0]->getModel(); + + if (mpBowlMorf != NULL) { + g_env_light.setLightTevColorType_MAJI(mpBowlMorf->getModel(), &tevStr); + + if (field_0xfd4 == 0) { + mpBowlMorf->getModel()->getModelData()->hide(); + } else { + mpBowlMorf->getModel()->getModelData()->show(); + } + + mpBowlMorf->entryDL(); + dComIfGd_addRealShadow(mShadowKey, mpBowlMorf->getModel()); + } + + for (int i = 0; i < 2; i++) { + if (mpModel[i] != NULL && ((i == 0 && field_0xfd2 != 0) || (i == 1 && field_0xfd3 != 0))) { + g_env_light.setLightTevColorType_MAJI(mpModel[i], &tevStr); + + mDoMtx_stack_c::copy(model_p->getAnmMtx(jointNo[i])); + Mtx jointAnmMtx; + cMtx_copy(mDoMtx_stack_c::get(), jointAnmMtx); + mpModel[i]->setBaseTRMtx(jointAnmMtx); + mDoExt_modelUpdateDL(mpModel[i]); + dComIfGd_addRealShadow(mShadowKey, mpModel[i]); + } + } } /* 80A6CC2C-80A6CCFC 00216C 00D0+00 1/1 0/0 0/0 .text setBowlAnm__11daNpc_Lud_cFiif */ -void daNpc_Lud_c::setBowlAnm(int param_0, int param_1, f32 param_2) { - // NONMATCHING +bool daNpc_Lud_c::setBowlAnm(int i_index, int i_attr, f32 i_morf) { + static struct { + int resIdx; + int arcIdx; + } bowlAnmData[21] = { + {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, + {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, + {-1, 0}, {-1, 0}, {9, 4}, {9, 4}, {-1, 0}, {-1, 0}, {-1, 0}, + }; + + J3DAnmTransform* anmTransform = NULL; + + if (mpBowlMorf != NULL) { + if (bowlAnmData[i_index].resIdx > 0) { + anmTransform = getTrnsfrmKeyAnmP(l_resNameList[bowlAnmData[i_index].arcIdx], + bowlAnmData[i_index].resIdx); + } + + if (anmTransform != NULL && anmTransform != mpBowlMorf->getAnm()) { + mpBowlMorf->setAnm(anmTransform, i_attr, i_morf, 1.0f, 0.0f, -1.0f); + } + } + + return true; } /* 80A6CCFC-80A6CD30 00223C 0034+00 1/0 0/0 0/0 .text afterSetMotionAnm__11daNpc_Lud_cFiifi */ -void daNpc_Lud_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { - // NONMATCHING +bool daNpc_Lud_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { + if (mCreating == true) { + param_2 = 0.0f; + } + setBowlAnm(param_0, param_1, param_2); } /* 80A6CD30-80A6CDF4 002270 00C4+00 1/1 0/0 0/0 .text selectAction__11daNpc_Lud_cFv */ -void daNpc_Lud_c::selectAction() { - // NONMATCHING +int daNpc_Lud_c::selectAction() { + field_0xfa8 = NULL; + + switch (mType) { + case TYPE_4: + field_0xfa8 = &daNpc_Lud_c::nurse; + break; + case TYPE_5: + field_0xfa8 = &daNpc_Lud_c::giveSoup; + break; + case TYPE_6: + field_0xfa8 = &daNpc_Lud_c::nurse; + break; + default: + field_0xfa8 = &daNpc_Lud_c::wait; + } + + return 1; } /* 80A6CDF4-80A6CE20 002334 002C+00 2/2 0/0 0/0 .text * chkAction__11daNpc_Lud_cFM11daNpc_Lud_cFPCvPvPv_i */ -void daNpc_Lud_c::chkAction(int (daNpc_Lud_c::*param_0)(void*)) { - // NONMATCHING +BOOL daNpc_Lud_c::chkAction(actionFunc param_0) { + return mAction == param_0; } /* 80A6CE20-80A6CEC8 002360 00A8+00 2/2 0/0 0/0 .text * setAction__11daNpc_Lud_cFM11daNpc_Lud_cFPCvPvPv_i */ -void daNpc_Lud_c::setAction(int (daNpc_Lud_c::*param_0)(void*)) { - // NONMATCHING -} +int daNpc_Lud_c::setAction(actionFunc param_0) { + mMode = MODE_EXIT; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } -/* ############################################################################################## */ -/* 80A6FEB0-80A6FEB4 000134 0004+00 1/1 0/0 0/0 .rodata @5221 */ -SECTION_RODATA static f32 const lit_5221 = 4.0f; -COMPILER_STRIP_GATE(0x80A6FEB0, &lit_5221); + mMode = MODE_ENTER; + mAction = param_0; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + return 1; +} /* 80A6CEC8-80A6D01C 002408 0154+00 1/1 0/0 0/0 .text mop__11daNpc_Lud_cFii */ void daNpc_Lud_c::mop(int param_0, int param_1) { - // NONMATCHING + if (field_0xfc8 != 0) { + action(); + if (field_0xfc8 == 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_3, 4.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_2, 4.0f, 0, 0); + field_0xfcc = param_1; + } + } else if (field_0xfcc != 0) { + action(); + if (field_0xfcc == 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_4, 4.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_6, 4.0f, 0, 0); + field_0xfc8 = param_0; + } + } } -/* ############################################################################################## */ -/* 80A6FECC-80A6FECC 000150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A6FF71 = "prm"; -#pragma pop - /* 80A6D01C-80A6D160 00255C 0144+00 1/0 0/0 0/0 .text cutHurry__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutHurry(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutHurry(int param_0) { + int rv = 0; + int iVar3 = -1; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar3 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar3) { + case 0: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_9, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_11, -1.0f, 0, 0); + mJntAnm.setMode(0, FALSE); + mJntAnm.setDirect(1); + break; + } + } + + switch (iVar3) { + case 0: + rv = 1; + break; + } + + return rv; } -/* ############################################################################################## */ -/* 80A6FECC-80A6FECC 000150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A6FF75 = "timer"; -SECTION_DEAD static char const* const stringBase_80A6FF7B = "timer1"; -SECTION_DEAD static char const* const stringBase_80A6FF82 = "timer2"; -#pragma pop - /* 80A6D160-80A6D450 0026A0 02F0+00 1/0 0/0 0/0 .text cutConversationInHotel__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutConversationInHotel(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutConversationInHotel(int param_0) { + int rv = 0; + int iVar7 = -1; + int uVar4 = 0; + int iVar6 = 0; + int iVar5 = 0; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar7 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "timer"); + if (piVar1) { + uVar4 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "timer1"); + if (piVar1) { + iVar6 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "timer2"); + if (piVar1) { + iVar5 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar7) { + case 0: + field_0xfc8 = 0; + field_0xfcc = 1; + break; + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_13, 0.0f, 1, 0); + mMotionSeqMngr.setNo(MOT_UNK_14, 0.0f, 1, 0); + break; + case 2: + mEventTimer = uVar4; + break; + case 3: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_3, 0.0f, 1, 0); + mMotionSeqMngr.setNo(MOT_UNK_2, 0.0f, 1, 0); + break; + } + } + + switch (iVar7) { + case 0: + mop(iVar6, iVar5); + rv = 1; + break; + case 1: + rv = 1; + break; + case 2: + if (mEventTimer) { + if (!cLib_calcTimer(&mEventTimer)) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_12, 0.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_13, 0.0f, 0, 0); + mSound.startCreatureVoice(JAISoundID(Z2SE_LUD_V_SHIKARARE), -1); + } else { + mop(iVar6, iVar5); + } + } else { + rv = 1; + } + break; + case 3: + rv = 1; + break; + } + + return rv; } /* 80A6D450-80A6D708 002990 02B8+00 1/0 0/0 0/0 .text cutConversationAboutDeathMt__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutConversationAboutDeathMt(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutConversationAboutDeathMt(int param_0) { + int rv = 0; + int iVar3 = -1; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar3 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar3) { + case 0: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_5, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_7, -1.0f, 0, 0); + break; + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_6, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_8, -1.0f, 0, 0); + field_0xfc8 = 32; + break; + case 2: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_5, 0.0f, 1, 0); + mMotionSeqMngr.setNo(MOT_UNK_7, 0.0f, 1, 0); + break; + case 3: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_6, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_8, -1.0f, 0, 0); + field_0xfc8 = 32; + break; + } + } + + switch (iVar3) { + case 0: + action(); + rv = 1; + break; + case 1: + action(); + if (!field_0xfc8) { + rv = 1; + } + break; + case 2: + rv = 1; + break; + case 3: + if (!cLib_calcTimer(&field_0xfc8)) { + rv = 1; + } + break; + } + + return rv; } /* 80A6D708-80A6D998 002C48 0290+00 1/0 0/0 0/0 .text cutConversationAboutGoron__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutConversationAboutGoron(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutConversationAboutGoron(int param_0) { + int rv = 0; + int iVar4 = -1; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar4 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar4) { + case 0: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_1, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_3, -1.0f, 0, 0); + initTalk(mFlowNodeNo, NULL); + break; + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_7, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_9, -1.0f, 0, 0); + break; + case 2: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_8, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_10, -1.0f, 0, 0); + break; + } + } + + switch (iVar4) { + case 0: + if (talkProc(NULL, 0, NULL, 0) && mFlow.checkEndFlow()) { + rv = 1; + } + break; + case 1: + case 2: + if (mMotionSeqMngr.checkEndSequence()) { + if (iVar4 == 2) { + field_0xfd0 = 0; + } + rv = 1; + break; + } + } + + if (mType == TYPE_6) { + if (iVar4 == 0 || iVar4 == 1) { + cLib_chaseS(&field_0xfd0, 0xe00, 0x166); + } else { + cLib_chaseS(&field_0xfd0, 0, 0x166); + } + } + + return rv; } -/* ############################################################################################## */ -/* 80A6FEB4-80A6FEC0 000138 000C+00 0/1 0/0 0/0 .rodata @5494 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5494[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A6FEB4, &lit_5494); -#pragma pop - -/* 80A6FEC0-80A6FECC 000144 000C+00 0/1 0/0 0/0 .rodata @5502 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5502[12] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -}; -COMPILER_STRIP_GATE(0x80A6FEC0, &lit_5502); -#pragma pop - -/* 80A6FECC-80A6FECC 000150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A6FF89 = "msgNo"; -#pragma pop - /* 80A6D998-80A6DC48 002ED8 02B0+00 1/0 0/0 0/0 .text cutNurse__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutNurse(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutNurse(int param_0) { + int rv = 0; + int iVar3 = -1; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar3 = *piVar1; + } + + dComIfGp_evmng_getMyIntegerP(param_0, "msgNo"); + + fopAc_ac_c* speakers[3] = {(fopAc_ac_c*)this, mActorMngr[0].getActorP(), + mActorMngr[1].getActorP()}; + dComIfGp_setMesgCameraInfoActor(speakers[0], speakers[1], speakers[2], 0, 0, 0, 0, 0, 0, 0); + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar3) { + case 0: + initTalk(mFlowNodeNo, &speakers[0]); + break; + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_14, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_15, -1.0f, 0, 0); + break; + case 2: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_2, 0.0f, 1, 0); + mMotionSeqMngr.setNo(MOT_UNK_4, 0.0f, 1, 0); + break; + } + } + + int local_40[3] = {-1, -1, -1}; + + switch (iVar3) { + case 0: + field_0xe26 = false; + local_40[0] = 0x13c2; + local_40[1] = 0x13c6; + if (talkProc(local_40, 0, speakers, 0)) { + rv = 1; + } + break; + case 1: + field_0xe26 = false; + if (talkProc(NULL, 0, speakers, 0) && mFlow.checkEndFlow()) { + rv = 1; + } + break; + case 2: + field_0xe26 = false; + rv = 1; + break; + } + + return rv; } /* 80A6DC48-80A6DCE8 003188 00A0+00 1/0 0/0 0/0 .text cutClothTry__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutClothTry(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutClothTry(int param_0) { + int rv = 0; + int iVar2 = -1; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar2 = *piVar1; + } + + dComIfGp_getEventManager().getIsAddvance(param_0); + switch (iVar2) { + case 0: + action(); + rv = 1; + break; + } + + return rv; } /* 80A6DCE8-80A6DE14 003228 012C+00 1/0 0/0 0/0 .text cutThankYou__11daNpc_Lud_cFi */ -void daNpc_Lud_c::cutThankYou(int param_0) { - // NONMATCHING +int daNpc_Lud_c::cutThankYou(int param_0) { + int rv = 0; + int iVar3 = -1; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar3 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar3) { + case 0: + break; + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, 0.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_19, 0.0f, 0, 0); + break; + } + } + + switch (iVar3) { + case 0: + action(); + rv = 1; + break; + case 1: + rv = 1; + break; + } + + return rv; } /* 80A6DE14-80A6E32C 003354 0518+00 1/0 0/0 0/0 .text wait__11daNpc_Lud_cFPv */ -void daNpc_Lud_c::wait(void* param_0) { - // NONMATCHING +int daNpc_Lud_c::wait(void* param_0) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + switch (mType) { + case TYPE_1: + if (getBitSW() != 0xFF && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_16, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_17, -1.0f, 0, 0); + break; + } + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_15, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_16, -1.0f, 0, 0); + break; + case TYPE_3: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_9, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_11, -1.0f, 0, 0); + break; + case TYPE_2: + default: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_18, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + break; + } + field_0xfc0 = 0; + field_0xfc4 = 0; + mMode = 2; + } + case 2: + switch (mType) { + case TYPE_1: + fopAc_ac_c* actor_p = (daNpc_Len_c*)mActorMngr[2].getActorP(); + if (actor_p != NULL && + ((daNpc_Len_c*)actor_p) + ->checkStartDemo13StbEvt(this, daNpc_Lud_Param_c::m.common.box_min_x, + daNpc_Lud_Param_c::m.common.box_min_y, + daNpc_Lud_Param_c::m.common.box_min_z, + daNpc_Lud_Param_c::m.common.box_max_x, + daNpc_Lud_Param_c::m.common.box_max_y, + daNpc_Lud_Param_c::m.common.box_max_z, + daNpc_Lud_Param_c::m.common.box_offset)) + { + mEvtNo = 2; + field_0xfd5 = 1; + } + + if (field_0xfd5 != 0 && daNpcT_chkEvtBit(0x3C) && !dComIfGp_event_runCheck()) { + field_0xfd5 = 0; + } + break; + } + + if (!mStagger.checkStagger()) { + if (mType == TYPE_1) { + mJntAnm.lookNone(0); + if (getBitSW() != 0xFF && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this)) && + mMotionSeqMngr.getNo() != MOT_UNK_17) + { + mMode = 1; + } + attention_info.flags = 0; + } else { + if (mType == TYPE_3) { + mPlayerActorMngr.remove(); + } + if (mPlayerActorMngr.getActorP() != NULL && !mTwilight) { + mJntAnm.lookPlayer(0); + if (!chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) { + mJntAnm.lookNone(0); + } + if (!srchPlayerActor() && home.angle.y == mCurAngle.y) { + mMode = 1; + } + } else { + mJntAnm.lookNone(0); + if (home.angle.y != mCurAngle.y) { + if (field_0xe34 != 0) { + if (step(home.angle.y, 18, 18, 15, 0)) { + mMode = 1; + } + } else { + setAngle(home.angle.y); + mMode = 1; + } + attention_info.flags = 0; + } else if (!mTwilight) { + srchPlayerActor(); + } + } + } + switch (mType) { + case TYPE_3: + attention_info.flags = 0; + break; + } + } + case 3: + break; + } + + return 1; } -/* ############################################################################################## */ -/* 80A6FECC-80A6FECC 000150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A6FF8F = "EVT_CONVERSATION_IN_HOTEL1_e"; -SECTION_DEAD static char const* const stringBase_80A6FFAC = "EVT_CONVERSATION_IN_HOTEL2_e"; -#pragma pop - /* 80A6E32C-80A6E6EC 00386C 03C0+00 2/0 0/0 0/0 .text nurse__11daNpc_Lud_cFPv */ -void daNpc_Lud_c::nurse(void* param_0) { - // NONMATCHING +int daNpc_Lud_c::nurse(void* param_0) { + switch (mMode) { + case 0: + case 1: + if (mFaceMotionSeqMngr.getNo() != FACE_MOT_UNK_13) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_3, -1.0f, 0, 0); + } + if (mMotionSeqMngr.getNo() != MOT_UNK_14) { + mMotionSeqMngr.setNo(MOT_UNK_2, -1.0f, 0, 0); + } + mMorfLoops = 0; + if (mType == TYPE_6) { + field_0xfc8 = 0; + field_0xfcc = 1; + } + mMode = 2; + + case 2: + mJntAnm.lookNone(0); + mAcch.SetWallNone(); + + switch (mMotionSeqMngr.getNo()) { + case MOT_UNK_2: + if (strcmp(dComIfGp_getEventManager().getRunEventName(), + "EVT_CONVERSATION_IN_HOTEL1_e") && + strcmp(dComIfGp_getEventManager().getRunEventName(), + "EVT_CONVERSATION_IN_HOTEL2_e") && + mType != TYPE_6 && mMorfLoops >= 2) + { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_11, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_12, -1.0f, 0, 0); + } + break; + case MOT_UNK_12: + case MOT_UNK_14: + if (mMotionSeqMngr.checkEndSequence()) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_3, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_2, -1.0f, 0, 0); + } + } + if (mType == TYPE_6) { + if (field_0xfc8 != 0) { + cLib_calcTimer(&field_0xfc8); + cLib_calcTimer(&field_0xfcc); + if (field_0xfc8 == 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_3, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_2, -1.0f, 0, 0); + field_0xfcc = 92; + } + } else if (field_0xfcc != 0) { + cLib_calcTimer(&field_0xfc8); + cLib_calcTimer(&field_0xfcc); + if (field_0xfcc == 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_4, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_6, -1.0f, 0, 0); + field_0xfc8 = 92; + } + } + } + break; + case 3: + break; + } + + return 1; } /* 80A6E6EC-80A6E7EC 003C2C 0100+00 1/0 0/0 0/0 .text giveSoup__11daNpc_Lud_cFPv */ -void daNpc_Lud_c::giveSoup(void* param_0) { - // NONMATCHING +int daNpc_Lud_c::giveSoup(void* param_0) { + switch (mMode) { + case 0: + case 1: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_2, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_4, -1.0f, 0, 0); + mMode = 2; + case 2: + mJntAnm.lookNone(0); + mAcch.SetWallNone(); + break; + case 3: + break; + } + return 1; } /* 80A6E7EC-80A6E9FC 003D2C 0210+00 3/0 0/0 0/0 .text talk__11daNpc_Lud_cFPv */ -void daNpc_Lud_c::talk(void* param_0) { - // NONMATCHING +int daNpc_Lud_c::talk(void* param_0) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + initTalk(mFlowNodeNo, NULL); + mMode = 2; + } + case 2: + if (!mStagger.checkStagger()) { + if (mTwilight || mPlayerAngle == mCurAngle.y || mType == 0 || mType == 2 || + mType == 4 || mType == 5 || mType == 6) + { + if (talkProc(NULL, 0, NULL, 0) && mFlow.checkEndFlow()) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = 3; + } + mJntAnm.lookPlayer(0); + if (mTwilight || mType == 4 || mType == 5 || mType == 6) { + mJntAnm.lookNone(0); + } + } else { + mJntAnm.lookPlayer(0); + step(mPlayerAngle, 18, 18, 15, 0); + } + } + break; + case 3: + break; + } + + return 0; } /* 80A6E9FC-80A6EA1C 003F3C 0020+00 1/0 0/0 0/0 .text daNpc_Lud_Create__FPv */ -static void daNpc_Lud_Create(void* param_0) { - // NONMATCHING +static int daNpc_Lud_Create(void* i_this) { + return static_cast(i_this)->create(); } /* 80A6EA1C-80A6EA3C 003F5C 0020+00 1/0 0/0 0/0 .text daNpc_Lud_Delete__FPv */ -static void daNpc_Lud_Delete(void* param_0) { - // NONMATCHING +static int daNpc_Lud_Delete(void* i_this) { + return static_cast(i_this)->Delete(); } /* 80A6EA3C-80A6EA5C 003F7C 0020+00 1/0 0/0 0/0 .text daNpc_Lud_Execute__FPv */ -static void daNpc_Lud_Execute(void* param_0) { - // NONMATCHING +static int daNpc_Lud_Execute(void* i_this) { + return static_cast(i_this)->Execute(); } /* 80A6EA5C-80A6EA7C 003F9C 0020+00 1/0 0/0 0/0 .text daNpc_Lud_Draw__FPv */ -static void daNpc_Lud_Draw(void* param_0) { - // NONMATCHING +static int daNpc_Lud_Draw(void* i_this) { + return static_cast(i_this)->Draw(); } /* 80A6EA7C-80A6EA84 003FBC 0008+00 1/0 0/0 0/0 .text daNpc_Lud_IsDelete__FPv */ -static bool daNpc_Lud_IsDelete(void* param_0) { - return true; +static int daNpc_Lud_IsDelete(void* i_this) { + return 1; } -/* 80A6EA84-80A6EAB4 003FC4 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* 80A6EAB4-80A6EAFC 003FF4 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80A6EAFC-80A6EE84 00403C 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80A6EE84-80A6EEC0 0043C4 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80A6EEC0-80A6EEFC 004400 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80A6EEFC-80A6EF44 00443C 0048+00 3/2 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() { -extern "C" void __dt__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80A6EF44-80A6EF80 004484 003C+00 1/1 0/0 0/0 .text __ct__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::daNpcT_ActorMngr_c() { -extern "C" void __ct__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80A6EF80-80A6EFC8 0044C0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80A6EFC8-80A6F010 004508 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80A6F010-80A6F414 004550 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 -} - -/* 80A6F414-80A6F418 004954 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80A6F418-80A6F514 004958 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 -} - -/* 80A6F514-80A6F518 004A54 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80A6F518-80A6F560 004A58 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 -} - -/* 80A6F560-80A6F5D0 004AA0 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80A6F5D0-80A6F62C 004B10 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80A6F62C-80A6F69C 004B6C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80A6F69C-80A6F6E4 004BDC 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80A6F6E4-80A6F800 004C24 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 -} - -/* 80A6F800-80A6FA08 004D40 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 -} - -/* 80A6FA08-80A6FA0C 004F48 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 */ -} - -/* 80A6FA1C-80A6FA24 004F5C 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80A6FA24-80A6FA2C 004F64 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80A6FA2C-80A6FA34 004F6C 0008+00 1/0 0/0 0/0 .text evtEndProc__8daNpcT_cFv */ -// bool daNpcT_c::evtEndProc() { -extern "C" bool evtEndProc__8daNpcT_cFv() { - return true; -} - -/* 80A6FA38-80A6FA40 004F78 0008+00 1/0 0/0 0/0 .text chkXYItems__8daNpcT_cFv */ -// bool daNpcT_c::chkXYItems() { -extern "C" bool chkXYItems__8daNpcT_cFv() { - return false; -} - -/* 80A6FA40-80A6FA58 004F80 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80A6FA58-80A6FA5C 004F98 0004+00 1/0 0/0 0/0 .text drawGhost__8daNpcT_cFv */ -// void daNpcT_c::drawGhost() { -extern "C" void drawGhost__8daNpcT_cFv() { - /* empty function */ -} - -/* 80A6FA5C-80A6FA64 004F9C 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; -} - -/* 80A6FA64-80A6FA94 004FA4 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 -} - -/* 80A6FA94-80A6FAC4 004FD4 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 -} - -/* 80A6FAC4-80A6FAC8 005004 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 */ -} - -/* 80A6FAC8-80A6FACC 005008 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 */ -} - -/* 80A6FACC-80A6FAD0 00500C 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 */ -} - -/* 80A6FAD0-80A6FAD4 005010 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 */ -} - -/* 80A6FAD4-80A6FAF0 005014 001C+00 4/4 0/0 0/0 .text cLib_calcTimer__FPi */ -extern "C" void func_80A6FAD4(void* _this, int* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80A70B40-80A70B4C 000B74 000C+00 2/2 0/0 0/0 .data __vt__17daNpc_Lud_Param_c */ -SECTION_DATA extern void* __vt__17daNpc_Lud_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daNpc_Lud_Param_cFv, +/* 80A70990-80A709B0 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Lud_MethodTable */ +static actor_method_class daNpc_Lud_MethodTable = { + (process_method_func)daNpc_Lud_Create, (process_method_func)daNpc_Lud_Delete, + (process_method_func)daNpc_Lud_Execute, (process_method_func)daNpc_Lud_IsDelete, + (process_method_func)daNpc_Lud_Draw, }; -/* 80A70B58-80A70B64 000008 000C+00 1/1 0/0 0/0 .bss @3840 */ -static u8 lit_3840[12]; - -/* 80A70B64-80A70B68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 80A6FAF0-80A6FC04 005030 0114+00 0/0 1/0 0/0 .text __sinit_d_a_npc_lud_cpp */ -void __sinit_d_a_npc_lud_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80A6FAF0, __sinit_d_a_npc_lud_cpp); -#pragma pop - -/* 80A6FC04-80A6FCD0 005144 00CC+00 1/1 0/0 0/0 .text - * __ct__11daNpc_Lud_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_Lud_c::daNpc_Lud_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 -} - -/* 80A6FCD0-80A6FCD8 005210 0008+00 1/0 0/0 0/0 .text getEyeballMaterialNo__11daNpc_Lud_cFv */ -u16 daNpc_Lud_c::getEyeballMaterialNo() { - return true; -} - -/* 80A6FCD8-80A6FCE0 005218 0008+00 1/0 0/0 0/0 .text getHeadJointNo__11daNpc_Lud_cFv */ -s32 daNpc_Lud_c::getHeadJointNo() { - return 4; -} - -/* 80A6FCE0-80A6FCE8 005220 0008+00 1/0 0/0 0/0 .text getNeckJointNo__11daNpc_Lud_cFv */ -s32 daNpc_Lud_c::getNeckJointNo() { - return 3; -} - -/* 80A6FCE8-80A6FCF0 005228 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__11daNpc_Lud_cFv - */ -bool daNpc_Lud_c::getBackboneJointNo() { - return true; -} - -/* 80A6FCF0-80A6FD00 005230 0010+00 1/0 0/0 0/0 .text checkChangeJoint__11daNpc_Lud_cFi - */ -void daNpc_Lud_c::checkChangeJoint(int param_0) { - // NONMATCHING -} - -/* 80A6FD00-80A6FD10 005240 0010+00 1/0 0/0 0/0 .text checkRemoveJoint__11daNpc_Lud_cFi - */ -void daNpc_Lud_c::checkRemoveJoint(int param_0) { - // NONMATCHING -} - -/* 80A6FD10-80A6FD58 005250 0048+00 2/1 0/0 0/0 .text __dt__17daNpc_Lud_Param_cFv */ -daNpc_Lud_Param_c::~daNpc_Lud_Param_c() { - // NONMATCHING -} - -/* 80A6FD58-80A6FD60 005298 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80A6FD58() { - // NONMATCHING -} - -/* 80A6FD60-80A6FD68 0052A0 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80A6FD60() { - // NONMATCHING -} - -/* 80A6FECC-80A6FECC 000150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80A709B0-80A709E0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_LUD */ +extern actor_process_profile_definition g_profile_NPC_LUD = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_LUD, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_Lud_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 338, // mPriority + &daNpc_Lud_MethodTable, // sub_method + 0x00040108, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_npc_moi.cpp b/src/d/actor/d_a_npc_moi.cpp index c1e2c2c2d62..1b610345d73 100644 --- a/src/d/actor/d_a_npc_moi.cpp +++ b/src/d/actor/d_a_npc_moi.cpp @@ -1,14 +1,14 @@ /** -* @file d_a_npc_moi.cpp + * @file d_a_npc_moi.cpp * */ #include "d/dolzel_rel.h" -#include "d/actor/d_a_npc_moi.h" #include "SSystem/SComponent/c_counter.h" #include "Z2AudioLib/Z2Instances.h" #include "d/actor/d_a_ep.h" +#include "d/actor/d_a_npc_moi.h" #include "d/actor/d_a_npc_uri.h" /* 80A7B17C-80A7B1BC 000020 0040+00 1/1 0/0 0/0 .data l_bmdData */ @@ -98,50 +98,55 @@ static daNpcT_motionAnmData_c l_motionAnmData[35] = { /* 80A7B82C-80A7B98C 0006D0 0160+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[88] = { - 1, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 2, -1, 1, 12, 0, 0, -1, 0, 0, -1, 0, 0, - 3, -1, 1, 13, 0, 0, -1, 0, 0, -1, 0, 0, 4, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0, - 5, -1, 1, 9, 0, 0, -1, 0, 0, -1, 0, 0, 6, -1, 1, 10, 0, 0, -1, 0, 0, -1, 0, 0, - 7, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 18, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 8, -1, 1, 16, 0, 0, -1, 0, 0, -1, 0, 0, 17, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 16, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 15, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 9, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 10, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 14, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 11, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 12, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 13, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 19, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, + {1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 1}, {12, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {3, -1, 1}, {13, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {14, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {5, -1, 1}, {9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {6, -1, 1}, + {10, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {18, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {16, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {17, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {16, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {9, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {10, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {14, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {13, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {19, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; /* 80A7B98C-80A7BC9C 000830 0310+00 0/1 0/0 0/0 .data l_motionSequenceData */ static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[196] = { - 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 8, -1, 1, 2, 0, 0, -1, 0, 0, -1, 0, 0, - 1, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 9, -1, 1, 1, 0, 0, -1, 0, 0, -1, 0, 0, - 4, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 10, -1, 1, 1, 0, 0, -1, 0, 0, -1, 0, 0, - 11, -1, 1, 5, 0, 0, -1, 0, 0, -1, 0, 0, 2, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 7, -1, 1, 1, 0, 0, -1, 0, 0, -1, 0, 0, 6, -1, 1, 0, 0, 0, -1, 0, 0, -1, 0, 0, - 22, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 25, -1, 1, 22, 0, 0, -1, 0, 0, -1, 0, 0, - 28, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 27, 0, 1, 29, 0, 0, -1, 0, 0, -1, 0, 0, - 14, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 15, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0, - 23, -1, 1, 22, 0, 0, -1, 0, 0, -1, 0, 0, 16, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0, - 17, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0, 33, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 31, -1, 1, 32, 0, 0, -1, 0, 0, -1, 0, 0, 32, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 29, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 20, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 21, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 26, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 18, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 25, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 24, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 13, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 12, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 3, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 30, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, - 18, 4, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {2, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {1, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {9, -1, 1}, {1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {4, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {10, -1, 1}, + {1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, {5, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {6, -1, 1}, {0, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {22, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {25, -1, 1}, {22, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {28, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {27, 0, 1}, {29, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {14, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 1}, {14, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {23, -1, 1}, {22, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {16, -1, 1}, {14, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {17, -1, 1}, {14, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {33, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {31, -1, 1}, {32, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {32, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {29, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {20, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {21, -1, 1}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {26, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {18, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {25, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {24, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {13, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {3, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {30, -1, 1}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {18, 4, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; /* 80A7BC9C-80A7BCB0 -00001 0014+00 1/1 0/0 0/0 .data mCutNameList__11daNpc_Moi_c */ -const char* daNpc_Moi_c::mCutNameList[5] = { +char* daNpc_Moi_c::mCutNameList[5] = { "", "DELIVERED_SW", "APPEARANCE_MOI", "CONVERSATION_WITH_URI", "FIND_WOLF", }; @@ -189,116 +194,14 @@ daNpc_Moi_c::~daNpc_Moi_c() { } /* 80A7AEF0-80A7AFAC 000000 00BC+00 19/19 0/0 0/0 .rodata m__17daNpc_Moi_Param_c */ -daNpc_Moi_HIOParam const daNpc_Moi_Param_c::m = { - 200.0f, // field_0x00 - -3.0f, // field_0x04 - 1.0f, // field_0x08 - 400.0f, // field_0x0c - 255.0f, // field_0x10 - 180.0f, // field_0x14 - 35.0f, // field_0x18 - 30.0f, // field_0x1c - 0.0f, // field_0x20 - 0.0f, // field_0x24 - 10.0f, // field_0x28 - -10.0f, // field_0x2c - 30.0f, // field_0x30 - -10.0f, // field_0x34 - 45.0f, // field_0x38 - -45.0f, // field_0x3c - 0.6000000238418579f, // field_0x40 - 12.0f, // field_0x44 - 3, // field_0x48 - 6, // field_0x4a - 5, // field_0x4c - 6, // field_0x4e - 110.0f, // field_0x50 - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3C, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 4.0f, // field_0x6c - 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, - 0x43, - 0xAF, - 0x00, - 0x00, - 0x43, - 0x96, - 0x00, - 0x00, - 0xC2, - 0xC8, - 0x00, - 0x00, - 90, // field_0x98 - 200, // field_0x9a - 235, // field_0x9c - 125, // field_0x9e - 0, // field_0xa0 - 0, // field_0xa2 - 1.0f, // field_0xa4 - 0x44, - 0x7A, - 0x00, - 0x00, - 0x43, - 0x96, - 0x00, - 0x00, - 0xC3, - 0x96, - 0x00, - 0x00, - 30.0f, // field_0xb4 - 60.0f, // field_0xb8 +const daNpc_Moi_HIOParam daNpc_Moi_Param_c::m = { + 200.0f, -3.0f, 1.0f, 400.0f, 255.0f, 180.0f, 35.0f, 30.0f, 0.0f, 0.0f, 10.0f, + -10.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6, + 110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0, + 4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x43, 0xAF, 0x00, + 0x00, 0x43, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 90, 200, + 235, 125, 0, 0, 1.0f, 0x44, 0x7A, 0x00, 0x00, 0x43, 0x96, + 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 30.0f, 60.0f, }; /* 80A74150-80A74474 0002F0 0324+00 1/1 0/0 0/0 .text create__11daNpc_Moi_cFv */ @@ -331,7 +234,7 @@ int daNpc_Moi_c::create() { reset(); 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(daNpc_Moi_Param_c::m.field_0x10, 0, this); + mCcStts.Init(daNpc_Moi_Param_c::m.common.weight, 0, this); for (int i = 0; i < 4; i++) { mCyl[i].Set(mCcDCyl); mCyl[i].SetStts(&mCcStts); @@ -632,64 +535,67 @@ void daNpc_Moi_c::setParam() { srchActors(); int uVar5 = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e); - s16 sVar7 = daNpc_Moi_Param_c::m.field_0x48; - s16 sVar6 = daNpc_Moi_Param_c::m.field_0x4a; - s16 sVar5 = daNpc_Moi_Param_c::m.field_0x4c; - s16 sVar4 = daNpc_Moi_Param_c::m.field_0x4e; + s16 talk_distance = daNpc_Moi_Param_c::m.common.talk_distance; + s16 talk_angle = daNpc_Moi_Param_c::m.common.talk_angle; + s16 attention_distance = daNpc_Moi_Param_c::m.common.attention_distance; + s16 attention_angle = daNpc_Moi_Param_c::m.common.attention_angle; if (mType == TYPE_2) { if (field_0x166d) { - sVar7 = 1; - sVar6 = 6; - sVar5 = 1; - sVar4 = 6; + talk_distance = 1; + talk_angle = 6; + attention_distance = 1; + attention_angle = 6; uVar5 = fopAc_AttnFlag_UNK_0x800000 | fopAc_AttnFlag_SPEAK_e; } else { - sVar7 = 6; - sVar6 = 6; - sVar5 = 19; - sVar4 = 6; + talk_distance = 6; + talk_angle = 6; + attention_distance = 19; + attention_angle = 6; uVar5 = fopAc_AttnFlag_LOCK_e; } } else if (mType == TYPE_1) { - sVar7 = 5; - sVar5 = 7; + talk_distance = 5; + attention_distance = 7; } if (daPy_getPlayerActorClass()->checkHorseRide()) { - if (sVar7 < 7) { - sVar7 = 7; + if (talk_distance < 7) { + talk_distance = 7; } - if (sVar5 < 9) { - sVar5 = 9; + if (attention_distance < 9) { + attention_distance = 9; } } if (mType == TYPE_2) { attention_info.distances[fopAc_attn_LOCK_e] = 0x35; attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; - attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(sVar7, sVar6); + attention_info.distances[fopAc_attn_SPEAK_e] = + daNpcT_getDistTableIdx(talk_distance, talk_angle); attention_info.flags = 0; fopAcM_OffStatus(this, 0x100); } else { - attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(sVar5, sVar4); + 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(sVar7, sVar6); + attention_info.distances[fopAc_attn_SPEAK_e] = + daNpcT_getDistTableIdx(talk_distance, talk_angle); attention_info.flags = uVar5; } - scale.set(daNpc_Moi_Param_c::m.field_0x08, daNpc_Moi_Param_c::m.field_0x08, - daNpc_Moi_Param_c::m.field_0x08); - mCcStts.SetWeight(daNpc_Moi_Param_c::m.field_0x10); - mCylH = daNpc_Moi_Param_c::m.field_0x14; - mWallR = daNpc_Moi_Param_c::m.field_0x1c; - mAttnFovY = daNpc_Moi_Param_c::m.field_0x50; + scale.set(daNpc_Moi_Param_c::m.common.scale, daNpc_Moi_Param_c::m.common.scale, + daNpc_Moi_Param_c::m.common.scale); + mCcStts.SetWeight(daNpc_Moi_Param_c::m.common.weight); + mCylH = daNpc_Moi_Param_c::m.common.height; + mWallR = daNpc_Moi_Param_c::m.common.width; + mAttnFovY = daNpc_Moi_Param_c::m.common.fov; if (mType == TYPE_2) { mAttnFovY = 135.0f; } mAcchCir.SetWallR(mWallR); - mAcchCir.SetWallH(daNpc_Moi_Param_c::m.field_0x18); - mRealShadowSize = daNpc_Moi_Param_c::m.field_0x0c; + mAcchCir.SetWallH(daNpc_Moi_Param_c::m.common.knee_length); + mRealShadowSize = daNpc_Moi_Param_c::m.common.real_shadow_size; if (mType == TYPE_1) { mRealShadowSize = 600.0f; } else if (mType == TYPE_2) { @@ -698,9 +604,9 @@ void daNpc_Moi_c::setParam() { mRealShadowSize = 800.0f; } } - gravity = daNpc_Moi_Param_c::m.field_0x04; - mExpressionMorfFrame = daNpc_Moi_Param_c::m.field_0x6c; - mMorfFrames = daNpc_Moi_Param_c::m.field_0x44; + gravity = daNpc_Moi_Param_c::m.common.gravity; + mExpressionMorfFrame = daNpc_Moi_Param_c::m.common.expression_morf_frame; + mMorfFrames = daNpc_Moi_Param_c::m.common.morf_frame; if (mType == TYPE_3) { mAcch.SetGrndNone(); mAcch.SetWallNone(); @@ -730,7 +636,7 @@ BOOL daNpc_Moi_c::checkChangeEvt() { /* 80A75514-80A755C8 0016B4 00B4+00 2/0 0/0 0/0 .text setAfterTalkMotion__11daNpc_Moi_cFv */ void daNpc_Moi_c::setAfterTalkMotion() { - int iVar2 = 21; + int iVar2 = MOT_UNK_21; switch (mFaceMotionSeqMngr.getNo()) { case MOT_UNK_1: iVar2 = MOT_UNK_18; @@ -836,8 +742,9 @@ void daNpc_Moi_c::action() { } if (mSph.ChkAtHit() && fopAcM_GetProfName(mSph.GetAtHitAc()) == PROC_ALINK) { - /* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo - (Used to connect with conversation after wearing clothes) */ + /* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo + (Used to connect with conversation after wearing clothes) + */ daNpcF_onTmpBit(0x47); } } @@ -868,13 +775,15 @@ void daNpc_Moi_c::setAttnPos() { if (mType == 3) { mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(), getNeckJointNo(), getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, l_HIO.m.field_0x40, dVar6, NULL); + 0.0f, 0.0f, l_HIO.m.common.neck_rotation_ratio, dVar6, NULL); } else { mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(), - getNeckJointNo(), getHeadJointNo(), l_HIO.m.field_0x24, l_HIO.m.field_0x20, - l_HIO.m.field_0x2c, l_HIO.m.field_0x28, l_HIO.m.field_0x34, - l_HIO.m.field_0x30, l_HIO.m.field_0x3c, l_HIO.m.field_0x38, - l_HIO.m.field_0x40, dVar6, NULL); + getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min, + l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min, + l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min, + l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min, + l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar6, + NULL); } mJntAnm.calcJntRad(0.2f, 1.0f, dVar6); @@ -886,7 +795,7 @@ void daNpc_Moi_c::setAttnPos() { mJntAnm.setEyeAngleY(eyePos, mCurAngle.y + field_0xd8a.y, 1, 1.0f, 0); acStack_3c.set(0.0f, 0.0f, 0.0f); - acStack_3c.y = l_HIO.m.field_0x00; + acStack_3c.y = l_HIO.m.common.attention_offset; if (mType == TYPE_3) { acStack_3c.set(0.0f, 140.0f, -60.0f); @@ -1135,7 +1044,8 @@ BOOL daNpc_Moi_c::chkPlayerGetWoodShield() { /* 80A766DC-80A76888 00287C 01AC+00 2/2 0/0 0/0 .text setSSlash__11daNpc_Moi_cFi */ void daNpc_Moi_c::setSSlash(int param_1) { mMotionSeqMngr.setNo(MOT_UNK_43, 0.0f, 1, 0); - /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */ + /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night + */ if (dComIfGs_isTmpBit(0x1308)) { mSound.startCreatureVoice(JAISoundID(Z2SE_MOI_V_GUARD_SWING), -1); } else { @@ -1153,7 +1063,7 @@ void daNpc_Moi_c::setSSlash(int param_1) { field_0x1658 = 0; field_0x166b = 1; field_0x166c = 1; - /* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo + /* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo (Used to connect with conversation after wearing clothes) */ daNpcT_onTmpBit(0x47); } @@ -1312,7 +1222,8 @@ int daNpc_Moi_c::injuryTurn(cXyz param_1) { /* 80A76F3C-80A770FC 0030DC 01C0+00 1/1 0/0 0/0 .text injuryWalk__11daNpc_Moi_cFv */ int daNpc_Moi_c::injuryWalk() { - /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */ + /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night + */ dComIfGs_offTmpBit(0x1308); cXyz cStack_40; @@ -1398,7 +1309,8 @@ int daNpc_Moi_c::poise() { field_0x1648 = cLib_getRndValue(iVar13 * 0.5f, iVar13 * 1.5f); } else if (!cLib_calcTimer(&field_0x1648)) { mMotionSeqMngr.setNo(MOT_UNK_43, 0.0f, 1, 0); - /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */ + /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding + * Uli, Ordon village night */ if (dComIfGs_isTmpBit(0x1308)) { mSound.startCreatureVoice(JAISoundID(Z2SE_MOI_V_GUARD_SWING), -1); } else { @@ -1926,7 +1838,9 @@ int daNpc_Moi_c::walkOnEggshell(void* param_1) { if (field_0x1658) { field_0x1658 = injuryCheck(); if (field_0x1658) { - if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) { + if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != + 0) + { f32 fVar = daPy_getPlayerActorClass()->attention_info.position.absXZ( attention_info.position); }