|
@@ -1,83 +1,99 @@
|
|
#include "Util.h"
|
|
#include "Util.h"
|
|
|
|
+
|
|
#include "CFTTFileSystem_PAK.h"
|
|
#include "CFTTFileSystem_PAK.h"
|
|
-#include "memctrl.h"
|
|
|
|
-#include "XMATH.h"
|
|
|
|
#include "TGame.h"
|
|
#include "TGame.h"
|
|
|
|
+#include "XMATH.h"
|
|
|
|
+#include "memctrl.h"
|
|
int g_iPakOpen[100];
|
|
int g_iPakOpen[100];
|
|
CFTTFileSystem_PAK *g_pPakFileSystem[100];
|
|
CFTTFileSystem_PAK *g_pPakFileSystem[100];
|
|
CFTTFile *g_pPakFile[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;
|
|
int r5_i = i5 + i4 + (i7 + i6) / 2;
|
|
|
|
|
|
// 0017882E
|
|
// 0017882E
|
|
- if (XMATH_Distance3D(&var_5C, &var_68) <= r5_i) {
|
|
|
|
|
|
+ if (((int)XMATH_Distance3D(&var_5C_sp1C, &var_68_sp10)) <= r5_i) {
|
|
// 00178832
|
|
// 00178832
|
|
// 00178846
|
|
// 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
|
|
// 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[0] = i4;
|
|
tGame.mTMath_6734.field_388[1] = i5;
|
|
tGame.mTMath_6734.field_388[1] = i5;
|
|
return 1;
|
|
return 1;
|
|
@@ -87,53 +103,51 @@ bool UTILCOL_CapsuleCapsuleCheck(TPoint3D tp3d0, TPoint3D tp3d1, TPoint3D tp3d2,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
//-------------------------------------------------------------------------------------------------
|
|
//-------------------------------------------------------------------------------------------------
|
|
-//001F5080 //^_^ UtilOpenPak(0, "PAK");
|
|
|
|
|
|
+// 001F5080 //^_^ UtilOpenPak(0, "PAK");
|
|
void UtilOpenPak(int a0, char const *pFileType) {
|
|
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 (a0 == dr6) {
|
|
- if (g_iPakOpen[a0] == 0)
|
|
|
|
- continue;
|
|
|
|
|
|
+ if (g_iPakOpen[a0] == 0) continue;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- //loc_1F509E
|
|
|
|
|
|
+ // loc_1F509E
|
|
if (g_iPakOpen[dr6] != 0) {
|
|
if (g_iPakOpen[dr6] != 0) {
|
|
UtilClosePak(dr6);
|
|
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] = new CFTTFileSystem_PAK;
|
|
g_pPakFileSystem[a0]->Initialise(r6_pFile, EFTTMemHeapID_0);
|
|
g_pPakFileSystem[a0]->Initialise(r6_pFile, EFTTMemHeapID_0);
|
|
CFTTFileSystem::Register(g_pPakFileSystem[a0], pFileType);
|
|
CFTTFileSystem::Register(g_pPakFileSystem[a0], pFileType);
|
|
g_iPakOpen[a0] = 1;
|
|
g_iPakOpen[a0] = 1;
|
|
}
|
|
}
|
|
//-------------------------------------------------------------------------------------------------
|
|
//-------------------------------------------------------------------------------------------------
|
|
-//001F510C //^_^
|
|
|
|
|
|
+// 001F510C //^_^
|
|
void UtilClosePak(int a0) {
|
|
void UtilClosePak(int a0) {
|
|
if (g_iPakOpen[a0]) {
|
|
if (g_iPakOpen[a0]) {
|
|
CFTTFileSystem::Deregister(g_pPakFileSystem[a0], nullptr);
|
|
CFTTFileSystem::Deregister(g_pPakFileSystem[a0], nullptr);
|
|
- //001F5136
|
|
|
|
|
|
+ // 001F5136
|
|
if (g_pPakFileSystem[a0] != nullptr) {
|
|
if (g_pPakFileSystem[a0] != nullptr) {
|
|
delete g_pPakFileSystem[a0];
|
|
delete g_pPakFileSystem[a0];
|
|
}
|
|
}
|
|
- //001F5140
|
|
|
|
|
|
+ // 001F5140
|
|
g_pPakFileSystem[a0] = nullptr;
|
|
g_pPakFileSystem[a0] = nullptr;
|
|
|
|
|
|
if (g_pPakFile[a0] != nullptr) {
|
|
if (g_pPakFile[a0] != nullptr) {
|
|
delete g_pPakFile[a0];
|
|
delete g_pPakFile[a0];
|
|
}
|
|
}
|
|
|
|
|
|
- //loc_1F5154
|
|
|
|
|
|
+ // loc_1F5154
|
|
g_pPakFile[a0] = nullptr;
|
|
g_pPakFile[a0] = nullptr;
|
|
g_iPakOpen[a0] = 0;
|
|
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; }
|
|
//-------------------------------------------------------------------------------------------------
|
|
//-------------------------------------------------------------------------------------------------
|