mvstair done, obj_tks equivalent (#2565)

* mvstair done, obj_tks equivalent

* fix
This commit is contained in:
TakaRikka 2025-08-01 10:29:50 -07:00 committed by GitHub
parent e0bbad1f3f
commit 8410e4fd40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 1378 additions and 1678 deletions

View File

@ -2055,7 +2055,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_screw"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_screw"),
ActorRel(NonMatching, "d_a_obj_mirror_table"), ActorRel(NonMatching, "d_a_obj_mirror_table"),
ActorRel(NonMatching, "d_a_obj_msima"), ActorRel(NonMatching, "d_a_obj_msima"),
ActorRel(NonMatching, "d_a_obj_mvstair"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mvstair"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_myogan"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_myogan"),
ActorRel(NonMatching, "d_a_obj_nagaisu"), ActorRel(NonMatching, "d_a_obj_nagaisu"),
ActorRel(Equivalent, "d_a_obj_nan"), # weak function order ActorRel(Equivalent, "d_a_obj_nan"), # weak function order
@ -2137,7 +2137,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_thashi"), ActorRel(NonMatching, "d_a_obj_thashi"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_thdoor"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_thdoor"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_timeFire"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_timeFire"),
ActorRel(NonMatching, "d_a_obj_tks"), ActorRel(Equivalent, "d_a_obj_tks", extra_cflags=[DANPCF_C_HACK]), # weak function order, sinShort inline issue
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_tmoon"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_tmoon"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_toaru_maki"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_toaru_maki"),
ActorRel(NonMatching, "d_a_obj_toby"), ActorRel(NonMatching, "d_a_obj_toby"),

View File

@ -2,6 +2,8 @@
#define D_A_OBJ_MVSTAIR_H #define D_A_OBJ_MVSTAIR_H
#include "f_op/f_op_actor_mng.h" #include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_particle.h"
/** /**
* @ingroup actors-objects * @ingroup actors-objects
@ -11,35 +13,80 @@
* @details * @details
* *
*/ */
class daObjStair_c : public fopAc_ac_c { class daObjStair_c : public dBgS_MoveBgActor {
public: public:
enum Action_e {
ACTION_WAIT_e,
ACTION_ORDER_EVENT_e,
ACTION_EVENT_e,
ACTION_END_e,
};
enum MODE_e {
MODE_WAIT_UPPER_e,
MODE_UPPER_e,
MODE_WAIT_LOWER_e,
MODE_LOWER_e,
};
/* 80C9D098 */ void initBaseMtx(); /* 80C9D098 */ void initBaseMtx();
/* 80C9D0D4 */ void setBaseMtx(); /* 80C9D0D4 */ void setBaseMtx();
/* 80C9D148 */ void Create(); /* 80C9D338 */ int create1st();
/* 80C9D2B8 */ void CreateHeap();
/* 80C9D338 */ void create1st();
/* 80C9D41C */ void event_proc_call(); /* 80C9D41C */ void event_proc_call();
/* 80C9D4D8 */ void mode_proc_call(); /* 80C9D4D8 */ void mode_proc_call();
/* 80C9D594 */ void Execute(f32 (**)[3][4]); /* 80C9D82C */ int actionWait();
/* 80C9D710 */ void Draw(); /* 80C9D8EC */ int actionOrderEvent();
/* 80C9D7B4 */ void Delete(); /* 80C9D95C */ int actionEvent();
/* 80C9D82C */ void actionWait(); /* 80C9D9BC */ int actionEnd();
/* 80C9D8EC */ void actionOrderEvent(); /* 80C9D9C4 */ int modeWaitUpperInit();
/* 80C9D95C */ void actionEvent(); /* 80C9D9F4 */ int modeWaitUpper();
/* 80C9D9BC */ bool actionEnd(); /* 80C9DA98 */ int modeUpperInit();
/* 80C9D9C4 */ void modeWaitUpperInit(); /* 80C9DADC */ int modeUpper();
/* 80C9D9F4 */ void modeWaitUpper(); /* 80C9DF18 */ int modeWaitLowerInit();
/* 80C9DA98 */ void modeUpperInit(); /* 80C9DF60 */ int modeWaitLower();
/* 80C9DADC */ void modeUpper(); /* 80C9E004 */ int modeLowerInit();
/* 80C9DF18 */ void modeWaitLowerInit(); /* 80C9E034 */ int modeLower();
/* 80C9DF60 */ void modeWaitLower();
/* 80C9E004 */ void modeLowerInit();
/* 80C9E034 */ void modeLower();
/* 80C9E3D8 */ void setParticle(); /* 80C9E3D8 */ void setParticle();
/* 80C9E5A0 */ void removeParticle(); /* 80C9E5A0 */ void removeParticle();
private: /* 80C9D2B8 */ virtual int CreateHeap();
/* 0x568 */ u8 field_0x568[0x66c - 0x568]; /* 80C9D148 */ virtual int Create();
/* 80C9D594 */ virtual int Execute(f32 (**)[3][4]);
/* 80C9D710 */ virtual int Draw();
/* 80C9D7B4 */ virtual int Delete();
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getEvNo() { return fopAcM_GetParamBit(this, 16, 8); }
u8 getDir() { return fopAcM_GetParamBit(this, 28, 1); }
u8 getType() { return fopAcM_GetParamBit(this, 24, 4); }
u8 getMdlType() { return fopAcM_GetParamBit(this, 29, 3); }
void setAction(u8 i_action) { mAction = i_action; }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ JPABaseEmitter* mSmokeEmitter;
/* 0x5B0 */ dPa_followEcallBack mParticleLeftEmitter[2];
/* 0x5D8 */ dPa_followEcallBack mParticleRightEmitter[2];
/* 0x600 */ cXyz mParticleLeftPos[2];
/* 0x618 */ cXyz mParticleRightPos[2];
/* 0x630 */ cXyz mSoundPos;
/* 0x63C */ u8 mType;
/* 0x63D */ u8 mAction;
/* 0x63E */ u8 mMode;
/* 0x63F */ u8 mIsSwitch;
/* 0x640 */ s16 mEventId;
/* 0x644 */ f32 mMoveAccel;
/* 0x648 */ f32 mMoveStep;
/* 0x64C */ u8 field_0x64C[0x650 - 0x64C];
/* 0x650 */ cXyz mModelPos;
/* 0x65C */ u16 mMoveStartShakeTimer;
/* 0x65E */ s16 mMoveEndShakeTimer;
/* 0x660 */ f32 mMoveStartShakeAmount;
/* 0x664 */ u8 field_0x664[0x668 - 0x664];
/* 0x668 */ u8 mMoveMode;
/* 0x669 */ u8 mResType;
}; };
STATIC_ASSERT(sizeof(daObjStair_c) == 0x66c); STATIC_ASSERT(sizeof(daObjStair_c) == 0x66c);

