From 21dc43021cacfd61bdd11d7d525439ea8b7a849c Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Thu, 20 Jul 2023 02:35:27 -0700 Subject: [PATCH] d_a_obj_lv4Gate mostly done. d_a_obj_lv4CandleDemoTag work --- include/d/d_vibration.h | 2 +- include/f_op/f_op_actor_mng.h | 2 +- .../d_a_obj_lv4CandleDemoTag.h | 2 +- .../d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.h | 46 +- .../d_a_obj_lv4CandleDemoTag.cpp | 391 +++++---- .../a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.cpp | 765 ++++++------------ 6 files changed, 471 insertions(+), 737 deletions(-) diff --git a/include/d/d_vibration.h b/include/d/d_vibration.h index fe12038ec39..90ae0370c8e 100644 --- a/include/d/d_vibration.h +++ b/include/d/d_vibration.h @@ -8,7 +8,7 @@ class dVibration_c { public: /* 8006F268 */ int Run(); - /* 8006FA24 */ bool StartShock(int, int, cXyz); + /* 8006FA24 */ bool StartShock(int i_strength, int, cXyz); /* 8006FC0C */ bool StartQuake(u8 const*, int, int, cXyz); /* 8006FB10 */ bool StartQuake(int, int, cXyz); /* 8006FD94 */ int StopQuake(int); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 51b0b19cd5f..a276ac3a790 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -340,7 +340,7 @@ inline void i_fopAcM_offSwitch(const fopAc_ac_c* pActor, int sw) { return dComIfGs_offSwitch(sw, fopAcM_GetHomeRoomNo(pActor)); } -inline bool i_fopAcM_isSwitch(const fopAc_ac_c* item, int sw) { +inline BOOL i_fopAcM_isSwitch(const fopAc_ac_c* item, int sw) { return dComIfGs_isSwitch(sw, fopAcM_GetHomeRoomNo(item)); } diff --git a/include/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.h b/include/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.h index 38fa3fd19e6..4df6913b9cf 100644 --- a/include/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.h +++ b/include/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.h @@ -1,6 +1,6 @@ #ifndef D_A_OBJ_LV4CANDLEDEMOTAG_H #define D_A_OBJ_LV4CANDLEDEMOTAG_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" #endif /* D_A_OBJ_LV4CANDLEDEMOTAG_H */ diff --git a/include/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.h b/include/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.h index f1da85bb739..e070477ea68 100644 --- a/include/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.h +++ b/include/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.h @@ -1,6 +1,50 @@ #ifndef D_A_OBJ_LV4GATE_H #define D_A_OBJ_LV4GATE_H -#include "dolphin/types.h" +#include "d/bg/d_bg_s_movebg_actor.h" +#include "f_op/f_op_actor_mng.h" +#include "m_Do/m_Do_hostIO.h" + +class daLv4Gate_c : public dBgS_MoveBgActor { +public: + enum Mode_e { + MODE_WAIT_e, + MODE_MOVE_e, + MODE_MOVE_END_e, + }; + + /* 80C5EBE4 */ void setBaseMtx(); + /* 80C5ECEC */ int create(); + /* 80C5EEA4 */ void moveGate(); + /* 80C5EF48 */ void init_modeWait(); + /* 80C5EF54 */ void modeWait(); + /* 80C5EFB0 */ void init_modeMove(); + /* 80C5EFBC */ void modeMove(); + /* 80C5F0C4 */ void init_modeMoveEnd(); + /* 80C5F1E4 */ void modeMoveEnd(); + + /* 80C5EC80 */ virtual int CreateHeap(); + /* 80C5EE54 */ virtual int Execute(f32 (**)[3][4]); + /* 80C5F1E8 */ virtual int Draw(); + /* 80C5F28C */ virtual int Delete(); + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ u8 mMode; + /* 0x5AD */ u8 mGateOpened; + /* 0x5AE */ u8 mInitMove; + /* 0x5AF */ u8 mMoveType; + /* 0x5B0 */ f32 mMoveTarget; + /* 0x5B4 */ f32 mMoveValue; +}; + +class daLv4Gate_HIO_c : public mDoHIO_entry_c { +public: + /* 80C5EB6C */ daLv4Gate_HIO_c(); + /* 80C5F348 */ virtual ~daLv4Gate_HIO_c(); + + /* 0x4 */ f32 mMoveSpeed; + /* 0x8 */ u8 mShockStrength; +}; #endif /* D_A_OBJ_LV4GATE_H */ diff --git a/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.cpp b/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.cpp index b347adcb7d2..bfdd6509e4b 100644 --- a/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.cpp +++ b/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.cpp @@ -4,30 +4,39 @@ // #include "rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_path.h" +#include "d/d_procname.h" +#include "d/event/d_event_lib.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "m_Do/m_Do_hostIO.h" // // Types: // -struct mDoMtx_stack_c { - static u8 now[48]; +class daLv4EdShutter_c : public fopAc_ac_c { +public: + u8 getStatus() { return mStatus; } + + /* 0x568 */ u8 field_0x568[0x5CA - 0x568]; + /* 0x56A */ u8 mStatus; }; -struct mDoHIO_entry_c { - /* 80C5CA10 */ ~mDoHIO_entry_c(); +// idk how this works atm. dEvLib_callback_c seems to need to be inherited, but this data comes +// before it. the fopAc_ac_c struct size is 100% correct, so do not change it +struct temp { + /* 0x568 */ u8 field_0x568[0x570 - 0x568]; }; -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; +class dalv4CandleDemoTag_c : public fopAc_ac_c, temp, public dEvLib_callback_c { +public: + dalv4CandleDemoTag_c() : dEvLib_callback_c(this) {} -struct dalv4CandleDemoTag_c { /* 80C5CA58 */ void setBaseMtx(); - /* 80C5CA90 */ void create(); - /* 80C5CBA4 */ void Execute(); + /* 80C5CA90 */ int create(); + /* 80C5CBA4 */ int Execute(); /* 80C5CBE8 */ void procMain(); /* 80C5CCA4 */ void init_modeWatch(); /* 80C5CCC0 */ void modeWatch(); @@ -37,37 +46,35 @@ struct dalv4CandleDemoTag_c { /* 80C5CEC0 */ void modeNG(); /* 80C5CF34 */ void init_modeEnd(); /* 80C5CF40 */ void modeEnd(); - /* 80C5CF78 */ void eventStart(); - /* 80C5CF9C */ void searchShutterAct(void*, void*); - /* 80C5CFEC */ bool Draw(); - /* 80C5CFF4 */ bool Delete(); - /* 80C5D184 */ ~dalv4CandleDemoTag_c(); + /* 80C5CF9C */ static void* searchShutterAct(void*, void*); + /* 80C5CFEC */ int Draw(); + /* 80C5CFF4 */ int Delete(); + + u8 getPathID() { return fopAcM_GetParamBit(this, 0x10, 8); } + int getSwNG() { return fopAcM_GetParamBit(this, 0, 8); } + int getSwDest() { return fopAcM_GetParamBit(this, 8, 8); } + int getSwOK() { return shape_angle.x & 0xFF; } + int getEventID() { return fopAcM_GetParamBit(this, 0x18, 8); } + + /* 80C5D184 */ virtual ~dalv4CandleDemoTag_c(); + /* 80C5CF78 */ virtual BOOL eventStart(); + + /* 0x584 */ u8 mMode; + /* 0x585 */ u8 mPathID; + /* 0x586 */ u8 mSwNG; + /* 0x587 */ u8 mSwDest; + /* 0x588 */ u16 mEnemyWaitTime; + /* 0x58C */ daLv4EdShutter_c* mpShutterActor; }; -struct dalv4CandleDemoTag_HIO_c { +class dalv4CandleDemoTag_HIO_c : public mDoHIO_entry_c { +public: /* 80C5C9EC */ dalv4CandleDemoTag_HIO_c(); - /* 80C5D07C */ ~dalv4CandleDemoTag_HIO_c(); + /* 80C5D07C */ virtual ~dalv4CandleDemoTag_HIO_c(); + + /* 0x4 */ s16 mEnemyWaitTime; }; -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 800352B0 */ void offSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dEvLib_callback_c { - /* 8004886C */ void eventUpdate(); - /* 80048940 */ void orderEvent(int, int, int); - /* 80C5D124 */ ~dEvLib_callback_c(); - /* 80C5D16C */ bool eventRun(); - /* 80C5D174 */ bool eventEnd(); - /* 80C5D17C */ bool eventStart(); -}; - -struct csXyz {}; - -struct cXyz {}; - // // Forward References: // @@ -121,14 +128,10 @@ extern "C" void eventUpdate__17dEvLib_callback_cFv(); extern "C" void orderEvent__17dEvLib_callback_cFiii(); extern "C" void dPath_GetRoomPath__Fii(); extern "C" void __dl__FPv(); -extern "C" void PSMTXTrans(); extern "C" void __ptmf_scall(); extern "C" void _savegpr_28(); extern "C" void _restgpr_28(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" void __register_global_object(); // @@ -250,71 +253,65 @@ SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = { (void*)eventEnd__17dEvLib_callback_cFv, }; -/* 80C5D328-80C5D334 000110 000C+00 2/2 0/0 0/0 .data __vt__24dalv4CandleDemoTag_HIO_c */ -SECTION_DATA extern void* __vt__24dalv4CandleDemoTag_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__24dalv4CandleDemoTag_HIO_cFv, -}; - -/* 80C5D334-80C5D340 00011C 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, -}; - /* 80C5C9EC-80C5CA10 0000EC 0024+00 1/1 0/0 0/0 .text __ct__24dalv4CandleDemoTag_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dalv4CandleDemoTag_HIO_c::dalv4CandleDemoTag_HIO_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/__ct__24dalv4CandleDemoTag_HIO_cFv.s" +dalv4CandleDemoTag_HIO_c::dalv4CandleDemoTag_HIO_c() { + mEnemyWaitTime = 60; } -#pragma pop - -/* 80C5CA10-80C5CA58 000110 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoHIO_entry_c::~mDoHIO_entry_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/__dt__14mDoHIO_entry_cFv.s" -} -#pragma pop /* 80C5CA58-80C5CA90 000158 0038+00 2/2 0/0 0/0 .text setBaseMtx__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::setBaseMtx() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/setBaseMtx__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); } -#pragma pop /* 80C5CA90-80C5CBA4 000190 0114+00 1/1 0/0 0/0 .text create__20dalv4CandleDemoTag_cFv */ +// vtables need work +#ifdef NONMATCHING +int dalv4CandleDemoTag_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) dalv4CandleDemoTag_c(); + fopAcM_OnCondition(this, 8); + } + + mPathID = getPathID(); + + if (dPath_GetRoomPath(mPathID, fopAcM_GetRoomNo(this)) == NULL) { + return 0; + } + + mSwNG = getSwNG(); + mSwDest = getSwDest(); + i_fopAcM_offSwitch(this, mSwDest); + + setBaseMtx(); + + if (i_fopAcM_isSwitch(this, getSwOK())) { + init_modeEnd(); + } else { + init_modeWatch(); + } + + return cPhs_COMPLEATE_e; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::create() { +asm int dalv4CandleDemoTag_c::create() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/create__20dalv4CandleDemoTag_cFv.s" } #pragma pop +#endif /* 80C5CBA4-80C5CBE8 0002A4 0044+00 1/1 0/0 0/0 .text Execute__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::Execute() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/Execute__20dalv4CandleDemoTag_cFv.s" +int dalv4CandleDemoTag_c::Execute() { + eventUpdate(); + procMain(); + setBaseMtx(); + return 1; } -#pragma pop /* ############################################################################################## */ /* 80C5D348-80C5D354 000008 000C+00 1/1 0/0 0/0 .bss @3632 */ @@ -328,6 +325,12 @@ static u8 data_80C5D35C[4]; /* 80C5CBE8-80C5CCA4 0002E8 00BC+00 1/1 0/0 0/0 .text procMain__20dalv4CandleDemoTag_cFv */ +// need virtuals to match so sinit can also be matched +#ifdef NONMATCHING +void dalv4CandleDemoTag_c::procMain() { + (this->*mode_proc[mMode])(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -336,181 +339,154 @@ asm void dalv4CandleDemoTag_c::procMain() { #include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/procMain__20dalv4CandleDemoTag_cFv.s" } #pragma pop +#endif /* 80C5CCA4-80C5CCC0 0003A4 001C+00 2/2 0/0 0/0 .text init_modeWatch__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::init_modeWatch() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/init_modeWatch__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::init_modeWatch() { + mEnemyWaitTime = (*(dalv4CandleDemoTag_HIO_c*)l_HIO).mEnemyWaitTime; + mMode = 0; } -#pragma pop /* 80C5CCC0-80C5CDC0 0003C0 0100+00 1/0 0/0 0/0 .text modeWatch__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::modeWatch() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/modeWatch__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::modeWatch() { + mpShutterActor = (daLv4EdShutter_c*)fopAcM_Search(searchShutterAct, this); + + u8 var3; + if (mpShutterActor == NULL) { + var3 = 1; + } else { + var3 = mpShutterActor->getStatus(); + } + + if (i_fopAcM_isSwitch(this, mSwNG) && var3 != 0) { + if (mEnemyWaitTime == 0) { + if (getEventID() != 0xFF) { + orderEvent(getEventID(), 0xFF, 1); + } else { + eventStart(); + } + } else { + mEnemyWaitTime--; + } + } + + if (i_fopAcM_isSwitch(this, getSwOK())) { + init_modeEnd(); + } } -#pragma pop /* 80C5CDC0-80C5CE70 0004C0 00B0+00 1/1 0/0 0/0 .text * init_modeEnemyCreate__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::init_modeEnemyCreate() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/init_modeEnemyCreate__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::init_modeEnemyCreate() { + dPath* path_p = dPath_GetRoomPath(mPathID, fopAcM_GetRoomNo(this)); + + for (int i = 0; i < path_p->m_num; i++) { + dStage_dPnt_c* pnt = &path_p->m_points[i]; + + cXyz pos; + pos.x = pnt->m_position.x; + pos.y = pnt->m_position.y; + pos.z = pnt->m_position.z; + + fopAcM_create(PROC_E_BS, 0xFFFFFEFF, &pos, fopAcM_GetRoomNo(this), NULL, NULL, -1); + } + + mMode = 1; } -#pragma pop /* 80C5CE70-80C5CEB4 000570 0044+00 1/0 0/0 0/0 .text modeEnemyCreate__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::modeEnemyCreate() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/modeEnemyCreate__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::modeEnemyCreate() { + if (fopAcM_myRoomSearchEnemy(fopAcM_GetRoomNo(this))) { + init_modeNG(); + } } -#pragma pop /* 80C5CEB4-80C5CEC0 0005B4 000C+00 1/1 0/0 0/0 .text init_modeNG__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::init_modeNG() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/init_modeNG__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::init_modeNG() { + mMode = 2; } -#pragma pop /* 80C5CEC0-80C5CF34 0005C0 0074+00 1/0 0/0 0/0 .text modeNG__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::modeNG() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/modeNG__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::modeNG() { + if (!fopAcM_myRoomSearchEnemy(fopAcM_GetRoomNo(this))) { + i_fopAcM_onSwitch(this, mSwDest); + i_fopAcM_offSwitch(this, mSwNG); + init_modeWatch(); + } } -#pragma pop /* 80C5CF34-80C5CF40 000634 000C+00 2/2 0/0 0/0 .text init_modeEnd__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::init_modeEnd() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/init_modeEnd__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::init_modeEnd() { + mMode = 3; } -#pragma pop /* 80C5CF40-80C5CF78 000640 0038+00 1/0 0/0 0/0 .text modeEnd__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::modeEnd() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/modeEnd__20dalv4CandleDemoTag_cFv.s" +void dalv4CandleDemoTag_c::modeEnd() { + i_fopAcM_offSwitch(this, mSwNG); } -#pragma pop /* 80C5CF78-80C5CF9C 000678 0024+00 2/1 0/0 0/0 .text eventStart__20dalv4CandleDemoTag_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::eventStart() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/eventStart__20dalv4CandleDemoTag_cFv.s" +BOOL dalv4CandleDemoTag_c::eventStart() { + init_modeEnemyCreate(); + return 1; } -#pragma pop /* 80C5CF9C-80C5CFEC 00069C 0050+00 1/1 0/0 0/0 .text * searchShutterAct__20dalv4CandleDemoTag_cFPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dalv4CandleDemoTag_c::searchShutterAct(void* param_0, void* param_1) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/searchShutterAct__20dalv4CandleDemoTag_cFPvPv.s" +void* dalv4CandleDemoTag_c::searchShutterAct(void* param_0, void* param_1) { + if (param_0 != NULL && fopAcM_IsActor(param_0) && + fopAcM_GetProfName(param_0) == PROC_Obj_Lv4EdShutter) + { + return param_0; + } + + return NULL; } -#pragma pop /* 80C5CFEC-80C5CFF4 0006EC 0008+00 1/1 0/0 0/0 .text Draw__20dalv4CandleDemoTag_cFv */ -bool dalv4CandleDemoTag_c::Draw() { - return true; +int dalv4CandleDemoTag_c::Draw() { + return 1; } /* 80C5CFF4-80C5CFFC 0006F4 0008+00 1/1 0/0 0/0 .text Delete__20dalv4CandleDemoTag_cFv */ -bool dalv4CandleDemoTag_c::Delete() { - return true; +int dalv4CandleDemoTag_c::Delete() { + return 1; } /* 80C5CFFC-80C5D01C 0006FC 0020+00 1/0 0/0 0/0 .text * dalv4CandleDemoTag_Draw__FP20dalv4CandleDemoTag_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dalv4CandleDemoTag_Draw(dalv4CandleDemoTag_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/dalv4CandleDemoTag_Draw__FP20dalv4CandleDemoTag_c.s" +static int dalv4CandleDemoTag_Draw(dalv4CandleDemoTag_c* i_this) { + return i_this->Draw(); } -#pragma pop /* 80C5D01C-80C5D03C 00071C 0020+00 1/0 0/0 0/0 .text * dalv4CandleDemoTag_Execute__FP20dalv4CandleDemoTag_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dalv4CandleDemoTag_Execute(dalv4CandleDemoTag_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/dalv4CandleDemoTag_Execute__FP20dalv4CandleDemoTag_c.s" +static int dalv4CandleDemoTag_Execute(dalv4CandleDemoTag_c* i_this) { + return i_this->Execute(); } -#pragma pop /* 80C5D03C-80C5D05C 00073C 0020+00 1/0 0/0 0/0 .text * dalv4CandleDemoTag_Delete__FP20dalv4CandleDemoTag_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dalv4CandleDemoTag_Delete(dalv4CandleDemoTag_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/dalv4CandleDemoTag_Delete__FP20dalv4CandleDemoTag_c.s" +static int dalv4CandleDemoTag_Delete(dalv4CandleDemoTag_c* i_this) { + return i_this->Delete(); } -#pragma pop /* 80C5D05C-80C5D07C 00075C 0020+00 1/0 0/0 0/0 .text dalv4CandleDemoTag_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dalv4CandleDemoTag_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/dalv4CandleDemoTag_Create__FP10fopAc_ac_c.s" +static int dalv4CandleDemoTag_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 80C5D07C-80C5D0D8 00077C 005C+00 2/1 0/0 0/0 .text __dt__24dalv4CandleDemoTag_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dalv4CandleDemoTag_HIO_c::~dalv4CandleDemoTag_HIO_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/__dt__24dalv4CandleDemoTag_HIO_cFv.s" -} -#pragma pop +dalv4CandleDemoTag_HIO_c::~dalv4CandleDemoTag_HIO_c() {} /* 80C5D0D8-80C5D114 0007D8 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv4CandleDemoTag_cpp */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __sinit_d_a_obj_lv4CandleDemoTag_cpp() { - nofralloc +asm void __sinit_d_a_obj_lv4CandleDemoTag_cpp(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/__sinit_d_a_obj_lv4CandleDemoTag_cpp.s" } #pragma pop @@ -545,25 +521,29 @@ static asm void func_80C5D11C() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dEvLib_callback_c::~dEvLib_callback_c() { +// asm dEvLib_callback_c::~dEvLib_callback_c() { +extern "C" asm void __dt__17dEvLib_callback_cFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/__dt__17dEvLib_callback_cFv.s" } #pragma pop /* 80C5D16C-80C5D174 00086C 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventRun() { +// bool dEvLib_callback_c::eventRun() { +extern "C" bool eventRun__17dEvLib_callback_cFv() { return true; } /* 80C5D174-80C5D17C 000874 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventEnd() { +// bool dEvLib_callback_c::eventEnd() { +extern "C" bool eventEnd__17dEvLib_callback_cFv() { return true; } /* 80C5D17C-80C5D184 00087C 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventStart() { +// bool dEvLib_callback_c::eventStart() { +extern "C" bool eventStart__17dEvLib_callback_cFv() { return true; } @@ -571,7 +551,8 @@ bool dEvLib_callback_c::eventStart() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dalv4CandleDemoTag_c::~dalv4CandleDemoTag_c() { +// asm dalv4CandleDemoTag_c::~dalv4CandleDemoTag_c() { +extern "C" asm void __dt__20dalv4CandleDemoTag_cFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_lv4CandleDemoTag/d_a_obj_lv4CandleDemoTag/__dt__20dalv4CandleDemoTag_cFv.s" } diff --git a/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.cpp b/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.cpp index dff7feb6128..5835c5b4e82 100644 --- a/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.cpp +++ b/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.cpp @@ -1,204 +1,38 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_lv4Gate -// +/** + * d_a_obj_lv4Gate.cpp + * Arbiter's Grounds Generic Gate + */ #include "rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" #include "dol2asm.h" -#include "dolphin/types.h" -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct mDoMtx_stack_c { - /* 8000CD9C */ void transM(f32, f32, f32); - - static u8 now[48]; -}; - -struct mDoHIO_entry_c { - /* 80C5EB9C */ ~mDoHIO_entry_c(); -}; - -struct fopAc_ac_c {}; - -struct daLv4Gate_c { - /* 80C5EBE4 */ void setBaseMtx(); - /* 80C5EC80 */ void CreateHeap(); - /* 80C5ECEC */ void create(); - /* 80C5EE54 */ void Execute(f32 (**)[3][4]); - /* 80C5EEA4 */ void moveGate(); - /* 80C5EF48 */ void init_modeWait(); - /* 80C5EF54 */ void modeWait(); - /* 80C5EFB0 */ void init_modeMove(); - /* 80C5EFBC */ void modeMove(); - /* 80C5F0C4 */ void init_modeMoveEnd(); - /* 80C5F1E4 */ void modeMoveEnd(); - /* 80C5F1E8 */ void Draw(); - /* 80C5F28C */ void Delete(); -}; - -struct daLv4Gate_HIO_c { - /* 80C5EB6C */ daLv4Gate_HIO_c(); - /* 80C5F348 */ ~daLv4Gate_HIO_c(); -}; - -struct cXyz {}; - -struct dVibration_c { - /* 8006FA24 */ void StartShock(int, int, cXyz); -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dBgW {}; - -struct cBgS_PolyInfo {}; - -struct csXyz {}; - -struct dBgS_MoveBgActor { - /* 80078624 */ dBgS_MoveBgActor(); - /* 80078690 */ bool Create(); - /* 800786B0 */ bool IsDelete(); - /* 800786B8 */ bool ToFore(); - /* 800786C0 */ bool ToBack(); - /* 800787BC */ void MoveBGCreate(char const*, int, - void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, - csXyz*, csXyz*), - u32, f32 (*)[3][4]); - /* 800788DC */ void MoveBGDelete(); - /* 80078950 */ void MoveBGExecute(); -}; - -struct JAISoundID {}; - -struct Vec {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct J3DModel {}; - -// -// Forward References: -// - -extern "C" void __ct__15daLv4Gate_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__11daLv4Gate_cFv(); extern "C" void CreateHeap__11daLv4Gate_cFv(); -extern "C" void create__11daLv4Gate_cFv(); +extern "C" bool Create__16dBgS_MoveBgActorFv(); extern "C" void Execute__11daLv4Gate_cFPPA3_A4_f(); -extern "C" void moveGate__11daLv4Gate_cFv(); -extern "C" void init_modeWait__11daLv4Gate_cFv(); -extern "C" void modeWait__11daLv4Gate_cFv(); -extern "C" void init_modeMove__11daLv4Gate_cFv(); -extern "C" void modeMove__11daLv4Gate_cFv(); -extern "C" void init_modeMoveEnd__11daLv4Gate_cFv(); -extern "C" void modeMoveEnd__11daLv4Gate_cFv(); extern "C" void Draw__11daLv4Gate_cFv(); extern "C" void Delete__11daLv4Gate_cFv(); -extern "C" static void daLv4Gate_Draw__FP11daLv4Gate_c(); -extern "C" static void daLv4Gate_Execute__FP11daLv4Gate_c(); -extern "C" static void daLv4Gate_Delete__FP11daLv4Gate_c(); -extern "C" static void daLv4Gate_Create__FP10fopAc_ac_c(); -extern "C" void __dt__15daLv4Gate_HIO_cFv(); -extern "C" void __sinit_d_a_obj_lv4Gate_cpp(); -extern "C" extern char const* const d_a_obj_lv4Gate__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotS__FPA4_fsss(); -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -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 StartShock__12dVibration_cFii4cXyz(); -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 cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); +extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); +extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C5F3F4-80C5F3F8 000000 0004+00 4/4 0/0 0/0 .rodata @3625 */ -SECTION_RODATA static f32 const lit_3625 = 2.0f; -COMPILER_STRIP_GATE(0x80C5F3F4, &lit_3625); +extern "C" extern char const* const d_a_obj_lv4Gate__stringBase0; +extern void* __vt__11daLv4Gate_c[10]; /* 80C5F41C-80C5F428 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80C5F428-80C5F43C 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ +// unused data? #pragma push #pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -208,66 +42,241 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { }; #pragma pop -/* 80C5F43C-80C5F448 -00001 000C+00 0/1 0/0 0/0 .data @3725 */ +/* 80C5EB6C-80C5EB9C 0000EC 0030+00 1/1 0/0 0/0 .text __ct__15daLv4Gate_HIO_cFv */ +daLv4Gate_HIO_c::daLv4Gate_HIO_c() { + mMoveSpeed = 2.0f; + mShockStrength = 3; +} + +/* 80C5EBE4-80C5EC80 000164 009C+00 2/2 0/0 0/0 .text setBaseMtx__11daLv4Gate_cFv */ +void daLv4Gate_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); + mDoMtx_stack_c::transM(mMoveValue, 0.0f, 0.0f); + + mpModel->setBaseScale(mScale); + mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); +} + +/* ############################################################################################## */ +/* 80C5F414-80C5F414 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on -SECTION_DATA static void* lit_3725[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__11daLv4Gate_cFv, -}; +SECTION_DEAD static char const* const stringBase_80C5F414 = "L4Gate"; #pragma pop -/* 80C5F448-80C5F454 -00001 000C+00 0/1 0/0 0/0 .data @3726 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3726[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMove__11daLv4Gate_cFv, -}; -#pragma pop +/* 80C5EC80-80C5ECEC 000200 006C+00 1/0 0/0 0/0 .text CreateHeap__11daLv4Gate_cFv */ +// vtable ordering issue +#ifdef NONMATCHING +int daLv4Gate_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("L4Gate", 4); -/* 80C5F454-80C5F460 -00001 000C+00 0/1 0/0 0/0 .data @3727 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3727[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMoveEnd__11daLv4Gate_cFv, -}; -#pragma pop + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } -/* 80C5F460-80C5F484 000044 0024+00 0/1 0/0 0/0 .data mode_proc$3724 */ + return 1; +} +#else #pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[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, -}; +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm int daLv4Gate_c::CreateHeap() { +extern "C" asm void CreateHeap__11daLv4Gate_cFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/CreateHeap__11daLv4Gate_cFv.s" +} #pragma pop +#endif + +/* 80C5ECEC-80C5EE54 00026C 0168+00 1/1 0/0 0/0 .text create__11daLv4Gate_cFv */ +int daLv4Gate_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daLv4Gate_c(); + fopAcM_OnCondition(this, 8); + } + + int phase = dComIfG_resLoad(&mPhase, "L4Gate"); + if (phase == cPhs_COMPLEATE_e) { + if (MoveBGCreate("L4Gate", 7, dBgS_MoveBGProc_TypicalRotY, 0x2300, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + + mInitMove = i_fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF); + mMoveType = fopAcM_GetParam(this) >> 8; + + f32 target; + // type 0 is a right side gate, otherwise a left side gate + if (mMoveType == 0) { + target = -250.0f; + } else { + target = 250.0f; + } + + mMoveTarget = target; + mMoveValue = 0.0f; + mGateOpened = false; + + if (mInitMove) { + mMoveValue = mMoveTarget; + mGateOpened = true; + init_modeMoveEnd(); + } else { + init_modeWait(); + } + + setBaseMtx(); + } + + return phase; +} + +/* 80C5EE54-80C5EEA4 0003D4 0050+00 1/0 0/0 0/0 .text Execute__11daLv4Gate_cFPPA3_A4_f */ +int daLv4Gate_c::Execute(f32 (**param_0)[3][4]) { + moveGate(); + *param_0 = &mpModel->getBaseTRMtx(); + setBaseMtx(); + + return 1; +} + +/* 80C5F52C-80C5F538 000014 000C+00 3/3 0/0 0/0 .bss l_HIO */ +static daLv4Gate_HIO_c l_HIO; + +/* 80C5EEA4-80C5EF48 000424 00A4+00 1/1 0/0 0/0 .text moveGate__11daLv4Gate_cFv */ +void daLv4Gate_c::moveGate() { + typedef void (daLv4Gate_c::*modeFunc)(); + static modeFunc mode_proc[] = {&daLv4Gate_c::modeWait, &daLv4Gate_c::modeMove, + &daLv4Gate_c::modeMoveEnd}; + + (this->*mode_proc[mMode])(); +} + +/* 80C5EF48-80C5EF54 0004C8 000C+00 1/1 0/0 0/0 .text init_modeWait__11daLv4Gate_cFv */ +void daLv4Gate_c::init_modeWait() { + mMode = MODE_WAIT_e; +} + +/* 80C5EF54-80C5EFB0 0004D4 005C+00 1/0 0/0 0/0 .text modeWait__11daLv4Gate_cFv */ +void daLv4Gate_c::modeWait() { + mInitMove = i_fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF); + if (mInitMove) { + init_modeMove(); + } +} + +/* 80C5EFB0-80C5EFBC 000530 000C+00 1/1 0/0 0/0 .text init_modeMove__11daLv4Gate_cFv */ +void daLv4Gate_c::init_modeMove() { + mMode = MODE_MOVE_e; +} + +/* 80C5EFBC-80C5F0C4 00053C 0108+00 1/0 0/0 0/0 .text modeMove__11daLv4Gate_cFv */ +void daLv4Gate_c::modeMove() { + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + + cXyz sound_pos(mMoveTarget, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&sound_pos, &sound_pos); + sound_pos += current.pos; + + i_mDoAud_seStartLevel(Z2SE_OBJ_GORONGATE_MOVE, &sound_pos, 0, + dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (cLib_addCalc(&mMoveValue, mMoveTarget, 0.2f, l_HIO.mMoveSpeed, 0.5f) == 0.0f) { + init_modeMoveEnd(); + } +} + +/* 80C5F0C4-80C5F1E4 000644 0120+00 2/2 0/0 0/0 .text init_modeMoveEnd__11daLv4Gate_cFv + */ +void daLv4Gate_c::init_modeMoveEnd() { + if (!mGateOpened) { + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + + cXyz sound_pos(mMoveTarget, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&sound_pos, &sound_pos); + sound_pos += current.pos; + + mDoAud_seStart(Z2SE_OBJ_GORONGATE_STOP, &sound_pos, 0, + dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + dComIfGp_getVibration().StartShock(l_HIO.mShockStrength, 15, cXyz(0.0f, 1.0f, 0.0f)); + } + + mMode = MODE_MOVE_END_e; +} + +/* 80C5F1E4-80C5F1E8 000764 0004+00 1/0 0/0 0/0 .text modeMoveEnd__11daLv4Gate_cFv */ +void daLv4Gate_c::modeMoveEnd() {} + +/* 80C5F1E8-80C5F28C 000768 00A4+00 1/0 0/0 0/0 .text Draw__11daLv4Gate_cFv */ +int daLv4Gate_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 80C5F28C-80C5F2BC 00080C 0030+00 1/0 0/0 0/0 .text Delete__11daLv4Gate_cFv */ +int daLv4Gate_c::Delete() { + dComIfG_resDelete(&mPhase, "L4Gate"); + return 1; +} + +/* 80C5F2BC-80C5F2E8 00083C 002C+00 1/0 0/0 0/0 .text daLv4Gate_Draw__FP11daLv4Gate_c */ +static int daLv4Gate_Draw(daLv4Gate_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80C5F2E8-80C5F308 000868 0020+00 1/0 0/0 0/0 .text daLv4Gate_Execute__FP11daLv4Gate_c + */ +static int daLv4Gate_Execute(daLv4Gate_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C5F308-80C5F328 000888 0020+00 1/0 0/0 0/0 .text daLv4Gate_Delete__FP11daLv4Gate_c + */ +static int daLv4Gate_Delete(daLv4Gate_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C5F328-80C5F348 0008A8 0020+00 1/0 0/0 0/0 .text daLv4Gate_Create__FP10fopAc_ac_c */ +static int daLv4Gate_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} + +/* 80C5F348-80C5F3A4 0008C8 005C+00 2/1 0/0 0/0 .text __dt__15daLv4Gate_HIO_cFv */ +daLv4Gate_HIO_c::~daLv4Gate_HIO_c() {} /* 80C5F484-80C5F4A4 -00001 0020+00 1/0 0/0 0/0 .data l_daLv4Gate_Method */ -SECTION_DATA static void* l_daLv4Gate_Method[8] = { - (void*)daLv4Gate_Create__FP10fopAc_ac_c, - (void*)daLv4Gate_Delete__FP11daLv4Gate_c, - (void*)daLv4Gate_Execute__FP11daLv4Gate_c, - (void*)NULL, - (void*)daLv4Gate_Draw__FP11daLv4Gate_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daLv4Gate_Method = { + (process_method_func)daLv4Gate_Create, (process_method_func)daLv4Gate_Delete, + (process_method_func)daLv4Gate_Execute, (process_method_func)NULL, + (process_method_func)daLv4Gate_Draw, }; /* 80C5F4A4-80C5F4D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv4Gate */ -SECTION_DATA extern void* g_profile_Obj_Lv4Gate[12] = { - (void*)0xFFFFFFFD, (void*)0x0003FFFD, - (void*)0x009C0000, (void*)&g_fpcLf_Method, - (void*)0x000005B8, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x027D0000, (void*)&l_daLv4Gate_Method, - (void*)0x00040000, (void*)0x000E0000, +extern actor_process_profile_definition g_profile_Obj_Lv4Gate = { + -3, + 3, + -3, + PROC_Obj_Lv4Gate, + &g_fpcLf_Method.mBase, + sizeof(daLv4Gate_c), + 0, + 0, + &g_fopAc_Method.base, + 637, + &l_daLv4Gate_Method, + 0x40000, + 0, + 14, }; /* 80C5F4D4-80C5F4FC 0000B8 0028+00 1/1 0/0 0/0 .data __vt__11daLv4Gate_c */ @@ -283,303 +292,3 @@ SECTION_DATA extern void* __vt__11daLv4Gate_c[10] = { (void*)ToFore__16dBgS_MoveBgActorFv, (void*)ToBack__16dBgS_MoveBgActorFv, }; - -/* 80C5F4FC-80C5F508 0000E0 000C+00 2/2 0/0 0/0 .data __vt__15daLv4Gate_HIO_c */ -SECTION_DATA extern void* __vt__15daLv4Gate_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daLv4Gate_HIO_cFv, -}; - -/* 80C5F508-80C5F514 0000EC 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, -}; - -/* 80C5EB6C-80C5EB9C 0000EC 0030+00 1/1 0/0 0/0 .text __ct__15daLv4Gate_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daLv4Gate_HIO_c::daLv4Gate_HIO_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/__ct__15daLv4Gate_HIO_cFv.s" -} -#pragma pop - -/* 80C5EB9C-80C5EBE4 00011C 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoHIO_entry_c::~mDoHIO_entry_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/__dt__14mDoHIO_entry_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C5F3F8-80C5F3FC 000004 0004+00 1/4 0/0 0/0 .rodata @3646 */ -SECTION_RODATA static u8 const lit_3646[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C5F3F8, &lit_3646); - -/* 80C5EBE4-80C5EC80 000164 009C+00 2/2 0/0 0/0 .text setBaseMtx__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::setBaseMtx() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/setBaseMtx__11daLv4Gate_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C5F414-80C5F414 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C5F414 = "L4Gate"; -#pragma pop - -/* 80C5EC80-80C5ECEC 000200 006C+00 1/0 0/0 0/0 .text CreateHeap__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::CreateHeap() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/CreateHeap__11daLv4Gate_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C5F3FC-80C5F400 000008 0004+00 0/1 0/0 0/0 .rodata @3710 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3710 = -250.0f; -COMPILER_STRIP_GATE(0x80C5F3FC, &lit_3710); -#pragma pop - -/* 80C5F400-80C5F404 00000C 0004+00 0/1 0/0 0/0 .rodata @3711 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3711 = 250.0f; -COMPILER_STRIP_GATE(0x80C5F400, &lit_3711); -#pragma pop - -/* 80C5ECEC-80C5EE54 00026C 0168+00 1/1 0/0 0/0 .text create__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::create() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/create__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5EE54-80C5EEA4 0003D4 0050+00 1/0 0/0 0/0 .text Execute__11daLv4Gate_cFPPA3_A4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::Execute(f32 (**param_0)[3][4]) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/Execute__11daLv4Gate_cFPPA3_A4_f.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C5F520-80C5F52C 000008 000C+00 1/1 0/0 0/0 .bss @3619 */ -static u8 lit_3619[12]; - -/* 80C5F52C-80C5F538 000014 000C+00 3/3 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[12]; - -/* 80C5F538-80C5F53C 000020 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80C5F538[4]; - -/* 80C5EEA4-80C5EF48 000424 00A4+00 1/1 0/0 0/0 .text moveGate__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::moveGate() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/moveGate__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5EF48-80C5EF54 0004C8 000C+00 1/1 0/0 0/0 .text init_modeWait__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::init_modeWait() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/init_modeWait__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5EF54-80C5EFB0 0004D4 005C+00 1/0 0/0 0/0 .text modeWait__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::modeWait() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/modeWait__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5EFB0-80C5EFBC 000530 000C+00 1/1 0/0 0/0 .text init_modeMove__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::init_modeMove() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/init_modeMove__11daLv4Gate_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C5F404-80C5F408 000010 0004+00 0/2 0/0 0/0 .rodata @3775 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3775 = 1.0f; -COMPILER_STRIP_GATE(0x80C5F404, &lit_3775); -#pragma pop - -/* 80C5F408-80C5F40C 000014 0004+00 0/2 0/0 0/0 .rodata @3776 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3776 = -1.0f; -COMPILER_STRIP_GATE(0x80C5F408, &lit_3776); -#pragma pop - -/* 80C5F40C-80C5F410 000018 0004+00 0/1 0/0 0/0 .rodata @3777 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3777 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C5F40C, &lit_3777); -#pragma pop - -/* 80C5F410-80C5F414 00001C 0004+00 0/1 0/0 0/0 .rodata @3778 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3778 = 0.5f; -COMPILER_STRIP_GATE(0x80C5F410, &lit_3778); -#pragma pop - -/* 80C5EFBC-80C5F0C4 00053C 0108+00 1/0 0/0 0/0 .text modeMove__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::modeMove() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/modeMove__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5F0C4-80C5F1E4 000644 0120+00 2/2 0/0 0/0 .text init_modeMoveEnd__11daLv4Gate_cFv - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::init_modeMoveEnd() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/init_modeMoveEnd__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5F1E4-80C5F1E8 000764 0004+00 1/0 0/0 0/0 .text modeMoveEnd__11daLv4Gate_cFv */ -void daLv4Gate_c::modeMoveEnd() { - /* empty function */ -} - -/* 80C5F1E8-80C5F28C 000768 00A4+00 1/0 0/0 0/0 .text Draw__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::Draw() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/Draw__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5F28C-80C5F2BC 00080C 0030+00 1/0 0/0 0/0 .text Delete__11daLv4Gate_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daLv4Gate_c::Delete() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/Delete__11daLv4Gate_cFv.s" -} -#pragma pop - -/* 80C5F2BC-80C5F2E8 00083C 002C+00 1/0 0/0 0/0 .text daLv4Gate_Draw__FP11daLv4Gate_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daLv4Gate_Draw(daLv4Gate_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/daLv4Gate_Draw__FP11daLv4Gate_c.s" -} -#pragma pop - -/* 80C5F2E8-80C5F308 000868 0020+00 1/0 0/0 0/0 .text daLv4Gate_Execute__FP11daLv4Gate_c - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daLv4Gate_Execute(daLv4Gate_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/daLv4Gate_Execute__FP11daLv4Gate_c.s" -} -#pragma pop - -/* 80C5F308-80C5F328 000888 0020+00 1/0 0/0 0/0 .text daLv4Gate_Delete__FP11daLv4Gate_c - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daLv4Gate_Delete(daLv4Gate_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/daLv4Gate_Delete__FP11daLv4Gate_c.s" -} -#pragma pop - -/* 80C5F328-80C5F348 0008A8 0020+00 1/0 0/0 0/0 .text daLv4Gate_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daLv4Gate_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/daLv4Gate_Create__FP10fopAc_ac_c.s" -} -#pragma pop - -/* 80C5F348-80C5F3A4 0008C8 005C+00 2/1 0/0 0/0 .text __dt__15daLv4Gate_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daLv4Gate_HIO_c::~daLv4Gate_HIO_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/__dt__15daLv4Gate_HIO_cFv.s" -} -#pragma pop - -/* 80C5F3A4-80C5F3E0 000924 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv4Gate_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_a_obj_lv4Gate_cpp() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_lv4Gate/d_a_obj_lv4Gate/__sinit_d_a_obj_lv4Gate_cpp.s" -} -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C5F3A4, __sinit_d_a_obj_lv4Gate_cpp); -#pragma pop - -/* 80C5F414-80C5F414 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */