diff --git a/config/GZ2E01/rels/d_a_npc_pouya/symbols.txt b/config/GZ2E01/rels/d_a_npc_pouya/symbols.txt index 68188d85107..164c1d22583 100644 --- a/config/GZ2E01/rels/d_a_npc_pouya/symbols.txt +++ b/config/GZ2E01/rels/d_a_npc_pouya/symbols.txt @@ -134,7 +134,8 @@ jointNo$5024 = .rodata:0x00000110; // type:object size:0x4 scope:local data:4byt ...data.0 = .data:0x00000000; // type:label scope:local cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_348_data_10 = .data:0x00000010; // type:object size:0x10 +_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8 +_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8 l_bmdData = .data:0x00000020; // type:object size:0x18 scope:global data:4byte l_evtList = .data:0x00000038; // type:object size:0x48 scope:global l_resNameList = .data:0x00000080; // type:object size:0xC scope:global diff --git a/config/GZ2J01/rels/d_a_npc_pouya/symbols.txt b/config/GZ2J01/rels/d_a_npc_pouya/symbols.txt index adcd8394d7c..28d8c66a6c7 100644 --- a/config/GZ2J01/rels/d_a_npc_pouya/symbols.txt +++ b/config/GZ2J01/rels/d_a_npc_pouya/symbols.txt @@ -133,7 +133,8 @@ jointNo$5024 = .rodata:0x00000110; // type:object size:0x4 scope:local data:4byt @stringBase0 = .rodata:0x00000120; // type:object size:0xD0 scope:local data:string_table cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_348_data_10 = .data:0x00000010; // type:object size:0x10 +_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8 +_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8 l_bmdData = .data:0x00000020; // type:object size:0x18 scope:global data:4byte l_evtList = .data:0x00000038; // type:object size:0x48 scope:global l_resNameList = .data:0x00000080; // type:object size:0xC scope:global diff --git a/config/GZ2P01/rels/d_a_npc_pouya/symbols.txt b/config/GZ2P01/rels/d_a_npc_pouya/symbols.txt index adcd8394d7c..28d8c66a6c7 100644 --- a/config/GZ2P01/rels/d_a_npc_pouya/symbols.txt +++ b/config/GZ2P01/rels/d_a_npc_pouya/symbols.txt @@ -133,7 +133,8 @@ jointNo$5024 = .rodata:0x00000110; // type:object size:0x4 scope:local data:4byt @stringBase0 = .rodata:0x00000120; // type:object size:0xD0 scope:local data:string_table cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_348_data_10 = .data:0x00000010; // type:object size:0x10 +_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8 +_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8 l_bmdData = .data:0x00000020; // type:object size:0x18 scope:global data:4byte l_evtList = .data:0x00000038; // type:object size:0x48 scope:global l_resNameList = .data:0x00000080; // type:object size:0xC scope:global diff --git a/configure.py b/configure.py index fc728655f73..63a1b5b366b 100755 --- a/configure.py +++ b/configure.py @@ -1904,7 +1904,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_passer"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_passer2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_post"), - ActorRel(NonMatching, "d_a_npc_pouya"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_pouya"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_prayer", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_raca"), ActorRel(Equivalent, "d_a_npc_rafrel", extra_cflags=[DANPCF_C_HACK]), # weak func order diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 1323f3a8b0a..fa9b6781d5b 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -100,6 +100,7 @@ public: } } } + void setOffset(int i_offset) { mOffset = i_offset; } private: /* 0x00 */ sequenceStepData_c const* mpSeqData; diff --git a/include/d/actor/d_a_npc_pouya.h b/include/d/actor/d_a_npc_pouya.h index d91b93014fe..9ede16a6e09 100644 --- a/include/d/actor/d_a_npc_pouya.h +++ b/include/d/actor/d_a_npc_pouya.h @@ -3,6 +3,33 @@ #include "d/actor/d_a_npc.h" +struct daNpc_Pouya_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; +}; + +class daNpc_Pouya_Param_c { +public: + /* 80B24978 */ virtual ~daNpc_Pouya_Param_c() {} + + static const daNpc_Pouya_HIOParam m; +}; + +#if DEBUG +class daNpc_Pouya_HIO_c : public mDoHIO_entry_c { +public: + daNpc_Pouya_HIO_c(); + + void listenPropertyEvent(const JORPropertyEvent*); + void genMessage(JORMContext*); + + daNpc_Pouya_HIOParam m; +}; + +#define NPC_POUYA_HIO_CLASS daNpc_Pouya_HIO_c +#else +#define NPC_POUYA_HIO_CLASS daNpc_Pouya_Param_c +#endif + /** * @ingroup actors-npcs * @class daNpc_Pouya_c @@ -11,71 +38,133 @@ * @details * */ -class daNpc_Pouya_c : public fopAc_ac_c { +class daNpc_Pouya_c : public daNpcT_c { public: + typedef int (daNpc_Pouya_c::*cutFunc)(int); + typedef int (daNpc_Pouya_c::*actionFunc)(void*); + + enum Type { + TYPE_0, + TYPE_1, + TYPE_2, + TYPE_3, + TYPE_4, + TYPE_5, + }; + + enum FaceMotion { + /* 0x00 */ FACE_MOT_UNK_0 = 0, + /* 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, + /* 0x0A */ FACE_MOT_UNK_10 = 10, + /* 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, + }; + + enum Motion { + /* 0x00 */ MOT_UNK_0 = 0, + /* 0x01 */ MOT_UNK_1 = 1, + /* 0x04 */ MOT_UNK_4 = 4, + /* 0x08 */ MOT_UNK_8 = 8, + /* 0x0A */ MOT_UNK_10 = 10, + /* 0x0F */ MOT_UNK_15 = 15, + }; + /* 80AADDAC */ ~daNpc_Pouya_c(); - /* 80AADEE0 */ void create(); - /* 80AAE1AC */ void CreateHeap(); - /* 80AAE788 */ void Delete(); - /* 80AAE7BC */ void Execute(); - /* 80AAE7DC */ void Draw(); - /* 80AAE870 */ void createHeapCallBack(fopAc_ac_c*); - /* 80AAE890 */ void ctrlJointCallBack(J3DJoint*, int); + /* 80AADEE0 */ int create(); + /* 80AAE1AC */ int CreateHeap(); + /* 80AAE788 */ int Delete(); + /* 80AAE7BC */ int Execute(); + /* 80AAE7DC */ int Draw(); + /* 80AAE870 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80AAE890 */ static int ctrlJointCallBack(J3DJoint*, int); /* 80AAE8E8 */ u8 getType(); - /* 80AAE94C */ void isDelete(); + /* 80AAE94C */ BOOL isDelete(); /* 80AAE9D8 */ void reset(); /* 80AAEBCC */ void ctrlSubFaceMotion(int); /* 80AAEDB8 */ void afterJntAnm(int); /* 80AAEE44 */ void setParam(); - /* 80AAEFB4 */ void checkChangeEvt(); + /* 80AAEFB4 */ BOOL checkChangeEvt(); /* 80AAF148 */ void setAfterTalkMotion(); /* 80AAF1F0 */ void srchActors(); - /* 80AAF1F4 */ void evtTalk(); - /* 80AAF294 */ void evtCutProc(); + /* 80AAF1F4 */ BOOL evtTalk(); + /* 80AAF294 */ BOOL evtCutProc(); /* 80AAF35C */ void action(); /* 80AAF4F8 */ void beforeMove(); /* 80AAF5BC */ void setAttnPos(); /* 80AAF8E4 */ void setCollision(); - /* 80AAFA5C */ bool drawDbgInfo(); + /* 80AAFA5C */ int drawDbgInfo(); /* 80AAFA64 */ void drawOtherMdl(); - /* 80AAFB4C */ void afterSetMotionAnm(int, int, f32, int); - /* 80AAFBDC */ void selectAction(); - /* 80AAFC24 */ void chkAction(int (daNpc_Pouya_c::*)(void*)); - /* 80AAFC50 */ void setAction(int (daNpc_Pouya_c::*)(void*)); + /* 80AAFB4C */ bool afterSetMotionAnm(int, int, f32, int); + /* 80AAFBDC */ int selectAction(); + /* 80AAFC24 */ BOOL chkAction(int (daNpc_Pouya_c::*)(void*)); + /* 80AAFC50 */ int setAction(int (daNpc_Pouya_c::*)(void*)); /* 80AAFCF8 */ void setPrtcls(); - /* 80AAFE08 */ void cutHaveFavorToAsk(int); - /* 80AB04A8 */ void wait(void*); - /* 80AB0A7C */ void talk(void*); - /* 80AB1E94 */ daNpc_Pouya_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**); - /* 80AB1F54 */ u16 getEyeballMaterialNo(); - /* 80AB1F5C */ s32 getHeadJointNo(); - /* 80AB1F64 */ s32 getNeckJointNo(); - /* 80AB1F6C */ bool getBackboneJointNo(); - /* 80AB1F74 */ void checkChangeJoint(int); - /* 80AB1F84 */ void checkRemoveJoint(int); + /* 80AAFE08 */ int cutHaveFavorToAsk(int); + /* 80AB04A8 */ int wait(void*); + /* 80AB0A7C */ int talk(void*); + /* 80AB1E94 */ daNpc_Pouya_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) {} + /* 80AB1F54 */ u16 getEyeballMaterialNo() { return 1; } + /* 80AB1F5C */ s32 getHeadJointNo() { return 4; } + /* 80AB1F64 */ s32 getNeckJointNo() { return 3; } + /* 80AB1F6C */ s32 getBackboneJointNo() { return 1; } + /* 80AB1F74 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; } + /* 80AB1F84 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 8; } - MtxP getHeadMtx() { return mpMorf->getModel()->getAnmMtx(4); } + u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } + + int getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; + } + + BOOL chkPouyaB() { return (mType == TYPE_2 || mType == TYPE_3 || mType == TYPE_4); } + + MtxP getHeadMtx() { return mpMorf[0]->getModel()->getAnmMtx(4); } static char* mCutNameList[3]; - static u8 mCutList[36]; + static cutFunc mCutList[3]; private: - /* 0x568 */ u8 field_0x568[0x578 - 0x568]; - /* 0x578 */ mDoExt_McaMorfSO* mpMorf; - /* 0x57C */ u8 field_0x57c[0xfd4 - 0x57c]; + /* 0xE40 */ NPC_POUYA_HIO_CLASS* mpHIO; + /* 0xE44 */ J3DModel* mpModel[1]; + /* 0xE48 */ dCcD_Cyl mCyl; + /* 0xF84 */ u8 mType; + /* 0xF88 */ daNpcT_Path_c mPath; + /* 0xFB0 */ actionFunc field_0xfb0; + /* 0xFBC */ actionFunc mAction; + /* 0xFC8 */ u32 field_0xfc8; + /* 0xFCC */ s8 field_0xfcc; + /* 0xFCD */ s8 field_0xfcd; + /* 0xFCE */ u8 field_0xfce; + /* 0xFCF */ u8 field_0xfcf; + /* 0xFD0 */ u8 field_0xfd0; }; STATIC_ASSERT(sizeof(daNpc_Pouya_c) == 0xfd4); -class daNpc_Pouya_Param_c { -public: - /* 80AB1F94 */ ~daNpc_Pouya_Param_c(); - - static u8 const m[140]; -}; - - #endif /* D_A_NPC_POUYA_H */ diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h index 029aaaa0daf..a0b52e4b956 100644 --- a/include/m_Do/m_Do_graphic.h +++ b/include/m_Do/m_Do_graphic.h @@ -69,6 +69,7 @@ public: static void endFrame() { JFWDisplay::getManager()->endFrame(); } static void offFade() { mFade = 0; } static u8 isFade() { return mFade; } + static void fadeIn_f(f32 i_fadeSpeed, _GXColor& i_fadeColor) { fadeOut_f(-i_fadeSpeed, i_fadeColor); } static void offBlure() { mBlureFlag = false; } static bool isBlure() { return mBlureFlag; } static void setBlureRate(u8 i_rate) { mBlureRate = i_rate; } diff --git a/src/d/actor/d_a_npc_lud.cpp b/src/d/actor/d_a_npc_lud.cpp index a6f3a0e1a16..39943afa7b7 100644 --- a/src/d/actor/d_a_npc_lud.cpp +++ b/src/d/actor/d_a_npc_lud.cpp @@ -90,6 +90,7 @@ enum FaceMotion { /* 0x07 */ FACE_MOT_UNK_7 = 7, /* 0x08 */ FACE_MOT_UNK_8 = 8, /* 0x09 */ FACE_MOT_UNK_9 = 9, + /* 0x0A */ FACE_MOT_UNK_10 = 10, /* 0x0B */ FACE_MOT_UNK_11 = 11, /* 0x0C */ FACE_MOT_UNK_12 = 12, /* 0x0D */ FACE_MOT_UNK_13 = 13, @@ -629,10 +630,10 @@ BOOL daNpc_Lud_c::checkChangeEvt() { /* 80A6BE6C-80A6BEE4 0013AC 0078+00 1/0 0/0 0/0 .text setAfterTalkMotion__11daNpc_Lud_cFv */ void daNpc_Lud_c::setAfterTalkMotion() { - int iVar2 = MOT_UNK_18; + int iVar2 = FACE_MOT_UNK_18; switch (mFaceMotionSeqMngr.getNo()) { - case MOT_UNK_1: - iVar2 = MOT_UNK_10; + case FACE_MOT_UNK_1: + iVar2 = FACE_MOT_UNK_10; break; } mFaceMotionSeqMngr.setNo(iVar2, -1.0f, 0, 0); diff --git a/src/d/actor/d_a_npc_pouya.cpp b/src/d/actor/d_a_npc_pouya.cpp index 6678797f5d6..d1d1e41d80b 100644 --- a/src/d/actor/d_a_npc_pouya.cpp +++ b/src/d/actor/d_a_npc_pouya.cpp @@ -1,304 +1,76 @@ /** * @file d_a_npc_pouya.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_pouya.h" -#include "dol2asm.h" -// -// Forward References: -// +/* 80AB2000-80AB208C 000000 008C+00 8/8 0/0 0/0 .rodata m__19daNpc_Pouya_Param_c */ +const daNpc_Pouya_HIOParam daNpc_Pouya_Param_c::m = { + 120.0f, // attention_offset + -3.0f, // gravity + 1.0f, // scale + 400.0f, // real_shadow_size + 255.0f, // weight + 100.0f, // height + 35.0f, // knee_length + 40.0f, // width + 0.0f, // body_angleX_max + 0.0f, // body_angleX_min + 10.0f, // body_angleY_max + -10.0f, // body_angleY_min + 30.0f, // head_angleX_max + -10.0f, // head_angleX_min + 45.0f, // head_angleY_max + -45.0f, // head_angleY_min + 0.6f, // neck_rotation_ratio + 12.0f, // morf_frame + 3, // talk_distance + 6, // talk_angle + 5, // attention_distance + 6, // attention_angle + 110.0f, // fov + 0.0f, // search_distance + 0.0f, // search_height + 0.0f, // search_depth + 60, // attention_time + 8, // damage_time + 0, // face_expression + 0, // motion + 0, // look_mode + 0, // debug_mode_ON + 0, // debug_info_ON + 4.0f, // expression_morf_frame + 0.0f, // box_min_x + 0.0f, // box_min_y + 0.0f, // box_min_z + 0.0f, // box_max_x + 0.0f, // box_max_y + 0.0f, // box_max_z + 0.0f, // box_offset +}; -extern "C" void __dt__13daNpc_Pouya_cFv(); -extern "C" void create__13daNpc_Pouya_cFv(); -extern "C" void CreateHeap__13daNpc_Pouya_cFv(); -extern "C" void __dt__15J3DTevKColorAnmFv(); -extern "C" void __ct__15J3DTevKColorAnmFv(); -extern "C" void __dt__14J3DTevColorAnmFv(); -extern "C" void __ct__14J3DTevColorAnmFv(); -extern "C" void __dt__11J3DTexNoAnmFv(); -extern "C" void __ct__11J3DTexNoAnmFv(); -extern "C" void __dt__12J3DTexMtxAnmFv(); -extern "C" void __ct__12J3DTexMtxAnmFv(); -extern "C" void __dt__14J3DMatColorAnmFv(); -extern "C" void __ct__14J3DMatColorAnmFv(); -extern "C" void Delete__13daNpc_Pouya_cFv(); -extern "C" void Execute__13daNpc_Pouya_cFv(); -extern "C" void Draw__13daNpc_Pouya_cFv(); -extern "C" void createHeapCallBack__13daNpc_Pouya_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__13daNpc_Pouya_cFP8J3DJointi(); -extern "C" void getType__13daNpc_Pouya_cFv(); -extern "C" void isDelete__13daNpc_Pouya_cFv(); -extern "C" void reset__13daNpc_Pouya_cFv(); -extern "C" void ctrlSubFaceMotion__13daNpc_Pouya_cFi(); -extern "C" void afterJntAnm__13daNpc_Pouya_cFi(); -extern "C" void setParam__13daNpc_Pouya_cFv(); -extern "C" void checkChangeEvt__13daNpc_Pouya_cFv(); -extern "C" void setAfterTalkMotion__13daNpc_Pouya_cFv(); -extern "C" void srchActors__13daNpc_Pouya_cFv(); -extern "C" void evtTalk__13daNpc_Pouya_cFv(); -extern "C" void evtCutProc__13daNpc_Pouya_cFv(); -extern "C" void action__13daNpc_Pouya_cFv(); -extern "C" void beforeMove__13daNpc_Pouya_cFv(); -extern "C" void setAttnPos__13daNpc_Pouya_cFv(); -extern "C" void setCollision__13daNpc_Pouya_cFv(); -extern "C" bool drawDbgInfo__13daNpc_Pouya_cFv(); -extern "C" void drawOtherMdl__13daNpc_Pouya_cFv(); -extern "C" void afterSetMotionAnm__13daNpc_Pouya_cFiifi(); -extern "C" void selectAction__13daNpc_Pouya_cFv(); -extern "C" void chkAction__13daNpc_Pouya_cFM13daNpc_Pouya_cFPCvPvPv_i(); -extern "C" void setAction__13daNpc_Pouya_cFM13daNpc_Pouya_cFPCvPvPv_i(); -extern "C" void setPrtcls__13daNpc_Pouya_cFv(); -extern "C" void cutHaveFavorToAsk__13daNpc_Pouya_cFi(); -extern "C" void wait__13daNpc_Pouya_cFPv(); -extern "C" void talk__13daNpc_Pouya_cFPv(); -extern "C" static void daNpc_Pouya_Create__FPv(); -extern "C" static void daNpc_Pouya_Delete__FPv(); -extern "C" static void daNpc_Pouya_Execute__FPv(); -extern "C" static void daNpc_Pouya_Draw__FPv(); -extern "C" static bool daNpc_Pouya_IsDelete__FPv(); -extern "C" void calc__11J3DTexNoAnmCFPUs(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__8daNpcT_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __dt__13daNpcT_Path_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void -__ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__15daNpcT_JntAnm_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs(); -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs(); -extern "C" 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_80AB1DDC(void* _this, int*); -extern "C" void __sinit_d_a_npc_pouya_cpp(); -extern "C" void -__ct__13daNpc_Pouya_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" u16 getEyeballMaterialNo__13daNpc_Pouya_cFv(); -extern "C" s32 getHeadJointNo__13daNpc_Pouya_cFv(); -extern "C" s32 getNeckJointNo__13daNpc_Pouya_cFv(); -extern "C" bool getBackboneJointNo__13daNpc_Pouya_cFv(); -extern "C" void checkChangeJoint__13daNpc_Pouya_cFi(); -extern "C" void checkRemoveJoint__13daNpc_Pouya_cFi(); -extern "C" void __dt__19daNpc_Pouya_Param_cFv(); -extern "C" static void func_80AB1FDC(); -extern "C" static void func_80AB1FE4(); -extern "C" u8 const m__19daNpc_Pouya_Param_c[140]; -extern "C" extern char const* const d_a_npc_pouya__stringBase0; -extern "C" void* mCutNameList__13daNpc_Pouya_c[3]; -extern "C" u8 mCutList__13daNpc_Pouya_c[36]; +#if DEBUG +daNpc_Pouya_HIO_c::daNpc_Pouya_HIO_c() { + m = daNpc_Pouya_Param_c::m; +} -// -// External References: -// +void daNpc_Pouya_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) { + // TODO +} -extern "C" void fadeOut_f__13mDoGph_gInf_cFfR8_GXColor(); -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 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 fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz(); -extern "C" void fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData(); -extern "C" void fpcEx_IsExist__FUi(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void isSwitch__12dSv_memBit_cCFi(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -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 initialize__13daNpcT_Path_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 getTevRegKeyAnmP__8daNpcT_cFPCci(); -extern "C" void setBrkAnm__8daNpcT_cFP15J3DAnmTevRegKeyP12J3DModelDatafi(); -extern "C" void loadRes__8daNpcT_cFPCScPPCc(); -extern "C" void deleteRes__8daNpcT_cFPCScPPCc(); -extern "C" void execute__8daNpcT_cFv(); -extern "C" void draw__8daNpcT_cFiifP11_GXColorS10fiii(); -extern "C" void setEnvTevColor__8daNpcT_cFv(); -extern "C" void setRoomNo__8daNpcT_cFv(); -extern "C" void ctrlBtk__8daNpcT_cFv(); -extern "C" void setMtx__8daNpcT_cFv(); -extern "C" void ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel(); -extern "C" void evtProc__8daNpcT_cFv(); -extern "C" void setFootPos__8daNpcT_cFv(); -extern "C" void setFootPrtcl__8daNpcT_cFP4cXyzff(); -extern "C" bool checkCullDraw__8daNpcT_cFv(); -extern "C" void twilight__8daNpcT_cFv(); -extern "C" void evtOrder__8daNpcT_cFv(); -extern "C" void evtChange__8daNpcT_cFv(); -extern "C" void clrParam__8daNpcT_cFv(); -extern "C" void setFaceMotionAnm__8daNpcT_cFib(); -extern "C" void setMotionAnm__8daNpcT_cFifi(); -extern "C" void setAngle__8daNpcT_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 daNpcT_getPlayerInfoFromPlayerList__FiiP4cXyzP5csXyz(); -extern "C" void daNpcT_getDistTableIdx__Fii(); -extern "C" void daNpcT_chkEvtBit__FUl(); -extern "C" void daNpcT_offTmpBit__FUl(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void getEventId__10dMsgFlow_cFPi(); -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 JPAGetXYZRotateMtx__FsssPA4_f(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void __dt__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -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_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_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" f32 mFadeRate__13mDoGph_gInf_c; -extern "C" extern u8 mBlureFlag__13mDoGph_gInf_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80AB2120-80AB2120 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AB2120 = ""; -SECTION_DEAD static char const* const stringBase_80AB2121 = "DEFAULT_GETITEM"; -SECTION_DEAD static char const* const stringBase_80AB2131 = "NO_RESPONSE"; -SECTION_DEAD static char const* const stringBase_80AB213D = "HAVE_FAVORTO_ASK1"; -SECTION_DEAD static char const* const stringBase_80AB214F = "HAVE_FAVORTO_ASK2"; -SECTION_DEAD static char const* const stringBase_80AB2161 = "RETURN_FAVOR_1_01"; -SECTION_DEAD static char const* const stringBase_80AB2173 = "RETURN_FAVOR_1_02"; -SECTION_DEAD static char const* const stringBase_80AB2185 = "RETURN_FAVOR_2_01"; -SECTION_DEAD static char const* const stringBase_80AB2197 = "RETURN_FAVOR_2_02"; -SECTION_DEAD static char const* const stringBase_80AB21A9 = "pouyaA"; -SECTION_DEAD static char const* const stringBase_80AB21B0 = "pouyaB"; -SECTION_DEAD static char const* const stringBase_80AB21B7 = "HAVE_FAVORTO_ASK"; -SECTION_DEAD static char const* const stringBase_80AB21C8 = "RETURN_FAVOR"; -#pragma pop +void daNpc_Pouya_HIO_c::genMessage(JORMContext* ctext) { + // TODO +} +#endif /* 80AB2210-80AB2228 000020 0018+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[24] = { - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, +static int l_bmdData[3][2] = { + {26, 1}, + {23, 1}, + {34, 2}, }; /* 80AB2228-80AB2270 -00001 0048+00 0/1 0/0 0/0 .data l_evtList */ @@ -322,163 +94,68 @@ static char* l_resNameList[3] = { }; /* 80AB227C-80AB2280 00008C 0002+02 1/0 0/0 0/0 .data l_loadResPtrn0 */ -SECTION_DATA static u16 l_loadResPtrn0[1 + 1 /* padding */] = { - 0x01FF, - /* padding */ - 0x0000, -}; +static s8 l_loadResPtrn0[2] = {1, -1}; /* 80AB2280-80AB2284 000090 0002+02 1/0 0/0 0/0 .data l_loadResPtrn1 */ -SECTION_DATA static u16 l_loadResPtrn1[1 + 1 /* padding */] = { - 0x02FF, - /* padding */ - 0x0000, -}; +static s8 l_loadResPtrn1[2] = {2, -1}; /* 80AB2284-80AB229C -00001 0018+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList[6] = { - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn1, - (void*)&l_loadResPtrn1, (void*)&l_loadResPtrn1, (void*)&l_loadResPtrn0, +static s8* l_loadResPtrnList[6] = { + l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn1, l_loadResPtrn1, l_loadResPtrn1, l_loadResPtrn0, }; /* 80AB229C-80AB245C 0000AC 01C0+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[448] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x31, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[16] = { + {-1, 0, 0, -1, 0, 0, 0}, {11, 0, 1, -1, 0, 0, 0}, {8, 2, 1, -1, 0, 0, 0}, + {9, 0, 1, -1, 0, 0, 0}, {10, 0, 1, -1, 0, 0, 0}, {12, 2, 1, -1, 0, 0, 0}, + {14, 2, 2, 47, 2, 2, 0}, {10, 0, 2, 43, 0, 2, 0}, {16, 2, 2, 49, 2, 2, 0}, + {11, 0, 2, 44, 0, 2, 0}, {17, 2, 2, 50, 2, 2, 0}, {9, 0, 2, 42, 0, 2, 0}, + {15, 2, 2, 48, 2, 2, 0}, {12, 2, 2, 45, 2, 2, 0}, {13, 0, 2, 46, 0, 2, 0}, + {18, 2, 2, 51, 2, 2, 0}, }; -#pragma pop /* 80AB245C-80AB2734 00026C 02D8+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[728] = { - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x26, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, +static daNpcT_motionAnmData_c l_motionAnmData[26] = { + {18, 2, 1, 36, 2, 1, 0, 0}, {19, 2, 1, 36, 2, 1, 0, 0}, {20, 2, 1, 36, 2, 1, 0, 0}, + {13, 0, 1, 36, 2, 1, 0, 0}, {16, 0, 1, 36, 2, 1, 0, 0}, {17, 2, 1, 36, 2, 1, 0, 0}, + {14, 0, 1, 36, 2, 1, 0, 0}, {15, 2, 1, 36, 2, 1, 0, 0}, {16, 0, 1, 36, 2, 1, 0, 0}, + {14, 0, 1, 36, 2, 1, 0, 0}, {30, 2, 2, 37, 0, 2, 1, 0}, {25, 0, 2, 37, 0, 2, 1, 0}, + {31, 2, 2, 38, 2, 2, 0, 0}, {21, 0, 2, 37, 0, 2, 1, 0}, {22, 2, 2, 37, 0, 2, 1, 0}, + {7, 0, 2, 37, 0, 2, 1, 0}, {8, 2, 2, 37, 0, 2, 1, 0}, {23, 0, 2, 37, 0, 2, 1, 0}, + {24, 2, 2, 37, 0, 2, 1, 0}, {19, 0, 2, 37, 0, 2, 1, 0}, {20, 2, 2, 37, 0, 2, 1, 0}, + {28, 2, 2, 37, 0, 2, 1, 0}, {27, 0, 2, 37, 0, 2, 1, 0}, {29, 2, 2, 37, 0, 2, 1, 0}, + {26, 0, 2, 37, 0, 2, 1, 0}, {23, 0, 2, 37, 0, 2, 1, 0}, }; -#pragma pop /* 80AB2734-80AB2854 000544 0120+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[288] = { - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x04, 0xFF, 0x01, 0x00, 0x05, 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, 0x06, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x07, 0xFF, 0x01, 0x00, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x09, 0xFF, 0x01, 0x00, 0x0A, 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, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0E, 0xFF, 0x01, 0x00, 0x0F, 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, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0C, 0xFF, 0x00, 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, - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[72] = { + {-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, -1, 1}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {3, -1, 1}, {2, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, + {5, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {6, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {8, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {9, -1, 1}, {10, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, {12, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {13, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {14, -1, 1}, + {15, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {10, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {15, -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 /* 80AB2854-80AB2984 000664 0130+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[304] = { - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x01, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x04, 0xFF, 0x01, 0x00, 0x05, 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, 0x06, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x08, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x09, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0A, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0B, 0xFF, 0x01, 0x00, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0D, 0xFF, 0x01, 0x00, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0F, 0xFF, 0x01, 0x00, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x11, 0xFF, 0x01, 0x00, 0x12, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x13, 0xFF, 0x01, 0x00, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x15, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x16, 0xFF, 0x01, 0x00, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x18, 0xFF, 0x01, 0x00, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x19, 0xFF, 0x01, 0x00, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[76] = { + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {1, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {3, -1, 1}, {1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {5, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {6, -1, 1}, + {7, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {9, -1, 1}, {1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {10, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {11, -1, 1}, {10, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {13, -1, 1}, {14, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 1}, + {16, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {17, -1, 1}, {18, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {19, -1, 1}, {20, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {21, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {22, -1, 1}, {23, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {24, -1, 1}, {21, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {25, -1, 1}, {10, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80AB2984-80AB2990 -00001 000C+00 1/1 0/0 0/0 .data mCutNameList__13daNpc_Pouya_c */ char* daNpc_Pouya_c::mCutNameList[3] = { @@ -487,1131 +164,1111 @@ char* daNpc_Pouya_c::mCutNameList[3] = { "RETURN_FAVOR", }; -/* 80AB2990-80AB299C -00001 000C+00 0/1 0/0 0/0 .data @3817 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3817[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutHaveFavorToAsk__13daNpc_Pouya_cFi, -}; -#pragma pop - -/* 80AB299C-80AB29A8 -00001 000C+00 0/1 0/0 0/0 .data @3818 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3818[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutHaveFavorToAsk__13daNpc_Pouya_cFi, -}; -#pragma pop - /* 80AB29A8-80AB29CC 0007B8 0024+00 1/2 0/0 0/0 .data mCutList__13daNpc_Pouya_c */ -SECTION_DATA u8 daNpc_Pouya_c::mCutList[36] = { - 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, -}; - -/* 80AB29CC-80AB29D8 0007DC 000C+00 1/0 0/0 0/0 .data normal$4547 */ -SECTION_DATA static u8 normal[12] = { - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, -}; - -/* 80AB29D8-80AB29E4 0007E8 000C+00 1/0 0/0 0/0 .data uttae01$4548 */ -SECTION_DATA static u8 uttae01[12] = { - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; - -/* 80AB29E4-80AB29F0 0007F4 000C+00 1/0 0/0 0/0 .data uttae02$4549 */ -SECTION_DATA static u8 uttae02[12] = { - 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, -}; - -/* 80AB29F0-80AB29FC 000800 000C+00 1/0 0/0 0/0 .data koufun01$4550 */ -SECTION_DATA static u8 koufun01[12] = { - 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; - -/* 80AB29FC-80AB2A08 00080C 000C+00 1/0 0/0 0/0 .data koufun02$4551 */ -SECTION_DATA static u8 koufun02[12] = { - 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, -}; - -/* 80AB2A08-80AB2A10 -00001 0008+00 1/0 0/0 0/0 .data brkSeq_normal$4552 */ -SECTION_DATA static void* brkSeq_normal[2] = { - (void*)&normal, - (void*)NULL, -}; - -/* 80AB2A10-80AB2A1C -00001 000C+00 1/0 0/0 0/0 .data brkSeq_uttae01_uttae02$4553 */ -SECTION_DATA static void* brkSeq_uttae01_uttae02[3] = { - (void*)&uttae01, - (void*)&uttae02, - (void*)NULL, -}; - -/* 80AB2A1C-80AB2A28 -00001 000C+00 1/0 0/0 0/0 .data brkSeq_koufun01_koufun02$4554 */ -SECTION_DATA static void* brkSeq_koufun01_koufun02[3] = { - (void*)&koufun01, - (void*)&koufun02, - (void*)NULL, -}; - -/* 80AB2A28-80AB2A34 -00001 000C+00 1/1 0/0 0/0 .data brkSeqList$4555 */ -SECTION_DATA static void* brkSeqList[3] = { - (void*)&brkSeq_normal, - (void*)&brkSeq_uttae01_uttae02, - (void*)&brkSeq_koufun01_koufun02, -}; - -/* 80AB2A34-80AB2A50 -00001 001C+00 1/1 0/0 0/0 .data @4598 */ -SECTION_DATA static void* lit_4598[7] = { - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x48), - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x68), - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x8C), - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x48), - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x68), - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x8C), - (void*)(((char*)ctrlSubFaceMotion__13daNpc_Pouya_cFi) + 0x68), -}; - -/* 80AB2A50-80AB2A5C -00001 000C+00 1/1 0/0 0/0 .data @4663 */ -SECTION_DATA static void* lit_4663[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_Pouya_cFPv, -}; - -/* 80AB2A5C-80AB2A90 -00001 0034+00 1/1 0/0 0/0 .data @4743 */ -SECTION_DATA static void* lit_4743[13] = { - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x60), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x44), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x4C), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x54), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x60), - (void*)(((char*)setAfterTalkMotion__13daNpc_Pouya_cFv) + 0x5C), -}; - -/* 80AB2A90-80AB2A9C -00001 000C+00 1/1 0/0 0/0 .data @4758 */ -SECTION_DATA static void* lit_4758[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_Pouya_cFPv, -}; - -/* 80AB2A9C-80AB2AA8 -00001 000C+00 1/1 0/0 0/0 .data @4763 */ -SECTION_DATA static void* lit_4763[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpc_Pouya_cFPv, -}; - -/* 80AB2AA8-80AB2AB4 -00001 000C+00 1/1 0/0 0/0 .data @5095 */ -SECTION_DATA static void* lit_5095[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpc_Pouya_cFPv, -}; - -/* 80AB2AB4-80AB2AE8 -00001 0034+00 1/1 0/0 0/0 .data @5334 */ -SECTION_DATA static void* lit_5334[13] = { - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x454), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x454), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x554), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x554), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x454), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x5A0), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x554), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x67C), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x67C), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x67C), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x5A8), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x668), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x5A8), -}; - -/* 80AB2AE8-80AB2B1C -00001 0034+00 1/1 0/0 0/0 .data @5333 */ -SECTION_DATA static void* lit_5333[13] = { - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x11C), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x424), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x178), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x180), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x230), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x244), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x250), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x424), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x424), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x424), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x300), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x364), - (void*)(((char*)cutHaveFavorToAsk__13daNpc_Pouya_cFi) + 0x378), -}; - -/* 80AB2B1C-80AB2B3C -00001 0020+00 1/0 0/0 0/0 .data daNpc_Pouya_MethodTable */ -static actor_method_class daNpc_Pouya_MethodTable = { - (process_method_func)daNpc_Pouya_Create__FPv, - (process_method_func)daNpc_Pouya_Delete__FPv, - (process_method_func)daNpc_Pouya_Execute__FPv, - (process_method_func)daNpc_Pouya_IsDelete__FPv, - (process_method_func)daNpc_Pouya_Draw__FPv, -}; - -/* 80AB2B3C-80AB2B6C -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_POUYA */ -extern actor_process_profile_definition g_profile_NPC_POUYA = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_POUYA, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_Pouya_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 404, // mPriority - &daNpc_Pouya_MethodTable, // sub_method - 0x00040107, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80AB2B6C-80AB2B78 00097C 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, -}; - -/* 80AB2B78-80AB2B84 000988 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, -}; - -/* 80AB2B84-80AB2BA8 000994 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_80AB1FE4, - (void*)NULL, - (void*)NULL, - (void*)func_80AB1FDC, -}; - -/* 80AB2BA8-80AB2BB4 0009B8 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, -}; - -/* 80AB2BB4-80AB2BC0 0009C4 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, -}; - -/* 80AB2BC0-80AB2BCC 0009D0 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, -}; - -/* 80AB2BCC-80AB2BD8 0009DC 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, -}; - -/* 80AB2BD8-80AB2BE4 0009E8 000C+00 4/4 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcT_ActorMngr_cFv, -}; - -/* 80AB2BE4-80AB2BF0 0009F4 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, -}; - -/* 80AB2BF0-80AB2BFC 000A00 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, -}; - -/* 80AB2BFC-80AB2C08 000A0C 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, -}; - -/* 80AB2C08-80AB2C14 000A18 000C+00 3/3 0/0 0/0 .data __vt__13daNpcT_Path_c */ -SECTION_DATA extern void* __vt__13daNpcT_Path_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpcT_Path_cFv, -}; - -/* 80AB2C14-80AB2CD8 000A24 00C4+00 2/2 0/0 0/0 .data __vt__13daNpc_Pouya_c */ -SECTION_DATA extern void* __vt__13daNpc_Pouya_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpc_Pouya_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__13daNpc_Pouya_cFi, - (void*)checkChangeJoint__13daNpc_Pouya_cFi, - (void*)checkRemoveJoint__13daNpc_Pouya_cFi, - (void*)getBackboneJointNo__13daNpc_Pouya_cFv, - (void*)getNeckJointNo__13daNpc_Pouya_cFv, - (void*)getHeadJointNo__13daNpc_Pouya_cFv, - (void*)getFootLJointNo__8daNpcT_cFv, - (void*)getFootRJointNo__8daNpcT_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__13daNpc_Pouya_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__13daNpc_Pouya_cFi, - (void*)setParam__13daNpc_Pouya_cFv, - (void*)checkChangeEvt__13daNpc_Pouya_cFv, - (void*)evtTalk__13daNpc_Pouya_cFv, - (void*)evtEndProc__8daNpcT_cFv, - (void*)evtCutProc__13daNpc_Pouya_cFv, - (void*)setAfterTalkMotion__13daNpc_Pouya_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__13daNpc_Pouya_cFv, - (void*)beforeMove__13daNpc_Pouya_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__13daNpc_Pouya_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__13daNpc_Pouya_cFv, - (void*)setFootPrtcl__8daNpcT_cFP4cXyzff, - (void*)checkCullDraw__8daNpcT_cFv, - (void*)twilight__8daNpcT_cFv, - (void*)chkXYItems__8daNpcT_cFv, - (void*)evtOrder__8daNpcT_cFv, - (void*)decTmr__8daNpcT_cFv, - (void*)clrParam__8daNpcT_cFv, - (void*)drawDbgInfo__13daNpc_Pouya_cFv, - (void*)drawOtherMdl__13daNpc_Pouya_cFv, - (void*)drawGhost__8daNpcT_cFv, - (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi, - (void*)afterSetMotionAnm__13daNpc_Pouya_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_Pouya_c::cutFunc daNpc_Pouya_c::mCutList[3] = { + NULL, + &daNpc_Pouya_c::cutHaveFavorToAsk, + &daNpc_Pouya_c::cutHaveFavorToAsk, }; /* 80AADDAC-80AADEE0 0000EC 0134+00 1/0 0/0 0/0 .text __dt__13daNpc_Pouya_cFv */ daNpc_Pouya_c::~daNpc_Pouya_c() { - // NONMATCHING + if (mpMorf[0] != NULL) { + mpMorf[0]->stopZelAnime(); + } + + deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList); } -/* ############################################################################################## */ -/* 80AB2000-80AB208C 000000 008C+00 8/8 0/0 0/0 .rodata m__19daNpc_Pouya_Param_c */ -SECTION_RODATA u8 const daNpc_Pouya_Param_c::m[140] = { - 0x42, 0xF0, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, - 0x42, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AB2000, &daNpc_Pouya_Param_c::m); - -/* 80AB208C-80AB20A4 00008C 0018+00 0/1 0/0 0/0 .rodata heapSize$3971 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const heapSize[24] = { - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x54, 0x40, 0x00, 0x00, 0x36, 0x80, - 0x00, 0x00, 0x36, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, -}; -COMPILER_STRIP_GATE(0x80AB208C, &heapSize); -#pragma pop - -/* 80AB20A4-80AB20A8 0000A4 0004+00 0/1 0/0 0/0 .rodata @4039 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4039 = -150.0f; -COMPILER_STRIP_GATE(0x80AB20A4, &lit_4039); -#pragma pop - -/* 80AB20A8-80AB20AC 0000A8 0004+00 0/1 0/0 0/0 .rodata @4040 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4040 = -100.0f; -COMPILER_STRIP_GATE(0x80AB20A8, &lit_4040); -#pragma pop - -/* 80AB20AC-80AB20B0 0000AC 0004+00 0/1 0/0 0/0 .rodata @4041 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4041 = 150.0f; -COMPILER_STRIP_GATE(0x80AB20AC, &lit_4041); -#pragma pop - -/* 80AB20B0-80AB20B4 0000B0 0004+00 0/1 0/0 0/0 .rodata @4042 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4042 = 300.0f; -COMPILER_STRIP_GATE(0x80AB20B0, &lit_4042); -#pragma pop - -/* 80AB20B4-80AB20B8 0000B4 0004+00 0/1 0/0 0/0 .rodata @4043 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4043 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x80AB20B4, &lit_4043); -#pragma pop - /* 80AADEE0-80AAE1AC 000220 02CC+00 1/1 0/0 0/0 .text create__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::create() { - // NONMATCHING +int daNpc_Pouya_c::create() { + static int const heapSize[6] = { + 0x8000, 0x5440, 0x3680, 0x3680, 0x8000, 0x8000, + }; + + daNpcT_ct(this, daNpc_Pouya_c, l_faceMotionAnmData, l_motionAnmData, l_faceMotionSequenceData, + 4, l_motionSequenceData, 4, l_evtList, l_resNameList); + + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = 0; + + 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, -150.0f, -100.0f, -150.0f, 150.0f, 300.0f, 150.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(mpHIO->m.common.weight, 0, this); + mCyl.Set(mCcDCyl); + mCyl.SetStts(&mCcStts); + mCyl.SetTgHitCallback(tgHitCallBack); + mAcch.SetGrndNone(); + mAcch.SetWallNone(); + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + if (mGroundH != -G_CM3D_F_INF) { + setEnvTevColor(); + setRoomNo(); + } + mCreating = true; + Execute(); + mCreating = false; + } + + return phase; } -/* ############################################################################################## */ -/* 80AB20B8-80AB20BC 0000B8 0004+00 6/12 0/0 0/0 .rodata @4204 */ -SECTION_RODATA static u8 const lit_4204[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AB20B8, &lit_4204); - -/* 80AB20BC-80AB20C0 0000BC 0004+00 0/2 0/0 0/0 .rodata @4205 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4205 = 65536.0f; -COMPILER_STRIP_GATE(0x80AB20BC, &lit_4205); -#pragma pop - -/* 80AB20C0-80AB20C4 0000C0 0004+00 0/3 0/0 0/0 .rodata @4206 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4206 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80AB20C0, &lit_4206); -#pragma pop - -/* 80AB20C4-80AB20C8 0000C4 0004+00 0/1 0/0 0/0 .rodata bmdTypeList$4325 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const bmdTypeList[4] = { - 0x00, - 0x00, - 0x00, - 0x01, -}; -COMPILER_STRIP_GATE(0x80AB20C4, &bmdTypeList); -#pragma pop - -/* 80AB20C8-80AB20CC 0000C8 0004+00 3/6 0/0 0/0 .rodata @4414 */ -SECTION_RODATA static f32 const lit_4414 = 1.0f; -COMPILER_STRIP_GATE(0x80AB20C8, &lit_4414); - /* 80AAE1AC-80AAE5CC 0004EC 0420+00 1/1 0/0 0/0 .text CreateHeap__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::CreateHeap() { - // NONMATCHING -} +int daNpc_Pouya_c::CreateHeap() { + static int const bmdTypeList[1] = {1}; -/* 80AAE5CC-80AAE608 00090C 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + u32 bmd_idx = 0; + if (chkPouyaB()) { + bmd_idx = 2; + } + int arc_idx = l_bmdData[bmd_idx][1]; + int res_idx = l_bmdData[bmd_idx][0]; -/* 80AAE608-80AAE620 000948 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + J3DModelData* modelData = + static_cast(dComIfG_getObjectRes(l_resNameList[arc_idx], res_idx)); + if (modelData == NULL) { + return 0; + } -/* 80AAE620-80AAE65C 000960 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + u32 local_30 = chkPouyaB() ? 0x11020284 : 0x11000284; -/* 80AAE65C-80AAE674 00099C 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + mpMorf[0] = + new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0, local_30); + if (mpMorf[0] == NULL || mpMorf[0]->getModel() == NULL) { + return 0; + } -/* 80AAE674-80AAE6BC 0009B4 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} + J3DModel* model = mpMorf[0]->getModel(); -/* 80AAE6BC-80AAE6E0 0009FC 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + for (u16 i = 0; i < modelData->getJointNum(); i++) { + modelData->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } -/* 80AAE6E0-80AAE71C 000A20 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} + model->setUserArea((uintptr_t)this); -/* 80AAE71C-80AAE734 000A5C 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} + if (chkPouyaB()) { + mpMatAnm[0] = new daNpcT_MatAnm_c(); + if (mpMatAnm[0] == NULL) { + return 0; + } + } -/* 80AAE734-80AAE770 000A74 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} + if (!chkPouyaB()) { + for (int i = 0; i < 1; i++) { + if (l_bmdData[bmdTypeList[i]][0] >= 0) { + modelData = (J3DModelData*)dComIfG_getObjectRes( + l_resNameList[l_bmdData[bmdTypeList[i]][1]], l_bmdData[bmdTypeList[i]][0]); + } else { + modelData = NULL; + } + if (modelData != NULL) { + mpModel[i] = mDoExt_J3DModel__create(modelData, 0, 0x11000084); + } else { + mpModel[i] = NULL; + } + } + } -/* 80AAE770-80AAE788 000AB0 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + if (chkPouyaB()) { + if (setFaceMotionAnm(6, false) && setMotionAnm(10, 0.0f, 0)) { + return 1; + } + } else if (setFaceMotionAnm(1, false) && setMotionAnm(0, 0.0f, 0)) { + return 1; + } + + return 0; } /* 80AAE788-80AAE7BC 000AC8 0034+00 1/1 0/0 0/0 .text Delete__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::Delete() { - // NONMATCHING +int daNpc_Pouya_c::Delete() { + fopAcM_GetID(this); + this->~daNpc_Pouya_c(); + return 1; } /* 80AAE7BC-80AAE7DC 000AFC 0020+00 2/2 0/0 0/0 .text Execute__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::Execute() { - // NONMATCHING +int daNpc_Pouya_c::Execute() { + return daNpcT_c::execute(); } -/* ############################################################################################## */ -/* 80AB20CC-80AB20D0 0000CC 0004+00 1/1 0/0 0/0 .rodata @4463 */ -SECTION_RODATA static f32 const lit_4463 = 100.0f; -COMPILER_STRIP_GATE(0x80AB20CC, &lit_4463); - /* 80AAE7DC-80AAE870 000B1C 0094+00 1/1 0/0 0/0 .text Draw__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::Draw() { - // NONMATCHING +int daNpc_Pouya_c::Draw() { + if (mpMatAnm[0] != NULL) { + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + modelData->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + return daNpcT_c::draw(0, 1, mRealShadowSize, NULL, 100.0f, 0, 0, 0); } /* 80AAE870-80AAE890 000BB0 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__13daNpc_Pouya_cFP10fopAc_ac_c */ -void daNpc_Pouya_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daNpc_Pouya_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); } /* 80AAE890-80AAE8E8 000BD0 0058+00 1/1 0/0 0/0 .text * ctrlJointCallBack__13daNpc_Pouya_cFP8J3DJointi */ -void daNpc_Pouya_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daNpc_Pouya_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { + if (param_1 == 0) { + J3DModel* model = j3dSys.getModel(); + + daNpc_Pouya_c* i_this = reinterpret_cast(model->getUserArea()); + if (i_this != 0) { + i_this->ctrlJoint(param_0, model); + } + } + + return 1; } /* 80AAE8E8-80AAE94C 000C28 0064+00 1/1 0/0 1/1 .text getType__13daNpc_Pouya_cFv */ u8 daNpc_Pouya_c::getType() { - // NONMATCHING + 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; + } + return TYPE_5; } /* 80AAE94C-80AAE9D8 000C8C 008C+00 1/1 0/0 0/0 .text isDelete__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::isDelete() { - // NONMATCHING +BOOL daNpc_Pouya_c::isDelete() { + switch (mType) { + case TYPE_0: + return FALSE; + case TYPE_1: + /* dSv_event_flag_c::F_0458 - Coversation with Jovani after collecting 60 ghosts */ + return daNpcT_chkEvtBit(0x1CA); + case TYPE_2: + /* dSv_event_flag_c::F_0458 - Coversation with Jovani after collecting 60 ghosts */ + return !daNpcT_chkEvtBit(0x1CA); + case TYPE_3: + /* dSv_event_flag_c::F_0458 - Coversation with Jovani after collecting 60 ghosts */ + return daNpcT_chkEvtBit(0x1CA); + case TYPE_4: + return FALSE; + } + return FALSE; } /* 80AAE9D8-80AAEBCC 000D18 01F4+00 1/1 0/0 0/0 .text reset__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::reset() { - // NONMATCHING + csXyz cStack_10; + int size = (u8*)&field_0xfd0 - (u8*)&field_0xfb0; + + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + initialize(); + memset(&field_0xfb0, 0, size); + + cStack_10.setall(0); + cStack_10.y = home.angle.y; + + switch (mType) { + case TYPE_0: + break; + case TYPE_1: + /* dSv_event_flag_c::F_0694 - Conversation with Jovani after collecting 20 ghosts */ + field_0xfcf = !daNpcT_chkEvtBit(0x2B6); + eventInfo.setIdx(0); + break; + case TYPE_2: + break; + case TYPE_3: + eventInfo.setIdx(1); + mHide = 1; + break; + case TYPE_4: + break; + } + + if (chkPouyaB()) { + mFaceMotionSeqMngr.setOffset(7); + mMotionSeqMngr.setOffset(8); + } + + setAngle(cStack_10); } /* 80AAEBCC-80AAEDB8 000F0C 01EC+00 2/0 0/0 0/0 .text ctrlSubFaceMotion__13daNpc_Pouya_cFi */ -void daNpc_Pouya_c::ctrlSubFaceMotion(int param_0) { - // NONMATCHING +void daNpc_Pouya_c::ctrlSubFaceMotion(int param_1) { + static int normal[3] = {31, 2, 1}; + + static int uttae01[3] = {32, 0, 1}; + static int uttae02[3] = {33, 2, 1}; + + static int koufun01[3] = {29, 0, 1}; + static int koufun02[3] = {30, 2, 1}; + + static int* brkSeq_normal[2] = { + normal, + NULL, + }; + + static int* brkSeq_uttae01_uttae02[3] = { + uttae01, + uttae02, + NULL, + }; + + static int* brkSeq_koufun01_koufun02[3] = { + koufun01, + koufun02, + NULL, + }; + + static int** brkSeqList[3] = { + brkSeq_normal, + brkSeq_uttae01_uttae02, + brkSeq_koufun01_koufun02, + }; + + J3DAnmTevRegKey* anm_tev = NULL; + + if (param_1 != 0) { + switch (mFaceMotionSeqMngr.getNo()) { + case FACE_MOT_UNK_0: + case FACE_MOT_UNK_3: + mAnmFlags &= ~(ANM_PAUSE_BRK | ANM_PLAY_BRK); + field_0xfcc = 0; + field_0xfcd = 0; + break; + case FACE_MOT_UNK_1: + case FACE_MOT_UNK_4: + case FACE_MOT_UNK_6: + mAnmFlags &= ~(ANM_PAUSE_BRK | ANM_PLAY_BRK); + field_0xfcc = 1; + field_0xfcd = 0; + break; + case FACE_MOT_UNK_2: + case FACE_MOT_UNK_5: + mAnmFlags &= ~(ANM_PAUSE_BRK | ANM_PLAY_BRK); + field_0xfcc = 2; + field_0xfcd = 0; + break; + default: + field_0xfcc = -1; + } + } + + if (field_0xfcc >= 0) { + if ((mAnmFlags & ANM_PLAY_BRK) != 0 && mBrkAnm.isStop()) { + mAnmFlags &= ~(ANM_PAUSE_BRK | ANM_PLAY_BRK); + field_0xfcd++; + } + if ((mAnmFlags & ANM_PLAY_BRK) == 0) { + int* piVar4 = brkSeqList[field_0xfcc][field_0xfcd]; + if (piVar4) { + anm_tev = getTevRegKeyAnmP(l_resNameList[piVar4[2]], *piVar4); + } + if (anm_tev != NULL && + setBrkAnm(anm_tev, mpMorf[0]->getModel()->getModelData(), 1.0f, piVar4[1])) + { + mAnmFlags |= ANM_PAUSE_BRK; + } + if (mBrkAnm.getBrkAnm()) { + mAnmFlags |= ANM_PLAY_BRK; + } + } + } } /* 80AAEDB8-80AAEE44 0010F8 008C+00 1/0 0/0 0/0 .text afterJntAnm__13daNpc_Pouya_cFi */ -void daNpc_Pouya_c::afterJntAnm(int param_0) { - // NONMATCHING +void daNpc_Pouya_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)); + } } /* 80AAEE44-80AAEFB4 001184 0170+00 1/0 0/0 0/0 .text setParam__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::setParam() { - // NONMATCHING + selectAction(); + srchActors(); + + s16 talk_distance = mpHIO->m.common.talk_distance; + s16 talk_angle = mpHIO->m.common.talk_angle; + s16 attention_distance = mpHIO->m.common.attention_distance; + s16 attention_angle = mpHIO->m.common.attention_angle; + + if (mType != TYPE_0 && mType != TYPE_4 && mType != TYPE_5) { + if (mType == TYPE_2) { + talk_distance = 3; + talk_angle = 4; + attention_distance = 3; + attention_angle = 4; + } else { + talk_distance = 3; + talk_angle = 2; + attention_distance = 3; + attention_angle = 2; + } + } + + attention_info.distances[fopAc_attn_LOCK_e] = + daNpcT_getDistTableIdx(attention_distance, attention_angle); + attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; + attention_info.distances[fopAc_attn_SPEAK_e] = + daNpcT_getDistTableIdx(talk_distance, talk_angle); + attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e; + + scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale); + + mCcStts.SetWeight(mpHIO->m.common.weight); + + mCylH = mpHIO->m.common.height; + mWallR = mpHIO->m.common.width; + + mAttnFovY = mpHIO->m.common.fov; + mAcchCir.SetWallR(mWallR); + mAcchCir.SetWallH(mpHIO->m.common.knee_length); + mRealShadowSize = mpHIO->m.common.real_shadow_size; + mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame; + mMorfFrames = mpHIO->m.common.morf_frame; + gravity = mpHIO->m.common.gravity; + mAcch.SetGrndNone(); + mAcch.SetWallNone(); + gravity = 0.0f; } /* 80AAEFB4-80AAF148 0012F4 0194+00 1/0 0/0 0/0 .text checkChangeEvt__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::checkChangeEvt() { - // NONMATCHING -} +BOOL daNpc_Pouya_c::checkChangeEvt() { + if (!chkAction(&daNpc_Pouya_c::talk)) { + mPreItemNo = 0; + if (dComIfGp_event_chkTalkXY()) { + if (dComIfGp_evmng_ChkPresentEnd()) { + mEvtNo = 2; + evtChange(); + } + return TRUE; + } -/* ############################################################################################## */ -/* 80AB20D0-80AB20D4 0000D0 0004+00 3/3 0/0 0/0 .rodata @4742 */ -SECTION_RODATA static f32 const lit_4742 = -1.0f; -COMPILER_STRIP_GATE(0x80AB20D0, &lit_4742); + switch (mType) { + case TYPE_0: + break; + case TYPE_1: + if (dComIfGs_isSaveSwitch(0x1F)) { + /* dSv_event_flag_c::F_0456 - First time meeting with Jovani */ + if (!daNpcT_chkEvtBit(0x1C8)) { + daNpcT_offTmpBit(0xB); + mEvtNo = 3; + evtChange(); + return TRUE; + } + if (dComIfGs_getPohSpiritNum() >= 60) { + /* dSv_event_flag_c::F_0458 - Coversation with Jovani after collecting 60 ghosts + */ + if (!daNpcT_chkEvtBit(0x1CA)) { + daNpcT_offTmpBit(0xB); + mEvtNo = 7; + evtChange(); + return TRUE; + } + } else if (dComIfGs_getPohSpiritNum() >= 20 && + /* dSv_event_flag_c::F_0694 - Conversation with Jovani after collecting + * 20 ghosts */ + !daNpcT_chkEvtBit(0x2B6)) + { + daNpcT_offTmpBit(0xB); + mEvtNo = 5; + evtChange(); + return TRUE; + } + } + break; + case TYPE_2: + case TYPE_3: + case TYPE_4: + case TYPE_5: + break; + } + } + + return FALSE; +} /* 80AAF148-80AAF1F0 001488 00A8+00 2/0 0/0 0/0 .text setAfterTalkMotion__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::setAfterTalkMotion() { - // NONMATCHING + int iVar2 = FACE_MOT_UNK_17; + + switch (mFaceMotionSeqMngr.getNo()) { + case FACE_MOT_UNK_0: + case FACE_MOT_UNK_1: + case FACE_MOT_UNK_2: + case FACE_MOT_UNK_3: + case FACE_MOT_UNK_4: + case FACE_MOT_UNK_5: + case FACE_MOT_UNK_6: + return; + case FACE_MOT_UNK_8: + iVar2 = FACE_MOT_UNK_13; + break; + case FACE_MOT_UNK_9: + iVar2 = FACE_MOT_UNK_14; + break; + case FACE_MOT_UNK_10: + iVar2 = FACE_MOT_UNK_15; + break; + case FACE_MOT_UNK_12: + iVar2 = FACE_MOT_UNK_16; + break; + } + + mFaceMotionSeqMngr.setNo(iVar2, -1.0f, 0, 0); } /* 80AAF1F0-80AAF1F4 001530 0004+00 1/1 0/0 0/0 .text srchActors__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::srchActors() { - /* empty function */ -} +void daNpc_Pouya_c::srchActors() {} /* 80AAF1F4-80AAF294 001534 00A0+00 1/0 0/0 0/0 .text evtTalk__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::evtTalk() { - // NONMATCHING +BOOL daNpc_Pouya_c::evtTalk() { + if (chkAction(&daNpc_Pouya_c::talk)) { + (this->*mAction)(NULL); + } else { + setAction(&daNpc_Pouya_c::talk); + } + return TRUE; } -/* ############################################################################################## */ -/* 80AB2120-80AB2120 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AB21D5 = "Pouya"; -#pragma pop - /* 80AAF294-80AAF35C 0015D4 00C8+00 1/0 0/0 0/0 .text evtCutProc__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_Pouya_c::evtCutProc() { + int staffId = dComIfGp_getEventManager().getMyStaffId("Pouya", this, -1); + if (staffId != -1) { + mStaffId = staffId; + int actIdx = + dComIfGp_getEventManager().getMyActIdx(mStaffId, (char**)mCutNameList, 3, 0, 0); + if ((this->*(mCutList[actIdx]))(mStaffId) != 0) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + return true; + } + return false; } /* 80AAF35C-80AAF4F8 00169C 019C+00 1/0 0/0 0/0 .text action__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::action() { - // NONMATCHING + fopAc_ac_c* hit_actor = hitChk(&mCyl, 0xFFFFFFFF); + + if (hit_actor != NULL && mType != TYPE_1) { + cCcD_ObjHitInf* hit_obj = mCyl.GetTgHitObj(); + if (hit_obj->ChkAtType(AT_TYPE_THROW_OBJ)) { + mStagger.setParam(this, hit_actor, mCurAngle.y); + setDamage(0, 17, 0); + mDamageTimerStart = 0; + mJntAnm.lookNone(1); + } + } + + if (mStagger.checkRebirth()) { + mStagger.initialize(); + mMode = MODE_INIT; + } + + if (field_0xfb0 != NULL) { + if (mAction == field_0xfb0) { + (this->*mAction)(NULL); + } else { + setAction(field_0xfb0); + } + } } /* 80AAF4F8-80AAF5BC 001838 00C4+00 1/0 0/0 0/0 .text beforeMove__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::beforeMove() { - // NONMATCHING + fopAcM_OffStatus(this, 0x8000000); + if (checkHide()) { + fopAcM_OnStatus(this, 0x8000000); + } + if (checkHide() || mNoDraw) { + attention_info.flags = 0; + } } -/* ############################################################################################## */ -/* 80AB20D4-80AB20D8 0000D4 0004+00 0/1 0/0 0/0 .rodata @4911 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4911 = 20.0f; -COMPILER_STRIP_GATE(0x80AB20D4, &lit_4911); -#pragma pop - -/* 80AB20D8-80AB20DC 0000D8 0004+00 0/1 0/0 0/0 .rodata @4912 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4912 = 30.0f; -COMPILER_STRIP_GATE(0x80AB20D8, &lit_4912); -#pragma pop - -/* 80AB20DC-80AB20E0 0000DC 0004+00 0/1 0/0 0/0 .rodata @4913 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4913 = 0x38C90FDB; -COMPILER_STRIP_GATE(0x80AB20DC, &lit_4913); -#pragma pop - -/* 80AB20E0-80AB20E4 0000E0 0004+00 0/1 0/0 0/0 .rodata @4914 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4914 = -10.0f; -COMPILER_STRIP_GATE(0x80AB20E0, &lit_4914); -#pragma pop - -/* 80AB20E4-80AB20E8 0000E4 0004+00 0/1 0/0 0/0 .rodata @4915 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4915 = 120.0f; -COMPILER_STRIP_GATE(0x80AB20E4, &lit_4915); -#pragma pop - -/* 80AB20E8-80AB20F0 0000E8 0004+04 0/1 0/0 0/0 .rodata @4916 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4916[1 + 1 /* padding */] = { - 60.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80AB20E8, &lit_4916); -#pragma pop - -/* 80AB20F0-80AB20F8 0000F0 0008+00 2/4 0/0 0/0 .rodata @4918 */ -SECTION_RODATA static u8 const lit_4918[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AB20F0, &lit_4918); - /* 80AAF5BC-80AAF8E4 0018FC 0328+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::setAttnPos() { - // NONMATCHING + cXyz acStack_40(20.0f, 30.0f, 0.0f); + cXyz cStack_4c(20.0f, 0.0f, 0.0f); + + mStagger.calc(0); + + f32 dVar8 = cM_s2rad(mCurAngle.y - field_0xd7e.y); + + mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_40, getBackboneJointNo(), + getNeckJointNo(), getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, + mpHIO->m.common.head_angleX_min, mpHIO->m.common.head_angleX_max, + mpHIO->m.common.head_angleY_min, mpHIO->m.common.head_angleY_max, + mpHIO->m.common.neck_rotation_ratio, dVar8, &cStack_4c); + + mJntAnm.calcJntRad(0.2f, 1.0f, dVar8); + setMtx(); + + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo())); + mDoMtx_stack_c::multVec(&acStack_40, &eyePos); + + mJntAnm.setEyeAngleX(eyePos, 1.0f, 0); + mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, 1, 1.0f, 0); + + acStack_40.set(0.0f, 0.0f, -10.0f); + acStack_40.y = mpHIO->m.common.attention_offset; + + if (chkPouyaB()) { + if (mType != TYPE_3) { + acStack_40.set(0.0f, 120.0f, 60.0f); + } + } else if (field_0xfcf != 0) { + acStack_40.y += 20.0f; + } + + mDoMtx_stack_c::YrotS(mCurAngle.y); + mDoMtx_stack_c::multVec(&acStack_40, &acStack_40); + + attention_info.position = current.pos + acStack_40; + + if (!chkPouyaB() && mHide == 0) { + setPrtcls(); + } } /* 80AAF8E4-80AAFA5C 001C24 0178+00 1/0 0/0 0/0 .text setCollision__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::setCollision() { - // NONMATCHING + cXyz cStack_48; + + if (mHide == 0) { + u32 tgType = 0xd8fbfdff; + u32 tgSPrm = 0x1f; + + if (dComIfGp_event_runCheck()) { + tgType = 0; + tgSPrm = 0; + } else { + 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; + + 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(); } /* 80AAFA5C-80AAFA64 001D9C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__13daNpc_Pouya_cFv */ -bool daNpc_Pouya_c::drawDbgInfo() { - return false; +int daNpc_Pouya_c::drawDbgInfo() { + return 0; } -/* ############################################################################################## */ -/* 80AB20F8-80AB2100 0000F8 0008+00 0/1 0/0 0/0 .rodata @4976 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4976[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AB20F8, &lit_4976); -#pragma pop - -/* 80AB2100-80AB2108 000100 0008+00 0/1 0/0 0/0 .rodata @4977 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4977[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AB2100, &lit_4977); -#pragma pop - -/* 80AB2108-80AB2110 000108 0008+00 0/1 0/0 0/0 .rodata @4978 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4978[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AB2108, &lit_4978); -#pragma pop - -/* 80AB2110-80AB2114 000110 0004+00 1/1 0/0 0/0 .rodata jointNo$5024 */ -SECTION_RODATA static u8 const jointNo[4] = { - 0x00, - 0x00, - 0x00, - 0x04, -}; -COMPILER_STRIP_GATE(0x80AB2110, &jointNo); - /* 80AAFA64-80AAFB4C 001DA4 00E8+00 1/0 0/0 0/0 .text drawOtherMdl__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::drawOtherMdl() { - // NONMATCHING + static int const jointNo[1] = {4}; + + J3DModel* model_p = mpMorf[0]->getModel(); + + for (int i = 0; i < 1; i++) { + if (mpModel[i] != NULL && (i == 0 && field_0xfcf != 0)) { + J3DModelData* model_data = mpModel[i]->getModelData(); + 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); + fopAcM_setEffectMtx(this, model_data); + mDoExt_modelUpdateDL(mpModel[i]); + dComIfGd_addRealShadow(mShadowKey, mpModel[i]); + } + } } /* 80AAFB4C-80AAFBDC 001E8C 0090+00 1/0 0/0 0/0 .text afterSetMotionAnm__13daNpc_Pouya_cFiifi */ -void daNpc_Pouya_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { - // NONMATCHING +bool daNpc_Pouya_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { + switch (param_0) { + case 8: + case 9: + case 25: + mpMorf[0]->setFrame(mpMorf[0]->getEndFrame()); + mpMorf[0]->setPlaySpeed(-1.0f); + break; + } + return true; } /* 80AAFBDC-80AAFC24 001F1C 0048+00 1/1 0/0 0/0 .text selectAction__13daNpc_Pouya_cFv */ -void daNpc_Pouya_c::selectAction() { - // NONMATCHING +int daNpc_Pouya_c::selectAction() { + field_0xfb0 = NULL; + + switch (mType) { + default: + field_0xfb0 = &daNpc_Pouya_c::wait; + } + + return 1; } /* 80AAFC24-80AAFC50 001F64 002C+00 2/2 0/0 0/0 .text * chkAction__13daNpc_Pouya_cFM13daNpc_Pouya_cFPCvPvPv_i */ -void daNpc_Pouya_c::chkAction(int (daNpc_Pouya_c::*param_0)(void*)) { - // NONMATCHING +BOOL daNpc_Pouya_c::chkAction(actionFunc param_0) { + return mAction == param_0; } /* 80AAFC50-80AAFCF8 001F90 00A8+00 2/2 0/0 0/0 .text * setAction__13daNpc_Pouya_cFM13daNpc_Pouya_cFPCvPvPv_i */ -void daNpc_Pouya_c::setAction(int (daNpc_Pouya_c::*param_0)(void*)) { - // NONMATCHING +int daNpc_Pouya_c::setAction(actionFunc param_0) { + mMode = MODE_EXIT; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + mMode = MODE_ENTER; + mAction = param_0; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + return 1; } /* 80AAFCF8-80AAFE08 002038 0110+00 1/1 0/0 0/0 .text setPrtcls__13daNpc_Pouya_cFv */ void daNpc_Pouya_c::setPrtcls() { - // NONMATCHING + JGeometry::TVec3 emitter_rot; + cXyz cStack_14; + cXyz cStack_20(1.0f, 1.0f, 1.0f); + + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&cStack_14); + + field_0xfc8 = dComIfGp_particle_set(field_0xfc8, 0X8BFC, &cStack_14, &mCurAngle, &cStack_20); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xfc8); + + if (emitter != NULL) { + emitter_rot.x = mCurAngle.x; + emitter_rot.y = mCurAngle.y; + emitter_rot.z = mCurAngle.z; + emitter->setGlobalRotation(emitter_rot); + } } -/* ############################################################################################## */ -/* 80AB2114-80AB211C 000114 0008+00 0/1 0/0 0/0 .rodata @5191 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5191[8] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -}; -COMPILER_STRIP_GATE(0x80AB2114, &lit_5191); -#pragma pop - -/* 80AB2120-80AB2120 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AB21DB = "prm"; -SECTION_DEAD static char const* const stringBase_80AB21DF = "timer"; -SECTION_DEAD static char const* const stringBase_80AB21E5 = "msgNo"; -SECTION_DEAD static char const* const stringBase_80AB21EB = "rate"; -#pragma pop - /* 80AAFE08-80AB04A8 002148 06A0+00 4/0 0/0 0/0 .text cutHaveFavorToAsk__13daNpc_Pouya_cFi */ -void daNpc_Pouya_c::cutHaveFavorToAsk(int param_0) { - // NONMATCHING +int daNpc_Pouya_c::cutHaveFavorToAsk(int param_0) { + cXyz acStack_48; + csXyz cStack_50; + + int rv = 0; + int uVar11 = -1; + int uVar12 = 0; + int local_60 = 0; + f32 fVar1 = 0.0f; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + uVar11 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "timer"); + if (piVar1) { + uVar12 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "msgNo"); + if (piVar1) { + local_60 = *piVar1; + } + + float* pfVar5 = dComIfGp_evmng_getMyFloatP(param_0, "rate"); + if (pfVar5) { + fVar1 = *pfVar5; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (uVar11) { + case 0: + initTalk(mFlowNodeNo, NULL); + if (daNpcT_getPlayerInfoFromPlayerList(4, fopAcM_GetRoomNo(this), &acStack_48, + &cStack_50)) + { + daPy_getPlayerActorClass()->setPlayerPosAndAngle(&acStack_48, cStack_50.y, 0); + } + break; + case 2: + mEventTimer = uVar12; + break; + case 3: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_6, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_4, -1.0f, 0, 0); + field_0xfcf = 0; + if (daNpcT_getPlayerInfoFromPlayerList(4, fopAcM_GetRoomNo(this), &acStack_48, + &cStack_50)) + { + daPy_getPlayerActorClass()->setPlayerPosAndAngle(&acStack_48, cStack_50.y, 0); + } + mEventTimer = uVar12; + break; + case 4: + initTalk(mFlowNodeNo, NULL); + break; + case 5: + mHide = 1; + break; + case 6: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_7, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_10, -1.0f, 0, 0); + mHide = 0; + if (daNpcT_getPlayerInfoFromPlayerList(4, fopAcM_GetRoomNo(this), &acStack_48, + &cStack_50)) + { + daPy_getPlayerActorClass()->setPlayerPosAndAngle(&acStack_48, cStack_50.y, 0); + } + mEventTimer = uVar12; + break; + case 10: + mEventTimer = uVar12; + if (mEventTimer == 0) { + mDoAud_seStart(Z2SE_POUYA_RECOVER_FADE, NULL, 0, 0); + mDoGph_gInf_c::fadeOut_f(fVar1, g_saftyWhiteColor); + } + break; + case 11: + mDoGph_gInf_c::fadeIn_f(fVar1, g_saftyWhiteColor); + break; + case 12: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_6, 0.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_4, 0.0f, 1, 0); + mEventTimer = uVar12; + if (mEventTimer == 0) { + mDoAud_seStart(Z2SE_POUYA_RECOVER_FADE, NULL, 0, 0); + mDoGph_gInf_c::fadeOut_f(fVar1, g_saftyWhiteColor); + } + break; + } + } + + int local_58[2] = {-1, -1}; + + switch (uVar11) { + case 0: + case 1: + case 4: + mJntAnm.lookNone(0); + local_58[0] = local_60; + if (talkProc(local_58, 0, NULL, 0)) { + if (local_60 == 0) { + int local_64; + int evt_id = mFlow.getEventId(&local_64); + field_0xfce = 0; + switch (evt_id) { + case 1: + if (mItemPartnerId == fpcM_ERROR_PROCESS_ID_e) { + mItemPartnerId = fopAcM_createItemForPresentDemo(¤t.pos, local_64, 0, + -1, -1, 0, 0); + } + if (fopAcM_IsExecuting(mItemPartnerId)) { + field_0xfce = 1; + mMode = 1; + mEvtNo = 1; + evtChange(); + } + break; + default: + if (mFlow.checkEndFlow()) { + rv = 1; + } + } + } else { + rv = 1; + } + } + break; + case 2: + case 3: + case 6: + mJntAnm.lookNone(0); + if (cLib_calcTimer(&mEventTimer) == 0) { + rv = 1; + } + break; + case 5: + rv = 1; + case 7: + case 8: + case 9: + break; + case 10: + case 12: + if (mEventTimer != 0) { + if (cLib_calcTimer(&mEventTimer) == 0) { + mDoAud_seStart(Z2SE_POUYA_RECOVER_FADE, NULL, 0, 0); + mDoGph_gInf_c::fadeOut_f(fVar1, g_saftyWhiteColor); + } + } else if (1.0f <= mDoGph_gInf_c::getFadeRate()) { + rv = 1; + } + if (uVar11 == 12 && mpMorf[0]->checkFrame(22.0f)) { + mpMorf[0]->setPlaySpeed(0.0f); + mBckAnm.setPlaySpeed(0.0f); + } + break; + case 11: + if (!mDoGph_gInf_c::isFade()) { + rv = 1; + } + break; + } + + return rv; } /* 80AB04A8-80AB0A7C 0027E8 05D4+00 1/0 0/0 0/0 .text wait__13daNpc_Pouya_cFPv */ -void daNpc_Pouya_c::wait(void* param_0) { - // NONMATCHING +int daNpc_Pouya_c::wait(void* param_0) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + if (chkPouyaB()) { + if (mType == TYPE_2) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_11, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_15, -1.0f, 0, 0); + } else if (field_0xfce != 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_14, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_8, -1.0f, 0, 0); + } else { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_7, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_10, -1.0f, 0, 0); + } + } else { + if (mType == TYPE_1) { + if (field_0xfce != 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_6, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_1, -1.0f, 0, 0); + } else { + /* dSv_event_flag_c::F_0694 - Conversation with Jovani after collecting 20 + * ghosts */ + if (daNpcT_chkEvtBit(0x2B6)) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_6, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_4, -1.0f, 0, 0); + } else { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + } + } + } else { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + } + } + + mMode = 2; + } + case 2: + if (field_0xfce != 0) { + if (mType == TYPE_3) { + mEvtNo = 8; + field_0xe33 = true; + } else if (mType == TYPE_1) { + mEvtNo = 6; + field_0xe33 = true; + } + } + + /* dSv_event_flag_c::F_0456 - First time meeting with Jovani */ + if (mType == TYPE_1 && !daNpcT_chkEvtBit(0x1C8) && getBitSW() != 0xFF && + dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) + { + mEvtNo = 4; + field_0xe33 = true; + } + + if (!mStagger.checkStagger()) { + if (mType == TYPE_1 || mType == TYPE_2 || 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, -1, -1, 15, 0)) { + mMode = 1; + } + } else { + setAngle(home.angle.y); + mMode = 1; + } + attention_info.flags = 0; + } else { + srchPlayerActor(); + } + } + mJntAnm.getMode(); + } + break; + case 3: + break; + } + + return 1; } /* 80AB0A7C-80AB0CFC 002DBC 0280+00 3/0 0/0 0/0 .text talk__13daNpc_Pouya_cFPv */ -void daNpc_Pouya_c::talk(void* param_0) { - // NONMATCHING +int daNpc_Pouya_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 == 4 || mType == 5)) + { + if (talkProc(NULL, 0, NULL, 0)) { + int local_18; + int evt_id = mFlow.getEventId(&local_18); + field_0xfce = 0; + switch (evt_id) { + case 1: + if (mItemPartnerId == fpcM_ERROR_PROCESS_ID_e) { + mItemPartnerId = fopAcM_createItemForPresentDemo(¤t.pos, local_18, + 0, -1, -1, 0, 0); + } + if (fopAcM_IsExecuting(mItemPartnerId)) { + field_0xfce = 1; + mEvtNo = 1; + evtChange(); + } + break; + default: + if (mFlow.checkEndFlow()) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = 3; + } + } + } + mJntAnm.lookPlayer(0); + if (!mTwilight && (mType == 0 || mType == 4 || mType == 5)) { + break; + } + mJntAnm.lookNone(0); + + } else { + mJntAnm.lookPlayer(0); + step(mPlayerAngle, -1, -1, 15, 0); + } + } + break; + case 3: + break; + } + + return 0; } /* 80AB0CFC-80AB0D1C 00303C 0020+00 1/0 0/0 0/0 .text daNpc_Pouya_Create__FPv */ -static void daNpc_Pouya_Create(void* param_0) { - // NONMATCHING +static int daNpc_Pouya_Create(void* i_this) { + return static_cast(i_this)->create(); } /* 80AB0D1C-80AB0D3C 00305C 0020+00 1/0 0/0 0/0 .text daNpc_Pouya_Delete__FPv */ -static void daNpc_Pouya_Delete(void* param_0) { - // NONMATCHING +static int daNpc_Pouya_Delete(void* i_this) { + return static_cast(i_this)->Delete(); } /* 80AB0D3C-80AB0D5C 00307C 0020+00 1/0 0/0 0/0 .text daNpc_Pouya_Execute__FPv */ -static void daNpc_Pouya_Execute(void* param_0) { - // NONMATCHING +static int daNpc_Pouya_Execute(void* i_this) { + return static_cast(i_this)->Execute(); } /* 80AB0D5C-80AB0D7C 00309C 0020+00 1/0 0/0 0/0 .text daNpc_Pouya_Draw__FPv */ -static void daNpc_Pouya_Draw(void* param_0) { - // NONMATCHING +static int daNpc_Pouya_Draw(void* i_this) { + return static_cast(i_this)->Draw(); } /* 80AB0D7C-80AB0D84 0030BC 0008+00 1/0 0/0 0/0 .text daNpc_Pouya_IsDelete__FPv */ -static bool daNpc_Pouya_IsDelete(void* param_0) { - return true; +static bool daNpc_Pouya_IsDelete(void* i_this) { + return 1; } -/* 80AB0D84-80AB0DB4 0030C4 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* 80AB0DB4-80AB0DFC 0030F4 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80AB0DFC-80AB1184 00313C 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80AB1184-80AB11C0 0034C4 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80AB11C0-80AB11FC 003500 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80AB11FC-80AB1244 00353C 0048+00 1/0 0/0 0/0 .text __dt__13daNpcT_Path_cFv */ -// daNpcT_Path_c::~daNpcT_Path_c() { -extern "C" void __dt__13daNpcT_Path_cFv() { - // NONMATCHING -} - -/* 80AB1244-80AB128C 003584 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80AB128C-80AB12D4 0035CC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80AB12D4-80AB16D8 003614 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 -} - -/* 80AB16D8-80AB16DC 003A18 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80AB16DC-80AB17D8 003A1C 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 -} - -/* 80AB17D8-80AB17DC 003B18 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80AB17DC-80AB1824 003B1C 0048+00 1/0 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() { -extern "C" void __dt__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80AB1824-80AB186C 003B64 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 -} - -/* 80AB186C-80AB18DC 003BAC 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80AB18DC-80AB1938 003C1C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80AB1938-80AB19A8 003C78 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80AB19A8-80AB19F0 003CE8 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80AB19F0-80AB1B0C 003D30 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 -} - -/* 80AB1B0C-80AB1D14 003E4C 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 -} - -/* 80AB1D24-80AB1D2C 004064 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80AB1D2C-80AB1D34 00406C 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80AB1D34-80AB1D3C 004074 0008+00 1/0 0/0 0/0 .text evtEndProc__8daNpcT_cFv */ -// bool daNpcT_c::evtEndProc() { -extern "C" bool evtEndProc__8daNpcT_cFv() { - return true; -} - -/* 80AB1D40-80AB1D48 004080 0008+00 1/0 0/0 0/0 .text chkXYItems__8daNpcT_cFv */ -// bool daNpcT_c::chkXYItems() { -extern "C" bool chkXYItems__8daNpcT_cFv() { - return false; -} - -/* 80AB1D48-80AB1D60 004088 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80AB1D60-80AB1D64 0040A0 0004+00 1/0 0/0 0/0 .text drawGhost__8daNpcT_cFv */ -// void daNpcT_c::drawGhost() { -extern "C" void drawGhost__8daNpcT_cFv() { - /* empty function */ -} - -/* 80AB1D64-80AB1D6C 0040A4 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; -} - -/* 80AB1D6C-80AB1D9C 0040AC 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 -} - -/* 80AB1D9C-80AB1DCC 0040DC 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 -} - -/* 80AB1DCC-80AB1DD0 00410C 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 */ -} - -/* 80AB1DD0-80AB1DD4 004110 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 */ -} - -/* 80AB1DD4-80AB1DD8 004114 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 */ -} - -/* 80AB1DD8-80AB1DDC 004118 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 */ -} - -/* 80AB1DDC-80AB1DF8 00411C 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPi */ -extern "C" void func_80AB1DDC(void* _this, int* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80AB2CD8-80AB2CE4 000AE8 000C+00 2/2 0/0 0/0 .data __vt__19daNpc_Pouya_Param_c */ -SECTION_DATA extern void* __vt__19daNpc_Pouya_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19daNpc_Pouya_Param_cFv, -}; - -/* 80AB2CF0-80AB2CFC 000008 000C+00 1/1 0/0 0/0 .bss @3819 */ -static u8 lit_3819[12]; - /* 80AB2CFC-80AB2D00 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; +NPC_POUYA_HIO_CLASS l_HIO; -/* 80AB1DF8-80AB1E94 004138 009C+00 0/0 1/0 0/0 .text __sinit_d_a_npc_pouya_cpp */ -void __sinit_d_a_npc_pouya_cpp() { - // NONMATCHING -} +/* 80AB2B1C-80AB2B3C -00001 0020+00 1/0 0/0 0/0 .data daNpc_Pouya_MethodTable */ +static actor_method_class daNpc_Pouya_MethodTable = { + (process_method_func)daNpc_Pouya_Create, (process_method_func)daNpc_Pouya_Delete, + (process_method_func)daNpc_Pouya_Execute, (process_method_func)daNpc_Pouya_IsDelete, + (process_method_func)daNpc_Pouya_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80AB1DF8, __sinit_d_a_npc_pouya_cpp); -#pragma pop - -/* 80AB1E94-80AB1F54 0041D4 00C0+00 1/1 0/0 0/0 .text - * __ct__13daNpc_Pouya_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_Pouya_c::daNpc_Pouya_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 -} - -/* 80AB1F54-80AB1F5C 004294 0008+00 1/0 0/0 0/0 .text getEyeballMaterialNo__13daNpc_Pouya_cFv */ -u16 daNpc_Pouya_c::getEyeballMaterialNo() { - return true; -} - -/* 80AB1F5C-80AB1F64 00429C 0008+00 1/0 0/0 0/0 .text getHeadJointNo__13daNpc_Pouya_cFv - */ -s32 daNpc_Pouya_c::getHeadJointNo() { - return 4; -} - -/* 80AB1F64-80AB1F6C 0042A4 0008+00 1/0 0/0 0/0 .text getNeckJointNo__13daNpc_Pouya_cFv - */ -s32 daNpc_Pouya_c::getNeckJointNo() { - return 3; -} - -/* 80AB1F6C-80AB1F74 0042AC 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__13daNpc_Pouya_cFv */ -bool daNpc_Pouya_c::getBackboneJointNo() { - return true; -} - -/* 80AB1F74-80AB1F84 0042B4 0010+00 1/0 0/0 0/0 .text checkChangeJoint__13daNpc_Pouya_cFi - */ -void daNpc_Pouya_c::checkChangeJoint(int param_0) { - // NONMATCHING -} - -/* 80AB1F84-80AB1F94 0042C4 0010+00 1/0 0/0 0/0 .text checkRemoveJoint__13daNpc_Pouya_cFi - */ -void daNpc_Pouya_c::checkRemoveJoint(int param_0) { - // NONMATCHING -} - -/* 80AB1F94-80AB1FDC 0042D4 0048+00 2/1 0/0 0/0 .text __dt__19daNpc_Pouya_Param_cFv */ -daNpc_Pouya_Param_c::~daNpc_Pouya_Param_c() { - // NONMATCHING -} - -/* 80AB1FDC-80AB1FE4 00431C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80AB1FDC() { - // NONMATCHING -} - -/* 80AB1FE4-80AB1FEC 004324 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80AB1FE4() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80AB211C-80AB2120 00011C 0004+00 0/0 0/0 0/0 .rodata @5332 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5332 = 22.0f; -COMPILER_STRIP_GATE(0x80AB211C, &lit_5332); -#pragma pop - -/* 80AB2120-80AB2120 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80AB2B3C-80AB2B6C -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_POUYA */ +extern actor_process_profile_definition g_profile_NPC_POUYA = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_POUYA, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_Pouya_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 404, // mPriority + &daNpc_Pouya_MethodTable, // sub_method + 0x00040107, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};