View File

@ -2,6 +2,23 @@
#define D_A_OBJ_TKS_H #define D_A_OBJ_TKS_H
#include "f_op/f_op_actor_mng.h" #include "f_op/f_op_actor_mng.h"
#include "d/actor/d_a_npc.h"
struct daObjTks_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 offset_x;
/* 0x70 */ f32 offset_y;
/* 0x74 */ f32 offset_z;
/* 0x78 */ f32 spring_factor;
/* 0x7C */ f32 spring_atten;
};
class daObjTks_Param_c {
public:
/* 80D126D0 */ virtual ~daObjTks_Param_c() {}
static const daObjTks_HIOParam m;
};
/** /**
* @ingroup actors-objects * @ingroup actors-objects
@ -11,53 +28,79 @@
* @details * @details
* *
*/ */
class daObjTks_c : public fopAc_ac_c { class daObjTks_c : public daNpcF_c {
public: public:
/* 80D0F28C */ daObjTks_c(); /* 80D0F28C */ daObjTks_c();
/* 80D0F480 */ ~daObjTks_c(); /* 80D0F480 */ virtual ~daObjTks_c();
/* 80D0F640 */ void Create();
/* 80D0F904 */ void CreateHeap(); /* 80D0F640 */ int Create();
/* 80D0FD34 */ void Delete(); /* 80D0F904 */ int CreateHeap();
/* 80D0FD68 */ void Execute(); /* 80D0FD34 */ int Delete();
/* 80D0FE60 */ void Draw(); /* 80D0FD68 */ int Execute();
/* 80D0FED0 */ void ctrlJoint(J3DJoint*, J3DModel*); /* 80D0FE60 */ int Draw();
/* 80D10094 */ void createHeapCallBack(fopAc_ac_c*); /* 80D0FED0 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 80D100B4 */ void ctrlJointCallBack(J3DJoint*, int); /* 80D10094 */ static int createHeapCallBack(fopAc_ac_c*);
/* 80D10100 */ void setMtx(); /* 80D100B4 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80D10184 */ void setExpressionAnm(int, bool);
/* 80D102D0 */ void setExpressionBtp(int);
/* 80D103A4 */ void setMotion(int, f32, int);
/* 80D103E8 */ void reset(); /* 80D103E8 */ void reset();
/* 80D10578 */ void setAction(void (daObjTks_c::*)()); /* 80D10578 */ inline int setAction(void (daObjTks_c::*)());
/* 80D10618 */ void wait(); /* 80D10618 */ void wait();
/* 80D106C8 */ void setExpression(int, f32);
/* 80D106F4 */ void talk(); /* 80D106F4 */ void talk();
/* 80D10A80 */ void demo(); /* 80D10A80 */ void demo();
/* 80D11104 */ bool setMotionAnm(int, f32);
/* 80D11228 */ void warp(); /* 80D11228 */ void warp();
/* 80D11670 */ void setParam(); /* 80D11CB4 */ inline void lookat();
/* 80D116C8 */ void main();
/* 80D118E8 */ void ctrlBtk(); /* 80D11670 */ virtual void setParam();
/* 80D119BC */ void setAttnPos(); /* 80D116C8 */ virtual BOOL main();
/* 80D11CB4 */ void lookat(); /* 80D118E8 */ virtual BOOL ctrlBtk();
/* 80D11E94 */ bool drawDbgInfo(); /* 80D10100 */ virtual void setMtx();
/* 80D11E9C */ void drawOtherMdls(); /* 80D119BC */ virtual void setAttnPos();
/* 80D10184 */ virtual bool setExpressionAnm(int, bool);
/* 80D102D0 */ virtual bool setExpressionBtp(int);
/* 80D106C8 */ virtual void setExpression(int, f32);
/* 80D11104 */ virtual void setMotionAnm(int, f32);
/* 80D103A4 */ virtual void setMotion(int, f32, int);
/* 80D11E94 */ virtual BOOL drawDbgInfo();
/* 80D11E9C */ virtual void drawOtherMdls();
void calcSpringF(f32* param_0, f32 param_1, f32* param_2) {
*param_2 = daObjTks_Param_c::m.spring_atten * (*param_2 + (daObjTks_Param_c::m.spring_factor * (*param_0 - param_1)));
*param_0 += *param_2;
}
inline void playExpression();
inline void playMotion();
bool chkAction(void (daObjTks_c::*i_action)()) { return i_action == mAction; }
void setStart() { field_0xde0 = 1; } void setStart() { field_0xde0 = 1; }
private: void setLookMode(int i_mode) {
/* 0x568 */ u8 field_0x568[0xDE0 - 0x568]; if (i_mode >= 0 && i_mode < 6 && i_mode != mLookMode) {
mLookMode = i_mode;
}
}
void setExpressionTalkAfter() {
(void)mExpression;
setExpression(1, -1.0f);
}
/* 0xB48 */ Z2Creature mSound;
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBDC */ daNpcF_Lookat_c mLookat;
/* 0xC78 */ u8 field_0xC78[0xC7C - 0xC78];
/* 0xC7C */ dCcD_Cyl mCcCyl;
/* 0xDB8 */ void (daObjTks_c::*mAction)();
/* 0xDC4 */ request_of_phase_process_class mPhase;
/* 0xDCC */ f32 field_0xdcc;
/* 0xDD0 */ f32 field_0xdd0;
/* 0xDD4 */ u8 field_0xDD4[0xDDC - 0xDD4];
/* 0xDDC */ s16 mLookMode;
/* 0xDDE */ u16 field_0xdde;
/* 0xDE0 */ u8 field_0xde0; /* 0xDE0 */ u8 field_0xde0;
/* 0xDE1 */ u8 field_0xde1[0xDE4 - 0xDE1]; /* 0xDE1 */ u8 field_0xde1;
}; };
STATIC_ASSERT(sizeof(daObjTks_c) == 0xDE4); STATIC_ASSERT(sizeof(daObjTks_c) == 0xDE4);
class daObjTks_Param_c {
public:
/* 80D126D0 */ ~daObjTks_Param_c();
static u8 const m[128];
};
#endif /* D_A_OBJ_TKS_H */ #endif /* D_A_OBJ_TKS_H */

View File

