summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTtobas <epona.link@hotmail.fr>2025-03-26 02:05:02 +0100
committerGitHub <noreply@github.com>2025-03-25 18:05:02 -0700
commitb6febdc2b6e4b2f7674d581a8a59eec173e4b188 (patch)
treeec8ab635b747b0577c50f15d0f94d0bf70d16687
parente876797c3d1e1192755e554deb9fce49af5f280b (diff)
d_a_obj_shoe 91% (#2347)
* Basic structure done * daNpcShoe_Param_c done, class cleaned a bit, ::Create matching, destructor matching * WIP * About 70% done * Fix after merging main * TU almost done, missing correct rodata ordering, constructor, setMotionAnim, __sinit not matching * Fix: Apply suggestions --------- Co-authored-by: Ttobas <anon@ym.ous>
-rw-r--r--include/d/actor/d_a_npc_shoe.h142
-rw-r--r--include/m_Do/m_Do_ext.h1
-rw-r--r--src/d/actor/d_a_npc_shoe.cpp1558
3 files changed, 781 insertions, 920 deletions
diff --git a/include/d/actor/d_a_npc_shoe.h b/include/d/actor/d_a_npc_shoe.h
index 0c23a3a254..4c78e3f303 100644
--- a/include/d/actor/d_a_npc_shoe.h
+++ b/include/d/actor/d_a_npc_shoe.h
@@ -11,47 +11,147 @@
* @details
*
*/
-class daNpcShoe_c : public fopAc_ac_c {
+class daNpcShoe_c : public daNpcF_c {
public:
+ typedef bool (daNpcShoe_c::*actionFunc)(void*);
+ typedef BOOL (daNpcShoe_c::*EventFn)(int);
+
+ enum Animation {
+ /* 0x01 */ ANM_M_SITWAIT_A,
+ /* 0x02 */ ANM_M_SITTALK_A,
+ /* 0x03 */ ANM_M_SITTALK_A_B,
+ /* 0x04 */ ANM_SHOE_TALK_A,
+ /* 0x05 */ ANM_M_SIT_TO_WOLF_A
+ };
+
+ enum Motion {
+ /* 0x01 */ MOT_SITWAIT_A,
+ /* 0x02 */ MOT_SITTALK_A,
+ /* 0x03 */ MOT_SITTALK_A_B,
+ /* 0x04 */ MOT_SHOE_TALK_A,
+ /* 0x05 */ MOT_SIT_TO_WOLF_A,
+ };
+
/* 80AE794C */ daNpcShoe_c();
/* 80AE7B60 */ ~daNpcShoe_c();
- /* 80AE7D48 */ void Create();
- /* 80AE7FD8 */ void CreateHeap();
- /* 80AE81E8 */ void Delete();
- /* 80AE821C */ void Execute();
- /* 80AE8308 */ void Draw();
- /* 80AE840C */ void ctrlJoint(J3DJoint*, J3DModel*);
- /* 80AE8598 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80AE85B8 */ void ctrlJointCallBack(J3DJoint*, int);
- /* 80AE8604 */ void setMotion(int, f32, int);
+ /* 80AE7D48 */ cPhs__Step Create();
+ /* 80AE7FD8 */ BOOL CreateHeap();
+ /* 80AE81E8 */ int Delete();
+ /* 80AE821C */ int Execute();
+ /* 80AE8308 */ int Draw();
+ /* 80AE840C */ bool ctrlJoint(J3DJoint*, J3DModel*);
+ /* 80AE8598 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80AE85B8 */ static BOOL ctrlJointCallBack(J3DJoint*, int);
+ /* 80AE8604 */ void setMotion(int, f32, BOOL);
/* 80AE864C */ void reset();
- /* 80AE895C */ void setAction(bool (daNpcShoe_c::*)(void*));
- /* 80AE8A04 */ void wait(void*);
- /* 80AE8E24 */ void fear(void*);
- /* 80AE8ED4 */ void talk(void*);
- /* 80AE9094 */ void demo(void*);
+ /* 80AE895C */ inline int setAction(actionFunc);
+ /* 80AE8A04 */ bool wait(void*);
+ /* 80AE8E24 */ bool fear(void*);
+ /* 80AE8ED4 */ bool talk(void*);
+ /* 80AE9094 */ bool demo(void*);
/* 80AE92E8 */ void setParam();
- /* 80AE93A0 */ void main();
+ /* 80AE93A0 */ BOOL main();
/* 80AE9624 */ void setAttnPos();
/* 80AE9820 */ void lookat();
/* 80AE9A00 */ bool setMotionAnm(int, f32);
- /* 80AE9AD0 */ bool drawDbgInfo();
+ /* 80AE9AD0 */ BOOL drawDbgInfo();
/* 80AEA340 */ void adjustShapeAngle();
- static u8 mEvtSeqList[12];
+ s16 getMessageNo() { return fopAcM_GetParam(this) >> 0x10; }
+
+ int getTime() { return getTimeMinute() + getTimeHour() * 60; }
+ int getTimeHour() {
+ if (dKy_darkworld_check() != 0) {
+ return dKy_getDarktime_hour();
+ } else {
+ return dKy_getdaytime_hour();
+ }
+ }
+ int getTimeMinute() {
+ if (dKy_darkworld_check() != 0) {
+ return dKy_getDarktime_minute();
+ } else {
+ return dKy_getdaytime_minute();
+ }
+ }
+ int getStartTime() { return fopAcM_GetParam(this) & 0xff; }
+ int getEndTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
+
+ inline void setLookMode(int i_lookMode);
+ inline bool chkFindPlayer();
+ inline void playMotion();
+
+ static EventFn mEvtSeqList[1];
+
private:
- /* 0x568 */ u8 field_0x568[0xe1c - 0x568];
+ /* 0xB48 */ J3DModel* mpModel1;
+ /* 0xB4C */ J3DModel* mpModel2;
+ /* 0xB50 */ Z2CreatureCitizen mCreature;
+ /* 0xBF4 */ u8 field_0xbf4[0xbf8 - 0xbf4];
+ /* 0xBF8 */ daNpcF_Lookat_c mLookat;
+ /* 0xC94 */ daNpcF_ActorMngr_c mActorMngr[1];
+ /* 0xC9C */ u8 field_0xc9c[0xca0 - 0xc9c];
+ /* 0xCA0 */ dCcD_Cyl mCcCyl;
+ /* 0xDDC */ actionFunc mpActionFn;
+ /* 0xDE8 */ request_of_phase_process_class mPhases[3];
+ /* 0xE00 */ u32 field_0xe00;
+ /* 0xE04 */ u32 field_0xe04;
+ /* 0xE08 */ u32 field_0xe08;
+ /* 0xE0C */ u32 field_0xe0c;
+ /* 0xE10 */ s16 mLookMode;
+ /* 0xE12 */ u16 mStartTime;
+ /* 0xE14 */ u16 mEndTime;
+ /* 0xE16 */ u16 field_0xe16;
+ /* 0xE18 */ u16 mMode;
+ /* 0xE1A */ u8 field_0xe1a;
+ /* 0xE1B */ u8 field_0xe1b; // Probably isDaytime or isNighttime
};
STATIC_ASSERT(sizeof(daNpcShoe_c) == 0xe1c);
class daNpcShoe_Param_c {
public:
- /* 80AEA344 */ ~daNpcShoe_Param_c();
+ /* 8095D5D4 */ virtual ~daNpcShoe_Param_c() {}
+
+ struct param {
+ /* 0x00 */ f32 mAttnOffsetY;
+ /* 0x04 */ f32 mGravity;
+ /* 0x08 */ f32 mScale;
+ /* 0x0C */ f32 mShadowDepth;
+ /* 0x10 */ f32 mCcWeight;
+ /* 0x14 */ f32 mCylH;
+ /* 0x18 */ f32 mWallH;
+ /* 0x1C */ f32 mWallR;
+ /* 0x20 */ f32 mBodyUpAngle;
+ /* 0x24 */ f32 mBodyDownAngle;
+ /* 0x28 */ f32 mBodyLeftAngle;
+ /* 0x2C */ f32 mBodyRightAngle;
+ /* 0x30 */ f32 mHeadUpAngle;
+ /* 0x34 */ f32 mHeadDownAngle;
+ /* 0x38 */ f32 mHeadLeftAngle;
+ /* 0x3C */ f32 mHeadRightAngle;
+ /* 0x40 */ f32 mNeckAngleScl;
+ /* 0x44 */ f32 mMorfFrames;
+ /* 0x48 */ s16 mSpeakDistIdx;
+ /* 0x4A */ s16 mSpeakAngleIdx;
+ /* 0x4C */ s16 mTalkDistIdx;
+ /* 0x4E */ s16 mTalkAngleIdx;
+ /* 0x50 */ f32 mAttnFovY;
+ /* 0x54 */ f32 mAttnRadius;
+ /* 0x58 */ f32 mAttnUpperY;
+ /* 0x5C */ f32 mAttnLowerY;
+ /* 0x60 */ s16 field_0x60;
+ /* 0x62 */ s16 mDamageTimer;
+ /* 0x64 */ s16 mTestExpression;
+ /* 0x66 */ s16 mTestMotion;
+ /* 0x68 */ s16 mTestLookMode;
+ /* 0x6A */ bool mTest;
+ };
- static u8 const m[108];
+ static param const m;
};
+STATIC_ASSERT(sizeof(daNpcShoe_Param_c::param) == 0x6C);
#endif /* D_A_NPC_SHOE_H */
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index ce8ddfc083..1fdb9e815f 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -334,6 +334,7 @@ public:
J3DModel* getModel() { return mpModel; }
void offMorfNone() { mMorfNone = false; }
void onMorfNone() { mMorfNone = true; }
+ inline void setTranslateScale(cXyz& i_scale) { mTranslateScale = i_scale; }
J3DTransformInfo* getOldTransInfo() { return mpTransformInfo; }
Quaternion* getOldQuaternion() { return mpQuat; }
void offTranslate() { mTranslate = true; }
diff --git a/src/d/actor/d_a_npc_shoe.cpp b/src/d/actor/d_a_npc_shoe.cpp
index 12586fd1cc..5be79b0896 100644
--- a/src/d/actor/d_a_npc_shoe.cpp
+++ b/src/d/actor/d_a_npc_shoe.cpp
@@ -7,215 +7,44 @@
#include "dol2asm.h"
//
-// Forward References:
-//
-
-extern "C" void __ct__11daNpcShoe_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__11daNpcShoe_cFv();
-extern "C" void Create__11daNpcShoe_cFv();
-extern "C" void CreateHeap__11daNpcShoe_cFv();
-extern "C" void Delete__11daNpcShoe_cFv();
-extern "C" void Execute__11daNpcShoe_cFv();
-extern "C" void Draw__11daNpcShoe_cFv();
-extern "C" void ctrlJoint__11daNpcShoe_cFP8J3DJointP8J3DModel();
-extern "C" void createHeapCallBack__11daNpcShoe_cFP10fopAc_ac_c();
-extern "C" void ctrlJointCallBack__11daNpcShoe_cFP8J3DJointi();
-extern "C" void setMotion__11daNpcShoe_cFifi();
-extern "C" void reset__11daNpcShoe_cFv();
-extern "C" void setAction__11daNpcShoe_cFM11daNpcShoe_cFPCvPvPv_b();
-extern "C" void wait__11daNpcShoe_cFPv();
-extern "C" void fear__11daNpcShoe_cFPv();
-extern "C" void talk__11daNpcShoe_cFPv();
-extern "C" void demo__11daNpcShoe_cFPv();
-extern "C" static void daNpcShoe_Create__FPv();
-extern "C" static void daNpcShoe_Delete__FPv();
-extern "C" static void daNpcShoe_Execute__FPv();
-extern "C" static void daNpcShoe_Draw__FPv();
-extern "C" static bool daNpcShoe_IsDelete__FPv();
-extern "C" void setParam__11daNpcShoe_cFv();
-extern "C" void main__11daNpcShoe_cFv();
-extern "C" void setAttnPos__11daNpcShoe_cFv();
-extern "C" void lookat__11daNpcShoe_cFv();
-extern "C" void setMotionAnm__11daNpcShoe_cFif();
-extern "C" bool drawDbgInfo__11daNpcShoe_cFv();
-extern "C" void __dt__18daNpcF_ActorMngr_cFv();
-extern "C" void __ct__18daNpcF_ActorMngr_cFv();
-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 __ct__8daNpcF_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" bool ctrlBtk__8daNpcF_cFv();
-extern "C" void setCollisions__8daNpcF_cFv();
-extern "C" bool setExpressionAnm__8daNpcF_cFib();
-extern "C" bool setExpressionBtp__8daNpcF_cFi();
-extern "C" void setExpression__8daNpcF_cFif();
-extern "C" void drawOtherMdls__8daNpcF_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void __sinit_d_a_npc_shoe_cpp();
-extern "C" void adjustShapeAngle__11daNpcShoe_cFv();
-extern "C" void __dt__17daNpcShoe_Param_cFv();
-extern "C" static void func_80AEA38C();
-extern "C" static void func_80AEA394();
-extern "C" u8 const m__17daNpcShoe_Param_c[108];
-extern "C" extern char const* const d_a_npc_shoe__stringBase0;
-extern "C" u8 mEvtSeqList__11daNpcShoe_c[12];
-
-//
-// External References:
-//
-
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void setPtI_Id__14dEvt_control_cFUi();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWallR__12dBgS_AcchCirFf();
-extern "C" void 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 initialize__18daNpcF_ActorMngr_cFv();
-extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
-extern "C" void remove__18daNpcF_ActorMngr_cFv();
-extern "C" void getActorP__18daNpcF_ActorMngr_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 setMtx__8daNpcF_cFv();
-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 setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
-extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
-extern "C" void setEnvTevColor__8daNpcF_cFv();
-extern "C" void setRoomNo__8daNpcF_cFv();
-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 orderEvent__8daNpcF_cFiPcUsUsUcUs();
-extern "C" void chkActorInSight__8daNpcF_cFP10fopAc_ac_cf();
-extern "C" void chkActorInAttnArea__8daNpcF_cFP10fopAc_ac_cP10fopAc_ac_ci();
-extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c();
-extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c();
-extern "C" void getDistTableIdx__8daNpcF_cFii();
-extern "C" void dKy_getdaytime_hour__Fv();
-extern "C" void dKy_getdaytime_minute__Fv();
-extern "C" void dKy_getDarktime_hour__Fv();
-extern "C" void dKy_getDarktime_minute__Fv();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void dKy_darkworld_check__Fv();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void __dt__10dMsgFlow_cFv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __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 __ct__17Z2CreatureCitizenFv();
-extern "C" void __dt__17Z2CreatureCitizenFv();
-extern "C" void init__17Z2CreatureCitizenFP3VecP3VecUcUc();
-extern "C" void setMdlType__17Z2CreatureCitizenFScbb();
-extern "C" void playVoice__17Z2CreatureCitizenFi();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void checkPass__12J3DFrameCtrlFf();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-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__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" void __register_global_object();
-
-//
// Declarations:
//
-/* ############################################################################################## */
-/* 80AEA51C-80AEA51C 00016C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80AEA51C = "shoe";
-SECTION_DEAD static char const* const stringBase_80AEA521 = "Mgeneral";
-SECTION_DEAD static char const* const stringBase_80AEA52A = "object";
-SECTION_DEAD static char const* const stringBase_80AEA531 = "Shoe";
-#pragma pop
+static daNpcShoe_Param_c l_HIO;
+
+void daNpcShoe_c::setLookMode(int i_lookMode) {
+ if (mLookMode != i_lookMode) {
+ mLookMode = i_lookMode;
+ }
+}
+
+bool daNpcShoe_c::chkFindPlayer() {
+ bool ret;
+ if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcShoe_Param_c::m.mAttnFovY)) {
+ mActorMngr[0].remove();
+ ret = false;
+ } else {
+ if (mActorMngr[0].getActorP() == NULL) {
+ ret = chkPlayerInSpeakArea(this);
+ } else {
+ ret = chkPlayerInTalkArea(this);
+ }
+ if (ret) {
+ mActorMngr[0].entry(daPy_getPlayerActorClass());
+ } else {
+ mActorMngr[0].remove();
+ }
+ }
+ return ret;
+}
/* 80AEA538-80AEA544 000000 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
+static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80AEA544-80AEA558 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 */] = {
+static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
@@ -223,607 +52,602 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
0x3FE00000,
0x00000000,
};
-#pragma pop
/* 80AEA558-80AEA594 000020 003C+00 1/1 0/0 0/0 .data l_bckGetParamList */
-SECTION_DATA static u8 l_bckGetParamList[60] = {
- 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
+static daNpc_GetParam2 l_bckGetParamList[5] = {
+ { 17, 2, 1}, // m_sitwait_a
+ { 13, 0, 1}, // m_sittalk_a
+ { 14, 0, 1}, // m_sittalk_a_b
+ { 5, 0, 0}, // shoe_talk_a
+ { 11, 2, 1} // m_sit_to_wolf_a
};
/* 80AEA594-80AEA5A0 00005C 000C+00 0/0 0/0 0/0 .data l_btpGetParamList */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_btpGetParamList[12] = {
- 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam2 l_btpGetParamList[1] = {
+ { 12, 2, 0 }, // shoe
};
-#pragma pop
/* 80AEA5A0-80AEA5AC -00001 000C+00 5/6 0/0 0/0 .data l_arcNames */
-SECTION_DATA static void* l_arcNames[3] = {
- (void*)&d_a_npc_shoe__stringBase0,
- (void*)(((char*)&d_a_npc_shoe__stringBase0) + 0x5),
- (void*)(((char*)&d_a_npc_shoe__stringBase0) + 0xE),
+static char* l_arcNames[3] = {
+ "shoe",
+ "Mgeneral",
+ "object",
};
/* 80AEA5AC-80AEA5B0 000074 0004+00 0/1 0/0 0/0 .data l_evtNames */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_evtNames[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
+static char* l_evtNames[1] = {
+ l_arcNames[0]
};
-#pragma pop
/* 80AEA5B0-80AEA5B4 -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_npc_shoe__stringBase0) + 0x15);
-#pragma pop
+static char* l_myName = "Shoe";
/* 80AEA5B4-80AEA5C0 00007C 000C+00 1/2 0/0 0/0 .data mEvtSeqList__11daNpcShoe_c */
-SECTION_DATA u8 daNpcShoe_c::mEvtSeqList[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+daNpcShoe_c::EventFn daNpcShoe_c::mEvtSeqList[1] = {
+ NULL
};
-/* 80AEA5C0-80AEA5CC -00001 000C+00 1/1 0/0 0/0 .data @4424 */
-SECTION_DATA static void* lit_4424[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__11daNpcShoe_cFPv,
-};
+/* 80AE794C-80AE7AD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShoe_cFv */
+daNpcShoe_c::daNpcShoe_c() {
+ // NONMATCHING
+}
-/* 80AEA5CC-80AEA5D8 -00001 000C+00 0/1 0/0 0/0 .data @4547 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4547[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)talk__11daNpcShoe_cFPv,
-};
-#pragma pop
-
-/* 80AEA5D8-80AEA5E4 -00001 000C+00 0/1 0/0 0/0 .data @4552 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4552[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)demo__11daNpcShoe_cFPv,
-};
-#pragma pop
-
-/* 80AEA5E4-80AEA5F0 -00001 000C+00 0/1 0/0 0/0 .data @4559 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4559[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)fear__11daNpcShoe_cFPv,
-};
-#pragma pop
+/* 80AE7B60-80AE7D48 000300 01E8+00 1/0 0/0 0/0 .text __dt__11daNpcShoe_cFv */
+daNpcShoe_c::~daNpcShoe_c() {
+ for (int i = 0; i < 3; i++) {
+ dComIfG_resDelete(&mPhases[i], l_arcNames[i]);
+ }
+ if (heap != NULL) {
+ mpMorf->stopZelAnime();
+ }
+}
-/* 80AEA5F0-80AEA5FC -00001 000C+00 1/1 0/0 0/0 .data @4645 */
-SECTION_DATA static void* lit_4645[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__11daNpcShoe_cFPv,
+/* ############################################################################################## */
+/* 80AEA3B0-80AEA41C 000000 006C+00 11/11 0/0 0/0 .rodata m__17daNpcShoe_Param_c */
+daNpcShoe_Param_c::param const daNpcShoe_Param_c::m = {
+ 55.0f,
+ -3.0f,
+ 1.0f,
+ 300.0f,
+ 255.0f,
+ 140.0f,
+ 35.0f,
+ 30.0f,
+ 0.0f,
+ 0.0f,
+ 10.0f,
+ -10.0f,
+ 30.0f,
+ -10.0f,
+ 45.0f,
+ -45.0f,
+ 0.6f,
+ 12.0f,
+ 2,
+ 2,
+ 3,
+ 2,
+ 60.0f,
+ 500.0f,
+ 300.0f,
+ -300.0f,
+ 60,
+ 0,
+ 0,
+ 0,
+ 0,
+ false,
};
-/* 80AEA5FC-80AEA608 -00001 000C+00 0/1 0/0 0/0 .data @4684 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4684[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__11daNpcShoe_cFPv,
-};
-#pragma pop
+/* 80AE7D48-80AE7FD8 0004E8 0290+00 1/1 0/0 0/0 .text Create__11daNpcShoe_cFv */
+cPhs__Step daNpcShoe_c::Create() {
+ cPhs__Step step;
-/* 80AEA608-80AEA628 -00001 0020+00 1/0 0/0 0/0 .data daNpcShoe_MethodTable */
-static actor_method_class daNpcShoe_MethodTable = {
- (process_method_func)daNpcShoe_Create__FPv,
- (process_method_func)daNpcShoe_Delete__FPv,
- (process_method_func)daNpcShoe_Execute__FPv,
- (process_method_func)daNpcShoe_IsDelete__FPv,
- (process_method_func)daNpcShoe_Draw__FPv,
-};
+ fopAcM_SetupActor(this, daNpcShoe_c);
-/* 80AEA628-80AEA658 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SHOE */
-extern actor_process_profile_definition g_profile_NPC_SHOE = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_NPC_SHOE, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daNpcShoe_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 417, // mPriority
- &daNpcShoe_MethodTable, // sub_method
- 0x00044107, // mStatus
- fopAc_NPC_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ field_0xe0c = getMessageNo();
-/* 80AEA658-80AEA6A0 000120 0048+00 2/2 0/0 0/0 .data __vt__11daNpcShoe_c */
-SECTION_DATA extern void* __vt__11daNpcShoe_c[18] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__11daNpcShoe_cFv,
- (void*)setParam__11daNpcShoe_cFv,
- (void*)main__11daNpcShoe_cFv,
- (void*)ctrlBtk__8daNpcF_cFv,
- (void*)adjustShapeAngle__11daNpcShoe_cFv,
- (void*)setMtx__8daNpcF_cFv,
- (void*)setMtx2__8daNpcF_cFv,
- (void*)setAttnPos__11daNpcShoe_cFv,
- (void*)setCollisions__8daNpcF_cFv,
- (void*)setExpressionAnm__8daNpcF_cFib,
- (void*)setExpressionBtp__8daNpcF_cFi,
- (void*)setExpression__8daNpcF_cFif,
- (void*)setMotionAnm__11daNpcShoe_cFif,
- (void*)setMotion__11daNpcShoe_cFifi,
- (void*)drawDbgInfo__11daNpcShoe_cFv,
- (void*)drawOtherMdls__8daNpcF_cFv,
-};
+ step = cPhs_ERROR_e;
+ for (int i = 0; i < 3; i++) {
+ step = (cPhs__Step)dComIfG_resLoad(&mPhases[i], l_arcNames[i]);
+ if (step != cPhs_COMPLEATE_e) {
+ return step;
+ }
+ }
-/* 80AEA6A0-80AEA6AC 000168 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,
-};
+ if (step == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x2920)) {
+ return cPhs_ERROR_e;
+ }
-/* 80AEA6AC-80AEA6D0 000174 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_80AEA394,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80AEA38C,
-};
+ fopAcM_SetMtx(this, mpMorf->mpModel->getBaseTRMtx());
-/* 80AEA6D0-80AEA6DC 000198 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,
-};
+ fopAcM_setCullSizeBox(this, -50.0f, -10.0f, -50.0f, 50.0f, 160.0f, 50.0f);
-/* 80AEA6DC-80AEA6E8 0001A4 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,
-};
+ mCreature.init(&current.pos, &eyePos, 3, 1);
+ mCreature.setMdlType(7, false, (BOOL)(dKy_darkworld_check() != 0));
-/* 80AEA6E8-80AEA6F4 0001B0 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,
-};
+ mAcchCir.SetWall(daNpcShoe_Param_c::m.mWallR, daNpcShoe_Param_c::m.mWallH);
-/* 80AEA6F4-80AEA700 0001BC 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,
-};
+ 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));
-/* 80AEA700-80AEA70C 0001C8 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,
-};
+ mAcch.CrrPos(dComIfG_Bgsp());
+ mCcStts.Init((int)daNpcShoe_Param_c::m.mCcWeight, 0, this);
+ mCcCyl.Set(mCcDCyl);
-/* 80AEA70C-80AEA718 0001D4 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,
-};
+ mCcCyl.SetStts(&mCcStts);
+ mCcCyl.SetTgType(0);
+ mCcCyl.SetTgSPrm(0);
-/* 80AEA718-80AEA724 0001E0 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,
-};
+ mGndChk = mAcch.m_gnd;
+ mGroundH = mAcch.m_ground_h;
+ gravity = daNpcShoe_Param_c::m.mGravity;
-/* 80AE794C-80AE7AD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShoe_cFv */
-daNpcShoe_c::daNpcShoe_c() {
- // NONMATCHING
-}
+ setEnvTevColor();
+ setRoomNo();
+ reset();
+ execute();
+ }
-/* 80AE7AD0-80AE7B18 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
+ return step;
}
-/* 80AE7B18-80AE7B60 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+/* 80AE7FD8-80AE81E8 000778 0210+00 1/1 0/0 0/0 .text CreateHeap__11daNpcShoe_cFv */
+BOOL daNpcShoe_c::CreateHeap() {
+ J3DModelData* mdlData_p = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[0], 8));
-/* 80AE7B60-80AE7D48 000300 01E8+00 1/0 0/0 0/0 .text __dt__11daNpcShoe_cFv */
-daNpcShoe_c::~daNpcShoe_c() {
- // NONMATCHING
-}
+ JUT_ASSERT(292, 0 != mdlData_p)
-/* ############################################################################################## */
-/* 80AEA3B0-80AEA41C 000000 006C+00 11/11 0/0 0/0 .rodata m__17daNpcShoe_Param_c */
-SECTION_RODATA u8 const daNpcShoe_Param_c::m[108] = {
- 0x42, 0x5C, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00,
- 0x43, 0x7F, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00,
- 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00,
- 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02,
- 0x42, 0x70, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA3B0, &daNpcShoe_Param_c::m);
-
-/* 80AEA41C-80AEA420 00006C 0004+00 0/1 0/0 0/0 .rodata @4166 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4166 = -50.0f;
-COMPILER_STRIP_GATE(0x80AEA41C, &lit_4166);
-#pragma pop
-
-/* 80AEA420-80AEA424 000070 0004+00 0/1 0/0 0/0 .rodata @4167 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4167 = -10.0f;
-COMPILER_STRIP_GATE(0x80AEA420, &lit_4167);
-#pragma pop
-
-/* 80AEA424-80AEA428 000074 0004+00 0/2 0/0 0/0 .rodata @4168 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4168 = 50.0f;
-COMPILER_STRIP_GATE(0x80AEA424, &lit_4168);
-#pragma pop
-
-/* 80AEA428-80AEA42C 000078 0004+00 0/1 0/0 0/0 .rodata @4169 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4169 = 160.0f;
-COMPILER_STRIP_GATE(0x80AEA428, &lit_4169);
-#pragma pop
+ mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1,
+ &mCreature, 0x80000, 0x11020084);
+
+ if (mpMorf != NULL && mpMorf->mpModel == NULL) {
+ mpMorf->stopZelAnime();
+ mpMorf = NULL;
+ }
-/* 80AE7D48-80AE7FD8 0004E8 0290+00 1/1 0/0 0/0 .text Create__11daNpcShoe_cFv */
-void daNpcShoe_c::Create() {
- // NONMATCHING
-}
+ if (mpMorf == NULL) {
+ return false;
+ }
-/* ############################################################################################## */
-/* 80AEA42C-80AEA430 00007C 0004+00 1/5 0/0 0/0 .rodata @4235 */
-SECTION_RODATA static f32 const lit_4235 = 1.0f;
-COMPILER_STRIP_GATE(0x80AEA42C, &lit_4235);
+ cXyz cstack_30(1.0f, 0.5581154f, 1.0f);
+ mpMorf->offTranslate();
+ mpMorf->setTranslateScale(cstack_30);
-/* 80AEA430-80AEA434 000080 0004+00 0/1 0/0 0/0 .rodata @4236 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4236 = 0x3F0EE0A7;
-COMPILER_STRIP_GATE(0x80AEA430, &lit_4236);
-#pragma pop
+ J3DModel* model = mpMorf->getModel();
+ for (u16 jointNo = 0; jointNo < mdlData_p->getJointNum(); jointNo++) {
+ mdlData_p->getJointNodePointer(jointNo)->setCallBack(ctrlJointCallBack);
+ }
+ model->setUserArea((u32)this);
-/* 80AEA434-80AEA438 000084 0004+00 2/5 0/0 0/0 .rodata @4237 */
-SECTION_RODATA static f32 const lit_4237 = -1.0f;
-COMPILER_STRIP_GATE(0x80AEA434, &lit_4237);
+ mdlData_p = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[0], 9));
-/* 80AE7FD8-80AE81E8 000778 0210+00 1/1 0/0 0/0 .text CreateHeap__11daNpcShoe_cFv */
-void daNpcShoe_c::CreateHeap() {
- // NONMATCHING
+ JUT_ASSERT(331, 0 != mdlData_p)
+
+ mpModel1 = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084);
+ if (mpModel1 == NULL) {
+ return false;
+ }
+
+ mdlData_p = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[2], 4));
+
+ JUT_ASSERT(338, 0 != mdlData_p)
+
+ mpModel2 = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084);
+ if (mpModel2 == NULL) {
+ return false;
+ }
+
+ setMotion(MOT_SITWAIT_A, -1.0f, 0);
+
+ return true;
}
/* 80AE81E8-80AE821C 000988 0034+00 1/1 0/0 0/0 .text Delete__11daNpcShoe_cFv */
-void daNpcShoe_c::Delete() {
- // NONMATCHING
+int daNpcShoe_c::Delete() {
+ this->~daNpcShoe_c();
+ return 1;
}
/* 80AE821C-80AE8308 0009BC 00EC+00 1/1 0/0 0/0 .text Execute__11daNpcShoe_cFv */
-void daNpcShoe_c::Execute() {
- // NONMATCHING
+int daNpcShoe_c::Execute() {
+ if (field_0xe1b != 0) {
+ fopAcM_OnStatus(this, 0x8000000);
+ } else {
+ fopAcM_OffStatus(this, 0x8000000);
+ }
+
+ if (fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e)) {
+ int time = getTime();
+ if (time >= mStartTime && time < mEndTime) {
+ field_0xe1b = 1;
+ } else {
+ field_0xe1b = 0;
+ }
+ } else {
+ if (field_0xe1b != 0) {
+ execute();
+ }
+ }
+
+ return 1;
}
/* 80AE8308-80AE840C 000AA8 0104+00 1/1 0/0 0/0 .text Draw__11daNpcShoe_cFv */
-void daNpcShoe_c::Draw() {
- // NONMATCHING
+int daNpcShoe_c::Draw() {
+ if (!field_0xe1b) {
+ return 1;
+ }
+
+ draw(false, false, daNpcShoe_Param_c::m.mShadowDepth, NULL, false);
+ g_env_light.setLightTevColorType_MAJI(mpModel1->mModelData, &tevStr);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(11));
+ mpModel1->setBaseTRMtx(mDoMtx_stack_c::get());
+ mDoExt_modelUpdateDL(mpModel1);
+ g_env_light.setLightTevColorType_MAJI(mpModel2->mModelData, &tevStr);
+ mDoExt_modelUpdateDL(mpModel2);
+ dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), 50.0f, mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80AEA438-80AEA444 000088 000C+00 1/1 0/0 0/0 .rodata @4302 */
-SECTION_RODATA static u8 const lit_4302[12] = {
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03,
-};
-COMPILER_STRIP_GATE(0x80AEA438, &lit_4302);
-
/* 80AE840C-80AE8598 000BAC 018C+00 1/1 0/0 0/0 .text
* ctrlJoint__11daNpcShoe_cFP8J3DJointP8J3DModel */
-void daNpcShoe_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
- // NONMATCHING
+bool daNpcShoe_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
+ int joint_no = i_joint->getJntNo();
+ int lookat_joints[3] = {1, 2, 3};
+
+ if (joint_no == 0) {
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1));
+ mDoMtx_stack_c::multVecZero(&mLookatPos[0]);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(2));
+ mDoMtx_stack_c::multVecZero(&mLookatPos[1]);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
+ mDoMtx_stack_c::multVecZero(&mLookatPos[2]);
+ }
+
+ mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
+ switch(joint_no) {
+ case 1:
+ case 2:
+ case 3:
+ setLookatMtx(joint_no, lookat_joints, daNpcShoe_Param_c::m.mNeckAngleScl);
+ break;
+ }
+
+ i_model->setAnmMtx(joint_no, mDoMtx_stack_c::get());
+ cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+
+ return true;
}
/* 80AE8598-80AE85B8 000D38 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__11daNpcShoe_cFP10fopAc_ac_c */
-void daNpcShoe_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+BOOL daNpcShoe_c::createHeapCallBack(fopAc_ac_c* i_this) {
+ return static_cast<daNpcShoe_c*>(i_this)->CreateHeap();
}
/* 80AE85B8-80AE8604 000D58 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpcShoe_cFP8J3DJointi
*/
-void daNpcShoe_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
+BOOL daNpcShoe_c::ctrlJointCallBack(J3DJoint* i_joint, int param_1) {
+ if (param_1 == 0) {
+ J3DModel* model = j3dSys.getModel();
+ daNpcShoe_c* _this = (daNpcShoe_c*)model->getUserArea();
+ if (_this != NULL) {
+ _this->ctrlJoint(i_joint, model);
+ }
+ }
+ return true;
}
/* 80AE8604-80AE864C 000DA4 0048+00 1/0 0/0 0/0 .text setMotion__11daNpcShoe_cFifi */
-void daNpcShoe_c::setMotion(int param_0, f32 param_1, int param_2) {
- // NONMATCHING
+void daNpcShoe_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) {
+ s16 motion = (s16)i_motion;
+ if (i_restart || mMotion != motion) {
+ if (i_motion >= 0 && i_motion < 5) {
+ mMotion = motion;
+ mMotionMorfOverride = i_morf;
+ mMotionPrevPhase = -1;
+ mMotionPhase = 0;
+ field_0xe16 = 0;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80AEA444-80AEA450 000094 000C+00 0/1 0/0 0/0 .rodata @4423 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4423[12] = {
- 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A,
-};
-COMPILER_STRIP_GATE(0x80AEA444, &lit_4423);
-#pragma pop
-
-/* 80AEA450-80AEA454 0000A0 0004+00 0/5 0/0 0/0 .rodata @4480 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4480[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA450, &lit_4480);
-#pragma pop
/* 80AE864C-80AE895C 000DEC 0310+00 1/1 0/0 0/0 .text reset__11daNpcShoe_cFv */
void daNpcShoe_c::reset() {
- // NONMATCHING
+ initialize();
+ mLookat.initialize();
+ for (int i = 0; i < 1; i++) {
+ mActorMngr[i].initialize();
+ }
+
+ field_0xe04 = 0;
+ field_0xe08 = 0;
+ mpActionFn = NULL;
+ mLookMode = -1;
+ mMode = 0;
+
+ u16 temp1;
+ u16 temp2;
+ u8 start_time = getStartTime();
+ u8 end_time = getEndTime();
+ if (start_time != 0xff) {
+ temp1 = (start_time / 10);
+ temp2 = (start_time % 10) * 10;
+ mStartTime = temp2 + temp1 * 60;
+ }
+ if (end_time != 0xff) {
+ temp1 = (end_time / 10);
+ temp2 = (end_time % 10) * 10;
+ mEndTime = temp2 + temp1 * 60;
+ }
+
+ field_0xe1b = 0;
+ int time = getTime();
+ if (time >= mStartTime && time < mEndTime) {
+ field_0xe1b = 1;
+ } else {
+ field_0xe1b = 0;
+ }
+
+ current.pos.set(home.pos);
+ old.pos.set(current.pos);
+ current.angle.set(0, home.angle.y, 0);
+ old.angle = current.angle;
+ shape_angle = current.angle;
+ mCurAngle = current.angle;
+ mOldAngle = mCurAngle;
+
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ field_0xe00 = -1;
+ mOrderEvtNo = 0;
+
+ J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[0], 12);
+ mAnmFlags &= ~(ANM_PAUSE_BTP | ANM_PLAY_BTP | ANM_FLAG_800);
+ if (setBtpAnm(btpAnm, mpMorf->getModel()->getModelData(), 1.0f, 2)) {
+ mAnmFlags |= ANM_PAUSE_BTP | ANM_PLAY_BTP | ANM_FLAG_800;
+ }
+
+ Vec base_scale = {0.6, 0.6, 0.6};
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mpModel2->setBaseScale(base_scale);
+ mpModel2->setBaseTRMtx(mDoMtx_stack_c::get());
+
+ setAction(&daNpcShoe_c::wait);
+
+ mMotionMorfOverride = 0.0f;
+}
+
+
+void daNpcShoe_c::playMotion() {
+ daNpcF_anmPlayData dat0 = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData* pDat0[1] = {&dat0};
+ daNpcF_anmPlayData dat1a = {ANM_M_SITTALK_A, daNpcShoe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat1b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
+ daNpcF_anmPlayData dat2a = {ANM_M_SITTALK_A_B, daNpcShoe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat2b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
+ daNpcF_anmPlayData dat3a = {ANM_SHOE_TALK_A, daNpcShoe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat3b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
+ daNpcF_anmPlayData dat4 = {ANM_M_SIT_TO_WOLF_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData* pDat4[1] = {&dat4};
+
+ daNpcF_anmPlayData** ppDat[5] = {
+ pDat0,
+ pDat1,
+ pDat2,
+ pDat3,
+ pDat4,
+ };
+ if (mMotion >= 0 && mMotion < 5) {
+ field_0xe16 = mMotionPhase;
+ playMotionAnm(ppDat);
+ }
}
+
/* 80AE895C-80AE8A04 0010FC 00A8+00 1/1 0/0 0/0 .text
* setAction__11daNpcShoe_cFM11daNpcShoe_cFPCvPvPv_b */
-void daNpcShoe_c::setAction(bool (daNpcShoe_c::*param_0)(void*)) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80AEA454-80AEA460 0000A4 000C+00 0/1 0/0 0/0 .rodata @4481 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4481[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA454, &lit_4481);
-#pragma pop
-
-/* 80AEA460-80AEA464 0000B0 0004+00 0/1 0/0 0/0 .rodata @4482 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4482[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA460, &lit_4482);
-#pragma pop
-
-/* 80AEA464-80AEA470 0000B4 000C+00 0/1 0/0 0/0 .rodata @4483 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4483[12] = {
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x80AEA464, &lit_4483);
-#pragma pop
-
-/* 80AEA470-80AEA47C 0000C0 000C+00 0/1 0/0 0/0 .rodata @4484 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4484[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA470, &lit_4484);
-#pragma pop
-
-/* 80AEA47C-80AEA484 0000CC 0008+00 0/1 0/0 0/0 .rodata @4485 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4485[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA47C, &lit_4485);
-#pragma pop
-
-/* 80AEA484-80AEA490 0000D4 000C+00 0/1 0/0 0/0 .rodata @4486 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4486[12] = {
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x80AEA484, &lit_4486);
-#pragma pop
+int daNpcShoe_c::setAction(bool (daNpcShoe_c::*i_actionFunc)(void*)) {
+ mMode = 3;
+ if (mpActionFn != NULL) {
+ (this->*mpActionFn)(NULL);
+ }
-/* 80AEA490-80AEA49C 0000E0 000C+00 0/1 0/0 0/0 .rodata @4487 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4487[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA490, &lit_4487);
-#pragma pop
-
-/* 80AEA49C-80AEA4A4 0000EC 0008+00 0/1 0/0 0/0 .rodata @4488 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4488[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA49C, &lit_4488);
-#pragma pop
-
-/* 80AEA4A4-80AEA4B0 0000F4 000C+00 0/1 0/0 0/0 .rodata @4489 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4489[12] = {
- 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x80AEA4A4, &lit_4489);
-#pragma pop
-
-/* 80AEA4B0-80AEA4BC 000100 000C+00 0/1 0/0 0/0 .rodata @4490 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4490[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4B0, &lit_4490);
-#pragma pop
-
-/* 80AEA4BC-80AEA4C4 00010C 0008+00 0/1 0/0 0/0 .rodata @4491 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4491[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4BC, &lit_4491);
-#pragma pop
-
-/* 80AEA4C4-80AEA4D0 000114 000C+00 0/1 0/0 0/0 .rodata @4492 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4492[12] = {
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4C4, &lit_4492);
-#pragma pop
-
-/* 80AEA4D0-80AEA4D4 000120 0004+00 0/1 0/0 0/0 .rodata @4493 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4493[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4D0, &lit_4493);
-#pragma pop
-
-/* 80AEA4D4-80AEA4E8 000124 0014+00 0/0 0/0 0/0 .rodata @4494 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4494[20] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4D4, &lit_4494);
-#pragma pop
-
-/* 80AEA4E8-80AEA4F8 000138 000C+04 0/1 0/0 0/0 .rodata @4508 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4508[12 + 4 /* padding */] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- /* padding */
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4E8, &lit_4508);
-#pragma pop
-
-/* 80AEA4F8-80AEA500 000148 0008+00 0/1 0/0 0/0 .rodata @4623 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4623[8] = {
- 0x40, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA4F8, &lit_4623);
-#pragma pop
-
-/* 80AEA500-80AEA508 000150 0008+00 0/1 0/0 0/0 .rodata @4624 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4624[8] = {
- 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80AEA500, &lit_4624);
-#pragma pop
+ mMode = 0;
+ mpActionFn = i_actionFunc;
+ if (mpActionFn != NULL) {
+ (this->*mpActionFn)(NULL);
+ }
+ return 1;
+}
/* 80AE8A04-80AE8E24 0011A4 0420+00 3/0 0/0 0/0 .text wait__11daNpcShoe_cFPv */
-void daNpcShoe_c::wait(void* param_0) {
- // NONMATCHING
+bool daNpcShoe_c::wait(void* param_0) {
+ // NONMATCHING
+ switch (mMode) {
+ case 0:
+ setMotion(MOT_SITWAIT_A, -1.0f, false);
+ speedF = 0.0f;
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2: {
+ chkFindPlayer();
+
+ fopAc_ac_c* pactor = mActorMngr->getActorP();
+ if (pactor != NULL) {
+ setLookMode(LOOK_PLAYER);
+ } else {
+ setLookMode(LOOK_NONE);
+ }
+
+ if (dComIfGp_event_runCheck()) {
+ if (eventInfo.checkCommandTalk()) {
+ if (!dComIfGp_event_chkTalkXY() || dComIfGp_evmng_ChkPresentEnd()) {
+ setAction(&daNpcShoe_c::talk);
+ }
+ } else {
+ if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, -0) != -1) {
+ setAction(&daNpcShoe_c::demo);
+ }
+ }
+ } else {
+ if (!dKy_darkworld_check() && daPy_py_c::checkNowWolf()) {
+ f32 max_distance = pow(500.0f, 2.0f);
+ if (fopAcM_searchPlayerDistanceXZ2(this) < max_distance) {
+ setAction(&daNpcShoe_c::fear);
+ break;
+ }
+ }
+
+ if (mOrderEvtNo != 0) {
+ eventInfo.setArchiveName(l_arcNames[0]);
+ }
+ orderEvent(field_0xe1a, l_evtNames[mOrderEvtNo], 0xffff, 0x28, 0xff, 1);
+ }
+ break;
+ }
+ case 3:
+ break;
+ default:
+ JUT_ASSERT(1063, 0)
+ break;
+ }
+
+ return 1;
}
+
/* 80AE8E24-80AE8ED4 0015C4 00B0+00 1/0 0/0 0/0 .text fear__11daNpcShoe_cFPv */
-void daNpcShoe_c::fear(void* param_0) {
- // NONMATCHING
+bool daNpcShoe_c::fear(void* param_0) {
+ switch (mMode) {
+ case 0:
+ setMotion(MOT_SIT_TO_WOLF_A, -1.0f, false);
+ speedF = 0.0f;
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2:
+ if (mpMorf->checkFrame(1.0f)) {
+ mCreature.playVoice(2);
+ }
+ break;
+ case 3:
+ break;
+ default:
+ JUT_ASSERT(1100, 0)
+ break;
+ }
+ return 1;
}
/* 80AE8ED4-80AE9094 001674 01C0+00 1/0 0/0 0/0 .text talk__11daNpcShoe_cFPv */
-void daNpcShoe_c::talk(void* param_0) {
- // NONMATCHING
+bool daNpcShoe_c::talk(void* param_0) {
+ bool ret = 0;
+ switch (mMode) {
+ case 0:
+ initTalk(field_0xe0c, NULL);
+ mMsgTimer = 0;
+ field_0xe1a = 0;
+ setLookMode(LOOK_PLAYER_TALK);
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2:
+ if (talkProc(NULL, 1, NULL)) {
+ mActorMngr->entry(daPy_getPlayerActorClass());
+ setAction(&daNpcShoe_c::wait);
+ ret = 1;
+ } else {
+ int expression, motion;
+ if (ctrlMsgAnm(expression, motion, this, false)) {
+ setMotion(motion, -1.0f, false);
+ }
+ }
+ break;
+ case 3:
+ if (field_0x9ec != 0) {
+ break;
+ }
+
+ dComIfGp_event_reset();
+ break;
+ default:
+ JUT_ASSERT(1169, 0)
+ break;
+ }
+ return ret;
}
/* 80AE9094-80AE9260 001834 01CC+00 1/0 0/0 0/0 .text demo__11daNpcShoe_cFPv */
-void daNpcShoe_c::demo(void* param_0) {
- // NONMATCHING
+bool daNpcShoe_c::demo(void* param_0) {
+ switch (mMode) {
+ case 0:
+ setMotion(MOT_SITWAIT_A, -1.0f, false);
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2:
+ if (dComIfGp_event_runCheck() != FALSE && !eventInfo.checkCommandTalk()) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ s32 staff_id = eventManager.getMyStaffId(l_myName, NULL, 0);
+ if (staff_id != -1) {
+ mStaffID = staff_id;
+
+ JUT_ASSERT(1203, 0 != mEvtSeqList[mOrderEvtNo])
+
+ if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) {
+ eventManager.cutEnd(staff_id);
+ }
+ }
+
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) {
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ setAction(&daNpcShoe_c::wait);
+ }
+ }
+ break;
+ case 3:
+ break;
+ default:
+ JUT_ASSERT(1169, 0)
+ break;
+ }
+ return 1;
}
/* 80AE9260-80AE9280 001A00 0020+00 1/0 0/0 0/0 .text daNpcShoe_Create__FPv */
-static void daNpcShoe_Create(void* param_0) {
- // NONMATCHING
+static cPhs__Step daNpcShoe_Create(void* i_this) {
+ return static_cast<daNpcShoe_c*>(i_this)->Create();
}
/* 80AE9280-80AE92A0 001A20 0020+00 1/0 0/0 0/0 .text daNpcShoe_Delete__FPv */
-static void daNpcShoe_Delete(void* param_0) {
- // NONMATCHING
+static int daNpcShoe_Delete(void* i_this) {
+ return static_cast<daNpcShoe_c*>(i_this)->Delete();
}
/* 80AE92A0-80AE92C0 001A40 0020+00 1/0 0/0 0/0 .text daNpcShoe_Execute__FPv */
-static void daNpcShoe_Execute(void* param_0) {
- // NONMATCHING
+static int daNpcShoe_Execute(void* i_this) {
+ return static_cast<daNpcShoe_c*>(i_this)->Execute();
}
/* 80AE92C0-80AE92E0 001A60 0020+00 1/0 0/0 0/0 .text daNpcShoe_Draw__FPv */
-static void daNpcShoe_Draw(void* param_0) {
- // NONMATCHING
+static int daNpcShoe_Draw(void* i_this) {
+ return static_cast<daNpcShoe_c*>(i_this)->Draw();
}
/* 80AE92E0-80AE92E8 001A80 0008+00 1/0 0/0 0/0 .text daNpcShoe_IsDelete__FPv */
@@ -833,234 +657,170 @@ static bool daNpcShoe_IsDelete(void* param_0) {
/* 80AE92E8-80AE93A0 001A88 00B8+00 1/0 0/0 0/0 .text setParam__11daNpcShoe_cFv */
void daNpcShoe_c::setParam() {
- // NONMATCHING
+ attention_info.distances[0] = getDistTableIdx(daNpcShoe_Param_c::m.mTalkDistIdx, daNpcShoe_Param_c::m.mTalkAngleIdx);
+ attention_info.distances[1] = attention_info.distances[0];
+ attention_info.distances[3] = getDistTableIdx(daNpcShoe_Param_c::m.mSpeakDistIdx, daNpcShoe_Param_c::m.mSpeakAngleIdx);
+
+ attention_info.flags = (field_0xe1b != 0) ? 10 : 0;
+
+ scale.setall(daNpcShoe_Param_c::m.mScale);
+ mAcchCir.SetWallR(daNpcShoe_Param_c::m.mWallR);
+ mAcchCir.SetWallH(daNpcShoe_Param_c::m.mWallH);
+ gravity = daNpcShoe_Param_c::m.mGravity;
}
/* 80AE93A0-80AE9624 001B40 0284+00 1/0 0/0 0/0 .text main__11daNpcShoe_cFv */
-void daNpcShoe_c::main() {
- // NONMATCHING
+BOOL daNpcShoe_c::main() {
+ if (mpActionFn != NULL) {
+ (this->*mpActionFn)(0);
+ }
+ if (dComIfGp_event_runCheck() != FALSE && !eventInfo.checkCommandTalk() && field_0xe00 != -1) {
+ dComIfGp_event_setItemPartnerId(field_0xe00);
+ field_0xe00 = -1;
+ }
+ playMotion();
+ return 0;
}
-/* ############################################################################################## */
-/* 80AEA508-80AEA50C 000158 0004+00 0/1 0/0 0/0 .rodata @4841 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4841 = 10.0f;
-COMPILER_STRIP_GATE(0x80AEA508, &lit_4841);
-#pragma pop
-
-/* 80AEA50C-80AEA510 00015C 0004+00 0/1 0/0 0/0 .rodata @4842 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4842 = 15.0f;
-COMPILER_STRIP_GATE(0x80AEA50C, &lit_4842);
-#pragma pop
-
/* 80AE9624-80AE9820 001DC4 01FC+00 1/0 0/0 0/0 .text setAttnPos__11daNpcShoe_cFv */
void daNpcShoe_c::setAttnPos() {
// NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80AEA510-80AEA514 000160 0004+00 0/1 0/0 0/0 .rodata @4883 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4883 = -80.0f;
-COMPILER_STRIP_GATE(0x80AEA510, &lit_4883);
-#pragma pop
-
-/* 80AEA514-80AEA518 000164 0004+00 0/1 0/0 0/0 .rodata @4884 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4884 = 80.0f;
-COMPILER_STRIP_GATE(0x80AEA514, &lit_4884);
-#pragma pop
-
-/* 80AEA518-80AEA51C 000168 0004+00 0/1 0/0 0/0 .rodata @4885 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4885 = 40.0f;
-COMPILER_STRIP_GATE(0x80AEA518, &lit_4885);
-#pragma pop
-
-/* 80AE9820-80AE9A00 001FC0 01E0+00 1/1 0/0 0/0 .text lookat__11daNpcShoe_cFv */
-void daNpcShoe_c::lookat() {
- // NONMATCHING
-}
-
-/* 80AE9A00-80AE9AD0 0021A0 00D0+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShoe_cFif */
-bool daNpcShoe_c::setMotionAnm(int param_0, f32 param_1) {
- // NONMATCHING
-}
+ if (mLookMode == LOOK_RESET) {
+ for (int i = 0; i < 3; i++) {
+ mLookatAngle[i].setall(0);
+ }
+ }
-/* 80AE9AD0-80AE9AD8 002270 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpcShoe_cFv */
-bool daNpcShoe_c::drawDbgInfo() {
- return false;
-}
-
-/* 80AE9AD8-80AE9B20 002278 0048+00 5/4 0/0 0/0 .text __dt__18daNpcF_ActorMngr_cFv */
-// daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() {
-extern "C" void __dt__18daNpcF_ActorMngr_cFv() {
- // NONMATCHING
-}
+ setMtx();
+ lookat();
-/* 80AE9B20-80AE9B5C 0022C0 003C+00 2/2 0/0 0/0 .text __ct__18daNpcF_ActorMngr_cFv */
-// daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() {
-extern "C" void __ct__18daNpcF_ActorMngr_cFv() {
- // NONMATCHING
-}
+ cXyz vec(10.0f,15.0f,0.0f);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
+ mDoMtx_stack_c::multVecZero(&mHeadPos);
+ mDoMtx_stack_c::multVec(&vec, &eyePos);
+ vec.x = 0.0f;
+ mDoMtx_stack_c::multVec(&vec, &vec);
-/* 80AE9B5C-80AE9C2C 0022FC 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
-}
+ mHeadAngle.x = cLib_targetAngleX(&mHeadPos,&vec);
+ mHeadAngle.y = cLib_targetAngleY(&mHeadPos,&vec);
-/* 80AE9C2C-80AE9C68 0023CC 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */
-// csXyz::~csXyz() {
-extern "C" void __dt__5csXyzFv() {
- // NONMATCHING
-}
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
+ mDoMtx_stack_c::multVecZero(&attention_info.position);
+ attention_info.position.y += daNpcShoe_Param_c::m.mAttnOffsetY;
-/* 80AE9C68-80AE9C6C 002408 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */
-// csXyz::csXyz() {
-extern "C" void __ct__5csXyzFv() {
- /* empty function */
-}
-
-/* 80AE9C6C-80AE9CA8 00240C 003C+00 5/5 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* 80AE9CA8-80AE9CAC 002448 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz() {
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
-}
-
-/* 80AE9CAC-80AE9EF8 00244C 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */
-// daNpcF_c::~daNpcF_c() {
-extern "C" void __dt__8daNpcF_cFv() {
- // NONMATCHING
-}
-
-/* 80AE9EF8-80AEA0E8 002698 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */
-// daNpcF_c::daNpcF_c() {
-extern "C" void __ct__8daNpcF_cFv() {
- // NONMATCHING
-}
-
-/* 80AEA0E8-80AEA158 002888 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
+ cXyz cStack28;
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1));
+ mDoMtx_stack_c::multVecZero(&cStack28);
+ cStack28.y = current.pos.y;
+ mCcCyl.SetC(cStack28);
+ mCcCyl.SetH(daNpcShoe_Param_c::m.mCylH);
+ mCcCyl.SetR(daNpcShoe_Param_c::m.mWallR);
+ dComIfG_Ccsp()->Set(&mCcCyl);
}
-/* 80AEA158-80AEA1B4 0028F8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 80AEA1B4-80AEA224 002954 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
+/* 80AE9820-80AE9A00 001FC0 01E0+00 1/1 0/0 0/0 .text lookat__11daNpcShoe_cFv */
+void daNpcShoe_c::lookat() {
// NONMATCHING
+ fopAc_ac_c* actor = NULL;
+ J3DModel* model = mpMorf->getModel();
+ BOOL snap = false;
+ f32 body_down_angle = daNpcShoe_Param_c::m.mBodyDownAngle;
+ f32 body_up_angle = daNpcShoe_Param_c::m.mBodyUpAngle;
+ f32 body_right_angle = daNpcShoe_Param_c::m.mBodyRightAngle;
+ f32 body_left_angle = daNpcShoe_Param_c::m.mBodyLeftAngle;
+ f32 head_down_angle = daNpcShoe_Param_c::m.mHeadDownAngle;
+ f32 head_up_angle = daNpcShoe_Param_c::m.mHeadUpAngle;
+ f32 head_right_angle = daNpcShoe_Param_c::m.mHeadRightAngle;
+ f32 head_left_angle = daNpcShoe_Param_c::m.mHeadLeftAngle;
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+ cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_NONE:
+ break;
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER:
+ case LOOK_PLAYER_TALK:
+ actor = daPy_getPlayerActorClass();
+ if (mLookMode != LOOK_PLAYER_TALK) {
+ break;
+ }
+ head_right_angle = -80.0f;
+ head_left_angle = 80.0f;
+ break;
+ }
+
+ if (actor != NULL) {
+ mLookPos = actor->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_down_angle, body_up_angle, body_right_angle, body_left_angle,
+ 0.0f, 0.0f, 0.0f, 0.0f,
+ head_down_angle, head_up_angle, head_right_angle, head_left_angle,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
}
-/* 80AEA224-80AEA26C 0029C4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
+/* 80AE9A00-80AE9AD0 0021A0 00D0+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShoe_cFif */
+bool daNpcShoe_c::setMotionAnm(int i_idx, f32 i_morf) {
// NONMATCHING
-}
-
-/* 80AEA26C-80AEA274 002A0C 0008+00 1/0 0/0 0/0 .text ctrlBtk__8daNpcF_cFv */
-// bool daNpcF_c::ctrlBtk() {
-extern "C" bool ctrlBtk__8daNpcF_cFv() {
- return false;
-}
-
-/* 80AEA274-80AEA278 002A14 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */
-// void daNpcF_c::setCollisions() {
-extern "C" void setCollisions__8daNpcF_cFv() {
- /* empty function */
-}
+ J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx);
+
+ int morfAttr = l_bckGetParamList[i_idx].attr;
+
+ mAnmFlags &= ~(ANM_PAUSE_MORF | ANM_PLAY_MORF);
-/* 80AEA278-80AEA280 002A18 0008+00 1/0 0/0 0/0 .text setExpressionAnm__8daNpcF_cFib */
-// bool daNpcF_c::setExpressionAnm(int param_0, bool param_1) {
-extern "C" bool setExpressionAnm__8daNpcF_cFib() {
- return true;
-}
-
-/* 80AEA280-80AEA288 002A20 0008+00 1/0 0/0 0/0 .text setExpressionBtp__8daNpcF_cFi */
-// bool daNpcF_c::setExpressionBtp(int param_0) {
-extern "C" bool setExpressionBtp__8daNpcF_cFi() {
- return true;
+ if (morfAnm) {
+ if (setMcaMorfAnm(morfAnm, 1.0f, i_morf, morfAttr, 0, -1)) {
+ mAnmFlags |= ANM_PAUSE_MORF | ANM_PLAY_MORF;
+ mMotionLoops = 0;
+ }
+ }
}
-/* 80AEA288-80AEA28C 002A28 0004+00 1/0 0/0 0/0 .text setExpression__8daNpcF_cFif */
-// void daNpcF_c::setExpression(int param_0, f32 param_1) {
-extern "C" void setExpression__8daNpcF_cFif() {
- /* empty function */
-}
-
-/* 80AEA28C-80AEA290 002A2C 0004+00 1/0 0/0 0/0 .text drawOtherMdls__8daNpcF_cFv */
-// void daNpcF_c::drawOtherMdls() {
-extern "C" void drawOtherMdls__8daNpcF_cFv() {
- /* empty function */
-}
-
-/* 80AEA290-80AEA2D8 002A30 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80AEA724-80AEA730 0001EC 000C+00 2/2 0/0 0/0 .data __vt__17daNpcShoe_Param_c */
-SECTION_DATA extern void* __vt__17daNpcShoe_Param_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17daNpcShoe_Param_cFv,
-};
-
-/* 80AEA738-80AEA744 000008 000C+00 1/1 0/0 0/0 .bss @3805 */
-static u8 lit_3805[12];
-
-/* 80AEA744-80AEA748 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[4];
-
-/* 80AEA2D8-80AEA340 002A78 0068+00 0/0 1/0 0/0 .text __sinit_d_a_npc_shoe_cpp */
-void __sinit_d_a_npc_shoe_cpp() {
- // NONMATCHING
+/* 80AE9AD0-80AE9AD8 002270 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpcShoe_cFv */
+BOOL daNpcShoe_c::drawDbgInfo() {
+ return FALSE;
}
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80AEA2D8, __sinit_d_a_npc_shoe_cpp);
-#pragma pop
-
/* 80AEA340-80AEA344 002AE0 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daNpcShoe_cFv
*/
void daNpcShoe_c::adjustShapeAngle() {
/* empty function */
}
-/* 80AEA344-80AEA38C 002AE4 0048+00 2/1 0/0 0/0 .text __dt__17daNpcShoe_Param_cFv */
-daNpcShoe_Param_c::~daNpcShoe_Param_c() {
- // NONMATCHING
-}
-
-/* 80AEA38C-80AEA394 002B2C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80AEA38C() {
- // NONMATCHING
-}
-
-/* 80AEA394-80AEA39C 002B34 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80AEA394() {
- // NONMATCHING
-}
+/* 80AEA608-80AEA628 -00001 0020+00 1/0 0/0 0/0 .data daNpcShoe_MethodTable */
+static actor_method_class daNpcShoe_MethodTable = {
+ (process_method_func)daNpcShoe_Create,
+ (process_method_func)daNpcShoe_Delete,
+ (process_method_func)daNpcShoe_Execute,
+ (process_method_func)daNpcShoe_IsDelete,
+ (process_method_func)daNpcShoe_Draw,
+};
-/* 80AEA51C-80AEA51C 00016C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80AEA628-80AEA658 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SHOE */
+extern actor_process_profile_definition g_profile_NPC_SHOE = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_NPC_SHOE, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daNpcShoe_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 417, // mPriority
+ &daNpcShoe_MethodTable, // sub_method
+ 0x00044107, // mStatus
+ fopAc_NPC_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};