mirror of https://github.com/zeldaret/tp.git
mvstair done, obj_tks equivalent (#2565)
* mvstair done, obj_tks equivalent * fix
This commit is contained in:
parent
e0bbad1f3f
commit
8410e4fd40
|
@ -2055,7 +2055,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_screw"),
|
||||
ActorRel(NonMatching, "d_a_obj_mirror_table"),
|
||||
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(NonMatching, "d_a_obj_nagaisu"),
|
||||
ActorRel(Equivalent, "d_a_obj_nan"), # weak function order
|
||||
|
@ -2137,7 +2137,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_obj_thashi"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_thdoor"),
|
||||
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_toaru_maki"),
|
||||
ActorRel(NonMatching, "d_a_obj_toby"),
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#define D_A_OBJ_MVSTAIR_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
|
||||
|
@ -11,35 +13,80 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjStair_c : public fopAc_ac_c {
|
||||
class daObjStair_c : public dBgS_MoveBgActor {
|
||||
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();
|
||||
/* 80C9D0D4 */ void setBaseMtx();
|
||||
/* 80C9D148 */ void Create();
|
||||
/* 80C9D2B8 */ void CreateHeap();
|
||||
/* 80C9D338 */ void create1st();
|
||||
/* 80C9D338 */ int create1st();
|
||||
/* 80C9D41C */ void event_proc_call();
|
||||
/* 80C9D4D8 */ void mode_proc_call();
|
||||
/* 80C9D594 */ void Execute(f32 (**)[3][4]);
|
||||
/* 80C9D710 */ void Draw();
|
||||
/* 80C9D7B4 */ void Delete();
|
||||
/* 80C9D82C */ void actionWait();
|
||||
/* 80C9D8EC */ void actionOrderEvent();
|
||||
/* 80C9D95C */ void actionEvent();
|
||||
/* 80C9D9BC */ bool actionEnd();
|
||||
/* 80C9D9C4 */ void modeWaitUpperInit();
|
||||
/* 80C9D9F4 */ void modeWaitUpper();
|
||||
/* 80C9DA98 */ void modeUpperInit();
|
||||
/* 80C9DADC */ void modeUpper();
|
||||
/* 80C9DF18 */ void modeWaitLowerInit();
|
||||
/* 80C9DF60 */ void modeWaitLower();
|
||||
/* 80C9E004 */ void modeLowerInit();
|
||||
/* 80C9E034 */ void modeLower();
|
||||
/* 80C9D82C */ int actionWait();
|
||||
/* 80C9D8EC */ int actionOrderEvent();
|
||||
/* 80C9D95C */ int actionEvent();
|
||||
/* 80C9D9BC */ int actionEnd();
|
||||
/* 80C9D9C4 */ int modeWaitUpperInit();
|
||||
/* 80C9D9F4 */ int modeWaitUpper();
|
||||
/* 80C9DA98 */ int modeUpperInit();
|
||||
/* 80C9DADC */ int modeUpper();
|
||||
/* 80C9DF18 */ int modeWaitLowerInit();
|
||||
/* 80C9DF60 */ int modeWaitLower();
|
||||
/* 80C9E004 */ int modeLowerInit();
|
||||
/* 80C9E034 */ int modeLower();
|
||||
/* 80C9E3D8 */ void setParticle();
|
||||
/* 80C9E5A0 */ void removeParticle();
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x66c - 0x568];
|
||||
/* 80C9D2B8 */ virtual int CreateHeap();
|
||||
/* 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);
|
||||
|
|
|
@ -2,6 +2,23 @@
|
|||
#define D_A_OBJ_TKS_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
|
||||
|
@ -11,53 +28,79 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjTks_c : public fopAc_ac_c {
|
||||
class daObjTks_c : public daNpcF_c {
|
||||
public:
|
||||
/* 80D0F28C */ daObjTks_c();
|
||||
/* 80D0F480 */ ~daObjTks_c();
|
||||
/* 80D0F640 */ void Create();
|
||||
/* 80D0F904 */ void CreateHeap();
|
||||
/* 80D0FD34 */ void Delete();
|
||||
/* 80D0FD68 */ void Execute();
|
||||
/* 80D0FE60 */ void Draw();
|
||||
/* 80D0FED0 */ void ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80D10094 */ void createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80D100B4 */ void ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80D10100 */ void setMtx();
|
||||
/* 80D10184 */ void setExpressionAnm(int, bool);
|
||||
/* 80D102D0 */ void setExpressionBtp(int);
|
||||
/* 80D103A4 */ void setMotion(int, f32, int);
|
||||
/* 80D0F480 */ virtual ~daObjTks_c();
|
||||
|
||||
/* 80D0F640 */ int Create();
|
||||
/* 80D0F904 */ int CreateHeap();
|
||||
/* 80D0FD34 */ int Delete();
|
||||
/* 80D0FD68 */ int Execute();
|
||||
/* 80D0FE60 */ int Draw();
|
||||
/* 80D0FED0 */ int ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80D10094 */ static int createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80D100B4 */ static int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80D103E8 */ void reset();
|
||||
/* 80D10578 */ void setAction(void (daObjTks_c::*)());
|
||||
/* 80D10578 */ inline int setAction(void (daObjTks_c::*)());
|
||||
/* 80D10618 */ void wait();
|
||||
/* 80D106C8 */ void setExpression(int, f32);
|
||||
/* 80D106F4 */ void talk();
|
||||
/* 80D10A80 */ void demo();
|
||||
/* 80D11104 */ bool setMotionAnm(int, f32);
|
||||
/* 80D11228 */ void warp();
|
||||
/* 80D11670 */ void setParam();
|
||||
/* 80D116C8 */ void main();
|
||||
/* 80D118E8 */ void ctrlBtk();
|
||||
/* 80D119BC */ void setAttnPos();
|
||||
/* 80D11CB4 */ void lookat();
|
||||
/* 80D11E94 */ bool drawDbgInfo();
|
||||
/* 80D11E9C */ void drawOtherMdls();
|
||||
/* 80D11CB4 */ inline void lookat();
|
||||
|
||||
/* 80D11670 */ virtual void setParam();
|
||||
/* 80D116C8 */ virtual BOOL main();
|
||||
/* 80D118E8 */ virtual BOOL ctrlBtk();
|
||||
/* 80D10100 */ virtual void setMtx();
|
||||
/* 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; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0xDE0 - 0x568];
|
||||
void setLookMode(int i_mode) {
|
||||
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;
|
||||
/* 0xDE1 */ u8 field_0xde1[0xDE4 - 0xDE1];
|
||||
/* 0xDE1 */ u8 field_0xde1;
|
||||
};
|
||||
|
||||
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 */
|
||||
|
|
|
@ -4,487 +4,502 @@
|
|||
*/
|
||||
|
||||
#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};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
/* 80C9E8B4-80C9E8BC 000008 0008+00 1/1 0/0 0/0 .rodata l_dzbName */
|
||||
static const int l_dzbName[] = {7, 7};
|
||||
|
||||
extern "C" void initBaseMtx__12daObjStair_cFv();
|
||||
extern "C" void setBaseMtx__12daObjStair_cFv();
|
||||
extern "C" void Create__12daObjStair_cFv();
|
||||
extern "C" void CreateHeap__12daObjStair_cFv();
|
||||
extern "C" void create1st__12daObjStair_cFv();
|
||||
extern "C" void event_proc_call__12daObjStair_cFv();
|
||||
extern "C" void mode_proc_call__12daObjStair_cFv();
|
||||
extern "C" void Execute__12daObjStair_cFPPA3_A4_f();
|
||||
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;
|
||||
/* 80C9E8BC-80C9E8D4 000010 0018+00 1/2 0/0 0/0 .rodata l_move_len */
|
||||
static const f32 l_move_len[] = {
|
||||
150.0f,
|
||||
300.0f,
|
||||
450.0f,
|
||||
600.0f,
|
||||
500.0f,
|
||||
550.0f,
|
||||
};
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
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:
|
||||
//
|
||||
/* 80C9E8D4-80C9E8DC 000028 0008+00 1/1 0/0 0/0 .rodata l_heap_size */
|
||||
static const u32 l_heap_size[] = {0xB40, 0x2C60};
|
||||
|
||||
/* 80C9D098-80C9D0D4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__12daObjStair_cFv */
|
||||
void daObjStair_c::initBaseMtx() {
|
||||
// NONMATCHING
|
||||
mpModel->setBaseScale(scale);
|
||||
setBaseMtx();
|
||||
}
|
||||
|
||||
/* 80C9D0D4-80C9D148 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__12daObjStair_cFv */
|
||||
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 */
|
||||
void daObjStair_c::Create() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::Create() {
|
||||
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);
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C9E90C-80C9E90C 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#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
|
||||
BOOL is_swbit = fopAcM_isSwitch(this, swbit);
|
||||
int dir = getDir();
|
||||
|
||||
/* 80C9E920-80C9E92C 000000 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
|
||||
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
if ((dir == 0 && is_swbit) || (dir == 1 && !is_swbit)) {
|
||||
modeWaitLowerInit();
|
||||
} else {
|
||||
modeWaitUpperInit();
|
||||
}
|
||||
}
|
||||
|
||||
/* 80C9E92C-80C9E940 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
0x02000201,
|
||||
/* padding */
|
||||
0x40080000,
|
||||
0x00000000,
|
||||
0x3FE00000,
|
||||
0x00000000,
|
||||
};
|
||||
#pragma pop
|
||||
initBaseMtx();
|
||||
mIsSwitch = fopAcM_isSwitch(this, getSwbit());
|
||||
mSoundPos = home.pos;
|
||||
mSoundPos.y = 600.0f + home.pos.y;
|
||||
return 1;
|
||||
}
|
||||
|
||||
UNK_REL_DATA
|
||||
|
||||
/* 80C9E940-80C9E948 -00001 0008+00 3/3 0/0 0/0 .data l_arcName */
|
||||
SECTION_DATA static void* l_arcName[2] = {
|
||||
(void*)&d_a_obj_mvstair__stringBase0,
|
||||
(void*)(((char*)&d_a_obj_mvstair__stringBase0) + 0xA),
|
||||
static char* l_arcName[2] = {
|
||||
"K_mvkai00",
|
||||
"Lv9_mvkai",
|
||||
};
|
||||
|
||||
/* 80C9D2B8-80C9D338 000298 0080+00 1/0 0/0 0/0 .text CreateHeap__12daObjStair_cFv */
|
||||
void daObjStair_c::CreateHeap() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::CreateHeap() {
|
||||
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 */
|
||||
void daObjStair_c::create1st() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::create1st() {
|
||||
mType = getType();
|
||||
if (getMdlType() == 7 || getMdlType() == 0) {
|
||||
mResType = 0;
|
||||
} else if (getMdlType() == 1) {
|
||||
mResType = 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C9E948-80C9E954 -00001 000C+00 0/1 0/0 0/0 .data @3754 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3754[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)actionWait__12daObjStair_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
int phase_state = dComIfG_resLoad(&mPhase, l_arcName[mResType]);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
phase_state = MoveBGCreate(l_arcName[mResType], l_dzbName[mResType], dBgS_MoveBGProc_TypicalRotY, l_heap_size[mResType], NULL);
|
||||
if (phase_state == cPhs_ERROR_e) {
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
/* 80C9E954-80C9E960 -00001 000C+00 0/1 0/0 0/0 .data @3755 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3755[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)actionOrderEvent__12daObjStair_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
OS_REPORT("MVSTAIR PARAM:0x%x\n", fopAcM_GetParam(this));
|
||||
}
|
||||
|
||||
/* 80C9E960-80C9E96C -00001 000C+00 0/1 0/0 0/0 .data @3756 */
|
||||
#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
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
/* 80C9D41C-80C9D4D8 0003FC 00BC+00 1/1 0/0 0/0 .text event_proc_call__12daObjStair_cFv
|
||||
*/
|
||||
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 */
|
||||
void daObjStair_c::mode_proc_call() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C9E8E0-80C9E8E4 000034 0004+00 2/5 0/0 0/0 .rodata @3802 */
|
||||
SECTION_RODATA static u8 const lit_3802[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
static int (daObjStair_c::*l_func[])() = {
|
||||
&daObjStair_c::modeWaitUpper,
|
||||
&daObjStair_c::modeUpper,
|
||||
&daObjStair_c::modeWaitLower,
|
||||
&daObjStair_c::modeLower,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C9E8E0, &lit_3802);
|
||||
|
||||
/* 80C9E8E4-80C9E8E8 000038 0004+00 0/1 0/0 0/0 .rodata @3803 */
|
||||
#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
|
||||
(this->*l_func[mMode])();
|
||||
}
|
||||
|
||||
/* 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]) {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::Execute(f32 (**param_0)[3][4]) {
|
||||
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 */
|
||||
void daObjStair_c::Draw() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::Draw() {
|
||||
g_env_light.settingTevStruct(16, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
|
||||
|
||||
dComIfGd_setListBG();
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
dComIfGd_setList();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C9D7B4-80C9D82C 000794 0078+00 1/0 0/0 0/0 .text Delete__12daObjStair_cFv */
|
||||
void daObjStair_c::Delete() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::Delete() {
|
||||
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 */
|
||||
void daObjStair_c::actionWait() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::actionWait() {
|
||||
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
|
||||
*/
|
||||
void daObjStair_c::actionOrderEvent() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::actionOrderEvent() {
|
||||
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 */
|
||||
void daObjStair_c::actionEvent() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::actionEvent() {
|
||||
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 */
|
||||
bool daObjStair_c::actionEnd() {
|
||||
return true;
|
||||
int daObjStair_c::actionEnd() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C9D9C4-80C9D9F4 0009A4 0030+00 2/2 0/0 0/0 .text modeWaitUpperInit__12daObjStair_cFv
|
||||
*/
|
||||
void daObjStair_c::modeWaitUpperInit() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeWaitUpperInit() {
|
||||
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 */
|
||||
void daObjStair_c::modeWaitUpper() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeWaitUpper() {
|
||||
int is_swbit = fopAcM_isSwitch(this, getSwbit());
|
||||
int dir = getDir();
|
||||
|
||||
if (!fopAcM_isSwitch(this, getSwbit2()) && ((is_swbit && dir == 0) || (!is_swbit && dir == 1))) {
|
||||
modeUpperInit();
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 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);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C9DA98-80C9DADC 000A78 0044+00 1/1 0/0 0/0 .text modeUpperInit__12daObjStair_cFv */
|
||||
void daObjStair_c::modeUpperInit() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeUpperInit() {
|
||||
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 */
|
||||
void daObjStair_c::modeUpper() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeUpper() {
|
||||
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 */
|
||||
// cXyz::~cXyz() {
|
||||
extern "C" void __dt__4cXyzFv() {
|
||||
// NONMATCHING
|
||||
mMoveStartShakeTimer--;
|
||||
break;
|
||||
case 1: {
|
||||
cLib_chaseF(&mMoveAccel, 0.45f, 0.5f + KREG_F(0));
|
||||
cLib_chaseF(&mMoveStep, move_speed, mMoveAccel);
|
||||
|
||||
int is_move_end = cLib_chaseF(¤t.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
|
||||
*/
|
||||
void daObjStair_c::modeWaitLowerInit() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeWaitLowerInit() {
|
||||
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 */
|
||||
void daObjStair_c::modeWaitLower() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeWaitLower() {
|
||||
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 */
|
||||
void daObjStair_c::modeLowerInit() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeLowerInit() {
|
||||
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 */
|
||||
void daObjStair_c::modeLower() {
|
||||
// NONMATCHING
|
||||
int daObjStair_c::modeLower() {
|
||||
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(¤t.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 */
|
||||
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 */
|
||||
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 */
|
||||
static actor_method_class daObjStair_METHODS = {
|
||||
(process_method_func)daObjStair_create1st__FP12daObjStair_c,
|
||||
(process_method_func)daObjStair_MoveBGDelete__FP12daObjStair_c,
|
||||
(process_method_func)daObjStair_MoveBGExecute__FP12daObjStair_c,
|
||||
0,
|
||||
(process_method_func)daObjStair_MoveBGDraw__FP12daObjStair_c,
|
||||
(process_method_func)daObjStair_create1st,
|
||||
(process_method_func)daObjStair_MoveBGDelete,
|
||||
(process_method_func)daObjStair_MoveBGExecute,
|
||||
(process_method_func)NULL,
|
||||
(process_method_func)daObjStair_MoveBGDraw,
|
||||
};
|
||||
|
||||
/* 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_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
Loading…
Reference in New Issue