From 9155add1f655667a89c39f9573d634c4dc358885 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Tue, 21 Oct 2025 11:33:59 -0700 Subject: [PATCH] d_a_npc_blue_ns mostly done (#2747) * d_a_npc_blue_ns mostly done * d_a_obj_poCandle / d_a_obj_poTbox done --- configure.py | 6 +- include/d/actor/d_a_npc.h | 3 +- include/d/actor/d_a_npc_blue_ns.h | 155 +- include/d/actor/d_a_npc_yamis.h | 15 +- include/d/actor/d_a_npc_yamit.h | 15 +- include/d/actor/d_a_obj_poCandle.h | 60 +- include/d/actor/d_a_obj_poTbox.h | 37 +- include/m_Do/m_Do_ext.h | 10 + src/d/actor/d_a_npc4.cpp | 4 +- src/d/actor/d_a_npc_blue_ns.cpp | 2897 ++++++++++++++-------------- src/d/actor/d_a_obj_poCandle.cpp | 725 +++---- src/d/actor/d_a_obj_poTbox.cpp | 642 +++--- src/f_op/f_op_actor_mng.cpp | 99 +- 13 files changed, 2294 insertions(+), 2374 deletions(-) diff --git a/configure.py b/configure.py index a09c61cd60..16aef81bcb 100755 --- a/configure.py +++ b/configure.py @@ -1842,7 +1842,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_ash", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_ashB", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_bans"), - ActorRel(NonMatching, "d_a_npc_blue_ns"), + ActorRel(NonMatching, "d_a_npc_blue_ns", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bou"), ActorRel(NonMatching, "d_a_npc_bouS"), ActorRel(NonMatching, "d_a_npc_cdn3"), @@ -2150,9 +2150,9 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_picture"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pillar"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pleaf"), - ActorRel(NonMatching, "d_a_obj_poCandle"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poCandle"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poFire"), - ActorRel(NonMatching, "d_a_obj_poTbox"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poTbox"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_prop"), ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_pumpkin"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_rcircle"), diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index f0cfcc579d..e3c100da1d 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -1047,7 +1047,7 @@ protected: /* 0x992 */ s16 field_0x992; /* 0x994 */ s16 mTurnStartAngle; /* 0x996 */ s16 mTurnTargetAngle; - /* 0x998 */ u16 field_0x998; + /* 0x998 */ s16 field_0x998; /* 0x99C */ u32 mAnmFlags; /* 0x9A0 */ u32 mShadowKey; /* 0x9A4 */ u32 field_0x9a4; @@ -1250,6 +1250,7 @@ BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX, f32* o_dist2); BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed, BOOL i_isReversed); +BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p); class daNpcF_MatAnm_c : public J3DMaterialAnm { private: diff --git a/include/d/actor/d_a_npc_blue_ns.h b/include/d/actor/d_a_npc_blue_ns.h index 4434564c2c..b6735b3fa4 100644 --- a/include/d/actor/d_a_npc_blue_ns.h +++ b/include/d/actor/d_a_npc_blue_ns.h @@ -2,6 +2,8 @@ #define D_A_NPC_BLUE_NS_H #include "d/actor/d_a_npc.h" +#include "d/actor/d_a_tag_yami.h" +#include "d/actor/d_a_obj_carry.h" /** * @ingroup actors-npcs @@ -11,78 +13,133 @@ * @details * */ -class daNpcBlueNS_c : public fopAc_ac_c { +class daNpcBlueNS_c : public daNpcF_c { public: + typedef BOOL (daNpcBlueNS_c::*EventFn)(int); + /* 8096896C */ daNpcBlueNS_c(); - /* 80968B80 */ ~daNpcBlueNS_c(); - /* 80968D44 */ void Create(); - /* 80968FE4 */ void CreateHeap(); - /* 80969138 */ void isDelete(); - /* 809691A8 */ void Delete(); - /* 809691DC */ void Execute(); - /* 80969200 */ void _Execute(); + + /* 80968D44 */ int Create(); + /* 80968FE4 */ int CreateHeap(); + /* 80969138 */ int isDelete(); + /* 809691A8 */ int Delete(); + /* 809691DC */ int Execute(); + /* 80969200 */ int _Execute(); /* 80969468 */ void callEvt_changeYami(); - /* 80969504 */ void create_Yamijin(int); - /* 809695F0 */ void col_check(); - /* 80969698 */ void holyball_check_main(fopAc_ac_c*); - /* 80969870 */ void Draw(); - /* 809699D0 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 80969B68 */ void createHeapCallBack(fopAc_ac_c*); - /* 80969B88 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80969BD4 */ void setParam(); + /* 80969504 */ fpc_ProcID create_Yamijin(int); + /* 809695F0 */ BOOL col_check(); + /* 80969698 */ BOOL holyball_check_main(fopAc_ac_c*); + /* 80969870 */ int Draw(); + /* 809699D0 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 80969B68 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80969B88 */ static int ctrlJointCallBack(J3DJoint*, int); /* 80969C48 */ void srchActor(); /* 80969C90 */ void srchHollyBall(); /* 80969CF8 */ void srchTagYami(); - /* 80969D60 */ void _search_Tag(void*, void*); - /* 80969DE4 */ void _search_HollyBall_Y(void*, void*); - /* 80969E9C */ void _search_HollyBall_G(void*, void*); - /* 80969F54 */ void main(); - /* 8096A090 */ void setAttnPos(); - /* 8096A238 */ bool setMotionAnm(int, f32); - /* 8096A308 */ void setMotion(int, f32, int); - /* 8096A350 */ bool drawDbgInfo(); + /* 80969D60 */ static void* _search_Tag(void*, void*); + /* 80969DE4 */ static void* _search_HollyBall_Y(void*, void*); + /* 80969E9C */ static void* _search_HollyBall_G(void*, void*); /* 8096A358 */ void reset(); /* 8096A518 */ void playMotion(); - /* 8096A750 */ void setAction(int (daNpcBlueNS_c::*)(int)); + /* 8096A750 */ int setAction(int (daNpcBlueNS_c::*)(int)); /* 8096A7F8 */ void setLookMode(int); /* 8096A81C */ void lookat(); - /* 8096A9FC */ void step(s16, int); - /* 8096AAF0 */ void chkFindPlayer(); - /* 8096ABD4 */ void wait(int); - /* 8096AD70 */ void down(int); - /* 8096AE5C */ void talk(int); - /* 8096AFC8 */ void demo(int); + /* 8096A9FC */ BOOL step(s16, int); + /* 8096AAF0 */ BOOL chkFindPlayer(); + /* 8096ABD4 */ int wait(int); + /* 8096AD70 */ int down(int); + /* 8096AE5C */ int talk(int); + /* 8096AFC8 */ int demo(int); /* 8096B204 */ void ChgPtclDisp(); /* 8096B320 */ void downSE(); /* 8096B3D8 */ void lightsowrdSE(); /* 8096B490 */ void appearSE(); - /* 8096B548 */ void _Evt_ChgYami_Chibi(int); - /* 8096B5F0 */ void _Evt_ChgYami_Chibi_CutInit(int const&); - /* 8096B688 */ void _Evt_ChgYami_Chibi_CutMain(int const&); - /* 8096B7B8 */ void _Evt_ChgYami_Debu(int); - /* 8096B860 */ void _Evt_ChgYami_Debu_CutInit(int const&); - /* 8096B8F8 */ void _Evt_ChgYami_Debu_CutMain(int const&); - /* 8096BA28 */ void _Evt_ChgYami_Noppo(int); - /* 8096BAD0 */ void _Evt_ChgYami_Noppo_CutInit(int const&); - /* 8096BB68 */ void _Evt_ChgYami_Noppo_CutMain(int const&); - /* 8096BC98 */ void _Evt_ChgYami_STNoppo(int); - /* 8096BD40 */ void _Evt_ChgYami_STNoppo_CutInit(int const&); - /* 8096BDD8 */ void _Evt_ChgYami_STNoppo_CutMain(int const&); - /* 8096C8B0 */ void adjustShapeAngle(); + /* 8096B548 */ BOOL _Evt_ChgYami_Chibi(int); + /* 8096B5F0 */ BOOL _Evt_ChgYami_Chibi_CutInit(const int&); + /* 8096B688 */ BOOL _Evt_ChgYami_Chibi_CutMain(const int&); + /* 8096B7B8 */ BOOL _Evt_ChgYami_Debu(int); + /* 8096B860 */ BOOL _Evt_ChgYami_Debu_CutInit(const int&); + /* 8096B8F8 */ BOOL _Evt_ChgYami_Debu_CutMain(const int&); + /* 8096BA28 */ BOOL _Evt_ChgYami_Noppo(int); + /* 8096BAD0 */ BOOL _Evt_ChgYami_Noppo_CutInit(const int&); + /* 8096BB68 */ BOOL _Evt_ChgYami_Noppo_CutMain(const int&); + /* 8096BC98 */ BOOL _Evt_ChgYami_STNoppo(int); + /* 8096BD40 */ BOOL _Evt_ChgYami_STNoppo_CutInit(const int&); + /* 8096BDD8 */ BOOL _Evt_ChgYami_STNoppo_CutMain(const int&); + + /* 80968B80 */ virtual ~daNpcBlueNS_c(); + /* 80969BD4 */ virtual void setParam(); + /* 80969F54 */ virtual BOOL main(); + /* 8096C8B0 */ virtual void adjustShapeAngle() {} + /* 8096A090 */ virtual void setAttnPos(); + /* 8096A238 */ virtual void setMotionAnm(int, f32); + /* 8096A308 */ virtual void setMotion(int, f32, int); + /* 8096A350 */ virtual BOOL drawDbgInfo(); - static u8 mEvtSeqList[84]; + int getType() { return fopAcM_GetParam(this) & 0xFF; } + u8 getSwitchBitNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } + u8 _chk_TagPrm(fopAc_ac_c* i_tag) { return (fopAcM_GetParam(i_tag) & 0xFF) == mType % 3; } -private: - /* 0x568 */ u8 field_0x568[0xe14 - 0x568]; + BOOL holyball_check_yellow() { return holyball_check_main(mpHolyBallY); } + BOOL holyball_check_green() { return holyball_check_main(mpHolyBallG); } + BOOL holyball_check() { return holyball_check_yellow() || holyball_check_green(); } + + int getFlowNodeNo() { + int var_r30; + + u16 temp_r0 = home.angle.x; + if (temp_r0 == 0xFFFF) { + var_r30 = -1; + } else { + var_r30 = temp_r0; + } + + return var_r30; + } + + static EventFn mEvtSeqList[]; + + /* 0xB48 */ Z2Creature mSound; + /* 0xBD8 */ u8 field_0xBD8[0xBDC - 0xBD8]; + /* 0xBDC */ daNpcF_Lookat_c mLookat; + /* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[1]; + /* 0xC80 */ u8 field_0xC80[0xC84 - 0xC80]; + /* 0xC84 */ dCcD_Cyl mCyl; + /* 0xDC0 */ u16 field_0xdc0; + /* 0xDC4 */ int (daNpcBlueNS_c::*mAction)(int); + /* 0xDD0 */ request_of_phase_process_class mPhase[1]; + /* 0xDD8 */ int field_0xdd8; + /* 0xDDC */ int field_0xddc; + /* 0xDE0 */ int field_0xde0; + /* 0xDE4 */ int mFlowNodeNo; + /* 0xDE8 */ s16 mLookMode; + /* 0xDEA */ s16 field_0xdea; + /* 0xDEC */ u8 field_0xdec; + /* 0xDF0 */ daObjCarry_c* mpHolyBallY; + /* 0xDF4 */ daObjCarry_c* mpHolyBallG; + /* 0xDF8 */ daTagYami_c* mpTagYami; + /* 0xDFC */ fopAc_ac_c* mpNpcYami; + /* 0xE00 */ fpc_ProcID mYamijinId; + /* 0xE04 */ int field_0xe04; + /* 0xE08 */ int field_0xe08; + /* 0xE0C */ int field_0xe0c; + /* 0xE10 */ s8 field_0xe10; + /* 0xE11 */ u8 mType; + /* 0xE12 */ s8 field_0xe12; }; STATIC_ASSERT(sizeof(daNpcBlueNS_c) == 0xe14); +struct daNpcBlueNS_HIOParam { + /* 0x00 */ daNpcF_HIOParam common; + /* 0x6C */ f32 field_0x6c; +}; + class daNpcBlueNS_Param_c { public: - /* 8096C8B4 */ ~daNpcBlueNS_Param_c(); + /* 8096C8B4 */ virtual ~daNpcBlueNS_Param_c() {} - static u8 const m[112]; + static const daNpcBlueNS_HIOParam m; }; diff --git a/include/d/actor/d_a_npc_yamis.h b/include/d/actor/d_a_npc_yamis.h index 77e81a709a..d62e1a7350 100644 --- a/include/d/actor/d_a_npc_yamis.h +++ b/include/d/actor/d_a_npc_yamis.h @@ -57,11 +57,24 @@ public: /* 80B495C8 */ void checkRemoveJoint(int); /* 80B495D8 */ void evtEndProc(); + void vanish_off() { + field_0xf81 = 0; + } + + void on_CoHit() { + field_0xe44.OnCoSetBit(); + field_0xe44.OnTgSetBit(); + } + static char* mCutNameList[2]; static u8 mCutList[24]; private: - /* 0x568 */ u8 field_0x568[0xfcc - 0x568]; + /* 0x568 */ u8 field_0x568[0xe44 - 0x568]; + /* 0xE44 */ dCcD_Cyl field_0xe44; + /* 0xF80 */ u8 field_0xf80; + /* 0xF81 */ u8 field_0xf81; + /* 0xF82 */ u8 field_0xf82[0xFCC - 0xF82]; }; STATIC_ASSERT(sizeof(daNpc_yamiS_c) == 0xfcc); diff --git a/include/d/actor/d_a_npc_yamit.h b/include/d/actor/d_a_npc_yamit.h index 298d206f8b..b4da5fa772 100644 --- a/include/d/actor/d_a_npc_yamit.h +++ b/include/d/actor/d_a_npc_yamit.h @@ -59,11 +59,24 @@ public: /* 80B4CD18 */ void checkChangeJoint(int); /* 80B4CD28 */ void checkRemoveJoint(int); + void vanish_off() { + field_0xf81 = 0; + } + + void on_CoHit() { + field_0xe44.OnCoSetBit(); + field_0xe44.OnTgSetBit(); + } + static char* mCutNameList[2]; static u8 mCutList[24]; private: - /* 0x568 */ u8 field_0x568[0xfcc - 0x568]; + /* 0x568 */ u8 field_0x568[0xe44 - 0x568]; + /* 0xE44 */ dCcD_Cyl field_0xe44; + /* 0xF80 */ u8 field_0xf80; + /* 0xF81 */ u8 field_0xf81; + /* 0xF82 */ u8 field_0xf82[0xFCC - 0xF82]; }; STATIC_ASSERT(sizeof(daNpc_yamiT_c) == 0xfcc); diff --git a/include/d/actor/d_a_obj_poCandle.h b/include/d/actor/d_a_obj_poCandle.h index 93c7c9bf33..21a88a040f 100644 --- a/include/d/actor/d_a_obj_poCandle.h +++ b/include/d/actor/d_a_obj_poCandle.h @@ -2,6 +2,8 @@ #define D_A_OBJ_POCANDLE_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_event_lib.h" /** * @ingroup actors-objects @@ -11,16 +13,16 @@ * @details * */ -class daPoCandle_c : public fopAc_ac_c { +class daPoCandle_c : public dBgS_MoveBgActor, public request_of_phase_process_class, public dEvLib_callback_c { public: + daPoCandle_c() : dEvLib_callback_c(this) {} + /* 80CB1AE4 */ void setBaseMtx(); - /* 80CB1B6C */ void CreateHeap(); - /* 80CB1BD8 */ void create(); + /* 80CB1BD8 */ int create(); /* 80CB1D74 */ void lightInit(); /* 80CB1E00 */ void setLight(); /* 80CB1E30 */ void cutLight(); /* 80CB1E60 */ void pointLightProc(); - /* 80CB1F10 */ void Execute(Mtx**); /* 80CB2140 */ void init_modeWait(); /* 80CB214C */ void modeWait(); /* 80CB21D8 */ void init_modeOnFire(); @@ -28,32 +30,44 @@ public: /* 80CB22F4 */ void modeOnSwWait(); /* 80CB2354 */ void init_modeEnd(); /* 80CB2360 */ void modeEnd(); - /* 80CB2364 */ void eventStart(); - /* 80CB2388 */ void Draw(); - /* 80CB242C */ void Delete(); - /* 80CB2610 */ ~daPoCandle_c(); + + /* 80CB1B6C */ virtual int CreateHeap(); + /* 80CB1F10 */ virtual int Execute(Mtx**); + /* 80CB2388 */ virtual int Draw(); + /* 80CB242C */ virtual int Delete(); - /* 80CB3E3C */ cXyz getFirePos() { return static_cast(mFirePos); } - u8 getIDNum() {return mIDNum;} - void setFireFlag(u8 flag) { field_0x5D2 = flag; } + /* 80CB2610 */ virtual ~daPoCandle_c() {} + /* 80CB2364 */ virtual bool eventStart(); + + /* 80CB3E3C */ cXyz getFirePos() { return mFirePos; } + + int getLightType() { return fopAcM_GetParamBit(this, 0x10, 8); } + int getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } + int getID() { return fopAcM_GetParamBit(this, 8, 8); } + + u8 getIDNum() { return mIDNum; } + void setFireFlag(u8 flag) { mFireFlag = flag; } private: - /* 0x568 */ u8 field_0x568[0x5C4 - 0x568]; + /* 0x5B8 */ request_of_phase_process_class mPhase; + /* 0x5C0 */ J3DModel* mpModel; /* 0x5C4 */ cXyz mFirePos; - /* 0x5D0 */ u8 field_0x5D0[0x5D2 - 0x5D0]; - /* 0x5D2 */ u8 field_0x5D2; - /* 0x5D3 */ u8 field_0x5D3[0x5D5 - 0x5D3]; + /* 0x5D0 */ u8 field_0x5d0; + /* 0x5D1 */ u8 mOnPlight; + /* 0x5D2 */ u8 mFireFlag; + /* 0x5D3 */ u8 mSwWaitTimer; + /* 0x5D4 */ u8 mSwbit; /* 0x5D5 */ u8 mIDNum; - /* 0x5DB */ u8 field_0x5DB[0x614 - 0x5D6]; + /* 0x5D6 */ u8 mMode; + /* 0x5D7 */ u8 mIsSwitch; + /* 0x5D8 */ u32 mGlowEmtID; + /* 0x5DC */ u32 mFireEmtID; + /* 0x5E0 */ cXyz mLightPos; + /* 0x5EC */ u8 mLightType; + /* 0x5F0 */ f32 mPlightRefDist; + /* 0x5F4 */ LIGHT_INFLUENCE mLight; }; STATIC_ASSERT(sizeof(daPoCandle_c) == 0x614); -class daPoCandle_HIO_c { -public: - /* 80CB1A6C */ daPoCandle_HIO_c(); - /* 80CB2508 */ ~daPoCandle_HIO_c(); -}; - - #endif /* D_A_OBJ_POCANDLE_H */ diff --git a/include/d/actor/d_a_obj_poTbox.h b/include/d/actor/d_a_obj_poTbox.h index 7b423127d0..44e1b8f0b3 100644 --- a/include/d/actor/d_a_obj_poTbox.h +++ b/include/d/actor/d_a_obj_poTbox.h @@ -2,6 +2,7 @@ #define D_A_OBJ_POTBOX_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" /** * @ingroup actors-objects @@ -11,12 +12,10 @@ * @details * */ -class daPoTbox_c : public fopAc_ac_c { +class daPoTbox_c : public dBgS_MoveBgActor { public: /* 80CB42C8 */ void setBaseMtx(); - /* 80CB43D0 */ void CreateHeap(); - /* 80CB46C4 */ void create(); - /* 80CB499C */ void Execute(Mtx**); + /* 80CB46C4 */ int create(); /* 80CB4AA8 */ void init_modeWait(); /* 80CB4AB4 */ void modeWait(); /* 80CB4B10 */ void init_modeOpen(); @@ -25,20 +24,30 @@ public: /* 80CB4C60 */ void modeOpenEnd(); /* 80CB4C84 */ void init_modeEnd(); /* 80CB4C90 */ void modeEnd(); - /* 80CB4C94 */ void Draw(); - /* 80CB4E14 */ void Delete(); + + /* 80CB43D0 */ virtual int CreateHeap(); + /* 80CB499C */ virtual int Execute(Mtx**); + /* 80CB4C94 */ virtual int Draw(); + /* 80CB4E14 */ virtual int Delete(); + + int getSw() { return fopAcM_GetParamBit(this, 0, 8); } + int getStat() { return fopAcM_GetParamBit(this, 8, 4); } private: - /* 0x568 */ u8 field_0x568[0x608 - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpBoxModel; + /* 0x5AC */ J3DModel* mpAnimModel; + /* 0x5B0 */ J3DModel* mpLightModel; + /* 0x5B4 */ dBgW* mpBgw2; + /* 0x5B8 */ mDoExt_bckAnm mBck; + /* 0x5D4 */ mDoExt_btkAnm mBtk; + /* 0x5EC */ mDoExt_brkAnm mBrk; + /* 0x604 */ u8 mMode; + /* 0x605 */ u8 field_0x605; + /* 0x606 */ u8 mStat; + /* 0x607 */ u8 mIsSwitch; }; STATIC_ASSERT(sizeof(daPoTbox_c) == 0x608); -class daPoTbox_HIO_c { -public: - /* 80CB424C */ daPoTbox_HIO_c(); - /* 80CB4F14 */ ~daPoTbox_HIO_c(); -}; - - #endif /* D_A_OBJ_POTBOX_H */ diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 8cd9408747..127daabc0d 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -15,6 +15,16 @@ class JKRSolidHeap; struct ResTIMG; class Z2Creature; +namespace mDoExt { + extern u8 HeapAdjustVerbose; + extern u8 HeapAdjustQuiet; +}; + +#if DEBUG +void DummyCheckHeap_create(); +void DummyCheckHeap_destroy(); +#endif + class mDoExt_baseAnm { public: mDoExt_baseAnm() {} diff --git a/src/d/actor/d_a_npc4.cpp b/src/d/actor/d_a_npc4.cpp index d7911af042..ff9e34a5ed 100644 --- a/src/d/actor/d_a_npc4.cpp +++ b/src/d/actor/d_a_npc4.cpp @@ -1906,8 +1906,8 @@ int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, } /* 80155854-80155968 150194 0114+00 0/0 0/0 1/1 .text daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c */ -bool daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p) { - bool ret = FALSE; +BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p) { + BOOL ret = FALSE; if (daPy_getPlayerActorClass()->checkPriActorOwn(i_actor_p)) { for (int i = 0; i < dComIfGp_getAttention()->GetActionCount(); i++) { diff --git a/src/d/actor/d_a_npc_blue_ns.cpp b/src/d/actor/d_a_npc_blue_ns.cpp index 05876335b4..faa035601a 100644 --- a/src/d/actor/d_a_npc_blue_ns.cpp +++ b/src/d/actor/d_a_npc_blue_ns.cpp @@ -6,260 +6,22 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_npc_blue_ns.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" void __ct__13daNpcBlueNS_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__13daNpcBlueNS_cFv(); -extern "C" void Create__13daNpcBlueNS_cFv(); -extern "C" void CreateHeap__13daNpcBlueNS_cFv(); -extern "C" void isDelete__13daNpcBlueNS_cFv(); -extern "C" void Delete__13daNpcBlueNS_cFv(); -extern "C" void Execute__13daNpcBlueNS_cFv(); -extern "C" void _Execute__13daNpcBlueNS_cFv(); -extern "C" void callEvt_changeYami__13daNpcBlueNS_cFv(); -extern "C" void create_Yamijin__13daNpcBlueNS_cFi(); -extern "C" void col_check__13daNpcBlueNS_cFv(); -extern "C" void holyball_check_main__13daNpcBlueNS_cFP10fopAc_ac_c(); -extern "C" void Draw__13daNpcBlueNS_cFv(); -extern "C" void ctrlJoint__13daNpcBlueNS_cFP8J3DJointP8J3DModel(); -extern "C" void createHeapCallBack__13daNpcBlueNS_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__13daNpcBlueNS_cFP8J3DJointi(); -extern "C" void setParam__13daNpcBlueNS_cFv(); -extern "C" void srchActor__13daNpcBlueNS_cFv(); -extern "C" void srchHollyBall__13daNpcBlueNS_cFv(); -extern "C" void srchTagYami__13daNpcBlueNS_cFv(); -extern "C" void _search_Tag__13daNpcBlueNS_cFPvPv(); -extern "C" void _search_HollyBall_Y__13daNpcBlueNS_cFPvPv(); -extern "C" void _search_HollyBall_G__13daNpcBlueNS_cFPvPv(); -extern "C" void main__13daNpcBlueNS_cFv(); -extern "C" void setAttnPos__13daNpcBlueNS_cFv(); -extern "C" void setMotionAnm__13daNpcBlueNS_cFif(); -extern "C" void setMotion__13daNpcBlueNS_cFifi(); -extern "C" bool drawDbgInfo__13daNpcBlueNS_cFv(); -extern "C" void reset__13daNpcBlueNS_cFv(); -extern "C" void playMotion__13daNpcBlueNS_cFv(); -extern "C" void setAction__13daNpcBlueNS_cFM13daNpcBlueNS_cFPCvPvi_i(); -extern "C" void setLookMode__13daNpcBlueNS_cFi(); -extern "C" void lookat__13daNpcBlueNS_cFv(); -extern "C" void step__13daNpcBlueNS_cFsi(); -extern "C" void chkFindPlayer__13daNpcBlueNS_cFv(); -extern "C" void wait__13daNpcBlueNS_cFi(); -extern "C" void down__13daNpcBlueNS_cFi(); -extern "C" void talk__13daNpcBlueNS_cFi(); -extern "C" void demo__13daNpcBlueNS_cFi(); -extern "C" void ChgPtclDisp__13daNpcBlueNS_cFv(); -extern "C" void downSE__13daNpcBlueNS_cFv(); -extern "C" void lightsowrdSE__13daNpcBlueNS_cFv(); -extern "C" void appearSE__13daNpcBlueNS_cFv(); -extern "C" void _Evt_ChgYami_Chibi__13daNpcBlueNS_cFi(); -extern "C" void _Evt_ChgYami_Chibi_CutInit__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_Chibi_CutMain__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_Debu__13daNpcBlueNS_cFi(); -extern "C" void _Evt_ChgYami_Debu_CutInit__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_Debu_CutMain__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_Noppo__13daNpcBlueNS_cFi(); -extern "C" void _Evt_ChgYami_Noppo_CutInit__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_Noppo_CutMain__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_STNoppo__13daNpcBlueNS_cFi(); -extern "C" void _Evt_ChgYami_STNoppo_CutInit__13daNpcBlueNS_cFRCi(); -extern "C" void _Evt_ChgYami_STNoppo_CutMain__13daNpcBlueNS_cFRCi(); -extern "C" static void daNpcBlueNS_Create__FPv(); -extern "C" static void daNpcBlueNS_Delete__FPv(); -extern "C" static void daNpcBlueNS_Execute__FPv(); -extern "C" static void daNpcBlueNS_Draw__FPv(); -extern "C" static bool daNpcBlueNS_IsDelete__FPv(); -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 setCollisions__8daNpcF_cFv(); -extern "C" bool ctrlBtk__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 func_8096C790(void* _this, int*); -extern "C" void __sinit_d_a_npc_blue_ns_cpp(); -extern "C" void adjustShapeAngle__13daNpcBlueNS_cFv(); -extern "C" void __dt__19daNpcBlueNS_Param_cFv(); -extern "C" static void func_8096C8FC(); -extern "C" static void func_8096C904(); -extern "C" u8 const m__19daNpcBlueNS_Param_c[112]; -extern "C" extern char const* const d_a_npc_blue_ns__stringBase0; -extern "C" u8 mEvtSeqList__13daNpcBlueNS_c[84]; - -// -// External References: -// - -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcM_IsCreating__FUi(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__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 -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void daNpcT_chkEvtBit__FUl(); -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 setMtx__8daNpcF_cFv(); -extern "C" void setMtx2__8daNpcF_cFv(); -extern "C" void initialize__8daNpcF_cFv(); -extern "C" void getTrnsfrmKeyAnmP__8daNpcF_cFPci(); -extern "C" void setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii(); -extern "C" void setEnvTevColor__8daNpcF_cFv(); -extern "C" void setRoomNo__8daNpcF_cFv(); -extern "C" void playAllAnm__8daNpcF_cFv(); -extern "C" void playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData(); -extern "C" void setLookatMtx__8daNpcF_cFiPif(); -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 daNpcF_getGroundAngle__FP13cBgS_PolyInfos(); -extern "C" void daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void getEventId__10dMsgFlow_cFPi(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -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_chaseF__FPfff(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void __dt__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -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" 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: -// - -/* ############################################################################################## */ -/* 8096CB4C-8096CB4C 00022C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8096CB4C = "Blue_NS"; -SECTION_DEAD static char const* const stringBase_8096CB54 = "CHG_YAMI_CHIBI"; -SECTION_DEAD static char const* const stringBase_8096CB63 = "CHG_YAMI_DEBU"; -SECTION_DEAD static char const* const stringBase_8096CB71 = "CHG_YAMI_NOPPO"; -SECTION_DEAD static char const* const stringBase_8096CB80 = "CHG_YAMI_NOPPO_STOPPER"; -#pragma pop +#include "d/d_s_play.h" +#include "d/actor/d_a_npc_yamis.h" +#include "d/actor/d_a_npc_yamid.h" +#include "d/actor/d_a_npc_yamit.h" /* 8096CBC0-8096CC2C 000020 006C+00 1/1 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[108] = { - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam2 l_bckGetParamList[9] = { + {11, 2, 0}, + {12, 2, 0}, + {13, 2, 0}, + {8, 0, 0}, + {9, 0, 0}, + {10, 0, 0}, + {5, 0, 0}, + {6, 0, 0}, + {7, 0, 0}, }; /* 8096CC2C-8096CC30 -00001 0004+00 4/5 0/0 0/0 .data l_arcNames */ @@ -279,161 +41,1449 @@ static char* l_evtNames[7] = { /* 8096CC4C-8096CC50 -00001 0004+00 0/2 0/0 0/0 .data l_myName */ static char* l_myName = "Blue_NS"; -/* 8096CC50-8096CC5C -00001 000C+00 0/1 0/0 0/0 .data @3890 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3890[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)_Evt_ChgYami_Chibi__13daNpcBlueNS_cFi, -}; -#pragma pop - -/* 8096CC5C-8096CC68 -00001 000C+00 0/1 0/0 0/0 .data @3891 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3891[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)_Evt_ChgYami_Debu__13daNpcBlueNS_cFi, -}; -#pragma pop - -/* 8096CC68-8096CC74 -00001 000C+00 0/1 0/0 0/0 .data @3892 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3892[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)_Evt_ChgYami_Noppo__13daNpcBlueNS_cFi, -}; -#pragma pop - -/* 8096CC74-8096CC80 -00001 000C+00 0/1 0/0 0/0 .data @3893 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3893[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)_Evt_ChgYami_STNoppo__13daNpcBlueNS_cFi, -}; -#pragma pop - -/* 8096CC80-8096CC8C -00001 000C+00 0/1 0/0 0/0 .data @3894 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3894[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)_Evt_ChgYami_STNoppo__13daNpcBlueNS_cFi, -}; -#pragma pop - -/* 8096CC8C-8096CC98 -00001 000C+00 0/1 0/0 0/0 .data @3895 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3895[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)_Evt_ChgYami_STNoppo__13daNpcBlueNS_cFi, -}; -#pragma pop +/* 8096CE94-8096CE98 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +static daNpcBlueNS_Param_c l_HIO; /* 8096CC98-8096CCEC 0000F8 0054+00 0/2 0/0 0/0 .data mEvtSeqList__13daNpcBlueNS_c */ -#pragma push -#pragma force_active on -SECTION_DATA u8 daNpcBlueNS_c::mEvtSeqList[84] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 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 - -/* 8096CCEC-8096CCF8 -00001 000C+00 1/1 0/0 0/0 .data @4401 */ -SECTION_DATA static void* lit_4401[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpcBlueNS_cFi, +daNpcBlueNS_c::EventFn daNpcBlueNS_c::mEvtSeqList[] = { + NULL, + &daNpcBlueNS_c::_Evt_ChgYami_Chibi, + &daNpcBlueNS_c::_Evt_ChgYami_Debu, + &daNpcBlueNS_c::_Evt_ChgYami_Noppo, + &daNpcBlueNS_c::_Evt_ChgYami_STNoppo, + &daNpcBlueNS_c::_Evt_ChgYami_STNoppo, + &daNpcBlueNS_c::_Evt_ChgYami_STNoppo, }; -/* 8096CCF8-8096CD04 -00001 000C+00 1/1 0/0 0/0 .data @4461 */ -SECTION_DATA static void* lit_4461[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)down__13daNpcBlueNS_cFi, +/* 8096896C-80968AF0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__13daNpcBlueNS_cFv */ +daNpcBlueNS_c::daNpcBlueNS_c() {} + +/* 80968B80-80968D44 000300 01C4+00 1/0 0/0 0/0 .text __dt__13daNpcBlueNS_cFv */ +daNpcBlueNS_c::~daNpcBlueNS_c() { + for (int i = 0; i < ARRAY_SIZE(l_arcNames); i++) { + dComIfG_resDelete(&mPhase[i], l_arcNames[i]); + } + + if (heap != NULL) { + mpMorf->stopZelAnime(); + } +} + +/* 8096C920-8096C964 000000 0044+00 8/8 0/0 0/0 .rodata l_cyl_src */ +const static dCcD_SrcCyl l_cyl_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x8}, // mGObjAt + {dCcD_SE_NONE, 0x8, 0x0, 0x0, 0x0}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; -/* 8096CD04-8096CD10 -00001 000C+00 1/1 0/0 0/0 .data @4884 */ -SECTION_DATA static void* lit_4884[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpcBlueNS_cFi, +/* 8096C964-8096C9D4 000044 0070+00 3/9 0/0 0/0 .rodata m__19daNpcBlueNS_Param_c */ +const daNpcBlueNS_HIOParam daNpcBlueNS_Param_c::m = { + 55.0f, + -3.0f, + 1.0f, + 2000.0f, + 255.0f, + 300.0f, + 35.0f, + 105.0f, + 0.0f, + 0.0f, + 10.0f, + -10.0f, + 30.0f, + -10.0f, + 45.0f, + -45.0f, + 0.6f, + 12.0f, + 2, + 6, + 3, + 6, + 60.0f, + 500.0f, + 300.0f, + -300.0f, + 60, + 0, + 0, + 0, + 0, + 0, + 0, + 300.0f, }; -/* 8096CD10-8096CD1C -00001 000C+00 0/1 0/0 0/0 .data @5065 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5065[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__13daNpcBlueNS_cFi, -}; -#pragma pop +/* 80968D44-80968FE4 0004C4 02A0+00 1/1 0/0 0/0 .text Create__13daNpcBlueNS_cFv */ +int daNpcBlueNS_c::Create() { + fopAcM_ct(this, daNpcBlueNS_c); -/* 8096CD1C-8096CD28 -00001 000C+00 0/1 0/0 0/0 .data @5070 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5070[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo__13daNpcBlueNS_cFi, -}; -#pragma pop + mType = getType(); + mFlowNodeNo = getFlowNodeNo(); -/* 8096CD28-8096CD34 -00001 000C+00 1/1 0/0 0/0 .data @5100 */ -SECTION_DATA static void* lit_5100[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpcBlueNS_cFi, -}; + int phase_state = cPhs_ERROR_e; + for (int i = 0; i < ARRAY_SIZE(l_arcNames); i++) { + phase_state = dComIfG_resLoad(&mPhase[i], l_arcNames[i]); + if (phase_state != cPhs_COMPLEATE_e) { + return phase_state; + } + } -/* 8096CD34-8096CD40 -00001 000C+00 0/0 0/0 0/0 .data @5122 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5122[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpcBlueNS_cFi, -}; -#pragma pop + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x1F20)) { + return cPhs_ERROR_e; + } -/* 8096CD40-8096CD4C -00001 000C+00 1/1 0/0 0/0 .data @5146 */ -SECTION_DATA static void* lit_5146[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpcBlueNS_cFi, -}; + if (isDelete()) { + return cPhs_ERROR_e; + } -/* 8096CD4C-8096CD58 -00001 000C+00 0/1 0/0 0/0 .data @5193 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5193[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__13daNpcBlueNS_cFi, -}; -#pragma pop + mTwilight = dKy_darkworld_check(); + + mpMorf->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeFar(this, 3.0f); + fopAcM_setCullSizeBox(this, -120.0f, -10.0f, -120.0f, 120.0f, 220.0f, 120.0f); + + mSound.init(¤t.pos, &eyePos, 3, 1); + + mAcchCir.SetWall(daNpcBlueNS_Param_c::m.common.width, daNpcBlueNS_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(daNpcBlueNS_Param_c::m.common.weight, 0, this); + mCyl.Set(l_cyl_src); + mCyl.SetStts(&mCcStts); + mCyl.SetH(daNpcBlueNS_Param_c::m.common.height); + mCyl.SetR(daNpcBlueNS_Param_c::m.common.width); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + + field_0xe10 = 1; + field_0xe12 = 0; + mpHolyBallY = NULL; + mpHolyBallG = NULL; + mpTagYami = NULL; + mpNpcYami = NULL; + mYamijinId = fpcM_ERROR_PROCESS_ID_e; + setEnvTevColor(); + setRoomNo(); + reset(); + Execute(); + } + + return phase_state; +} + +/* 80968FE4-80969138 000764 0154+00 1/1 0/0 0/0 .text CreateHeap__13daNpcBlueNS_cFv */ +int daNpcBlueNS_c::CreateHeap() { + J3DModelData* mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_arcNames[0], 0x10); + JUT_ASSERT(406, NULL != mdlData_p); + + mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mpMorf != NULL && mpMorf->getModel() == NULL) { + mpMorf->stopZelAnime(); + mpMorf = NULL; + } + + if (mpMorf == NULL) { + return 0; + } + + J3DModel* mdl_p = mpMorf->getModel(); + for (u16 i = 0; i < mdlData_p->getJointNum(); i++) { + mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } + + mdl_p->setUserArea((uintptr_t)this); + setMotion(0, -1.0f, 0); + return 1; +} + +/* 80969138-809691A8 0008B8 0070+00 1/1 0/0 0/0 .text isDelete__13daNpcBlueNS_cFv */ +int daNpcBlueNS_c::isDelete() { + BOOL rt = FALSE; + if (daNpcT_chkEvtBit(0x23A) || fopAcM_isSwitch(this, getSwitchBitNo())) { + rt = TRUE; + } + + return rt; +} + +/* 809691A8-809691DC 000928 0034+00 1/1 0/0 0/0 .text Delete__13daNpcBlueNS_cFv */ +int daNpcBlueNS_c::Delete() { + fpc_ProcID id = fopAcM_GetID(this); + this->~daNpcBlueNS_c(); + return 1; +} + +/* 809691DC-80969200 00095C 0024+00 2/2 0/0 0/0 .text Execute__13daNpcBlueNS_cFv */ +int daNpcBlueNS_c::Execute() { + _Execute(); + return 1; +} + +/* 80969200-80969468 000980 0268+00 1/1 0/0 0/0 .text _Execute__13daNpcBlueNS_cFv */ +// NONMATCHING - small regalloc +int daNpcBlueNS_c::_Execute() { + setParam(); + + if (main()) { + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + } + + if (-G_CM3D_F_INF != mGroundH) { + field_0x998 = daNpcF_getGroundAngle(&mGndChk, mCurAngle.y); + setEnvTevColor(); + setRoomNo(); + } + + playAllAnm(); + adjustShapeAngle(); + setAttnPos(); + cLib_chaseF(&mExpressionMorf, 0.0f, 1.0f); + setCollisions(); + + if (mTwilight) { + attention_info.flags |= fopAc_AttnFlag_UNK_0x400000; + if (daNpcF_chkDoBtnEqSpeak(this)) { + dComIfGp_setDoStatusForce(59, 0); + } + } + + mOldAngle = mCurAngle; + mCutType = 0; + mOrderSpeakEvt = 0; + mOrderNewEvt = 0; + field_0x9eb = 0; + field_0x9ef = 0; + field_0x9f3 = 0; + + for (int i = 0; i < 5; i++) { + if ((mAttnChangeTimer == 0 || mAttnIdx != i) && mAttnActorTimer[i] != 0 && cLib_calcTimer(&mAttnActorTimer[i]) == 0) { + mAttnActor[i].remove(); + } + } + + if (mDamageTimer != 0) { + cLib_calcTimer(&mDamageTimer); + } +} + +/* 80969468-80969504 000BE8 009C+00 1/1 0/0 0/0 .text callEvt_changeYami__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::callEvt_changeYami() { + static const u16 sCallEvtName[] = { + 1, 2, 3, 4, 5, 6, + }; + + mCyl.OffCoSetBit(); + fopAcM_onSwitch(this, getSwitchBitNo()); + mOrderEvtNo = sCallEvtName[mType]; + OS_REPORT("-------mOrderEvtNo = %d\n", mOrderEvtNo); + eventInfo.setIdx(1); + setAction(&daNpcBlueNS_c::wait); +} + +/* 80969504-809695F0 000C84 00EC+00 5/5 0/0 0/0 .text create_Yamijin__13daNpcBlueNS_cFi + */ +fpc_ProcID daNpcBlueNS_c::create_Yamijin(int param_0) { + static const s16 sNameYami[] = { + PROC_NPC_YAMIS, + PROC_NPC_YAMID, + PROC_NPC_YAMIT, + }; + + int var_r30 = mType / 3; + int type = mType % 3; + if (var_r30 != 0 && type != 2) { + var_r30 = 0; + type = 2; + } + + int swbit = (getSwitchBitNo() << 0x10) & 0xFF0000; + u32 parameters; + if (param_0 != 0) { + parameters = var_r30 | swbit; + } else { + parameters = var_r30 | swbit | 0x10000000; + } + + cXyz pos(current.pos); + csXyz angle(current.angle); + angle.x = getFlowNodeNo(); + cXyz size(1.0f, 1.0f, 1.0f); + return fopAcM_create(sNameYami[type], parameters, &pos, fopAcM_GetRoomNo(this), &angle, &size, -1); +} + +/* 809695F0-80969698 000D70 00A8+00 1/1 0/0 0/0 .text col_check__13daNpcBlueNS_cFv */ +BOOL daNpcBlueNS_c::col_check() { + if (mCyl.ChkTgHit()) { + cCcD_Obj* tg_hit_obj = mCyl.GetTgHitObj(); + if (tg_hit_obj != NULL && tg_hit_obj->ChkAtType(AT_TYPE_NORMAL_SWORD) && mCyl.GetTgHitGObj()->GetAtMtrl() == dCcD_MTRL_LIGHT) { + OS_REPORT("---------------HIT LIGHTNING SWORD!!\n"); + lightsowrdSE(); + return TRUE; + } + + setAction(&daNpcBlueNS_c::down); + } + + return FALSE; +} + +/* 80969698-80969870 000E18 01D8+00 1/1 0/0 0/0 .text + * holyball_check_main__13daNpcBlueNS_cFP10fopAc_ac_c */ +BOOL daNpcBlueNS_c::holyball_check_main(fopAc_ac_c* i_actor) { + if (i_actor == NULL) { + return FALSE; + } + + if (!fopAcM_checkCarryNow(i_actor)) { + return FALSE; + } + + f32 dist, range; + switch (mType) { + case 5: { + cXyz sp14(248.75623f, 800.0f, 5368.2173f); + f32 temp_f29 = 700.0f; + + cXyz sp8 = *fopAcM_GetPosition_p(i_actor) - sp14; + dist = sp8.absXZ(); + range = 40.0f + temp_f29; + break; + } + case 3: + case 4: + dist = fopAcM_searchActorDistanceXZ(this, i_actor); + range = 1000.0f; + break; + default: + dist = fopAcM_searchActorDistanceXZ(this, i_actor); + range = daNpcBlueNS_Param_c::m.field_0x6c; + } + + return dist <= range; +} + +/* 80969870-809699D0 000FF0 0160+00 1/1 0/0 0/0 .text Draw__13daNpcBlueNS_cFv */ +int daNpcBlueNS_c::Draw() { + if (field_0xe10 == 0) { + return 1; + } + + J3DModel* mdl_p = mpMorf->getModel(); + mdl_p->getModelData(); + + tevStr.TevColor.r = 0; + tevStr.TevColor.g = 0; + tevStr.TevColor.b = 0; + tevStr.TevColor.a = 0; + + if (mTwilight) { + g_env_light.settingTevStruct(2, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mdl_p, &tevStr); + dComIfGd_setListDark(); + mpMorf->entryDL(); + dComIfGd_setList(); + } else { + g_env_light.settingTevStruct(2, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mdl_p, &tevStr); + mpMorf->entryDL(); + } + + mShadowKey = dComIfGd_setShadow(mShadowKey, 1, mdl_p, ¤t.pos, daNpcBlueNS_Param_c::m.common.real_shadow_size, 20.0f + tREG_F(3), current.pos.y, mGroundH, mGndChk, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + return 1; +} + +/* 809699D0-80969B68 001150 0198+00 1/1 0/0 0/0 .text + * ctrlJoint__13daNpcBlueNS_cFP8J3DJointP8J3DModel */ +int daNpcBlueNS_c::ctrlJoint(J3DJoint* param_0, J3DModel* i_model) { + int jnt_no = param_0->getJntNo(); + int spC[] = {1, 3, 4}; + + if (jnt_no == 0) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&mLookatPos[0]); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3)); + mDoMtx_stack_c::multVecZero(&mLookatPos[1]); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mLookatPos[2]); + } + + mDoMtx_stack_c::copy(i_model->getAnmMtx(jnt_no)); + + switch (jnt_no) { + case 1: + case 3: + case 4: + setLookatMtx(jnt_no, spC, daNpcBlueNS_Param_c::m.common.neck_rotation_ratio); + } + + i_model->setAnmMtx(jnt_no, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + return 1; +} + +/* 80969B68-80969B88 0012E8 0020+00 1/1 0/0 0/0 .text + * createHeapCallBack__13daNpcBlueNS_cFP10fopAc_ac_c */ +int daNpcBlueNS_c::createHeapCallBack(fopAc_ac_c* i_this) { + return ((daNpcBlueNS_c*)i_this)->CreateHeap(); +} + +/* 80969B88-80969BD4 001308 004C+00 1/1 0/0 0/0 .text + * ctrlJointCallBack__13daNpcBlueNS_cFP8J3DJointi */ +int daNpcBlueNS_c::ctrlJointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + J3DModel* mdl_p = j3dSys.getModel(); + daNpcBlueNS_c* i_this = (daNpcBlueNS_c*)mdl_p->getUserArea(); + if (i_this != NULL) { + i_this->ctrlJoint(i_joint, mdl_p); + } + } + + return 1; +} + +/* 80969BD4-80969C48 001354 0074+00 1/0 0/0 0/0 .text setParam__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::setParam() { + srchActor(); + + attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcBlueNS_Param_c::m.common.attention_distance, daNpcBlueNS_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(daNpcBlueNS_Param_c::m.common.talk_distance, daNpcBlueNS_Param_c::m.common.talk_angle); + attention_info.flags = 0; + + #if !PLATFORM_GCN + scale.set(daNpcBlueNS_Param_c::m.common.scale, daNpcBlueNS_Param_c::m.common.scale, daNpcBlueNS_Param_c::m.common.scale); + mAcchCir.SetWallR(daNpcBlueNS_Param_c::m.common.width); + mAcchCir.SetWallH(daNpcBlueNS_Param_c::m.common.height); + gravity = daNpcBlueNS_Param_c::m.common.gravity; + #endif +} + +/* 80969C48-80969C90 0013C8 0048+00 1/1 0/0 0/0 .text srchActor__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::srchActor() { + srchHollyBall(); + + switch (mType) { + case 5: + srchTagYami(); + break; + case 1: + case 2: + case 3: + case 4: + break; + } +} + +/* 80969C90-80969CF8 001410 0068+00 1/1 0/0 0/0 .text srchHollyBall__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::srchHollyBall() { + if (mpHolyBallY == NULL) { + mpHolyBallY = (daObjCarry_c*)fpcM_Search(_search_HollyBall_Y, this); + } + + if (mpHolyBallG == NULL) { + mpHolyBallG = (daObjCarry_c*)fpcM_Search(_search_HollyBall_G, this); + } +} + +/* 80969CF8-80969D60 001478 0068+00 1/1 0/0 0/0 .text srchTagYami__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::srchTagYami() { + if (mpTagYami == NULL) { + mpTagYami = (daTagYami_c*)fpcM_Search(_search_Tag, this); + if (mpTagYami != NULL) { + mpTagYami->off_CoHit(); + } + } +} + +/* 80969D60-80969DE4 0014E0 0084+00 1/1 0/0 0/0 .text _search_Tag__13daNpcBlueNS_cFPvPv + */ +void* daNpcBlueNS_c::_search_Tag(void* i_actor, void* i_data) { + if (!fopAcM_IsActor(i_actor)) { + return NULL; + } + + if (fopAcM_GetName(i_actor) == PROC_TAG_YAMI && ((daNpcBlueNS_c*)i_data)->_chk_TagPrm((fopAc_ac_c*)i_actor)) { + return i_actor; + } + + return NULL; +} + +/* 80969DE4-80969E9C 001564 00B8+00 1/1 0/0 0/0 .text _search_HollyBall_Y__13daNpcBlueNS_cFPvPv */ +void* daNpcBlueNS_c::_search_HollyBall_Y(void* i_actor, void* i_data) { + if (!fopAcM_IsActor(i_actor)) { + return NULL; + } + + if (fpcM_IsCreating(fopAcM_GetID(i_actor))) { + return NULL; + } + + if (fopAcM_GetName(i_actor) != PROC_Obj_Carry) { + return NULL; + } + + if (!((daObjCarry_c*)i_actor)->prm_chk_type_lightball()) { + return NULL; + } + + if (((daObjCarry_c*)i_actor)->getType() != daObjCarry_c::TYPE_BALL_S) { + return NULL; + } + + return i_actor; +} + +/* 80969E9C-80969F54 00161C 00B8+00 1/1 0/0 0/0 .text _search_HollyBall_G__13daNpcBlueNS_cFPvPv */ +void* daNpcBlueNS_c::_search_HollyBall_G(void* i_actor, void* i_data) { + if (!fopAcM_IsActor(i_actor)) { + return NULL; + } + + if (fpcM_IsCreating(fopAcM_GetID(i_actor))) { + return NULL; + } + + if (fopAcM_GetName(i_actor) != PROC_Obj_Carry) { + return NULL; + } + + if (!((daObjCarry_c*)i_actor)->prm_chk_type_lightball()) { + return NULL; + } + + if (((daObjCarry_c*)i_actor)->getType() != daObjCarry_c::TYPE_BALL_S_2) { + return NULL; + } + + return i_actor; +} + +/* 80969F54-8096A090 0016D4 013C+00 1/0 0/0 0/0 .text main__13daNpcBlueNS_cFv */ +BOOL daNpcBlueNS_c::main() { + if (fopAcM_isSwitch(this, 88)) { + mYamijinId = create_Yamijin(1); + fopAcM_onSwitch(this, getSwitchBitNo()); + fopAcM_delete(this); + } else { + if (mAction != NULL) { + (this->*mAction)(0); + } + + if (col_check()) { + if (field_0xe12 == 0) { + callEvt_changeYami(); + field_0xe12 = 1; + } + } else if (field_0xe12 == 0 && holyball_check()) { + callEvt_changeYami(); + field_0xe12 = 1; + } + + playMotion(); + } + + return 0; +} + +/* 8096A090-8096A238 001810 01A8+00 1/0 0/0 0/0 .text setAttnPos__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::setAttnPos() { + if (mLookMode == LOOK_RESET) { + for (int i = 0; i < 3; i++) { + mLookatAngle[i].setall(0); + } + } + + daNpcF_c::setMtx(); + lookat(); + + cXyz sp20(10.0f, 15.0f, 0.0f); + + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mHeadPos); + mDoMtx_stack_c::multVec(&sp20, &eyePos); + sp20.x = 0.0f; + mDoMtx_stack_c::multVec(&sp20, &sp20); + + mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &sp20); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &sp20); + + attention_info.position.set(mHeadPos.x, mHeadPos.y + daNpcBlueNS_Param_c::m.common.attention_offset, mHeadPos.z); + + cXyz cyl_center; + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&cyl_center); + cyl_center.y = current.pos.y; + + mCyl.SetC(cyl_center); + dComIfG_Ccsp()->Set(&mCyl); +} + +/* 8096A238-8096A308 0019B8 00D0+00 1/0 0/0 0/0 .text setMotionAnm__13daNpcBlueNS_cFif */ +void daNpcBlueNS_c::setMotionAnm(int i_idx, f32 i_morf) { + J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], + l_bckGetParamList[i_idx].fileIdx); + int morfAttr = l_bckGetParamList[i_idx].attr; + + mAnmFlags &= ~(ANM_PLAY_MORF | ANM_PAUSE_MORF); + + if (morfAnm != NULL) { + if (setMcaMorfAnm(morfAnm, 1.0f, i_morf, morfAttr, 0, -1)) { + mAnmFlags |= ANM_PAUSE_MORF | ANM_PLAY_MORF; + mMotionLoops = 0; + } + } +} + +/* 8096A308-8096A350 001A88 0048+00 1/0 0/0 0/0 .text setMotion__13daNpcBlueNS_cFifi */ +void daNpcBlueNS_c::setMotion(int param_0, f32 param_1, int param_2) { + s16 var_r31 = param_0; + if ((param_2 != 0 || mMotion != var_r31) && param_0 >= 0 && param_0 < 9) { + mMotion = var_r31; + mMotionMorfOverride = param_1; + mMotionPrevPhase = -1; + mMotionPhase = 0; + field_0xdea = 0; + } +} + +/* 8096A350-8096A358 001AD0 0008+00 1/0 0/0 0/0 .text drawDbgInfo__13daNpcBlueNS_cFv */ +BOOL daNpcBlueNS_c::drawDbgInfo() { + return false; +} + +/* 8096A358-8096A518 001AD8 01C0+00 1/1 0/0 0/0 .text reset__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::reset() { + int type = mType % 3; + if ((mType / 3) != 0) { + type = 2; + } + + static const int sWaitAnm[] = {1, 0, 2}; + static const int sDamageAnm[] = {4, 3, 5}; + static const int sAppearAnm[] = {7, 6, 8}; + + field_0xe04 = sWaitAnm[type]; + field_0xe08 = sDamageAnm[type]; + field_0xe0c = sAppearAnm[type]; + + initialize(); + mLookat.initialize(); + + for (int i = 0; i < ARRAY_SIZE(mActorMngr); i++) { + mActorMngr[i].initialize(); + } + + field_0xddc = 0; + field_0xde0 = 0; + mAction = NULL; + mLookMode = -1; + field_0xdc0 = 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_0xdd8 = -1; + mOrderEvtNo = 0; + setAction(&daNpcBlueNS_c::wait); + mMotionMorfOverride = 0.0f; +} + +/* 8096A518-8096A750 001C98 0238+00 1/1 0/0 0/0 .text playMotion__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::playMotion() { + daNpcF_anmPlayData anm0_phase1 = {0, 0.0f, 0}; + daNpcF_anmPlayData* anm0[] = {&anm0_phase1}; + + daNpcF_anmPlayData anm1_phase1 = {1, 0.0f, 0}; + daNpcF_anmPlayData* anm1[] = {&anm1_phase1}; + + daNpcF_anmPlayData anm2_phase1 = {2, 0.0f, 0}; + daNpcF_anmPlayData* anm2[] = {&anm2_phase1}; + + daNpcF_anmPlayData anm3_phase1 = {3, 0.0f, 0}; + daNpcF_anmPlayData* anm3[] = {&anm3_phase1}; + + daNpcF_anmPlayData anm4_phase1 = {4, 0.0f, 0}; + daNpcF_anmPlayData* anm4[] = {&anm4_phase1}; + + daNpcF_anmPlayData anm5_phase1 = {5, 0.0f, 0}; + daNpcF_anmPlayData* anm5[] = {&anm5_phase1}; + + daNpcF_anmPlayData anm6_phase1 = {6, daNpcBlueNS_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm6[] = {&anm6_phase1}; + + daNpcF_anmPlayData anm7_phase1 = {7, daNpcBlueNS_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm7[] = {&anm7_phase1}; + + daNpcF_anmPlayData anm8_phase1 = {8, daNpcBlueNS_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData* anm8[] = {&anm8_phase1}; + + daNpcF_anmPlayData** anmData_p[] = { + anm0, anm1, anm2, anm3, + anm4, anm5, anm6, anm7, + anm8, + }; + + if (mMotion >= 0 && mMotion < 9) { + field_0xdea = mMotionPhase; + playMotionAnm(anmData_p); + } +} + +/* 8096A750-8096A7F8 001ED0 00A8+00 7/7 0/0 0/0 .text + * setAction__13daNpcBlueNS_cFM13daNpcBlueNS_cFPCvPvi_i */ +int daNpcBlueNS_c::setAction(int (daNpcBlueNS_c::*i_action)(int)) { + field_0xdc0 = 3; + if (mAction != NULL) { + (this->*mAction)(NULL); + } + + field_0xdc0 = 0; + mAction = i_action; + + if (mAction != NULL) { + (this->*mAction)(NULL); + } + + return 1; +} + +/* 8096A7F8-8096A81C 001F78 0024+00 1/1 0/0 0/0 .text setLookMode__13daNpcBlueNS_cFi */ +void daNpcBlueNS_c::setLookMode(int i_lookMode) { + if (i_lookMode >= LOOK_NONE && i_lookMode < LOOK_ACTOR) { + if (i_lookMode != mLookMode) { + mLookMode = i_lookMode; + } + } +} + +/* 8096A81C-8096A9FC 001F9C 01E0+00 1/1 0/0 0/0 .text lookat__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::lookat() { + daPy_py_c* player = NULL; + J3DModel* model_p = mpMorf->getModel(); + + int var_r28 = 0; + f32 body_angleX_min = daNpcBlueNS_Param_c::m.common.body_angleX_min; + f32 body_angleX_max = daNpcBlueNS_Param_c::m.common.body_angleX_max; + f32 body_angleY_min = daNpcBlueNS_Param_c::m.common.body_angleY_min; + f32 body_angleY_max = daNpcBlueNS_Param_c::m.common.body_angleY_max; + f32 head_angleX_min = daNpcBlueNS_Param_c::m.common.head_angleX_min; + f32 head_angleX_max = daNpcBlueNS_Param_c::m.common.head_angleX_max; + f32 head_angleY_min = daNpcBlueNS_Param_c::m.common.head_angleY_min; + f32 head_angleY_max = daNpcBlueNS_Param_c::m.common.head_angleY_max; + + s16 temp_r26 = mCurAngle.y - mOldAngle.y; + cXyz sp30[] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; + csXyz* sp24[] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; + + cXyz sp18; + switch (mLookMode) { + case LOOK_NONE: + break; + case LOOK_RESET: + var_r28 = 1; + break; + case LOOK_PLAYER: + case LOOK_PLAYER_TALK: + player = daPy_getPlayerActorClass(); + if (mLookMode == 3) { + head_angleY_min = -80.0f; + head_angleY_max = 80.0f; + } + break; + } + + if (player != NULL) { + mLookPos = player->attention_info.position; + if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) { + mLookPos.y -= 40.0f; + } + mLookat.setAttnPos(&mLookPos); + } else { + mLookat.setAttnPos(NULL); + } + + mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, + 0.0f, 0.0f, 0.0f, 0.0f, + head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max, + mCurAngle.y, sp30); + mLookat.calc(this, model_p->getBaseTRMtx(), sp24, var_r28, temp_r26, 0); +} + +/* 8096A9FC-8096AAF0 00217C 00F4+00 1/1 0/0 0/0 .text step__13daNpcBlueNS_cFsi */ +BOOL daNpcBlueNS_c::step(s16 i_angY, int param_1) { + if (mTurnMode == 0) { + mTurnTargetAngle = i_angY; + 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; +} + +/* 8096AAF0-8096ABD4 002270 00E4+00 1/1 0/0 0/0 .text chkFindPlayer__13daNpcBlueNS_cFv */ +BOOL daNpcBlueNS_c::chkFindPlayer() { + if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcBlueNS_Param_c::m.common.fov)) { + mActorMngr[0].remove(); + return false; + } + + bool ret = false; + if (mActorMngr[0].getActorP() == NULL) { + ret = chkPlayerInSpeakArea(this); + } else { + ret = chkPlayerInTalkArea(this); + } + + if (ret) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + } else { + mActorMngr[0].remove(); + } + + return ret; +} + +/* 8096ABD4-8096AD70 002354 019C+00 6/0 0/0 0/0 .text wait__13daNpcBlueNS_cFi */ +int daNpcBlueNS_c::wait(int param_0) { + switch (field_0xdc0) { + case 0: + setMotion(field_0xe04, -1.0f, 0); + speedF = 0.0f; + field_0xdc0 = 2; + break; + case 2: + chkFindPlayer(); + if (dComIfGp_event_runCheck() != 0) { + if (eventInfo.checkCommandTalk()) { + if (!dComIfGp_event_chkTalkXY() || dComIfGp_evmng_ChkPresentEnd() != 0) { + setAction(&daNpcBlueNS_c::talk); + } + } else if (dComIfGp_getEventManager().getMyStaffId(l_myName, this, 0) != -1) { + setAction(&daNpcBlueNS_c::demo); + } + } else { + if (mOrderEvtNo != 0) { + eventInfo.setArchiveName(l_arcNames[0]); + } + orderEvent(field_0xdec, l_evtNames[mOrderEvtNo], 0xFFFF, 4, 0xFF, 2); + } + break; + case 3: + default: + JUT_ASSERT(1820, FALSE); + break; + } + + return 1; +} + +/* 8096AD70-8096AE5C 0024F0 00EC+00 1/0 0/0 0/0 .text down__13daNpcBlueNS_cFi */ +int daNpcBlueNS_c::down(int param_0) { + switch (field_0xdc0) { + case 0: + setMotion(field_0xe08, -1.0f, 0); + speedF = 0.0f; + downSE(); + field_0xdc0 = 2; + break; + case 2: + if (mpMorf->isStop()) { + setAction(&daNpcBlueNS_c::wait); + } + break; + case 3: + default: + break; + } + + // necessary to generate unused ptmf data + if (0) { + setAction(&daNpcBlueNS_c::wait); + } + + return 1; +} + +/* 8096AE5C-8096AFC8 0025DC 016C+00 1/0 0/0 0/0 .text talk__13daNpcBlueNS_cFi */ +int daNpcBlueNS_c::talk(int param_0) { + int var_r27 = 0; + bool var_r28 = 0; + + switch (field_0xdc0) { + case 0: + initTalk(mFlowNodeNo, NULL); + mMsgTimer = 0; + field_0xdec = 0; + setLookMode(LOOK_PLAYER_TALK); + field_0xdc0 = 2; + break; + case 2: + if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, 1, NULL)) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + int sp8 = 0; + mFlow.getEventId(&sp8); + setAction(&daNpcBlueNS_c::wait); + var_r28 = 1; + } + } else if (step(fopAcM_searchPlayerAngleY(this), 1)) { + mTurnMode = 0; + } + break; + case 3: + if (field_0x9ec == 0) { + dComIfGp_event_reset(); + } + break; + default: + JUT_ASSERT(1993, FALSE); + break; + } + + return var_r28; +} + +/* 8096AFC8-8096B204 002748 023C+00 1/0 0/0 0/0 .text demo__13daNpcBlueNS_cFi */ +int daNpcBlueNS_c::demo(int param_0) { + dEvent_manager_c* evtmgr = &dComIfGp_getEventManager(); + + switch (field_0xdc0) { + case 0: + setMotion(field_0xe04, -1.0f, 0); + field_0xdc0 = 2; + break; + case 2: + if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) { + evtmgr = &dComIfGp_getEventManager(); + + int staffId = evtmgr->getMyStaffId(l_myName, this, 0); + if (staffId != -1) { + mStaffID = staffId; + + JUT_ASSERT(2043, NULL != mEvtSeqList[mOrderEvtNo]); + if ((this->*mEvtSeqList[mOrderEvtNo])(staffId)) { + evtmgr->cutEnd(staffId); + } + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && evtmgr->endCheck(mEventIdx)) { + switch (mOrderEvtNo) { + case 4: + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + eventInfo.setIdx(0); + fopAcM_delete(this); + break; + case 5: + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + eventInfo.setIdx(0); + fopAcM_delete(this); + break; + case 6: + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + eventInfo.setIdx(0); + fopAcM_delete(this); + break; + case 1: + case 2: + case 3: + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + eventInfo.setIdx(0); + fopAcM_delete(this); + break; + default: + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + eventInfo.setIdx(0); + setAction(&daNpcBlueNS_c::wait); + } + } + } + break; + case 3: + default: + JUT_ASSERT(2117, FALSE); + break; + } + + return 1; +} + +/* 8096B204-8096B320 002984 011C+00 4/4 0/0 0/0 .text ChgPtclDisp__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::ChgPtclDisp() { + int type = mType % 3; + if (mType / 3 != 0) { + type = 2; + } + + static const f32 ptclOffsetY[] = {0.0f, 20.0f, 50.0f}; + + cXyz sp8; + sp8.set(current.pos.x, current.pos.y + ptclOffsetY[type], current.pos.z); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_NS_CHANGE_A), &sp8, &tevStr, &shape_angle, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_NS_CHANGE_B), &sp8, &tevStr, &shape_angle, NULL); +} + +/* 8096B320-8096B3D8 002AA0 00B8+00 1/1 0/0 0/0 .text downSE__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::downSE() { + switch (mType) { + case 0: + mSound.startCreatureVoice(Z2SE_YAMI_CUT_S, -1); + return; + case 1: + mSound.startCreatureVoice(Z2SE_YAMI_CUT_D, -1); + return; + case 2: + case 3: + case 4: + case 5: + mSound.startCreatureVoice(Z2SE_YAMI_CUT_T, -1); + return; + } +} + +/* 8096B3D8-8096B490 002B58 00B8+00 1/1 0/0 0/0 .text lightsowrdSE__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::lightsowrdSE() { + switch (mType) { + case 0: + mSound.startCreatureVoice(Z2SE_YAMI_CUT_L_SWD_S, -1); + return; + case 1: + mSound.startCreatureVoice(Z2SE_YAMI_CUT_L_SWD_D, -1); + return; + case 2: + case 3: + case 4: + case 5: + mSound.startCreatureVoice(Z2SE_YAMI_CUT_L_SWD_T, -1); + return; + } +} + +/* 8096B490-8096B548 002C10 00B8+00 4/4 0/0 0/0 .text appearSE__13daNpcBlueNS_cFv */ +void daNpcBlueNS_c::appearSE() { + switch (mType) { + case 0: + mSound.startCreatureVoice(Z2SE_YAMI_TRANSFORM_S, -1); + return; + case 1: + mSound.startCreatureVoice(Z2SE_YAMI_TRANSFORM_D, -1); + return; + case 2: + case 3: + case 4: + case 5: + mSound.startCreatureVoice(Z2SE_YAMI_TRANSFORM_T, -1); + return; + } +} + +/* 8096B548-8096B5F0 002CC8 00A8+00 1/0 0/0 0/0 .text _Evt_ChgYami_Chibi__13daNpcBlueNS_cFi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Chibi(int i_staffId) { + dEvent_manager_c& evtMgr = dComIfGp_getEventManager(); + int cutId = -1; + + int* idata_p = dComIfGp_evmng_getMyIntegerP(i_staffId, "cutId"); + if (idata_p != NULL) { + cutId = *idata_p; + } else { + OS_REPORT("---------------CUT FALSE\n"); + return 1; + } + + if (evtMgr.getIsAddvance(i_staffId)) { + _Evt_ChgYami_Chibi_CutInit(cutId); + } + + return _Evt_ChgYami_Chibi_CutMain(cutId); +} + +/* 8096B5F0-8096B688 002D70 0098+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_Chibi_CutInit__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Chibi_CutInit(const int& i_cutId) { + switch (i_cutId) { + case 10: + mYamijinId = fpcM_ERROR_PROCESS_ID_e; + break; + case 20: + setMotion(field_0xe0c, -1.0f, 0); + appearSE(); + break; + case 30: + field_0xe10 = 0; + mpNpcYami = NULL; + break; + default: + JUT_ASSERT(2341, FALSE); + break; + } + + return 1; +} + +/* 8096B688-8096B7B8 002E08 0130+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_Chibi_CutMain__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Chibi_CutMain(const int& i_cutId) { + BOOL rt = 0; + + switch (i_cutId) { + case 10: + if (mYamijinId == fpcM_ERROR_PROCESS_ID_e) { + mYamijinId = create_Yamijin(0); + if (mYamijinId != fpcM_ERROR_PROCESS_ID_e) { + rt = 1; + } + } else { + rt = 1; + } + break; + case 20: + if (mpMorf->isStop()) { + ChgPtclDisp(); + rt = 1; + } + break; + case 30: + mpNpcYami = fopAcM_SearchByID(mYamijinId); + if (mpNpcYami != NULL) { + OS_REPORT("----%x :: FIND YAMI ACTOR!!\n", this); + ((daNpc_yamiS_c*)mpNpcYami)->vanish_off(); + ((daNpc_yamiS_c*)mpNpcYami)->on_CoHit(); + rt = 1; + } + break; + default: + JUT_ASSERT(2398, FALSE); + break; + } + + return rt; +} + +/* 8096B7B8-8096B860 002F38 00A8+00 1/0 0/0 0/0 .text _Evt_ChgYami_Debu__13daNpcBlueNS_cFi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Debu(int i_staffId) { + dEvent_manager_c& evtMgr = dComIfGp_getEventManager(); + int cutId = -1; + + int* idata_p = dComIfGp_evmng_getMyIntegerP(i_staffId, "cutId"); + if (idata_p != NULL) { + cutId = *idata_p; + } else { + OS_REPORT("---------------CUT FALSE\n"); + return 1; + } + + if (evtMgr.getIsAddvance(i_staffId)) { + _Evt_ChgYami_Debu_CutInit(cutId); + } + + return _Evt_ChgYami_Debu_CutMain(cutId); +} + +/* 8096B860-8096B8F8 002FE0 0098+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_Debu_CutInit__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Debu_CutInit(const int& i_cutId) { + switch (i_cutId) { + case 10: + mYamijinId = fpcM_ERROR_PROCESS_ID_e; + break; + case 20: + setMotion(field_0xe0c, -1.0f, 0); + appearSE(); + break; + case 30: + field_0xe10 = 0; + mpNpcYami = NULL; + break; + default: + JUT_ASSERT(2465, FALSE); + break; + } + + return 1; +} + +/* 8096B8F8-8096BA28 003078 0130+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_Debu_CutMain__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Debu_CutMain(const int& i_cutId) { + BOOL rt = 0; + + switch (i_cutId) { + case 10: + if (mYamijinId == fpcM_ERROR_PROCESS_ID_e) { + mYamijinId = create_Yamijin(0); + if (mYamijinId != fpcM_ERROR_PROCESS_ID_e) { + rt = 1; + } + } else { + rt = 1; + } + break; + case 20: + if (mpMorf->isStop()) { + ChgPtclDisp(); + rt = 1; + } + break; + case 30: + mpNpcYami = fopAcM_SearchByID(mYamijinId); + if (mpNpcYami != NULL) { + OS_REPORT("----%x :: FIND YAMI ACTOR!!\n", this); + ((daNpc_yamiD_c*)mpNpcYami)->vanish_off(); + ((daNpc_yamiD_c*)mpNpcYami)->on_CoHit(); + rt = 1; + } + break; + default: + JUT_ASSERT(2398, FALSE); + break; + } + + return rt; +} + +/* 8096BA28-8096BAD0 0031A8 00A8+00 1/0 0/0 0/0 .text _Evt_ChgYami_Noppo__13daNpcBlueNS_cFi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Noppo(int i_staffId) { + dEvent_manager_c& evtMgr = dComIfGp_getEventManager(); + int cutId = -1; + + int* idata_p = dComIfGp_evmng_getMyIntegerP(i_staffId, "cutId"); + if (idata_p != NULL) { + cutId = *idata_p; + } else { + OS_REPORT("---------------CUT FALSE\n"); + return 1; + } + + if (evtMgr.getIsAddvance(i_staffId)) { + _Evt_ChgYami_Noppo_CutInit(cutId); + } + + return _Evt_ChgYami_Noppo_CutMain(cutId); +} + +/* 8096BAD0-8096BB68 003250 0098+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_Noppo_CutInit__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Noppo_CutInit(const int& i_cutId) { + switch (i_cutId) { + case 10: + mYamijinId = fpcM_ERROR_PROCESS_ID_e; + break; + case 20: + setMotion(field_0xe0c, -1.0f, 0); + appearSE(); + break; + case 30: + field_0xe10 = 0; + mpNpcYami = NULL; + break; + default: + JUT_ASSERT(2589, FALSE); + break; + } + + return 1; +} + +/* 8096BB68-8096BC98 0032E8 0130+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_Noppo_CutMain__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_Noppo_CutMain(const int& i_cutId) { + BOOL rt = 0; + + switch (i_cutId) { + case 10: + if (mYamijinId == fpcM_ERROR_PROCESS_ID_e) { + mYamijinId = create_Yamijin(0); + if (mYamijinId != fpcM_ERROR_PROCESS_ID_e) { + rt = 1; + } + } else { + rt = 1; + } + break; + case 20: + if (mpMorf->isStop()) { + ChgPtclDisp(); + rt = 1; + } + break; + case 30: + mpNpcYami = fopAcM_SearchByID(mYamijinId); + if (mpNpcYami != NULL) { + OS_REPORT("----%x :: FIND YAMI ACTOR!!\n", this); + ((daNpc_yamiT_c*)mpNpcYami)->vanish_off(); + ((daNpc_yamiT_c*)mpNpcYami)->on_CoHit(); + rt = 1; + } + break; + default: + JUT_ASSERT(2644, FALSE); + break; + } + + return rt; +} + +/* 8096BC98-8096BD40 003418 00A8+00 3/0 0/0 0/0 .text _Evt_ChgYami_STNoppo__13daNpcBlueNS_cFi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_STNoppo(int i_staffId) { + dEvent_manager_c& evtMgr = dComIfGp_getEventManager(); + int cutId = -1; + + int* idata_p = dComIfGp_evmng_getMyIntegerP(i_staffId, "cutId"); + if (idata_p != NULL) { + cutId = *idata_p; + } else { + OS_REPORT("---------------CUT FALSE\n"); + return 1; + } + + if (evtMgr.getIsAddvance(i_staffId)) { + _Evt_ChgYami_STNoppo_CutInit(cutId); + } + + return _Evt_ChgYami_STNoppo_CutMain(cutId); +} + +/* 8096BD40-8096BDD8 0034C0 0098+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_STNoppo_CutInit__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_STNoppo_CutInit(const int& i_cutId) { + switch (i_cutId) { + case 10: + mYamijinId = fpcM_ERROR_PROCESS_ID_e; + break; + case 20: + setMotion(field_0xe0c, -1.0f, 0); + appearSE(); + break; + case 30: + field_0xe10 = 0; + mpNpcYami = NULL; + break; + default: + JUT_ASSERT(2970, FALSE); + break; + } + + return 1; +} + +/* 8096BDD8-8096BF08 003558 0130+00 1/1 0/0 0/0 .text + * _Evt_ChgYami_STNoppo_CutMain__13daNpcBlueNS_cFRCi */ +BOOL daNpcBlueNS_c::_Evt_ChgYami_STNoppo_CutMain(const int& i_cutId) { + BOOL rt = 0; + + switch (i_cutId) { + case 10: + if (mYamijinId == fpcM_ERROR_PROCESS_ID_e) { + mYamijinId = create_Yamijin(0); + if (mYamijinId != fpcM_ERROR_PROCESS_ID_e) { + rt = 1; + } + } else { + rt = 1; + } + break; + case 20: + if (mpMorf->isStop()) { + ChgPtclDisp(); + rt = 1; + } + break; + case 30: + mpNpcYami = fopAcM_SearchByID(mYamijinId); + if (mpNpcYami != NULL) { + OS_REPORT("----%x :: FIND YAMI ACTOR!!\n", this); + ((daNpc_yamiT_c*)mpNpcYami)->vanish_off(); + ((daNpc_yamiT_c*)mpNpcYami)->on_CoHit(); + rt = 1; + } + break; + default: + JUT_ASSERT(3027, FALSE); + break; + } + + return rt; +} + +/* 8096BF08-8096BF28 003688 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Create__FPv */ +static int daNpcBlueNS_Create(void* i_this) { + return ((daNpcBlueNS_c*)i_this)->Create(); +} + +/* 8096BF28-8096BF48 0036A8 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Delete__FPv */ +static int daNpcBlueNS_Delete(void* i_this) { + return ((daNpcBlueNS_c*)i_this)->Delete(); +} + +/* 8096BF48-8096BF68 0036C8 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Execute__FPv */ +static int daNpcBlueNS_Execute(void* i_this) { + return ((daNpcBlueNS_c*)i_this)->Execute(); +} + +/* 8096BF68-8096BF88 0036E8 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Draw__FPv */ +static int daNpcBlueNS_Draw(void* i_this) { + return ((daNpcBlueNS_c*)i_this)->Draw(); +} + +/* 8096BF88-8096BF90 003708 0008+00 1/0 0/0 0/0 .text daNpcBlueNS_IsDelete__FPv */ +static int daNpcBlueNS_IsDelete(void* i_this) { + return 1; +} /* 8096CD58-8096CD78 -00001 0020+00 1/0 0/0 0/0 .data daNpcBlueNS_MethodTable */ static actor_method_class daNpcBlueNS_MethodTable = { - (process_method_func)daNpcBlueNS_Create__FPv, - (process_method_func)daNpcBlueNS_Delete__FPv, - (process_method_func)daNpcBlueNS_Execute__FPv, - (process_method_func)daNpcBlueNS_IsDelete__FPv, - (process_method_func)daNpcBlueNS_Draw__FPv, + (process_method_func)daNpcBlueNS_Create, + (process_method_func)daNpcBlueNS_Delete, + (process_method_func)daNpcBlueNS_Execute, + (process_method_func)daNpcBlueNS_IsDelete, + (process_method_func)daNpcBlueNS_Draw, }; /* 8096CD78-8096CDA8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_BLUENS */ @@ -453,1068 +1503,3 @@ extern actor_process_profile_definition g_profile_NPC_BLUENS = { fopAc_NPC_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 8096CDA8-8096CDF0 000208 0048+00 2/2 0/0 0/0 .data __vt__13daNpcBlueNS_c */ -SECTION_DATA extern void* __vt__13daNpcBlueNS_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daNpcBlueNS_cFv, - (void*)setParam__13daNpcBlueNS_cFv, - (void*)main__13daNpcBlueNS_cFv, - (void*)ctrlBtk__8daNpcF_cFv, - (void*)adjustShapeAngle__13daNpcBlueNS_cFv, - (void*)setMtx__8daNpcF_cFv, - (void*)setMtx2__8daNpcF_cFv, - (void*)setAttnPos__13daNpcBlueNS_cFv, - (void*)setCollisions__8daNpcF_cFv, - (void*)setExpressionAnm__8daNpcF_cFib, - (void*)setExpressionBtp__8daNpcF_cFi, - (void*)setExpression__8daNpcF_cFif, - (void*)setMotionAnm__13daNpcBlueNS_cFif, - (void*)setMotion__13daNpcBlueNS_cFifi, - (void*)drawDbgInfo__13daNpcBlueNS_cFv, - (void*)drawOtherMdls__8daNpcF_cFv, -}; - -/* 8096CDF0-8096CDFC 000250 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, -}; - -/* 8096CDFC-8096CE20 00025C 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_8096C904, - (void*)NULL, - (void*)NULL, - (void*)func_8096C8FC, -}; - -/* 8096CE20-8096CE2C 000280 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, -}; - -/* 8096CE2C-8096CE38 00028C 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, -}; - -/* 8096CE38-8096CE44 000298 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, -}; - -/* 8096CE44-8096CE50 0002A4 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, -}; - -/* 8096CE50-8096CE5C 0002B0 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, -}; - -/* 8096CE5C-8096CE68 0002BC 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, -}; - -/* 8096CE68-8096CE74 0002C8 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, -}; - -/* 8096896C-80968AF0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__13daNpcBlueNS_cFv */ -daNpcBlueNS_c::daNpcBlueNS_c() { - // NONMATCHING -} - -/* 80968AF0-80968B38 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80968B38-80968B80 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80968B80-80968D44 000300 01C4+00 1/0 0/0 0/0 .text __dt__13daNpcBlueNS_cFv */ -daNpcBlueNS_c::~daNpcBlueNS_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096C920-8096C964 000000 0044+00 8/8 0/0 0/0 .rodata l_cyl_src */ -const static dCcD_SrcCyl l_cyl_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x8}, // mGObjAt - {dCcD_SE_NONE, 0x8, 0x0, 0x0, 0x0}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {0.0f, 0.0f, 0.0f}, // mCenter - 0.0f, // mRadius - 0.0f // mHeight - } // mCyl -}; - -/* 8096C964-8096C9D4 000044 0070+00 3/9 0/0 0/0 .rodata m__19daNpcBlueNS_Param_c */ -SECTION_RODATA u8 const daNpcBlueNS_Param_c::m[112] = { - 0x42, 0x5C, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x42, 0xD2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, - 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, 0x43, 0x96, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096C964, &daNpcBlueNS_Param_c::m); - -/* 8096C9D4-8096C9D8 0000B4 0004+00 0/1 0/0 0/0 .rodata @4265 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4265 = 3.0f; -COMPILER_STRIP_GATE(0x8096C9D4, &lit_4265); -#pragma pop - -/* 8096C9D8-8096C9DC 0000B8 0004+00 0/1 0/0 0/0 .rodata @4266 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4266 = -120.0f; -COMPILER_STRIP_GATE(0x8096C9D8, &lit_4266); -#pragma pop - -/* 8096C9DC-8096C9E0 0000BC 0004+00 0/1 0/0 0/0 .rodata @4267 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4267 = -10.0f; -COMPILER_STRIP_GATE(0x8096C9DC, &lit_4267); -#pragma pop - -/* 8096C9E0-8096C9E4 0000C0 0004+00 0/1 0/0 0/0 .rodata @4268 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4268 = 120.0f; -COMPILER_STRIP_GATE(0x8096C9E0, &lit_4268); -#pragma pop - -/* 8096C9E4-8096C9E8 0000C4 0004+00 0/1 0/0 0/0 .rodata @4269 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4269 = 220.0f; -COMPILER_STRIP_GATE(0x8096C9E4, &lit_4269); -#pragma pop - -/* 80968D44-80968FE4 0004C4 02A0+00 1/1 0/0 0/0 .text Create__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::Create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096C9E8-8096C9EC 0000C8 0004+00 4/6 0/0 0/0 .rodata @4306 */ -SECTION_RODATA static f32 const lit_4306 = 1.0f; -COMPILER_STRIP_GATE(0x8096C9E8, &lit_4306); - -/* 8096C9EC-8096C9F0 0000CC 0004+00 8/8 0/0 0/0 .rodata @4307 */ -SECTION_RODATA static f32 const lit_4307 = -1.0f; -COMPILER_STRIP_GATE(0x8096C9EC, &lit_4307); - -/* 80968FE4-80969138 000764 0154+00 1/1 0/0 0/0 .text CreateHeap__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::CreateHeap() { - // NONMATCHING -} - -/* 80969138-809691A8 0008B8 0070+00 1/1 0/0 0/0 .text isDelete__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::isDelete() { - // NONMATCHING -} - -/* 809691A8-809691DC 000928 0034+00 1/1 0/0 0/0 .text Delete__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::Delete() { - // NONMATCHING -} - -/* 809691DC-80969200 00095C 0024+00 2/2 0/0 0/0 .text Execute__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::Execute() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096C9F0-8096C9F4 0000D0 0004+00 0/1 0/0 0/0 .rodata @4392 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4392 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x8096C9F0, &lit_4392); -#pragma pop - -/* 8096C9F4-8096C9F8 0000D4 0004+00 6/11 0/0 0/0 .rodata @4393 */ -SECTION_RODATA static u8 const lit_4393[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096C9F4, &lit_4393); - -/* 80969200-80969468 000980 0268+00 1/1 0/0 0/0 .text _Execute__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::_Execute() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096C9F8-8096CA04 0000D8 000C+00 1/1 0/0 0/0 .rodata sCallEvtName$4400 */ -SECTION_RODATA static u8 const sCallEvtName[12] = { - 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, -}; -COMPILER_STRIP_GATE(0x8096C9F8, &sCallEvtName); - -/* 80969468-80969504 000BE8 009C+00 1/1 0/0 0/0 .text callEvt_changeYami__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::callEvt_changeYami() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CA04-8096CA0C 0000E4 0006+02 1/1 0/0 0/0 .rodata sNameYami$4420 */ -SECTION_RODATA static u8 const sNameYami[6 + 2 /* padding */] = { - 0x02, - 0x3F, - 0x02, - 0x3D, - 0x02, - 0x3E, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA04, &sNameYami); - -/* 80969504-809695F0 000C84 00EC+00 5/5 0/0 0/0 .text create_Yamijin__13daNpcBlueNS_cFi - */ -void daNpcBlueNS_c::create_Yamijin(int param_0) { - // NONMATCHING -} - -/* 809695F0-80969698 000D70 00A8+00 1/1 0/0 0/0 .text col_check__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::col_check() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CA0C-8096CA10 0000EC 0004+00 0/1 0/0 0/0 .rodata @4524 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4524 = 0x4378C198; -COMPILER_STRIP_GATE(0x8096CA0C, &lit_4524); -#pragma pop - -/* 8096CA10-8096CA14 0000F0 0004+00 0/1 0/0 0/0 .rodata @4525 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4525 = 800.0f; -COMPILER_STRIP_GATE(0x8096CA10, &lit_4525); -#pragma pop - -/* 8096CA14-8096CA18 0000F4 0004+00 0/1 0/0 0/0 .rodata @4526 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4526 = 0x45A7C1BD; -COMPILER_STRIP_GATE(0x8096CA14, &lit_4526); -#pragma pop - -/* 8096CA18-8096CA20 0000F8 0008+00 0/1 0/0 0/0 .rodata @4527 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4527[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA18, &lit_4527); -#pragma pop - -/* 8096CA20-8096CA28 000100 0008+00 0/1 0/0 0/0 .rodata @4528 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4528[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA20, &lit_4528); -#pragma pop - -/* 8096CA28-8096CA30 000108 0008+00 0/1 0/0 0/0 .rodata @4529 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4529[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA28, &lit_4529); -#pragma pop - -/* 8096CA30-8096CA34 000110 0004+00 0/1 0/0 0/0 .rodata @4530 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4530 = 740.0f; -COMPILER_STRIP_GATE(0x8096CA30, &lit_4530); -#pragma pop - -/* 8096CA34-8096CA38 000114 0004+00 0/1 0/0 0/0 .rodata @4531 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4531 = 1000.0f; -COMPILER_STRIP_GATE(0x8096CA34, &lit_4531); -#pragma pop - -/* 80969698-80969870 000E18 01D8+00 1/1 0/0 0/0 .text - * holyball_check_main__13daNpcBlueNS_cFP10fopAc_ac_c */ -void daNpcBlueNS_c::holyball_check_main(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CA38-8096CA3C 000118 0004+00 0/1 0/0 0/0 .rodata @4570 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4570 = 20.0f; -COMPILER_STRIP_GATE(0x8096CA38, &lit_4570); -#pragma pop - -/* 80969870-809699D0 000FF0 0160+00 1/1 0/0 0/0 .text Draw__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::Draw() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CA3C-8096CA48 00011C 000C+00 1/1 0/0 0/0 .rodata @4574 */ -SECTION_RODATA static u8 const lit_4574[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, -}; -COMPILER_STRIP_GATE(0x8096CA3C, &lit_4574); - -/* 809699D0-80969B68 001150 0198+00 1/1 0/0 0/0 .text - * ctrlJoint__13daNpcBlueNS_cFP8J3DJointP8J3DModel */ -void daNpcBlueNS_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING -} - -/* 80969B68-80969B88 0012E8 0020+00 1/1 0/0 0/0 .text - * createHeapCallBack__13daNpcBlueNS_cFP10fopAc_ac_c */ -void daNpcBlueNS_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80969B88-80969BD4 001308 004C+00 1/1 0/0 0/0 .text - * ctrlJointCallBack__13daNpcBlueNS_cFP8J3DJointi */ -void daNpcBlueNS_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* 80969BD4-80969C48 001354 0074+00 1/0 0/0 0/0 .text setParam__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::setParam() { - // NONMATCHING -} - -/* 80969C48-80969C90 0013C8 0048+00 1/1 0/0 0/0 .text srchActor__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::srchActor() { - // NONMATCHING -} - -/* 80969C90-80969CF8 001410 0068+00 1/1 0/0 0/0 .text srchHollyBall__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::srchHollyBall() { - // NONMATCHING -} - -/* 80969CF8-80969D60 001478 0068+00 1/1 0/0 0/0 .text srchTagYami__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::srchTagYami() { - // NONMATCHING -} - -/* 80969D60-80969DE4 0014E0 0084+00 1/1 0/0 0/0 .text _search_Tag__13daNpcBlueNS_cFPvPv - */ -void daNpcBlueNS_c::_search_Tag(void* param_0, void* param_1) { - // NONMATCHING -} - -/* 80969DE4-80969E9C 001564 00B8+00 1/1 0/0 0/0 .text _search_HollyBall_Y__13daNpcBlueNS_cFPvPv */ -void daNpcBlueNS_c::_search_HollyBall_Y(void* param_0, void* param_1) { - // NONMATCHING -} - -/* 80969E9C-80969F54 00161C 00B8+00 1/1 0/0 0/0 .text _search_HollyBall_G__13daNpcBlueNS_cFPvPv */ -void daNpcBlueNS_c::_search_HollyBall_G(void* param_0, void* param_1) { - // NONMATCHING -} - -/* 80969F54-8096A090 0016D4 013C+00 1/0 0/0 0/0 .text main__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::main() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CA48-8096CA4C 000128 0004+00 0/1 0/0 0/0 .rodata @4846 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4846 = 10.0f; -COMPILER_STRIP_GATE(0x8096CA48, &lit_4846); -#pragma pop - -/* 8096CA4C-8096CA50 00012C 0004+00 1/2 0/0 0/0 .rodata @4847 */ -SECTION_RODATA static f32 const lit_4847 = 15.0f; -COMPILER_STRIP_GATE(0x8096CA4C, &lit_4847); - -/* 8096A090-8096A238 001810 01A8+00 1/0 0/0 0/0 .text setAttnPos__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::setAttnPos() { - // NONMATCHING -} - -/* 8096A238-8096A308 0019B8 00D0+00 1/0 0/0 0/0 .text setMotionAnm__13daNpcBlueNS_cFif */ -bool daNpcBlueNS_c::setMotionAnm(int param_0, f32 param_1) { - // NONMATCHING -} - -/* 8096A308-8096A350 001A88 0048+00 1/0 0/0 0/0 .text setMotion__13daNpcBlueNS_cFifi */ -void daNpcBlueNS_c::setMotion(int param_0, f32 param_1, int param_2) { - // NONMATCHING -} - -/* 8096A350-8096A358 001AD0 0008+00 1/0 0/0 0/0 .text drawDbgInfo__13daNpcBlueNS_cFv */ -bool daNpcBlueNS_c::drawDbgInfo() { - return false; -} - -/* ############################################################################################## */ -/* 8096CA50-8096CA5C 000130 000C+00 0/1 0/0 0/0 .rodata sWaitAnm$4874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const sWaitAnm[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, -}; -COMPILER_STRIP_GATE(0x8096CA50, &sWaitAnm); -#pragma pop - -/* 8096CA5C-8096CA68 00013C 000C+00 0/1 0/0 0/0 .rodata sDamageAnm$4875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const sDamageAnm[12] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, -}; -COMPILER_STRIP_GATE(0x8096CA5C, &sDamageAnm); -#pragma pop - -/* 8096CA68-8096CA74 000148 000C+00 0/1 0/0 0/0 .rodata sAppearAnm$4876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const sAppearAnm[12] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, -}; -COMPILER_STRIP_GATE(0x8096CA68, &sAppearAnm); -#pragma pop - -/* 8096A358-8096A518 001AD8 01C0+00 1/1 0/0 0/0 .text reset__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::reset() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CA74-8096CA80 000154 000C+00 0/1 0/0 0/0 .rodata @4908 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4908[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA74, &lit_4908); -#pragma pop - -/* 8096CA80-8096CA84 000160 0004+00 0/1 0/0 0/0 .rodata @4909 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4909[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA80, &lit_4909); -#pragma pop - -/* 8096CA84-8096CA90 000164 000C+00 0/1 0/0 0/0 .rodata @4910 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4910[12] = { - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA84, &lit_4910); -#pragma pop - -/* 8096CA90-8096CA94 000170 0004+00 0/1 0/0 0/0 .rodata @4911 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4911[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA90, &lit_4911); -#pragma pop - -/* 8096CA94-8096CAA0 000174 000C+00 0/1 0/0 0/0 .rodata @4912 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4912[12] = { - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CA94, &lit_4912); -#pragma pop - -/* 8096CAA0-8096CAA4 000180 0004+00 0/1 0/0 0/0 .rodata @4913 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4913[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAA0, &lit_4913); -#pragma pop - -/* 8096CAA4-8096CAB0 000184 000C+00 0/1 0/0 0/0 .rodata @4914 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4914[12] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAA4, &lit_4914); -#pragma pop - -/* 8096CAB0-8096CAB4 000190 0004+00 0/1 0/0 0/0 .rodata @4915 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4915[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAB0, &lit_4915); -#pragma pop - -/* 8096CAB4-8096CAC0 000194 000C+00 0/1 0/0 0/0 .rodata @4916 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4916[12] = { - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAB4, &lit_4916); -#pragma pop - -/* 8096CAC0-8096CAC4 0001A0 0004+00 0/1 0/0 0/0 .rodata @4917 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4917[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAC0, &lit_4917); -#pragma pop - -/* 8096CAC4-8096CAD0 0001A4 000C+00 0/1 0/0 0/0 .rodata @4918 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4918[12] = { - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAC4, &lit_4918); -#pragma pop - -/* 8096CAD0-8096CAD4 0001B0 0004+00 0/1 0/0 0/0 .rodata @4919 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4919[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAD0, &lit_4919); -#pragma pop - -/* 8096CAD4-8096CAE0 0001B4 000C+00 0/1 0/0 0/0 .rodata @4920 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4920[12] = { - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAD4, &lit_4920); -#pragma pop - -/* 8096CAE0-8096CAE4 0001C0 0004+00 0/1 0/0 0/0 .rodata @4921 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4921[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAE0, &lit_4921); -#pragma pop - -/* 8096CAE4-8096CAF0 0001C4 000C+00 0/1 0/0 0/0 .rodata @4922 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4922[12] = { - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAE4, &lit_4922); -#pragma pop - -/* 8096CAF0-8096CAF4 0001D0 0004+00 0/1 0/0 0/0 .rodata @4923 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4923[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAF0, &lit_4923); -#pragma pop - -/* 8096CAF4-8096CB00 0001D4 000C+00 0/1 0/0 0/0 .rodata @4924 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4924[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CAF4, &lit_4924); -#pragma pop - -/* 8096CB00-8096CB04 0001E0 0004+00 0/1 0/0 0/0 .rodata @4925 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4925[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8096CB00, &lit_4925); -#pragma pop - -/* 8096A518-8096A750 001C98 0238+00 1/1 0/0 0/0 .text playMotion__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::playMotion() { - // NONMATCHING -} - -/* 8096A750-8096A7F8 001ED0 00A8+00 7/7 0/0 0/0 .text - * setAction__13daNpcBlueNS_cFM13daNpcBlueNS_cFPCvPvi_i */ -void daNpcBlueNS_c::setAction(int (daNpcBlueNS_c::*param_0)(int)) { - // NONMATCHING -} - -/* 8096A7F8-8096A81C 001F78 0024+00 1/1 0/0 0/0 .text setLookMode__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::setLookMode(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CB04-8096CB28 0001E4 0024+00 0/0 0/0 0/0 .rodata @4926 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4926[36] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 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(0x8096CB04, &lit_4926); -#pragma pop - -/* 8096CB28-8096CB34 000208 000C+00 0/1 0/0 0/0 .rodata @4956 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4956[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CB28, &lit_4956); -#pragma pop - -/* 8096CB34-8096CB38 000214 0004+00 0/1 0/0 0/0 .rodata @5004 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5004 = -80.0f; -COMPILER_STRIP_GATE(0x8096CB34, &lit_5004); -#pragma pop - -/* 8096CB38-8096CB3C 000218 0004+00 0/1 0/0 0/0 .rodata @5005 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5005 = 80.0f; -COMPILER_STRIP_GATE(0x8096CB38, &lit_5005); -#pragma pop - -/* 8096CB3C-8096CB40 00021C 0004+00 0/1 0/0 0/0 .rodata @5006 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5006 = 40.0f; -COMPILER_STRIP_GATE(0x8096CB3C, &lit_5006); -#pragma pop - -/* 8096A81C-8096A9FC 001F9C 01E0+00 1/1 0/0 0/0 .text lookat__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::lookat() { - // NONMATCHING -} - -/* 8096A9FC-8096AAF0 00217C 00F4+00 1/1 0/0 0/0 .text step__13daNpcBlueNS_cFsi */ -void daNpcBlueNS_c::step(s16 param_0, int param_1) { - // NONMATCHING -} - -/* 8096AAF0-8096ABD4 002270 00E4+00 1/1 0/0 0/0 .text chkFindPlayer__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::chkFindPlayer() { - // NONMATCHING -} - -/* 8096ABD4-8096AD70 002354 019C+00 6/0 0/0 0/0 .text wait__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::wait(int param_0) { - // NONMATCHING -} - -/* 8096AD70-8096AE5C 0024F0 00EC+00 1/0 0/0 0/0 .text down__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::down(int param_0) { - // NONMATCHING -} - -/* 8096AE5C-8096AFC8 0025DC 016C+00 1/0 0/0 0/0 .text talk__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::talk(int param_0) { - // NONMATCHING -} - -/* 8096AFC8-8096B204 002748 023C+00 1/0 0/0 0/0 .text demo__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::demo(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CB40-8096CB4C 000220 000C+00 1/1 0/0 0/0 .rodata ptclOffsetY$5218 */ -SECTION_RODATA static u8 const ptclOffsetY[12] = { - 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096CB40, &ptclOffsetY); - -/* 8096B204-8096B320 002984 011C+00 4/4 0/0 0/0 .text ChgPtclDisp__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::ChgPtclDisp() { - // NONMATCHING -} - -/* 8096B320-8096B3D8 002AA0 00B8+00 1/1 0/0 0/0 .text downSE__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::downSE() { - // NONMATCHING -} - -/* 8096B3D8-8096B490 002B58 00B8+00 1/1 0/0 0/0 .text lightsowrdSE__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::lightsowrdSE() { - // NONMATCHING -} - -/* 8096B490-8096B548 002C10 00B8+00 4/4 0/0 0/0 .text appearSE__13daNpcBlueNS_cFv */ -void daNpcBlueNS_c::appearSE() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CB4C-8096CB4C 00022C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8096CB97 = "cutId"; -#pragma pop - -/* 8096B548-8096B5F0 002CC8 00A8+00 1/0 0/0 0/0 .text _Evt_ChgYami_Chibi__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::_Evt_ChgYami_Chibi(int param_0) { - // NONMATCHING -} - -/* 8096B5F0-8096B688 002D70 0098+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_Chibi_CutInit__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_Chibi_CutInit(int const& param_0) { - // NONMATCHING -} - -/* 8096B688-8096B7B8 002E08 0130+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_Chibi_CutMain__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_Chibi_CutMain(int const& param_0) { - // NONMATCHING -} - -/* 8096B7B8-8096B860 002F38 00A8+00 1/0 0/0 0/0 .text _Evt_ChgYami_Debu__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::_Evt_ChgYami_Debu(int param_0) { - // NONMATCHING -} - -/* 8096B860-8096B8F8 002FE0 0098+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_Debu_CutInit__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_Debu_CutInit(int const& param_0) { - // NONMATCHING -} - -/* 8096B8F8-8096BA28 003078 0130+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_Debu_CutMain__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_Debu_CutMain(int const& param_0) { - // NONMATCHING -} - -/* 8096BA28-8096BAD0 0031A8 00A8+00 1/0 0/0 0/0 .text _Evt_ChgYami_Noppo__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::_Evt_ChgYami_Noppo(int param_0) { - // NONMATCHING -} - -/* 8096BAD0-8096BB68 003250 0098+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_Noppo_CutInit__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_Noppo_CutInit(int const& param_0) { - // NONMATCHING -} - -/* 8096BB68-8096BC98 0032E8 0130+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_Noppo_CutMain__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_Noppo_CutMain(int const& param_0) { - // NONMATCHING -} - -/* 8096BC98-8096BD40 003418 00A8+00 3/0 0/0 0/0 .text _Evt_ChgYami_STNoppo__13daNpcBlueNS_cFi */ -void daNpcBlueNS_c::_Evt_ChgYami_STNoppo(int param_0) { - // NONMATCHING -} - -/* 8096BD40-8096BDD8 0034C0 0098+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_STNoppo_CutInit__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_STNoppo_CutInit(int const& param_0) { - // NONMATCHING -} - -/* 8096BDD8-8096BF08 003558 0130+00 1/1 0/0 0/0 .text - * _Evt_ChgYami_STNoppo_CutMain__13daNpcBlueNS_cFRCi */ -void daNpcBlueNS_c::_Evt_ChgYami_STNoppo_CutMain(int const& param_0) { - // NONMATCHING -} - -/* 8096BF08-8096BF28 003688 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Create__FPv */ -static void daNpcBlueNS_Create(void* param_0) { - // NONMATCHING -} - -/* 8096BF28-8096BF48 0036A8 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Delete__FPv */ -static void daNpcBlueNS_Delete(void* param_0) { - // NONMATCHING -} - -/* 8096BF48-8096BF68 0036C8 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Execute__FPv */ -static void daNpcBlueNS_Execute(void* param_0) { - // NONMATCHING -} - -/* 8096BF68-8096BF88 0036E8 0020+00 1/0 0/0 0/0 .text daNpcBlueNS_Draw__FPv */ -static void daNpcBlueNS_Draw(void* param_0) { - // NONMATCHING -} - -/* 8096BF88-8096BF90 003708 0008+00 1/0 0/0 0/0 .text daNpcBlueNS_IsDelete__FPv */ -static bool daNpcBlueNS_IsDelete(void* param_0) { - return true; -} - -/* 8096BF90-8096BFD8 003710 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 -} - -/* 8096BFD8-8096C014 003758 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 -} - -/* 8096C014-8096C0E4 003794 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 -} - -/* 8096C0E4-8096C120 003864 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 8096C120-8096C124 0038A0 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 8096C124-8096C160 0038A4 003C+00 5/5 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 8096C160-8096C164 0038E0 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 8096C164-8096C3B0 0038E4 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */ -// daNpcF_c::~daNpcF_c() { -extern "C" void __dt__8daNpcF_cFv() { - // NONMATCHING -} - -/* 8096C3B0-8096C5A0 003B30 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */ -// daNpcF_c::daNpcF_c() { -extern "C" void __ct__8daNpcF_cFv() { - // NONMATCHING -} - -/* 8096C5A0-8096C610 003D20 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8096C610-8096C66C 003D90 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 8096C66C-8096C6DC 003DEC 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8096C6DC-8096C724 003E5C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 8096C724-8096C728 003EA4 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */ -// void daNpcF_c::setCollisions() { -extern "C" void setCollisions__8daNpcF_cFv() { - /* empty function */ -} - -/* 8096C728-8096C730 003EA8 0008+00 1/0 0/0 0/0 .text ctrlBtk__8daNpcF_cFv */ -// bool daNpcF_c::ctrlBtk() { -extern "C" bool ctrlBtk__8daNpcF_cFv() { - return false; -} - -/* 8096C730-8096C738 003EB0 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; -} - -/* 8096C738-8096C740 003EB8 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; -} - -/* 8096C740-8096C744 003EC0 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 */ -} - -/* 8096C744-8096C748 003EC4 0004+00 1/0 0/0 0/0 .text drawOtherMdls__8daNpcF_cFv */ -// void daNpcF_c::drawOtherMdls() { -extern "C" void drawOtherMdls__8daNpcF_cFv() { - /* empty function */ -} - -/* 8096C748-8096C790 003EC8 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 8096C790-8096C7AC 003F10 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPi */ -extern "C" void func_8096C790(void* _this, int* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096CE74-8096CE80 0002D4 000C+00 2/2 0/0 0/0 .data __vt__19daNpcBlueNS_Param_c */ -SECTION_DATA extern void* __vt__19daNpcBlueNS_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19daNpcBlueNS_Param_cFv, -}; - -/* 8096CE88-8096CE94 000008 000C+00 1/1 0/0 0/0 .bss @3889 */ -static u8 lit_3889[12]; - -/* 8096CE94-8096CE98 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 8096C7AC-8096C8B0 003F2C 0104+00 0/0 1/0 0/0 .text __sinit_d_a_npc_blue_ns_cpp */ -void __sinit_d_a_npc_blue_ns_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8096C7AC, __sinit_d_a_npc_blue_ns_cpp); -#pragma pop - -/* 8096C8B0-8096C8B4 004030 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__13daNpcBlueNS_cFv - */ -void daNpcBlueNS_c::adjustShapeAngle() { - /* empty function */ -} - -/* 8096C8B4-8096C8FC 004034 0048+00 2/1 0/0 0/0 .text __dt__19daNpcBlueNS_Param_cFv */ -daNpcBlueNS_Param_c::~daNpcBlueNS_Param_c() { - // NONMATCHING -} - -/* 8096C8FC-8096C904 00407C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8096C8FC() { - // NONMATCHING -} - -/* 8096C904-8096C90C 004084 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8096C904() { - // NONMATCHING -} - -/* 8096CB4C-8096CB4C 00022C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_poCandle.cpp b/src/d/actor/d_a_obj_poCandle.cpp index 4850a1dfb1..548c15cc1b 100644 --- a/src/d/actor/d_a_obj_poCandle.cpp +++ b/src/d/actor/d_a_obj_poCandle.cpp @@ -6,161 +6,277 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_poCandle.h" -#include "dol2asm.h" +class daPoCandle_HIO_c : public mDoHIO_entry_c { +public: + /* 80CB1A6C */ daPoCandle_HIO_c(); + /* 80CB2508 */ virtual ~daPoCandle_HIO_c() {} -// -// Forward References: -// + void genMessage(JORMContext*); -extern "C" void __ct__16daPoCandle_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__12daPoCandle_cFv(); -extern "C" void CreateHeap__12daPoCandle_cFv(); -extern "C" void create__12daPoCandle_cFv(); -extern "C" void lightInit__12daPoCandle_cFv(); -extern "C" void setLight__12daPoCandle_cFv(); -extern "C" void cutLight__12daPoCandle_cFv(); -extern "C" void pointLightProc__12daPoCandle_cFv(); -extern "C" void Execute__12daPoCandle_cFPPA3_A4_f(); -extern "C" void init_modeWait__12daPoCandle_cFv(); -extern "C" void modeWait__12daPoCandle_cFv(); -extern "C" void init_modeOnFire__12daPoCandle_cFv(); -extern "C" void modeOnFire__12daPoCandle_cFv(); -extern "C" void modeOnSwWait__12daPoCandle_cFv(); -extern "C" void init_modeEnd__12daPoCandle_cFv(); -extern "C" void modeEnd__12daPoCandle_cFv(); -extern "C" void eventStart__12daPoCandle_cFv(); -extern "C" void Draw__12daPoCandle_cFv(); -extern "C" void Delete__12daPoCandle_cFv(); -extern "C" static void daPoCandle_Draw__FP12daPoCandle_c(); -extern "C" static void daPoCandle_Execute__FP12daPoCandle_c(); -extern "C" static void daPoCandle_Delete__FP12daPoCandle_c(); -extern "C" static void daPoCandle_Create__FP10fopAc_ac_c(); -extern "C" void __dt__16daPoCandle_HIO_cFv(); -extern "C" void __sinit_d_a_obj_poCandle_cpp(); -extern "C" static void func_80CB25A0(); -extern "C" static void func_80CB25A8(); -extern "C" void __dt__17dEvLib_callback_cFv(); -extern "C" bool eventStart__17dEvLib_callback_cFv(); -extern "C" bool eventRun__17dEvLib_callback_cFv(); -extern "C" bool eventEnd__17dEvLib_callback_cFv(); -extern "C" void __dt__12daPoCandle_cFv(); -extern "C" extern char const* const d_a_obj_poCandle__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void eventUpdate__17dEvLib_callback_cFv(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_plight_set__FP15LIGHT_INFLUENCE(); -extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE(); -extern "C" void dKy_BossLight_set__FP4cXyzP8_GXColorfUc(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__16dBgS_MoveBgActor[10]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80CB26B8-80CB26BC 000000 0004+00 3/3 0/0 0/0 .rodata @3635 */ -SECTION_RODATA static f32 const lit_3635 = 3.0f; -COMPILER_STRIP_GATE(0x80CB26B8, &lit_3635); - -/* 80CB2710-80CB271C -00001 000C+00 0/1 0/0 0/0 .data @3774 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3774[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__12daPoCandle_cFv, + /* 0x4 */ u8 waittimer; + /* 0x8 */ f32 firescale; }; -#pragma pop -/* 80CB271C-80CB2728 -00001 000C+00 0/1 0/0 0/0 .data @3775 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3775[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeOnFire__12daPoCandle_cFv, -}; -#pragma pop +/* 80CB1A6C-80CB1A9C 0000EC 0030+00 1/1 0/0 0/0 .text __ct__16daPoCandle_HIO_cFv */ +daPoCandle_HIO_c::daPoCandle_HIO_c() { + waittimer = 30; + firescale = 3.0f; +} -/* 80CB2728-80CB2734 -00001 000C+00 0/1 0/0 0/0 .data @3776 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3776[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeOnSwWait__12daPoCandle_cFv, -}; -#pragma pop +/* 80CB1AE4-80CB1B6C 000164 0088+00 2/2 0/0 0/0 .text setBaseMtx__12daPoCandle_cFv */ +void daPoCandle_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(current.angle.x, current.angle.y, current.angle.z); + mpModel->setBaseScale(scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} -/* 80CB2734-80CB2740 -00001 000C+00 0/1 0/0 0/0 .data @3777 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3777[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeEnd__12daPoCandle_cFv, -}; -#pragma pop +/* 80CB1B6C-80CB1BD8 0001EC 006C+00 1/0 0/0 0/0 .text CreateHeap__12daPoCandle_cFv */ +int daPoCandle_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("P_PCNDL", 4); + JUT_ASSERT(160, modelData != NULL); -/* 80CB2740-80CB2770 000050 0030+00 0/1 0/0 0/0 .data mode_proc$3773 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + return 1; +} + +/* 80CB1BD8-80CB1D74 000258 019C+00 1/1 0/0 0/0 .text create__12daPoCandle_cFv */ +int daPoCandle_c::create() { + fopAcM_ct(this, daPoCandle_c); + + int phase_state = dComIfG_resLoad(&mPhase, "P_PCNDL"); + if (phase_state == cPhs_COMPLEATE_e) { + if (MoveBGCreate("P_PCNDL", 7, dBgS_MoveBGProc_TypicalRotY, 0x1600, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } + + setBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + + mFirePos.x = current.pos.x; + mFirePos.y = 25.0f + current.pos.y; + mFirePos.z = current.pos.z; + + mLightType = getLightType(); + if (mLightType == 0xFF) { + mLightType = 1; + } + + lightInit(); + mSwbit = getSwBit(); + mIDNum = getID(); + mFireFlag = 0; + mOnPlight = 0; + + mIsSwitch = fopAcM_isSwitch(this, mSwbit); + if (mIsSwitch) { + mOnPlight = TRUE; + } + + init_modeWait(); + } + + return phase_state; +} + +/* 80CB1D74-80CB1E00 0003F4 008C+00 1/1 0/0 0/0 .text lightInit__12daPoCandle_cFv */ +void daPoCandle_c::lightInit() { + mLightPos = mFirePos; + mLightPos.y += 10.0f; + + if (mLightType != 0) { + mLight.mPosition = mLightPos; + mLight.mColor.r = 0xBC; + mLight.mColor.g = 0x66; + mLight.mColor.b = 0x42; + mLight.mPow = 500.0f; + mLight.mFluctuation = 1.0f; + return; + } + + mPlightRefDist = 0.0f; +} + +/* 80CB1E00-80CB1E30 000480 0030+00 1/1 0/0 0/0 .text setLight__12daPoCandle_cFv */ +void daPoCandle_c::setLight() { + if (mLightType != 0) { + dKy_plight_set(&mLight); + } +} + +/* 80CB1E30-80CB1E60 0004B0 0030+00 1/1 0/0 0/0 .text cutLight__12daPoCandle_cFv */ +void daPoCandle_c::cutLight() { + if (mLightType != 0) { + dKy_plight_cut(&mLight); + } +} + +/* 80CB1E60-80CB1F10 0004E0 00B0+00 1/1 0/0 0/0 .text pointLightProc__12daPoCandle_cFv */ +void daPoCandle_c::pointLightProc() { + if (mLightType == 0) { + GXColor light_color = {0xBC, 0x66, 0x42, 0xFF}; + + if (mOnPlight) { + cLib_addCalc(&mPlightRefDist, 1.0f, 0.5f, 0.1f, 0.0001f); + } else { + cLib_addCalc(&mPlightRefDist, 0.0f, 0.5f, 0.1f, 0.0001f); + } + + if (mPlightRefDist >= 0.000001f) { + dKy_BossLight_set(&mLightPos, &light_color, mPlightRefDist, 0); + } + } +} + +/* 80CB284C-80CB2858 000014 000C+00 3/3 0/0 0/0 .bss l_HIO */ +static daPoCandle_HIO_c l_HIO; + +/* 80CB1F10-80CB2140 000590 0230+00 1/0 0/0 0/0 .text Execute__12daPoCandle_cFPPA3_A4_f + */ +int daPoCandle_c::Execute(Mtx** param_0) { + static void (daPoCandle_c::*mode_proc[])() = { + &daPoCandle_c::modeWait, + &daPoCandle_c::modeOnFire, + &daPoCandle_c::modeOnSwWait, + &daPoCandle_c::modeEnd, + }; + + eventUpdate(); + + if (mOnPlight) { + cXyz effscale(l_HIO.firescale, l_HIO.firescale, l_HIO.firescale); + mGlowEmtID = dComIfGp_particle_set(mGlowEmtID, dPa_RM(ID_ZF_S_POFIRED00_GLOW), &mFirePos, &shape_angle, &effscale); + mFireEmtID = dComIfGp_particle_set(mFireEmtID, dPa_RM(ID_ZF_S_POFIRED01_FIRE), &mFirePos, &shape_angle, &effscale); + mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &mFirePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + } + + (this->*mode_proc[mMode])(); + + *param_0 = &mpModel->getBaseTRMtx(); + setBaseMtx(); + pointLightProc(); + return 1; +} + +/* 80CB2140-80CB214C 0007C0 000C+00 2/2 0/0 0/0 .text init_modeWait__12daPoCandle_cFv */ +void daPoCandle_c::init_modeWait() { + mMode = 0; +} + +/* 80CB214C-80CB21D8 0007CC 008C+00 1/0 0/0 0/0 .text modeWait__12daPoCandle_cFv */ +void daPoCandle_c::modeWait() { + u8 prev_switch = mIsSwitch; + mIsSwitch = fopAcM_isSwitch(this, mSwbit); + + if (prev_switch != mIsSwitch) { + if (mIsSwitch) { + mFireFlag = 1; + init_modeOnFire(); + return; + } else { + mFireFlag = 0; + mOnPlight = FALSE; + cutLight(); + } + } +} + +/* 80CB21D8-80CB22D4 000858 00FC+00 2/2 0/0 0/0 .text init_modeOnFire__12daPoCandle_cFv + */ +void daPoCandle_c::init_modeOnFire() { + mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &mFirePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + cXyz effscale(l_HIO.firescale, l_HIO.firescale, l_HIO.firescale); + dComIfGp_particle_set(dPa_RM(ID_ZF_S_POFIRED02_FIRE), &mFirePos, &shape_angle, &effscale); + setLight(); + mOnPlight = TRUE; + mMode = 1; +} + +/* 80CB22D4-80CB22F4 000954 0020+00 1/0 0/0 0/0 .text modeOnFire__12daPoCandle_cFv */ +void daPoCandle_c::modeOnFire() { + init_modeWait(); +} + +/* 80CB22F4-80CB2354 000974 0060+00 1/0 0/0 0/0 .text modeOnSwWait__12daPoCandle_cFv */ +void daPoCandle_c::modeOnSwWait() { + if (mSwWaitTimer != 0) { + mSwWaitTimer--; + } else { + fopAcM_onSwitch(this, mSwbit); + init_modeEnd(); + } +} + +/* 80CB2354-80CB2360 0009D4 000C+00 1/1 0/0 0/0 .text init_modeEnd__12daPoCandle_cFv */ +void daPoCandle_c::init_modeEnd() { + mMode = 3; +} + +/* 80CB2360-80CB2364 0009E0 0004+00 1/0 0/0 0/0 .text modeEnd__12daPoCandle_cFv */ +void daPoCandle_c::modeEnd() {} + +/* 80CB2364-80CB2388 0009E4 0024+00 2/1 0/0 0/0 .text eventStart__12daPoCandle_cFv */ +bool daPoCandle_c::eventStart() { + init_modeOnFire(); + return true; +} + +/* 80CB2388-80CB242C 000A08 00A4+00 1/0 0/0 0/0 .text Draw__12daPoCandle_cFv */ +int daPoCandle_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 80CB242C-80CB247C 000AAC 0050+00 1/0 0/0 0/0 .text Delete__12daPoCandle_cFv */ +int daPoCandle_c::Delete() { + dComIfG_resDelete(&mPhase, "P_PCNDL"); + if (mLightType != 0) { + dKy_plight_cut(&mLight); + } + + return 1; +} + +/* 80CB247C-80CB24A8 000AFC 002C+00 1/0 0/0 0/0 .text daPoCandle_Draw__FP12daPoCandle_c + */ +static int daPoCandle_Draw(daPoCandle_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80CB24A8-80CB24C8 000B28 0020+00 1/0 0/0 0/0 .text daPoCandle_Execute__FP12daPoCandle_c */ +static int daPoCandle_Execute(daPoCandle_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80CB24C8-80CB24E8 000B48 0020+00 1/0 0/0 0/0 .text daPoCandle_Delete__FP12daPoCandle_c + */ +static int daPoCandle_Delete(daPoCandle_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80CB24E8-80CB2508 000B68 0020+00 1/0 0/0 0/0 .text daPoCandle_Create__FP10fopAc_ac_c + */ +static int daPoCandle_Create(fopAc_ac_c* i_this) { + return ((daPoCandle_c*)i_this)->create(); +} /* 80CB2770-80CB2790 -00001 0020+00 1/0 0/0 0/0 .data l_daPoCandle_Method */ static actor_method_class l_daPoCandle_Method = { - (process_method_func)daPoCandle_Create__FP10fopAc_ac_c, - (process_method_func)daPoCandle_Delete__FP12daPoCandle_c, - (process_method_func)daPoCandle_Execute__FP12daPoCandle_c, + (process_method_func)daPoCandle_Create, + (process_method_func)daPoCandle_Delete, + (process_method_func)daPoCandle_Execute, 0, - (process_method_func)daPoCandle_Draw__FP12daPoCandle_c, + (process_method_func)daPoCandle_Draw, }; /* 80CB2790-80CB27C0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_poCandle */ @@ -180,326 +296,3 @@ extern actor_process_profile_definition g_profile_Obj_poCandle = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80CB27C0-80CB27D8 0000D0 0018+00 3/3 0/0 0/0 .data __vt__17dEvLib_callback_c */ -SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17dEvLib_callback_cFv, - (void*)eventStart__17dEvLib_callback_cFv, - (void*)eventRun__17dEvLib_callback_cFv, - (void*)eventEnd__17dEvLib_callback_cFv, -}; - -/* 80CB27D8-80CB2820 0000E8 0048+00 2/2 0/0 0/0 .data __vt__12daPoCandle_c */ -SECTION_DATA extern void* __vt__12daPoCandle_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__12daPoCandle_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__12daPoCandle_cFPPA3_A4_f, - (void*)Draw__12daPoCandle_cFv, - (void*)Delete__12daPoCandle_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, - (void*)NULL, - (void*)NULL, - (void*)func_80CB25A8, - (void*)func_80CB25A0, - (void*)eventRun__17dEvLib_callback_cFv, - (void*)eventEnd__17dEvLib_callback_cFv, - (void*)__dt__12daPoCandle_cFv, - (void*)eventStart__12daPoCandle_cFv, -}; - -/* 80CB2820-80CB282C 000130 000C+00 2/2 0/0 0/0 .data __vt__16daPoCandle_HIO_c */ -SECTION_DATA extern void* __vt__16daPoCandle_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daPoCandle_HIO_cFv, -}; - -/* 80CB282C-80CB2838 00013C 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; - -/* 80CB1A6C-80CB1A9C 0000EC 0030+00 1/1 0/0 0/0 .text __ct__16daPoCandle_HIO_cFv */ -daPoCandle_HIO_c::daPoCandle_HIO_c() { - // NONMATCHING -} - -/* 80CB1A9C-80CB1AE4 00011C 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} - -/* 80CB1AE4-80CB1B6C 000164 0088+00 2/2 0/0 0/0 .text setBaseMtx__12daPoCandle_cFv */ -void daPoCandle_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB26E8-80CB26E8 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CB26E8 = "P_PCNDL"; -#pragma pop - -/* 80CB1B6C-80CB1BD8 0001EC 006C+00 1/0 0/0 0/0 .text CreateHeap__12daPoCandle_cFv */ -void daPoCandle_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB26BC-80CB26C0 000004 0004+00 1/1 0/0 0/0 .rodata @3714 */ -SECTION_RODATA static f32 const lit_3714 = 25.0f; -COMPILER_STRIP_GATE(0x80CB26BC, &lit_3714); - -/* 80CB1BD8-80CB1D74 000258 019C+00 1/1 0/0 0/0 .text create__12daPoCandle_cFv */ -void daPoCandle_c::create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB26C0-80CB26C4 000008 0004+00 0/1 0/0 0/0 .rodata @3737 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3737 = 10.0f; -COMPILER_STRIP_GATE(0x80CB26C0, &lit_3737); -#pragma pop - -/* 80CB26C4-80CB26C8 00000C 0004+00 0/1 0/0 0/0 .rodata @3738 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3738 = 500.0f; -COMPILER_STRIP_GATE(0x80CB26C4, &lit_3738); -#pragma pop - -/* 80CB26C8-80CB26CC 000010 0004+00 2/4 0/0 0/0 .rodata @3739 */ -SECTION_RODATA static f32 const lit_3739 = 1.0f; -COMPILER_STRIP_GATE(0x80CB26C8, &lit_3739); - -/* 80CB26CC-80CB26D0 000014 0004+00 0/2 0/0 0/0 .rodata @3740 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3740[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CB26CC, &lit_3740); -#pragma pop - -/* 80CB1D74-80CB1E00 0003F4 008C+00 1/1 0/0 0/0 .text lightInit__12daPoCandle_cFv */ -void daPoCandle_c::lightInit() { - // NONMATCHING -} - -/* 80CB1E00-80CB1E30 000480 0030+00 1/1 0/0 0/0 .text setLight__12daPoCandle_cFv */ -void daPoCandle_c::setLight() { - // NONMATCHING -} - -/* 80CB1E30-80CB1E60 0004B0 0030+00 1/1 0/0 0/0 .text cutLight__12daPoCandle_cFv */ -void daPoCandle_c::cutLight() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB26D0-80CB26D4 000018 0004+00 0/1 0/0 0/0 .rodata @3758 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3758 = 0xBC6642FF; -COMPILER_STRIP_GATE(0x80CB26D0, &lit_3758); -#pragma pop - -/* 80CB26D4-80CB26D8 00001C 0004+00 0/1 0/0 0/0 .rodata @3766 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3766 = 0.5f; -COMPILER_STRIP_GATE(0x80CB26D4, &lit_3766); -#pragma pop - -/* 80CB26D8-80CB26DC 000020 0004+00 0/1 0/0 0/0 .rodata @3767 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3767 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CB26D8, &lit_3767); -#pragma pop - -/* 80CB26DC-80CB26E0 000024 0004+00 0/1 0/0 0/0 .rodata @3768 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3768 = 0x38D1B717; -COMPILER_STRIP_GATE(0x80CB26DC, &lit_3768); -#pragma pop - -/* 80CB26E0-80CB26E4 000028 0004+00 0/1 0/0 0/0 .rodata @3769 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3769 = 0x358637BD; -COMPILER_STRIP_GATE(0x80CB26E0, &lit_3769); -#pragma pop - -/* 80CB1E60-80CB1F10 0004E0 00B0+00 1/1 0/0 0/0 .text pointLightProc__12daPoCandle_cFv */ -void daPoCandle_c::pointLightProc() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB26E4-80CB26E8 00002C 0004+00 2/2 0/0 0/0 .rodata @3814 */ -SECTION_RODATA static f32 const lit_3814 = -1.0f; -COMPILER_STRIP_GATE(0x80CB26E4, &lit_3814); - -/* 80CB2840-80CB284C 000008 000C+00 1/1 0/0 0/0 .bss @3629 */ -static u8 lit_3629[12]; - -/* 80CB284C-80CB2858 000014 000C+00 3/3 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[12]; - -/* 80CB2858-80CB285C 000020 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80CB2858[4]; - -/* 80CB1F10-80CB2140 000590 0230+00 1/0 0/0 0/0 .text Execute__12daPoCandle_cFPPA3_A4_f - */ -void daPoCandle_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 80CB2140-80CB214C 0007C0 000C+00 2/2 0/0 0/0 .text init_modeWait__12daPoCandle_cFv */ -void daPoCandle_c::init_modeWait() { - // NONMATCHING -} - -/* 80CB214C-80CB21D8 0007CC 008C+00 1/0 0/0 0/0 .text modeWait__12daPoCandle_cFv */ -void daPoCandle_c::modeWait() { - // NONMATCHING -} - -/* 80CB21D8-80CB22D4 000858 00FC+00 2/2 0/0 0/0 .text init_modeOnFire__12daPoCandle_cFv - */ -void daPoCandle_c::init_modeOnFire() { - // NONMATCHING -} - -/* 80CB22D4-80CB22F4 000954 0020+00 1/0 0/0 0/0 .text modeOnFire__12daPoCandle_cFv */ -void daPoCandle_c::modeOnFire() { - // NONMATCHING -} - -/* 80CB22F4-80CB2354 000974 0060+00 1/0 0/0 0/0 .text modeOnSwWait__12daPoCandle_cFv */ -void daPoCandle_c::modeOnSwWait() { - // NONMATCHING -} - -/* 80CB2354-80CB2360 0009D4 000C+00 1/1 0/0 0/0 .text init_modeEnd__12daPoCandle_cFv */ -void daPoCandle_c::init_modeEnd() { - // NONMATCHING -} - -/* 80CB2360-80CB2364 0009E0 0004+00 1/0 0/0 0/0 .text modeEnd__12daPoCandle_cFv */ -void daPoCandle_c::modeEnd() { - /* empty function */ -} - -/* 80CB2364-80CB2388 0009E4 0024+00 2/1 0/0 0/0 .text eventStart__12daPoCandle_cFv */ -void daPoCandle_c::eventStart() { - // NONMATCHING -} - -/* 80CB2388-80CB242C 000A08 00A4+00 1/0 0/0 0/0 .text Draw__12daPoCandle_cFv */ -void daPoCandle_c::Draw() { - // NONMATCHING -} - -/* 80CB242C-80CB247C 000AAC 0050+00 1/0 0/0 0/0 .text Delete__12daPoCandle_cFv */ -void daPoCandle_c::Delete() { - // NONMATCHING -} - -/* 80CB247C-80CB24A8 000AFC 002C+00 1/0 0/0 0/0 .text daPoCandle_Draw__FP12daPoCandle_c - */ -static void daPoCandle_Draw(daPoCandle_c* param_0) { - // NONMATCHING -} - -/* 80CB24A8-80CB24C8 000B28 0020+00 1/0 0/0 0/0 .text daPoCandle_Execute__FP12daPoCandle_c */ -static void daPoCandle_Execute(daPoCandle_c* param_0) { - // NONMATCHING -} - -/* 80CB24C8-80CB24E8 000B48 0020+00 1/0 0/0 0/0 .text daPoCandle_Delete__FP12daPoCandle_c - */ -static void daPoCandle_Delete(daPoCandle_c* param_0) { - // NONMATCHING -} - -/* 80CB24E8-80CB2508 000B68 0020+00 1/0 0/0 0/0 .text daPoCandle_Create__FP10fopAc_ac_c - */ -static void daPoCandle_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80CB2508-80CB2564 000B88 005C+00 2/1 0/0 0/0 .text __dt__16daPoCandle_HIO_cFv */ -daPoCandle_HIO_c::~daPoCandle_HIO_c() { - // NONMATCHING -} - -/* 80CB2564-80CB25A0 000BE4 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_poCandle_cpp */ -void __sinit_d_a_obj_poCandle_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80CB2564, __sinit_d_a_obj_poCandle_cpp); -#pragma pop - -/* 80CB25A0-80CB25A8 000C20 0008+00 1/0 0/0 0/0 .text @1448@eventStart__12daPoCandle_cFv - */ -static void func_80CB25A0() { - // NONMATCHING -} - -/* 80CB25A8-80CB25B0 000C28 0008+00 1/0 0/0 0/0 .text @1448@__dt__12daPoCandle_cFv */ -static void func_80CB25A8() { - // NONMATCHING -} - -/* 80CB25B0-80CB25F8 000C30 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */ -// dEvLib_callback_c::~dEvLib_callback_c() { -extern "C" void __dt__17dEvLib_callback_cFv() { - // NONMATCHING -} - -/* 80CB25F8-80CB2600 000C78 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv - */ -// bool dEvLib_callback_c::eventStart() { -extern "C" bool eventStart__17dEvLib_callback_cFv() { - return true; -} - -/* 80CB2600-80CB2608 000C80 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */ -// bool dEvLib_callback_c::eventRun() { -extern "C" bool eventRun__17dEvLib_callback_cFv() { - return true; -} - -/* 80CB2608-80CB2610 000C88 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */ -// bool dEvLib_callback_c::eventEnd() { -extern "C" bool eventEnd__17dEvLib_callback_cFv() { - return true; -} - -/* 80CB2610-80CB26A4 000C90 0094+00 2/1 0/0 0/0 .text __dt__12daPoCandle_cFv */ -daPoCandle_c::~daPoCandle_c() { - // NONMATCHING -} - -/* 80CB26E8-80CB26E8 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_poTbox.cpp b/src/d/actor/d_a_obj_poTbox.cpp index 8117d4ed37..738dd89a5b 100644 --- a/src/d/actor/d_a_obj_poTbox.cpp +++ b/src/d/actor/d_a_obj_poTbox.cpp @@ -6,181 +6,325 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_poTbox.h" -#include "dol2asm.h" +class daPoTbox_HIO_c : public mDoHIO_entry_c { +public: + /* 80CB424C */ daPoTbox_HIO_c(); + /* 80CB4F14 */ virtual ~daPoTbox_HIO_c() {} + void genMessage(JORMContext*); -// -// Forward References: -// - -extern "C" void __ct__14daPoTbox_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__10daPoTbox_cFv(); -extern "C" void CreateHeap__10daPoTbox_cFv(); -extern "C" void create__10daPoTbox_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void Execute__10daPoTbox_cFPPA3_A4_f(); -extern "C" void init_modeWait__10daPoTbox_cFv(); -extern "C" void modeWait__10daPoTbox_cFv(); -extern "C" void init_modeOpen__10daPoTbox_cFv(); -extern "C" void modeOpen__10daPoTbox_cFv(); -extern "C" void init_modeOpenEnd__10daPoTbox_cFv(); -extern "C" void modeOpenEnd__10daPoTbox_cFv(); -extern "C" void init_modeEnd__10daPoTbox_cFv(); -extern "C" void modeEnd__10daPoTbox_cFv(); -extern "C" void Draw__10daPoTbox_cFv(); -extern "C" void Delete__10daPoTbox_cFv(); -extern "C" static void daPoTbox_Draw__FP10daPoTbox_c(); -extern "C" static void daPoTbox_Execute__FP10daPoTbox_c(); -extern "C" static void daPoTbox_Delete__FP10daPoTbox_c(); -extern "C" static void daPoTbox_Create__FP10fopAc_ac_c(); -extern "C" void __dt__14daPoTbox_HIO_cFv(); -extern "C" void __sinit_d_a_obj_poTbox_cpp(); -extern "C" extern char const* const d_a_obj_poTbox__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb(); -extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80CB4FC0-80CB4FC4 000000 0004+00 1/1 0/0 0/0 .rodata @3628 */ -SECTION_RODATA static f32 const lit_3628 = 2.0f; -COMPILER_STRIP_GATE(0x80CB4FC0, &lit_3628); - -/* 80CB4FC4-80CB4FC8 000004 0004+00 1/1 0/0 0/0 .rodata @3629 */ -SECTION_RODATA static f32 const lit_3629 = 12.0f; -COMPILER_STRIP_GATE(0x80CB4FC4, &lit_3629); - -/* 80CB4FDC-80CB4FDC 00001C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CB4FDC = "pouBox0"; -SECTION_DEAD static char const* const stringBase_80CB4FE4 = "pouBox1"; -#pragma pop + /* 0x4 */ f32 open_speed; + /* 0x8 */ f32 close_speed; +}; /* 80CB500C-80CB5014 -00001 0008+00 3/3 0/0 0/0 .data l_type */ -SECTION_DATA static void* l_type[2] = { - (void*)&d_a_obj_poTbox__stringBase0, - (void*)(((char*)&d_a_obj_poTbox__stringBase0) + 0x8), +static char* l_type[2] = { + "pouBox0", + "pouBox1", }; /* 80CB5014-80CB501C 000028 0008+00 1/1 0/0 0/0 .data l_bmdIdx */ -SECTION_DATA static u8 l_bmdIdx[8] = { - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x08, +static int l_bmdIdx[] = { + 10, 8, }; /* 80CB501C-80CB5024 000030 0008+00 1/1 0/0 0/0 .data l_dzbIdx */ -SECTION_DATA static u8 l_dzbIdx[8] = { - 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x0B, +static int l_dzbIdx[] = { + 21, 11, }; -/* 80CB5024-80CB5030 -00001 000C+00 0/1 0/0 0/0 .data @3867 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3867[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__10daPoTbox_cFv, -}; -#pragma pop +/* 80CB424C-80CB4280 0000EC 0034+00 1/1 0/0 0/0 .text __ct__14daPoTbox_HIO_cFv */ +daPoTbox_HIO_c::daPoTbox_HIO_c() { + open_speed = 2.0f; + close_speed = 12.0f; +} -/* 80CB5030-80CB503C -00001 000C+00 0/1 0/0 0/0 .data @3868 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3868[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeOpen__10daPoTbox_cFv, -}; -#pragma pop +/* 80CB42C8-80CB43D0 000168 0108+00 2/2 0/0 0/0 .text setBaseMtx__10daPoTbox_cFv */ +void daPoTbox_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mpBoxModel->setBaseScale(scale); + mpBoxModel->setBaseTRMtx(mDoMtx_stack_c::get()); -/* 80CB503C-80CB5048 -00001 000C+00 0/1 0/0 0/0 .data @3869 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3869[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeOpenEnd__10daPoTbox_cFv, -}; -#pragma pop + if (mpAnimModel != NULL) { + mpAnimModel->setBaseScale(scale); + mpAnimModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } -/* 80CB5048-80CB5054 -00001 000C+00 0/1 0/0 0/0 .data @3870 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3870[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeEnd__10daPoTbox_cFv, -}; -#pragma pop + if (mpLightModel != NULL) { + mpLightModel->setBaseScale(scale); + mpLightModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } -/* 80CB5054-80CB5084 000068 0030+00 0/1 0/0 0/0 .data mode_proc$3866 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); +} + +/* 80CB43D0-80CB46C4 000270 02F4+00 1/0 0/0 0/0 .text CreateHeap__10daPoTbox_cFv */ +int daPoTbox_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_type[mStat], l_bmdIdx[mStat]); + JUT_ASSERT(185, modelData != NULL); + int res; + + mpBoxModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpBoxModel == NULL) { + return 0; + } + + if (mStat == 0) { + J3DModelData* modelData1 = (J3DModelData*)dComIfG_getObjectRes(l_type[mStat], 0xB); + JUT_ASSERT(200, modelData1 != NULL); + mpAnimModel = mDoExt_J3DModel__create(modelData1, 0x80000, 0x11000084); + if (mpAnimModel == NULL) { + return 0; + } + + res = mBck.init((J3DAnmTransform*)dComIfG_getObjectRes(l_type[mStat], 7), 1, 0, 1.0f, 0, -1, 0); + JUT_ASSERT(212, res == TRUE); + + J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes(l_type[mStat], 0xC); + JUT_ASSERT(218, modelData2 != NULL); + + mpLightModel = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11000284); + if (mpLightModel == NULL) { + return 0; + } + + res = mBtk.init(modelData2, (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_type[mStat], 0x12), 1, 2, 1.0f, 0, -1); + JUT_ASSERT(235, res == TRUE); + + res = mBrk.init(modelData2, (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_type[mStat], 0xF), 1, 0, 1.0f, 0, -1); + JUT_ASSERT(244, res == TRUE); + + mpBgw2 = new dBgW(); + if (mpBgw2 == NULL || mpBgw2->Set((cBgD_t*)dComIfG_getObjectRes(l_type[mStat], 0x16), 1, &mBgMtx)) { + mpBgw2 = NULL; + return 0; + } + } else { + mpBgw2 = NULL; + mpAnimModel = NULL; + mpLightModel = NULL; + res = mBck.init((J3DAnmTransform*)dComIfG_getObjectRes(l_type[mStat], 5), 1, 0, 1.0f, 0, -1, 0); + JUT_ASSERT(268, res == TRUE); + } + + return 1; +} + +/* 80CB46C4-80CB4954 000564 0290+00 1/1 0/0 0/0 .text create__10daPoTbox_cFv */ +int daPoTbox_c::create() { + fopAcM_ct(this, daPoTbox_c); + + mStat = getStat(); + + int phase_state = dComIfG_resLoad(&mPhase, l_type[mStat]); + if (phase_state == cPhs_COMPLEATE_e) { + if (MoveBGCreate(l_type[mStat], l_dzbIdx[mStat], dBgS_MoveBGProc_Typical, 0x6EA0, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(this, mpBoxModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpBoxModel->getModelData()); + field_0x605 = 0; + + if (mStat == 0) { + mIsSwitch = fopAcM_isSwitch(this, getSw()); + if (mIsSwitch) { + fopAcM_SetMtx(this, mpAnimModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpAnimModel->getModelData()); + + field_0x605 = 1; + mBck.setFrame(mBck.getEndFrame() - 1.0f); + mBrk.setFrame(mBrk.getEndFrame() - 1.0f); + + if (mpBgW != NULL) { + dComIfG_Bgsp().Release(mpBgW); + } + + if (mpBgw2 != NULL) { + dComIfG_Bgsp().Regist(mpBgw2, this); + mpBgw2->Move(); + } + + init_modeOpenEnd(); + } else { + init_modeWait(); + } + } else { + init_modeEnd(); + } + + setBaseMtx(); + } + + return phase_state; +} + +/* 80CB5134-80CB5140 000014 000C+00 1/1 0/0 0/0 .bss l_HIO */ +static daPoTbox_HIO_c l_HIO; + +/* 80CB499C-80CB4AA8 00083C 010C+00 1/0 0/0 0/0 .text Execute__10daPoTbox_cFPPA3_A4_f */ +int daPoTbox_c::Execute(Mtx** param_0) { + static void (daPoTbox_c::*mode_proc[])() = { + &daPoTbox_c::modeWait, + &daPoTbox_c::modeOpen, + &daPoTbox_c::modeOpenEnd, + &daPoTbox_c::modeEnd, + }; + + (this->*mode_proc[mMode])(); + + if (field_0x605 == 0) { + *param_0 = &mpBoxModel->getBaseTRMtx(); + } else { + *param_0 = &mpAnimModel->getBaseTRMtx(); + } + + setBaseMtx(); + return 1; +} + +/* 80CB4AA8-80CB4AB4 000948 000C+00 1/1 0/0 0/0 .text init_modeWait__10daPoTbox_cFv */ +void daPoTbox_c::init_modeWait() { + mMode = 0; +} + +/* 80CB4AB4-80CB4B10 000954 005C+00 1/0 0/0 0/0 .text modeWait__10daPoTbox_cFv */ +void daPoTbox_c::modeWait() { + mIsSwitch = fopAcM_isSwitch(this, getSw()); + if (mIsSwitch) { + init_modeOpen(); + } +} + +/* 80CB4B10-80CB4BF8 0009B0 00E8+00 1/1 0/0 0/0 .text init_modeOpen__10daPoTbox_cFv */ +void daPoTbox_c::init_modeOpen() { + if (mpBgW != NULL) { + dComIfG_Bgsp().Release(mpBgW); + } + + if (mpBgw2 != NULL) { + dComIfG_Bgsp().Regist(mpBgw2, this); + mpBgw2->Move(); + } + + fopAcM_SetMtx(this, mpAnimModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpAnimModel->getModelData()); + mDoAud_seStart(Z2SE_OBJ_PO_TBOX, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + field_0x605 = 1; + mMode = 1; +} + +/* 80CB4BF8-80CB4C54 000A98 005C+00 1/0 0/0 0/0 .text modeOpen__10daPoTbox_cFv */ +void daPoTbox_c::modeOpen() { + int bck_play = mBck.play(); + int brk_play = mBrk.play(); + + if (bck_play == TRUE && brk_play == TRUE) { + init_modeOpenEnd(); + } +} + +/* 80CB4C54-80CB4C60 000AF4 000C+00 2/2 0/0 0/0 .text init_modeOpenEnd__10daPoTbox_cFv */ +void daPoTbox_c::init_modeOpenEnd() { + mMode = 2; +} + +/* 80CB4C60-80CB4C84 000B00 0024+00 1/0 0/0 0/0 .text modeOpenEnd__10daPoTbox_cFv */ +void daPoTbox_c::modeOpenEnd() { + mBtk.play(); +} + +/* 80CB4C84-80CB4C90 000B24 000C+00 1/1 0/0 0/0 .text init_modeEnd__10daPoTbox_cFv */ +void daPoTbox_c::init_modeEnd() { + mMode = 3; +} + +/* 80CB4C90-80CB4C94 000B30 0004+00 1/0 0/0 0/0 .text modeEnd__10daPoTbox_cFv */ +void daPoTbox_c::modeEnd() {} + +/* 80CB4C94-80CB4E14 000B34 0180+00 1/0 0/0 0/0 .text Draw__10daPoTbox_cFv */ +int daPoTbox_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpBoxModel, &tevStr); + + if (mpAnimModel != NULL) { + g_env_light.setLightTevColorType_MAJI(mpAnimModel, &tevStr); + } + + if (mpLightModel != NULL) { + g_env_light.setLightTevColorType_MAJI(mpLightModel, &tevStr); + } + + if (mStat == 0) { + if (field_0x605 == 1) { + mBck.entry(mpAnimModel->getModelData()); + + J3DModelData* modelData = mpLightModel->getModelData(); + mBtk.entry(modelData); + mBrk.entry(modelData); + } + } else { + mBck.entry(mpBoxModel->getModelData()); + } + + dComIfGd_setListBG(); + + if (field_0x605 == 0) { + mDoExt_modelUpdateDL(mpBoxModel); + } else { + if (mpAnimModel != NULL) { + mDoExt_modelUpdateDL(mpAnimModel); + } + + if (mpLightModel != NULL) { + mDoExt_modelUpdateDL(mpLightModel); + } + } + + dComIfGd_setList(); + return 1; +} + +/* 80CB4E14-80CB4E88 000CB4 0074+00 1/0 0/0 0/0 .text Delete__10daPoTbox_cFv */ +int daPoTbox_c::Delete() { + dComIfG_resDelete(&mPhase, l_type[mStat]); + + if (mpBgw2 != NULL && mpBgw2->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgw2); + } + + return 1; +} + +/* 80CB4E88-80CB4EB4 000D28 002C+00 1/0 0/0 0/0 .text daPoTbox_Draw__FP10daPoTbox_c */ +static int daPoTbox_Draw(daPoTbox_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80CB4EB4-80CB4ED4 000D54 0020+00 1/0 0/0 0/0 .text daPoTbox_Execute__FP10daPoTbox_c */ +static int daPoTbox_Execute(daPoTbox_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80CB4ED4-80CB4EF4 000D74 0020+00 1/0 0/0 0/0 .text daPoTbox_Delete__FP10daPoTbox_c */ +static int daPoTbox_Delete(daPoTbox_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80CB4EF4-80CB4F14 000D94 0020+00 1/0 0/0 0/0 .text daPoTbox_Create__FP10fopAc_ac_c */ +static int daPoTbox_Create(fopAc_ac_c* i_this) { + return ((daPoTbox_c*)i_this)->create(); +} /* 80CB5084-80CB50A4 -00001 0020+00 1/0 0/0 0/0 .data l_daPoTbox_Method */ static actor_method_class l_daPoTbox_Method = { - (process_method_func)daPoTbox_Create__FP10fopAc_ac_c, - (process_method_func)daPoTbox_Delete__FP10daPoTbox_c, - (process_method_func)daPoTbox_Execute__FP10daPoTbox_c, + (process_method_func)daPoTbox_Create, + (process_method_func)daPoTbox_Delete, + (process_method_func)daPoTbox_Execute, 0, - (process_method_func)daPoTbox_Draw__FP10daPoTbox_c, + (process_method_func)daPoTbox_Draw, }; /* 80CB50A4-80CB50D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_poTbox */ @@ -200,193 +344,3 @@ extern actor_process_profile_definition g_profile_Obj_poTbox = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80CB50D4-80CB50E0 0000E8 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80CB50E0-80CB5108 0000F4 0028+00 1/1 0/0 0/0 .data __vt__10daPoTbox_c */ -SECTION_DATA extern void* __vt__10daPoTbox_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daPoTbox_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__10daPoTbox_cFPPA3_A4_f, - (void*)Draw__10daPoTbox_cFv, - (void*)Delete__10daPoTbox_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80CB5108-80CB5114 00011C 000C+00 2/2 0/0 0/0 .data __vt__14daPoTbox_HIO_c */ -SECTION_DATA extern void* __vt__14daPoTbox_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daPoTbox_HIO_cFv, -}; - -/* 80CB5114-80CB5120 000128 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; - -/* 80CB424C-80CB4280 0000EC 0034+00 1/1 0/0 0/0 .text __ct__14daPoTbox_HIO_cFv */ -daPoTbox_HIO_c::daPoTbox_HIO_c() { - // NONMATCHING -} - -/* 80CB4280-80CB42C8 000120 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} - -/* 80CB42C8-80CB43D0 000168 0108+00 2/2 0/0 0/0 .text setBaseMtx__10daPoTbox_cFv */ -void daPoTbox_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB4FC8-80CB4FD0 000008 0004+04 3/3 0/0 0/0 .rodata @3724 */ -SECTION_RODATA static f32 const lit_3724[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80CB4FC8, &lit_3724); - -/* 80CB43D0-80CB46C4 000270 02F4+00 1/0 0/0 0/0 .text CreateHeap__10daPoTbox_cFv */ -void daPoTbox_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB4FD0-80CB4FD8 000010 0008+00 1/1 0/0 0/0 .rodata @3835 */ -SECTION_RODATA static u8 const lit_3835[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CB4FD0, &lit_3835); - -/* 80CB46C4-80CB4954 000564 0290+00 1/1 0/0 0/0 .text create__10daPoTbox_cFv */ -void daPoTbox_c::create() { - // NONMATCHING -} - -/* 80CB4954-80CB499C 0007F4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB5128-80CB5134 000008 000C+00 1/1 0/0 0/0 .bss @3622 */ -static u8 lit_3622[12]; - -/* 80CB5134-80CB5140 000014 000C+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[12]; - -/* 80CB5140-80CB5144 000020 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80CB5140[4]; - -/* 80CB499C-80CB4AA8 00083C 010C+00 1/0 0/0 0/0 .text Execute__10daPoTbox_cFPPA3_A4_f */ -void daPoTbox_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 80CB4AA8-80CB4AB4 000948 000C+00 1/1 0/0 0/0 .text init_modeWait__10daPoTbox_cFv */ -void daPoTbox_c::init_modeWait() { - // NONMATCHING -} - -/* 80CB4AB4-80CB4B10 000954 005C+00 1/0 0/0 0/0 .text modeWait__10daPoTbox_cFv */ -void daPoTbox_c::modeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB4FD8-80CB4FDC 000018 0004+00 1/1 0/0 0/0 .rodata @3926 */ -SECTION_RODATA static f32 const lit_3926 = -1.0f; -COMPILER_STRIP_GATE(0x80CB4FD8, &lit_3926); - -/* 80CB4B10-80CB4BF8 0009B0 00E8+00 1/1 0/0 0/0 .text init_modeOpen__10daPoTbox_cFv */ -void daPoTbox_c::init_modeOpen() { - // NONMATCHING -} - -/* 80CB4BF8-80CB4C54 000A98 005C+00 1/0 0/0 0/0 .text modeOpen__10daPoTbox_cFv */ -void daPoTbox_c::modeOpen() { - // NONMATCHING -} - -/* 80CB4C54-80CB4C60 000AF4 000C+00 2/2 0/0 0/0 .text init_modeOpenEnd__10daPoTbox_cFv */ -void daPoTbox_c::init_modeOpenEnd() { - // NONMATCHING -} - -/* 80CB4C60-80CB4C84 000B00 0024+00 1/0 0/0 0/0 .text modeOpenEnd__10daPoTbox_cFv */ -void daPoTbox_c::modeOpenEnd() { - // NONMATCHING -} - -/* 80CB4C84-80CB4C90 000B24 000C+00 1/1 0/0 0/0 .text init_modeEnd__10daPoTbox_cFv */ -void daPoTbox_c::init_modeEnd() { - // NONMATCHING -} - -/* 80CB4C90-80CB4C94 000B30 0004+00 1/0 0/0 0/0 .text modeEnd__10daPoTbox_cFv */ -void daPoTbox_c::modeEnd() { - /* empty function */ -} - -/* 80CB4C94-80CB4E14 000B34 0180+00 1/0 0/0 0/0 .text Draw__10daPoTbox_cFv */ -void daPoTbox_c::Draw() { - // NONMATCHING -} - -/* 80CB4E14-80CB4E88 000CB4 0074+00 1/0 0/0 0/0 .text Delete__10daPoTbox_cFv */ -void daPoTbox_c::Delete() { - // NONMATCHING -} - -/* 80CB4E88-80CB4EB4 000D28 002C+00 1/0 0/0 0/0 .text daPoTbox_Draw__FP10daPoTbox_c */ -static void daPoTbox_Draw(daPoTbox_c* param_0) { - // NONMATCHING -} - -/* 80CB4EB4-80CB4ED4 000D54 0020+00 1/0 0/0 0/0 .text daPoTbox_Execute__FP10daPoTbox_c */ -static void daPoTbox_Execute(daPoTbox_c* param_0) { - // NONMATCHING -} - -/* 80CB4ED4-80CB4EF4 000D74 0020+00 1/0 0/0 0/0 .text daPoTbox_Delete__FP10daPoTbox_c */ -static void daPoTbox_Delete(daPoTbox_c* param_0) { - // NONMATCHING -} - -/* 80CB4EF4-80CB4F14 000D94 0020+00 1/0 0/0 0/0 .text daPoTbox_Create__FP10fopAc_ac_c */ -static void daPoTbox_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80CB4F14-80CB4F70 000DB4 005C+00 2/1 0/0 0/0 .text __dt__14daPoTbox_HIO_cFv */ -daPoTbox_HIO_c::~daPoTbox_HIO_c() { - // NONMATCHING -} - -/* 80CB4F70-80CB4FAC 000E10 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_poTbox_cpp */ -void __sinit_d_a_obj_poTbox_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80CB4F70, __sinit_d_a_obj_poTbox_cpp); -#pragma pop - -/* 80CB4FDC-80CB4FDC 00001C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 4feefacadf..df12777291 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -20,14 +20,85 @@ #include "f_op/f_op_scene_mng.h" #include "m_Do/m_Do_lib.h" -class l_HIO { -public: - /* 8001E098 */ ~l_HIO() {} -}; - #define MAKE_ITEM_PARAMS(itemNo, itemBitNo, param_2, param_3) \ ((itemNo & 0xFF) << 0 | (itemBitNo & 0xFF) << 0x8 | param_2 << 0x10 | (param_3 & 0xF) << 0x18) +namespace fopAcM { +extern u8 HeapAdjustEntry; +extern u8 HeapAdjustUnk; +extern u8 HeapAdjustVerbose; +extern u8 HeapAdjustQuiet; +extern u8 HeapDummyCreate; +} // namespace fopAcM + +class l_HIO : public JORReflexible { +public: + /* 8001E098 */ ~l_HIO() { + #if DEBUG + erase(); + #endif + } + + #if DEBUG + l_HIO() { + mId = -1; + } + + void entry() { + if (mId < 0) { + mId = mDoHIO_CREATE_CHILD("アクターマネージャ", this); + } + } + + void erase() { + if (mId >= 0) { + mDoHIO_DELETE_CHILD(mId); + mId = -1; + } + } + + void listenPropertyEvent(const JORPropertyEvent*); + void genMessage(JORMContext*); + #endif + + #if DEBUG + /* 0x4 */ s8 mId; + #endif +}; + +#if DEBUG +void l_HIO::genMessage(JORMContext* mctx) { + mctx->genLabel("アクターソリッドヒープ用プリント表示制御", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("HeapAdjustEntry(ぴったりサイズで格納しようとします)", &fopAcM::HeapAdjustEntry, 1, 0, + NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("HeapAdjustVerbose(アジャストの情報を表示します)", &fopAcM::HeapAdjustVerbose, 1, 0, NULL, + 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("HeapAdjustQuiet(アジャストの情報を表示しません)", &fopAcM::HeapAdjustQuiet, 1, 0, NULL, + 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("HeapDummyCreate(調査のため、ダミー領域に一度格納します)", &fopAcM::HeapDummyCreate, 1, + 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("mDoExt::HeapAdjustVerbose(mDoExtのほうでアジャストの情報を表示します)", + &mDoExt::HeapAdjustVerbose, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + mctx->genCheckBox("mDoExt::HeapAdjustQuiet(mDoExtのほうでアジャストの情報を表示しません)", + &mDoExt::HeapAdjustQuiet, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); +} + +void l_HIO::listenPropertyEvent(const JORPropertyEvent* property) { + JORMContext* mctx = attachJORMContext(8); + JORReflexible::listenPropertyEvent(property); + + if ((u8*)property->id == &fopAcM::HeapDummyCreate) { + if (fopAcM::HeapDummyCreate) { + DummyCheckHeap_create(); + } else { + DummyCheckHeap_destroy(); + } + } + + releaseJORMContext(mctx); +} +#endif + /* 800198A4-800198C4 0141E4 0020+00 0/0 1/1 0/0 .text fopAcM_FastCreate__FsPFPv_iPvPv */ fopAc_ac_c* fopAcM_FastCreate(s16 i_procName, FastCreateReqFunc i_createFunc, void* i_createData, void* i_append) { @@ -305,11 +376,11 @@ s32 fopAcM_callCallback(fopAc_ac_c* i_actor, heapCallbackFunc i_callback, JKRHea } /* 80450CC8-80450CCC -00001 0004+00 2/2 0/0 0/0 .sbss None */ -namespace fopAcM { -bool HeapAdjustEntry; -bool HeapAdjustVerbose; -bool HeapAdjustQuiet; -} // namespace fopAcM +u8 fopAcM::HeapAdjustEntry; +u8 fopAcM::HeapAdjustUnk; +u8 fopAcM::HeapAdjustVerbose; +u8 fopAcM::HeapAdjustQuiet; +u8 fopAcM::HeapDummyCreate; /* 8001A1E8-8001A4B0 014B28 02C8+00 1/1 0/0 0/0 .text * fopAcM_entrySolidHeap___FP10fopAc_ac_cPFP10fopAc_ac_c_iUl */ @@ -432,12 +503,12 @@ bool fopAcM_entrySolidHeap_(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback /* 8001A4B0-8001A528 014DF0 0078+00 0/0 4/4 446/446 .text * fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl */ bool fopAcM_entrySolidHeap(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback, u32 i_size) { - bool var_r31 = fopAcM::HeapAdjustVerbose; + u8 var_r31 = fopAcM::HeapAdjustUnk; if (i_size & 0x80000000) { - fopAcM::HeapAdjustVerbose = true; + fopAcM::HeapAdjustUnk = true; } - bool var_r30 = fopAcM::HeapAdjustEntry; + u8 var_r30 = fopAcM::HeapAdjustEntry; if (i_size & 0x20000000) { fopAcM::HeapAdjustEntry = false; } else if (i_size & 0x10000000) { @@ -445,7 +516,7 @@ bool fopAcM_entrySolidHeap(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback, } bool result = fopAcM_entrySolidHeap_(i_actor, i_heapCallback, i_size & 0xFFFFFF); - fopAcM::HeapAdjustVerbose = var_r31; + fopAcM::HeapAdjustUnk = var_r31; fopAcM::HeapAdjustEntry = var_r30; return result; }