@ -4,487 +4,502 @@
*/ */
#include "d/actor/d_a_obj_mvstair.h" #include "d/actor/d_a_obj_mvstair.h"
#include "dol2asm.h" #include "d/d_com_inf_game.h"
#include "d/d_s_play.h"
/* 80C9E8AC-80C9E8B4 000000 0008+00 4/4 0/0 0/0 .rodata l_bmdName */
static const int l_bmdName[] = {4, 4};
// /* 80C9E8B4-80C9E8BC 000008 0008+00 1/1 0/0 0/0 .rodata l_dzbName */
// Forward References: static const int l_dzbName[] = {7, 7};
//
extern "C" void initBaseMtx__12daObjStair_cFv(); /* 80C9E8BC-80C9E8D4 000010 0018+00 1/2 0/0 0/0 .rodata l_move_len */
extern "C" void setBaseMtx__12daObjStair_cFv(); static const f32 l_move_len[] = {
extern "C" void Create__12daObjStair_cFv(); 150.0f,
extern "C" void CreateHeap__12daObjStair_cFv(); 300.0f,
extern "C" void create1st__12daObjStair_cFv(); 450.0f,
extern "C" void event_proc_call__12daObjStair_cFv(); 600.0f,
extern "C" void mode_proc_call__12daObjStair_cFv(); 500.0f,
extern "C" void Execute__12daObjStair_cFPPA3_A4_f(); 550.0f,
extern "C" void Draw__12daObjStair_cFv(); };
extern "C" void Delete__12daObjStair_cFv();
extern "C" void actionWait__12daObjStair_cFv();
extern "C" void actionOrderEvent__12daObjStair_cFv();
extern "C" void actionEvent__12daObjStair_cFv();
extern "C" bool actionEnd__12daObjStair_cFv();
extern "C" void modeWaitUpperInit__12daObjStair_cFv();
extern "C" void modeWaitUpper__12daObjStair_cFv();
extern "C" void modeUpperInit__12daObjStair_cFv();
extern "C" void modeUpper__12daObjStair_cFv();
extern "C" void __dt__4cXyzFv();
extern "C" void modeWaitLowerInit__12daObjStair_cFv();
extern "C" void modeWaitLower__12daObjStair_cFv();
extern "C" void modeLowerInit__12daObjStair_cFv();
extern "C" void modeLower__12daObjStair_cFv();
extern "C" void setParticle__12daObjStair_cFv();
extern "C" void removeParticle__12daObjStair_cFv();
extern "C" static void daObjStair_create1st__FP12daObjStair_c();
extern "C" void __ct__4cXyzFv();
extern "C" void __dt__19dPa_followEcallBackFv();
extern "C" void cleanup__18dPa_levelEcallBackFv();
extern "C" void __defctor__19dPa_followEcallBackFv();
extern "C" static void daObjStair_MoveBGDelete__FP12daObjStair_c();
extern "C" static void daObjStair_MoveBGExecute__FP12daObjStair_c();
extern "C" static void daObjStair_MoveBGDraw__FP12daObjStair_c();
extern "C" void __dt__18dPa_levelEcallBackFv();
extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter();
extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter();
extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter();
extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter();
extern "C" extern char const* const d_a_obj_mvstair__stringBase0;
// /* 80C9E8D4-80C9E8DC 000028 0008+00 1/1 0/0 0/0 .rodata l_heap_size */
// External References: static const u32 l_heap_size[] = {0xB40, 0x2C60};
//
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void reset__14dEvt_control_cFv();
extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc();
extern "C" void endCheck__16dEvent_manager_cFs();
extern "C" void __ct__19dPa_followEcallBackFUcUc();
extern "C" void
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void StartShock__12dVibration_cFii4cXyz();
extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
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 cLib_addCalc0__FPfff();
extern "C" void cLib_chaseF__FPfff();
extern "C" void __dt__18JPAEmitterCallBackFv();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dl__FPv();
extern "C" void __construct_array();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__19dPa_followEcallBack[10];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" extern u8 struct_80C9EAA8[4];
//
// Declarations:
//
/* 80C9D098-80C9D0D4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__12daObjStair_cFv */ /* 80C9D098-80C9D0D4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__12daObjStair_cFv */
void daObjStair_c::initBaseMtx() { void daObjStair_c::initBaseMtx() {
// NONMATCHING mpModel->setBaseScale(scale);
setBaseMtx();
} }
/* 80C9D0D4-80C9D148 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__12daObjStair_cFv */ /* 80C9D0D4-80C9D148 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__12daObjStair_cFv */
void daObjStair_c::setBaseMtx() { void daObjStair_c::setBaseMtx() {
// NONMATCHING mDoMtx_stack_c::transS(mModelPos.x, mModelPos.y, mModelPos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
} }
/* ############################################################################################## */
/* 80C9E8AC-80C9E8B4 000000 0008+00 4/4 0/0 0/0 .rodata l_bmdName */
SECTION_RODATA static u8 const l_bmdName[8] = {
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04,
};
COMPILER_STRIP_GATE(0x80C9E8AC, &l_bmdName);
/* 80C9E8B4-80C9E8BC 000008 0008+00 1/1 0/0 0/0 .rodata l_dzbName */
SECTION_RODATA static u8 const l_dzbName[8] = {
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07,
};
COMPILER_STRIP_GATE(0x80C9E8B4, &l_dzbName);
/* 80C9E8BC-80C9E8D4 000010 0018+00 1/2 0/0 0/0 .rodata l_move_len */
SECTION_RODATA static u8 const l_move_len[24] = {
0x43, 0x16, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0xE1, 0x00, 0x00,
0x44, 0x16, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00,
};
COMPILER_STRIP_GATE(0x80C9E8BC, &l_move_len);
/* 80C9E8D4-80C9E8DC 000028 0008+00 1/1 0/0 0/0 .rodata l_heap_size */
SECTION_RODATA static u8 const l_heap_size[8] = {
0x00, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x2C, 0x60,
};
COMPILER_STRIP_GATE(0x80C9E8D4, &l_heap_size);
/* 80C9E8DC-80C9E8E0 000030 0004+00 1/3 0/0 0/0 .rodata @3709 */
SECTION_RODATA static f32 const lit_3709 = 600.0f;
COMPILER_STRIP_GATE(0x80C9E8DC, &lit_3709);
/* 80C9D148-80C9D2B8 000128 0170+00 1/0 0/0 0/0 .text Create__12daObjStair_cFv */ /* 80C9D148-80C9D2B8 000128 0170+00 1/0 0/0 0/0 .text Create__12daObjStair_cFv */
void daObjStair_c::Create() { int daObjStair_c::Create() {
// NONMATCHING fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
mEventId = dComIfGp_getEventManager().getEventIdx(this, getEvNo());
u8 swbit = getSwbit();
u8 swbit2 = getSwbit2();
if (fopAcM_isSwitch(this, swbit2)) {
setAction(ACTION_END_e);
modeWaitLowerInit();
} else {
if (getEvNo() == 0xFF) {
setAction(ACTION_END_e);
} else {
setAction(ACTION_WAIT_e);
} }
/* ############################################################################################## */ BOOL is_swbit = fopAcM_isSwitch(this, swbit);
/* 80C9E90C-80C9E90C 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ int dir = getDir();
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80C9E90C = "K_mvkai00";
SECTION_DEAD static char const* const stringBase_80C9E916 = "Lv9_mvkai";
#pragma pop
/* 80C9E920-80C9E92C 000000 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */ if ((dir == 0 && is_swbit) || (dir == 1 && !is_swbit)) {
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { modeWaitLowerInit();
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } else {
}; modeWaitUpperInit();
}
}
/* 80C9E92C-80C9E940 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ initBaseMtx();
#pragma push mIsSwitch = fopAcM_isSwitch(this, getSwbit());
#pragma force_active on mSoundPos = home.pos;
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { mSoundPos.y = 600.0f + home.pos.y;
0x02000201, return 1;
/* padding */ }
0x40080000,
0x00000000, UNK_REL_DATA
0x3FE00000,
0x00000000,
};
#pragma pop
/* 80C9E940-80C9E948 -00001 0008+00 3/3 0/0 0/0 .data l_arcName */ /* 80C9E940-80C9E948 -00001 0008+00 3/3 0/0 0/0 .data l_arcName */
SECTION_DATA static void* l_arcName[2] = { static char* l_arcName[2] = {
(void*)&d_a_obj_mvstair__stringBase0, "K_mvkai00",
(void*)(((char*)&d_a_obj_mvstair__stringBase0) + 0xA), "Lv9_mvkai",
}; };
/* 80C9D2B8-80C9D338 000298 0080+00 1/0 0/0 0/0 .text CreateHeap__12daObjStair_cFv */ /* 80C9D2B8-80C9D338 000298 0080+00 1/0 0/0 0/0 .text CreateHeap__12daObjStair_cFv */
void daObjStair_c::CreateHeap() { int daObjStair_c::CreateHeap() {
// NONMATCHING J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mResType], l_bmdName[mResType]);
JUT_ASSERT(250, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
return 1;
} }
/* 80C9D338-80C9D41C 000318 00E4+00 1/1 0/0 0/0 .text create1st__12daObjStair_cFv */ /* 80C9D338-80C9D41C 000318 00E4+00 1/1 0/0 0/0 .text create1st__12daObjStair_cFv */
void daObjStair_c::create1st() { int daObjStair_c::create1st() {
// NONMATCHING mType = getType();
if (getMdlType() == 7 || getMdlType() == 0) {
mResType = 0;
} else if (getMdlType() == 1) {
mResType = 1;
} }
/* ############################################################################################## */ int phase_state = dComIfG_resLoad(&mPhase, l_arcName[mResType]);
/* 80C9E948-80C9E954 -00001 000C+00 0/1 0/0 0/0 .data @3754 */ if (phase_state == cPhs_COMPLEATE_e) {
#pragma push phase_state = MoveBGCreate(l_arcName[mResType], l_dzbName[mResType], dBgS_MoveBGProc_TypicalRotY, l_heap_size[mResType], NULL);
#pragma force_active on if (phase_state == cPhs_ERROR_e) {
SECTION_DATA static void* lit_3754[3] = { return phase_state;
(void*)NULL, }
(void*)0xFFFFFFFF,
(void*)actionWait__12daObjStair_cFv,
};
#pragma pop
/* 80C9E954-80C9E960 -00001 000C+00 0/1 0/0 0/0 .data @3755 */ OS_REPORT("MVSTAIR PARAM:0x%x\n", fopAcM_GetParam(this));
#pragma push }
#pragma force_active on
SECTION_DATA static void* lit_3755[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)actionOrderEvent__12daObjStair_cFv,
};
#pragma pop
/* 80C9E960-80C9E96C -00001 000C+00 0/1 0/0 0/0 .data @3756 */ return phase_state;
#pragma push }
#pragma force_active on
SECTION_DATA static void* lit_3756[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)actionEvent__12daObjStair_cFv,
};
#pragma pop
/* 80C9E96C-80C9E978 -00001 000C+00 0/1 0/0 0/0 .data @3757 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3757[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)actionEnd__12daObjStair_cFv,
};
#pragma pop
/* 80C9E978-80C9E9A8 000058 0030+00 0/1 0/0 0/0 .data l_func$3753 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 l_func_3753[48] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#pragma pop
/* 80C9D41C-80C9D4D8 0003FC 00BC+00 1/1 0/0 0/0 .text event_proc_call__12daObjStair_cFv /* 80C9D41C-80C9D4D8 0003FC 00BC+00 1/1 0/0 0/0 .text event_proc_call__12daObjStair_cFv
*/ */
void daObjStair_c::event_proc_call() { void daObjStair_c::event_proc_call() {
// NONMATCHING static int (daObjStair_c::*l_func[])() = {
&daObjStair_c::actionWait,
&daObjStair_c::actionOrderEvent,
&daObjStair_c::actionEvent,
&daObjStair_c::actionEnd,
};
(this->*l_func[mAction])();
} }
/* ############################################################################################## */
/* 80C9E9A8-80C9E9B4 -00001 000C+00 0/1 0/0 0/0 .data @3765 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3765[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeWaitUpper__12daObjStair_cFv,
};
#pragma pop
/* 80C9E9B4-80C9E9C0 -00001 000C+00 0/1 0/0 0/0 .data @3766 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3766[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeUpper__12daObjStair_cFv,
};
#pragma pop
/* 80C9E9C0-80C9E9CC -00001 000C+00 0/1 0/0 0/0 .data @3767 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3767[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeWaitLower__12daObjStair_cFv,
};
#pragma pop
/* 80C9E9CC-80C9E9D8 -00001 000C+00 0/1 0/0 0/0 .data @3768 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3768[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeLower__12daObjStair_cFv,
};
#pragma pop
/* 80C9E9D8-80C9EA08 0000B8 0030+00 0/1 0/0 0/0 .data l_func$3764 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 l_func_3764[48] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#pragma pop
/* 80C9D4D8-80C9D594 0004B8 00BC+00 1/1 0/0 0/0 .text mode_proc_call__12daObjStair_cFv */ /* 80C9D4D8-80C9D594 0004B8 00BC+00 1/1 0/0 0/0 .text mode_proc_call__12daObjStair_cFv */
void daObjStair_c::mode_proc_call() { void daObjStair_c::mode_proc_call() {
// NONMATCHING static int (daObjStair_c::*l_func[])() = {
} &daObjStair_c::modeWaitUpper,
&daObjStair_c::modeUpper,
/* ############################################################################################## */ &daObjStair_c::modeWaitLower,
/* 80C9E8E0-80C9E8E4 000034 0004+00 2/5 0/0 0/0 .rodata @3802 */ &daObjStair_c::modeLower,
SECTION_RODATA static u8 const lit_3802[4] = {
0x00,
0x00,
0x00,
0x00,
}; };
COMPILER_STRIP_GATE(0x80C9E8E0, &lit_3802);
/* 80C9E8E4-80C9E8E8 000038 0004+00 0/1 0/0 0/0 .rodata @3803 */ (this->*l_func[mMode])();
#pragma push }
#pragma force_active on
SECTION_RODATA static f32 const lit_3803 = -140.0f;
COMPILER_STRIP_GATE(0x80C9E8E4, &lit_3803);
#pragma pop
/* 80C9E8E8-80C9E8EC 00003C 0004+00 0/1 0/0 0/0 .rodata @3804 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3804 = 140.0f;
COMPILER_STRIP_GATE(0x80C9E8E8, &lit_3804);
#pragma pop
/* 80C9E8EC-80C9E8F0 000040 0004+00 0/1 0/0 0/0 .rodata @3805 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3805 = -450.0f;
COMPILER_STRIP_GATE(0x80C9E8EC, &lit_3805);
#pragma pop
/* 80C9E8F0-80C9E8F4 000044 0004+00 0/1 0/0 0/0 .rodata @3806 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3806 = 450.0f;
COMPILER_STRIP_GATE(0x80C9E8F0, &lit_3806);
#pragma pop
/* 80C9D594-80C9D710 000574 017C+00 1/0 0/0 0/0 .text Execute__12daObjStair_cFPPA3_A4_f /* 80C9D594-80C9D710 000574 017C+00 1/0 0/0 0/0 .text Execute__12daObjStair_cFPPA3_A4_f
*/ */
void daObjStair_c::Execute(f32 (**param_0)[3][4]) { int daObjStair_c::Execute(f32 (**param_0)[3][4]) {
// NONMATCHING event_proc_call();
mode_proc_call();
*param_0 = &mBgMtx;
setBaseMtx();
mIsSwitch = fopAcM_isSwitch(this, getSwbit());
mParticleLeftPos[0].set(0.0f, 0.0f, -140.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::multVec(&mParticleLeftPos[0], &mParticleLeftPos[0]);
mParticleLeftPos[1].set(0.0f, 0.0f, 140.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::multVec(&mParticleLeftPos[1], &mParticleLeftPos[1]);
mParticleRightPos[0].set(-450.0f, 0.0f, 0.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::multVec(&mParticleRightPos[0], &mParticleRightPos[0]);
mParticleRightPos[1].set(450.0f, 0.0f, 0.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::multVec(&mParticleRightPos[1], &mParticleRightPos[1]);
return 1;
} }
/* 80C9D710-80C9D7B4 0006F0 00A4+00 1/0 0/0 0/0 .text Draw__12daObjStair_cFv */ /* 80C9D710-80C9D7B4 0006F0 00A4+00 1/0 0/0 0/0 .text Draw__12daObjStair_cFv */
void daObjStair_c::Draw() { int daObjStair_c::Draw() {
// NONMATCHING g_env_light.settingTevStruct(16, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
return 1;
} }
/* 80C9D7B4-80C9D82C 000794 0078+00 1/0 0/0 0/0 .text Delete__12daObjStair_cFv */ /* 80C9D7B4-80C9D82C 000794 0078+00 1/0 0/0 0/0 .text Delete__12daObjStair_cFv */
void daObjStair_c::Delete() { int daObjStair_c::Delete() {
// NONMATCHING if (mSmokeEmitter != NULL) {
mSmokeEmitter->becomeInvalidEmitter();
mSmokeEmitter = NULL;
}
removeParticle();
dComIfG_resDelete(&mPhase, l_arcName[mResType]);
return 1;
} }
/* 80C9D82C-80C9D8EC 00080C 00C0+00 1/0 0/0 0/0 .text actionWait__12daObjStair_cFv */ /* 80C9D82C-80C9D8EC 00080C 00C0+00 1/0 0/0 0/0 .text actionWait__12daObjStair_cFv */
void daObjStair_c::actionWait() { int daObjStair_c::actionWait() {
// NONMATCHING if (fopAcM_isSwitch(this, getSwbit2())) {
setAction(ACTION_END_e);
return 1;
}
if (mIsSwitch != fopAcM_isSwitch(this, getSwbit())) {
setAction(ACTION_ORDER_EVENT_e);
fopAcM_orderOtherEventId(this, mEventId, getEvNo(), 0xFFFF, 0, 1);
eventInfo.onCondition(2);
}
return 1;
} }
/* 80C9D8EC-80C9D95C 0008CC 0070+00 1/0 0/0 0/0 .text actionOrderEvent__12daObjStair_cFv /* 80C9D8EC-80C9D95C 0008CC 0070+00 1/0 0/0 0/0 .text actionOrderEvent__12daObjStair_cFv
*/ */
void daObjStair_c::actionOrderEvent() { int daObjStair_c::actionOrderEvent() {
// NONMATCHING if (eventInfo.checkCommandDemoAccrpt()) {
setAction(ACTION_EVENT_e);
} else {
fopAcM_orderOtherEventId(this, mEventId, getEvNo(), 0xFFFF, 0, 1);
eventInfo.onCondition(2);
}
return 1;
} }
/* 80C9D95C-80C9D9BC 00093C 0060+00 1/0 0/0 0/0 .text actionEvent__12daObjStair_cFv */ /* 80C9D95C-80C9D9BC 00093C 0060+00 1/0 0/0 0/0 .text actionEvent__12daObjStair_cFv */
void daObjStair_c::actionEvent() { int daObjStair_c::actionEvent() {
// NONMATCHING if (dComIfGp_evmng_endCheck(mEventId)) {
setAction(ACTION_WAIT_e);
dComIfGp_event_reset();
}
return 1;
} }
/* 80C9D9BC-80C9D9C4 00099C 0008+00 1/0 0/0 0/0 .text actionEnd__12daObjStair_cFv */ /* 80C9D9BC-80C9D9C4 00099C 0008+00 1/0 0/0 0/0 .text actionEnd__12daObjStair_cFv */
bool daObjStair_c::actionEnd() { int daObjStair_c::actionEnd() {
return true; return 1;
} }
/* 80C9D9C4-80C9D9F4 0009A4 0030+00 2/2 0/0 0/0 .text modeWaitUpperInit__12daObjStair_cFv /* 80C9D9C4-80C9D9F4 0009A4 0030+00 2/2 0/0 0/0 .text modeWaitUpperInit__12daObjStair_cFv
*/ */
void daObjStair_c::modeWaitUpperInit() { int daObjStair_c::modeWaitUpperInit() {
// NONMATCHING current.pos.y = home.pos.y;
mModelPos = current.pos;
mMode = MODE_WAIT_UPPER_e;
return 1;
} }
/* 80C9D9F4-80C9DA98 0009D4 00A4+00 1/0 0/0 0/0 .text modeWaitUpper__12daObjStair_cFv */ /* 80C9D9F4-80C9DA98 0009D4 00A4+00 1/0 0/0 0/0 .text modeWaitUpper__12daObjStair_cFv */
void daObjStair_c::modeWaitUpper() { int daObjStair_c::modeWaitUpper() {
// NONMATCHING int is_swbit = fopAcM_isSwitch(this, getSwbit());
int dir = getDir();
if (!fopAcM_isSwitch(this, getSwbit2()) && ((is_swbit && dir == 0) || (!is_swbit && dir == 1))) {
modeUpperInit();
} }
/* ############################################################################################## */ return 1;
/* 80C9E8F4-80C9E8F8 000048 0004+00 1/2 0/0 0/0 .rodata @3946 */ }
SECTION_RODATA static f32 const lit_3946 = 3.0f;
COMPILER_STRIP_GATE(0x80C9E8F4, &lit_3946);
/* 80C9DA98-80C9DADC 000A78 0044+00 1/1 0/0 0/0 .text modeUpperInit__12daObjStair_cFv */ /* 80C9DA98-80C9DADC 000A78 0044+00 1/1 0/0 0/0 .text modeUpperInit__12daObjStair_cFv */
void daObjStair_c::modeUpperInit() { int daObjStair_c::modeUpperInit() {
// NONMATCHING mMoveStartShakeTimer = 30;
mMoveEndShakeTimer = 15;
mMoveStartShakeAmount = 3.0f;
mMoveMode = 0;
mMoveAccel = 0.0f;
mMoveStep = 0.0f;
mMode = MODE_UPPER_e;
return 1;
} }
/* ############################################################################################## */
/* 80C9E8F8-80C9E8FC 00004C 0004+00 1/3 0/0 0/0 .rodata @4061 */
SECTION_RODATA static f32 const lit_4061 = 1.0f;
COMPILER_STRIP_GATE(0x80C9E8F8, &lit_4061);
/* 80C9E8FC-80C9E900 000050 0004+00 0/2 0/0 0/0 .rodata @4062 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4062 = -1.0f;
COMPILER_STRIP_GATE(0x80C9E8FC, &lit_4062);
#pragma pop
/* 80C9E900-80C9E904 000054 0004+00 0/2 0/0 0/0 .rodata @4063 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4063 = 9.0f / 20.0f;
COMPILER_STRIP_GATE(0x80C9E900, &lit_4063);
#pragma pop
/* 80C9E904-80C9E908 000058 0004+00 0/2 0/0 0/0 .rodata @4064 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4064 = 0.5f;
COMPILER_STRIP_GATE(0x80C9E904, &lit_4064);
#pragma pop
/* 80C9E908-80C9E90C 00005C 0004+00 0/2 0/0 0/0 .rodata @4065 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4065 = 50.0f;
COMPILER_STRIP_GATE(0x80C9E908, &lit_4065);
#pragma pop
/* 80C9DADC-80C9DEDC 000ABC 0400+00 1/0 0/0 0/0 .text modeUpper__12daObjStair_cFv */ /* 80C9DADC-80C9DEDC 000ABC 0400+00 1/0 0/0 0/0 .text modeUpper__12daObjStair_cFv */
void daObjStair_c::modeUpper() { int daObjStair_c::modeUpper() {
// NONMATCHING f32 move_speed = 50.0f;
s16 shake_speed = 15000;
switch (mMoveMode) {
case 0:
if (mMoveStartShakeTimer == 0) {
if (mSmokeEmitter == NULL) {
cXyz effpos(home.pos);
effpos.y += 600.0f;
mSmokeEmitter = dComIfGp_particle_set(0x833E, &effpos, &home.angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
}
setParticle();
mMoveMode = 1;
} else if (mMoveStartShakeTimer == 2 && getMdlType() != 1) {
mDoAud_seStart(Z2SE_OBJ_STEP_MOVESTART, &mSoundPos, 0, 0);
} }
/* 80C9DEDC-80C9DF18 000EBC 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ mMoveStartShakeTimer--;
// cXyz::~cXyz() { break;
extern "C" void __dt__4cXyzFv() { case 1: {
// NONMATCHING cLib_chaseF(&mMoveAccel, 0.45f, 0.5f + KREG_F(0));
cLib_chaseF(&mMoveStep, move_speed, mMoveAccel);
int is_move_end = cLib_chaseF(&current.pos.y, home.pos.y + l_move_len[mType], mMoveStep);
mModelPos.y = current.pos.y;
if (is_move_end) {
mMoveMode = 2;
if (mSmokeEmitter != NULL) {
mSmokeEmitter->becomeInvalidEmitter();
mSmokeEmitter = NULL;
}
removeParticle();
if (getMdlType() != 1) {
mDoAud_seStart(Z2SE_OBJ_STEP_MOVEEND, &mSoundPos, 0, 0);
} else {
mDoAud_seStart(Z2SE_OBJ_L6_UD_BLOCK_UP_ST, &mSoundPos, 0, 0);
}
} else if (getMdlType() != 1) {
mDoAud_seStartLevel(Z2SE_OBJ_STEP_MOVE, &mSoundPos, 0, 0);
} else {
mDoAud_seStartLevel(Z2SE_OBJ_L6_UD_BLOCK_UP, &mSoundPos, 0, 0);
}
mModelPos = current.pos;
break;
}
case 2:
dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
mMoveMode = 3;
mMoveStartShakeTimer = 15;
break;
case 3:
mMoveStartShakeTimer--;
mModelPos = current.pos;
if (mMoveStartShakeTimer == 0) {
modeWaitLowerInit();
}
break;
}
mModelPos.y += mMoveStartShakeAmount * cM_scos(mMoveStartShakeTimer * shake_speed);
cLib_addCalc0(&mMoveStartShakeAmount, 0.5f + KREG_F(1), 0.5f + KREG_F(3));
return 1;
} }
/* 80C9DF18-80C9DF60 000EF8 0048+00 2/2 0/0 0/0 .text modeWaitLowerInit__12daObjStair_cFv /* 80C9DF18-80C9DF60 000EF8 0048+00 2/2 0/0 0/0 .text modeWaitLowerInit__12daObjStair_cFv
*/ */
void daObjStair_c::modeWaitLowerInit() { int daObjStair_c::modeWaitLowerInit() {
// NONMATCHING current.pos.y = home.pos.y + l_move_len[mType];
mModelPos = current.pos;
mMode = MODE_WAIT_LOWER_e;
return 1;
} }
/* 80C9DF60-80C9E004 000F40 00A4+00 1/0 0/0 0/0 .text modeWaitLower__12daObjStair_cFv */ /* 80C9DF60-80C9E004 000F40 00A4+00 1/0 0/0 0/0 .text modeWaitLower__12daObjStair_cFv */
void daObjStair_c::modeWaitLower() { int daObjStair_c::modeWaitLower() {
// NONMATCHING int is_swbit = fopAcM_isSwitch(this, getSwbit());
int dir = getDir();
if (!fopAcM_isSwitch(this, getSwbit2()) && ((!is_swbit && dir == 0) || (is_swbit && dir == 1))) {
modeLowerInit();
}
return 1;
} }
/* 80C9E004-80C9E034 000FE4 0030+00 1/1 0/0 0/0 .text modeLowerInit__12daObjStair_cFv */ /* 80C9E004-80C9E034 000FE4 0030+00 1/1 0/0 0/0 .text modeLowerInit__12daObjStair_cFv */
void daObjStair_c::modeLowerInit() { int daObjStair_c::modeLowerInit() {
// NONMATCHING mMoveAccel = 0.0f;
mMoveStep = 0.0f;
mMoveMode = 0;
mMoveStartShakeTimer = 30;
mMode = MODE_LOWER_e;
return 1;
} }
/* 80C9E034-80C9E3D8 001014 03A4+00 1/0 0/0 0/0 .text modeLower__12daObjStair_cFv */ /* 80C9E034-80C9E3D8 001014 03A4+00 1/0 0/0 0/0 .text modeLower__12daObjStair_cFv */
void daObjStair_c::modeLower() { int daObjStair_c::modeLower() {
// NONMATCHING f32 move_speed = 50.0f;
f32 shake_amount = 3.0f;
s16 shake_speed = 15000;
if (mMoveMode == 0) {
if (mMoveStartShakeTimer == 0) {
cLib_chaseF(&mMoveAccel, 0.45f, 0.5f + KREG_F(4));
cLib_chaseF(&mMoveStep, move_speed, mMoveAccel);
int is_move_end = cLib_chaseF(&current.pos.y, home.pos.y, mMoveStep);
mModelPos.y = current.pos.y;
if (is_move_end) {
mMoveMode = 1;
if (mSmokeEmitter != NULL) {
mSmokeEmitter->becomeInvalidEmitter();
mSmokeEmitter = NULL;
}
if (getMdlType() != 1) {
mDoAud_seStart(Z2SE_OBJ_STEP_MOVEEND, &mSoundPos, 0, 0);
} else {
mDoAud_seStart(Z2SE_OBJ_L6_UD_BLOCK_DW_ST, &mSoundPos, 0, 0);
}
} else if (getMdlType() != 1) {
mDoAud_seStartLevel(Z2SE_OBJ_STEP_MOVE, &mSoundPos, 0, 0);
} else {
mDoAud_seStartLevel(Z2SE_OBJ_L6_UD_BLOCK_DW, &mSoundPos, 0, 0);
}
} else {
mMoveStartShakeTimer--;
if (mMoveStartShakeTimer == 0) {
if (mSmokeEmitter == NULL) {
cXyz effpos(home.pos);
effpos.y += 600.0f;
mSmokeEmitter = dComIfGp_particle_set(0x833E, &effpos, &home.angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
}
} else if (mMoveStartShakeTimer == 2 && getMdlType() != 1) {
mDoAud_seStart(Z2SE_OBJ_STEP_MOVESTART, &mSoundPos, 0, 0);
}
}
} else {
if (mMoveStartShakeTimer == 0 && mMoveMode == 1) {
mMoveStartShakeTimer = 15;
mMoveMode = 2;
dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
}
mMoveStartShakeTimer--;
mModelPos = current.pos;
mModelPos.y += shake_amount * cM_scos(mMoveStartShakeTimer * shake_speed);
if (mMoveStartShakeTimer == 0) {
modeWaitUpperInit();
}
}
return 1;
} }
/* 80C9E3D8-80C9E5A0 0013B8 01C8+00 1/1 0/0 0/0 .text setParticle__12daObjStair_cFv */ /* 80C9E3D8-80C9E5A0 0013B8 01C8+00 1/1 0/0 0/0 .text setParticle__12daObjStair_cFv */
void daObjStair_c::setParticle() { void daObjStair_c::setParticle() {
// NONMATCHING if (mParticleLeftEmitter[0].getEmitter() == NULL) {
dComIfGp_particle_set(0x833C, &mParticleLeftPos[0], &home.angle, NULL, 0xFF, &mParticleLeftEmitter[0], fopAcM_GetRoomNo(this), NULL, NULL, NULL);
}
if (mParticleLeftEmitter[1].getEmitter() == NULL) {
dComIfGp_particle_set(0x833C, &mParticleLeftPos[1], &home.angle, NULL, 0xFF, &mParticleLeftEmitter[1], fopAcM_GetRoomNo(this), NULL, NULL, NULL);
}
if (mParticleRightEmitter[0].getEmitter() == NULL) {
dComIfGp_particle_set(0x833D, &mParticleRightPos[0], &home.angle, NULL, 0xFF, &mParticleRightEmitter[0], fopAcM_GetRoomNo(this), NULL, NULL, NULL);
}
if (mParticleRightEmitter[1].getEmitter() == NULL) {
dComIfGp_particle_set(0x833D, &mParticleRightPos[1], &home.angle, NULL, 0xFF, &mParticleRightEmitter[1], fopAcM_GetRoomNo(this), NULL, NULL, NULL);
// "Up/Down Stairs: Right Effect set"
OS_REPORT("上下階段:右エフェクトセット\n");
}
} }
/* 80C9E5A0-80C9E614 001580 0074+00 2/2 0/0 0/0 .text removeParticle__12daObjStair_cFv */ /* 80C9E5A0-80C9E614 001580 0074+00 2/2 0/0 0/0 .text removeParticle__12daObjStair_cFv */
void daObjStair_c::removeParticle() { void daObjStair_c::removeParticle() {
// NONMATCHING for (int i = 0; i < 2; i++) {
mParticleLeftEmitter[i].remove();
mParticleRightEmitter[i].remove();
}
}
/* 80C9E614-80C9E700 0015F4 00EC+00 1/0 0/0 0/0 .text daObjStair_create1st__FP12daObjStair_c */
static int daObjStair_create1st(daObjStair_c* i_this) {
fopAcM_SetupActor(i_this, daObjStair_c);
return i_this->create1st();
}
/* 80C9E7B4-80C9E7D4 001794 0020+00 1/0 0/0 0/0 .text daObjStair_MoveBGDelete__FP12daObjStair_c */
static int daObjStair_MoveBGDelete(daObjStair_c* i_this) {
return i_this->MoveBGDelete();
}
/* 80C9E7D4-80C9E7F4 0017B4 0020+00 1/0 0/0 0/0 .text daObjStair_MoveBGExecute__FP12daObjStair_c
*/
static int daObjStair_MoveBGExecute(daObjStair_c* i_this) {
return i_this->MoveBGExecute();
}
/* 80C9E7F4-80C9E820 0017D4 002C+00 1/0 0/0 0/0 .text daObjStair_MoveBGDraw__FP12daObjStair_c */
static int daObjStair_MoveBGDraw(daObjStair_c* i_this) {
return i_this->MoveBGDraw();
} }
/* ############################################################################################## */
/* 80C9EA08-80C9EA28 -00001 0020+00 1/0 0/0 0/0 .data daObjStair_METHODS */ /* 80C9EA08-80C9EA28 -00001 0020+00 1/0 0/0 0/0 .data daObjStair_METHODS */
static actor_method_class daObjStair_METHODS = { static actor_method_class daObjStair_METHODS = {
(process_method_func)daObjStair_create1st__FP12daObjStair_c, (process_method_func)daObjStair_create1st,
(process_method_func)daObjStair_MoveBGDelete__FP12daObjStair_c, (process_method_func)daObjStair_MoveBGDelete,
(process_method_func)daObjStair_MoveBGExecute__FP12daObjStair_c, (process_method_func)daObjStair_MoveBGExecute,
0, (process_method_func)NULL,
(process_method_func)daObjStair_MoveBGDraw__FP12daObjStair_c, (process_method_func)daObjStair_MoveBGDraw,
}; };
/* 80C9EA28-80C9EA58 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MvStair */ /* 80C9EA28-80C9EA58 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MvStair */
@ -504,112 +519,3 @@ extern actor_process_profile_definition g_profile_Obj_MvStair = {
fopAc_ACTOR_e, // mActorType fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType fopAc_CULLBOX_CUSTOM_e, // cullType
}; };
/* 80C9EA58-80C9EA7C 000138 0024+00 2/2 0/0 0/0 .data __vt__18dPa_levelEcallBack */
SECTION_DATA extern void* __vt__18dPa_levelEcallBack[9] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__18dPa_levelEcallBackFv,
(void*)execute__18JPAEmitterCallBackFP14JPABaseEmitter,
(void*)executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter,
(void*)draw__18JPAEmitterCallBackFP14JPABaseEmitter,
(void*)drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter,
(void*)NULL,
(void*)cleanup__18dPa_levelEcallBackFv,
};
/* 80C9EA7C-80C9EAA4 00015C 0028+00 1/1 0/0 0/0 .data __vt__12daObjStair_c */
SECTION_DATA extern void* __vt__12daObjStair_c[10] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)CreateHeap__12daObjStair_cFv,
(void*)Create__12daObjStair_cFv,
(void*)Execute__12daObjStair_cFPPA3_A4_f,
(void*)Draw__12daObjStair_cFv,
(void*)Delete__12daObjStair_cFv,
(void*)IsDelete__16dBgS_MoveBgActorFv,
(void*)ToFore__16dBgS_MoveBgActorFv,
(void*)ToBack__16dBgS_MoveBgActorFv,
};
/* 80C9E614-80C9E700 0015F4 00EC+00 1/0 0/0 0/0 .text daObjStair_create1st__FP12daObjStair_c */
static void daObjStair_create1st(daObjStair_c* param_0) {
// NONMATCHING
}
/* 80C9E700-80C9E704 0016E0 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
// cXyz::cXyz() {
extern "C" void __ct__4cXyzFv() {
/* empty function */
}
/* 80C9E704-80C9E788 0016E4 0084+00 1/1 0/0 0/0 .text __dt__19dPa_followEcallBackFv */
// dPa_followEcallBack::~dPa_followEcallBack() {
extern "C" void __dt__19dPa_followEcallBackFv() {
// NONMATCHING
}
/* 80C9E788-80C9E78C 001768 0004+00 1/0 0/0 0/0 .text cleanup__18dPa_levelEcallBackFv */
// void dPa_levelEcallBack::cleanup() {
extern "C" void cleanup__18dPa_levelEcallBackFv() {
/* empty function */
}
/* 80C9E78C-80C9E7B4 00176C 0028+00 1/1 0/0 0/0 .text __defctor__19dPa_followEcallBackFv
*/
// void dPa_followEcallBack::__defctor() {
extern "C" void __defctor__19dPa_followEcallBackFv() {
// NONMATCHING
}
/* 80C9E7B4-80C9E7D4 001794 0020+00 1/0 0/0 0/0 .text daObjStair_MoveBGDelete__FP12daObjStair_c */
static void daObjStair_MoveBGDelete(daObjStair_c* param_0) {
// NONMATCHING
}
/* 80C9E7D4-80C9E7F4 0017B4 0020+00 1/0 0/0 0/0 .text daObjStair_MoveBGExecute__FP12daObjStair_c
*/
static void daObjStair_MoveBGExecute(daObjStair_c* param_0) {
// NONMATCHING
}
/* 80C9E7F4-80C9E820 0017D4 002C+00 1/0 0/0 0/0 .text daObjStair_MoveBGDraw__FP12daObjStair_c */
static void daObjStair_MoveBGDraw(daObjStair_c* param_0) {
// NONMATCHING
}
/* 80C9E820-80C9E894 001800 0074+00 1/0 0/0 0/0 .text __dt__18dPa_levelEcallBackFv */
// dPa_levelEcallBack::~dPa_levelEcallBack() {
extern "C" void __dt__18dPa_levelEcallBackFv() {
// NONMATCHING
}
/* 80C9E894-80C9E898 001874 0004+00 1/0 0/0 0/0 .text
* execute__18JPAEmitterCallBackFP14JPABaseEmitter */
// void JPAEmitterCallBack::execute(JPABaseEmitter* param_0) {
extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter() {
/* empty function */
}
/* 80C9E898-80C9E89C 001878 0004+00 1/0 0/0 0/0 .text
* executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter */
// void JPAEmitterCallBack::executeAfter(JPABaseEmitter* param_0) {
extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter() {
/* empty function */
}
/* 80C9E89C-80C9E8A0 00187C 0004+00 1/0 0/0 0/0 .text draw__18JPAEmitterCallBackFP14JPABaseEmitter
*/
// void JPAEmitterCallBack::draw(JPABaseEmitter* param_0) {
extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter() {
/* empty function */
}
/* 80C9E8A0-80C9E8A4 001880 0004+00 1/0 0/0 0/0 .text
* drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter */
// void JPAEmitterCallBack::drawAfter(JPABaseEmitter* param_0) {
extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter() {
/* empty function */
}
/* 80C9E90C-80C9E90C 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */

File diff suppressed because it is too large Load Diff