lv7bsgate, lv8udfloor, lv9swshutter done, lv7propellery almost (#2768)

* lv7bsgate, lv8udfloor, lv9swshutter done, lv7propellery almost

* fix builds

* obj_lv6egate done
This commit is contained in:
TakaRikka
2025-11-03 08:22:25 +02:00
committed by GitHub
parent 453c8b9fbb
commit 0b181f84d4
15 changed files with 1293 additions and 1857 deletions
+4 -4
View File
@@ -2110,17 +2110,17 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_lv6TogeTrap"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6bemos"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6bemos2"),
ActorRel(NonMatching, "d_a_obj_lv6egate"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6egate"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6elevta"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6swturn"),
ActorRel(NonMatching, "d_a_obj_lv7BsGate"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv7BsGate"),
ActorRel(NonMatching, "d_a_obj_lv7PropellerY"),
ActorRel(Equivalent, "d_a_obj_lv7bridge"), # small regalloc
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8KekkaiTrap"),
ActorRel(NonMatching, "d_a_obj_lv8Lift"),
ActorRel(NonMatching, "d_a_obj_lv8OptiLift"),
ActorRel(NonMatching, "d_a_obj_lv8UdFloor"),
ActorRel(NonMatching, "d_a_obj_lv9SwShutter"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8UdFloor"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv9SwShutter"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_magLift"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_magLiftRot"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_maki"),
+21 -11
View File
@@ -2,6 +2,8 @@
#define D_A_OBJ_LV6EGATE_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
/**
* @ingroup actors-objects
@@ -11,24 +13,32 @@
* @details
*
*/
class daObjLv6EGate_c : public fopAc_ac_c {
class daObjLv6EGate_c : public dBgS_MoveBgActor, public request_of_phase_process_class {
public:
/* 80C82078 */ void create1st();
/* 80C82078 */ int create1st();
/* 80C82108 */ void setMtx();
/* 80C82178 */ bool CreateHeap();
/* 80C82180 */ void Create();
/* 80C822DC */ void offDisp();
/* 80C82330 */ void onDisp();
/* 80C82388 */ void Execute(Mtx**);
/* 80C82690 */ void Draw();
/* 80C826A0 */ void Delete();
/* 80C82A80 */ ~daObjLv6EGate_c();
private:
/* 0x568 */ u8 field_0x568[0x1038 - 0x568];
/* 80C82178 */ virtual int CreateHeap();
/* 80C82180 */ virtual int Create();
/* 80C82388 */ virtual int Execute(Mtx**);
/* 80C82690 */ virtual int Draw();
/* 80C826A0 */ virtual int Delete();
/* 80C82A80 */ virtual ~daObjLv6EGate_c() {}
int getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
int getType() { return fopAcM_GetParamBit(this, 8, 1); }
/* 0x05A8 */ Mtx field_0x5a8;
/* 0x05D8 */ Mtx field_0x5d8;
/* 0x0608 */ dCcD_Stts mCcStts;
/* 0x0644 */ dCcD_Cyl mAtCyl[8];
/* 0x1024 */ u8 mElecOff;
/* 0x1025 */ u8 field_0x1025;
/* 0x1028 */ u32 mEmtId[4];
};
STATIC_ASSERT(sizeof(daObjLv6EGate_c) == 0x1038);
#endif /* D_A_OBJ_LV6EGATE_H */
+21 -15
View File
@@ -2,6 +2,7 @@
#define D_A_OBJ_LV7BSGATE_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,12 +12,10 @@
* @details
*
*/
class daLv7BsGate_c : public fopAc_ac_c {
class daLv7BsGate_c : public dBgS_MoveBgActor {
public:
/* 80C84930 */ void setBaseMtx();
/* 80C849CC */ void CreateHeap();
/* 80C84A4C */ void create();
/* 80C84BCC */ void Execute(Mtx**);
/* 80C84A4C */ int create();
/* 80C84C1C */ void moveGate();
/* 80C84D24 */ void init_modeWait();
/* 80C84D30 */ void modeWait();
@@ -24,20 +23,27 @@ public:
/* 80C84D40 */ void modeOpen();
/* 80C84E94 */ void init_modeClose();
/* 80C84EA0 */ void modeClose();
/* 80C84FF4 */ void Draw();
/* 80C85098 */ void Delete();
private:
/* 0x568 */ u8 field_0x568[0x5bc - 0x568];
/* 80C849CC */ virtual int CreateHeap();
/* 80C84BCC */ virtual int Execute(Mtx**);
/* 80C84FF4 */ virtual int Draw();
/* 80C85098 */ virtual int Delete();
int getType() { return fopAcM_GetParamBit(this, 0, 4); }
int getSw() { return fopAcM_GetParamBit(this, 4, 8); }
int getLR() { return fopAcM_GetParamBit(this, 12, 4); }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ u8 mMode;
/* 0x5AD */ u8 field_0x5ad;
/* 0x5AE */ u8 mType;
/* 0x5AF */ u8 mIsSwitch;
/* 0x5B0 */ u8 mLR;
/* 0x5B4 */ f32 field_0x5b4;
/* 0x5B8 */ f32 field_0x5b8;
};
STATIC_ASSERT(sizeof(daLv7BsGate_c) == 0x5bc);
class daLv7BsGate_HIO_c {
public:
/* 80C848AC */ daLv7BsGate_HIO_c();
/* 80C85164 */ ~daLv7BsGate_HIO_c();
};
#endif /* D_A_OBJ_LV7BSGATE_H */
+28 -15
View File
@@ -2,6 +2,7 @@
#define D_A_OBJ_LV7PROPELLERY_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,12 +12,10 @@
* @details
*
*/
class daPropY_c : public fopAc_ac_c {
class daPropY_c : public dBgS_MoveBgActor {
public:
/* 80C8550C */ void setBaseMtx();
/* 80C855A4 */ void CreateHeap();
/* 80C85624 */ void create();
/* 80C85810 */ void Execute(Mtx**);
/* 80C85624 */ int create();
/* 80C85860 */ void procMain();
/* 80C859B4 */ void init_modeMoveWait();
/* 80C859C0 */ void modeMoveWait();
@@ -28,20 +27,34 @@ public:
/* 80C85B84 */ void modeMove2();
/* 80C85CAC */ void init_modeStop();
/* 80C85DD0 */ void modeStop();
/* 80C85F14 */ void Draw();
/* 80C85FB8 */ void Delete();
private:
/* 0x568 */ u8 field_0x568[0x5c8 - 0x568];
/* 80C855A4 */ virtual int CreateHeap();
/* 80C85810 */ virtual int Execute(Mtx**);
/* 80C85F14 */ virtual int Draw();
/* 80C85FB8 */ virtual int Delete();
int getType() { return fopAcM_GetParamBit(this, 0, 4); }
int getSw() { return fopAcM_GetParamBit(this, 8, 8); }
int getTurnType() { return fopAcM_GetParamBit(this, 4, 4); }
int getTurnVec() { return fopAcM_GetParamBit(this, 16, 4); }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ u8 mMode;
/* 0x5AD */ u8 mSwbit;
/* 0x5AE */ u8 mIsSwitch;
/* 0x5AF */ u8 mType;
/* 0x5B0 */ u8 mTurnType;
/* 0x5B1 */ u8 mTurnVec;
/* 0x5B2 */ s8 field_0x5b2;
/* 0x5B4 */ s16 field_0x5b4;
/* 0x5B6 */ s16 field_0x5b6;
/* 0x5B8 */ u8 mTimer;
/* 0x5BC */ f32 field_0x5bc;
/* 0x5C0 */ f32 field_0x5c0;
/* 0x5C4 */ f32 field_0x5c4;
};
STATIC_ASSERT(sizeof(daPropY_c) == 0x5c8);
class daPropY_HIO_c {
public:
/* 80C8546C */ daPropY_HIO_c();
/* 80C86084 */ ~daPropY_HIO_c();
};
#endif /* D_A_OBJ_LV7PROPELLERY_H */
+32 -16
View File
@@ -2,6 +2,7 @@
#define D_A_OBJ_LV8UDFLOOR_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,38 +12,53 @@
* @details
*
*/
class daUdFloor_c : public fopAc_ac_c {
class daUdFloor_c : public dBgS_MoveBgActor {
public:
/* 80C8BDC8 */ void setBaseMtx();
/* 80C8BE64 */ void CreateHeap();
/* 80C8BEE4 */ void create();
/* 80C8C0DC */ void Execute(Mtx**);
/* 80C8BEE4 */ int create();
/* 80C8C12C */ void moveLift();
/* 80C8C264 */ void init_modeWait();
/* 80C8C270 */ void modeWait();
/* 80C8C274 */ void init_modeUpMoveInit();
/* 80C8C310 */ void modeUpMoveInit();
/* 80C8C354 */ void colorAnm(int);
/* 80C8C354 */ u8 colorAnm(int);
/* 80C8C5E4 */ void init_modeUpMove();
/* 80C8C68C */ void modeUpMove();
/* 80C8C7F8 */ void init_modeDownMoveInit();
/* 80C8C81C */ void modeDownMoveInit();
/* 80C8C860 */ void init_modeDownMove();
/* 80C8C8E4 */ void modeDownMove();
/* 80C8C994 */ void Draw();
/* 80C8CA78 */ void Delete();
private:
/* 0x568 */ u8 field_0x568[0x5c8 - 0x568];
/* 80C8BE64 */ virtual int CreateHeap();
/* 80C8C0DC */ virtual int Execute(Mtx**);
/* 80C8C994 */ virtual int Draw();
/* 80C8CA78 */ virtual int Delete();
u8 getModelType() { return current.angle.x & 0xFF; }
u8 getTimer() { return (current.angle.x & 0xFF00) >> 8; }
int getSw() { return fopAcM_GetParamBit(this, 0, 8); }
int getMoveHeight() { return fopAcM_GetParamBit(this, 16, 8); }
int getMoveSpeed() { return fopAcM_GetParamBit(this, 24, 8); }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ u8 mMode;
/* 0x5B0 */ f32 field_0x5b0;
/* 0x5B4 */ f32 field_0x5b4;
/* 0x5B8 */ u8 field_0x5b8;
/* 0x5B9 */ u8 mTimer;
/* 0x5BA */ u8 field_0x5ba;
/* 0x5BB */ u8 mModelType;
/* 0x5BC */ u8 mIsSwitch;
/* 0x5BD */ u8 mColorR;
/* 0x5BE */ u8 mColorG;
/* 0x5BF */ u8 mColorB;
/* 0x5C0 */ f32 field_0x5c0;
/* 0x5C4 */ u8 field_0x5c4;
/* 0x5C5 */ u8 field_0x5c5;
};
STATIC_ASSERT(sizeof(daUdFloor_c) == 0x5c8);
class daUdFloor_HIO_c {
public:
/* 80C8BD0C */ daUdFloor_HIO_c();
/* 80C8CB44 */ ~daUdFloor_HIO_c();
};
#endif /* D_A_OBJ_LV8UDFLOOR_H */
+16 -14
View File
@@ -2,6 +2,7 @@
#define D_A_OBJ_LV9SWSHUTTER_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,12 +12,10 @@
* @details
*
*/
class daLv9SwShutter_c : public fopAc_ac_c {
class daLv9SwShutter_c : public dBgS_MoveBgActor {
public:
/* 80C8CF38 */ void setBaseMtx();
/* 80C8CFD4 */ void CreateHeap();
/* 80C8D040 */ void create();
/* 80C8D168 */ void Execute(Mtx**);
/* 80C8D040 */ int create();
/* 80C8D1B8 */ void moveShutter();
/* 80C8D2BC */ void init_modeWait();
/* 80C8D2C8 */ void modeWait();
@@ -24,20 +23,23 @@ public:
/* 80C8D2D8 */ void modeOpen();
/* 80C8D440 */ void init_modeClose();
/* 80C8D458 */ void modeClose();
/* 80C8D5D0 */ void Draw();
/* 80C8D674 */ void Delete();
/* 80C8CFD4 */ virtual int CreateHeap();
/* 80C8D168 */ virtual int Execute(Mtx**);
/* 80C8D5D0 */ virtual int Draw();
/* 80C8D674 */ virtual int Delete();
int getSw() { return fopAcM_GetParamBit(this, 0, 8); }
private:
/* 0x568 */ u8 field_0x568[0x5b4 - 0x568];
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ u8 mMode;
/* 0x5AD */ u8 mSwbit;
/* 0x5AE */ u8 mIsSwitch;
/* 0x5B0 */ f32 field_0x5b0;
};
STATIC_ASSERT(sizeof(daLv9SwShutter_c) == 0x5b4);
class daLv9SwShutter_HIO_c {
public:
/* 80C8CEAC */ daLv9SwShutter_HIO_c();
/* 80C8D730 */ ~daLv9SwShutter_HIO_c();
};
#endif /* D_A_OBJ_LV9SWSHUTTER_H */
+1 -1
View File
@@ -42,7 +42,7 @@ enum dCcD_Material {
dCcD_MTRL_ICE,
dCcD_MTRL_WIND,
dCcD_MTRL_LIGHT,
dCcD_MTRL_UNK_5,
dCcD_MTRL_ELECTRIC,
dCcD_MTRL_UNK_6,
dCcD_MTRL_UNK_7,
};
+4 -4
View File
@@ -669,7 +669,7 @@ BOOL daAlink_c::checkDamageAction() {
}
}
if (at_mtrl == dCcD_MTRL_UNK_5) {
if (at_mtrl == dCcD_MTRL_ELECTRIC) {
dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
} else if (checkHugeAttack(at_spl)) {
dComIfGp_getVibration().StartShock(8, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
@@ -681,7 +681,7 @@ BOOL daAlink_c::checkDamageAction() {
setDamagePoint(dmg, at_mtrl == dCcD_MTRL_FIRE || at_mtrl == dCcD_MTRL_ICE, TRUE, 0);
if (armor_no_dmg && at_mtrl != dCcD_MTRL_UNK_5 && at_mtrl != dCcD_MTRL_ICE) {
if (armor_no_dmg && at_mtrl != dCcD_MTRL_ELECTRIC && at_mtrl != dCcD_MTRL_ICE) {
setGuardSe(var_r29);
} else if (at_mtrl == dCcD_MTRL_FIRE) {
seStartOnlyReverb(Z2SE_AL_BURN_START);
@@ -699,10 +699,10 @@ BOOL daAlink_c::checkDamageAction() {
voiceStart(Z2SE_AL_V_DAMAGE_S);
seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL);
}
} else if (at_mtrl == dCcD_MTRL_UNK_5 && !checkSpecialHorseRide()) {
} else if (at_mtrl == dCcD_MTRL_ELECTRIC && !checkSpecialHorseRide()) {
return procCoElecDamageInit(var_r29->GetTgHitAc(), var_r29, at_spl);
} else if (checkReinRide()) {
if (at_mtrl == dCcD_MTRL_UNK_5) {
if (at_mtrl == dCcD_MTRL_ELECTRIC) {
return procCoLargeDamageInit(-1, 1, 0, 0, var_r29, 0);
}
+1 -1
View File
@@ -1483,7 +1483,7 @@ static int daE_HZELDA_Create(fopAc_ac_c* i_this) {
a_this->mBallSphAt.Set(ball_at_sph_src);
a_this->mBallSphAt.SetStts(&a_this->field_0xd3c);
a_this->mBallSphAt.SetAtMtrl(dCcD_MTRL_UNK_5);
a_this->mBallSphAt.SetAtMtrl(dCcD_MTRL_ELECTRIC);
static dCcD_SrcSph ball_tg_sph_src = {
{
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -364,7 +364,7 @@ static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_
if (atn_actor != NULL) {
cXyz sp28 = atn_actor->eyePos;
if (fabsf(sp28.y - camera_p->lookat.eye.y) < 400.0f) {
if (std::fabs(sp28.y - camera_p->lookat.eye.y) < 400.0f) {
sp28.y = camera_p->lookat.eye.y;
}