mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-27 01:55:15 -04:00
Merge pull request #624 from TakaRikka/objitem
some d_a_item doc from tp
This commit is contained in:
@@ -85,8 +85,8 @@ public:
|
||||
|
||||
u32 getItemNo() const { return m_itemNo; }
|
||||
void setItemTimerForIball(s16 param_1, s16 param_2) {
|
||||
mDisappearTimer = param_1;
|
||||
field_0x65a = param_2;
|
||||
mWaitTimer = param_1;
|
||||
mDisappearTimer = param_2;
|
||||
}
|
||||
void setFlag(u8 flag) { cLib_onBit(mFlag, flag); }
|
||||
void clrFlag(u8 flag) { cLib_offBit(mFlag, flag); }
|
||||
@@ -104,9 +104,9 @@ public:
|
||||
/* 0x650 */ f32 field_0x650;
|
||||
/* 0x654 */ s16 field_0x654;
|
||||
/* 0x656 */ s16 mTargetAngleX;
|
||||
/* 0x658 */ s16 mDisappearTimer;
|
||||
/* 0x65A */ s16 field_0x65a;
|
||||
/* 0x65C */ s16 field_0x65c;
|
||||
/* 0x658 */ s16 mWaitTimer;
|
||||
/* 0x65A */ s16 mDisappearTimer;
|
||||
/* 0x65C */ s16 mSimpleExistTimer;
|
||||
/* 0x65E */ s16 mExtraZRot;
|
||||
/* 0x660 */ s16 field_0x660;
|
||||
/* 0x662 */ u8 field_0x662[0x666 - 0x662];
|
||||
|
||||
@@ -12,27 +12,27 @@ class mDoExt_brkAnm;
|
||||
class mDoExt_bckAnm;
|
||||
|
||||
struct daItemBase_c_m_data {
|
||||
/* 0x00 */ f32 mFieldItemGravity;
|
||||
/* 0x04 */ f32 field_0x04;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x00 */ f32 mGravity;
|
||||
/* 0x04 */ f32 mGroundReflect;
|
||||
/* 0x08 */ f32 mLaunchSpeed;
|
||||
/* 0x0C */ f32 mScaleAnimSpeed;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ s16 field_0x14;
|
||||
/* 0x16 */ s16 mDuration;
|
||||
/* 0x18 */ s16 field_0x18;
|
||||
/* 0x1A */ s16 field_0x1A;
|
||||
/* 0x1C */ s16 mNumFramesPerFullSpin;
|
||||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ s16 field_0x28;
|
||||
/* 0x2A */ s16 mHeartMaxRandomZRot;
|
||||
/* 0x10 */ f32 mSpeedH;
|
||||
/* 0x14 */ s16 mFlashCycleTime;
|
||||
/* 0x16 */ s16 mWaitTime;
|
||||
/* 0x18 */ s16 mDisappearTime;
|
||||
/* 0x1A */ s16 mRotateXSpeed;
|
||||
/* 0x1C */ s16 mRotateYSpeed;
|
||||
/* 0x20 */ f32 mHeartFallSpeed;
|
||||
/* 0x24 */ f32 mHeartAmplitude;
|
||||
/* 0x28 */ s16 mHeartFallCycleTime;
|
||||
/* 0x2A */ s16 mHeartTilt;
|
||||
/* 0x2C */ f32 field_0x2C;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ f32 field_0x34;
|
||||
/* 0x38 */ f32 mPickedUpInitialSpeedY;
|
||||
/* 0x3C */ f32 mPickedUpGravity;
|
||||
/* 0x40 */ s16 field_0x40;
|
||||
/* 0x42 */ s16 field_0x42;
|
||||
/* 0x38 */ f32 mGetDemoLaunchSpeed;
|
||||
/* 0x3C */ f32 mGetDemoGravity;
|
||||
/* 0x40 */ s16 mSimpleExistTime;
|
||||
/* 0x42 */ s16 mNoGetTime;
|
||||
/* 0x44 */ f32 field_0x44;
|
||||
/* 0x48 */ f32 mVelocityScale;
|
||||
};
|
||||
@@ -83,8 +83,8 @@ public:
|
||||
/* 0x4FC */ dCcD_Cyl mCyl;
|
||||
/* 0x62C */ u32 mShadowId;
|
||||
/* 0x630 */ s32 mItemBitNo;
|
||||
/* 0x634 */ s32 field_0x634;
|
||||
/* 0x638 */ s16 field_0x638;
|
||||
/* 0x634 */ s32 m_timer;
|
||||
/* 0x638 */ s16 m_get_timer;
|
||||
/* 0x63A */ u8 m_itemNo;
|
||||
/* 0x63B */ u8 mDrawFlags;
|
||||
}; // Size: 0x63C
|
||||
|
||||
@@ -344,8 +344,8 @@ public:
|
||||
static u32 getFieldHeapSize(u8 no) { return field_item_res[no].mHeapSize; }
|
||||
|
||||
static u8 getShadowSize(u8 no) { return item_info[no].mShadowSize; }
|
||||
static u8 getH(u8 no) { return item_info[no].mCollisionH; }
|
||||
static u8 getR(u8 no) { return item_info[no].mCollisionR; }
|
||||
static const u8 getH(u8 no) { return item_info[no].mCollisionH; }
|
||||
static const u8 getR(u8 no) { return item_info[no].mCollisionR; }
|
||||
static bool chkFlag(u8 no, u32 mask) { return item_info[no].mFlag & mask; }
|
||||
|
||||
static bool checkAppearEffect(u8 no);
|
||||
|
||||
@@ -395,7 +395,7 @@ void daDitem_c::anim_control() {
|
||||
case UNK_BOTTLE_5E:
|
||||
case UNK_BOTTLE_5F:
|
||||
case UNK_BOTTLE_60:
|
||||
if (field_0x634 > 30) {
|
||||
if (m_timer > 30) {
|
||||
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
break;
|
||||
@@ -479,7 +479,7 @@ BOOL daDitem_c::draw() {
|
||||
}
|
||||
|
||||
BOOL daDitem_c::execute() {
|
||||
field_0x634++;
|
||||
m_timer++;
|
||||
|
||||
if (chkDraw()) {
|
||||
setParticle();
|
||||
|
||||
+75
-80
@@ -134,19 +134,20 @@ void itemGetCallBack(fopAc_ac_c* item_actor, dCcD_GObjInf*, fopAc_ac_c* collided
|
||||
void daItem_c::CreateInit() {
|
||||
mAcchCir.SetWall(30.0f, 30.0f);
|
||||
mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, fopAcM_GetSpeed_p(this));
|
||||
mAcch.m_flags &= ~0x400;
|
||||
mAcch.m_flags &= ~0x8;
|
||||
mAcch.ClrWaterNone();
|
||||
mAcch.ClrRoofNone();
|
||||
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
|
||||
mStts.Init(0, 0xFF, this);
|
||||
mCyl.Set(m_cyl_src);
|
||||
mCyl.SetStts(&mStts);
|
||||
mCyl.SetCoHitCallback(&itemGetCallBack);
|
||||
|
||||
// Regswaps if the inlines are used.
|
||||
// f32 height = dItem_data::getH(m_itemNo);
|
||||
// f32 radius = dItem_data::getR(m_itemNo);
|
||||
f32 height = dItem_data::item_info[m_itemNo].mCollisionH;
|
||||
f32 radius = dItem_data::item_info[m_itemNo].mCollisionR;
|
||||
|
||||
f32 height = dItem_data::getH(m_itemNo);
|
||||
f32 radius = dItem_data::getR(m_itemNo);
|
||||
|
||||
if (scale.x > 1.0f) {
|
||||
height *= scale.x;
|
||||
radius *= scale.x;
|
||||
@@ -154,8 +155,8 @@ void daItem_c::CreateInit() {
|
||||
mCyl.SetR(radius);
|
||||
mCyl.SetH(height);
|
||||
|
||||
mDisappearTimer = getData()->mDuration;
|
||||
field_0x65a = getData()->field_0x18;
|
||||
mWaitTimer = getData()->mWaitTime;
|
||||
mDisappearTimer = getData()->mDisappearTime;
|
||||
field_0x650 = fopAcM_GetSpeed(this).y;
|
||||
mItemStatus = STATUS_UNK0;
|
||||
|
||||
@@ -259,7 +260,7 @@ BOOL daItem_c::_daItem_execute() {
|
||||
timeCount();
|
||||
|
||||
eyePos = current.pos;
|
||||
eyePos.y += dItem_data::getH(m_itemNo)/2.0f;
|
||||
eyePos.y += dItem_data::getH(m_itemNo) / 2.0f;
|
||||
attention_info.position = current.pos;
|
||||
|
||||
switch (mItemStatus) {
|
||||
@@ -350,10 +351,9 @@ void daItem_c::execInitNormalDirection() {
|
||||
scale.set(mScaleTarget.x, mScaleTarget.y, mScaleTarget.z);
|
||||
mExtraZRot = 0;
|
||||
|
||||
field_0x65c = getData()->field_0x40;
|
||||
f32 speedY = getData()->mPickedUpInitialSpeedY;
|
||||
speed.set(0.0f, speedY, 0.0f);
|
||||
gravity = getData()->mPickedUpGravity;
|
||||
mSimpleExistTimer = getData()->mSimpleExistTime;
|
||||
fopAcM_SetSpeed(this, 0, getData()->mGetDemoLaunchSpeed, 0);
|
||||
fopAcM_SetGravity(this, getData()->mGetDemoGravity);
|
||||
|
||||
show();
|
||||
|
||||
@@ -383,8 +383,8 @@ void daItem_c::execMainNormalDirection() {
|
||||
|
||||
current.angle = dComIfGp_getCamera(0)->mAngle;
|
||||
|
||||
field_0x65c--;
|
||||
if (field_0x65c < 0) {
|
||||
mSimpleExistTimer--;
|
||||
if (mSimpleExistTimer < 0) {
|
||||
fopAcM_delete(this);
|
||||
}
|
||||
}
|
||||
@@ -455,13 +455,12 @@ void daItem_c::execWaitMain() {
|
||||
cLib_chaseF(&scale.z, mScaleTarget.z, scaleStepZ);
|
||||
}
|
||||
|
||||
if (checkItemDisappear() && mDisappearTimer == 0) {
|
||||
if (field_0x65a == 0) {
|
||||
if (checkItemDisappear() && mWaitTimer == 0) {
|
||||
if (mDisappearTimer == 0) {
|
||||
fopAcM_delete(this);
|
||||
}
|
||||
s32 temp1 = getData()->field_0x14;
|
||||
s32 temp2 = field_0x634 / temp1;
|
||||
if (!(field_0x634 - temp2 * temp1)) {
|
||||
|
||||
if (m_timer % getData()->mFlashCycleTime == 0) {
|
||||
changeDraw();
|
||||
}
|
||||
}
|
||||
@@ -492,15 +491,15 @@ void daItem_c::execWaitMainFromBoss() {
|
||||
|
||||
/* 800F5FC0-800F60C0 .text scaleAnimFromBossItem__8daItem_cFv */
|
||||
void daItem_c::scaleAnimFromBossItem() {
|
||||
if (field_0x638 < 30) {
|
||||
scale.x = cM_ssin(field_0x634*0x2000 - 0x4000)*2.0f / field_0x634+1.0f;
|
||||
if (m_get_timer < 30) {
|
||||
scale.x = cM_ssin(m_timer*0x2000 - 0x4000)*2.0f / m_timer+1.0f;
|
||||
if (scale.x < 0.0f) {
|
||||
scale.x = 0.0f;
|
||||
}
|
||||
scale.y = scale.x;
|
||||
scale.z = scale.x;
|
||||
} else {
|
||||
if (field_0x638 == 30) {
|
||||
if (m_get_timer == 30) {
|
||||
fopAcM_seStart(this, JA_SE_CM_BOSS_HEART_APPEAR, 0);
|
||||
}
|
||||
scale.setall(1.0f);
|
||||
@@ -771,7 +770,7 @@ void daItem_c::itemGetExecute() {
|
||||
/* 800F6D24-800F6D78 .text itemDefaultRotateY__8daItem_cFv */
|
||||
void daItem_c::itemDefaultRotateY() {
|
||||
// Rotates at a fixed speed.
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mNumFramesPerFullSpin;
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mRotateYSpeed;
|
||||
fopAcM_addAngleY(this, current.angle.y + rotationSpeed, rotationSpeed);
|
||||
}
|
||||
|
||||
@@ -810,12 +809,12 @@ void daItem_c::setItemTimer(int timer) {
|
||||
setFlag(FLAG_UNK10);
|
||||
return;
|
||||
}
|
||||
mDisappearTimer = timer;
|
||||
mWaitTimer = timer;
|
||||
}
|
||||
|
||||
/* 800F6E74-800F6EC8 .text checkPlayerGet__8daItem_cFv */
|
||||
BOOL daItem_c::checkPlayerGet() {
|
||||
if (field_0x638 < getData()->field_0x42) {
|
||||
if (m_get_timer < getData()->mNoGetTime) {
|
||||
return FALSE;
|
||||
}
|
||||
if (mItemStatus == STATUS_BRING_NEZUMI) {
|
||||
@@ -830,7 +829,7 @@ BOOL daItem_c::itemActionForRupee() {
|
||||
checkWall();
|
||||
|
||||
if (mAcch.ChkGroundLanding()) {
|
||||
f32 temp2 = field_0x650 * getData()->field_0x04;
|
||||
f32 temp2 = field_0x650 * getData()->mGroundReflect;
|
||||
if (temp2 > gravity - 0.5f) {
|
||||
speedF = 0.0f;
|
||||
} else {
|
||||
@@ -854,7 +853,7 @@ BOOL daItem_c::itemActionForRupee() {
|
||||
field_0x650 = speed.y;
|
||||
}
|
||||
|
||||
field_0x654 = getData()->field_0x1A;
|
||||
field_0x654 = getData()->mRotateXSpeed;
|
||||
|
||||
if (mOnGroundTimer == 0) {
|
||||
mTargetAngleX = current.angle.x + field_0x654;
|
||||
@@ -871,10 +870,10 @@ BOOL daItem_c::itemActionForRupee() {
|
||||
|
||||
/* 800F7028-800F713C .text itemActionForHeart__8daItem_cFv */
|
||||
BOOL daItem_c::itemActionForHeart() {
|
||||
f32 origSpeedY = speed.y;
|
||||
f32 origSpeedY = fopAcM_GetSpeed(this).y;
|
||||
if (origSpeedY < 0.0f) {
|
||||
gravity = 0.0f;
|
||||
speed.set(0.0f, getData()->field_0x20, 0.0f);
|
||||
fopAcM_SetGravity(this, 0.0f);
|
||||
fopAcM_SetSpeed(this, 0.0f, getData()->mHeartFallSpeed, 0.0f);
|
||||
}
|
||||
|
||||
mAcch.CrrPos(*dComIfG_Bgsp());
|
||||
@@ -882,13 +881,12 @@ BOOL daItem_c::itemActionForHeart() {
|
||||
if (mAcch.ChkGroundLanding() || mAcch.ChkGroundHit()) {
|
||||
clrFlag(FLAG_UNK04);
|
||||
mExtraZRot = 0;
|
||||
speed.set(0.0f, -1.0f, 0.0f);
|
||||
speedF = 0.0f;
|
||||
fopAcM_SetSpeed(this, 0.0f, -1.0f, 0.0f);
|
||||
fopAcM_SetSpeedF(this, 0.0f);
|
||||
itemDefaultRotateY();
|
||||
} else if (origSpeedY < 0.0f) {
|
||||
f32 temp2 = getData()->field_0x24;
|
||||
int temp = field_0x634 * getData()->field_0x28;
|
||||
speedF = temp2 * cM_ssin(temp);
|
||||
origSpeedY = getData()->mHeartAmplitude;
|
||||
fopAcM_SetSpeedF(this, origSpeedY * cM_ssin(m_timer * getData()->mHeartFallCycleTime));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@@ -900,7 +898,7 @@ BOOL daItem_c::itemActionForKey() {
|
||||
checkWall();
|
||||
|
||||
if (mAcch.ChkGroundLanding()) {
|
||||
f32 temp2 = field_0x650 * getData()->field_0x04;
|
||||
f32 temp2 = field_0x650 * getData()->mGroundReflect;
|
||||
if (temp2 > gravity - 0.5f) {
|
||||
speedF = 0.0f;
|
||||
current.angle.x = 0x4000;
|
||||
@@ -926,7 +924,7 @@ BOOL daItem_c::itemActionForKey() {
|
||||
field_0x650 = speed.y;
|
||||
}
|
||||
|
||||
field_0x654 = getData()->field_0x1A;
|
||||
field_0x654 = getData()->mRotateXSpeed;
|
||||
|
||||
if (mOnGroundTimer == 0) {
|
||||
mTargetAngleX = current.angle.x + field_0x654;
|
||||
@@ -944,7 +942,7 @@ BOOL daItem_c::itemActionForEmono() {
|
||||
mAcch.CrrPos(*dComIfG_Bgsp());
|
||||
|
||||
if (mAcch.ChkGroundLanding()) {
|
||||
f32 temp2 = field_0x650 * getData()->field_0x04;
|
||||
f32 temp2 = field_0x650 * getData()->mGroundReflect;
|
||||
if (temp2 > gravity - 0.5f) {
|
||||
speedF = 0.0f;
|
||||
} else {
|
||||
@@ -953,7 +951,7 @@ BOOL daItem_c::itemActionForEmono() {
|
||||
|
||||
set_bound_se();
|
||||
} else if (mAcch.ChkGroundHit()) {
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mNumFramesPerFullSpin;
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mRotateYSpeed;
|
||||
rotationSpeed = rotationSpeed / 2;
|
||||
fopAcM_addAngleY(this, current.angle.y + rotationSpeed, rotationSpeed);
|
||||
speedF = 0.0f;
|
||||
@@ -973,20 +971,20 @@ BOOL daItem_c::itemActionForSword() {
|
||||
|
||||
bool isQuake = dComIfGp_getDetect().chk_quake(¤t.pos);
|
||||
if (isQuake && !checkFlag(FLAG_QUAKE) && mAcch.ChkGroundHit()) {
|
||||
speed.set(0.0f, 21.0f, 0.0f);
|
||||
gravity = -3.5f;
|
||||
fopAcM_SetSpeed(this, 0.0f, 21.0f, 0.0f);
|
||||
fopAcM_SetGravity(this, -3.5f);
|
||||
}
|
||||
|
||||
if (mAcch.ChkGroundLanding()) {
|
||||
f32 temp = field_0x650 * 0.9f;
|
||||
speed.set(0.0f, -temp, 0.0f);
|
||||
fopAcM_SetSpeed(this, 0.0f, -temp, 0.0f);
|
||||
|
||||
if (m_itemNo == SWORD) {
|
||||
if (field_0x638 > 15) {
|
||||
if (m_get_timer > 15) {
|
||||
fopAcM_seStart(this, JA_SE_OBJ_LNK_SWORD_FALL, 0);
|
||||
}
|
||||
} else if (m_itemNo == SHIELD) {
|
||||
if (field_0x638 > 15) {
|
||||
if (m_get_timer > 15) {
|
||||
fopAcM_seStart(this, JA_SE_OBJ_LNK_SHIELD_FALL, 0);
|
||||
}
|
||||
}
|
||||
@@ -1046,7 +1044,7 @@ BOOL daItem_c::itemActionForArrow() {
|
||||
}
|
||||
|
||||
if (mAcch.ChkGroundLanding()) {
|
||||
f32 temp_f3 = field_0x650 * getData()->field_0x04;
|
||||
f32 temp_f3 = field_0x650 * getData()->mGroundReflect;
|
||||
if (temp_f3 > gravity - 0.5f) {
|
||||
speedF = 0.0f;
|
||||
} else {
|
||||
@@ -1080,7 +1078,7 @@ BOOL daItem_c::itemActionForArrow() {
|
||||
if (m_itemNo == UTUWA_HEART) {
|
||||
if (mOnGroundTimer != 0) {
|
||||
getData();
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mNumFramesPerFullSpin;
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mRotateYSpeed;
|
||||
cLib_addCalcAngleS(&field_0x654, rotationSpeed, 10, 0x400, 0x100);
|
||||
}
|
||||
|
||||
@@ -1119,13 +1117,11 @@ void daItem_c::checkWall() {
|
||||
|
||||
/* 800F7BF8-800F7DDC .text set_bound_se__8daItem_cFv */
|
||||
void daItem_c::set_bound_se() {
|
||||
if (field_0x638 < 10) {
|
||||
if (m_get_timer < 10) {
|
||||
return;
|
||||
}
|
||||
|
||||
f32 temp2 = fabs(field_0x650);
|
||||
temp2 = 2.0f * temp2;
|
||||
u32 temp = temp2;
|
||||
u32 temp = fabsf(field_0x650) * 2.0f;
|
||||
if (temp > 100) {
|
||||
temp = 100;
|
||||
}
|
||||
@@ -1186,16 +1182,16 @@ BOOL daItem_c::checkGetItem() {
|
||||
|
||||
/* 800F7E6C-800F7F0C .text timeCount__8daItem_cFv */
|
||||
BOOL daItem_c::timeCount() {
|
||||
field_0x634++;
|
||||
if (field_0x638 < m_timer_max) {
|
||||
field_0x638++;
|
||||
m_timer++;
|
||||
if (m_get_timer < m_timer_max) {
|
||||
m_get_timer++;
|
||||
}
|
||||
|
||||
if (checkPlayerGet() && !dComIfGp_event_runCheck()) {
|
||||
if (mDisappearTimer > 0) {
|
||||
if (mWaitTimer > 0) {
|
||||
mWaitTimer--;
|
||||
} else if (mDisappearTimer > 0) {
|
||||
mDisappearTimer--;
|
||||
} else if (field_0x65a > 0) {
|
||||
field_0x65a--;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1205,7 +1201,7 @@ BOOL daItem_c::timeCount() {
|
||||
/* 800F7F0C-800F7F50 .text mode_wait_init__8daItem_cFv */
|
||||
void daItem_c::mode_wait_init() {
|
||||
mMode = 0;
|
||||
gravity = getData()->mFieldItemGravity;
|
||||
gravity = getData()->mGravity;
|
||||
mPtclRippleCb.end();
|
||||
}
|
||||
|
||||
@@ -1225,8 +1221,8 @@ void daItem_c::mode_water_init() {
|
||||
current.pos.y = mAcch.m_wtr.GetHeight();
|
||||
}
|
||||
|
||||
speed.setall(0.0f);
|
||||
speedF = 0.0f;
|
||||
fopAcM_SetSpeed(this, 0.0f, 0.0f, 0.0f);
|
||||
fopAcM_SetSpeedF(this, 0.0f);
|
||||
current.angle.z = 0;
|
||||
current.angle.x = 0;
|
||||
mExtraZRot = 0;
|
||||
@@ -1327,7 +1323,7 @@ void daItem_c::mode_water() {
|
||||
current.pos.y = mAcch.m_wtr.GetHeight();
|
||||
}
|
||||
|
||||
s16 rotationSpeed = 0xFFFF / daItemBase_c::m_data.mNumFramesPerFullSpin;
|
||||
s16 rotationSpeed = 0xFFFF / daItemBase_c::m_data.mRotateYSpeed;
|
||||
fopAcM_addAngleY(this, current.angle.y + rotationSpeed, rotationSpeed);
|
||||
}
|
||||
|
||||
@@ -1359,7 +1355,7 @@ BOOL daItem_c::initAction() {
|
||||
break;
|
||||
}
|
||||
|
||||
gravity = getData()->mFieldItemGravity;
|
||||
gravity = getData()->mGravity;
|
||||
clrFlag(FLAG_UNK04);
|
||||
mMode = 0;
|
||||
|
||||
@@ -1367,50 +1363,50 @@ BOOL daItem_c::initAction() {
|
||||
}
|
||||
|
||||
// TODO: bug? usage of uninitialized register f31 in some cases
|
||||
f32 temp_f31;
|
||||
f32 y_speed;
|
||||
switch (mAction) {
|
||||
case 1:
|
||||
temp_f31 = getData()->field_0x08 + cM_rndFX(5.0f);
|
||||
speedF = getData()->field_0x10 / 10.0f;
|
||||
y_speed = getData()->mLaunchSpeed + cM_rndFX(5.0f);
|
||||
speedF = getData()->mSpeedH / 10.0f;
|
||||
if (g_mDoCPd_cpadInfo[0].mMainStickValue) {
|
||||
speedF = getData()->field_0x10;
|
||||
speedF = getData()->mSpeedH;
|
||||
}
|
||||
current.angle.y = cM_rndF((f32)0xFFFF);
|
||||
break;
|
||||
case 3:
|
||||
temp_f31 = 25.0f;
|
||||
y_speed = 25.0f;
|
||||
current.angle.y = cM_rndF((f32)0xFFFF);
|
||||
speedF = getData()->mVelocityScale;
|
||||
break;
|
||||
case 7:
|
||||
speedF = getData()->mVelocityScale * 1.5f;
|
||||
current.angle.y = cM_rndF((f32)0xFFFF);
|
||||
temp_f31 = getData()->field_0x08 + cM_rndFX(5.0f);
|
||||
y_speed = getData()->mLaunchSpeed + cM_rndFX(5.0f);
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
case 9:
|
||||
speedF = 0.0f;
|
||||
current.angle.y = cM_rndF((f32)0xFFFF);
|
||||
temp_f31 = getData()->field_0x08 + cM_rndFX(5.0f);
|
||||
y_speed = getData()->mLaunchSpeed + cM_rndFX(5.0f);
|
||||
break;
|
||||
case 8:
|
||||
current.angle.y = cM_rndF((f32)0xFFFF);
|
||||
temp_f31 = getData()->field_0x44 + cM_rndFX(5.0f);
|
||||
y_speed = getData()->field_0x44 + cM_rndFX(5.0f);
|
||||
speedF = getData()->mVelocityScale;
|
||||
break;
|
||||
case 0xA:
|
||||
gravity = getData()->mFieldItemGravity;
|
||||
gravity = getData()->mGravity;
|
||||
scale.setall(0.0f);
|
||||
mMode = 0;
|
||||
break;
|
||||
case 0xB:
|
||||
current.angle.y = cM_rndF((f32)0xFFFF);
|
||||
temp_f31 = 0.0f;
|
||||
y_speed = 0.0f;
|
||||
speedF = 0.0f;
|
||||
break;
|
||||
case 6:
|
||||
temp_f31 = getData()->field_0x08 + cM_rndFX(5.0f);
|
||||
y_speed = getData()->mLaunchSpeed + cM_rndFX(5.0f);
|
||||
break;
|
||||
case 0:
|
||||
case 5:
|
||||
@@ -1421,14 +1417,13 @@ BOOL daItem_c::initAction() {
|
||||
|
||||
if (isHeart(m_itemNo)) {
|
||||
speedF = 2.0f * speedF;
|
||||
mExtraZRot = cM_rndFX(getData()->mHeartMaxRandomZRot);
|
||||
mExtraZRot = cM_rndFX(getData()->mHeartTilt);
|
||||
}
|
||||
|
||||
gravity = getData()->mFieldItemGravity;
|
||||
speed.set(0.0f, temp_f31, 0.0f);
|
||||
|
||||
fopAcM_SetGravity(this, getData()->mGravity);
|
||||
fopAcM_SetSpeed(this, 0.0f, y_speed, 0.0f);
|
||||
// This line setting speedF to itself gets optimized out and produces no code, but affects regalloc.
|
||||
// It's not known what the original code that got optimized out here was, it could be speedF or something else.
|
||||
speedF = speedF;
|
||||
fopAcM_SetSpeedF(this, speedF);
|
||||
scale.setall(0.0f);
|
||||
|
||||
mMode = 0;
|
||||
|
||||
@@ -127,7 +127,7 @@ static BOOL daRaceItem_Execute(daRaceItem_c* i_this) {
|
||||
|
||||
/* 0000073C-00000C44 .text execute__12daRaceItem_cFv */
|
||||
BOOL daRaceItem_c::execute() {
|
||||
field_0x634++;
|
||||
m_timer++;
|
||||
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
eyePos = current.pos;
|
||||
eyePos.y += scale.x * dItem_data::getH(m_itemNo) / 2.0f;
|
||||
|
||||
@@ -133,7 +133,7 @@ BOOL daSpcItem01_c::CreateInit() {
|
||||
BOOL daSpcItem01_c::_execute() {
|
||||
eyePos = current.pos;
|
||||
attention_info.position = current.pos;
|
||||
field_0x634++;
|
||||
m_timer++;
|
||||
set_effect();
|
||||
scale_anim();
|
||||
anim_play();
|
||||
|
||||
@@ -9,29 +9,29 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
const daItemBase_c_m_data daItemBase_c::m_data = {
|
||||
/* mFieldItemGravity */ -7.0f,
|
||||
/* field_0x04 */ 0.62f,
|
||||
/* field_0x08 */ 50.0f,
|
||||
/* mScaleAnimSpeed */ 20.0f,
|
||||
/* field_0x10 */ 5.0f,
|
||||
/* field_0x14 */ 1,
|
||||
/* mDuration */ 8*30,
|
||||
/* field_0x18 */ 2*30,
|
||||
/* field_0x1A */ 0x2000,
|
||||
/* mNumFramesPerFullSpin */ 82,
|
||||
/* field_0x20 */ -4.0f,
|
||||
/* field_0x24 */ 3.5f,
|
||||
/* field_0x28 */ 1100,
|
||||
/* mHeartMaxRandomZRot */ 0x0BB8,
|
||||
/* field_0x2C */ 30.0f,
|
||||
/* field_0x30 */ 10.0f,
|
||||
/* field_0x34 */ 1.5f,
|
||||
/* mPickedUpInitialSpeedY */ 23.0f,
|
||||
/* mPickedUpGravity */ -6.0f,
|
||||
/* field_0x40 */ 13,
|
||||
/* field_0x42 */ 16,
|
||||
/* field_0x44 */ 50.0f,
|
||||
/* mVelocityScale */ 7.0f,
|
||||
/* mGravity */ -7.0f,
|
||||
/* mGroundReflect */ 0.62f,
|
||||
/* mLaunchSpeed */ 50.0f,
|
||||
/* mScaleAnimSpeed */ 20.0f,
|
||||
/* mSpeedH */ 5.0f,
|
||||
/* mFlashCycleTime */ 1,
|
||||
/* mWaitTime */ 8*30,
|
||||
/* mDisappearTime */ 2*30,
|
||||
/* mRotateXSpeed */ 0x2000,
|
||||
/* mRotateYSpeed */ 82,
|
||||
/* mHeartFallSpeed */ -4.0f,
|
||||
/* mHeartAmplitude */ 3.5f,
|
||||
/* mHeartFallCycleTime */ 1100,
|
||||
/* mHeartTilt */ 0x0BB8,
|
||||
/* field_0x2C */ 30.0f,
|
||||
/* field_0x30 */ 10.0f,
|
||||
/* field_0x34 */ 1.5f,
|
||||
/* mGetDemoLaunchSpeed */ 23.0f,
|
||||
/* mGetDemoGravity */ -6.0f,
|
||||
/* mSimpleExistTime */ 13,
|
||||
/* mNoGetTime */ 16,
|
||||
/* field_0x44 */ 50.0f,
|
||||
/* mVelocityScale */ 7.0f,
|
||||
};
|
||||
|
||||
/* 80068650-80068658 .text getItemNo__12daItemBase_cFv */
|
||||
|
||||
Reference in New Issue
Block a user