diff --git a/configure.py b/configure.py index 01aeeae979a..5ad52dad9a3 100755 --- a/configure.py +++ b/configure.py @@ -1920,7 +1920,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_shoe", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop0"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop_maro"), - ActorRel(NonMatching, "d_a_npc_sola"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sola"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_soldierA", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_soldierB"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sq"), diff --git a/include/d/actor/d_a_npc_sola.h b/include/d/actor/d_a_npc_sola.h index ac561bbd2f0..9178292833b 100644 --- a/include/d/actor/d_a_npc_sola.h +++ b/include/d/actor/d_a_npc_sola.h @@ -11,59 +11,102 @@ * @details * */ -class daNpc_solA_c : public fopAc_ac_c { + +class daNpc_solA_c : public daNpcT_c { public: + typedef int (daNpc_solA_c::*cutFunc)(int); + typedef int (daNpc_solA_c::*actionFunc)(void*); + + enum Joint { + /* 0x00 */ JNT_CENTER, + /* 0x01 */ JNT_BACKBONE1, + /* 0x02 */ JNT_BACKBONE2, + /* 0x03 */ JNT_NECK, + /* 0x04 */ JNT_HEAD, + /* 0x05 */ JNT_SHOULDERL, + /* 0x06 */ JNT_ARM1L, + /* 0x07 */ JNT_ARM2L, + /* 0x08 */ JNT_HANDL, + /* 0x09 */ JNT_FINGERL, + /* 0x0A */ JNT_THUMBL, + /* 0x0B */ JNT_SHOULDERR, + /* 0x0C */ JNT_ARM1R, + /* 0x0D */ JNT_ARM2R, + /* 0x0E */ JNT_HANDR, + /* 0x0F */ JNT_FINGERR, + /* 0x10 */ JNT_THUMBR, + /* 0x11 */ JNT_WAIST, + /* 0x12 */ JNT_LEG1L, + /* 0x13 */ JNT_LEG2L, + /* 0x14 */ JNT_FOOTL, + /* 0x15 */ JNT_LEG1R, + /* 0x16 */ JNT_LEG2R, + /* 0x17 */ JNT_FOOTR, + /* 0x18 */ JNT_SAYA, + }; + /* 80AECBAC */ ~daNpc_solA_c(); - /* 80AECCD0 */ void create(); - /* 80AECF58 */ void CreateHeap(); - /* 80AED0F8 */ void Delete(); - /* 80AED12C */ void Execute(); + /* 80AECCD0 */ int create(); + /* 80AECF58 */ int CreateHeap(); + /* 80AED0F8 */ int Delete(); + /* 80AED12C */ int Execute(); /* 80AED14C */ void Draw(); - /* 80AED1E8 */ void createHeapCallBack(fopAc_ac_c*); - /* 80AED208 */ void ctrlJointCallBack(J3DJoint*, int); + /* 80AED1E8 */ static BOOL createHeapCallBack(fopAc_ac_c*); + /* 80AED208 */ static BOOL ctrlJointCallBack(J3DJoint*, int); /* 80AED260 */ bool getType(); - /* 80AED268 */ void getFlowNodeNo(); - /* 80AED284 */ void isDelete(); + /* 80AED268 */ int getFlowNodeNo(); + /* 80AED284 */ int isDelete(); /* 80AED294 */ void reset(); /* 80AED3B8 */ void setParam(); /* 80AED4A4 */ void setAfterTalkMotion(); /* 80AED504 */ void srchActors(); - /* 80AED508 */ void evtTalk(); - /* 80AED608 */ void evtCutProc(); + /* 80AED508 */ BOOL evtTalk(); + /* 80AED608 */ BOOL evtCutProc(); /* 80AED6D0 */ void action(); /* 80AED758 */ void beforeMove(); /* 80AED7D0 */ void setAttnPos(); /* 80AED9DC */ void setCollision(); - /* 80AEDABC */ bool drawDbgInfo(); + /* 80AEDABC */ int drawDbgInfo(); /* 80AEDAC4 */ void drawOtherMdl(); - /* 80AEDAC8 */ void selectAction(); - /* 80AEDB10 */ void chkAction(int (daNpc_solA_c::*)(void*)); - /* 80AEDB3C */ void setAction(int (daNpc_solA_c::*)(void*)); - /* 80AEDBE4 */ void wait(void*); - /* 80AEDD60 */ void talk(void*); - /* 80AEEF40 */ daNpc_solA_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**); - /* 80AEF07C */ s32 getHeadJointNo(); - /* 80AEF084 */ s32 getNeckJointNo(); - /* 80AEF08C */ bool getBackboneJointNo(); + /* 80AEDAC8 */ int selectAction(); + /* 80AEDB10 */ int chkAction(int (daNpc_solA_c::*)(void*)); + /* 80AEDB3C */ int setAction(int (daNpc_solA_c::*)(void*)); + /* 80AEDBE4 */ int wait(void*); + /* 80AEDD60 */ int talk(void*); + /* 80AEEF40 */ daNpc_solA_c(daNpcT_faceMotionAnmData_c const* param_1, + daNpcT_motionAnmData_c const* param_2, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, + int param_4, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, + int param_6, daNpcT_evtData_c const* param_7, char** param_8) + : daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) {} + /* 80AEF084 */ s32 getHeadJointNo() { return JNT_HEAD; } + /* 80AEF084 */ s32 getNeckJointNo() { return JNT_NECK; } + /* 80AEF094 */ s32 getBackboneJointNo() { return JNT_BACKBONE1; } static char* mCutNameList[1]; - static u8 mCutList[12]; + static cutFunc mCutList[1]; private: - /* 0x568 */ u8 field_0x568[0xfa0 - 0x568]; + /* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40]; + /* 0xE44 */ dCcD_Cyl mCyl; + /* 0xF80 */ u8 field_0xf80; + /* 0xF84 */ actionFunc mNextAction; + /* 0xF90 */ actionFunc mAction; + /* 0xF9c */ u8 field_0xf9c; }; STATIC_ASSERT(sizeof(daNpc_solA_c) == 0xfa0); -class daNpc_solA_Param_c { -public: - /* 80AEF094 */ ~daNpc_solA_Param_c(); - - static u8 const m[140]; +struct daNpc_solA_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; }; +class daNpc_solA_Param_c { +public: + /* 80AEF094 */ virtual ~daNpc_solA_Param_c() {} + + static daNpc_solA_HIOParam const m; +}; #endif /* D_A_NPC_SOLA_H */ diff --git a/src/d/actor/d_a_npc_sola.cpp b/src/d/actor/d_a_npc_sola.cpp index 3545f3f1e98..0ab4722b887 100644 --- a/src/d/actor/d_a_npc_sola.cpp +++ b/src/d/actor/d_a_npc_sola.cpp @@ -1,234 +1,27 @@ /** * @file d_a_npc_sola.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_sola.h" -#include "dol2asm.h" -// -// Forward References: -// +enum Bans_RES_File_ID { + /* BCK */ + /* 0x04 */ BCK_SOLA_WAIT_A = 0x4, -extern "C" void __dt__12daNpc_solA_cFv(); -extern "C" void create__12daNpc_solA_cFv(); -extern "C" void CreateHeap__12daNpc_solA_cFv(); -extern "C" void Delete__12daNpc_solA_cFv(); -extern "C" void Execute__12daNpc_solA_cFv(); -extern "C" void Draw__12daNpc_solA_cFv(); -extern "C" void createHeapCallBack__12daNpc_solA_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__12daNpc_solA_cFP8J3DJointi(); -extern "C" bool getType__12daNpc_solA_cFv(); -extern "C" void getFlowNodeNo__12daNpc_solA_cFv(); -extern "C" void isDelete__12daNpc_solA_cFv(); -extern "C" void reset__12daNpc_solA_cFv(); -extern "C" void setParam__12daNpc_solA_cFv(); -extern "C" void setAfterTalkMotion__12daNpc_solA_cFv(); -extern "C" void srchActors__12daNpc_solA_cFv(); -extern "C" void evtTalk__12daNpc_solA_cFv(); -extern "C" void evtCutProc__12daNpc_solA_cFv(); -extern "C" void action__12daNpc_solA_cFv(); -extern "C" void beforeMove__12daNpc_solA_cFv(); -extern "C" void setAttnPos__12daNpc_solA_cFv(); -extern "C" void setCollision__12daNpc_solA_cFv(); -extern "C" bool drawDbgInfo__12daNpc_solA_cFv(); -extern "C" void drawOtherMdl__12daNpc_solA_cFv(); -extern "C" void selectAction__12daNpc_solA_cFv(); -extern "C" void chkAction__12daNpc_solA_cFM12daNpc_solA_cFPCvPvPv_i(); -extern "C" void setAction__12daNpc_solA_cFM12daNpc_solA_cFPCvPvPv_i(); -extern "C" void wait__12daNpc_solA_cFPv(); -extern "C" void talk__12daNpc_solA_cFPv(); -extern "C" static void daNpc_solA_Create__FPv(); -extern "C" static void daNpc_solA_Delete__FPv(); -extern "C" static void daNpc_solA_Execute__FPv(); -extern "C" static void daNpc_solA_Draw__FPv(); -extern "C" static bool daNpc_solA_IsDelete__FPv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__8daNpcT_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void -__ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__15daNpcT_JntAnm_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" u16 getEyeballMaterialNo__8daNpcT_cFv(); -extern "C" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs(); -extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs(); -extern "C" void ctrlSubFaceMotion__8daNpcT_cFi(); -extern "C" bool checkChangeJoint__8daNpcT_cFi(); -extern "C" bool checkRemoveJoint__8daNpcT_cFi(); -extern "C" s32 getFootLJointNo__8daNpcT_cFv(); -extern "C" s32 getFootRJointNo__8daNpcT_cFv(); -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv(); -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv(); -extern "C" void afterJntAnm__8daNpcT_cFi(); -extern "C" bool checkChangeEvt__8daNpcT_cFv(); -extern "C" bool evtEndProc__8daNpcT_cFv(); -extern "C" void afterMoved__8daNpcT_cFv(); -extern "C" bool chkXYItems__8daNpcT_cFv(); -extern "C" void decTmr__8daNpcT_cFv(); -extern "C" void drawGhost__8daNpcT_cFv(); -extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi(); -extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi(); -extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c(); -extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c(); -extern "C" void changeAnm__8daNpcT_cFPiPi(); -extern "C" void changeBck__8daNpcT_cFPiPi(); -extern "C" void changeBtp__8daNpcT_cFPiPi(); -extern "C" void changeBtk__8daNpcT_cFPiPi(); -extern "C" void __sinit_d_a_npc_sola_cpp(); -extern "C" void -__ct__12daNpc_solA_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" s32 getHeadJointNo__12daNpc_solA_cFv(); -extern "C" s32 getNeckJointNo__12daNpc_solA_cFv(); -extern "C" bool getBackboneJointNo__12daNpc_solA_cFv(); -extern "C" void __dt__18daNpc_solA_Param_cFv(); -extern "C" static void func_80AEF0DC(); -extern "C" static void func_80AEF0E4(); -extern "C" u8 const m__18daNpc_solA_Param_c[140]; -extern "C" extern char const* const d_a_npc_sola__stringBase0; -extern "C" void* mCutNameList__12daNpc_solA_c; -extern "C" u8 mCutList__12daNpc_solA_c[12]; - -// -// External References: -// - -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 fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWallR__12dBgS_AcchCirFf(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void initialize__18daNpcT_ActorMngr_cFv(); -extern "C" void entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c(); -extern "C" void remove__18daNpcT_ActorMngr_cFv(); -extern "C" void initialize__15daNpcT_MatAnm_cFv(); -extern "C" void initialize__22daNpcT_MotionSeqMngr_cFv(); -extern "C" void initialize__15daNpcT_JntAnm_cFv(); -extern "C" void setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz(); -extern "C" void calcJntRad__15daNpcT_JntAnm_cFfff(); -extern "C" void 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 setAngle__8daNpcT_cFs(); -extern "C" void srchPlayerActor__8daNpcT_cFv(); -extern "C" void step__8daNpcT_cFsiiii(); -extern "C" void initTalk__8daNpcT_cFiPP10fopAc_ac_c(); -extern "C" void talkProc__8daNpcT_cFPiiPP10fopAc_ac_ci(); -extern "C" void daNpcT_getDistTableIdx__Fii(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void __dt__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_cmpr(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" u8 mCcDCyl__8daNpcT_c[68]; -extern "C" extern void* __vt__8daNpcT_c[49]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80AEF1E0-80AEF1E0 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AEF1E0 = ""; -SECTION_DEAD static char const* const stringBase_80AEF1E1 = "NO_RESPONSE"; -SECTION_DEAD static char const* const stringBase_80AEF1ED = "solA"; -#pragma pop + /* BMDE */ + /* 0x07 */ BMDR_SOLA = 0x7, +}; +enum RES_Name { + /* 0x0 */ NONE, + /* 0x1 */ SOLA, +}; /* 80AEF214-80AEF21C 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */ -SECTION_DATA static u8 l_bmdData[8] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, +static int l_bmdData[1][2] = { + {BMDR_SOLA, SOLA}, }; /* 80AEF21C-80AEF22C -00001 0010+00 0/1 0/0 0/0 .data l_evtList */ @@ -244,350 +37,180 @@ static char* l_resNameList[2] = { }; /* 80AEF234-80AEF238 000040 0002+02 1/0 0/0 0/0 .data l_loadResPtrn0 */ -SECTION_DATA static u16 l_loadResPtrn0[1 + 1 /* padding */] = { - 0x01FF, - /* padding */ - 0x0000, -}; +static s8 l_loadResPtrn0[2] = {1, -1}; /* 80AEF238-80AEF23C -00001 0004+00 1/2 0/0 0/0 .data l_loadResPtrnList */ -SECTION_DATA static void* l_loadResPtrnList = (void*)&l_loadResPtrn0; +static s8* l_loadResPtrnList[1] = {l_loadResPtrn0}; /* 80AEF23C-80AEF258 000048 001C+00 0/1 0/0 0/0 .data l_faceMotionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionAnmData[28] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[1] = { + {-1, J3DFrameCtrl::EMode_NONE, NONE, -1, J3DFrameCtrl::EMode_NONE, NONE, FALSE}, }; -#pragma pop /* 80AEF258-80AEF274 000064 001C+00 0/1 0/0 0/0 .data l_motionAnmData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionAnmData[28] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpcT_motionAnmData_c l_motionAnmData[1] = { + {BCK_SOLA_WAIT_A, J3DFrameCtrl::EMode_LOOP, SOLA, -1, J3DFrameCtrl::EMode_NONE, NONE, 0, 0}, }; -#pragma pop /* 80AEF274-80AEF284 000080 0010+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_faceMotionSequenceData[16] = { - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[4] = { + {0, -1, 0}, + {-1, 0, 0}, + {-1, 0, 0}, + {-1, 0, 0}, }; -#pragma pop /* 80AEF284-80AEF294 000090 0010+00 0/1 0/0 0/0 .data l_motionSequenceData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_motionSequenceData[16] = { - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, +static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[4] = { + {0, -1, 0}, + {-1, 0, 0}, + {-1, 0, 0}, + {-1, 0, 0}, }; -#pragma pop /* 80AEF294-80AEF298 -00001 0004+00 1/1 0/0 0/0 .data mCutNameList__12daNpc_solA_c */ char* daNpc_solA_c::mCutNameList[1] = {""}; /* 80AEF298-80AEF2A4 0000A4 000C+00 2/2 0/0 0/0 .data mCutList__12daNpc_solA_c */ -SECTION_DATA u8 daNpc_solA_c::mCutList[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daNpc_solA_c::cutFunc daNpc_solA_c::mCutList[1] = { + NULL, }; -/* 80AEF2A4-80AEF2B0 -00001 000C+00 1/1 0/0 0/0 .data @4578 */ -SECTION_DATA static void* lit_4578[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__12daNpc_solA_cFPv, -}; - -/* 80AEF2B0-80AEF2BC -00001 000C+00 1/1 0/0 0/0 .data @4588 */ -SECTION_DATA static void* lit_4588[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__12daNpc_solA_cFPv, -}; - -/* 80AEF2BC-80AEF2C8 -00001 000C+00 1/1 0/0 0/0 .data @4786 */ -SECTION_DATA static void* lit_4786[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__12daNpc_solA_cFPv, -}; - -/* 80AEF2C8-80AEF2E8 -00001 0020+00 1/0 0/0 0/0 .data daNpc_solA_MethodTable */ -static actor_method_class daNpc_solA_MethodTable = { - (process_method_func)daNpc_solA_Create__FPv, - (process_method_func)daNpc_solA_Delete__FPv, - (process_method_func)daNpc_solA_Execute__FPv, - (process_method_func)daNpc_solA_IsDelete__FPv, - (process_method_func)daNpc_solA_Draw__FPv, -}; - -/* 80AEF2E8-80AEF318 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SOLA */ -extern actor_process_profile_definition g_profile_NPC_SOLA = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_SOLA, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpc_solA_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 366, // mPriority - &daNpc_solA_MethodTable, // sub_method - 0x00044107, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80AEF318-80AEF324 000124 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, -}; - -/* 80AEF324-80AEF348 000130 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_80AEF0E4, - (void*)NULL, - (void*)NULL, - (void*)func_80AEF0DC, -}; - -/* 80AEF348-80AEF354 000154 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, -}; - -/* 80AEF354-80AEF360 000160 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, -}; - -/* 80AEF360-80AEF36C 00016C 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, -}; - -/* 80AEF36C-80AEF378 000178 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, -}; - -/* 80AEF378-80AEF384 000184 000C+00 4/4 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcT_ActorMngr_cFv, -}; - -/* 80AEF384-80AEF390 000190 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, -}; - -/* 80AEF390-80AEF39C 00019C 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, -}; - -/* 80AEF39C-80AEF3A8 0001A8 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, -}; - -/* 80AEF3A8-80AEF46C 0001B4 00C4+00 2/2 0/0 0/0 .data __vt__12daNpc_solA_c */ -SECTION_DATA extern void* __vt__12daNpc_solA_c[49] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daNpc_solA_cFv, - (void*)ctrlBtk__8daNpcT_cFv, - (void*)ctrlSubFaceMotion__8daNpcT_cFi, - (void*)checkChangeJoint__8daNpcT_cFi, - (void*)checkRemoveJoint__8daNpcT_cFi, - (void*)getBackboneJointNo__12daNpc_solA_cFv, - (void*)getNeckJointNo__12daNpc_solA_cFv, - (void*)getHeadJointNo__12daNpc_solA_cFv, - (void*)getFootLJointNo__8daNpcT_cFv, - (void*)getFootRJointNo__8daNpcT_cFv, - (void*)getEyeballLMaterialNo__8daNpcT_cFv, - (void*)getEyeballRMaterialNo__8daNpcT_cFv, - (void*)getEyeballMaterialNo__8daNpcT_cFv, - (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel, - (void*)afterJntAnm__8daNpcT_cFi, - (void*)setParam__12daNpc_solA_cFv, - (void*)checkChangeEvt__8daNpcT_cFv, - (void*)evtTalk__12daNpc_solA_cFv, - (void*)evtEndProc__8daNpcT_cFv, - (void*)evtCutProc__12daNpc_solA_cFv, - (void*)setAfterTalkMotion__12daNpc_solA_cFv, - (void*)evtProc__8daNpcT_cFv, - (void*)action__12daNpc_solA_cFv, - (void*)beforeMove__12daNpc_solA_cFv, - (void*)afterMoved__8daNpcT_cFv, - (void*)setAttnPos__12daNpc_solA_cFv, - (void*)setFootPos__8daNpcT_cFv, - (void*)setCollision__12daNpc_solA_cFv, - (void*)setFootPrtcl__8daNpcT_cFP4cXyzff, - (void*)checkCullDraw__8daNpcT_cFv, - (void*)twilight__8daNpcT_cFv, - (void*)chkXYItems__8daNpcT_cFv, - (void*)evtOrder__8daNpcT_cFv, - (void*)decTmr__8daNpcT_cFv, - (void*)clrParam__8daNpcT_cFv, - (void*)drawDbgInfo__12daNpc_solA_cFv, - (void*)drawOtherMdl__12daNpc_solA_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, -}; - -/* 80AECBAC-80AECCD0 0000EC 0124+00 1/0 0/0 0/0 .text __dt__12daNpc_solA_cFv */ daNpc_solA_c::~daNpc_solA_c() { - // NONMATCHING + if (heap != NULL) { + mpMorf[0]->stopZelAnime(); + } + + deleteRes(l_loadResPtrnList[field_0xf80], (const char**)l_resNameList); } -/* ############################################################################################## */ /* 80AEF100-80AEF18C 000000 008C+00 8/8 0/0 0/0 .rodata m__18daNpc_solA_Param_c */ -SECTION_RODATA u8 const daNpc_solA_Param_c::m[140] = { - 0x43, 0x5C, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daNpc_solA_HIOParam const daNpc_solA_Param_c::m = { + 220.0f, -3.0f, 1.0f, 400.0f, 255.0f, 200.0f, 35.0f, 30.0f, 0.0f, 0.0f, 10.0f, + -10.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6, + 0.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, false, false, + 4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, }; -COMPILER_STRIP_GATE(0x80AEF100, &daNpc_solA_Param_c::m); - -/* 80AEF18C-80AEF190 00008C 0004+00 0/1 0/0 0/0 .rodata @4138 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4138 = -300.0f; -COMPILER_STRIP_GATE(0x80AEF18C, &lit_4138); -#pragma pop - -/* 80AEF190-80AEF194 000090 0004+00 0/1 0/0 0/0 .rodata @4139 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4139 = -50.0f; -COMPILER_STRIP_GATE(0x80AEF190, &lit_4139); -#pragma pop - -/* 80AEF194-80AEF198 000094 0004+00 0/1 0/0 0/0 .rodata @4140 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4140 = 300.0f; -COMPILER_STRIP_GATE(0x80AEF194, &lit_4140); -#pragma pop - -/* 80AEF198-80AEF19C 000098 0004+00 0/1 0/0 0/0 .rodata @4141 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4141 = 450.0f; -COMPILER_STRIP_GATE(0x80AEF198, &lit_4141); -#pragma pop /* 80AECCD0-80AECF58 000210 0288+00 1/1 0/0 0/0 .text create__12daNpc_solA_cFv */ -void daNpc_solA_c::create() { - // NONMATCHING +int daNpc_solA_c::create() { + daNpcT_ct(this, daNpc_solA_c, l_faceMotionAnmData, l_motionAnmData, l_faceMotionSequenceData, 4, + l_motionSequenceData, 4, l_evtList, l_resNameList); + + field_0xf80 = getType(); + mFlowNodeNo = getFlowNodeNo(); + mTwilight = false; + + int rv = loadRes(l_loadResPtrnList[field_0xf80], (const char**)l_resNameList); + if (rv == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0)) { + return cPhs_ERROR_e; + } + + if (isDelete()) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -300.0f, -50.0f, -300.0f, 300.0f, 450.0f, 300.0f); + mSound.init(¤t.pos, &eyePos, 3, 1); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + setEnvTevColor(); + setRoomNo(); + + mCcStts.Init(daNpc_solA_Param_c::m.common.weight, 0, this); + mCyl.Set(mCcDCyl); + mCyl.SetStts(&mCcStts); + mCyl.SetTgHitCallback(tgHitCallBack); + reset(); + mCreating = true; + Execute(); + mCreating = false; + } + + return rv; } -/* ############################################################################################## */ -/* 80AEF19C-80AEF1A0 00009C 0004+00 3/7 0/0 0/0 .rodata @4295 */ -SECTION_RODATA static u8 const lit_4295[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AEF19C, &lit_4295); - -/* 80AEF1A0-80AEF1A4 0000A0 0004+00 0/2 0/0 0/0 .rodata @4296 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4296 = 65536.0f; -COMPILER_STRIP_GATE(0x80AEF1A0, &lit_4296); -#pragma pop - -/* 80AEF1A4-80AEF1A8 0000A4 0004+00 0/3 0/0 0/0 .rodata @4297 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4297 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80AEF1A4, &lit_4297); -#pragma pop - -/* 80AEF1A8-80AEF1AC 0000A8 0004+00 2/4 0/0 0/0 .rodata @4436 */ -SECTION_RODATA static f32 const lit_4436 = 1.0f; -COMPILER_STRIP_GATE(0x80AEF1A8, &lit_4436); - /* 80AECF58-80AED0F8 000498 01A0+00 1/1 0/0 0/0 .text CreateHeap__12daNpc_solA_cFv */ -void daNpc_solA_c::CreateHeap() { - // NONMATCHING +int daNpc_solA_c::CreateHeap() { + J3DModel* model; + J3DModelData* mdlData_p; + enum XXX { x0 = 0, x1 = 1 }; + int bmd_get_idx = mTwilight == 1 ? x0 : x0; + int res_name_idx = l_bmdData[bmd_get_idx][1]; + int sp_0x2c = l_bmdData[bmd_get_idx][0]; + + mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNameList[res_name_idx], sp_0x2c); + + mpMorf[0] = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, + 0x11020284); + if (mpMorf[0] && mpMorf[0]->getModel() == NULL) { + mpMorf[0]->stopZelAnime(); + mpMorf[0] = NULL; + } + + if (mpMorf[0] == NULL) { + return 0; + } else { + model = mpMorf[0]->getModel(); + for (u16 jointNo = 0; jointNo < mdlData_p->getJointNum(); jointNo++) { + mdlData_p->getJointNodePointer(jointNo)->setCallBack(ctrlJointCallBack); + } + + model->setUserArea((uintptr_t)this); + if (setFaceMotionAnm(0, false) && setMotionAnm(0, 0.0f, FALSE)) { + return 1; + } + } + return 0; } /* 80AED0F8-80AED12C 000638 0034+00 1/1 0/0 0/0 .text Delete__12daNpc_solA_cFv */ -void daNpc_solA_c::Delete() { - // NONMATCHING +int daNpc_solA_c::Delete() { + fopAcM_GetID(this); + this->~daNpc_solA_c(); + return 1; } /* 80AED12C-80AED14C 00066C 0020+00 2/2 0/0 0/0 .text Execute__12daNpc_solA_cFv */ -void daNpc_solA_c::Execute() { - // NONMATCHING +int daNpc_solA_c::Execute() { + execute(); } -/* ############################################################################################## */ -/* 80AEF1AC-80AEF1B0 0000AC 0004+00 1/1 0/0 0/0 .rodata @4469 */ -SECTION_RODATA static f32 const lit_4469 = 100.0f; -COMPILER_STRIP_GATE(0x80AEF1AC, &lit_4469); - /* 80AED14C-80AED1E8 00068C 009C+00 1/1 0/0 0/0 .text Draw__12daNpc_solA_cFv */ void daNpc_solA_c::Draw() { - // NONMATCHING + if (mpMatAnm[0] != NULL) { + J3DModelData* mdlData_p = mpMorf[0]->getModel()->getModelData(); + mdlData_p->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]); + } + draw(FALSE, FALSE, daNpc_solA_Param_c::m.common.real_shadow_size, NULL, 100.0f, FALSE, FALSE, + FALSE); + return; } /* 80AED1E8-80AED208 000728 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__12daNpc_solA_cFP10fopAc_ac_c */ -void daNpc_solA_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +BOOL daNpc_solA_c::createHeapCallBack(fopAc_ac_c* a_this) { + return static_cast(a_this)->CreateHeap(); } /* 80AED208-80AED260 000748 0058+00 1/1 0/0 0/0 .text * ctrlJointCallBack__12daNpc_solA_cFP8J3DJointi */ -void daNpc_solA_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +BOOL daNpc_solA_c::ctrlJointCallBack(J3DJoint* i_joint, int param_1) { + daNpc_solA_c* i_this; + J3DModel* model; + if (param_1 == 0) { + model = j3dSys.getModel(); + i_this = (daNpc_solA_c*)model->getUserArea(); + if (i_this != NULL) { + i_this->ctrlJoint(i_joint, model); + } + } + return true; } /* 80AED260-80AED268 0007A0 0008+00 1/1 0/0 0/0 .text getType__12daNpc_solA_cFv */ @@ -596,33 +219,63 @@ bool daNpc_solA_c::getType() { } /* 80AED268-80AED284 0007A8 001C+00 1/1 0/0 0/0 .text getFlowNodeNo__12daNpc_solA_cFv */ -void daNpc_solA_c::getFlowNodeNo() { - // NONMATCHING +int daNpc_solA_c::getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; } /* 80AED284-80AED294 0007C4 0010+00 1/1 0/0 0/0 .text isDelete__12daNpc_solA_cFv */ -void daNpc_solA_c::isDelete() { - // NONMATCHING +int daNpc_solA_c::isDelete() { + return field_0xf80 ? 1 : 0; } /* 80AED294-80AED3B8 0007D4 0124+00 1/1 0/0 0/0 .text reset__12daNpc_solA_cFv */ void daNpc_solA_c::reset() { - // NONMATCHING + initialize(); + int size = (u8*)&field_0xf9c - (u8*)&mNextAction; + memset(&mNextAction, 0, size); + + if (mpMatAnm[0] != NULL) { + mpMatAnm[0]->initialize(); + } + + setAngle(home.angle.y); } /* 80AED3B8-80AED4A4 0008F8 00EC+00 1/0 0/0 0/0 .text setParam__12daNpc_solA_cFv */ void daNpc_solA_c::setParam() { - // NONMATCHING -} + selectAction(); + srchActors(); -/* ############################################################################################## */ -/* 80AEF1B0-80AEF1B4 0000B0 0004+00 2/2 0/0 0/0 .rodata @4568 */ -SECTION_RODATA static f32 const lit_4568 = -1.0f; -COMPILER_STRIP_GATE(0x80AEF1B0, &lit_4568); + s16 talk_distance = daNpc_solA_Param_c::m.common.talk_distance; + s16 talk_angle = daNpc_solA_Param_c::m.common.talk_angle; + + attention_info.distances[fopAc_attn_LOCK_e] = + daNpcT_getDistTableIdx(daNpc_solA_Param_c::m.common.attention_distance, + daNpc_solA_Param_c::m.common.attention_angle); + attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; + attention_info.distances[fopAc_attn_SPEAK_e] = + daNpcT_getDistTableIdx(talk_distance, talk_angle); + attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e; + + scale.set(daNpc_solA_Param_c::m.common.scale, daNpc_solA_Param_c::m.common.scale, + daNpc_solA_Param_c::m.common.scale); + mAcchCir.SetWallR(daNpc_solA_Param_c::m.common.width); + mAcchCir.SetWallH(daNpc_solA_Param_c::m.common.knee_length); + mCcStts.SetWeight(daNpc_solA_Param_c::m.common.weight); + mCylH = daNpc_solA_Param_c::m.common.height; + mWallR = daNpc_solA_Param_c::m.common.width; + gravity = daNpc_solA_Param_c::m.common.gravity; + mExpressionMorfFrame = daNpc_solA_Param_c::m.common.expression_morf_frame; + mMorfFrames = daNpc_solA_Param_c::m.common.morf_frame; +} /* 80AED4A4-80AED504 0009E4 0060+00 1/0 0/0 0/0 .text setAfterTalkMotion__12daNpc_solA_cFv */ void daNpc_solA_c::setAfterTalkMotion() { - // NONMATCHING + mFaceMotionSeqMngr.setNo(0, -1.0f, 0, 0); } /* 80AED504-80AED508 000A44 0004+00 1/1 0/0 0/0 .text srchActors__12daNpc_solA_cFv */ @@ -631,62 +284,105 @@ void daNpc_solA_c::srchActors() { } /* 80AED508-80AED608 000A48 0100+00 1/0 0/0 0/0 .text evtTalk__12daNpc_solA_cFv */ -void daNpc_solA_c::evtTalk() { - // NONMATCHING +BOOL daNpc_solA_c::evtTalk() { + if (chkAction(&daNpc_solA_c::talk)) { + (this->*(mAction))(NULL); + } else { + mPreItemNo = 0; + if (dComIfGp_event_chkTalkXY()) { + if (!dComIfGp_evmng_ChkPresentEnd()) { + return 1; + } + mEvtNo = 1; + evtChange(); + return 1; + } + setAction(&daNpc_solA_c::talk); + } + return 1; } /* 80AED608-80AED6D0 000B48 00C8+00 1/0 0/0 0/0 .text evtCutProc__12daNpc_solA_cFv */ -void daNpc_solA_c::evtCutProc() { - // NONMATCHING +BOOL daNpc_solA_c::evtCutProc() { + BOOL rv = 0; + int staffID = dComIfGp_getEventManager().getMyStaffId("solA", this, -1); + if (staffID != -1) { + mStaffId = staffID; + staffID = dComIfGp_getEventManager().getMyActIdx( + mStaffId, (char**)&daNpc_solA_c::mCutNameList, 1, 0, 0); + if ((this->*(mCutList[staffID]))(mStaffId)) { + dComIfGp_getEventManager().cutEnd(mStaffId); + } + rv = 1; + } + + return rv; } /* 80AED6D0-80AED758 000C10 0088+00 1/0 0/0 0/0 .text action__12daNpc_solA_cFv */ void daNpc_solA_c::action() { - // NONMATCHING + if (mNextAction != NULL) { + if (mAction == mNextAction) { + (this->*mAction)(NULL); + } else { + setAction(mNextAction); + } + } } /* 80AED758-80AED7D0 000C98 0078+00 1/0 0/0 0/0 .text beforeMove__12daNpc_solA_cFv */ void daNpc_solA_c::beforeMove() { - // NONMATCHING + if (checkHide() || mNoDraw) { + attention_info.flags = 0; + } } -/* ############################################################################################## */ -/* 80AEF1B4-80AEF1B8 0000B4 0004+00 0/1 0/0 0/0 .rodata @4683 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4683 = 30.0f; -COMPILER_STRIP_GATE(0x80AEF1B4, &lit_4683); -#pragma pop - -/* 80AEF1B8-80AEF1C0 0000B8 0004+04 0/1 0/0 0/0 .rodata @4684 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4684[1 + 1 /* padding */] = { - 0x38C90FDB, - /* padding */ - 0x00000000, -}; -COMPILER_STRIP_GATE(0x80AEF1B8, &lit_4684); -#pragma pop - -/* 80AEF1C0-80AEF1C8 0000C0 0008+00 1/3 0/0 0/0 .rodata @4686 */ -SECTION_RODATA static u8 const lit_4686[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AEF1C0, &lit_4686); - /* 80AED7D0-80AED9DC 000D10 020C+00 1/0 0/0 0/0 .text setAttnPos__12daNpc_solA_cFv */ void daNpc_solA_c::setAttnPos() { - // NONMATCHING + cXyz local_38(30.0f, 0.0f, 0.0f); + mJntAnm.setParam( + this, mpMorf[0]->getModel(), &local_38, getBackboneJointNo(), getNeckJointNo(), + getHeadJointNo(), daNpc_solA_Param_c::m.common.body_angleX_min, + daNpc_solA_Param_c::m.common.body_angleX_max, daNpc_solA_Param_c::m.common.body_angleY_min, + daNpc_solA_Param_c::m.common.body_angleY_max, daNpc_solA_Param_c::m.common.head_angleX_min, + daNpc_solA_Param_c::m.common.head_angleX_max, daNpc_solA_Param_c::m.common.head_angleY_min, + daNpc_solA_Param_c::m.common.head_angleY_max, + daNpc_solA_Param_c::m.common.neck_rotation_ratio, 0.0f, NULL); + + f32 fVar1 = cM_s2rad(mCurAngle.y - field_0xd7e.y); + mJntAnm.calcJntRad(0.2f, 1.0f, fVar1); + setMtx(); + mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo())); + mDoMtx_stack_c::multVec(&local_38, &eyePos); + mJntAnm.setEyeAngleX(eyePos, 1.0f, 0); + mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, FALSE, 1.0f, 0); + + attention_info.position = current.pos; + attention_info.position.y += daNpc_solA_Param_c::m.common.attention_offset; } /* 80AED9DC-80AEDABC 000F1C 00E0+00 1/0 0/0 0/0 .text setCollision__12daNpc_solA_cFv */ void daNpc_solA_c::setCollision() { - // NONMATCHING + cXyz pos; + if (!mHide) { + int prm = mTwilight == true ? 0x69 : 0x79; + mCyl.SetCoSPrm(prm); + + pos = current.pos; + f32 height = daNpc_solA_Param_c::m.common.height; + f32 width = daNpc_solA_Param_c::m.common.width; + mCyl.SetH(height); + mCyl.SetR(width); + mCyl.SetC(pos); + dComIfG_Ccsp()->Set(&mCyl); + } + + mCyl.ClrCoHit(); + mCyl.ClrTgHit(); } /* 80AEDABC-80AEDAC4 000FFC 0008+00 1/0 0/0 0/0 .text drawDbgInfo__12daNpc_solA_cFv */ -bool daNpc_solA_c::drawDbgInfo() { +int daNpc_solA_c::drawDbgInfo() { return false; } @@ -696,50 +392,115 @@ void daNpc_solA_c::drawOtherMdl() { } /* 80AEDAC8-80AEDB10 001008 0048+00 1/1 0/0 0/0 .text selectAction__12daNpc_solA_cFv */ -void daNpc_solA_c::selectAction() { - // NONMATCHING +int daNpc_solA_c::selectAction() { + mNextAction = NULL; + mNextAction = &daNpc_solA_c::wait; + return 1; } /* 80AEDB10-80AEDB3C 001050 002C+00 1/1 0/0 0/0 .text * chkAction__12daNpc_solA_cFM12daNpc_solA_cFPCvPvPv_i */ -void daNpc_solA_c::chkAction(int (daNpc_solA_c::*param_0)(void*)) { - // NONMATCHING +int daNpc_solA_c::chkAction(int (daNpc_solA_c::*param_0)(void*)) { + return mAction == param_0; } /* 80AEDB3C-80AEDBE4 00107C 00A8+00 2/2 0/0 0/0 .text * setAction__12daNpc_solA_cFM12daNpc_solA_cFPCvPvPv_i */ -void daNpc_solA_c::setAction(int (daNpc_solA_c::*param_0)(void*)) { - // NONMATCHING +int daNpc_solA_c::setAction(int (daNpc_solA_c::*param_0)(void*)) { + mMode = MODE_EXIT; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + mMode = MODE_ENTER; + mAction = param_0; + if (mAction != NULL) { + (this->*(mAction))(NULL); + } + + return 1; } /* 80AEDBE4-80AEDD60 001124 017C+00 1/0 0/0 0/0 .text wait__12daNpc_solA_cFPv */ -void daNpc_solA_c::wait(void* param_0) { - // NONMATCHING +int daNpc_solA_c::wait(void* param_0) { + switch (mMode) { + case MODE_ENTER: + case MODE_INIT: + mFaceMotionSeqMngr.setNo(0, -1.0f, FALSE, 0); + mMotionSeqMngr.setNo(0, -1.0f, FALSE, 0); + mMode = MODE_RUN; + case MODE_RUN: + if (srchPlayerActor()) { + mJntAnm.lookPlayer(0); + } else { + if (home.angle.y != mCurAngle.y) { + if (step(home.angle.y, -1, -1, 15, 0)) { + mMode = MODE_INIT; + } + } + mJntAnm.lookNone(0); + } + break; + case MODE_EXIT: + break; + } + return 1; } /* 80AEDD60-80AEDED0 0012A0 0170+00 2/0 0/0 0/0 .text talk__12daNpc_solA_cFPv */ -void daNpc_solA_c::talk(void* param_0) { - // NONMATCHING +int daNpc_solA_c::talk(void* param_0) { + int bVar1 = 0; + switch (mMode) { + case MODE_ENTER: + case MODE_INIT: + initTalk(mFlowNodeNo, NULL); + mMode = MODE_RUN; + + case MODE_RUN: + if (!mTwilight) { + mJntAnm.lookPlayer(0); + if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + bVar1 = TRUE; + } else { + if (step(fopAcM_searchPlayerAngleY(this), -1, -1, 15, 0)) { + bVar1 = TRUE; + } + } + } else { + bVar1 = TRUE; + } + + if (bVar1 && talkProc(NULL, FALSE, NULL, FALSE)) { + mPlayerActorMngr.entry(daPy_getPlayerActorClass()); + dComIfGp_event_reset(); + mMode = MODE_EXIT; + } + break; + + case MODE_EXIT: + break; + } + return 0; } /* 80AEDED0-80AEDEF0 001410 0020+00 1/0 0/0 0/0 .text daNpc_solA_Create__FPv */ -static void daNpc_solA_Create(void* param_0) { - // NONMATCHING +static int daNpc_solA_Create(void* param_0) { + return static_cast(param_0)->create(); } /* 80AEDEF0-80AEDF10 001430 0020+00 1/0 0/0 0/0 .text daNpc_solA_Delete__FPv */ -static void daNpc_solA_Delete(void* param_0) { - // NONMATCHING +static int daNpc_solA_Delete(void* param_0) { + return static_cast(param_0)->Delete(); } /* 80AEDF10-80AEDF30 001450 0020+00 1/0 0/0 0/0 .text daNpc_solA_Execute__FPv */ -static void daNpc_solA_Execute(void* param_0) { - // NONMATCHING +static int daNpc_solA_Execute(void* param_0) { + static_cast(param_0)->Execute(); } /* 80AEDF30-80AEDF50 001470 0020+00 1/0 0/0 0/0 .text daNpc_solA_Draw__FPv */ static void daNpc_solA_Draw(void* param_0) { - // NONMATCHING + return static_cast(param_0)->Draw(); } /* 80AEDF50-80AEDF58 001490 0008+00 1/0 0/0 0/0 .text daNpc_solA_IsDelete__FPv */ @@ -747,308 +508,30 @@ static bool daNpc_solA_IsDelete(void* param_0) { return true; } -/* 80AEDF58-80AEDFA0 001498 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80AEDFA0-80AEE328 0014E0 0388+00 1/1 0/0 0/0 .text __dt__8daNpcT_cFv */ -// daNpcT_c::~daNpcT_c() { -extern "C" void __dt__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80AEE328-80AEE364 001868 003C+00 3/3 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80AEE364-80AEE3A0 0018A4 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80AEE3A0-80AEE7A4 0018E0 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 -} - -/* 80AEE7A4-80AEE7A8 001CE4 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80AEE7A8-80AEE8A4 001CE8 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 -} - -/* 80AEE8A4-80AEE8A8 001DE4 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80AEE8A8-80AEE8F0 001DE8 0048+00 1/0 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */ -// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() { -extern "C" void __dt__18daNpcT_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80AEE8F0-80AEE938 001E30 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 -} - -/* 80AEE938-80AEE9A8 001E78 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80AEE9A8-80AEEA04 001EE8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80AEEA04-80AEEA74 001F44 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80AEEA74-80AEEABC 001FB4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80AEEAC4-80AEEBE0 002004 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 -} - -/* ############################################################################################## */ -/* 80AEF1C8-80AEF1D0 0000C8 0008+00 0/1 0/0 0/0 .rodata @4744 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4744[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AEF1C8, &lit_4744); -#pragma pop - -/* 80AEF1D0-80AEF1D8 0000D0 0008+00 0/1 0/0 0/0 .rodata @4745 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4745[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AEF1D0, &lit_4745); -#pragma pop - -/* 80AEF1D8-80AEF1E0 0000D8 0008+00 0/1 0/0 0/0 .rodata @4746 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4746[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AEF1D8, &lit_4746); -#pragma pop - -/* 80AEEBE0-80AEEDE8 002120 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 -} - -/* 80AEEDE8-80AEEDEC 002328 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 */ -} - -/* 80AEEE0C-80AEEE14 00234C 0008+00 1/0 0/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballLMaterialNo() { -extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80AEEE14-80AEEE1C 002354 0008+00 1/0 0/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv - */ -// bool daNpcT_c::getEyeballRMaterialNo() { -extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() { - return false; -} - -/* 80AEEE28-80AEEE30 002368 0008+00 1/0 0/0 0/0 .text evtEndProc__8daNpcT_cFv */ -// bool daNpcT_c::evtEndProc() { -extern "C" bool evtEndProc__8daNpcT_cFv() { - return true; -} - -/* 80AEEE34-80AEEE3C 002374 0008+00 1/0 0/0 0/0 .text chkXYItems__8daNpcT_cFv */ -// bool daNpcT_c::chkXYItems() { -extern "C" bool chkXYItems__8daNpcT_cFv() { - return false; -} - -/* 80AEEE3C-80AEEE54 00237C 0018+00 1/0 0/0 0/0 .text decTmr__8daNpcT_cFv */ -// void daNpcT_c::decTmr() { -extern "C" void decTmr__8daNpcT_cFv() { - // NONMATCHING -} - -/* 80AEEE54-80AEEE58 002394 0004+00 1/0 0/0 0/0 .text drawGhost__8daNpcT_cFv */ -// void daNpcT_c::drawGhost() { -extern "C" void drawGhost__8daNpcT_cFv() { - /* empty function */ -} - -/* 80AEEE58-80AEEE60 002398 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; -} - -/* 80AEEE60-80AEEE68 0023A0 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; -} - -/* 80AEEE68-80AEEE98 0023A8 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 -} - -/* 80AEEE98-80AEEEC8 0023D8 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 -} - -/* 80AEEEC8-80AEEECC 002408 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 */ -} - -/* 80AEEECC-80AEEED0 00240C 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 */ -} - -/* 80AEEED0-80AEEED4 002410 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 */ -} - -/* 80AEEED4-80AEEED8 002414 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 */ -} - -/* ############################################################################################## */ -/* 80AEF46C-80AEF478 000278 000C+00 2/2 0/0 0/0 .data __vt__18daNpc_solA_Param_c */ -SECTION_DATA extern void* __vt__18daNpc_solA_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpc_solA_Param_cFv, -}; - -/* 80AEF480-80AEF48C 000008 000C+00 1/1 0/0 0/0 .bss @3936 */ -static u8 lit_3936[12]; - /* 80AEF48C-80AEF490 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; +static daNpc_solA_Param_c l_HIO; -/* 80AEEED8-80AEEF40 002418 0068+00 0/0 1/0 0/0 .text __sinit_d_a_npc_sola_cpp */ -void __sinit_d_a_npc_sola_cpp() { - // NONMATCHING -} +/* 80AEF2C8-80AEF2E8 -00001 0020+00 1/0 0/0 0/0 .data daNpc_solA_MethodTable */ +static actor_method_class daNpc_solA_MethodTable = { + (process_method_func)daNpc_solA_Create, (process_method_func)daNpc_solA_Delete, + (process_method_func)daNpc_solA_Execute, (process_method_func)daNpc_solA_IsDelete, + (process_method_func)daNpc_solA_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80AEEED8, __sinit_d_a_npc_sola_cpp); -#pragma pop - -/* 80AEEF40-80AEEFEC 002480 00AC+00 1/1 0/0 0/0 .text - * __ct__12daNpc_solA_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc - */ -daNpc_solA_c::daNpc_solA_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 -} - -/* 80AEEFEC-80AEF034 00252C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80AEF034-80AEF07C 002574 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80AEF07C-80AEF084 0025BC 0008+00 1/0 0/0 0/0 .text getHeadJointNo__12daNpc_solA_cFv */ -s32 daNpc_solA_c::getHeadJointNo() { - return 4; -} - -/* 80AEF084-80AEF08C 0025C4 0008+00 1/0 0/0 0/0 .text getNeckJointNo__12daNpc_solA_cFv */ -s32 daNpc_solA_c::getNeckJointNo() { - return 3; -} - -/* 80AEF08C-80AEF094 0025CC 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__12daNpc_solA_cFv */ -bool daNpc_solA_c::getBackboneJointNo() { - return true; -} - -/* 80AEF094-80AEF0DC 0025D4 0048+00 2/1 0/0 0/0 .text __dt__18daNpc_solA_Param_cFv */ -daNpc_solA_Param_c::~daNpc_solA_Param_c() { - // NONMATCHING -} - -/* 80AEF0DC-80AEF0E4 00261C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80AEF0DC() { - // NONMATCHING -} - -/* 80AEF0E4-80AEF0EC 002624 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80AEF0E4() { - // NONMATCHING -} - -/* 80AEF1E0-80AEF1E0 0000E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80AEF2E8-80AEF318 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SOLA */ +actor_process_profile_definition g_profile_NPC_SOLA = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_SOLA, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpc_solA_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 366, // mPriority + &daNpc_solA_MethodTable, // sub_method + 0x00044107, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};