diff --git a/config/GZ2E01/rels/d_a_midna/symbols.txt b/config/GZ2E01/rels/d_a_midna/symbols.txt index ab5a1002cea..e9dd3ae35f8 100644 --- a/config/GZ2E01/rels/d_a_midna/symbols.txt +++ b/config/GZ2E01/rels/d_a_midna/symbols.txt @@ -195,5 +195,5 @@ __vt__11J3DTexNoAnm = .data:0x00000068; // type:object size:0xC scope:global __vt__12J3DFrameCtrl = .data:0x00000074; // type:object size:0xC scope:global __vt__20daMidna_McaMorfCB1_c = .data:0x00000080; // type:object size:0x10 scope:global __vt__16daMidna_matAnm_c = .data:0x00000090; // type:object size:0x10 scope:global -lbl_51_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte -lbl_51_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte +sEyeMoveFlg__16daMidna_matAnm_c = .bss:0x00000000; // type:object size:0x1 data:byte +sMorfFrame__16daMidna_matAnm_c = .bss:0x00000001; // type:object size:0x1 data:byte diff --git a/config/GZ2J01/rels/d_a_midna/symbols.txt b/config/GZ2J01/rels/d_a_midna/symbols.txt index ab5a1002cea..e9dd3ae35f8 100644 --- a/config/GZ2J01/rels/d_a_midna/symbols.txt +++ b/config/GZ2J01/rels/d_a_midna/symbols.txt @@ -195,5 +195,5 @@ __vt__11J3DTexNoAnm = .data:0x00000068; // type:object size:0xC scope:global __vt__12J3DFrameCtrl = .data:0x00000074; // type:object size:0xC scope:global __vt__20daMidna_McaMorfCB1_c = .data:0x00000080; // type:object size:0x10 scope:global __vt__16daMidna_matAnm_c = .data:0x00000090; // type:object size:0x10 scope:global -lbl_51_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte -lbl_51_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte +sEyeMoveFlg__16daMidna_matAnm_c = .bss:0x00000000; // type:object size:0x1 data:byte +sMorfFrame__16daMidna_matAnm_c = .bss:0x00000001; // type:object size:0x1 data:byte diff --git a/config/GZ2P01/rels/d_a_midna/symbols.txt b/config/GZ2P01/rels/d_a_midna/symbols.txt index ab5a1002cea..e9dd3ae35f8 100644 --- a/config/GZ2P01/rels/d_a_midna/symbols.txt +++ b/config/GZ2P01/rels/d_a_midna/symbols.txt @@ -195,5 +195,5 @@ __vt__11J3DTexNoAnm = .data:0x00000068; // type:object size:0xC scope:global __vt__12J3DFrameCtrl = .data:0x00000074; // type:object size:0xC scope:global __vt__20daMidna_McaMorfCB1_c = .data:0x00000080; // type:object size:0x10 scope:global __vt__16daMidna_matAnm_c = .data:0x00000090; // type:object size:0x10 scope:global -lbl_51_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte -lbl_51_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte +sEyeMoveFlg__16daMidna_matAnm_c = .bss:0x00000000; // type:object size:0x1 data:byte +sMorfFrame__16daMidna_matAnm_c = .bss:0x00000001; // type:object size:0x1 data:byte diff --git a/configure.py b/configure.py index 16aef81bcb1..bdbfef1d720 100755 --- a/configure.py +++ b/configure.py @@ -1887,7 +1887,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kolinb"), ActorRel(Equivalent, "d_a_npc_ks"), # weak func order ActorRel(NonMatching, "d_a_npc_kyury"), - ActorRel(NonMatching, "d_a_npc_len"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_len"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_lf"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_lud"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_midp"), diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index e3c100da1d5..858e430beca 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -299,6 +299,15 @@ public: setDirect(i_direct); } + void lookAround(u8 i_direct, int i_baseTimer) { + if (setMode(LOOK_MODE_7, FALSE)) { + mTimer = 0; + } + + mBaseTimer = i_baseTimer; + setDirect(i_direct); + } + void lookAround2(u8 i_direct, int i_baseTimer) { if (setMode(LOOK_MODE_8, FALSE)) { mTimer = 0; diff --git a/include/d/actor/d_a_npc_len.h b/include/d/actor/d_a_npc_len.h index 1eedcaa0601..cbd2848ea9b 100644 --- a/include/d/actor/d_a_npc_len.h +++ b/include/d/actor/d_a_npc_len.h @@ -3,6 +3,36 @@ #include "d/actor/d_a_npc.h" +struct daNpc_Len_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ s16 field_0x8c; + /* 0x8E */ s16 field_0x8e; + /* 0x90 */ f32 field_0x90; +}; + +class daNpc_Len_Param_c { +public: + /* 80A68E38 */ virtual ~daNpc_Len_Param_c() {} + + static const daNpc_Len_HIOParam m; +}; + +#if DEBUG +class daNpc_Len_HIO_c : public mDoHIO_entry_c { +public: + daNpc_Len_HIO_c(); + + void listenPropertyEvent(const JORPropertyEvent*); + void genMessage(JORMContext*); + + daNpc_Len_HIOParam m; +}; + +#define NPC_LEN_HIO_CLASS daNpc_Len_HIO_c +#else +#define NPC_LEN_HIO_CLASS daNpc_Len_Param_c +#endif + /** * @ingroup actors-npcs * @class daNpc_Len_c @@ -11,70 +41,94 @@ * @details * */ -class daNpc_Len_c : public fopAc_ac_c { + +class daNpc_Len_c : public daNpcT_c { public: + typedef int (daNpc_Len_c::*actionFunc)(void*); + typedef int (daNpc_Len_c::*cutFunc)(int); + /* 80A6432C */ ~daNpc_Len_c(); - /* 80A64478 */ void create(); - /* 80A64740 */ void CreateHeap(); - /* 80A64BE0 */ void Delete(); - /* 80A64C14 */ void Execute(); - /* 80A64C34 */ void Draw(); - /* 80A64CC8 */ void createHeapCallBack(fopAc_ac_c*); - /* 80A64CE8 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80A64D40 */ void getType(); - /* 80A64DB8 */ void isDelete(); + /* 80A64478 */ int create(); + /* 80A64740 */ int CreateHeap(); + /* 80A64BE0 */ int Delete(); + /* 80A64C14 */ int Execute(); + /* 80A64C34 */ int Draw(); + /* 80A64CC8 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80A64CE8 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80A64D40 */ u8 getType(); + /* 80A64DB8 */ BOOL isDelete(); /* 80A64FBC */ void reset(); /* 80A6516C */ void afterJntAnm(int); /* 80A65278 */ void setParam(); - /* 80A6546C */ void checkChangeEvt(); + /* 80A6546C */ BOOL checkChangeEvt(); /* 80A6556C */ void setAfterTalkMotion(); /* 80A65624 */ void srchActors(); - /* 80A65710 */ void evtTalk(); - /* 80A657B0 */ void evtCutProc(); + /* 80A65710 */ BOOL evtTalk(); + /* 80A657B0 */ BOOL evtCutProc(); /* 80A65878 */ void action(); /* 80A65A60 */ void beforeMove(); /* 80A65B24 */ void setAttnPos(); /* 80A65E28 */ void setCollision(); - /* 80A65F80 */ bool drawDbgInfo(); - /* 80A65F88 */ void selectAction(); - /* 80A66004 */ void chkAction(int (daNpc_Len_c::*)(void*)); - /* 80A66030 */ void setAction(int (daNpc_Len_c::*)(void*)); + /* 80A65F80 */ int drawDbgInfo(); + /* 80A65F88 */ int selectAction(); + /* 80A66004 */ BOOL chkAction(actionFunc); + /* 80A66030 */ int setAction(actionFunc); /* 80A660D8 */ BOOL checkStartDemo13StbEvt(fopAc_ac_c*, f32, f32, f32, f32, f32, f32, f32); - /* 80A661B4 */ void cutConversationInHotel(int); - /* 80A66664 */ void cutHurry(int); - /* 80A668B8 */ void cutTakeWoodStatue(int); - /* 80A66C74 */ void wait(void*); - /* 80A6736C */ void patrol(void*); - /* 80A67794 */ void talk(void*); - /* 80A68D00 */ daNpc_Len_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**); - /* 80A68DE0 */ u16 getEyeballMaterialNo(); - /* 80A68DE8 */ s32 getHeadJointNo(); - /* 80A68DF0 */ s32 getNeckJointNo(); - /* 80A68DF8 */ bool getBackboneJointNo(); - /* 80A68E00 */ void checkChangeJoint(int); - /* 80A68E10 */ void checkRemoveJoint(int); - /* 80A68E20 */ s32 getFootLJointNo(); - /* 80A68E28 */ s32 getFootRJointNo(); - /* 80A68E30 */ bool chkXYItems(); + /* 80A661B4 */ int cutConversationInHotel(int); + /* 80A66664 */ int cutHurry(int); + /* 80A668B8 */ int cutTakeWoodStatue(int); + /* 80A66C74 */ int wait(void*); + /* 80A6736C */ int patrol(void*); + /* 80A67794 */ int talk(void*); + /* 80A68D00 */ daNpc_Len_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) {} + /* 80A68DE0 */ u16 getEyeballMaterialNo() { return 1; } + /* 80A68DE8 */ s32 getHeadJointNo() { return 4; } + /* 80A68DF0 */ s32 getNeckJointNo() { return 3; } + /* 80A68DF8 */ s32 getBackboneJointNo() { return 1; } + /* 80A68E00 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; } + /* 80A68E10 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 9; } + /* 80A68E20 */ s32 getFootLJointNo() { return 29; } + /* 80A68E28 */ s32 getFootRJointNo() { return 32; } + /* 80A68E30 */ BOOL chkXYItems() { return TRUE; } static char* mCutNameList[4]; - static u8 mCutList[48]; + static cutFunc mCutList[4]; + + int getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; + } + u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } + u8 getBitSW() { return (fopAcM_GetParam(this) & 0xff0000) >> 16; } private: - /* 0x568 */ u8 field_0x568[0xff4 - 0x568]; + /* 0xE40 */ NPC_LEN_HIO_CLASS* mpHIO; + /* 0xE44 */ dCcD_Cyl mCyl; + /* 0xF80 */ u8 mType; + /* 0xF84 */ daNpcT_ActorMngr_c mActorMngr[4]; + /* 0xFA4 */ daNpcT_Path_c mPath; + /* 0xFCC */ actionFunc field_0xfcc; + /* 0xFD8 */ actionFunc mAction; + /* 0xFE4 */ int field_0xfe4; + /* 0xFE8 */ int field_0xfe8; + /* 0xFEC */ u8 field_0xfec; + /* 0xFED */ u8 field_0xfed; + /* 0xFEE */ u8 field_0xfee; + /* 0xFF0 */ int field_0xff0; }; STATIC_ASSERT(sizeof(daNpc_Len_c) == 0xff4); -class daNpc_Len_Param_c { -public: - /* 80A68E38 */ ~daNpc_Len_Param_c(); - - static u8 const m[148]; -}; - - #endif /* D_A_NPC_LEN_H */ diff --git a/src/d/actor/d_a_horse.cpp b/src/d/actor/d_a_horse.cpp index 8aa8fbcfae4..d3843f47b89 100644 --- a/src/d/actor/d_a_horse.cpp +++ b/src/d/actor/d_a_horse.cpp @@ -150,10 +150,8 @@ const daHorse_hio_c1 daHorse_hio_c0::m = { }; /* 80837F2C-8083836C 0000EC 0440+00 1/1 0/0 0/0 .text setReinPos__13daHorseRein_cFi */ -// NONMATCHING void daHorseRein_c::setReinPos(int param_0) { - cXyz* var_r27 = &field_0x0[0][param_0]; - var_r27++; + cXyz* var_r27 = &field_0x0[0][param_0] + 1; cXyz spE0 = *field_0x0[0] - *var_r27; spE0.normalizeZP(); diff --git a/src/d/actor/d_a_mg_rod.cpp b/src/d/actor/d_a_mg_rod.cpp index 2303bff1f7f..41a8c8c7b27 100644 --- a/src/d/actor/d_a_mg_rod.cpp +++ b/src/d/actor/d_a_mg_rod.cpp @@ -5720,6 +5720,12 @@ static int dmg_rod_Execute(dmg_rod_class* i_this) { } else { data_804BBBD4 = 0; } + #elif VERSION == VERSION_GCN_PAL + if (dComIfGs_getPalLanguage() == 0) { + data_804BBBD4 = 2; + } else { + data_804BBBD4 = 0; + } #else data_804BBBD4 = 1; #endif @@ -6277,6 +6283,12 @@ static int dmg_rod_Create(fopAc_ac_c* i_this) { } else { data_804BBBD4 = 0; } + #elif VERSION == VERSION_GCN_PAL + if (dComIfGs_getPalLanguage() == 0) { + data_804BBBD4 = 2; + } else { + data_804BBBD4 = 0; + } #else data_804BBBD4 = 1; #endif diff --git a/src/d/actor/d_a_midna.cpp b/src/d/actor/d_a_midna.cpp index c82604c51fe..efb48eee02a 100644 --- a/src/d/actor/d_a_midna.cpp +++ b/src/d/actor/d_a_midna.cpp @@ -108,8 +108,10 @@ daMidna_hio_c0::param const daMidna_hio_c0::m = { 25.0f, }; +#if VERSION != VERSION_GCN_PAL bool daMidna_matAnm_c::sEyeMoveFlg; u8 daMidna_matAnm_c::sMorfFrame; +#endif /* 804BC218-804BC248 000078 0030+00 2/2 0/0 0/0 .text init__16daMidna_matAnm_cFv */ void daMidna_matAnm_c::init() { diff --git a/src/d/actor/d_a_npc_len.cpp b/src/d/actor/d_a_npc_len.cpp index 032a69a6041..25e4db2f434 100644 --- a/src/d/actor/d_a_npc_len.cpp +++ b/src/d/actor/d_a_npc_len.cpp @@ -1,306 +1,74 @@ /** * @file d_a_npc_len.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_len.h" -#include "dol2asm.h" +#include "d/actor/d_a_tag_push.h" -// -// Forward References: -// +enum Type { + /* 0x0 */ TYPE_0, + /* 0x1 */ TYPE_1, + /* 0x2 */ TYPE_2, + /* 0x3 */ TYPE_3, + /* 0x4 */ TYPE_4, + /* 0x5 */ TYPE_5, + /* 0x6 */ TYPE_6, + /* 0x7 */ TYPE_7, + /* 0x8 */ TYPE_8, + /* 0x9 */ TYPE_9, +}; -extern "C" void __dt__11daNpc_Len_cFv(); -extern "C" void create__11daNpc_Len_cFv(); -extern "C" void CreateHeap__11daNpc_Len_cFv(); -extern "C" void __dt__15J3DTevKColorAnmFv(); -extern "C" void __ct__15J3DTevKColorAnmFv(); -extern "C" void __dt__14J3DTevColorAnmFv(); -extern "C" void __ct__14J3DTevColorAnmFv(); -extern "C" void __dt__11J3DTexNoAnmFv(); -extern "C" void __ct__11J3DTexNoAnmFv(); -extern "C" void __dt__12J3DTexMtxAnmFv(); -extern "C" void __ct__12J3DTexMtxAnmFv(); -extern "C" void __dt__14J3DMatColorAnmFv(); -extern "C" void __ct__14J3DMatColorAnmFv(); -extern "C" void Delete__11daNpc_Len_cFv(); -extern "C" void Execute__11daNpc_Len_cFv(); -extern "C" void Draw__11daNpc_Len_cFv(); -extern "C" void createHeapCallBack__11daNpc_Len_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__11daNpc_Len_cFP8J3DJointi(); -extern "C" void getType__11daNpc_Len_cFv(); -extern "C" void isDelete__11daNpc_Len_cFv(); -extern "C" void reset__11daNpc_Len_cFv(); -extern "C" void afterJntAnm__11daNpc_Len_cFi(); -extern "C" void setParam__11daNpc_Len_cFv(); -extern "C" void checkChangeEvt__11daNpc_Len_cFv(); -extern "C" void setAfterTalkMotion__11daNpc_Len_cFv(); -extern "C" void srchActors__11daNpc_Len_cFv(); -extern "C" void evtTalk__11daNpc_Len_cFv(); -extern "C" void evtCutProc__11daNpc_Len_cFv(); -extern "C" void action__11daNpc_Len_cFv(); -extern "C" void beforeMove__11daNpc_Len_cFv(); -extern "C" void setAttnPos__11daNpc_Len_cFv(); -extern "C" void setCollision__11daNpc_Len_cFv(); -extern "C" bool drawDbgInfo__11daNpc_Len_cFv(); -extern "C" void selectAction__11daNpc_Len_cFv(); -extern "C" void chkAction__11daNpc_Len_cFM11daNpc_Len_cFPCvPvPv_i(); -extern "C" void setAction__11daNpc_Len_cFM11daNpc_Len_cFPCvPvPv_i(); -extern "C" void checkStartDemo13StbEvt__11daNpc_Len_cFP10fopAc_ac_cfffffff(); -extern "C" void cutConversationInHotel__11daNpc_Len_cFi(); -extern "C" void cutHurry__11daNpc_Len_cFi(); -extern "C" void cutTakeWoodStatue__11daNpc_Len_cFi(); -extern "C" void wait__11daNpc_Len_cFPv(); -extern "C" void patrol__11daNpc_Len_cFPv(); -extern "C" void talk__11daNpc_Len_cFPv(); -extern "C" static void daNpc_Len_Create__FPv(); -extern "C" static void daNpc_Len_Delete__FPv(); -extern "C" static void daNpc_Len_Execute__FPv(); -extern "C" static void daNpc_Len_Draw__FPv(); -extern "C" static bool daNpc_Len_IsDelete__FPv(); -extern "C" void calc__11J3DTexNoAnmCFPUs(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__8daNpcT_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __dt__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__13daNpcT_Path_cFv(); -extern "C" void __ct__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void -__ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__15daNpcT_JntAnm_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs(); -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs(); -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi(); -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv(); -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv(); -extern "C" bool evtEndProc__8daNpcT_cFv(); -extern "C" void afterMoved__8daNpcT_cFv(); -extern "C" void decTmr__8daNpcT_cFv(); -extern "C" void drawOtherMdl__8daNpcT_cFv(); -extern "C" void drawGhost__8daNpcT_cFv(); -extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi(); -extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi(); -extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c(); -extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c(); -extern "C" void changeAnm__8daNpcT_cFPiPi(); -extern "C" void changeBck__8daNpcT_cFPiPi(); -extern "C" void changeBtp__8daNpcT_cFPiPi(); -extern "C" void changeBtk__8daNpcT_cFPiPi(); -extern "C" void func_80A68BB4(void* _this, int*); -extern "C" void func_80A68BD0(void* _this, int, int); -extern "C" void __sinit_d_a_npc_len_cpp(); -extern "C" void -__ct__11daNpc_Len_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" u16 getEyeballMaterialNo__11daNpc_Len_cFv(); -extern "C" s32 getHeadJointNo__11daNpc_Len_cFv(); -extern "C" s32 getNeckJointNo__11daNpc_Len_cFv(); -extern "C" bool getBackboneJointNo__11daNpc_Len_cFv(); -extern "C" void checkChangeJoint__11daNpc_Len_cFi(); -extern "C" void checkRemoveJoint__11daNpc_Len_cFi(); -extern "C" s32 getFootLJointNo__11daNpc_Len_cFv(); -extern "C" s32 getFootRJointNo__11daNpc_Len_cFv(); -extern "C" bool chkXYItems__11daNpc_Len_cFv(); -extern "C" void __dt__17daNpc_Len_Param_cFv(); -extern "C" static void func_80A68E80(); -extern "C" static void func_80A68E88(); -extern "C" u8 const m__17daNpc_Len_Param_c[148]; -extern "C" extern char const* const d_a_npc_len__stringBase0; -extern "C" void* mCutNameList__11daNpc_Len_c[4]; -extern "C" u8 mCutList__11daNpc_Len_c[48]; +enum FaceMotion { + /* 0x09 */ FACE_MOT_UNK_9 = 9, + /* 0x0C */ FACE_MOT_UNK_12 = 12, + /* 0x0E */ FACE_MOT_UNK_14 = 14, + /* 0x0F */ FACE_MOT_UNK_15 = 15, + /* 0x11 */ FACE_MOT_UNK_17 = 17, +}; -// -// External References: -// +enum Motion { + /* 0x00 */ MOT_UNK_0 = 0, + /* 0x06 */ MOT_UNK_6 = 6, + /* 0x07 */ MOT_UNK_7 = 7, + /* 0x08 */ MOT_UNK_8 = 8, + /* 0x09 */ MOT_UNK_9 = 9, + /* 0x0A */ MOT_UNK_10 = 10, + /* 0x0B */ MOT_UNK_11 = 11, + /* 0x0C */ MOT_UNK_12 = 12, + /* 0x0D */ MOT_UNK_13 = 13, + /* 0x10 */ MOT_UNK_16 = 16, + /* 0x11 */ MOT_UNK_17 = 17, +}; -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz(); -extern "C" void fpcEx_IsExist__FUi(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void init__7dPaPo_cFP9dBgS_Acchff(); -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 setPathInfo__13daNpcT_Path_cFUcScUc(); -extern "C" void getDstPosH__13daNpcT_Path_cF4cXyzP4cXyzii(); -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 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 setPos__8daNpcT_cF4cXyz(); -extern "C" void setAngle__8daNpcT_cF5csXyz(); -extern "C" void setAngle__8daNpcT_cFs(); -extern "C" void hitChk__8daNpcT_cFP12dCcD_GObjInfUl(); -extern "C" void setDamage__8daNpcT_cFiii(); -extern "C" void chkActorInSight__8daNpcT_cFP10fopAc_ac_cfs(); -extern "C" void srchPlayerActor__8daNpcT_cFv(); -extern "C" void step__8daNpcT_cFsiiii(); -extern "C" void initTalk__8daNpcT_cFiPP10fopAc_ac_c(); -extern "C" void talkProc__8daNpcT_cFPiiPP10fopAc_ac_ci(); -extern "C" void getNearestActorP__8daNpcT_cFs(); -extern "C" void daNpcT_chkActorInScreen__FP10fopAc_ac_cfffffffi(); -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 daNpcT_chkTmpBit__FUl(); -extern "C" void checkNowWolfEyeUp__9daPy_py_cFv(); -extern "C" void dKy_darkworld_check__Fv(); -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_rad2s__Ff(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void __dt__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs(); -extern "C" void initialize__14J3DMaterialAnmFv(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_cmpr(); -extern "C" void __ptmf_scall(); -extern "C" void _savefpr_25(); -extern "C" void _restfpr_25(); -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" void __register_global_object(); +/* 80A68EA4-80A68F38 000000 0094+00 9/9 0/0 0/0 .rodata m__17daNpc_Len_Param_c */ +const daNpc_Len_HIOParam daNpc_Len_Param_c::m = { + 230.0f, -3.0f, 1.0f, 450.0f, 255.0f, 210.0f, 35.0f, 40.0f, 0.0f, 0.0f, 15.0f, + -15.0f, 30.0f, -10.0f, 30.0f, -30.0f, 0.6f, 12.0f, 3, 6, 5, 6, + 110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0, + 4.0f, -20.0f, 0.0f, -20.0f, 20.0f, 50.0f, 20.0f, 100.0f, 0x168, 0xB4, 3.0f, +}; -// -// Declarations: -// +#if DEBUG +daNpc_Len_HIO_c::daNpc_Len_HIO_c() { + m = daNpc_Len_Param_c::m; +} -/* ############################################################################################## */ -/* 80A68FDC-80A68FDC 000138 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A68FDC = ""; -SECTION_DEAD static char const* const stringBase_80A68FDD = "DEFAULT_GETITEM"; -SECTION_DEAD static char const* const stringBase_80A68FED = "NO_RESPONSE"; -SECTION_DEAD static char const* const stringBase_80A68FF9 = "DEMO13_STB"; -SECTION_DEAD static char const* const stringBase_80A69004 = "HURRY"; -SECTION_DEAD static char const* const stringBase_80A6900A = "CONVERSATION_IN_HOTEL1"; -SECTION_DEAD static char const* const stringBase_80A69021 = "CONVERSATION_IN_HOTEL2"; -SECTION_DEAD static char const* const stringBase_80A69038 = "Len"; -SECTION_DEAD static char const* const stringBase_80A6903C = "Len_TW"; -SECTION_DEAD static char const* const stringBase_80A69043 = "Len1"; -SECTION_DEAD static char const* const stringBase_80A69048 = "CONVERSATION_IN_HOTEL"; -SECTION_DEAD static char const* const stringBase_80A6905E = "TAKE_WOODSTATUE"; -#pragma pop +void daNpc_Len_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) { + // TODO +} + +void daNpc_Len_HIO_c::genMessage(JORMContext* ctext) { + // TODO +} +#endif /* 80A690A8-80A690B8 000020 0010+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[16] = { - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x02, +static int l_bmdData[2][2] = { + {11, 1}, + {13, 2}, }; /* 80A690B8-80A690F0 -00001 0038+00 0/1 0/0 0/0 .data l_evtList */ @@ -323,152 +91,68 @@ static char* l_resNameList[4] = { }; /* 80A69100-80A69104 000078 0003+01 1/0 0/0 0/0 .data l_loadResPtrn0 */ -SECTION_DATA static u8 l_loadResPtrn0[3 + 1 /* padding */] = { - 0x01, - 0x03, - 0xFF, - /* padding */ - 0x00, +static s8 l_loadResPtrn0[3] = { + 1, + 3, + -1, }; /* 80A69104-80A69108 00007C 0004+00 1/0 0/0 0/0 .data l_loadResPtrn1 */ -SECTION_DATA static u32 l_loadResPtrn1 = 0x010203FF; +static s8 l_loadResPtrn1[4] = {1, 2, 3, -1}; /* 80A69108-80A69130 -00001 0028+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList[10] = { - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn1, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn0, - (void*)&l_loadResPtrn0, (void*)&l_loadResPtrn1, +static s8* l_loadResPtrnList[10] = { + l_loadResPtrn0, l_loadResPtrn1, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, + l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn1, }; /* 80A69130-80A6937C 0000A8 024C+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[588] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1A, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[21] = { + {-1, 0, 0, 17, 2, 1, 1}, {6, 0, 1, 17, 2, 1, 1}, {16, 0, 3, 46, 0, 3, 0}, + {24, 2, 3, 49, 2, 3, 0}, {18, 0, 3, 47, 0, 3, 0}, {25, 2, 3, 50, 2, 3, 0}, + {17, 2, 3, 17, 2, 1, 1}, {19, 2, 3, 17, 2, 1, 1}, {14, 2, 3, 17, 2, 1, 1}, + {26, 2, 3, 17, 2, 1, 1}, {20, 0, 3, 17, 2, 1, 1}, {15, 0, 3, 45, 0, 3, 0}, + {23, 2, 3, 48, 2, 3, 0}, {11, 0, 3, 42, 0, 3, 0}, {12, 0, 3, 43, 0, 3, 0}, + {21, 2, 3, 17, 2, 1, 1}, {13, 0, 3, 44, 0, 3, 0}, {22, 2, 3, 17, 2, 1, 1}, + {9, 2, 2, 21, 2, 2, 0}, {8, 0, 2, 20, 0, 2, 0}, {10, 2, 2, 22, 2, 2, 0}, }; -#pragma pop /* 80A6937C-80A69574 0002F4 01F8+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[504] = { - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, +static daNpcT_motionAnmData_c l_motionAnmData[18] = { + {8, 2, 1, 14, 0, 1, 1, 0}, {27, 0, 3, 14, 0, 1, 1, 0}, {34, 2, 3, 14, 0, 1, 1, 0}, + {29, 2, 3, 14, 0, 1, 1, 0}, {31, 2, 3, 14, 0, 1, 1, 0}, {30, 0, 3, 14, 0, 1, 1, 0}, + {32, 2, 3, 14, 0, 1, 1, 0}, {33, 0, 3, 14, 0, 1, 1, 0}, {28, 0, 3, 14, 0, 1, 1, 0}, + {6, 0, 3, 37, 0, 3, 0, 0}, {7, 2, 3, 38, 2, 3, 0, 0}, {7, 2, 3, 39, 2, 3, 0, 0}, + {8, 0, 3, 14, 0, 1, 1, 0}, {9, 2, 3, 14, 0, 1, 1, 0}, {10, 0, 3, 14, 0, 1, 1, 0}, + {7, 2, 2, 17, 2, 2, 0, 0}, {6, 2, 2, 16, 2, 2, 0, 0}, {7, 0, 1, 14, 0, 1, 1, 0}, }; -#pragma pop /* 80A69574-80A69694 0004EC 0120+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[288] = { - 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xFF, 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, 0x08, 0xFF, 0x01, 0x00, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0B, 0xFF, 0x01, 0x00, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0D, 0xFF, 0x01, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x10, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x02, 0xFF, 0x01, 0x00, 0x03, 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, 0x05, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x06, 0xFF, 0x01, 0x00, 0x05, 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, 0x09, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x11, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x12, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x14, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 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, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {5, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {8, -1, 1}, {9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, {12, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {13, -1, 1}, {14, 0, 1}, {15, 0, 0}, {-1, 0, 0}, {16, -1, 1}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 1}, {3, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {19, -1, 1}, {20, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {5, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {6, -1, 1}, {5, 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}, {9, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {17, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {18, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {20, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {3, -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 /* 80A69694-80A69774 00060C 00E0+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[224] = { - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x01, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x04, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x08, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x09, 0xFF, 0x01, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0C, 0xFF, 0x01, 0x00, 0x0D, 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, 0x10, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x05, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x02, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x03, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x0E, 0xFF, 0x01, 0x00, 0x00, 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, 0x11, 0x04, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[56] = { + {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {1, -1, 1}, {0, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {4, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {0, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {9, -1, 1}, {10, 0, 1}, {11, 0, 0}, {-1, 0, 0}, {12, -1, 1}, + {13, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, + {16, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {5, -1, 1}, {4, 0, 0}, {-1, 0, 0}, + {-1, 0, 0}, {2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {3, -1, 0}, {-1, 0, 0}, + {-1, 0, 0}, {-1, 0, 0}, {14, -1, 1}, {0, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {6, -1, 0}, + {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {17, 4, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, }; -#pragma pop /* 80A69774-80A69784 -00001 0010+00 1/1 0/0 0/0 .data mCutNameList__11daNpc_Len_c */ char* daNpc_Len_c::mCutNameList[4] = { @@ -478,1104 +162,1213 @@ char* daNpc_Len_c::mCutNameList[4] = { "TAKE_WOODSTATUE", }; -/* 80A69784-80A69790 -00001 000C+00 0/1 0/0 0/0 .data @3845 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3845[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutHurry__11daNpc_Len_cFi, -}; -#pragma pop - -/* 80A69790-80A6979C -00001 000C+00 0/1 0/0 0/0 .data @3846 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3846[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutConversationInHotel__11daNpc_Len_cFi, -}; -#pragma pop - -/* 80A6979C-80A697A8 -00001 000C+00 0/1 0/0 0/0 .data @3847 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3847[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cutTakeWoodStatue__11daNpc_Len_cFi, -}; -#pragma pop - /* 80A697A8-80A697D8 000720 0030+00 1/2 0/0 0/0 .data mCutList__11daNpc_Len_c */ -SECTION_DATA u8 daNpc_Len_c::mCutList[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80A697D8-80A697FC -00001 0024+00 1/1 0/0 0/0 .data @4469 */ -SECTION_DATA static void* lit_4469[9] = { - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x28), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x30), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x38), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x40), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x48), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x50), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x58), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x60), - (void*)(((char*)getType__11daNpc_Len_cFv) + 0x68), -}; - -/* 80A697FC-80A69820 -00001 0024+00 1/1 0/0 0/0 .data @4505 */ -SECTION_DATA static void* lit_4505[9] = { - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x34), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x64), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x6C), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x9C), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0xCC), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0xFC), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x144), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x18C), - (void*)(((char*)isDelete__11daNpc_Len_cFv) + 0x1BC), -}; - -/* 80A69820-80A6982C -00001 000C+00 1/1 0/0 0/0 .data @4644 */ -SECTION_DATA static void* lit_4644[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Len_cFPv, -}; - -/* 80A6982C-80A69854 -00001 0028+00 1/1 0/0 0/0 .data @4696 */ -SECTION_DATA static void* lit_4696[10] = { - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x70), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x40), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x48), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x4C), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x54), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x5C), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x64), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x70), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x70), - (void*)(((char*)setAfterTalkMotion__11daNpc_Len_cFv) + 0x6C), -}; - -/* 80A69854-80A69860 -00001 000C+00 1/1 0/0 0/0 .data @4723 */ -SECTION_DATA static void* lit_4723[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Len_cFPv, -}; - -/* 80A69860-80A6986C -00001 000C+00 1/1 0/0 0/0 .data @4728 */ -SECTION_DATA static void* lit_4728[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpc_Len_cFPv, -}; - -/* 80A6986C-80A69878 -00001 000C+00 1/1 0/0 0/0 .data @4997 */ -SECTION_DATA static void* lit_4997[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)patrol__11daNpc_Len_cFPv, -}; - -/* 80A69878-80A69884 -00001 000C+00 1/1 0/0 0/0 .data @4999 */ -SECTION_DATA static void* lit_4999[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpc_Len_cFPv, -}; - -/* 80A69884-80A698A4 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Len_MethodTable */ -static actor_method_class daNpc_Len_MethodTable = { - (process_method_func)daNpc_Len_Create__FPv, - (process_method_func)daNpc_Len_Delete__FPv, - (process_method_func)daNpc_Len_Execute__FPv, - (process_method_func)daNpc_Len_IsDelete__FPv, - (process_method_func)daNpc_Len_Draw__FPv, -}; - -/* 80A698A4-80A698D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_LEN */ -extern actor_process_profile_definition g_profile_NPC_LEN = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_LEN, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_Len_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 337, // mPriority - &daNpc_Len_MethodTable, // sub_method - 0x00040107, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80A698D4-80A698E0 00084C 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, -}; - -/* 80A698E0-80A698EC 000858 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, -}; - -/* 80A698EC-80A69910 000864 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_80A68E88, - (void*)NULL, - (void*)NULL, - (void*)func_80A68E80, -}; - -/* 80A69910-80A6991C 000888 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, -}; - -/* 80A6991C-80A69928 000894 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, -}; - -/* 80A69928-80A69934 0008A0 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, -}; - -/* 80A69934-80A69940 0008AC 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, -}; - -/* 80A69940-80A6994C 0008B8 000C+00 5/5 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcT_ActorMngr_cFv, -}; - -/* 80A6994C-80A69958 0008C4 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, -}; - -/* 80A69958-80A69964 0008D0 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, -}; - -/* 80A69964-80A69970 0008DC 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, -}; - -/* 80A69970-80A6997C 0008E8 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, -}; - -/* 80A6997C-80A69A40 0008F4 00C4+00 2/2 0/0 0/0 .data __vt__11daNpc_Len_c */ -SECTION_DATA extern void* __vt__11daNpc_Len_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daNpc_Len_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__8daNpcT_cFi, - (void*)checkChangeJoint__11daNpc_Len_cFi, - (void*)checkRemoveJoint__11daNpc_Len_cFi, - (void*)getBackboneJointNo__11daNpc_Len_cFv, - (void*)getNeckJointNo__11daNpc_Len_cFv, - (void*)getHeadJointNo__11daNpc_Len_cFv, - (void*)getFootLJointNo__11daNpc_Len_cFv, - (void*)getFootRJointNo__11daNpc_Len_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__11daNpc_Len_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__11daNpc_Len_cFi, - (void*)setParam__11daNpc_Len_cFv, - (void*)checkChangeEvt__11daNpc_Len_cFv, - (void*)evtTalk__11daNpc_Len_cFv, - (void*)evtEndProc__8daNpcT_cFv, - (void*)evtCutProc__11daNpc_Len_cFv, - (void*)setAfterTalkMotion__11daNpc_Len_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__11daNpc_Len_cFv, - (void*)beforeMove__11daNpc_Len_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__11daNpc_Len_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__11daNpc_Len_cFv, - (void*)setFootPrtcl__8daNpcT_cFP4cXyzff, - (void*)checkCullDraw__8daNpcT_cFv, - (void*)twilight__8daNpcT_cFv, - (void*)chkXYItems__11daNpc_Len_cFv, - (void*)evtOrder__8daNpcT_cFv, - (void*)decTmr__8daNpcT_cFv, - (void*)clrParam__8daNpcT_cFv, - (void*)drawDbgInfo__11daNpc_Len_cFv, - (void*)drawOtherMdl__8daNpcT_cFv, - (void*)drawGhost__8daNpcT_cFv, - (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi, - (void*)afterSetMotionAnm__8daNpcT_cFiifi, - (void*)getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c, - (void*)getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c, - (void*)changeAnm__8daNpcT_cFPiPi, - (void*)changeBck__8daNpcT_cFPiPi, - (void*)changeBtp__8daNpcT_cFPiPi, - (void*)changeBtk__8daNpcT_cFPiPi, - (void*)setMotionAnm__8daNpcT_cFifi, +daNpc_Len_c::cutFunc daNpc_Len_c::mCutList[4] = { + NULL, + &daNpc_Len_c::cutHurry, + &daNpc_Len_c::cutConversationInHotel, + &daNpc_Len_c::cutTakeWoodStatue, }; /* 80A6432C-80A64478 0000EC 014C+00 1/0 0/0 0/0 .text __dt__11daNpc_Len_cFv */ daNpc_Len_c::~daNpc_Len_c() { - // NONMATCHING + if (mpMorf[0] != NULL) { + mpMorf[0]->stopZelAnime(); + } + + deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList); } -/* ############################################################################################## */ -/* 80A68EA4-80A68F38 000000 0094+00 9/9 0/0 0/0 .rodata m__17daNpc_Len_Param_c */ -SECTION_RODATA u8 const daNpc_Len_Param_c::m[148] = { - 0x43, 0x66, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xE1, 0x00, - 0x00, 0x43, 0x7F, 0x00, 0x00, 0x43, 0x52, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x42, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0xC1, - 0x70, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0xC1, 0xF0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x06, 0x42, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x41, 0xA0, 0x00, - 0x00, 0x42, 0xC8, 0x00, 0x00, 0x01, 0x68, 0x00, 0xB4, 0x40, 0x40, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A68EA4, &daNpc_Len_Param_c::m); - -/* 80A68F38-80A68F60 000094 0028+00 0/1 0/0 0/0 .rodata heapSize$4002 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const heapSize[40] = { - 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, - 0x43, 0x80, 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, 0x43, 0x80, - 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A68F38, &heapSize); -#pragma pop - -/* 80A68F60-80A68F64 0000BC 0004+00 0/1 0/0 0/0 .rodata @4068 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4068 = -200.0f; -COMPILER_STRIP_GATE(0x80A68F60, &lit_4068); -#pragma pop - -/* 80A68F64-80A68F68 0000C0 0004+00 0/1 0/0 0/0 .rodata @4069 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4069 = -100.0f; -COMPILER_STRIP_GATE(0x80A68F64, &lit_4069); -#pragma pop - -/* 80A68F68-80A68F6C 0000C4 0004+00 0/1 0/0 0/0 .rodata @4070 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4070 = 200.0f; -COMPILER_STRIP_GATE(0x80A68F68, &lit_4070); -#pragma pop - -/* 80A68F6C-80A68F70 0000C8 0004+00 0/1 0/0 0/0 .rodata @4071 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4071 = 300.0f; -COMPILER_STRIP_GATE(0x80A68F6C, &lit_4071); -#pragma pop - -/* 80A68F70-80A68F74 0000CC 0004+00 6/14 0/0 0/0 .rodata @4072 */ -SECTION_RODATA static u8 const lit_4072[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80A68F70, &lit_4072); - -/* 80A68F74-80A68F78 0000D0 0004+00 0/1 0/0 0/0 .rodata @4073 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4073 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x80A68F74, &lit_4073); -#pragma pop - /* 80A64478-80A64740 000238 02C8+00 1/1 0/0 0/0 .text create__11daNpc_Len_cFv */ -void daNpc_Len_c::create() { - // NONMATCHING +int daNpc_Len_c::create() { + static const int heapSize[10] = { + 0x4380, 0x4380, 0x4380, 0x4380, 0x4380, 0x4380, 0x4380, 0x4380, 0x4380, 0x0, + }; + + fopAcM_SetupActor2(this, daNpc_Len_c, (daNpcT_faceMotionAnmData_c const*)l_faceMotionAnmData, + (const daNpcT_motionAnmData_c*)l_motionAnmData, + (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData, + 4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData, + 4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList); + + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = dKy_darkworld_check(); + + int phase = loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList); + if (phase == cPhs_COMPLEATE_e) { + if (isDelete()) { + return cPhs_ERROR_e; + } + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, heapSize[mType])) { + return cPhs_ERROR_e; + } + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -200.0f, -100.0f, -200.0f, 200.0f, 300.0f, 200.0f); + mSound.init(¤t.pos, &eyePos, 3, 1); + field_0x9c0.init(&mAcch, 0.0f, 0.0f); + 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.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; } -/* ############################################################################################## */ -/* 80A68F78-80A68F7C 0000D4 0004+00 0/2 0/0 0/0 .rodata @4235 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4235 = 65536.0f; -COMPILER_STRIP_GATE(0x80A68F78, &lit_4235); -#pragma pop - -/* 80A68F7C-80A68F80 0000D8 0004+00 0/3 0/0 0/0 .rodata @4236 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4236 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80A68F7C, &lit_4236); -#pragma pop - -/* 80A68F80-80A68F84 0000DC 0004+00 3/5 0/0 0/0 .rodata @4388 */ -SECTION_RODATA static f32 const lit_4388 = 1.0f; -COMPILER_STRIP_GATE(0x80A68F80, &lit_4388); - /* 80A64740-80A64A24 000500 02E4+00 1/1 0/0 0/0 .text CreateHeap__11daNpc_Len_cFv */ -void daNpc_Len_c::CreateHeap() { - // NONMATCHING -} +int daNpc_Len_c::CreateHeap() { + u32 bmd_idx = mTwilight == 1 ? 1 : 0; + int arc_idx = l_bmdData[bmd_idx][1]; + int res_idx = l_bmdData[bmd_idx][0]; -/* 80A64A24-80A64A60 0007E4 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + J3DModelData* modelData = + static_cast(dComIfG_getObjectRes(l_resNameList[arc_idx], res_idx)); + if (modelData == NULL) { + return 0; + } -/* 80A64A60-80A64A78 000820 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + mpMorf[0] = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, + 0x11020284); + if (mpMorf[0] == NULL || mpMorf[0]->getModel() == NULL) { + return 0; + } -/* 80A64A78-80A64AB4 000838 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + J3DModel* model = mpMorf[0]->getModel(); -/* 80A64AB4-80A64ACC 000874 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + for (u16 i = 0; i < modelData->getJointNum(); i++) { + modelData->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } -/* 80A64ACC-80A64B14 00088C 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} + model->setUserArea((uintptr_t)this); -/* 80A64B14-80A64B38 0008D4 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + mpMatAnm[0] = new daNpcT_MatAnm_c(); + if (mpMatAnm[0] == NULL) { + return 0; + } -/* 80A64B38-80A64B74 0008F8 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80A64B74-80A64B8C 000934 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80A64B8C-80A64BC8 00094C 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} - -/* 80A64BC8-80A64BE0 000988 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + if (mTwilight) { + if (setFaceMotionAnm(18, false) && setMotionAnm(15, 0.0f, FALSE)) { + return 1; + } + return 0; + } + if (setFaceMotionAnm(1, false) && setMotionAnm(0, 0.0f, FALSE)) { + return 1; + } + return 0; } /* 80A64BE0-80A64C14 0009A0 0034+00 1/1 0/0 0/0 .text Delete__11daNpc_Len_cFv */ -void daNpc_Len_c::Delete() { - // NONMATCHING +int daNpc_Len_c::Delete() { + fopAcM_GetID(this); + this->~daNpc_Len_c(); + return 1; } /* 80A64C14-80A64C34 0009D4 0020+00 2/2 0/0 0/0 .text Execute__11daNpc_Len_cFv */ -void daNpc_Len_c::Execute() { - // NONMATCHING +int daNpc_Len_c::Execute() { + return daNpcT_c::execute(); } -/* ############################################################################################## */ -/* 80A68F84-80A68F88 0000E0 0004+00 1/1 0/0 0/0 .rodata @4437 */ -SECTION_RODATA static f32 const lit_4437 = 100.0f; -COMPILER_STRIP_GATE(0x80A68F84, &lit_4437); - /* 80A64C34-80A64CC8 0009F4 0094+00 1/1 0/0 0/0 .text Draw__11daNpc_Len_cFv */ -void daNpc_Len_c::Draw() { - // NONMATCHING +int daNpc_Len_c::Draw() { + if (mpMatAnm[0] != NULL) { + J3DModelData* modelData = mpMorf[0]->getModel()->getModelData(); + modelData->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + return daNpcT_c::draw(0, 0, mRealShadowSize, NULL, 100.0f, 0, 0, 0); } /* 80A64CC8-80A64CE8 000A88 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__11daNpc_Len_cFP10fopAc_ac_c */ -void daNpc_Len_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daNpc_Len_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); } /* 80A64CE8-80A64D40 000AA8 0058+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpc_Len_cFP8J3DJointi */ -void daNpc_Len_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daNpc_Len_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { + if (param_1 == 0) { + J3DModel* model = j3dSys.getModel(); + + daNpc_Len_c* i_this = reinterpret_cast(model->getUserArea()); + if (i_this != 0) { + i_this->ctrlJoint(param_0, model); + } + } + + return 1; } /* 80A64D40-80A64DB8 000B00 0078+00 2/1 0/0 0/0 .text getType__11daNpc_Len_cFv */ -void daNpc_Len_c::getType() { - // NONMATCHING +u8 daNpc_Len_c::getType() { + switch (fopAcM_GetParam(this) & 0xFF) { + case 0: + return TYPE_0; + case 1: + return TYPE_1; + case 2: + return TYPE_2; + case 3: + return TYPE_3; + case 4: + return TYPE_4; + case 5: + return TYPE_5; + case 6: + return TYPE_6; + case 7: + return TYPE_7; + case 8: + return TYPE_8; + } + return TYPE_9; } /* 80A64DB8-80A64FBC 000B78 0204+00 2/1 0/0 0/0 .text isDelete__11daNpc_Len_cFv */ -void daNpc_Len_c::isDelete() { - // NONMATCHING +BOOL daNpc_Len_c::isDelete() { + switch (mType) { + case TYPE_0: + /* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit - Reunion + * with Colin et al. */ + return !daNpcT_chkEvtBit(0x3D) || + /* dSv_event_flag_c::F_0066 - Death Mountain - First saw Goron cutscene on mountain + path */ + daNpcT_chkEvtBit(0xA4); + case TYPE_1: + return false; + case TYPE_2: + /* dSv_event_flag_c::F_0066 - Death Mountain - First saw Goron cutscene on mountain path */ + return !daNpcT_chkEvtBit(0xA4) || + /* dSv_event_flag_c::M_020 - Cutscene - [cutscene: ] Colin kidnapped : ON once + watched */ + daNpcT_chkEvtBit(0x35); + case TYPE_3: + /* dSv_event_flag_c::M_020 - Cutscene - [cutscene: ] Colin kidnapped : ON once watched */ + return !daNpcT_chkEvtBit(0x35) || + /* dSv_event_flag_c::M_052 - Main Event - Horseback battle clear */ + daNpcT_chkEvtBit(0x55); + case TYPE_4: + /* dSv_event_flag_c::M_052 - Main Event - Horseback battle clear */ + return !daNpcT_chkEvtBit(0x55) || + /* dSv_event_flag_c::M_031 - Goron Mines - Goron Mines clear */ + daNpcT_chkEvtBit(0x40); + case TYPE_5: + /* dSv_event_flag_c::F_288 - Cutscene - [cutscene: ] Ilia gets her memories back */ + if (daNpcT_chkEvtBit(0x120) == FALSE) { + /* dSv_event_flag_c::M_031 - Goron Mines - Goron Mines clear */ + return !daNpcT_chkEvtBit(0x40) || + /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding + event */ + daNpcT_chkEvtBit(0x44); + } + return false; + case TYPE_6: + /* dSv_event_flag_c::F_288 - Cutscene - [cutscene: ] Ilia gets her memories back */ + if (daNpcT_chkEvtBit(0x120) == FALSE) { + /* dSv_event_flag_c::M_031 - Goron Mines - Goron Mines clear */ + return !daNpcT_chkEvtBit(0x40) || + /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding + event */ + daNpcT_chkEvtBit(0x44); + } + return false; + case TYPE_7: + /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding event */ + return !daNpcT_chkEvtBit(0x44) || + /* dSv_event_flag_c::F_0264 - Cutscene - Get master sword */ + daNpcT_chkEvtBit(0x108); + case TYPE_8: + /* dSv_event_flag_c::F_0264 - Cutscene - Get master sword */ + return !daNpcT_chkEvtBit(0x108) || + /* dSv_event_flag_c::F_288 - Cutscene - [cutscene: ] Ilia gets her memories back */ + daNpcT_chkEvtBit(0x120); + } + return false; } /* 80A64FBC-80A6516C 000D7C 01B0+00 1/1 0/0 0/0 .text reset__11daNpc_Len_cFv */ void daNpc_Len_c::reset() { - // NONMATCHING + int iVar1 = (u8*)&field_0xff0 - (u8*)&field_0xfcc; + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + initialize(); + for (int i = 0; i < 4; i++) { + mActorMngr[i].initialize(); + } + if (getPathID() != 0xFF) { + mPath.initialize(); + mPath.setPathInfo(getPathID(), fopAcM_GetRoomNo(this), 0); + } + memset(&field_0xfcc, 0, iVar1); + csXyz acStack_20; + acStack_20.setall(0.0f); + acStack_20.y = home.angle.y; + setAngle(acStack_20); } -/* ############################################################################################## */ -/* 80A68F88-80A68F8C 0000E4 0004+00 1/1 0/0 0/0 .rodata @4585 */ -SECTION_RODATA static f32 const lit_4585 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80A68F88, &lit_4585); - -/* 80A68F8C-80A68F94 0000E8 0008+00 3/5 0/0 0/0 .rodata @4587 */ -SECTION_RODATA static u8 const lit_4587[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A68F8C, &lit_4587); - /* 80A6516C-80A65278 000F2C 010C+00 1/0 0/0 0/0 .text afterJntAnm__11daNpc_Len_cFi */ -void daNpc_Len_c::afterJntAnm(int param_0) { - // NONMATCHING +void daNpc_Len_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)); + } + if (param_1 == 6) { + mDoMtx_stack_c::YrotM(-mJntAnm.getJntRadY2S(0) * 0.6f); + } } -/* ############################################################################################## */ -/* 80A68F94-80A68F98 0000F0 0004+00 1/1 0/0 0/0 .rodata @4637 */ -SECTION_RODATA static f32 const lit_4637 = 160.0f; -COMPILER_STRIP_GATE(0x80A68F94, &lit_4637); - /* 80A65278-80A6546C 001038 01F4+00 1/0 0/0 0/0 .text setParam__11daNpc_Len_cFv */ void daNpc_Len_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; + + switch (mType) { + case TYPE_0: + talk_angle = 3; + attention_angle = 3; + break; + case TYPE_2: + talk_distance = 9; + talk_angle = 4; + attention_distance = 17; + attention_angle = 4; + break; + case TYPE_3: + field_0xd8a.y = -10000; + talk_distance = 13; + attention_distance = 15; + break; + case TYPE_5: + talk_angle = 4; + break; + } + + if (daPy_getPlayerActorClass()->checkHorseRide()) { + if (talk_distance < 7) { + talk_distance = 7; + } + if (attention_distance < 9) { + attention_distance = 9; + } + } + + 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); + + if (mType == TYPE_5) { + mCcStts.SetWeight(109); + } else { + mCcStts.SetWeight(mpHIO->m.common.weight); + } + + mCylH = mpHIO->m.common.height; + mWallR = mpHIO->m.common.width; + if (mType == TYPE_1) { + mCylH = 160.0f; + } + + 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; } /* 80A6546C-80A6556C 00122C 0100+00 1/0 0/0 0/0 .text checkChangeEvt__11daNpc_Len_cFv */ -void daNpc_Len_c::checkChangeEvt() { - // NONMATCHING -} +BOOL daNpc_Len_c::checkChangeEvt() { + if (!chkAction(&daNpc_Len_c::talk)) { + mPreItemNo = 0; + if (dComIfGp_event_chkTalkXY()) { + if (dComIfGp_evmng_ChkPresentEnd()) { + mEvtNo = 2; + evtChange(); + } + return TRUE; + } -/* ############################################################################################## */ -/* 80A68F98-80A68F9C 0000F4 0004+00 3/6 0/0 0/0 .rodata @4695 */ -SECTION_RODATA static f32 const lit_4695 = -1.0f; -COMPILER_STRIP_GATE(0x80A68F98, &lit_4695); + switch (mType) { + case TYPE_0: + case TYPE_1: + case TYPE_2: + case TYPE_3: + case TYPE_5: + case TYPE_6: + case TYPE_7: + case TYPE_8: + case TYPE_9: + break; + case TYPE_4: + /* dSv_event_flag_c::T_0057 - Kakariko Village (inside) - Barnes bomb shop */ + if (daNpcT_chkTmpBit(0x3A)) { + mEvtNo = 6; + } else { + mEvtNo = 5; + } + evtChange(); + return TRUE; + } + } + + return FALSE; +} /* 80A6556C-80A65624 00132C 00B8+00 2/0 0/0 0/0 .text setAfterTalkMotion__11daNpc_Len_cFv */ void daNpc_Len_c::setAfterTalkMotion() { - // NONMATCHING + int iVar2 = MOT_UNK_17; + switch (mFaceMotionSeqMngr.getNo()) { + case 1: + iVar2 = MOT_UNK_8; + break; + case 2: + return; + case 3: + iVar2 = MOT_UNK_10; + break; + case 4: + iVar2 = MOT_UNK_11; + break; + case 5: + iVar2 = MOT_UNK_13; + break; + case 6: + iVar2 = MOT_UNK_16; + break; + case 9: + iVar2 = MOT_UNK_8; + break; + } + mFaceMotionSeqMngr.setNo(iVar2, -1.0f, 0, 0); } /* 80A65624-80A65710 0013E4 00EC+00 1/1 0/0 0/0 .text srchActors__11daNpc_Len_cFv */ void daNpc_Len_c::srchActors() { - // NONMATCHING + switch (mType) { + case TYPE_3: + break; + case TYPE_4: + if (mActorMngr[0].getActorP() == NULL) { + mActorMngr[0].entry(getNearestActorP(PROC_NPC_KOLINB)); + } + break; + case TYPE_8: + if (mActorMngr[1].getActorP() == NULL) { + mActorMngr[1].entry(getNearestActorP(PROC_NPC_YELIA)); + } + if (mActorMngr[2].getActorP() == NULL) { + mActorMngr[2].entry(getNearestActorP(PROC_NPC_GRD)); + } + if (mActorMngr[3].getActorP() == NULL) { + mActorMngr[3].entry(getNearestActorP(PROC_NPC_GRZ)); + } + break; + } } /* 80A65710-80A657B0 0014D0 00A0+00 1/0 0/0 0/0 .text evtTalk__11daNpc_Len_cFv */ -void daNpc_Len_c::evtTalk() { - // NONMATCHING +BOOL daNpc_Len_c::evtTalk() { + if (chkAction(&daNpc_Len_c::talk)) { + (this->*mAction)(NULL); + } else { + setAction(&daNpc_Len_c::talk); + } + return TRUE; } /* 80A657B0-80A65878 001570 00C8+00 1/0 0/0 0/0 .text evtCutProc__11daNpc_Len_cFv */ -void daNpc_Len_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_Len_c::evtCutProc() { + int staffId = dComIfGp_getEventManager().getMyStaffId("Len", this, -1); + if (staffId != -1) { + mStaffId = staffId; + int actIdx = + dComIfGp_getEventManager().getMyActIdx(mStaffId, (char**)mCutNameList, 4, 0, 0); + if ((this->*(mCutList[actIdx]))(mStaffId) != 0) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + return true; + } + return false; } /* 80A65878-80A65A60 001638 01E8+00 1/0 0/0 0/0 .text action__11daNpc_Len_cFv */ void daNpc_Len_c::action() { - // NONMATCHING + fopAc_ac_c* hit_actor = NULL; + + if (!mTwilight) { + hit_actor = hitChk(&mCyl, 0xffffffff); + } + + if (hit_actor) { + 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()) { + // FIXME: Fakematch - same issue in npc_besu +#ifdef DEBUG + mStagger.initialize(); +#else + for (int i = 0; i < 2; i++) { + mStagger.mAngle[i].setall(0); + mStagger.mPower[i] = 0.0f; + } + mStagger.mStagger = 0; + mStagger.field_0x16 = 0; + mStagger.mRebirth = 0; +#endif + mMode = 1; + } + + if (field_0xfcc != NULL) { + if (mAction == field_0xfcc) { + (this->*mAction)(NULL); + } else { + setAction(field_0xfcc); + } + } + + daTag_Push_c* push_tag_p = (daTag_Push_c*)field_0xba0.getActorP(); + + if (push_tag_p != NULL) { + switch (push_tag_p->getId()) { + case 3: + mEvtNo = 4; + break; + } + } } /* 80A65A60-80A65B24 001820 00C4+00 1/0 0/0 0/0 .text beforeMove__11daNpc_Len_cFv */ void daNpc_Len_c::beforeMove() { - // NONMATCHING + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x8000000); + if (checkHide()) { + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_0x8000000); + } + + if (checkHide() || mNoDraw != 0) { + attention_info.flags = 0; + } } -/* ############################################################################################## */ -/* 80A68F9C-80A68FA0 0000F8 0004+00 0/1 0/0 0/0 .rodata @4885 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4885 = -30.0f; -COMPILER_STRIP_GATE(0x80A68F9C, &lit_4885); -#pragma pop - -/* 80A68FA0-80A68FA4 0000FC 0004+00 0/1 0/0 0/0 .rodata @4886 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4886 = 15.0f; -COMPILER_STRIP_GATE(0x80A68FA0, &lit_4886); -#pragma pop - -/* 80A68FA4-80A68FA8 000100 0004+00 0/1 0/0 0/0 .rodata @4887 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4887 = 0x38C90FDB; -COMPILER_STRIP_GATE(0x80A68FA4, &lit_4887); -#pragma pop - -/* 80A68FA8-80A68FAC 000104 0004+00 0/1 0/0 0/0 .rodata @4888 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4888 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80A68FA8, &lit_4888); -#pragma pop - -/* 80A68FAC-80A68FB4 000108 0004+04 0/1 0/0 0/0 .rodata @4889 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4889[1 + 1 /* padding */] = { - 190.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80A68FAC, &lit_4889); -#pragma pop +/* 80A69A64-80A69A68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +NPC_LEN_HIO_CLASS l_HIO; /* 80A65B24-80A65E28 0018E4 0304+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Len_cFv */ void daNpc_Len_c::setAttnPos() { - // NONMATCHING + cXyz acStack_40(-30.0f, 15.0f, 0.0f); + cXyz cStack_4c(0.0f, 15.0f, 0.0f); + + if (field_0xfec != 0) { + daPy_getPlayerActorClass()->onWolfEyeKeep(); + } + + mStagger.calc(0); + + f32 dVar5 = cM_s2rad(mCurAngle.y - field_0xd7e.y); + + mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_40, getBackboneJointNo(), + getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min, + mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min, + mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min, + mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min, + mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio, dVar5, + &cStack_4c); + + if (mJntAnm.getMode() == daNpcT_JntAnm_c::LOOK_MODE_7) { + mJntAnm.calcJntRad(0.1f, 1.0f, dVar5); + } else { + mJntAnm.calcJntRad(0.2f, 1.0f, dVar5); + } + + 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 + field_0xd8a.y, 1, 1.0f, 0); + + if (mType == TYPE_1) { + acStack_40.set(0.0f, 190.0f, 0.0f); + } else { + acStack_40.set(0.0f, 0.0f, 0.0f); + acStack_40.y = mpHIO->m.common.attention_offset; + } + + mDoMtx_stack_c::YrotS(mCurAngle.y); + mDoMtx_stack_c::multVec(&acStack_40, &acStack_40); + attention_info.position = current.pos + acStack_40; + + setFootPos(); } /* 80A65E28-80A65F80 001BE8 0158+00 1/0 0/0 0/0 .text setCollision__11daNpc_Len_cFv */ void daNpc_Len_c::setCollision() { - // NONMATCHING + cXyz cStack_48; + + if (mHide == 0) { + u32 tgType = 0xd8fbfdff; + u32 tgSPrm = 0x1f; + + if (mTwilight != 0) { + tgType = 0; + tgSPrm = 0; + } else if (mStagger.checkStagger()) { + tgType = 0; + tgSPrm = 0; + } + + mCyl.SetCoSPrm(0x79); + mCyl.SetTgType(tgType); + mCyl.SetTgSPrm(tgSPrm); + mCyl.OnTgNoHitMark(); + + cStack_48.set(0.0f, 0.0f, 0.0f); + + f32 cylHeight = mCylH; + f32 cylRadius = mWallR; + + 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(); } /* 80A65F80-80A65F88 001D40 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpc_Len_cFv */ -bool daNpc_Len_c::drawDbgInfo() { - return false; +int daNpc_Len_c::drawDbgInfo() { + return 0; } /* 80A65F88-80A66004 001D48 007C+00 1/1 0/0 0/0 .text selectAction__11daNpc_Len_cFv */ -void daNpc_Len_c::selectAction() { - // NONMATCHING +int daNpc_Len_c::selectAction() { + field_0xfcc = NULL; + + switch (mType) { + case TYPE_5: + field_0xfcc = &daNpc_Len_c::patrol; + break; + default: + field_0xfcc = &daNpc_Len_c::wait; + } + + return 1; } /* 80A66004-80A66030 001DC4 002C+00 2/2 0/0 0/0 .text * chkAction__11daNpc_Len_cFM11daNpc_Len_cFPCvPvPv_i */ -void daNpc_Len_c::chkAction(int (daNpc_Len_c::*param_0)(void*)) { - // NONMATCHING +BOOL daNpc_Len_c::chkAction(actionFunc param_0) { + return mAction == param_0; } /* 80A66030-80A660D8 001DF0 00A8+00 2/2 0/0 0/0 .text * setAction__11daNpc_Len_cFM11daNpc_Len_cFPCvPvPv_i */ -void daNpc_Len_c::setAction(int (daNpc_Len_c::*param_0)(void*)) { - // NONMATCHING -} +int daNpc_Len_c::setAction(actionFunc param_0) { + mMode = MODE_EXIT; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } -/* ############################################################################################## */ -/* 80A68FDC-80A68FDC 000138 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A6906E = "R_SP109"; -#pragma pop + mMode = MODE_ENTER; + mAction = param_0; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + return 1; +} /* 80A660D8-80A661B4 001E98 00DC+00 1/1 0/0 6/6 .text * checkStartDemo13StbEvt__11daNpc_Len_cFP10fopAc_ac_cfffffff */ -BOOL daNpc_Len_c::checkStartDemo13StbEvt(fopAc_ac_c* param_0, f32 param_1, f32 param_2, - f32 param_3, f32 param_4, f32 param_5, f32 param_6, - f32 param_7) { - // NONMATCHING +BOOL daNpc_Len_c::checkStartDemo13StbEvt(fopAc_ac_c* i_npc_p, f32 i_box_min_x, f32 i_box_min_y, + f32 i_box_min_z, f32 i_box_max_x, f32 i_box_max_y, + f32 i_box_max_z, f32 i_box_offset) { + if (strcmp(dComIfGp_getStartStageName(), "R_SP109") == 0 && ((daNpcT_c*)i_npc_p)->mTwilight && + daPy_py_c::checkNowWolfEyeUp() && + /* dSv_event_flag_c::M_027 - Cutscene - [cutscene: 13] kids in the church (beast eyes) */ + !daNpcT_chkEvtBit(0x3C) && + daNpcT_chkActorInScreen(i_npc_p, i_box_min_x, i_box_min_y, i_box_min_z, i_box_max_x, + i_box_max_y, i_box_max_z, i_box_offset, 0)) + { + return TRUE; + } + return FALSE; } -/* ############################################################################################## */ -/* 80A68FB4-80A68FBC 000110 0008+00 0/1 0/0 0/0 .rodata @4948 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4948[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A68FB4, &lit_4948); -#pragma pop - -/* 80A68FBC-80A68FC4 000118 0008+00 0/1 0/0 0/0 .rodata @4949 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4949[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A68FBC, &lit_4949); -#pragma pop - -/* 80A68FC4-80A68FCC 000120 0008+00 0/1 0/0 0/0 .rodata @4950 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4950[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80A68FC4, &lit_4950); -#pragma pop - -/* 80A68FCC-80A68FD4 000128 0008+00 0/1 0/0 0/0 .rodata @5048 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5048[8] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -}; -COMPILER_STRIP_GATE(0x80A68FCC, &lit_5048); -#pragma pop - -/* 80A68FD4-80A68FD8 000130 0004+00 0/1 0/0 0/0 .rodata @5151 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5151 = -40.0f; -COMPILER_STRIP_GATE(0x80A68FD4, &lit_5151); -#pragma pop - -/* 80A68FDC-80A68FDC 000138 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80A69076 = "prm"; -SECTION_DEAD static char const* const stringBase_80A6907A = "timer"; -SECTION_DEAD static char const* const stringBase_80A69080 = "msgNo"; -#pragma pop - /* 80A661B4-80A66664 001F74 04B0+00 1/0 0/0 0/0 .text cutConversationInHotel__11daNpc_Len_cFi */ -void daNpc_Len_c::cutConversationInHotel(int param_0) { - // NONMATCHING +int daNpc_Len_c::cutConversationInHotel(int param_0) { + fopAc_ac_c* actor_p; + int rv = 0; + int iVar6 = -1; + int local_34 = 0; + int iVar5 = 0; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar6 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "timer"); + if (piVar1) { + local_34 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "msgNo"); + if (piVar1) { + iVar5 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar6) { + case 0: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + /* dSv_event_tmp_flag_c::T_0010 - General use - General use temporary flag (flow + * control) A */ + daNpcT_offTmpBit(0xB); + initTalk(mFlowNodeNo, NULL); + break; + case 2: + mEventTimer = local_34; + initTalk(mFlowNodeNo, NULL); + break; + case 3: + mJntAnm.lookNone(1); + break; + case 4: + break; + } + } + + int local_30[2] = {-1, -1}; + + switch (iVar6) { + case 0: + mJntAnm.lookPlayer(0); + if (mPlayerAngle != mCurAngle.y) { + step(mPlayerAngle, 17, 13, 15, 0); + } else { + rv = 1; + } + break; + case 1: + if (talkProc(NULL, FALSE, NULL, FALSE) && mFlow.checkEndFlow()) { + rv = 1; + } + break; + case 2: + actor_p = mActorMngr[0].getActorP(); + if (actor_p != NULL) { + mJntAnm.lookActor(actor_p, -40.0f, 0); + } + if (cLib_calcTimer(&mEventTimer) == 0 && home.angle.y == mCurAngle.y && + talkProc(NULL, FALSE, NULL, FALSE) && mFlow.checkEndFlow()) + { + rv = 1; + } + if (home.angle.y != mCurAngle.y && step(home.angle.y, 17, 13, 15, 0)) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + } + break; + case 3: + rv = 1; + break; + case 4: + mJntAnm.lookPlayer(0); + local_30[0] = iVar5; + if (talkProc(local_30, FALSE, NULL, FALSE)) { + if (iVar5 == 0) { + if (mFlow.checkEndFlow()) { + rv = 1; + } + } else { + rv = 1; + } + } + break; + } + + return rv; } /* 80A66664-80A668B8 002424 0254+00 1/0 0/0 0/0 .text cutHurry__11daNpc_Len_cFi */ -void daNpc_Len_c::cutHurry(int param_0) { - // NONMATCHING +int daNpc_Len_c::cutHurry(int param_0) { + int rv = 0; + int iVar5 = -1; + daTag_Push_c* push_tag_p; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar5 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar5) { + case 0: + push_tag_p = (daTag_Push_c*)field_0xba0.getActorP(); + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_9, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_8, -1.0f, 0, 0); + mJntAnm.lookNone(1); + push_tag_p->pushBackPlayer(0); + break; + case 1: + push_tag_p = (daTag_Push_c*)field_0xba0.getActorP(); + initTalk(push_tag_p->getFlowNodeNo(), NULL); + break; + } + } + + switch (iVar5) { + case 0: + if (mMotionSeqMngr.getStepNo() > 0) { + rv = 1; + } + break; + case 1: + if (talkProc(NULL, FALSE, NULL, FALSE) && mFlow.checkEndFlow()) { + field_0xba0.remove(); + rv = 1; + } + break; + } + + return rv; } /* 80A668B8-80A66C74 002678 03BC+00 1/0 0/0 0/0 .text cutTakeWoodStatue__11daNpc_Len_cFi */ -void daNpc_Len_c::cutTakeWoodStatue(int param_0) { - // NONMATCHING +int daNpc_Len_c::cutTakeWoodStatue(int param_0) { + fopAc_ac_c* actor_p; + int iVar7 = -1; + int local_34 = 0; + + int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "prm"); + if (piVar1) { + iVar7 = *piVar1; + } + + piVar1 = dComIfGp_evmng_getMyIntegerP(param_0, "timer"); + if (piVar1) { + local_34 = *piVar1; + } + + if (dComIfGp_getEventManager().getIsAddvance(param_0)) { + switch (iVar7) { + case 0: + actor_p = mActorMngr[1].getActorP(); + mJntAnm.lookPos(&actor_p->eyePos, 0); + break; + case 1: + actor_p = mActorMngr[2].getActorP(); + mJntAnm.lookPos(&actor_p->eyePos, 0); + setAngle(fopAcM_searchActorAngleY(this, actor_p)); + mEventTimer = local_34; + mHide = 1; + break; + case 2: + actor_p = mActorMngr[3].getActorP(); + mJntAnm.lookPos(&actor_p->eyePos, 0); + break; + case 3: + mHide = 1; + break; + case 4: + case 99: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, 0.0f, 1, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, 0.0f, 1, 0); + mJntAnm.lookNone(1); + setPos(home.pos); + setAngle(home.angle.y); + mHide = 0; + break; + case 5: + mHide = 0; + break; + } + } + + switch (iVar7) { + case 0: + case 2: + case 3: + case 4: + case 5: + case 99: + return 1; + case 1: + return 1; + } + + return 1; } /* 80A66C74-80A6736C 002A34 06F8+00 1/0 0/0 0/0 .text wait__11daNpc_Len_cFPv */ -void daNpc_Len_c::wait(void* param_0) { - // NONMATCHING +int daNpc_Len_c::wait(void* param_0) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + switch (mType) { + case TYPE_1: + if (getBitSW() != 0xFF && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_15, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_7, -1.0f, 0, 0); + } else { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_14, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_6, -1.0f, 0, 0); + } + break; + case TYPE_2: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + if (getBitSW() != 0xFF && !dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + setAngle(fopAcM_searchPlayerAngleY(this)); + } + break; + case TYPE_3: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_10, -1.0f, 0, 0); + break; + case TYPE_7: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_12, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_12, -1.0f, 0, 0); + break; + default: + 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_0xfee != 0) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + mSpeakEvent = true; + field_0xe33 = true; + } else { + switch (mType) { + case TYPE_1: + if (checkStartDemo13StbEvt(this, mpHIO->m.common.box_min_x, + mpHIO->m.common.box_min_y, mpHIO->m.common.box_min_z, + mpHIO->m.common.box_max_x, mpHIO->m.common.box_max_y, + mpHIO->m.common.box_max_z, mpHIO->m.common.box_offset)) + { + mEvtNo = 3; + field_0xfec = 1; + } + /* dSv_event_flag_c::M_027 - Cutscene - [cutscene: 13] kids in the church (beast + * eyes) */ + if (field_0xfec != 0 && daNpcT_chkEvtBit(0x3C) && !dComIfGp_event_runCheck()) { + field_0xfec = 0; + } + break; + case TYPE_2: + if (getBitSW() != 0xFF && !dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) { + mSpeakEvent = true; + field_0xe33 = true; + } + break; + } + } + if (!mStagger.checkStagger()) { + if (mType == TYPE_1) { + mJntAnm.lookNone(0); + if (getBitSW() != 0xFF && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this)) && + mMotionSeqMngr.getNo() != MOT_UNK_7) + { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_15, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_7, -1.0f, 0, 0); + } + } else { + if (mType == TYPE_3) { + mPlayerActorMngr.remove(); + } + if (mPlayerActorMngr.getActorP() != NULL && !mTwilight && + (mType != TYPE_4 && mType != TYPE_7 || home.angle.y == mCurAngle.y)) + { + 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, 17, 13, 15, 0)) { + mMode = 1; + } + } else { + setAngle(home.angle.y); + mMode = 1; + } + attention_info.flags = 0; + } else if (!mTwilight) { + srchPlayerActor(); + } + } + } + mJntAnm.getMode(); + switch (mType) { + case TYPE_3: + attention_info.flags = 0; + break; + } + } + break; + case 3: + break; + } + return 1; } -/* ############################################################################################## */ -/* 80A68FD8-80A68FDC 000134 0004+00 0/1 0/0 0/0 .rodata @5702 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5702 = 11.0f / 20.0f; -COMPILER_STRIP_GATE(0x80A68FD8, &lit_5702); -#pragma pop - /* 80A6736C-80A67794 00312C 0428+00 1/0 0/0 0/0 .text patrol__11daNpc_Len_cFPv */ -void daNpc_Len_c::patrol(void* param_0) { - // NONMATCHING +int daNpc_Len_c::patrol(void* param_0) { + cXyz cStack_48; + + int sVar1 = mpHIO->m.field_0x8c; + int sVar2 = mpHIO->m.field_0x8e; + + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + field_0xfe8 = 0; + field_0xfe4 = 0; + mMode = 2; + } + case 2: + if (!mStagger.checkStagger()) { + int iVar3 = mPath.getDstPosH(current.pos, &cStack_48, mPath.getNumPnts(), 4); + + BOOL bVar8 = iVar3 != 0 || field_0xfe4 == 0; + + if (bVar8) { + speedF = 0.0f; + } else { + current.angle.y = cLib_targetAngleY(¤t.pos, &cStack_48); + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y, 8, 0x400); + mCurAngle.y = shape_angle.y; + cLib_chaseF(&speedF, mpHIO->m.field_0x90, 0.55f); + } + + if (bVar8) { + if (cM3d_IsZero(speedF)) { + if (field_0xfe4 == 0) { + if (field_0xfe8 == 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + field_0xfe8 = cLib_getRndValue((int)(sVar2 / 2), (int)sVar2); + } + } else { + home.angle.y = 0x4000; + if (home.angle.y == mCurAngle.y) { + mPlayerActorMngr.remove(); + } else { + step(home.angle.y, 17, 13, 15, 0); + } + } + } + } + + mJntAnm.lookAround(0, 0x5A); + + if (mPlayerActorMngr.getActorP() != NULL && !mTwilight) { + if (chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) { + mJntAnm.lookPlayer(0); + } + if (!srchPlayerActor() && home.angle.y == mCurAngle.y) { + mMode = 1; + } + } else if (!mTwilight) { + srchPlayerActor(); + } + + mJntAnm.getMode(); + + if (field_0xfe4 == 0) { + if (cLib_calcTimer(&field_0xfe8) == 0) { + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_9, -1.0f, 0, 0); + field_0xfe4 = cLib_getRndValue((int)(sVar1 / 2), (int)sVar1); + } + } else { + cLib_calcTimer(&field_0xfe4); + field_0xfe8 = 0; + } + } + break; + case 3: + break; + } + + return 1; } /* 80A67794-80A67AA0 003554 030C+00 3/0 0/0 0/0 .text talk__11daNpc_Len_cFPv */ -void daNpc_Len_c::talk(void* param_0) { - // NONMATCHING +int daNpc_Len_c::talk(void* param_0) { + switch (mMode) { + case 0: + case 1: + if (!mStagger.checkStagger()) { + if (field_0xfee == 0) { + /* dSv_event_tmp_flag_c::T_0010 - General use - General use temporary flag (flow + * control) A */ + daNpcT_offTmpBit(0xB); + } + if (mPreItemNo == fpcNm_ITEM_WOOD_STATUE) { + initTalk(0x28, NULL); + } else { + initTalk(mFlowNodeNo, NULL); + } + switch (mType) { + case TYPE_7: + mFaceMotionSeqMngr.setNo(FACE_MOT_UNK_17, -1.0f, 0, 0); + mMotionSeqMngr.setNo(MOT_UNK_0, -1.0f, 0, 0); + break; + } + mMode = 2; + } + case 2: + if (!mStagger.checkStagger()) { + if (mTwilight || mPlayerAngle == mCurAngle.y || mType == 0 || mType == 2) { + if (talkProc(NULL, FALSE, NULL, FALSE)) { + int local_18; + int evt_id = mFlow.getEventId(&local_18); + field_0xfee = 0; + switch (evt_id) { + case 1: + if (mItemPartnerId == -1) { + mItemPartnerId = fopAcM_createItemForPresentDemo(¤t.pos, local_18, + 0, -1, -1, 0, 0); + } + if (fopAcM_IsExecuting(mItemPartnerId)) { + mEvtNo = 1; + field_0xfee = 1; + evtChange(); + } + break; + default: + if (mFlow.checkEndFlow()) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = 3; + } + } + } + mJntAnm.lookPlayer(0); + if (mTwilight) { + mJntAnm.lookNone(0); + } + } else { + mJntAnm.lookPlayer(0); + step(mPlayerAngle, 17, 13, 15, 0); + } + } + break; + case 3: + break; + } + + return 0; } /* 80A67AA0-80A67AC0 003860 0020+00 1/0 0/0 0/0 .text daNpc_Len_Create__FPv */ -static void daNpc_Len_Create(void* param_0) { - // NONMATCHING +static int daNpc_Len_Create(void* i_this) { + return static_cast(i_this)->create(); } /* 80A67AC0-80A67AE0 003880 0020+00 1/0 0/0 0/0 .text daNpc_Len_Delete__FPv */ -static void daNpc_Len_Delete(void* param_0) { - // NONMATCHING +static int daNpc_Len_Delete(void* i_this) { + return static_cast(i_this)->Delete(); } /* 80A67AE0-80A67B00 0038A0 0020+00 1/0 0/0 0/0 .text daNpc_Len_Execute__FPv */ -static void daNpc_Len_Execute(void* param_0) { - // NONMATCHING +static int daNpc_Len_Execute(void* i_this) { + return static_cast(i_this)->Execute(); } /* 80A67B00-80A67B20 0038C0 0020+00 1/0 0/0 0/0 .text daNpc_Len_Draw__FPv */ -static void daNpc_Len_Draw(void* param_0) { - // NONMATCHING +static int daNpc_Len_Draw(void* i_this) { + return static_cast(i_this)->Draw(); } /* 80A67B20-80A67B28 0038E0 0008+00 1/0 0/0 0/0 .text daNpc_Len_IsDelete__FPv */ -static bool daNpc_Len_IsDelete(void* param_0) { - return true; +static int daNpc_Len_IsDelete(void* i_this) { + return 1; } -/* 80A67B28-80A67B58 0038E8 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* 80A67B58-80A67BA0 003918 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80A67BA0-80A67F28 003960 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80A67F28-80A67F64 003CE8 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80A67F64-80A67FA0 003D24 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80A67FA0-80A67FE8 003D60 0048+00 3/2 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() { -extern "C" void __dt__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80A67FE8-80A68030 003DA8 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 -} - -/* 80A68030-80A6806C 003DF0 003C+00 1/1 0/0 0/0 .text __ct__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::daNpcT_ActorMngr_c() { -extern "C" void __ct__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80A6806C-80A680B4 003E2C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80A680B4-80A680FC 003E74 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80A680FC-80A68500 003EBC 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 -} - -/* 80A68500-80A68504 0042C0 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80A68504-80A68600 0042C4 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 -} - -/* 80A68600-80A68604 0043C0 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80A68604-80A6864C 0043C4 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 -} - -/* 80A6864C-80A686BC 00440C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80A686BC-80A68718 00447C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80A68718-80A68788 0044D8 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80A68788-80A687D0 004548 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80A687D0-80A688EC 004590 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 -} - -/* 80A688EC-80A68AF4 0046AC 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 -} - -/* 80A68AF4-80A68AF8 0048B4 0004+00 1/0 0/0 0/0 .text ctrlSubFaceMotion__8daNpcT_cFi */ -// void daNpcT_c::ctrlSubFaceMotion(int param_0) { -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi() { - /* empty function */ -} - -/* 80A68AF8-80A68B00 0048B8 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80A68B00-80A68B08 0048C0 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80A68B08-80A68B10 0048C8 0008+00 1/0 0/0 0/0 .text evtEndProc__8daNpcT_cFv */ -// bool daNpcT_c::evtEndProc() { -extern "C" bool evtEndProc__8daNpcT_cFv() { - return true; -} - -/* 80A68B14-80A68B2C 0048D4 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80A68B2C-80A68B30 0048EC 0004+00 1/0 0/0 0/0 .text drawOtherMdl__8daNpcT_cFv */ -// void daNpcT_c::drawOtherMdl() { -extern "C" void drawOtherMdl__8daNpcT_cFv() { - /* empty function */ -} - -/* 80A68B30-80A68B34 0048F0 0004+00 1/0 0/0 0/0 .text drawGhost__8daNpcT_cFv */ -// void daNpcT_c::drawGhost() { -extern "C" void drawGhost__8daNpcT_cFv() { - /* empty function */ -} - -/* 80A68B34-80A68B3C 0048F4 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; -} - -/* 80A68B3C-80A68B44 0048FC 0008+00 1/0 0/0 0/0 .text afterSetMotionAnm__8daNpcT_cFiifi - */ -// bool daNpcT_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) { -extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi() { - return true; -} - -/* 80A68B44-80A68B74 004904 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 -} - -/* 80A68B74-80A68BA4 004934 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 -} - -/* 80A68BA4-80A68BA8 004964 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 */ -} - -/* 80A68BA8-80A68BAC 004968 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 */ -} - -/* 80A68BAC-80A68BB0 00496C 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 */ -} - -/* 80A68BB0-80A68BB4 004970 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 */ -} - -/* 80A68BB4-80A68BD0 004974 001C+00 2/2 0/0 0/0 .text cLib_calcTimer__FPi */ -extern "C" void func_80A68BB4(void* _this, int* param_0) { - // NONMATCHING -} - -/* 80A68BD0-80A68C4C 004990 007C+00 1/1 0/0 0/0 .text cLib_getRndValue__Fii */ -extern "C" void func_80A68BD0(void* _this, int param_0, int param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80A69A40-80A69A4C 0009B8 000C+00 2/2 0/0 0/0 .data __vt__17daNpc_Len_Param_c */ -SECTION_DATA extern void* __vt__17daNpc_Len_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daNpc_Len_Param_cFv, +/* 80A69884-80A698A4 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Len_MethodTable */ +static actor_method_class daNpc_Len_MethodTable = { + (process_method_func)daNpc_Len_Create, (process_method_func)daNpc_Len_Delete, + (process_method_func)daNpc_Len_Execute, (process_method_func)daNpc_Len_IsDelete, + (process_method_func)daNpc_Len_Draw, }; -/* 80A69A58-80A69A64 000008 000C+00 1/1 0/0 0/0 .bss @3848 */ -static u8 lit_3848[12]; - -/* 80A69A64-80A69A68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 80A68C4C-80A68D00 004A0C 00B4+00 0/0 1/0 0/0 .text __sinit_d_a_npc_len_cpp */ -void __sinit_d_a_npc_len_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80A68C4C, __sinit_d_a_npc_len_cpp); -#pragma pop - -/* 80A68D00-80A68DE0 004AC0 00E0+00 1/1 0/0 0/0 .text - * __ct__11daNpc_Len_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_Len_c::daNpc_Len_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 -} - -/* 80A68DE0-80A68DE8 004BA0 0008+00 1/0 0/0 0/0 .text getEyeballMaterialNo__11daNpc_Len_cFv */ -u16 daNpc_Len_c::getEyeballMaterialNo() { - return true; -} - -/* 80A68DE8-80A68DF0 004BA8 0008+00 1/0 0/0 0/0 .text getHeadJointNo__11daNpc_Len_cFv */ -s32 daNpc_Len_c::getHeadJointNo() { - return 4; -} - -/* 80A68DF0-80A68DF8 004BB0 0008+00 1/0 0/0 0/0 .text getNeckJointNo__11daNpc_Len_cFv */ -s32 daNpc_Len_c::getNeckJointNo() { - return 3; -} - -/* 80A68DF8-80A68E00 004BB8 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__11daNpc_Len_cFv - */ -bool daNpc_Len_c::getBackboneJointNo() { - return true; -} - -/* 80A68E00-80A68E10 004BC0 0010+00 1/0 0/0 0/0 .text checkChangeJoint__11daNpc_Len_cFi - */ -void daNpc_Len_c::checkChangeJoint(int param_0) { - // NONMATCHING -} - -/* 80A68E10-80A68E20 004BD0 0010+00 1/0 0/0 0/0 .text checkRemoveJoint__11daNpc_Len_cFi - */ -void daNpc_Len_c::checkRemoveJoint(int param_0) { - // NONMATCHING -} - -/* 80A68E20-80A68E28 004BE0 0008+00 1/0 0/0 0/0 .text getFootLJointNo__11daNpc_Len_cFv */ -s32 daNpc_Len_c::getFootLJointNo() { - return 29; -} - -/* 80A68E28-80A68E30 004BE8 0008+00 1/0 0/0 0/0 .text getFootRJointNo__11daNpc_Len_cFv */ -s32 daNpc_Len_c::getFootRJointNo() { - return 32; -} - -/* 80A68E30-80A68E38 004BF0 0008+00 1/0 0/0 0/0 .text chkXYItems__11daNpc_Len_cFv */ -bool daNpc_Len_c::chkXYItems() { - return true; -} - -/* 80A68E38-80A68E80 004BF8 0048+00 2/1 0/0 0/0 .text __dt__17daNpc_Len_Param_cFv */ -daNpc_Len_Param_c::~daNpc_Len_Param_c() { - // NONMATCHING -} - -/* 80A68E80-80A68E88 004C40 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80A68E80() { - // NONMATCHING -} - -/* 80A68E88-80A68E90 004C48 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80A68E88() { - // NONMATCHING -} - -/* 80A68FDC-80A68FDC 000138 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80A698A4-80A698D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_LEN */ +extern actor_process_profile_definition g_profile_NPC_LEN = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_LEN, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_Len_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 337, // mPriority + &daNpc_Len_MethodTable, // sub_method + 0x00040107, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/d_bg_w_kcol.cpp b/src/d/d_bg_w_kcol.cpp index 208eb36eaf9..b28a338ffa4 100644 --- a/src/d/d_bg_w_kcol.cpp +++ b/src/d/d_bg_w_kcol.cpp @@ -1497,15 +1497,7 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { pwi->SetWallAngleY(cir_index_8c, sp_14); sp_10 = true; pwi->SetWallHit(); - } else { - if (sp_30 > sp_3c) { - break; - } - - if (fabsf(sp_30 - sp_3c) < 0.008f) { - break; - } - + } else if (!(sp_30 > sp_3c || fabsf(sp_30 - sp_3c) < 0.008f)) { f32 sp_1c; f32 sp_18; JUT_ASSERT(0x7e2, !(fpclassify(cx1_58) == FP_QNAN));