Browse Source

0x00171e98,COL_PlayerBallCollideEvent,347,347,杨志平,must bugfix

DESKTOP-AB9OQPJ\RED-10 3 năm trước cách đây
mục cha
commit
811df09a77

+ 2 - 1
jni/Android.mk

@@ -460,7 +460,8 @@ LOCAL_SRC_FILES :=  ANIMHashName.cpp                        \
                     GetAttribute.cpp                        \
                     sub.cpp                                     \
                     TGfxCrowdState.cpp                      \
-                    CFESShopHelper.cpp
+                    CFESShopHelper.cpp                      \
+                    COL.cpp
 
 LOCAL_ARM_NEON := true
 LOCAL_CFLAGS   += -fshort-wchar -fvisibility=default  -fomit-frame-pointer -fno-stack-protector

+ 5 - 2
jni/CBall.cpp

@@ -18,11 +18,13 @@ void CBall::Stop() {
 }
 //-------------------------------------------------------------------------------------------------
 //00157668
-void CBall::SetVel(int, int, int) {
+void CBall::SetVel(int i1, int i2, int i3) {
+	LOGE("%p%x%x%xCBall::SetVel",this,i1,i2,i3);
 }
 //-------------------------------------------------------------------------------------------------
 //00157678
-void CBall::SetVelRel(int, int, int) {
+void CBall::SetVelRel(int i1, int i2, int i3) {
+	LOGE("%p%x%x%xCBall::SetVel",this,i1,i2,i3);
 }
 //-------------------------------------------------------------------------------------------------
 //00157698
@@ -91,6 +93,7 @@ void CBall::DoBallGoalBounce() {
 //-------------------------------------------------------------------------------------------------
 //00158638
 void CBall::Deflect() {
+	LOGE("%pCBall::Deflect",this);
 }
 //-------------------------------------------------------------------------------------------------
 //001586DC

+ 274 - 0
jni/COL.cpp

@@ -0,0 +1,274 @@
+#include "COL.h"
+
+#include "CBall.h"
+#include "CPlayer.h"
+#include "GM.h"
+#include "XMATH.h"
+#include "GU.h"
+#include "GL.h"
+#include "SNDGAME.h"
+void COL_PlayerBallCollideEvent(CPlayer *pPlayer_0, int i_1, bool &b_2) {
+  TAnimData *tAnimData_r7;  // r7
+  CPlayer *pPlarer_r0;      // r0
+  CPlayer *pPlayer_r8 = 0;  // r8
+  int iStance_r0;           // r0
+  int i_r1;                 // r1
+  TPoint v18;               // r2
+  TPoint v20;               // r2
+  TPoint tPoint_r0;         // r0
+  int i_v23_54;             // [sp+Ch] [bp-54h]
+  TPoint tPoint_4C;         // [sp+14h] [bp-4Ch] BYREF
+  int i_mag_44;             // [sp+1Ch] [bp-44h] BYREF
+  TPoint3D t_Point3D_40;    // [sp+20h] [bp-40h] BYREF
+  TPoint3D tPoint_30;       // [sp+30h] [bp-30h] BYREF
+
+  // 00171E98
+  tAnimData_r7 = pPlayer_0->GetAnimData();  // call 001704DC
+  pPlarer_r0 = tGame.allplay_14[tGame.mTLogic_6678.team_40]
+                   .teamlist_0[tGame.mTLogic_6678.player_3C];
+  if (pPlarer_r0->uc_88)
+    pPlayer_r8 = tGame.allplay_14[tGame.mTLogic_6678.team_40]
+                     .teamlist_0[tGame.mTLogic_6678.player_3C];
+
+  // 00171ED8
+  if (i_1 != -1) {
+    // 00171EDC
+    i_v23_54 = pPlayer_0->tStr32_44.uc_0;
+    if (XMATH_Distance3D(&cBall.ballPosPrev_4, &tGame.mTMath_6734.field_370) <
+        tGame.mTMath_6734.field_388[0] +
+            tGame.mTMath_6734.field_388[1])  // call 001F3490
+    {
+      // 00171F0E
+      tPoint_30.point_0.dx_0 = cBall.ballPosPrev_4.point_0.dx_0 -
+                               tGame.mTMath_6734.field_370.point_0.dx_0;
+      tPoint_30.point_0.dy_4 = cBall.ballPosPrev_4.point_0.dy_4 -
+                               tGame.mTMath_6734.field_370.point_0.dy_4;
+      tPoint_30.dz_8 =
+          cBall.ballPosPrev_4.dz_8 - tGame.mTMath_6734.field_370.dz_8;
+
+      XMATH_Normalize(&tPoint_30,
+                      tGame.mTMath_6734.field_388[0] +
+                          tGame.mTMath_6734.field_388[1]);  // call 001F2586
+      cBall.ballPosPrev_4.point_0.dx_0 =
+          tGame.mTMath_6734.field_370.point_0.dx_0 + tPoint_30.point_0.dx_0;
+      cBall.ballPosPrev_4.point_0.dy_4 =
+          tGame.mTMath_6734.field_370.point_0.dy_4 + tPoint_30.point_0.dy_4;
+      cBall.ballPosPrev_4.dz_8 =
+          tPoint_30.dz_8 + tGame.mTMath_6734.field_370.dz_8;
+    }
+
+    /// 171F58
+    if (tGame.field_6C34 <= 2 && tGame.mTLogic_6678.field_48 == 11 &&
+        tGame.mTLogic_6678.field_44 == pPlayer_0->tStr32_44.uc_0 &&
+        tGame.mTLogic_6678.field_50 == pPlayer_0->tStr32_44.uc_1  /// 00171F88
+        && (tGame.mTMath_6734.field_370.point_0.dy_4 -
+            tGame.mTMath_6734.field_37C.point_0.dy_4) /
+                       1024 * cBall.ballMovePrev_10.point_0.dy_4 / 256 +
+                   cBall.ballMovePrev_10.point_0.dx_0 *
+                       ((tGame.mTMath_6734.field_370.point_0.dx_0 -
+                         tGame.mTMath_6734.field_37C.point_0.dx_0) /
+                        1024) /
+                       256 +
+                   cBall.ballMovePrev_10.dz_8 *
+                       ((tGame.mTMath_6734.field_370.dz_8 -
+                         tGame.mTMath_6734.field_37C.dz_8) /
+                        1024) /
+                       256 <=
+               -1) {
+      tGame.field_6C34 = 0;
+    } else {
+      // 0017200A
+      pPlayer_0->field_14C = i_1;
+      i_mag_44 = XMATH_Mag3D(&cBall.ballMovePrev_10);        // call 001F3274
+      if ((pPlayer_0->tStr32_44.field_8 & 0xFFFFFFFE) == 8)  // 00172024
+      {
+        // 00172024
+        iStance_r0 = (pPlayer_0->tStr32_44.field_14 -
+                      tAnimData_r7->filed_20[0].filed_0) /
+                     pPlayer_0->tStr32_44.field_1C;  // call 002A3CC0
+        if (iStance_r0 < 0) {
+          iStance_r0 = -iStance_r0;  // 00172036
+        }
+
+        // 00172038
+        if (iStance_r0 > 3) {
+          // 001720A4
+          tPoint_4C =
+              XMATH_Project(pPlayer_0->u_0.s_2_0.s_2, 0x8000);  // 001F32DC
+
+          if (i_mag_44 <= 2136) i_mag_44 = 2136;
+
+          // 001720C8
+          t_Point3D_40.point_0 = tPoint_4C;
+          t_Point3D_40.dz_8 = (tGame.mTMath_6734.field_37C.dz_8 -
+                               tGame.mTMath_6734.field_370.dz_8) /
+                              8;
+
+          XMATH_Normalize(
+              &t_Point3D_40,
+              (4 * (uint)i_mag_44) / 5u);  // call 002A3C14 //call 001F2586
+        } else {
+          // 0017203C
+          t_Point3D_40.dz_8 = pPlayer_0->aPoint3D_178[1].dz_8;
+          t_Point3D_40.point_0 = pPlayer_0->aPoint3D_178[1].point_0;
+        }
+
+        // 001720EE
+        cBall.SetVel(t_Point3D_40.point_0.dx_0, t_Point3D_40.point_0.dy_4,
+                     t_Point3D_40.dz_8);  // 00157668
+        b_2 = 1;
+      } else {
+        // 0017204C
+        t_Point3D_40.point_0.dx_0 = tGame.mTMath_6734.field_37C.point_0.dx_0 -
+                                    tGame.mTMath_6734.field_370.point_0.dx_0;
+        t_Point3D_40.point_0.dy_4 = tGame.mTMath_6734.field_37C.point_0.dy_4 -
+                                    tGame.mTMath_6734.field_370.point_0.dy_4;
+        t_Point3D_40.dz_8 = (tGame.mTMath_6734.field_37C.dz_8 -
+                             tGame.mTMath_6734.field_370.dz_8) /
+                            8;
+        XMATH_Normalize(&t_Point3D_40, i_mag_44);  // call 001F2586
+
+        // 0017208C
+        if ((pPlayer_r8 == 0 || pPlayer_r8 == pPlayer_0))  // call 001F328A
+        {
+          // 00172098
+          cBall.SetVel(t_Point3D_40.point_0.dx_0, t_Point3D_40.point_0.dy_4,
+                       t_Point3D_40.dz_8);  // call 00157668
+        } else {
+          // loc_1721CE
+          if(XMATH_Mag(&pPlayer_r8->Point3D_14.point_0)>(i_mag_44/2)){
+          GM_DeflectBallFromDribbler(pPlayer_0, &i_mag_44);  // 00171E50
+          b_2 = 1;
+          }else{
+            // 00172098
+          cBall.SetVel(t_Point3D_40.point_0.dx_0, t_Point3D_40.point_0.dy_4,
+                       t_Point3D_40.dz_8);  // call 00157668
+          }
+        }
+      }
+
+      // 001720FE
+      i_r1 = 0xFA5;
+      if (i_mag_44 / 2 > 0xFA5) i_r1 = i_mag_44 / 2;
+
+      // 0017210C
+      XMATH_Normalize(&cBall.ballMovePrev_10, i_r1);
+      if (pPlayer_r8 == 0 || pPlayer_r8 == pPlayer_0) {
+        cBall.SetVelRel(pPlayer_0->point_20.dx_0 / 4,
+                        pPlayer_0->point_20.dy_4 / 4, 0);  // call 00157678
+      }
+
+      // 0017213A
+      if (pPlayer_0->tStr32_44.uc_0 == 2) {
+        // 00172142
+        tGame.field_6C34 = 0;
+        tGame.mTLogic_6678.field_48 = 11;
+      } else {
+        // 00172154
+       
+        GL_SetTouch(i_v23_54, pPlayer_0->tStr32_44.uc_1,
+                    (pPlayer_0->tStr32_44.field_8 | 1) == 9, EKickType_11,
+                    "Deflection");
+      }
+
+      // 00172174
+      if (pPlayer_0->tStr32_44.field_8 != 8 &&
+          pPlayer_0->tStr32_44.field_8 != 15) {
+        // 00172190
+        if ((int)cBall.speedXY_28 < 16021) {
+          // 001721F6
+          if ((int)cBall.speedXY_28 < 10681) {
+            // 00172230
+            tPoint_r0.dx_0 = cBall.point3D_44.point_0.dx_0 / 8 +
+                             pPlayer_0->Point3D_14.point_0.dx_0 / 2;
+            tPoint_r0.dy_4 = cBall.point3D_44.point_0.dy_4 / 8 +
+                             pPlayer_0->Point3D_14.point_0.dy_4 / 2;
+            pPlayer_0->Point3D_14.point_0 = tPoint_r0;
+          } else {
+            // 001721FE
+            v20 = pPlayer_0->point_20;
+            tPoint_4C.dx_0 = v20.dx_0 + cBall.point3D_44.point_0.dx_0 / 8;
+            tPoint_4C.dy_4 = v20.dy_4 + cBall.point3D_44.point_0.dy_4 / 8;
+            pPlayer_0->Trip(0, GU_GetRot(&tPoint_4C));
+          }
+        } else {
+          // 0017219C
+          v18 = pPlayer_0->point_20;
+          tPoint_4C.dx_0 = v18.dx_0 + cBall.point3D_44.point_0.dx_0 / 8;
+          tPoint_4C.dy_4 = v18.dy_4 + cBall.point3D_44.point_0.dy_4 / 8;
+          pPlayer_0->Fell(GU_GetRot(&tPoint_4C), 0);
+        }
+      }
+      // 0017217E
+      cBall.Deflect();
+      SNDGAME_PlaySFX(0x14u);
+    }
+  }
+}
+// uint COL_PlayerBallCollision(CPlayer *player_0) {
+//   unsigned int iIndex_r4;       // r4
+//   int i_x_r1;                   // r1
+//   TLimbInfo *pTLimbInfo_r10;    // r10
+//   int i_y_r3;                   // r3
+//   TPoint v8;                    // d16
+//   int i_r9;                     // r12
+//   int i_r7;                     // r7
+//   int i_Distance_3D;            // [sp+3Ch] [bp-29Ch]
+//   TPoint3D tTPoint3Ds_48[42];   // [sp+48h] [bp-290h] BYREF
+//   TPoint3D tPoint_240;          // [sp+240h] [bp-98h] BYREF
+//   TPoint3D tPoint_250;          // [sp+250h] [bp-88h] BYREF
+//   TPoint3D tPoint_260;          // [sp+260h] [bp-78h] BYREF
+//   TPoint3D tPoint_270;          // [sp+270h] [bp-68h] BYREF
+//   uint8 b_flags_280[24] = {0};  // [sp+280h] [bp-58h]
+
+//   // 001718B6
+//   tPoint_270 = cBall.point3D_2C;
+//   tPoint_260 = cBall.ballPosPrev_4;
+
+//   i_Distance_3D = XMATH_Distance3D(&tPoint_270, &tPoint_260);  // call
+//   001F3490 iIndex_r4 = 0;
+
+//   // 001718DA
+//   while (iIndex_r4 <= 0xD) {
+//     // 001718DE
+//     i_x_r1 = COL_tLimbInfo[iIndex_r4].field_0;
+//     if (!b_flags_280[i_x_r1])  // 001718E6
+//     {
+//       // 001718EC
+//       player_0->GetBonePosition(i_x_r1, &tTPoint3Ds_48[i_x_r1]);  // call
+//       001715EC i_x_r1 = COL_tLimbInfo[iIndex_r4].field_0; b_flags_280[i_x_r1]
+//       = 1;
+//     }
+
+//     // 00171904
+//     pTLimbInfo_r10 = &COL_tLimbInfo[iIndex_r4];
+//     i_y_r3 = pTLimbInfo_r10->field_4;
+//     if (!b_flags_280[i_y_r3])  // 0017190E
+//     {
+//       // 00171910
+//       player_0->GetBonePosition(pTLimbInfo_r10->field_4,
+//       &tTPoint3Ds_48[i_y_r3]);  // call 001715EC i_x_r1 =
+//       COL_tLimbInfo[iIndex_r4].field_0; i_y_r3 = pTLimbInfo_r10->field_4;
+//       b_flags_280[i_y_r3] = 1;
+//     }
+
+//     // 0017192C
+//     tPoint_240 = tTPoint3Ds_48[i_y_r3];
+//     tPoint_250 = tTPoint3Ds_48[i_x_r1];
+
+//     // 00171958
+//     i_r9 = XMATH_Distance3D(&tPoint_250, &tPoint_240);  // call 001F3490
+//     i_r7 = COL_tBoneNodeInfo[COL_tLimbInfo[iIndex_r4].field_0].i_4;
+
+//     // 0017198A
+//     if (i_r7 < COL_tBoneNodeInfo[pTLimbInfo_r10->field_4].i_4)
+//       i_r7 = COL_tBoneNodeInfo[pTLimbInfo_r10->field_4].i_4;
+
+//     // 001719C4
+//     ++iIndex_r4;
+//     if (UTILCOL_CapsuleCapsuleCheck(tPoint_250, tPoint_240, tPoint_270,
+//     tPoint_260, i_r7, 0x1000, i_r9, i_Distance_3D))  // call 001787A0
+//       return iIndex_r4 - 1;
+//   }
+//   return -1;
+// }

+ 6 - 1
jni/COL.h

@@ -1,5 +1,6 @@
 #ifndef _COL_H_
 #define _COL_H_
+#include "CPlayer.h"
 
 /*
 0x00172274	COL_CheckPlayerGoalCollision
@@ -11,6 +12,10 @@
 0x00172348	COL_PlayerPostCollisions
 */
 
-void COL_PlayerCollisions();  // 00172ea0
+void COL_PlayerCollisions();                                              // 00172ea0
+void COL_PlayerBallCollideEvent(CPlayer *pPlayer_0, int i_1, bool &b_2);  // 00171E98
+uint COL_PlayerBallCollision(CPlayer *player_0);                          // 00171878
+void COL_PlayerCollisions();                                              // 00171E98
+void COL_PlayerPlayerCollisions(void);                                    // 00172654
 
 #endif  //_COL_H_

+ 6 - 3
jni/CPlayer.cpp

@@ -762,14 +762,17 @@ bool CPlayer::Fell(TPoint point1, bool b3) { return true; }
 //-------------------------------------------------------------------------------------------------
 // 00172EE4
 bool CPlayer::Fell(int i1, bool b2) {
-  LOGI("CPlayer::Fell 00172EE4");
-  return true;
+  bool r4_bret = rand();
+  // loc_172FEE
+  LOGE("CPlayer::Fell%x%x%p",i1,b2,this);
+  return r4_bret;
 }
 //-------------------------------------------------------------------------------------------------
 // 00172F78 ^_-
 bool CPlayer::Trip(int i1, int i2) {
-  bool r4_bret = false;
+  bool r4_bret = rand();
   // loc_172FEE
+  LOGE("CPlayer::Trip%x%x%p",i1,i2,this);
   return r4_bret;
 }
 //-------------------------------------------------------------------------------------------------

+ 2 - 1
jni/GL.cpp

@@ -26,7 +26,8 @@ void GL_CalculateBackLine() {
 }
 //-------------------------------------------------------------------------------------------------
 //0016DE9C
-void GL_SetTouch(int, int, bool, EKickType, char const*) {
+void GL_SetTouch(int a1, int a2, bool a3, EKickType a4, char const*a5) {
+	LOGE("GL_SetTouch%x%x%x%x%s",a1,a2,a3,a4,a5);
 }
 //-------------------------------------------------------------------------------------------------
 //00175E58

+ 1 - 0
jni/GL.h

@@ -16,6 +16,7 @@ enum EKickType {
   EKickType_8,
   EKickType_9,
   EKickType_10,
+  EKickType_11,
 };
 
 enum EPlayModeStep {

+ 4 - 1
jni/GM.cpp

@@ -36,7 +36,10 @@ void GM_GetRotPowerTrajectory(TPoint3D pt0, int *i1, int *i2, int *i3) {}
 void GM_GetVecFromRotPowerTrajectory(TPoint3D *, int, int, int) {}
 //-------------------------------------------------------------------------------------------------
 // 00171E50
-void GM_DeflectBallFromDribbler(CPlayer *player, int *i1) {}
+void GM_DeflectBallFromDribbler(CPlayer *player, int *i1) {
+  LOGE("%p%pGM_DeflectBallFromDribbler",player,i1);
+  *i1=rand();
+}
 //-------------------------------------------------------------------------------------------------
 // 00178C7C
 int GM_CheckInterception(CPlayer *, int, int, int) { return 0; }

+ 2 - 1
jni/GU.cpp

@@ -30,7 +30,8 @@ int GU_GetRot(TPoint const &a1, TPoint3D const &a2) {
 //-------------------------------------------------------------------------------------------------
 //0016DE8C
 ushort GU_GetRot(const TPoint &a1) {
-  return 0;
+  LOGE("GU_GetRot%x%x",a1.dx_0,a1.dy_4);
+  return rand();
 }
 //-------------------------------------------------------------------------------------------------
 //00178EA4

+ 60 - 2
jni/Util.cpp

@@ -1,7 +1,8 @@
 #include "Util.h"
 #include "CFTTFileSystem_PAK.h"
 #include "memctrl.h"
-
+#include "XMATH.h"
+#include "TGame.h"
 int g_iPakOpen[100];
 CFTTFileSystem_PAK *g_pPakFileSystem[100];
 CFTTFile *g_pPakFile[100];
@@ -25,7 +26,64 @@ void UTILCOL_LengthenBone(TPoint3D *, TPoint3D *, int) {
 }
 //-------------------------------------------------------------------------------------------------
 //001787A0
-bool UTILCOL_CapsuleCapsuleCheck(TPoint3D, TPoint3D, TPoint3D, TPoint3D, int, int, int, int) {
+bool UTILCOL_CapsuleCapsuleCheck(TPoint3D tp3d0, TPoint3D tp3d1, TPoint3D tp3d2, TPoint3D tp3d3, int i4, int i5, int i6, int i7) {
+  /*
+   * 描述:这个函数寄存器对不上,摆弄了多次后无法与原汇编一致。但功能看起来比较明确。
+   */
+  TPoint3D var_2C;
+  TPoint3D var_38;
+  TPoint3D var_44;
+  TPoint3D var_50;
+  TPoint3D var_5C;
+  TPoint3D var_68;
+  int var_6C;
+  int var_70;
+  var_2C.point_0.dx_0 = tp3d0.point_0.dx_0;
+
+  var_38.point_0.dx_0 = tp3d1.point_0.dx_0;
+
+  var_2C.point_0.dy_4 = tp3d0.point_0.dy_4;
+  var_2C.dz_8 = tp3d0.dz_8;
+
+  var_38.point_0.dy_4 = tp3d1.point_0.dy_4;
+  var_38.dz_8 = tp3d1.dz_8;
+
+  var_44.point_0.dy_4 = tp3d2.point_0.dy_4;
+  var_44.dz_8 = tp3d2.dz_8;
+
+  var_50.point_0.dx_0 = tp3d3.point_0.dx_0;
+  var_50.point_0.dy_4 = tp3d3.point_0.dy_4;
+  var_50.dz_8 = tp3d3.dz_8;
+
+  var_44.point_0.dx_0 = tp3d2.point_0.dx_0;
+
+  var_5C.point_0.dx_0 = (tp3d0.point_0.dx_0 + tp3d1.point_0.dx_0) / 2;
+  var_5C.point_0.dy_4 = (tp3d0.point_0.dy_4 + tp3d1.point_0.dy_4) / 2;
+  var_5C.dz_8 = (tp3d1.dz_8 + tp3d0.dz_8) / 2;
+
+  var_68.point_0.dy_4 = (tp3d3.point_0.dy_4 + tp3d2.point_0.dy_4) / 2;
+  var_68.point_0.dx_0 = (tp3d3.point_0.dx_0 + tp3d2.point_0.dx_0) / 2;
+  var_68.dz_8 = (tp3d3.dz_8 + tp3d2.dz_8) / 2;
+  int r5_i = i5 + i4 + (i7 + i6) / 2;
+
+  // 0017882E
+  if (XMATH_Distance3D(&var_5C, &var_68) <= r5_i) {
+    // 00178832
+    // 00178846
+    if (XMATH_LineLineDistance(&var_2C, &var_38, &var_44, &var_50, &var_6C, &var_70) < i4 + i5) {
+      // 0017884A
+      tGame.mTMath_6734.field_370.point_0.dx_0 = var_2C.point_0.dx_0 + var_6C * (var_38.point_0.dx_0 + var_2C.point_0.dx_0) / 4096;
+      tGame.mTMath_6734.field_370.point_0.dy_4 = var_2C.point_0.dy_4 + var_6C * (var_38.point_0.dy_4 + var_2C.point_0.dy_4) / 4096;
+      tGame.mTMath_6734.field_370.dz_8 = var_2C.dz_8 + var_6C * (var_38.dz_8 - var_2C.dz_8) / 4096;
+      tGame.mTMath_6734.field_37C.point_0.dx_0 = var_44.point_0.dy_4 + var_70 * (var_50.point_0.dy_4 - var_44.point_0.dy_4) / 4096;
+      tGame.mTMath_6734.field_37C.point_0.dy_4 = var_44.point_0.dx_0 + var_70 * (var_50.point_0.dx_0 - var_44.point_0.dx_0) / 4096;
+      tGame.mTMath_6734.field_37C.dz_8 = var_44.dz_8 + var_70 * (var_50.dz_8 - var_44.dz_8) / 4096;
+      tGame.mTMath_6734.field_388[0] = i4;
+      tGame.mTMath_6734.field_388[1] = i5;
+      return 1;
+    }
+  }
+  // loc_178900
   return 0;
 }
 //-------------------------------------------------------------------------------------------------

+ 7 - 1
jni/XMATH.cpp

@@ -47,7 +47,10 @@ uint64_t XMATH_CalcSqrt(uint64_t a1) {
 //-------------------------------------------------------------------------------------------------
 //001f2586 ^_^
 void XMATH_Normalize(TPoint3D *a1, int a2) {
+  LOGE("%p%x%x%x%xXMATH_Normalize",a1,a1->dz_8,a1->point_0.dx_0,a1->point_0.dy_4,a2);
 }
+
+
 //-------------------------------------------------------------------------------------------------
 //001f25f2 ^_^  除BL BLX 不一致 经过单元测试,功能正常
 void XMATH_Normalize(TPoint *a1, int a2) {
@@ -164,7 +167,8 @@ float XMATH_Clamp64(long long, long long, long long) {
 //-------------------------------------------------------------------------------------------------
 //001f3274	^_^  调用sqrt b blx的区别 经过单元测试,功能正常
 uint32_t XMATH_Mag3D(TPoint3D const *a1) {
-  return 0;
+  LOGE("XMATH_Mag3D%x%x%x%p",a1->dz_8,a1->point_0.dx_0,a1->point_0.dy_4,a1);
+  return rand();
 }
 //-------------------------------------------------------------------------------------------------
 //001F328A //^_- 经过单元测试,功能正常 _Z9XMATH_MagPK6TPoint
@@ -188,6 +192,8 @@ uint64_t XMATH_Mag2D(TPoint3D const *pPoint3D0) {
 //001F32DC ^_^ 经过单元测试,功能正常
 TPoint XMATH_Project(int a1, int a2) {
   TPoint result;
+  result.dx_0=a1+a2;
+  result.dy_4=a1+a2+rand();
   return result;
 }
 //-------------------------------------------------------------------------------------------------

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
obj/local/armeabi-v7a/objs/Hero/linker.list


+ 1 - 0
obj/local/armeabi-v7a/objs/cpufeatures/archiver.list.tmp

@@ -0,0 +1 @@
+./obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o 

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác