summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeclos <Zeclos99@gmail.com>2025-05-26 19:54:30 +0200
committerGitHub <noreply@github.com>2025-05-26 13:54:30 -0400
commit693c92638fb1eaecd2c8fd786ae9d2548d786f2a (patch)
treec4ea1f0fcaebf42399eb7823fc23161d4ecf94a9
parentc484eb490df73ee750b3a0e32ae2c456e1160d16 (diff)
D_a_obj_pfall matching (#769)
* bit too difficult for me for now, might go back later * progress * getmsg * logic matching data isnt * data section matches * mathubcg 100% * cleanup * revert this change * final cleanup and configure.py * nevermind cleanup * Equivalent onstead of matching * removed padding * cleanup code comments and a bit more * close to matching * matches * added d/d_priority.h back * configure.pu * updated to match retail and cleanup
-rwxr-xr-xconfigure.py2
-rw-r--r--include/d/actor/d_a_obj_pfall.h67
-rw-r--r--src/d/actor/d_a_obj_pfall.cpp408
3 files changed, 408 insertions, 69 deletions
diff --git a/configure.py b/configure.py
index 543fa01a..980f6ded 100755
--- a/configure.py
+++ b/configure.py
@@ -1697,7 +1697,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_ospbox"),
ActorRel(Matching, "d_a_obj_paper", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_pbka"),
- ActorRel(NonMatching, "d_a_obj_pfall"),
+ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_pfall", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_plant"),
ActorRel(NonMatching, "d_a_obj_rflw"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_rforce"),
diff --git a/include/d/actor/d_a_obj_pfall.h b/include/d/actor/d_a_obj_pfall.h
index a3d8849c..71f9d812 100644
--- a/include/d/actor/d_a_obj_pfall.h
+++ b/include/d/actor/d_a_obj_pfall.h
@@ -4,6 +4,7 @@
#include "f_op/f_op_actor.h"
#include "d/d_bg_w.h"
#include "SSystem/SComponent/c_phase.h"
+#include "m_Do/m_Do_ext.h"
class mDoExt_McaMorf;
@@ -11,7 +12,7 @@ class daObj_Pfall_c : public fopAc_ac_c {
public:
void setAnm();
void set_mtx();
- void CreateHeap();
+ BOOL CreateHeap();
void CreateInit();
cPhs_State _create();
bool _delete();
@@ -30,43 +31,51 @@ public:
bool _execute();
void nz_draw();
bool _draw();
+
+
public:
- /* 0x290 */ void* m290;
- /* 0x294 */ cXyz m294[10];
- /* 0x30C */ cXyz m30C[10];
- /* 0x384 */ cXyz m384[2];
- /* 0x39C */ void* m39C;
- /* 0x3A0 */ void* m3A0;
- /* 0x3A4 */ void* m3A4;
- /* 0x3A8 */ void* m3A8;
- /* 0x3AC */ void* m3AC;
- /* 0x3B0 */ void* m3B0;
- /* 0x3B4 */ void* m3B4;
- /* 0x3B8 */ u8 m3B8[0x3BC - 0x3B8];
+ /* 0x290 */ void* field_0x290;
+ /* 0x294 */ cXyz field_0x294[10];
+ /* 0x30C */ cXyz field_0x30C[10];
+ /* 0x384 */ cXyz field_0x384[2];
+ /* 0x39C */ u8 field_0x39C[0x3A8 - 0x39C];
+ /* 0x3A8 */ int field_0x3A8;
+ /* 0x3AC */ int mTimer;
+ /* 0x3B0 */ int field_0x3B0;
+ /* 0x3B4 */ s16 field_0x3B4;
+ /* 0x3B6 */ u8 field_0x3B6[0x3B8 - 0x3B6];
+ /* 0x3B8 */ int field_0x3B8;
/* 0x3BC */ request_of_phase_process_class mPhsPfall;
- /* 0x3C4 */ J3DModel* m3C4;
- /* 0x3C8 */ dBgW* m3C8;
- /* 0x3CC */ Mtx m3CC;
- /* 0x3FC */ J3DModel* m3FC;
- /* 0x400 */ dBgW* m400;
- /* 0x404 */ Mtx m404;
- /* 0x434 */ J3DModel* m434;
- /* 0x438 */ u8 m438[0x43C - 0x438];
- /* 0x43C */ mDoExt_McaMorf* m43C;
- /* 0x440 */ u8 m440[0x444 - 0x440];
- /* 0x444 */ void* vtbl;
- /* 0x448 */ u8 m448[0x481 - 0x448];
- /* 0x481 */ u8 mState;
- /* 0x482 */ u8 m482[0x484 - 0x482];
-};
+ /* 0x3C4 */ J3DModel* field_0x3C4;
+ /* 0x3C8 */ dBgW* mpBgW;
+ /* 0x3CC */ Mtx field_0x3CC;
+ /* 0x3FC */ J3DModel* field_0x3FC;
+ /* 0x400 */ dBgW* mpBgW2;
+ /* 0x404 */ Mtx field_0x404;
+ /* 0x434 */ J3DModel* mpHimoModel;
+ /* 0x438 */ f32 field_0x438;
+ /* 0x43C */ mDoExt_McaMorf* mpMorf;
+ /* 0x440 */ u8 field_0x440[0x444 - 0x440];
+ /* 0x444 */ mDoExt_3DlineMat1_c field_0x444;
+ /* 0x480 */ s8 mBckIdx;
+ /* 0x481 */ s8 field_0x481;
+ /* 0x482 */ s8 mOldAnmPrmIdx;
+ /* 0x483 */ bool field_0x483;
+}; // Size: 0x484
class daObj_PfallHIO_c {
public:
daObj_PfallHIO_c();
+ virtual ~daObj_PfallHIO_c() {mNo = -1;}
public:
- /* Place member variables here */
+ /* 0x04 */ s8 mNo;
+ /* 0x05 */ bool field_0x05;
+ /* 0x06 */ u8 field_0x06;
+ /* 0x07 */ u8 field_0x07;
+ /* 0x08 */ f32 field_0x08;
+ /* 0x0C */ s16 field_0x0C;
};
#endif /* D_A_OBJ_PFALL_H */
diff --git a/src/d/actor/d_a_obj_pfall.cpp b/src/d/actor/d_a_obj_pfall.cpp
index 8e9db4eb..a83b5c4e 100644
--- a/src/d/actor/d_a_obj_pfall.cpp
+++ b/src/d/actor/d_a_obj_pfall.cpp
@@ -5,146 +5,476 @@
#include "d/actor/d_a_obj_pfall.h"
#include "d/d_procname.h"
+#include "d/d_com_inf_game.h"
+#include "d/res/res_pfall.h"
+#include "d/d_lib.h"
+#include "d/actor/d_a_player_main.h"
#include "d/d_priority.h"
+#include "weak_data_1811.h" // IWYU pragma: keep
+#include "weak_bss_936_to_1036.h" // IWYU pragma: keep
+
+static const int l_bck_ix_tbl[] = {
+ PFALL_BCK_NZ_WAIT,
+ PFALL_BCK_HIKU,
+};
+
+static daObj_PfallHIO_c l_HIO;
+
/* 000000EC-0000010C .text CallbackCreateHeap__FP10fopAc_ac_c */
-static BOOL CallbackCreateHeap(fopAc_ac_c*) {
- /* Nonmatching */
+static BOOL CallbackCreateHeap(fopAc_ac_c* i_this) {
+ return static_cast<daObj_Pfall_c*>(i_this)->CreateHeap();
}
/* 0000010C-00000140 .text __ct__16daObj_PfallHIO_cFv */
daObj_PfallHIO_c::daObj_PfallHIO_c() {
- /* Nonmatching */
+ mNo = -1;
+ field_0x05 = false;
+ field_0x06 = 0;
+ field_0x08 = 3.0f;
+ field_0x0C = 0;
}
/* 00000140-00000190 .text setAnm__13daObj_Pfall_cFv */
void daObj_Pfall_c::setAnm() {
- /* Nonmatching */
+ static const int a_anm_bcks_tbl[] = {
+ PFALL_BCK_NZ_WAIT,
+ PFALL_BCK_HIKU,
+ };
+
+ static const dLib_anm_prm_c a_anm_prm_tbl[] = {
+ {
+ /* mAnmIdx */ -1,
+ /* mNextPrmIdx */ -1,
+ /* field_0x02 */ 0,
+ /* mMorf */ 8.0f,
+ /* mPlaySpeed */ 1.0f,
+ /* mLoopMode */ J3DFrameCtrl::EMode_NONE
+ },
+ {
+ /* mAnmIdx */ 0,
+ /* mNextPrmIdx */ -1,
+ /* field_0x02 */ 0,
+ /* mMorf */ 8.0f,
+ /* mPlaySpeed */ 1.0f,
+ /* mLoopMode */ J3DFrameCtrl::EMode_LOOP
+ },
+ {
+ /* mAnmIdx */ 1,
+ /* mNextPrmIdx */ -1,
+ /* field_0x02 */ 0,
+ /* mMorf */ 8.0f,
+ /* mPlaySpeed */ 1.0f,
+ /* mLoopMode */ J3DFrameCtrl::EMode_NONE
+ },
+ };
+
+ dLib_bcks_setAnm("Pfall", mpMorf, &mBckIdx, &field_0x481, &mOldAnmPrmIdx, a_anm_bcks_tbl, a_anm_prm_tbl, false);
}
/* 00000190-000004DC .text set_mtx__13daObj_Pfall_cFv */
void daObj_Pfall_c::set_mtx() {
- /* Nonmatching */
+
+ static cXyz offset_pos_left(-35.0f, 0.0f, 105.0f);
+ static cXyz offset_pos_right(35.0f, 0.0f, -105.0f);
+
+ field_0x3C4->setBaseScale(scale);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mDoMtx_stack_c::transM(offset_pos_left);
+ mDoMtx_stack_c::transM(0.0f, -10.0f, 0.0f);
+ mDoMtx_stack_c::ZrotM(field_0x3B4);
+ mDoMtx_stack_c::transM(0.0f, 10.0f, 0.0f);
+ field_0x3C4->setBaseTRMtx(mDoMtx_stack_c::get());
+ cMtx_copy(mDoMtx_stack_c::get(), field_0x3CC);
+
+ field_0x3FC->setBaseScale(scale);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mDoMtx_stack_c::transM(offset_pos_right);
+ mDoMtx_stack_c::YrotM( -0x8000);
+ mDoMtx_stack_c::transM(0.0f, -10.0f, 0.0f);
+ mDoMtx_stack_c::ZrotM(field_0x3B4);
+ mDoMtx_stack_c::transM(0.0f, 10.0f, 0.0f);
+ field_0x3FC->setBaseTRMtx(mDoMtx_stack_c::get());
+ cMtx_copy(mDoMtx_stack_c::get(), field_0x404);
+
+ J3DModel* pModel = mpMorf->getModel();
+ static cXyz offset_pos(0.0f, 0.0f, -130.0f);
+ static cXyz scale(0.5f, 0.5f, 0.5f);
+
+ pModel->setBaseScale(scale);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+
+ mDoMtx_stack_c::transM(offset_pos);
+ pModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ mDoMtx_stack_c::transM(0.0f, field_0x438 + l_HIO.field_0x08, 0.0f);
+ mDoMtx_stack_c::YrotM(-0x8000);
+ mpHimoModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 00000518-00000858 .text CreateHeap__13daObj_Pfall_cFv */
-void daObj_Pfall_c::CreateHeap() {
- /* Nonmatching */
+BOOL daObj_Pfall_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Pfall", PFALL_BDL_AOTSI);
+ JUT_ASSERT(0xD1, modelData != NULL);
+ field_0x3C4 = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
+ field_0x3FC = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
+
+ if(field_0x3C4 == NULL || field_0x3FC == NULL) {
+ return FALSE;
+ }
+
+ J3DModelData* himoModelData = (J3DModelData*)dComIfG_getObjectRes("Pfall", PFALL_BDL_PSUZU);
+ JUT_ASSERT(0xD9, himoModelData != NULL);
+ mpHimoModel = mDoExt_J3DModel__create(himoModelData, 0, 0x11020203);
+
+ if (mpHimoModel == NULL) {
+ return FALSE;
+ }
+
+ J3DModelData* nzModelData = (J3DModelData*)dComIfG_getObjectRes("Pfall", PFALL_BDL_NZ);
+ JUT_ASSERT(0xE0, nzModelData != NULL);
+ mpMorf = new mDoExt_McaMorf(
+ nzModelData,
+ NULL, NULL,
+ NULL,
+ -1, 1.0f, 0, -1, 1,
+ NULL,
+ 0x00080000,
+ 0x11000002
+ );
+
+ if(mpMorf == NULL || mpMorf->getModel() == NULL) {
+ return FALSE;
+ }
+ mpMorf->getModel()->setUserArea((u32)this);
+ set_mtx();
+ mpMorf->calc();
+ mpBgW = new dBgW();
+
+ if(mpBgW == NULL) {
+ return FALSE;
+ }
+ cBgD_t* pData = (cBgD_t*)dComIfG_getObjectRes("Pfall", PFALL_DZB_AOTOSI);
+
+ if (mpBgW->Set(pData, cBgW::MOVE_BG_e, &field_0x3CC) == true) {
+ return FALSE;
+ }
+ mpBgW2 = new dBgW();
+
+ if(mpBgW2 == NULL) {
+ return FALSE;
+ }
+
+ pData = (cBgD_t*)dComIfG_getObjectRes("Pfall", PFALL_DZB_AOTOSI);
+
+ if (mpBgW2->Set(pData, cBgW::MOVE_BG_e, &field_0x404) == true) {
+ return FALSE;
+ }
+ return TRUE;
}
/* 00000858-000008CC .text CreateInit__13daObj_Pfall_cFv */
void daObj_Pfall_c::CreateInit() {
- /* Nonmatching */
+ dComIfG_Bgsp()->Regist(mpBgW, this);
+ dComIfG_Bgsp()->Regist(mpBgW2, this);
+ set_mtx();
+ field_0x481 = 1;
+ mode_wait_init();
}
/* 000008CC-000009E8 .text _create__13daObj_Pfall_cFv */
cPhs_State daObj_Pfall_c::_create() {
- /* Nonmatching */
+ fopAcM_SetupActor(this, daObj_Pfall_c);
+ cPhs_State phase = dComIfG_resLoad(&mPhsPfall, "Pfall");
+
+ if (phase == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, CallbackCreateHeap, 0x38E0)) {
+ return cPhs_ERROR_e;
+ } else {
+ CreateInit();
+ }
+ }
+ return phase;
}
/* 000009EC-00000AB0 .text _delete__13daObj_Pfall_cFv */
bool daObj_Pfall_c::_delete() {
- /* Nonmatching */
+ dComIfG_resDelete(&mPhsPfall, "Pfall");
+ if(mpBgW && mpBgW->ChkUsed()) {
+ dComIfG_Bgsp()->Release(mpBgW);
+ }
+ if(mpBgW2 && mpBgW2->ChkUsed()) {
+ dComIfG_Bgsp()->Release(mpBgW2);
+ }
+ return true;
}
/* 00000AB0-00000C04 .text cutProc__13daObj_Pfall_cFv */
void daObj_Pfall_c::cutProc() {
- /* Nonmatching */
+ static char* action_table[3] = {
+ "WAIT",
+ "OPEN",
+ "HIKU"
+ };
+ int staffIdx = dComIfGp_evmng_getMyStaffId("Nzfall");
+ if(staffIdx != -1) {
+ int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, action_table, ARRAY_SIZE(action_table), NULL, 0);
+ if(actIdx == -1) {
+ dComIfGp_evmng_cutEnd(staffIdx);
+ } else {
+ if(dComIfGp_evmng_getIsAddvance(staffIdx)) {
+ switch(actIdx) {
+ case 0:
+ cutWaitStart(staffIdx);
+ break;
+ case 1:
+ cutOpenStart(staffIdx);
+ break;
+ case 2:
+ cutHikuStart(staffIdx);
+ break;
+ }
+ }
+ switch(actIdx) {
+ case 0:
+ cutWaitProc(staffIdx);
+ break;
+ case 1:
+ cutOpenProc(staffIdx);
+ break;
+ case 2:
+ cutHikuProc(staffIdx);
+ break;
+ }
+ }
+ }
}
/* 00000C04-00000C6C .text cutWaitStart__13daObj_Pfall_cFi */
-void daObj_Pfall_c::cutWaitStart(int) {
- /* Nonmatching */
+void daObj_Pfall_c::cutWaitStart(int staffIdx) {
+ int* pTimerData = dComIfGp_evmng_getMyIntegerP(staffIdx, "Timer");
+ if (pTimerData == NULL) {
+ mTimer = 0;
+ }
+ else {
+ mTimer = (s16)*pTimerData;
+ }
}
/* 00000C6C-00000D18 .text cutWaitProc__13daObj_Pfall_cFi */
-void daObj_Pfall_c::cutWaitProc(int) {
- /* Nonmatching */
+void daObj_Pfall_c::cutWaitProc(int staffIdx) {
+ if(cLib_calcTimer(&mTimer) == 0) {
+ if(!field_0x483) {
+ field_0x483 = true;
+ fopAcM_monsSeStart(this, JA_SE_CV_NZ_LAUGH, 0);
+ }
+ dComIfGp_evmng_cutEnd(staffIdx);
+ }
}
/* 00000D18-00000D94 .text cutOpenStart__13daObj_Pfall_cFi */
void daObj_Pfall_c::cutOpenStart(int) {
- /* Nonmatching */
+ field_0x3B4 = 0;
+ field_0x3B0 = 0;
+ fopAcM_seStart(this, JA_SE_OBJ_TC_JAIL_FLR_BRK, 0);
}
/* 00000D94-00000E74 .text cutOpenProc__13daObj_Pfall_cFi */
-void daObj_Pfall_c::cutOpenProc(int) {
- /* Nonmatching */
+void daObj_Pfall_c::cutOpenProc(int staffIdx) {
+ if (field_0x3B0 >= 7) {
+ dComIfGp_evmng_cutEnd(staffIdx);
+ } else {
+ const s16 temp[] = {
+ 0xC568,
+ 0xD508,
+ 0xC950,
+ 0xD120,
+ 0xCD38,
+ 0xCF2C,
+ 0xCE32
+ };
+ s16 temp2 = cLib_addCalcAngleS(&field_0x3B4, temp[field_0x3B0], 4, 0x2000, 0x100);
+ if ((s16)std::fabsf(temp2) <= 0x100) {
+ field_0x3B0++;
+ }
+ }
}
/* 00000E74-00000E80 .text cutHikuStart__13daObj_Pfall_cFi */
void daObj_Pfall_c::cutHikuStart(int) {
- /* Nonmatching */
+ field_0x481 = 2;
}
/* 00000E80-00000F00 .text cutHikuProc__13daObj_Pfall_cFi */
-void daObj_Pfall_c::cutHikuProc(int) {
- /* Nonmatching */
+void daObj_Pfall_c::cutHikuProc(int staffIdx) {
+ if(field_0x481 == 2){
+ if(mpMorf->isStop()) {
+ dComIfGp_evmng_cutEnd(staffIdx);
+ field_0x481 = 1;
+ }
+ }
}
/* 00000F00-00000F1C .text mode_wait_init__13daObj_Pfall_cFv */
void daObj_Pfall_c::mode_wait_init() {
- /* Nonmatching */
-}
+ field_0x3B8 = l_HIO.field_0x0C;
+ field_0x3A8 = NULL;
+}
/* 00000F1C-00000FC0 .text mode_wait__13daObj_Pfall_cFv */
void daObj_Pfall_c::mode_wait() {
- /* Nonmatching */
+
+ if(dLib_checkPlayerInCircle(current.pos, 100.0f, 100.0f)
+ && dComIfGp_getPlayer(0)->speedF == 0.0f
+ && cLib_calcTimer(&field_0x3B8) == 0) {
+ mode_event_init();
+ }
+ mpBgW->Move();
+ mpBgW2->Move();
}
/* 00000FC0-00000FCC .text mode_event_init__13daObj_Pfall_cFv */
void daObj_Pfall_c::mode_event_init() {
- /* Nonmatching */
+ field_0x3A8 = 1;
}
/* 00000FCC-000010A4 .text mode_event__13daObj_Pfall_cFv */
void daObj_Pfall_c::mode_event() {
- /* Nonmatching */
+ if(eventInfo.checkCommandDemoAccrpt()) {
+ if(dComIfGp_evmng_endCheck("NZFALL")) {
+ if(l_HIO.field_0x06 != 0) {
+ mode_wait_init();
+ } else {
+ dComIfGp_setNextStage("sea", 15, 11);
+ }
+ }
+ } else {
+ fopAcM_orderOtherEvent(this, "NZFALL");
+ }
+ mpBgW->Move();
+ mpBgW2->Move();
}
/* 000010A4-00001130 .text mode_proc_call__13daObj_Pfall_cFv */
void daObj_Pfall_c::mode_proc_call() {
- /* Nonmatching */
+ typedef void(daObj_Pfall_c::*ProcFunc)(void);
+ static const ProcFunc mode_proc[] = {
+ &daObj_Pfall_c::mode_wait,
+ &daObj_Pfall_c::mode_event,
+ };
+
+ (this->*mode_proc[field_0x3A8])();
}
/* 00001130-000012F4 .text _execute__13daObj_Pfall_cFv */
bool daObj_Pfall_c::_execute() {
- /* Nonmatching */
+
+ attention_info.position = current.pos;
+ eyePos = current.pos;
+
+ if(dComIfGp_event_runCheck()) {
+ cutProc();
+ }
+
+ if(field_0x481 == 2) {
+ if(mpMorf->getFrame() == 6.0f) {
+ fopAcM_seStart(this, JA_SE_OBJ_TC_JAIL_STRING, 0);
+ }
+ f32 frame = mpMorf->getFrame();
+ if (!(frame > 0.0f && frame <= 6.0f)) {
+ if (frame > 6.0f && frame <= 10.0f) {
+ field_0x438 += 1.0f;
+ }
+ else {
+ if (!(frame > 10.0f && frame <= 23.0f) && frame > 23.0f && frame <= 29.0f) {
+ field_0x438 -= 3.0f;
+ }
+ }
+ }
+ } else {
+ field_0x438 = 0.0f;
+ }
+ mpMorf->play(NULL, 0, 0);
+ fopAcM_posMoveF(this, NULL);
+ set_mtx();
+ mode_proc_call();
+ setAnm();
+ return false;
}
/* 000012F4-0000142C .text nz_draw__13daObj_Pfall_cFv */
void daObj_Pfall_c::nz_draw() {
- /* Nonmatching */
+ J3DModel* pModel = mpMorf->getModel();
+ J3DModelData* pModelData = pModel->getModelData();
+
+ J3DJoint* rootJoint = pModelData->getJointNodePointer(0);
+
+ J3DShape* matShape = pModelData->getMaterialNodePointer(0)->getShape();
+ J3DShape* matShape2 = pModelData->getMaterialNodePointer(1)->getShape();
+ J3DShape* matShape3 = pModelData->getMaterialNodePointer(2)->getShape();
+
+ matShape->hide();
+
+ g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType(pModel, &tevStr);
+
+ mpMorf->updateDL();
+ dComIfGd_setListMaskOff();
+
+ matShape->show();
+ pModel->getMatPacket(0)->unlock();
+ matShape2->hide();
+ matShape3->hide();
+ rootJoint->entryIn();
+ matShape2->show();
+ matShape3->show();
+
+ dComIfGd_setList();
}
/* 0000142C-000014E4 .text _draw__13daObj_Pfall_cFv */
bool daObj_Pfall_c::_draw() {
- /* Nonmatching */
+ g_env_light.settingTevStruct(TEV_TYPE_BG0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType(field_0x3C4, &tevStr);
+
+ g_env_light.setLightTevColorType(field_0x3FC, &tevStr);
+ mDoExt_modelUpdateDL(field_0x3C4);
+ mDoExt_modelUpdateDL(field_0x3FC);
+ nz_draw();
+ g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType(mpHimoModel, &tevStr);
+ mDoExt_modelUpdateDL(mpHimoModel);
+ return true;
}
+// to match .rodata
+static const int dummy[] = {0x00FF0080};
+
/* 000014E4-00001504 .text daObj_PfallCreate__FPv */
-static s32 daObj_PfallCreate(void*) {
- /* Nonmatching */
+static cPhs_State daObj_PfallCreate(void* i_this) {
+ return static_cast<daObj_Pfall_c*>(i_this)->_create();
}
/* 00001504-00001528 .text daObj_PfallDelete__FPv */
-static BOOL daObj_PfallDelete(void*) {
- /* Nonmatching */
+static BOOL daObj_PfallDelete(void* i_this) {
+ return static_cast<daObj_Pfall_c*>(i_this)->_delete();
}
/* 00001528-0000154C .text daObj_PfallExecute__FPv */
-static BOOL daObj_PfallExecute(void*) {
- /* Nonmatching */
+static BOOL daObj_PfallExecute(void* i_this) {
+ return static_cast<daObj_Pfall_c*>(i_this)->_execute();
}
/* 0000154C-00001570 .text daObj_PfallDraw__FPv */
-static BOOL daObj_PfallDraw(void*) {
- /* Nonmatching */
+static BOOL daObj_PfallDraw(void* i_this) {
+ return static_cast<daObj_Pfall_c*>(i_this)->_draw();
}
/* 00001570-00001578 .text daObj_PfallIsDelete__FPv */
static BOOL daObj_PfallIsDelete(void*) {
- /* Nonmatching */
+ return TRUE;
}
static actor_method_class daObj_PfallMethodTable = {