|
@@ -1,5 +1,7 @@
|
|
#include "FREE.h"
|
|
#include "FREE.h"
|
|
-
|
|
|
|
|
|
+#include "LOCstring.h"
|
|
|
|
+#include "CStoryHUD.h"
|
|
|
|
+#include "CStoryCore.h"
|
|
#include "CBall.h"
|
|
#include "CBall.h"
|
|
#include "CFTTPObject.h"
|
|
#include "CFTTPObject.h"
|
|
#include "CFTTPPBox.h"
|
|
#include "CFTTPPBox.h"
|
|
@@ -16,6 +18,22 @@
|
|
#include "CBallProj.h"
|
|
#include "CBallProj.h"
|
|
#include "XSYS.h"
|
|
#include "XSYS.h"
|
|
#include "SNDGAME.h"
|
|
#include "SNDGAME.h"
|
|
|
|
+int s_iEVFStrings[160] = {
|
|
|
|
+ 0x184B, 0x184C, 0x1858, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x1859, 0x185A, 0, 0, 0, 0, 0, 0, 0, 0, 0x1854,
|
|
|
|
+ 0x1855, 0x1856, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x184F, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x1850, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x184E, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x186B, 0x186C, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x184D, 0x1851, 0x1852, 0x1853, 0x1857, 0x186A, 0, 0, 0, 0,
|
|
|
|
+ 0x185B, 0x185C, 0x185D, 0x185E, 0x1864, 0x1869, 0, 0, 0, 0,
|
|
|
|
+ 0x1860, 0x1861, 0x1862, 0x1865, 0x1866, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x1863, 0x1868, 0x1867, 0x185F, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x1867, 0x1861, 0x1859, 0x185A, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0xFB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1878, 0x1879,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0x1876, 0x1877, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0x186D, 0x186E, 0x186F, 0x1870, 0x1871, 0x1873, 0x1874, 0x1875, 0x1872, 0};
|
|
// FREE_tInfo 0x1D20
|
|
// FREE_tInfo 0x1D20
|
|
// FREE_tGoal 0x7634
|
|
// FREE_tGoal 0x7634
|
|
int FREE_iTeam ;
|
|
int FREE_iTeam ;
|
|
@@ -658,11 +676,184 @@ void FREE_Render3DDecal() {}
|
|
void FREE_RenderPreSelectedPlayer() {}
|
|
void FREE_RenderPreSelectedPlayer() {}
|
|
//-------------------------------------------------------------------------------------------------
|
|
//-------------------------------------------------------------------------------------------------
|
|
// 001DC0E0
|
|
// 001DC0E0
|
|
-void FREE_RenderProcess() {}
|
|
|
|
|
|
+void FREE_RenderProcess() {
|
|
|
|
+ MP_cMyProfile.m_TProfileData.m_CGameSettings_2b80.filed_0.filed_0=rand()%10;
|
|
|
|
+}
|
|
//-------------------------------------------------------------------------------------------------
|
|
//-------------------------------------------------------------------------------------------------
|
|
// 001DC0E4
|
|
// 001DC0E4
|
|
-void FREE_AddVisualFeedback(int a1, EVFEffect a2, int a3) {
|
|
|
|
- LOGE("FREE_AddVisualFeedback%x%x%x",a1,a2,a3);
|
|
|
|
|
|
+void FREE_AddVisualFeedback(int i0, EVFEffect e1, int i2) {
|
|
|
|
+ CStoryHUD* r0_hud = CStoryCore::m_tStageManager.pStory_5cf4;
|
|
|
|
+ r0_hud->ClearVisualFeedback();
|
|
|
|
+
|
|
|
|
+ int r0_i = 0;
|
|
|
|
+ int r4_i = i2;
|
|
|
|
+ int r5_i = e1;
|
|
|
|
+ int r6_i = i0;
|
|
|
|
+ // int r7_i =0;
|
|
|
|
+ int r1_i = r6_i + r6_i * 4;
|
|
|
|
+ int* r7_pi = s_iEVFStrings + r1_i * 2;
|
|
|
|
+ // loc_1DC120
|
|
|
|
+ while (r0_i <= 9) {
|
|
|
|
+ // loc_1DC118
|
|
|
|
+ r1_i = *(r7_pi + r0_i);
|
|
|
|
+ if (r1_i == 0) {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ // loc_1DC120
|
|
|
|
+ r0_i++;
|
|
|
|
+ } // loc_1DC118
|
|
|
|
+ // loc_1DC124
|
|
|
|
+ r0_i = XSYS_Random(r0_i);
|
|
|
|
+ r0_i = *(r7_pi + r0_i);
|
|
|
|
+ wchar_t* r1_pwc = LOCstring(r0_i);
|
|
|
|
+ wchar_t var_218[256];
|
|
|
|
+ xstrlcpy(var_218, r1_pwc, 256);
|
|
|
|
+ int r3_i;
|
|
|
|
+ int r7_i;
|
|
|
|
+ // 47AEA8 - 0x477E90
|
|
|
|
+ r0_i = MP_cMyProfile.m_TProfileData.m_CGameSettings_2b80.filed_0.filed_0;
|
|
|
|
+ // 001DC148
|
|
|
|
+ if (r0_i == 1) {
|
|
|
|
+ // 001DC14C
|
|
|
|
+ xstrlcat(var_218, L" ", 256);
|
|
|
|
+ } else {
|
|
|
|
+ // loc_1DC152
|
|
|
|
+ xstrlcat(var_218, L"!", 256);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * 描述:此处分支被合并到下面的cBall变量访问的代码块中了
|
|
|
|
+ * 原始汇编: BLX j__Z8xstrlcatPwPKwj
|
|
|
|
+ LDR R0, =(cBall_ptr - 0x1DC166)
|
|
|
|
+ ADD R0, PC
|
|
|
|
+ LDR R0, [R0]
|
|
|
|
+ LDR R1, [R0,#(dword_356A7C - 0x356A70)]
|
|
|
|
+ * 自已汇编: ...
|
|
|
|
+ * LDR R0, =(cBall_ptr - 0xA26A)
|
|
|
|
+ MOV.W R4, #0xFFFFFFFF
|
|
|
|
+ ADD R0, PC
|
|
|
|
+ LDR R0, [R0]
|
|
|
|
+ LDRD.W R3, R2, [R0,#4]
|
|
|
|
+ LDR R0, [R0,#(dword_27A4C - 0x27A40)]
|
|
|
|
+ */
|
|
|
|
+ // 356A7C - 0x356A70
|
|
|
|
+ // 001DC168
|
|
|
|
+ r1_i = cBall.ballPosPrev_4.dz_8;
|
|
|
|
+ if (r1_i <= 98304) {
|
|
|
|
+ // 001DC16E
|
|
|
|
+ r1_i = 98304;
|
|
|
|
+ }
|
|
|
|
+ r3_i = cBall.ballPosPrev_4.point_0.dx_0;
|
|
|
|
+ int r2_i = cBall.ballPosPrev_4.point_0.dy_4;
|
|
|
|
+ bool bC1F8 = false;
|
|
|
|
+ // 001DC174
|
|
|
|
+ if (r4_i + 1 != 0) {
|
|
|
|
+ // 001DC176
|
|
|
|
+ if (r5_i == 3) {
|
|
|
|
+ // 001DC17A
|
|
|
|
+ r1_i = tGame.CPlayer_3050[r4_i].ballPosPrev_4.dz_8;
|
|
|
|
+ r2_i = tGame.CPlayer_3050[r4_i].ballPosPrev_4.point_0.dy_4;
|
|
|
|
+ r3_i = tGame.CPlayer_3050[r4_i].ballPosPrev_4.point_0.dx_0;
|
|
|
|
+ r4_i = -1;
|
|
|
|
+ // 001DC18A
|
|
|
|
+ if (r6_i != 12) {
|
|
|
|
+ // 001DC1A2
|
|
|
|
+ r1_i = r1_i + 98304;
|
|
|
|
+ }
|
|
|
|
+ // loc_1DC1F8
|
|
|
|
+ bC1F8 = true;
|
|
|
|
+ } else {
|
|
|
|
+ // loc_1DC1B2
|
|
|
|
+ r1_i = 98304;
|
|
|
|
+ r2_i = 0;
|
|
|
|
+ r3_i = 0;
|
|
|
|
+ }
|
|
|
|
+ // loc_1DC1BA
|
|
|
|
+ } else {
|
|
|
|
+ // loc_1DC1A8
|
|
|
|
+ r4_i = -1;
|
|
|
|
+ }
|
|
|
|
+ if (bC1F8 == false) {
|
|
|
|
+ // loc_1DC1BA
|
|
|
|
+ uint r0_ui = (uint)r5_i - 1u;
|
|
|
|
+ // 001DC1BC
|
|
|
|
+ if (r0_ui >= 2) {
|
|
|
|
+ // 001DC1C0
|
|
|
|
+ if (r5_i != 3) {
|
|
|
|
+ // 001DC1C4
|
|
|
|
+ if (r5_i == 0) {
|
|
|
|
+ // 001DC1C8
|
|
|
|
+ // 4B0E34 - 0x4AB140
|
|
|
|
+ CStoryHUD* r0_hud = CStoryCore::m_tStageManager.pStory_5cf4;
|
|
|
|
+ r7_i = 0;
|
|
|
|
+ r6_i = 1;
|
|
|
|
+ int var_228 = r6_i;
|
|
|
|
+ int var_224 = r7_i;
|
|
|
|
+ int var_220 = r4_i;
|
|
|
|
+ int r12_i = -256;
|
|
|
|
+ float r5_f = 1;
|
|
|
|
+ r4_i = 100;
|
|
|
|
+ r6_i = 1602;
|
|
|
|
+ TPoint3D tp3d0;
|
|
|
|
+ tp3d0.point_0.dx_0 = r3_i;
|
|
|
|
+ tp3d0.point_0.dy_4 = r2_i;
|
|
|
|
+ tp3d0.dz_8 = r1_i;
|
|
|
|
+ TPoint3D tp3d1;
|
|
|
|
+ tp3d1.point_0.dx_0 = r7_i;
|
|
|
|
+ tp3d1.point_0.dy_4 = r7_i;
|
|
|
|
+ tp3d1.dz_8 = r6_i;
|
|
|
|
+ return r0_hud->AddVisualFeedback(var_218, 0, tp3d0, tp3d1, r4_i, r5_f, r12_i,
|
|
|
|
+ var_228, (EVFEffect)var_224, var_220);
|
|
|
|
+ }
|
|
|
|
+ // loc_1DC25E
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // F8
|
|
|
|
+ } else {
|
|
|
|
+ // loc_1DC228
|
|
|
|
+ float r6_f = 0.699999988079071;
|
|
|
|
+ r7_i = 1;
|
|
|
|
+ CStoryHUD* r0_hud = CStoryCore::m_tStageManager.pStory_5cf4;
|
|
|
|
+ int var_228 = r7_i;
|
|
|
|
+ int var_224 = r5_i;
|
|
|
|
+ int var_220 = r4_i;
|
|
|
|
+ r5_i = 60;
|
|
|
|
+ r7_i = 0;
|
|
|
|
+ r4_i = 1602;
|
|
|
|
+ int r12_i = -1;
|
|
|
|
+ TPoint3D tp3d0;
|
|
|
|
+ tp3d0.point_0.dx_0 = r3_i;
|
|
|
|
+ tp3d0.point_0.dy_4 = r2_i;
|
|
|
|
+ tp3d0.dz_8 = r1_i;
|
|
|
|
+ TPoint3D tp3d1;
|
|
|
|
+ tp3d1.point_0.dx_0 = r7_i;
|
|
|
|
+ tp3d1.point_0.dy_4 = r7_i;
|
|
|
|
+ tp3d1.dz_8 = r4_i;
|
|
|
|
+ return r0_hud->AddVisualFeedback(var_218, 0, tp3d0, tp3d1, r5_i, r6_f, r12_i, var_228,
|
|
|
|
+ (EVFEffect)var_224, var_220);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // loc_1DC1F8
|
|
|
|
+ r0_i = -801;
|
|
|
|
+ r7_i = 1;
|
|
|
|
+ r6_i = -12566464;
|
|
|
|
+ int lr_i = r0_i;
|
|
|
|
+ // lostphp.com/hexconvert该网站转换,反编译后与原汇编一致
|
|
|
|
+ float r12_f = 0.699999988079071;
|
|
|
|
+ r0_hud = CStoryCore::m_tStageManager.pStory_5cf4;
|
|
|
|
+ int var_228 = r7_i;
|
|
|
|
+ int var_224 = r5_i;
|
|
|
|
+ r7_i = 40;
|
|
|
|
+ r5_i = 0;
|
|
|
|
+ TPoint3D tp3d0;
|
|
|
|
+ tp3d0.point_0.dx_0 = r3_i;
|
|
|
|
+ tp3d0.point_0.dy_4 = r2_i;
|
|
|
|
+ tp3d0.dz_8 = r1_i;
|
|
|
|
+ TPoint3D tp3d1;
|
|
|
|
+ tp3d1.point_0.dx_0 = r5_i;
|
|
|
|
+ tp3d1.point_0.dy_4 = r5_i;
|
|
|
|
+ tp3d1.dz_8 = lr_i;
|
|
|
|
+ r0_hud->AddVisualFeedback(var_218, 0, tp3d0, tp3d1, r7_i, r12_f, r6_i, var_228, (EVFEffect)var_224, r4_i);
|
|
}
|
|
}
|
|
//-------------------------------------------------------------------------------------------------
|
|
//-------------------------------------------------------------------------------------------------
|
|
// 001DC290
|
|
// 001DC290
|