From 8410e4fd40e2f9949a792f6e15ed65974812861d Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Fri, 1 Aug 2025 10:29:50 -0700 Subject: [PATCH] mvstair done, obj_tks equivalent (#2565) * mvstair done, obj_tks equivalent * fix --- configure.py | 4 +- include/d/actor/d_a_obj_mvstair.h | 89 +- include/d/actor/d_a_obj_tks.h | 111 +- src/d/actor/d_a_obj_mvstair.cpp | 910 ++++++-------- src/d/actor/d_a_obj_tks.cpp | 1942 ++++++++++++----------------- 5 files changed, 1378 insertions(+), 1678 deletions(-) diff --git a/configure.py b/configure.py index a1978ec8d87..26127c20ad2 100755 --- a/configure.py +++ b/configure.py @@ -2055,7 +2055,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_screw"), ActorRel(NonMatching, "d_a_obj_mirror_table"), ActorRel(NonMatching, "d_a_obj_msima"), - ActorRel(NonMatching, "d_a_obj_mvstair"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mvstair"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_myogan"), ActorRel(NonMatching, "d_a_obj_nagaisu"), ActorRel(Equivalent, "d_a_obj_nan"), # weak function order @@ -2137,7 +2137,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_thashi"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_thdoor"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_timeFire"), - ActorRel(NonMatching, "d_a_obj_tks"), + ActorRel(Equivalent, "d_a_obj_tks", extra_cflags=[DANPCF_C_HACK]), # weak function order, sinShort inline issue ActorRel(MatchingFor("GZ2E01"), "d_a_obj_tmoon"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_toaru_maki"), ActorRel(NonMatching, "d_a_obj_toby"), diff --git a/include/d/actor/d_a_obj_mvstair.h b/include/d/actor/d_a_obj_mvstair.h index 46c9dde5481..4b50bad77e8 100644 --- a/include/d/actor/d_a_obj_mvstair.h +++ b/include/d/actor/d_a_obj_mvstair.h @@ -2,6 +2,8 @@ #define D_A_OBJ_MVSTAIR_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_particle.h" /** * @ingroup actors-objects @@ -11,35 +13,80 @@ * @details * */ -class daObjStair_c : public fopAc_ac_c { +class daObjStair_c : public dBgS_MoveBgActor { public: + enum Action_e { + ACTION_WAIT_e, + ACTION_ORDER_EVENT_e, + ACTION_EVENT_e, + ACTION_END_e, + }; + + enum MODE_e { + MODE_WAIT_UPPER_e, + MODE_UPPER_e, + MODE_WAIT_LOWER_e, + MODE_LOWER_e, + }; + /* 80C9D098 */ void initBaseMtx(); /* 80C9D0D4 */ void setBaseMtx(); - /* 80C9D148 */ void Create(); - /* 80C9D2B8 */ void CreateHeap(); - /* 80C9D338 */ void create1st(); + /* 80C9D338 */ int create1st(); /* 80C9D41C */ void event_proc_call(); /* 80C9D4D8 */ void mode_proc_call(); - /* 80C9D594 */ void Execute(f32 (**)[3][4]); - /* 80C9D710 */ void Draw(); - /* 80C9D7B4 */ void Delete(); - /* 80C9D82C */ void actionWait(); - /* 80C9D8EC */ void actionOrderEvent(); - /* 80C9D95C */ void actionEvent(); - /* 80C9D9BC */ bool actionEnd(); - /* 80C9D9C4 */ void modeWaitUpperInit(); - /* 80C9D9F4 */ void modeWaitUpper(); - /* 80C9DA98 */ void modeUpperInit(); - /* 80C9DADC */ void modeUpper(); - /* 80C9DF18 */ void modeWaitLowerInit(); - /* 80C9DF60 */ void modeWaitLower(); - /* 80C9E004 */ void modeLowerInit(); - /* 80C9E034 */ void modeLower(); + /* 80C9D82C */ int actionWait(); + /* 80C9D8EC */ int actionOrderEvent(); + /* 80C9D95C */ int actionEvent(); + /* 80C9D9BC */ int actionEnd(); + /* 80C9D9C4 */ int modeWaitUpperInit(); + /* 80C9D9F4 */ int modeWaitUpper(); + /* 80C9DA98 */ int modeUpperInit(); + /* 80C9DADC */ int modeUpper(); + /* 80C9DF18 */ int modeWaitLowerInit(); + /* 80C9DF60 */ int modeWaitLower(); + /* 80C9E004 */ int modeLowerInit(); + /* 80C9E034 */ int modeLower(); /* 80C9E3D8 */ void setParticle(); /* 80C9E5A0 */ void removeParticle(); -private: - /* 0x568 */ u8 field_0x568[0x66c - 0x568]; + /* 80C9D2B8 */ virtual int CreateHeap(); + /* 80C9D148 */ virtual int Create(); + /* 80C9D594 */ virtual int Execute(f32 (**)[3][4]); + /* 80C9D710 */ virtual int Draw(); + /* 80C9D7B4 */ virtual int Delete(); + + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getEvNo() { return fopAcM_GetParamBit(this, 16, 8); } + u8 getDir() { return fopAcM_GetParamBit(this, 28, 1); } + u8 getType() { return fopAcM_GetParamBit(this, 24, 4); } + u8 getMdlType() { return fopAcM_GetParamBit(this, 29, 3); } + + void setAction(u8 i_action) { mAction = i_action; } + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ JPABaseEmitter* mSmokeEmitter; + /* 0x5B0 */ dPa_followEcallBack mParticleLeftEmitter[2]; + /* 0x5D8 */ dPa_followEcallBack mParticleRightEmitter[2]; + /* 0x600 */ cXyz mParticleLeftPos[2]; + /* 0x618 */ cXyz mParticleRightPos[2]; + /* 0x630 */ cXyz mSoundPos; + /* 0x63C */ u8 mType; + /* 0x63D */ u8 mAction; + /* 0x63E */ u8 mMode; + /* 0x63F */ u8 mIsSwitch; + /* 0x640 */ s16 mEventId; + /* 0x644 */ f32 mMoveAccel; + /* 0x648 */ f32 mMoveStep; + /* 0x64C */ u8 field_0x64C[0x650 - 0x64C]; + /* 0x650 */ cXyz mModelPos; + /* 0x65C */ u16 mMoveStartShakeTimer; + /* 0x65E */ s16 mMoveEndShakeTimer; + /* 0x660 */ f32 mMoveStartShakeAmount; + /* 0x664 */ u8 field_0x664[0x668 - 0x664]; + /* 0x668 */ u8 mMoveMode; + /* 0x669 */ u8 mResType; }; STATIC_ASSERT(sizeof(daObjStair_c) == 0x66c); diff --git a/include/d/actor/d_a_obj_tks.h b/include/d/actor/d_a_obj_tks.h index d18338afedb..559d6986776 100644 --- a/include/d/actor/d_a_obj_tks.h +++ b/include/d/actor/d_a_obj_tks.h @@ -2,6 +2,23 @@ #define D_A_OBJ_TKS_H #include "f_op/f_op_actor_mng.h" +#include "d/actor/d_a_npc.h" + +struct daObjTks_HIOParam { + /* 0x00 */ daNpcF_HIOParam common; + /* 0x6C */ f32 offset_x; + /* 0x70 */ f32 offset_y; + /* 0x74 */ f32 offset_z; + /* 0x78 */ f32 spring_factor; + /* 0x7C */ f32 spring_atten; +}; + +class daObjTks_Param_c { +public: + /* 80D126D0 */ virtual ~daObjTks_Param_c() {} + + static const daObjTks_HIOParam m; +}; /** * @ingroup actors-objects @@ -11,53 +28,79 @@ * @details * */ -class daObjTks_c : public fopAc_ac_c { +class daObjTks_c : public daNpcF_c { public: /* 80D0F28C */ daObjTks_c(); - /* 80D0F480 */ ~daObjTks_c(); - /* 80D0F640 */ void Create(); - /* 80D0F904 */ void CreateHeap(); - /* 80D0FD34 */ void Delete(); - /* 80D0FD68 */ void Execute(); - /* 80D0FE60 */ void Draw(); - /* 80D0FED0 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 80D10094 */ void createHeapCallBack(fopAc_ac_c*); - /* 80D100B4 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80D10100 */ void setMtx(); - /* 80D10184 */ void setExpressionAnm(int, bool); - /* 80D102D0 */ void setExpressionBtp(int); - /* 80D103A4 */ void setMotion(int, f32, int); + /* 80D0F480 */ virtual ~daObjTks_c(); + + /* 80D0F640 */ int Create(); + /* 80D0F904 */ int CreateHeap(); + /* 80D0FD34 */ int Delete(); + /* 80D0FD68 */ int Execute(); + /* 80D0FE60 */ int Draw(); + /* 80D0FED0 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 80D10094 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80D100B4 */ static int ctrlJointCallBack(J3DJoint*, int); /* 80D103E8 */ void reset(); - /* 80D10578 */ void setAction(void (daObjTks_c::*)()); + /* 80D10578 */ inline int setAction(void (daObjTks_c::*)()); /* 80D10618 */ void wait(); - /* 80D106C8 */ void setExpression(int, f32); /* 80D106F4 */ void talk(); /* 80D10A80 */ void demo(); - /* 80D11104 */ bool setMotionAnm(int, f32); /* 80D11228 */ void warp(); - /* 80D11670 */ void setParam(); - /* 80D116C8 */ void main(); - /* 80D118E8 */ void ctrlBtk(); - /* 80D119BC */ void setAttnPos(); - /* 80D11CB4 */ void lookat(); - /* 80D11E94 */ bool drawDbgInfo(); - /* 80D11E9C */ void drawOtherMdls(); + /* 80D11CB4 */ inline void lookat(); + + /* 80D11670 */ virtual void setParam(); + /* 80D116C8 */ virtual BOOL main(); + /* 80D118E8 */ virtual BOOL ctrlBtk(); + /* 80D10100 */ virtual void setMtx(); + /* 80D119BC */ virtual void setAttnPos(); + /* 80D10184 */ virtual bool setExpressionAnm(int, bool); + /* 80D102D0 */ virtual bool setExpressionBtp(int); + /* 80D106C8 */ virtual void setExpression(int, f32); + /* 80D11104 */ virtual void setMotionAnm(int, f32); + /* 80D103A4 */ virtual void setMotion(int, f32, int); + /* 80D11E94 */ virtual BOOL drawDbgInfo(); + /* 80D11E9C */ virtual void drawOtherMdls(); + + void calcSpringF(f32* param_0, f32 param_1, f32* param_2) { + *param_2 = daObjTks_Param_c::m.spring_atten * (*param_2 + (daObjTks_Param_c::m.spring_factor * (*param_0 - param_1))); + *param_0 += *param_2; + } + + inline void playExpression(); + inline void playMotion(); + + bool chkAction(void (daObjTks_c::*i_action)()) { return i_action == mAction; } void setStart() { field_0xde0 = 1; } -private: - /* 0x568 */ u8 field_0x568[0xDE0 - 0x568]; + void setLookMode(int i_mode) { + if (i_mode >= 0 && i_mode < 6 && i_mode != mLookMode) { + mLookMode = i_mode; + } + } + + void setExpressionTalkAfter() { + (void)mExpression; + setExpression(1, -1.0f); + } + + /* 0xB48 */ Z2Creature mSound; + /* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm; + /* 0xBDC */ daNpcF_Lookat_c mLookat; + /* 0xC78 */ u8 field_0xC78[0xC7C - 0xC78]; + /* 0xC7C */ dCcD_Cyl mCcCyl; + /* 0xDB8 */ void (daObjTks_c::*mAction)(); + /* 0xDC4 */ request_of_phase_process_class mPhase; + /* 0xDCC */ f32 field_0xdcc; + /* 0xDD0 */ f32 field_0xdd0; + /* 0xDD4 */ u8 field_0xDD4[0xDDC - 0xDD4]; + /* 0xDDC */ s16 mLookMode; + /* 0xDDE */ u16 field_0xdde; /* 0xDE0 */ u8 field_0xde0; - /* 0xDE1 */ u8 field_0xde1[0xDE4 - 0xDE1]; + /* 0xDE1 */ u8 field_0xde1; }; STATIC_ASSERT(sizeof(daObjTks_c) == 0xDE4); -class daObjTks_Param_c { -public: - /* 80D126D0 */ ~daObjTks_Param_c(); - - static u8 const m[128]; -}; - #endif /* D_A_OBJ_TKS_H */ diff --git a/src/d/actor/d_a_obj_mvstair.cpp b/src/d/actor/d_a_obj_mvstair.cpp index 72e80b76f96..909bbc9b649 100644 --- a/src/d/actor/d_a_obj_mvstair.cpp +++ b/src/d/actor/d_a_obj_mvstair.cpp @@ -4,612 +4,518 @@ */ #include "d/actor/d_a_obj_mvstair.h" -#include "dol2asm.h" +#include "d/d_com_inf_game.h" +#include "d/d_s_play.h" +/* 80C9E8AC-80C9E8B4 000000 0008+00 4/4 0/0 0/0 .rodata l_bmdName */ +static const int l_bmdName[] = {4, 4}; -// -// Forward References: -// +/* 80C9E8B4-80C9E8BC 000008 0008+00 1/1 0/0 0/0 .rodata l_dzbName */ +static const int l_dzbName[] = {7, 7}; -extern "C" void initBaseMtx__12daObjStair_cFv(); -extern "C" void setBaseMtx__12daObjStair_cFv(); -extern "C" void Create__12daObjStair_cFv(); -extern "C" void CreateHeap__12daObjStair_cFv(); -extern "C" void create1st__12daObjStair_cFv(); -extern "C" void event_proc_call__12daObjStair_cFv(); -extern "C" void mode_proc_call__12daObjStair_cFv(); -extern "C" void Execute__12daObjStair_cFPPA3_A4_f(); -extern "C" void Draw__12daObjStair_cFv(); -extern "C" void Delete__12daObjStair_cFv(); -extern "C" void actionWait__12daObjStair_cFv(); -extern "C" void actionOrderEvent__12daObjStair_cFv(); -extern "C" void actionEvent__12daObjStair_cFv(); -extern "C" bool actionEnd__12daObjStair_cFv(); -extern "C" void modeWaitUpperInit__12daObjStair_cFv(); -extern "C" void modeWaitUpper__12daObjStair_cFv(); -extern "C" void modeUpperInit__12daObjStair_cFv(); -extern "C" void modeUpper__12daObjStair_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void modeWaitLowerInit__12daObjStair_cFv(); -extern "C" void modeWaitLower__12daObjStair_cFv(); -extern "C" void modeLowerInit__12daObjStair_cFv(); -extern "C" void modeLower__12daObjStair_cFv(); -extern "C" void setParticle__12daObjStair_cFv(); -extern "C" void removeParticle__12daObjStair_cFv(); -extern "C" static void daObjStair_create1st__FP12daObjStair_c(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__19dPa_followEcallBackFv(); -extern "C" void cleanup__18dPa_levelEcallBackFv(); -extern "C" void __defctor__19dPa_followEcallBackFv(); -extern "C" static void daObjStair_MoveBGDelete__FP12daObjStair_c(); -extern "C" static void daObjStair_MoveBGExecute__FP12daObjStair_c(); -extern "C" static void daObjStair_MoveBGDraw__FP12daObjStair_c(); -extern "C" void __dt__18dPa_levelEcallBackFv(); -extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" extern char const* const d_a_obj_mvstair__stringBase0; +/* 80C9E8BC-80C9E8D4 000010 0018+00 1/2 0/0 0/0 .rodata l_move_len */ +static const f32 l_move_len[] = { + 150.0f, + 300.0f, + 450.0f, + 600.0f, + 500.0f, + 550.0f, +}; -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -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 getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void __ct__19dPa_followEcallBackFUcUc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void __dt__18JPAEmitterCallBackFv(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__19dPa_followEcallBack[10]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 struct_80C9EAA8[4]; - -// -// Declarations: -// +/* 80C9E8D4-80C9E8DC 000028 0008+00 1/1 0/0 0/0 .rodata l_heap_size */ +static const u32 l_heap_size[] = {0xB40, 0x2C60}; /* 80C9D098-80C9D0D4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__12daObjStair_cFv */ void daObjStair_c::initBaseMtx() { - // NONMATCHING + mpModel->setBaseScale(scale); + setBaseMtx(); } /* 80C9D0D4-80C9D148 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__12daObjStair_cFv */ void daObjStair_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(mModelPos.x, mModelPos.y, mModelPos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); } -/* ############################################################################################## */ -/* 80C9E8AC-80C9E8B4 000000 0008+00 4/4 0/0 0/0 .rodata l_bmdName */ -SECTION_RODATA static u8 const l_bmdName[8] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, -}; -COMPILER_STRIP_GATE(0x80C9E8AC, &l_bmdName); - -/* 80C9E8B4-80C9E8BC 000008 0008+00 1/1 0/0 0/0 .rodata l_dzbName */ -SECTION_RODATA static u8 const l_dzbName[8] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, -}; -COMPILER_STRIP_GATE(0x80C9E8B4, &l_dzbName); - -/* 80C9E8BC-80C9E8D4 000010 0018+00 1/2 0/0 0/0 .rodata l_move_len */ -SECTION_RODATA static u8 const l_move_len[24] = { - 0x43, 0x16, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0xE1, 0x00, 0x00, - 0x44, 0x16, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, -}; -COMPILER_STRIP_GATE(0x80C9E8BC, &l_move_len); - -/* 80C9E8D4-80C9E8DC 000028 0008+00 1/1 0/0 0/0 .rodata l_heap_size */ -SECTION_RODATA static u8 const l_heap_size[8] = { - 0x00, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x2C, 0x60, -}; -COMPILER_STRIP_GATE(0x80C9E8D4, &l_heap_size); - -/* 80C9E8DC-80C9E8E0 000030 0004+00 1/3 0/0 0/0 .rodata @3709 */ -SECTION_RODATA static f32 const lit_3709 = 600.0f; -COMPILER_STRIP_GATE(0x80C9E8DC, &lit_3709); - /* 80C9D148-80C9D2B8 000128 0170+00 1/0 0/0 0/0 .text Create__12daObjStair_cFv */ -void daObjStair_c::Create() { - // NONMATCHING +int daObjStair_c::Create() { + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + + mEventId = dComIfGp_getEventManager().getEventIdx(this, getEvNo()); + u8 swbit = getSwbit(); + u8 swbit2 = getSwbit2(); + + if (fopAcM_isSwitch(this, swbit2)) { + setAction(ACTION_END_e); + modeWaitLowerInit(); + } else { + if (getEvNo() == 0xFF) { + setAction(ACTION_END_e); + } else { + setAction(ACTION_WAIT_e); + } + + BOOL is_swbit = fopAcM_isSwitch(this, swbit); + int dir = getDir(); + + if ((dir == 0 && is_swbit) || (dir == 1 && !is_swbit)) { + modeWaitLowerInit(); + } else { + modeWaitUpperInit(); + } + } + + initBaseMtx(); + mIsSwitch = fopAcM_isSwitch(this, getSwbit()); + mSoundPos = home.pos; + mSoundPos.y = 600.0f + home.pos.y; + return 1; } -/* ############################################################################################## */ -/* 80C9E90C-80C9E90C 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C9E90C = "K_mvkai00"; -SECTION_DEAD static char const* const stringBase_80C9E916 = "Lv9_mvkai"; -#pragma pop - -/* 80C9E920-80C9E92C 000000 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80C9E92C-80C9E940 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA /* 80C9E940-80C9E948 -00001 0008+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName[2] = { - (void*)&d_a_obj_mvstair__stringBase0, - (void*)(((char*)&d_a_obj_mvstair__stringBase0) + 0xA), +static char* l_arcName[2] = { + "K_mvkai00", + "Lv9_mvkai", }; /* 80C9D2B8-80C9D338 000298 0080+00 1/0 0/0 0/0 .text CreateHeap__12daObjStair_cFv */ -void daObjStair_c::CreateHeap() { - // NONMATCHING +int daObjStair_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mResType], l_bmdName[mResType]); + JUT_ASSERT(250, modelData != 0); + + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + return 1; } /* 80C9D338-80C9D41C 000318 00E4+00 1/1 0/0 0/0 .text create1st__12daObjStair_cFv */ -void daObjStair_c::create1st() { - // NONMATCHING +int daObjStair_c::create1st() { + mType = getType(); + if (getMdlType() == 7 || getMdlType() == 0) { + mResType = 0; + } else if (getMdlType() == 1) { + mResType = 1; + } + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName[mResType]); + if (phase_state == cPhs_COMPLEATE_e) { + phase_state = MoveBGCreate(l_arcName[mResType], l_dzbName[mResType], dBgS_MoveBGProc_TypicalRotY, l_heap_size[mResType], NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } + + OS_REPORT("MVSTAIR PARAM:0x%x\n", fopAcM_GetParam(this)); + } + + return phase_state; } -/* ############################################################################################## */ -/* 80C9E948-80C9E954 -00001 000C+00 0/1 0/0 0/0 .data @3754 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3754[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E954-80C9E960 -00001 000C+00 0/1 0/0 0/0 .data @3755 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3755[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrderEvent__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E960-80C9E96C -00001 000C+00 0/1 0/0 0/0 .data @3756 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3756[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEvent__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E96C-80C9E978 -00001 000C+00 0/1 0/0 0/0 .data @3757 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3757[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEnd__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E978-80C9E9A8 000058 0030+00 0/1 0/0 0/0 .data l_func$3753 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func_3753[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, -}; -#pragma pop - /* 80C9D41C-80C9D4D8 0003FC 00BC+00 1/1 0/0 0/0 .text event_proc_call__12daObjStair_cFv */ void daObjStair_c::event_proc_call() { - // NONMATCHING + static int (daObjStair_c::*l_func[])() = { + &daObjStair_c::actionWait, + &daObjStair_c::actionOrderEvent, + &daObjStair_c::actionEvent, + &daObjStair_c::actionEnd, + }; + + (this->*l_func[mAction])(); } -/* ############################################################################################## */ -/* 80C9E9A8-80C9E9B4 -00001 000C+00 0/1 0/0 0/0 .data @3765 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3765[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitUpper__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E9B4-80C9E9C0 -00001 000C+00 0/1 0/0 0/0 .data @3766 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3766[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeUpper__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E9C0-80C9E9CC -00001 000C+00 0/1 0/0 0/0 .data @3767 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3767[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitLower__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E9CC-80C9E9D8 -00001 000C+00 0/1 0/0 0/0 .data @3768 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3768[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeLower__12daObjStair_cFv, -}; -#pragma pop - -/* 80C9E9D8-80C9EA08 0000B8 0030+00 0/1 0/0 0/0 .data l_func$3764 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func_3764[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, -}; -#pragma pop - /* 80C9D4D8-80C9D594 0004B8 00BC+00 1/1 0/0 0/0 .text mode_proc_call__12daObjStair_cFv */ void daObjStair_c::mode_proc_call() { - // NONMATCHING + static int (daObjStair_c::*l_func[])() = { + &daObjStair_c::modeWaitUpper, + &daObjStair_c::modeUpper, + &daObjStair_c::modeWaitLower, + &daObjStair_c::modeLower, + }; + + (this->*l_func[mMode])(); } -/* ############################################################################################## */ -/* 80C9E8E0-80C9E8E4 000034 0004+00 2/5 0/0 0/0 .rodata @3802 */ -SECTION_RODATA static u8 const lit_3802[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C9E8E0, &lit_3802); - -/* 80C9E8E4-80C9E8E8 000038 0004+00 0/1 0/0 0/0 .rodata @3803 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3803 = -140.0f; -COMPILER_STRIP_GATE(0x80C9E8E4, &lit_3803); -#pragma pop - -/* 80C9E8E8-80C9E8EC 00003C 0004+00 0/1 0/0 0/0 .rodata @3804 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3804 = 140.0f; -COMPILER_STRIP_GATE(0x80C9E8E8, &lit_3804); -#pragma pop - -/* 80C9E8EC-80C9E8F0 000040 0004+00 0/1 0/0 0/0 .rodata @3805 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3805 = -450.0f; -COMPILER_STRIP_GATE(0x80C9E8EC, &lit_3805); -#pragma pop - -/* 80C9E8F0-80C9E8F4 000044 0004+00 0/1 0/0 0/0 .rodata @3806 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3806 = 450.0f; -COMPILER_STRIP_GATE(0x80C9E8F0, &lit_3806); -#pragma pop - /* 80C9D594-80C9D710 000574 017C+00 1/0 0/0 0/0 .text Execute__12daObjStair_cFPPA3_A4_f */ -void daObjStair_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING +int daObjStair_c::Execute(f32 (**param_0)[3][4]) { + event_proc_call(); + mode_proc_call(); + + *param_0 = &mBgMtx; + setBaseMtx(); + + mIsSwitch = fopAcM_isSwitch(this, getSwbit()); + + mParticleLeftPos[0].set(0.0f, 0.0f, -140.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(&mParticleLeftPos[0], &mParticleLeftPos[0]); + + mParticleLeftPos[1].set(0.0f, 0.0f, 140.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(&mParticleLeftPos[1], &mParticleLeftPos[1]); + + mParticleRightPos[0].set(-450.0f, 0.0f, 0.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(&mParticleRightPos[0], &mParticleRightPos[0]); + + mParticleRightPos[1].set(450.0f, 0.0f, 0.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(&mParticleRightPos[1], &mParticleRightPos[1]); + return 1; } /* 80C9D710-80C9D7B4 0006F0 00A4+00 1/0 0/0 0/0 .text Draw__12daObjStair_cFv */ -void daObjStair_c::Draw() { - // NONMATCHING +int daObjStair_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; } /* 80C9D7B4-80C9D82C 000794 0078+00 1/0 0/0 0/0 .text Delete__12daObjStair_cFv */ -void daObjStair_c::Delete() { - // NONMATCHING +int daObjStair_c::Delete() { + if (mSmokeEmitter != NULL) { + mSmokeEmitter->becomeInvalidEmitter(); + mSmokeEmitter = NULL; + } + + removeParticle(); + dComIfG_resDelete(&mPhase, l_arcName[mResType]); + return 1; } /* 80C9D82C-80C9D8EC 00080C 00C0+00 1/0 0/0 0/0 .text actionWait__12daObjStair_cFv */ -void daObjStair_c::actionWait() { - // NONMATCHING +int daObjStair_c::actionWait() { + if (fopAcM_isSwitch(this, getSwbit2())) { + setAction(ACTION_END_e); + return 1; + } + + if (mIsSwitch != fopAcM_isSwitch(this, getSwbit())) { + setAction(ACTION_ORDER_EVENT_e); + fopAcM_orderOtherEventId(this, mEventId, getEvNo(), 0xFFFF, 0, 1); + eventInfo.onCondition(2); + } + + return 1; } /* 80C9D8EC-80C9D95C 0008CC 0070+00 1/0 0/0 0/0 .text actionOrderEvent__12daObjStair_cFv */ -void daObjStair_c::actionOrderEvent() { - // NONMATCHING +int daObjStair_c::actionOrderEvent() { + if (eventInfo.checkCommandDemoAccrpt()) { + setAction(ACTION_EVENT_e); + } else { + fopAcM_orderOtherEventId(this, mEventId, getEvNo(), 0xFFFF, 0, 1); + eventInfo.onCondition(2); + } + + return 1; } /* 80C9D95C-80C9D9BC 00093C 0060+00 1/0 0/0 0/0 .text actionEvent__12daObjStair_cFv */ -void daObjStair_c::actionEvent() { - // NONMATCHING +int daObjStair_c::actionEvent() { + if (dComIfGp_evmng_endCheck(mEventId)) { + setAction(ACTION_WAIT_e); + dComIfGp_event_reset(); + } + + return 1; } /* 80C9D9BC-80C9D9C4 00099C 0008+00 1/0 0/0 0/0 .text actionEnd__12daObjStair_cFv */ -bool daObjStair_c::actionEnd() { - return true; +int daObjStair_c::actionEnd() { + return 1; } /* 80C9D9C4-80C9D9F4 0009A4 0030+00 2/2 0/0 0/0 .text modeWaitUpperInit__12daObjStair_cFv */ -void daObjStair_c::modeWaitUpperInit() { - // NONMATCHING +int daObjStair_c::modeWaitUpperInit() { + current.pos.y = home.pos.y; + mModelPos = current.pos; + mMode = MODE_WAIT_UPPER_e; + return 1; } /* 80C9D9F4-80C9DA98 0009D4 00A4+00 1/0 0/0 0/0 .text modeWaitUpper__12daObjStair_cFv */ -void daObjStair_c::modeWaitUpper() { - // NONMATCHING -} +int daObjStair_c::modeWaitUpper() { + int is_swbit = fopAcM_isSwitch(this, getSwbit()); + int dir = getDir(); -/* ############################################################################################## */ -/* 80C9E8F4-80C9E8F8 000048 0004+00 1/2 0/0 0/0 .rodata @3946 */ -SECTION_RODATA static f32 const lit_3946 = 3.0f; -COMPILER_STRIP_GATE(0x80C9E8F4, &lit_3946); + if (!fopAcM_isSwitch(this, getSwbit2()) && ((is_swbit && dir == 0) || (!is_swbit && dir == 1))) { + modeUpperInit(); + } + + return 1; +} /* 80C9DA98-80C9DADC 000A78 0044+00 1/1 0/0 0/0 .text modeUpperInit__12daObjStair_cFv */ -void daObjStair_c::modeUpperInit() { - // NONMATCHING +int daObjStair_c::modeUpperInit() { + mMoveStartShakeTimer = 30; + mMoveEndShakeTimer = 15; + mMoveStartShakeAmount = 3.0f; + mMoveMode = 0; + mMoveAccel = 0.0f; + mMoveStep = 0.0f; + mMode = MODE_UPPER_e; + return 1; } -/* ############################################################################################## */ -/* 80C9E8F8-80C9E8FC 00004C 0004+00 1/3 0/0 0/0 .rodata @4061 */ -SECTION_RODATA static f32 const lit_4061 = 1.0f; -COMPILER_STRIP_GATE(0x80C9E8F8, &lit_4061); - -/* 80C9E8FC-80C9E900 000050 0004+00 0/2 0/0 0/0 .rodata @4062 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4062 = -1.0f; -COMPILER_STRIP_GATE(0x80C9E8FC, &lit_4062); -#pragma pop - -/* 80C9E900-80C9E904 000054 0004+00 0/2 0/0 0/0 .rodata @4063 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4063 = 9.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C9E900, &lit_4063); -#pragma pop - -/* 80C9E904-80C9E908 000058 0004+00 0/2 0/0 0/0 .rodata @4064 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4064 = 0.5f; -COMPILER_STRIP_GATE(0x80C9E904, &lit_4064); -#pragma pop - -/* 80C9E908-80C9E90C 00005C 0004+00 0/2 0/0 0/0 .rodata @4065 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4065 = 50.0f; -COMPILER_STRIP_GATE(0x80C9E908, &lit_4065); -#pragma pop - /* 80C9DADC-80C9DEDC 000ABC 0400+00 1/0 0/0 0/0 .text modeUpper__12daObjStair_cFv */ -void daObjStair_c::modeUpper() { - // NONMATCHING -} +int daObjStair_c::modeUpper() { + f32 move_speed = 50.0f; + s16 shake_speed = 15000; -/* 80C9DEDC-80C9DF18 000EBC 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING + switch (mMoveMode) { + case 0: + if (mMoveStartShakeTimer == 0) { + if (mSmokeEmitter == NULL) { + cXyz effpos(home.pos); + effpos.y += 600.0f; + mSmokeEmitter = dComIfGp_particle_set(0x833E, &effpos, &home.angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL); + } + setParticle(); + mMoveMode = 1; + } else if (mMoveStartShakeTimer == 2 && getMdlType() != 1) { + mDoAud_seStart(Z2SE_OBJ_STEP_MOVESTART, &mSoundPos, 0, 0); + } + + mMoveStartShakeTimer--; + break; + case 1: { + cLib_chaseF(&mMoveAccel, 0.45f, 0.5f + KREG_F(0)); + cLib_chaseF(&mMoveStep, move_speed, mMoveAccel); + + int is_move_end = cLib_chaseF(¤t.pos.y, home.pos.y + l_move_len[mType], mMoveStep); + mModelPos.y = current.pos.y; + + if (is_move_end) { + mMoveMode = 2; + if (mSmokeEmitter != NULL) { + mSmokeEmitter->becomeInvalidEmitter(); + mSmokeEmitter = NULL; + } + + removeParticle(); + + if (getMdlType() != 1) { + mDoAud_seStart(Z2SE_OBJ_STEP_MOVEEND, &mSoundPos, 0, 0); + } else { + mDoAud_seStart(Z2SE_OBJ_L6_UD_BLOCK_UP_ST, &mSoundPos, 0, 0); + } + } else if (getMdlType() != 1) { + mDoAud_seStartLevel(Z2SE_OBJ_STEP_MOVE, &mSoundPos, 0, 0); + } else { + mDoAud_seStartLevel(Z2SE_OBJ_L6_UD_BLOCK_UP, &mSoundPos, 0, 0); + } + + mModelPos = current.pos; + break; + } + case 2: + dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + mMoveMode = 3; + mMoveStartShakeTimer = 15; + break; + case 3: + mMoveStartShakeTimer--; + mModelPos = current.pos; + + if (mMoveStartShakeTimer == 0) { + modeWaitLowerInit(); + } + break; + } + + mModelPos.y += mMoveStartShakeAmount * cM_scos(mMoveStartShakeTimer * shake_speed); + cLib_addCalc0(&mMoveStartShakeAmount, 0.5f + KREG_F(1), 0.5f + KREG_F(3)); + return 1; } /* 80C9DF18-80C9DF60 000EF8 0048+00 2/2 0/0 0/0 .text modeWaitLowerInit__12daObjStair_cFv */ -void daObjStair_c::modeWaitLowerInit() { - // NONMATCHING +int daObjStair_c::modeWaitLowerInit() { + current.pos.y = home.pos.y + l_move_len[mType]; + mModelPos = current.pos; + mMode = MODE_WAIT_LOWER_e; + return 1; } /* 80C9DF60-80C9E004 000F40 00A4+00 1/0 0/0 0/0 .text modeWaitLower__12daObjStair_cFv */ -void daObjStair_c::modeWaitLower() { - // NONMATCHING +int daObjStair_c::modeWaitLower() { + int is_swbit = fopAcM_isSwitch(this, getSwbit()); + int dir = getDir(); + + if (!fopAcM_isSwitch(this, getSwbit2()) && ((!is_swbit && dir == 0) || (is_swbit && dir == 1))) { + modeLowerInit(); + } + + return 1; } /* 80C9E004-80C9E034 000FE4 0030+00 1/1 0/0 0/0 .text modeLowerInit__12daObjStair_cFv */ -void daObjStair_c::modeLowerInit() { - // NONMATCHING +int daObjStair_c::modeLowerInit() { + mMoveAccel = 0.0f; + mMoveStep = 0.0f; + mMoveMode = 0; + mMoveStartShakeTimer = 30; + mMode = MODE_LOWER_e; + return 1; } /* 80C9E034-80C9E3D8 001014 03A4+00 1/0 0/0 0/0 .text modeLower__12daObjStair_cFv */ -void daObjStair_c::modeLower() { - // NONMATCHING +int daObjStair_c::modeLower() { + f32 move_speed = 50.0f; + f32 shake_amount = 3.0f; + s16 shake_speed = 15000; + + if (mMoveMode == 0) { + if (mMoveStartShakeTimer == 0) { + cLib_chaseF(&mMoveAccel, 0.45f, 0.5f + KREG_F(4)); + cLib_chaseF(&mMoveStep, move_speed, mMoveAccel); + + int is_move_end = cLib_chaseF(¤t.pos.y, home.pos.y, mMoveStep); + mModelPos.y = current.pos.y; + + if (is_move_end) { + mMoveMode = 1; + if (mSmokeEmitter != NULL) { + mSmokeEmitter->becomeInvalidEmitter(); + mSmokeEmitter = NULL; + } + + if (getMdlType() != 1) { + mDoAud_seStart(Z2SE_OBJ_STEP_MOVEEND, &mSoundPos, 0, 0); + } else { + mDoAud_seStart(Z2SE_OBJ_L6_UD_BLOCK_DW_ST, &mSoundPos, 0, 0); + } + } else if (getMdlType() != 1) { + mDoAud_seStartLevel(Z2SE_OBJ_STEP_MOVE, &mSoundPos, 0, 0); + } else { + mDoAud_seStartLevel(Z2SE_OBJ_L6_UD_BLOCK_DW, &mSoundPos, 0, 0); + } + } else { + mMoveStartShakeTimer--; + if (mMoveStartShakeTimer == 0) { + if (mSmokeEmitter == NULL) { + cXyz effpos(home.pos); + effpos.y += 600.0f; + mSmokeEmitter = dComIfGp_particle_set(0x833E, &effpos, &home.angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL); + } + } else if (mMoveStartShakeTimer == 2 && getMdlType() != 1) { + mDoAud_seStart(Z2SE_OBJ_STEP_MOVESTART, &mSoundPos, 0, 0); + } + } + } else { + if (mMoveStartShakeTimer == 0 && mMoveMode == 1) { + mMoveStartShakeTimer = 15; + mMoveMode = 2; + dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + } + + mMoveStartShakeTimer--; + mModelPos = current.pos; + mModelPos.y += shake_amount * cM_scos(mMoveStartShakeTimer * shake_speed); + + if (mMoveStartShakeTimer == 0) { + modeWaitUpperInit(); + } + } + + return 1; } /* 80C9E3D8-80C9E5A0 0013B8 01C8+00 1/1 0/0 0/0 .text setParticle__12daObjStair_cFv */ void daObjStair_c::setParticle() { - // NONMATCHING + if (mParticleLeftEmitter[0].getEmitter() == NULL) { + dComIfGp_particle_set(0x833C, &mParticleLeftPos[0], &home.angle, NULL, 0xFF, &mParticleLeftEmitter[0], fopAcM_GetRoomNo(this), NULL, NULL, NULL); + } + + if (mParticleLeftEmitter[1].getEmitter() == NULL) { + dComIfGp_particle_set(0x833C, &mParticleLeftPos[1], &home.angle, NULL, 0xFF, &mParticleLeftEmitter[1], fopAcM_GetRoomNo(this), NULL, NULL, NULL); + } + + if (mParticleRightEmitter[0].getEmitter() == NULL) { + dComIfGp_particle_set(0x833D, &mParticleRightPos[0], &home.angle, NULL, 0xFF, &mParticleRightEmitter[0], fopAcM_GetRoomNo(this), NULL, NULL, NULL); + } + + if (mParticleRightEmitter[1].getEmitter() == NULL) { + dComIfGp_particle_set(0x833D, &mParticleRightPos[1], &home.angle, NULL, 0xFF, &mParticleRightEmitter[1], fopAcM_GetRoomNo(this), NULL, NULL, NULL); + // "Up/Down Stairs: Right Effect set" + OS_REPORT("上下階段:右エフェクトセット\n"); + } } /* 80C9E5A0-80C9E614 001580 0074+00 2/2 0/0 0/0 .text removeParticle__12daObjStair_cFv */ void daObjStair_c::removeParticle() { - // NONMATCHING + for (int i = 0; i < 2; i++) { + mParticleLeftEmitter[i].remove(); + mParticleRightEmitter[i].remove(); + } } -/* ############################################################################################## */ -/* 80C9EA08-80C9EA28 -00001 0020+00 1/0 0/0 0/0 .data daObjStair_METHODS */ -static actor_method_class daObjStair_METHODS = { - (process_method_func)daObjStair_create1st__FP12daObjStair_c, - (process_method_func)daObjStair_MoveBGDelete__FP12daObjStair_c, - (process_method_func)daObjStair_MoveBGExecute__FP12daObjStair_c, - 0, - (process_method_func)daObjStair_MoveBGDraw__FP12daObjStair_c, -}; - -/* 80C9EA28-80C9EA58 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MvStair */ -extern actor_process_profile_definition g_profile_Obj_MvStair = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_MvStair, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjStair_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 25, // mPriority - &daObjStair_METHODS, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80C9EA58-80C9EA7C 000138 0024+00 2/2 0/0 0/0 .data __vt__18dPa_levelEcallBack */ -SECTION_DATA extern void* __vt__18dPa_levelEcallBack[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18dPa_levelEcallBackFv, - (void*)execute__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)draw__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)NULL, - (void*)cleanup__18dPa_levelEcallBackFv, -}; - -/* 80C9EA7C-80C9EAA4 00015C 0028+00 1/1 0/0 0/0 .data __vt__12daObjStair_c */ -SECTION_DATA extern void* __vt__12daObjStair_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__12daObjStair_cFv, - (void*)Create__12daObjStair_cFv, - (void*)Execute__12daObjStair_cFPPA3_A4_f, - (void*)Draw__12daObjStair_cFv, - (void*)Delete__12daObjStair_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - /* 80C9E614-80C9E700 0015F4 00EC+00 1/0 0/0 0/0 .text daObjStair_create1st__FP12daObjStair_c */ -static void daObjStair_create1st(daObjStair_c* param_0) { - // NONMATCHING -} - -/* 80C9E700-80C9E704 0016E0 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80C9E704-80C9E788 0016E4 0084+00 1/1 0/0 0/0 .text __dt__19dPa_followEcallBackFv */ -// dPa_followEcallBack::~dPa_followEcallBack() { -extern "C" void __dt__19dPa_followEcallBackFv() { - // NONMATCHING -} - -/* 80C9E788-80C9E78C 001768 0004+00 1/0 0/0 0/0 .text cleanup__18dPa_levelEcallBackFv */ -// void dPa_levelEcallBack::cleanup() { -extern "C" void cleanup__18dPa_levelEcallBackFv() { - /* empty function */ -} - -/* 80C9E78C-80C9E7B4 00176C 0028+00 1/1 0/0 0/0 .text __defctor__19dPa_followEcallBackFv - */ -// void dPa_followEcallBack::__defctor() { -extern "C" void __defctor__19dPa_followEcallBackFv() { - // NONMATCHING +static int daObjStair_create1st(daObjStair_c* i_this) { + fopAcM_SetupActor(i_this, daObjStair_c); + return i_this->create1st(); } /* 80C9E7B4-80C9E7D4 001794 0020+00 1/0 0/0 0/0 .text daObjStair_MoveBGDelete__FP12daObjStair_c */ -static void daObjStair_MoveBGDelete(daObjStair_c* param_0) { - // NONMATCHING +static int daObjStair_MoveBGDelete(daObjStair_c* i_this) { + return i_this->MoveBGDelete(); } /* 80C9E7D4-80C9E7F4 0017B4 0020+00 1/0 0/0 0/0 .text daObjStair_MoveBGExecute__FP12daObjStair_c */ -static void daObjStair_MoveBGExecute(daObjStair_c* param_0) { - // NONMATCHING +static int daObjStair_MoveBGExecute(daObjStair_c* i_this) { + return i_this->MoveBGExecute(); } /* 80C9E7F4-80C9E820 0017D4 002C+00 1/0 0/0 0/0 .text daObjStair_MoveBGDraw__FP12daObjStair_c */ -static void daObjStair_MoveBGDraw(daObjStair_c* param_0) { - // NONMATCHING +static int daObjStair_MoveBGDraw(daObjStair_c* i_this) { + return i_this->MoveBGDraw(); } -/* 80C9E820-80C9E894 001800 0074+00 1/0 0/0 0/0 .text __dt__18dPa_levelEcallBackFv */ -// dPa_levelEcallBack::~dPa_levelEcallBack() { -extern "C" void __dt__18dPa_levelEcallBackFv() { - // NONMATCHING -} +/* 80C9EA08-80C9EA28 -00001 0020+00 1/0 0/0 0/0 .data daObjStair_METHODS */ +static actor_method_class daObjStair_METHODS = { + (process_method_func)daObjStair_create1st, + (process_method_func)daObjStair_MoveBGDelete, + (process_method_func)daObjStair_MoveBGExecute, + (process_method_func)NULL, + (process_method_func)daObjStair_MoveBGDraw, +}; -/* 80C9E894-80C9E898 001874 0004+00 1/0 0/0 0/0 .text - * execute__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::execute(JPABaseEmitter* param_0) { -extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80C9E898-80C9E89C 001878 0004+00 1/0 0/0 0/0 .text - * executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::executeAfter(JPABaseEmitter* param_0) { -extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80C9E89C-80C9E8A0 00187C 0004+00 1/0 0/0 0/0 .text draw__18JPAEmitterCallBackFP14JPABaseEmitter - */ -// void JPAEmitterCallBack::draw(JPABaseEmitter* param_0) { -extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80C9E8A0-80C9E8A4 001880 0004+00 1/0 0/0 0/0 .text - * drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::drawAfter(JPABaseEmitter* param_0) { -extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80C9E90C-80C9E90C 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80C9EA28-80C9EA58 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MvStair */ +extern actor_process_profile_definition g_profile_Obj_MvStair = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_MvStair, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjStair_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 25, // mPriority + &daObjStair_METHODS, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_obj_tks.cpp b/src/d/actor/d_a_obj_tks.cpp index b56cf1cf667..bdb339637da 100644 --- a/src/d/actor/d_a_obj_tks.cpp +++ b/src/d/actor/d_a_obj_tks.cpp @@ -4,1240 +4,944 @@ */ #include "d/actor/d_a_obj_tks.h" -#include "dol2asm.h" -#include "d/d_camera.h" +#include "d/d_com_inf_game.h" -// -// Forward References: -// - -extern "C" void __ct__10daObjTks_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10daObjTks_cFv(); -extern "C" void Create__10daObjTks_cFv(); -extern "C" void CreateHeap__10daObjTks_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__10daObjTks_cFv(); -extern "C" void Execute__10daObjTks_cFv(); -extern "C" void Draw__10daObjTks_cFv(); -extern "C" void ctrlJoint__10daObjTks_cFP8J3DJointP8J3DModel(); -extern "C" void createHeapCallBack__10daObjTks_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__10daObjTks_cFP8J3DJointi(); -extern "C" void setMtx__10daObjTks_cFv(); -extern "C" void setExpressionAnm__10daObjTks_cFib(); -extern "C" void setExpressionBtp__10daObjTks_cFi(); -extern "C" void setMotion__10daObjTks_cFifi(); -extern "C" void reset__10daObjTks_cFv(); -extern "C" void setAction__10daObjTks_cFM10daObjTks_cFPCvPv_v(); -extern "C" void wait__10daObjTks_cFv(); -extern "C" void setExpression__10daObjTks_cFif(); -extern "C" void talk__10daObjTks_cFv(); -extern "C" void demo__10daObjTks_cFv(); -extern "C" void setMotionAnm__10daObjTks_cFif(); -extern "C" void warp__10daObjTks_cFv(); -extern "C" static void daObjTks_Create__FPv(); -extern "C" static void daObjTks_Delete__FPv(); -extern "C" static void daObjTks_Execute__FPv(); -extern "C" static void daObjTks_Draw__FPv(); -extern "C" static bool daObjTks_IsDelete__FPv(); -extern "C" void calc__11J3DTexNoAnmCFPUs(); -extern "C" void setParam__10daObjTks_cFv(); -extern "C" void main__10daObjTks_cFv(); -extern "C" void ctrlBtk__10daObjTks_cFv(); -extern "C" void setAttnPos__10daObjTks_cFv(); -extern "C" void lookat__10daObjTks_cFv(); -extern "C" bool drawDbgInfo__10daObjTks_cFv(); -extern "C" void drawOtherMdls__10daObjTks_cFv(); -extern "C" void func_80D11EA0(void* _this, s16); -extern "C" void __sinit_d_a_obj_tks_cpp(); -extern "C" void __dt__15daNpcF_Lookat_cFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__8daNpcF_cFv(); -extern "C" void __dt__18daNpcF_ActorMngr_cFv(); -extern "C" void __ct__8daNpcF_cFv(); -extern "C" void __ct__18daNpcF_ActorMngr_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 adjustShapeAngle__8daNpcF_cFv(); -extern "C" void setCollisions__8daNpcF_cFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__16daObjTks_Param_cFv(); -extern "C" static void func_80D12718(); -extern "C" static void func_80D12720(); -extern "C" u8 const m__16daObjTks_Param_c[128]; -extern "C" extern char const* const d_a_obj_tks__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_delete__FUi(); -extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); -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_orderChangeEventId__FP10fopAc_ac_csUsUs(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void reset__14dEvt_control_cFPv(); -extern "C" void setObjectArchive__16dEvent_manager_cFPc(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyNowCutName__16dEvent_manager_cFi(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -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 StartEventCamera__9dCamera_cFiie(); -extern "C" void EndEventCamera__9dCamera_cFi(); -extern "C" void initialize__18daNpcF_ActorMngr_cFv(); -extern "C" void initialize__15daNpcF_MatAnm_cFv(); -extern "C" void initialize__15daNpcF_Lookat_cFv(); -extern "C" void setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz(); -extern "C" void calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii(); -extern "C" void execute__8daNpcF_cFv(); -extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i(); -extern "C" void setMtx2__8daNpcF_cFv(); -extern "C" void initialize__8daNpcF_cFv(); -extern "C" void getTrnsfrmKeyAnmP__8daNpcF_cFPci(); -extern "C" void getTexPtrnAnmP__8daNpcF_cFPci(); -extern "C" void getTexSRTKeyAnmP__8daNpcF_cFPci(); -extern "C" void setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii(); -extern "C" void setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib(); -extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi(); -extern "C" void setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi(); -extern "C" void setEnvTevColor__8daNpcF_cFv(); -extern "C" void setRoomNo__8daNpcF_cFv(); -extern "C" void playExpressionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData(); -extern "C" void playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData(); -extern "C" void setLookatMtx__8daNpcF_cFiPif(); -extern "C" void ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci(); -extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c(); -extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c(); -extern "C" void setAngle__8daNpcF_cFs(); -extern "C" void daNpcF_chkEvtBit__FUl(); -extern "C" void dCam_getBody__Fv(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void SetIGrp__10cCcD_ObjCoFUl(); -extern "C" void SetVsGrp__10cCcD_ObjCoFUl(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -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_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz(); -extern "C" void subBgmStart__8Z2SeqMgrFUl(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void __dt__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs(); -extern "C" void initialize__14J3DMaterialAnmFv(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_cmpr(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" u8 mCcDCyl__8daNpcF_c[68]; -extern "C" extern void* __vt__8daNpcF_c[18]; -extern "C" extern void* __vt__15daNpcF_MatAnm_c[4 + 6 /* 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" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80D128C8-80D128C8 00018C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D128C8 = "TKS2"; -SECTION_DEAD static char const* const stringBase_80D128CD = "ObjTks"; -#pragma pop - -/* 80D128F0-80D128FC 000000 000C+00 3/3 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80D128FC-80D12910 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA /* 80D12910-80D12940 000020 0030+00 1/2 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[48] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam1 l_bckGetParamList[] = { + {-1, 2}, + {7, 0}, + {11, 2}, + {10, 0}, + {8, 2}, + {9, 0}, }; /* 80D12940-80D12948 000050 0008+00 1/1 0/0 0/0 .data l_btpGetParamList */ -SECTION_DATA static u8 l_btpGetParamList[8] = { - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, +static daNpc_GetParam1 l_btpGetParamList[] = { + {20, 2}, }; /* 80D12948-80D12950 000058 0008+00 1/2 0/0 0/0 .data l_btkGetParamList */ -SECTION_DATA static u8 l_btkGetParamList[8] = { - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, +static daNpc_GetParam1 l_btkGetParamList[] = { + {17, 2}, }; /* 80D12950-80D12954 000060 0004+00 0/0 0/0 0/0 .data l_evtNames */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_evtNames[4] = { +// unused +static u8 l_evtNames[4] = { 0x00, 0x00, 0x00, 0x00, }; -#pragma pop /* 80D12954-80D12958 -00001 0004+00 6/9 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_tks__stringBase0; +static char* l_arcName = "TKS2"; /* 80D12958-80D1295C -00001 0004+00 0/2 0/0 0/0 .data l_myName */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_myName = (void*)(((char*)&d_a_obj_tks__stringBase0) + 0x5); -#pragma pop - -/* 80D1295C-80D12968 -00001 000C+00 1/1 0/0 0/0 .data @4353 */ -SECTION_DATA static void* lit_4353[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)warp__10daObjTks_cFv, -}; - -/* 80D12968-80D12974 -00001 000C+00 1/1 0/0 0/0 .data @4572 */ -SECTION_DATA static void* lit_4572[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__10daObjTks_cFv, -}; - -/* 80D12974-80D12980 -00001 000C+00 1/1 0/0 0/0 .data @4691 */ -SECTION_DATA static void* lit_4691[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)warp__10daObjTks_cFv, -}; - -/* 80D12980-80D1298C -00001 000C+00 1/1 0/0 0/0 .data @4694 */ -SECTION_DATA static void* lit_4694[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo__10daObjTks_cFv, -}; - -/* 80D1298C-80D12998 -00001 000C+00 0/1 0/0 0/0 .data @4775 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4775[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)warp__10daObjTks_cFv, -}; -#pragma pop - -/* 80D12998-80D129A4 -00001 000C+00 0/1 0/0 0/0 .data @4791 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4791[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__10daObjTks_cFv, -}; -#pragma pop - -/* 80D129A4-80D129B0 -00001 000C+00 0/1 0/0 0/0 .data @4907 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4907[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__10daObjTks_cFv, -}; -#pragma pop - -/* 80D129B0-80D129BC -00001 000C+00 0/1 0/0 0/0 .data @4910 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4910[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__10daObjTks_cFv, -}; -#pragma pop - -/* 80D129BC-80D129DC -00001 0020+00 1/0 0/0 0/0 .data daObjTks_MethodTable */ -static actor_method_class daObjTks_MethodTable = { - (process_method_func)daObjTks_Create__FPv, - (process_method_func)daObjTks_Delete__FPv, - (process_method_func)daObjTks_Execute__FPv, - (process_method_func)daObjTks_IsDelete__FPv, - (process_method_func)daObjTks_Draw__FPv, -}; - -/* 80D129DC-80D12A0C -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_TKS */ -extern actor_process_profile_definition g_profile_OBJ_TKS = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_OBJ_TKS, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjTks_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 376, // mPriority - &daObjTks_MethodTable, // sub_method - 0x08044008, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80D12A0C-80D12A18 00011C 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, -}; - -/* 80D12A18-80D12A60 000128 0048+00 2/2 0/0 0/0 .data __vt__10daObjTks_c */ -SECTION_DATA extern void* __vt__10daObjTks_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10daObjTks_cFv, - (void*)setParam__10daObjTks_cFv, - (void*)main__10daObjTks_cFv, - (void*)ctrlBtk__10daObjTks_cFv, - (void*)adjustShapeAngle__8daNpcF_cFv, - (void*)setMtx__10daObjTks_cFv, - (void*)setMtx2__8daNpcF_cFv, - (void*)setAttnPos__10daObjTks_cFv, - (void*)setCollisions__8daNpcF_cFv, - (void*)setExpressionAnm__10daObjTks_cFib, - (void*)setExpressionBtp__10daObjTks_cFi, - (void*)setExpression__10daObjTks_cFif, - (void*)setMotionAnm__10daObjTks_cFif, - (void*)setMotion__10daObjTks_cFifi, - (void*)drawDbgInfo__10daObjTks_cFv, - (void*)drawOtherMdls__10daObjTks_cFv, -}; - -/* 80D12A60-80D12A6C 000170 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, -}; - -/* 80D12A6C-80D12A90 00017C 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_80D12720, - (void*)NULL, - (void*)NULL, - (void*)func_80D12718, -}; - -/* 80D12A90-80D12A9C 0001A0 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, -}; - -/* 80D12A9C-80D12AA8 0001AC 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, -}; - -/* 80D12AA8-80D12AB4 0001B8 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, -}; - -/* 80D12AB4-80D12AC0 0001C4 000C+00 4/4 0/0 0/0 .data __vt__18daNpcF_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcF_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcF_ActorMngr_cFv, -}; - -/* 80D12AC0-80D12ACC 0001D0 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, -}; - -/* 80D12ACC-80D12AD8 0001DC 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, -}; - -/* 80D12AD8-80D12AE4 0001E8 000C+00 3/3 0/0 0/0 .data __vt__15daNpcF_Lookat_c */ -SECTION_DATA extern void* __vt__15daNpcF_Lookat_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daNpcF_Lookat_cFv, -}; +static char* l_myName = "ObjTks"; /* 80D0F28C-80D0F3F0 0000EC 0164+00 1/1 0/0 0/0 .text __ct__10daObjTks_cFv */ -daObjTks_c::daObjTks_c() { - // NONMATCHING -} - -/* 80D0F3F0-80D0F438 000250 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80D0F438-80D0F480 000298 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} +daObjTks_c::daObjTks_c() {} /* 80D0F480-80D0F640 0002E0 01C0+00 1/0 0/0 0/0 .text __dt__10daObjTks_cFv */ daObjTks_c::~daObjTks_c() { - // NONMATCHING + dComIfG_resDelete(&mPhase, l_arcName); + + if (heap != NULL) { + mpMorf->stopZelAnime(); + } + + if (parentActorID != fpcM_ERROR_PROCESS_ID_e) { + fopAcM_delete(parentActorID); + } } -/* ############################################################################################## */ /* 80D1273C-80D127BC 000000 0080+00 11/11 0/0 0/0 .rodata m__16daObjTks_Param_c */ -SECTION_RODATA u8 const daObjTks_Param_c::m[128] = { - 0x42, 0xB4, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x42, 0x5C, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x41, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x4C, 0xCC, 0xCD, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x13, 0x00, 0x06, - 0x42, 0xA0, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0xDE, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0xBE, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, +const daObjTks_HIOParam daObjTks_Param_c::m = { + 90.0f, + -3.0f, + 1.0f, + 150.0f, + 255.0f, + 55.0f, + 20.0f, + 18.0f, + 0.0f, + 0.0f, + 45.0f, + -45.0f, + 30.0f, + -10.0f, + 45.0f, + -45.0f, + 0.8f, + 12.0f, + 3, + 6, + 19, + 6, + 80.0f, + 500.0f, + 300.0f, + -300.0f, + 60, + 8, + 0, + 0, + 0, + false, + false, + 0.0f, + 111.0f, + 50.0f, + -0.2f, + 0.8f, }; -COMPILER_STRIP_GATE(0x80D1273C, &daObjTks_Param_c::m); - -/* 80D127BC-80D127C0 000080 0004+00 0/1 0/0 0/0 .rodata m_cameraItemNum$4211 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const m_cameraItemNum[4] = { - 0x00, - 0x00, - 0x00, - 0x01, -}; -COMPILER_STRIP_GATE(0x80D127BC, &m_cameraItemNum); -#pragma pop - -/* 80D127C0-80D127C4 000084 0004+00 0/2 0/0 0/0 .rodata @4271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4271 = -80.0f; -COMPILER_STRIP_GATE(0x80D127C0, &lit_4271); -#pragma pop - -/* 80D127C4-80D127C8 000088 0004+00 0/1 0/0 0/0 .rodata @4272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4272 = -30.0f; -COMPILER_STRIP_GATE(0x80D127C4, &lit_4272); -#pragma pop - -/* 80D127C8-80D127CC 00008C 0004+00 0/2 0/0 0/0 .rodata @4273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4273 = 80.0f; -COMPILER_STRIP_GATE(0x80D127C8, &lit_4273); -#pragma pop - -/* 80D127CC-80D127D0 000090 0004+00 0/2 0/0 0/0 .rodata @4274 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4274 = 10.0f; -COMPILER_STRIP_GATE(0x80D127CC, &lit_4274); -#pragma pop - -/* 80D128C8-80D128C8 00018C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D128D4 = "Type"; -#pragma pop /* 80D0F640-80D0F904 0004A0 02C4+00 1/1 0/0 0/0 .text Create__10daObjTks_cFv */ -void daObjTks_c::Create() { - // NONMATCHING +int daObjTks_c::Create() { + fopAcM_SetupActor(this, daObjTks_c); + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x2FF0)) { + return cPhs_ERROR_e; + } + + J3DModelData* mdlData_p = mpMorf->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -80.0f, -30.0f, -80.0f, 80.0f, 10.0f, 80.0f); + + mSound.init(¤t.pos, &eyePos, 3, 1); + + mAcchCir.SetWall(daObjTks_Param_c::m.common.width, daObjTks_Param_c::m.common.knee_length); + 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.OffClrSpeedY(); + mAcch.SetWallNone(); + + mCcStts.Init(daObjTks_Param_c::m.common.weight, 0, this); + mCcCyl.Set(mCcDCyl); + mCcCyl.SetStts(&mCcStts); + mCcCyl.SetTgType(0); + mCcCyl.SetTgSPrm(0); + mCcCyl.SetCoIGrp(8); + mCcCyl.SetCoVsGrp(0x40); + + mCcCyl.SetH(daObjTks_Param_c::m.common.height); + mCcCyl.SetR(daObjTks_Param_c::m.common.width); + + mAcch.CrrPos(dComIfG_Bgsp()); + + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + setEnvTevColor(); + setRoomNo(); + reset(); + + field_0xde0 = 1; + field_0xde1 = 0; + Execute(); + field_0xde0 = 0; + field_0xde1 = 1; + + static const int m_cameraItemNum = 1; + dCam_getBody()->StartEventCamera(18, fopAcM_GetID(this), "Type", 1, &m_cameraItemNum, 0); + } + + return phase_state; } -/* ############################################################################################## */ -/* 80D127D0-80D127D4 000094 0004+00 4/5 0/0 0/0 .rodata @4323 */ -SECTION_RODATA static f32 const lit_4323 = 1.0f; -COMPILER_STRIP_GATE(0x80D127D0, &lit_4323); - -/* 80D127D4-80D127D8 000098 0004+00 4/6 0/0 0/0 .rodata @4324 */ -SECTION_RODATA static f32 const lit_4324 = -1.0f; -COMPILER_STRIP_GATE(0x80D127D4, &lit_4324); - /* 80D0F904-80D0FB78 000764 0274+00 1/1 0/0 0/0 .text CreateHeap__10daObjTks_cFv */ -void daObjTks_c::CreateHeap() { - // NONMATCHING -} +int daObjTks_c::CreateHeap() { + J3DModelData* mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 0xE); + JUT_ASSERT(314, 0 != mdlData_p); -/* 80D0FB78-80D0FBB4 0009D8 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11020284); + if (mpMorf != NULL && mpMorf->getModel() == NULL) { + mpMorf->stopZelAnime(); + mpMorf = NULL; + } -/* 80D0FBB4-80D0FBCC 000A14 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + if (mpMorf == NULL) { + return 0; + } -/* 80D0FBCC-80D0FC08 000A2C 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + J3DModel* mdl_p = mpMorf->getModel(); + for (u16 i = 0; i < mdlData_p->getJointNum(); i++) { + mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } -/* 80D0FC08-80D0FC20 000A68 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + mdl_p->setUserArea((u32)this); -/* 80D0FC20-80D0FC68 000A80 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} -/* 80D0FC68-80D0FC8C 000AC8 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + mpMatAnm = new daNpcF_MatAnm_c(); + if (mpMatAnm == NULL) { + return 0; + } -/* 80D0FC8C-80D0FCC8 000AEC 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} + if (!setExpressionAnm(1, false)) { + return 0; + } -/* 80D0FCC8-80D0FCE0 000B28 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 80D0FCE0-80D0FD1C 000B40 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} - -/* 80D0FD1C-80D0FD34 000B7C 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + setMotion(0, -1.0f, 0); + return 1; } /* 80D0FD34-80D0FD68 000B94 0034+00 1/1 0/0 0/0 .text Delete__10daObjTks_cFv */ -void daObjTks_c::Delete() { - // NONMATCHING +int daObjTks_c::Delete() { + fpc_ProcID id = fopAcM_GetID(this); + this->~daObjTks_c(); + return 1; } -/* ############################################################################################## */ -/* 80D127D8-80D127DC 00009C 0004+00 0/1 0/0 0/0 .rodata @4367 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4367 = 6.0f; -COMPILER_STRIP_GATE(0x80D127D8, &lit_4367); -#pragma pop - -/* 80D127DC-80D127E0 0000A0 0004+00 0/1 0/0 0/0 .rodata @4368 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4368 = -5.0f; -COMPILER_STRIP_GATE(0x80D127DC, &lit_4368); -#pragma pop - -/* 80D127E0-80D127E4 0000A4 0004+00 0/1 0/0 0/0 .rodata @4369 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4369 = 4.0f; -COMPILER_STRIP_GATE(0x80D127E0, &lit_4369); -#pragma pop - /* 80D0FD68-80D0FE60 000BC8 00F8+00 2/2 0/0 0/0 .text Execute__10daObjTks_cFv */ -void daObjTks_c::Execute() { - // NONMATCHING +int daObjTks_c::Execute() { + if (field_0xde0 == 0) { + return 1; + } + + if (!chkAction(&daObjTks_c::warp)) { + current.pos.set(6.0f, -5.0f, 4.0f); + mDoMtx_stack_c::copy(daPy_getPlayerActorClass()->getLeftHandMatrix()); + mDoMtx_stack_c::multVec(¤t.pos, ¤t.pos); + old.pos = current.pos; + } + + execute(); + return 1; } /* 80D0FE60-80D0FED0 000CC0 0070+00 1/1 0/0 0/0 .text Draw__10daObjTks_cFv */ -void daObjTks_c::Draw() { - // NONMATCHING -} +int daObjTks_c::Draw() { + if (field_0xde0 == 0) { + return 1; + } -/* ############################################################################################## */ -/* 80D127E4-80D127F0 0000A8 000C+00 1/1 0/0 0/0 .rodata @4394 */ -SECTION_RODATA static u8 const lit_4394[12] = { - 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, -}; -COMPILER_STRIP_GATE(0x80D127E4, &lit_4394); + mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm); + draw(FALSE, FALSE, daObjTks_Param_c::m.common.real_shadow_size, NULL, FALSE); + return 1; +} /* 80D0FED0-80D10094 000D30 01C4+00 1/1 0/0 0/0 .text ctrlJoint__10daObjTks_cFP8J3DJointP8J3DModel */ -void daObjTks_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING +int daObjTks_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + int jnt_no = i_joint->getJntNo(); + + int spC[] = {15, 16, 17}; + if (jnt_no == 0) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(15)); + mDoMtx_stack_c::multVecZero(&mLookatPos[0]); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(16)); + mDoMtx_stack_c::multVecZero(&mLookatPos[1]); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(17)); + mDoMtx_stack_c::multVecZero(&mLookatPos[2]); + } + + mDoMtx_stack_c::copy(i_model->getAnmMtx(jnt_no)); + + switch (jnt_no) { + case 15: + case 16: + case 17: + setLookatMtx(jnt_no, spC, daObjTks_Param_c::m.common.neck_rotation_ratio); + break; + } + + i_model->setAnmMtx(jnt_no, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + if ((jnt_no == 0x11 || jnt_no == 0x13) && (mAnmFlags & 0x100)) { + J3DAnmTransform* bck_p = mBckAnm.getBckAnm(); + mBckAnm.changeBckOnly(mpMorf->getAnm()); + mpMorf->changeAnm(bck_p); + } + + return 1; } /* 80D10094-80D100B4 000EF4 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__10daObjTks_cFP10fopAc_ac_c */ -void daObjTks_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daObjTks_c::createHeapCallBack(fopAc_ac_c* i_this) { + return ((daObjTks_c*)i_this)->CreateHeap(); } /* 80D100B4-80D10100 000F14 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__10daObjTks_cFP8J3DJointi */ -void daObjTks_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daObjTks_c::ctrlJointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == NULL) { + J3DModel* mdl_p = j3dSys.getModel(); + daObjTks_c* a_this = (daObjTks_c*)mdl_p->getUserArea(); + + if (a_this != NULL) { + a_this->ctrlJoint(i_joint, mdl_p); + } + } + + return 1; } /* 80D10100-80D10184 000F60 0084+00 1/0 0/0 0/0 .text setMtx__10daObjTks_cFv */ void daObjTks_c::setMtx() { - // NONMATCHING + J3DModel* mdl_p = mpMorf->getModel(); + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(scale); + + mdl_p->setBaseTRMtx(mDoMtx_stack_c::get()); + mdl_p->setUserArea((u32)this); + + if (mAnmFlags & ANM_PLAY_BCK) { + mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame()); + } + + mpMorf->modelCalc(); } /* 80D10184-80D102D0 000FE4 014C+00 1/0 0/0 0/0 .text setExpressionAnm__10daObjTks_cFib */ -void daObjTks_c::setExpressionAnm(int param_0, bool param_1) { - // NONMATCHING +bool daObjTks_c::setExpressionAnm(int i_anm, bool i_modify) { + mAnmFlags &= ~ANM_EXPRESSION_FLAGS; + + J3DAnmTransform* bck_p = l_bckGetParamList[i_anm].fileIdx >= 0 ? getTrnsfrmKeyAnmP(l_arcName, l_bckGetParamList[i_anm].fileIdx) : NULL; + int mode = l_bckGetParamList[i_anm].arcIdx; + bool var_r29 = false; + + switch (i_anm) { + case 0: + var_r29 = setExpressionBtp(0); + break; + case 1: + var_r29 = setExpressionBtp(0); + break; + default: + bck_p = NULL; + break; + } + + if (!var_r29) { + return false; + } + + if (bck_p == NULL) { + return true; + } + + if (setBckAnm(bck_p, 1.0f, mode, 0, -1, i_modify)) { + mAnmFlags |= (ANM_PLAY_BCK | ANM_PAUSE_BCK); + mExpressionLoops = 0; + return true; + } else { + // "%s: Failed to register expression Bck animation! \n" + OS_REPORT("%s: 表情Bckアニメーションの登録に失敗しました!\n", __FILE__); + return false; + } } /* 80D102D0-80D103A4 001130 00D4+00 1/0 0/0 0/0 .text setExpressionBtp__10daObjTks_cFi */ -void daObjTks_c::setExpressionBtp(int param_0) { - // NONMATCHING +bool daObjTks_c::setExpressionBtp(int i_anm) { + J3DAnmTexPattern* btp_p = getTexPtrnAnmP(l_arcName, l_btpGetParamList[i_anm].fileIdx); + int mode = l_btpGetParamList[i_anm].arcIdx; + mAnmFlags &= ~(ANM_FLAG_800 | ANM_PLAY_BTP | ANM_PAUSE_BTP); + + if (btp_p == NULL) { + return 1; + } + + if (setBtpAnm(btp_p, mpMorf->getModel()->getModelData(), 1.0f, mode)) { + mAnmFlags |= (ANM_PLAY_BTP | ANM_PAUSE_BTP); + if (i_anm == 0) { + mAnmFlags |= ANM_FLAG_800; + } + return true; + } else { + // "%s: Failed to register expression Btp animation! \n" + OS_REPORT("%s: 表情Btpアニメーションの登録に失敗しました!\n", __FILE__); + return false; + } } /* 80D103A4-80D103E8 001204 0044+00 1/0 0/0 0/0 .text setMotion__10daObjTks_cFifi */ -void daObjTks_c::setMotion(int param_0, f32 param_1, int param_2) { - // NONMATCHING +void daObjTks_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) { + s16 motion = i_motion; + if (i_restart || mMotion != motion) { + if (i_motion >= 0 && i_motion < 4) { + mMotion = motion; + mMotionMorfOverride = i_morf; + mMotionPrevPhase = -1; + mMotionPhase = 0; + } + } } -/* ############################################################################################## */ -/* 80D127F0-80D127F4 0000B4 0004+00 1/6 0/0 0/0 .rodata @4599 */ -SECTION_RODATA static u8 const lit_4599[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D127F0, &lit_4599); - -/* 80D127F4-80D127F8 0000B8 0004+00 0/1 0/0 0/0 .rodata @4600 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4600 = 3.0f / 20.0f; -COMPILER_STRIP_GATE(0x80D127F4, &lit_4600); -#pragma pop - /* 80D103E8-80D10578 001248 0190+00 1/1 0/0 0/0 .text reset__10daObjTks_cFv */ void daObjTks_c::reset() { - // NONMATCHING + initialize(); + mpMatAnm->initialize(); + mLookat.initialize(); + + gravity = 0.0f; + mAction = NULL; + mLookMode = -1; + field_0xdde = 0; + + daPy_py_c* player = daPy_getPlayerActorClass(); + mDoMtx_stack_c::transS(*fopAcM_GetPosition_p(player)); + mDoMtx_stack_c::YrotM(fopAcM_GetAngle_p(player)->y); + mDoMtx_stack_c::transM(daObjTks_Param_c::m.offset_x, daObjTks_Param_c::m.offset_y, daObjTks_Param_c::m.offset_z); + mDoMtx_stack_c::multVecZero(&home.pos); + old.pos = home.pos; + current.pos = home.pos; + + setAngle(fopAcM_searchPlayerAngleY(this)); + speedF = 0.0f; + speed.setall(0.0f); + scale.setall(0.0f); + field_0xdcc = 0.15f; + field_0xdd0 = 0.0f; + parentActorID = fpcM_ERROR_PROCESS_ID_e; + setAction(&daObjTks_c::talk); + + mExpressionMorfOverride = 0.0f; + mMotionMorfOverride = 0.0f; } /* 80D10578-80D10618 0013D8 00A0+00 1/1 0/0 0/0 .text * setAction__10daObjTks_cFM10daObjTks_cFPCvPv_v */ -void daObjTks_c::setAction(void (daObjTks_c::*param_0)()) { - // NONMATCHING +int daObjTks_c::setAction(void (daObjTks_c::*i_action)()) { + field_0xdde = 3; + + if (mAction) { + (this->*mAction)(); + } + + field_0xdde = 0; + mAction = i_action; + + if (mAction) { + (this->*mAction)(); + } + + return 1; } /* 80D10618-80D106C8 001478 00B0+00 3/0 0/0 0/0 .text wait__10daObjTks_cFv */ void daObjTks_c::wait() { - // NONMATCHING + switch (field_0xdde) { + case 0: + setExpression(1, -1.0f); + setMotion(0, -1.0f, 0); + setLookMode(2); + speedF = 0.0f; + field_0xdde = 2; + break; + case 2: + case 3: + break; + default: + JUT_ASSERT(1183, 0); + break; + } } /* 80D106C8-80D106F4 001528 002C+00 1/0 0/0 0/0 .text setExpression__10daObjTks_cFif */ -void daObjTks_c::setExpression(int param_0, f32 param_1) { - // NONMATCHING +void daObjTks_c::setExpression(int i_expression, f32 i_morf) { + if (i_expression >= 0 && i_expression < 2) { + mExpression = i_expression; + mExpressionMorfOverride = i_morf; + mExpressionPrevPhase = -1; + mExpressionPhase = 0; + } } -/* ############################################################################################## */ -/* 80D127F8-80D12804 0000BC 000C+00 0/1 0/0 0/0 .rodata @4601 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4601[12] = { - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D127F8, &lit_4601); -#pragma pop +void daObjTks_c::playExpression() { + daNpcF_anmPlayData anm0_phase1 = {1, daObjTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm0_m[] = {&anm0_phase1}; -/* 80D12804-80D12808 0000C8 0004+00 0/1 0/0 0/0 .rodata @4602 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4602[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D12804, &lit_4602); -#pragma pop + daNpcF_anmPlayData anm1_phase1 = {0, daObjTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm1_m[] = {&anm1_phase1}; -/* 80D12808-80D12814 0000CC 000C+00 0/1 0/0 0/0 .rodata @4603 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4603[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12808, &lit_4603); -#pragma pop + daNpcF_anmPlayData** anmData_p[] = {anm0_m, anm1_m}; -/* 80D12814-80D12818 0000D8 0004+00 0/1 0/0 0/0 .rodata @4604 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4604[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D12814, &lit_4604); -#pragma pop - -/* 80D12818-80D12820 0000DC 0008+00 0/1 0/0 0/0 .rodata @4605 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4605[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12818, &lit_4605); -#pragma pop - -/* 80D12820-80D1282C 0000E4 000C+00 0/1 0/0 0/0 .rodata @4609 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4609[12] = { - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12820, &lit_4609); -#pragma pop - -/* 80D1282C-80D12830 0000F0 0004+00 0/1 0/0 0/0 .rodata @4610 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4610[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D1282C, &lit_4610); -#pragma pop - -/* 80D12830-80D1283C 0000F4 000C+00 0/1 0/0 0/0 .rodata @4611 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4611[12] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80D12830, &lit_4611); -#pragma pop - -/* 80D1283C-80D12844 000100 0008+00 0/1 0/0 0/0 .rodata @4612 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4612[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D1283C, &lit_4612); -#pragma pop - -/* 80D12844-80D12850 000108 000C+00 0/1 0/0 0/0 .rodata @4613 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4613[12] = { - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12844, &lit_4613); -#pragma pop - -/* 80D12850-80D12854 000114 0004+00 0/1 0/0 0/0 .rodata @4614 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4614[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D12850, &lit_4614); -#pragma pop - -/* 80D12854-80D12860 000118 000C+00 0/1 0/0 0/0 .rodata @4615 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4615[12] = { - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80D12854, &lit_4615); -#pragma pop - -/* 80D12860-80D12868 000124 0008+00 0/1 0/0 0/0 .rodata @4616 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4616[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12860, &lit_4616); -#pragma pop - -/* 80D12868-80D12878 00012C 0010+00 0/1 0/0 0/0 .rodata @4617 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4617[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12868, &lit_4617); -#pragma pop - -/* 80D12878-80D12884 00013C 000C+00 0/1 0/0 0/0 .rodata @4631 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4631[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12878, &lit_4631); -#pragma pop - -/* 80D12884-80D12888 000148 0004+00 1/2 0/0 0/0 .rodata @4733 */ -SECTION_RODATA static f32 const lit_4733 = 30.0f; -COMPILER_STRIP_GATE(0x80D12884, &lit_4733); - -/* 80D106F4-80D10A80 001554 038C+00 1/0 0/0 0/0 .text talk__10daObjTks_cFv */ -void daObjTks_c::talk() { - // NONMATCHING + if (mExpression >= 0 && mExpression < 2) { + playExpressionAnm(anmData_p); + } } -/* ############################################################################################## */ -/* 80D12888-80D12894 00014C 0008+04 0/1 0/0 0/0 .rodata @4760 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4760[8 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D12888, &lit_4760); -#pragma pop +void daObjTks_c::playMotion() { + daNpcF_anmPlayData anm0_phase1 = {2, daObjTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm0_m[] = {&anm0_phase1}; -/* 80D12894-80D1289C 000158 0008+00 0/1 0/0 0/0 .rodata @4864 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4864[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D12894, &lit_4864); -#pragma pop + daNpcF_anmPlayData anm1_phase1 = {3, daObjTks_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData* anm1_m[] = {&anm1_phase1, NULL}; -/* 80D128C8-80D128C8 00018C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D128D9 = "TKS_SECRET"; -#pragma pop + daNpcF_anmPlayData anm2_phase1 = {4, daObjTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm2_m[] = {&anm2_phase1}; -/* 80D10A80-80D11104 0018E0 0684+00 1/0 0/0 0/0 .text demo__10daObjTks_cFv */ -void daObjTks_c::demo() { - // NONMATCHING + daNpcF_anmPlayData anm3_phase1 = {5, daObjTks_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData* anm3_m[] = {&anm3_phase1, NULL}; + + daNpcF_anmPlayData** anmData_p[] = {anm0_m, anm1_m, anm2_m, anm3_m}; + + if (mMotion >= 0 && mMotion < 4) { + playMotionAnm(anmData_p); + } } -/* 80D11104-80D11228 001F64 0124+00 1/0 0/0 0/0 .text setMotionAnm__10daObjTks_cFif */ -bool daObjTks_c::setMotionAnm(int param_0, f32 param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D1289C-80D128A0 000160 0004+00 0/1 0/0 0/0 .rodata @4946 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4946 = -0.5f; -COMPILER_STRIP_GATE(0x80D1289C, &lit_4946); -#pragma pop - -/* 80D128C8-80D128C8 00018C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D128E4 = "TKS_WARP"; -#pragma pop - -/* 80D11228-80D115B8 002088 0390+00 3/0 0/0 0/0 .text warp__10daObjTks_cFv */ -void daObjTks_c::warp() { - // NONMATCHING -} - -/* 80D115B8-80D115D8 002418 0020+00 1/0 0/0 0/0 .text daObjTks_Create__FPv */ -static void daObjTks_Create(void* param_0) { - // NONMATCHING -} - -/* 80D115D8-80D115F8 002438 0020+00 1/0 0/0 0/0 .text daObjTks_Delete__FPv */ -static void daObjTks_Delete(void* param_0) { - // NONMATCHING -} - -/* 80D115F8-80D11618 002458 0020+00 1/0 0/0 0/0 .text daObjTks_Execute__FPv */ -static void daObjTks_Execute(void* param_0) { - // NONMATCHING -} - -/* 80D11618-80D11638 002478 0020+00 1/0 0/0 0/0 .text daObjTks_Draw__FPv */ -static void daObjTks_Draw(void* param_0) { - // NONMATCHING -} - -/* 80D11638-80D11640 002498 0008+00 1/0 0/0 0/0 .text daObjTks_IsDelete__FPv */ -static bool daObjTks_IsDelete(void* param_0) { - return true; -} - -/* 80D11640-80D11670 0024A0 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D128A0-80D128A4 000164 0004+00 1/1 0/0 0/0 .rodata @5005 */ -SECTION_RODATA static f32 const lit_5005 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D128A0, &lit_5005); - -/* 80D11670-80D116C8 0024D0 0058+00 1/0 0/0 0/0 .text setParam__10daObjTks_cFv */ -void daObjTks_c::setParam() { - // NONMATCHING -} - -/* 80D116C8-80D118E8 002528 0220+00 1/0 0/0 0/0 .text main__10daObjTks_cFv */ -void daObjTks_c::main() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D128A4-80D128AC 000168 0004+04 1/1 0/0 0/0 .rodata @5057 */ -SECTION_RODATA static f32 const lit_5057[1 + 1 /* padding */] = { - 1.0f / 5.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D128A4, &lit_5057); - -/* 80D118E8-80D119BC 002748 00D4+00 1/0 0/0 0/0 .text ctrlBtk__10daObjTks_cFv */ -void daObjTks_c::ctrlBtk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D128AC-80D128B4 000170 0008+00 0/1 0/0 0/0 .rodata @5130 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5130[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D128AC, &lit_5130); -#pragma pop - -/* 80D128B4-80D128BC 000178 0008+00 0/1 0/0 0/0 .rodata @5131 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5131[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D128B4, &lit_5131); -#pragma pop - -/* 80D128BC-80D128C4 000180 0008+00 0/1 0/0 0/0 .rodata @5132 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5132[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D128BC, &lit_5132); -#pragma pop - -/* 80D119BC-80D11CB4 00281C 02F8+00 1/0 0/0 0/0 .text setAttnPos__10daObjTks_cFv */ -void daObjTks_c::setAttnPos() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D128C4-80D128C8 000188 0004+00 0/1 0/0 0/0 .rodata @5173 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5173 = 40.0f; -COMPILER_STRIP_GATE(0x80D128C4, &lit_5173); -#pragma pop - /* 80D11CB4-80D11E94 002B14 01E0+00 1/1 0/0 0/0 .text lookat__10daObjTks_cFv */ void daObjTks_c::lookat() { - // NONMATCHING + daPy_py_c* player = NULL; + J3DModel* model_p = mpMorf->getModel(); + + int var_r28 = 0; + f32 body_angleX_min = daObjTks_Param_c::m.common.body_angleX_min; + f32 body_angleX_max = daObjTks_Param_c::m.common.body_angleX_max; + f32 body_angleY_min = daObjTks_Param_c::m.common.body_angleY_min; + f32 body_angleY_max = daObjTks_Param_c::m.common.body_angleY_max; + f32 head_angleX_min = daObjTks_Param_c::m.common.head_angleX_min; + f32 head_angleX_max = daObjTks_Param_c::m.common.head_angleX_max; + f32 head_angleY_min = daObjTks_Param_c::m.common.head_angleY_min; + f32 head_angleY_max = daObjTks_Param_c::m.common.head_angleY_max; + + s16 temp_r26 = mCurAngle.y - mOldAngle.y; + cXyz sp30[] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; + csXyz* sp24[] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; + + cXyz sp18; + switch (mLookMode) { + case LOOK_NONE: + break; + case LOOK_RESET: + var_r28 = 1; + break; + case LOOK_PLAYER: + case LOOK_PLAYER_TALK: + player = daPy_getPlayerActorClass(); + if (mLookMode == LOOK_PLAYER_TALK) { + head_angleY_min = -80.0f; + head_angleY_max = 80.0f; + } + break; + } + + if (player != NULL) { + mLookPos = player->attention_info.position; + if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) { + mLookPos.y -= 40.0f; + } + mLookat.setAttnPos(&mLookPos); + } else { + mLookat.setAttnPos(NULL); + } + + mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, + 0.0f, 0.0f, 0.0f, 0.0f, + head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max, + mCurAngle.y, sp30); + mLookat.calc(this, model_p->getBaseTRMtx(), sp24, var_r28, temp_r26, 0); +} + +/* 80D106F4-80D10A80 001554 038C+00 1/0 0/0 0/0 .text talk__10daObjTks_cFv */ +void daObjTks_c::talk() { + switch (field_0xdde) { + case 0: + setExpression(1, -1.0f); + setMotion(0, -1.0f, 0); + setLookMode(3); + initTalk(2, NULL); + mMsgTimer = 0; + field_0xdde = 2; + return; + case 2: { + if (field_0xde1 != 0 && parentActorID == fpcM_ERROR_PROCESS_ID_e && daNpcF_chkEvtBit(0x147)) { + cXyz pos(current.pos); + pos.y += 30.0f; + parentActorID = fopAcM_createChild(PROC_NPC_TKC, fopAcM_GetID(this), 1, &pos, fopAcM_GetRoomNo(this), &mCurAngle, NULL, -1, NULL); + } + + if (talkProc(NULL, TRUE, NULL)) { + int choice_no = mFlow.getChoiceNo(); + OS_REPORT("おばちゃん二択分岐 %s\n", choice_no == 0 ? "はい" : "いいえ"); + + if (choice_no == 0) { + if (daNpcF_chkEvtBit(0x147)) { + setAction(&daObjTks_c::warp); + } else { + setAction(&daObjTks_c::demo); + } + } else { + dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); + dComIfGp_event_reset(); + fopAcM_delete(this); + } + return; + } + + int temp_r27 = mMsgTimer; + int sp14, sp10; + if (ctrlMsgAnm(sp14, sp10, this, FALSE)) { + setExpression(sp14, -1.0f); + setMotion(sp10, -1.0f, 0); + } else if (temp_r27 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + return; + } + case 3: + default: + JUT_ASSERT(1243, 0); + return; + } +} + +/* 80D10A80-80D11104 0018E0 0684+00 1/0 0/0 0/0 .text demo__10daObjTks_cFv */ +void daObjTks_c::demo() { + switch (field_0xdde) { + case 0: + dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); + dComIfGp_getEvent().reset(this); + eventInfo.setArchiveName(l_arcName); + dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName()); + mEventIdx = dComIfGp_getEventManager().getEventIdx(this, "TKS_SECRET", 0xFF); + fopAcM_orderChangeEventId(this, mEventIdx, 1, 0xFFFF); + setExpression(1, -1.0f); + setMotionAnm(2, 0.0f); + setLookMode(2); + field_0xdde = 2; + return; + case 2: + if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk()) { + dEvent_manager_c& eventMgr = dComIfGp_getEventManager(); + int staff_id = eventMgr.getMyStaffId(l_myName, NULL, 0); + if (staff_id == -1) { + return; + } + + char* cut_name = eventMgr.getMyNowCutName(staff_id); + + if (eventMgr.getIsAddvance(staff_id)) { + switch (*(u32*)cut_name) { + case '0001': + case '0003': + case '0004': + case '0005': + case '0006': + initTalk(2, NULL); + break; + case '0002': + cXyz pos(current.pos); + pos.y += 30.0f; + parentActorID = fopAcM_createChild(PROC_NPC_TKC, fopAcM_GetID(this), 0, &pos, fopAcM_GetRoomNo(this), &mCurAngle, NULL, -1, NULL); + + Z2GetAudioMgr()->subBgmStart(Z2BGM_OBACHAN); + Z2GetAudioMgr()->bgmAllUnMute(0); + break; + } + } + + switch (*(u32*)cut_name) { + case '0001': + case '0003': + case '0004': + case '0005': { + fopAc_ac_c* mesg_actor_list[2] = {NULL, NULL}; + mesg_actor_list[0] = this; + mesg_actor_list[1] = fopAcM_SearchByID(parentActorID); + dComIfGp_setMesgCameraInfoActor(mesg_actor_list[0], mesg_actor_list[1], NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + + if (talkProc(NULL, 1, mesg_actor_list)) { + if (*(u32*)cut_name == '0001') { + Z2GetAudioMgr()->bgmAllMute(140, 0.0f); + } + eventMgr.cutEnd(staff_id); + } else { + int sp30, sp2C; + int sp28 = mMsgTimer; + if (ctrlMsgAnm(sp30, sp2C, this, FALSE)) { + setExpression(sp30, -1.0f); + setMotion(sp2C, -1.0f, 0); + } else if (sp28 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + } + break; + } + case '0006': + if (talkProc(NULL, TRUE, NULL)) { + setAction(&daObjTks_c::warp); + eventMgr.cutEnd(staff_id); + } else { + int sp24, sp20; + int sp1C = mMsgTimer; + if (ctrlMsgAnm(sp24, sp20, this, 0)) { + setExpression(sp24, -1.0f); + setMotion(sp20, -1.0f, 0); + } else if (sp1C != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + } + break; + case '0002': + eventMgr.cutEnd(staff_id); + break; + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventMgr.endCheck(mEventIdx)) { + setAction(&daObjTks_c::wait); + } + } + break; + case 3: + if (field_0x9ec == 0) { + dComIfGp_event_reset(); + } + field_0x9ec = 0; + mEventIdx = -1; + return; + default: + JUT_ASSERT(1374, 0); + break; + } +} + +/* 80D11104-80D11228 001F64 0124+00 1/0 0/0 0/0 .text setMotionAnm__10daObjTks_cFif */ +void daObjTks_c::setMotionAnm(int i_anm, f32 i_morf) { + if (i_anm < 2 || i_anm >= 6) { + return; + } + + J3DAnmTransformKey* bck_p = getTrnsfrmKeyAnmP(l_arcName, l_bckGetParamList[i_anm].fileIdx); + int temp_r25 = l_bckGetParamList[i_anm].arcIdx; + mAnmFlags &= ~(ANM_PLAY_BTK | ANM_PLAY_MORF | ANM_PAUSE_BTK | ANM_PAUSE_MORF); + if (bck_p != NULL && setMcaMorfAnm(bck_p, 1.0f, i_morf, temp_r25, 0, -1)) { + mAnmFlags |= (ANM_PLAY_MORF | ANM_PAUSE_MORF); + mMotionLoops = 0; + } + + J3DAnmTextureSRTKey* btk_p = getTexSRTKeyAnmP(l_arcName, l_btkGetParamList[0].fileIdx); + int temp_r24 = l_btkGetParamList[0].arcIdx; + if (btk_p != NULL && setBtkAnm(btk_p, mpMorf->getModel()->getModelData(), 1.0f, temp_r24)) { + mAnmFlags |= (ANM_PLAY_BTK | ANM_PAUSE_BTK); + } +} + +/* 80D11228-80D115B8 002088 0390+00 3/0 0/0 0/0 .text warp__10daObjTks_cFv */ +void daObjTks_c::warp() { + switch (field_0xdde) { + case 0: + dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); + dComIfGp_getEvent().reset(this); + eventInfo.setArchiveName(l_arcName); + dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName()); + mEventIdx = dComIfGp_getEventManager().getEventIdx(this, "TKS_WARP", 0xFF); + fopAcM_orderChangeEventId(this, mEventIdx, 1, 0xFFFF); + + setExpression(1, -1.0f); + setMotionAnm(2, 0.0f); + setLookMode(2); + field_0xdde = 2; + return; + case 2: + if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) { + dEvent_manager_c& eventMgr = dComIfGp_getEventManager(); + int staff_id = eventMgr.getMyStaffId(l_myName, NULL, 0); + + if (staff_id != -1) { + char* cut_name = eventMgr.getMyNowCutName(staff_id); + if (eventMgr.getIsAddvance(staff_id)) { + switch (*(u32*)cut_name) { + case '0002': + gravity = daObjTks_Param_c::m.common.gravity; + break; + case '0001': + JUT_ASSERT(1419, 0); + } + } + + switch (*(u32*)cut_name) { + case '0001': + eventMgr.cutEnd(staff_id); + break; + case '0002': + if (mAcch.ChkGroundLanding()) { + speed.y *= -0.5f; + } + eventMgr.cutEnd(staff_id); + break; + default: + JUT_ASSERT(1431, 0); + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventMgr.endCheck(mEventIdx)) { + setAction(&daObjTks_c::wait); + } + } + } else { + setAction(&daObjTks_c::wait); + } + return; + case 3: + if (field_0x9ec == 0) { + dComIfGp_event_reset(); + } + field_0x9ec = 0; + mEventIdx = -1; + return; + default: + JUT_ASSERT(1452, 0); + break; + } +} + +/* 80D115B8-80D115D8 002418 0020+00 1/0 0/0 0/0 .text daObjTks_Create__FPv */ +static int daObjTks_Create(void* i_this) { + return ((daObjTks_c*)i_this)->Create(); +} + +/* 80D115D8-80D115F8 002438 0020+00 1/0 0/0 0/0 .text daObjTks_Delete__FPv */ +static int daObjTks_Delete(void* i_this) { + return ((daObjTks_c*)i_this)->Delete(); +} + +/* 80D115F8-80D11618 002458 0020+00 1/0 0/0 0/0 .text daObjTks_Execute__FPv */ +static int daObjTks_Execute(void* i_this) { + return ((daObjTks_c*)i_this)->Execute(); +} + +/* 80D11618-80D11638 002478 0020+00 1/0 0/0 0/0 .text daObjTks_Draw__FPv */ +static int daObjTks_Draw(void* i_this) { + return ((daObjTks_c*)i_this)->Draw(); +} + +/* 80D11638-80D11640 002498 0008+00 1/0 0/0 0/0 .text daObjTks_IsDelete__FPv */ +static int daObjTks_IsDelete(void* i_this) { + return 1; +} + +/* 80D11670-80D116C8 0024D0 0058+00 1/0 0/0 0/0 .text setParam__10daObjTks_cFv */ +void daObjTks_c::setParam() { + calcSpringF(&field_0xdcc, 0.7f, &field_0xdd0); + scale.setall(field_0xdcc); + + #if VERSION == VERSION_SHIELD_DEBUG + mAcchCir.SetWallR(daObjTks_Param_c::m.common.width); + mAcchCir.SetWallH(daObjTks_Param_c::m.common.height); + #endif +} + +/* 80D116C8-80D118E8 002528 0220+00 1/0 0/0 0/0 .text main__10daObjTks_cFv */ +BOOL daObjTks_c::main() { + if (mAction != NULL) { + (this->*mAction)(); + } + + playExpression(); + playMotion(); + return 1; +} + +/* 80D118E8-80D119BC 002748 00D4+00 1/0 0/0 0/0 .text ctrlBtk__10daObjTks_cFv */ +BOOL daObjTks_c::ctrlBtk() { + if (mpMatAnm != NULL) { + J3DAnmTextureSRTKey* btk_p = getTexSRTKeyAnmP(l_arcName, l_btkGetParamList[0].fileIdx); + if (btk_p == mBtkAnm.getBtkAnm()) { + mpMatAnm->setNowOffsetX(-1.0f * (0.2f * cM_ssin(mEyeAngle.y))); + mpMatAnm->setNowOffsetY(0.2f * cM_ssin(mEyeAngle.x)); + mpMatAnm->onEyeMoveFlag(); + return TRUE; + } + + mpMatAnm->offEyeMoveFlag(); + } + + return FALSE; +} + +/* 80D119BC-80D11CB4 00281C 02F8+00 1/0 0/0 0/0 .text setAttnPos__10daObjTks_cFv */ +void daObjTks_c::setAttnPos() { + if (mLookMode == LOOK_RESET) { + for (int i = 0; i < 3; i++) { + mLookatAngle[i].setall(0); + } + } + + setMtx(); + lookat(); + + cXyz sp14(10.0f, 10.0f, 0.0f); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(17)); + mDoMtx_stack_c::multVecZero(&mHeadPos); + mDoMtx_stack_c::multVec(&sp14, &eyePos); + sp14.x = 0.0f; + mDoMtx_stack_c::multVec(&sp14, &sp14); + + mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &sp14); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &sp14); + + cXyz* attn_pos_p = mLookat.getAttnPos(); + if (attn_pos_p != NULL) { + cXyz sp8 = *attn_pos_p - eyePos; + + mEyeAngle.y = -mLookatAngle[2].y - mCurAngle.y; + mEyeAngle.y += cM_atan2s(sp8.x, sp8.z); + mEyeAngle.x = -cM_atan2s(sp8.y, sp8.absXZ()); + } else { + mEyeAngle.y = 0; + mEyeAngle.x = 0; + } + + attention_info.position.set(current.pos.x, current.pos.y + daObjTks_Param_c::m.common.attention_offset, current.pos.z); + + if (!fopAcM_checkCarryNow(this)) { + mCcCyl.SetC(current.pos); + #if VERSION == VERSION_SHIELD_DEBUG + mCcCyl.SetH(daObjTks_Param_c::m.common.height); + mCcCyl.SetR(daObjTks_Param_c::m.common.width); + #endif + dComIfG_Ccsp()->Set(&mCcCyl); + } } /* 80D11E94-80D11E9C 002CF4 0008+00 1/0 0/0 0/0 .text drawDbgInfo__10daObjTks_cFv */ -bool daObjTks_c::drawDbgInfo() { +BOOL daObjTks_c::drawDbgInfo() { return false; } /* 80D11E9C-80D11EA0 002CFC 0004+00 1/0 0/0 0/0 .text drawOtherMdls__10daObjTks_cFv */ -void daObjTks_c::drawOtherMdls() { - /* empty function */ -} - -/* 80D11EA0-80D11EAC 002D00 000C+00 1/1 0/0 0/0 .text sinShort__Q25JMath18TSinCosTable<13,f>CFs */ -extern "C" void func_80D11EA0(void* _this, s16 param_0) /* const */ { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D12AE4-80D12AF0 0001F4 000C+00 2/2 0/0 0/0 .data __vt__16daObjTks_Param_c */ -SECTION_DATA extern void* __vt__16daObjTks_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daObjTks_Param_cFv, -}; - -/* 80D12AF8-80D12B04 000008 000C+00 1/1 0/0 0/0 .bss @3917 */ -static u8 lit_3917[12]; +void daObjTks_c::drawOtherMdls() {} /* 80D12B04-80D12B08 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; +static daObjTks_Param_c l_HIO; -/* 80D11EAC-80D11EEC 002D0C 0040+00 0/0 1/0 0/0 .text __sinit_d_a_obj_tks_cpp */ -void __sinit_d_a_obj_tks_cpp() { - // NONMATCHING -} +/* 80D129BC-80D129DC -00001 0020+00 1/0 0/0 0/0 .data daObjTks_MethodTable */ +static actor_method_class daObjTks_MethodTable = { + (process_method_func)daObjTks_Create, + (process_method_func)daObjTks_Delete, + (process_method_func)daObjTks_Execute, + (process_method_func)daObjTks_IsDelete, + (process_method_func)daObjTks_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80D11EAC, __sinit_d_a_obj_tks_cpp); -#pragma pop - -/* 80D11EEC-80D11FBC 002D4C 00D0+00 1/0 0/0 0/0 .text __dt__15daNpcF_Lookat_cFv */ -// daNpcF_Lookat_c::~daNpcF_Lookat_c() { -extern "C" void __dt__15daNpcF_Lookat_cFv() { - // NONMATCHING -} - -/* 80D11FBC-80D11FF8 002E1C 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80D11FF8-80D11FFC 002E58 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80D11FFC-80D12038 002E5C 003C+00 5/5 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80D12038-80D1203C 002E98 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80D1203C-80D12288 002E9C 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */ -// daNpcF_c::~daNpcF_c() { -extern "C" void __dt__8daNpcF_cFv() { - // NONMATCHING -} - -/* 80D12288-80D122D0 0030E8 0048+00 3/2 0/0 0/0 .text __dt__18daNpcF_ActorMngr_cFv */ -// daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { -extern "C" void __dt__18daNpcF_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80D122D0-80D124C0 003130 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */ -// daNpcF_c::daNpcF_c() { -extern "C" void __ct__8daNpcF_cFv() { - // NONMATCHING -} - -/* 80D124C0-80D124FC 003320 003C+00 1/1 0/0 0/0 .text __ct__18daNpcF_ActorMngr_cFv */ -// daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() { -extern "C" void __ct__18daNpcF_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80D124FC-80D1256C 00335C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80D1256C-80D125C8 0033CC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D125C8-80D12638 003428 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80D12638-80D12680 003498 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80D12680-80D12684 0034E0 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__8daNpcF_cFv */ -// void daNpcF_c::adjustShapeAngle() { -extern "C" void adjustShapeAngle__8daNpcF_cFv() { - /* empty function */ -} - -/* 80D12684-80D12688 0034E4 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */ -// void daNpcF_c::setCollisions() { -extern "C" void setCollisions__8daNpcF_cFv() { - /* empty function */ -} - -/* 80D12688-80D126D0 0034E8 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D126D0-80D12718 003530 0048+00 2/1 0/0 0/0 .text __dt__16daObjTks_Param_cFv */ -daObjTks_Param_c::~daObjTks_Param_c() { - // NONMATCHING -} - -/* 80D12718-80D12720 003578 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80D12718() { - // NONMATCHING -} - -/* 80D12720-80D12728 003580 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80D12720() { - // NONMATCHING -} - -/* 80D128C8-80D128C8 00018C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80D129DC-80D12A0C -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_TKS */ +extern actor_process_profile_definition g_profile_OBJ_TKS = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_OBJ_TKS, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjTks_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 376, // mPriority + &daObjTks_MethodTable, // sub_method + 0x08044008, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};