From 0e8d06c29f2b43d24c45b098dbc6e29416d3e7c8 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Fri, 15 Aug 2025 06:01:44 -0400 Subject: [PATCH] d_a_npc_doorboy equivalent (#2581) * initial work * doorboy equivalent * Update d_a_npc_doorboy.h --------- Co-authored-by: hatal175 --- configure.py | 2 +- include/d/actor/d_a_npc_doorboy.h | 81 +- src/d/actor/d_a_npc_doorboy.cpp | 1891 +++++++++++++---------------- 3 files changed, 924 insertions(+), 1050 deletions(-) diff --git a/configure.py b/configure.py index 9a5fa021826..4edd42bad35 100755 --- a/configure.py +++ b/configure.py @@ -1776,7 +1776,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_coach"), ActorRel(NonMatching, "d_a_npc_df"), ActorRel(NonMatching, "d_a_npc_doc"), - ActorRel(NonMatching, "d_a_npc_doorboy"), + ActorRel(Equivalent, "d_a_npc_doorboy", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_drainSol"), ActorRel(NonMatching, "d_a_npc_du"), ActorRel(NonMatching, "d_a_npc_fairy"), diff --git a/include/d/actor/d_a_npc_doorboy.h b/include/d/actor/d_a_npc_doorboy.h index 24b67b6dfef..f9a6b4e423b 100644 --- a/include/d/actor/d_a_npc_doorboy.h +++ b/include/d/actor/d_a_npc_doorboy.h @@ -2,6 +2,7 @@ #define D_A_NPC_DOORBOY_H #include "d/actor/d_a_npc.h" +#include "d/d_msg_object.h" /** * @ingroup actors-npcs @@ -10,48 +11,80 @@ * * @details * - */ -class daNpcDoorBoy_c : public fopAc_ac_c { +*/ + +struct daNpcDoorBoy_HIOParam { + /* 0x0 */ daNpcF_HIOParam common; +}; + +class daNpcDoorBoy_c : public daNpcF_c { public: + typedef bool (daNpcDoorBoy_c::*actionFunc)(void*); + typedef BOOL (daNpcDoorBoy_c::*EventFn)(int); + /* 809AAC8C */ daNpcDoorBoy_c(); /* 809AAEA0 */ ~daNpcDoorBoy_c(); - /* 809AB088 */ void Create(); - /* 809AB320 */ void CreateHeap(); - /* 809AB4A4 */ void Delete(); - /* 809AB4D8 */ void Execute(); - /* 809AB4FC */ void Draw(); - /* 809AB578 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 809AB704 */ void createHeapCallBack(fopAc_ac_c*); - /* 809AB724 */ void ctrlJointCallBack(J3DJoint*, int); + /* 809AB088 */ cPhs__Step Create(); + /* 809AB320 */ int CreateHeap(); + /* 809AB4A4 */ int Delete(); + /* 809AB4D8 */ int Execute(); + /* 809AB4FC */ int Draw(); + /* 809AB578 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 809AB704 */ static int createHeapCallBack(fopAc_ac_c*); + /* 809AB724 */ static int ctrlJointCallBack(J3DJoint*, int); /* 809AB770 */ void setMotion(int, f32, int); /* 809AB7B8 */ void reset(); - /* 809AB984 */ void setAction(bool (daNpcDoorBoy_c::*)(void*)); - /* 809ABA2C */ void wait(void*); - /* 809AC064 */ void fear(void*); - /* 809AC114 */ void talk(void*); - /* 809AC528 */ void demo(void*); - /* 809AC6F4 */ void dummyTalk(void*); + /* 809AB984 */ inline BOOL setAction(bool (daNpcDoorBoy_c::*)(void*)); + /* 809ABA2C */ bool wait(void*); + /* 809AC064 */ bool fear(void*); + /* 809AC114 */ bool talk(void*); + /* 809AC528 */ bool demo(void*); + /* 809AC6F4 */ bool dummyTalk(void*); /* 809AC994 */ void setParam(); - /* 809ACA58 */ void main(); + /* 809ACA58 */ BOOL main(); /* 809ACC5C */ void setAttnPos(); - /* 809ACE18 */ void lookat(); - /* 809ACFF8 */ bool setMotionAnm(int, f32); - /* 809AD0C8 */ bool drawDbgInfo(); + /* 809ACE18 */ inline void lookat(); + /* 809ACFF8 */ void setMotionAnm(int, f32); + /* 809AD0C8 */ BOOL drawDbgInfo(); /* 809AD938 */ void adjustShapeAngle(); - static u8 mEvtSeqList[12]; + inline u16 getMessageNo() { return fopAcM_GetParam(this) >> 8; } + inline void playMotion(); + inline bool chkFindPlayer(); + inline void setLookMode(int); + inline BOOL step(s16, int); + inline s16 dMsgObject_getNowTalkFlowNo() { return dMsgObject_getMsgObjectClass()->getNowTalkFlowNo(); } + inline int getTimeHour(); + inline bool isDummyTalk(); + + static EventFn mEvtSeqList[1]; private: - /* 0x568 */ u8 field_0x568[0xe08 - 0x568]; + /* 0xB48 */ Z2CreatureCitizen mSound; + /* 0xBEC */ u8 field_0xbec[0xbf0 - 0xbec]; + /* 0xBF0 */ daNpcF_Lookat_c mLookat; + /* 0xC8C */ daNpcF_ActorMngr_c mActorMngr[1]; + /* 0xC95 */ u8 field_0xc94[0xc98 - 0xc94]; + /* 0xC98 */ dCcD_Cyl field_0xc98; + /* 0xDD4 */ actionFunc mAction; + /* 0xDE0 */ request_of_phase_process_class mPhases[2]; + /* 0xDF0 */ fpc_ProcID field_0xdf0; + /* 0xDF4 */ int field_0xdf4; + /* 0xDF8 */ int field_0xdf8; + /* 0xDFC */ int mMessageNo; + /* 0xE00 */ s16 mLookMode; + /* 0xE02 */ s16 field_0xe02; + /* 0xE04 */ u16 mMode; + /* 0xE06 */ u8 field_0xe06; }; STATIC_ASSERT(sizeof(daNpcDoorBoy_c) == 0xe08); class daNpcDoorBoy_Param_c { public: - /* 809AD93C */ ~daNpcDoorBoy_Param_c(); + /* 809AD93C */ virtual ~daNpcDoorBoy_Param_c() {} - static u8 const m[108]; + static daNpcDoorBoy_HIOParam const m; }; diff --git a/src/d/actor/d_a_npc_doorboy.cpp b/src/d/actor/d_a_npc_doorboy.cpp index c3e9fa891e5..f085d005a2e 100644 --- a/src/d/actor/d_a_npc_doorboy.cpp +++ b/src/d/actor/d_a_npc_doorboy.cpp @@ -4,359 +4,906 @@ */ #include "d/actor/d_a_npc_doorboy.h" -#include "dol2asm.h" -// -// Forward References: -// +enum DoorBoy_RES_File_ID { + /* BMDR */ + /* 0x4 */ BMDR_DOORBOY = 0x4, -extern "C" void __ct__14daNpcDoorBoy_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__14daNpcDoorBoy_cFv(); -extern "C" void Create__14daNpcDoorBoy_cFv(); -extern "C" void CreateHeap__14daNpcDoorBoy_cFv(); -extern "C" void Delete__14daNpcDoorBoy_cFv(); -extern "C" void Execute__14daNpcDoorBoy_cFv(); -extern "C" void Draw__14daNpcDoorBoy_cFv(); -extern "C" void ctrlJoint__14daNpcDoorBoy_cFP8J3DJointP8J3DModel(); -extern "C" void createHeapCallBack__14daNpcDoorBoy_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__14daNpcDoorBoy_cFP8J3DJointi(); -extern "C" void setMotion__14daNpcDoorBoy_cFifi(); -extern "C" void reset__14daNpcDoorBoy_cFv(); -extern "C" void setAction__14daNpcDoorBoy_cFM14daNpcDoorBoy_cFPCvPvPv_b(); -extern "C" void wait__14daNpcDoorBoy_cFPv(); -extern "C" void fear__14daNpcDoorBoy_cFPv(); -extern "C" void talk__14daNpcDoorBoy_cFPv(); -extern "C" void demo__14daNpcDoorBoy_cFPv(); -extern "C" void dummyTalk__14daNpcDoorBoy_cFPv(); -extern "C" static void daNpcDoorBoy_Create__FPv(); -extern "C" static void daNpcDoorBoy_Delete__FPv(); -extern "C" static void daNpcDoorBoy_Execute__FPv(); -extern "C" static void daNpcDoorBoy_Draw__FPv(); -extern "C" static bool daNpcDoorBoy_IsDelete__FPv(); -extern "C" void setParam__14daNpcDoorBoy_cFv(); -extern "C" void main__14daNpcDoorBoy_cFv(); -extern "C" void setAttnPos__14daNpcDoorBoy_cFv(); -extern "C" void lookat__14daNpcDoorBoy_cFv(); -extern "C" void setMotionAnm__14daNpcDoorBoy_cFif(); -extern "C" bool drawDbgInfo__14daNpcDoorBoy_cFv(); -extern "C" void __dt__18daNpcF_ActorMngr_cFv(); -extern "C" void __ct__18daNpcF_ActorMngr_cFv(); -extern "C" void __dt__15daNpcF_Lookat_cFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__8daNpcF_cFv(); -extern "C" void __ct__8daNpcF_cFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" bool ctrlBtk__8daNpcF_cFv(); -extern "C" void setCollisions__8daNpcF_cFv(); -extern "C" bool setExpressionAnm__8daNpcF_cFib(); -extern "C" bool setExpressionBtp__8daNpcF_cFi(); -extern "C" void setExpression__8daNpcF_cFif(); -extern "C" void drawOtherMdls__8daNpcF_cFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __sinit_d_a_npc_doorboy_cpp(); -extern "C" void adjustShapeAngle__14daNpcDoorBoy_cFv(); -extern "C" void __dt__20daNpcDoorBoy_Param_cFv(); -extern "C" static void func_809AD984(); -extern "C" static void func_809AD98C(); -extern "C" u8 const m__20daNpcDoorBoy_Param_c[108]; -extern "C" extern char const* const d_a_npc_doorboy__stringBase0; -extern "C" u8 mEvtSeqList__14daNpcDoorBoy_c[12]; - -// -// External References: -// - -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs(); -extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj(); -extern "C" void dComIfGs_isOneZoneSwitch__Fii(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -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 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 cutEnd__16dEvent_manager_cFi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWallR__12dBgS_AcchCirFf(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void initialize__18daNpcF_ActorMngr_cFv(); -extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c(); -extern "C" void remove__18daNpcF_ActorMngr_cFv(); -extern "C" void getActorP__18daNpcF_ActorMngr_cFv(); -extern "C" void initialize__15daNpcF_Lookat_cFv(); -extern "C" void setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz(); -extern "C" void calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii(); -extern "C" void execute__8daNpcF_cFv(); -extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i(); -extern "C" void setMtx__8daNpcF_cFv(); -extern "C" void setMtx2__8daNpcF_cFv(); -extern "C" void initialize__8daNpcF_cFv(); -extern "C" void getTrnsfrmKeyAnmP__8daNpcF_cFPci(); -extern "C" void getTexPtrnAnmP__8daNpcF_cFPci(); -extern "C" void setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii(); -extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi(); -extern "C" void setEnvTevColor__8daNpcF_cFv(); -extern "C" void setRoomNo__8daNpcF_cFv(); -extern "C" void playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData(); -extern "C" void setLookatMtx__8daNpcF_cFiPif(); -extern "C" void ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci(); -extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs(); -extern "C" void chkActorInSight__8daNpcF_cFP10fopAc_ac_cf(); -extern "C" void chkActorInAttnArea__8daNpcF_cFP10fopAc_ac_cP10fopAc_ac_ci(); -extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c(); -extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c(); -extern "C" void turn__8daNpcF_cFsfi(); -extern "C" void getDistTableIdx__8daNpcF_cFii(); -extern "C" void dKy_getdaytime_hour__Fv(); -extern "C" void dKy_getDarktime_hour__Fv(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void getNowTalkFlowNo__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 __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz(); -extern "C" void __ct__17Z2CreatureCitizenFv(); -extern "C" void __dt__17Z2CreatureCitizenFv(); -extern "C" void init__17Z2CreatureCitizenFP3VecP3VecUcUc(); -extern "C" void setMdlType__17Z2CreatureCitizenFScbb(); -extern "C" void playVoice__17Z2CreatureCitizenFi(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" u8 mCcDCyl__8daNpcF_c[68]; -extern "C" extern void* __vt__8daNpcF_c[18]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 809ADB04-809ADB04 00015C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_809ADB04 = "DoorBoy"; -SECTION_DEAD static char const* const stringBase_809ADB0C = "Mgeneral"; -#pragma pop - -/* 809ADB28-809ADB34 000000 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* BTP */ + /* 0x7 */ BTP_DOORBOY = 0x7, }; -/* 809ADB34-809ADB48 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, +enum Mgeneral_RES_File_ID { + /* BCK */ + /* 0x03 */ BCK_M_BROWSE_A = 0x3, + /* 0x04 */ BCK_M_BROWSE_B, + /* 0x05 */ BCK_M_LOOK_A, + /* 0x06 */ BCK_M_LOOK_B, + /* 0x07 */ BCK_M_MARO_DANCE, + /* 0x08 */ BCK_M_RUN_A, + /* 0x09 */ BCK_M_RUN_B, + /* 0x0A */ BCK_M_SING, + /* 0x0B */ BCK_M_SIT_TO_WOLF_A, + /* 0x0C */ BCK_M_SIT_TO_WOLF_B, + /* 0x0D */ BCK_M_SITTALK_A, + /* 0x0E */ BCK_M_SITTALK_A_B, + /* 0x0F */ BCK_M_SITTALK_B, + /* 0x10 */ BCK_M_SITTALK_B_B, + /* 0x11 */ BCK_M_SITWAIT_A, + /* 0x12 */ BCK_M_SITWAIT_B, + /* 0x13 */ BCK_M_SURPRISE, + /* 0x14 */ BCK_M_TALK_A, + /* 0x15 */ BCK_M_TALK_B, + /* 0x16 */ BCK_M_TALK_B_WALL, + /* 0x17 */ BCK_M_TALK_C, + /* 0x18 */ BCK_M_TALK_WALL, + /* 0x19 */ BCK_M_TO_WOLF, + /* 0x1A */ BCK_M_WAIT_A, + /* 0x1B */ BCK_M_WAIT_B, + /* 0x1C */ BCK_M_WAIT_WALL, + /* 0x1D */ BCK_M_WALK_A, + /* 0x1E */ BCK_M_WALK_B, }; -#pragma pop + +enum RES_Name { + /* 0x0 */ DOORBOY, + /* 0x1 */ MGENERAL, +}; + +enum Joint { + /* 0x00 */ JNT_CENTER, + /* 0x01 */ JNT_BACKBONE, + /* 0x02 */ JNT_NECK, + /* 0x03 */ JNT_HEAD, + /* 0x04 */ JNT_SHOULDERL, + /* 0x05 */ JNT_ARML1, + /* 0x06 */ JNT_ARML2, + /* 0x07 */ JNT_HANDL, + /* 0x08 */ JNT_SHOULDERR, + /* 0x09 */ JNT_ARMR1, + /* 0x0A */ JNT_ARMR2, + /* 0x0B */ JNT_HANDR, + /* 0x0C */ JNT_WAIST, + /* 0x0D */ JNT_LEGL1, + /* 0x0E */ JNT_LEGL2, + /* 0x0F */ JNT_FOOTL, + /* 0x10 */ JNT_LEGR1, + /* 0x11 */ JNT_LEGR2, + /* 0x12 */ JNT_FOOTR, +}; + +enum Animation { + /* 0x0 */ ANM_WAIT_A, + /* 0x1 */ ANM_TALK_A, + /* 0x2 */ ANM_TALK_B, + /* 0x3 */ ANM_TALK_C, + /* 0x4 */ ANM_SING, + /* 0x5 */ ANM_SIT_TO_WOLF_A, +}; + +enum Motion { + /* 0x0 */ MOT_WAIT_A, + /* 0x1 */ MOT_SING, + /* 0x2 */ MOT_TALK_B, + /* 0x3 */ MOT_TALK_A, + /* 0xA */ MOT_TALK_C = 0xA, + /* 0xB */ MOT_SIT_TO_WOLF_A, +}; + +UNK_REL_DATA; /* 809ADB48-809ADB90 000020 0048+00 1/1 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[72] = { - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +static daNpc_GetParam2 l_bckGetParamList[6] = { + {BCK_M_WAIT_A, J3DFrameCtrl::EMode_LOOP, MGENERAL}, + {BCK_M_TALK_A, J3DFrameCtrl::EMode_LOOP, MGENERAL}, + {BCK_M_TALK_B, J3DFrameCtrl::EMode_LOOP, MGENERAL}, + {BCK_M_TALK_C, J3DFrameCtrl::EMode_LOOP, MGENERAL}, + {BCK_M_SING, J3DFrameCtrl::EMode_LOOP, MGENERAL}, + {BCK_M_SIT_TO_WOLF_A, J3DFrameCtrl::EMode_LOOP, MGENERAL}, }; /* 809ADB90-809ADB9C 000068 000C+00 0/0 0/0 0/0 .data l_btpGetParamList */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_btpGetParamList[12] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam2 l_btpGetParamList[1] = { + {BTP_DOORBOY, J3DFrameCtrl::EMode_LOOP, DOORBOY}, }; -#pragma pop /* 809ADB9C-809ADBA4 -00001 0008+00 5/6 0/0 0/0 .data l_arcNames */ -SECTION_DATA static void* l_arcNames[2] = { - (void*)&d_a_npc_doorboy__stringBase0, - (void*)(((char*)&d_a_npc_doorboy__stringBase0) + 0x8), +static char* l_arcNames[2] = { + "DoorBoy", + "Mgeneral", }; /* 809ADBA4-809ADBA8 00007C 0004+00 0/1 0/0 0/0 .data l_evtNames */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_evtNames[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -#pragma pop +static char* l_evtNames[1] = {NULL}; /* 809ADBA8-809ADBAC -00001 0004+00 0/2 0/0 0/0 .data l_myName */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_myName = (void*)&d_a_npc_doorboy__stringBase0; -#pragma pop +static char* l_myName = "DoorBoy"; + +/* 809ADD64-809ADD68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +static daNpcDoorBoy_Param_c l_HIO; /* 809ADBAC-809ADBB8 000084 000C+00 1/2 0/0 0/0 .data mEvtSeqList__14daNpcDoorBoy_c */ -SECTION_DATA u8 daNpcDoorBoy_c::mEvtSeqList[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daNpcDoorBoy_c::EventFn daNpcDoorBoy_c::mEvtSeqList[1] = { + NULL }; -/* 809ADBB8-809ADBC4 -00001 000C+00 1/1 0/0 0/0 .data @4449 */ -SECTION_DATA static void* lit_4449[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__14daNpcDoorBoy_cFPv, +/* 809AAC8C-809AAE10 0000EC 0184+00 1/1 0/0 0/0 .text __ct__14daNpcDoorBoy_cFv */ +daNpcDoorBoy_c::daNpcDoorBoy_c() {} + +/* 809AAEA0-809AB088 000300 01E8+00 1/0 0/0 0/0 .text __dt__14daNpcDoorBoy_cFv */ +daNpcDoorBoy_c::~daNpcDoorBoy_c() { + for (int i = 0; i < 2; i++) { + dComIfG_resDelete(&mPhases[i], l_arcNames[i]); + } + + if (heap != NULL) { + mpMorf->stopZelAnime(); + } +} + +/* 809AD9A8-809ADA14 000000 006C+00 10/10 0/0 0/0 .rodata m__20daNpcDoorBoy_Param_c */ +daNpcDoorBoy_HIOParam const daNpcDoorBoy_Param_c::m = { + 55.0f, + 0.0f, + 1.0f, + 300.0f, + 255.0f, + 200.0f, + 35.0f, + 30.0f, + 0.0f, + 0.0f, + 20.0f, + -20.0f, + 30.0f, + -10.0f, + 45.0f, + -45.0f, + 0.6f, + 12.0f, + 3, + 4, + 4, + 2, + 60.0f, + 500.0f, + 300.0f, + -300.0f, + 60, + 0, + 0, + 0, + 0, + false, + false, }; -/* 809ADBC4-809ADBD0 -00001 000C+00 0/1 0/0 0/0 .data @4564 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4564[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__14daNpcDoorBoy_cFPv, -}; -#pragma pop +/* 809AB088-809AB320 0004E8 0298+00 1/1 0/0 0/0 .text Create__14daNpcDoorBoy_cFv */ +cPhs__Step daNpcDoorBoy_c::Create() { + fopAcM_SetupActor(this, daNpcDoorBoy_c); -/* 809ADBD0-809ADBDC -00001 000C+00 0/1 0/0 0/0 .data @4571 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4571[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)dummyTalk__14daNpcDoorBoy_cFPv, -}; -#pragma pop + mMessageNo = (s16)getMessageNo(); -/* 809ADBDC-809ADBE8 -00001 000C+00 0/1 0/0 0/0 .data @4576 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4576[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo__14daNpcDoorBoy_cFPv, -}; -#pragma pop + cPhs__Step phase = cPhs_ERROR_e; + for (int i = 0; i < 2; i++) { + phase = (cPhs__Step)dComIfG_resLoad(&mPhases[i], l_arcNames[i]); -/* 809ADBE8-809ADBF4 -00001 000C+00 0/1 0/0 0/0 .data @4583 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4583[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)fear__14daNpcDoorBoy_cFPv, -}; -#pragma pop + if (phase != cPhs_COMPLEATE_e) { + return phase; + } + } -/* 809ADBF4-809ADC00 -00001 000C+00 1/1 0/0 0/0 .data @4707 */ -SECTION_DATA static void* lit_4707[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__14daNpcDoorBoy_cFPv, -}; + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x1860)) { + return cPhs_ERROR_e; + } -/* 809ADC00-809ADC0C -00001 000C+00 1/1 0/0 0/0 .data @4710 */ -SECTION_DATA static void* lit_4710[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__14daNpcDoorBoy_cFPv, -}; + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -50.0f, -10.0f, -50.0f, 50.0f, 210.0f, 50.0f); + mSound.init(¤t.pos, &eyePos, 3, 1); + mSound.setMdlType(5, false, 0xFF & dKy_darkworld_check()); -/* 809ADC0C-809ADC18 -00001 000C+00 0/1 0/0 0/0 .data @4773 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4773[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__14daNpcDoorBoy_cFPv, -}; -#pragma pop + mAcchCir.SetWall(daNpcDoorBoy_Param_c::m.common.width, daNpcDoorBoy_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.CrrPos(dComIfG_Bgsp()); + mCcStts.Init(daNpcDoorBoy_Param_c::m.common.weight, 0, this); -/* 809ADC18-809ADC24 -00001 000C+00 1/1 0/0 0/0 .data @4799 */ -SECTION_DATA static void* lit_4799[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__14daNpcDoorBoy_cFPv, -}; + field_0xc98.Set(mCcDCyl); + field_0xc98.SetStts(&mCcStts); + field_0xc98.SetTgType(0); + field_0xc98.SetTgSPrm(0); + field_0xc98.SetH(daNpcDoorBoy_Param_c::m.common.height); + field_0xc98.SetR(daNpcDoorBoy_Param_c::m.common.width); + + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + setEnvTevColor(); + setRoomNo(); + reset(); + Execute(); + } + + return phase; +} + +/* 809AB320-809AB4A4 000780 0184+00 1/1 0/0 0/0 .text CreateHeap__14daNpcDoorBoy_cFv */ +int daNpcDoorBoy_c::CreateHeap() { + J3DModelData* mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_arcNames[0], BMDR_DOORBOY); + + JUT_ASSERT(292, 0 != mdlData_p); + + mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11020084); + if (mpMorf != NULL && mpMorf->getModel() == NULL) { + mpMorf->stopZelAnime(); + mpMorf = NULL; + } + + if (mpMorf == NULL) { + return 0; + } + + cXyz translateScale(1.0f, 1.0820773f, 1.0f); + mpMorf->offTranslate(); + mpMorf->setTranslateScale(translateScale); + + for (u16 i = 0; i < mdlData_p->getJointNum(); i++) { + mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } + mpMorf->getModel()->setUserArea((u32)this); + + setMotion(MOT_WAIT_A, -1.0f, 0); + + return 1; +} + +/* 809AB4A4-809AB4D8 000904 0034+00 1/1 0/0 0/0 .text Delete__14daNpcDoorBoy_cFv */ +int daNpcDoorBoy_c::Delete() { + this->~daNpcDoorBoy_c(); + return 1; +} + +/* 809AB4D8-809AB4FC 000938 0024+00 2/2 0/0 0/0 .text Execute__14daNpcDoorBoy_cFv */ +int daNpcDoorBoy_c::Execute() { + execute(); + return 1; +} + +/* 809AB4FC-809AB578 00095C 007C+00 1/1 0/0 0/0 .text Draw__14daNpcDoorBoy_cFv */ +int daNpcDoorBoy_c::Draw() { + draw(FALSE, FALSE, daNpcDoorBoy_Param_c::m.common.real_shadow_size, NULL, FALSE); + dComIfGd_setSimpleShadow(¤t.pos, mAcch.GetGroundH(), 50.0f, mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + return 1; +} + +/* 809AB578-809AB704 0009D8 018C+00 1/1 0/0 0/0 .text ctrlJoint__14daNpcDoorBoy_cFP8J3DJointP8J3DModel */ +int daNpcDoorBoy_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + int jointNo = i_joint->getJntNo(); + int i_jointList[3] = {JNT_BACKBONE, JNT_NECK, JNT_HEAD}; + + if (jointNo == JNT_CENTER) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE)); + mDoMtx_stack_c::multVecZero(&mLookatPos[0]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK)); + mDoMtx_stack_c::multVecZero(&mLookatPos[1]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD)); + mDoMtx_stack_c::multVecZero(&mLookatPos[2]); + } + + mDoMtx_stack_c::copy(i_model->getAnmMtx(jointNo)); + + switch (jointNo) { + case JNT_BACKBONE: + case JNT_NECK: + case JNT_HEAD: + setLookatMtx(jointNo, i_jointList, daNpcDoorBoy_Param_c::m.common.neck_rotation_ratio); + } + + i_model->setAnmMtx(jointNo, mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + return 1; +} + +/* 809AB704-809AB724 000B64 0020+00 1/1 0/0 0/0 .text createHeapCallBack__14daNpcDoorBoy_cFP10fopAc_ac_c */ +int daNpcDoorBoy_c::createHeapCallBack(fopAc_ac_c* a_this) { + daNpcDoorBoy_c* i_this = (daNpcDoorBoy_c*)a_this; + return i_this->CreateHeap(); +} + +/* 809AB724-809AB770 000B84 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__14daNpcDoorBoy_cFP8J3DJointi */ +int daNpcDoorBoy_c::ctrlJointCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = j3dSys.getModel(); + daNpcDoorBoy_c* i_this = (daNpcDoorBoy_c*)model->getUserArea(); + + if (i_this != NULL) { + i_this->ctrlJoint(i_joint, model); + } + } + + return 1; +} + +/* 809AB770-809AB7B8 000BD0 0048+00 1/0 0/0 0/0 .text setMotion__14daNpcDoorBoy_cFifi */ +void daNpcDoorBoy_c::setMotion(int i_motion, f32 i_morf, int param_3) { + s16 motion = i_motion; + + if ((param_3 != 0 || mMotion != motion) && i_motion >= 0 && i_motion < 0xC) { + mMotion = motion; + mMotionMorfOverride = i_morf; + mMotionPrevPhase = -1; + mMotionPhase = 0; + field_0xe02 = 0; + } +} + +/* 809AB7B8-809AB984 000C18 01CC+00 1/1 0/0 0/0 .text reset__14daNpcDoorBoy_cFv */ +void daNpcDoorBoy_c::reset() { + initialize(); + mLookat.initialize(); + + for (int i = 0; i < 1; i++) { + mActorMngr[i].initialize(); + } + + field_0xdf4 = 0; + field_0xdf8 = 0; + mAction = NULL; + mLookMode = -1; + mMode = 0; + current.pos.set(home.pos); + old.pos.set(current.pos); + current.angle.set(0, home.angle.y, 0); + old.angle = current.angle; + shape_angle = current.angle; + mCurAngle = current.angle; + mOldAngle = mCurAngle; + speedF = 0.0f; + speed.setall(0.0f); + field_0xdf0 = -1; + mOrderEvtNo = 0; + + J3DAnmTexPattern* i_btp = getTexPtrnAnmP(l_arcNames[0], 7); + mAnmFlags &= 0xFFFFF57F; + + if (setBtpAnm(i_btp, mpMorf->getModel()->getModelData(), 1.0f, 2)) { + mAnmFlags |= 0xA80; + } + + setAction(&daNpcDoorBoy_c::wait); + mMotionMorfOverride = 0.0f; +} + +/* 809AB984-809ABA2C 000DE4 00A8+00 1/1 0/0 0/0 .text setAction__14daNpcDoorBoy_cFM14daNpcDoorBoy_cFPCvPvPv_b */ +BOOL daNpcDoorBoy_c::setAction(actionFunc action) { + mMode = 3; + + if (mAction) { + (this->*mAction)(NULL); + } + + mMode = 0; + mAction = action; + + if (mAction) { + (this->*mAction)(NULL); + } + + return TRUE; +} + +inline void daNpcDoorBoy_c::playMotion() { + daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcDoorBoy_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat0[1] = {&dat0}; + daNpcF_anmPlayData dat1 = {ANM_SING, daNpcDoorBoy_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat1[1] = {&dat1}; + daNpcF_anmPlayData dat2 = {ANM_TALK_B, daNpcDoorBoy_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat2[1] = {&dat2}; + daNpcF_anmPlayData dat3 = {ANM_TALK_A, daNpcDoorBoy_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat3[1] = {&dat3}; + daNpcF_anmPlayData dat4 = {ANM_TALK_C, daNpcDoorBoy_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat4[1] = {&dat4}; + daNpcF_anmPlayData dat5 = {ANM_SIT_TO_WOLF_A, daNpcDoorBoy_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* pDat5[1] = {&dat5}; + daNpcF_anmPlayData** ppDat[12] = { + pDat0, + pDat1, + pDat2, + pDat3, + pDat0, + pDat0, + pDat0, + pDat0, + pDat0, + pDat0, + pDat4, + pDat5, + }; + + if (mMotion >= 0 && mMotion < 0xC) { + field_0xe02 = mMotionPhase; + playMotionAnm(ppDat); + } +} + +/* 809ACE18-809ACFF8 002278 01E0+00 1/1 0/0 0/0 .text lookat__14daNpcDoorBoy_cFv */ +inline void daNpcDoorBoy_c::lookat() { + daPy_py_c* player = NULL; + J3DModel* model_p = mpMorf->getModel(); + + int iVar1 = 0; + f32 body_angleX_min = daNpcDoorBoy_Param_c::m.common.body_angleX_min; + f32 body_angleX_max = daNpcDoorBoy_Param_c::m.common.body_angleX_max; + f32 body_angleY_min = daNpcDoorBoy_Param_c::m.common.body_angleY_min; + f32 body_angleY_max = daNpcDoorBoy_Param_c::m.common.body_angleY_max; + f32 head_angleX_min = daNpcDoorBoy_Param_c::m.common.head_angleX_min; + f32 head_angleX_max = daNpcDoorBoy_Param_c::m.common.head_angleX_max; + f32 head_angleY_min = daNpcDoorBoy_Param_c::m.common.head_angleY_min; + f32 head_angleY_max = daNpcDoorBoy_Param_c::m.common.head_angleY_max; + + s16 temp_r26 = mCurAngle.y - mOldAngle.y; + cXyz sp30[] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; + csXyz* sp24[] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; + + cXyz sp18; + switch (mLookMode) { + case LOOK_NONE: + break; + case LOOK_RESET: + iVar1 = 1; + break; + case LOOK_PLAYER: + case LOOK_PLAYER_TALK: + player = daPy_getPlayerActorClass(); + if (mLookMode == LOOK_PLAYER_TALK) { + head_angleY_min = -80.0f; + head_angleY_max = 80.0f; + } + break; + } + if (player != NULL) { + mLookPos = player->attention_info.position; + if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) { + mLookPos.y -= 40.0f; + } + mLookat.setAttnPos(&mLookPos); + } else { + mLookat.setAttnPos(NULL); + } + + mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, + 0.0f, 0.0f, 0.0f, 0.0f, + head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max, + mCurAngle.y, sp30); + mLookat.calc(this, model_p->getBaseTRMtx(), sp24, iVar1, temp_r26, 0); +} + +inline bool daNpcDoorBoy_c::chkFindPlayer() { + bool rv; + if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcDoorBoy_Param_c::m.common.fov)) { + mActorMngr[0].remove(); + return false; + } + + if (mActorMngr[0].getActorP() == NULL) { + rv = chkPlayerInSpeakArea(this); + } else { + rv = chkPlayerInTalkArea(this); + } + + if (rv) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + } else { + mActorMngr[0].remove(); + } + + return rv; +} + +inline void daNpcDoorBoy_c::setLookMode(int i_lookMode) { + s16 lookMode = i_lookMode; + + if (i_lookMode >= 0 && i_lookMode < 4 && lookMode != mLookMode) { + mLookMode = lookMode; + } +} + +inline BOOL daNpcDoorBoy_c::step(s16 i_turnTargetAngle, int param_2) { + if (mTurnMode == 0) { + mTurnTargetAngle = i_turnTargetAngle; + 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, 15.0f, 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; +} + +inline int daNpcDoorBoy_c::getTimeHour() { + if (dKy_darkworld_check()) { + return dKy_getDarktime_hour(); + } + + return dKy_getdaytime_hour(); +} + +inline bool daNpcDoorBoy_c::isDummyTalk() { + /* dSv_event_flag_c::M_091 - Kakariko Village - Buy out fundraiser amount (Malo becomes nice) */ + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[124])) { + return false; + } + + int timeHour = getTimeHour(); + if (timeHour > 10 && timeHour < 20) { + if (dComIfGs_isOneZoneSwitch(0, fopAcM_GetRoomNo(this))) { + return false; + } + } + + return true; +} + +/* 809ABA2C-809AC064 000E8C 0638+00 5/0 0/0 0/0 .text wait__14daNpcDoorBoy_cFPv */ +bool daNpcDoorBoy_c::wait(void* param_1) { + switch (mMode) { + case 0: + setMotion(MOT_WAIT_A, -1.0f, 0); + mTurnMode = 0; + speedF = 0.0f; + mMode = 2; + break; + + case 2: + chkFindPlayer(); + if (mActorMngr[0].getActorP() != NULL) { + setLookMode(LOOK_PLAYER); + } else { + setLookMode(LOOK_NONE); + + if (mCurAngle.y != home.angle.y && step(home.angle.y, 0)) { + setMotion(MOT_WAIT_A, -1.0f, 0); + mTurnMode = 0; + } + } + + if (dComIfGp_event_runCheck()) { + if (eventInfo.checkCommandTalk()) { + if (!dComIfGp_event_chkTalkXY() || dComIfGp_evmng_ChkPresentEnd()) { + setAction(&daNpcDoorBoy_c::talk); + } + } else { + if (dMsgObject_getNowTalkFlowNo() == 0x435) { + if (isDummyTalk()) { + setAction(&daNpcDoorBoy_c::dummyTalk); + } + } else { + if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0) != -1) { + setAction(&daNpcDoorBoy_c::demo); + } + } + } + } else { + if (!dKy_darkworld_check()) { + if (daPy_py_c::checkNowWolf()) { + f32 fVar1 = pow(500.0, 2.0); + if (fopAcM_searchPlayerDistanceXZ2(this) < fVar1) { + setAction(&daNpcDoorBoy_c::fear); + break; + } + } + } + + if (mOrderEvtNo != 0) { + eventInfo.setArchiveName(l_arcNames[0]); + } + + orderEvent(field_0xe06, l_evtNames[mOrderEvtNo], 0xFFFF, 40, 0xFF, 1); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1064, 0); + break; + } + + return true; +} + +/* 809AC064-809AC114 0014C4 00B0+00 1/0 0/0 0/0 .text fear__14daNpcDoorBoy_cFPv */ +bool daNpcDoorBoy_c::fear(void* param_1) { + switch (mMode) { + case 0: + setMotion(MOT_SIT_TO_WOLF_A, -1.0f, 0); + speedF = 0.0f; + mMode = 2; + break; + + case 2: + if (mpMorf->checkFrame(1.0f)) { + mSound.playVoice(2); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1094, 0); + break; + } + + return true; +} + +/* 809AC114-809AC528 001574 0414+00 1/0 0/0 0/0 .text talk__14daNpcDoorBoy_cFPv */ +bool daNpcDoorBoy_c::talk(void* param_1) { + int itemNo; + int iVar1, i_motion; + bool rv = false; + + switch (mMode) { + case 0: + initTalk(mMessageNo, NULL); + mMsgTimer = 0; + field_0xe06 = 0; + setLookMode(LOOK_PLAYER_TALK); + mMode = 2; + break; + + case 2: + if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, TRUE, NULL)) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + itemNo = 0; + + OS_REPORT("会話終了時 イベントID=%d アイテムNo=%d\n", mFlow.getEventId(&itemNo), itemNo); + + if (mFlow.getEventId(&itemNo) == 1) { + field_0xdf0 = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1, -1, NULL, NULL); + if (field_0xdf0 != fpcM_ERROR_PROCESS_ID_e) { + s16 eventIdx = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xFF); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, eventIdx, 1, 0xFFFF); + field_0x9ec = true; + setAction(&daNpcDoorBoy_c::wait); + } + } else { + setAction(&daNpcDoorBoy_c::wait); + } + + rv = true; + } else if (ctrlMsgAnm(iVar1, i_motion, this, FALSE) != 0) { + setMotion(i_motion, -1.0f, 0); + } + } else if (step(fopAcM_searchPlayerAngleY(this), 0)) { + setMotion(MOT_WAIT_A, -1.0f, 0); + mTurnMode = 0; + } + break; + + case 3: + if (!field_0x9ec) { + dComIfGp_event_reset(); + } + break; + + default: + JUT_ASSERT(1167, 0); + break; + } + + return rv; +} + +/* 809AC528-809AC6F4 001988 01CC+00 1/0 0/0 0/0 .text demo__14daNpcDoorBoy_cFPv */ +bool daNpcDoorBoy_c::demo(void* param_1) { + switch (mMode) { + case 0: + setMotion(MOT_WAIT_A, -1.0f, 0); + mMode = 2; + break; + + case 2: + if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) { + dEvent_manager_c& eventManager = dComIfGp_getEventManager(); + s32 staffId = eventManager.getMyStaffId(l_myName, NULL, 0); + if (staffId != -1) { + mStaffID = staffId; + + JUT_ASSERT(1201, 0 != mEvtSeqList[mOrderEvtNo]); + + if ((this->*mEvtSeqList[mOrderEvtNo])(staffId)) { + eventManager.cutEnd(staffId); + } + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) { + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + setAction(&daNpcDoorBoy_c::wait); + } + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1229, 0); + break; + } + + return true; +} + +/* 809AC6F4-809AC90C 001B54 0218+00 1/0 0/0 0/0 .text dummyTalk__14daNpcDoorBoy_cFPv */ +bool daNpcDoorBoy_c::dummyTalk(void* param_1) { + switch (mMode) { + case 0: + setMotion(MOT_WAIT_A, -1.0f, 0); + mTurnMode = 0; + mMode = 2; + break; + + case 2: + if (step(fopAcM_searchPlayerAngleY(this), 0)) { + setMotion(MOT_TALK_A, -1.0f, 0); + } + + if (!dComIfGp_event_runCheck()) { + setAction(&daNpcDoorBoy_c::wait); + } + break; + + case 3: + break; + + default: + JUT_ASSERT(1263, 0); + break; + } + + return true; +} + +/* 809AC90C-809AC92C 001D6C 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Create__FPv */ +static int daNpcDoorBoy_Create(void* a_this) { + daNpcDoorBoy_c* i_this = (daNpcDoorBoy_c*)a_this; + return i_this->Create(); +} + +/* 809AC92C-809AC94C 001D8C 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Delete__FPv */ +static int daNpcDoorBoy_Delete(void* a_this) { + daNpcDoorBoy_c* i_this = (daNpcDoorBoy_c*)a_this; + return i_this->Delete(); +} + +/* 809AC94C-809AC96C 001DAC 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Execute__FPv */ +static int daNpcDoorBoy_Execute(void* a_this) { + daNpcDoorBoy_c* i_this = (daNpcDoorBoy_c*)a_this; + return i_this->Execute(); +} + +/* 809AC96C-809AC98C 001DCC 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Draw__FPv */ +static int daNpcDoorBoy_Draw(void* a_this) { + daNpcDoorBoy_c* i_this = (daNpcDoorBoy_c*)a_this; + return i_this->Draw(); +} + +/* 809AC98C-809AC994 001DEC 0008+00 1/0 0/0 0/0 .text daNpcDoorBoy_IsDelete__FPv */ +static int daNpcDoorBoy_IsDelete(void* a_this) { + return 1; +} + +/* 809AC994-809ACA58 001DF4 00C4+00 1/0 0/0 0/0 .text setParam__14daNpcDoorBoy_cFv */ +void daNpcDoorBoy_c::setParam() { + attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcDoorBoy_Param_c::m.common.attention_distance, + daNpcDoorBoy_Param_c::m.common.attention_angle); + attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; + attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(daNpcDoorBoy_Param_c::m.common.talk_distance, + daNpcDoorBoy_Param_c::m.common.talk_angle); + attention_info.flags = daPy_py_c::checkNowWolf() ? 0 : 10; + scale.setall(daNpcDoorBoy_Param_c::m.common.scale); + mAcchCir.SetWallR(daNpcDoorBoy_Param_c::m.common.width); + mAcchCir.SetWallH(daNpcDoorBoy_Param_c::m.common.knee_length); + gravity = daNpcDoorBoy_Param_c::m.common.gravity; +} + +/* 809ACA58-809ACC5C 001EB8 0204+00 1/0 0/0 0/0 .text main__14daNpcDoorBoy_cFv */ +BOOL daNpcDoorBoy_c::main() { + if (mAction) { + (this->*mAction)(NULL); + } + + playMotion(); + return FALSE; +} + +/* 809ACC5C-809ACE18 0020BC 01BC+00 1/0 0/0 0/0 .text setAttnPos__14daNpcDoorBoy_cFv */ +void daNpcDoorBoy_c::setAttnPos() { + if (mLookMode == 1) { + for (int i = 0; i < 3; i++) { + mLookatAngle[i].setall(0); + } + } + + setMtx(); + lookat(); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD)); + mDoMtx_stack_c::multVecZero(&mHeadPos); + cXyz sp1c(23.0f, 15.0f, 0.0f); + mDoMtx_stack_c::multVec(&sp1c, &eyePos); + sp1c.x = 0.0f; + mDoMtx_stack_c::multVec(&sp1c, &sp1c); + mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &sp1c); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &sp1c); + attention_info.position.set(55.0f, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&attention_info.position, &attention_info.position); + + cXyz sp28; + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE)); + mDoMtx_stack_c::multVecZero(&sp28); + sp28.y = current.pos.y; + + field_0xc98.SetC(sp28); + #ifdef DEBUG + field_0xc98.SetH(daNpcDoorBoy_Param_c::m.common.height); + field_0xc98.SetR(daNpcDoorBoy_Param_c::m.common.width); + #endif + dComIfG_Ccsp()->Set(&field_0xc98); +} + +/* 809ACFF8-809AD0C8 002458 00D0+00 1/0 0/0 0/0 .text setMotionAnm__14daNpcDoorBoy_cFif */ +void daNpcDoorBoy_c::setMotionAnm(int i_index, f32 i_morf) { + J3DAnmTransformKey* anm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_index].arcIdx], l_bckGetParamList[i_index].fileIdx); + int i_attr = l_bckGetParamList[i_index].attr; + mAnmFlags &= 0xFFFFFFF6; + + if (anm != NULL && setMcaMorfAnm(anm, 1.0f, i_morf, i_attr, 0, -1)) { + mAnmFlags |= 9; + mMotionLoops = 0; + } +} + +/* 809AD0C8-809AD0D0 002528 0008+00 1/0 0/0 0/0 .text drawDbgInfo__14daNpcDoorBoy_cFv */ +BOOL daNpcDoorBoy_c::drawDbgInfo() { + return FALSE; +} + +/* 809AD938-809AD93C 002D98 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__14daNpcDoorBoy_cFv */ +void daNpcDoorBoy_c::adjustShapeAngle() { + /* empty function */ +} /* 809ADC24-809ADC44 -00001 0020+00 1/0 0/0 0/0 .data daNpcDoorBoy_MethodTable */ static actor_method_class daNpcDoorBoy_MethodTable = { - (process_method_func)daNpcDoorBoy_Create__FPv, - (process_method_func)daNpcDoorBoy_Delete__FPv, - (process_method_func)daNpcDoorBoy_Execute__FPv, - (process_method_func)daNpcDoorBoy_IsDelete__FPv, - (process_method_func)daNpcDoorBoy_Draw__FPv, + (process_method_func)daNpcDoorBoy_Create, + (process_method_func)daNpcDoorBoy_Delete, + (process_method_func)daNpcDoorBoy_Execute, + (process_method_func)daNpcDoorBoy_IsDelete, + (process_method_func)daNpcDoorBoy_Draw, }; /* 809ADC44-809ADC74 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_DOORBOY */ @@ -376,709 +923,3 @@ extern actor_process_profile_definition g_profile_NPC_DOORBOY = { fopAc_NPC_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 809ADC74-809ADCBC 00014C 0048+00 2/2 0/0 0/0 .data __vt__14daNpcDoorBoy_c */ -SECTION_DATA extern void* __vt__14daNpcDoorBoy_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daNpcDoorBoy_cFv, - (void*)setParam__14daNpcDoorBoy_cFv, - (void*)main__14daNpcDoorBoy_cFv, - (void*)ctrlBtk__8daNpcF_cFv, - (void*)adjustShapeAngle__14daNpcDoorBoy_cFv, - (void*)setMtx__8daNpcF_cFv, - (void*)setMtx2__8daNpcF_cFv, - (void*)setAttnPos__14daNpcDoorBoy_cFv, - (void*)setCollisions__8daNpcF_cFv, - (void*)setExpressionAnm__8daNpcF_cFib, - (void*)setExpressionBtp__8daNpcF_cFi, - (void*)setExpression__8daNpcF_cFif, - (void*)setMotionAnm__14daNpcDoorBoy_cFif, - (void*)setMotion__14daNpcDoorBoy_cFifi, - (void*)drawDbgInfo__14daNpcDoorBoy_cFv, - (void*)drawOtherMdls__8daNpcF_cFv, -}; - -/* 809ADCBC-809ADCC8 000194 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, -}; - -/* 809ADCC8-809ADCEC 0001A0 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_809AD98C, - (void*)NULL, - (void*)NULL, - (void*)func_809AD984, -}; - -/* 809ADCEC-809ADCF8 0001C4 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, -}; - -/* 809ADCF8-809ADD04 0001D0 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, -}; - -/* 809ADD04-809ADD10 0001DC 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, -}; - -/* 809ADD10-809ADD1C 0001E8 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, -}; - -/* 809ADD1C-809ADD28 0001F4 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, -}; - -/* 809ADD28-809ADD34 000200 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, -}; - -/* 809ADD34-809ADD40 00020C 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, -}; - -/* 809AAC8C-809AAE10 0000EC 0184+00 1/1 0/0 0/0 .text __ct__14daNpcDoorBoy_cFv */ -daNpcDoorBoy_c::daNpcDoorBoy_c() { - // NONMATCHING -} - -/* 809AAE10-809AAE58 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 809AAE58-809AAEA0 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 809AAEA0-809AB088 000300 01E8+00 1/0 0/0 0/0 .text __dt__14daNpcDoorBoy_cFv */ -daNpcDoorBoy_c::~daNpcDoorBoy_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809AD9A8-809ADA14 000000 006C+00 10/10 0/0 0/0 .rodata m__20daNpcDoorBoy_Param_c */ -SECTION_RODATA u8 const daNpcDoorBoy_Param_c::m[108] = { - 0x42, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, - 0x42, 0x70, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809AD9A8, &daNpcDoorBoy_Param_c::m); - -/* 809ADA14-809ADA18 00006C 0004+00 0/1 0/0 0/0 .rodata @4267 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4267 = -50.0f; -COMPILER_STRIP_GATE(0x809ADA14, &lit_4267); -#pragma pop - -/* 809ADA18-809ADA1C 000070 0004+00 0/1 0/0 0/0 .rodata @4268 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4268 = -10.0f; -COMPILER_STRIP_GATE(0x809ADA18, &lit_4268); -#pragma pop - -/* 809ADA1C-809ADA20 000074 0004+00 0/2 0/0 0/0 .rodata @4269 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4269 = 50.0f; -COMPILER_STRIP_GATE(0x809ADA1C, &lit_4269); -#pragma pop - -/* 809ADA20-809ADA24 000078 0004+00 0/1 0/0 0/0 .rodata @4270 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4270 = 210.0f; -COMPILER_STRIP_GATE(0x809ADA20, &lit_4270); -#pragma pop - -/* 809AB088-809AB320 0004E8 0298+00 1/1 0/0 0/0 .text Create__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::Create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADA24-809ADA28 00007C 0004+00 2/5 0/0 0/0 .rodata @4319 */ -SECTION_RODATA static f32 const lit_4319 = 1.0f; -COMPILER_STRIP_GATE(0x809ADA24, &lit_4319); - -/* 809ADA28-809ADA2C 000080 0004+00 0/1 0/0 0/0 .rodata @4320 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4320 = 0x3F8A8182; -COMPILER_STRIP_GATE(0x809ADA28, &lit_4320); -#pragma pop - -/* 809ADA2C-809ADA30 000084 0004+00 3/6 0/0 0/0 .rodata @4321 */ -SECTION_RODATA static f32 const lit_4321 = -1.0f; -COMPILER_STRIP_GATE(0x809ADA2C, &lit_4321); - -/* 809AB320-809AB4A4 000780 0184+00 1/1 0/0 0/0 .text CreateHeap__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::CreateHeap() { - // NONMATCHING -} - -/* 809AB4A4-809AB4D8 000904 0034+00 1/1 0/0 0/0 .text Delete__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::Delete() { - // NONMATCHING -} - -/* 809AB4D8-809AB4FC 000938 0024+00 2/2 0/0 0/0 .text Execute__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::Execute() { - // NONMATCHING -} - -/* 809AB4FC-809AB578 00095C 007C+00 1/1 0/0 0/0 .text Draw__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::Draw() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADA30-809ADA3C 000088 000C+00 1/1 0/0 0/0 .rodata @4341 */ -SECTION_RODATA static u8 const lit_4341[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, -}; -COMPILER_STRIP_GATE(0x809ADA30, &lit_4341); - -/* 809AB578-809AB704 0009D8 018C+00 1/1 0/0 0/0 .text - * ctrlJoint__14daNpcDoorBoy_cFP8J3DJointP8J3DModel */ -void daNpcDoorBoy_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING -} - -/* 809AB704-809AB724 000B64 0020+00 1/1 0/0 0/0 .text - * createHeapCallBack__14daNpcDoorBoy_cFP10fopAc_ac_c */ -void daNpcDoorBoy_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 809AB724-809AB770 000B84 004C+00 1/1 0/0 0/0 .text - * ctrlJointCallBack__14daNpcDoorBoy_cFP8J3DJointi */ -void daNpcDoorBoy_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* 809AB770-809AB7B8 000BD0 0048+00 1/0 0/0 0/0 .text setMotion__14daNpcDoorBoy_cFifi */ -void daNpcDoorBoy_c::setMotion(int param_0, f32 param_1, int param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADA3C-809ADA40 000094 0004+00 1/5 0/0 0/0 .rodata @4477 */ -SECTION_RODATA static u8 const lit_4477[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA3C, &lit_4477); - -/* 809AB7B8-809AB984 000C18 01CC+00 1/1 0/0 0/0 .text reset__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::reset() { - // NONMATCHING -} - -/* 809AB984-809ABA2C 000DE4 00A8+00 1/1 0/0 0/0 .text - * setAction__14daNpcDoorBoy_cFM14daNpcDoorBoy_cFPCvPvPv_b */ -void daNpcDoorBoy_c::setAction(bool (daNpcDoorBoy_c::*param_0)(void*)) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADA40-809ADA4C 000098 000C+00 0/1 0/0 0/0 .rodata @4478 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4478[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA40, &lit_4478); -#pragma pop - -/* 809ADA4C-809ADA50 0000A4 0004+00 0/1 0/0 0/0 .rodata @4479 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4479[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA4C, &lit_4479); -#pragma pop - -/* 809ADA50-809ADA5C 0000A8 000C+00 0/1 0/0 0/0 .rodata @4480 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4480[12] = { - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA50, &lit_4480); -#pragma pop - -/* 809ADA5C-809ADA60 0000B4 0004+00 0/1 0/0 0/0 .rodata @4481 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4481[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA5C, &lit_4481); -#pragma pop - -/* 809ADA60-809ADA6C 0000B8 000C+00 0/1 0/0 0/0 .rodata @4482 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4482[12] = { - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA60, &lit_4482); -#pragma pop - -/* 809ADA6C-809ADA70 0000C4 0004+00 0/1 0/0 0/0 .rodata @4483 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4483[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA6C, &lit_4483); -#pragma pop - -/* 809ADA70-809ADA7C 0000C8 000C+00 0/1 0/0 0/0 .rodata @4484 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4484[12] = { - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA70, &lit_4484); -#pragma pop - -/* 809ADA7C-809ADA80 0000D4 0004+00 0/1 0/0 0/0 .rodata @4485 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4485[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA7C, &lit_4485); -#pragma pop - -/* 809ADA80-809ADA8C 0000D8 000C+00 0/1 0/0 0/0 .rodata @4486 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4486[12] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA80, &lit_4486); -#pragma pop - -/* 809ADA8C-809ADA90 0000E4 0004+00 0/1 0/0 0/0 .rodata @4487 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4487[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA8C, &lit_4487); -#pragma pop - -/* 809ADA90-809ADA9C 0000E8 000C+00 0/1 0/0 0/0 .rodata @4488 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4488[12] = { - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA90, &lit_4488); -#pragma pop - -/* 809ADA9C-809ADAA0 0000F4 0004+00 0/1 0/0 0/0 .rodata @4489 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4489[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809ADA9C, &lit_4489); -#pragma pop - -/* 809ADAA0-809ADAD0 0000F8 0030+00 0/0 0/0 0/0 .rodata @4490 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4490[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADAA0, &lit_4490); -#pragma pop - -/* 809ADAD0-809ADADC 000128 000C+00 0/1 0/0 0/0 .rodata @4504 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4504[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADAD0, &lit_4504); -#pragma pop - -/* 809ADADC-809ADAE0 000134 0004+00 2/4 0/0 0/0 .rodata @4678 */ -SECTION_RODATA static f32 const lit_4678 = 15.0f; -COMPILER_STRIP_GATE(0x809ADADC, &lit_4678); - -/* 809ADAE0-809ADAE8 000138 0008+00 0/1 0/0 0/0 .rodata @4679 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4679[8] = { - 0x40, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADAE0, &lit_4679); -#pragma pop - -/* 809ADAE8-809ADAF0 000140 0008+00 0/1 0/0 0/0 .rodata @4680 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4680[8] = { - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809ADAE8, &lit_4680); -#pragma pop - -/* 809ABA2C-809AC064 000E8C 0638+00 5/0 0/0 0/0 .text wait__14daNpcDoorBoy_cFPv */ -void daNpcDoorBoy_c::wait(void* param_0) { - // NONMATCHING -} - -/* 809AC064-809AC114 0014C4 00B0+00 1/0 0/0 0/0 .text fear__14daNpcDoorBoy_cFPv */ -void daNpcDoorBoy_c::fear(void* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADB04-809ADB04 00015C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_809ADB15 = "DEFAULT_GETITEM"; -#pragma pop - -/* 809AC114-809AC528 001574 0414+00 1/0 0/0 0/0 .text talk__14daNpcDoorBoy_cFPv */ -void daNpcDoorBoy_c::talk(void* param_0) { - // NONMATCHING -} - -/* 809AC528-809AC6F4 001988 01CC+00 1/0 0/0 0/0 .text demo__14daNpcDoorBoy_cFPv */ -void daNpcDoorBoy_c::demo(void* param_0) { - // NONMATCHING -} - -/* 809AC6F4-809AC90C 001B54 0218+00 1/0 0/0 0/0 .text dummyTalk__14daNpcDoorBoy_cFPv */ -void daNpcDoorBoy_c::dummyTalk(void* param_0) { - // NONMATCHING -} - -/* 809AC90C-809AC92C 001D6C 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Create__FPv */ -static void daNpcDoorBoy_Create(void* param_0) { - // NONMATCHING -} - -/* 809AC92C-809AC94C 001D8C 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Delete__FPv */ -static void daNpcDoorBoy_Delete(void* param_0) { - // NONMATCHING -} - -/* 809AC94C-809AC96C 001DAC 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Execute__FPv */ -static void daNpcDoorBoy_Execute(void* param_0) { - // NONMATCHING -} - -/* 809AC96C-809AC98C 001DCC 0020+00 1/0 0/0 0/0 .text daNpcDoorBoy_Draw__FPv */ -static void daNpcDoorBoy_Draw(void* param_0) { - // NONMATCHING -} - -/* 809AC98C-809AC994 001DEC 0008+00 1/0 0/0 0/0 .text daNpcDoorBoy_IsDelete__FPv */ -static bool daNpcDoorBoy_IsDelete(void* param_0) { - return true; -} - -/* 809AC994-809ACA58 001DF4 00C4+00 1/0 0/0 0/0 .text setParam__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::setParam() { - // NONMATCHING -} - -/* 809ACA58-809ACC5C 001EB8 0204+00 1/0 0/0 0/0 .text main__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::main() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADAF0-809ADAF4 000148 0004+00 0/1 0/0 0/0 .rodata @4942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4942 = 23.0f; -COMPILER_STRIP_GATE(0x809ADAF0, &lit_4942); -#pragma pop - -/* 809ADAF4-809ADAF8 00014C 0004+00 0/1 0/0 0/0 .rodata @4943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4943 = 55.0f; -COMPILER_STRIP_GATE(0x809ADAF4, &lit_4943); -#pragma pop - -/* 809ACC5C-809ACE18 0020BC 01BC+00 1/0 0/0 0/0 .text setAttnPos__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::setAttnPos() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADAF8-809ADAFC 000150 0004+00 0/1 0/0 0/0 .rodata @4984 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4984 = -80.0f; -COMPILER_STRIP_GATE(0x809ADAF8, &lit_4984); -#pragma pop - -/* 809ADAFC-809ADB00 000154 0004+00 0/1 0/0 0/0 .rodata @4985 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4985 = 80.0f; -COMPILER_STRIP_GATE(0x809ADAFC, &lit_4985); -#pragma pop - -/* 809ADB00-809ADB04 000158 0004+00 0/1 0/0 0/0 .rodata @4986 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4986 = 40.0f; -COMPILER_STRIP_GATE(0x809ADB00, &lit_4986); -#pragma pop - -/* 809ACE18-809ACFF8 002278 01E0+00 1/1 0/0 0/0 .text lookat__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::lookat() { - // NONMATCHING -} - -/* 809ACFF8-809AD0C8 002458 00D0+00 1/0 0/0 0/0 .text setMotionAnm__14daNpcDoorBoy_cFif - */ -bool daNpcDoorBoy_c::setMotionAnm(int param_0, f32 param_1) { - // NONMATCHING -} - -/* 809AD0C8-809AD0D0 002528 0008+00 1/0 0/0 0/0 .text drawDbgInfo__14daNpcDoorBoy_cFv */ -bool daNpcDoorBoy_c::drawDbgInfo() { - return false; -} - -/* 809AD0D0-809AD118 002530 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 -} - -/* 809AD118-809AD154 002578 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 -} - -/* 809AD154-809AD224 0025B4 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 -} - -/* 809AD224-809AD260 002684 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 809AD260-809AD264 0026C0 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 809AD264-809AD2A0 0026C4 003C+00 5/5 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 809AD2A0-809AD2A4 002700 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 809AD2A4-809AD4F0 002704 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */ -// daNpcF_c::~daNpcF_c() { -extern "C" void __dt__8daNpcF_cFv() { - // NONMATCHING -} - -/* 809AD4F0-809AD6E0 002950 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */ -// daNpcF_c::daNpcF_c() { -extern "C" void __ct__8daNpcF_cFv() { - // NONMATCHING -} - -/* 809AD6E0-809AD750 002B40 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 809AD750-809AD7AC 002BB0 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 809AD7AC-809AD81C 002C0C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 809AD81C-809AD864 002C7C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 809AD864-809AD86C 002CC4 0008+00 1/0 0/0 0/0 .text ctrlBtk__8daNpcF_cFv */ -// bool daNpcF_c::ctrlBtk() { -extern "C" bool ctrlBtk__8daNpcF_cFv() { - return false; -} - -/* 809AD86C-809AD870 002CCC 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */ -// void daNpcF_c::setCollisions() { -extern "C" void setCollisions__8daNpcF_cFv() { - /* empty function */ -} - -/* 809AD870-809AD878 002CD0 0008+00 1/0 0/0 0/0 .text setExpressionAnm__8daNpcF_cFib */ -// bool daNpcF_c::setExpressionAnm(int param_0, bool param_1) { -extern "C" bool setExpressionAnm__8daNpcF_cFib() { - return true; -} - -/* 809AD878-809AD880 002CD8 0008+00 1/0 0/0 0/0 .text setExpressionBtp__8daNpcF_cFi */ -// bool daNpcF_c::setExpressionBtp(int param_0) { -extern "C" bool setExpressionBtp__8daNpcF_cFi() { - return true; -} - -/* 809AD880-809AD884 002CE0 0004+00 1/0 0/0 0/0 .text setExpression__8daNpcF_cFif */ -// void daNpcF_c::setExpression(int param_0, f32 param_1) { -extern "C" void setExpression__8daNpcF_cFif() { - /* empty function */ -} - -/* 809AD884-809AD888 002CE4 0004+00 1/0 0/0 0/0 .text drawOtherMdls__8daNpcF_cFv */ -// void daNpcF_c::drawOtherMdls() { -extern "C" void drawOtherMdls__8daNpcF_cFv() { - /* empty function */ -} - -/* 809AD888-809AD8D0 002CE8 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809ADD40-809ADD4C 000218 000C+00 2/2 0/0 0/0 .data __vt__20daNpcDoorBoy_Param_c */ -SECTION_DATA extern void* __vt__20daNpcDoorBoy_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__20daNpcDoorBoy_Param_cFv, -}; - -/* 809ADD58-809ADD64 000008 000C+00 1/1 0/0 0/0 .bss @3904 */ -static u8 lit_3904[12]; - -/* 809ADD64-809ADD68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 809AD8D0-809AD938 002D30 0068+00 0/0 1/0 0/0 .text __sinit_d_a_npc_doorboy_cpp */ -void __sinit_d_a_npc_doorboy_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x809AD8D0, __sinit_d_a_npc_doorboy_cpp); -#pragma pop - -/* 809AD938-809AD93C 002D98 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__14daNpcDoorBoy_cFv */ -void daNpcDoorBoy_c::adjustShapeAngle() { - /* empty function */ -} - -/* 809AD93C-809AD984 002D9C 0048+00 2/1 0/0 0/0 .text __dt__20daNpcDoorBoy_Param_cFv */ -daNpcDoorBoy_Param_c::~daNpcDoorBoy_Param_c() { - // NONMATCHING -} - -/* 809AD984-809AD98C 002DE4 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_809AD984() { - // NONMATCHING -} - -/* 809AD98C-809AD994 002DEC 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_809AD98C() { - // NONMATCHING -} - -/* 809ADB04-809ADB04 00015C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */