فهرست منبع

0x001787a0,UTILCOL_CapsuleCapsuleCheck bugfix

DESKTOP-AB9OQPJ\RED-10 3 سال پیش
والد
کامیت
e53ef78ecb
2فایلهای تغییر یافته به همراه86 افزوده شده و 71 حذف شده
  1. 85 71
      jni/Util.cpp
  2. 1 0
      obj/local/armeabi-v7a/objs/cpufeatures/archiver.list.tmp

+ 85 - 71
jni/Util.cpp

@@ -1,83 +1,99 @@
 #include "Util.h"
+
 #include "CFTTFileSystem_PAK.h"
-#include "memctrl.h"
-#include "XMATH.h"
 #include "TGame.h"
+#include "XMATH.h"
+#include "memctrl.h"
 int g_iPakOpen[100];
 CFTTFileSystem_PAK *g_pPakFileSystem[100];
 CFTTFile *g_pPakFile[100];
 
-const char *sPakFile[] = {
-    "PKG:Data/flags.pak",
-    "PKG:Data/nis.pak"};
+const char *sPakFile[] = {"PKG:Data/flags.pak", "PKG:Data/nis.pak"};
 
 //-------------------------------------------------------------------------------------------------
-//00178670
-void UTILCOL_CheckSpheresOverlap(TPoint3D, int, TPoint3D, int) {
-}
+// 00178670
+void UTILCOL_CheckSpheresOverlap(TPoint3D, int, TPoint3D, int) {}
 //-------------------------------------------------------------------------------------------------
-//001786E4
-int UTILCOL_RayCircleTest(TPoint *, int, TPoint *, TPoint *, int) {
-  return 0;
-}
+// 001786E4
+int UTILCOL_RayCircleTest(TPoint *, int, TPoint *, TPoint *, int) { return 0; }
 //-------------------------------------------------------------------------------------------------
-//0017875C
-void UTILCOL_LengthenBone(TPoint3D *, TPoint3D *, int) {
-}
+// 0017875C
+void UTILCOL_LengthenBone(TPoint3D *, TPoint3D *, int) {}
 //-------------------------------------------------------------------------------------------------
