From 4d405ea4816e75043f2e5565dd10948577b05ea5 Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Thu, 24 Jul 2025 12:12:52 -0400 Subject: [PATCH 01/11] class structure work --- include/d/actor/d_a_npc_shad.h | 39 ++++++++++++++++----- src/d/actor/d_a_npc_shad.cpp | 62 +++++++++++++++++++++++----------- 2 files changed, 73 insertions(+), 28 deletions(-) diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 18c2b8839d9..00362cb8715 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -11,7 +11,7 @@ * @details * */ -class daNpcShad_c : public fopAc_ac_c { +class daNpcShad_c : public daNpcF_c { public: /* 80AD820C */ daNpcShad_c(); /* 80AD8420 */ ~daNpcShad_c(); @@ -23,9 +23,9 @@ public: /* 80AD9280 */ void ctrlJoint(J3DJoint*, J3DModel*); /* 80AD944C */ void createHeapCallBack(fopAc_ac_c*); /* 80AD946C */ void ctrlJointCallBack(J3DJoint*, int); - /* 80AD94B8 */ void setExpressionAnm(int, bool); - /* 80AD974C */ void setExpressionBtp(int); - /* 80AD982C */ bool setMotionAnm(int, f32); + /* 80AD94B8 */ bool setExpressionAnm(int, bool); + /* 80AD974C */ bool setExpressionBtp(int); + /* 80AD982C */ void setMotionAnm(int, f32); /* 80AD99B4 */ void reset(); /* 80AD9C0C */ void setWaitAction(); /* 80AD9E04 */ void getPathPoint(u8, int, Vec*); @@ -51,27 +51,48 @@ public: /* 80ADFB70 */ void EvCut_WiretapSponsor(int); /* 80ADFE74 */ void EvCut_WiretapEntrant(int); /* 80AE01BC */ void setParam(); - /* 80AE0438 */ void main(); + /* 80AE0438 */ BOOL main(); /* 80AE04D8 */ void playMotion(); /* 80AE0B58 */ void playExpression(); - /* 80AE0ED0 */ void ctrlBtk(); + /* 80AE0ED0 */ BOOL ctrlBtk(); /* 80AE0FAC */ void setAttnPos(); /* 80AE1320 */ void lookat(); - /* 80AE153C */ bool drawDbgInfo(); + /* 80AE153C */ BOOL drawDbgInfo(); static u8 mEvtSeqList[168]; private: - /* 0x568 */ u8 field_0x568[0xe24 - 0x568]; + /* 0xB48 */ J3DModel* field_0xb48; + /* 0xB4C */ J3DModel* field_0xb4c; + /* 0xB50 */ Z2Creature mSound; + /* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm; + /* 0xBE4 */ daNpcF_Lookat_c mLookat; + /* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[5]; + /* 0xCA8 */ daPy_py_c* field_0xca8; + /* 0xCAC */ u8 field_0xcac[0xcb0 - 0xcac]; + /* 0xCB0 */ dCcD_Cyl field_0xcb0; + /* 0xDEC */ u8 field_0xdec[0xe08 - 0xdec]; + /* 0xE08 */ fpc_ProcID field_0xe08; + /* 0xE0C */ u8 field_0xe0c[0xe14 - 0xe0c]; + /* 0xE14 */ s16 field_0xe14; + /* 0xE16 */ s16 field_0xe16; + /* 0xE18 */ s16 field_0xe18; + /* 0xE1A */ u8 field_0xe1a[0xe20 - 0xe1a]; + /* 0xE20 */ u8 field_0xe20; }; STATIC_ASSERT(sizeof(daNpcShad_c) == 0xe24); +struct daNpcShad_HIOParam { + /* 0x00 */ daNpcF_HIOParam common; + /* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed) +}; + class daNpcShad_Param_c { public: /* 80AE1F70 */ ~daNpcShad_Param_c(); - static u8 const m[112]; + static const daNpcShad_HIOParam m; }; diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index 83e15a16f0e..c25d39dd151 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -848,16 +848,42 @@ daNpcShad_c::~daNpcShad_c() { /* ############################################################################################## */ /* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */ -SECTION_RODATA u8 const daNpcShad_Param_c::m[112] = { - 0x42, 0x0C, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC2, 0x20, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 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, 0x41, 0x40, 0x00, 0x00, +const daNpcShad_HIOParam daNpcShad_Param_c::m = { + 35.0f, + -3.0f, + 1.0f, + 400.0f, + 255.0f, + 200.0f, + 35.0f, + 30.0f, + 0.0f, + 0.0f, + 45.0f, + -45.0f, + 30.0f, + -10.0f, + 40.0f, + -40.0f, + 0.6f, + 12.0f, + 3, + 6, + 5, + 6, + 80.0f, + 500.0f, + 300.0f, + -300.0f, + 60, + 8, + 0, + 0, + 0, + false, + false, + 12.0f, }; -COMPILER_STRIP_GATE(0x80AE1FDC, &daNpcShad_Param_c::m); /* 80AE204C-80AE2050 000070 0004+00 0/1 0/0 0/0 .rodata @4402 */ #pragma push @@ -1040,20 +1066,18 @@ void daNpcShad_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { // NONMATCHING } -/* 80AD94B8-80AD974C 001398 0294+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcShad_cFib - */ -void daNpcShad_c::setExpressionAnm(int param_0, bool param_1) { +/* 80AD94B8-80AD974C 001398 0294+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcShad_cFib */ +bool daNpcShad_c::setExpressionAnm(int param_0, bool param_1) { // NONMATCHING } -/* 80AD974C-80AD982C 00162C 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpcShad_cFi - */ -void daNpcShad_c::setExpressionBtp(int param_0) { +/* 80AD974C-80AD982C 00162C 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpcShad_cFi */ +bool daNpcShad_c::setExpressionBtp(int param_0) { // NONMATCHING } /* 80AD982C-80AD99B4 00170C 0188+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShad_cFif */ -bool daNpcShad_c::setMotionAnm(int param_0, f32 param_1) { +void daNpcShad_c::setMotionAnm(int param_0, f32 param_1) { // NONMATCHING } @@ -2325,7 +2349,7 @@ void daNpcShad_c::setParam() { } /* 80AE0438-80AE04D8 008318 00A0+00 1/0 0/0 0/0 .text main__11daNpcShad_cFv */ -void daNpcShad_c::main() { +BOOL daNpcShad_c::main() { // NONMATCHING } @@ -2345,7 +2369,7 @@ SECTION_RODATA static f32 const lit_6995 = 1.0f / 5.0f; COMPILER_STRIP_GATE(0x80AE24B0, &lit_6995); /* 80AE0ED0-80AE0FAC 008DB0 00DC+00 1/0 0/0 0/0 .text ctrlBtk__11daNpcShad_cFv */ -void daNpcShad_c::ctrlBtk() { +BOOL daNpcShad_c::ctrlBtk() { // NONMATCHING } @@ -2383,7 +2407,7 @@ void daNpcShad_c::lookat() { } /* 80AE153C-80AE1544 00941C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpcShad_cFv */ -bool daNpcShad_c::drawDbgInfo() { +BOOL daNpcShad_c::drawDbgInfo() { return false; } From e6a2729505bb3d552b5967a6d07ddc86577167f1 Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Thu, 24 Jul 2025 13:11:52 -0400 Subject: [PATCH 02/11] some Create() work --- include/d/actor/d_a_npc_shad.h | 9 +- src/d/actor/d_a_npc_shad.cpp | 809 ++++----------------------------- 2 files changed, 103 insertions(+), 715 deletions(-) diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 00362cb8715..2a20cc0485a 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -13,9 +13,9 @@ */ class daNpcShad_c : public daNpcF_c { public: - /* 80AD820C */ daNpcShad_c(); + /* 80AD820C */ daNpcShad_c() : daNpcF_c() {} /* 80AD8420 */ ~daNpcShad_c(); - /* 80AD8620 */ void Create(); + /* 80AD8620 */ cPhs__Step Create(); /* 80AD8B60 */ void CreateHeap(); /* 80AD90E0 */ void Delete(); /* 80AD9114 */ void Execute(); @@ -28,7 +28,7 @@ public: /* 80AD982C */ void setMotionAnm(int, f32); /* 80AD99B4 */ void reset(); /* 80AD9C0C */ void setWaitAction(); - /* 80AD9E04 */ void getPathPoint(u8, int, Vec*); + /* 80AD9E04 */ bool getPathPoint(u8, int, Vec*); /* 80AD9E90 */ void isSneaking(); /* 80AD9F00 */ void wait_type0(void*); /* 80ADA630 */ void setMotion(int, f32, int); @@ -61,6 +61,9 @@ public: static u8 mEvtSeqList[168]; + u8 getPathID() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } + s16 getMessageNo() { return shape_angle.x; } + private: /* 0xB48 */ J3DModel* field_0xb48; /* 0xB4C */ J3DModel* field_0xb4c; diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index c25d39dd151..54fa152ddbd 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -4,275 +4,9 @@ */ #include "d/actor/d_a_npc_shad.h" +#include "d/actor/d_a_npc.h" #include "dol2asm.h" -// -// Forward References: -// - -extern "C" void __ct__11daNpcShad_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__11daNpcShad_cFv(); -extern "C" void Create__11daNpcShad_cFv(); -extern "C" void CreateHeap__11daNpcShad_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__11daNpcShad_cFv(); -extern "C" void Execute__11daNpcShad_cFv(); -extern "C" void Draw__11daNpcShad_cFv(); -extern "C" void ctrlJoint__11daNpcShad_cFP8J3DJointP8J3DModel(); -extern "C" void createHeapCallBack__11daNpcShad_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__11daNpcShad_cFP8J3DJointi(); -extern "C" void setExpressionAnm__11daNpcShad_cFib(); -extern "C" void setExpressionBtp__11daNpcShad_cFi(); -extern "C" void setMotionAnm__11daNpcShad_cFif(); -extern "C" void reset__11daNpcShad_cFv(); -extern "C" void setWaitAction__11daNpcShad_cFv(); -extern "C" void getPathPoint__11daNpcShad_cFUciP3Vec(); -extern "C" void isSneaking__11daNpcShad_cFv(); -extern "C" void wait_type0__11daNpcShad_cFPv(); -extern "C" void setMotion__11daNpcShad_cFifi(); -extern "C" void setExpression__11daNpcShad_cFif(); -extern "C" void wait_type1__11daNpcShad_cFPv(); -extern "C" void wait_type2__11daNpcShad_cFPv(); -extern "C" void talk__11daNpcShad_cFPv(); -extern "C" void demo__11daNpcShad_cFPv(); -extern "C" void leave__11daNpcShad_cFPv(); -extern "C" void EvCut_Introduction__11daNpcShad_cFi(); -extern "C" void EvCut_Meeting__11daNpcShad_cFi(); -extern "C" void EvCut_ToChantSpell1__11daNpcShad_cFi(); -extern "C" void EvCut_ToChantSpell2__11daNpcShad_cFi(); -extern "C" void EvCut_ToChantSpell2Skip__11daNpcShad_cFi(); -extern "C" void EvCut_DiscoveryCannon__11daNpcShad_cFi(); -extern "C" void EvCut_DiscoveryCannonSkip__11daNpcShad_cFi(); -extern "C" void EvCut_Disappear__11daNpcShad_cFi(); -extern "C" void EvCut_DisappearSkip__11daNpcShad_cFi(); -extern "C" void EvCut_CallBack__11daNpcShad_cFi(); -extern "C" void EvCut_WiretapSponsor__11daNpcShad_cFi(); -extern "C" void EvCut_WiretapEntrant__11daNpcShad_cFi(); -extern "C" static void daNpcShad_Create__FPv(); -extern "C" static void daNpcShad_Delete__FPv(); -extern "C" static void daNpcShad_Execute__FPv(); -extern "C" static void daNpcShad_Draw__FPv(); -extern "C" static bool daNpcShad_IsDelete__FPv(); -extern "C" void calc__11J3DTexNoAnmCFPUs(); -extern "C" void setParam__11daNpcShad_cFv(); -extern "C" void main__11daNpcShad_cFv(); -extern "C" void playMotion__11daNpcShad_cFv(); -extern "C" void playExpression__11daNpcShad_cFv(); -extern "C" void ctrlBtk__11daNpcShad_cFv(); -extern "C" void setAttnPos__11daNpcShad_cFv(); -extern "C" void lookat__11daNpcShad_cFv(); -extern "C" bool drawDbgInfo__11daNpcShad_cFv(); -extern "C" void func_80AE1544(void* _this, s16); -extern "C" void __sinit_d_a_npc_shad_cpp(); -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" void adjustShapeAngle__8daNpcF_cFv(); -extern "C" void setCollisions__8daNpcF_cFv(); -extern "C" void drawOtherMdls__8daNpcF_cFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz(); -extern "C" void __dt__17daNpcShad_Param_cFv(); -extern "C" static void func_80AE1FB8(); -extern "C" static void func_80AE1FC0(); -extern "C" u8 const m__17daNpcShad_Param_c[112]; -extern "C" extern char const* const d_a_npc_shad__stringBase0; -extern "C" u8 mEvtSeqList__11daNpcShad_c[168]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -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 mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -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_SearchByName__FsPP10fopAc_ac_c(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -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_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs(); -extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz(); -extern "C" void fpcSch_JudgeForPName__FPvPv(); -extern "C" void getLayerNo__14dComIfG_play_cFi(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGs_isStageSwitch__Fii(); -extern "C" void setItem__17dSv_player_item_cFiUc(); -extern "C" void onSwitch__12dSv_memBit_cFi(); -extern "C" void isSwitch__12dSv_memBit_cCFi(); -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 dEv_noFinishSkipProc__FPvi(); -extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); -extern "C" void onSkipFade__14dEvt_control_cFv(); -extern "C" void convPId__14dEvt_control_cFUi(); -extern "C" void setPtI_Id__14dEvt_control_cFUi(); -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 getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMyNowCutName__16dEvent_manager_cFi(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void dPath_GetPnt__FPC5dPathi(); -extern "C" void dPath_GetRoomPath__Fii(); -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_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 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 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 orderEvent__8daNpcF_cFiPcUsUsUcUs(); -extern "C" void changeEvent__8daNpcF_cFPcPcUsUs(); -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 turn__8daNpcF_cFsfi(); -extern "C" void setAngle__8daNpcF_cFs(); -extern "C" void getDistTableIdx__8daNpcF_cFii(); -extern "C" void getEvtAreaTagP__8daNpcF_cFii(); -extern "C" void daNpcF_chkEvtBit__FUl(); -extern "C" void daNpcF_onEvtBit__FUl(); -extern "C" void daNpcF_chkTmpBit__FUl(); -extern "C" void daNpcF_offTmpBit__FUl(); -extern "C" void daNpcF_clearMessageTmpBit__Fv(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void onKillMessageFlag__12dMsgObject_cFv(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void getEventId__10dMsgFlow_cFPi(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __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 seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void subBgmStart__8Z2SeqMgrFUl(); -extern "C" void bgmStreamPrepare__8Z2SeqMgrFUl(); -extern "C" void bgmStreamPlay__8Z2SeqMgrFv(); -extern "C" void bgmStreamStop__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_scall(); -extern "C" void _savegpr_24(); -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_24(); -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__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" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz4cXyz(); -extern "C" void __register_global_object(); - // // Declarations: // @@ -301,23 +35,7 @@ SECTION_DEAD static char const* const stringBase_80AE25B5 = "RESIST_WIRETAP_SHAD SECTION_DEAD static char const* const stringBase_80AE25C9 = "RESIST_WIRETAP_RAFREL"; #pragma pop -/* 80AE2620-80AE262C 000000 000C+00 7/7 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, -}; - -/* 80AE262C-80AE2640 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 /* 80AE2640-80AE27F0 000020 01B0+00 1/2 0/0 0/0 .data l_bckGetParamList */ SECTION_DATA static u8 l_bckGetParamList[432] = { @@ -395,28 +113,11 @@ SECTION_DATA static void* l_loadRes_list[3] = { /* 80AE28E0-80AE28F0 -00001 0010+00 6/8 0/0 0/0 .data l_arcNames */ SECTION_DATA static void* l_arcNames[4] = { - (void*)&d_a_npc_shad__stringBase0, - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x5), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0xB), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x11), }; /* 80AE28F0-80AE2928 -00001 0038+00 3/6 0/0 0/0 .data l_evtNames */ SECTION_DATA static void* l_evtNames[14] = { - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x17), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x18), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x29), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x38), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x4D), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x62), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x7C), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x92), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0xAD), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0xBC), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0xD0), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0xDE), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0xF1), - (void*)(((char*)&d_a_npc_shad__stringBase0) + 0x105), + }; /* 80AE2928-80AE2960 000308 0038+00 3/6 0/0 0/0 .data l_evtArcs */ @@ -430,142 +131,10 @@ SECTION_DATA static u8 l_evtArcs[56] = { /* 80AE2960-80AE2964 -00001 0004+00 0/3 0/0 0/0 .data l_myName */ #pragma push #pragma force_active on -SECTION_DATA static void* l_myName = (void*)&d_a_npc_shad__stringBase0; -#pragma pop - -/* 80AE2964-80AE2970 -00001 000C+00 0/1 0/0 0/0 .data @3932 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3932[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_Introduction__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE2970-80AE297C -00001 000C+00 0/1 0/0 0/0 .data @3933 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3933[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_Meeting__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE297C-80AE2988 -00001 000C+00 0/1 0/0 0/0 .data @3934 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3934[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_ToChantSpell1__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE2988-80AE2994 -00001 000C+00 0/1 0/0 0/0 .data @3935 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3935[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_ToChantSpell2__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE2994-80AE29A0 -00001 000C+00 0/1 0/0 0/0 .data @3936 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3936[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_ToChantSpell2Skip__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29A0-80AE29AC -00001 000C+00 0/1 0/0 0/0 .data @3937 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3937[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_DiscoveryCannon__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29AC-80AE29B8 -00001 000C+00 0/1 0/0 0/0 .data @3938 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3938[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_DiscoveryCannonSkip__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29B8-80AE29C4 -00001 000C+00 0/1 0/0 0/0 .data @3939 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3939[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_Disappear__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29C4-80AE29D0 -00001 000C+00 0/1 0/0 0/0 .data @3940 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3940[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_DisappearSkip__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29D0-80AE29DC -00001 000C+00 0/1 0/0 0/0 .data @3941 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3941[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_CallBack__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29DC-80AE29E8 -00001 000C+00 0/1 0/0 0/0 .data @3942 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3942[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_WiretapEntrant__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29E8-80AE29F4 -00001 000C+00 0/1 0/0 0/0 .data @3943 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3943[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_WiretapSponsor__11daNpcShad_cFi, -}; -#pragma pop - -/* 80AE29F4-80AE2A00 -00001 000C+00 0/1 0/0 0/0 .data @3944 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3944[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_WiretapEntrant__11daNpcShad_cFi, -}; +SECTION_DATA static void* l_myName; #pragma pop /* 80AE2A00-80AE2AA8 0003E0 00A8+00 0/2 0/0 0/0 .data mEvtSeqList__11daNpcShad_c */ -#pragma push -#pragma force_active on SECTION_DATA u8 daNpcShad_c::mEvtSeqList[168] = { 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, @@ -579,274 +148,17 @@ SECTION_DATA u8 daNpcShad_c::mEvtSeqList[168] = { 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 -/* 80AE2AA8-80AE2ADC -00001 0034+00 1/1 0/0 0/0 .data @4739 */ -SECTION_DATA static void* lit_4739[13] = { - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0xA0), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0xBC), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0xD8), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0xF4), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x110), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x12C), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x148), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x164), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x180), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x19C), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x1B8), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x1D4), - (void*)(((char*)setExpressionAnm__11daNpcShad_cFib) + 0x1F0), -}; - -/* 80AE2ADC-80AE2AE8 -00001 000C+00 0/3 0/0 0/0 .data @4923 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4923[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait_type0__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2AE8-80AE2AF4 -00001 000C+00 0/3 0/0 0/0 .data @4926 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4926[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait_type1__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2AF4-80AE2B00 -00001 000C+00 0/3 0/0 0/0 .data @4929 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4929[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait_type2__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2B00-80AE2B0C -00001 000C+00 0/1 0/0 0/0 .data @5064 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5064[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2B0C-80AE2B18 -00001 000C+00 0/1 0/0 0/0 .data @5069 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5069[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2B18-80AE2B24 -00001 000C+00 0/1 0/0 0/0 .data @5295 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5295[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2B24-80AE2B30 -00001 000C+00 0/1 0/0 0/0 .data @5300 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5300[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo__11daNpcShad_cFPv, -}; -#pragma pop - -/* 80AE2B30-80AE2B3C -00001 000C+00 1/1 0/0 0/0 .data @5565 */ -SECTION_DATA static void* lit_5565[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)leave__11daNpcShad_cFPv, -}; - -/* 80AE2B3C-80AE2B5C -00001 0020+00 1/1 0/0 0/0 .data @6551 */ -SECTION_DATA static void* lit_6551[8] = { - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x480), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x730), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x480), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x730), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x488), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x730), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x730), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x488), -}; - -/* 80AE2B5C-80AE2B7C -00001 0020+00 1/1 0/0 0/0 .data @6550 */ -SECTION_DATA static void* lit_6550[8] = { - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x7C), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x280), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x12C), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x25C), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x20C), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x25C), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x25C), - (void*)(((char*)EvCut_DiscoveryCannon__11daNpcShad_cFi) + 0x20C), -}; - -/* 80AE2B7C-80AE2B9C -00001 0020+00 1/0 0/0 0/0 .data daNpcShad_MethodTable */ -static actor_method_class daNpcShad_MethodTable = { - (process_method_func)daNpcShad_Create__FPv, - (process_method_func)daNpcShad_Delete__FPv, - (process_method_func)daNpcShad_Execute__FPv, - (process_method_func)daNpcShad_IsDelete__FPv, - (process_method_func)daNpcShad_Draw__FPv, -}; - -/* 80AE2B9C-80AE2BCC -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SHAD */ -extern actor_process_profile_definition g_profile_NPC_SHAD = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_NPC_SHAD, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daNpcShad_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 413, // mPriority - &daNpcShad_MethodTable, // sub_method - 0x00040100, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80AE2BCC-80AE2BD8 0005AC 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, -}; - -/* 80AE2BD8-80AE2C20 0005B8 0048+00 2/2 0/0 0/0 .data __vt__11daNpcShad_c */ -SECTION_DATA extern void* __vt__11daNpcShad_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daNpcShad_cFv, - (void*)setParam__11daNpcShad_cFv, - (void*)main__11daNpcShad_cFv, - (void*)ctrlBtk__11daNpcShad_cFv, - (void*)adjustShapeAngle__8daNpcF_cFv, - (void*)setMtx__8daNpcF_cFv, - (void*)setMtx2__8daNpcF_cFv, - (void*)setAttnPos__11daNpcShad_cFv, - (void*)setCollisions__8daNpcF_cFv, - (void*)setExpressionAnm__11daNpcShad_cFib, - (void*)setExpressionBtp__11daNpcShad_cFi, - (void*)setExpression__11daNpcShad_cFif, - (void*)setMotionAnm__11daNpcShad_cFif, - (void*)setMotion__11daNpcShad_cFifi, - (void*)drawDbgInfo__11daNpcShad_cFv, - (void*)drawOtherMdls__8daNpcF_cFv, -}; - -/* 80AE2C20-80AE2C2C 000600 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, -}; - -/* 80AE2C2C-80AE2C50 00060C 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_80AE1FC0, - (void*)NULL, - (void*)NULL, - (void*)func_80AE1FB8, -}; - -/* 80AE2C50-80AE2C5C 000630 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, -}; - -/* 80AE2C5C-80AE2C68 00063C 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, -}; - -/* 80AE2C68-80AE2C74 000648 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, -}; - -/* 80AE2C74-80AE2C80 000654 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, -}; - -/* 80AE2C80-80AE2C8C 000660 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, -}; - -/* 80AE2C8C-80AE2C98 00066C 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, -}; - -/* 80AE2C98-80AE2CA4 000678 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, -}; - -/* 80AD820C-80AD8390 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShad_cFv */ -daNpcShad_c::daNpcShad_c() { - // NONMATCHING -} - -/* 80AD8390-80AD83D8 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80AD83D8-80AD8420 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} +// /* 80AD820C-80AD8390 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShad_cFv */ +// daNpcShad_c::daNpcShad_c() : daNpcF_c() { +// // NONMATCHING +// } /* 80AD8420-80AD8620 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpcShad_cFv */ daNpcShad_c::~daNpcShad_c() { // NONMATCHING } -/* ############################################################################################## */ /* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */ const daNpcShad_HIOParam daNpcShad_Param_c::m = { 35.0f, @@ -943,8 +255,68 @@ SECTION_DEAD static char const* const stringBase_80AE25EF = "D_MN09"; #pragma pop /* 80AD8620-80AD8B60 000500 0540+00 1/1 0/0 0/0 .text Create__11daNpcShad_cFv */ -void daNpcShad_c::Create() { +cPhs__Step daNpcShad_c::Create() { // NONMATCHING + fopAcM_SetupActor(this, daNpcShad_c); + + if (strcmp(dComIfGp_getStartStageName(), "R_SP116") == 0 && dComIfG_play_c::getLayerNo(0) == 4) { + if (daNpcF_chkEvtBit(0x169) && daNpcF_chkEvtBit(0x10A) && daNpcF_chkEvtBit(0x10B) && !daNpcF_chkEvtBit(0x10C)) { + return cPhs_ERROR_e; + } + + if (dComIfGs_isStageSwitch(0x18, 0x4B)) { + return cPhs_ERROR_e; + } + + field_0xe20 = 0; + } else { + if (strcmp(dComIfGp_getStartStageName(), "R_SP209") == 0) { + if (daNpcF_chkEvtBit(0x311)) { + return cPhs_ERROR_e; + } + + if (!daNpcF_chkEvtBit(0x10B) || (daNpcF_chkEvtBit(0x12E) && !daNpcF_chkEvtBit(0x31C))) { + return cPhs_ERROR_e; + } + + if (daNpcF_chkEvtBit(0x12F)) { + if (!daNpcF_chkEvtBit(0x312)) { + if (getPathPoint(getPathID(), 1, &home.pos)) { + current.pos = home.pos; + old.pos = current.pos; + } + } else { + home.pos.set(4342.718f, -1518.5f, -3942.323); + current.pos = home.pos; + old.pos = current.pos; + setAngle(-0x2581); + } + } + + field_0xe20 = 1; + } else { + if (strcmp(dComIfGp_getStartStageName(), "D_MN09") == 0) { + if (dComIfGs_isSaveSwitch(20)) { + return cPhs_ERROR_e; + } + + fopAcM_OnStatus(this, 0x4000); + field_0xe20 = 2; + } + } + } + + s16 sVar1; + if (field_0xe20 == 1 && daNpcF_chkEvtBit(0x31C)) { + sVar1 = 0x42; + } else { + sVar1 = getMessageNo(); + } + + field_0xe14 = sVar1; + field_0xe16 = field_0xe14; + + } /* ############################################################################################## */ @@ -1092,7 +464,7 @@ void daNpcShad_c::setWaitAction() { } /* 80AD9E04-80AD9E90 001CE4 008C+00 1/1 0/0 0/0 .text getPathPoint__11daNpcShad_cFUciP3Vec */ -void daNpcShad_c::getPathPoint(u8 param_0, int param_1, Vec* param_2) { +bool daNpcShad_c::getPathPoint(u8 param_0, int param_1, Vec* param_2) { // NONMATCHING } @@ -2416,14 +1788,6 @@ extern "C" void func_80AE1544(void* _this, s16 param_0) /* const */ { // NONMATCHING } -/* ############################################################################################## */ -/* 80AE2CA4-80AE2CB0 000684 000C+00 2/2 0/0 0/0 .data __vt__17daNpcShad_Param_c */ -SECTION_DATA extern void* __vt__17daNpcShad_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daNpcShad_Param_cFv, -}; - /* 80AE2CB8-80AE2CC4 000008 000C+00 1/1 0/0 0/0 .bss @3931 */ static u8 lit_3931[12]; @@ -2482,12 +1846,6 @@ extern "C" void __ct__4cXyzFv() { /* empty function */ } -/* 80AE18FC-80AE1B48 0097DC 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */ -// daNpcF_c::~daNpcF_c() { -extern "C" void __dt__8daNpcF_cFv() { - // NONMATCHING -} - /* 80AE1B48-80AE1D38 009A28 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */ // daNpcF_c::daNpcF_c() { extern "C" void __ct__8daNpcF_cFv() { @@ -2572,3 +1930,30 @@ COMPILER_STRIP_GATE(0x80AE24C0, &lit_7144); #pragma pop /* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ + +/* 80AE2B7C-80AE2B9C -00001 0020+00 1/0 0/0 0/0 .data daNpcShad_MethodTable */ +static actor_method_class daNpcShad_MethodTable = { + (process_method_func)daNpcShad_Create, + (process_method_func)daNpcShad_Delete, + (process_method_func)daNpcShad_Execute, + (process_method_func)daNpcShad_IsDelete, + (process_method_func)daNpcShad_Draw, +}; + +/* 80AE2B9C-80AE2BCC -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SHAD */ +extern actor_process_profile_definition g_profile_NPC_SHAD = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_NPC_SHAD, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daNpcShad_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 413, // mPriority + &daNpcShad_MethodTable, // sub_method + 0x00040100, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; From 8df5cf3293a96e47f2de5306dcee610daa997907 Mon Sep 17 00:00:00 2001 From: Carter <144170194+carter-ktb21@users.noreply.github.com> Date: Fri, 25 Jul 2025 14:57:28 -0400 Subject: [PATCH 03/11] Action functions worked on --- include/d/actor/d_a_npc_shad.h | 177 ++-- src/d/actor/d_a_npc_shad.cpp | 1492 ++++++++++++++++++++++++-------- 2 files changed, 1214 insertions(+), 455 deletions(-) diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 2a20cc0485a..3cc063cd869 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -11,80 +11,6 @@ * @details * */ -class daNpcShad_c : public daNpcF_c { -public: - /* 80AD820C */ daNpcShad_c() : daNpcF_c() {} - /* 80AD8420 */ ~daNpcShad_c(); - /* 80AD8620 */ cPhs__Step Create(); - /* 80AD8B60 */ void CreateHeap(); - /* 80AD90E0 */ void Delete(); - /* 80AD9114 */ void Execute(); - /* 80AD9138 */ void Draw(); - /* 80AD9280 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 80AD944C */ void createHeapCallBack(fopAc_ac_c*); - /* 80AD946C */ void ctrlJointCallBack(J3DJoint*, int); - /* 80AD94B8 */ bool setExpressionAnm(int, bool); - /* 80AD974C */ bool setExpressionBtp(int); - /* 80AD982C */ void setMotionAnm(int, f32); - /* 80AD99B4 */ void reset(); - /* 80AD9C0C */ void setWaitAction(); - /* 80AD9E04 */ bool getPathPoint(u8, int, Vec*); - /* 80AD9E90 */ void isSneaking(); - /* 80AD9F00 */ void wait_type0(void*); - /* 80ADA630 */ void setMotion(int, f32, int); - /* 80ADA674 */ void setExpression(int, f32); - /* 80ADA6A0 */ void wait_type1(void*); - /* 80ADB428 */ void wait_type2(void*); - /* 80ADB628 */ void talk(void*); - /* 80ADBEA8 */ void demo(void*); - /* 80ADC3DC */ void leave(void*); - /* 80ADC700 */ void EvCut_Introduction(int); - /* 80ADC800 */ void EvCut_Meeting(int); - /* 80ADCAD8 */ void EvCut_ToChantSpell1(int); - /* 80ADD720 */ void EvCut_ToChantSpell2(int); - /* 80ADE47C */ void EvCut_ToChantSpell2Skip(int); - /* 80ADE5F8 */ void EvCut_DiscoveryCannon(int); - /* 80ADED68 */ void EvCut_DiscoveryCannonSkip(int); - /* 80ADEEE4 */ void EvCut_Disappear(int); - /* 80ADF810 */ void EvCut_DisappearSkip(int); - /* 80ADF8DC */ void EvCut_CallBack(int); - /* 80ADFB70 */ void EvCut_WiretapSponsor(int); - /* 80ADFE74 */ void EvCut_WiretapEntrant(int); - /* 80AE01BC */ void setParam(); - /* 80AE0438 */ BOOL main(); - /* 80AE04D8 */ void playMotion(); - /* 80AE0B58 */ void playExpression(); - /* 80AE0ED0 */ BOOL ctrlBtk(); - /* 80AE0FAC */ void setAttnPos(); - /* 80AE1320 */ void lookat(); - /* 80AE153C */ BOOL drawDbgInfo(); - - static u8 mEvtSeqList[168]; - - u8 getPathID() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } - s16 getMessageNo() { return shape_angle.x; } - -private: - /* 0xB48 */ J3DModel* field_0xb48; - /* 0xB4C */ J3DModel* field_0xb4c; - /* 0xB50 */ Z2Creature mSound; - /* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm; - /* 0xBE4 */ daNpcF_Lookat_c mLookat; - /* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[5]; - /* 0xCA8 */ daPy_py_c* field_0xca8; - /* 0xCAC */ u8 field_0xcac[0xcb0 - 0xcac]; - /* 0xCB0 */ dCcD_Cyl field_0xcb0; - /* 0xDEC */ u8 field_0xdec[0xe08 - 0xdec]; - /* 0xE08 */ fpc_ProcID field_0xe08; - /* 0xE0C */ u8 field_0xe0c[0xe14 - 0xe0c]; - /* 0xE14 */ s16 field_0xe14; - /* 0xE16 */ s16 field_0xe16; - /* 0xE18 */ s16 field_0xe18; - /* 0xE1A */ u8 field_0xe1a[0xe20 - 0xe1a]; - /* 0xE20 */ u8 field_0xe20; -}; - -STATIC_ASSERT(sizeof(daNpcShad_c) == 0xe24); struct daNpcShad_HIOParam { /* 0x00 */ daNpcF_HIOParam common; @@ -98,5 +24,108 @@ public: static const daNpcShad_HIOParam m; }; +class daNpcShad_c : public daNpcF_c { +public: + typedef bool (daNpcShad_c::*ActionFn)(void*); + typedef BOOL (daNpcShad_c::*EventFn)(int); + + /* 80AD820C */ daNpcShad_c() : daNpcF_c() {} + /* 80AD8420 */ ~daNpcShad_c(); + /* 80AD8620 */ cPhs__Step Create(); + /* 80AD8B60 */ int CreateHeap(); + /* 80AD90E0 */ int Delete(); + /* 80AD9114 */ int Execute(); + /* 80AD9138 */ int Draw(); + /* 80AD9280 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 80AD944C */ static int createHeapCallBack(fopAc_ac_c*); + /* 80AD946C */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80AD94B8 */ bool setExpressionAnm(int, bool); + /* 80AD974C */ bool setExpressionBtp(int); + /* 80AD982C */ void setMotionAnm(int, f32); + /* 80AD99B4 */ void reset(); + /* 80AD9C0C */ inline void setWaitAction(); + /* 80AD9E04 */ bool getPathPoint(u8, int, Vec*); + /* 80AD9E90 */ inline bool isSneaking(); + /* 80AD9F00 */ bool wait_type0(void*); + /* 80ADA630 */ void setMotion(int, f32, int); + /* 80ADA674 */ void setExpression(int, f32); + /* 80ADA6A0 */ bool wait_type1(void*); + /* 80ADB428 */ bool wait_type2(void*); + /* 80ADB628 */ bool talk(void*); + /* 80ADBEA8 */ bool demo(void*); + /* 80ADC3DC */ bool leave(void*); + /* 80ADC700 */ BOOL EvCut_Introduction(int); + /* 80ADC800 */ BOOL EvCut_Meeting(int); + /* 80ADCAD8 */ BOOL EvCut_ToChantSpell1(int); + /* 80ADD720 */ BOOL EvCut_ToChantSpell2(int); + /* 80ADE47C */ BOOL EvCut_ToChantSpell2Skip(int); + /* 80ADE5F8 */ BOOL EvCut_DiscoveryCannon(int); + /* 80ADED68 */ BOOL EvCut_DiscoveryCannonSkip(int); + /* 80ADEEE4 */ BOOL EvCut_Disappear(int); + /* 80ADF810 */ BOOL EvCut_DisappearSkip(int); + /* 80ADF8DC */ BOOL EvCut_CallBack(int); + /* 80ADFB70 */ BOOL EvCut_WiretapSponsor(int); + /* 80ADFE74 */ BOOL EvCut_WiretapEntrant(int); + /* 80AE01BC */ void setParam(); + /* 80AE0438 */ BOOL main(); + /* 80AE04D8 */ void playMotion(); + /* 80AE0B58 */ void playExpression(); + /* 80AE0ED0 */ BOOL ctrlBtk(); + /* 80AE0FAC */ void setAttnPos(); + /* 80AE1320 */ void lookat(); + /* 80AE153C */ BOOL drawDbgInfo(); + + static EventFn mEvtSeqList[14]; + + u8 getPathID() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } + s16 getMessageNo() { return shape_angle.x; } + + inline void setAction(ActionFn action) { + field_0xe1a = 3; + + if (mActionFn) { + (this->*mActionFn)(NULL); + } + + field_0xe1a = 0; + mActionFn = action; + + if (mActionFn) { + (this->*mActionFn)(NULL); + } + } + + inline BOOL chkFindPlayer(); + inline void setLookMode(int, daPy_py_c*, cXyz*); + inline BOOL step(s16, int, f32); + + inline void setExpressionTalkAfter(); + +private: + /* 0xB48 */ J3DModel* field_0xb48; + /* 0xB4C */ J3DModel* field_0xb4c; + /* 0xB50 */ Z2Creature mSound; + /* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm; + /* 0xBE4 */ daNpcF_Lookat_c mLookat; + /* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[5]; + /* 0xCA8 */ daPy_py_c* field_0xca8; + /* 0xCAC */ u8 field_0xcac[0xcb0 - 0xcac]; + /* 0xCB0 */ dCcD_Cyl field_0xcb0; + /* 0xDEC */ ActionFn mActionFn; + /* 0xDF8 */ request_of_phase_process_class mPhases[2]; + /* 0xE08 */ fpc_ProcID field_0xe08; + /* 0xE0C */ int field_0xe0c; + /* 0xE10 */ int field_0xe10; + /* 0xE14 */ s16 field_0xe14; + /* 0xE16 */ s16 field_0xe16; + /* 0xE18 */ s16 field_0xe18; + /* 0xE1A */ u16 field_0xe1a; + /* 0xE1C */ s16 field_0xe1c; + /* 0xE1E */ u8 field_0xe1e; + /* 0xE1F */ u8 field_0xe1f; + /* 0xE20 */ u8 mMode; +}; + +STATIC_ASSERT(sizeof(daNpcShad_c) == 0xe24); #endif /* D_A_NPC_SHAD_H */ diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index 54fa152ddbd..2a159c06de0 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -5,6 +5,7 @@ #include "d/actor/d_a_npc_shad.h" #include "d/actor/d_a_npc.h" +#include "d/actor/d_a_tag_evtarea.h" #include "dol2asm.h" // @@ -38,115 +39,154 @@ SECTION_DEAD static char const* const stringBase_80AE25C9 = "RESIST_WIRETAP_RAFR UNK_REL_DATA /* 80AE2640-80AE27F0 000020 01B0+00 1/2 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[432] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 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, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +static daNpc_GetParam2 l_bckGetParamList[36] = { + {-1, 2, 0}, + {9, 0, 0}, + {8, 0, 0}, + {0xB, 0, 1}, + {7, 0, 0}, + {0xC, 2, 1}, + {0xD, 0, 1}, + {0xE, 0, 1}, + {0x11, 2, 1}, + {0x10, 2, 1}, + {0xB, 2, 0}, + {0xF, 2, 1}, + {0xA, 2, 0}, + {0x1E, 2, 1}, + {0x1D, 0, 1}, + {0x18, 0, 1}, + {0x19, 2, 1}, + {7, 2, 1}, + {6, 0, 1}, + {0x12, 0, 1}, + {0xC, 2, 0}, + {0x1F, 2, 1}, + {3, 2, 2}, + {0x15, 0, 1}, + {8, 2, 1}, + {9, 0, 1}, + {0xA, 2, 1}, + {4, 0, 2}, + {0x13, 0, 1}, + {0x14, 2, 1}, + {0x17, 2, 1}, + {3, 2, 3}, + {0x1C, 0, 1}, + {0x16, 2, 1}, + {0x1A, 0, 1}, + {0x1B, 2, 1}, }; /* 80AE27F0-80AE2874 0001D0 0084+00 1/1 0/0 0/0 .data l_btpGetParamList */ -SECTION_DATA static u8 l_btpGetParamList[132] = { - 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam2 l_btpGetParamList[11] = { + {0x16, 2, 0}, + {0x2B, 0, 1}, + {0x17, 0, 0}, + {0x18, 0, 0}, + {0x2D, 0, 1}, + {0x2E, 0, 1}, + {0x31, 2, 1}, + {0x30, 2, 1}, + {0x2F, 2, 1}, + {0x19, 2, 0}, + {0x1A, 2, 0}, }; /* 80AE2874-80AE28B0 000254 003C+00 1/2 0/0 0/0 .data l_btkGetParamList */ -SECTION_DATA static u8 l_btkGetParamList[60] = { - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +static daNpc_GetParam2 l_btkGetParamList[5] = { + {0x13, 2, 0}, + {0x25, 0, 1}, + {0x26, 2, 1}, + {0x28, 0, 1}, + {0x27, 2, 1}, }; /* 80AE28B0-80AE28BC 000290 000C+00 1/0 0/0 0/0 .data l_loadRes_SHAD0 */ -SECTION_DATA static u8 l_loadRes_SHAD0[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, +static int l_loadRes_SHAD0[12] = { + 0, 2, -1, }; /* 80AE28BC-80AE28C8 00029C 000C+00 1/0 0/0 0/0 .data l_loadRes_SHAD1 */ -SECTION_DATA static u8 l_loadRes_SHAD1[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, +static int l_loadRes_SHAD1[3] = { + 0, 1, -1, }; /* 80AE28C8-80AE28D4 0002A8 000C+00 1/0 0/0 0/0 .data l_loadRes_SHAD2 */ -SECTION_DATA static u8 l_loadRes_SHAD2[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, +static int l_loadRes_SHAD2[3] = { + 0, 3, -1, }; /* 80AE28D4-80AE28E0 -00001 000C+00 2/2 0/0 0/0 .data l_loadRes_list */ -SECTION_DATA static void* l_loadRes_list[3] = { - (void*)&l_loadRes_SHAD0, - (void*)&l_loadRes_SHAD1, - (void*)&l_loadRes_SHAD2, +static int* l_loadRes_list[3] = { + l_loadRes_SHAD0, + l_loadRes_SHAD1, + l_loadRes_SHAD2, }; /* 80AE28E0-80AE28F0 -00001 0010+00 6/8 0/0 0/0 .data l_arcNames */ -SECTION_DATA static void* l_arcNames[4] = { +static char* l_arcNames[4] = { + "Shad", + "Shad1", + "Shad2", + "Shad3", }; /* 80AE28F0-80AE2928 -00001 0038+00 3/6 0/0 0/0 .data l_evtNames */ -SECTION_DATA static void* l_evtNames[14] = { - +static char* l_evtNames[14] = { + NULL, + "THE_INTRODUCTION", + "RESIST_MEETING", + "SHAD_TO_CHANT_SPELL1", + "SHAD_TO_CHANT_SPELL2", + "SHAD_TO_CHANT_SPELL2_SKIP", + "SHAD_DISCOVERY_CANNON", + "SHAD_DISCOVERY_CANNON_SKIP", + "SHAD_DISAPPEAR", + "SHAD_DISAPPEAR_SKIP", + "SHAD_CALLBACK", + "RESIST_WIRETAP_ASH", + "RESIST_WIRETAP_SHAD", + "RESIST_WIRETAP_RAFREL" }; /* 80AE2928-80AE2960 000308 0038+00 3/6 0/0 0/0 .data l_evtArcs */ -SECTION_DATA static u8 l_evtArcs[56] = { - 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static char* l_evtArcs[14] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Shad", }; /* 80AE2960-80AE2964 -00001 0004+00 0/3 0/0 0/0 .data l_myName */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_myName; -#pragma pop +static char* l_myName = "Shad"; /* 80AE2A00-80AE2AA8 0003E0 00A8+00 0/2 0/0 0/0 .data mEvtSeqList__11daNpcShad_c */ -SECTION_DATA u8 daNpcShad_c::mEvtSeqList[168] = { - 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, - 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, - 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = { + NULL, + &daNpcShad_c::EvCut_Introduction, + &daNpcShad_c::EvCut_Meeting, + &daNpcShad_c::EvCut_ToChantSpell1, + &daNpcShad_c::EvCut_ToChantSpell2, + &daNpcShad_c::EvCut_ToChantSpell2Skip, + &daNpcShad_c::EvCut_DiscoveryCannon, + &daNpcShad_c::EvCut_DiscoveryCannonSkip, + &daNpcShad_c::EvCut_Disappear, + &daNpcShad_c::EvCut_DisappearSkip, + &daNpcShad_c::EvCut_CallBack, + &daNpcShad_c::EvCut_WiretapEntrant, + &daNpcShad_c::EvCut_WiretapSponsor, + &daNpcShad_c::EvCut_WiretapEntrant, }; // /* 80AD820C-80AD8390 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShad_cFv */ @@ -197,66 +237,8 @@ const daNpcShad_HIOParam daNpcShad_Param_c::m = { 12.0f, }; -/* 80AE204C-80AE2050 000070 0004+00 0/1 0/0 0/0 .rodata @4402 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4402 = 0x4587B5BF; -COMPILER_STRIP_GATE(0x80AE204C, &lit_4402); -#pragma pop - -/* 80AE2050-80AE2054 000074 0004+00 0/1 0/0 0/0 .rodata @4403 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4403 = -1518.5f; -COMPILER_STRIP_GATE(0x80AE2050, &lit_4403); -#pragma pop - -/* 80AE2054-80AE2058 000078 0004+00 0/1 0/0 0/0 .rodata @4404 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4404 = 0xC576652C; -COMPILER_STRIP_GATE(0x80AE2054, &lit_4404); -#pragma pop - -/* 80AE2058-80AE205C 00007C 0004+00 0/1 0/0 0/0 .rodata @4405 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4405 = -100.0f; -COMPILER_STRIP_GATE(0x80AE2058, &lit_4405); -#pragma pop - -/* 80AE205C-80AE2060 000080 0004+00 0/1 0/0 0/0 .rodata @4406 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4406 = -50.0f; -COMPILER_STRIP_GATE(0x80AE205C, &lit_4406); -#pragma pop - -/* 80AE2060-80AE2064 000084 0004+00 0/1 0/0 0/0 .rodata @4407 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4407 = 100.0f; -COMPILER_STRIP_GATE(0x80AE2060, &lit_4407); -#pragma pop - -/* 80AE2064-80AE2068 000088 0004+00 0/1 0/0 0/0 .rodata @4408 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4408 = 220.0f; -COMPILER_STRIP_GATE(0x80AE2064, &lit_4408); -#pragma pop - -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AE25DF = "R_SP116"; -SECTION_DEAD static char const* const stringBase_80AE25E7 = "R_SP209"; -SECTION_DEAD static char const* const stringBase_80AE25EF = "D_MN09"; -#pragma pop - /* 80AD8620-80AD8B60 000500 0540+00 1/1 0/0 0/0 .text Create__11daNpcShad_cFv */ cPhs__Step daNpcShad_c::Create() { - // NONMATCHING fopAcM_SetupActor(this, daNpcShad_c); if (strcmp(dComIfGp_getStartStageName(), "R_SP116") == 0 && dComIfG_play_c::getLayerNo(0) == 4) { @@ -268,7 +250,7 @@ cPhs__Step daNpcShad_c::Create() { return cPhs_ERROR_e; } - field_0xe20 = 0; + mMode = 0; } else { if (strcmp(dComIfGp_getStartStageName(), "R_SP209") == 0) { if (daNpcF_chkEvtBit(0x311)) { @@ -293,7 +275,7 @@ cPhs__Step daNpcShad_c::Create() { } } - field_0xe20 = 1; + mMode = 1; } else { if (strcmp(dComIfGp_getStartStageName(), "D_MN09") == 0) { if (dComIfGs_isSaveSwitch(20)) { @@ -301,13 +283,18 @@ cPhs__Step daNpcShad_c::Create() { } fopAcM_OnStatus(this, 0x4000); - field_0xe20 = 2; + mMode = 2; } } } + bool bVar1 = false; + if (mMode == 1 && daNpcF_chkEvtBit(0x31C)) { + bVar1 = true; + } + s16 sVar1; - if (field_0xe20 == 1 && daNpcF_chkEvtBit(0x31C)) { + if (bVar1) { sVar1 = 0x42; } else { sVar1 = getMessageNo(); @@ -316,161 +303,492 @@ cPhs__Step daNpcShad_c::Create() { field_0xe14 = sVar1; field_0xe16 = field_0xe14; - + cPhs__Step phase = cPhs_ERROR_e; + for (int i = 0; l_loadRes_list[mMode][i] >= 0; i++) { + phase = (cPhs__Step)dComIfG_resLoad(&mPhases[i], l_arcNames[l_loadRes_list[mMode][i]]); + + if (phase != cPhs_COMPLEATE_e) { + return phase; + } + } + + if (phase == cPhs_COMPLEATE_e) { + int iVar1 = 0; + switch (mMode) { + case 0: + iVar1 = 0x3610; + break; + + case 1: + iVar1 = 0x4CA0; + break; + + case 2: + iVar1 = 0x44A0; + break; + + default: + JUT_ASSERT(423, 0); + break; + } + + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, iVar1)) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f); + mSound.init(¤t.pos, &eyePos, 3, 1); + mAcchCir.SetWall(daNpcShad_Param_c::m.common.width, daNpcShad_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.SetRoofNone(); + mAcch.SetWaterNone(); + mAcch.CrrPos(dComIfG_Bgsp()); + mCcStts.Init(daNpcShad_Param_c::m.common.weight, 0, this); + + field_0xcb0.Set(mCcDCyl); + field_0xcb0.SetStts(&mCcStts); + field_0xcb0.SetTgType(0); + field_0xcb0.SetTgSPrm(0); + + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + setEnvTevColor(); + setRoomNo(); + mpMorf->modelCalc(); + reset(); + Execute(); + } + + return phase; } -/* ############################################################################################## */ -/* 80AE2068-80AE206C 00008C 0004+00 4/6 0/0 0/0 .rodata @4497 */ -SECTION_RODATA static f32 const lit_4497 = 1.0f; -COMPILER_STRIP_GATE(0x80AE2068, &lit_4497); - -/* 80AE206C-80AE2070 000090 0004+00 5/15 0/0 0/0 .rodata @4498 */ -SECTION_RODATA static u8 const lit_4498[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE206C, &lit_4498); - /* 80AD8B60-80AD8F24 000A40 03C4+00 1/1 0/0 0/0 .text CreateHeap__11daNpcShad_cFv */ -void daNpcShad_c::CreateHeap() { - // NONMATCHING -} +int daNpcShad_c::CreateHeap() { + J3DModelData* mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[0], 0xF)); + JUT_ASSERT(483, 0 != mdlData_p); + 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; + } -/* 80AD8F24-80AD8F60 000E04 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} + if (mpMorf == NULL) { + return 0; + } -/* 80AD8F60-80AD8F78 000E40 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} + J3DModel* model = mpMorf->getModel(); + for (u16 i = 0; i < mdlData_p->getJointNum(); i++) { + mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } + model->setUserArea((u32)this); -/* 80AD8F78-80AD8FB4 000E58 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} + mpMatAnm = new daNpcF_MatAnm_c(); + if (mpMatAnm == NULL) { + return 0; + } -/* 80AD8FB4-80AD8FCC 000E94 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} + field_0xb48 = NULL; + if (mMode == 1 || mMode == 2) { + mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[0], 0x10)); + JUT_ASSERT(518, mdlData_p != 0); + field_0xb48 = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); + if (field_0xb48 == NULL) { + return 0; + } -/* 80AD8FCC-80AD9014 000EAC 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} + if (mMode == 2) { + mdlData_p = field_0xb48->getModelData(); + mdlData_p->getMaterialNodePointer(1)->getShape()->hide(); + } + } -/* 80AD9014-80AD9038 000EF4 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} + field_0xb4c = NULL; + if (mMode == 1) { + mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[1], 0x22)); + JUT_ASSERT(530, mdlData_p != 0); + field_0xb4c = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); + if (field_0xb4c == NULL) { + return 0; + } + } -/* 80AD9038-80AD9074 000F18 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; + } -/* 80AD9074-80AD908C 000F54 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} + switch (mMode) { + case 0: + setMotionAnm(0x16, 0.0f); + break; -/* 80AD908C-80AD90C8 000F6C 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} + case 1: + setMotionAnm(0xD, 0.0f); + break; -/* 80AD90C8-80AD90E0 000FA8 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING + case 2: + setMotionAnm(0x1F, 0.0f); + break; + + default: + JUT_ASSERT(545, 0); + break; + } + + return 1; } /* 80AD90E0-80AD9114 000FC0 0034+00 1/1 0/0 0/0 .text Delete__11daNpcShad_cFv */ -void daNpcShad_c::Delete() { - // NONMATCHING +int daNpcShad_c::Delete() { + this->~daNpcShad_c(); + return 1; } /* 80AD9114-80AD9138 000FF4 0024+00 2/2 0/0 0/0 .text Execute__11daNpcShad_cFv */ -void daNpcShad_c::Execute() { - // NONMATCHING +int daNpcShad_c::Execute() { + execute(); + return 1; } -/* 80AD9138-80AD9280 001018 0148+00 1/1 0/0 0/0 .text Draw__11daNpcShad_cFv */ -void daNpcShad_c::Draw() { - // NONMATCHING +/* 80AD9138-80AD9280 001018 0148+00 1/1 0/0 0/0 .text Draw__11daNpcShad_cFv */ +int daNpcShad_c::Draw() { + if (field_0xe1e == 0) { + return 1; + } + + mpMorf->getModel()->getModelData()->getMaterialNodePointer(1)->setMaterialAnm(mpMatAnm); + draw(FALSE, FALSE, daNpcShad_Param_c::m.common.real_shadow_size, NULL, FALSE); + + if (field_0xb48 != NULL) { + g_env_light.setLightTevColorType_MAJI(field_0xb48, &tevStr); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(0xF)); + field_0xb48->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoExt_modelUpdateDL(field_0xb48); + } + + if (field_0xb4c != NULL && (mMotion == 0xB || mMotion == 0xC)) { + g_env_light.setLightTevColorType_MAJI(field_0xb4c, &tevStr); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(0x15)); + field_0xb4c->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoExt_modelUpdateDL(field_0xb4c); + } + + return 1; } -/* ############################################################################################## */ -/* 80AE2070-80AE207C 000094 000C+00 1/1 0/0 0/0 .rodata @4591 */ -SECTION_RODATA static u8 const lit_4591[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, -}; -COMPILER_STRIP_GATE(0x80AE2070, &lit_4591); +/* 80AD9280-80AD944C 001160 01CC+00 1/1 0/0 0/0 .text ctrlJoint__11daNpcShad_cFP8J3DJointP8J3DModel */ +int daNpcShad_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + int jntNo = i_joint->getJntNo(); + int iVar1[3] = {1, 4, 5}; -/* 80AD9280-80AD944C 001160 01CC+00 1/1 0/0 0/0 .text - * ctrlJoint__11daNpcShad_cFP8J3DJointP8J3DModel */ -void daNpcShad_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING + if (jntNo == 0) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&mLookatPos[0]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mLookatPos[1]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(5)); + mDoMtx_stack_c::multVecZero(&mLookatPos[2]); + } + + mDoMtx_stack_c::copy(i_model->getAnmMtx(jntNo)); + + switch (jntNo) { + case 1: + case 4: + case 5: + setLookatMtx(jntNo, iVar1, daNpcShad_Param_c::m.common.neck_rotation_ratio); + break; + } + + i_model->setAnmMtx(jntNo, mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + if ((jntNo == 5 || jntNo == 9) && (mAnmFlags & 0x100) != 0) { + J3DAnmTransform* anmTransform = mBckAnm.getBckAnm(); + mBckAnm.changeBckOnly(mpMorf->getAnm()); + mpMorf->changeAnm(anmTransform); + } + + return 1; } -/* 80AD944C-80AD946C 00132C 0020+00 1/1 0/0 0/0 .text - * createHeapCallBack__11daNpcShad_cFP10fopAc_ac_c */ -void daNpcShad_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +/* 80AD944C-80AD946C 00132C 0020+00 1/1 0/0 0/0 .text createHeapCallBack__11daNpcShad_cFP10fopAc_ac_c */ +int daNpcShad_c::createHeapCallBack(fopAc_ac_c* a_this) { + daNpcShad_c* i_this = (daNpcShad_c*)a_this; + return i_this->CreateHeap(); } -/* 80AD946C-80AD94B8 00134C 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpcShad_cFP8J3DJointi - */ -void daNpcShad_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +/* 80AD946C-80AD94B8 00134C 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpcShad_cFP8J3DJointi */ +int daNpcShad_c::ctrlJointCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = j3dSys.getModel(); + daNpcShad_c* i_this = (daNpcShad_c*)model->getUserArea(); + + if (i_this != NULL) { + i_this->ctrlJoint(i_joint, model); + } + } + + return 1; } /* 80AD94B8-80AD974C 001398 0294+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcShad_cFib */ -bool daNpcShad_c::setExpressionAnm(int param_0, bool param_1) { +bool daNpcShad_c::setExpressionAnm(int i_idx, bool i_modify) { // NONMATCHING + J3DAnmTransform* anmTransform; + mAnmFlags &= 0xFFFFE03F; + + if (l_bckGetParamList[i_idx].fileIdx >= 0) { + anmTransform = (J3DAnmTransform*)getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx); + } else { + anmTransform = NULL; + } + + int i_attr = l_bckGetParamList[i_idx].attr; + bool bVar1 = false; + + switch (i_idx) { + case 0: + bVar1 = setExpressionBtp(0); + break; + + case 1: + bVar1 = setExpressionBtp(0); + break; + + case 2: + bVar1 = setExpressionBtp(3); + break; + + case 3: + bVar1 = setExpressionBtp(1); + break; + + case 4: + bVar1 = setExpressionBtp(2); + break; + + case 5: + bVar1 = setExpressionBtp(0); + break; + + case 6: + bVar1 = setExpressionBtp(4); + break; + + case 7: + bVar1 = setExpressionBtp(5); + break; + + case 8: + bVar1 = setExpressionBtp(6); + break; + + case 9: + bVar1 = setExpressionBtp(7); + break; + + case 10: + bVar1 = setExpressionBtp(10); + break; + + case 11: + bVar1 = setExpressionBtp(8); + break; + + case 12: + bVar1 = setExpressionBtp(9); + break; + + default: + anmTransform = NULL; + } + + if (!bVar1) { + return false; + } + + if (anmTransform == NULL) { + return true; + } + + if (setBckAnm(anmTransform, 1.0f, i_attr, 0, -1, i_modify)) { + mAnmFlags |= 0x140; + mExpressionLoops = 0; + return true; + } + + OS_REPORT("%s: 表情Bckアニメーションの登録に失敗しました!\n", "d_a_npc_shad.cpp"); // %s: Failed to register expression Bck animation! + return false; } /* 80AD974C-80AD982C 00162C 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpcShad_cFi */ -bool daNpcShad_c::setExpressionBtp(int param_0) { - // NONMATCHING +bool daNpcShad_c::setExpressionBtp(int i_idx) { + J3DAnmTexPattern* anmTexPattern = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx], l_btpGetParamList[i_idx].fileIdx); + int i_attr = l_btpGetParamList[i_idx].attr; + + mAnmFlags &= 0xFFFFF57F; + + if (anmTexPattern == NULL) { + return true; + } + + if (setBtpAnm(anmTexPattern, mpMorf->getModel()->getModelData(), 1.0f, i_attr)) { + mAnmFlags |= 0x280; + + if (i_idx == 0) { + mAnmFlags |= 0x800; + } + + return true; + } + + OS_REPORT("%s: 表情Btpアニメーションの登録に失敗しました!\n", "d_a_npc_shad.cpp"); // %s: Failed to register expression Btp animation! + return false; } /* 80AD982C-80AD99B4 00170C 0188+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShad_cFif */ -void daNpcShad_c::setMotionAnm(int param_0, f32 param_1) { +void daNpcShad_c::setMotionAnm(int i_idx, f32 i_morf) { // NONMATCHING + J3DAnmTransformKey* anmTransformKey = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx); + int i_attr = l_bckGetParamList[i_idx].attr; + + mAnmFlags &= 0xFFFFFFC0; + + if (anmTransformKey != NULL && setMcaMorfAnm(anmTransformKey, 1.0f, i_morf, i_attr, 0, -1)) { + mAnmFlags |= 9; + mMotionLoops = 0; + } + + int iVar1 = 0; + switch (i_idx) { + case 0x19: + iVar1 = 1; + break; + + case 0x1A: + iVar1 = 2; + break; + + case 0x20: + iVar1 = 3; + break; + + case 0x21: + iVar1 = 4; + break; + } + + J3DAnmTextureSRTKey* anmTextureSRTKey = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[iVar1].arcIdx], l_btkGetParamList[iVar1].fileIdx); + i_attr = l_btkGetParamList[iVar1].attr; + + if (anmTextureSRTKey != NULL) { + if (setBtkAnm(anmTextureSRTKey, mpMorf->getModel()->getModelData(), 1.0f, i_attr)) { + mAnmFlags |= 0x12; + } + } } /* 80AD99B4-80AD9C0C 001894 0258+00 1/1 0/0 0/0 .text reset__11daNpcShad_cFv */ void daNpcShad_c::reset() { - // NONMATCHING + initialize(); + mpMatAnm->initialize(); + mLookat.initialize(); + + for (int i = 0; i < 5; i++) { + mActorMngr[i].initialize(); + } + + field_0xe0c = 0; + field_0xe10 = 0; + mActionFn = NULL; + field_0xe18 = -1; + field_0xe1a = 0; + field_0xe1e = 1; + field_0xe1f = 0; + + if (isSneaking()) { + attention_info.distances[0] = 78; + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = 77; + attention_info.flags |= 0x800000; + } else if (mMode == 0) { + attention_info.distances[0] = getDistTableIdx(3, 3); + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = getDistTableIdx(2, 3); + } else { + attention_info.distances[0] = getDistTableIdx(daNpcShad_Param_c::m.common.attention_distance, daNpcShad_Param_c::m.common.attention_angle); + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = getDistTableIdx(daNpcShad_Param_c::m.common.talk_distance, daNpcShad_Param_c::m.common.talk_angle); + } + + current.pos = home.pos; + old.pos = 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_0xe08 = fpcM_ERROR_PROCESS_ID_e; + mOrderEvtNo = 0; + mExpressionMorfOverride = 0.0f; + mMotionMorfOverride = 0.0f; + + if (isSneaking()) { + fopAcM_OnStatus(this, 0x4000); + } + + setWaitAction(); } /* 80AD9C0C-80AD9E04 001AEC 01F8+00 1/1 0/0 0/0 .text setWaitAction__11daNpcShad_cFv */ -void daNpcShad_c::setWaitAction() { +inline void daNpcShad_c::setWaitAction() { // NONMATCHING + switch (mMode) { + case 0: + setAction(&daNpcShad_c::wait_type0); + break; + + case 1: + setAction(&daNpcShad_c::wait_type1); + break; + + case 2: + setAction(&daNpcShad_c::wait_type2); + break; + + default: + JUT_ASSERT(1379, 0); + } } /* 80AD9E04-80AD9E90 001CE4 008C+00 1/1 0/0 0/0 .text getPathPoint__11daNpcShad_cFUciP3Vec */ -bool daNpcShad_c::getPathPoint(u8 param_0, int param_1, Vec* param_2) { - // NONMATCHING +bool daNpcShad_c::getPathPoint(u8 i_pathIndex, int i_pntIndex, Vec* param_3) { + dPath* path = dPath_GetRoomPath(i_pathIndex, fopAcM_GetRoomNo(this)); + if (path == NULL) { + return false; + } + + dPnt* pnt = dPath_GetPnt(path, i_pntIndex); + if (pnt == NULL) { + return false; + } + + *param_3 = pnt->m_position; + return true; } /* 80AD9E90-80AD9F00 001D70 0070+00 1/1 0/0 0/0 .text isSneaking__11daNpcShad_cFv */ -void daNpcShad_c::isSneaking() { - // NONMATCHING +inline bool daNpcShad_c::isSneaking() { + if (strcmp(dComIfGp_getStartStageName(), "R_SP116") == 0 && dComIfGp_getStartStageRoomNo() == 5 && dComIfG_play_c::getLayerNo(0) == 2) { + return true; + } + + return false; } /* ############################################################################################## */ @@ -1337,97 +1655,346 @@ SECTION_RODATA static u8 const lit_4955[12] = { COMPILER_STRIP_GATE(0x80AE240C, &lit_4955); #pragma pop -/* 80AE2418-80AE241C 00043C 0004+00 7/16 0/0 0/0 .rodata @5210 */ -SECTION_RODATA static f32 const lit_5210 = -1.0f; -COMPILER_STRIP_GATE(0x80AE2418, &lit_5210); +inline BOOL daNpcShad_c::chkFindPlayer() { + f32 fVar1; + if (mMode == 0) { + fVar1 = 135.0f; + } else { + fVar1 = daNpcShad_Param_c::m.common.fov; + } -/* 80AE241C-80AE2420 000440 0004+00 0/2 0/0 0/0 .rodata @5211 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5211 = 135.0f; -COMPILER_STRIP_GATE(0x80AE241C, &lit_5211); -#pragma pop + if (!chkActorInSight(daPy_getPlayerActorClass(), fVar1)) { + mActorMngr[0].remove(); + return FALSE; + } -/* 80AE2420-80AE2424 000444 0004+00 0/7 0/0 0/0 .rodata @5212 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5212 = 0x3BB40000; -COMPILER_STRIP_GATE(0x80AE2420, &lit_5212); -#pragma pop + BOOL rv; + if (mActorMngr[0].getActorP() == NULL) { + rv = chkPlayerInSpeakArea(this); + } else { + rv = chkPlayerInTalkArea(this); + } -/* 80AE2424-80AE242C 000448 0004+04 0/7 0/0 0/0 .rodata @5213 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5213[1 + 1 /* padding */] = { - 15.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80AE2424, &lit_5213); -#pragma pop + if (rv) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + } else { + mActorMngr[0].remove(); + } -/* 80AE242C-80AE2434 000450 0008+00 0/7 0/0 0/0 .rodata @5215 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5215[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE242C, &lit_5215); -#pragma pop + return rv; +} + +inline void daNpcShad_c::setLookMode(int param_1, daPy_py_c* param_2, cXyz* param_3) { + switch (param_1) { + case 0: + case 1: + case 2: + case 3: + case 4: + if (field_0xe18 != param_1 || field_0xca8 != NULL) { + field_0xe18 = param_1; + field_0xca8 = param_2; + } + break; + + case 5: + field_0xe18 = param_1; + field_0xca8 = NULL; + + if (param_3 != NULL) { + mLookPos.set(*param_3); + } + break; + } +} + +inline BOOL daNpcShad_c::step(s16 param_1, int param_2, f32 param_3) { + if (mTurnMode == 0) { + if (param_2 != 0) { + if ((int)fabsf(cM_sht2d((s16)(param_1 - mCurAngle.y))) > 40) { + setExpression(12, -1.0f); + setMotion(param_2, -1.0f, 0); + } + } + + mTurnTargetAngle = param_1; + mTurnAmount = 0; + + if (mCurAngle.y == mTurnTargetAngle) { + mTurnMode++; + } + + current.angle.y = mCurAngle.y; + shape_angle.y = current.angle.y; + mTurnMode++; + } else if (mTurnMode == 1) { + if (turn(mTurnTargetAngle, param_3, 0)) { + shape_angle.y = current.angle.y; + mCurAngle.y = current.angle.y; + mOldAngle.y = current.angle.y; + mTurnMode++; + } else { + shape_angle.y = current.angle.y; + mCurAngle.y = current.angle.y; + } + } + + return mTurnMode > 1; +} /* 80AD9F00-80ADA630 001DE0 0730+00 1/0 0/0 0/0 .text wait_type0__11daNpcShad_cFPv */ -void daNpcShad_c::wait_type0(void* param_0) { +bool daNpcShad_c::wait_type0(void* param_1) { // NONMATCHING + switch (field_0xe1a) { + case 0: + setExpression(12, -1.0f); + setMotion(4, -1.0f, 0); + mTurnMode = 0; + speedF = 0.0f; + field_0xe1a = 2; + break; + + case 2: + if (isSneaking()) { + setLookMode(0, NULL, NULL); + } else { + if (mActorMngr[0].getActorP() != NULL) { + if (!chkFindPlayer()) { + mTurnMode = 0; + } + } else { + if (chkFindPlayer()) { + mTurnMode = 0; + } + } + + if (mActorMngr[0].getActorP() != NULL) { + setLookMode(2, NULL, NULL); + } else { + setLookMode(0, NULL, NULL); + + if (home.angle.y != mCurAngle.y && step(home.angle.y, 21, 15.0f)) { + setExpression(12, -1.0f); + setMotion(4, -1.0f, 0); + mTurnMode = 0; + } + } + } + + if (dComIfGp_event_runCheck()) { + if (eventInfo.checkCommandTalk()) { + if (!dComIfGp_event_chkTalkXY() || dComIfGp_evmng_ChkPresentEnd()) { + if (isSneaking()) { + mOrderEvtNo = 12; + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } else { + setAction(&daNpcShad_c::talk); + } + } + } else { + if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0) != -1) { + setAction(&daNpcShad_c::demo); + } + } + } else { + if (mOrderEvtNo != 0) { + eventInfo.setArchiveName(l_evtArcs[mOrderEvtNo]); + } + + char* event; + if (mOrderEvtNo != 0) { + event = l_evtNames[mOrderEvtNo]; + } else { + event = NULL; + } + orderEvent(mOrderSpeakEvt, event, 0xFFFF, 40, 0xFF, 1); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1747, 0); + } + + return true; } /* 80ADA630-80ADA674 002510 0044+00 1/0 0/0 0/0 .text setMotion__11daNpcShad_cFifi */ -void daNpcShad_c::setMotion(int param_0, f32 param_1, int param_2) { - // NONMATCHING +void daNpcShad_c::setMotion(int i_motion, f32 i_motionMorfOverride, int param_3) { + s16 sVar1 = i_motion; + if ((param_3 != 0 || mMotion != sVar1) && i_motion >= 0 && i_motion < 0x17) { + mMotion = sVar1; + mMotionMorfOverride = i_motionMorfOverride; + mMotionPrevPhase = -1; + mMotionPhase = 0; + } } /* 80ADA674-80ADA6A0 002554 002C+00 1/0 0/0 0/0 .text setExpression__11daNpcShad_cFif */ -void daNpcShad_c::setExpression(int param_0, f32 param_1) { - // NONMATCHING +void daNpcShad_c::setExpression(int i_expression, f32 i_expressionMorfOverride) { + if (i_expression >= 0 && i_expression < 0xD) { + mExpression = i_expression; + mExpressionMorfOverride = i_expressionMorfOverride; + mExpressionPrevPhase = -1; + mExpressionPhase = 0; + } } -/* ############################################################################################## */ -/* 80AE2434-80AE2438 000458 0004+00 0/1 0/0 0/0 .rodata @5532 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5532 = 0x43360B61; -COMPILER_STRIP_GATE(0x80AE2434, &lit_5532); -#pragma pop - -/* 80AE2438-80AE243C 00045C 0004+00 0/2 0/0 0/0 .rodata @5533 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5533 = 30.0f; -COMPILER_STRIP_GATE(0x80AE2438, &lit_5533); -#pragma pop - -/* 80AE243C-80AE2440 000460 0004+00 0/1 0/0 0/0 .rodata @5534 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5534 = 3750.0f; -COMPILER_STRIP_GATE(0x80AE243C, &lit_5534); -#pragma pop - -/* 80AE2440-80AE2444 000464 0004+00 0/1 0/0 0/0 .rodata @5535 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5535 = 400.0f; -COMPILER_STRIP_GATE(0x80AE2440, &lit_5535); -#pragma pop - -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AE25F6 = "NO_RESPONSE"; -#pragma pop - /* 80ADA6A0-80ADB428 002580 0D88+00 1/0 0/0 0/0 .text wait_type1__11daNpcShad_cFPv */ -void daNpcShad_c::wait_type1(void* param_0) { +bool daNpcShad_c::wait_type1(void* param_1) { // NONMATCHING + switch (field_0xe1a) { + case 0: + if (daNpcF_chkEvtBit(0x12F) && !daNpcF_chkEvtBit(0x312)) { + setExpression(10, -1.0f); + setMotion(7, -1.0f, 0); + } else { + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + } + + mActorMngr[0].remove(); + setLookMode(0, NULL, NULL); + mTurnMode = 0; + speedF = 0.0f; + field_0xe1c = fopAcM_searchPlayerAngleY(this); + field_0xe1a = 2; + break; + + case 2: + if (daNpcF_chkEvtBit(0x312)) { + setLookMode(2, NULL, NULL); + + if (mCurAngle.y == field_0xe1c) { + if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) { + field_0xe1c = fopAcM_searchPlayerAngleY(this); + } + } else if (step(field_0xe1c, 22, 30.0f)) { + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + + if (fopAcM_GetPosition_p(daPy_getPlayerActorClass())->x <= 3750.0f) { + mOrderEvtNo = 10; + } + } else if (daNpcF_chkEvtBit(0x12F)) { + daTag_EvtArea_c* tag = (daTag_EvtArea_c*)mActorMngr[4].getActorP(); + if (tag != NULL) { + if (tag->chkPointInArea(*fopAcM_GetPosition_p(daPy_getPlayerActorClass()))) { + field_0xe14 = 67; + daNpcF_offTmpBit(0xB); + daNpcF_offTmpBit(0xC); + daNpcF_offTmpBit(0xD); + mOrderEvtNo = 6; + fopAcM_delete(tag); + } + } + } else if (field_0xe1f != 0) { + setLookMode(2, NULL, NULL); + + if (mCurAngle.y == field_0xe1c) { + if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) { + field_0xe1c = fopAcM_searchPlayerAngleY(this); + } + } else if (step(field_0xe1c, 22, 30.0f)) { + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + + if (fopAcM_searchPlayerDistanceXZ(this) > 400.0f) { + field_0xe1f = 0; + } + } else { + if (mActorMngr[0].getActorP() != NULL) { + if (!chkFindPlayer()) { + mTurnMode = 0; + } + } else if (chkFindPlayer()) { + mTurnMode = 0; + } + + if (mActorMngr[0].getActorP() != NULL) { + setLookMode(2, NULL, NULL); + } else { + setLookMode(0, NULL, NULL); + if (home.angle.y != mCurAngle.y && step(home.angle.y, 21, 15.0f)) { + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + } + } + + if (dComIfGp_event_runCheck()) { + if (eventInfo.checkCommandTalk()) { + if (dComIfGp_event_chkTalkXY()) { + if (!dComIfGp_evmng_ChkPresentEnd()) { + return true; + } + + u8 sVar1 = dComIfGp_event_getPreItemNo(); + if (sVar1 == 0xE9) { + field_0xe14 = 64; + daNpcF_offTmpBit(0xB); + daNpcF_offTmpBit(0xC); + daNpcF_offTmpBit(0xD); + daNpcF_offTmpBit(0xE); + mOrderEvtNo = 3; + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } else if (sVar1 == 0xEB) { + field_0xe14 = 65; + daNpcF_offTmpBit(0xB); + daNpcF_offTmpBit(0xC); + daNpcF_offTmpBit(0xD); + mOrderEvtNo = 4; + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } else { + s16 eventIdx = dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xFF); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, eventIdx, 1, 0xFFFF); + } + } else if (daNpcF_chkEvtBit(0x313)) { + field_0xe14 = 68; + daNpcF_offTmpBit(0xB); + mOrderEvtNo = 8; + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } else { + setAction(&daNpcShad_c::talk); + } + } else if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0) != -1) { + setAction(&daNpcShad_c::demo); + } + } else { + if (!daNpcF_chkEvtBit(0x12F)) { + eventInfo.onCondition(0x20); + } + + if (mOrderEvtNo != 0) { + eventInfo.setArchiveName(l_evtArcs[mOrderEvtNo]); + } + + char* event; + if (mOrderEvtNo != 0) { + event = l_evtArcs[mOrderEvtNo]; + } else { + event = NULL; + } + orderEvent(mOrderSpeakEvt, event, 0xFFFF, 40, 0xFF, 1); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1915, 0); + } + + return true; } /* ############################################################################################## */ @@ -1446,72 +2013,236 @@ COMPILER_STRIP_GATE(0x80AE2448, &lit_5587); #pragma pop /* 80ADB428-80ADB628 003308 0200+00 1/0 0/0 0/0 .text wait_type2__11daNpcShad_cFPv */ -void daNpcShad_c::wait_type2(void* param_0) { +bool daNpcShad_c::wait_type2(void* param_1) { // NONMATCHING + switch (field_0xe1a) { + case 0: + setExpression(8, -1.0f); + setMotion(0x10, -1.0f, 0); + mTurnMode = 0; + speedF = 0.0f; + mActorMngr[0].entry(daPy_getPlayerActorClass()); + setLookMode(0, NULL, NULL); + field_0xe1a = 2; + break; + + case 2: + switch (field_0xe10) { + case 0: + if (daNpcF_chkTmpBit(0x76)) { + current.pos.set(04532.0845f, 0.0f, 8555.381f); + old.pos = current.pos; + setAngle(-0x6000); + field_0xe10++; + } + break; + + case 1: + if (daNpcF_chkTmpBit(0x74)) { + setAction(&daNpcShad_c::leave); + } + break; + + default: + JUT_ASSERT(1957, 0); + break; + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1962, 0); + break; + } + + return true; } -/* ############################################################################################## */ -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AE2602 = "DEFAULT_GETITEM"; -#pragma pop +inline void daNpcShad_c::setExpressionTalkAfter() { + switch (mExpression) { + case 1: + setExpression(8, -1.0f); + break; + + case 2: + setExpression(9, -1.0f); + break; + + case 3: + setExpression(10, -1.0f); + break; + + case 4: + setExpression(7, -1.0f); + break; + + default: + setExpression(12, -1.0f); + } +} /* 80ADB628-80ADBEA8 003508 0880+00 2/0 0/0 0/0 .text talk__11daNpcShad_cFPv */ -void daNpcShad_c::talk(void* param_0) { +bool daNpcShad_c::talk(void* param_1) { // NONMATCHING + int itemNo, iVar1, iVar2, iVar3; + u16 eventID; + s16 eventIdx; + bool rv = false; + + switch (field_0xe1a) { + case 0: + initTalk(field_0xe14, NULL); + mTurnMode = 0; + mMsgTimer = 0; + speedF = 0.0f; + setLookMode(3, NULL, NULL); + field_0xe1a = 2; + break; + + case 2: + if (strcmp(dComIfGp_getStartStageName(), "R_SP116") == 0 || mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, TRUE, NULL)) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + itemNo = NULL; + eventID = mFlow.getEventId(&itemNo); + OS_REPORT("会話終了時 イベントID=%d アイテムNo=%d\n", eventID, itemNo); // At the end of the conversation, Event ID=%d Item No=%d + + if (eventID == 1) { + field_0xe08 = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1, -1, NULL, NULL); + + if (field_0xe08 != fpcM_ERROR_PROCESS_ID_e) { + eventIdx = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xFF); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, eventIdx, 1, 0xFFFF); + field_0x9ec = true; + setWaitAction(); + } + } else { + setWaitAction(); + } + + rv = true; + } else { + iVar3 = mMsgTimer; + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + } + } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + break; + + case 3: + field_0xe1f = 1; + field_0xe14 = field_0xe16; + setExpression(12, -1.0f); + + if (!field_0x9ec) { + dComIfGp_event_reset(); + } + break; + + default: + JUT_ASSERT(2042, 0); + break; + } + + return rv; } /* 80ADBEA8-80ADC3DC 003D88 0534+00 2/0 0/0 0/0 .text demo__11daNpcShad_cFPv */ -void daNpcShad_c::demo(void* param_0) { +bool daNpcShad_c::demo(void* param_1) { // NONMATCHING + int iVar1, iVar2; + dEvent_manager_c* eventManager; + + switch (field_0xe1a) { + case 0: + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + field_0xe1a = 2; + // fallthrough + case 2: + if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk()) { + eventManager = &dComIfGp_getEventManager(); + iVar1 = eventManager->getMyStaffId(l_myName, NULL, 0); + if (iVar1 != -1) { + mStaffID = iVar1; + iVar2 = eventManager->getMyActIdx(iVar1, l_evtNames, 14, 0, 0); + + if (iVar2 > 0 && iVar2 < 14) { + mOrderEvtNo = iVar2; + } + + JUT_ASSERT(2082, 0 != mEvtSeqList[mOrderEvtNo]); + + if ((this->*mEvtSeqList[mOrderEvtNo])(iVar1)) { + eventManager->cutEnd(iVar1); + } + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager->endCheck(mEventIdx)) { + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + setWaitAction(); + } + } else { + mOrderEvtNo = 0; + mEventIdx = -1; + setWaitAction(); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(2114, 0); + break; + } + + return true; } -/* ############################################################################################## */ -/* 80AE244C-80AE2450 000470 0004+00 0/1 0/0 0/0 .rodata @5828 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5828 = 0xC5C36B19; -COMPILER_STRIP_GATE(0x80AE244C, &lit_5828); -#pragma pop - -/* 80AE2450-80AE2454 000474 0004+00 0/1 0/0 0/0 .rodata @5829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5829 = 0x45C35E15; -COMPILER_STRIP_GATE(0x80AE2450, &lit_5829); -#pragma pop - -/* 80AE2454-80AE245C 000478 0008+00 0/2 0/0 0/0 .rodata @5830 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5830[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2454, &lit_5830); -#pragma pop - -/* 80AE245C-80AE2464 000480 0008+00 0/2 0/0 0/0 .rodata @5831 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5831[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE245C, &lit_5831); -#pragma pop - -/* 80AE2464-80AE246C 000488 0008+00 0/2 0/0 0/0 .rodata @5832 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5832[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2464, &lit_5832); -#pragma pop - /* 80ADC3DC-80ADC700 0042BC 0324+00 1/0 0/0 0/0 .text leave__11daNpcShad_cFPv */ -void daNpcShad_c::leave(void* param_0) { +bool daNpcShad_c::leave(void* param_1) { // NONMATCHING + cXyz sp28(-6253.387f, 0.0f, 6251.7603f); + + switch (field_0xe1a) { + case 0: + setExpression(12, -1.0f); + setMotion(0x13, -1.0f, 0); + mTurnMode = 0; + speedF = daNpcShad_Param_c::m.traveling_speed; + field_0xe1a = 2; + break; + + case 2: + step(cLib_targetAngleY(¤t.pos, &sp28), 21, 15.0f); + + if (mAcch.ChkWallHit() || current.pos.abs(sp28) < speedF) { + fopAcM_delete(this); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(2149, 0); + break; + } + + return true; } /* ############################################################################################## */ @@ -1521,14 +2252,13 @@ void daNpcShad_c::leave(void* param_0) { SECTION_DEAD static char const* const stringBase_80AE2612 = "prm"; #pragma pop -/* 80ADC700-80ADC800 0045E0 0100+00 1/0 0/0 0/0 .text EvCut_Introduction__11daNpcShad_cFi - */ -void daNpcShad_c::EvCut_Introduction(int param_0) { +/* 80ADC700-80ADC800 0045E0 0100+00 1/0 0/0 0/0 .text EvCut_Introduction__11daNpcShad_cFi */ +BOOL daNpcShad_c::EvCut_Introduction(int param_0) { // NONMATCHING } /* 80ADC800-80ADCAD8 0046E0 02D8+00 1/0 0/0 0/0 .text EvCut_Meeting__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_Meeting(int param_0) { +BOOL daNpcShad_c::EvCut_Meeting(int param_0) { // NONMATCHING } @@ -1582,7 +2312,7 @@ COMPILER_STRIP_GATE(0x80AE2484, &lit_6115); #pragma pop /* 80ADCAD8-80ADD720 0049B8 0C48+00 1/0 0/0 0/0 .text EvCut_ToChantSpell1__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_ToChantSpell1(int param_0) { +BOOL daNpcShad_c::EvCut_ToChantSpell1(int param_0) { // NONMATCHING } @@ -1595,12 +2325,12 @@ COMPILER_STRIP_GATE(0x80AE248C, &lit_6365); #pragma pop /* 80ADD720-80ADE47C 005600 0D5C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_ToChantSpell2(int param_0) { +BOOL daNpcShad_c::EvCut_ToChantSpell2(int param_0) { // NONMATCHING } /* 80ADE47C-80ADE5F8 00635C 017C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2Skip__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_ToChantSpell2Skip(int param_0) { +BOOL daNpcShad_c::EvCut_ToChantSpell2Skip(int param_0) { // NONMATCHING } @@ -1613,23 +2343,23 @@ SECTION_DEAD static char const* const stringBase_80AE261A = "ANGLE"; #pragma pop /* 80ADE5F8-80ADED68 0064D8 0770+00 3/0 0/0 0/0 .text EvCut_DiscoveryCannon__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_DiscoveryCannon(int param_0) { +BOOL daNpcShad_c::EvCut_DiscoveryCannon(int param_0) { // NONMATCHING } /* 80ADED68-80ADEEE4 006C48 017C+00 1/0 0/0 0/0 .text EvCut_DiscoveryCannonSkip__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_DiscoveryCannonSkip(int param_0) { +BOOL daNpcShad_c::EvCut_DiscoveryCannonSkip(int param_0) { // NONMATCHING } /* 80ADEEE4-80ADF810 006DC4 092C+00 1/0 0/0 0/0 .text EvCut_Disappear__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_Disappear(int param_0) { +BOOL daNpcShad_c::EvCut_Disappear(int param_0) { // NONMATCHING } /* 80ADF810-80ADF8DC 0076F0 00CC+00 1/0 0/0 0/0 .text EvCut_DisappearSkip__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_DisappearSkip(int param_0) { +BOOL daNpcShad_c::EvCut_DisappearSkip(int param_0) { // NONMATCHING } @@ -1663,7 +2393,7 @@ COMPILER_STRIP_GATE(0x80AE249C, &lit_6781); #pragma pop /* 80ADF8DC-80ADFB70 0077BC 0294+00 1/0 0/0 0/0 .text EvCut_CallBack__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_CallBack(int param_0) { +BOOL daNpcShad_c::EvCut_CallBack(int param_0) { // NONMATCHING } @@ -1675,12 +2405,12 @@ SECTION_RODATA static u8 const lit_6782[16] = { COMPILER_STRIP_GATE(0x80AE24A0, &lit_6782); /* 80ADFB70-80ADFE74 007A50 0304+00 1/0 0/0 0/0 .text EvCut_WiretapSponsor__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_WiretapSponsor(int param_0) { +BOOL daNpcShad_c::EvCut_WiretapSponsor(int param_0) { // NONMATCHING } /* 80ADFE74-80AE0104 007D54 0290+00 2/0 0/0 0/0 .text EvCut_WiretapEntrant__11daNpcShad_cFi */ -void daNpcShad_c::EvCut_WiretapEntrant(int param_0) { +BOOL daNpcShad_c::EvCut_WiretapEntrant(int param_0) { // NONMATCHING } From 3057ed5b63798901af3bfe47585e780a43409685 Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Fri, 25 Jul 2025 21:34:18 -0400 Subject: [PATCH 04/11] Work on EvCut functions --- include/d/actor/d_a_npc_shad.h | 2 +- src/d/actor/d_a_npc_shad.cpp | 239 ++++++++++++++++++++++++++++++--- 2 files changed, 225 insertions(+), 16 deletions(-) diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 3cc063cd869..3a446d3e9fe 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -96,7 +96,7 @@ public: } inline BOOL chkFindPlayer(); - inline void setLookMode(int, daPy_py_c*, cXyz*); + inline void setLookMode(int, fopAc_ac_c*, cXyz*); inline BOOL step(s16, int, f32); inline void setExpressionTalkAfter(); diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index 2a159c06de0..52036c458d2 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -1684,16 +1684,16 @@ inline BOOL daNpcShad_c::chkFindPlayer() { return rv; } -inline void daNpcShad_c::setLookMode(int param_1, daPy_py_c* param_2, cXyz* param_3) { +inline void daNpcShad_c::setLookMode(int param_1, fopAc_ac_c* param_2, cXyz* param_3) { switch (param_1) { case 0: case 1: case 2: case 3: case 4: - if (field_0xe18 != param_1 || field_0xca8 != NULL) { + if (field_0xe18 != param_1 || (daPy_py_c*)param_2 != field_0xca8) { field_0xe18 = param_1; - field_0xca8 = param_2; + field_0xca8 = (daPy_py_c*)param_2; } break; @@ -2245,21 +2245,91 @@ bool daNpcShad_c::leave(void* param_1) { return true; } -/* ############################################################################################## */ -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AE2612 = "prm"; -#pragma pop - /* 80ADC700-80ADC800 0045E0 0100+00 1/0 0/0 0/0 .text EvCut_Introduction__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_Introduction(int param_0) { - // NONMATCHING +BOOL daNpcShad_c::EvCut_Introduction(int i_index) { + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_index, "prm"); + if (piVar1 == NULL) { + return FALSE; + } + + if (eventManager->getIsAddvance(i_index)) { + switch (*piVar1) { + case 0: + case 2: + setLookMode(0, NULL, NULL); + return TRUE; + + case 1: + setLookMode(2, NULL, NULL); + return TRUE; + + default: + JUT_ASSERT(2184, 0); + break; + } + } + + return FALSE; } /* 80ADC800-80ADCAD8 0046E0 02D8+00 1/0 0/0 0/0 .text EvCut_Meeting__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_Meeting(int param_0) { - // NONMATCHING +BOOL daNpcShad_c::EvCut_Meeting(int i_index) { + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_index, "prm"); + if (piVar1 == NULL) { + return FALSE; + } + + if (eventManager->getIsAddvance(i_index)) { + switch (*piVar1) { + case 0: + setExpression(12, -1.0f); + setMotion(4, -1.0f, 0); + break; + + case 1: + setLookMode(2, NULL, NULL); + break; + + default: + JUT_ASSERT(2221, 0); + break; + } + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else { + if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + } + + fopAc_ac_c* actor; + switch (*piVar1) { + case 0: + actor = dComIfGp_event_getTalkPartner(); + if (actor == this) { + actor = NULL; + } + + setLookMode(4, actor, NULL); + return TRUE; + + case 1: + return TRUE; + + default: + JUT_ASSERT(2245, 0); + break; + } + + return FALSE; } /* ############################################################################################## */ @@ -2312,8 +2382,147 @@ COMPILER_STRIP_GATE(0x80AE2484, &lit_6115); #pragma pop /* 80ADCAD8-80ADD720 0049B8 0C48+00 1/0 0/0 0/0 .text EvCut_ToChantSpell1__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_ToChantSpell1(int param_0) { +BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_index) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* piVar1 = (int*)eventManager->getMyNowCutName(i_index); + + if (eventManager->getIsAddvance(i_index)) { + switch (*piVar1) { + case 0x30303031: + case 0x30303032: + setLookMode(0, NULL, NULL); + initTalk(field_0xe14, NULL); + break; + + case 0x30303035: + initTalk(field_0xe14, NULL); + setExpression(10, -1.0f); + setMotion(7, -1.0f, 0); + break; + + case 0x30303036: + mTurnMode = 0; + setMotion(0x14, -1.0f, 0); + break; + + case 0x30303037: + current.pos = home.pos; + old.pos = current.pos; + speedF = 0.0f; + setMotion(0, -1.0f, 0); + field_0xe1e = 0; + break; + + case 0x30303038: + initTalk(field_0xe14, NULL); + Z2GetAudioMgr()->subBgmStart(Z2BGM_ITEM_GET); + break; + + case 0x30303039: + setAngle(home.angle.y - 0x2000); + // fallthrough + case 0x30303130: + initTalk(field_0xe14, NULL); + break; + + default: + JUT_ASSERT(2298, 0); + break; + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + cXyz sp30; + switch (*piVar1) { + case 0x3031: + if (!step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + break; + } + + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + return TRUE; + + case 0x3032: + // case 0x3035: + + if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; + } + } else + if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + break; + + case 0x3033: + sp30.set(-429.5251f, -770.0f, -2582.803f); + step(cLib_targetAngleY(fopAcM_GetPosition_p(this), &sp30), -1, 60.0f); + speedF = 4.7f; + return TRUE; + + case 0x3037: + Z2GetAudioMgr()->seStartLevel(Z2SE_AL_COPYROD_COMEBACK, fopAcM_GetPosition_p(daPy_getPlayerActorClass()), 0, + 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + return TRUE; + + case 0x3038: + Z2GetAudioMgr()->seStartLevel(Z2SE_AL_COPYROD_COMEBACK, fopAcM_GetPosition_p(daPy_getPlayerActorClass()), 0, + 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + if (talkProc(NULL, TRUE, NULL)) { + fopAcM_delete(this); + return TRUE; + } + break; + + case 0x3039: + if (home.angle.y == mCurAngle.y) { + if (talkProc(NULL, TRUE, NULL)) { + if (mMotion != 0x12) { + Z2GetAudioMgr()->muteSceneBgm(190, 0.0f); + } + + mSound.startCreatureVoiceLevel(Z2SE_SHAD_V_INCANTATION, -1); + setExpression(11, -1.0f); + setMotion(0x12, -1.0f, 0); + return TRUE; + } + } else if (step(home.angle.y, 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + break; + + case 0x3130: + if (talkProc(NULL, TRUE, NULL)) { + Z2GetAudioMgr()->unMuteSceneBgm(70); + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + setAngle(fopAcM_searchPlayerAngleY(this)); + return TRUE; + } + break; + + default: + JUT_ASSERT(2382, 0); + break; + } + } + + return FALSE; } /* ############################################################################################## */ From 440f9df0bf9cf7f217c4f0a4bbc946dd4c02c2d9 Mon Sep 17 00:00:00 2001 From: Carter <144170194+carter-ktb21@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:14:53 -0400 Subject: [PATCH 05/11] All functions worked on --- include/d/actor/d_a_cstaF.h | 1 + include/d/actor/d_a_npc_shad.h | 33 +- src/d/actor/d_a_npc_shad.cpp | 2367 ++++++++++++++------------------ 3 files changed, 1069 insertions(+), 1332 deletions(-) diff --git a/include/d/actor/d_a_cstaF.h b/include/d/actor/d_a_cstaF.h index ed174bcce7f..24d3a0ddacd 100644 --- a/include/d/actor/d_a_cstaF.h +++ b/include/d/actor/d_a_cstaF.h @@ -33,6 +33,7 @@ public: cXyz& getBallPos() { return m_ballPos; } void onPlayerRide() { m_isPlayerRide = true; } + void onCoverVanishFlg() { m_coverVanishFlg = 1; } struct BckTbl { u16 idx[4]; diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 3a446d3e9fe..8068ca5e724 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -17,9 +17,9 @@ struct daNpcShad_HIOParam { /* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed) }; -class daNpcShad_Param_c { +class daNpcShad_Param_c: public JORReflexible { public: - /* 80AE1F70 */ ~daNpcShad_Param_c(); + /* 80AE1F70 */ virtual ~daNpcShad_Param_c() {} static const daNpcShad_HIOParam m; }; @@ -44,7 +44,7 @@ public: /* 80AD982C */ void setMotionAnm(int, f32); /* 80AD99B4 */ void reset(); /* 80AD9C0C */ inline void setWaitAction(); - /* 80AD9E04 */ bool getPathPoint(u8, int, Vec*); + /* 80AD9E04 */ inline bool getPathPoint(u8, int, Vec*); /* 80AD9E90 */ inline bool isSneaking(); /* 80AD9F00 */ bool wait_type0(void*); /* 80ADA630 */ void setMotion(int, f32, int); @@ -95,11 +95,34 @@ public: } } + inline csXyz* unk_inline(); inline BOOL chkFindPlayer(); inline void setLookMode(int, fopAc_ac_c*, cXyz*); inline BOOL step(s16, int, f32); - inline void setExpressionTalkAfter(); + inline void setLookObliquenessUp(); + + inline void searchActors() { + if (mMode == 0) { + if (mActorMngr[1].getActorP() == NULL) { + mActorMngr[1].entry(fopAcM_SearchByName(PROC_NPC_ASH)); + } + + if (mActorMngr[2].getActorP() == NULL) { + mActorMngr[2].entry(fopAcM_SearchByName(PROC_NPC_RAFREL)); + } + + if (mActorMngr[3].getActorP() == NULL) { + mActorMngr[3].entry(fopAcM_SearchByName(PROC_NPC_MOIR)); + } + + if (mActorMngr[4].getActorP() == NULL) { + mActorMngr[4].entry(getEvtAreaTagP(17, 0)); + } + } else if (mMode == 1 && daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL) { + mActorMngr[4].entry(getEvtAreaTagP(18, 0)); + } + } private: /* 0xB48 */ J3DModel* field_0xb48; @@ -113,7 +136,7 @@ private: /* 0xCB0 */ dCcD_Cyl field_0xcb0; /* 0xDEC */ ActionFn mActionFn; /* 0xDF8 */ request_of_phase_process_class mPhases[2]; - /* 0xE08 */ fpc_ProcID field_0xe08; + /* 0xE08 */ fpc_ProcID mItemPartnerId; /* 0xE0C */ int field_0xe0c; /* 0xE10 */ int field_0xe10; /* 0xE14 */ s16 field_0xe14; diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index 52036c458d2..ba1e203ba80 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -4,37 +4,10 @@ */ #include "d/actor/d_a_npc_shad.h" +#include "d/actor/d_a_cstaF.h" #include "d/actor/d_a_npc.h" #include "d/actor/d_a_tag_evtarea.h" -#include "dol2asm.h" - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AE24C4 = "Shad"; -SECTION_DEAD static char const* const stringBase_80AE24C9 = "Shad1"; -SECTION_DEAD static char const* const stringBase_80AE24CF = "Shad2"; -SECTION_DEAD static char const* const stringBase_80AE24D5 = "Shad3"; -SECTION_DEAD static char const* const stringBase_80AE24DB = ""; -SECTION_DEAD static char const* const stringBase_80AE24DC = "THE_INTRODUCTION"; -SECTION_DEAD static char const* const stringBase_80AE24ED = "RESIST_MEETING"; -SECTION_DEAD static char const* const stringBase_80AE24FC = "SHAD_TO_CHANT_SPELL1"; -SECTION_DEAD static char const* const stringBase_80AE2511 = "SHAD_TO_CHANT_SPELL2"; -SECTION_DEAD static char const* const stringBase_80AE2526 = "SHAD_TO_CHANT_SPELL2_SKIP"; -SECTION_DEAD static char const* const stringBase_80AE2540 = "SHAD_DISCOVERY_CANNON"; -SECTION_DEAD static char const* const stringBase_80AE2556 = "SHAD_DISCOVERY_CANNON_SKIP"; -SECTION_DEAD static char const* const stringBase_80AE2571 = "SHAD_DISAPPEAR"; -SECTION_DEAD static char const* const stringBase_80AE2580 = "SHAD_DISAPPEAR_SKIP"; -SECTION_DEAD static char const* const stringBase_80AE2594 = "SHAD_CALLBACK"; -SECTION_DEAD static char const* const stringBase_80AE25A2 = "RESIST_WIRETAP_ASH"; -SECTION_DEAD static char const* const stringBase_80AE25B5 = "RESIST_WIRETAP_SHAD"; -SECTION_DEAD static char const* const stringBase_80AE25C9 = "RESIST_WIRETAP_RAFREL"; -#pragma pop +#include "d/d_msg_object.h" UNK_REL_DATA @@ -103,7 +76,7 @@ static daNpc_GetParam2 l_btkGetParamList[5] = { }; /* 80AE28B0-80AE28BC 000290 000C+00 1/0 0/0 0/0 .data l_loadRes_SHAD0 */ -static int l_loadRes_SHAD0[12] = { +static int l_loadRes_SHAD0[3] = { 0, 2, -1, }; @@ -134,7 +107,7 @@ static char* l_arcNames[4] = { /* 80AE28F0-80AE2928 -00001 0038+00 3/6 0/0 0/0 .data l_evtNames */ static char* l_evtNames[14] = { - NULL, + "", "THE_INTRODUCTION", "RESIST_MEETING", "SHAD_TO_CHANT_SPELL1", @@ -165,7 +138,7 @@ static char* l_evtArcs[14] = { NULL, NULL, NULL, - "Shad", + NULL, }; /* 80AE2960-80AE2964 -00001 0004+00 0/3 0/0 0/0 .data l_myName */ @@ -189,14 +162,15 @@ daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = { &daNpcShad_c::EvCut_WiretapEntrant, }; -// /* 80AD820C-80AD8390 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShad_cFv */ -// daNpcShad_c::daNpcShad_c() : daNpcF_c() { -// // NONMATCHING -// } - /* 80AD8420-80AD8620 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpcShad_cFv */ daNpcShad_c::~daNpcShad_c() { - // NONMATCHING + for (int i = 0; l_loadRes_list[mMode][i] >= 0; i++) { + dComIfG_resDelete(&mPhases[i], l_arcNames[l_loadRes_list[mMode][i]]); + } + + if (heap != NULL) { + mpMorf->stopZelAnime(); + } } /* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */ @@ -268,7 +242,7 @@ cPhs__Step daNpcShad_c::Create() { old.pos = current.pos; } } else { - home.pos.set(4342.718f, -1518.5f, -3942.323); + home.pos.set(4342.7183f, -1518.5f, -3942.3232f); current.pos = home.pos; old.pos = current.pos; setAngle(-0x2581); @@ -536,7 +510,6 @@ int daNpcShad_c::ctrlJointCallBack(J3DJoint* i_joint, int param_2) { /* 80AD94B8-80AD974C 001398 0294+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcShad_cFib */ bool daNpcShad_c::setExpressionAnm(int i_idx, bool i_modify) { - // NONMATCHING J3DAnmTransform* anmTransform; mAnmFlags &= 0xFFFFE03F; @@ -651,7 +624,6 @@ bool daNpcShad_c::setExpressionBtp(int i_idx) { /* 80AD982C-80AD99B4 00170C 0188+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShad_cFif */ void daNpcShad_c::setMotionAnm(int i_idx, f32 i_morf) { - // NONMATCHING J3DAnmTransformKey* anmTransformKey = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx); int i_attr = l_bckGetParamList[i_idx].attr; @@ -733,7 +705,7 @@ void daNpcShad_c::reset() { mOldAngle = mCurAngle; speedF = 0.0f; speed.setall(0.0f); - field_0xe08 = fpcM_ERROR_PROCESS_ID_e; + mItemPartnerId = fpcM_ERROR_PROCESS_ID_e; mOrderEvtNo = 0; mExpressionMorfOverride = 0.0f; mMotionMorfOverride = 0.0f; @@ -747,7 +719,6 @@ void daNpcShad_c::reset() { /* 80AD9C0C-80AD9E04 001AEC 01F8+00 1/1 0/0 0/0 .text setWaitAction__11daNpcShad_cFv */ inline void daNpcShad_c::setWaitAction() { - // NONMATCHING switch (mMode) { case 0: setAction(&daNpcShad_c::wait_type0); @@ -767,7 +738,7 @@ inline void daNpcShad_c::setWaitAction() { } /* 80AD9E04-80AD9E90 001CE4 008C+00 1/1 0/0 0/0 .text getPathPoint__11daNpcShad_cFUciP3Vec */ -bool daNpcShad_c::getPathPoint(u8 i_pathIndex, int i_pntIndex, Vec* param_3) { +inline bool daNpcShad_c::getPathPoint(u8 i_pathIndex, int i_pntIndex, Vec* param_3) { dPath* path = dPath_GetRoomPath(i_pathIndex, fopAcM_GetRoomNo(this)); if (path == NULL) { return false; @@ -791,869 +762,122 @@ inline bool daNpcShad_c::isSneaking() { return false; } -/* ############################################################################################## */ -/* 80AE207C-80AE2088 0000A0 000C+00 0/1 0/0 0/0 .rodata @4825 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4825[12] = { - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE207C, &lit_4825); -#pragma pop - -/* 80AE2088-80AE208C 0000AC 0004+00 0/1 0/0 0/0 .rodata @4826 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4826[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2088, &lit_4826); -#pragma pop - -/* 80AE208C-80AE2098 0000B0 000C+00 0/1 0/0 0/0 .rodata @4827 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4827[12] = { - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE208C, &lit_4827); -#pragma pop - -/* 80AE2098-80AE20A4 0000BC 000C+00 0/1 0/0 0/0 .rodata @4828 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4828[12] = { - 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2098, &lit_4828); -#pragma pop - -/* 80AE20A4-80AE20AC 0000C8 0008+00 0/1 0/0 0/0 .rodata @4829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4829[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20A4, &lit_4829); -#pragma pop - -/* 80AE20AC-80AE20B8 0000D0 000C+00 0/1 0/0 0/0 .rodata @4830 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4830[12] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE20AC, &lit_4830); -#pragma pop - -/* 80AE20B8-80AE20C4 0000DC 000C+00 0/1 0/0 0/0 .rodata @4831 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4831[12] = { - 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20B8, &lit_4831); -#pragma pop - -/* 80AE20C4-80AE20CC 0000E8 0008+00 0/1 0/0 0/0 .rodata @4832 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4832[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20C4, &lit_4832); -#pragma pop - -/* 80AE20CC-80AE20D8 0000F0 000C+00 0/1 0/0 0/0 .rodata @4833 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4833[12] = { - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE20CC, &lit_4833); -#pragma pop - -/* 80AE20D8-80AE20E4 0000FC 000C+00 0/1 0/0 0/0 .rodata @4834 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4834[12] = { - 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20D8, &lit_4834); -#pragma pop - -/* 80AE20E4-80AE20EC 000108 0008+00 0/1 0/0 0/0 .rodata @4835 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4835[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20E4, &lit_4835); -#pragma pop - -/* 80AE20EC-80AE20F8 000110 000C+00 0/1 0/0 0/0 .rodata @4836 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4836[12] = { - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20EC, &lit_4836); -#pragma pop - -/* 80AE20F8-80AE20FC 00011C 0004+00 0/1 0/0 0/0 .rodata @4837 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4837[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20F8, &lit_4837); -#pragma pop - -/* 80AE20FC-80AE2108 000120 000C+00 0/1 0/0 0/0 .rodata @4838 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4838[12] = { - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE20FC, &lit_4838); -#pragma pop - -/* 80AE2108-80AE210C 00012C 0004+00 0/1 0/0 0/0 .rodata @4839 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4839[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2108, &lit_4839); -#pragma pop - -/* 80AE210C-80AE2118 000130 000C+00 0/1 0/0 0/0 .rodata @4840 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4840[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE210C, &lit_4840); -#pragma pop - -/* 80AE2118-80AE211C 00013C 0004+00 0/1 0/0 0/0 .rodata @4841 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4841[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2118, &lit_4841); -#pragma pop - -/* 80AE211C-80AE2128 000140 000C+00 0/1 0/0 0/0 .rodata @4842 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4842[12] = { - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE211C, &lit_4842); -#pragma pop - -/* 80AE2128-80AE212C 00014C 0004+00 0/1 0/0 0/0 .rodata @4843 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4843[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2128, &lit_4843); -#pragma pop - -/* 80AE212C-80AE2138 000150 000C+00 0/1 0/0 0/0 .rodata @4844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4844[12] = { - 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE212C, &lit_4844); -#pragma pop - -/* 80AE2138-80AE213C 00015C 0004+00 0/1 0/0 0/0 .rodata @4845 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4845[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2138, &lit_4845); -#pragma pop - -/* 80AE213C-80AE2148 000160 000C+00 0/1 0/0 0/0 .rodata @4846 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4846[12] = { - 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE213C, &lit_4846); -#pragma pop - -/* 80AE2148-80AE214C 00016C 0004+00 0/1 0/0 0/0 .rodata @4847 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4847[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2148, &lit_4847); -#pragma pop - -/* 80AE214C-80AE2158 000170 000C+00 0/1 0/0 0/0 .rodata @4848 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4848[12] = { - 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE214C, &lit_4848); -#pragma pop - -/* 80AE2158-80AE215C 00017C 0004+00 0/1 0/0 0/0 .rodata @4849 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4849[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2158, &lit_4849); -#pragma pop - -/* 80AE215C-80AE2168 000180 000C+00 0/1 0/0 0/0 .rodata @4850 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4850[12] = { - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE215C, &lit_4850); -#pragma pop - -/* 80AE2168-80AE216C 00018C 0004+00 0/1 0/0 0/0 .rodata @4851 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4851[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2168, &lit_4851); -#pragma pop - -/* 80AE216C-80AE2178 000190 000C+00 0/1 0/0 0/0 .rodata @4852 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4852[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE216C, &lit_4852); -#pragma pop - -/* 80AE2178-80AE217C 00019C 0004+00 0/1 0/0 0/0 .rodata @4853 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4853[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2178, &lit_4853); -#pragma pop - -/* 80AE217C-80AE21B0 0001A0 0034+00 0/0 0/0 0/0 .rodata @4854 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4854[52] = { - 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, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE217C, &lit_4854); -#pragma pop - -/* 80AE21B0-80AE21BC 0001D4 000C+00 0/1 0/0 0/0 .rodata @4858 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4858[12] = { - 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21B0, &lit_4858); -#pragma pop - -/* 80AE21BC-80AE21C0 0001E0 0004+00 0/1 0/0 0/0 .rodata @4859 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4859[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21BC, &lit_4859); -#pragma pop - -/* 80AE21C0-80AE21CC 0001E4 000C+00 0/1 0/0 0/0 .rodata @4860 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4860[12] = { - 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE21C0, &lit_4860); -#pragma pop - -/* 80AE21CC-80AE21D8 0001F0 000C+00 0/1 0/0 0/0 .rodata @4861 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4861[12] = { - 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21CC, &lit_4861); -#pragma pop - -/* 80AE21D8-80AE21E0 0001FC 0008+00 0/1 0/0 0/0 .rodata @4862 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4862[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21D8, &lit_4862); -#pragma pop - -/* 80AE21E0-80AE21EC 000204 000C+00 0/1 0/0 0/0 .rodata @4863 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4863[12] = { - 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21E0, &lit_4863); -#pragma pop - -/* 80AE21EC-80AE21F0 000210 0004+00 0/1 0/0 0/0 .rodata @4864 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4864[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21EC, &lit_4864); -#pragma pop - -/* 80AE21F0-80AE21FC 000214 000C+00 0/1 0/0 0/0 .rodata @4865 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4865[12] = { - 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE21F0, &lit_4865); -#pragma pop - -/* 80AE21FC-80AE2208 000220 000C+00 0/1 0/0 0/0 .rodata @4866 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4866[12] = { - 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE21FC, &lit_4866); -#pragma pop - -/* 80AE2208-80AE2210 00022C 0008+00 0/1 0/0 0/0 .rodata @4867 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4867[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2208, &lit_4867); -#pragma pop - -/* 80AE2210-80AE221C 000234 000C+00 0/1 0/0 0/0 .rodata @4868 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4868[12] = { - 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2210, &lit_4868); -#pragma pop - -/* 80AE221C-80AE2220 000240 0004+00 0/1 0/0 0/0 .rodata @4869 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4869[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE221C, &lit_4869); -#pragma pop - -/* 80AE2220-80AE222C 000244 000C+00 0/1 0/0 0/0 .rodata @4870 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4870[12] = { - 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE2220, &lit_4870); -#pragma pop - -/* 80AE222C-80AE2238 000250 000C+00 0/1 0/0 0/0 .rodata @4871 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4871[12] = { - 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE222C, &lit_4871); -#pragma pop - -/* 80AE2238-80AE2240 00025C 0008+00 0/1 0/0 0/0 .rodata @4872 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4872[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2238, &lit_4872); -#pragma pop - -/* 80AE2240-80AE224C 000264 000C+00 0/1 0/0 0/0 .rodata @4873 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4873[12] = { - 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE2240, &lit_4873); -#pragma pop - -/* 80AE224C-80AE2258 000270 000C+00 0/1 0/0 0/0 .rodata @4874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4874[12] = { - 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE224C, &lit_4874); -#pragma pop - -/* 80AE2258-80AE2260 00027C 0008+00 0/1 0/0 0/0 .rodata @4875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4875[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2258, &lit_4875); -#pragma pop - -/* 80AE2260-80AE226C 000284 000C+00 0/1 0/0 0/0 .rodata @4876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4876[12] = { - 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2260, &lit_4876); -#pragma pop - -/* 80AE226C-80AE2270 000290 0004+00 0/1 0/0 0/0 .rodata @4877 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4877[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE226C, &lit_4877); -#pragma pop - -/* 80AE2270-80AE227C 000294 000C+00 0/1 0/0 0/0 .rodata @4878 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4878[12] = { - 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE2270, &lit_4878); -#pragma pop - -/* 80AE227C-80AE2288 0002A0 000C+00 0/1 0/0 0/0 .rodata @4879 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4879[12] = { - 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE227C, &lit_4879); -#pragma pop - -/* 80AE2288-80AE2290 0002AC 0008+00 0/1 0/0 0/0 .rodata @4880 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4880[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2288, &lit_4880); -#pragma pop - -/* 80AE2290-80AE229C 0002B4 000C+00 0/1 0/0 0/0 .rodata @4881 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4881[12] = { - 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE2290, &lit_4881); -#pragma pop - -/* 80AE229C-80AE22A8 0002C0 000C+00 0/1 0/0 0/0 .rodata @4882 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4882[12] = { - 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE229C, &lit_4882); -#pragma pop - -/* 80AE22A8-80AE22B0 0002CC 0008+00 0/1 0/0 0/0 .rodata @4883 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4883[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22A8, &lit_4883); -#pragma pop - -/* 80AE22B0-80AE22BC 0002D4 000C+00 0/1 0/0 0/0 .rodata @4884 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4884[12] = { - 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE22B0, &lit_4884); -#pragma pop - -/* 80AE22BC-80AE22C8 0002E0 000C+00 0/1 0/0 0/0 .rodata @4885 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4885[12] = { - 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22BC, &lit_4885); -#pragma pop - -/* 80AE22C8-80AE22D0 0002EC 0008+00 0/1 0/0 0/0 .rodata @4886 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4886[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22C8, &lit_4886); -#pragma pop - -/* 80AE22D0-80AE22DC 0002F4 000C+00 0/1 0/0 0/0 .rodata @4887 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4887[12] = { - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE22D0, &lit_4887); -#pragma pop - -/* 80AE22DC-80AE22E8 000300 000C+00 0/1 0/0 0/0 .rodata @4888 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4888[12] = { - 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22DC, &lit_4888); -#pragma pop - -/* 80AE22E8-80AE22F0 00030C 0008+00 0/1 0/0 0/0 .rodata @4889 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4889[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22E8, &lit_4889); -#pragma pop - -/* 80AE22F0-80AE22FC 000314 000C+00 0/1 0/0 0/0 .rodata @4890 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4890[12] = { - 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22F0, &lit_4890); -#pragma pop - -/* 80AE22FC-80AE2300 000320 0004+00 0/1 0/0 0/0 .rodata @4891 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4891[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE22FC, &lit_4891); -#pragma pop - -/* 80AE2300-80AE230C 000324 000C+00 0/1 0/0 0/0 .rodata @4892 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4892[12] = { - 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2300, &lit_4892); -#pragma pop - -/* 80AE230C-80AE2310 000330 0004+00 0/1 0/0 0/0 .rodata @4893 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4893[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE230C, &lit_4893); -#pragma pop - -/* 80AE2310-80AE231C 000334 000C+00 0/1 0/0 0/0 .rodata @4894 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4894[12] = { - 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80AE2310, &lit_4894); -#pragma pop - -/* 80AE231C-80AE2328 000340 000C+00 0/1 0/0 0/0 .rodata @4895 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4895[12] = { - 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE231C, &lit_4895); -#pragma pop - -/* 80AE2328-80AE2330 00034C 0008+00 0/1 0/0 0/0 .rodata @4896 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4896[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2328, &lit_4896); -#pragma pop - -/* 80AE2330-80AE233C 000354 000C+00 0/1 0/0 0/0 .rodata @4897 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4897[12] = { - 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2330, &lit_4897); -#pragma pop - -/* 80AE233C-80AE2340 000360 0004+00 0/1 0/0 0/0 .rodata @4898 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4898[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE233C, &lit_4898); -#pragma pop - -/* 80AE2340-80AE234C 000364 000C+00 0/1 0/0 0/0 .rodata @4899 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4899[12] = { - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2340, &lit_4899); -#pragma pop - -/* 80AE234C-80AE2350 000370 0004+00 0/1 0/0 0/0 .rodata @4900 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4900[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE234C, &lit_4900); -#pragma pop - -/* 80AE2350-80AE235C 000374 000C+00 0/1 0/0 0/0 .rodata @4901 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4901[12] = { - 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2350, &lit_4901); -#pragma pop - -/* 80AE235C-80AE2360 000380 0004+00 0/1 0/0 0/0 .rodata @4902 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4902[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE235C, &lit_4902); -#pragma pop - -/* 80AE2360-80AE236C 000384 000C+00 0/1 0/0 0/0 .rodata @4903 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4903[12] = { - 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2360, &lit_4903); -#pragma pop - -/* 80AE236C-80AE2370 000390 0004+00 0/1 0/0 0/0 .rodata @4904 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4904[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE236C, &lit_4904); -#pragma pop - -/* 80AE2370-80AE237C 000394 000C+00 0/1 0/0 0/0 .rodata @4905 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4905[12] = { - 0x00, 0x14, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2370, &lit_4905); -#pragma pop - -/* 80AE237C-80AE2380 0003A0 0004+00 0/1 0/0 0/0 .rodata @4906 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4906[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE237C, &lit_4906); -#pragma pop - -/* 80AE2380-80AE238C 0003A4 000C+00 0/1 0/0 0/0 .rodata @4907 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4907[12] = { - 0x00, 0x15, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2380, &lit_4907); -#pragma pop - -/* 80AE238C-80AE2390 0003B0 0004+00 0/1 0/0 0/0 .rodata @4908 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4908[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE238C, &lit_4908); -#pragma pop - -/* 80AE2390-80AE239C 0003B4 000C+00 0/1 0/0 0/0 .rodata @4909 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4909[12] = { - 0x00, 0x0F, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2390, &lit_4909); -#pragma pop - -/* 80AE239C-80AE23A0 0003C0 0004+00 0/1 0/0 0/0 .rodata @4910 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4910[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE239C, &lit_4910); -#pragma pop - -/* 80AE23A0-80AE23AC 0003C4 000C+00 0/1 0/0 0/0 .rodata @4911 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4911[12] = { - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE23A0, &lit_4911); -#pragma pop - -/* 80AE23AC-80AE23B0 0003D0 0004+00 0/1 0/0 0/0 .rodata @4912 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4912[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80AE23AC, &lit_4912); -#pragma pop - -/* 80AE23B0-80AE240C 0003D4 005C+00 0/0 0/0 0/0 .rodata @4913 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4913[92] = { - 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, - 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, -}; -COMPILER_STRIP_GATE(0x80AE23B0, &lit_4913); -#pragma pop - -/* 80AE240C-80AE2418 000430 000C+00 0/1 0/0 0/0 .rodata @4955 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4955[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE240C, &lit_4955); -#pragma pop +/* 80AE0B58-80AE0ED0 008A38 0378+00 1/1 0/0 0/0 .text playExpression__11daNpcShad_cFv */ +void daNpcShad_c::playExpression() { + daNpcF_anmPlayData dat0 = {0x1, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat0[1] = {&dat0}; + daNpcF_anmPlayData dat1a = {0x2, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat1b = {0xA, 0.0f, 0}; + daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b}; + daNpcF_anmPlayData dat2a = {0x3, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat2b = {0xB, 0.0f, 0}; + daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b}; + daNpcF_anmPlayData dat3a = {0x4, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat3b = {0xC, 0.0f, 0}; + daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b}; + daNpcF_anmPlayData dat4 = {0x6, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat4[1] = {&dat4}; + daNpcF_anmPlayData dat5 = {0x7, 0.0f, 0}; + daNpcF_anmPlayData* pDat5[1] = {&dat5}; + daNpcF_anmPlayData dat6 = {0x8, 0.0f, 0}; + daNpcF_anmPlayData* pDat6[1] = {&dat6}; + daNpcF_anmPlayData dat7 = {0x9, 0.0f, 0}; + daNpcF_anmPlayData* pDat7[1] = {&dat7}; + daNpcF_anmPlayData dat8 = {0xA, 0.0f, 0}; + daNpcF_anmPlayData* pDat8[1] = {&dat8}; + daNpcF_anmPlayData dat9 = {0xB, 0.0f, 0}; + daNpcF_anmPlayData* pDat9[1] = {&dat9}; + daNpcF_anmPlayData dat10 = {0xC, 0.0f, 0}; + daNpcF_anmPlayData* pDat10[1] = {&dat10}; + daNpcF_anmPlayData dat11 = {0x5, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat11[1] = {&dat11}; + daNpcF_anmPlayData dat12 = {0x0, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat12[1] = {&dat12}; + daNpcF_anmPlayData** ppDat[13] = { + pDat0, pDat1, pDat2, pDat3, pDat4, + pDat5, pDat6, pDat7, pDat8, pDat9, + pDat10, pDat11, pDat12, + }; + + if (mExpression >= 0 && mExpression < 0xD) { + playExpressionAnm(ppDat); + } +} + +/* 80AE04D8-80AE0B58 0083B8 0680+00 1/1 0/0 0/0 .text playMotion__11daNpcShad_cFv */ +void daNpcShad_c::playMotion() { + daNpcF_anmPlayData dat0 = {0xD, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat0[1] = {&dat0}; + daNpcF_anmPlayData dat1a = {0x12, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat1b = {0x11, 0.0f, 0}; + daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b}; + daNpcF_anmPlayData dat2 = {0x11, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat2[1] = {&dat2}; + daNpcF_anmPlayData dat3a = {0x13, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat3b = {0xD, 0.0f, 0}; + daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b}; + daNpcF_anmPlayData dat4 = {0x16, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat4[1] = {&dat4}; + daNpcF_anmPlayData dat5a = {0x17, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat5b = {0xD, 0.0f, 0}; + daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b}; + daNpcF_anmPlayData dat6a = {0x19, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat6b = {0x1A, 0.0f, 0}; + daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b}; + daNpcF_anmPlayData dat7 = {0x1A, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat7[1] = {&dat7}; + daNpcF_anmPlayData dat8a = {0xE, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat8b = {0xD, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat8[2] = {&dat8a, &dat8b}; + daNpcF_anmPlayData dat9a = {0x1B, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat9b = {0x16, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b}; + daNpcF_anmPlayData dat10a = {0x1C, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat10b = {0x1D, 0.0f, 0}; + daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b}; + daNpcF_anmPlayData dat11a = {0x20, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat11b = {0x21, 0.0f, 0}; + daNpcF_anmPlayData* pDat11[2] = {&dat11a, &dat11b}; + daNpcF_anmPlayData dat12 = {0x21, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat12[1] = {&dat12}; + daNpcF_anmPlayData dat13 = {0x1D, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat13[1] = {&dat13}; + daNpcF_anmPlayData dat14a = {0x22, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat14b = {0x23, 0.0f, 0}; + daNpcF_anmPlayData* pDat14[2] = {&dat14a, &dat14b}; + daNpcF_anmPlayData dat15 = {0x23, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat15[1] = {&dat15}; + daNpcF_anmPlayData dat16 = {0x1F, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat16[1] = {&dat16}; + daNpcF_anmPlayData dat17 = {0x1E, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat17[1] = {&dat17}; + daNpcF_anmPlayData dat18 = {0x18, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat18[1] = {&dat18}; + daNpcF_anmPlayData dat19 = {0x14, 4.0f, 0}; + daNpcF_anmPlayData* pDat19[1] = {&dat19}; + daNpcF_anmPlayData dat20 = {0x15, 4.0f, 0}; + daNpcF_anmPlayData* pDat20[1] = {&dat20}; + daNpcF_anmPlayData dat21 = {0xF, 4.0f, 0}; + daNpcF_anmPlayData* pDat21[1] = {&dat21}; + daNpcF_anmPlayData dat22 = {0x10, 0.0f, 0}; + daNpcF_anmPlayData* pDat22[1] = {&dat22}; + daNpcF_anmPlayData** ppDat[23] = { + pDat0, pDat1, pDat2, pDat3, pDat4, + pDat5, pDat6, pDat7, pDat8, pDat9, + pDat10, pDat11, pDat12, pDat13, pDat14, + pDat15, pDat16, pDat17, pDat18, pDat19, + pDat20, pDat21, pDat22, + }; + + if (mMotion >= 0 && mMotion < 23) { + playMotionAnm(ppDat); + } +} + +inline csXyz* daNpcShad_c::unk_inline() { + csXyz* local_fc[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; + return *local_fc; +} inline BOOL daNpcShad_c::chkFindPlayer() { f32 fVar1; @@ -1710,7 +934,7 @@ inline void daNpcShad_c::setLookMode(int param_1, fopAc_ac_c* param_2, cXyz* par inline BOOL daNpcShad_c::step(s16 param_1, int param_2, f32 param_3) { if (mTurnMode == 0) { - if (param_2 != 0) { + if (param_2 != -1) { if ((int)fabsf(cM_sht2d((s16)(param_1 - mCurAngle.y))) > 40) { setExpression(12, -1.0f); setMotion(param_2, -1.0f, 0); @@ -1997,21 +1221,6 @@ bool daNpcShad_c::wait_type1(void* param_1) { return true; } -/* ############################################################################################## */ -/* 80AE2444-80AE2448 000468 0004+00 0/1 0/0 0/0 .rodata @5586 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5586 = 0xC58DA0AD; -COMPILER_STRIP_GATE(0x80AE2444, &lit_5586); -#pragma pop - -/* 80AE2448-80AE244C 00046C 0004+00 0/1 0/0 0/0 .rodata @5587 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5587 = 0x4605AD86; -COMPILER_STRIP_GATE(0x80AE2448, &lit_5587); -#pragma pop - /* 80ADB428-80ADB628 003308 0200+00 1/0 0/0 0/0 .text wait_type2__11daNpcShad_cFPv */ bool daNpcShad_c::wait_type2(void* param_1) { // NONMATCHING @@ -2030,7 +1239,7 @@ bool daNpcShad_c::wait_type2(void* param_1) { switch (field_0xe10) { case 0: if (daNpcF_chkTmpBit(0x76)) { - current.pos.set(04532.0845f, 0.0f, 8555.381f); + current.pos.set(-4532.0845f, 0.0f, 8555.381f); old.pos = current.pos; setAngle(-0x6000); field_0xe10++; @@ -2110,9 +1319,9 @@ bool daNpcShad_c::talk(void* param_1) { OS_REPORT("会話終了時 イベントID=%d アイテムNo=%d\n", eventID, itemNo); // At the end of the conversation, Event ID=%d Item No=%d if (eventID == 1) { - field_0xe08 = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1, -1, NULL, NULL); + mItemPartnerId = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1, -1, NULL, NULL); - if (field_0xe08 != fpcM_ERROR_PROCESS_ID_e) { + if (mItemPartnerId != fpcM_ERROR_PROCESS_ID_e) { eventIdx = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xFF); dComIfGp_getEvent().reset(this); fopAcM_orderChangeEventId(this, eventIdx, 1, 0xFFFF); @@ -2246,14 +1455,14 @@ bool daNpcShad_c::leave(void* param_1) { } /* 80ADC700-80ADC800 0045E0 0100+00 1/0 0/0 0/0 .text EvCut_Introduction__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_Introduction(int i_index) { +BOOL daNpcShad_c::EvCut_Introduction(int i_cutIndex) { dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); - int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_index, "prm"); + int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); if (piVar1 == NULL) { return FALSE; } - if (eventManager->getIsAddvance(i_index)) { + if (eventManager->getIsAddvance(i_cutIndex)) { switch (*piVar1) { case 0: case 2: @@ -2274,14 +1483,15 @@ BOOL daNpcShad_c::EvCut_Introduction(int i_index) { } /* 80ADC800-80ADCAD8 0046E0 02D8+00 1/0 0/0 0/0 .text EvCut_Meeting__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_Meeting(int i_index) { +BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { + // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); - int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_index, "prm"); + int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); if (piVar1 == NULL) { return FALSE; } - if (eventManager->getIsAddvance(i_index)) { + if (eventManager->getIsAddvance(i_cutIndex)) { switch (*piVar1) { case 0: setExpression(12, -1.0f); @@ -2332,81 +1542,32 @@ BOOL daNpcShad_c::EvCut_Meeting(int i_index) { return FALSE; } -/* ############################################################################################## */ -/* 80AE246C-80AE2470 000490 0004+00 0/1 0/0 0/0 .rodata @6108 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6108 = 0xC3D6C338; -COMPILER_STRIP_GATE(0x80AE246C, &lit_6108); -#pragma pop - -/* 80AE2470-80AE2474 000494 0004+00 0/1 0/0 0/0 .rodata @6109 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6109 = -770.0f; -COMPILER_STRIP_GATE(0x80AE2470, &lit_6109); -#pragma pop - -/* 80AE2474-80AE2478 000498 0004+00 0/1 0/0 0/0 .rodata @6110 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6110 = 0xC5216CD8; -COMPILER_STRIP_GATE(0x80AE2474, &lit_6110); -#pragma pop - -/* 80AE2478-80AE247C 00049C 0004+00 0/2 0/0 0/0 .rodata @6111 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6111 = 60.0f; -COMPILER_STRIP_GATE(0x80AE2478, &lit_6111); -#pragma pop - -/* 80AE247C-80AE2484 0004A0 0004+04 0/1 0/0 0/0 .rodata @6112 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6112[1 + 1 /* padding */] = { - 47.0f / 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80AE247C, &lit_6112); -#pragma pop - -/* 80AE2484-80AE248C 0004A8 0008+00 0/2 0/0 0/0 .rodata @6115 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_6115[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE2484, &lit_6115); -#pragma pop - /* 80ADCAD8-80ADD720 0049B8 0C48+00 1/0 0/0 0/0 .text EvCut_ToChantSpell1__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_index) { +BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); - int* piVar1 = (int*)eventManager->getMyNowCutName(i_index); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); - if (eventManager->getIsAddvance(i_index)) { - switch (*piVar1) { - case 0x30303031: - case 0x30303032: + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + case '0002': setLookMode(0, NULL, NULL); initTalk(field_0xe14, NULL); break; - case 0x30303035: + case '0005': initTalk(field_0xe14, NULL); setExpression(10, -1.0f); setMotion(7, -1.0f, 0); break; - case 0x30303036: + case '0006': mTurnMode = 0; setMotion(0x14, -1.0f, 0); break; - case 0x30303037: + case '0007': current.pos = home.pos; old.pos = current.pos; speedF = 0.0f; @@ -2414,15 +1575,15 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_index) { field_0xe1e = 0; break; - case 0x30303038: + case '0008': initTalk(field_0xe14, NULL); Z2GetAudioMgr()->subBgmStart(Z2BGM_ITEM_GET); break; - case 0x30303039: + case '0009': setAngle(home.angle.y - 0x2000); // fallthrough - case 0x30303130: + case '0010': initTalk(field_0xe14, NULL); break; @@ -2431,93 +1592,285 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_index) { break; } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; + } - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); - } else if (iVar3 != 0 && mMsgTimer == 0) { - setExpressionTalkAfter(); - } + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; - cXyz sp30; - switch (*piVar1) { - case 0x3031: - if (!step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - break; + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + cXyz sp30; + switch (*cutName) { + case '0001': + if (!step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + break; + } + + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + return TRUE; + + case '0002': + case '0005': + if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; } - - setExpression(12, -1.0f); + } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { setMotion(0, -1.0f, 0); mTurnMode = 0; + } + break; + + case '0006': + sp30.set(-429.52515f, -770.0f, -2582.8027f); + step(cLib_targetAngleY(fopAcM_GetPosition_p(this), &sp30), -1, 60.0f); + speedF = 4.7f; + return TRUE; + + case '0007': + Z2GetAudioMgr()->seStartLevel(Z2SE_AL_COPYROD_COMEBACK, fopAcM_GetPosition_p(daPy_getPlayerActorClass()), 0, + 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + return TRUE; + + case '0008': + Z2GetAudioMgr()->seStartLevel(Z2SE_AL_COPYROD_COMEBACK, fopAcM_GetPosition_p(daPy_getPlayerActorClass()), 0, + 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + if (talkProc(NULL, TRUE, NULL)) { + fopAcM_delete(this); return TRUE; + } + break; - case 0x3032: - // case 0x3035: + case '0009': + if (home.angle.y == mCurAngle.y) { + if (talkProc(NULL, TRUE, NULL)) { + if (mMotion != 0x12) { + Z2GetAudioMgr()->muteSceneBgm(190, 0.0f); + } - if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { - if (talkProc(NULL, TRUE, NULL)) { - return TRUE; - } - } else - if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - setMotion(0, -1.0f, 0); - mTurnMode = 0; - } + mSound.startCreatureVoiceLevel(Z2SE_SHAD_V_INCANTATION, -1); + setExpression(11, -1.0f); + setMotion(0x12, -1.0f, 0); + return TRUE; + } + } else if (step(home.angle.y, 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + break; + + case '0010': + if (talkProc(NULL, TRUE, NULL)) { + Z2GetAudioMgr()->unMuteSceneBgm(70); + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + setAngle(fopAcM_searchPlayerAngleY(this)); + return TRUE; + } + break; + + default: + JUT_ASSERT(2382, 0); + break; + } + + return FALSE; +} + +/* 80ADD720-80ADE47C 005600 0D5C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2__11daNpcShad_cFi */ +BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { + // NONMATCHING + dEvent_manager_c* eventManager = dComIfGp_getPEvtManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + fopAc_ac_c* actor; + daCstaF_c* statue; + + if (eventManager->getIsAddvance(i_cutIndex) != 0) { + switch (*cutName) { + case '0002': + dComIfGs_setItem(SLOT_22, 0xFF); + mTurnMode = 0; + + actor = NULL; + fopAcM_SearchByName(PROC_CSTAF, (fopAc_ac_c**)&actor); + if (actor != NULL) { + fopAcM_OnStatus(actor, fopAcM_STATUS_UNK_000800); + } + + dComIfGp_getEvent().startCheckSkipEdge(this); + dComIfGp_getEvent().onSkipFade(); + // fallthrough + case '0003': + setLookMode(0, NULL, NULL); + // falllthrough + case '0005': + initTalk(field_0xe14, NULL); + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); break; - case 0x3033: - sp30.set(-429.5251f, -770.0f, -2582.803f); - step(cLib_targetAngleY(fopAcM_GetPosition_p(this), &sp30), -1, 60.0f); - speedF = 4.7f; - return TRUE; + case '0006': + Z2GetAudioMgr()->unMuteSceneBgm(70); + initTalk(field_0xe14, NULL); + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + break; - case 0x3037: - Z2GetAudioMgr()->seStartLevel(Z2SE_AL_COPYROD_COMEBACK, fopAcM_GetPosition_p(daPy_getPlayerActorClass()), 0, - 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); - return TRUE; + case '0007': + mTurnMode = 0; + setMotion(0x11, 15.0f, 0); + break; - case 0x3038: - Z2GetAudioMgr()->seStartLevel(Z2SE_AL_COPYROD_COMEBACK, fopAcM_GetPosition_p(daPy_getPlayerActorClass()), 0, - 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); - - if (talkProc(NULL, TRUE, NULL)) { - fopAcM_delete(this); - return TRUE; + case '0008': + if (getPathPoint(getPathID(), 1, &home.pos)) { + current.pos = home.pos; + old.pos = current.pos; + speedF = 0.0f; + field_0xe14 = 0x42; + setExpression(10, -1.0f); + setMotion(7, -1.0f, 0); } break; - case 0x3039: - if (home.angle.y == mCurAngle.y) { - if (talkProc(NULL, TRUE, NULL)) { - if (mMotion != 0x12) { - Z2GetAudioMgr()->muteSceneBgm(190, 0.0f); - } - - mSound.startCreatureVoiceLevel(Z2SE_SHAD_V_INCANTATION, -1); - setExpression(11, -1.0f); - setMotion(0x12, -1.0f, 0); - return TRUE; - } - } else if (step(home.angle.y, 21, 15.0f)) { - setMotion(0, -1.0f, 0); - mTurnMode = 0; - } + case '0009': + setAngle(home.angle.y - 0x2000); + initTalk(field_0xe14, NULL); break; - case 0x3130: - if (talkProc(NULL, TRUE, NULL)) { - Z2GetAudioMgr()->unMuteSceneBgm(70); - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); - setAngle(fopAcM_searchPlayerAngleY(this)); - return TRUE; + case '0010': + statue = NULL; + fopAcM_SearchByName(PROC_CSTAF, (fopAc_ac_c**)&statue); + if (statue != NULL) { + statue->onCoverVanishFlg(); } break; default: - JUT_ASSERT(2382, 0); + JUT_ASSERT(2451, 0); + break; + } + } + + if (dComIfGp_getEvent().checkSkipEdge()) { + Z2GetAudioMgr()->unMuteSceneBgm(70); + daNpcF_clearMessageTmpBit(); + daNpcF_onEvtBit(0x12F); + field_0xe14 = 0x42; + mOrderEvtNo = 5; + dMsgObject_onKillMessageFlag(); + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + cXyz sp30; + switch (*cutName) { + case '0002': + if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + return TRUE; + } + break; + + case '0003': + if (fopAcM_searchPlayerAngleY(this) == mCurAngle.y) { + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; + } + } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + break; + + case '0005': + case '0006': + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; + } + break; + + case '0007': + if (getPathPoint(getPathID(), 1, &sp30)) { + step(cLib_targetAngleY(fopAcM_GetPosition_p(this), &sp30), -1, 60.0f); + speedF = 3.0f; + } + return TRUE; + + case '0008': + return TRUE; + + case '0009': + if (home.angle.y == mCurAngle.y) { + if (talkProc(NULL, TRUE, NULL)) { + if (mMotion != 0x12) { + Z2GetAudioMgr()->muteSceneBgm(190, 0.0f); + } + + mSound.startCreatureVoiceLevel(Z2SE_SHAD_V_INCANTATION_L, -1); + setExpression(11, -1.0f); + setMotion(0x12, -1.0f, 0); + return TRUE; + } + } else if (step(home.angle.y, 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + + break; + + case '0010': + return TRUE; + + default: + JUT_ASSERT(2540, 0); + break; + } + + return FALSE; +} + +/* 80ADE47C-80ADE5F8 00635C 017C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2Skip__11daNpcShad_cFi */ +BOOL daNpcShad_c::EvCut_ToChantSpell2Skip(int i_cutIndex) { + // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + return TRUE; + + case '0002': + if (getPathPoint(getPathID(), 1, &home.pos)) { + current.pos = home.pos; + old.pos = current.pos; + speedF = 0.0f; + setExpression(10, -1.0f); + setMotion(7, -1.0f, 0); + } + return TRUE; + + default: + JUT_ASSERT(2574, 0); break; } } @@ -2525,206 +1878,703 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_index) { return FALSE; } -/* ############################################################################################## */ -/* 80AE248C-80AE2490 0004B0 0004+00 0/1 0/0 0/0 .rodata @6365 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6365 = 3.0f; -COMPILER_STRIP_GATE(0x80AE248C, &lit_6365); -#pragma pop - -/* 80ADD720-80ADE47C 005600 0D5C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_ToChantSpell2(int param_0) { - // NONMATCHING +inline void daNpcShad_c::setLookObliquenessUp() { + cXyz sp18(0.0f, 100.0f, 100.0f); + mDoMtx_stack_c::transS(mLookatPos[2]); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(&sp18, &sp18); + setLookMode(5, NULL, &sp18); } -/* 80ADE47C-80ADE5F8 00635C 017C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2Skip__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_ToChantSpell2Skip(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AE2616 = "POS"; -SECTION_DEAD static char const* const stringBase_80AE261A = "ANGLE"; -#pragma pop - /* 80ADE5F8-80ADED68 0064D8 0770+00 3/0 0/0 0/0 .text EvCut_DiscoveryCannon__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_DiscoveryCannon(int param_0) { +BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + cXyz* pcVar1; + int* piVar1; + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + dComIfGp_getEvent().startCheckSkipEdge(this); + Z2GetAudioMgr()->bgmStreamPrepare(0x200007C); + Z2GetAudioMgr()->bgmStreamPlay(); + setExpression(12, 0.0f); + setMotion(0, 0.0f, 0); + setLookMode(2, NULL, NULL); + break; + + case '0003': + pcVar1 = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + piVar1 = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "ANGLE"); + + if (pcVar1 != NULL) { + current.pos = *pcVar1; + old.pos = current.pos; + } + + if (piVar1 != NULL) { + setAngle(*piVar1); + } + + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + speedF = 0.0f; + break; + + case '0005': + case '0008': + mTurnMode = 0; + setExpression(6, -1.0f); + setMotion(0x14, -1.0f, 0); + speedF = 5.0f; + break; + + case '0004': + case '0006': + case '0007': + setLookMode(0, NULL, NULL); + // fallthrough + case '0002': + dComIfGs_onSaveSwitch(79); + initTalk(field_0xe14, NULL); + break; + + default: + JUT_ASSERT(2636, 0); + break; + } + } + + if (dComIfGp_getEvent().checkSkipEdge()) { + Z2GetAudioMgr()->bgmStreamStop(30); + daNpcF_clearMessageTmpBit(); + daNpcF_onEvtBit(0x312); + mOrderEvtNo = 7; + dMsgObject_onKillMessageFlag(); + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } + + cXyz* pcVar2; + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + switch (*cutName) { + case '0001': + case '0003': + return TRUE; + + case '0005': + case '0008': + setLookObliquenessUp(); + pcVar2 = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + + if (pcVar2 != NULL) { + step(cLib_targetAngleY(¤t.pos, pcVar2), -1, 15.0f); + + if (pcVar2->absXZ(current.pos) < 15.0f) { + speedF = 0.0f; + setMotion(0, -1.0f, 0); + return TRUE; + } + } + break; + + case '0002': + case '0004': + case '0006': + case '0007': + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; + } + break; + + default: + JUT_ASSERT(2693, 0); + break; + } + + return FALSE; } -/* 80ADED68-80ADEEE4 006C48 017C+00 1/0 0/0 0/0 .text EvCut_DiscoveryCannonSkip__11daNpcShad_cFi - */ -BOOL daNpcShad_c::EvCut_DiscoveryCannonSkip(int param_0) { +/* 80ADED68-80ADEEE4 006C48 017C+00 1/0 0/0 0/0 .text EvCut_DiscoveryCannonSkip__11daNpcShad_cFi */ +BOOL daNpcShad_c::EvCut_DiscoveryCannonSkip(int i_cutIndex) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + cXyz* pos; + int* angle; + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + return TRUE; + + case '0002': + pos = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + angle = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "ANGLE"); + + if (pos != NULL) { + current.pos = *pos; + old.pos = current.pos; + } + + if (angle != NULL) { + setAngle(*angle); + } + + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + speedF = 0.0f; + return TRUE; + + default: + JUT_ASSERT(2729, 0); + break; + } + } + + return FALSE; } /* 80ADEEE4-80ADF810 006DC4 092C+00 1/0 0/0 0/0 .text EvCut_Disappear__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_Disappear(int param_0) { +BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + cXyz* pos; + int* angle; + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + dComIfGp_getEvent().startCheckSkipEdge(this); + // fallthrough + case '0004': + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + setLookMode(2, NULL, NULL); + initTalk(68, NULL); + break; + + case '0002': + pos = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + angle = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "ANGLE"); + + if (pos != NULL) { + current.pos = *pos; + old.pos = current.pos; + } + + if (angle != NULL) { + setAngle(*angle); + } + + setExpression(12, -1.0f); + setMotion(0, -1.0f, 0); + setLookMode(1, NULL, NULL); + speedF = 0.0f; + break; + + case '0005': + case '0003': + setExpression(6, -1.0f); + setMotion(0x13, -1.0f, 0); + mTurnMode = 0; + speedF = daNpcShad_Param_c::m.traveling_speed; + break; + + case '0006': + fopAcM_delete(this); + break; + + default: + JUT_ASSERT(2786, 0); + } + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + int iVar4, iVar5, iVar6; + iVar6 = mMsgTimer; + if (ctrlMsgAnm(iVar4, iVar5, this, FALSE) != 0) { + setExpression(iVar4, -1.0f); + setMotion(iVar5, -1.0f, 0); + } else if (iVar6 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + if (dComIfGp_getEvent().checkSkipEdge()) { + daNpcF_clearMessageTmpBit(); + daNpcF_onEvtBit(0x311); + mOrderEvtNo = 9; + dMsgObject_onKillMessageFlag(); + changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); + } + + cXyz* pos2; + switch (*cutName) { + case '0001': + if (fopAcM_searchPlayerAngleY(this) == mCurAngle.y) { + if (talkProc(NULL, TRUE, NULL)) { + setLookMode(0, NULL, NULL); + return TRUE; + } + } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + setMotion(0, -1.0f, 0); + mTurnMode = 0; + } + break; + + case '0002': + return TRUE; + + case '0004': + if (talkProc(NULL, TRUE, NULL)) { + setLookMode(0, NULL, NULL); + return TRUE; + } + break; + + case '0005': + case '0003': + pos2 = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + + if (pos2 != NULL) { + step(cLib_targetAngleY(¤t.pos, pos2), -1, 15.0f); + + if (pos2->x > current.pos.x) { + speedF = 0.0f; + setMotion(0, -1.0f, 0); + return TRUE; + } + } + break; + + case '0006': + return TRUE; + + default: + JUT_ASSERT(2873, 0); + break; + } + + return FALSE; } /* 80ADF810-80ADF8DC 0076F0 00CC+00 1/0 0/0 0/0 .text EvCut_DisappearSkip__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_DisappearSkip(int param_0) { - // NONMATCHING +BOOL daNpcShad_c::EvCut_DisappearSkip(int i_cutIndex) { + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + return TRUE; + + case '0002': + field_0xe1e = 0; + return TRUE; + + case '0003': + dComIfGp_event_reset(); + fopAcM_delete(this); + return TRUE; + + default: + JUT_ASSERT(2905, 0); + break; + } + } + + return FALSE; } -/* ############################################################################################## */ -/* 80AE2490-80AE2494 0004B4 0004+00 0/0 0/0 0/0 .rodata @6549 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6549 = 5.0f; -COMPILER_STRIP_GATE(0x80AE2490, &lit_6549); -#pragma pop - -/* 80AE2494-80AE2498 0004B8 0004+00 0/1 0/0 0/0 .rodata @6779 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6779 = 4100.0f; -COMPILER_STRIP_GATE(0x80AE2494, &lit_6779); -#pragma pop - -/* 80AE2498-80AE249C 0004BC 0004+00 0/1 0/0 0/0 .rodata @6780 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6780 = -1520.0f; -COMPILER_STRIP_GATE(0x80AE2498, &lit_6780); -#pragma pop - -/* 80AE249C-80AE24A0 0004C0 0004+00 0/1 0/0 0/0 .rodata @6781 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6781 = 0xC570FD00; -COMPILER_STRIP_GATE(0x80AE249C, &lit_6781); -#pragma pop - /* 80ADF8DC-80ADFB70 0077BC 0294+00 1/0 0/0 0/0 .text EvCut_CallBack__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_CallBack(int param_0) { +BOOL daNpcShad_c::EvCut_CallBack(int i_cutIndex) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + cXyz sp30; + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + sp30.set(4100.0f, -1520.0f, -3855.8125f); + setAngle(cLib_targetAngleY(¤t.pos, &sp30)); + setLookMode(1, NULL, NULL); + break; + + case '0002': + initTalk(69, NULL); + break; + + default: + JUT_ASSERT(2939, 0); + break; + } + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + switch (*cutName) { + case '0001': + return TRUE; + + case '0002': + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; + } + break; + + default: + JUT_ASSERT(2965, 0); + break; + } + + return FALSE; } -/* ############################################################################################## */ -/* 80AE24A0-80AE24B0 0004C4 0010+00 1/1 0/0 0/0 .rodata @6782 */ -SECTION_RODATA static u8 const lit_6782[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80AE24A0, &lit_6782); - /* 80ADFB70-80ADFE74 007A50 0304+00 1/0 0/0 0/0 .text EvCut_WiretapSponsor__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_WiretapSponsor(int param_0) { +BOOL daNpcShad_c::EvCut_WiretapSponsor(int i_cutIndex) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + fopAc_ac_c* actors[4] = {mActorMngr[2].getActorP(), mActorMngr[1].getActorP(), this, mActorMngr[3].getActorP()}; + int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*cutName) { + case '0001': + dComIfGp_setMesgCameraInfoActor(actors[0], actors[1], actors[2], actors[3], NULL, NULL, NULL, NULL, NULL, NULL); + initTalk(field_0xe14, (fopAc_ac_c**)&actors[0]); + break; + + default: + JUT_ASSERT(3002, 0); + break; + } + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + fopAc_ac_c* talkPartner; + switch (*cutName) { + case '0001': + if (talkProc(NULL, TRUE, (fopAc_ac_c**)&actors[0])) { + return TRUE; + } + + talkPartner = dComIfGp_event_getTalkPartner(); + if (talkPartner == this) { + talkPartner = mActorMngr[2].getActorP(); + } + setLookMode(4, talkPartner, NULL); + break; + + default: + JUT_ASSERT(3032, 0); + break; + } + return FALSE; } /* 80ADFE74-80AE0104 007D54 0290+00 2/0 0/0 0/0 .text EvCut_WiretapEntrant__11daNpcShad_cFi */ -BOOL daNpcShad_c::EvCut_WiretapEntrant(int param_0) { +BOOL daNpcShad_c::EvCut_WiretapEntrant(int i_cutIndex) { // NONMATCHING + dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); + int* prm = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); + + if (prm == NULL) { + return FALSE; + } + + if (eventManager->getIsAddvance(i_cutIndex)) { + switch (*prm) { + case 0: + setExpression(12, -1.0f); + setMotion(4, -1.0f, 0); + break; + + default: + JUT_ASSERT(3065, 0); + break; + } + } + + int iVar1, iVar2, iVar3; + iVar3 = mMsgTimer; + if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { + setExpression(iVar1, -1.0f); + setMotion(iVar2, -1.0f, 0); + } else if (iVar3 != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); + } + + fopAc_ac_c* talkPartner; + switch (*prm) { + case 0: + talkPartner = dComIfGp_event_getTalkPartner(); + if (talkPartner == this) { + talkPartner = mActorMngr[2].getActorP(); + } + setLookMode(4, talkPartner, NULL); + return TRUE; + + default: + JUT_ASSERT(3088, 0); + break; + } + + return FALSE; } /* 80AE0104-80AE0124 007FE4 0020+00 1/0 0/0 0/0 .text daNpcShad_Create__FPv */ -static void daNpcShad_Create(void* param_0) { - // NONMATCHING +static int daNpcShad_Create(void* a_this) { + daNpcShad_c* i_this = (daNpcShad_c*)a_this; + return i_this->Create(); } /* 80AE0124-80AE0144 008004 0020+00 1/0 0/0 0/0 .text daNpcShad_Delete__FPv */ -static void daNpcShad_Delete(void* param_0) { - // NONMATCHING +static int daNpcShad_Delete(void* a_this) { + daNpcShad_c* i_this = (daNpcShad_c*)a_this; + return i_this->Delete(); } /* 80AE0144-80AE0164 008024 0020+00 1/0 0/0 0/0 .text daNpcShad_Execute__FPv */ -static void daNpcShad_Execute(void* param_0) { - // NONMATCHING +static int daNpcShad_Execute(void* a_this) { + daNpcShad_c* i_this = (daNpcShad_c*)a_this; + return i_this->Execute(); } /* 80AE0164-80AE0184 008044 0020+00 1/0 0/0 0/0 .text daNpcShad_Draw__FPv */ -static void daNpcShad_Draw(void* param_0) { - // NONMATCHING +static int daNpcShad_Draw(void* a_this) { + daNpcShad_c* i_this = (daNpcShad_c*)a_this; + return i_this->Draw(); } /* 80AE0184-80AE018C 008064 0008+00 1/0 0/0 0/0 .text daNpcShad_IsDelete__FPv */ -static bool daNpcShad_IsDelete(void* param_0) { - return true; -} - -/* 80AE018C-80AE01BC 00806C 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING +static int daNpcShad_IsDelete(void* a_this) { + return 1; } /* 80AE01BC-80AE0438 00809C 027C+00 1/0 0/0 0/0 .text setParam__11daNpcShad_cFv */ void daNpcShad_c::setParam() { - // NONMATCHING + searchActors(); + attention_info.flags = 10; + + if (isSneaking()) { + attention_info.distances[0] = 78; + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = 77; + attention_info.flags |= 0x800000; + } else if (mMode == 0) { + attention_info.distances[0] = getDistTableIdx(3, 5); + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = getDistTableIdx(2, 5); + } else { + attention_info.distances[0] = getDistTableIdx(daNpcShad_Param_c::m.common.attention_distance, daNpcShad_Param_c::m.common.attention_angle); + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = getDistTableIdx(daNpcShad_Param_c::m.common.talk_distance, daNpcShad_Param_c::m.common.talk_angle); + } + + mAcchCir.SetWallR(daNpcShad_Param_c::m.common.width); + mAcchCir.SetWallH(daNpcShad_Param_c::m.common.knee_length); + gravity = daNpcShad_Param_c::m.common.gravity; } /* 80AE0438-80AE04D8 008318 00A0+00 1/0 0/0 0/0 .text main__11daNpcShad_cFv */ BOOL daNpcShad_c::main() { - // NONMATCHING -} + if (mActionFn) { + (this->*mActionFn)(NULL); + } -/* 80AE04D8-80AE0B58 0083B8 0680+00 1/1 0/0 0/0 .text playMotion__11daNpcShad_cFv */ -void daNpcShad_c::playMotion() { - // NONMATCHING -} + if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk() && mItemPartnerId != fpcM_ERROR_PROCESS_ID_e) { + dComIfGp_event_setItemPartnerId(mItemPartnerId); + mItemPartnerId = fpcM_ERROR_PROCESS_ID_e; + } -/* 80AE0B58-80AE0ED0 008A38 0378+00 1/1 0/0 0/0 .text playExpression__11daNpcShad_cFv */ -void daNpcShad_c::playExpression() { - // NONMATCHING + playExpression(); + playMotion(); + return TRUE; } -/* ############################################################################################## */ -/* 80AE24B0-80AE24B4 0004D4 0004+00 1/1 0/0 0/0 .rodata @6995 */ -SECTION_RODATA static f32 const lit_6995 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80AE24B0, &lit_6995); - /* 80AE0ED0-80AE0FAC 008DB0 00DC+00 1/0 0/0 0/0 .text ctrlBtk__11daNpcShad_cFv */ +// NONMATCHING inlining issues BOOL daNpcShad_c::ctrlBtk() { - // NONMATCHING + if (mpMatAnm != NULL) { + J3DAnmTextureSRTKey* btkAnm = NULL; + btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx); + + if (btkAnm == mBtkAnm.getBtkAnm()) { + mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * -1.0f * 0.2f); + mpMatAnm->setNowOffsetY(cM_ssin(mEyeAngle.x) * 0.2f); + mpMatAnm->onEyeMoveFlag(); + return TRUE; + } + + mpMatAnm->offEyeMoveFlag(); + } + + return FALSE; } -/* ############################################################################################## */ -/* 80AE24B4-80AE24B8 0004D8 0004+00 0/1 0/0 0/0 .rodata @7090 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7090 = 10.0f; -COMPILER_STRIP_GATE(0x80AE24B4, &lit_7090); -#pragma pop - -/* 80AE24B8-80AE24BC 0004DC 0004+00 0/1 0/0 0/0 .rodata @7091 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7091 = 45.0f; -COMPILER_STRIP_GATE(0x80AE24B8, &lit_7091); -#pragma pop - /* 80AE0FAC-80AE1320 008E8C 0374+00 1/0 0/0 0/0 .text setAttnPos__11daNpcShad_cFv */ void daNpcShad_c::setAttnPos() { // NONMATCHING -} + if (field_0xe18 == 1) { + for (int i = 0; i < 3; i++) { + mLookatAngle[i].setall(0); + } + } -/* ############################################################################################## */ -/* 80AE24BC-80AE24C0 0004E0 0004+00 0/1 0/0 0/0 .rodata @7143 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7143 = -30.0f; -COMPILER_STRIP_GATE(0x80AE24BC, &lit_7143); -#pragma pop + setMtx(); + lookat(); + + cXyz sp40(10.0f, 10.0f, 0.0f); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(5)); + mDoMtx_stack_c::multVecZero(&mHeadPos); + mDoMtx_stack_c::multVec(&sp40, &eyePos); + sp40.x = 0.0f; + mDoMtx_stack_c::multVec(&sp40, &sp40); + mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &sp40); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &sp40); + + cXyz* attnPos = mLookat.getAttnPos(); + if (attnPos != NULL) { + cXyz sp4c(*attnPos - eyePos); + mEyeAngle.y = -(mCurAngle.y - mLookatAngle[2].y); + mEyeAngle.y += cM_atan2s(sp4c.x, sp4c.z); + mEyeAngle.x -= cM_atan2s(sp4c.x, sp4c.absXZ()); + } else { + mEyeAngle.y = 0; + mEyeAngle.x = 0; + } + + attention_info.position.set(mHeadPos.x, mHeadPos.y + daNpcShad_Param_c::m.common.attention_offset, mHeadPos.z); + cXyz sp58; + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&sp58); + sp58.y = current.pos.y; + + field_0xcb0.SetC(sp58); + field_0xcb0.SetH(daNpcShad_Param_c::m.common.height); + + f32 fVar1; + if (mMode == 0) { + fVar1 = 45.0f; + } else { + fVar1 = daNpcShad_Param_c::m.common.width; + } + field_0xcb0.SetR(fVar1); + + if (field_0xe1e != 0) { + dComIfG_Ccsp()->Set(&field_0xcb0); + } +} /* 80AE1320-80AE153C 009200 021C+00 1/1 0/0 0/0 .text lookat__11daNpcShad_cFv */ void daNpcShad_c::lookat() { // NONMATCHING + daPy_py_c* player = NULL; + J3DModel* model = mpMorf->getModel(); + int iVar1 = 0; + f32 body_angleX_min = daNpcShad_Param_c::m.common.body_angleX_min; + f32 body_angleX_max = daNpcShad_Param_c::m.common.body_angleX_max; + + f32 body_angleY_min; + if (mMode == 1) { + body_angleY_min = -30.0f; + } else { + body_angleY_min = daNpcShad_Param_c::m.common.body_angleY_min; + } + + f32 body_angleY_max; + if (mMode == 1) { + body_angleY_max = 30.0f; + } else { + body_angleY_max = daNpcShad_Param_c::m.common.body_angleY_max; + } + + f32 head_angleX_min = daNpcShad_Param_c::m.common.head_angleX_min; + f32 head_angleX_max = daNpcShad_Param_c::m.common.head_angleX_max; + f32 head_angleY_min = daNpcShad_Param_c::m.common.head_angleY_min; + f32 head_angleY_max = daNpcShad_Param_c::m.common.head_angleY_max; + + s16 sVar1 = mCurAngle.y - mOldAngle.y; + cXyz spf0[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; + csXyz* local_fc = unk_inline(); + cXyz sp108; + + switch (field_0xe18) { + case LOOK_RESET: + iVar1 = 1; + break; + + case LOOK_PLAYER: + case LOOK_PLAYER_TALK: + player = daPy_getPlayerActorClass(); + break; + + case LOOK_ACTOR: + player = field_0xca8; + break; + + case LOOK_ATTN: + break; + } + + if (field_0xe18 == LOOK_ATTN) { + mLookat.setAttnPos(&mLookPos); + } else if (player != NULL) { + mLookPos = player->attention_info.position; + + if (field_0xe18 != LOOK_PLAYER && field_0xe18 != 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, spf0); + mLookat.calc(this, model->getBaseTRMtx(), (csXyz**)local_fc, iVar1, sVar1, FALSE); } /* 80AE153C-80AE1544 00941C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpcShad_cFv */ BOOL daNpcShad_c::drawDbgInfo() { - return false; -} - -/* 80AE1544-80AE1550 009424 000C+00 1/1 0/0 0/0 .text sinShort__Q25JMath18TSinCosTable<13,f>CFs */ -extern "C" void func_80AE1544(void* _this, s16 param_0) /* const */ { - // NONMATCHING + return FALSE; } /* 80AE2CB8-80AE2CC4 000008 000C+00 1/1 0/0 0/0 .bss @3931 */ @@ -2733,143 +2583,6 @@ static u8 lit_3931[12]; /* 80AE2CC4-80AE2CC8 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ static u8 l_HIO[4]; -/* 80AE1550-80AE1728 009430 01D8+00 0/0 1/0 0/0 .text __sinit_d_a_npc_shad_cpp */ -void __sinit_d_a_npc_shad_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80AE1550, __sinit_d_a_npc_shad_cpp); -#pragma pop - -/* 80AE1728-80AE1770 009608 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 -} - -/* 80AE1770-80AE17AC 009650 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 -} - -/* 80AE17AC-80AE187C 00968C 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 -} - -/* 80AE187C-80AE18B8 00975C 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80AE18B8-80AE18BC 009798 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80AE18BC-80AE18F8 00979C 003C+00 5/5 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80AE18F8-80AE18FC 0097D8 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80AE1B48-80AE1D38 009A28 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */ -// daNpcF_c::daNpcF_c() { -extern "C" void __ct__8daNpcF_cFv() { - // NONMATCHING -} - -/* 80AE1D38-80AE1DA8 009C18 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80AE1DA8-80AE1E04 009C88 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80AE1E04-80AE1E74 009CE4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80AE1E74-80AE1EBC 009D54 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80AE1EBC-80AE1EC0 009D9C 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__8daNpcF_cFv */ -// void daNpcF_c::adjustShapeAngle() { -extern "C" void adjustShapeAngle__8daNpcF_cFv() { - /* empty function */ -} - -/* 80AE1EC0-80AE1EC4 009DA0 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */ -// void daNpcF_c::setCollisions() { -extern "C" void setCollisions__8daNpcF_cFv() { - /* empty function */ -} - -/* 80AE1EC4-80AE1EC8 009DA4 0004+00 1/0 0/0 0/0 .text drawOtherMdls__8daNpcF_cFv */ -// void daNpcF_c::drawOtherMdls() { -extern "C" void drawOtherMdls__8daNpcF_cFv() { - /* empty function */ -} - -/* 80AE1EC8-80AE1F10 009DA8 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80AE1F10-80AE1F70 009DF0 0060+00 1/1 0/0 0/0 .text chkPointInArea__15daTag_EvtArea_cF4cXyz */ -// void daTag_EvtArea_c::chkPointInArea(cXyz param_0) { -extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz() { - // NONMATCHING -} - -/* 80AE1F70-80AE1FB8 009E50 0048+00 2/1 0/0 0/0 .text __dt__17daNpcShad_Param_cFv */ -daNpcShad_Param_c::~daNpcShad_Param_c() { - // NONMATCHING -} - -/* 80AE1FB8-80AE1FC0 009E98 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80AE1FB8() { - // NONMATCHING -} - -/* 80AE1FC0-80AE1FC8 009EA0 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80AE1FC0() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80AE24C0-80AE24C4 0004E4 0004+00 0/0 0/0 0/0 .rodata @7144 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7144 = 40.0f; -COMPILER_STRIP_GATE(0x80AE24C0, &lit_7144); -#pragma pop - -/* 80AE24C4-80AE24C4 0004E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ - /* 80AE2B7C-80AE2B9C -00001 0020+00 1/0 0/0 0/0 .data daNpcShad_MethodTable */ static actor_method_class daNpcShad_MethodTable = { (process_method_func)daNpcShad_Create, From 2b3a12aa940f46ecb5a5889cb689e95eb3ca0bec Mon Sep 17 00:00:00 2001 From: Carter <144170194+carter-ktb21@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:18:45 -0400 Subject: [PATCH 06/11] Fixed nonmatching comments --- src/d/actor/d_a_npc_shad.cpp | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index ba1e203ba80..e04f9d4bbd0 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -874,6 +874,7 @@ void daNpcShad_c::playMotion() { } } +// This is probably incorrect but was the only way I could get the proper order for rodata that is used later in lookat() inline csXyz* daNpcShad_c::unk_inline() { csXyz* local_fc[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; return *local_fc; @@ -1223,7 +1224,6 @@ bool daNpcShad_c::wait_type1(void* param_1) { /* 80ADB428-80ADB628 003308 0200+00 1/0 0/0 0/0 .text wait_type2__11daNpcShad_cFPv */ bool daNpcShad_c::wait_type2(void* param_1) { - // NONMATCHING switch (field_0xe1a) { case 0: setExpression(8, -1.0f); @@ -1294,7 +1294,6 @@ inline void daNpcShad_c::setExpressionTalkAfter() { /* 80ADB628-80ADBEA8 003508 0880+00 2/0 0/0 0/0 .text talk__11daNpcShad_cFPv */ bool daNpcShad_c::talk(void* param_1) { - // NONMATCHING int itemNo, iVar1, iVar2, iVar3; u16 eventID; s16 eventIdx; @@ -1423,7 +1422,6 @@ bool daNpcShad_c::demo(void* param_1) { /* 80ADC3DC-80ADC700 0042BC 0324+00 1/0 0/0 0/0 .text leave__11daNpcShad_cFPv */ bool daNpcShad_c::leave(void* param_1) { - // NONMATCHING cXyz sp28(-6253.387f, 0.0f, 6251.7603f); switch (field_0xe1a) { @@ -1484,7 +1482,6 @@ BOOL daNpcShad_c::EvCut_Introduction(int i_cutIndex) { /* 80ADC800-80ADCAD8 0046E0 02D8+00 1/0 0/0 0/0 .text EvCut_Meeting__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); if (piVar1 == NULL) { @@ -1544,7 +1541,6 @@ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { /* 80ADCAD8-80ADD720 0049B8 0C48+00 1/0 0/0 0/0 .text EvCut_ToChantSpell1__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); @@ -1687,7 +1683,6 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { /* 80ADD720-80ADE47C 005600 0D5C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = dComIfGp_getPEvtManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); fopAc_ac_c* actor; @@ -1850,7 +1845,6 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { /* 80ADE47C-80ADE5F8 00635C 017C+00 1/0 0/0 0/0 .text EvCut_ToChantSpell2Skip__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_ToChantSpell2Skip(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); @@ -1888,7 +1882,6 @@ inline void daNpcShad_c::setLookObliquenessUp() { /* 80ADE5F8-80ADED68 0064D8 0770+00 3/0 0/0 0/0 .text EvCut_DiscoveryCannon__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); cXyz* pcVar1; @@ -2008,7 +2001,6 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { /* 80ADED68-80ADEEE4 006C48 017C+00 1/0 0/0 0/0 .text EvCut_DiscoveryCannonSkip__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_DiscoveryCannonSkip(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); cXyz* pos; @@ -2048,7 +2040,6 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannonSkip(int i_cutIndex) { /* 80ADEEE4-80ADF810 006DC4 092C+00 1/0 0/0 0/0 .text EvCut_Disappear__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); cXyz* pos; @@ -2208,7 +2199,6 @@ BOOL daNpcShad_c::EvCut_DisappearSkip(int i_cutIndex) { /* 80ADF8DC-80ADFB70 0077BC 0294+00 1/0 0/0 0/0 .text EvCut_CallBack__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_CallBack(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); cXyz sp30; @@ -2260,7 +2250,6 @@ BOOL daNpcShad_c::EvCut_CallBack(int i_cutIndex) { /* 80ADFB70-80ADFE74 007A50 0304+00 1/0 0/0 0/0 .text EvCut_WiretapSponsor__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_WiretapSponsor(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); fopAc_ac_c* actors[4] = {mActorMngr[2].getActorP(), mActorMngr[1].getActorP(), this, mActorMngr[3].getActorP()}; int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); @@ -2310,7 +2299,6 @@ BOOL daNpcShad_c::EvCut_WiretapSponsor(int i_cutIndex) { /* 80ADFE74-80AE0104 007D54 0290+00 2/0 0/0 0/0 .text EvCut_WiretapEntrant__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_WiretapEntrant(int i_cutIndex) { - // NONMATCHING dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* prm = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); From 3fcd6be1d465f10e3f856f0cfb57424cc053a136 Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Mon, 28 Jul 2025 21:48:46 -0400 Subject: [PATCH 07/11] enum work --- include/d/actor/d_a_npc_shad.h | 103 ++++- src/d/actor/d_a_npc_shad.cpp | 787 +++++++++++++++++++-------------- 2 files changed, 556 insertions(+), 334 deletions(-) diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 8068ca5e724..9069e3403cb 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -29,6 +29,101 @@ public: typedef bool (daNpcShad_c::*ActionFn)(void*); typedef BOOL (daNpcShad_c::*EventFn)(int); + enum Animation { + /* 0x00 */ ANM_NONE, + /* 0x01 */ ANM_F_TALK_A, + /* 0x02 */ ANM_F_HAPPY, + /* 0x03 */ ANM_F_ANGER, + /* 0x04 */ ANM_F_DISCOURAGED, + /* 0x05 */ ANM_F_CHANT, + /* 0x06 */ ANM_F_KOMON, + /* 0x07 */ ANM_F_SURPRISE, + /* 0x08 */ ANM_FH_SURPRISE, + /* 0x09 */ ANM_FH_KOMON, + /* 0x0A */ ANM_FH_HAPPY, + /* 0x0B */ ANM_FH_ANGER, + /* 0x0C */ ANM_FH_DISCOURAGED, + /* 0x0D */ ANM_WAIT_A, + /* 0x0E */ ANM_TALK_A, + /* 0x0F */ ANM_STEP, + /* 0x10 */ ANM_STEPB, + /* 0x11 */ ANM_BOOK_WAIT, + /* 0x12 */ ANM_BOOK_TALK_A, + /* 0x13 */ ANM_HI, + /* 0x14 */ ANM_RUN_A, + /* 0x15 */ ANM_WALK_A, + /* 0x16 */ ANM_SIT_A, + /* 0x17 */ ANM_LOOKBACK, + /* 0x18 */ ANM_CHANT, + /* 0x19 */ ANM_DISCOURAGED, + /* 0x1A */ ANM_DISCOURAGED_WAIT, + /* 0x1B */ ANM_SITTALK_A, + /* 0x1C */ ANM_LOOK, + /* 0x1D */ ANM_LOOK_WAIT, + /* 0x1E */ ANM_SAD_WALK, + /* 0x1F */ ANM_LOOKUP, + /* 0x20 */ ANM_TAKE_KOMON, + /* 0x21 */ ANM_READ_KOMON, + /* 0x22 */ ANM_SURPRISE, + /* 0x23 */ ANM_SURPRISE_WAIT, + }; + + enum Expression { + /* 0x0 */ EXPR_TALK_A, + /* 0x1 */ EXPR_HAPPY, + /* 0x2 */ EXPR_ANGER, + /* 0x3 */ EXPR_DISCOURAGED, + /* 0x4 */ EXPR_KOMON, + /* 0x5 */ EXPR_SURPRISE, + /* 0x6 */ EXPR_H_SURPRISE, + /* 0x7 */ EXPR_H_KOMON, + /* 0x8 */ EXPR_H_HAPPY, + /* 0x9 */ EXPR_H_ANGER, + /* 0xA */ EXPR_H_DISCOURAGED, + /* 0xB */ EXPR_CHANT, + /* 0xC */ EXPR_NONE, + }; + + enum Expression_BTP { + /* 0x0 */ EXPR_BTP_SHAD, + /* 0x1 */ EXPR_BTP_F_ANGER, + /* 0x2 */ EXPR_BTP_F_DISCOURAGED, + /* 0x3 */ EXPR_BTP_F_HAPPY, + /* 0x4 */ EXPR_BTP_F_KOMON, + /* 0x5 */ EXPR_BTP_F_SURPRISE, + /* 0x6 */ EXPR_BTP_FH_SURPRISE, + /* 0x7 */ EXPR_BTP_FH_KOMON, + /* 0x8 */ EXPR_BTP_FH_ANGER, + /* 0x9 */ EXPR_BTP_FH_DISCOURAGED, + /* 0xA */ EXPR_BTP_FH_HAPPY + }; + + enum Motion { + /* 0x00 */ MOT_WAIT_A, + /* 0x01 */ MOT_BOOK_TALK_A, + /* 0x02 */ MOT_BOOK_WAIT, + /* 0x03 */ MOT_HI, + /* 0x04 */ MOT_SIT_A, + /* 0x05 */ MOT_LOOKBACK, + /* 0x06 */ MOT_DISCOURAGED, + /* 0x07 */ MOT_DISCOURAGED_WAIT, + /* 0x08 */ MOT_TALK_A, + /* 0x09 */ MOT_SITTALK_A, + /* 0x0A */ MOT_LOOK, + /* 0x0B */ MOT_TAKE_KOMON, + /* 0x0C */ MOT_READ_KOMON, + /* 0x0D */ MOT_LOOK_WAIT, + /* 0x0E */ MOT_SURPRISE, + /* 0x0F */ MOT_SURPRISE_WAIT, + /* 0x10 */ MOT_LOOKUP, + /* 0x11 */ MOT_SAD_WALK, + /* 0x12 */ MOT_CHANT, + /* 0x13 */ MOT_RUN_A, + /* 0x14 */ MOT_WALK_A, + /* 0x15 */ MOT_STEP, + /* 0x16 */ MOT_STEPB, + }; + /* 80AD820C */ daNpcShad_c() : daNpcF_c() {} /* 80AD8420 */ ~daNpcShad_c(); /* 80AD8620 */ cPhs__Step Create(); @@ -47,7 +142,7 @@ public: /* 80AD9E04 */ inline bool getPathPoint(u8, int, Vec*); /* 80AD9E90 */ inline bool isSneaking(); /* 80AD9F00 */ bool wait_type0(void*); - /* 80ADA630 */ void setMotion(int, f32, int); + /* 80ADA630 */ void setMotion(int, f32, BOOL); /* 80ADA674 */ void setExpression(int, f32); /* 80ADA6A0 */ bool wait_type1(void*); /* 80ADB428 */ bool wait_type2(void*); @@ -125,8 +220,8 @@ public: } private: - /* 0xB48 */ J3DModel* field_0xb48; - /* 0xB4C */ J3DModel* field_0xb4c; + /* 0xB48 */ J3DModel* mBookKnifeModel; + /* 0xB4C */ J3DModel* mKomonshoModel; /* 0xB50 */ Z2Creature mSound; /* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm; /* 0xBE4 */ daNpcF_Lookat_c mLookat; @@ -141,7 +236,7 @@ private: /* 0xE10 */ int field_0xe10; /* 0xE14 */ s16 field_0xe14; /* 0xE16 */ s16 field_0xe16; - /* 0xE18 */ s16 field_0xe18; + /* 0xE18 */ s16 mLookMode; /* 0xE1A */ u16 field_0xe1a; /* 0xE1C */ s16 field_0xe1c; /* 0xE1E */ u8 field_0xe1e; diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index e04f9d4bbd0..96ddcf806a9 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -9,70 +9,197 @@ #include "d/actor/d_a_tag_evtarea.h" #include "d/d_msg_object.h" +enum Shad_RES_File_ID { + /* BCK */ + /* 0x07 */ BCK_SHAD_F_DISCOURAGED = 0x7, + /* 0x08 */ BCK_SHAD_F_HAPPY, + /* 0x09 */ BCK_SHAD_F_TALK_A, + /* 0x0A */ BCK_SHAD_FH_DISCOURAGED, + /* 0x0B */ BCK_SHAD_FH_HAPPY, + /* 0x0C */ BCK_SHAD_RUN_A, + + /* BMDR */ + /* 0x0F */ BMDR_SHAD = 0xF, + /* 0x10 */ BMDR_SHAD_BOOK_KNIFE, + + /* BTK */ + /* 0x13 */ BTK_SHAD = 0x13, + + /* BTP */ + /* 0x16 */ BTP_SHAD = 0x16, + /* 0x17 */ BTP_SHAD_F_DISCOURAGED, + /* 0x18 */ BTP_SHAD_F_HAPPY, + /* 0x19 */ BTP_SHAD_FH_DISCOURAGED, + /* 0x1A */ BTP_SHAD_FH_HAPPY, + + /* EVT */ + /* 0x1D */ EVT_EVENT_LIST = 0x1D, +}; + +enum Shad1_RES_File_ID { + /* BCK */ + /* 0x06 */ BCK_SHAD_BOOK_TALK_A = 0x6, + /* 0x07 */ BCK_SHAD_BOOK_WAIT, + /* 0x08 */ BCK_SHAD_CHANT, + /* 0x09 */ BCK_SHAD_DISCOURAGED, + /* 0x0A */ BCK_SHAD_DISCOURAGED_WAIT, + /* 0x0B */ BCK_SHAD_F_ANGER, + /* 0x0C */ BCK_SHAD_F_CHANT, + /* 0x0D */ BCK_SHAD_F_KOMON, + /* 0x0E */ BCK_SHAD_F_SURPRISE, + /* 0x0F */ BCK_SHAD_FH_ANGER, + /* 0x10 */ BCK_SHAD_FH_KOMON, + /* 0x11 */ BCK_SHAD_FH_SURPRISE, + /* 0x12 */ BCK_SHAD_HI, + /* 0x13 */ BCK_SHAD_LOOK, + /* 0x14 */ BCK_SHAD_LOOK_WAIT, + /* 0x15 */ BCK_SHAD_LOOKBACK, + /* 0x16 */ BCK_SHAD_READ_KOMON, + /* 0x17 */ BCK_SHAD_SAD_WALK, + /* 0x18 */ BCK_SHAD_STEP, + /* 0x19 */ BCK_SHAD_STEPB, + /* 0x1A */ BCK_SHAD_SURPRISE, + /* 0x1B */ BCK_SHAD_SURPRISE_WAIT, + /* 0x1C */ BCK_SHAD_TAKE_KOMON, + /* 0x1D */ BCK_SHAD_TALK_A, + /* 0x1E */ BCK_SHAD_WAIT_A, + /* 0x1F */ BCK_SHAD_WALK_A, + + /* BMDR */ + /* 0x22 */ BMDR_SHAD_KOMONSHO = 0x22, + + /* BTK */ + /* 0x25 */ BTK_SHAD_DISCOURAGED = 0x25, + /* 0x26 */ BTK_SHAD_DISCOURAGED_WAIT, + /* 0x27 */ BTK_SHAD_READ_KOMON, + /* 0x28 */ BTK_SHAD_TAKE_KOMON, + + /* BTP */ + /* 0x2B */ BTP_SHAD_F_ANGER = 0x2B, + /* 0x2C */ BTP_SHAD_F_CHANT, + /* 0x2D */ BTP_SHAD_F_KOMON, + /* 0x2E */ BTP_SHAD_F_SURPRISE, + /* 0x2F */ BTP_SHAD_FH_ANGER, + /* 0x30 */ BTP_SHAD_FH_KOMON, + /* 0x31 */ BTP_SHAD_FH_SURPRISE, +}; + +enum Shad2_RES_File_ID { + /* BCK */ + /* 0x3 */ BCK_SHAD_SIT_A = 0x3, + /* 0x4 */ BCK_SHAD_SITTALK_A, +}; + +enum Shad3_RES_File_ID { + /* BCK */ + /* 0x3 */ BCK_SHAD_LOOKUP = 0x3, +}; + +enum arcIdx { + /* 0x0 */ SHAD, + /* 0x1 */ SHAD1, + /* 0x2 */ SHAD2, + /* 0x3 */ SHAD3, +}; + +enum Joint { + /* 0x00 */ JNT_CENTER, + /* 0x01 */ JNT_BACKBONE1, + /* 0x02 */ JNT_BACKBONE2, + /* 0x03 */ JNT_COLLOR, + /* 0x04 */ JNT_NECK, + /* 0x05 */ JNT_HEAD, + /* 0x06 */ JNT_CHIN, + /* 0x07 */ JNT_MAYUL, + /* 0x08 */ JNT_MAYUR, + /* 0x09 */ JNT_MOUTH, + /* 0x0A */ JNT_NECKTIE, + /* 0x0B */ JNT_SHOULDERL, + /* 0x0C */ JNT_ARML1, + /* 0x0D */ JNT_ARML2, + /* 0x0E */ JNT_HANDL, + /* 0x0F */ JNT_FINGERL, + /* 0x10 */ JNT_THUMBL, + /* 0x11 */ JNT_SHOULDERR, + /* 0x12 */ JNT_ARMR1, + /* 0x13 */ JNT_ARMR2, + /* 0x14 */ JNT_HANDR, + /* 0x15 */ JNT_FINGERR, + /* 0x16 */ JNT_THUMBR, + /* 0x17 */ JNT_WAIST, + /* 0x18 */ JNT_BOOK, + /* 0x19 */ JNT_LEGL1, + /* 0x1A */ JNT_LEGL2, + /* 0x1B */ JNT_FOOTL, + /* 0x1C */ JNT_LEGR1, + /* 0x1D */ JNT_LEGR2, + /* 0x1E */ JNT_FOOTR, +}; + UNK_REL_DATA /* 80AE2640-80AE27F0 000020 01B0+00 1/2 0/0 0/0 .data l_bckGetParamList */ static daNpc_GetParam2 l_bckGetParamList[36] = { - {-1, 2, 0}, - {9, 0, 0}, - {8, 0, 0}, - {0xB, 0, 1}, - {7, 0, 0}, - {0xC, 2, 1}, - {0xD, 0, 1}, - {0xE, 0, 1}, - {0x11, 2, 1}, - {0x10, 2, 1}, - {0xB, 2, 0}, - {0xF, 2, 1}, - {0xA, 2, 0}, - {0x1E, 2, 1}, - {0x1D, 0, 1}, - {0x18, 0, 1}, - {0x19, 2, 1}, - {7, 2, 1}, - {6, 0, 1}, - {0x12, 0, 1}, - {0xC, 2, 0}, - {0x1F, 2, 1}, - {3, 2, 2}, - {0x15, 0, 1}, - {8, 2, 1}, - {9, 0, 1}, - {0xA, 2, 1}, - {4, 0, 2}, - {0x13, 0, 1}, - {0x14, 2, 1}, - {0x17, 2, 1}, - {3, 2, 3}, - {0x1C, 0, 1}, - {0x16, 2, 1}, - {0x1A, 0, 1}, - {0x1B, 2, 1}, + {-1, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BCK_SHAD_F_TALK_A, J3DFrameCtrl::EMode_NONE, SHAD}, + {BCK_SHAD_F_HAPPY, J3DFrameCtrl::EMode_NONE, SHAD}, + {BCK_SHAD_F_ANGER, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_F_DISCOURAGED, J3DFrameCtrl::EMode_NONE, SHAD}, + {BCK_SHAD_F_CHANT, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_F_KOMON, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_F_SURPRISE, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_FH_SURPRISE, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_FH_KOMON, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_FH_HAPPY, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BCK_SHAD_FH_ANGER, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_FH_DISCOURAGED, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BCK_SHAD_WAIT_A, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_TALK_A, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_STEP, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_STEPB, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_BOOK_WAIT, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_BOOK_TALK_A, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_HI, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_RUN_A, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BCK_SHAD_WALK_A, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_SIT_A, J3DFrameCtrl::EMode_LOOP, SHAD2}, + {BCK_SHAD_LOOKBACK, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_CHANT, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_DISCOURAGED, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_DISCOURAGED_WAIT, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_SITTALK_A, J3DFrameCtrl::EMode_NONE, SHAD2}, + {BCK_SHAD_LOOK, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_LOOK_WAIT, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_SAD_WALK, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_LOOKUP, J3DFrameCtrl::EMode_LOOP, SHAD3}, + {BCK_SHAD_TAKE_KOMON, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_READ_KOMON, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BCK_SHAD_SURPRISE, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BCK_SHAD_SURPRISE_WAIT, J3DFrameCtrl::EMode_LOOP, SHAD1}, }; /* 80AE27F0-80AE2874 0001D0 0084+00 1/1 0/0 0/0 .data l_btpGetParamList */ static daNpc_GetParam2 l_btpGetParamList[11] = { - {0x16, 2, 0}, - {0x2B, 0, 1}, - {0x17, 0, 0}, - {0x18, 0, 0}, - {0x2D, 0, 1}, - {0x2E, 0, 1}, - {0x31, 2, 1}, - {0x30, 2, 1}, - {0x2F, 2, 1}, - {0x19, 2, 0}, - {0x1A, 2, 0}, + {BTP_SHAD, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BTP_SHAD_F_ANGER, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BTP_SHAD_F_DISCOURAGED, J3DFrameCtrl::EMode_NONE, SHAD}, + {BTP_SHAD_F_HAPPY, J3DFrameCtrl::EMode_NONE, SHAD}, + {BTP_SHAD_F_KOMON, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BTP_SHAD_F_SURPRISE, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BTP_SHAD_FH_SURPRISE, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BTP_SHAD_FH_KOMON, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BTP_SHAD_FH_ANGER, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BTP_SHAD_FH_DISCOURAGED, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BTP_SHAD_FH_HAPPY, J3DFrameCtrl::EMode_LOOP, SHAD}, }; /* 80AE2874-80AE28B0 000254 003C+00 1/2 0/0 0/0 .data l_btkGetParamList */ static daNpc_GetParam2 l_btkGetParamList[5] = { - {0x13, 2, 0}, - {0x25, 0, 1}, - {0x26, 2, 1}, - {0x28, 0, 1}, - {0x27, 2, 1}, + {BTK_SHAD, J3DFrameCtrl::EMode_LOOP, SHAD}, + {BTK_SHAD_DISCOURAGED, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BTK_SHAD_DISCOURAGED_WAIT, J3DFrameCtrl::EMode_LOOP, SHAD1}, + {BTK_SHAD_TAKE_KOMON, J3DFrameCtrl::EMode_NONE, SHAD1}, + {BTK_SHAD_READ_KOMON, J3DFrameCtrl::EMode_LOOP, SHAD1}, }; /* 80AE28B0-80AE28BC 000290 000C+00 1/0 0/0 0/0 .data l_loadRes_SHAD0 */ @@ -256,7 +383,7 @@ cPhs__Step daNpcShad_c::Create() { return cPhs_ERROR_e; } - fopAcM_OnStatus(this, 0x4000); + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_004000); mMode = 2; } } @@ -340,7 +467,7 @@ cPhs__Step daNpcShad_c::Create() { /* 80AD8B60-80AD8F24 000A40 03C4+00 1/1 0/0 0/0 .text CreateHeap__11daNpcShad_cFv */ int daNpcShad_c::CreateHeap() { - J3DModelData* mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[0], 0xF)); + J3DModelData* mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[0], BMDR_SHAD)); JUT_ASSERT(483, 0 != mdlData_p); mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11020284); @@ -364,46 +491,46 @@ int daNpcShad_c::CreateHeap() { return 0; } - field_0xb48 = NULL; + mBookKnifeModel = NULL; if (mMode == 1 || mMode == 2) { - mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[0], 0x10)); + mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[0], BMDR_SHAD_BOOK_KNIFE)); JUT_ASSERT(518, mdlData_p != 0); - field_0xb48 = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); - if (field_0xb48 == NULL) { + mBookKnifeModel = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); + if (mBookKnifeModel == NULL) { return 0; } if (mMode == 2) { - mdlData_p = field_0xb48->getModelData(); + mdlData_p = mBookKnifeModel->getModelData(); mdlData_p->getMaterialNodePointer(1)->getShape()->hide(); } } - field_0xb4c = NULL; + mKomonshoModel = NULL; if (mMode == 1) { - mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[1], 0x22)); + mdlData_p = static_cast(dComIfG_getObjectRes(l_arcNames[1], BMDR_SHAD_KOMONSHO)); JUT_ASSERT(530, mdlData_p != 0); - field_0xb4c = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); - if (field_0xb4c == NULL) { + mKomonshoModel = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); + if (mKomonshoModel == NULL) { return 0; } } - if (!setExpressionAnm(1, false)) { + if (!setExpressionAnm(1, false)) { // BCK_SHAD_F_TALK_A return 0; } switch (mMode) { case 0: - setMotionAnm(0x16, 0.0f); + setMotionAnm(0x16, 0.0f); // BCK_SHAD_SIT_A break; case 1: - setMotionAnm(0xD, 0.0f); + setMotionAnm(0xD, 0.0f); // BCK_SHAD_WAIT_A break; case 2: - setMotionAnm(0x1F, 0.0f); + setMotionAnm(0x1F, 0.0f); // BCK_SHAD_LOOKUP break; default: @@ -435,18 +562,18 @@ int daNpcShad_c::Draw() { mpMorf->getModel()->getModelData()->getMaterialNodePointer(1)->setMaterialAnm(mpMatAnm); draw(FALSE, FALSE, daNpcShad_Param_c::m.common.real_shadow_size, NULL, FALSE); - if (field_0xb48 != NULL) { - g_env_light.setLightTevColorType_MAJI(field_0xb48, &tevStr); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(0xF)); - field_0xb48->setBaseTRMtx(mDoMtx_stack_c::get()); - mDoExt_modelUpdateDL(field_0xb48); + if (mBookKnifeModel != NULL) { + g_env_light.setLightTevColorType_MAJI(mBookKnifeModel, &tevStr); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_FINGERL)); + mBookKnifeModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoExt_modelUpdateDL(mBookKnifeModel); } - if (field_0xb4c != NULL && (mMotion == 0xB || mMotion == 0xC)) { - g_env_light.setLightTevColorType_MAJI(field_0xb4c, &tevStr); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(0x15)); - field_0xb4c->setBaseTRMtx(mDoMtx_stack_c::get()); - mDoExt_modelUpdateDL(field_0xb4c); + if (mKomonshoModel != NULL && (mMotion == MOT_TAKE_KOMON || mMotion == MOT_READ_KOMON)) { + g_env_light.setLightTevColorType_MAJI(mKomonshoModel, &tevStr); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_FINGERR)); + mKomonshoModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoExt_modelUpdateDL(mKomonshoModel); } return 1; @@ -455,31 +582,31 @@ int daNpcShad_c::Draw() { /* 80AD9280-80AD944C 001160 01CC+00 1/1 0/0 0/0 .text ctrlJoint__11daNpcShad_cFP8J3DJointP8J3DModel */ int daNpcShad_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { int jntNo = i_joint->getJntNo(); - int iVar1[3] = {1, 4, 5}; + int lookatJoints[3] = {JNT_BACKBONE1, JNT_NECK, JNT_HEAD}; - if (jntNo == 0) { - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); + if (jntNo == JNT_CENTER) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE1)); mDoMtx_stack_c::multVecZero(&mLookatPos[0]); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK)); mDoMtx_stack_c::multVecZero(&mLookatPos[1]); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(5)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD)); mDoMtx_stack_c::multVecZero(&mLookatPos[2]); } mDoMtx_stack_c::copy(i_model->getAnmMtx(jntNo)); switch (jntNo) { - case 1: - case 4: - case 5: - setLookatMtx(jntNo, iVar1, daNpcShad_Param_c::m.common.neck_rotation_ratio); + case JNT_BACKBONE1: + case JNT_NECK: + case JNT_HEAD: + setLookatMtx(jntNo, lookatJoints, daNpcShad_Param_c::m.common.neck_rotation_ratio); break; } i_model->setAnmMtx(jntNo, mDoMtx_stack_c::get()); MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); - if ((jntNo == 5 || jntNo == 9) && (mAnmFlags & 0x100) != 0) { + if ((jntNo == JNT_HEAD || jntNo == JNT_MOUTH) && (mAnmFlags & ANM_PLAY_BCK) != 0) { J3DAnmTransform* anmTransform = mBckAnm.getBckAnm(); mBckAnm.changeBckOnly(mpMorf->getAnm()); mpMorf->changeAnm(anmTransform); @@ -524,55 +651,55 @@ bool daNpcShad_c::setExpressionAnm(int i_idx, bool i_modify) { switch (i_idx) { case 0: - bVar1 = setExpressionBtp(0); + bVar1 = setExpressionBtp(0); // BTP_SHAD break; case 1: - bVar1 = setExpressionBtp(0); + bVar1 = setExpressionBtp(0); // BTP_SHAD break; case 2: - bVar1 = setExpressionBtp(3); + bVar1 = setExpressionBtp(3); // BTP_SHAD_F_HAPPY break; case 3: - bVar1 = setExpressionBtp(1); + bVar1 = setExpressionBtp(1); // BTP_SHAD_F_ANGER break; case 4: - bVar1 = setExpressionBtp(2); + bVar1 = setExpressionBtp(2); // BTP_SHAD_F_DISCOURAGED break; case 5: - bVar1 = setExpressionBtp(0); + bVar1 = setExpressionBtp(0); // BTP_SHAD break; case 6: - bVar1 = setExpressionBtp(4); + bVar1 = setExpressionBtp(4); // BTP_SHAD_F_KOMON break; case 7: - bVar1 = setExpressionBtp(5); + bVar1 = setExpressionBtp(5); // BTP_SHAD_F_SURPRISE break; case 8: - bVar1 = setExpressionBtp(6); + bVar1 = setExpressionBtp(6); // BTP_SHAD_FH_SURPRISE break; case 9: - bVar1 = setExpressionBtp(7); + bVar1 = setExpressionBtp(7); // BTP_SHAD_FH_KOMON break; case 10: - bVar1 = setExpressionBtp(10); + bVar1 = setExpressionBtp(10); // BTP_SHAD_FH_HAPPY break; case 11: - bVar1 = setExpressionBtp(8); + bVar1 = setExpressionBtp(8); // BTP_SHAD_FH_ANGER break; case 12: - bVar1 = setExpressionBtp(9); + bVar1 = setExpressionBtp(9); // BTP_SHAD_FH_DISCOURAGED break; default: @@ -588,7 +715,7 @@ bool daNpcShad_c::setExpressionAnm(int i_idx, bool i_modify) { } if (setBckAnm(anmTransform, 1.0f, i_attr, 0, -1, i_modify)) { - mAnmFlags |= 0x140; + mAnmFlags |= ANM_PLAY_BCK | ANM_PAUSE_BCK; mExpressionLoops = 0; return true; } @@ -609,10 +736,10 @@ bool daNpcShad_c::setExpressionBtp(int i_idx) { } if (setBtpAnm(anmTexPattern, mpMorf->getModel()->getModelData(), 1.0f, i_attr)) { - mAnmFlags |= 0x280; + mAnmFlags |= ANM_PLAY_BTP | ANM_PAUSE_BTP; if (i_idx == 0) { - mAnmFlags |= 0x800; + mAnmFlags |= ANM_FLAG_800; } return true; @@ -630,7 +757,7 @@ void daNpcShad_c::setMotionAnm(int i_idx, f32 i_morf) { mAnmFlags &= 0xFFFFFFC0; if (anmTransformKey != NULL && setMcaMorfAnm(anmTransformKey, 1.0f, i_morf, i_attr, 0, -1)) { - mAnmFlags |= 9; + mAnmFlags |= ANM_PLAY_MORF | ANM_PAUSE_MORF; mMotionLoops = 0; } @@ -658,7 +785,7 @@ void daNpcShad_c::setMotionAnm(int i_idx, f32 i_morf) { if (anmTextureSRTKey != NULL) { if (setBtkAnm(anmTextureSRTKey, mpMorf->getModel()->getModelData(), 1.0f, i_attr)) { - mAnmFlags |= 0x12; + mAnmFlags |= ANM_PLAY_BTK | ANM_PAUSE_BTK; } } } @@ -676,7 +803,7 @@ void daNpcShad_c::reset() { field_0xe0c = 0; field_0xe10 = 0; mActionFn = NULL; - field_0xe18 = -1; + mLookMode = -1; field_0xe1a = 0; field_0xe1e = 1; field_0xe1f = 0; @@ -711,7 +838,7 @@ void daNpcShad_c::reset() { mMotionMorfOverride = 0.0f; if (isSneaking()) { - fopAcM_OnStatus(this, 0x4000); + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_004000); } setWaitAction(); @@ -764,34 +891,34 @@ inline bool daNpcShad_c::isSneaking() { /* 80AE0B58-80AE0ED0 008A38 0378+00 1/1 0/0 0/0 .text playExpression__11daNpcShad_cFv */ void daNpcShad_c::playExpression() { - daNpcF_anmPlayData dat0 = {0x1, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat0[1] = {&dat0}; - daNpcF_anmPlayData dat1a = {0x2, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat1b = {0xA, 0.0f, 0}; + daNpcF_anmPlayData dat1a = {ANM_F_HAPPY, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat1b = {ANM_FH_HAPPY, 0.0f, 0}; daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b}; - daNpcF_anmPlayData dat2a = {0x3, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat2b = {0xB, 0.0f, 0}; + daNpcF_anmPlayData dat2a = {ANM_F_ANGER, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat2b = {ANM_FH_ANGER, 0.0f, 0}; daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b}; - daNpcF_anmPlayData dat3a = {0x4, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat3b = {0xC, 0.0f, 0}; + daNpcF_anmPlayData dat3a = {ANM_F_DISCOURAGED, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat3b = {ANM_FH_DISCOURAGED, 0.0f, 0}; daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b}; - daNpcF_anmPlayData dat4 = {0x6, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat4 = {ANM_F_KOMON, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat4[1] = {&dat4}; - daNpcF_anmPlayData dat5 = {0x7, 0.0f, 0}; + daNpcF_anmPlayData dat5 = {ANM_F_SURPRISE, 0.0f, 0}; daNpcF_anmPlayData* pDat5[1] = {&dat5}; - daNpcF_anmPlayData dat6 = {0x8, 0.0f, 0}; + daNpcF_anmPlayData dat6 = {ANM_FH_SURPRISE, 0.0f, 0}; daNpcF_anmPlayData* pDat6[1] = {&dat6}; - daNpcF_anmPlayData dat7 = {0x9, 0.0f, 0}; + daNpcF_anmPlayData dat7 = {ANM_FH_KOMON, 0.0f, 0}; daNpcF_anmPlayData* pDat7[1] = {&dat7}; - daNpcF_anmPlayData dat8 = {0xA, 0.0f, 0}; + daNpcF_anmPlayData dat8 = {ANM_FH_HAPPY, 0.0f, 0}; daNpcF_anmPlayData* pDat8[1] = {&dat8}; - daNpcF_anmPlayData dat9 = {0xB, 0.0f, 0}; + daNpcF_anmPlayData dat9 = {ANM_FH_ANGER, 0.0f, 0}; daNpcF_anmPlayData* pDat9[1] = {&dat9}; - daNpcF_anmPlayData dat10 = {0xC, 0.0f, 0}; + daNpcF_anmPlayData dat10 = {ANM_FH_DISCOURAGED, 0.0f, 0}; daNpcF_anmPlayData* pDat10[1] = {&dat10}; - daNpcF_anmPlayData dat11 = {0x5, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat11 = {ANM_F_CHANT, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat11[1] = {&dat11}; - daNpcF_anmPlayData dat12 = {0x0, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat12 = {ANM_NONE, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat12[1] = {&dat12}; daNpcF_anmPlayData** ppDat[13] = { pDat0, pDat1, pDat2, pDat3, pDat4, @@ -806,60 +933,60 @@ void daNpcShad_c::playExpression() { /* 80AE04D8-80AE0B58 0083B8 0680+00 1/1 0/0 0/0 .text playMotion__11daNpcShad_cFv */ void daNpcShad_c::playMotion() { - daNpcF_anmPlayData dat0 = {0xD, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat0[1] = {&dat0}; - daNpcF_anmPlayData dat1a = {0x12, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat1b = {0x11, 0.0f, 0}; + daNpcF_anmPlayData dat1a = {ANM_BOOK_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat1b = {ANM_BOOK_WAIT, 0.0f, 0}; daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b}; - daNpcF_anmPlayData dat2 = {0x11, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat2 = {ANM_BOOK_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat2[1] = {&dat2}; - daNpcF_anmPlayData dat3a = {0x13, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat3b = {0xD, 0.0f, 0}; + daNpcF_anmPlayData dat3a = {ANM_HI, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat3b = {ANM_WAIT_A, 0.0f, 0}; daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b}; - daNpcF_anmPlayData dat4 = {0x16, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat4 = {ANM_SIT_A, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat4[1] = {&dat4}; - daNpcF_anmPlayData dat5a = {0x17, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat5b = {0xD, 0.0f, 0}; + daNpcF_anmPlayData dat5a = {ANM_LOOKBACK, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat5b = {ANM_WAIT_A, 0.0f, 0}; daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b}; - daNpcF_anmPlayData dat6a = {0x19, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat6b = {0x1A, 0.0f, 0}; + daNpcF_anmPlayData dat6a = {ANM_DISCOURAGED, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat6b = {ANM_DISCOURAGED_WAIT, 0.0f, 0}; daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b}; - daNpcF_anmPlayData dat7 = {0x1A, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat7 = {ANM_DISCOURAGED_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat7[1] = {&dat7}; - daNpcF_anmPlayData dat8a = {0xE, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat8b = {0xD, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat8a = {ANM_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat8b = {ANM_WAIT_A, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat8[2] = {&dat8a, &dat8b}; - daNpcF_anmPlayData dat9a = {0x1B, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat9b = {0x16, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat9a = {ANM_SITTALK_A, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat9b = {ANM_SIT_A, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b}; - daNpcF_anmPlayData dat10a = {0x1C, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat10b = {0x1D, 0.0f, 0}; + daNpcF_anmPlayData dat10a = {ANM_LOOK, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat10b = {ANM_LOOK_WAIT, 0.0f, 0}; daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b}; - daNpcF_anmPlayData dat11a = {0x20, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat11b = {0x21, 0.0f, 0}; + daNpcF_anmPlayData dat11a = {ANM_TAKE_KOMON, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat11b = {ANM_READ_KOMON, 0.0f, 0}; daNpcF_anmPlayData* pDat11[2] = {&dat11a, &dat11b}; - daNpcF_anmPlayData dat12 = {0x21, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat12 = {ANM_READ_KOMON, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat12[1] = {&dat12}; - daNpcF_anmPlayData dat13 = {0x1D, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat13 = {ANM_LOOK_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat13[1] = {&dat13}; - daNpcF_anmPlayData dat14a = {0x22, daNpcShad_Param_c::m.common.morf_frame, 1}; - daNpcF_anmPlayData dat14b = {0x23, 0.0f, 0}; + daNpcF_anmPlayData dat14a = {ANM_SURPRISE, daNpcShad_Param_c::m.common.morf_frame, 1}; + daNpcF_anmPlayData dat14b = {ANM_SURPRISE_WAIT, 0.0f, 0}; daNpcF_anmPlayData* pDat14[2] = {&dat14a, &dat14b}; - daNpcF_anmPlayData dat15 = {0x23, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat15 = {ANM_SURPRISE_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat15[1] = {&dat15}; - daNpcF_anmPlayData dat16 = {0x1F, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat16 = {ANM_LOOKUP, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat16[1] = {&dat16}; - daNpcF_anmPlayData dat17 = {0x1E, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat17 = {ANM_SAD_WALK, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat17[1] = {&dat17}; - daNpcF_anmPlayData dat18 = {0x18, daNpcShad_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat18 = {ANM_CHANT, daNpcShad_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat18[1] = {&dat18}; - daNpcF_anmPlayData dat19 = {0x14, 4.0f, 0}; + daNpcF_anmPlayData dat19 = {ANM_RUN_A, 4.0f, 0}; daNpcF_anmPlayData* pDat19[1] = {&dat19}; - daNpcF_anmPlayData dat20 = {0x15, 4.0f, 0}; + daNpcF_anmPlayData dat20 = {ANM_WALK_A, 4.0f, 0}; daNpcF_anmPlayData* pDat20[1] = {&dat20}; - daNpcF_anmPlayData dat21 = {0xF, 4.0f, 0}; + daNpcF_anmPlayData dat21 = {ANM_STEP, 4.0f, 0}; daNpcF_anmPlayData* pDat21[1] = {&dat21}; - daNpcF_anmPlayData dat22 = {0x10, 0.0f, 0}; + daNpcF_anmPlayData dat22 = {ANM_STEPB, 0.0f, 0}; daNpcF_anmPlayData* pDat22[1] = {&dat22}; daNpcF_anmPlayData** ppDat[23] = { pDat0, pDat1, pDat2, pDat3, pDat4, @@ -909,21 +1036,21 @@ inline BOOL daNpcShad_c::chkFindPlayer() { return rv; } -inline void daNpcShad_c::setLookMode(int param_1, fopAc_ac_c* param_2, cXyz* param_3) { - switch (param_1) { - case 0: - case 1: - case 2: - case 3: - case 4: - if (field_0xe18 != param_1 || (daPy_py_c*)param_2 != field_0xca8) { - field_0xe18 = param_1; +inline void daNpcShad_c::setLookMode(int i_lookMode, fopAc_ac_c* param_2, cXyz* param_3) { + switch (i_lookMode) { + case LOOK_NONE: + case LOOK_RESET: + case LOOK_PLAYER: + case LOOK_PLAYER_TALK: + case LOOK_ACTOR: + if (mLookMode != i_lookMode || (daPy_py_c*)param_2 != field_0xca8) { + mLookMode = i_lookMode; field_0xca8 = (daPy_py_c*)param_2; } break; - case 5: - field_0xe18 = param_1; + case LOOK_ATTN: + mLookMode = i_lookMode; field_0xca8 = NULL; if (param_3 != NULL) { @@ -933,16 +1060,16 @@ inline void daNpcShad_c::setLookMode(int param_1, fopAc_ac_c* param_2, cXyz* par } } -inline BOOL daNpcShad_c::step(s16 param_1, int param_2, f32 param_3) { +inline BOOL daNpcShad_c::step(s16 i_targetAngle, int i_motion, f32 i_rate) { if (mTurnMode == 0) { - if (param_2 != -1) { - if ((int)fabsf(cM_sht2d((s16)(param_1 - mCurAngle.y))) > 40) { + if (i_motion != -1) { + if ((int)fabsf(cM_sht2d((s16)(i_targetAngle - mCurAngle.y))) > 40) { setExpression(12, -1.0f); - setMotion(param_2, -1.0f, 0); + setMotion(i_motion, -1.0f, FALSE); } } - mTurnTargetAngle = param_1; + mTurnTargetAngle = i_targetAngle; mTurnAmount = 0; if (mCurAngle.y == mTurnTargetAngle) { @@ -953,7 +1080,7 @@ inline BOOL daNpcShad_c::step(s16 param_1, int param_2, f32 param_3) { shape_angle.y = current.angle.y; mTurnMode++; } else if (mTurnMode == 1) { - if (turn(mTurnTargetAngle, param_3, 0)) { + if (turn(mTurnTargetAngle, i_rate, 0)) { shape_angle.y = current.angle.y; mCurAngle.y = current.angle.y; mOldAngle.y = current.angle.y; @@ -972,8 +1099,8 @@ bool daNpcShad_c::wait_type0(void* param_1) { // NONMATCHING switch (field_0xe1a) { case 0: - setExpression(12, -1.0f); - setMotion(4, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_SIT_A, -1.0f, FALSE); mTurnMode = 0; speedF = 0.0f; field_0xe1a = 2; @@ -981,7 +1108,7 @@ bool daNpcShad_c::wait_type0(void* param_1) { case 2: if (isSneaking()) { - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); } else { if (mActorMngr[0].getActorP() != NULL) { if (!chkFindPlayer()) { @@ -994,13 +1121,13 @@ bool daNpcShad_c::wait_type0(void* param_1) { } if (mActorMngr[0].getActorP() != NULL) { - setLookMode(2, NULL, NULL); + setLookMode(LOOK_PLAYER, NULL, NULL); } else { - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); - if (home.angle.y != mCurAngle.y && step(home.angle.y, 21, 15.0f)) { - setExpression(12, -1.0f); - setMotion(4, -1.0f, 0); + if (home.angle.y != mCurAngle.y && step(home.angle.y, MOT_STEP, 15.0f)) { + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_SIT_A, -1.0f, FALSE); mTurnMode = 0; } } @@ -1047,21 +1174,21 @@ bool daNpcShad_c::wait_type0(void* param_1) { } /* 80ADA630-80ADA674 002510 0044+00 1/0 0/0 0/0 .text setMotion__11daNpcShad_cFifi */ -void daNpcShad_c::setMotion(int i_motion, f32 i_motionMorfOverride, int param_3) { - s16 sVar1 = i_motion; - if ((param_3 != 0 || mMotion != sVar1) && i_motion >= 0 && i_motion < 0x17) { - mMotion = sVar1; - mMotionMorfOverride = i_motionMorfOverride; +void daNpcShad_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) { + s16 motion = i_motion; + if ((i_restart || mMotion != motion) && i_motion >= 0 && i_motion < 0x17) { + mMotion = motion; + mMotionMorfOverride = i_morf; mMotionPrevPhase = -1; mMotionPhase = 0; } } /* 80ADA674-80ADA6A0 002554 002C+00 1/0 0/0 0/0 .text setExpression__11daNpcShad_cFif */ -void daNpcShad_c::setExpression(int i_expression, f32 i_expressionMorfOverride) { +void daNpcShad_c::setExpression(int i_expression, f32 i_morf) { if (i_expression >= 0 && i_expression < 0xD) { mExpression = i_expression; - mExpressionMorfOverride = i_expressionMorfOverride; + mExpressionMorfOverride = i_morf; mExpressionPrevPhase = -1; mExpressionPhase = 0; } @@ -1073,15 +1200,15 @@ bool daNpcShad_c::wait_type1(void* param_1) { switch (field_0xe1a) { case 0: if (daNpcF_chkEvtBit(0x12F) && !daNpcF_chkEvtBit(0x312)) { - setExpression(10, -1.0f); - setMotion(7, -1.0f, 0); + setExpression(EXPR_H_DISCOURAGED, -1.0f); + setMotion(MOT_DISCOURAGED_WAIT, -1.0f, FALSE); } else { - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); } mActorMngr[0].remove(); - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); mTurnMode = 0; speedF = 0.0f; field_0xe1c = fopAcM_searchPlayerAngleY(this); @@ -1090,15 +1217,15 @@ bool daNpcShad_c::wait_type1(void* param_1) { case 2: if (daNpcF_chkEvtBit(0x312)) { - setLookMode(2, NULL, NULL); + setLookMode(LOOK_PLAYER, NULL, NULL); if (mCurAngle.y == field_0xe1c) { if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) { field_0xe1c = fopAcM_searchPlayerAngleY(this); } - } else if (step(field_0xe1c, 22, 30.0f)) { - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + } else if (step(field_0xe1c, MOT_STEPB, 30.0f)) { + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } @@ -1118,15 +1245,15 @@ bool daNpcShad_c::wait_type1(void* param_1) { } } } else if (field_0xe1f != 0) { - setLookMode(2, NULL, NULL); + setLookMode(LOOK_PLAYER, NULL, NULL); if (mCurAngle.y == field_0xe1c) { if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) { field_0xe1c = fopAcM_searchPlayerAngleY(this); } - } else if (step(field_0xe1c, 22, 30.0f)) { - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + } else if (step(field_0xe1c, MOT_STEPB, 30.0f)) { + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } @@ -1143,12 +1270,12 @@ bool daNpcShad_c::wait_type1(void* param_1) { } if (mActorMngr[0].getActorP() != NULL) { - setLookMode(2, NULL, NULL); + setLookMode(LOOK_PLAYER, NULL, NULL); } else { - setLookMode(0, NULL, NULL); - if (home.angle.y != mCurAngle.y && step(home.angle.y, 21, 15.0f)) { - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setLookMode(LOOK_NONE, NULL, NULL); + if (home.angle.y != mCurAngle.y && step(home.angle.y, MOT_STEP, 15.0f)) { + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } } @@ -1226,12 +1353,12 @@ bool daNpcShad_c::wait_type1(void* param_1) { bool daNpcShad_c::wait_type2(void* param_1) { switch (field_0xe1a) { case 0: - setExpression(8, -1.0f); - setMotion(0x10, -1.0f, 0); + setExpression(EXPR_H_HAPPY, -1.0f); + setMotion(MOT_LOOKUP, -1.0f, FALSE); mTurnMode = 0; speedF = 0.0f; mActorMngr[0].entry(daPy_getPlayerActorClass()); - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); field_0xe1a = 2; break; @@ -1272,23 +1399,23 @@ bool daNpcShad_c::wait_type2(void* param_1) { inline void daNpcShad_c::setExpressionTalkAfter() { switch (mExpression) { case 1: - setExpression(8, -1.0f); + setExpression(EXPR_H_HAPPY, -1.0f); break; case 2: - setExpression(9, -1.0f); + setExpression(EXPR_H_ANGER, -1.0f); break; case 3: - setExpression(10, -1.0f); + setExpression(EXPR_H_DISCOURAGED, -1.0f); break; case 4: - setExpression(7, -1.0f); + setExpression(EXPR_H_KOMON, -1.0f); break; default: - setExpression(12, -1.0f); + setExpression(EXPR_NONE, -1.0f); } } @@ -1305,7 +1432,7 @@ bool daNpcShad_c::talk(void* param_1) { mTurnMode = 0; mMsgTimer = 0; speedF = 0.0f; - setLookMode(3, NULL, NULL); + setLookMode(LOOK_PLAYER_TALK, NULL, NULL); field_0xe1a = 2; break; @@ -1336,13 +1463,13 @@ bool daNpcShad_c::talk(void* param_1) { iVar3 = mMsgTimer; if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } } - } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - setMotion(0, -1.0f, 0); + } else if (step(fopAcM_searchPlayerAngleY(this), MOT_STEP, 15.0f)) { + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } break; @@ -1350,7 +1477,7 @@ bool daNpcShad_c::talk(void* param_1) { case 3: field_0xe1f = 1; field_0xe14 = field_0xe16; - setExpression(12, -1.0f); + setExpression(EXPR_NONE, -1.0f); if (!field_0x9ec) { dComIfGp_event_reset(); @@ -1373,8 +1500,8 @@ bool daNpcShad_c::demo(void* param_1) { switch (field_0xe1a) { case 0: - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); field_0xe1a = 2; // fallthrough case 2: @@ -1426,15 +1553,15 @@ bool daNpcShad_c::leave(void* param_1) { switch (field_0xe1a) { case 0: - setExpression(12, -1.0f); - setMotion(0x13, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_RUN_A, -1.0f, FALSE); mTurnMode = 0; speedF = daNpcShad_Param_c::m.traveling_speed; field_0xe1a = 2; break; case 2: - step(cLib_targetAngleY(¤t.pos, &sp28), 21, 15.0f); + step(cLib_targetAngleY(¤t.pos, &sp28), MOT_STEP, 15.0f); if (mAcch.ChkWallHit() || current.pos.abs(sp28) < speedF) { fopAcM_delete(this); @@ -1464,11 +1591,11 @@ BOOL daNpcShad_c::EvCut_Introduction(int i_cutIndex) { switch (*piVar1) { case 0: case 2: - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); return TRUE; case 1: - setLookMode(2, NULL, NULL); + setLookMode(LOOK_PLAYER, NULL, NULL); return TRUE; default: @@ -1491,12 +1618,12 @@ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { if (eventManager->getIsAddvance(i_cutIndex)) { switch (*piVar1) { case 0: - setExpression(12, -1.0f); - setMotion(4, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_SIT_A, -1.0f, FALSE); break; case 1: - setLookMode(2, NULL, NULL); + setLookMode(LOOK_PLAYER, NULL, NULL); break; default: @@ -1510,7 +1637,7 @@ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else { if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); @@ -1525,7 +1652,7 @@ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { actor = NULL; } - setLookMode(4, actor, NULL); + setLookMode(LOOK_ACTOR, actor, NULL); return TRUE; case 1: @@ -1548,26 +1675,26 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { switch (*cutName) { case '0001': case '0002': - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); initTalk(field_0xe14, NULL); break; case '0005': initTalk(field_0xe14, NULL); - setExpression(10, -1.0f); - setMotion(7, -1.0f, 0); + setExpression(EXPR_H_DISCOURAGED, -1.0f); + setMotion(MOT_DISCOURAGED_WAIT, -1.0f, FALSE); break; case '0006': mTurnMode = 0; - setMotion(0x14, -1.0f, 0); + setMotion(MOT_WALK_A, -1.0f, FALSE); break; case '0007': current.pos = home.pos; old.pos = current.pos; speedF = 0.0f; - setMotion(0, -1.0f, 0); + setMotion(MOT_WAIT_A, -1.0f, FALSE); field_0xe1e = 0; break; @@ -1595,7 +1722,7 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -1603,12 +1730,12 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { cXyz sp30; switch (*cutName) { case '0001': - if (!step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { + if (!step(fopAcM_searchPlayerAngleY(this), MOT_STEP, 15.0f)) { break; } - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; return TRUE; @@ -1618,8 +1745,8 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { if (talkProc(NULL, TRUE, NULL)) { return TRUE; } - } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - setMotion(0, -1.0f, 0); + } else if (step(fopAcM_searchPlayerAngleY(this), MOT_STEP, 15.0f)) { + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } break; @@ -1648,17 +1775,17 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { case '0009': if (home.angle.y == mCurAngle.y) { if (talkProc(NULL, TRUE, NULL)) { - if (mMotion != 0x12) { + if (mMotion != MOT_CHANT) { Z2GetAudioMgr()->muteSceneBgm(190, 0.0f); } mSound.startCreatureVoiceLevel(Z2SE_SHAD_V_INCANTATION, -1); - setExpression(11, -1.0f); - setMotion(0x12, -1.0f, 0); + setExpression(EXPR_CHANT, -1.0f); + setMotion(MOT_CHANT, -1.0f, FALSE); return TRUE; } - } else if (step(home.angle.y, 21, 15.0f)) { - setMotion(0, -1.0f, 0); + } else if (step(home.angle.y, MOT_STEP, 15.0f)) { + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } break; @@ -1666,8 +1793,8 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { case '0010': if (talkProc(NULL, TRUE, NULL)) { Z2GetAudioMgr()->unMuteSceneBgm(70); - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); setAngle(fopAcM_searchPlayerAngleY(this)); return TRUE; } @@ -1704,24 +1831,24 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { dComIfGp_getEvent().onSkipFade(); // fallthrough case '0003': - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); // falllthrough case '0005': initTalk(field_0xe14, NULL); - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); break; case '0006': Z2GetAudioMgr()->unMuteSceneBgm(70); initTalk(field_0xe14, NULL); - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); break; case '0007': mTurnMode = 0; - setMotion(0x11, 15.0f, 0); + setMotion(MOT_SAD_WALK, 15.0f, FALSE); break; case '0008': @@ -1730,8 +1857,8 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { old.pos = current.pos; speedF = 0.0f; field_0xe14 = 0x42; - setExpression(10, -1.0f); - setMotion(7, -1.0f, 0); + setExpression(EXPR_H_DISCOURAGED, -1.0f); + setMotion(MOT_DISCOURAGED_WAIT, -1.0f, FALSE); } break; @@ -1769,7 +1896,7 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -1777,9 +1904,9 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { cXyz sp30; switch (*cutName) { case '0002': - if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + if (step(fopAcM_searchPlayerAngleY(this), MOT_STEP, 15.0f)) { + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; return TRUE; } @@ -1790,8 +1917,8 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { if (talkProc(NULL, TRUE, NULL)) { return TRUE; } - } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - setMotion(0, -1.0f, 0); + } else if (step(fopAcM_searchPlayerAngleY(this), MOT_STEP, 15.0f)) { + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } break; @@ -1816,18 +1943,18 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { case '0009': if (home.angle.y == mCurAngle.y) { if (talkProc(NULL, TRUE, NULL)) { - if (mMotion != 0x12) { + if (mMotion != MOT_CHANT) { Z2GetAudioMgr()->muteSceneBgm(190, 0.0f); } mSound.startCreatureVoiceLevel(Z2SE_SHAD_V_INCANTATION_L, -1); - setExpression(11, -1.0f); - setMotion(0x12, -1.0f, 0); + setExpression(EXPR_CHANT, -1.0f); + setMotion(MOT_CHANT, -1.0f, FALSE); return TRUE; } - } else if (step(home.angle.y, 21, 15.0f)) { - setMotion(0, -1.0f, 0); - mTurnMode = 0; + } else if (step(home.angle.y, MOT_STEP, 15.0f)) { + setMotion(MOT_WAIT_A, -1.0f, FALSE); + mTurnMode = MOT_WAIT_A; } break; @@ -1858,8 +1985,8 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2Skip(int i_cutIndex) { current.pos = home.pos; old.pos = current.pos; speedF = 0.0f; - setExpression(10, -1.0f); - setMotion(7, -1.0f, 0); + setExpression(EXPR_H_DISCOURAGED, -1.0f); + setMotion(MOT_DISCOURAGED_WAIT, -1.0f, FALSE); } return TRUE; @@ -1877,15 +2004,15 @@ inline void daNpcShad_c::setLookObliquenessUp() { mDoMtx_stack_c::transS(mLookatPos[2]); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::multVec(&sp18, &sp18); - setLookMode(5, NULL, &sp18); + setLookMode(LOOK_ATTN, NULL, &sp18); } /* 80ADE5F8-80ADED68 0064D8 0770+00 3/0 0/0 0/0 .text EvCut_DiscoveryCannon__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); int* cutName = (int*)eventManager->getMyNowCutName(i_cutIndex); - cXyz* pcVar1; - int* piVar1; + cXyz* pos; + int* angle; if (eventManager->getIsAddvance(i_cutIndex)) { switch (*cutName) { @@ -1893,26 +2020,26 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { dComIfGp_getEvent().startCheckSkipEdge(this); Z2GetAudioMgr()->bgmStreamPrepare(0x200007C); Z2GetAudioMgr()->bgmStreamPlay(); - setExpression(12, 0.0f); - setMotion(0, 0.0f, 0); - setLookMode(2, NULL, NULL); + setExpression(EXPR_NONE, 0.0f); + setMotion(MOT_WAIT_A, 0.0f, FALSE); + setLookMode(LOOK_PLAYER, NULL, NULL); break; case '0003': - pcVar1 = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); - piVar1 = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "ANGLE"); + pos = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + angle = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "ANGLE"); - if (pcVar1 != NULL) { - current.pos = *pcVar1; + if (pos != NULL) { + current.pos = *pos; old.pos = current.pos; } - if (piVar1 != NULL) { - setAngle(*piVar1); + if (angle != NULL) { + setAngle(*angle); } - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; speedF = 0.0f; break; @@ -1920,15 +2047,15 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { case '0005': case '0008': mTurnMode = 0; - setExpression(6, -1.0f); - setMotion(0x14, -1.0f, 0); + setExpression(EXPR_H_SURPRISE, -1.0f); + setMotion(MOT_WALK_A, -1.0f, FALSE); speedF = 5.0f; break; case '0004': case '0006': case '0007': - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); // fallthrough case '0002': dComIfGs_onSaveSwitch(79); @@ -1950,14 +2077,14 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); } - cXyz* pcVar2; - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; + cXyz* pos2; + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); - } else if (iVar3 != 0 && mMsgTimer == 0) { + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -1969,14 +2096,14 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { case '0005': case '0008': setLookObliquenessUp(); - pcVar2 = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); + pos2 = dComIfGp_evmng_getMyXyzP(i_cutIndex, "POS"); - if (pcVar2 != NULL) { - step(cLib_targetAngleY(¤t.pos, pcVar2), -1, 15.0f); + if (pos2 != NULL) { + step(cLib_targetAngleY(¤t.pos, pos2), -1, 15.0f); - if (pcVar2->absXZ(current.pos) < 15.0f) { + if (pos2->absXZ(current.pos) < 15.0f) { speedF = 0.0f; - setMotion(0, -1.0f, 0); + setMotion(MOT_WAIT_A, -1.0f, FALSE); return TRUE; } } @@ -2024,8 +2151,8 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannonSkip(int i_cutIndex) { setAngle(*angle); } - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); speedF = 0.0f; return TRUE; @@ -2051,9 +2178,9 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { dComIfGp_getEvent().startCheckSkipEdge(this); // fallthrough case '0004': - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); - setLookMode(2, NULL, NULL); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); + setLookMode(LOOK_PLAYER, NULL, NULL); initTalk(68, NULL); break; @@ -2070,16 +2197,16 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { setAngle(*angle); } - setExpression(12, -1.0f); - setMotion(0, -1.0f, 0); - setLookMode(1, NULL, NULL); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, FALSE); + setLookMode(LOOK_RESET, NULL, NULL); speedF = 0.0f; break; case '0005': case '0003': - setExpression(6, -1.0f); - setMotion(0x13, -1.0f, 0); + setExpression(EXPR_H_SURPRISE, -1.0f); + setMotion(MOT_RUN_A, -1.0f, FALSE); mTurnMode = 0; speedF = daNpcShad_Param_c::m.traveling_speed; break; @@ -2097,7 +2224,7 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { iVar3 = mMsgTimer; if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2106,7 +2233,7 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { iVar6 = mMsgTimer; if (ctrlMsgAnm(iVar4, iVar5, this, FALSE) != 0) { setExpression(iVar4, -1.0f); - setMotion(iVar5, -1.0f, 0); + setMotion(iVar5, -1.0f, FALSE); } else if (iVar6 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2124,11 +2251,11 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { case '0001': if (fopAcM_searchPlayerAngleY(this) == mCurAngle.y) { if (talkProc(NULL, TRUE, NULL)) { - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); return TRUE; } - } else if (step(fopAcM_searchPlayerAngleY(this), 21, 15.0f)) { - setMotion(0, -1.0f, 0); + } else if (step(fopAcM_searchPlayerAngleY(this), MOT_STEP, 15.0f)) { + setMotion(MOT_WAIT_A, -1.0f, FALSE); mTurnMode = 0; } break; @@ -2138,7 +2265,7 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { case '0004': if (talkProc(NULL, TRUE, NULL)) { - setLookMode(0, NULL, NULL); + setLookMode(LOOK_NONE, NULL, NULL); return TRUE; } break; @@ -2152,7 +2279,7 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { if (pos2->x > current.pos.x) { speedF = 0.0f; - setMotion(0, -1.0f, 0); + setMotion(MOT_WAIT_A, -1.0f, FALSE); return TRUE; } } @@ -2208,7 +2335,7 @@ BOOL daNpcShad_c::EvCut_CallBack(int i_cutIndex) { case '0001': sp30.set(4100.0f, -1520.0f, -3855.8125f); setAngle(cLib_targetAngleY(¤t.pos, &sp30)); - setLookMode(1, NULL, NULL); + setLookMode(LOOK_RESET, NULL, NULL); break; case '0002': @@ -2225,7 +2352,7 @@ BOOL daNpcShad_c::EvCut_CallBack(int i_cutIndex) { iVar3 = mMsgTimer; if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2271,7 +2398,7 @@ BOOL daNpcShad_c::EvCut_WiretapSponsor(int i_cutIndex) { iVar3 = mMsgTimer; if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2287,7 +2414,7 @@ BOOL daNpcShad_c::EvCut_WiretapSponsor(int i_cutIndex) { if (talkPartner == this) { talkPartner = mActorMngr[2].getActorP(); } - setLookMode(4, talkPartner, NULL); + setLookMode(LOOK_ACTOR, talkPartner, NULL); break; default: @@ -2309,8 +2436,8 @@ BOOL daNpcShad_c::EvCut_WiretapEntrant(int i_cutIndex) { if (eventManager->getIsAddvance(i_cutIndex)) { switch (*prm) { case 0: - setExpression(12, -1.0f); - setMotion(4, -1.0f, 0); + setExpression(EXPR_NONE, -1.0f); + setMotion(MOT_SIT_A, -1.0f, FALSE); break; default: @@ -2323,7 +2450,7 @@ BOOL daNpcShad_c::EvCut_WiretapEntrant(int i_cutIndex) { iVar3 = mMsgTimer; if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, 0); + setMotion(iVar2, -1.0f, FALSE); } else if (iVar3 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2335,7 +2462,7 @@ BOOL daNpcShad_c::EvCut_WiretapEntrant(int i_cutIndex) { if (talkPartner == this) { talkPartner = mActorMngr[2].getActorP(); } - setLookMode(4, talkPartner, NULL); + setLookMode(LOOK_ACTOR, talkPartner, NULL); return TRUE; default: @@ -2439,7 +2566,7 @@ BOOL daNpcShad_c::ctrlBtk() { /* 80AE0FAC-80AE1320 008E8C 0374+00 1/0 0/0 0/0 .text setAttnPos__11daNpcShad_cFv */ void daNpcShad_c::setAttnPos() { // NONMATCHING - if (field_0xe18 == 1) { + if (mLookMode == 1) { for (int i = 0; i < 3; i++) { mLookatAngle[i].setall(0); } @@ -2449,7 +2576,7 @@ void daNpcShad_c::setAttnPos() { lookat(); cXyz sp40(10.0f, 10.0f, 0.0f); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(5)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD)); mDoMtx_stack_c::multVecZero(&mHeadPos); mDoMtx_stack_c::multVec(&sp40, &eyePos); sp40.x = 0.0f; @@ -2470,7 +2597,7 @@ void daNpcShad_c::setAttnPos() { attention_info.position.set(mHeadPos.x, mHeadPos.y + daNpcShad_Param_c::m.common.attention_offset, mHeadPos.z); cXyz sp58; - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE2)); mDoMtx_stack_c::multVecZero(&sp58); sp58.y = current.pos.y; @@ -2523,7 +2650,7 @@ void daNpcShad_c::lookat() { csXyz* local_fc = unk_inline(); cXyz sp108; - switch (field_0xe18) { + switch (mLookMode) { case LOOK_RESET: iVar1 = 1; break; @@ -2541,12 +2668,12 @@ void daNpcShad_c::lookat() { break; } - if (field_0xe18 == LOOK_ATTN) { + if (mLookMode == LOOK_ATTN) { mLookat.setAttnPos(&mLookPos); } else if (player != NULL) { mLookPos = player->attention_info.position; - if (field_0xe18 != LOOK_PLAYER && field_0xe18 != LOOK_PLAYER_TALK) { + if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) { mLookPos.y -= 40.0f; } From 1be6a2cf278e0afa850643fe97030039f445baf5 Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Mon, 28 Jul 2025 22:04:37 -0400 Subject: [PATCH 08/11] param_c symbol now showing --- include/d/actor/d_a_npc_shad.h | 4 +- src/d/actor/d_a_npc_shad.cpp | 226 +++++++++++++++++---------------- 2 files changed, 116 insertions(+), 114 deletions(-) diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index 9069e3403cb..f6a44807c2d 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -19,7 +19,7 @@ struct daNpcShad_HIOParam { class daNpcShad_Param_c: public JORReflexible { public: - /* 80AE1F70 */ virtual ~daNpcShad_Param_c() {} + /* 80AE1F70 */ ~daNpcShad_Param_c(); static const daNpcShad_HIOParam m; }; @@ -124,7 +124,7 @@ public: /* 0x16 */ MOT_STEPB, }; - /* 80AD820C */ daNpcShad_c() : daNpcF_c() {} + /* 80AD820C */ daNpcShad_c(); /* 80AD8420 */ ~daNpcShad_c(); /* 80AD8620 */ cPhs__Step Create(); /* 80AD8B60 */ int CreateHeap(); diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index 96ddcf806a9..d1f65aaa1ac 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -289,6 +289,10 @@ daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = { &daNpcShad_c::EvCut_WiretapEntrant, }; +daNpcShad_c::daNpcShad_c() { + // NONMATCHING +}; + /* 80AD8420-80AD8620 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpcShad_cFv */ daNpcShad_c::~daNpcShad_c() { for (int i = 0; l_loadRes_list[mMode][i] >= 0; i++) { @@ -414,18 +418,18 @@ cPhs__Step daNpcShad_c::Create() { } if (phase == cPhs_COMPLEATE_e) { - int iVar1 = 0; + int i_size = 0; switch (mMode) { case 0: - iVar1 = 0x3610; + i_size = 0x3610; break; case 1: - iVar1 = 0x4CA0; + i_size = 0x4CA0; break; case 2: - iVar1 = 0x44A0; + i_size = 0x44A0; break; default: @@ -433,7 +437,7 @@ cPhs__Step daNpcShad_c::Create() { break; } - if (!fopAcM_entrySolidHeap(this, createHeapCallBack, iVar1)) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, i_size)) { return cPhs_ERROR_e; } @@ -516,21 +520,21 @@ int daNpcShad_c::CreateHeap() { } } - if (!setExpressionAnm(1, false)) { // BCK_SHAD_F_TALK_A + if (!setExpressionAnm(ANM_F_TALK_A, false)) { return 0; } switch (mMode) { case 0: - setMotionAnm(0x16, 0.0f); // BCK_SHAD_SIT_A + setMotionAnm(ANM_SIT_A, 0.0f); break; case 1: - setMotionAnm(0xD, 0.0f); // BCK_SHAD_WAIT_A + setMotionAnm(ANM_WAIT_A, 0.0f); break; case 2: - setMotionAnm(0x1F, 0.0f); // BCK_SHAD_LOOKUP + setMotionAnm(ANM_LOOKUP, 0.0f); break; default: @@ -650,56 +654,56 @@ bool daNpcShad_c::setExpressionAnm(int i_idx, bool i_modify) { bool bVar1 = false; switch (i_idx) { - case 0: - bVar1 = setExpressionBtp(0); // BTP_SHAD + case ANM_NONE: + bVar1 = setExpressionBtp(EXPR_BTP_SHAD); break; - case 1: - bVar1 = setExpressionBtp(0); // BTP_SHAD + case ANM_F_TALK_A: + bVar1 = setExpressionBtp(EXPR_BTP_SHAD); break; - case 2: - bVar1 = setExpressionBtp(3); // BTP_SHAD_F_HAPPY + case ANM_F_HAPPY: + bVar1 = setExpressionBtp(EXPR_BTP_F_HAPPY); break; - case 3: - bVar1 = setExpressionBtp(1); // BTP_SHAD_F_ANGER + case ANM_F_ANGER: + bVar1 = setExpressionBtp(EXPR_BTP_F_ANGER); break; - case 4: - bVar1 = setExpressionBtp(2); // BTP_SHAD_F_DISCOURAGED + case ANM_F_DISCOURAGED: + bVar1 = setExpressionBtp(EXPR_BTP_F_DISCOURAGED); break; - case 5: - bVar1 = setExpressionBtp(0); // BTP_SHAD + case ANM_F_CHANT: + bVar1 = setExpressionBtp(EXPR_BTP_SHAD); break; - case 6: - bVar1 = setExpressionBtp(4); // BTP_SHAD_F_KOMON + case ANM_F_KOMON: + bVar1 = setExpressionBtp(EXPR_BTP_F_KOMON); break; - case 7: - bVar1 = setExpressionBtp(5); // BTP_SHAD_F_SURPRISE + case ANM_F_SURPRISE: + bVar1 = setExpressionBtp(EXPR_BTP_F_SURPRISE); break; - case 8: - bVar1 = setExpressionBtp(6); // BTP_SHAD_FH_SURPRISE + case ANM_FH_SURPRISE: + bVar1 = setExpressionBtp(EXPR_BTP_FH_SURPRISE); break; - case 9: - bVar1 = setExpressionBtp(7); // BTP_SHAD_FH_KOMON + case ANM_FH_KOMON: + bVar1 = setExpressionBtp(EXPR_BTP_FH_KOMON); break; - case 10: - bVar1 = setExpressionBtp(10); // BTP_SHAD_FH_HAPPY + case ANM_FH_HAPPY: + bVar1 = setExpressionBtp(EXPR_BTP_FH_HAPPY); break; - case 11: - bVar1 = setExpressionBtp(8); // BTP_SHAD_FH_ANGER + case ANM_FH_ANGER: + bVar1 = setExpressionBtp(EXPR_BTP_FH_ANGER); break; - case 12: - bVar1 = setExpressionBtp(9); // BTP_SHAD_FH_DISCOURAGED + case ANM_FH_DISCOURAGED: + bVar1 = setExpressionBtp(EXPR_BTP_FH_DISCOURAGED); break; default: @@ -761,27 +765,27 @@ void daNpcShad_c::setMotionAnm(int i_idx, f32 i_morf) { mMotionLoops = 0; } - int iVar1 = 0; + int i_index = 0; switch (i_idx) { - case 0x19: - iVar1 = 1; + case ANM_DISCOURAGED: + i_index = 1; break; - case 0x1A: - iVar1 = 2; + case ANM_DISCOURAGED_WAIT: + i_index = 2; break; - case 0x20: - iVar1 = 3; + case ANM_TAKE_KOMON: + i_index = 3; break; - case 0x21: - iVar1 = 4; + case ANM_READ_KOMON: + i_index = 4; break; } - J3DAnmTextureSRTKey* anmTextureSRTKey = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[iVar1].arcIdx], l_btkGetParamList[iVar1].fileIdx); - i_attr = l_btkGetParamList[iVar1].attr; + J3DAnmTextureSRTKey* anmTextureSRTKey = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[i_index].arcIdx], l_btkGetParamList[i_index].fileIdx); + i_attr = l_btkGetParamList[i_index].attr; if (anmTextureSRTKey != NULL) { if (setBtkAnm(anmTextureSRTKey, mpMorf->getModel()->getModelData(), 1.0f, i_attr)) { @@ -1064,7 +1068,7 @@ inline BOOL daNpcShad_c::step(s16 i_targetAngle, int i_motion, f32 i_rate) { if (mTurnMode == 0) { if (i_motion != -1) { if ((int)fabsf(cM_sht2d((s16)(i_targetAngle - mCurAngle.y))) > 40) { - setExpression(12, -1.0f); + setExpression(EXPR_NONE, -1.0f); setMotion(i_motion, -1.0f, FALSE); } } @@ -1421,7 +1425,7 @@ inline void daNpcShad_c::setExpressionTalkAfter() { /* 80ADB628-80ADBEA8 003508 0880+00 2/0 0/0 0/0 .text talk__11daNpcShad_cFPv */ bool daNpcShad_c::talk(void* param_1) { - int itemNo, iVar1, iVar2, iVar3; + int itemNo, i_expression, i_motion, i_msgTimer; u16 eventID; s16 eventIdx; bool rv = false; @@ -1460,11 +1464,11 @@ bool daNpcShad_c::talk(void* param_1) { rv = true; } else { - iVar3 = mMsgTimer; - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE)) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } } @@ -1610,13 +1614,13 @@ BOOL daNpcShad_c::EvCut_Introduction(int i_cutIndex) { /* 80ADC800-80ADCAD8 0046E0 02D8+00 1/0 0/0 0/0 .text EvCut_Meeting__11daNpcShad_cFi */ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { dEvent_manager_c* eventManager = &dComIfGp_getEventManager(); - int* piVar1 = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); - if (piVar1 == NULL) { + int* prm = dComIfGp_evmng_getMyIntegerP(i_cutIndex, "prm"); + if (prm == NULL) { return FALSE; } if (eventManager->getIsAddvance(i_cutIndex)) { - switch (*piVar1) { + switch (*prm) { case 0: setExpression(EXPR_NONE, -1.0f); setMotion(MOT_SIT_A, -1.0f, FALSE); @@ -1632,20 +1636,17 @@ BOOL daNpcShad_c::EvCut_Meeting(int i_cutIndex) { } } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else { - if (iVar3 != 0 && mMsgTimer == 0) { - setExpressionTalkAfter(); - } + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE)) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { + setExpressionTalkAfter(); } fopAc_ac_c* actor; - switch (*piVar1) { + switch (*prm) { case 0: actor = dComIfGp_event_getTalkPartner(); if (actor == this) { @@ -1717,13 +1718,12 @@ BOOL daNpcShad_c::EvCut_ToChantSpell1(int i_cutIndex) { } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE)) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE)) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -1891,13 +1891,12 @@ BOOL daNpcShad_c::EvCut_ToChantSpell2(int i_cutIndex) { changeEvent(l_evtArcs[mOrderEvtNo], l_evtNames[mOrderEvtNo], 1, 0xFFFF); } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2080,7 +2079,6 @@ BOOL daNpcShad_c::EvCut_DiscoveryCannon(int i_cutIndex) { cXyz* pos2; int i_expression, i_motion, i_msgTimer; i_msgTimer = mMsgTimer; - if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { setExpression(i_expression, -1.0f); setMotion(i_motion, -1.0f, FALSE); @@ -2220,21 +2218,21 @@ BOOL daNpcShad_c::EvCut_Disappear(int i_cutIndex) { } } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } - int iVar4, iVar5, iVar6; - iVar6 = mMsgTimer; - if (ctrlMsgAnm(iVar4, iVar5, this, FALSE) != 0) { - setExpression(iVar4, -1.0f); - setMotion(iVar5, -1.0f, FALSE); - } else if (iVar6 != 0 && mMsgTimer == 0) { + int i_expression2, i_motion2, i_msgTimer2; + i_msgTimer2 = mMsgTimer; + if (ctrlMsgAnm(i_expression2, i_motion2, this, FALSE) != 0) { + setExpression(i_expression2, -1.0f); + setMotion(i_motion2, -1.0f, FALSE); + } else if (i_msgTimer2 != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2348,12 +2346,12 @@ BOOL daNpcShad_c::EvCut_CallBack(int i_cutIndex) { } } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2394,12 +2392,12 @@ BOOL daNpcShad_c::EvCut_WiretapSponsor(int i_cutIndex) { } } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2446,12 +2444,12 @@ BOOL daNpcShad_c::EvCut_WiretapEntrant(int i_cutIndex) { } } - int iVar1, iVar2, iVar3; - iVar3 = mMsgTimer; - if (ctrlMsgAnm(iVar1, iVar2, this, FALSE) != 0) { - setExpression(iVar1, -1.0f); - setMotion(iVar2, -1.0f, FALSE); - } else if (iVar3 != 0 && mMsgTimer == 0) { + int i_expression, i_motion, i_msgTimer; + i_msgTimer = mMsgTimer; + if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) { + setExpression(i_expression, -1.0f); + setMotion(i_motion, -1.0f, FALSE); + } else if (i_msgTimer != 0 && mMsgTimer == 0) { setExpressionTalkAfter(); } @@ -2692,6 +2690,10 @@ BOOL daNpcShad_c::drawDbgInfo() { return FALSE; } +daNpcShad_Param_c::~daNpcShad_Param_c() { + // NONMATCHING +} + /* 80AE2CB8-80AE2CC4 000008 000C+00 1/1 0/0 0/0 .bss @3931 */ static u8 lit_3931[12]; From 55fb1b389cad99ff2dcb6de5c6001f4c22be21df Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:08:32 -0400 Subject: [PATCH 09/11] Fixed some symbol generation (thanks Yunata!) --- configure.py | 2 +- include/d/actor/d_a_npc_shad.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.py b/configure.py index 2beb3318ee1..ed24a9b2383 100755 --- a/configure.py +++ b/configure.py @@ -1836,7 +1836,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_seira"), ActorRel(NonMatching, "d_a_npc_seira2"), ActorRel(NonMatching, "d_a_npc_seirei"), - ActorRel(NonMatching, "d_a_npc_shad"), + ActorRel(NonMatching, "d_a_npc_shad", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_shaman"), ActorRel(NonMatching, "d_a_npc_shoe", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01"), "d_a_npc_shop0"), diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h index f6a44807c2d..d7619771c53 100644 --- a/include/d/actor/d_a_npc_shad.h +++ b/include/d/actor/d_a_npc_shad.h @@ -19,7 +19,7 @@ struct daNpcShad_HIOParam { class daNpcShad_Param_c: public JORReflexible { public: - /* 80AE1F70 */ ~daNpcShad_Param_c(); + /* 80AE1F70 */ virtual ~daNpcShad_Param_c(); static const daNpcShad_HIOParam m; }; From 030ff70f70a4da5d715a22c192baa37e210a4609 Mon Sep 17 00:00:00 2001 From: carter-ktb21 <144170194+carter-ktb21@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:09:27 -0400 Subject: [PATCH 10/11] fixed nonmatching comments i forgot to take out --- src/d/actor/d_a_npc_shad.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index d1f65aaa1ac..91a10eb1fc9 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -289,9 +289,7 @@ daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = { &daNpcShad_c::EvCut_WiretapEntrant, }; -daNpcShad_c::daNpcShad_c() { - // NONMATCHING -}; +daNpcShad_c::daNpcShad_c() {}; /* 80AD8420-80AD8620 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpcShad_cFv */ daNpcShad_c::~daNpcShad_c() { @@ -2690,9 +2688,7 @@ BOOL daNpcShad_c::drawDbgInfo() { return FALSE; } -daNpcShad_Param_c::~daNpcShad_Param_c() { - // NONMATCHING -} +daNpcShad_Param_c::~daNpcShad_Param_c() {} /* 80AE2CB8-80AE2CC4 000008 000C+00 1/1 0/0 0/0 .bss @3931 */ static u8 lit_3931[12]; From 26d1ce88ee358ac0d73694c1b5d5ded7857f7196 Mon Sep 17 00:00:00 2001 From: hatal175 Date: Wed, 30 Jul 2025 20:33:05 +0300 Subject: [PATCH 11/11] delete ; --- src/d/actor/d_a_npc_shad.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp index 91a10eb1fc9..24c20ccffb8 100644 --- a/src/d/actor/d_a_npc_shad.cpp +++ b/src/d/actor/d_a_npc_shad.cpp @@ -289,7 +289,7 @@ daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = { &daNpcShad_c::EvCut_WiretapEntrant, }; -daNpcShad_c::daNpcShad_c() {}; +daNpcShad_c::daNpcShad_c() {} /* 80AD8420-80AD8620 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpcShad_cFv */ daNpcShad_c::~daNpcShad_c() {