mirror of
https://github.com/zeldaret/tp
synced 2026-07-08 22:44:44 -04:00
d_a_obj_mirror_screw OK, work on d_a_obj_mirror_chain and d_a_obj_mirror_table (#2057)
This commit is contained in:
@@ -814,6 +814,11 @@ public:
|
||||
|
||||
void i_onEndResetFlg1(daPy_ERFLG1 i_flag) { mEndResetFlg1 |= i_flag; }
|
||||
|
||||
cXyz* getLeftHandPosP() { return &mLeftHandPos; }
|
||||
cXyz* getRightHandPosP() { return &mRightHandPos; }
|
||||
cXyz* i_getLeftFootPosP() { return &mLeftFootPos; }
|
||||
cXyz* i_getRightFootPosP() { return &mRightFootPos; }
|
||||
|
||||
u32 i_checkWolf() const { return i_checkNoResetFlg1(FLG1_IS_WOLF); }
|
||||
BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); }
|
||||
BOOL i_checkMagneBootsOn() const { return i_checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); }
|
||||
|
||||
@@ -230,7 +230,7 @@ public:
|
||||
/* 0x7C */ cXyz mTransVel;
|
||||
/* 0x88 */ u8 mFlags;
|
||||
/* 0x89 */ u8 mNeedsFullTransform;
|
||||
/* 0x8A */ u8 field_0x8a[6];
|
||||
/* 0x8C */ u32 field_0x8c;
|
||||
/* 0x90 */ u8 mMoveCounter;
|
||||
/* 0x91 */ u8 field_0x91;
|
||||
/* 0x92 */ u16 m_rootGrpIdx;
|
||||
|
||||
@@ -3804,6 +3804,10 @@ inline J3DDrawBuffer* dComIfGd_getOpaListDark() {
|
||||
return g_dComIfG_gameInfo.drawlist.getOpaListDark();
|
||||
}
|
||||
|
||||
inline J3DDrawBuffer* dComIfGd_getXluListBG() {
|
||||
return g_dComIfG_gameInfo.drawlist.getXluListBG();
|
||||
}
|
||||
|
||||
inline void dComIfGd_init() {
|
||||
g_dComIfG_gameInfo.drawlist.init();
|
||||
}
|
||||
|
||||
@@ -311,6 +311,7 @@ public:
|
||||
J3DDrawBuffer* getOpaListPacket() { return mDrawBuffers[DB_OPA_LIST_PACKET]; }
|
||||
J3DDrawBuffer* getOpaListBG() { return mDrawBuffers[DB_OPA_LIST_BG]; }
|
||||
J3DDrawBuffer* getOpaListDark() { return mDrawBuffers[DB_OPA_LIST_DARK]; }
|
||||
J3DDrawBuffer* getXluListBG() { return mDrawBuffers[DB_XLU_LIST_BG]; }
|
||||
void setXluDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, J3DSys_XLU_BUFFER_e); }
|
||||
void setOpaDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, J3DSys_OPA_BUFFER_e); }
|
||||
void setXluListSky() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_SKY]); }
|
||||
|
||||
@@ -28,6 +28,7 @@ public:
|
||||
void setPlaySpeed(f32 speed) { mFrameCtrl.setRate(speed); }
|
||||
f32 getFrame() { return mFrameCtrl.getFrame(); }
|
||||
f32 getEndFrame() { return mFrameCtrl.getEnd(); }
|
||||
void setEndFrame(f32 frame) { mFrameCtrl.setEnd(frame); }
|
||||
void setFrame(f32 frame) { mFrameCtrl.setFrame(frame); }
|
||||
void setPlayMode(int i_mode) { mFrameCtrl.setAttribute(i_mode); }
|
||||
void setLoopFrame(f32 i_frame) { mFrameCtrl.setLoop(i_frame); }
|
||||
|
||||
@@ -38,6 +38,7 @@ struct daMirror_c : public fopAc_ac_c {
|
||||
/* 80031990 */ static int remove();
|
||||
s32 getType() { return fopAcM_GetParamBit(this, 0, 8); }
|
||||
s32 getSw() { return fopAcM_GetParamBit(this, 8, 8); }
|
||||
static u32 getMirrorRoomPrm() { return 0xff03; }
|
||||
|
||||
typedef int (daMirror_c::*entryModelFunc)(J3DModel*);
|
||||
static entryModelFunc m_entryModel;
|
||||
|
||||
@@ -19,7 +19,9 @@ public:
|
||||
/* 80C95E2C */ void executeWait();
|
||||
/* 80C95E88 */ void initDemo();
|
||||
/* 80C95E8C */ void executeDemo();
|
||||
/* 80C95EFC */ void setBaseMtx();
|
||||
/* 80C95EFC */ inline void setBaseMtx();
|
||||
inline void initBaseMtx();
|
||||
inline void create_init();
|
||||
/* 80C95F50 */ static int createHeapCallBack(fopAc_ac_c* i_this);
|
||||
/* 80C95F70 */ int CreateHeap();
|
||||
|
||||
@@ -29,25 +31,10 @@ public:
|
||||
inline int create();
|
||||
inline int draw();
|
||||
|
||||
void initBaseMtx() {
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
// setBaseMtx();
|
||||
|
||||
// this is supposed to be setBaseMtx, but it gets inlined here for some reason?
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
|
||||
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
void create_init() {
|
||||
initBaseMtx();
|
||||
mAttentionInfo.mFlags = 0;
|
||||
setAction(MODE_WAIT_e);
|
||||
}
|
||||
|
||||
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
|
||||
|
||||
void setAnmSpeed(f32 speed) { mpBck->setPlaySpeed(speed); }
|
||||
|
||||
bool isSwitch() {
|
||||
return i_fopAcM_isSwitch(this, getSwitchNo()) ||
|
||||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]) ||
|
||||
|
||||
@@ -1,6 +1,57 @@
|
||||
#ifndef D_A_OBJ_MIRROR_CHAIN_H
|
||||
#define D_A_OBJ_MIRROR_CHAIN_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/bg/d_bg_w.h"
|
||||
|
||||
class dScissorBegin_packet_c : public J3DPacket {
|
||||
public:
|
||||
/* 80C96698 */ void draw();
|
||||
/* 80C97F98 */ ~dScissorBegin_packet_c() {}
|
||||
|
||||
cXyz* getQuad() { return mQuad; }
|
||||
void entryPacket() { j3dSys.getDrawBuffer(1)->entryImm(this, 0); }
|
||||
|
||||
/* 0x10 */ cXyz mQuad[4];
|
||||
};
|
||||
|
||||
class dScissorEnd_packet_c : public J3DPacket {
|
||||
public:
|
||||
/* 80C96DE8 */ void draw();
|
||||
/* 80C97F3C */ ~dScissorEnd_packet_c() {}
|
||||
|
||||
void entryPacket() { j3dSys.getDrawBuffer(1)->entryImm(this, 0); }
|
||||
};
|
||||
|
||||
class daObjMirrorChain_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 80C96E40 */ int createHeap();
|
||||
/* 80C975EC */ void initBaseMtx();
|
||||
/* 80C97618 */ void setBaseMtx();
|
||||
/* 80C976B8 */ int draw();
|
||||
/* 80C97988 */ int execute();
|
||||
inline ~daObjMirrorChain_c();
|
||||
inline void create_init();
|
||||
inline cPhs__Step create();
|
||||
|
||||
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
|
||||
void setAnmSpeed(f32 speed) { mpBckAnm->setPlaySpeed(speed); }
|
||||
|
||||
/* 0x568 */ J3DModel* mpModel;
|
||||
/* 0x56C */ J3DModel* mpPortalModel;
|
||||
/* 0x570 */ mDoExt_bckAnm* mpBckAnm;
|
||||
/* 0x574 */ mDoExt_brkAnm* mpBrkAnm;
|
||||
/* 0x578 */ mDoExt_brkAnm* mpPortalBrkAnm;
|
||||
/* 0x57C */ request_of_phase_process_class mPhaseReq;
|
||||
/* 0x584 */ dBgW* mpActiveBgW;
|
||||
/* 0x588 */ dBgW mBgW[2];
|
||||
/* 0x708 */ JPABaseEmitter* mpEmitter;
|
||||
/* 0x70C */ Mtx mMtx;
|
||||
/* 0x73C */ dScissorBegin_packet_c mScissorBegin;
|
||||
/* 0x77C */ dScissorEnd_packet_c mScissorEnd;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjMirrorChain_c) == 0x78C);
|
||||
|
||||
#endif /* D_A_OBJ_MIRROR_CHAIN_H */
|
||||
|
||||
@@ -20,6 +20,7 @@ public:
|
||||
inline void create_init();
|
||||
|
||||
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
|
||||
void setAnmSpeed(f32 speed) { mpBck->setPlaySpeed(speed); }
|
||||
|
||||
bool isSwitch() {
|
||||
return i_fopAcM_isSwitch(this, getSwitchNo()) ||
|
||||
|
||||
@@ -1,6 +1,82 @@
|
||||
#ifndef D_A_OBJ_MIRROR_SCREW_H
|
||||
#define D_A_OBJ_MIRROR_SCREW_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/bg/d_bg_s_movebg_actor.h"
|
||||
#include "rel/d/a/obj/d_a_obj_swspinner/d_a_obj_swspinner.h"
|
||||
#include "rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.h"
|
||||
#include "rel/d/a/obj/mirror/d_a_obj_mirror_chain/d_a_obj_mirror_chain.h"
|
||||
#include "rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.h"
|
||||
#include "rel/d/a/obj/mirror/d_a_obj_mirror_table/d_a_obj_mirror_table.h"
|
||||
#include "rel/d/a/tag/d_a_tag_sppath/d_a_tag_sppath.h"
|
||||
|
||||
class daObjMirrorScrew_c;
|
||||
typedef void (daObjMirrorScrew_c::*daObjMirrorScrew_actionFunc)();
|
||||
|
||||
class daObjMirrorScrew_c : public dBgS_MoveBgActor {
|
||||
public:
|
||||
struct attr {
|
||||
f32 mDownDist;
|
||||
f32 mRotSpeedThreshold;
|
||||
int mSpinCount;
|
||||
int mResetSpinCount;
|
||||
f32 mSpeedStep;
|
||||
f32 mDownSpeed;
|
||||
};
|
||||
|
||||
enum Action {
|
||||
/* 0 */ ACT_WAIT,
|
||||
/* 1 */ ACT_DOWN,
|
||||
};
|
||||
|
||||
/* 80C98AD8 */ void initWait();
|
||||
/* 80C98AE4 */ void executeWait();
|
||||
/* 80C98C00 */ void initDown();
|
||||
/* 80C98F04 */ void executeDown();
|
||||
inline cPhs__Step create();
|
||||
/* 80C992F4 */ int CreateHeap();
|
||||
inline void setBaseMtx();
|
||||
inline void initBaseMtx();
|
||||
/* 80C99364 */ int Create();
|
||||
/* 80C99490 */ int Execute(Mtx**);
|
||||
/* 80C99608 */ int Draw();
|
||||
/* 80C996AC */ int Delete();
|
||||
|
||||
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
|
||||
u8 getEventID() { return (fopAcM_GetParam(this) >> 0x10) & 0xff; }
|
||||
|
||||
void setAction(int i_action) {
|
||||
mAction = i_action;
|
||||
mpActionFunc = ActionTable[mAction];
|
||||
callInit();
|
||||
}
|
||||
|
||||
void callInit() {
|
||||
(this->*mpActionFunc[0])();
|
||||
}
|
||||
|
||||
void callExecute() {
|
||||
(this->*mpActionFunc[1])();
|
||||
}
|
||||
|
||||
/* 0x5A0 */ J3DModel* mpModel;
|
||||
/* 0x5A4 */ request_of_phase_process_class mPhaseReq;
|
||||
/* 0x5AC */ daObjMirrorScrew_actionFunc* mpActionFunc;
|
||||
/* 0x5B0 */ int mAction;
|
||||
/* 0x5B4 */ daObjSwSpinner_c* mpSwSpinner;
|
||||
/* 0x5B8 */ daTagSppath_c* mpSpPath;
|
||||
/* 0x5BC */ daObjMirrorChain_c* mpChain;
|
||||
/* 0x5C0 */ daObjMirrorTable_c* mpTable;
|
||||
/* 0x5C4 */ daObjMirror6Pole_c* mp6Pole;
|
||||
/* 0x5C8 */ daObjMirrorSand_c* mpSand;
|
||||
/* 0x5CC */ int mSpinCount;
|
||||
/* 0x5D0 */ u8 field_0x5d0[8];
|
||||
/* 0x5D8 */ cBgS_PolyInfo field_0x5d8;
|
||||
|
||||
static attr const M_attr;
|
||||
static daObjMirrorScrew_actionFunc ActionTable[2][2];
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjMirrorScrew_c) == 0x5E8);
|
||||
|
||||
#endif /* D_A_OBJ_MIRROR_SCREW_H */
|
||||
|
||||
@@ -1,6 +1,45 @@
|
||||
#ifndef D_A_OBJ_MIRROR_TABLE_H
|
||||
#define D_A_OBJ_MIRROR_TABLE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/bg/d_bg_w.h"
|
||||
|
||||
class daObjMirrorTable_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 80C99938 */ int createHeap();
|
||||
/* 80C99F7C */ /* inline */ bool isSwitch(); // should be inlined once createHeap matches
|
||||
inline void checkOnPanel();
|
||||
/* 80C9A298 */ int draw();
|
||||
inline void setBaseMtx();
|
||||
/* 80C9A4D0 */ int execute();
|
||||
inline ~daObjMirrorTable_c();
|
||||
/* 80C9AB30 */ cPhs__Step create();
|
||||
/* 80C9ABFC */ void create_init();
|
||||
/* 80C9AFD0 */ void initBaseMtx();
|
||||
|
||||
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
|
||||
void setAnmSpeed(f32 speed) { mpTableUpBckAnm->setPlaySpeed(speed); }
|
||||
|
||||
/* 0x568 */ J3DModel* mpTableModel;
|
||||
/* 0x56C */ J3DModel* mpMirrorModel;
|
||||
/* 0x570 */ J3DModel* mpStairModel;
|
||||
/* 0x574 */ J3DModel* mpPanelModel;
|
||||
/* 0x578 */ J3DModel* mpLightModel;
|
||||
/* 0x57C */ J3DModel* mpMSquareModel;
|
||||
/* 0x580 */ mDoExt_bckAnm* mpTableUpBckAnm;
|
||||
/* 0x584 */ mDoExt_bckAnm* mpMSquareBckAnm;
|
||||
/* 0x588 */ mDoExt_brkAnm* mpStairBrkAnm;
|
||||
/* 0x58C */ mDoExt_brkAnm* mpMSquareBrkAnm;
|
||||
/* 0x590 */ mDoExt_btkAnm* mpLightBtkAnm;
|
||||
/* 0x594 */ request_of_phase_process_class mPhaseReq;
|
||||
/* 0x59C */ dBgW mBgW[3];
|
||||
/* 0x7DC */ Mtx mMtx[3];
|
||||
/* 0x86C */ JPABaseEmitter* mpEmitter1;
|
||||
/* 0x870 */ JPABaseEmitter* mpEmitter2;
|
||||
/* 0x874 */ bool field_0x874;
|
||||
/* 0x875 */ s8 field_0x875;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjMirrorTable_c) == 0x878);
|
||||
|
||||
#endif /* D_A_OBJ_MIRROR_TABLE_H */
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
#ifndef D_A_TAG_SPPATH_H
|
||||
#define D_A_TAG_SPPATH_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "d/d_path.h"
|
||||
|
||||
class daTagSppath_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 80D61C18 */ void create();
|
||||
/* 80D61EC4 */ ~daTagSppath_c();
|
||||
/* 80D62024 */ void getNearPathPos(cXyz*, dPath*);
|
||||
/* 80D629C0 */ void execute();
|
||||
};
|
||||
|
||||
#endif /* D_A_TAG_SPPATH_H */
|
||||
|
||||
Reference in New Issue
Block a user