|
@@ -119,14 +119,14 @@ void CPlayer::UpdatePosVel() {
|
|
|
r7_i = xsin(r6_i) / 4 * r5_i;
|
|
|
r0_i = xcos(r6_i);
|
|
|
// r1_i = 0 - (r0_i * 4096);
|
|
|
- if(r1_i<0)
|
|
|
- r1_i=0x3FFF;
|
|
|
+ if (r1_i < 0)
|
|
|
+ r1_i = 0x3FFF;
|
|
|
else
|
|
|
- r1_i=0;
|
|
|
- r0_i = r1_i - (r0_i * 4096);
|
|
|
+ r1_i = 0;
|
|
|
+ r0_i = r1_i - (r0_i * 4096);
|
|
|
|
|
|
r0_i = (r0_i >> 14) * r5_i / 4096;
|
|
|
-
|
|
|
+
|
|
|
// loc_16EAF8
|
|
|
r1_i = r7_i / 4096;
|
|
|
|
|
@@ -136,18 +136,18 @@ void CPlayer::UpdatePosVel() {
|
|
|
r0_i = r0_i / 4;
|
|
|
int r6_i = r0_i * r5_i;
|
|
|
r0_i = xcos(r7_i); // 0016EA9E
|
|
|
- //r1_i = 0 - ((uint)r0_i << 12);
|
|
|
- // r1_i = r1_i >> 31;
|
|
|
- // r1_i = (uint)r1_i >> 18;
|
|
|
+ // r1_i = 0 - ((uint)r0_i << 12);
|
|
|
+ // r1_i = r1_i >> 31;
|
|
|
+ // r1_i = (uint)r1_i >> 18;
|
|
|
if (r1_i < 0)
|
|
|
- r1_i = 0x3fff;
|
|
|
+ r1_i = 0x3fff;
|
|
|
else
|
|
|
r1_i = 0;
|
|
|
r0_i = r1_i - ((uint)r0_i << 12);
|
|
|
// //FF003FFF
|
|
|
- r0_i = r0_i >> 14;
|
|
|
- //FFFFFC00
|
|
|
- // loc_16EAF8
|
|
|
+ r0_i = r0_i >> 14;
|
|
|
+ // FFFFFC00
|
|
|
+ // loc_16EAF8
|
|
|
r1_i = r6_i / 4096;
|
|
|
r0_i = r0_i * r5_i / 4096;
|
|
|
}
|
|
@@ -236,7 +236,8 @@ __attribute__((noinline)) void CPlayer::SetRot(TPoint point1, bool b2) {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC20
|
|
|
__attribute__((noinline)) ushort CPlayer::GetRotPoint(TPoint point1) {
|
|
|
- return 0;
|
|
|
+ LOGE("CPlayer::GetRotPoint0016EC20%p%x%x", this, point1.dx_0, point1.dy_4);
|
|
|
+ return rand();
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016EC34
|
|
@@ -264,7 +265,9 @@ int CPlayer::GetRotDest() {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016ECB6
|
|
|
__attribute__((noinline)) ushort CPlayer::GetRotPoint(TPoint3D point1) {
|
|
|
- return 0;
|
|
|
+ LOGE("CPlayer::GetRotPoint0016ECB6 %p %x %x %x", this, point1.point_0.dx_0,
|
|
|
+ point1.point_0.dy_4, point1.dz_8);
|
|
|
+ return rand();
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016ECCC ^_^
|
|
@@ -348,7 +351,7 @@ void CPlayer::UpdateAction() {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0016F3D4
|
|
|
__attribute__((noinline)) int CPlayer::ActionTend(int i1, TPoint3D *pPoint3D2) {
|
|
|
- LOGI("CPlayer::UpdateAction %p %d", this, i1, pPoint3D2);
|
|
|
+ LOGI("CPlayer::UpdateAction %p %d%x", this, i1, (uint)pPoint3D2);
|
|
|
return rand() % 4;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -429,7 +432,7 @@ void CPlayer::Animate(int i1) {
|
|
|
// 0017039C ^_- 经过单元测试,功能正常
|
|
|
void CPlayer::ApplyRootBoneOfs(TAnimData *pAniData1, int i2) {
|
|
|
// LOGI("CPlayer::ApplyRootBoneOfs %d", i2);
|
|
|
- LOGE("ApplyRootBoneOfs%x%x%x",this,pAniData1,i2);
|
|
|
+ LOGE("ApplyRootBoneOfs%p%x%x", this, (uint)pAniData1, i2);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170440 ^_-
|
|
@@ -445,7 +448,8 @@ __attribute__((noinline)) TAnimData *CPlayer::GetAnimData() {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001704F4 经过单元测试,功能正常
|
|
|
void CPlayer::SetAnim(int i1) {
|
|
|
- if (CAnimManager::s_tAnimData[tStr32_44.field_10].filed_54 != nullptr) { // 00170514
|
|
|
+ if (CAnimManager::s_tAnimData[tStr32_44.field_10].filed_54 !=
|
|
|
+ nullptr) { // 00170514
|
|
|
// 00170516
|
|
|
GetRootBoneMove(&Point3D_14.point_0);
|
|
|
int r7_i = XMATH_Mag2D(&Point3D_14);
|
|
@@ -476,13 +480,14 @@ void CPlayer::SetAnim(int i1) {
|
|
|
u_0.s_2_0.s_2 = GetTrueRot();
|
|
|
if (field_10 >= 2) {
|
|
|
// 00170586
|
|
|
- tStr32_44.field_20=tStr32_44.field_10;
|
|
|
- tStr32_44.field_24=tStr32_44.field_14;
|
|
|
+ tStr32_44.field_20 = tStr32_44.field_10;
|
|
|
+ tStr32_44.field_24 = tStr32_44.field_14;
|
|
|
TAnimData *r8_pAnimData = &CAnimManager::s_tAnimData[tStr32_44.field_10];
|
|
|
if (r8_pAnimData->filed_8 == 4) {
|
|
|
// 001705AE
|
|
|
|
|
|
- r0_i = ((int)(((uint)(XMATH_Mag(&Point3D_14.point_0))) * 2)) / ((short)r8_pAnimData->us_18);
|
|
|
+ r0_i = ((int)(((uint)(XMATH_Mag(&Point3D_14.point_0))) * 2)) /
|
|
|
+ ((short)r8_pAnimData->us_18);
|
|
|
r0_i *= tStr32_44.field_1C;
|
|
|
r0_i /= 128;
|
|
|
} else {
|
|
@@ -494,21 +499,21 @@ void CPlayer::SetAnim(int i1) {
|
|
|
tStr32_44.s_28 = r0_i;
|
|
|
|
|
|
tStr32_44.sBlend_2E = 8192;
|
|
|
- //LOGE("tStr32_44.u_2C.s_2C.sBlend_2E=%x",tStr32_44.u_2C.s_2C.sBlend_2E);
|
|
|
+ // LOGE("tStr32_44.u_2C.s_2C.sBlend_2E=%x",tStr32_44.u_2C.s_2C.sBlend_2E);
|
|
|
tStr32_44.s_2A = tStr32_44.s_18;
|
|
|
- tStr32_44.s_2C = (((8192 - r9_us) + u_0.s_2_0.s_2) & 0x3FFF)-0x2000;
|
|
|
+ tStr32_44.s_2C = (((8192 - r9_us) + u_0.s_2_0.s_2) & 0x3FFF) - 0x2000;
|
|
|
} else {
|
|
|
// loc_1705CE
|
|
|
tStr32_44.s_2C = 0;
|
|
|
- tStr32_44.sBlend_2E=0;
|
|
|
+ tStr32_44.sBlend_2E = 0;
|
|
|
}
|
|
|
|
|
|
// loc_170604
|
|
|
tStr32_44.field_10 = i1; // 0017060C
|
|
|
tStr32_44.field_14 = 0;
|
|
|
-
|
|
|
+
|
|
|
TAnimData *r5_pAnimData = &CAnimManager::s_tAnimData[i1];
|
|
|
-
|
|
|
+
|
|
|
tStr32_44.s_C = r5_pAnimData->filed_6e;
|
|
|
// 00170614
|
|
|
if (tStr32_44.field_8 == 4) {
|
|
@@ -532,10 +537,10 @@ void CPlayer::SetAnim(int i1) {
|
|
|
tStr32_44.field_14 = XSYS_Random(0x10000);
|
|
|
}
|
|
|
} // loc_170666
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
// 00170636
|
|
|
- tStr32_44.field_1C = *(short*)&r5_pAnimData->filed_10;
|
|
|
+ tStr32_44.field_1C = *(short *)&r5_pAnimData->filed_10;
|
|
|
if (!tStr32_44.field_8) {
|
|
|
// loc_170656
|
|
|
// 00170656
|
|
@@ -568,9 +573,9 @@ void CPlayer::GetRootBoneMove(TPoint *pPoint1) {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0017077C ^_- 经过单元测试,功能正常
|
|
|
short CPlayer::GetTrueRot() {
|
|
|
- LOGI("CPlayer::GetRootBoneMove %p ", this);
|
|
|
- return rand()&0x3fff;
|
|
|
- }
|
|
|
+ LOGI("CPlayer::GetRootBoneMove %p ", this);
|
|
|
+ return rand() & 0x3fff;
|
|
|
+}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170820
|
|
|
__attribute__((noinline)) bool CPlayer::AnimBlendNeeded() { return false; }
|
|
@@ -578,7 +583,7 @@ __attribute__((noinline)) bool CPlayer::AnimBlendNeeded() { return false; }
|
|
|
// 0017082C ^_- 经过单元测试,功能正常
|
|
|
void CPlayer::UpdateAnimCalcs() {
|
|
|
// LOGI("CPlayer::UpdateAnimCalcs entry");
|
|
|
- LOGI("CPlayer::UpdateAnimCalcs %p ", this);
|
|
|
+ LOGI("CPlayer::UpdateAnimCalcs %p ", this);
|
|
|
// loc_1708C8
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -613,7 +618,7 @@ void CPlayer::UpdateJostlePoint() {
|
|
|
if (r6_pAnimData->s_64) return;
|
|
|
|
|
|
//??? 后面的代码好像与
|
|
|
- //NIS的测试环境,通过单元测试,发现后面的代码不写,不影响逻辑
|
|
|
+ // NIS的测试环境,通过单元测试,发现后面的代码不写,不影响逻辑
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170A14 ^_^
|
|
@@ -632,13 +637,61 @@ __attribute__((noinline)) void CPlayer::EnableIdleAnims(bool b1) {}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170C14 经过单元测试,功能正常
|
|
|
void CPlayer::SetAnimFromStateGen(int i1, int i2, int i3) {
|
|
|
- // LOGI("CPlayer::SetAnimFromStateGen %p %d %d %d", this, i1, i2, i3);
|
|
|
+ LOGI("CPlayer::SetAnimFromStateGen %p %d %d %d", this, i1, i2, i3);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170D10 经过单元测试,功能正常
|
|
|
void CPlayer::SetAnimFromStateI() {
|
|
|
- // LOGI("CPlayer::SetAnimFromStateI %p", this);
|
|
|
// 00170D16
|
|
|
+ if (tStr32_44.field_8) {
|
|
|
+ // 00170D18
|
|
|
+ if (tStr32_44.field_8 != 4) {
|
|
|
+ if (tStr32_44.field_8 == 11) {
|
|
|
+ // 00170D20
|
|
|
+ if (tGame.mTLogic_6678.field_8 == 1) {
|
|
|
+ // 00170D3A
|
|
|
+ // loc_170DA8
|
|
|
+ SetAnimFromStateGen(
|
|
|
+ GetRotPoint(cBall.point3D_84),
|
|
|
+ CAnimManager::s_tAnimData[tStr32_44.field_10].s_76, 0x200);
|
|
|
+ } else {
|
|
|
+ // loc_170D98
|
|
|
+ SetAnimFromStateGen(
|
|
|
+ GetRotPoint(g_vZero),
|
|
|
+ CAnimManager::s_tAnimData[tStr32_44.field_10].s_76, 0x200);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // loc_170D82
|
|
|
+
|
|
|
+ SetAnimFromStateGen(-1, -1, 0);
|
|
|
+ tStr32_44.field_14 = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else { // loc_170D6C
|
|
|
+ SetAnimFromStateLoco(-1, -1, 0x180);
|
|
|
+ tStr32_44.field_14 = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // loc_170D4E
|
|
|
+ if (u_0.s_2_0.s_0 + 1 != 0) {
|
|
|
+ // 00170D56
|
|
|
+ if (Turn(u_0.s_2_0.s_0, u_0.s_2_0.s_0, false)) {
|
|
|
+ // locret_170D96
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 00170D62
|
|
|
+ tStr32_44.field_8 = 4;
|
|
|
+ SetAnimFromStateLoco(-1, -1, 0x180);
|
|
|
+ tStr32_44.field_14 = 0x2000;
|
|
|
+ } else {
|
|
|
+ // loc_170D6C
|
|
|
+ SetAnimFromStateLoco(-1, -1, 0x180);
|
|
|
+ tStr32_44.field_14 = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00170DD4 ^_^
|
|
@@ -882,7 +935,7 @@ __attribute__((noinline)) void CPlayer::IsFacing(int i1, int i2) {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00173442
|
|
|
__attribute__((noinline)) void CPlayer::IsAtDest(TPoint *pPoint1, int i2) {
|
|
|
- LOGI("CPlayer::IsAtDest %p %d %d", this, pPoint1, i2);
|
|
|
+ LOGI("CPlayer::IsAtDest %p %d %d", this, (int)pPoint1, i2);
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0017346C
|
|
@@ -928,9 +981,10 @@ __attribute__((noinline)) void CPlayer::GetWalkSpeed() {
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001742B4 ^_^
|
|
|
-int CPlayer::GetSprintSpeed() {
|
|
|
- LOGE("this=%xCPlayer::GetRunSpeed", this);
|
|
|
- return rand(); }
|
|
|
+int CPlayer::GetSprintSpeed() {
|
|
|
+ LOGE("this=%xCPlayer::GetRunSpeed", (uint)this);
|
|
|
+ return rand();
|
|
|
+}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174310 ^_^
|
|
|
int CPlayer::GetTargetRunSpeed() { return 0; }
|
|
@@ -945,8 +999,8 @@ int CPlayer::GetCurrentRunSpeed() {
|
|
|
int CPlayer::GetRunSpeed() {
|
|
|
int dret = 0;
|
|
|
// loc_1744BA
|
|
|
- LOGE("this=%xCPlayer::GetRunSpeed", this);
|
|
|
- return rand()+0x409360;
|
|
|
+ LOGE("this=%xCPlayer::GetRunSpeed", (uint)this);
|
|
|
+ return rand() + 0x409360;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001744CC
|
|
@@ -1061,7 +1115,7 @@ __attribute__((noinline)) void CPlayer::SetAnimTurn(
|
|
|
// 00175B2C
|
|
|
__attribute__((noinline)) bool CPlayer::Turn(int i1, int i2, bool b3) {
|
|
|
LOGI("CPlayer::ControlTakeBall %p %d %d %d", this, i1, i2, b3);
|
|
|
- return true;
|
|
|
+ return rand()%2;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00178AAC 经过单元测试,功能正常
|