|
@@ -11,9 +11,10 @@
|
|
|
#include "GU.h"
|
|
|
#include "SNDGAME.h"
|
|
|
#include "TGame.h"
|
|
|
+#include "TStateList.h"
|
|
|
#include "XMATH.h"
|
|
|
#include "XSYS.h"
|
|
|
-#include "TStateList.h"
|
|
|
+#include "TAnimData.h"
|
|
|
int LOCO_SPEED_WALK_MIN = 0x321; // 0033E988
|
|
|
int LOCO_SPEED_WALK_MAX = 0x321; // 0033E98C
|
|
|
int LOCO_SPEED_WALK_AVG = 0x321; // 0033E990
|
|
@@ -27,7 +28,7 @@ int LOCO_SPEED_SPRINT_AVG = 0x102A; // 0033E9A8
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0011DE8C
|
|
|
void CPlayer::SetPos(int i1, int i2) {
|
|
|
- LOGE("CPlayer::SetPos%p%x%x",this,i1,i2);
|
|
|
+ LOGE("CPlayer::SetPos%p%x%x", this, i1, i2);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00125D8C
|
|
@@ -41,7 +42,7 @@ int CPlayer::GetDistanceSq(TPoint point1) { return 0; }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0015CBD0
|
|
|
void CPlayer::SetPos(TPoint point1) {
|
|
|
- LOGE("CPlayer::SetPos%p%x%x",this,point1.dx_0,point1.dy_4);
|
|
|
+ LOGE("CPlayer::SetPos%p%x%x", this, point1.dx_0, point1.dy_4);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016E630
|
|
@@ -80,7 +81,7 @@ void CPlayer::UpdatePosVel() {
|
|
|
TAnimData *r6_pAnimData = GetAnimData();
|
|
|
int r5_i;
|
|
|
if ((r6_pAnimData->u_C.s_C.uc_d & 0x20) == 0 ||
|
|
|
- tStr32_44.field_14 < r6_pAnimData->filed_20[0].filed_0) {
|
|
|
+ tStr32_44.field_14 < r6_pAnimData->filed_20[0].us_0) {
|
|
|
// loc_16E9D6
|
|
|
r5_i = GetRunSpeed();
|
|
|
} else {
|
|
@@ -229,7 +230,7 @@ void CPlayer::SetMoveDest(TPoint point1) {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EBFE
|
|
|
void CPlayer::SetRotExplicit(int i1) {
|
|
|
- LOGI("CPlayer::SetRotExplicit %p %d ", this,i1);
|
|
|
+ LOGI("CPlayer::SetRotExplicit %p %d ", this, i1);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC02
|
|
@@ -251,7 +252,7 @@ __attribute__((noinline)) ushort CPlayer::GetRotPoint(TPoint point1) {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC34
|
|
|
__attribute__((noinline)) void CPlayer::SetFace(int i1) {
|
|
|
- LOGE("CPlayer::SetFace%p%x",this,i1);
|
|
|
+ LOGE("CPlayer::SetFace%p%x", this, i1);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC3A
|
|
@@ -266,9 +267,7 @@ void CPlayer::SetFace(TPoint point1) {}
|
|
|
void CPlayer::SetFaceDest() {}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC7A
|
|
|
-void CPlayer::Stop(int i1) {
|
|
|
- LOGE("CPlayer::SetFace%p%x",this,i1);
|
|
|
-}
|
|
|
+void CPlayer::Stop(int i1) { LOGE("CPlayer::SetFace%p%x", this, i1); }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC8E ^_^
|
|
|
int CPlayer::GetRotDest() {
|
|
@@ -324,9 +323,7 @@ void CPlayer::SetupStandard() {}
|
|
|
void CPlayer::SetupOfficial() {}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016F044 经过单元测试同,功能正常
|
|
|
-void CPlayer::Reset() {
|
|
|
- LOGI("CPlayer::Reset %p", this);
|
|
|
-}
|
|
|
+void CPlayer::Reset() { LOGI("CPlayer::Reset %p", this); }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016F114
|
|
|
void CPlayer::CancelHeadInputControl() {}
|
|
@@ -344,10 +341,10 @@ TPoint3D CPlayer::GetBonePos(int i2) {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016F13C 经过单元测试,功能正常
|
|
|
TPoint CPlayer::GetTimePos(int i2) {
|
|
|
- LOGI("CPlayer::GetTimePos %p %d", this, i2);
|
|
|
+ LOGI("CPlayer::GetTimePos %p %d", this, i2);
|
|
|
TPoint retPos;
|
|
|
- retPos.dx_0=i2+rand();
|
|
|
- retPos.dy_4=i2+rand();
|
|
|
+ retPos.dx_0 = i2 + rand();
|
|
|
+ retPos.dy_4 = i2 + rand();
|
|
|
return retPos;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -427,7 +424,7 @@ void CPlayer::ActionUpdateDynamic() {
|
|
|
void CPlayer::ActionTendSetupDest(TPoint3D point3D1) {
|
|
|
TAnimData *r10_pAnimData = GetAnimData();
|
|
|
int r1_i = r10_pAnimData->filed_20[s_15A].i_4;
|
|
|
- ushort r0_us =r10_pAnimData->filed_20[s_15A].filed_2;
|
|
|
+ ushort r0_us = r10_pAnimData->filed_20[s_15A].us_2;
|
|
|
r1_i = r1_i * us_122;
|
|
|
aPoint3D_178[0] = point3D1;
|
|
|
int r7 = (r0_us + u_0.s_2_0.s_0) & 0x3FFF;
|
|
@@ -435,15 +432,16 @@ void CPlayer::ActionTendSetupDest(TPoint3D point3D1) {
|
|
|
|
|
|
int r0_i = xsin(r7) * r8_i; // 00170178 MUL.W R0, R0, R8
|
|
|
r0_i = r0_i / 2048;
|
|
|
- point3D_164.point_0.dx_0 = point3D1.point_0.dx_0 - r0_i; // 00170184 SUB.W R0, R6, R0,ASR#11
|
|
|
- int r5 = us_122 * r10_pAnimData->filed_20[s_15A].filed_8;
|
|
|
+ point3D_164.point_0.dx_0 =
|
|
|
+ point3D1.point_0.dx_0 -
|
|
|
+ r0_i; // 00170184 SUB.W R0, R6, R0,ASR#11
|
|
|
+ int r5 = us_122 * r10_pAnimData->filed_20[s_15A].i_8;
|
|
|
|
|
|
r0_i = xcos(r7) * r8_i; // 00170194 MUL.W R0, R0, R8
|
|
|
|
|
|
point3D_164.point_0.dy_4 = point3D1.point_0.dy_4 + (r0_i / 2048);
|
|
|
point3D_164.dz_8 = (point3D1.dz_8 - (r5 / 128));
|
|
|
- if(point3D_164.dz_8<0)
|
|
|
- point3D_164.dz_8=0;
|
|
|
+ if (point3D_164.dz_8 < 0) point3D_164.dz_8 = 0;
|
|
|
TPoint var_2C;
|
|
|
if (r10_pAnimData->filed_54) {
|
|
|
GetRootBoneOfs(&var_2C, r10_pAnimData);
|
|
@@ -464,9 +462,7 @@ TPoint3D CPlayer::ActionGetPosFromDest() {
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001702B0 经过单元测试,功能正常
|
|
|
-void CPlayer::Animate(int i1) {
|
|
|
- // LOGI("CPlayer::Animate %d", i1);
|
|
|
-}
|
|
|
+void CPlayer::Animate(int i1) { LOGI("CPlayer::Animate %p%d", this, i1); }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0017039C ^_- 经过单元测试,功能正常
|
|
|
void CPlayer::ApplyRootBoneOfs(TAnimData *pAniData1, int i2) {
|
|
@@ -526,7 +522,7 @@ void CPlayer::SetAnim(int i1) {
|
|
|
// 001705AE
|
|
|
|
|
|
r0_i = ((int)(((uint)(XMATH_Mag(&Point3D_14.point_0))) * 2)) /
|
|
|
- ((short)r8_pAnimData->us_18);
|
|
|
+ ((short)r8_pAnimData->s_18);
|
|
|
r0_i *= tStr32_44.field_1C;
|
|
|
r0_i /= 128;
|
|
|
} else {
|
|
@@ -566,7 +562,7 @@ void CPlayer::SetAnim(int i1) {
|
|
|
}
|
|
|
|
|
|
// loc_170646
|
|
|
- tStr32_44.field_1C = (int)(r5_pAnimData->filed_10 * r0_i) >> 16;
|
|
|
+ tStr32_44.field_1C = (int)(r5_pAnimData->i_10 * r0_i) >> 16;
|
|
|
|
|
|
// 00170648
|
|
|
if (field_10 <= 1) {
|
|
@@ -579,7 +575,7 @@ void CPlayer::SetAnim(int i1) {
|
|
|
|
|
|
} else {
|
|
|
// 00170636
|
|
|
- tStr32_44.field_1C = *(short *)&r5_pAnimData->filed_10;
|
|
|
+ tStr32_44.field_1C = *(short *)&r5_pAnimData->i_10;
|
|
|
if (!tStr32_44.field_8) {
|
|
|
// loc_170656
|
|
|
// 00170656
|
|
@@ -631,7 +627,7 @@ void CPlayer::SetTrophyData(ETrophyPos e1, ushort us2, ushort us3) {}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001708DE
|
|
|
__attribute__((noinline)) void CPlayer::ClearBlend() {
|
|
|
- LOGE("CPlayer::ClearBlend%p",this);
|
|
|
+ LOGE("CPlayer::ClearBlend%p", this);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001708E8 后面的代码好像与
|
|
@@ -667,7 +663,80 @@ bool CPlayer::SetReaction(int i1, int i2, int i3) { return true; }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170A50 经过单元测试,功能正常
|
|
|
void CPlayer::UpdateAnimation() {
|
|
|
- // LOGI("CPlayer::UpdateAnimation %p", this);
|
|
|
+ // 00170A56
|
|
|
+ int i_r5 = GetRunSpeed();
|
|
|
+ // 00170A5E
|
|
|
+ if (tStr32_44.field_8 == 4) {
|
|
|
+ // 00170A62
|
|
|
+ int i_r7 = this->tStr32_44.field_10;
|
|
|
+ int i_r0;
|
|
|
+ // 00170A6C
|
|
|
+ if (s_80 <= 256) {
|
|
|
+ // 00170A78
|
|
|
+ uint ui_r1 = this->tStr32_44.s_30 % 3;
|
|
|
+ i_r0 = CAnimManager::s_iStandardWalk[ui_r1];
|
|
|
+ TAnimData *panimdata_r0 = &CAnimManager::s_tAnimData[i_r0];
|
|
|
+ i_r0 = panimdata_r0->i_10;
|
|
|
+ i_r0 = i_r0 * 5973;
|
|
|
+ TAnimData *panimdata_r1 = &CAnimManager::s_tAnimData[i_r7];
|
|
|
+ int i_r1 = panimdata_r1->i_10;
|
|
|
+ // 00170B14
|
|
|
+ i_r0 = i_r0 / i_r1;
|
|
|
+ } else if (s_80 <= 768) { // 00170AA8
|
|
|
+ // 00170AAE
|
|
|
+ uint ui_r0 = this->tStr32_44.s_30;
|
|
|
+ uint ui_r1 = ui_r0 % 3;
|
|
|
+ int i_r9 = CAnimManager::s_iStandardWalk[ui_r1];
|
|
|
+ // 00170AD4
|
|
|
+ int i_r1 = XMATH_InterpolateClamp(s_80, 0x100, 0x300, 0xC0, 0x230);
|
|
|
+ int i_r6 = 0x118000 / i_r1;
|
|
|
+ TAnimData *panimdata_r7 = &CAnimManager::s_tAnimData[i_r7];
|
|
|
+ i_r0 = this->s_80;
|
|
|
+ TAnimData *panimdata_r1 = &CAnimManager::s_tAnimData[i_r9];
|
|
|
+ int i_r2 = panimdata_r7->i_10 * 16;
|
|
|
+ int i_r3 = panimdata_r1->i_10 * 16;
|
|
|
+ // 00170B0A
|
|
|
+ i_r0 = XMATH_InterpolateClamp(i_r0, 0x100, 0x300, i_r3, i_r2);
|
|
|
+ i_r0 = i_r6 *i_r0/ (panimdata_r7->i_10 * 16);
|
|
|
+ } else if ((s_80 <= 1024) ||
|
|
|
+ (CAnimManager::s_tAnimData[tStr32_44.field_10].s_64 !=
|
|
|
+ 0)) { // loc_170B1A
|
|
|
+ // 00170B2E
|
|
|
+ i_r0 = 2048;
|
|
|
+ } else {
|
|
|
+ // 00170B50
|
|
|
+ uint ui_r1 = this->tStr32_44.s_30 & 3;
|
|
|
+ int i_r9 = CAnimManager::s_iStandardSprint[ui_r1];
|
|
|
+ // 00170B52
|
|
|
+ if (s_80 <= 3072) {
|
|
|
+ // 00170B68
|
|
|
+ int i_r6 =
|
|
|
+ 1146880 / XMATH_InterpolateClamp(s_80, 0xC00, 0x400, 0x3C0, 0x230);
|
|
|
+ //int i_r0 = this->s_80;
|
|
|
+ TAnimData *panimdata_r1 = &CAnimManager::s_tAnimData[i_r9];
|
|
|
+ int i_r2 = CAnimManager::s_tAnimData[i_r7].i_10 * 16;
|
|
|
+ int i_r3 = panimdata_r1->i_10 * 16;
|
|
|
+ // 00170B0A
|
|
|
+ i_r0 = XMATH_InterpolateClamp(s_80, 0xC00, 0x400, i_r3, i_r2);
|
|
|
+ i_r0 = i_r0 * i_r6;
|
|
|
+ int i_r1 = CAnimManager::s_tAnimData[i_r7].i_10 * 16;
|
|
|
+ i_r0 = i_r0 / i_r1;
|
|
|
+ } else {
|
|
|
+ // 00170BAC
|
|
|
+ i_r0 = CAnimManager::s_tAnimData[i_r9].i_10;
|
|
|
+ i_r0 = i_r0 * 0x4AA;
|
|
|
+ int i_r1 = CAnimManager::s_tAnimData[i_r7].i_10;
|
|
|
+ i_r0 = i_r0 / i_r1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 00170B32
|
|
|
+ i_r0 = i_r0 * i_r5;
|
|
|
+ this->tStr32_44.s_18 = this->s_80;
|
|
|
+ i_r5 = i_r0 / 2048;
|
|
|
+ }
|
|
|
+ // 00170B44
|
|
|
+ // 00170B4C
|
|
|
+ Animate(i_r5);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170BD0 ^_^
|
|
@@ -737,7 +806,7 @@ void CPlayer::SetAnimFromStateI() {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170DD4 ^_^
|
|
|
void CPlayer::GetRootBoneOfs(TPoint *pPoint1, TAnimData *pAnimData2) {
|
|
|
- LOGE("CPlayer::GetRootBoneOfs%p%p%p",this,pPoint1,pAnimData2);
|
|
|
+ LOGE("CPlayer::GetRootBoneOfs%p%p%p", this, pPoint1, pAnimData2);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170E50 ^_^
|
|
@@ -776,13 +845,17 @@ void CPlayer::GetActionPoint(TPoint3D *pPoint3D1) {
|
|
|
// 001715EC 经过单元测试,功能正常
|
|
|
void CPlayer::GetBonePosition(int i1, TPoint3D *pPoint3D2) {
|
|
|
short aShort_1E_sp12[3];
|
|
|
- CAnimManager::GetBonePositionAnim(aShort_1E_sp12, tStr32_44.field_10, tStr32_44.field_14, i1, s_80, tStr32_44.s_30);
|
|
|
+ CAnimManager::GetBonePositionAnim(aShort_1E_sp12, tStr32_44.field_10,
|
|
|
+ tStr32_44.field_14, i1, s_80,
|
|
|
+ tStr32_44.s_30);
|
|
|
|
|
|
// 00171616
|
|
|
if (tStr32_44.sBlend_2E) {
|
|
|
// 0017161A
|
|
|
short aShort_24_spC[3];
|
|
|
- CAnimManager::GetBonePositionAnim(aShort_24_spC, tStr32_44.field_20, tStr32_44.field_24, i1, tStr32_44.s_2A, tStr32_44.s_30);
|
|
|
+ CAnimManager::GetBonePositionAnim(aShort_24_spC, tStr32_44.field_20,
|
|
|
+ tStr32_44.field_24, i1, tStr32_44.s_2A,
|
|
|
+ tStr32_44.s_30);
|
|
|
|
|
|
// 00171632
|
|
|
short r0_s;
|
|
@@ -790,7 +863,8 @@ void CPlayer::GetBonePosition(int i1, TPoint3D *pPoint3D2) {
|
|
|
// 0017164C
|
|
|
if (CAnimManager::s_tAnimData[tStr32_44.field_10].us_1C != tStr32_44.s_2C) {
|
|
|
// 00171650
|
|
|
- int r0_i = CAnimManager::s_tAnimData[tStr32_44.field_10].us_1C-tStr32_44.s_2C ;
|
|
|
+ int r0_i =
|
|
|
+ CAnimManager::s_tAnimData[tStr32_44.field_10].us_1C - tStr32_44.s_2C;
|
|
|
|
|
|
int r7_i = xsin(-r0_i);
|
|
|
r0_i = xcos(-r0_i);
|
|
@@ -815,8 +889,9 @@ void CPlayer::GetBonePosition(int i1, TPoint3D *pPoint3D2) {
|
|
|
int r4_i = 0x2000 - tStr32_44.sBlend_2E;
|
|
|
int r3_i = aShort_1E_sp12[0] * r4_i; // 001716B0 MULS R3, R4
|
|
|
|
|
|
- int r1_i = (r1_s * tStr32_44.sBlend_2E) + r3_i; // 001716B2 SMLABB.W R1, R1, R2, R3
|
|
|
- r3_i = r4_i * aShort_1E_sp12[2]; // 001716B6 MUL.W R3, R4, R6
|
|
|
+ int r1_i = (r1_s * tStr32_44.sBlend_2E) +
|
|
|
+ r3_i; // 001716B2 SMLABB.W R1, R1, R2, R3
|
|
|
+ r3_i = r4_i * aShort_1E_sp12[2]; // 001716B6 MUL.W R3, R4, R6
|
|
|
|
|
|
// int r7_i = aShort_1E_sp12[1] * r4_i;
|
|
|
int r0_i = (r0_s * tStr32_44.sBlend_2E) + (aShort_1E_sp12[1] * r4_i);
|
|
@@ -844,8 +919,10 @@ void CPlayer::GetBonePosition(int i1, TPoint3D *pPoint3D2) {
|
|
|
// 0017173A
|
|
|
r1_i = us_122 * aShort_1E_sp12[2];
|
|
|
|
|
|
- pPoint3D2->point_0.dx_0 = ballPosPrev_4.point_0.dx_0 + ((381 * (r2_i / -32))) / 1024;
|
|
|
- pPoint3D2->point_0.dy_4 = ballPosPrev_4.point_0.dy_4 + ((381 * (r0_i / 32))) / 1024;
|
|
|
+ pPoint3D2->point_0.dx_0 =
|
|
|
+ ballPosPrev_4.point_0.dx_0 + ((381 * (r2_i / -32))) / 1024;
|
|
|
+ pPoint3D2->point_0.dy_4 =
|
|
|
+ ballPosPrev_4.point_0.dy_4 + ((381 * (r0_i / 32))) / 1024;
|
|
|
pPoint3D2->dz_8 = ballPosPrev_4.dz_8 + (381 * (r1_i / 32)) / 1024;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -877,7 +954,7 @@ bool CPlayer::Fell(TPoint point1, bool b3) { return true; }
|
|
|
bool CPlayer::Fell(int i1, bool b2) {
|
|
|
bool r4_bret = rand();
|
|
|
// loc_172FEE
|
|
|
- LOGE("CPlayer::Fell%x%x%p",i1,b2,this);
|
|
|
+ LOGE("CPlayer::Fell%x%x%p", i1, b2, this);
|
|
|
return r4_bret;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -885,14 +962,13 @@ bool CPlayer::Fell(int i1, bool b2) {
|
|
|
bool CPlayer::Trip(int i1, int i2) {
|
|
|
bool r4_bret = rand();
|
|
|
// loc_172FEE
|
|
|
- LOGE("CPlayer::Trip%x%x%p",i1,i2,this);
|
|
|
+ LOGE("CPlayer::Trip%x%x%p", i1, i2, this);
|
|
|
return r4_bret;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00172FF8 ^_^
|
|
|
void CPlayer::UpdateLogic() {
|
|
|
- if (NIS_Active())
|
|
|
- return;
|
|
|
+ if (NIS_Active()) return;
|
|
|
|
|
|
// 00173002
|
|
|
UpdateJostlePoint();
|
|
@@ -901,11 +977,11 @@ void CPlayer::UpdateLogic() {
|
|
|
UpdateBallReactions();
|
|
|
UpdateFall();
|
|
|
|
|
|
- if (!uc_88)
|
|
|
- return;
|
|
|
+ if (!uc_88) return;
|
|
|
|
|
|
// 00173026
|
|
|
- if (cBall.ballPosPrev_4.dz_8 <= us_122 * 72 && tStr58_A0.u_50.ui_50 <= 0x28000) {
|
|
|
+ if (cBall.ballPosPrev_4.dz_8 <= us_122 * 72 &&
|
|
|
+ tStr58_A0.u_50.ui_50 <= 0x28000) {
|
|
|
// 00173046
|
|
|
if (tGame.field_6C38 <= 4 && (int)cBall.speedXY_28 > 0x14DC) {
|
|
|
uc_88 = 0;
|
|
@@ -1017,9 +1093,9 @@ void CPlayer::UpdateFall() {
|
|
|
SetNextState(r1_data);
|
|
|
} else {
|
|
|
// 001731F0
|
|
|
- if (tStr32_44.field_14 >= r1_data->filed_20[0].filed_0 &&
|
|
|
+ if (tStr32_44.field_14 >= r1_data->filed_20[0].us_0 &&
|
|
|
tStr32_44.field_14 <
|
|
|
- (r1_data->filed_20[0].filed_0 + tStr32_44.field_1C)) {
|
|
|
+ (r1_data->filed_20[0].us_0 + tStr32_44.field_1C)) {
|
|
|
tStr32_44.s_18 = 1;
|
|
|
}
|
|
|
}
|
|
@@ -1087,9 +1163,10 @@ __attribute__((noinline)) void CPlayer::SetConstantSpeed(bool b1) {
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174204 ^_^
|
|
|
-int CPlayer::GetAverageRunSpeed() {
|
|
|
- LOGE("GetAverageRunSpeed%p",this);
|
|
|
- return rand(); }
|
|
|
+int CPlayer::GetAverageRunSpeed() {
|
|
|
+ LOGE("GetAverageRunSpeed%p", this);
|
|
|
+ return rand();
|
|
|
+}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174260 ^_^
|
|
|
void CPlayer::SetAverageRunSpeed(int i1) {}
|
|
@@ -1127,7 +1204,7 @@ int CPlayer::GetRunSpeed() {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001744CC
|
|
|
int CPlayer::AttributeInterpolate(EPlayerAttribute eAttr1, int i2, int i3) {
|
|
|
- LOGE("AttributeInterpolate%p%x%x%x",this,eAttr1,i2,i3);
|
|
|
+ LOGE("AttributeInterpolate%p%x%x%x", this, eAttr1, i2, i3);
|
|
|
return 0;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -1135,9 +1212,10 @@ int CPlayer::AttributeInterpolate(EPlayerAttribute eAttr1, int i2, int i3) {
|
|
|
float CPlayer::GetMoveSpeed() { return 0.1f; }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001744E8 ^_^
|
|
|
-int CPlayer::GetInterceptMaxHeight() {
|
|
|
- LOGE("%pGetInterceptMaxHeight",this);
|
|
|
- return rand(); }
|
|
|
+int CPlayer::GetInterceptMaxHeight() {
|
|
|
+ LOGE("%pGetInterceptMaxHeight", this);
|
|
|
+ return rand();
|
|
|
+}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174530 ^_^
|
|
|
void CPlayer::SetUrgency(int i1) {
|
|
@@ -1167,7 +1245,7 @@ void CPlayer::SetUrgencyTime(int i1, bool b2) {
|
|
|
r5_i = 1;
|
|
|
}
|
|
|
|
|
|
- TPoint point_28_sp8=point_34;
|
|
|
+ TPoint point_28_sp8 = point_34;
|
|
|
// 001745A8
|
|
|
int r0_i = XMATH_Distance(&point_28_sp8, &point_78);
|
|
|
int r1_i = r5_i - s_32;
|
|
@@ -1198,8 +1276,7 @@ void CPlayer::SetUrgencyTime(int i1, bool b2) {
|
|
|
if (r5_i > r1_i) {
|
|
|
// 0017460A
|
|
|
r0_i = (r6_i * r5_i) / (r5_i - r1_i);
|
|
|
- if (r0_i < 4096)
|
|
|
- r7_i = r0_i;
|
|
|
+ if (r0_i < 4096) r7_i = r0_i;
|
|
|
}
|
|
|
} else {
|
|
|
// loc_17461E
|
|
@@ -1295,146 +1372,148 @@ __attribute__((noinline)) void CPlayer::ControlFinish(int i1, int i2, int i3) {
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00175968
|
|
|
-int CPlayer::SetAnimTurn(int i1, int i2, int i3, int i4, int i5, int i6, int i7, TActionSetup *pActionSetup) {
|
|
|
- short i_r6; // r6
|
|
|
- unsigned int i_r11; // r11
|
|
|
- unsigned int v12; // r2
|
|
|
- TStateList *i_r5; // r5
|
|
|
- int i_r4; // r4
|
|
|
- int i_r7; // r7
|
|
|
- int iVal_r6; // r6
|
|
|
- TAnimData *p_tAnimData_r3; // r3
|
|
|
- int i_r2; // r2
|
|
|
- int v24; // r2
|
|
|
- short v27; // r2
|
|
|
- int i_value3_r3; // r3
|
|
|
- int i_value4_r1; // r1
|
|
|
- int i_value2_r2; // r2
|
|
|
- int i_value5_r2; // r2
|
|
|
- int i_tmp_r1; // r1
|
|
|
- int i_tmp1_r0; // r0
|
|
|
- int result; // r0
|
|
|
- int i_value1_4; // [sp+4h] [bp-4Ch]
|
|
|
- int i_C; // [sp+Ch] [bp-44h]
|
|
|
- short i_10; // [sp+10h] [bp-40h]
|
|
|
- short i_14; // [sp+14h] [bp-3Ch]
|
|
|
- short i_18; // [sp+18h] [bp-38h]
|
|
|
- unsigned int i_1C; // [sp+1Ch] [bp-34h]
|
|
|
- CPlayer *pThis; // [sp+20h] [bp-30h]
|
|
|
- int i_24; // [sp+24h] [bp-2Ch]
|
|
|
- short i_28; // [sp+28h] [bp-28h]
|
|
|
-
|
|
|
-
|
|
|
- //0017596C
|
|
|
- i_28 = i1 + 8192 - i2;
|
|
|
- i_r6 = 8192 - i2 + i3;
|
|
|
- i_10 = i4 + 8192 - i2;
|
|
|
- i_r11 = (i7 >> 7) & 0x200;
|
|
|
- v12 = this->tStr32_44.field_8;
|
|
|
- this->tStr32_44.field_8 = 5;
|
|
|
- i_14 = i4 + 8192 - i3;
|
|
|
- i_1C = v12;
|
|
|
- i_r5 = CAnimManager::StateInfoGet(5); //call 001564D8
|
|
|
- i_r4 = CAnimManager::StateInfoGetAnimCount(this->tStr32_44.field_8); //call 001564EC
|
|
|
- i_24 = -1;
|
|
|
- i_r7 = 0;
|
|
|
- i_C = 0x7FFFFFFF;
|
|
|
- i_18 = i_r6 + 0x2000;
|
|
|
-
|
|
|
- //001759D2
|
|
|
- for( int i = 0; i < i_r4 ;i++) //001759E4
|
|
|
- {
|
|
|
- //001759E8
|
|
|
- iVal_r6 = i_r5->filed_8[i_r7++];
|
|
|
- p_tAnimData_r3 = &CAnimManager::s_tAnimData[iVal_r6];
|
|
|
- i_r2 = p_tAnimData_r3->u_C.filed_C;
|
|
|
-
|
|
|
- //001759FE
|
|
|
- if (i_r11 == (i_r2 & i_r11) && (i_r2 & (i_r11 ^ 0x200)) == 0) //2个条件合并
|
|
|
- {
|
|
|
- //00175A0C
|
|
|
- if (p_tAnimData_r3->filed_74 == i5 && (short)p_tAnimData_r3->s_76 == i6) //2个条件合并
|
|
|
- {
|
|
|
- v24 = 0;
|
|
|
- if (i5 >= 2) //00175A18
|
|
|
- {
|
|
|
- //00175A1E
|
|
|
- v24 = abs( ((i_28 - p_tAnimData_r3->filed_70) & 16383 )- 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
- }
|
|
|
-
|
|
|
- //00175A3C
|
|
|
- if (v24 <= 2730)
|
|
|
- {
|
|
|
- //00175A44
|
|
|
- i_value1_4 = v24 << 7;
|
|
|
- v27 = (p_tAnimData_r3->us_1E + 0x2000 - p_tAnimData_r3->us_1C) & 16383;
|
|
|
- i_value3_r3 = abs(((i_18 - (p_tAnimData_r3->s_64 + v27)) & 0x3FFF) - 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
-
|
|
|
- //00175A7E
|
|
|
- if (i_value3_r3 <= 2730)
|
|
|
- {
|
|
|
- //00175A86
|
|
|
- i_value4_r1 = abs(((i_14 + p_tAnimData_r3->s_64) & 16383) - 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
-
|
|
|
- // 00175A7E
|
|
|
- if (i_value4_r1 <= 2730)
|
|
|
- {
|
|
|
- //00175A86
|
|
|
- i_value2_r2 = abs(((i_10 + 8192 - v27) & 16383) - 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
-
|
|
|
- //00175AA4
|
|
|
- if (i_value2_r2 <= 0xAAA)
|
|
|
- {
|
|
|
- //00175AAA
|
|
|
- i_value5_r2 = i_value1_4 + (i_value2_r2 << 7) + ((i_value3_r3 + i_value4_r1) << 7);
|
|
|
- if (i_value5_r2 < i_C) {
|
|
|
- //00175AE2
|
|
|
- i_value5_r2 += XSYS_Random(0x200); //call 001F4F44
|
|
|
- }
|
|
|
-
|
|
|
- //00175AF0
|
|
|
- i_tmp_r1 = i_C;
|
|
|
- i_tmp1_r0 = i_24;
|
|
|
-
|
|
|
- if (i_value5_r2 < i_C) {
|
|
|
- i_tmp1_r0 = iVal_r6;
|
|
|
- }
|
|
|
- i_24 = i_tmp1_r0;
|
|
|
- if (i_value5_r2 < i_C) {
|
|
|
- i_tmp_r1 = i_value5_r2;
|
|
|
- }
|
|
|
-
|
|
|
- i_C = i_tmp_r1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- i++; //00175A7C 原始是NEG,但是他以用负数计算,我这用正数计算,就+1即可
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //00175B06
|
|
|
- if (i_24 < 0)
|
|
|
- {
|
|
|
- //00175B14
|
|
|
- this->tStr32_44.field_8 = i_1C;
|
|
|
- result = 0;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //00175B0A
|
|
|
- LOGI("CPlayer::SetAnimTurn: %p %d",this,i_24);
|
|
|
- this->SetAnim(i_24); //call 001704F4
|
|
|
- result = 1;
|
|
|
- }
|
|
|
- return result;
|
|
|
+int CPlayer::SetAnimTurn(int i1, int i2, int i3, int i4, int i5, int i6, int i7,
|
|
|
+ TActionSetup *pActionSetup) {
|
|
|
+ short i_r6; // r6
|
|
|
+ unsigned int i_r11; // r11
|
|
|
+ unsigned int v12; // r2
|
|
|
+ TStateList *i_r5; // r5
|
|
|
+ int i_r4; // r4
|
|
|
+ int i_r7; // r7
|
|
|
+ int iVal_r6; // r6
|
|
|
+ TAnimData *p_tAnimData_r3; // r3
|
|
|
+ int i_r2; // r2
|
|
|
+ int v24; // r2
|
|
|
+ short v27; // r2
|
|
|
+ int i_value3_r3; // r3
|
|
|
+ int i_value4_r1; // r1
|
|
|
+ int i_value2_r2; // r2
|
|
|
+ int i_value5_r2; // r2
|
|
|
+ int i_tmp_r1; // r1
|
|
|
+ int i_tmp1_r0; // r0
|
|
|
+ int result; // r0
|
|
|
+ int i_value1_4; // [sp+4h] [bp-4Ch]
|
|
|
+ int i_C; // [sp+Ch] [bp-44h]
|
|
|
+ short i_10; // [sp+10h] [bp-40h]
|
|
|
+ short i_14; // [sp+14h] [bp-3Ch]
|
|
|
+ short i_18; // [sp+18h] [bp-38h]
|
|
|
+ unsigned int i_1C; // [sp+1Ch] [bp-34h]
|
|
|
+ CPlayer *pThis; // [sp+20h] [bp-30h]
|
|
|
+ int i_24; // [sp+24h] [bp-2Ch]
|
|
|
+ short i_28; // [sp+28h] [bp-28h]
|
|
|
+
|
|
|
+ // 0017596C
|
|
|
+ i_28 = i1 + 8192 - i2;
|
|
|
+ i_r6 = 8192 - i2 + i3;
|
|
|
+ i_10 = i4 + 8192 - i2;
|
|
|
+ i_r11 = (i7 >> 7) & 0x200;
|
|
|
+ v12 = this->tStr32_44.field_8;
|
|
|
+ this->tStr32_44.field_8 = 5;
|
|
|
+ i_14 = i4 + 8192 - i3;
|
|
|
+ i_1C = v12;
|
|
|
+ i_r5 = CAnimManager::StateInfoGet(5); // call 001564D8
|
|
|
+ i_r4 = CAnimManager::StateInfoGetAnimCount(
|
|
|
+ this->tStr32_44.field_8); // call 001564EC
|
|
|
+ i_24 = -1;
|
|
|
+ i_r7 = 0;
|
|
|
+ i_C = 0x7FFFFFFF;
|
|
|
+ i_18 = i_r6 + 0x2000;
|
|
|
+
|
|
|
+ // 001759D2
|
|
|
+ for (int i = 0; i < i_r4; i++) // 001759E4
|
|
|
+ {
|
|
|
+ // 001759E8
|
|
|
+ iVal_r6 = i_r5->filed_8[i_r7++];
|
|
|
+ p_tAnimData_r3 = &CAnimManager::s_tAnimData[iVal_r6];
|
|
|
+ i_r2 = p_tAnimData_r3->u_C.filed_C;
|
|
|
+
|
|
|
+ // 001759FE
|
|
|
+ if (i_r11 == (i_r2 & i_r11) &&
|
|
|
+ (i_r2 & (i_r11 ^ 0x200)) == 0) // 2个条件合并
|
|
|
+ {
|
|
|
+ // 00175A0C
|
|
|
+ if (p_tAnimData_r3->s_74 == i5 &&
|
|
|
+ (short)p_tAnimData_r3->s_76 == i6) // 2个条件合并
|
|
|
+ {
|
|
|
+ v24 = 0;
|
|
|
+ if (i5 >= 2) // 00175A18
|
|
|
+ {
|
|
|
+ // 00175A1E
|
|
|
+ v24 = abs(((i_28 - p_tAnimData_r3->s_70) & 16383) -
|
|
|
+ 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
+ }
|
|
|
+
|
|
|
+ // 00175A3C
|
|
|
+ if (v24 <= 2730) {
|
|
|
+ // 00175A44
|
|
|
+ i_value1_4 = v24 << 7;
|
|
|
+ v27 =
|
|
|
+ (p_tAnimData_r3->us_1E + 0x2000 - p_tAnimData_r3->us_1C) & 16383;
|
|
|
+ i_value3_r3 = abs(((i_18 - (p_tAnimData_r3->s_64 + v27)) & 0x3FFF) -
|
|
|
+ 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
+
|
|
|
+ // 00175A7E
|
|
|
+ if (i_value3_r3 <= 2730) {
|
|
|
+ // 00175A86
|
|
|
+ i_value4_r1 = abs(((i_14 + p_tAnimData_r3->s_64) & 16383) -
|
|
|
+ 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
+
|
|
|
+ // 00175A7E
|
|
|
+ if (i_value4_r1 <= 2730) {
|
|
|
+ // 00175A86
|
|
|
+ i_value2_r2 = abs(((i_10 + 8192 - v27) & 16383) -
|
|
|
+ 8192); //优化后的结果,汇编并没有abs函数调用
|
|
|
+
|
|
|
+ // 00175AA4
|
|
|
+ if (i_value2_r2 <= 0xAAA) {
|
|
|
+ // 00175AAA
|
|
|
+ i_value5_r2 = i_value1_4 + (i_value2_r2 << 7) +
|
|
|
+ ((i_value3_r3 + i_value4_r1) << 7);
|
|
|
+ if (i_value5_r2 < i_C) {
|
|
|
+ // 00175AE2
|
|
|
+ i_value5_r2 += XSYS_Random(0x200); // call 001F4F44
|
|
|
+ }
|
|
|
+
|
|
|
+ // 00175AF0
|
|
|
+ i_tmp_r1 = i_C;
|
|
|
+ i_tmp1_r0 = i_24;
|
|
|
+
|
|
|
+ if (i_value5_r2 < i_C) {
|
|
|
+ i_tmp1_r0 = iVal_r6;
|
|
|
+ }
|
|
|
+ i_24 = i_tmp1_r0;
|
|
|
+ if (i_value5_r2 < i_C) {
|
|
|
+ i_tmp_r1 = i_value5_r2;
|
|
|
+ }
|
|
|
+
|
|
|
+ i_C = i_tmp_r1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ i++; // 00175A7C 原始是NEG,但是他以用负数计算,我这用正数计算,就+1即可
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 00175B06
|
|
|
+ if (i_24 < 0) {
|
|
|
+ // 00175B14
|
|
|
+ this->tStr32_44.field_8 = i_1C;
|
|
|
+ result = 0;
|
|
|
+ } else {
|
|
|
+ // 00175B0A
|
|
|
+ LOGI("CPlayer::SetAnimTurn: %p %d", this, i_24);
|
|
|
+ this->SetAnim(i_24); // call 001704F4
|
|
|
+ result = 1;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00175B2C
|
|
|
__attribute__((noinline)) bool CPlayer::Turn(int i1, int i2, bool b3) {
|
|
|
LOGI("CPlayer::ControlTakeBall %p %d %d %d", this, i1, i2, b3);
|
|
|
- return rand()%2;
|
|
|
+ return rand() % 2;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00178AAC 经过单元测试,功能正常
|