-//001787A0
-bool UTILCOL_CapsuleCapsuleCheck(TPoint3D tp3d0, TPoint3D tp3d1, TPoint3D tp3d2, TPoint3D tp3d3, int i4, int i5, int i6, int i7) {
+// 001787A0
+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;
+  TPoint3D var_2C_sp4C;
+  TPoint3D var_38_sp40;
+  TPoint3D var_44_sp34;
+  TPoint3D var_50_sp28;
+  TPoint3D var_5C_sp1C;
+  TPoint3D var_68_sp10;
+  int var_6C_spC;
+  int var_70_sp8;
+  var_2C_sp4C.point_0.dx_0 = tp3d0.point_0.dx_0;
+  var_2C_sp4C.point_0.dy_4 = tp3d0.point_0.dy_4;
+  var_2C_sp4C.dz_8 = tp3d0.dz_8;
 
-  var_38.point_0.dx_0 = tp3d1.point_0.dx_0;
+  var_38_sp40.point_0.dx_0 = tp3d1.point_0.dx_0;
+  var_38_sp40.point_0.dy_4 = tp3d1.point_0.dy_4;
+  var_38_sp40.dz_8 = tp3d1.dz_8;
 
-  var_2C.point_0.dy_4 = tp3d0.point_0.dy_4;
-  var_2C.dz_8 = tp3d0.dz_8;
+  var_44_sp34.point_0.dx_0 = tp3d2.point_0.dx_0;
+  var_44_sp34.point_0.dy_4 = tp3d2.point_0.dy_4;
+  var_44_sp34.dz_8 = tp3d2.dz_8;
 
-  var_38.point_0.dy_4 = tp3d1.point_0.dy_4;
-  var_38.dz_8 = tp3d1.dz_8;
+  var_50_sp28.point_0.dx_0 = tp3d3.point_0.dx_0;
+  var_50_sp28.point_0.dy_4 = tp3d3.point_0.dy_4;
+  var_50_sp28.dz_8 = tp3d3.dz_8;
 
-  var_44.point_0.dy_4 = tp3d2.point_0.dy_4;
-  var_44.dz_8 = tp3d2.dz_8;
+  var_5C_sp1C.point_0.dx_0 = (tp3d0.point_0.dx_0 + tp3d1.point_0.dx_0) / 2;
+  var_5C_sp1C.point_0.dy_4 = (tp3d0.point_0.dy_4 + tp3d1.point_0.dy_4) / 2;
+  var_5C_sp1C.dz_8 = (tp3d1.dz_8 + tp3d0.dz_8) / 2;
 
-  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;
+  var_68_sp10.point_0.dy_4 = (tp3d3.point_0.dy_4 + tp3d2.point_0.dy_4) / 2;
+  var_68_sp10.point_0.dx_0 = (tp3d3.point_0.dx_0 + tp3d2.point_0.dx_0) / 2;
+  var_68_sp10.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) {
+  if (((int)XMATH_Distance3D(&var_5C_sp1C, &var_68_sp10)) <= r5_i) {
     // 00178832
     // 00178846
-    if (XMATH_LineLineDistance(&var_2C, &var_38, &var_44, &var_50, &var_6C, &var_70) < i4 + i5) {
+    if (XMATH_LineLineDistance(&var_2C_sp4C, &var_38_sp40, &var_44_sp34,
+                               &var_50_sp28, &var_6C_spC,
+                               &var_70_sp8) < 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_370.point_0.dx_0 =
+          var_2C_sp4C.point_0.dx_0 +
+          var_6C_spC * (var_38_sp40.point_0.dx_0 - var_2C_sp4C.point_0.dx_0) /
+              4096;
+      tGame.mTMath_6734.field_370.point_0.dy_4 =
+          var_2C_sp4C.point_0.dy_4 +
+          var_6C_spC * (var_38_sp40.point_0.dy_4 - var_2C_sp4C.point_0.dy_4) /
+              4096;
+
+      tGame.mTMath_6734.field_370.dz_8 =
+          var_2C_sp4C.dz_8 +
+          var_6C_spC * (var_38_sp40.dz_8 - var_2C_sp4C.dz_8) / 4096;
+
+      tGame.mTMath_6734.field_37C.point_0.dx_0 =
+          var_44_sp34.point_0.dx_0 +
+          var_70_sp8 * (var_50_sp28.point_0.dx_0 - var_44_sp34.point_0.dx_0) /
+              4096;
+
+
+      tGame.mTMath_6734.field_37C.point_0.dy_4 =
+          var_44_sp34.point_0.dy_4 +
+          var_70_sp8 * (var_50_sp28.point_0.dy_4 - var_44_sp34.point_0.dy_4) /
+              4096;
+      tGame.mTMath_6734.field_37C.dz_8 =
+          var_44_sp34.dz_8 +
+          var_70_sp8 * (var_50_sp28.dz_8 - var_44_sp34.dz_8) / 4096;
       tGame.mTMath_6734.field_388[0] = i4;
       tGame.mTMath_6734.field_388[1] = i5;
       return 1;
@@ -87,53 +103,51 @@ bool UTILCOL_CapsuleCapsuleCheck(TPoint3D tp3d0, TPoint3D tp3d1, TPoint3D tp3d2,
   return 0;
 }
 //-------------------------------------------------------------------------------------------------
-//001F5080  //^_^ UtilOpenPak(0, "PAK");
+// 001F5080  //^_^ UtilOpenPak(0, "PAK");
 void UtilOpenPak(int a0, char const *pFileType) {
-  for (int dr6 = 0; dr6 <= 99; dr6++) {  //loc_1F50AC
-    //loc_1F5092
+  for (int dr6 = 0; dr6 <= 99; dr6++) {  // loc_1F50AC
+    // loc_1F5092
     if (a0 == dr6) {
-      if (g_iPakOpen[a0] == 0)
-        continue;
+      if (g_iPakOpen[a0] == 0) continue;
       return;
     }
-    //loc_1F509E
+    // loc_1F509E
     if (g_iPakOpen[dr6] != 0) {
       UtilClosePak(dr6);
     }
   }
 
-  //001F50B0
-  CFTTFile* r6_pFile = CFTTFileSystem::fopen(sPakFile[a0], "rb", EFTTMemHeapID_0);
+  // 001F50B0
+  CFTTFile *r6_pFile =
+      CFTTFileSystem::fopen(sPakFile[a0], "rb", EFTTMemHeapID_0);
   g_pPakFileSystem[a0] = new CFTTFileSystem_PAK;
   g_pPakFileSystem[a0]->Initialise(r6_pFile, EFTTMemHeapID_0);
   CFTTFileSystem::Register(g_pPakFileSystem[a0], pFileType);
   g_iPakOpen[a0] = 1;
 }
 //-------------------------------------------------------------------------------------------------
-//001F510C //^_^
+// 001F510C //^_^
 void UtilClosePak(int a0) {
   if (g_iPakOpen[a0]) {
     CFTTFileSystem::Deregister(g_pPakFileSystem[a0], nullptr);
-    //001F5136
+    // 001F5136
     if (g_pPakFileSystem[a0] != nullptr) {
       delete g_pPakFileSystem[a0];
     }
-    //001F5140
+    // 001F5140
     g_pPakFileSystem[a0] = nullptr;
 
     if (g_pPakFile[a0] != nullptr) {
       delete g_pPakFile[a0];
     }
 
-    //loc_1F5154
+    // loc_1F5154
     g_pPakFile[a0] = nullptr;
     g_iPakOpen[a0] = 0;
   }
-  //locret_1F515E
+  // locret_1F515E
 }
 //-------------------------------------------------------------------------------------------------
-//001F5170 //^_^
-bool UtilIsPackOpen(int a0) {
-  return g_iPakOpen[a0] != 0;
-}
+// 001F5170 //^_^
+bool UtilIsPackOpen(int a0) { return g_iPakOpen[a0] != 0; }
 //-------------------------------------------------------------------------------------------------

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

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