boko closer to matching, various documentation, enum/inline/struct fixes

This commit is contained in:
LagoLunatic
2025-08-26 17:05:59 -04:00
parent 93cdcc672d
commit 594a9b3fd0
17 changed files with 293 additions and 310 deletions
+1 -1
View File
@@ -430,7 +430,7 @@ public:
protected:
/* 0x10 */ u32 mType;
/* 0x14 */ u8 mAtp;
/* 0x14 */ u8 mAtp; // AtPoint, amount of damage done when attacking
}; // size = 0x18
STATIC_ASSERT(0x18 == sizeof(cCcD_ObjAt));
+35 -11
View File
@@ -24,6 +24,27 @@ struct LineKe {
class daBoko_c : public fopAc_ac_c {
public:
enum {
/* 0x0 */ Type_BOKO_STICK_e = 0x0,
/* 0x1 */ Type_MACHETE_e = 0x1,
/* 0x2 */ Type_STALFOS_MACE_e = 0x2,
/* 0x3 */ Type_DARKNUT_SWORD_e = 0x3,
/* 0x4 */ Type_MOBLIN_SPEAR_e = 0x4,
/* 0x5 */ Type_PGANON_SWORD_e = 0x5,
Type_COUNT_e,
/* 0x7 */ Type_UNK_7_e = 0x7, // TODO: What is this supposed to be? Lit torch? Is this ever set or only read?
};
enum {
/* 0x0 */ Mode_WAIT_e = 0x0,
/* 0x1 */ Mode_MOVE_e = 0x1,
/* 0x2 */ Mode_ENEMY_CARRY_e = 0x2,
/* 0x3 */ Mode_PLAYER_CARRY_e = 0x3,
/* 0x4 */ Mode_4_e = 0x4,
/* 0x5 */ Mode_5_e = 0x5,
/* 0x6 */ Mode_THROW_e = 0x6,
};
static u32 m_bound_se[6];
static u32 m_heap_size[6];
static char* m_arc_name[6];
@@ -31,7 +52,7 @@ public:
static Vec m_cull_max[6];
typedef BOOL (daBoko_c::*ProcFunc_t)();
daBoko_c();
static Vec m_top_offset[6];
@@ -54,22 +75,25 @@ public:
f32 getBlurRate() { return m_blur_rate[fopAcM_GetParam(this)]; }
u8 getSeType() { return m_se_type[fopAcM_GetParam(this)]; }
int getFlameTimer() { return m2C4; }
void getNowMode() {}
void setNowMode(int) {}
int getFlameTimer() { return mFlameTimer; }
u8 getNowMode() { return mNowMode; }
void setNowMode(int mode) { mNowMode = mode; }
void moveStateInit(f32 speedForward, f32 speedY, s16 angleY) {
speed.y = speedY;
speedF = speedForward;
current.angle.y = angleY;
}
void onFloorFlg() {} // maybe: m2BC = 1;
void onFloorFlg() { mbFloorFlg = true; }
void setMatrix(Mtx mtx) {
if (mpModel) {
mpModel->setBaseTRMtx(mtx);
}
}
void setRotAngleSpeed(s16 speed) { m2C2 = speed; }
void setThrow(s16 param_0) { m2BA = param_0; }
void setThrow(s16 param_0) {
mbThrow = true;
m2CA = param_0;
}
void getTopPos(cXyz*);
void getBlurRootPos(cXyz*);
@@ -94,22 +118,22 @@ public:
BOOL createHeap();
cPhs_State create();
public:
private:
/* 0x290 */ request_of_phase_process_class mPhase;
/* 0x298 */ J3DModel* mpModel;
/* 0x29C */ mDoExt_brkAnm mBrkAnm;
#if VERSION > VERSION_DEMO
/* 0x2B4 */ u32 m2B4;
#endif
/* 0x2B8 */ u8 mCurrentAction;
/* 0x2B8 */ u8 mNowMode;
/* 0x2B9 */ u8 m2B9;
/* 0x2BA */ u8 m2BA;
/* 0x2BA */ u8 mbThrow;
/* 0x2BB */ u8 m2BB;
/* 0x2BC */ u8 m2BC;
/* 0x2BC */ u8 mbFloorFlg;
/* 0x2BD */ u8 m2BD[0x2C0 - 0x2BD];
/* 0x2C0 */ s16 m2C0;
/* 0x2C2 */ s16 m2C2;
/* 0x2C4 */ s16 m2C4;
/* 0x2C4 */ s16 mFlameTimer;
/* 0x2C6 */ u8 m2C6[0x2C8 - 0x2C6];
/* 0x2C8 */ s16 m2C8;
/* 0x2CA */ s16 m2CA;
+1
View File
@@ -77,6 +77,7 @@ enum dCcG_CoRPrm_e {
enum dCcG_hitSe {
/* 0x01 */ dCcG_SE_UNK1 = 1,
/* 0x02 */ dCcG_SE_UNK2 = 2,
/* 0x03 */ dCcG_SE_UNK3 = 3,
/* 0x04 */ dCcG_SE_UNK4 = 4,
/* 0x05 */ dCcG_SE_UNK5 = 5,
/* 0x06 */ dCcG_SE_UNK6 = 6,
+1 -1
View File
@@ -43,7 +43,7 @@ enum daPy__PlayerStatus0 {
daPyStts0_UNK10_e = 0x00000010,
daPyStts0_UNK20_e = 0x00000020,
daPyStts0_UNK40_e = 0x00000040,
daPyStts0_UNK80_e = 0x00000080,
daPyStts0_UNK80_e = 0x00000080, // Maybe inside a Baba Bud before being spat out?
daPyStts0_UNK100_e = 0x00000100,
daPyStts0_UNK200_e = 0x00000200,
daPyStts0_UNK400_e = 0x00000400,
+6 -10
View File
@@ -834,24 +834,20 @@ public:
/* 0x50 */ int mVrboxNum;
};
struct dStage_darkStatus_c_0C {
/* 0x00 */ u8 m00[4];
}; // size = 0x4;
class dStage_darkStatus_c {
public:
/* 0x00 */ u8 mEnvAlpha;
/* 0x01 */ u8 mBokoAlpha[2];
/* 0x04 */ f32 mBokoScale[2];
/* 0x0C */ dStage_darkStatus_c_0C field_0xc;
/* 0x10 */ f32 field_0x10[2];
/* 0x01 */ u8 mNonAlpha[2];
/* 0x04 */ f32 mNonScale[2];
/* 0x0C */ u8 mBokoAlpha[4];
/* 0x10 */ f32 mBokoScale[2];
/* 0x18 */ f32 field_0x18[2];
u8 getEnvAlpha() const { return mEnvAlpha; }
u8 getNonAlpha(int i) const { return mNonAlpha[i]; }
f32 getNonScale(int i) const { return mNonScale[i]; }
u8 getBokoAlpha(int i) const { return mBokoAlpha[i]; }
f32 getBokoScale(int i) const { return mBokoScale[i]; }
// void getNonAlpha(int i) const {}
// void getNonScale(int i) const {}
}; // size = 0x20
class dBgW;
+3 -2
View File
@@ -22,6 +22,7 @@
#include "d/actor/d_a_npc_os.h"
#include "d/actor/d_a_npc_md.h"
#include "d/actor/d_a_npc_cb1.h"
#include "d/actor/d_a_boko.h"
static dCcD_SrcCyl l_cyl_src = {
// dCcD_SrcGObjInf
@@ -1985,13 +1986,13 @@ BOOL daAgbsw0_c::MoveCheck(s16 conditionNo) {
break;
case 0x2D:
if(!daPy_getPlayerLinkActorClass()->checkGrabWeapon(1)) {
if(!daPy_getPlayerLinkActorClass()->checkGrabWeapon(daBoko_c::Type_MACHETE_e)) {
return FALSE;
}
break;
case 0x2E:
if(daPy_getPlayerLinkActorClass()->checkGrabWeapon(1)) {
if(daPy_getPlayerLinkActorClass()->checkGrabWeapon(daBoko_c::Type_MACHETE_e)) {
return FALSE;
}
+10 -11
View File
@@ -669,8 +669,7 @@ static s32 target_info_count;
static void* s_w_sub(void* param_1, void*) {
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BOKO) {
daBoko_c* boko = (daBoko_c*)param_1;
// TODO: enum for boko type
if (fopAcM_GetParam(boko) != 4 && !fopAcM_checkCarryNow(boko)) {
if (fopAcM_GetParam(boko) != daBoko_c::Type_MOBLIN_SPEAR_e && !fopAcM_checkCarryNow(boko)) {
if (target_info_count < (s32)ARRAY_SIZE(target_info)) {
target_info[target_info_count] = boko;
target_info_count++;
@@ -2816,7 +2815,7 @@ static void wepon_search(bk_class* i_this) {
if (i_this->m0300[1] == 24) {
if (boko != NULL && !fopAcM_checkCarryNow(boko)) {
i_this->m0B30 = 2;
if (fopAcM_GetParam(boko) == 0) {
if (fopAcM_GetParam(boko) == daBoko_c::Type_BOKO_STICK_e) {
i_this->m02D5 = 0;
i_this->m1040.SetAtType(AT_TYPE_UNK2000);
i_this->m1040.SetAtSe(dCcG_SE_UNK4);
@@ -4207,13 +4206,13 @@ static BOOL daBk_Execute(bk_class* i_this) {
}
if (i_this->m1214 != 0) {
daBoko_c* temp = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
if (temp != NULL) {
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
if (boko != NULL) {
i_this->m1214 = 0;
i_this->m0B30 = 1;
fopAcM_setCarryNow(temp, FALSE);
fopAcM_setCarryNow(boko, FALSE);
MtxTrans(-10000.0f, -10000.0f, 0.0f, 0);
temp->setMatrix(*calc_mtx);
boko->setMatrix(*calc_mtx);
}
}
@@ -4359,9 +4358,9 @@ static BOOL daBk_Execute(bk_class* i_this) {
enemy_fire(&i_this->mEnemyFire);
if (i_this->m0B30 != 0) {
daBoko_c* r29 = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
if (r29 != NULL) {
if (fopAcM_checkCarryNow(r29)) {
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
if (boko != NULL) {
if (fopAcM_checkCarryNow(boko)) {
if (i_this->m0B7B == 0) {
int jointIdx = 0x2C; // buki joint
MTXCopy(i_this->mpMorf->getModel()->getAnmMtx(jointIdx), *calc_mtx);
@@ -4394,7 +4393,7 @@ static BOOL daBk_Execute(bk_class* i_this) {
s16 angleX = 0x5B1B + REG8_S(5);
cMtx_XrotM(*calc_mtx, angleX);
}
r29->setMatrix(*calc_mtx);
boko->setMatrix(*calc_mtx);
cXyz sp64;
sp64.x = REG8_F(12);
sp64.y = REG8_F(13);
+127 -160
View File
@@ -20,95 +20,48 @@
#include "SSystem/SComponent/c_counter.h"
u32 daBoko_c::m_bound_se[] = {
JA_SE_CM_BOKOBOU_BOUND, JA_SE_CM_NATA_BOUND, JA_SE_OBJ_ST_CLUB_FALL, JA_SE_OBJ_TN_SWORD_FALL, JA_SE_CM_LANCE_BOUND, JA_SE_OBJ_TN_SWORD_FALL
/* Type_BOKO_STICK_e */ JA_SE_CM_BOKOBOU_BOUND,
/* Type_MACHETE_e */ JA_SE_CM_NATA_BOUND,
/* Type_STALFOS_MACE_e */ JA_SE_OBJ_ST_CLUB_FALL,
/* Type_DARKNUT_SWORD_e */ JA_SE_OBJ_TN_SWORD_FALL,
/* Type_MOBLIN_SPEAR_e */ JA_SE_CM_LANCE_BOUND,
/* Type_PGANON_SWORD_e */ JA_SE_OBJ_TN_SWORD_FALL,
};
u32 daBoko_c::m_heap_size[] = {
0x2300,
0x1240,
0x1240,
0x1240,
#if VERSION == VERSION_DEMO
0x3000,
#else
0x4200,
#endif
0x2000
/* Type_BOKO_STICK_e */ 0x2300,
/* Type_MACHETE_e */ 0x1240,
/* Type_STALFOS_MACE_e */ 0x1240,
/* Type_DARKNUT_SWORD_e */ 0x1240,
/* Type_MOBLIN_SPEAR_e */ DEMO_SELECT(0x3000, 0x4200),
/* Type_PGANON_SWORD_e */ 0x2000
};
char* daBoko_c::m_arc_name[] = {
"Boko", /* Boko stick */
"Nata", /* Bokoblin machete */
"Club", /* Stalfos mace/club */
"Tkwn", /* Darknut sword */
"Spear", /* Moblin spear */
"Pgsw" /* Phantom Ganon's sword */
/* Type_BOKO_STICK_e */ "Boko",
/* Type_MACHETE_e */ "Nata",
/* Type_STALFOS_MACE_e */ "Club",
/* Type_DARKNUT_SWORD_e */ "Tkwn",
/* Type_MOBLIN_SPEAR_e */ "Spear",
/* Type_PGANON_SWORD_e */ "Pgsw"
};
Vec daBoko_c::m_cull_min[6] = {
{
-20.0f,
-10.0f,
-95.0f,
},
{
-20.0f,
-10.0f,
-95.0f,
},
{
-35.0f,
-35.0f,
-125.0f,
},
{
-45.0f,
-10.0f,
-145.0f,
},
{
-20.0f,
-20.0f,
-180.0f,
},
{
-50.0f,
-20.0f,
-140.0f,
},
Vec daBoko_c::m_cull_min[] = {
/* Type_BOKO_STICK_e */ {-20.0f, -10.0f, -95.0f},
/* Type_MACHETE_e */ {-20.0f, -10.0f, -95.0f},
/* Type_STALFOS_MACE_e */ {-35.0f, -35.0f, -125.0f},
/* Type_DARKNUT_SWORD_e */ {-45.0f, -10.0f, -145.0f},
/* Type_MOBLIN_SPEAR_e */ {-20.0f, -20.0f, -180.0f},
/* Type_PGANON_SWORD_e */ {-50.0f, -20.0f, -140.0f},
};
Vec daBoko_c::m_cull_max[6] = {
{
20.0f,
10.0f,
95.0f,
},
{
20.0f,
10.0f,
95.0f,
},
{
35.0f,
35.0f,
120.0f,
},
{
45.0f,
10.0f,
130.0f,
},
{
20.0f,
20.0f,
200.0f,
},
{
50.0f,
20.0f,
120.0f,
},
Vec daBoko_c::m_cull_max[] = {
/* Type_BOKO_STICK_e */ {20.0f, 10.0f, 95.0f},
/* Type_MACHETE_e */ {20.0f, 10.0f, 95.0f},
/* Type_STALFOS_MACE_e */ {35.0f, 35.0f, 120.0f},
/* Type_DARKNUT_SWORD_e */ {45.0f, 10.0f, 130.0f},
/* Type_MOBLIN_SPEAR_e */ {20.0f, 20.0f, 200.0f},
/* Type_PGANON_SWORD_e */ {50.0f, 20.0f, 120.0f},
};
static cXyz l_break_particle_offset(0.0f, 0.0f, 30.0f);
@@ -122,8 +75,12 @@ static daBoko_HIO_c l_HIO;
/* 000000EC-0000017C .text keDraw__8daBoko_cFv */
void daBoko_c::keDraw() {
#ifdef __MWERKS__
mpLineKe->lineMat.update(0xA, 1.25f, (GXColor){0xFF, 0x64, 0x00, 0xFF}, 2, &tevStr);
#else
GXColor color = {0xFF, 0x64, 0x00, 0xFF};
mpLineKe->lineMat.update(0xA, 1.25f, color, 2, &tevStr);
#endif
dComIfGd_set3DlineMat(&mpLineKe->lineMat);
}
@@ -223,49 +180,49 @@ BOOL daBoko_c::draw() {
mParticleCallBack.getEmitter()->clearStatus(4);
}
if (m2C4 != 0) {
dStage_darkStatus_c* pdVar4 = dStage_roomControl_c::getDarkStatus();
if (pdVar4 != NULL) {
if (mFlameTimer != 0) {
dStage_darkStatus_c* dark_stts = dStage_roomControl_c::getDarkStatus();
if (dark_stts != NULL) {
GXColor color = {0xEB, 0x7D, 0, 0};
dComIfGd_setAlphaModelColor(color);
s32 i;
for (i = 0; i < 2; i++) {
dComIfGd_setAlphaModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[i], pdVar4->field_0xc.m00[i]);
dComIfGd_setAlphaModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[i], dark_stts->getBokoAlpha(i));
}
if (mCurrentAction == 3 && dStage_roomControl_c::getDarkMode() != 0) {
if (getNowMode() == Mode_PLAYER_CARRY_e && dStage_roomControl_c::getDarkMode() != 0) {
for (s32 j = i; j < 4; j++) {
dComIfGd_setSpotModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[j], pdVar4->field_0xc.m00[j]);
dComIfGd_setSpotModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[j], dark_stts->getBokoAlpha(j));
}
}
}
}
if (mCurrentAction == 3 && player->checkPlayerNoDraw()) {
if (getNowMode() == Mode_PLAYER_CARRY_e && player->checkPlayerNoDraw()) {
return TRUE;
}
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
g_env_light.setLightTevColorType(mpModel, &tevStr);
if (fopAcM_GetParam(this) == 5) {
if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) {
mBrkAnm.entry(mpModel->getModelData());
}
mDoExt_modelEntryDL(mpModel);
if (fopAcM_GetParam(this) == 5) {
if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) {
mBrkAnm.remove(mpModel->getModelData());
}
#if VERSION > VERSION_DEMO
if (fopAcM_GetParam(this) == 2 && mCurrentAction != 3 && mCurrentAction != 2) {
if (fopAcM_GetParam(this) == Type_STALFOS_MACE_e && getNowMode() != Mode_PLAYER_CARRY_e && getNowMode() != Mode_ENEMY_CARRY_e) {
cXyz sp0C(current.pos.x, current.pos.y + 100.0f, current.pos.z);
m2B4 = dComIfGd_setShadow(m2B4, 1, mpModel, &sp0C, 400.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr);
}
#endif
if (&mpLineKe->lineMat != NULL) {
if (mpLineKe != NULL) {
keDraw();
}
return TRUE;
@@ -278,15 +235,15 @@ static BOOL daBoko_Draw(daBoko_c* i_this) {
/* 00000DE4-00000EB0 .text setTopRootPos__8daBoko_cFi */
void daBoko_c::setTopRootPos(int arg1) {
s32 iVar1 = fopAcM_GetParam(this);
s32 type = fopAcM_GetParam(this);
if (arg1 != 0) {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 5.0f, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
} else {
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
}
mDoMtx_stack_c::multVec(m_top_offset + iVar1, &m2D0);
mDoMtx_stack_c::multVec(m_root_offset + iVar1, &m2DC);
mDoMtx_stack_c::multVec(&m_top_offset[type], &m2D0);
mDoMtx_stack_c::multVec(&m_root_offset[type], &m2DC);
}
/* 00000EB0-00000F60 .text setBaseMatrix__8daBoko_cFv */
@@ -294,7 +251,7 @@ void daBoko_c::setBaseMatrix() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 5.0f, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
#if VERSION > VERSION_DEMO
if (fopAcM_GetParam(this) == 2) {
if (fopAcM_GetParam(this) == Type_STALFOS_MACE_e) {
mDoMtx_stack_c::XrotM(-1000);
mDoMtx_stack_c::transM(0.0f, 10.0f, 0.0f);
}
@@ -304,23 +261,24 @@ void daBoko_c::setBaseMatrix() {
/* 00000F60-00000FA4 .text checkNoDraw__8daBoko_cFv */
BOOL daBoko_c::checkNoDraw() {
return m2B9 || mCurrentAction == 4 || (mCurrentAction == 3 && dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK80_e));
return m2B9 || getNowMode() == Mode_4_e || (getNowMode() == Mode_PLAYER_CARRY_e && dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK80_e));
}
/* 00000FA4-00001340 .text setFlameEffect__8daBoko_cFv */
void daBoko_c::setFlameEffect() {
/* Nonmatching */
static const s16 base_angle[] = {150, 200, 180, 120};
dStage_darkStatus_c* pdVar3 = dStage_roomControl_c::getDarkStatus();
dStage_darkStatus_c* dark_stts = dStage_roomControl_c::getDarkStatus();
if (pdVar3 != NULL) {
if (dark_stts != NULL) {
for (s32 i = 0; i < 4; i++) {
cLib_addCalc2(&m7E4, cM_rndF(0.2f) + 1.0f, 0.5f, 0.01f);
f32 fVar10 = m7E4 * pdVar3->field_0x10[i];
f32 scale = m7E4 * dark_stts->getBokoScale(i);
s16 y = g_Counter.mTimer * base_angle[i];
mDoMtx_stack_c::transS(m2D0.x, m2D0.y, m2D0.z);
mDoMtx_stack_c::ZXYrotM(0, y, y);
mDoMtx_stack_c::scaleM(fVar10, fVar10, fVar10);
mDoMtx_stack_c::scaleM(scale, scale, scale);
MTXCopy(mDoMtx_stack_c::get(), mAlphaModelMtx[i]);
}
}
@@ -413,7 +371,7 @@ BOOL daBoko_c::procWait_init() {
m2C2 = 0;
mCurrentProc = &daBoko_c::procWait;
cLib_onBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
mCurrentAction = 0;
setNowMode(Mode_WAIT_e);
fopAcM_cancelCarryNow(this);
gravity = -3.0f;
return TRUE;
@@ -426,13 +384,13 @@ BOOL daBoko_c::procWait() {
mCurrentProc = &daBoko_c::procCarry;
speedF = 0.0f;
speed = cXyz::Zero;
if (mCurrentAction != 3) {
mCurrentAction = 2;
if (getNowMode() != Mode_PLAYER_CARRY_e) {
setNowMode(Mode_ENEMY_CARRY_e);
}
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
m2BC = 0;
mbFloorFlg = false;
procCarry();
} else if (m2BC == 0) {
} else if (!mbFloorFlg) {
fopAcM_posMoveF(this, NULL);
mAcch.CrrPos(*dComIfG_Bgsp());
if (!mAcch.ChkGroundHit()) {
@@ -447,34 +405,35 @@ BOOL daBoko_c::procWait() {
/* 000016E4-0000175C .text procMove_init__8daBoko_cFv */
BOOL daBoko_c::procMove_init() {
mCurrentProc = &daBoko_c::procMove;
mCurrentAction = 1;
setNowMode(Mode_MOVE_e);
fopAcM_setCarryNow(this, FALSE);
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
m2BB = 0x14;
m2BC = 0;
mbFloorFlg = false;
return TRUE;
}
/* 0000175C-00001E94 .text procMove__8daBoko_cFv */
BOOL daBoko_c::procMove() {
/* Nonmatching - fpr regswap */
BOOL bVar4 = FALSE;
fopAcM_posMoveF(this, NULL);
f32 fVar14 = m2DC.y;
f32 fVar15 = m2D0.y;
f32 fVar14_2 = m2DC.y;
f32 fVar15_2 = m2D0.y;
setTopRootPos(1);
cXyz sp1C(m2DC.x, fVar14, m2DC.z);
cXyz sp1C(m2DC.x, fVar14_2, m2DC.z);
m_ground_check.SetPos(&sp1C);
fVar14 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
f32 fVar14 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
if (fVar14 == -G_CM3D_F_INF) {
fVar14 = mAcch.GetGroundH();
}
f32 fVar2 = m2DC.y - fVar14;
sp1C.set(m2D0.x, fVar15, m2D0.z);
sp1C.set(m2D0.x, fVar15_2, m2D0.z);
m_ground_check.SetPos(&sp1C);
fVar15 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
f32 fVar15 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
if (fVar15 == -G_CM3D_F_INF) {
fVar15 = mAcch.GetGroundH();
}
@@ -547,10 +506,16 @@ BOOL daBoko_c::procMove() {
}
if (m2C0 != 0) {
cLib_addCalcAngleS(&shape_angle.z, -0x4000 - abs(shape_angle.z), 5, 0x1000, 0x100);
s16 target_angle_z;
if (abs(shape_angle.z) <= 0x4000) {
target_angle_z = 0;
} else {
target_angle_z = -0x8000;
}
cLib_addCalcAngleS(&shape_angle.z, target_angle_z, 5, 0x1000, 0x100);
}
fVar14 = speed.y;
f32 fVar14_3 = speed.y;
mAcch.CrrPos(*dComIfG_Bgsp());
setRoomInfo();
@@ -596,7 +561,7 @@ BOOL daBoko_c::procMove() {
speedF *= 0.7f;
}
} else {
speed.y = fVar14;
speed.y = fVar14_3;
}
setBaseMatrix();
return TRUE;
@@ -671,7 +636,7 @@ BOOL daBoko_c::procThrow() {
/* 000021B8-00002624 .text procCarry__8daBoko_cFv */
BOOL daBoko_c::procCarry() {
if (fopAcM_checkCarryNow(this) || m2BA == 0) {
if (fopAcM_checkCarryNow(this) || !mbThrow) {
mDoMtx_multVecZero(mpModel->getBaseTRMtx(), &current.pos);
mDoMtx_MtxToRot(mpModel->getBaseTRMtx(), &shape_angle);
}
@@ -683,9 +648,9 @@ BOOL daBoko_c::procCarry() {
fopAcM_setCarryNow(this, FALSE);
setTopRootPos(1);
if (m2BA != 0) {
if (mbThrow) {
mCurrentProc = &daBoko_c::procThrow;
mCurrentAction = 6;
setNowMode(Mode_THROW_e);
gravity = 0.0f;
shape_angle.x = m2CA;
shape_angle.y = link->shape_angle.y;
@@ -693,7 +658,7 @@ BOOL daBoko_c::procCarry() {
speedF = 70.0f * cM_scos(shape_angle.x);
speed.y = -70.0f * cM_ssin(shape_angle.x);
m2C8 = 2;
m2BA = 0;
mbThrow = false;
mCps.ResetAtHit();
m_line_check.Set(&linkFootPos, &current.pos, this);
@@ -709,7 +674,7 @@ BOOL daBoko_c::procCarry() {
} else {
procThrow();
}
} else if (m2BC != 0) {
} else if (mbFloorFlg) {
if (shape_angle.z >= 0x4000) {
shape_angle.z = 0;
shape_angle.x += 0x8000;
@@ -718,7 +683,7 @@ BOOL daBoko_c::procCarry() {
procWait_init();
} else {
current.angle.y = shape_angle.y + 0x8000;
if (mCurrentAction == 3) {
if (getNowMode() == Mode_PLAYER_CARRY_e) {
m_line_check.Set(&linkFootPos, &current.pos, this);
if (dComIfG_Bgsp()->LineCross(&m_line_check)) {
current.pos = m_line_check.GetCross();
@@ -765,13 +730,13 @@ BOOL daBoko_c::execute() {
if (mSph.ChkTgHit()) {
cCcD_Obj* pcVar2 = mSph.GetTgHitObj();
if (pcVar2 != NULL) {
if (m2C4 > 0 && pcVar2->ChkAtType(AT_TYPE_WATER)) {
m2C4 = 1;
if (mFlameTimer > 0 && pcVar2->ChkAtType(AT_TYPE_WATER)) {
mFlameTimer = 1;
bVar4 = TRUE;
} else if (m2C4 == 0 && pcVar2->ChkAtType(AT_TYPE_UNK20000 | AT_TYPE_FIRE)) {
} else if (mFlameTimer == 0 && pcVar2->ChkAtType(AT_TYPE_UNK20000 | AT_TYPE_FIRE)) {
mDoAud_seStart(JA_SE_OBJ_TORCH_IGNITION, &m2D0, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
fopAcM_SetCullSize(this, fopAc_CULLSPHERE_6_e);
m2C4 = 900;
mFlameTimer = 900;
}
}
}
@@ -779,20 +744,20 @@ BOOL daBoko_c::execute() {
mpModel->calc();
setTopRootPos(0);
if (m2C4 != 0) {
if (mCurrentAction != 2) {
m2C4--;
if (mFlameTimer != 0) {
if (getNowMode() != Mode_ENEMY_CARRY_e) {
mFlameTimer--;
}
f32 waterY;
if (bVar4 || (fopAcM_getWaterY(&m2D0, &waterY) && waterY >= m2D0.y)) {
if (m2C4 != 0) {
if (mFlameTimer != 0) {
dComIfGp_particle_set(dPa_name::ID_COMMON_035A, &m2D0);
}
m2C4 = 0;
mFlameTimer = 0;
}
if (m2C4 != 0) {
if (mFlameTimer != 0) {
setFlameEffect();
} else {
fopAcM_SetCullSize(this, fopAc_CULLBOX_CUSTOM_e);
@@ -810,26 +775,26 @@ BOOL daBoko_c::execute() {
mLight.mPower = 0.0f;
}
if (fopAcM_GetParam(this) == 0) {
if (m2C4 > 0) {
if (fopAcM_GetParam(this) == Type_BOKO_STICK_e) {
if (mFlameTimer > 0) {
mSph.OnAtSPrmBit(cCcD_TgSPrm_Set_e);
} else {
mSph.OffAtSPrmBit(cCcD_TgSPrm_Set_e);
}
mSph.SetC(m2D0);
dComIfG_Ccsp()->Set(&mSph);
if (mCurrentAction == 3) {
if (getNowMode() == Mode_PLAYER_CARRY_e) {
dComIfG_Ccsp_SetMass(&mSph, 1);
} else {
dComIfG_Ccsp_SetMass(&mSph, 4);
}
}
if (&mpLineKe->lineMat != NULL) {
if (mpLineKe != NULL) {
keCalc();
}
if (fopAcM_GetParam(this) == 5) {
if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) {
if (dComIfGs_isEventBit(0x3a08)) {
mBrkAnm.play();
bVar4 = true;
@@ -875,14 +840,14 @@ static BOOL daBoko_createHeap(fopAc_ac_c* i_this) {
BOOL daBoko_c::createHeap() {
static const s32 model_idx[] = {BOKO_BDL_BOKO, NATA_BDL_BK_NATA, CLUB_BDL_ST_BUKI, TKWN_BDL_TN_KEN1, SPEAR_BDL_MO_YARI, PGSW_BDL_BPG_KEN1};
u32 uVar5 = fopAcM_GetParam(this);
if (uVar5 >= 6) {
u32 type = fopAcM_GetParam(this);
if (type >= Type_COUNT_e) {
JUT_ASSERT(DEMO_SELECT(1702, 1740), FALSE);
}
u32 unused = uVar5 == 5;
u32 unused = type == Type_PGANON_SWORD_e;
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arc_name[uVar5], model_idx[uVar5]);
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(m_arc_name[type], model_idx[type]));
JUT_ASSERT(DEMO_SELECT(1708, 1746), modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000002);
@@ -890,7 +855,7 @@ BOOL daBoko_c::createHeap() {
return FALSE;
}
if (uVar5 == 4) {
if (type == 4) {
mpLineKe = new LineKe();
if (mpLineKe == NULL) {
return FALSE;
@@ -899,9 +864,11 @@ BOOL daBoko_c::createHeap() {
if (!mpLineKe->lineMat.init(0x10, 10, 0)) {
return FALSE;
}
} else if (uVar5 == 5 &&
} else if (type == 5 &&
!mBrkAnm.init(
modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes("Pgsw", PGSW_BRK_KIERU_KEN1), true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE
modelData,
static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectRes("Pgsw", PGSW_BRK_KIERU_KEN1)),
true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE
))
{
return FALSE;
@@ -972,21 +939,21 @@ cPhs_State daBoko_c::create() {
fopAcM_SetupActor(this, daBoko_c);
u32 uVar4 = fopAcM_GetParam(this);
if (uVar4 == 7) {
uVar4 = 0;
fopAcM_SetParam(this, uVar4);
u32 type = fopAcM_GetParam(this);
if (type == Type_UNK_7_e) {
type = Type_BOKO_STICK_e;
fopAcM_SetParam(this, type);
fopAcM_SetCullSize(this, fopAc_CULLSPHERE_6_e);
m2C4 = 900;
mFlameTimer = 900;
}
cPhs_State PVar5 = dComIfG_resLoad(&mPhase, m_arc_name[uVar4]);
cPhs_State PVar5 = dComIfG_resLoad(&mPhase, m_arc_name[type]);
if (PVar5 == cPhs_COMPLEATE_e) {
if (uVar4 >= 6) {
if (type >= Type_COUNT_e) {
return cPhs_ERROR_e;
}
if (!fopAcM_entrySolidHeap(this, daBoko_createHeap, m_heap_size[uVar4])) {
if (!fopAcM_entrySolidHeap(this, daBoko_createHeap, m_heap_size[type])) {
return cPhs_ERROR_e;
}
@@ -997,9 +964,9 @@ cPhs_State daBoko_c::create() {
mpModel->setBaseScale(scale);
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
Vec* min = &m_cull_min[uVar4];
Vec* min = &m_cull_min[type];
fopAcM_SetMin(this, min->x, min->y, min->z);
Vec* max = &m_cull_max[uVar4];
Vec* max = &m_cull_max[type];
fopAcM_SetMax(this, max->x, max->y, max->z);
mAcchCir.SetWall(10.0f, 60.0f);
@@ -1020,24 +987,24 @@ cPhs_State daBoko_c::create() {
fopAcM_SetMaxFallSpeed(this, -100.0f);
mStts.Init(10, 0xff, this);
if (uVar4 == 0) {
if (type == Type_BOKO_STICK_e) {
mpModel->getModelData()->getJointTree().getJointNodePointer(2)->getMesh()->getShape()->hide();
}
mSph.Set(sph_src);
mSph.SetStts(&mStts);
mCps.Set(at_cps_src);
mCps.SetStts(&mStts);
mCps.SetAtType(m_at_type[fopAcM_GetParam(this)]);
mCps.SetAtAtp(m_at_point[fopAcM_GetParam(this)]);
mCps.SetAtSe(m_se_type[fopAcM_GetParam(this)]);
mCps.SetR(m_cps_r[fopAcM_GetParam(this)]);
mCps.SetAtType(getAtType());
mCps.SetAtAtp(getAtPoint());
mCps.SetAtSe(getSeType());
mCps.SetR(getCpsR());
mCurrentProc = &daBoko_c::procWait;
setBaseMatrix();
setTopRootPos(0);
if (m2C4 != 0) {
if (mFlameTimer != 0) {
m7E4 = 1.0f;
setFlameEffect();
}
@@ -1048,7 +1015,7 @@ cPhs_State daBoko_c::create() {
mpModel->calc();
if (uVar4 == 0) {
if (type == Type_BOKO_STICK_e) {
dKy_plight_set(&mLight);
mLight.mColor.r = 600;
mLight.mColor.g = 400;
+16 -16
View File
@@ -1026,21 +1026,21 @@ void fail(fganon_class* i_this) {
kieru_brk(i_this, 2);
i_this->m3A4[0] = 10;
i_this->mMode = 4;
i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo);
i_this->mBokoID = fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo);
}
break;
}
case 4: {
daBoko_c* act = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
if (act != NULL) {
if (!fopAcM_checkCarryNow(act)) {
fopAcM_setCarryNow(act, 0);
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
if (boko != NULL) {
if (!fopAcM_checkCarryNow(boko)) {
fopAcM_setCarryNow(boko, 0);
}
act->setMatrix(i_this->mpKenModel->getBaseTRMtx());
boko->setMatrix(i_this->mpKenModel->getBaseTRMtx());
if (i_this->m3A4[0] == 0) {
fopAcM_delete(i_this);
act->m2BC = 1;
fopAcM_cancelCarryNow(act);
boko->onFloorFlg();
fopAcM_cancelCarryNow(boko);
}
}
break;
@@ -1261,17 +1261,17 @@ void last_end(fganon_class* i_this) {
case 4: {
if (i_this->m3A4[1] <= 4) {
if (i_this->m3A4[1] == 4) {
i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo);
i_this->mBokoID = fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo);
}
daBoko_c* mBoko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
if (mBoko != NULL) {
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
if (boko != NULL) {
i_this->m2D0 = 2;
if (!fopAcM_checkCarryNow(mBoko)) {
fopAcM_setCarryNow(mBoko, 0);
if (!fopAcM_checkCarryNow(boko)) {
fopAcM_setCarryNow(boko, 0);
}
mBoko->setMatrix(i_this->mpKenModel->getBaseTRMtx());
boko->setMatrix(i_this->mpKenModel->getBaseTRMtx());
if (i_this->m3A4[1] == 1) {
fopAcM_cancelCarryNow(mBoko);
fopAcM_cancelCarryNow(boko);
i_this->mMode = 5;
i_this->mB54++;
i_this->mB56 = 0;
@@ -2768,7 +2768,7 @@ static cPhs_State daFganon_Create(fopAc_ac_c* i_act) {
if ((i_this->mSwitchNo != 0xFF) && (dComIfGs_isSwitch(i_this->mSwitchNo, dComIfGp_roomControl_getStayNo()) != 0)) {
if (((fopAcM_GetParam(i_this) & 0xF) == 2) && !(dComIfGs_isEventBit(0x3A08))) { // Probably a flag to do with beating FF1 so PG spawns?
fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo);
fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo);
}
return cPhs_ERROR_e;
}
+1 -4
View File
@@ -527,10 +527,7 @@ BOOL daPy_lk_c::dProcOpenTreasure_init() {
if (boko != NULL) {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y + 0x2000);
MtxP mtx = mDoMtx_stack_c::get();
if (boko->mpModel != NULL) {
boko->mpModel->setBaseTRMtx(mtx);
}
boko->setMatrix(mDoMtx_stack_c::get());
}
}
fopAc_ac_c* partner_p = fopAcM_getEventPartner(this);
+1 -1
View File
@@ -337,7 +337,7 @@ BOOL daPy_lk_c::procGrabReady_init() {
}
if (fopAcM_GetName(mpAttnActorA) == PROC_BOKO) {
daBoko_c* boko = static_cast<daBoko_c*>(mpAttnActorA);
boko->mCurrentAction = 3;
boko->setNowMode(daBoko_c::Mode_PLAYER_CARRY_e);
}
shape_angle.y = fopAcM_searchActorAngleY(this, mpAttnActorA);
current.angle.y = shape_angle.y;
+10 -10
View File
@@ -1103,20 +1103,20 @@ s32 daPy_lk_c::setItemModel() {
MtxP pMVar14 = mpCLModel->getAnmMtx(0xD);
MtxP pMVar13 = mpCLModel->getAnmMtx(0x8);
MtxP pMVar6 = mpCLModel->getAnmMtx(0xC);
daBoko_c* pfVar11 = (daBoko_c*)mActorKeepEquip.getActor();
if (pfVar11 != NULL && mEquipItem == daPyItem_BOKO_e) {
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
if (boko != NULL && mEquipItem == daPyItem_BOKO_e) {
mDoMtx_stack_c::transS(40.0f, 47.0f, 2.1f);
mDoMtx_stack_c::XYZrotM(0x3E38, -0x5D4, 0x66F8);
if (fopAcM_GetParam(pfVar11) == 2 || fopAcM_GetParam(pfVar11) == 3) {
if (fopAcM_GetParam(boko) == daBoko_c::Type_STALFOS_MACE_e || fopAcM_GetParam(boko) == daBoko_c::Type_DARKNUT_SWORD_e) {
mDoMtx_stack_c::transM(0.0f, 0.0f, 20.0f);
} else if (fopAcM_GetParam(pfVar11) == 4) {
} else if (fopAcM_GetParam(boko) == daBoko_c::Type_MOBLIN_SPEAR_e) {
mDoMtx_stack_c::transM(0.0f, 0.0f, 70.0f);
} else if (fopAcM_GetParam(pfVar11) == 5) {
} else if (fopAcM_GetParam(boko) == daBoko_c::Type_PGANON_SWORD_e) {
mDoMtx_stack_c::transM(0.0f, 0.0f, 30.0f);
}
mDoMtx_stack_c::revConcat(pMVar13);
MtxP mtx = mDoMtx_stack_c::now;
pfVar11->setMatrix(mtx);
boko->setMatrix(mtx);
}
if (mpEquipItemBtk != NULL) {
dVar16 = mpEquipItemBtk->getFrame();
@@ -1185,9 +1185,9 @@ s32 daPy_lk_c::setItemModel() {
if (mpBottleCapModel != NULL) {
mpBottleCapModel->setBaseTRMtx(pMVar13);
}
} else if (mEquipItem == dItem_HOOKSHOT_e && pfVar11 != NULL) {
if (fopAcM_GetParam(pfVar11) != 0) {
if (fopAcM_GetParam(pfVar11) == 1) {
} else if (mEquipItem == dItem_HOOKSHOT_e && boko != NULL) {
if (fopAcM_GetParam(boko) != daBoko_c::Type_BOKO_STICK_e) {
if (fopAcM_GetParam(boko) == daBoko_c::Type_MACHETE_e) {
m35EC += 1.0f;
} else {
m35EC -= 1.0f;
@@ -13027,7 +13027,7 @@ const daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_ANM anm) const {
BOOL daPy_lk_c::checkGrabWeapon(int r4) {
if (mEquipItem == daPyItem_BOKO_e && mActorKeepEquip.getActor() != NULL) {
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
if (r4 == 6 || fopAcM_GetParam(boko) == r4) {
if (r4 == daBoko_c::Type_COUNT_e || fopAcM_GetParam(boko) == r4) {
return TRUE;
}
}
+8 -8
View File
@@ -1352,23 +1352,23 @@ BOOL daPy_lk_c::procCutTurn_init(int param_0) {
setBlurPosResource(LKANM__CUTTURN_POS);
} else {
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
u32 uVar5;
u32 boko_type;
if (boko == NULL) {
uVar5 = 0;
boko_type = daBoko_c::Type_BOKO_STICK_e;
mAtCyl.SetAtAtp(1);
} else {
uVar5 = fopAcM_GetParam(boko);
boko_type = fopAcM_GetParam(boko);
mAtCyl.SetAtAtp(boko->getAtPoint());
}
if (uVar5 == 0) {
if (boko_type == daBoko_c::Type_BOKO_STICK_e) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x60;
} else if (uVar5 == 1) {
} else if (boko_type == daBoko_c::Type_MACHETE_e) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x64;
} else if (uVar5 == 2) {
} else if (boko_type == daBoko_c::Type_STALFOS_MACE_e) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x68;
} else if (uVar5 == 3) {
} else if (boko_type == daBoko_c::Type_DARKNUT_SWORD_e) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x6C;
} else if (uVar5 == 4) {
} else if (boko_type == daBoko_c::Type_MOBLIN_SPEAR_e) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x70;
} else {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x74;
+7 -8
View File
@@ -18,12 +18,12 @@
/* 80153554-801535D8 .text setEnemyWeaponAtParam__9daPy_lk_cFi */
void daPy_lk_c::setEnemyWeaponAtParam(BOOL r4) {
static const u8 cut_type[] = {
0x0B,
0x0D,
0x14,
0x16,
0x18,
0x1C,
/* daBoko_c::Type_STICK_e */ 0x0B,
/* daBoko_c::Type_MACHETE_e */ 0x0D,
/* daBoko_c::Type_CLUB_e */ 0x14,
/* daBoko_c::Type_DN_SWORD_e */ 0x16,
/* daBoko_c::Type_SPEAR_e */ 0x18,
/* daBoko_c::Type_PG_SWORD_e */ 0x1C,
};
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
u8 cutType = cut_type[fopAcM_GetParam(boko)];
@@ -395,8 +395,7 @@ BOOL daPy_lk_c::procWeaponThrow() {
uVar2 = cM_atan2s(-local_34.y, dVar5);
}
}
boko->setThrow(1);
boko->m2CA = uVar2;
boko->setThrow(uVar2);
voiceStart(0);
deleteEquipItem(FALSE);
}
+1 -1
View File
@@ -1451,7 +1451,7 @@ bool Act_c::_delete() {
void Act_c::spec_make_boko(int arg1) {
M7A0* ptr = &m7A0[0];
for (s32 i = 0; i < arg1; i++, ptr++) {
ptr->m00 = fopAcM_create(PROC_BOKO, 0, &current.pos, fopAcM_GetHomeRoomNo(this));
ptr->m00 = fopAcM_create(PROC_BOKO, daBoko_c::Type_BOKO_STICK_e, &current.pos, fopAcM_GetHomeRoomNo(this));
ptr->m06 = data_spec_boko(i).m00;
ptr->m08 = ptr->m06;
ptr->m10 = data_spec_boko(i).m04;
+63 -64
View File
@@ -9,81 +9,80 @@
#include "f_op/f_op_actor_mng.h"
#include "d/d_cc_d.h"
#include "SSystem/SComponent/c_xyz.h"
#include "SSystem/SComponent/c_phase.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "m_Do/m_Do_mtx.h"
Vec daBoko_c::m_top_offset[6] = {
{ 0.0f, 0.0f, 85.0f },
{ 16.0f, 0.0f, 77.0f },
{ -8.0f, 3.0f, 120.0f },
{ 0.0f, 0.0f, 128.0f },
{ 10.0f, 0.0f, 200.0f },
{ -40.0f, 0.0f, 110.0f },
Vec daBoko_c::m_top_offset[] = {
/* Type_BOKO_STICK_e */ { 0.0f, 0.0f, 85.0f },
/* Type_MACHETE_e */ { 16.0f, 0.0f, 77.0f },
/* Type_STALFOS_MACE_e */ { -8.0f, 3.0f, 120.0f },
/* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, 128.0f },
/* Type_MOBLIN_SPEAR_e */ { 10.0f, 0.0f, 200.0f },
/* Type_PGANON_SWORD_e */ { -40.0f, 0.0f, 110.0f },
};
Vec daBoko_c::m_blur_root_offset[6] = {
{ 0.0f, 0.0f, -45.0f },
{ 0.0f, 0.0f, -43.0f },
{ -1.0f, 3.0f, -60.0f },
{ 0.0f, 0.0f, -50.0f },
{ 0.0f, 0.0f, -100.0f },
{ -20.0f, 0.0f, -50.0f },
Vec daBoko_c::m_blur_root_offset[] = {
/* Type_BOKO_STICK_e */ { 0.0f, 0.0f, -45.0f },
/* Type_MACHETE_e */ { 0.0f, 0.0f, -43.0f },
/* Type_STALFOS_MACE_e */ { -1.0f, 3.0f, -60.0f },
/* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, -50.0f },
/* Type_MOBLIN_SPEAR_e */ { 0.0f, 0.0f, -100.0f },
/* Type_PGANON_SWORD_e */ { -20.0f, 0.0f, -50.0f },
};
Vec daBoko_c::m_root_offset[6] = {
{ 0.0f, 0.0f, -85.0f },
{ 5.0f, 0.0f, -90.0f },
{ 3.0f, 0.0f, -120.0f },
{ 0.0f, 0.0f, -130.0f },
{ 0.0f, 0.0f, -175.0f },
{ 0.0f, 0.0f, -125.0f },
Vec daBoko_c::m_root_offset[] = {
/* Type_BOKO_STICK_e */ { 0.0f, 0.0f, -85.0f },
/* Type_MACHETE_e */ { 5.0f, 0.0f, -90.0f },
/* Type_STALFOS_MACE_e */ { 3.0f, 0.0f, -120.0f },
/* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, -130.0f },
/* Type_MOBLIN_SPEAR_e */ { 0.0f, 0.0f, -175.0f },
/* Type_PGANON_SWORD_e */ { 0.0f, 0.0f, -125.0f },
};
f32 daBoko_c::m_cps_r[6] = {
30.0f,
30.0f,
50.0f,
50.0f,
50.0f,
50.0f,
f32 daBoko_c::m_cps_r[] = {
/* Type_BOKO_STICK_e */ 30.0f,
/* Type_MACHETE_e */ 30.0f,
/* Type_STALFOS_MACE_e */ 50.0f,
/* Type_DARKNUT_SWORD_e */ 50.0f,
/* Type_MOBLIN_SPEAR_e */ 50.0f,
/* Type_PGANON_SWORD_e */ 50.0f,
};
s32 daBoko_c::m_at_point[6] = {
0x01,
0x02,
0x04,
0x04,
0x04,
0x04,
s32 daBoko_c::m_at_point[] = {
/* Type_BOKO_STICK_e */ 0x01,
/* Type_MACHETE_e */ 0x02,
/* Type_STALFOS_MACE_e */ 0x04,
/* Type_DARKNUT_SWORD_e */ 0x04,
/* Type_MOBLIN_SPEAR_e */ 0x04,
/* Type_PGANON_SWORD_e */ 0x04,
};
u32 daBoko_c::m_at_type[6] = {
AT_TYPE_BOKO_STICK,
AT_TYPE_MACHETE,
AT_TYPE_STALFOS_MACE,
AT_TYPE_DARKNUT_SWORD,
AT_TYPE_MOBLIN_SPEAR,
AT_TYPE_PGANON_SWORD,
u32 daBoko_c::m_at_type[] = {
/* Type_BOKO_STICK_e */ AT_TYPE_BOKO_STICK,
/* Type_MACHETE_e */ AT_TYPE_MACHETE,
/* Type_STALFOS_MACE_e */ AT_TYPE_STALFOS_MACE,
/* Type_DARKNUT_SWORD_e */ AT_TYPE_DARKNUT_SWORD,
/* Type_MOBLIN_SPEAR_e */ AT_TYPE_MOBLIN_SPEAR,
/* Type_PGANON_SWORD_e */ AT_TYPE_PGANON_SWORD,
};
f32 daBoko_c::m_jump_blur_rate[6] = {
0.0f,
-0.1f,
0.4f,
0.5f,
1.4f,
0.5f,
f32 daBoko_c::m_jump_blur_rate[] = {
/* Type_BOKO_STICK_e */ 0.0f,
/* Type_MACHETE_e */ -0.1f,
/* Type_STALFOS_MACE_e */ 0.4f,
/* Type_DARKNUT_SWORD_e */ 0.5f,
/* Type_MOBLIN_SPEAR_e */ 1.4f,
/* Type_PGANON_SWORD_e */ 0.5f,
};
f32 daBoko_c::m_blur_rate[6] = {
0.0f,
-0.1f,
0.1f,
0.2f,
1.0f,
0.2f,
f32 daBoko_c::m_blur_rate[] = {
/* Type_BOKO_STICK_e */ 0.0f,
/* Type_MACHETE_e */ -0.1f,
/* Type_STALFOS_MACE_e */ 0.1f,
/* Type_DARKNUT_SWORD_e */ 0.2f,
/* Type_MOBLIN_SPEAR_e */ 1.0f,
/* Type_PGANON_SWORD_e */ 0.2f,
};
u8 daBoko_c::m_se_type[6] = {
0x04,
0x01,
0x01,
0x01,
0x03,
0x01,
u8 daBoko_c::m_se_type[] = {
/* Type_BOKO_STICK_e */ dCcG_SE_UNK4,
/* Type_MACHETE_e */ dCcG_SE_UNK1,
/* Type_STALFOS_MACE_e */ dCcG_SE_UNK1,
/* Type_DARKNUT_SWORD_e */ dCcG_SE_UNK1,
/* Type_MOBLIN_SPEAR_e */ dCcG_SE_UNK3,
/* Type_PGANON_SWORD_e */ dCcG_SE_UNK1,
};
/* 80067E78-80067F0C .text getTopPos__8daBoko_cFP4cXyz */
+2 -2
View File
@@ -321,10 +321,10 @@ void dStage_roomControl_c::checkDrawArea() const {
static Mtx l_m[2];
for (int i = 0; i < 2; i++) {
mDoMtx_stack_c::transS(pos);
f32 scale = darkStatus.getBokoScale(i);
f32 scale = darkStatus.getNonScale(i);
mDoMtx_stack_c::scaleM(scale, scale, scale);
cMtx_copy(mDoMtx_stack_c::get(), l_m[i]);
dComIfGd_setSpotModel(0, l_m[i], darkStatus.getBokoAlpha(i));
dComIfGd_setSpotModel(0, l_m[i], darkStatus.getNonAlpha(i));
}
}