mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-29 10:50:53 -04:00
More Matches
- Match a few more functions - Offset comments
This commit is contained in:
@@ -18,7 +18,8 @@ public:
|
||||
|
||||
f32 GetNowY() const { return mNowY; }
|
||||
void SetNowY(f32 y) { mNowY = y; }
|
||||
cXyz& GetPointP() { return m_pos; }
|
||||
cXyz* GetPointP() { return &m_pos; }
|
||||
void SetPos(cXyz* pos) { m_pos.set(*pos); }
|
||||
u32 GetWallPrecheck() const { return mWallPrecheck; }
|
||||
void OffWall() { mFlags &= ~2; }
|
||||
|
||||
|
||||
@@ -37,12 +37,12 @@ void cLib_offsetPos(cXyz* pDest, cXyz* pSrc, s16 angle, cXyz* vec);
|
||||
s32 cLib_distanceAngleS(s16 x, s16 y);
|
||||
|
||||
template <typename T>
|
||||
inline void cLib_offBit(T& value, u8 bit) {
|
||||
inline void cLib_offBit(T& value, T bit) {
|
||||
value &= ~bit;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline void cLib_onBit(T& value, u8 bit) {
|
||||
inline void cLib_onBit(T& value, T bit) {
|
||||
value |= bit;
|
||||
}
|
||||
|
||||
|
||||
+62
-62
@@ -23,12 +23,12 @@ public:
|
||||
|
||||
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
|
||||
|
||||
s16 field_0x04;
|
||||
const cXyz* mpPos;
|
||||
cXyz* field_0x0C;
|
||||
cXyz* field_0x10;
|
||||
JPABaseEmitter* mpEmitter;
|
||||
};
|
||||
/* 0x04 */ s16 field_0x04;
|
||||
/* 0x08 */ const cXyz* mpPos;
|
||||
/* 0x0C */ cXyz* field_0x0C;
|
||||
/* 0x10 */ cXyz* field_0x10;
|
||||
/* 0x14 */ JPABaseEmitter* mpEmitter;
|
||||
}; // Size 0x18
|
||||
|
||||
class daBomb_fuseSparksEcallBack : public dPa_levelEcallBack {
|
||||
public:
|
||||
@@ -42,14 +42,14 @@ public:
|
||||
|
||||
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
|
||||
|
||||
const cXyz* mpPos;
|
||||
JPABaseEmitter* mpEmitter;
|
||||
};
|
||||
/* 0x04 */ const cXyz* mpPos;
|
||||
/* 0x08 */ JPABaseEmitter* mpEmitter;
|
||||
}; // Size 0x0C
|
||||
|
||||
class dBgS_BombAcch : public dBgS_Acch {
|
||||
public:
|
||||
dBgS_BombAcch() { mbBombThrough = true; }
|
||||
};
|
||||
}; // Size 0x1C4
|
||||
|
||||
|
||||
class daBomb_c : public fopAc_ac_c {
|
||||
@@ -159,63 +159,63 @@ public:
|
||||
private:
|
||||
typedef bool(daBomb_c::*procFunc)();
|
||||
|
||||
procFunc mFunc;
|
||||
request_of_phase_process_class mPhs;
|
||||
J3DModel* mpModel;
|
||||
mDoExt_bckAnm mBck0;
|
||||
mDoExt_bckAnm mBck1;
|
||||
mDoExt_brkAnm mBrk0;
|
||||
mDoExt_brkAnm mBrk1;
|
||||
s32 mType;
|
||||
dBgS_BombAcch mAcch;
|
||||
dBgS_AcchCir mCir;
|
||||
dBgS_ObjGndChk_Yogan mGndChk;
|
||||
cXyz field_0x554;
|
||||
bool field_0x560;
|
||||
bool mbWaterIn;
|
||||
u8 field_0x562;
|
||||
dCcD_Stts mStts;
|
||||
dCcD_Sph mSph;
|
||||
daBomb_fuseSmokeEcallBack mSmoke;
|
||||
daBomb_fuseSparksEcallBack mSparks;
|
||||
u8 field_0x6F0;
|
||||
u8 field_0x6F1;
|
||||
u8 field_0x6F2;
|
||||
u8 field_0x6F3;
|
||||
u8 field_0x6F4;
|
||||
u8 field_0x6F5;
|
||||
u8 field_0x6F6;
|
||||
u8 field_0x6F7;
|
||||
s32 mInitialState;
|
||||
s16 mRestTime;
|
||||
s16 field_0x6FE;
|
||||
s16 mNoGravityTime;
|
||||
s16 field_0x702;
|
||||
cXyz mFusePos;
|
||||
cXyz mFusePos2;
|
||||
cXyz mFusePos3;
|
||||
LIGHT_INFLUENCE mPntLight;
|
||||
WIND_INFLUENCE mPntWind;
|
||||
u8 field_0x774;
|
||||
f32 field_0x778;
|
||||
u8 field_0x77C;
|
||||
u8 field_0x77D;
|
||||
u8 field_0x77E;
|
||||
u8 field_0x77F;
|
||||
u8 field_0x780;
|
||||
u8 field_0x781;
|
||||
u8 field_0x782;
|
||||
int field_0x784;
|
||||
cXyz mWindVec;
|
||||
u8 field_0x794[0x7C4 - 0x794];
|
||||
int mMassCounter;
|
||||
int field_0x7C8;
|
||||
/* 0x290 */ procFunc mFunc;
|
||||
/* 0x29C */ request_of_phase_process_class mPhs;
|
||||
/* 0x2A4 */ J3DModel* mpModel;
|
||||
/* 0x2A8 */ mDoExt_bckAnm mBck0;
|
||||
/* 0x2B8 */ mDoExt_bckAnm mBck1;
|
||||
/* 0x2C8 */ mDoExt_brkAnm mBrk0;
|
||||
/* 0x2E0 */ mDoExt_brkAnm mBrk1;
|
||||
/* 0x2F8 */ s32 mType;
|
||||
/* 0x2FC */ dBgS_BombAcch mAcch;
|
||||
/* 0x4C0 */ dBgS_AcchCir mCir;
|
||||
/* 0x500 */ dBgS_ObjGndChk_Yogan mGndChk;
|
||||
/* 0x554 */ cXyz field_0x554;
|
||||
/* 0x560 */ bool field_0x560;
|
||||
/* 0x561 */ bool mbWaterIn;
|
||||
/* 0x562 */ u8 field_0x562;
|
||||
/* 0x564 */ dCcD_Stts mStts;
|
||||
/* 0x5A0 */ dCcD_Sph mSph;
|
||||
/* 0x6CC */ daBomb_fuseSmokeEcallBack mSmoke;
|
||||
/* 0x6E4 */ daBomb_fuseSparksEcallBack mSparks;
|
||||
/* 0x6F0 */ u8 field_0x6F0;
|
||||
/* 0x6F1 */ u8 field_0x6F1;
|
||||
/* 0x6F2 */ u8 field_0x6F2;
|
||||
/* 0x6F3 */ u8 field_0x6F3;
|
||||
/* 0x6F4 */ u8 field_0x6F4;
|
||||
/* 0x6F5 */ u8 field_0x6F5;
|
||||
/* 0x6F6 */ u8 field_0x6F6;
|
||||
/* 0x6F7 */ u8 field_0x6F7;
|
||||
/* 0x6F8 */ s32 mInitialState;
|
||||
/* 0x6FC */ s16 mRestTime;
|
||||
/* 0x6FE */ s16 field_0x6FE;
|
||||
/* 0x700 */ s16 mNoGravityTime;
|
||||
/* 0x702 */ s16 field_0x702;
|
||||
/* 0x704 */ cXyz mFusePos; //should figure out what this 3 cXyz thing really is
|
||||
/* 0x710 */ cXyz mFusePos2; //seems like several particle structures use it and a couple construct it as a TVec3<f32> array
|
||||
/* 0x71C */ cXyz mFusePos3; //others have no special construction, and it gets passed to functions that take cXyz sometimes
|
||||
/* 0x728 */ LIGHT_INFLUENCE mPntLight;
|
||||
/* 0x748 */ WIND_INFLUENCE mPntWind;
|
||||
/* 0x774 */ u8 field_0x774;
|
||||
/* 0x778 */ f32 field_0x778;
|
||||
/* 0x77C */ u8 field_0x77C;
|
||||
/* 0x77D */ u8 field_0x77D;
|
||||
/* 0x77E */ u8 field_0x77E;
|
||||
/* 0x77F */ u8 field_0x77F;
|
||||
/* 0x780 */ u8 field_0x780;
|
||||
/* 0x781 */ u8 field_0x781;
|
||||
/* 0x782 */ u8 field_0x782;
|
||||
/* 0x784 */ int field_0x784;
|
||||
/* 0x788 */ cXyz mWindVec;
|
||||
/* 0x794 */ u8 field_0x794[0x7C4 - 0x794];
|
||||
/* 0x7C4 */ int mMassCounter;
|
||||
/* 0x7C8 */ int field_0x7C8;
|
||||
|
||||
struct AttrType {
|
||||
const char* resName;
|
||||
u32 heapSize;
|
||||
};
|
||||
static const AttrType m_attrType[];
|
||||
};
|
||||
}; // Size 0x7CC
|
||||
|
||||
#endif /* D_A_BOMB_H */
|
||||
|
||||
+62
-51
@@ -27,12 +27,12 @@ namespace daBomb2 {
|
||||
|
||||
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
|
||||
|
||||
s16 field_0x04;
|
||||
const cXyz* mpPos;
|
||||
const cXyz* field_0x0C;
|
||||
const cXyz* field_0x10;
|
||||
JPABaseEmitter* mpEmitter;
|
||||
};
|
||||
/* 0x04 */ s16 field_0x04;
|
||||
/* 0x08 */ const cXyz* mpPos;
|
||||
/* 0x0C */ const cXyz* field_0x0C;
|
||||
/* 0x10 */ const cXyz* field_0x10;
|
||||
/* 0x14 */ JPABaseEmitter* mpEmitter;
|
||||
}; // Size 0x18
|
||||
|
||||
class FuseSparksCB_c : public dPa_levelEcallBack {
|
||||
public:
|
||||
@@ -48,9 +48,9 @@ namespace daBomb2 {
|
||||
|
||||
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
|
||||
|
||||
const cXyz* mpPos;
|
||||
JPABaseEmitter* mpEmitter;
|
||||
};
|
||||
/* 0x04 */ const cXyz* mpPos;
|
||||
/* 0x08 */ JPABaseEmitter* mpEmitter;
|
||||
}; // Size 0x0C
|
||||
|
||||
class Env_c {
|
||||
public:
|
||||
@@ -59,11 +59,12 @@ namespace daBomb2 {
|
||||
bool is_end() const;
|
||||
void proc(const cXyz&);
|
||||
|
||||
LIGHT_INFLUENCE mPntLight;
|
||||
WIND_INFLUENCE mPntWind;
|
||||
u8 field_0x4C;
|
||||
f32 field_0x50;
|
||||
};
|
||||
private:
|
||||
/* 0x00 */ LIGHT_INFLUENCE mPntLight;
|
||||
/* 0x20 */ WIND_INFLUENCE mPntWind;
|
||||
/* 0x4C */ u8 field_0x4C;
|
||||
/* 0x50 */ f32 field_0x50;
|
||||
}; // Size 0x54
|
||||
|
||||
class Act_c : public fopAc_ac_c {
|
||||
public:
|
||||
@@ -79,8 +80,8 @@ namespace daBomb2 {
|
||||
bool chk_explode();
|
||||
|
||||
static int solidHeapCB(fopAc_ac_c*);
|
||||
int create_heap_nut();
|
||||
int create_heap();
|
||||
bool create_heap_nut();
|
||||
bool create_heap();
|
||||
void crr_init();
|
||||
void cc_init();
|
||||
void start_explode_instant();
|
||||
@@ -167,44 +168,54 @@ namespace daBomb2 {
|
||||
};
|
||||
|
||||
private:
|
||||
//some of these might be extra since i initially copied them from daBomb_c
|
||||
request_of_phase_process_class mPhs;
|
||||
J3DModel* mpModel;
|
||||
mDoExt_bckAnm mBck0;
|
||||
mDoExt_brkAnm mBrk0;
|
||||
dBgS_BombAcch mAcch;
|
||||
dBgS_AcchCir mCir;
|
||||
dBgS_ObjGndChk_Yogan mGndChk;
|
||||
f32 field_0x51C;
|
||||
f32 field_0x520;
|
||||
bool field_0x524;
|
||||
bool mbWaterIn;
|
||||
u8 field_0x526;
|
||||
f32 field_0x528;
|
||||
dCcD_Stts mStts;
|
||||
dCcD_Sph mSph;
|
||||
int field_0x694;
|
||||
int field_0x698;
|
||||
//some of these might need updating since i initially copied them from daBomb_c
|
||||
/* 0x290 */ request_of_phase_process_class mPhs;
|
||||
/* 0x298 */ J3DModel* mpModel;
|
||||
/* 0x29C */ mDoExt_bckAnm mBck0;
|
||||
/* 0x2AC */ mDoExt_brkAnm mBrk0;
|
||||
/* 0x2C4 */ dBgS_BombAcch mAcch;
|
||||
/* 0x488 */ dBgS_AcchCir mCir;
|
||||
/* 0x4C8 */ dBgS_ObjGndChk_Yogan mGndChk;
|
||||
/* 0x51C */ f32 field_0x51C;
|
||||
/* 0x520 */ f32 field_0x520;
|
||||
/* 0x524 */ bool field_0x524;
|
||||
/* 0x525 */ bool mbWaterIn;
|
||||
/* 0x526 */ u8 field_0x526;
|
||||
/* 0x528 */ f32 field_0x528;
|
||||
/* 0x52C */ dCcD_Stts mStts;
|
||||
/* 0x568 */ dCcD_Sph mSph;
|
||||
/* 0x694 */ int field_0x694;
|
||||
/* 0x698 */ int field_0x698;
|
||||
|
||||
FuseSmokeCB_c mSmoke;
|
||||
FuseSparksCB_c mSparks;
|
||||
cXyz field_0x6C0;
|
||||
cXyz field_0x6CC;
|
||||
cXyz field_0x6D8;
|
||||
Env_c mEnv;
|
||||
int field_0x738;
|
||||
int field_0x73C;
|
||||
u8 field_0x740;
|
||||
u8 field_0x741;
|
||||
u8 field_0x742;
|
||||
u8 field_0x743;
|
||||
bool field_0x744;
|
||||
bool field_0x745;
|
||||
cXyz field_0x748;
|
||||
Mtx field_0x754;
|
||||
/* 0x69C */ FuseSmokeCB_c mSmoke;
|
||||
/* 0x6B4 */ FuseSparksCB_c mSparks;
|
||||
/* 0x6C0 */ cXyz field_0x6C0;
|
||||
/* 0x6CC */ cXyz field_0x6CC;
|
||||
/* 0x6D8 */ cXyz field_0x6D8;
|
||||
/* 0x6E4 */ Env_c mEnv;
|
||||
/* 0x738 */ int field_0x738;
|
||||
/* 0x73C */ int field_0x73C;
|
||||
/* 0x740 */ u8 field_0x740;
|
||||
/* 0x741 */ u8 field_0x741;
|
||||
/* 0x742 */ u8 field_0x742;
|
||||
/* 0x743 */ u8 field_0x743;
|
||||
/* 0x744 */ bool field_0x744;
|
||||
/* 0x745 */ bool field_0x745;
|
||||
/* 0x748 */ cXyz field_0x748;
|
||||
/* 0x754 */ Mtx field_0x754;
|
||||
/* 0x784 */ f32 field_0x784;
|
||||
/* 0x788 */ f32 field_0x788;
|
||||
/* 0x78C */ f32 field_0x78C;
|
||||
/* 0x790 */ f32 field_0x790;
|
||||
/* 0x794 */ f32 field_0x794;
|
||||
/* 0x798 */ f32 field_0x798;
|
||||
/* 0x79C */ f32 field_0x79C;
|
||||
/* 0x7A0 */ f32 field_0x7A0;
|
||||
/* 0x7A4 */ f32 field_0x7A4;
|
||||
/* 0x7A8 */ s32 field_0x7A8;
|
||||
|
||||
static dCcD_SrcSph M_sph_src;
|
||||
};
|
||||
}; // Size 0x7AC
|
||||
}
|
||||
|
||||
#endif /* D_A_BOMB_2_H */
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
|
||||
f32 GetWallH() { return m_wall_h; }
|
||||
f32 GetWallR() { return m_wall_r; }
|
||||
s16 GetWallAngleY() { return m_wall_angle_y; }
|
||||
void SetWallH(f32 h) { m_wall_h = h; }
|
||||
void ClrWallHDirect() { m_flags &= ~WALL_H_DIRECT; }
|
||||
bool ChkWallHit() { return m_flags & WALL_HIT; }
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
dBgS_ObjGndChk() { SetObj(); }
|
||||
|
||||
virtual ~dBgS_ObjGndChk() {}
|
||||
};
|
||||
}; // Size: 0x54
|
||||
|
||||
class dBgS_ObjGndChk_Yogan : public dBgS_ObjGndChk {
|
||||
public:
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
}
|
||||
|
||||
/* 806bf53c */ virtual ~dBgS_ObjGndChk_Yogan();
|
||||
};
|
||||
}; // Size: 0x54
|
||||
|
||||
class dBgS_ObjGndChk_Wtr : public dBgS_ObjGndChk {
|
||||
public:
|
||||
|
||||
@@ -1596,6 +1596,16 @@ inline JPABaseEmitter* dComIfGp_particle_setToon(u16 particleID, const cXyz* pos
|
||||
pPrmColor, pEnvColor, pScale2D);
|
||||
}
|
||||
|
||||
inline JPABaseEmitter* dComIfGp_particle_setToonP1(u16 particleID, const cXyz* pos,
|
||||
const csXyz* angle, const cXyz* scale, u8 alpha,
|
||||
dPa_levelEcallBack* pCallBack, s8 setupInfo,
|
||||
const GXColor* pPrmColor, const GXColor* pEnvColor,
|
||||
const cXyz* pScale2D) {
|
||||
dPa_control_c* pParticle = g_dComIfG_gameInfo.play.getParticle();
|
||||
return pParticle->setToonP1(particleID, pos, angle, scale, alpha, pCallBack, setupInfo,
|
||||
pPrmColor, pEnvColor, pScale2D);
|
||||
}
|
||||
|
||||
inline JPABaseEmitter* dComIfGp_particle_setProjection(u16 particleID, const cXyz* pos, const csXyz* angle,
|
||||
const cXyz* scale, u8 alpha,
|
||||
dPa_levelEcallBack* pCallBack, s8 setupInfo,
|
||||
|
||||
+36
-12
@@ -510,7 +510,7 @@ void daBomb_c::bgCrrPos() {
|
||||
|
||||
void daBomb_c::bgCrrPos_lava() {
|
||||
cXyz temp(current.pos.x, next.pos.y + 1.0f, current.pos.z);
|
||||
mGndChk.GetPointP() = temp;
|
||||
mGndChk.SetPos(&temp);
|
||||
|
||||
field_0x554.x = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
}
|
||||
@@ -546,9 +546,33 @@ bool daBomb_c::chk_dead_zone() {
|
||||
return mAcch.GetGroundH() == -1.0e9f && field_0x554.y == -1.0e9f && field_0x554.x == -1.0e9f;
|
||||
}
|
||||
|
||||
/* 800DA7CC-800DA8C8 .text bound__8daBomb_cFf */
|
||||
void daBomb_c::bound(f32) {
|
||||
/* Nonmatching */
|
||||
void daBomb_c::bound(f32 param_1) {
|
||||
if(mAcch.ChkWallHit()) {
|
||||
speedF *= 0.8f;
|
||||
current.angle.y = (mCir.GetWallAngleY() * 2) - (current.angle.y - 0x8000); //+ 0x10000 - 0x8000 generates the addis but seems fake
|
||||
}
|
||||
|
||||
if(mAcch.ChkGroundLanding()) {
|
||||
daObj::make_land_effect(this, &mAcch.m_gnd, 0.6f);
|
||||
param_1 *= -0.6f;
|
||||
if(param_1 < 19.5f) {
|
||||
field_0x780 = 0;
|
||||
}
|
||||
else {
|
||||
speedF *= 0.9f;
|
||||
if(param_1 > 13.0f) {
|
||||
speed.y = 13.0f;
|
||||
}
|
||||
else {
|
||||
speed.y = param_1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(mAcch.ChkGroundHit()) {
|
||||
cLib_addCalc(&speedF, 0.0f, 0.5f, 5.5f, 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 800DA8C8-800DA9DC .text set_real_shadow_flag__8daBomb_cFv */
|
||||
@@ -619,23 +643,23 @@ void daBomb_c::setFuseEffect() {
|
||||
mFusePos2 = mFusePos;
|
||||
mFusePos3 = mFusePos;
|
||||
|
||||
dComIfGp_particle_setToon(0x11, &mFusePos, 0, &mScale, 0xFF, &mSparks, -1, 0, 0, 0);
|
||||
dComIfGp_particle_setToonP1(0x2012, &mFusePos, 0, &mScale, 0xDC, &mSmoke, -1, 0, 0, 0);
|
||||
mSmoke.field_0x0C = &mFusePos2;
|
||||
mSmoke.field_0x10 = &mFusePos3;
|
||||
mSmoke.field_0x04 = 0x14;
|
||||
dComIfGp_particle_setP1(0x11, &mFusePos, 0, &mScale, 0xFF, &mSparks, -1, 0, 0, 0);
|
||||
dComIfGp_particle_setToonP1(0x2012, &mFusePos, 0, &mScale, 0xDC, &mSmoke, -1, 0, 0, 0);
|
||||
mSmoke.field_0x0C = &mFusePos2;
|
||||
mSmoke.field_0x10 = &mFusePos3;
|
||||
mSmoke.field_0x04 = 0x14;
|
||||
}
|
||||
}
|
||||
|
||||
void daBomb_c::eff_explode_normal(const csXyz* rotation) {
|
||||
dComIfGp_particle_setToon(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
dComIfGp_particle_setP1(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
g_dComIfG_gameInfo.play.getParticle()->setBombSmoke(0x2009, ¤t.pos, 0, &mScale, 0xFF);
|
||||
g_dComIfG_gameInfo.play.getParticle()->setBombSmoke(0x200A, ¤t.pos, 0, &mScale, 0xFF);
|
||||
dComIfGp_particle_setToonP1(0x2008, ¤t.pos, 0, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
}
|
||||
|
||||
void daBomb_c::eff_explode_cheap(const csXyz* rotation) {
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_setToon(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_setP1(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
if(emitter) {
|
||||
emitter->mLifeTime = 0xC;
|
||||
emitter->mGlobalScale2D.set(0.5f, 0.67f, 1.0f);
|
||||
@@ -682,7 +706,7 @@ int daBomb_c::procExplode_init() {
|
||||
cXyz temp3;
|
||||
dBgS_ObjGndChk gndCheck;
|
||||
temp3.set(current.pos.x, current.pos.y + 1.0f, current.pos.z);
|
||||
gndCheck.GetPointP().set(current.pos.x, current.pos.y + 1.0f, current.pos.z);
|
||||
gndCheck.SetPos(&temp3);
|
||||
|
||||
if(dComIfG_Bgsp()->GroundCross(&gndCheck) > temp2 || current.pos.y > temp2 + 50.0f) {
|
||||
temp = 0;
|
||||
|
||||
+229
-65
@@ -28,10 +28,25 @@ namespace daBomb2 {
|
||||
f32 field_0x24;
|
||||
f32 field_0x28;
|
||||
f32 field_0x2C;
|
||||
f32 field_0x30;
|
||||
f32 field_0x34;
|
||||
f32 field_0x38;
|
||||
f32 field_0x3C;
|
||||
f32 field_0x40;
|
||||
f32 field_0x44;
|
||||
f32 field_0x48;
|
||||
f32 field_0x4C;
|
||||
f32 field_0x50;
|
||||
f32 field_0x54;
|
||||
f32 field_0x58;
|
||||
f32 field_0x5C;
|
||||
f32 field_0x60;
|
||||
f32 field_0x64;
|
||||
f32 field_0x68;
|
||||
};
|
||||
|
||||
const AttrType L_attr = {
|
||||
"VbakH", 0x920, 0x96, 0x1E, 2.9f, -100.0f, -0.6f, 19.5f, 13.0f, 0.1f, 0.5f, 20.0f, 25.0f
|
||||
"VbakH", 0x920, 0x96, 0x1E, 2.9f, -100.0f, -0.6f, 19.5f, 13.0f, 0.1f, 0.5f, 20.0f, 25.0f, 0.002f, 0.0005f, 140.0f, 100.0f, 180.0f, 50.0f, 2.0f, 0.3f, 0.03f, 0.1f, 0.4f, 0.5f, -0.005f, 1.5f, 0.6f
|
||||
};
|
||||
}
|
||||
|
||||
@@ -171,12 +186,11 @@ namespace daBomb2 {
|
||||
mpEmitter = param_1;
|
||||
}
|
||||
|
||||
/* 800DDB88-800DDBAC .text solidHeapCB__Q27daBomb25Act_cFP10fopAc_ac_c */
|
||||
int Act_c::solidHeapCB(fopAc_ac_c* i_this) {
|
||||
return static_cast<Act_c*>(i_this)->create_heap();
|
||||
}
|
||||
|
||||
int Act_c::create_heap_nut() {
|
||||
bool Act_c::create_heap_nut() {
|
||||
const char* resName = L_attr.resName;
|
||||
|
||||
J3DModelData* mdl_data = (J3DModelData*)dComIfG_getObjectRes(resName, 0xC);
|
||||
@@ -191,15 +205,10 @@ namespace daBomb2 {
|
||||
JUT_ASSERT(0x314, brk_data != 0);
|
||||
int temp3 = mBrk0.init(mdl_data, brk_data, true, 0, 1.0f, 0, -1, false, 0);
|
||||
|
||||
int ret = 0;
|
||||
if(mpModel && temp && temp3) {
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return mpModel && temp && temp3;
|
||||
}
|
||||
|
||||
int Act_c::create_heap() {
|
||||
bool Act_c::create_heap() {
|
||||
return create_heap_nut();
|
||||
}
|
||||
|
||||
@@ -365,7 +374,7 @@ namespace daBomb2 {
|
||||
/* 800DE8A8-800DE914 .text bgCrrPos_lava__Q27daBomb25Act_cFv */
|
||||
void Act_c::bgCrrPos_lava() {
|
||||
cXyz temp(current.pos.x, next.pos.y + 1.0f, current.pos.z);
|
||||
mGndChk.GetPointP() = temp;
|
||||
mGndChk.SetPos(&temp);
|
||||
|
||||
field_0x51C = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
}
|
||||
@@ -402,9 +411,33 @@ namespace daBomb2 {
|
||||
current.roomNo = roomNo;
|
||||
}
|
||||
|
||||
/* 800DEAC4-800DEBD0 .text bound__Q27daBomb25Act_cFf */
|
||||
void Act_c::bound(float) {
|
||||
/* Nonmatching */
|
||||
void Act_c::bound(f32 param_1) {
|
||||
if(mAcch.ChkWallHit()) {
|
||||
speedF *= 0.8f;
|
||||
current.angle.y = (mCir.GetWallAngleY() * 2) - (current.angle.y - 0x8000); //+ 0x10000 - 0x8000 generates the addis but seems fake
|
||||
}
|
||||
|
||||
if(mAcch.ChkGroundLanding()) {
|
||||
daObj::make_land_effect(this, &mAcch.m_gnd, L_attr.field_0x68);
|
||||
param_1 *= L_attr.field_0x14;
|
||||
if(param_1 < L_attr.field_0x18) {
|
||||
field_0x741 = 0;
|
||||
}
|
||||
else {
|
||||
speedF *= 0.9f;
|
||||
if(param_1 > L_attr.field_0x1C) {
|
||||
speed.y = L_attr.field_0x1C;
|
||||
}
|
||||
else {
|
||||
speed.y = param_1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(mAcch.ChkGroundHit()) {
|
||||
cLib_addCalc(&speedF, 0.0f, 0.5f, 5.5f, 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Act_c::set_nut_exp_interval() {
|
||||
@@ -446,7 +479,7 @@ namespace daBomb2 {
|
||||
}
|
||||
|
||||
void Act_c::eff_explode_normal(const csXyz* rotation) {
|
||||
dComIfGp_particle_setToon(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
dComIfGp_particle_setP1(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
g_dComIfG_gameInfo.play.getParticle()->setBombSmoke(0x2009, ¤t.pos, 0, &mScale, 0xFF);
|
||||
g_dComIfG_gameInfo.play.getParticle()->setBombSmoke(0x200A, ¤t.pos, 0, &mScale, 0xFF);
|
||||
dComIfGp_particle_setToonP1(0x2008, ¤t.pos, 0, &mScale, 0xFF, 0, -1, 0, 0, 0);
|
||||
@@ -468,14 +501,32 @@ namespace daBomb2 {
|
||||
field_0x744 = 0;
|
||||
}
|
||||
|
||||
/* 800DF1F0-800DF314 .text eff_fuse_start__Q27daBomb25Act_cFv */
|
||||
void Act_c::eff_fuse_start() {
|
||||
/* Nonmatching */
|
||||
if(!field_0x744) {
|
||||
field_0x744 = 1;
|
||||
|
||||
field_0x6C0.x = current.pos.x;
|
||||
field_0x6C0.y = current.pos.y + 60.0f;
|
||||
field_0x6C0.z = current.pos.z;
|
||||
field_0x6CC = field_0x6C0;
|
||||
field_0x6D8 = field_0x6C0;
|
||||
|
||||
dComIfGp_particle_setP1(0x11, &field_0x6C0, 0, &mScale, 0xFF, &mSparks, -1, 0, 0, 0);
|
||||
dComIfGp_particle_setToonP1(0x2012, &field_0x6C0, 0, &mScale, 0xDC, &mSmoke, -1, 0, 0, 0);
|
||||
mSmoke.setOldPosP(&field_0x6CC, &field_0x6D8);
|
||||
}
|
||||
}
|
||||
|
||||
/* 800DF314-800DF3DC .text eff_fuse_move__Q27daBomb25Act_cFv */
|
||||
void Act_c::eff_fuse_move() {
|
||||
/* Nonmatching */
|
||||
static cXyz fuse_offset(0.0f, 60.0f, 5.0f);
|
||||
|
||||
field_0x6D8 = field_0x6CC;
|
||||
field_0x6CC = field_0x6C0;
|
||||
mDoMtx_stack_c::multVec(&fuse_offset, &field_0x6C0);
|
||||
|
||||
if(field_0x744) {
|
||||
se_ignition();
|
||||
}
|
||||
}
|
||||
|
||||
/* 800DF3DC-800DF41C .text eff_fuse_end__Q27daBomb25Act_cFv */
|
||||
@@ -630,12 +681,7 @@ namespace daBomb2 {
|
||||
}
|
||||
|
||||
bool Act_c::chk_exp_pre() {
|
||||
bool ret = false;
|
||||
if(chk_exp_cc() || chk_exp_timer()) {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return chk_exp_cc() || chk_exp_timer();
|
||||
}
|
||||
|
||||
bool Act_c::chk_exp_post() {
|
||||
@@ -656,97 +702,197 @@ namespace daBomb2 {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800DFDB0-800DFDC0 .text on_carry__Q27daBomb25Act_cFv */
|
||||
void Act_c::on_carry() {
|
||||
/* Nonmatching */
|
||||
mAttentionInfo.setFlag(0x10);
|
||||
}
|
||||
|
||||
/* 800DFDC0-800DFDD0 .text off_carry__Q27daBomb25Act_cFv */
|
||||
void Act_c::off_carry() {
|
||||
/* Nonmatching */
|
||||
mAttentionInfo.mFlags &= ~0x10;
|
||||
}
|
||||
|
||||
/* 800DFDD0-800DFDF8 .text mode_wait_init__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_wait_init() {
|
||||
/* Nonmatching */
|
||||
field_0x694 = 0;
|
||||
mGravity = L_attr.gravity;
|
||||
mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
}
|
||||
|
||||
/* 800DFDF8-800DFF40 .text mode_wait__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_wait() {
|
||||
/* Nonmatching */
|
||||
if(chk_exp_pre()) {
|
||||
mode_explode_init();
|
||||
mode_explode();
|
||||
}
|
||||
else {
|
||||
if(fopAcM_checkCarryNow(this)) {
|
||||
mode_carry_init();
|
||||
mode_carry();
|
||||
}
|
||||
else {
|
||||
bool temp = daObj::PrmAbstract(this, PRM_1_W, PRM_1_S);
|
||||
f32 yVel = 0.0f;
|
||||
if(!temp) {
|
||||
if(!field_0x745) {
|
||||
posMoveF();
|
||||
}
|
||||
|
||||
yVel = speed.y;
|
||||
bgCrrPos();
|
||||
}
|
||||
|
||||
if(chk_exp_post()) {
|
||||
mode_explode_init();
|
||||
}
|
||||
else {
|
||||
if(chk_sink_post()) {
|
||||
mode_sink_init();
|
||||
}
|
||||
else {
|
||||
if(!field_0x740) {
|
||||
if(temp) {
|
||||
off_carry();
|
||||
}
|
||||
else {
|
||||
bound(yVel);
|
||||
if(mAcch.ChkGroundHit()) {
|
||||
on_carry();
|
||||
}
|
||||
else {
|
||||
off_carry();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 800DFF40-800DFFA4 .text mode_carry_init__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_carry_init() {
|
||||
field_0x694 = 1;
|
||||
speedF = 0.0f;
|
||||
speed = cXyz::Zero;
|
||||
off_carry();
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
}
|
||||
|
||||
/* 800DFFA4-800E006C .text mode_carry__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_carry() {
|
||||
carry_fuse_start();
|
||||
chk_exp_pre();
|
||||
if(chk_exp_pre()) {
|
||||
mode_explode_init();
|
||||
mode_explode();
|
||||
}
|
||||
else {
|
||||
if(!fopAcM_checkCarryNow(this)) {
|
||||
if(speedF > 0.0f) {
|
||||
field_0x741 = 1;
|
||||
field_0x7A8 = 2;
|
||||
}
|
||||
|
||||
bgCrrPos();
|
||||
mode_wait_init();
|
||||
mode_wait();
|
||||
}
|
||||
else {
|
||||
cXyz temp = current.pos;
|
||||
bgCrrPos();
|
||||
current.pos = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 800E006C-800E0150 .text mode_explode_init__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_explode_init() {
|
||||
field_0x694 = 2;
|
||||
camera_lockoff();
|
||||
eff_fuse_end();
|
||||
mEnv.set(current.pos);
|
||||
speedF = 0.0f;
|
||||
speed = cXyz::Zero;
|
||||
mGravity = 0.0f;
|
||||
off_carry();
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
fopAcM_cancelCarryNow(this);
|
||||
field_0x738 = 0;
|
||||
field_0x73C = 4;
|
||||
dComIfGp_getVibration().StartShock(7, -0x21, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
/* 800E0150-800E01A8 .text mode_explode__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_explode() {
|
||||
mEnv.proc(current.pos);
|
||||
if(mEnv.is_end()) {
|
||||
field_0x524 = 4;
|
||||
if(!field_0x73C && mEnv.is_end()) {
|
||||
field_0x740 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800E01A8-800E0238 .text mode_sink_init__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_sink_init() {
|
||||
field_0x694 = 3;
|
||||
speed.y *= 0.8f;
|
||||
speedF *= 0.8f;
|
||||
mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET);
|
||||
off_carry();
|
||||
fopAcM_cancelCarryNow(this);
|
||||
field_0x524 = 4;
|
||||
field_0x698 = 4;
|
||||
fopAcM_getWaterY(¤t.pos, &field_0x528);
|
||||
}
|
||||
|
||||
/* 800E0238-800E02D0 .text mode_sink__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_sink() {
|
||||
/* Nonmatching */
|
||||
f32 temp;
|
||||
if(fopAcM_getWaterY(¤t.pos, &temp) && field_0x528 != -1.0e9f && --field_0x698 > 0) {
|
||||
current.pos.y += temp - field_0x528;
|
||||
field_0x528 = temp;
|
||||
posMoveF();
|
||||
}
|
||||
else {
|
||||
field_0x740 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800E02D0-800E03C4 .text mode_proc_call__Q27daBomb25Act_cFv */
|
||||
void Act_c::mode_proc_call() {
|
||||
/* Nonmatching */
|
||||
typedef void(Act_c::*procFunc)();
|
||||
static procFunc mode_proc[] = {
|
||||
&mode_wait,
|
||||
&mode_carry,
|
||||
&mode_explode,
|
||||
&mode_sink,
|
||||
};
|
||||
|
||||
if(fopAcM_checkCarryNow(this) && field_0x694 != 1) {
|
||||
mode_carry_init();
|
||||
}
|
||||
|
||||
(this->*mode_proc[field_0x694])();
|
||||
set_real_shadow_flag();
|
||||
}
|
||||
|
||||
/* 800E03C4-800E03FC .text tensor_init__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_init() {
|
||||
mDoMtx_identity(field_0x754);
|
||||
vib_init();
|
||||
}
|
||||
|
||||
/* 800E03FC-800E0430 .text vib_init__Q27daBomb25Act_cFv */
|
||||
void Act_c::vib_init() {
|
||||
/* Nonmatching */
|
||||
field_0x784 = 0.0f;
|
||||
field_0x788 = 0.0f;
|
||||
field_0x78C = 0.0f;
|
||||
field_0x790 = 0.0f;
|
||||
field_0x794 = 0.0f;
|
||||
field_0x798 = 0.0f;
|
||||
field_0x79C = 0.0f;
|
||||
field_0x7A0 = 0.0f;
|
||||
field_0x7A4 = 0.0f;
|
||||
field_0x7A8 = 0.0f;
|
||||
}
|
||||
|
||||
/* 800E0430-800E04FC .text vib_proc__Q27daBomb25Act_cFv */
|
||||
void Act_c::vib_proc() {
|
||||
/* Nonmatching */
|
||||
|
||||
}
|
||||
|
||||
/* 800E04FC-800E0554 .text set_vib_tensor__Q27daBomb25Act_cFv */
|
||||
void Act_c::set_vib_tensor() {
|
||||
/* Nonmatching */
|
||||
cXyz temp(field_0x790, 1.0f, field_0x78C);
|
||||
Quaternion quat;
|
||||
daObj::quat_rotBaseY2(&quat, temp);
|
||||
mDoMtx_quat(&field_0x754[0], &quat);
|
||||
}
|
||||
|
||||
/* 800E0554-800E0588 .text tensor_wait__Q27daBomb25Act_cFv */
|
||||
@@ -759,32 +905,49 @@ namespace daBomb2 {
|
||||
}
|
||||
}
|
||||
|
||||
/* 800E0588-800E05D8 .text tensor_wait_drop__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_wait_drop() {
|
||||
/* Nonmatching */
|
||||
if(field_0x7A8 > 0) {
|
||||
field_0x79C = speed.z * L_attr.field_0x60;
|
||||
field_0x7A0 = speed.x * L_attr.field_0x60;
|
||||
}
|
||||
|
||||
field_0x784 = 0.0f;
|
||||
field_0x788 = 0.0f;
|
||||
field_0x7A4 = L_attr.field_0x54;
|
||||
}
|
||||
|
||||
/* 800E05D8-800E0664 .text tensor_wait_ground__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_wait_ground() {
|
||||
/* Nonmatching */
|
||||
cM3dGPla* pNormal = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd.GetBgIndex(), mAcch.m_gnd.GetPolyIndex());
|
||||
if(pNormal) {
|
||||
field_0x784 = pNormal->mNormal.z * L_attr.field_0x64;
|
||||
field_0x788 = pNormal->mNormal.x * L_attr.field_0x64;
|
||||
}
|
||||
else {
|
||||
field_0x784 = 0.0f;
|
||||
field_0x788 = 0.0f;
|
||||
}
|
||||
|
||||
field_0x7A4 = L_attr.field_0x58;
|
||||
}
|
||||
|
||||
/* 800E0664-800E0684 .text tensor_carry__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_carry() {
|
||||
/* Nonmatching */
|
||||
field_0x784 = 0.0f;
|
||||
field_0x788 = 0.0f;
|
||||
field_0x7A4 = L_attr.field_0x58;
|
||||
}
|
||||
|
||||
/* 800E0684-800E06A4 .text tensor_explode__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_explode() {
|
||||
/* Nonmatching */
|
||||
field_0x784 = 0.0f;
|
||||
field_0x788 = 0.0f;
|
||||
field_0x7A4 = L_attr.field_0x58;
|
||||
}
|
||||
|
||||
/* 800E06A4-800E06C4 .text tensor_sink__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_sink() {
|
||||
/* Nonmatching */
|
||||
field_0x784 = 0.0f;
|
||||
field_0x788 = 0.0f;
|
||||
field_0x7A4 = L_attr.field_0x58;
|
||||
}
|
||||
|
||||
/* 800E06C4-800E07B8 .text tensor_proc_call__Q27daBomb25Act_cFv */
|
||||
void Act_c::tensor_proc_call() {
|
||||
typedef void(Act_c::*procFunc)();
|
||||
static procFunc tensor_proc[] = {
|
||||
@@ -846,7 +1009,7 @@ namespace daBomb2 {
|
||||
}
|
||||
|
||||
void Act_c::draw_shadow() {
|
||||
static f32 mult[] = {
|
||||
static const f32 mult[] = {
|
||||
2.08f,
|
||||
1.8f,
|
||||
1.5f,
|
||||
@@ -900,6 +1063,7 @@ namespace daBomb2 {
|
||||
return true;
|
||||
}
|
||||
|
||||
//global visibility according to objdiff
|
||||
actor_method_class Mthd_Table = {
|
||||
(process_method_func)Mthd_Create,
|
||||
(process_method_func)Mthd_Delete,
|
||||
|
||||
@@ -257,7 +257,7 @@ JPABaseEmitter* dPa_control_c::set(unsigned char, unsigned short, const cXyz*, c
|
||||
}
|
||||
|
||||
/* 8007D378-8007D414 .text setBombSmoke__13dPa_control_cFUsPC4cXyzPC5csXyzPC4cXyzUc */
|
||||
void dPa_control_c::setBombSmoke(unsigned short, const cXyz*, const csXyz*, const cXyz*, unsigned char) {
|
||||
JPABaseEmitter* dPa_control_c::setBombSmoke(unsigned short, const cXyz*, const csXyz*, const cXyz*, unsigned char) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user