mirror of https://github.com/zeldaret/tp.git
d_a_obj_beamos / d_a_e_wb WIP (#2620)
* WIP * daE_WB_Draw * checkpoint * more matches * checkpoint * fixes * fix debug build * fix daObjBm_c alignment * fixes for luz * fixes for hatal * manual spacing changes * run clang-format * move header back
This commit is contained in:
parent
2036d9c34f
commit
abf5f59f0c
|
|
@ -3639,6 +3639,9 @@ public:
|
|||
BOOL checkCanoeRideOwn(const fopAc_ac_c* param_0) const {
|
||||
return checkCanoeRide() && mRideAcKeep.getActorConst() == param_0;
|
||||
}
|
||||
BOOL checkBoarRideOwn(const fopAc_ac_c* i_actorP) const {
|
||||
return checkBoarRide() && mRideAcKeep.getActorConst() == i_actorP;
|
||||
}
|
||||
bool checkWolfDashMode() const { return checkNoResetFlg1(FLG1_DASH_MODE); }
|
||||
bool checkWolfLieWaterIn() const { return mWaterY > current.pos.y + 20.5f; }
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class daB_GG_c
|
||||
* @brief Aeralfos
|
||||
* @brief Aeralfos (Gargoyle)
|
||||
*
|
||||
* @details City in the Sky dungeon mini-boss.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_bs_class
|
||||
* @brief Stalkin
|
||||
* @brief Stalkin (Baby Stal)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_cr_class
|
||||
* @brief Bombskit
|
||||
* @brief Bombskit (Crazy Runner)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ struct chain_s {
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_fm_class
|
||||
* @brief Fyrus
|
||||
* @brief Fyrus (Fire Man)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_gob_class
|
||||
* @brief Dangoro
|
||||
* @brief Dangoro (Goron Boss)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_is_class
|
||||
* @brief Armos Titan
|
||||
* @brief Armos Titan (Idelia Statue)
|
||||
*
|
||||
* @details Armos Titans are enemies from early, unreleased versions of the game.
|
||||
* @details Armos Titans are enemies from early, unreleased versions of the game.
|
||||
* The name Idelia Statue seems like it might be a reference to the anime Powered Armor Dorvack.
|
||||
*
|
||||
*/
|
||||
class e_is_class {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class daE_KK_c
|
||||
* @brief Chilfos
|
||||
* @brief Chilfos (Koori no Kenshi)
|
||||
*
|
||||
* @details Enemy - Ice Knight
|
||||
*
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_mb_class
|
||||
* @brief Ook (Diababa Fight)
|
||||
* @brief Ook - Diababa Fight (Monkey Boomerang)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_rb_class
|
||||
* @brief Leever
|
||||
* @brief Leever (Riiba)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ public:
|
|||
/* 0x1297 */ s8 field_0x1297;
|
||||
/* 0x1298 */ s8 field_0x1298;
|
||||
/* 0x1299 */ u8 field_0x1299;
|
||||
/* 0x129A */ s8 field_0x129a;
|
||||
/* 0x129A */ s8 mBossMode; // 1: Eldin Field, 2 Eldin Bridge, 3 Lake Hylia Bridge, 4 ???
|
||||
/* 0x129B */ u8 field_0x129b;
|
||||
/* 0x129C */ s8 field_0x129c;
|
||||
/* 0x12A0 */ int field_0x12a0;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ struct th_ke_s {
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_th_class
|
||||
* @brief Darkhammer
|
||||
* @brief Darkhammer (Tekkyuuhei)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -6,17 +6,68 @@
|
|||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
|
||||
enum daE_wb_ACT {
|
||||
/* 0x00 */ ACT_WAIT,
|
||||
/* 0x15 */ ACT_S_DAMAGE = 0x15,
|
||||
/* 0x65 */ ACT_PL_RIDE = 0x65,
|
||||
/* 0x67 */ ACT_PL_RIDE_NOW = 0x67,
|
||||
// copypasta, fix when actual names known
|
||||
enum daE_WB_ANM {
|
||||
ANM_APPEAR = 7,
|
||||
ANM_ATTACK,
|
||||
ANM_ATTACK_A,
|
||||
ANM_ATTACK_B,
|
||||
ANM_ATTACK_C,
|
||||
ANM_BOMB_DAMAGE,
|
||||
ANM_CORE_DAMAGE,
|
||||
ANM_DAMAGE_WAIT,
|
||||
ANM_DEAD,
|
||||
ANM_LOOK_M,
|
||||
ANM_NO_DAMAGE,
|
||||
ANM_RETURN_01,
|
||||
ANM_RETURN_02,
|
||||
ANM_RUNAWAY,
|
||||
ANM_TEST_MOTION,
|
||||
ANM_TODOME,
|
||||
ANM_WAIT_01,
|
||||
};
|
||||
|
||||
enum daE_WB_ACT {
|
||||
/* 0x00 */ ACT_WAIT,
|
||||
/* 0x01 */ ACT_WAIT2,
|
||||
/* 0x04 */ ACT_RIDE = 0x04,
|
||||
/* 0x05 */ ACT_F_WAIT,
|
||||
/* 0x06 */ ACT_C_F_RUN,
|
||||
/* 0x07 */ ACT_A_RUN,
|
||||
/* 0x08 */ ACT_B_WAIT,
|
||||
/* 0x09 */ ACT_B_WAIT2,
|
||||
/* 0x0A */ ACT_B_RUN,
|
||||
/* 0x0B */ ACT_B_RUN2,
|
||||
/* 0x0F */ ACT_B_IKKI = 0x0F,
|
||||
/* 0x10 */ ACT_B_IKKI_END,
|
||||
/* 0x11 */ ACT_B_IKKI2,
|
||||
/* 0x12 */ ACT_B_IKKI2_END,
|
||||
/* 0x13 */ ACT_B_LV9_END,
|
||||
/* 0x15 */ ACT_S_DAMAGE = 0x15,
|
||||
/* 0x16 */ ACT_DAMAGE,
|
||||
/* 0x17 */ ACT_BG_DAMAGE,
|
||||
/* 0x18 */ ACT_LR_DAMAGE,
|
||||
/* 0x1E */ ACT_KIBA_START = 0x1E,
|
||||
/* 0x1F */ ACT_KIBA_END,
|
||||
/* 0x32 */ ACT_EVENT = 0x32,
|
||||
/* 0x65 */ ACT_PL_RIDE = 0x65,
|
||||
/* 0x66 */ ACT_PL_RIDE2,
|
||||
/* 0x67 */ ACT_PL_RIDE_NOW,
|
||||
/* 0x6E */ ACT_CRV_WAIT = 0x6E,
|
||||
};
|
||||
|
||||
struct himo_s {
|
||||
/* 807E1CCC */ ~himo_s();
|
||||
/* 807E1D2C */ himo_s();
|
||||
|
||||
/* 0x0 */ cXyz field_0x0[16];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_wb_class
|
||||
* @brief Bullbo
|
||||
* @brief Bullbo (Wild Boar)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
@ -49,19 +100,19 @@ public:
|
|||
|
||||
public:
|
||||
/* 0x05AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x05B4 */ s16 field_0x5b4;
|
||||
/* 0x05B4 */ s16 mActionMode;
|
||||
/* 0x05B8 */ char* mResName;
|
||||
/* 0x05BC */ u8 field_0x5bc;
|
||||
/* 0x05BD */ u8 field_0x5bd;
|
||||
/* 0x05BC */ u8 mParam;
|
||||
/* 0x05BD */ u8 mParam2;
|
||||
/* 0x05BE */ u8 field_0x5be;
|
||||
/* 0x05BF */ bool field_0x5bf;
|
||||
/* 0x05C0 */ u8 field_0x5c0;
|
||||
/* 0x05C4 */ cXyz field_0x5c4;
|
||||
/* 0x05D0 */ cXyz field_0x5d0;
|
||||
/* 0x05DC */ s16 field_0x5dc;
|
||||
/* 0x05DC */ s16 mAngleTarget;
|
||||
/* 0x05DE */ s16 field_0x5de;
|
||||
/* 0x05E0 */ mDoExt_McaMorfSO* mpModelMorf;
|
||||
/* 0x05E4 */ f32 field_0x5e4;
|
||||
/* 0x05E4 */ f32 mPlaySpeed;
|
||||
/* 0x05E8 */ int mAnmID;
|
||||
/* 0x05EC */ Z2CreatureRide mZ2Ride;
|
||||
/* 0x0688 */ int field_0x688;
|
||||
|
|
@ -69,13 +120,14 @@ public:
|
|||
/* 0x068E */ s16 field_0x68e;
|
||||
/* 0x0690 */ s16 mActionID;
|
||||
/* 0x0692 */ u16 field_0x692;
|
||||
/* 0x0694 */ u32 field_0x694;
|
||||
/* 0x0698 */ s16 field_0x698[4];
|
||||
/* 0x0694 */ int mShadowKey;
|
||||
/* 0x0698 */ s16 field_0x698;
|
||||
/* 0x069A */ s16 field_0x69a;
|
||||
/* 0x069C */ s16 field_0x69c;
|
||||
/* 0x069E */ s16 field_0x69e;
|
||||
/* 0x06A0 */ s16 field_0x6a0;
|
||||
/* 0x06A2 */ u8 field_0x6a2[0x6ae - 0x6a2];
|
||||
/* 0x06AE */ s16 field_0x6ae;
|
||||
/* 0x06B0 */ s16 field_0x6b0;
|
||||
/* 0x06B2 */ s16 field_0x6b2;
|
||||
/* 0x06AE */ csXyz field_0x6ae;
|
||||
/* 0x06B4 */ u8 field_0x6b4[0x6b6 - 0x6b4];
|
||||
/* 0x06B6 */ s16 field_0x6b6;
|
||||
/* 0x06B8 */ u8 field_0x6b8[0x6ba - 0x6b8];
|
||||
|
|
@ -84,17 +136,22 @@ public:
|
|||
/* 0x06BD */ u8 field_0x6bd;
|
||||
/* 0x06BE */ u16 field_0x6be;
|
||||
/* 0x06C0 */ s8 field_0x6c0;
|
||||
/* 0x06C4 */ cXyz field_0x6c4;
|
||||
/* 0x06C4 */ f32 field_0x6c4;
|
||||
/* 0x06C8 */ int mBPathIdx; // The b_path indexer
|
||||
/* 0x06CC */ int mBPathIdxIter; // The amount to change the b_path indexer by
|
||||
/* 0x06D0 */ s16 field_0x6d0;
|
||||
/* 0x06D2 */ s16 field_0x6d2;
|
||||
/* 0x06D2 */ s16 mTargetAngleStep;
|
||||
/* 0x06D4 */ s16 field_0x6d4;
|
||||
/* 0x06D6 */ s16 field_0x6d6;
|
||||
/* 0x06D8 */ u8 field_0x6d8[0x6da - 0x6d8];
|
||||
/* 0x06D8 */ s16 field_0x6d8;
|
||||
/* 0x06DA */ s16 field_0x6da;
|
||||
/* 0x06DC */ s16 field_0x6dc;
|
||||
/* 0x06DE */ u8 field_0x6de[0x6e4 - 0x6de];
|
||||
/* 0x06DE */ s16 field_0x6de;
|
||||
/* 0x06E0 */ s16 field_0x6e0;
|
||||
/* 0x06E2 */ s16 field_0x6e2;
|
||||
/* 0x06E4 */ u8 field_0x6e4;
|
||||
/* 0x06E5 */ u8 field_0x6e5[0x79a - 0x6e5];
|
||||
/* 0x06E5 */ u8 field_0x6e5[0x6ec - 0x6e5];
|
||||
/* 0x06EC */ csXyz field_0x6ec[0x1d];
|
||||
/* 0x079A */ s16 field_0x79a;
|
||||
/* 0x079C */ u8 field_0x79c;
|
||||
/* 0x079D */ s8 field_0x79d;
|
||||
|
|
@ -107,7 +164,7 @@ public:
|
|||
/* 0x07A7 */ s8 field_0x7a7;
|
||||
/* 0x07A8 */ f32 field_0x7a8;
|
||||
/* 0x07AC */ dBgS_AcchCir field_0x7ac;
|
||||
/* 0x07EC */ dBgS_Acch field_0x7ec;
|
||||
/* 0x07EC */ dBgS_ObjAcch mAcch;
|
||||
/* 0x09C4 */ dCcD_Stts field_0x9c4;
|
||||
/* 0x0A00 */ dCcD_Sph field_0xa00[7];
|
||||
/* 0x1288 */ dCcD_Sph field_0x1288;
|
||||
|
|
@ -134,15 +191,13 @@ public:
|
|||
/* 0x142F */ s8 field_0x142f;
|
||||
/* 0x1430 */ s8 field_0x1430;
|
||||
/* 0x1432 */ s16 field_0x1432;
|
||||
/* 0x1434 */ fpc_ProcID field_0x1434; // Some actor ID
|
||||
/* 0x1438 */ cXyz field_0x1438;
|
||||
/* 0x1444 */ cXyz field_0x1444;
|
||||
/* 0x1450 */ u8 field_0x1450[0x15d0 - 0x1450];
|
||||
/* 0x15D0 */ mDoExt_3DlineMat1_c field_0x15d0;
|
||||
/* 0x160C */ mDoExt_3DlineMat1_c field_0x160c;
|
||||
/* 0x1434 */ fpc_ProcID field_0x1434; // Rider actor ID?
|
||||
/* 0x1438 */ cXyz field_0x1438[2];
|
||||
/* 0x1450 */ himo_s field_0x1450[2];
|
||||
/* 0x15D0 */ mDoExt_3DlineMat1_c field_0x15d0[2];
|
||||
/* 0x1648 */ mDoExt_3DlineMat1_c field_0x1648;
|
||||
/* 0x1684 */ f32 field_0x1684;
|
||||
/* 0x1688 */ u8 field_0x1688;
|
||||
/* 0x1688 */ s16 field_0x1688;
|
||||
/* 0x168A */ u16 field_0x168a;
|
||||
/* 0x168C */ f32 field_0x168c;
|
||||
/* 0x1690 */ f32 field_0x1690;
|
||||
|
|
@ -180,15 +235,39 @@ public:
|
|||
|
||||
STATIC_ASSERT(sizeof(e_wb_class) == 0x17EC);
|
||||
|
||||
struct himo_s {
|
||||
/* 807E1CCC */ ~himo_s();
|
||||
/* 807E1D2C */ himo_s();
|
||||
class daE_WB_HIO_c : public JORReflexible {
|
||||
public:
|
||||
/* 807D248C */ daE_WB_HIO_c();
|
||||
/* 807E20DC */ virtual ~daE_WB_HIO_c() {};
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
/* 0x00 */ // vtable
|
||||
/* 0x04 */ s8 field_0x04;
|
||||
/* 0x08 */ f32 mBaseSize;
|
||||
/* 0x0C */ f32 mLeaderSizeRatio;
|
||||
/* 0x10 */ f32 mMovementSpeed;
|
||||
/* 0x14 */ f32 mMaxSpeed;
|
||||
/* 0x18 */ f32 mCalvaryBattleMaxSpeed;
|
||||
/* 0x1C */ f32 mNormalSpeedVi;
|
||||
/* 0x20 */ f32 mMediumSpeedVi;
|
||||
/* 0x24 */ f32 mMaxSpeedVi;
|
||||
/* 0x28 */ f32 mLeaderWalkingSpeed;
|
||||
/* 0x2C */ f32 mLeaderMaxSpeed;
|
||||
/* 0x30 */ f32 mLeaderCalvaryBattleMaxSpeed;
|
||||
/* 0x34 */ f32 mSingleRiderSpeed;
|
||||
/* 0x38 */ f32 mPlayerRecognitionDistance;
|
||||
/* 0x3C */ f32 mPlayerMountedMaxSpeed;
|
||||
/* 0x40 */ f32 mPlayerMountedMotionPlaybackSpeed;
|
||||
/* 0x44 */ s16 mPlayerMountedDashTime;
|
||||
/* 0x48 */ f32 mSearchIgnoreDistance1;
|
||||
/* 0x4C */ f32 mSearchIgnoreDistance2;
|
||||
/* 0x50 */ f32 mGuidanceDisplayDistance1;
|
||||
/* 0x54 */ f32 mGuidanceDisplayDistance2;
|
||||
/* 0x58 */ u8 field_0x58;
|
||||
/* 0x59 */ u8 mNoReins;
|
||||
};
|
||||
|
||||
class daE_WB_HIO_c {
|
||||
/* 807D248C */ daE_WB_HIO_c();
|
||||
/* 807E20DC */ ~daE_WB_HIO_c();
|
||||
};
|
||||
STATIC_ASSERT(sizeof(daE_WB_HIO_c) == 0x5C);
|
||||
|
||||
|
||||
#endif /* D_A_E_WB_H */
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "Z2AudioLib/Z2Creature.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
|
|
@ -37,7 +37,7 @@ enum daE_YK_Action {
|
|||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_yk_class
|
||||
* @brief Twilight Keese
|
||||
* @brief Twilight Keese (Yami Keese)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class npc_ks_class
|
||||
* @brief Monkey NPC
|
||||
* @brief Monkey NPC (Kozaru)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ class J3DModel;
|
|||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNPC_TK_c
|
||||
* @brief Hawk
|
||||
* @brief Hawk (Taka)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-objects
|
||||
* @class daObjBATTA_c
|
||||
* @brief Insect - Grasshopper
|
||||
* @brief Insect - Grasshopper (Batta)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
#define D_A_OBJ_BEMOS_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
#include "d/d_bg_w_base.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-objects
|
||||
|
|
@ -11,7 +15,7 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjBm_c : public fopAc_ac_c {
|
||||
class daObjBm_c : public dBgS_MoveBgActor {
|
||||
public:
|
||||
class BgcSrc_c {};
|
||||
|
||||
|
|
@ -28,6 +32,16 @@ public:
|
|||
static u8 M_wall_work[2576];
|
||||
};
|
||||
|
||||
u32 getSwNo3() { return fopAcM_GetParamBit(this, 16,8); }
|
||||
u32 getMoveType() { return fopAcM_GetParamBit(this, 24, 4); }
|
||||
s16 getHeadJoint() { return mHeadJntNo; }
|
||||
s16 getBigGearJoint() { return mBigGearJntNo; }
|
||||
s16 getSmallGear0Joint() { return mSmallGear0JntNo; }
|
||||
s16 getSmallGear1Joint() { return mSmallGear1JntNo; }
|
||||
s16 getSmallGear2Joint() { return mSmallGear2JntNo; }
|
||||
s8 getSwNo() { return fopAcM_GetParamBit(this,8,8);}
|
||||
s8 getSwNo2() { return fopAcM_GetParamBit(this,0,8);}
|
||||
|
||||
/* 80BAE36C */ void PPCallBack(fopAc_ac_c*, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel);
|
||||
/* 80BAE5FC */ void initBaseMtx();
|
||||
/* 80BAE68C */ void setBaseMtx();
|
||||
|
|
@ -76,8 +90,64 @@ public:
|
|||
/* 80BB2C8C */ int Delete();
|
||||
|
||||
static u8 const M_dir_base[8];
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x1258 - 0x568];
|
||||
// private:
|
||||
/* 0x05A0 */ u8 field_0x5a0[0x8];
|
||||
/* 0x05A8 */ J3DModel* mpModel;
|
||||
/* 0x05AC */ mDoExt_brkAnm* mpBrkAnm;
|
||||
/* 0x05B0 */ mDoExt_baseAnm* mpBaseAnm;
|
||||
/* 0x05B4 */ J3DModel* mpModel2;
|
||||
/* 0x05B8 */ u8 field_0x5b8[0xa];
|
||||
/* 0x05C4 */ J3DModel* mpModel3;
|
||||
/* 0x05C8 */ mDoExt_baseAnm* mpBaseAnm2;
|
||||
/* 0x05CC */ u8 field_0x5cc[0x7e4 - 0x5cc];
|
||||
/* 0x07E4 */ dCcD_Stts mStts;
|
||||
/* 0x0820 */ dCcD_Sph mSph;
|
||||
/* 0x0958 */ dCcD_Cps mCps;
|
||||
/* 0x0A9c */ dCcD_Cyl mCyl[4];
|
||||
/* 0x0F8C */ s16 mHeadJntNo;
|
||||
/* 0x0F8E */ s16 mBigGearJntNo;
|
||||
/* 0x0F90 */ s16 mSmallGear0JntNo;
|
||||
/* 0x0F92 */ s16 mSmallGear1JntNo;
|
||||
/* 0x0F94 */ s16 mSmallGear2JntNo;
|
||||
/* 0x0F96 */ s16 field_0xf96;
|
||||
/* 0x0F96 */ s16 field_0xf98;
|
||||
/* 0x0F9A */ s16 field_0xf9a;
|
||||
/* 0x0F9C */ s16 field_0xf9c;
|
||||
/* 0x0F9E */ s16 field_0xf9e;
|
||||
/* 0x0FA0 */ s16 field_0xfa0;
|
||||
/* 0x0FA2 */ s16 field_0xfa2;
|
||||
/* 0x0FA4 */ s16 field_0xfa4;
|
||||
/* 0x0FA6 */ s16 field_0xfa6;
|
||||
/* 0x0FA8 */ u8 field_0xfa8[0xfb4 - 0xfa8];
|
||||
/* 0x0FB4 */ J3DMaterial* mpMaterial;
|
||||
/* 0x0FB8 */ cXyz field_0xfb8;
|
||||
/* 0x0FC4 */ csXyz field_0xfc4;
|
||||
/* 0x0FCA */ u8 field_0xfca[2];
|
||||
/* 0x0FCC */ u32 field_0xfcc;
|
||||
/* 0x0FD0 */ u8 field_0xfd0[0xff0 - 0xfd0];
|
||||
/* 0x0FF0 */ f32 field_0xff0;
|
||||
/* 0x0FF4 */ u8 field_0xff4[3];
|
||||
/* 0x0FF7 */ u8 field_0xff7;
|
||||
/* 0x0FF8 */ f32 field_0xff8;
|
||||
/* 0x0FFC */ f32 field_0xffc;
|
||||
/* 0x1000 */ f32 field_0x1000;
|
||||
/* 0x1004 */ u8 field_0x1004[0x100c - 0x1004];
|
||||
/* 0x100C */ f32 field_0x100c;
|
||||
/* 0x1010 */ u8 field_0x1010[0x1038 - 0x1010];
|
||||
/* 0x1038 */ u8 field_0x1038;
|
||||
/* 0x1039 */ u8 field_0x1039;
|
||||
/* 0x103A */ u8 field_0x103a[0x10a0 - 0x103a];
|
||||
/* 0x10A0 */ cXyz field_0x10a0;
|
||||
/* 0x10AC */ u8 field_0x10ac[0x10c0 - 0x10ac];
|
||||
/* 0x10C0 */ int field_0x10c0;
|
||||
/* 0x10C4 */ s16 field_0x10c4[4];
|
||||
/* 0x10D4 */ u8 field_0x10cc[0x10d2 - 0x10cc];
|
||||
/* 0x10D2 */ u8 field_0x10d2;
|
||||
/* 0x10D3 */ u8 field_0x10d3;
|
||||
/* 0x10D4 */ u8 field_0x10d4[0x10e8 - 0x10d4];
|
||||
/* 0x10E8 */ f32 field_0x10e8;
|
||||
/* 0x10EC */ f32 field_0x10ec;
|
||||
/* 0x10F0 */ u8 field_0x10f0[0x1258 - 0x10f0];
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjBm_c) == 0x1258);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
/**
|
||||
* @ingroup actors-objects
|
||||
* @class daObjKAM_c
|
||||
* @brief Insect - Mantis
|
||||
* @brief Insect - Mantis (Kamakiri)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
/**
|
||||
* @ingroup actors-objects
|
||||
* @class daObj_Kanban2_c
|
||||
* @brief Sign 2
|
||||
* @brief Sign 2 (Shredded Sign)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
/**
|
||||
* @ingroup actors-objects
|
||||
* @class daObjKAT_c
|
||||
* @brief Insect - Snail
|
||||
* @brief Insect - Snail (Katatsumuri)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-objects
|
||||
* @class obj_so_class
|
||||
* @brief Monkey Cage
|
||||
* @brief Monkey Cage (Saru Ori)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/**
|
||||
* @ingroup actors-objects
|
||||
* @class daObjTOMBO_c
|
||||
* @brief Insect - Dragonfly
|
||||
* @brief Insect - Dragonfly (Tonbo)
|
||||
*
|
||||
* @details
|
||||
*
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ static fopAc_ac_c* get_pla(fopAc_ac_c* a_this) {
|
|||
/* 80504BD4-80504D28 000254 0154+00 36/36 0/0 0/0 .text anm_init__FP10e_rd_classifUcf */
|
||||
static void anm_init(e_rd_class* i_this, int i_anmID, f32 i_morf, u8 i_mode, f32 i_speed) {
|
||||
if (i_this->field_0x680 == 0) {
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
if (i_anmID < 73) {
|
||||
i_this->mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_rdb", i_anmID),
|
||||
i_mode, i_morf, i_speed, 0.0f, -1.0f);
|
||||
|
|
@ -425,7 +425,7 @@ static int daE_RD_Draw(e_rd_class* i_this) {
|
|||
g_env_light.settingTevStruct(0, &a_this->current.pos, &a_this->tevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(model, &a_this->tevStr);
|
||||
|
||||
if (i_this->field_0x129a == 0 && i_this->field_0x968 != 0) {
|
||||
if (i_this->mBossMode == 0 && i_this->field_0x968 != 0) {
|
||||
modelData = model->getModelData();
|
||||
for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
|
||||
matNode_p = modelData->getMaterialNodePointer(i);
|
||||
|
|
@ -435,7 +435,7 @@ static int daE_RD_Draw(e_rd_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 3) {
|
||||
modelData = model->getModelData();
|
||||
matNode_p = modelData->getMaterialNodePointer(3);
|
||||
J3DShape* shape = matNode_p->getShape();
|
||||
|
|
@ -446,7 +446,7 @@ static int daE_RD_Draw(e_rd_class* i_this) {
|
|||
|
||||
i_this->mpModelMorf->entryDL();
|
||||
|
||||
if (i_this->field_0x129a == 0 && i_this->field_0x968 != 0) {
|
||||
if (i_this->mBossMode == 0 && i_this->field_0x968 != 0) {
|
||||
modelData = model->getModelData();
|
||||
for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
|
||||
matNode_p = modelData->getMaterialNodePointer(i);
|
||||
|
|
@ -469,7 +469,7 @@ static int daE_RD_Draw(e_rd_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
for (int i = 0; i < 14; i++) {
|
||||
if (i_this->mpBossArmorParts[i] != NULL) {
|
||||
g_env_light.setLightTevColorType_MAJI(i_this->mpBossArmorParts[i], &a_this->tevStr);
|
||||
|
|
@ -684,18 +684,18 @@ static void ride_off(e_rd_class* i_this) {
|
|||
bullbo->mActionID = 0;
|
||||
}
|
||||
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
} else if (bullbo->mActionID == 21) {
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
} else if ((bullbo->field_0x6be & 1) == 0) {
|
||||
if (bullbo->mActionID == 6 && (bullbo->field_0x5b4 == 2 || bullbo->field_0x5b4 == 3)) {
|
||||
bullbo->field_0x5b4 = 1;
|
||||
if (bullbo->mActionID == 6 && (bullbo->mActionMode == 2 || bullbo->mActionMode == 3)) {
|
||||
bullbo->mActionMode = 1;
|
||||
} else {
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
}
|
||||
|
||||
bullbo->mActionID = 7;
|
||||
bullbo->field_0x698[1] = cM_rndF(30.0f) + 80.0f;
|
||||
bullbo->field_0x69a = cM_rndF(30.0f) + 80.0f;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -718,7 +718,7 @@ static void* s_wb_sub(void* i_actor, void* i_data) {
|
|||
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_WB && ((e_wb_class*)i_actor)->mActionID != ACTION_DROP &&
|
||||
((e_wb_class*)i_actor)->mActionID != ACTION_DAMAGE && ((e_wb_class*)i_actor)->mActionID != ACTION_A_DAMAGE && ((e_wb_class*)i_actor)->mActionID != ACTION_STAND) {
|
||||
e_rd_class* i_this = (e_rd_class*)i_data;
|
||||
if (i_this->field_0x129a == ((e_wb_class*)i_actor)->field_0x79d &&
|
||||
if (i_this->mBossMode == ((e_wb_class*)i_actor)->field_0x79d &&
|
||||
(data_80519230 != 0 || (((e_wb_class*)i_actor)->field_0x6be & 3) != 3) && target_info_count < 10) {
|
||||
target_info[target_info_count] = (fopAc_ac_c*)i_actor;
|
||||
target_info_count++;
|
||||
|
|
@ -1835,7 +1835,7 @@ static void e_rd_wb_search(e_rd_class* i_this) {
|
|||
} else {
|
||||
if (i_this->mMode >= 2 && bullbo->mActionID != 1) {
|
||||
bullbo->mActionID = 1;
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
}
|
||||
|
||||
switch (i_this->mMode) {
|
||||
|
|
@ -1977,7 +1977,7 @@ static void e_rd_wb_search(e_rd_class* i_this) {
|
|||
i_this->mAction = ACTION_WB_RIDE;
|
||||
i_this->mMode = 0;
|
||||
bullbo->mActionID = 4;
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2006,29 +2006,29 @@ static void e_rd_wb_ride(e_rd_class* i_this) {
|
|||
switch (i_this->mMode) {
|
||||
case 0:
|
||||
i_this->mMode = 1;
|
||||
if (i_this->field_0x129a == 0) {
|
||||
if (i_this->mBossMode == 0) {
|
||||
anm_init(i_this, BCK_RD_JUMP_C, 1.0f, 0, 1.0f);
|
||||
}
|
||||
// fallthrough
|
||||
case 1:
|
||||
if (i_this->mpModelMorf->isStop() || i_this->field_0x129a != 0) {
|
||||
if (i_this->field_0x129a != 0) {
|
||||
bullbo->field_0x5b4 = 0;
|
||||
if (i_this->mpModelMorf->isStop() || i_this->mBossMode != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
bullbo->mActionMode = 0;
|
||||
i_this->mMode = 0;
|
||||
|
||||
if (i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 3) {
|
||||
bullbo->mActionID = 17;
|
||||
// Hyrule Field
|
||||
if (strcmp(dComIfGp_getStartStageName(), "F_SP121") == 0) {
|
||||
bullbo->field_0x5b4 = -100;
|
||||
bullbo->mActionMode = -100;
|
||||
i_this->mAction = ACTION_IKKI2_START;
|
||||
} else {
|
||||
i_this->mAction = ACTION_WB_RUN;
|
||||
}
|
||||
} else if (i_this->field_0x129a == 2) {
|
||||
} else if (i_this->mBossMode == 2) {
|
||||
bullbo->mActionID = 15;
|
||||
i_this->mAction = ACTION_WB_RUN;
|
||||
} else if (i_this->field_0x129a == 4) {
|
||||
} else if (i_this->mBossMode == 4) {
|
||||
bullbo->mActionID = 19;
|
||||
i_this->mAction = ACTION_LV9_END;
|
||||
} else if (cDmr_SkipInfo == 0) {
|
||||
|
|
@ -2042,7 +2042,7 @@ static void e_rd_wb_ride(e_rd_class* i_this) {
|
|||
}
|
||||
} else {
|
||||
bullbo->mActionID = 6;
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
i_this->mAction = ACTION_WB_RUN;
|
||||
i_this->mMode = 0;
|
||||
}
|
||||
|
|
@ -2324,7 +2324,7 @@ static void e_rd_wb_run_B(e_rd_class* i_this) {
|
|||
dAttention_c* attention;
|
||||
|
||||
if (bullbo != NULL) {
|
||||
if (i_this->field_0x129a == 2 || i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 2 || i_this->mBossMode == 3) {
|
||||
fopAcM_OffStatus(a_this, 0);
|
||||
a_this->attention_info.flags = 0;
|
||||
}
|
||||
|
|
@ -2385,11 +2385,13 @@ static void e_rd_wb_run_B(e_rd_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (fpcM_Search(s_wbrun_sub, i_this) != NULL && i_this->field_0x990[3] == 0) {
|
||||
i_this->field_0x6c2 = 1;
|
||||
i_this->field_0x990[3] = cM_rndF(100.0f) + 200.0f;
|
||||
}
|
||||
|
||||
// check if we need to jump a fence
|
||||
if ((bullbo->field_0x6be & 0x100) != 0) {
|
||||
i_this->mAction = ACTION_WB_BJUMP;
|
||||
i_this->mMode = 0;
|
||||
|
|
@ -3791,7 +3793,7 @@ static void e_rd_ikki_end(e_rd_class* i_this) {
|
|||
bullbo->field_0x6be &= ~i_this->field_0x9be;
|
||||
i_this->field_0x9be = 0;
|
||||
bullbo->mActionID = 16;
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
bullbo->field_0x169e = 10;
|
||||
}
|
||||
|
||||
|
|
@ -3839,7 +3841,7 @@ static void e_rd_ikki2_end(e_rd_class* i_this) {
|
|||
anm_init(i_this, BCK_RD_RRUN_BACK, 0.0f, 0, 1.0f);
|
||||
i_this->mMode = 1;
|
||||
bullbo->mActionID = 18;
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
bullbo->field_0x169e = 90;
|
||||
mDoAud_bgmStop(30);
|
||||
}
|
||||
|
|
@ -3923,7 +3925,7 @@ static void e_rd_lv9_end(e_rd_class* i_this) {
|
|||
e_rdb_class* king_bulblin = (e_rdb_class*)fpcM_Search(s_rdb_sub, i_this);
|
||||
if (king_bulblin != NULL && king_bulblin->mDemoMode == 14) {
|
||||
anm_init(i_this, e_rdb_class::BCK_RB_RNEIGH, 3.0f, 0, 1.0f);
|
||||
bullbo->field_0x5b4++;
|
||||
bullbo->mActionMode++;
|
||||
i_this->mMode = 4;
|
||||
}
|
||||
}
|
||||
|
|
@ -4110,7 +4112,7 @@ static void damage_check(e_rd_class* i_this) {
|
|||
i_this->mStts.Move();
|
||||
|
||||
if (i_this->field_0x998 == 0) {
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
a_this->health = 100;
|
||||
}
|
||||
|
||||
|
|
@ -4118,7 +4120,7 @@ static void damage_check(e_rd_class* i_this) {
|
|||
if (i_this->field_0xd58[i].ChkTgHit() != 0) {
|
||||
i_this->field_0x998 = 6;
|
||||
i_this->mAtInfo.mpCollider = i_this->field_0xd58[i].GetTgHitObj();
|
||||
if (i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 3) {
|
||||
s16 sVar1 = a_this->shape_angle.y - i_this->mPlayerAngleY;
|
||||
at_power_check(&i_this->mAtInfo);
|
||||
if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_ARROW) || i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOMB)) {
|
||||
|
|
@ -4139,7 +4141,7 @@ static void damage_check(e_rd_class* i_this) {
|
|||
}
|
||||
|
||||
uVar1 = 3;
|
||||
bullbo->field_0x698[3] = 100;
|
||||
bullbo->field_0x69e = 100;
|
||||
dComIfGs_onSaveDunSwitch(7);
|
||||
} else {
|
||||
uVar1 = 2;
|
||||
|
|
@ -4255,9 +4257,9 @@ static void damage_check(e_rd_class* i_this) {
|
|||
small_damage(i_this, i);
|
||||
i_this->field_0x998 = 3;
|
||||
} else {
|
||||
if (i_this->field_0x129a != 0 && bullbo != NULL) {
|
||||
if (i_this->mBossMode != 0 && bullbo != NULL) {
|
||||
i_this->field_0x998 = 20;
|
||||
if (i_this->field_0x129a == 2) {
|
||||
if (i_this->mBossMode == 2) {
|
||||
bullbo->field_0x79e++;
|
||||
if (bullbo->field_0x79e == 1) {
|
||||
a_this->health = 0;
|
||||
|
|
@ -4316,7 +4318,7 @@ static void damage_check(e_rd_class* i_this) {
|
|||
i_this->mMode = 0;
|
||||
mDoAud_seStart(Z2SE_EN_RDB_V_FAINT, 0, 0, 0);
|
||||
bullbo->mActionID = 31;
|
||||
bullbo->field_0x5b4 = 0;
|
||||
bullbo->mActionMode = 0;
|
||||
mDoAud_bgmStop(30);
|
||||
return;
|
||||
}
|
||||
|
|
@ -4958,7 +4960,7 @@ static void action(e_rd_class* i_this) {
|
|||
break;
|
||||
|
||||
case ACTION_WB_RUN:
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
e_rd_wb_run_B(i_this);
|
||||
} else {
|
||||
e_rd_wb_run(i_this);
|
||||
|
|
@ -5192,7 +5194,7 @@ static void action(e_rd_class* i_this) {
|
|||
MTXCopy(bullbo->mpModelMorf->getModel()->getAnmMtx(bullbo->field_0x688 + 16), *calc_mtx);
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
sp25c.set(0.0f, BREG_F(4) + -65.0f, 0.0f);
|
||||
} else {
|
||||
sp25c.set(0.0f, BREG_F(4) + -45.0f, 0.0f);
|
||||
|
|
@ -6258,7 +6260,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
|
||||
i_this->field_0x970++;
|
||||
|
||||
if (i_this->field_0x129a == 0) {
|
||||
if (i_this->mBossMode == 0) {
|
||||
i_this->field_0x1297 = i_this->field_0x1298;
|
||||
} else {
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
|
@ -6341,7 +6343,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
if (!i_this->mObjAcch.ChkGroundHit()) {
|
||||
if (a_this->speed.y < -10.0f) {
|
||||
i_this->field_0xaf2++;
|
||||
if (i_this->field_0xaf2 == 20 && i_this->field_0x129a == 0) {
|
||||
if (i_this->field_0xaf2 == 20 && i_this->mBossMode == 0) {
|
||||
i_this->mSound.startCreatureVoice(Z2SE_EN_RD_V_DEATH, -1);
|
||||
}
|
||||
}
|
||||
|
|
@ -6378,7 +6380,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
mDoMtx_stack_c::ZrotM(a_this->shape_angle.z);
|
||||
|
||||
f32 fVar1 = l_HIO.model_size * a_this->scale.x;
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
fVar1 *= l_HIO.field_0xc;
|
||||
}
|
||||
mDoMtx_stack_c::scaleM(fVar1, fVar1, fVar1);
|
||||
|
|
@ -6409,7 +6411,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
if (i_this->mAnmID == e_rdb_class::BCK_RB_RCOMEON) {
|
||||
if (i_this->mpModelMorf->checkFrame(30.0f)) {
|
||||
i_this->mSound.startCreatureVoice(Z2SE_EN_RDB_V_LAUGH, -1);
|
||||
|
|
@ -6508,7 +6510,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
spbc.set(-20000.0f, 200000.0f, 30000.0f);
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
MTXCopy(model->getAnmMtx(AREG_S(9) + 6), *calc_mtx);
|
||||
} else {
|
||||
MTXCopy(model->getAnmMtx(13), *calc_mtx);
|
||||
|
|
@ -6530,7 +6532,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
a_this->attention_info.position = a_this->current.pos;
|
||||
a_this->attention_info.position.y += 190.0f;
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
a_this->attention_info.position.y += 120.0f;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -6538,10 +6540,10 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
a_this->attention_info.position.y += 30.0f;
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
f32 fVar2 = 60.0f;
|
||||
f32 fVar1 = 0.0f;
|
||||
if (i_this->field_0x129a == 2) {
|
||||
if (i_this->mBossMode == 2) {
|
||||
fVar2 = 90.0f;
|
||||
fVar1 = l_HIO.field_0x3c;
|
||||
}
|
||||
|
|
@ -6580,13 +6582,13 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
|
||||
dComIfG_Ccsp()->Set(&i_this->field_0xd58[i]);
|
||||
|
||||
if (i_this->field_0x129a == 1 && i_this->field_0x9bc == 2) {
|
||||
if (i_this->mBossMode == 1 && i_this->field_0x9bc == 2) {
|
||||
i_this->field_0xd58[i].OnTgNoHitMark();
|
||||
} else {
|
||||
i_this->field_0xd58[i].OffTgNoHitMark();
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 3) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
i_this->field_0xd58[j].SetTgType(0x2022);
|
||||
i_this->field_0xd58[j].OnTgNoHitMark();
|
||||
|
|
@ -6774,11 +6776,11 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
0x828E,
|
||||
};
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
for (int i = 0; i < 14; i++) {
|
||||
if (i_this->mpBossArmorParts[i] != NULL) {
|
||||
if (i_this->field_0x70c[i] == 0) {
|
||||
if (i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 3) {
|
||||
MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(ikki2_boss_part_idx[i]), *calc_mtx);
|
||||
} else {
|
||||
MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(boss_part_idx[i]), *calc_mtx);
|
||||
|
|
@ -6864,7 +6866,7 @@ static int daE_RD_Execute(e_rd_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a == 0 && i_this->field_0x9bc == 0) {
|
||||
if (i_this->mBossMode == 0 && i_this->field_0x9bc == 0) {
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(11), mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::multVecZero(&spa4);
|
||||
|
|
@ -6921,7 +6923,7 @@ static void ride_game_actor_set(e_rd_class* i_this) {
|
|||
cXyz sp70, i_pos;
|
||||
csXyz i_angle;
|
||||
|
||||
OS_REPORT("E3 2005 ACTOR SET %d\n", i_this->field_0x129a);
|
||||
OS_REPORT("E3 2005 ACTOR SET %d\n", i_this->mBossMode);
|
||||
static cXyz set_pos[6] = {
|
||||
cXyz(0.0f, 1500.0f, 2500.0f),
|
||||
cXyz(800.0f, 1500.0f, -4800.0f),
|
||||
|
|
@ -6933,13 +6935,13 @@ static void ride_game_actor_set(e_rd_class* i_this) {
|
|||
|
||||
dBgS_GndChk gnd_chk;
|
||||
int iVar1 = 6;
|
||||
if (i_this->field_0x129a >= 2) {
|
||||
if (i_this->mBossMode >= 2) {
|
||||
iVar1 = 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < iVar1; i++) {
|
||||
u32 i_parameters;
|
||||
if (i_this->field_0x129a == 1) {
|
||||
if (i_this->mBossMode == 1) {
|
||||
cMtx_YrotS(*calc_mtx, player->shape_angle.y);
|
||||
sp70 = set_pos[i];
|
||||
|
||||
|
|
@ -6954,15 +6956,15 @@ static void ride_game_actor_set(e_rd_class* i_this) {
|
|||
i_angle = player->shape_angle;
|
||||
i_angle.y += 0x4000;
|
||||
i_parameters = 0x80000005;
|
||||
} else if (i_this->field_0x129a == 2) {
|
||||
} else if (i_this->mBossMode == 2) {
|
||||
i_pos.set(34789.0f, -290.0f, -36177.0f);
|
||||
i_angle.set(0, 0, 0);
|
||||
i_parameters = 0x80000007;
|
||||
} else if (i_this->field_0x129a == 3) {
|
||||
} else if (i_this->mBossMode == 3) {
|
||||
i_pos.set(-93620.0f, -5750.0f, 49650.0f);
|
||||
i_angle.set(0, -0x8000, 0);
|
||||
i_parameters = 0x80000008;
|
||||
} else if (i_this->field_0x129a == 4) {
|
||||
} else if (i_this->mBossMode == 4) {
|
||||
i_pos = a_this->home.pos;
|
||||
i_angle = a_this->home.angle;
|
||||
i_parameters = 0x80000009;
|
||||
|
|
@ -7012,7 +7014,7 @@ static int useHeapInit(fopAc_ac_c* a_this) {
|
|||
J3DModel* model;
|
||||
J3DModelData* modelData;
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
i_this->mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_rdb", e_rdb_class::BMDR_RB), NULL, NULL,
|
||||
(J3DAnmTransform*)dComIfG_getObjectRes("E_rdb", e_rdb_class::BCK_RB_RWAIT), 2, 1.0f,
|
||||
0, -1, &i_this->mSound, 0x80000, 0x11000084);
|
||||
|
|
@ -7027,7 +7029,7 @@ static int useHeapInit(fopAc_ac_c* a_this) {
|
|||
model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack_B);
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a == 1) {
|
||||
if (i_this->mBossMode == 1) {
|
||||
i_this->mpMorfHornAnm = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("E_rdb", e_rdb_class::BMDR_RB_HORN),
|
||||
NULL, NULL, NULL, 2, 1.0f, 0, -1, 1, NULL, 0x80000, 0x11000084);
|
||||
if (i_this->mpMorfHornAnm == NULL || i_this->mpMorfHornAnm->getModel() == NULL) {
|
||||
|
|
@ -7051,7 +7053,7 @@ static int useHeapInit(fopAc_ac_c* a_this) {
|
|||
};
|
||||
|
||||
for (int i = 0; i < 14; i++) {
|
||||
if (i_this->field_0x129a == 3) {
|
||||
if (i_this->mBossMode == 3) {
|
||||
if (i < 2) {
|
||||
modelData = (J3DModelData*)dComIfG_getObjectRes("E_rdb", ikki2_boss_part_bmd[i]);
|
||||
JUT_ASSERT(10672, modelData != 0);
|
||||
|
|
@ -7062,7 +7064,7 @@ static int useHeapInit(fopAc_ac_c* a_this) {
|
|||
} else {
|
||||
i_this->field_0x70c[i] = 1;
|
||||
}
|
||||
} else if (i_this->field_0x129a == 1 || i == 13) {
|
||||
} else if (i_this->mBossMode == 1 || i == 13) {
|
||||
modelData = (J3DModelData*)dComIfG_getObjectRes("E_rdb", boss_part_bmd[i]);
|
||||
JUT_ASSERT(10687, modelData != 0);
|
||||
i_this->mpBossArmorParts[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
|
|
@ -7169,13 +7171,13 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
|
||||
if (((i_this->field_0x5b6 == 4 || i_this->field_0x5b6 == 5) || i_this->field_0x5b6 == 11) || i_this->field_0x5b6 == 12) {
|
||||
if (i_this->field_0x5b6 == 4) {
|
||||
i_this->field_0x129a = 1;
|
||||
i_this->mBossMode = 1;
|
||||
} else if (i_this->field_0x5b6 == 5) {
|
||||
i_this->field_0x129a = 2;
|
||||
i_this->mBossMode = 2;
|
||||
} else if (i_this->field_0x5b6 == 11) {
|
||||
i_this->field_0x129a = 3;
|
||||
i_this->mBossMode = 3;
|
||||
} else if (i_this->field_0x5b6 == 12) {
|
||||
i_this->field_0x129a = 4;
|
||||
i_this->mBossMode = 4;
|
||||
}
|
||||
|
||||
i_this->mResName = "E_rdb";
|
||||
|
|
@ -7209,7 +7211,7 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
boss = i_this;
|
||||
i_this->field_0x5b6 = 1;
|
||||
}
|
||||
|
|
@ -7341,11 +7343,11 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
a_this->home.angle.z = 0;
|
||||
|
||||
u32 i_size;
|
||||
if (i_this->field_0x129a == 1) {
|
||||
if (i_this->mBossMode == 1) {
|
||||
i_size = 0xAD60;
|
||||
} else if (i_this->field_0x129a == 2) {
|
||||
} else if (i_this->mBossMode == 2) {
|
||||
i_size = 0x3C00;
|
||||
} else if (i_this->field_0x129a == 3) {
|
||||
} else if (i_this->mBossMode == 3) {
|
||||
i_size = 0x4400;
|
||||
} else {
|
||||
i_size = 0x4FF0;
|
||||
|
|
@ -7356,7 +7358,7 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
ride_game_actor_set(i_this);
|
||||
}
|
||||
|
||||
|
|
@ -7393,7 +7395,7 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
i_this->field_0xd58[i].Set(cc_sph_src);
|
||||
i_this->field_0xd58[i].SetStts(&i_this->mStts);
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
i_this->field_0xd58[i].SetTgType(0xD8FAFD3F);
|
||||
}
|
||||
}
|
||||
|
|
@ -7417,7 +7419,7 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
|
||||
i_this->mSound.init(&a_this->current.pos, &a_this->eyePos, 3, 1);
|
||||
|
||||
if (i_this->field_0x129a != 0) {
|
||||
if (i_this->mBossMode != 0) {
|
||||
i_this->mSound.setEnemyName("E_rdb");
|
||||
} else {
|
||||
i_this->mSound.setEnemyName("E_rd");
|
||||
|
|
@ -7440,7 +7442,7 @@ static cPhs__Step daE_RD_Create(fopAc_ac_c* a_this) {
|
|||
// Lake Hylia or Hyrule Field
|
||||
fopAcM_OffStatus(a_this, fopAcM_STATUS_UNK_004000);
|
||||
}
|
||||
} else if (i_this->field_0x129a != 4) {
|
||||
} else if (i_this->mBossMode != 4) {
|
||||
fopAcM_OffStatus(a_this, fopAcM_STATUS_UNK_004000);
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -18,13 +18,15 @@
|
|||
/**
|
||||
* @class daE_YK_HIO_c
|
||||
* @brief Shadow Keese Host Input Output class.
|
||||
*
|
||||
*
|
||||
*/
|
||||
class daE_YK_HIO_c {
|
||||
class daE_YK_HIO_c : public JORReflexible {
|
||||
public:
|
||||
/* 8080482C */ daE_YK_HIO_c();
|
||||
/* 808077E0 */ virtual ~daE_YK_HIO_c() {}
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
/* 0x00 */ // vtable
|
||||
/* 0x04 */ s8 field_0x04; ///< @brief Initialized to -1, appears unused.
|
||||
/* 0x08 */ f32 mModelScale; ///< @brief Base model scale factor (default: 1.0).
|
||||
/* 0x0C */ f32 mFlySpeed; ///< @brief Base flying speed (default: 15.0).
|
||||
|
|
@ -33,12 +35,6 @@ public:
|
|||
/* 0x18 */ f32 mChargeSpeed; ///< @brief Speed when charging at player (default: 40.0).
|
||||
};
|
||||
|
||||
/* 80807EF8-80807EFC 000008 0004+00 2/2 0/0 0/0 .bss None */
|
||||
static u8 data_80807EF8;
|
||||
|
||||
/* 80807F08-80807F24 000018 001C+00 9/9 0/0 0/0 .bss l_HIO */
|
||||
static daE_YK_HIO_c l_HIO;
|
||||
|
||||
/**
|
||||
* @brief Constructor for Shadow Keese HIO (Host Input Output) configuration class
|
||||
*
|
||||
|
|
@ -58,6 +54,24 @@ daE_YK_HIO_c::daE_YK_HIO_c() {
|
|||
mChargeSpeed = 40.0f;
|
||||
}
|
||||
|
||||
/* 80807EF8-80807EFC 000008 0004+00 2/2 0/0 0/0 .bss None */
|
||||
static u8 data_80807EF8;
|
||||
|
||||
/* 80807F08-80807F24 000018 001C+00 9/9 0/0 0/0 .bss l_HIO */
|
||||
static daE_YK_HIO_c l_HIO;
|
||||
|
||||
#ifdef DEBUG
|
||||
void daE_YK_HIO_c::genMessage(JORMContext* ctx) {
|
||||
ctx->genLabel("闇キース", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
|
||||
ctx->genSlider("基本サイズ", &mModelScale, 0.0f, 3.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x512, 24);
|
||||
ctx->genSlider("飛行速度", &mFlySpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
|
||||
ctx->genSlider("戦闘開始範囲", &mAttackRange, 0.0f, 600.0f,0, NULL, 0xFFFF, 0xFFFF, 512, 24);
|
||||
ctx->genSlider("戦闘速度", &mCruiseSpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
|
||||
ctx->genSlider("突進速度", &mChargeSpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* @brief Makes a Shadow Keese disappear with effects and item drops
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
#include "d/d_cc_d.h"
|
||||
#include "dol2asm.h"
|
||||
#include "d/d_camera.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
|
|
@ -253,28 +255,104 @@ extern "C" void __register_global_object();
|
|||
|
||||
/* 80BAE36C-80BAE4A8 0000EC 013C+00 1/1 0/0 0/0 .text
|
||||
* PPCallBack__9daObjBm_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel */
|
||||
void daObjBm_c::PPCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, s16 param_2,
|
||||
// NONMATCHING
|
||||
void daObjBm_c::PPCallBack(fopAc_ac_c* param_0, fopAc_ac_c* i_actorP, s16 param_2,
|
||||
dBgW_Base::PushPullLabel param_3) {
|
||||
// NONMATCHING
|
||||
int tmp = cLib_checkBit((int)param_2, 3);
|
||||
u32 l_swNo3 = getSwNo3();
|
||||
u32 l_moveType = getMoveType();
|
||||
|
||||
if (tmp && !fopAcM_isSwitch(this,l_swNo3)) {
|
||||
int tmp2 = cLib_checkBit(tmp,2);
|
||||
s16 angle = param_2;
|
||||
|
||||
if (tmp2) {
|
||||
angle -= -0x8000;
|
||||
}
|
||||
|
||||
angle -= home.angle.y;
|
||||
|
||||
JUT_PANIC(513,"0");
|
||||
|
||||
field_0x10c0 = param_2;
|
||||
|
||||
if (angle >= -0x2000 && angle < 0x2000) {
|
||||
tmp = 0;
|
||||
} else {
|
||||
if (angle >= 0x2000 && angle < 0x6000) {
|
||||
tmp = 1;
|
||||
} else {
|
||||
if (angle < 0x6000 && angle < -0x6000) {
|
||||
tmp = 2;
|
||||
} else {
|
||||
tmp = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (l_moveType != 0 || tmp == 0) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (tmp == 1) {
|
||||
field_0x10c4[i] = field_0x10c4[i]+1;
|
||||
} else {
|
||||
field_0x10c4[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
field_0x10d2 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 80BAE4A8-80BAE5FC 000228 0154+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
|
||||
static void nodeCallBack(J3DJoint* param_0, int param_1) {
|
||||
// NONMATCHING
|
||||
// NONMATCHING
|
||||
static int nodeCallBack(J3DJoint* param_0, int param_1) {
|
||||
if (param_1 == 0) {
|
||||
u16 jnt_no = param_0->getJntNo();
|
||||
J3DModel* model = j3dSys.getModel();
|
||||
daObjBm_c* beamos = (daObjBm_c*)model->getUserArea();
|
||||
cMtx_copy(model->getAnmMtx(jnt_no), mDoMtx_stack_c::get());
|
||||
|
||||
if (jnt_no == beamos->getHeadJoint()) {
|
||||
mDoMtx_stack_c::XrotM(beamos->field_0xf96 + (beamos->field_0x1000 * cM_scos(beamos->field_0x1000 * beamos->field_0xff0)));
|
||||
} else {
|
||||
if (jnt_no == beamos->getBigGearJoint()) {
|
||||
mDoMtx_stack_c::XrotM(beamos->field_0xf9a);
|
||||
} else {
|
||||
if (jnt_no == beamos->getSmallGear0Joint()) {
|
||||
mDoMtx_stack_c::XrotM(beamos->field_0xf9e);
|
||||
} else {
|
||||
if (jnt_no == beamos->getSmallGear1Joint()) {
|
||||
mDoMtx_stack_c::XrotM(beamos->field_0xfa2);
|
||||
} else {
|
||||
if (jnt_no == beamos->getSmallGear2Joint()) {
|
||||
mDoMtx_stack_c::XrotM(beamos->field_0xfa6);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cMtx_copy(mDoMtx_stack_c::get(),model->getAnmMtx(jnt_no));
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BB37B8-80BB37C4 000000 000C+00 13/13 0/0 0/0 .rodata l_eye_offset */
|
||||
SECTION_RODATA static u8 const l_eye_offset[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x43, 0xA5, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00,
|
||||
SECTION_RODATA static f32 const l_eye_offset[4] = {
|
||||
0.0f,
|
||||
330.0f,
|
||||
75.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BB37B8, &l_eye_offset);
|
||||
|
||||
/* 80BB37C4-80BB37D0 00000C 000C+00 0/1 0/0 0/0 .rodata l_high_beam_offset */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const l_high_beam_offset[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x43, 0x7F, 0x00, 0x00, 0x42, 0x82, 0x00, 0x00,
|
||||
SECTION_RODATA static f32 const l_high_beam_offset[4] = {
|
||||
0.0f,
|
||||
255.0f,
|
||||
65.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BB37C4, &l_high_beam_offset);
|
||||
#pragma pop
|
||||
|
|
@ -282,8 +360,10 @@ COMPILER_STRIP_GATE(0x80BB37C4, &l_high_beam_offset);
|
|||
/* 80BB37D0-80BB37DC 000018 000C+00 0/1 0/0 0/0 .rodata l_mid_beam_offset */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const l_mid_beam_offset[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x43, 0x4D, 0x00, 0x00, 0x42, 0x82, 0x00, 0x00,
|
||||
SECTION_RODATA static f32 const l_mid_beam_offset[3] = {
|
||||
0.0f,
|
||||
205.0f,
|
||||
65.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BB37D0, &l_mid_beam_offset);
|
||||
#pragma pop
|
||||
|
|
@ -291,17 +371,28 @@ COMPILER_STRIP_GATE(0x80BB37D0, &l_mid_beam_offset);
|
|||
/* 80BB37DC-80BB37E8 000024 000C+00 0/1 0/0 0/0 .rodata l_low_beam_offset */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const l_low_beam_offset[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 0x42, 0x82, 0x00, 0x00,
|
||||
SECTION_RODATA static f32 const l_low_beam_offset[3] = {
|
||||
0.0f,
|
||||
160.0f,
|
||||
65.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BB37DC, &l_low_beam_offset);
|
||||
#pragma pop
|
||||
|
||||
/* 80BB37E8-80BB3818 000030 0030+00 1/1 0/0 0/0 .rodata l_craw_offset */
|
||||
SECTION_RODATA static u8 const l_craw_offset[48] = {
|
||||
0xC2, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xBE, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC2, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xBE, 0x00, 0x00,
|
||||
SECTION_RODATA static f32 const l_craw_offset[12] = {
|
||||
-95.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
95.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
-95.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
95.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BB37E8, &l_craw_offset);
|
||||
|
||||
|
|
@ -321,18 +412,40 @@ COMPILER_STRIP_GATE(0x80BB3824, &lit_3934);
|
|||
|
||||
/* 80BAE5FC-80BAE68C 00037C 0090+00 1/1 0/0 0/0 .text initBaseMtx__9daObjBm_cFv */
|
||||
void daObjBm_c::initBaseMtx() {
|
||||
// NONMATCHING
|
||||
field_0x10a0.set(0.5f, 0.5f, 1.0f);
|
||||
mpModel->setBaseScale(scale);
|
||||
mpModel3->setBaseScale(scale);
|
||||
mpModel2->setBaseScale(field_0x10a0);
|
||||
setBaseMtx();
|
||||
}
|
||||
|
||||
/* 80BAE68C-80BAE778 00040C 00EC+00 2/2 0/0 0/0 .text setBaseMtx__9daObjBm_cFv */
|
||||
void daObjBm_c::setBaseMtx() {
|
||||
// NONMATCHING
|
||||
mDoMtx_stack_c::transS(current.pos.x,current.pos.y,current.pos.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::scaleM(1.0f,1.0f,1.0f);
|
||||
PSMTXCopy(mDoMtx_stack_c::get(),mBgMtx);
|
||||
|
||||
#if DEBUG
|
||||
field_0x10e8 = 0.0f; // change to l_HIO
|
||||
field_0x10ec = 0.0f; // change to l_HIO
|
||||
#endif
|
||||
|
||||
mpModel2->setBaseScale(field_0x10a0);
|
||||
mDoMtx_stack_c::transS(field_0xfb8);
|
||||
mDoMtx_stack_c::ZXYrotM(field_0xfc4);
|
||||
mpModel2->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::ZXYrotM(home.angle);
|
||||
mpModel3->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BB3828-80BB3830 000070 0008+00 2/4 0/0 0/0 .rodata @4106 */
|
||||
SECTION_RODATA static u8 const lit_4106[8] = {
|
||||
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
0x43, 0x30, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BB3828, &lit_4106);
|
||||
|
||||
|
|
@ -360,48 +473,58 @@ SECTION_DATA static void* l_eye_matName = (void*)(((char*)&d_a_obj_bemos__string
|
|||
/* 80BB3A9C-80BB3AA0 -00001 0004+00 0/1 0/0 0/0 .data l_head_joint */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* l_head_joint = (void*)(((char*)&d_a_obj_bemos__stringBase0) + 0xD);
|
||||
SECTION_DATA static char* l_head_joint = "head";
|
||||
#pragma pop
|
||||
|
||||
/* 80BB3AA0-80BB3AA4 -00001 0004+00 0/1 0/0 0/0 .data l_bigGear_joint */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* l_bigGear_joint = (void*)(((char*)&d_a_obj_bemos__stringBase0) + 0x12);
|
||||
SECTION_DATA static char* l_bigGear_joint = "cogRed";
|
||||
#pragma pop
|
||||
|
||||
/* 80BB3AA4-80BB3AA8 -00001 0004+00 0/1 0/0 0/0 .data l_smallGear0_joint */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* l_smallGear0_joint = (void*)(((char*)&d_a_obj_bemos__stringBase0) + 0x19);
|
||||
SECTION_DATA static char* l_smallGear0_joint = "cogBlue";
|
||||
#pragma pop
|
||||
|
||||
/* 80BB3AA8-80BB3AAC -00001 0004+00 0/1 0/0 0/0 .data l_smallGear1_joint */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* l_smallGear1_joint = (void*)(((char*)&d_a_obj_bemos__stringBase0) + 0x21);
|
||||
SECTION_DATA static char* l_smallGear1_joint = "cogGreen";
|
||||
#pragma pop
|
||||
|
||||
/* 80BB3AAC-80BB3AB0 -00001 0004+00 0/1 0/0 0/0 .data l_smallGear2_joint */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* l_smallGear2_joint = (void*)(((char*)&d_a_obj_bemos__stringBase0) + 0x2A);
|
||||
SECTION_DATA static char* l_smallGear2_joint = "cogYellow";
|
||||
#pragma pop
|
||||
|
||||
/* 80BB3AB0-80BB3AC4 00003C 0014+00 0/2 0/0 0/0 .data l_joint_table */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u8 l_joint_table[20] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
SECTION_DATA static char* l_joint_table[5] = {
|
||||
l_head_joint,
|
||||
l_bigGear_joint,
|
||||
l_smallGear0_joint,
|
||||
l_smallGear1_joint,
|
||||
l_smallGear2_joint,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80BB3AC4-80BB3ADC 000050 0018+00 0/1 0/0 0/0 .data l_cull_box */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u8 l_cull_box[24] = {
|
||||
0xC4, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0xC4, 0x96, 0x00, 0x00,
|
||||
0x44, 0x96, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x44, 0x96, 0x00, 0x00,
|
||||
SECTION_DATA static Vec l_cull_box[2] = {
|
||||
{-1200.0f,
|
||||
-100.0f,
|
||||
-1200.0f
|
||||
},
|
||||
{
|
||||
1200.0f,
|
||||
400.0f,
|
||||
1200.0f
|
||||
},
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
|
|
@ -457,7 +580,77 @@ static dCcD_SrcCyl l_cyl_src = {
|
|||
|
||||
/* 80BAE778-80BAEADC 0004F8 0364+00 1/0 0/0 0/0 .text Create__9daObjBm_cFv */
|
||||
int daObjBm_c::Create() {
|
||||
// NONMATCHING
|
||||
fopAcM_SetMtx(this,mpModel->getBaseTRMtx());
|
||||
mStts.Init(0xff, 0xff, this);
|
||||
mSph.Set(l_sph_src);
|
||||
mSph.SetStts(&mStts);
|
||||
mCps.Set(l_cps_src);
|
||||
mCps.SetStts(&mStts);
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mCyl[i].Set(l_cyl_src);
|
||||
mCyl[i].SetStts(&mStts);
|
||||
}
|
||||
|
||||
fopAcM_setCullSizeBox(this,l_cull_box[0].x,l_cull_box[0].y,l_cull_box[0].z,l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z);
|
||||
JUTNameTab* joint_name = mpModel->getModelData()->getJointTree().getJointName();
|
||||
for (int i = 0; i < 5; i++) {
|
||||
if ( mpModel->getModelData()->getJointNum() <= i) break;
|
||||
if (!strcmp(joint_name->getName(i), l_joint_table[2])) {
|
||||
mHeadJntNo = i;
|
||||
mpModel->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack);
|
||||
}
|
||||
}
|
||||
|
||||
mpModel->setUserArea((u32)this);
|
||||
JUTNameTab* material_name = mpModel->getModelData()->getMaterialTable().getMaterialName();
|
||||
|
||||
u32 uVar12 = 0;
|
||||
while( true ) {
|
||||
if ( mpModel->getModelData()->getMaterialNum() <= uVar12) break;
|
||||
if (strcmp(material_name->getName(uVar12),"bmEye") == 0) {
|
||||
mpMaterial = mpModel->getModelData()->getMaterialNodePointer(uVar12);
|
||||
}
|
||||
uVar12 = uVar12 + 1;
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
if (field_0xfcc == 0) {
|
||||
OSReport_Error("ブ[モス]。苔のマテリアルがありません");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
// (**(code **)(*(int *)(this + 0x10a0) + 0x14))(this + 0x1080,this + 0x1068,1);
|
||||
// (**(code **)(*(int *)(this + 0x10d0) + 0x14))(this + 0x10b0,this + 0x1074,1);
|
||||
|
||||
field_0x1039 = 1;
|
||||
|
||||
if (fopAcM_isSwitch(this,getSwNo2())) {
|
||||
field_0xff7 = 0x0;
|
||||
|
||||
if (getMoveType() != 1) {
|
||||
mpBaseAnm2->setFrame(mpBaseAnm2->getEndFrame());
|
||||
}
|
||||
|
||||
initActionObjBemos();
|
||||
} else {
|
||||
initActionEnBemos();
|
||||
if (getSwNo() != -1) {
|
||||
if (fopAcM_isSwitch(this,getSwNo())) {
|
||||
field_0xff7 = 0;
|
||||
initActionSwWait();
|
||||
}
|
||||
}
|
||||
field_0xff7 = 1;
|
||||
J3DAnmTevRegKey* model_data = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Obj_bm", 0x14);
|
||||
mpBrkAnm->init(mpModel->getModelData(),model_data,1,2,1.0f,0,-1);
|
||||
mpBaseAnm->setFrame(mpBaseAnm->getEndFrame());
|
||||
initActionWarning();
|
||||
}
|
||||
|
||||
initBaseMtx();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
|
|
|
|||
|
|
@ -10,18 +10,18 @@
|
|||
#include "d/actor/d_a_tag_hstop.h"
|
||||
|
||||
BOOL e_wb_class::checkWait() {
|
||||
return field_0x5b4 == 0x2A;
|
||||
return mActionMode == 0x2A;
|
||||
}
|
||||
|
||||
void e_wb_class::setPlayerRideNow() {
|
||||
mActionID = ACT_PL_RIDE_NOW;
|
||||
field_0x5b4 = 0;
|
||||
mActionMode = 0;
|
||||
field_0x6be |= 3;
|
||||
}
|
||||
|
||||
void e_wb_class::setPlayerRide() {
|
||||
mActionID = ACT_PL_RIDE;
|
||||
field_0x5b4 = 0;
|
||||
mActionMode = 0;
|
||||
field_0x6be |= 3;
|
||||
|
||||
mZ2Ride.setLinkRiding(true);
|
||||
|
|
@ -34,7 +34,7 @@ void e_wb_class::getOff() {
|
|||
field_0x692 = 0;
|
||||
}
|
||||
|
||||
field_0x5b4 = 0;
|
||||
mActionMode = 0;
|
||||
field_0x6be &= ~3;
|
||||
mZ2Ride.setLinkRiding(false);
|
||||
}
|
||||
|
|
@ -44,12 +44,12 @@ BOOL e_wb_class::checkDownDamage() {
|
|||
}
|
||||
|
||||
BOOL e_wb_class::checkNormalRideMode() const {
|
||||
return mActionID != 0x66 || field_0x5b4 < 1;
|
||||
return mActionID != 0x66 || mActionMode < 1;
|
||||
}
|
||||
|
||||
void e_wb_class::setRunRideMode() {
|
||||
if (mActionID == ACT_PL_RIDE) {
|
||||
field_0x5b4 = 0;
|
||||
mActionMode = 0;
|
||||
mActionID = ACT_S_DAMAGE;
|
||||
field_0x692 = 0x65;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue