From f932405784439e1e9aa18396ed36a615702e10c8 Mon Sep 17 00:00:00 2001 From: Howard Luck Date: Wed, 24 Sep 2025 10:51:01 -0600 Subject: [PATCH] d_a_obj_smgdoor OK (#2692) * d_a_obj_smgdoor OK * symbols * dEvtCnd_CANDOOR_e * remove else --- .../GZ2E01/rels/d_a_obj_smgdoor/symbols.txt | 8 +- .../GZ2J01/rels/d_a_obj_smgdoor/symbols.txt | 7 +- .../GZ2P01/rels/d_a_obj_smgdoor/symbols.txt | 7 +- configure.py | 2 +- include/d/actor/d_a_obj_smgdoor.h | 62 +- src/d/actor/d_a_obj_smgdoor.cpp | 746 +++++++++--------- 6 files changed, 433 insertions(+), 399 deletions(-) diff --git a/config/GZ2E01/rels/d_a_obj_smgdoor/symbols.txt b/config/GZ2E01/rels/d_a_obj_smgdoor/symbols.txt index fc92105e585..40ac5fd5f91 100644 --- a/config/GZ2E01/rels/d_a_obj_smgdoor/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_smgdoor/symbols.txt @@ -44,10 +44,10 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4055 = .rodata:0x00000028; // type:object size:0x4 scope:local @4056 = .rodata:0x0000002C; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000030; // type:object size:0x9F scope:local data:string_table -...data.0 = .data:0x00000000; // type:label scope:local -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_622_data_10 = .data:0x00000010; // type:object size:0x10 +_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8 +_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8 l_arcName = .data:0x00000020; // type:object size:0x8 scope:global l_bmd = .data:0x00000028; // type:object size:0x8 scope:global l_dzb = .data:0x00000030; // type:object size:0x8 scope:global @@ -61,4 +61,4 @@ l_func$3923 = .data:0x00000094; // type:object size:0x24 scope:local daObjSmgDoor_METHODS = .data:0x000000B8; // type:object size:0x20 scope:global g_profile_Obj_SmgDoor = .data:0x000000D8; // type:object size:0x30 scope:global __vt__14daObjSmgDoor_c = .data:0x00000108; // type:object size:0x28 scope:global -lbl_622_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +init$1847 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/config/GZ2J01/rels/d_a_obj_smgdoor/symbols.txt b/config/GZ2J01/rels/d_a_obj_smgdoor/symbols.txt index 685771cd770..40ac5fd5f91 100644 --- a/config/GZ2J01/rels/d_a_obj_smgdoor/symbols.txt +++ b/config/GZ2J01/rels/d_a_obj_smgdoor/symbols.txt @@ -44,9 +44,10 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4055 = .rodata:0x00000028; // type:object size:0x4 scope:local @4056 = .rodata:0x0000002C; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000030; // type:object size:0x9F scope:local data:string_table -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_622_data_10 = .data:0x00000010; // type:object size:0x10 +_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8 +_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8 l_arcName = .data:0x00000020; // type:object size:0x8 scope:global l_bmd = .data:0x00000028; // type:object size:0x8 scope:global l_dzb = .data:0x00000030; // type:object size:0x8 scope:global @@ -60,4 +61,4 @@ l_func$3923 = .data:0x00000094; // type:object size:0x24 scope:local daObjSmgDoor_METHODS = .data:0x000000B8; // type:object size:0x20 scope:global g_profile_Obj_SmgDoor = .data:0x000000D8; // type:object size:0x30 scope:global __vt__14daObjSmgDoor_c = .data:0x00000108; // type:object size:0x28 scope:global -lbl_622_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +init$1847 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/config/GZ2P01/rels/d_a_obj_smgdoor/symbols.txt b/config/GZ2P01/rels/d_a_obj_smgdoor/symbols.txt index 685771cd770..40ac5fd5f91 100644 --- a/config/GZ2P01/rels/d_a_obj_smgdoor/symbols.txt +++ b/config/GZ2P01/rels/d_a_obj_smgdoor/symbols.txt @@ -44,9 +44,10 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4055 = .rodata:0x00000028; // type:object size:0x4 scope:local @4056 = .rodata:0x0000002C; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000030; // type:object size:0x9F scope:local data:string_table -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_622_data_10 = .data:0x00000010; // type:object size:0x10 +_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8 +_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8 l_arcName = .data:0x00000020; // type:object size:0x8 scope:global l_bmd = .data:0x00000028; // type:object size:0x8 scope:global l_dzb = .data:0x00000030; // type:object size:0x8 scope:global @@ -60,4 +61,4 @@ l_func$3923 = .data:0x00000094; // type:object size:0x24 scope:local daObjSmgDoor_METHODS = .data:0x000000B8; // type:object size:0x20 scope:global g_profile_Obj_SmgDoor = .data:0x000000D8; // type:object size:0x30 scope:global __vt__14daObjSmgDoor_c = .data:0x00000108; // type:object size:0x28 scope:global -lbl_622_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +init$1847 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/configure.py b/configure.py index 94e7d95d515..37572d86db1 100755 --- a/configure.py +++ b/configure.py @@ -2148,7 +2148,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_shield"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_sm_door"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_smallkey"), - ActorRel(NonMatching, "d_a_obj_smgdoor"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_smgdoor"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_smoke"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_smtile"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_smw_stone"), diff --git a/include/d/actor/d_a_obj_smgdoor.h b/include/d/actor/d_a_obj_smgdoor.h index f5a0a489438..191c604a63d 100644 --- a/include/d/actor/d_a_obj_smgdoor.h +++ b/include/d/actor/d_a_obj_smgdoor.h @@ -1,28 +1,36 @@ #ifndef D_A_OBJ_SMGDOOR_H #define D_A_OBJ_SMGDOOR_H +#include "d/d_bg_s_movebg_actor.h" #include "f_op/f_op_actor_mng.h" +enum daObjSmgDoor_Action { + ACT_WAIT = 0, + ACT_OPEN = 1, + ACT_SETGOAL = 2, + ACT_SETPOS = 3, + ACT_SCENE_CHG = 4, + ACT_COLOR_CHG = 5 +}; + /** * @ingroup actors-objects * @class daObjSmgDoor_c * @brief Sacred Meadow Grove Door * - * @details + * @details The entrance / exit door to Temple of Time * */ -class daObjSmgDoor_c : public fopAc_ac_c { +class daObjSmgDoor_c : public dBgS_MoveBgActor { public: + typedef void (daObjSmgDoor_c::*actionFunc)(); /* 80CDBB5C */ void initBaseMtx(); /* 80CDBBEC */ void setBaseMtx(); - /* 80CDBD38 */ void Create(); - /* 80CDBE1C */ void CreateHeap(); - /* 80CDBED4 */ void create1st(); - /* 80CDBFA4 */ void Execute(Mtx**); - /* 80CDBFF0 */ void getDemoAction(); - /* 80CDC038 */ void demoProc(); - /* 80CDC248 */ void openInit(); - /* 80CDC378 */ void openProc(); + /* 80CDBED4 */ int create1st(); + /* 80CDBFF0 */ int getDemoAction(); + /* 80CDC038 */ int demoProc(); + /* 80CDC248 */ int openInit(); + /* 80CDC378 */ int openProc(); /* 80CDC4AC */ void setGoal(); /* 80CDC548 */ void setPos(); /* 80CDC610 */ void sceneChange(); @@ -30,16 +38,38 @@ public: /* 80CDC700 */ void actionWaitEvent(); /* 80CDC790 */ void actionEvent(); /* 80CDC7F4 */ void actionDead(); - /* 80CDC7F8 */ void checkArea(); - /* 80CDC974 */ void checkOpen(); - /* 80CDCA00 */ void Draw(); - /* 80CDCAC4 */ void Delete(); + /* 80CDC7F8 */ int checkArea(); + /* 80CDC974 */ int checkOpen(); + + void setAction(u8 i_action) { mAction = i_action; } + u8 getEvId() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 20, 8); } + u8 getType() { return fopAcM_GetParamBit(this, 8, 4); } + u8 getNextSceneID() { return fopAcM_GetParamBit(this, 12, 8); } + + /* 80CDBD38 */ virtual int Create(); + /* 80CDBE1C */ virtual int CreateHeap(); + /* 80CDBFA4 */ virtual int Execute(Mtx**); + /* 80CDCA00 */ virtual int Draw(); + /* 80CDCAC4 */ virtual int Delete(); private: - /* 0x568 */ u8 field_0x568[0x5f4 - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel[2]; + /* 0x5B0 */ s16 field_0x5b0; + /* 0x5B2 */ s16 field_0x5b2; + /* 0x5B4 */ int mStaffId; + /* 0x5B8 */ Mtx field_0x5b8; + /* 0x5E8 */ u8 mType; + /* 0x5E9 */ u8 field_0x5e9; + /* 0x5EA */ u8 mAction; + /* 0x5EB */ u8 mToolId; + /* 0x5EC */ s16 mEvId; + /* 0x5EE */ s16 field_0x5ee; + /* 0x5F0 */ s16 field_0x5f0; + /* 0x5F2 */ u16 field_0x5f2; }; STATIC_ASSERT(sizeof(daObjSmgDoor_c) == 0x5f4); - #endif /* D_A_OBJ_SMGDOOR_H */ diff --git a/src/d/actor/d_a_obj_smgdoor.cpp b/src/d/actor/d_a_obj_smgdoor.cpp index 3c519d6d9e8..f6c697e5702 100644 --- a/src/d/actor/d_a_obj_smgdoor.cpp +++ b/src/d/actor/d_a_obj_smgdoor.cpp @@ -1,483 +1,485 @@ /** * @file d_a_obj_smgdoor.cpp - * -*/ + * + */ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_smgdoor.h" +#include "d/actor/d_a_player.h" +#include "d/d_meter2_info.h" +#include "d/d_s_play.h" #include "dol2asm.h" +#ifdef DEBUG +class daObjSmgDoor_HIO_c : public mDoHIO_entry_c { +public: + daObjSmgDoor_HIO_c(); + void genMessage(JORMContext*); -// -// Forward References: -// +public: + /* 0x06 */ u8 field_0x6; +}; -extern "C" static void eventCallBack__FPvi(); -extern "C" void initBaseMtx__14daObjSmgDoor_cFv(); -extern "C" void setBaseMtx__14daObjSmgDoor_cFv(); -extern "C" void Create__14daObjSmgDoor_cFv(); -extern "C" void CreateHeap__14daObjSmgDoor_cFv(); -extern "C" void create1st__14daObjSmgDoor_cFv(); -extern "C" void Execute__14daObjSmgDoor_cFPPA3_A4_f(); -extern "C" void getDemoAction__14daObjSmgDoor_cFv(); -extern "C" void demoProc__14daObjSmgDoor_cFv(); -extern "C" void openInit__14daObjSmgDoor_cFv(); -extern "C" void openProc__14daObjSmgDoor_cFv(); -extern "C" void setGoal__14daObjSmgDoor_cFv(); -extern "C" void setPos__14daObjSmgDoor_cFv(); -extern "C" void sceneChange__14daObjSmgDoor_cFv(); -extern "C" void event_proc_call__14daObjSmgDoor_cFv(); -extern "C" void actionWaitEvent__14daObjSmgDoor_cFv(); -extern "C" void actionEvent__14daObjSmgDoor_cFv(); -extern "C" void actionDead__14daObjSmgDoor_cFv(); -extern "C" void checkArea__14daObjSmgDoor_cFv(); -extern "C" void checkOpen__14daObjSmgDoor_cFv(); -extern "C" void Draw__14daObjSmgDoor_cFv(); -extern "C" void Delete__14daObjSmgDoor_cFv(); -extern "C" static void daObjSmgDoor_create1st__FP14daObjSmgDoor_c(); -extern "C" static void daObjSmgDoor_MoveBGDelete__FP14daObjSmgDoor_c(); -extern "C" static void daObjSmgDoor_MoveBGExecute__FP14daObjSmgDoor_c(); -extern "C" static void daObjSmgDoor_MoveBGDraw__FP14daObjSmgDoor_c(); -extern "C" void func_80CDCBD0(void* _this, u8*); -extern "C" extern char const* const d_a_obj_smgdoor__stringBase0; +daObjSmgDoor_HIO_c l_HIO; -// -// External References: -// +daObjSmgDoor_HIO_c::daObjSmgDoor_HIO_c() { + field_0x6 = 0; +} -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -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_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void setGoal__16dEvent_manager_cFP4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void __ct__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_change_colpat__FUc(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void normalize__4cXyzFv(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void cLib_chaseS__FPsss(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_meter2_info[248]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 data_80CDCDF8[4]; - -// -// Declarations: -// +void daObjSmgDoor_HIO_c::genMessage(JORMContext* ctx) { + // Present & Past Door + ctx->genLabel("現在&過去の扉", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + // Check Display + ctx->genCheckBox("チェック表示", &field_0x6, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); +} +#endif /* 80CDBB38-80CDBB5C 000078 0024+00 1/1 0/0 0/0 .text eventCallBack__FPvi */ -static void eventCallBack(void* param_0, int param_1) { - // NONMATCHING +static int eventCallBack(void* a_this, int param_1) { + daObjSmgDoor_c* i_this = (daObjSmgDoor_c*)a_this; + i_this->sceneChange(); + return 1; } /* 80CDBB5C-80CDBBEC 00009C 0090+00 1/1 0/0 0/0 .text initBaseMtx__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::initBaseMtx() { - // NONMATCHING + mpModel[0]->setBaseScale(scale); + mpModel[1]->setBaseScale(scale); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(current.angle.y); + cMtx_copy(mDoMtx_stack_c::get(), field_0x5b8); + setBaseMtx(); } -/* ############################################################################################## */ -/* 80CDCBF4-80CDCBF8 000000 0004+00 3/3 0/0 0/0 .rodata @3705 */ -SECTION_RODATA static f32 const lit_3705 = -145.0f; -COMPILER_STRIP_GATE(0x80CDCBF4, &lit_3705); - -/* 80CDCBF8-80CDCBFC 000004 0004+00 1/4 0/0 0/0 .rodata @3706 */ -SECTION_RODATA static u8 const lit_3706[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CDCBF8, &lit_3706); - -/* 80CDCBFC-80CDCC00 000008 0004+00 0/1 0/0 0/0 .rodata @3707 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3707 = 145.0f; -COMPILER_STRIP_GATE(0x80CDCBFC, &lit_3707); -#pragma pop - /* 80CDBBEC-80CDBD38 00012C 014C+00 2/2 0/0 0/0 .text setBaseMtx__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::setBaseMtx() { - // NONMATCHING + cXyz cStack_18(-145.0f, 0.0f, 0.0f); + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&cStack_18, &cStack_18); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(cStack_18); + mDoMtx_stack_c::YrotM(field_0x5b0); + mDoMtx_stack_c::YrotM(current.angle.y); + mpModel[0]->setBaseTRMtx(mDoMtx_stack_c::get()); + cStack_18.set(145.0f, 0.0f, 0.0f); + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&cStack_18, &cStack_18); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(cStack_18); + mDoMtx_stack_c::YrotM(field_0x5b2); + mDoMtx_stack_c::YrotM(0x7fff); + mDoMtx_stack_c::YrotM(current.angle.y); + mpModel[1]->setBaseTRMtx(mDoMtx_stack_c::get()); + cMtx_copy(field_0x5b8, mBgMtx); } -/* ############################################################################################## */ -/* 80CDCC00-80CDCC04 00000C 0004+00 1/1 0/0 0/0 .rodata @3722 */ -SECTION_RODATA static f32 const lit_3722 = 150.0f; -COMPILER_STRIP_GATE(0x80CDCC00, &lit_3722); - -/* 80CDCC24-80CDCC24 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CDCC24 = "A_SMGDoor"; -SECTION_DEAD static char const* const stringBase_80CDCC2E = "A_SMKDoor"; -SECTION_DEAD static char const* const stringBase_80CDCC38 = "A_SMGDoor.bmd"; -SECTION_DEAD static char const* const stringBase_80CDCC46 = "A_SMKDoor.bmd"; -SECTION_DEAD static char const* const stringBase_80CDCC54 = "A_SMGDoor.dzb"; -SECTION_DEAD static char const* const stringBase_80CDCC62 = "A_SMKDoor.dzb"; -SECTION_DEAD static char const* const stringBase_80CDCC70 = "NOW_DOOR_IN"; -SECTION_DEAD static char const* const stringBase_80CDCC7C = "OLD_DOOR_IN"; -#pragma pop - /* 80CDCCE4-80CDCCEC -00001 0008+00 3/4 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName[2] = { - (void*)&d_a_obj_smgdoor__stringBase0, - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0xA), -}; +static char* l_arcName[2] = {"A_SMGDoor", "A_SMKDoor"}; /* 80CDCCEC-80CDCCF4 -00001 0008+00 1/1 0/0 0/0 .data l_bmd */ -SECTION_DATA static void* l_bmd[2] = { - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x14), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x22), +static char* l_bmd[2] = { + "A_SMGDoor.bmd", + "A_SMKDoor.bmd", }; /* 80CDCCF4-80CDCCFC -00001 0008+00 1/1 0/0 0/0 .data l_dzb */ -SECTION_DATA static void* l_dzb[2] = { - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x30), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x3E), +static char* l_dzb[2] = { + "A_SMGDoor.dzb", + "A_SMKDoor.dzb", }; /* 80CDCCFC-80CDCD04 -00001 0008+00 0/1 0/0 0/0 .data l_eventName */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_eventName[2] = { - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x4C), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x58), +static char* l_eventName[2] = { + "NOW_DOOR_IN", + "OLD_DOOR_IN", }; -#pragma pop /* 80CDCD04-80CDCD1C 000040 0018+00 0/1 0/0 0/0 .data l_cull_box */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_cull_box[24] = { - 0xC3, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, -}; -#pragma pop +static Vec l_cull_box[2] = {{-200.0f, 0.0f, -50.0f}, {200.0f, 400.0f, 50.0f}}; /* 80CDBD38-80CDBE1C 000278 00E4+00 1/0 0/0 0/0 .text Create__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::Create() { - // NONMATCHING +int daObjSmgDoor_c::Create() { + initBaseMtx(); + fopAcM_SetMtx(this, field_0x5b8); + fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, + l_cull_box[1].y, l_cull_box[1].z); + attention_info.position.y += 150.0f; + eyePos.y += 150.0f; + attention_info.flags = fopAc_AttnFlag_DOOR_e; + setAction(ACT_WAIT); + eventInfo.setArchiveName(l_arcName[mType]); + mToolId = getEvId(); + mEvId = (s16)dComIfGp_getEventManager().getEventIdx(this, l_eventName[mType], 0xFF); + OS_REPORT("mEvId<%d>mToolId<%d>\n", mEvId, mToolId); + OS_REPORT("swbit<%d>\n", getSwbit()); + return 1; } /* 80CDBE1C-80CDBED4 00035C 00B8+00 1/0 0/0 0/0 .text CreateHeap__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::CreateHeap() { - // NONMATCHING +int daObjSmgDoor_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mType], l_bmd[mType]); + JUT_ASSERT(252, modelData != 0); + + for (int i = 0; i < 2; i++) { + mpModel[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel[i] == NULL) + return 0; + } + + return 1; } /* 80CDBED4-80CDBFA4 000414 00D0+00 1/1 0/0 0/0 .text create1st__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::create1st() { - // NONMATCHING +int daObjSmgDoor_c::create1st() { + mType = getType(); + int phase = dComIfG_resLoad(&mPhase, l_arcName[mType]); + + if (phase == cPhs_COMPLEATE_e) { + int dzb_id = dComIfG_getObjctResName2Index(l_arcName[mType], l_dzb[mType]); + JUT_ASSERT(287, dzb_id != -1); + + phase = MoveBGCreate(l_arcName[mType], dzb_id, NULL, 0x1660, NULL); + if (phase == cPhs_ERROR_e) { + return phase; + } + } + +#ifdef DEBUG + // Present or Past Door + l_HIO.entryHIO("現在or過去の扉"); +#endif + return phase; } /* 80CDBFA4-80CDBFF0 0004E4 004C+00 1/0 0/0 0/0 .text Execute__14daObjSmgDoor_cFPPA3_A4_f */ -void daObjSmgDoor_c::Execute(Mtx** param_0) { - // NONMATCHING +int daObjSmgDoor_c::Execute(Mtx** param_0) { + event_proc_call(); + *param_0 = &mBgMtx; + setBaseMtx(); + return 1; } -/* ############################################################################################## */ -/* 80CDCC24-80CDCC24 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CDCC88 = "WAIT"; -SECTION_DEAD static char const* const stringBase_80CDCC8D = "OPEN"; -SECTION_DEAD static char const* const stringBase_80CDCC92 = "SETGOAL"; -SECTION_DEAD static char const* const stringBase_80CDCC9A = "SETPOS"; -SECTION_DEAD static char const* const stringBase_80CDCCA1 = "SCENE_CHG"; -SECTION_DEAD static char const* const stringBase_80CDCCAB = "COLOR_CHG"; -#pragma pop - -/* 80CDCD1C-80CDCD34 -00001 0018+00 1/1 0/0 0/0 .data action_table$3763 */ -SECTION_DATA static void* action_table[6] = { - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x64), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x69), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x6E), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x76), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x7D), - (void*)(((char*)&d_a_obj_smgdoor__stringBase0) + 0x87), -}; - /* 80CDBFF0-80CDC038 000530 0048+00 1/1 0/0 0/0 .text getDemoAction__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::getDemoAction() { - // NONMATCHING +int daObjSmgDoor_c::getDemoAction() { + static char* action_table[6] = { + "WAIT", "OPEN", "SETGOAL", "SETPOS", "SCENE_CHG", "COLOR_CHG", + }; + + return dComIfGp_evmng_getMyActIdx(mStaffId, action_table, 6, 0, 0); } -/* ############################################################################################## */ -/* 80CDCC04-80CDCC08 000010 0004+00 3/3 0/0 0/0 .rodata @3825 */ -SECTION_RODATA static f32 const lit_3825 = 1.0f; -COMPILER_STRIP_GATE(0x80CDCC04, &lit_3825); - -/* 80CDCC08-80CDCC0C 000014 0004+00 3/3 0/0 0/0 .rodata @3826 */ -SECTION_RODATA static f32 const lit_3826 = -1.0f; -COMPILER_STRIP_GATE(0x80CDCC08, &lit_3826); - -/* 80CDCC24-80CDCC24 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CDCCB5 = "smgdoor"; -SECTION_DEAD static char const* const stringBase_80CDCCBD = "Timer"; -#pragma pop - /* 80CDC038-80CDC248 000578 0210+00 1/1 0/0 0/0 .text demoProc__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::demoProc() { - // NONMATCHING +int daObjSmgDoor_c::demoProc() { + daPy_py_c* player = daPy_getPlayerActorClass(); + mStaffId = dComIfGp_evmng_getMyStaffId("smgdoor", 0, 0); + int demo_action = getDemoAction(); + + if (dComIfGp_evmng_getIsAddvance(mStaffId) != 0) { + switch (demo_action) { + case 0: + int* intP = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer"); + if (intP == NULL) { + field_0x5e9 = 1; + } else { + field_0x5e9 = *intP; + } + break; + case 1: + openInit(); + break; + case 2: + setGoal(); + break; + case 5: + dKy_change_colpat(3); + field_0x5f2 = 0; + } + } + + switch (demo_action) { + case 0: + if (cLib_calcTimer(&field_0x5e9) == 0) { + dComIfGp_evmng_cutEnd(mStaffId); + } + break; + case 1: + if (openProc() != 0) { + dComIfGp_evmng_cutEnd(mStaffId); + } + break; + case 4: + sceneChange(); + break; + case 5: + if (field_0x5f2 == KREG_S(0)) { + fopAcM_seStart(this, Z2SE_OBJ_KAKO_DOOR_OP_LIGHT, 0); + OS_REPORT("LIGHT SE!\n"); + dComIfGp_evmng_cutEnd(mStaffId); + } + + field_0x5f2++; + break; + default: + dComIfGp_evmng_cutEnd(mStaffId); + } + + return 0; } /* 80CDC248-80CDC378 000788 0130+00 1/1 0/0 0/0 .text openInit__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::openInit() { - // NONMATCHING +int daObjSmgDoor_c::openInit() { + if (mpBgW != NULL && mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); + } + + if (mType == 0) { + fopAcM_seStart(this, Z2SE_OBJ_KAKO_DOOR_OP_IN, 0); + } else if (mType == 1) { + fopAcM_seStart(this, Z2SE_OBJ_KAKO_DOOR_OP_OUT, 0); + } + + field_0x5ee = 0; + field_0x5f0 = 0; + field_0x5b0 = 0; + field_0x5b2 = 0; + field_0x5f2 = 0; + return 1; } /* 80CDC378-80CDC4AC 0008B8 0134+00 1/1 0/0 0/0 .text openProc__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::openProc() { - // NONMATCHING -} +int daObjSmgDoor_c::openProc() { + int ret = 0; + cLib_chaseS(&field_0x5ee, 0x3c, 3); + cLib_chaseS(&field_0x5f0, 0x96, field_0x5ee); -/* ############################################################################################## */ -/* 80CDCC0C-80CDCC10 000018 0004+00 1/1 0/0 0/0 .rodata @3888 */ -SECTION_RODATA static f32 const lit_3888 = 60.0f; -COMPILER_STRIP_GATE(0x80CDCC0C, &lit_3888); + switch (mType) { + case 0: + cLib_chaseS(&field_0x5b0, -0x5000, field_0x5f0); + ret = cLib_chaseS(&field_0x5b2, 0x5000, field_0x5f0); + break; + case 1: + cLib_chaseS(&field_0x5b0, 0x5000, field_0x5f0); + ret = cLib_chaseS(&field_0x5b2, -0x5000, field_0x5f0); + if (field_0x5f2 == 0x46) { + fopAcM_seStart(this, Z2SE_OBJ_KAKO_DOOR_OP_LIGHT, 0); + dKy_change_colpat(3); + OS_REPORT("COLPAT CHANGE!!!!\n"); + } + + field_0x5f2++; + } + + return ret; +} /* 80CDC4AC-80CDC548 0009EC 009C+00 1/1 0/0 0/0 .text setGoal__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::setGoal() { - // NONMATCHING + cXyz cStack_18(0.0f, 0.0f, 60.0f); + + if (mType == 1) { + cStack_18.set(0.0f, 0.0f, 0.0f); + } + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(current.angle.y); + mDoMtx_stack_c::multVec(&cStack_18, &cStack_18); + dComIfGp_evmng_setGoal(&cStack_18); } -/* ############################################################################################## */ -/* 80CDCC10-80CDCC14 00001C 0004+00 0/1 0/0 0/0 .rodata @3906 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3906 = 300.0f; -COMPILER_STRIP_GATE(0x80CDCC10, &lit_3906); -#pragma pop - -/* 80CDCC14-80CDCC18 000020 0004+00 0/1 0/0 0/0 .rodata @3907 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3907 = 250.0f; -COMPILER_STRIP_GATE(0x80CDCC14, &lit_3907); -#pragma pop - /* 80CDC548-80CDC610 000A88 00C8+00 1/1 0/0 0/0 .text setPos__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::setPos() { - // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz acStack_28(0.0f, 0.0f, 300.0f); + + if (mType == 1) { + acStack_28.set(0.0f, 0.0f, 250.0f); + } + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(current.angle.y); + mDoMtx_stack_c::multVec(&acStack_28, &acStack_28); + player->setPlayerPosAndAngle(&acStack_28, current.angle.y + 0x7fff, 0); + return; } /* 80CDC610-80CDC65C 000B50 004C+00 2/2 0/0 0/0 .text sceneChange__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::sceneChange() { - // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + player->onSceneChangeArea(getNextSceneID(), 0xff, 0); + // Present & Past Door: Scene Change Destination <%d> + OS_REPORT("現在&過去の扉:シーン切替先<%d>\n", getNextSceneID()); } -/* ############################################################################################## */ -/* 80CDCD34-80CDCD40 -00001 000C+00 0/1 0/0 0/0 .data @3924 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3924[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWaitEvent__14daObjSmgDoor_cFv, -}; -#pragma pop - -/* 80CDCD40-80CDCD4C -00001 000C+00 0/1 0/0 0/0 .data @3925 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3925[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEvent__14daObjSmgDoor_cFv, -}; -#pragma pop - -/* 80CDCD4C-80CDCD58 -00001 000C+00 0/1 0/0 0/0 .data @3926 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3926[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionDead__14daObjSmgDoor_cFv, -}; -#pragma pop - -/* 80CDCD58-80CDCD7C 000094 0024+00 0/1 0/0 0/0 .data l_func$3923 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[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 pop - /* 80CDC65C-80CDC700 000B9C 00A4+00 1/1 0/0 0/0 .text event_proc_call__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::event_proc_call() { - // NONMATCHING + static actionFunc l_func[] = {&daObjSmgDoor_c::actionWaitEvent, &daObjSmgDoor_c::actionEvent, + &daObjSmgDoor_c::actionDead}; + + (this->*(l_func[mAction]))(); } /* 80CDC700-80CDC790 000C40 0090+00 1/0 0/0 0/0 .text actionWaitEvent__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::actionWaitEvent() { - // NONMATCHING + if (eventInfo.checkCommandDoor()) { + attention_info.position.y = home.pos.y; + + if (mType == 1) { + shape_angle.y += 0x7fff; + } + setAction(1); + setPos(); + } else { + if (checkOpen() != 0) { + eventInfo.setEventId(mEvId); + eventInfo.setMapToolId(mToolId); + eventInfo.onCondition(dEvtCnd_CANDOOR_e); + } + } } /* 80CDC790-80CDC7F4 000CD0 0064+00 1/0 0/0 0/0 .text actionEvent__14daObjSmgDoor_cFv */ void daObjSmgDoor_c::actionEvent() { - // NONMATCHING + dMeter2Info_onGameStatus(2); + dComIfGp_getEvent().setSkipProc(this, eventCallBack, 0); + demoProc(); } /* 80CDC7F4-80CDC7F8 000D34 0004+00 1/0 0/0 0/0 .text actionDead__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::actionDead() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80CDCC18-80CDCC1C 000024 0004+00 0/1 0/0 0/0 .rodata @4054 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4054 = 62500.0f; -COMPILER_STRIP_GATE(0x80CDCC18, &lit_4054); -#pragma pop - -/* 80CDCC1C-80CDCC20 000028 0004+00 0/1 0/0 0/0 .rodata @4055 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4055 = 90000.0f; -COMPILER_STRIP_GATE(0x80CDCC1C, &lit_4055); -#pragma pop - -/* 80CDCC20-80CDCC24 00002C 0004+00 0/1 0/0 0/0 .rodata @4056 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4056 = 12100.0f; -COMPILER_STRIP_GATE(0x80CDCC20, &lit_4056); -#pragma pop +void daObjSmgDoor_c::actionDead() {} /* 80CDC7F8-80CDC974 000D38 017C+00 1/1 0/0 0/0 .text checkArea__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::checkArea() { - // NONMATCHING +int daObjSmgDoor_c::checkArea() { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz player_to_door_vec; + cXyz player_attention_pos(player->attention_info.position); + player_attention_pos.y = player->current.pos.y; + player_to_door_vec = player_attention_pos - current.pos; + f32 sq_distance_xz = player_to_door_vec.abs2XZ(); + cXyz door_forward_vec; + door_forward_vec.set(cM_ssin(home.angle.y), 0.0f, cM_scos(home.angle.y)); + + if (sq_distance_xz > 62500.0f) { + return 0; + } + + player_to_door_vec.normalize(); + f32 dot_product_scaled = player_to_door_vec.inprodXZ(door_forward_vec); + dot_product_scaled *= (sq_distance_xz * dot_product_scaled); + + if (dot_product_scaled > 90000.0f) { + return 0; + } + + if (sq_distance_xz - dot_product_scaled > 12100.0f) { + return 0; + } + + if (abs((s16)(current.angle.y - player->current.angle.y)) < 0x5000) { + return 0; + } + + return 1; } /* 80CDC974-80CDCA00 000EB4 008C+00 1/1 0/0 0/0 .text checkOpen__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::checkOpen() { - // NONMATCHING +int daObjSmgDoor_c::checkOpen() { + if (getSwbit() != 0xff) { + if (fopAcM_isSwitch(this, getSwbit()) == 0) { + return 0; + } + } + + if (daPy_py_c::checkNowWolf()) { + return 0; + } + + if (checkArea() == 0) { + return 0; + } + + return 1; } /* 80CDCA00-80CDCAC4 000F40 00C4+00 1/0 0/0 0/0 .text Draw__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::Draw() { - // NONMATCHING +int daObjSmgDoor_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel[0], &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel[1], &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel[0]); + mDoExt_modelUpdateDL(mpModel[1]); + dComIfGd_setList(); + +#ifdef DEBUG + if (l_HIO.field_0x6 != 0) { + mpBgW->CalcPlane(); + } +#endif + + return 1; } /* 80CDCAC4-80CDCB04 001004 0040+00 1/0 0/0 0/0 .text Delete__14daObjSmgDoor_cFv */ -void daObjSmgDoor_c::Delete() { - // NONMATCHING +int daObjSmgDoor_c::Delete() { + dComIfG_resDelete(&mPhase, l_arcName[mType]); +#ifdef DEBUG + l_HIO.removeHIO(); +#endif + return 1; +} + +/* 80CDCB04-80CDCB64 001044 0060+00 1/0 0/0 0/0 .text daObjSmgDoor_create1st__FP14daObjSmgDoor_c + */ +static int daObjSmgDoor_create1st(daObjSmgDoor_c* i_this) { + fopAcM_SetupActor(i_this, daObjSmgDoor_c); + return i_this->create1st(); +} + +/* 80CDCB64-80CDCB84 0010A4 0020+00 1/0 0/0 0/0 .text + * daObjSmgDoor_MoveBGDelete__FP14daObjSmgDoor_c */ +static int daObjSmgDoor_MoveBGDelete(daObjSmgDoor_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80CDCB84-80CDCBA4 0010C4 0020+00 1/0 0/0 0/0 .text + * daObjSmgDoor_MoveBGExecute__FP14daObjSmgDoor_c */ +static int daObjSmgDoor_MoveBGExecute(daObjSmgDoor_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80CDCBA4-80CDCBD0 0010E4 002C+00 1/0 0/0 0/0 .text daObjSmgDoor_MoveBGDraw__FP14daObjSmgDoor_c + */ +static int daObjSmgDoor_MoveBGDraw(daObjSmgDoor_c* i_this) { + return i_this->MoveBGDraw(); } /* ############################################################################################## */ /* 80CDCD7C-80CDCD9C -00001 0020+00 1/0 0/0 0/0 .data daObjSmgDoor_METHODS */ static actor_method_class daObjSmgDoor_METHODS = { - (process_method_func)daObjSmgDoor_create1st__FP14daObjSmgDoor_c, - (process_method_func)daObjSmgDoor_MoveBGDelete__FP14daObjSmgDoor_c, - (process_method_func)daObjSmgDoor_MoveBGExecute__FP14daObjSmgDoor_c, - 0, - (process_method_func)daObjSmgDoor_MoveBGDraw__FP14daObjSmgDoor_c, + (process_method_func)daObjSmgDoor_create1st, (process_method_func)daObjSmgDoor_MoveBGDelete, + (process_method_func)daObjSmgDoor_MoveBGExecute, 0, + (process_method_func)daObjSmgDoor_MoveBGDraw, }; /* 80CDCD9C-80CDCDCC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SmgDoor */ extern actor_process_profile_definition g_profile_Obj_SmgDoor = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_SmgDoor, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjSmgDoor_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 553, // mPriority - &daObjSmgDoor_METHODS, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_SmgDoor, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjSmgDoor_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 553, // mPriority + &daObjSmgDoor_METHODS, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80CDCDCC-80CDCDF4 000108 0028+00 1/1 0/0 0/0 .data __vt__14daObjSmgDoor_c */ -SECTION_DATA extern void* __vt__14daObjSmgDoor_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__14daObjSmgDoor_cFv, - (void*)Create__14daObjSmgDoor_cFv, - (void*)Execute__14daObjSmgDoor_cFPPA3_A4_f, - (void*)Draw__14daObjSmgDoor_cFv, - (void*)Delete__14daObjSmgDoor_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80CDCB04-80CDCB64 001044 0060+00 1/0 0/0 0/0 .text daObjSmgDoor_create1st__FP14daObjSmgDoor_c - */ -static void daObjSmgDoor_create1st(daObjSmgDoor_c* param_0) { - // NONMATCHING -} - -/* 80CDCB64-80CDCB84 0010A4 0020+00 1/0 0/0 0/0 .text - * daObjSmgDoor_MoveBGDelete__FP14daObjSmgDoor_c */ -static void daObjSmgDoor_MoveBGDelete(daObjSmgDoor_c* param_0) { - // NONMATCHING -} - -/* 80CDCB84-80CDCBA4 0010C4 0020+00 1/0 0/0 0/0 .text - * daObjSmgDoor_MoveBGExecute__FP14daObjSmgDoor_c */ -static void daObjSmgDoor_MoveBGExecute(daObjSmgDoor_c* param_0) { - // NONMATCHING -} - -/* 80CDCBA4-80CDCBD0 0010E4 002C+00 1/0 0/0 0/0 .text daObjSmgDoor_MoveBGDraw__FP14daObjSmgDoor_c - */ -static void daObjSmgDoor_MoveBGDraw(daObjSmgDoor_c* param_0) { - // NONMATCHING -} - -/* 80CDCBD0-80CDCBEC 001110 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPUc */ -extern "C" void func_80CDCBD0(void* _this, u8* param_0) { - // NONMATCHING -} - -/* 80CDCC24-80CDCC24 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */