CPlayer.cpp 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129
  1. #include "CPlayer.h"
  2. #include "ACT.h"
  3. #include "CAnimManager.h"
  4. #include "CBall.h"
  5. #include "CBallProj.h"
  6. #include "CPlayerManager.h"
  7. #include "GL.h"
  8. #include "GM.h"
  9. #include "GPA.h"
  10. #include "GU.h"
  11. #include "SNDGAME.h"
  12. #include "TGame.h"
  13. #include "XMATH.h"
  14. #include "XSYS.h"
  15. int LOCO_SPEED_WALK_MIN = 0x321; // 0033E988
  16. int LOCO_SPEED_WALK_MAX = 0x321; // 0033E98C
  17. int LOCO_SPEED_WALK_AVG = 0x321; // 0033E990
  18. int LOCO_SPEED_JOG_MIN = 0xC84; // 0033E994
  19. int LOCO_SPEED_JOG_MAX = 0xE9A; // 0033E998
  20. int LOCO_SPEED_JOG_AVG = 0xD8F; // 0033E99C
  21. int LOCO_SPEED_SPRINT_MIN = 0xE9A; // 0033E9A0
  22. int LOCO_SPEED_SPRINT_MAX = 0x11BB; // 0033E9A4
  23. int LOCO_SPEED_SPRINT_AVG = 0x102A; // 0033E9A8
  24. //-------------------------------------------------------------------------------------------------
  25. // 0011DE8C
  26. void CPlayer::SetPos(int i1, int i2) {}
  27. //-------------------------------------------------------------------------------------------------
  28. // 00125D8C
  29. void CPlayer::SetPos(TPoint3D r1) {}
  30. //-------------------------------------------------------------------------------------------------
  31. // 00154314 ^_^
  32. uint64_t CPlayer::GetDistance(TPoint point1) { return 0; }
  33. //-------------------------------------------------------------------------------------------------
  34. // 0015432C ^_^
  35. int CPlayer::GetDistanceSq(TPoint point1) { return 0; }
  36. //-------------------------------------------------------------------------------------------------
  37. // 0015CBD0
  38. void CPlayer::SetPos(TPoint point1) {}
  39. //-------------------------------------------------------------------------------------------------
  40. // 0016E630
  41. void CPlayer::UpdateFE() {}
  42. //-------------------------------------------------------------------------------------------------
  43. // 0016E64E ^_- 经过单元测试,功能正常
  44. void CPlayer::UpdateRot() {
  45. // locret_16E6AC
  46. }
  47. //-------------------------------------------------------------------------------------------------
  48. // 0016E6B0 ^_- 经过单元测试,功能正常
  49. void CPlayer::UpdateHeadRot() {
  50. // LOGI("CPlayer::UpdateHeadRot %p", this);
  51. // locret_16E798
  52. }
  53. //-------------------------------------------------------------------------------------------------
  54. // 0016E7A4 ^_^
  55. void CPlayer::UpdateFinalise() {}
  56. //-------------------------------------------------------------------------------------------------
  57. // 0016E7C2 ^_^
  58. void CPlayer::Update() {}
  59. //-------------------------------------------------------------------------------------------------
  60. // 0016E81A ^_^
  61. void CPlayer::UpdateSprint() {
  62. // locret_16E870
  63. }
  64. //-------------------------------------------------------------------------------------------------
  65. // 0016E874
  66. void CPlayer::UpdateFace() { LOGI("CPlayer::UpdateFace %p", this); }
  67. //-------------------------------------------------------------------------------------------------
  68. int UNITROT_X(int x) { return xsin(x) / 16; }
  69. int UNITROT_Y(int x) { return 0 - xcos(x) / 16; }
  70. // 0016E9BC
  71. // 0016E9BC 经过更衣室和游戏第一关测试正常
  72. void CPlayer::UpdatePosVel() {
  73. TAnimData *r6_pAnimData = GetAnimData();
  74. int r5_i;
  75. if ((r6_pAnimData->u_C.s_C.uc_d & 0x20) == 0 ||
  76. tStr32_44.field_14 < r6_pAnimData->filed_20[0].filed_0) {
  77. // loc_16E9D6
  78. r5_i = GetRunSpeed();
  79. } else {
  80. r5_i = 0;
  81. }
  82. // loc_16E9E2
  83. int r0_i, r1_i;
  84. if (s_158 == 0 && ballPosPrev_4.dz_8 == 0 && Point3D_14.dz_8 == 0) {
  85. // 0016E9FC
  86. if (tStr32_44.field_8 != 3) {
  87. // 0016EA02
  88. if (tStr32_44.field_8 || tStr32_44.sBlend_2E) {
  89. // loc_16EA0C
  90. int r7_i = u_0.s_2_0.s_0;
  91. if (u_0.s_2_0.s_0 != -1) {
  92. // 0016EA14
  93. if (tStr32_44.field_8 == 4) {
  94. // 0016EA18
  95. TAnimData *r2_pAnimData =
  96. &CAnimManager::s_tAnimData[tStr32_44.field_20];
  97. if (tStr32_44.sBlend_2E &&
  98. r2_pAnimData->filed_8 == 4) { // 0016EA34
  99. // 0016EA38
  100. // sint32 r3_si = (sint32)tStr32_44.u_2C.s_2C.uBlend_2E;
  101. // r3_si=((r3_si>>26)&0x1f)+tStr32_44.u_2C.s_2C.uBlend_2E;
  102. // uint r3_ui = UBFX(r3_si, 26, 5);
  103. short r3_si = tStr32_44.sBlend_2E;
  104. r0_i = GM_BlendAngle(r6_pAnimData->s_64, r2_pAnimData->s_64,
  105. r3_si / 32);
  106. } else {
  107. // loc_16EAC2
  108. //!!!!!!!修改
  109. r0_i = r6_pAnimData->s_64;
  110. }
  111. // loc_16EAC6
  112. int r6_i = r0_i + r7_i;
  113. r7_i = xsin(r6_i) / 4 * r5_i;
  114. r0_i = xcos(r6_i);
  115. // r1_i = 0 - (r0_i * 4096);
  116. if (r1_i < 0)
  117. r1_i = 0x3FFF;
  118. else
  119. r1_i = 0;
  120. r0_i = r1_i - (r0_i * 4096);
  121. r0_i = (r0_i >> 14) * r5_i / 4096;
  122. // loc_16EAF8
  123. r1_i = r7_i / 4096;
  124. } else {
  125. // loc_16EA86
  126. r0_i = xsin(r7_i);
  127. r0_i = r0_i / 4;
  128. int r6_i = r0_i * r5_i;
  129. r0_i = xcos(r7_i); // 0016EA9E
  130. // r1_i = 0 - ((uint)r0_i << 12);
  131. // r1_i = r1_i >> 31;
  132. // r1_i = (uint)r1_i >> 18;
  133. if (r1_i < 0)
  134. r1_i = 0x3fff;
  135. else
  136. r1_i = 0;
  137. r0_i = r1_i - ((uint)r0_i << 12);
  138. // //FF003FFF
  139. r0_i = r0_i >> 14;
  140. // FFFFFC00
  141. // loc_16EAF8
  142. r1_i = r6_i / 4096;
  143. r0_i = r0_i * r5_i / 4096;
  144. }
  145. } else {
  146. // loc_16EA80
  147. r0_i = 0;
  148. r1_i = 0;
  149. }
  150. } else {
  151. // loc_16EAB8
  152. r0_i = 0;
  153. r1_i = 0;
  154. Point3D_14.point_0.dx_0 = 0;
  155. Point3D_14.point_0.dy_4 = 0;
  156. }
  157. } else {
  158. // loc_16EA52
  159. int r6_i = GU_GetRot(ballPosPrev_4.point_0, point_78);
  160. int r7_i = UNITROT_X(r6_i) * r5_i;
  161. r0_i = UNITROT_Y(r6_i) * r5_i;
  162. r1_i = r7_i / 1024;
  163. r0_i = r0_i / 1024;
  164. }
  165. // loc_16EB04
  166. int r2_i = Point3D_14.point_0.dx_0;
  167. int r3_i = Point3D_14.point_0.dy_4;
  168. Point3D_14.point_0.dx_0 = ((r2_i * 96) + (r1_i * 32)) / 128;
  169. Point3D_14.point_0.dy_4 = ((r3_i * 96) + (r0_i * 32)) / 128;
  170. }
  171. // loc_16EB30
  172. ballPosPrev_4.point_0.dx_0 += Point3D_14.point_0.dx_0;
  173. ballPosPrev_4.point_0.dy_4 += Point3D_14.point_0.dy_4;
  174. if (Point3D_14.dz_8 || ballPosPrev_4.dz_8 >= 1) {
  175. // loc_16EB4A
  176. ballPosPrev_4.dz_8 += Point3D_14.dz_8;
  177. Point3D_14.dz_8 -= 98;
  178. if (ballPosPrev_4.dz_8 > -1) {
  179. return;
  180. }
  181. }
  182. // loc_16EB5E
  183. Point3D_14.dz_8 = 0;
  184. ballPosPrev_4.dz_8 = 0;
  185. }
  186. //-------------------------------------------------------------------------------------------------
  187. // 0016EB6C ^_^
  188. void CPlayer::UpdateFuturePos() {}
  189. //-------------------------------------------------------------------------------------------------
  190. // 0016EB86
  191. __attribute__((noinline)) void CPlayer::UpdateBallInHands() {
  192. LOGI("CPlayer::UpdateBallInHands %p", this);
  193. }
  194. //-------------------------------------------------------------------------------------------------
  195. // 0016EB88
  196. void CPlayer::SetPos(int i1, int i2, int i3) {
  197. // LOGI("CPlayer::SetPos %d %d %d", i1, i2, i3);
  198. }
  199. //-------------------------------------------------------------------------------------------------
  200. // 0016EBDE
  201. void CPlayer::SetPosDest() {}
  202. //-------------------------------------------------------------------------------------------------
  203. // 0016EBE6
  204. __attribute__((noinline)) void CPlayer::SetMoveDest(int i1, int i2) {
  205. LOGI("CPlayer::SetPosDest %p %d %d", this, i1, i2);
  206. }
  207. //-------------------------------------------------------------------------------------------------
  208. // 0016EBF2
  209. void CPlayer::SetMoveDest(TPoint point1) {}
  210. //-------------------------------------------------------------------------------------------------
  211. // 0016EBFE
  212. void CPlayer::SetRotExplicit(int i1) {}
  213. //-------------------------------------------------------------------------------------------------
  214. // 0016EC02
  215. __attribute__((noinline)) void CPlayer::SetRot(int r1, bool r2) {
  216. // locret_16EC0A
  217. }
  218. //-------------------------------------------------------------------------------------------------
  219. // 0016EC0C
  220. __attribute__((noinline)) void CPlayer::SetRot(TPoint point1, bool b2) {
  221. LOGI("CPlayer::SetPosDest %p %d %d %d", this, point1.dx_0, point1.dy_4, b2);
  222. }
  223. //-------------------------------------------------------------------------------------------------
  224. // 0016EC20
  225. __attribute__((noinline)) ushort CPlayer::GetRotPoint(TPoint point1) {
  226. LOGE("CPlayer::GetRotPoint0016EC20%p%x%x", this, point1.dx_0, point1.dy_4);
  227. return rand();
  228. }
  229. //-------------------------------------------------------------------------------------------------
  230. // 0016EC34
  231. __attribute__((noinline)) void CPlayer::SetFace(int i1) {}
  232. //-------------------------------------------------------------------------------------------------
  233. // 0016EC3A
  234. __attribute__((noinline)) void CPlayer::SetFace(int i1, int i2) {
  235. LOGI("CPlayer::SetFace %p %d %d", this, i1, i2);
  236. }
  237. //-------------------------------------------------------------------------------------------------
  238. // 0016EC48
  239. void CPlayer::SetFace(TPoint point1) {}
  240. //-------------------------------------------------------------------------------------------------
  241. // 0016EC56
  242. void CPlayer::SetFaceDest() {}
  243. //-------------------------------------------------------------------------------------------------
  244. // 0016EC7A
  245. void CPlayer::Stop(int i1) {}
  246. //-------------------------------------------------------------------------------------------------
  247. // 0016EC8E ^_^
  248. int CPlayer::GetRotDest() {
  249. // 0016EC9E
  250. return 0;
  251. }
  252. //-------------------------------------------------------------------------------------------------
  253. // 0016ECB6
  254. __attribute__((noinline)) ushort CPlayer::GetRotPoint(TPoint3D point1) {
  255. LOGE("CPlayer::GetRotPoint0016ECB6 %p %x %x %x", this, point1.point_0.dx_0,
  256. point1.point_0.dy_4, point1.dz_8);
  257. return rand();
  258. }
  259. //-------------------------------------------------------------------------------------------------
  260. // 0016ECCC ^_^
  261. int CPlayer::GetRotBall() { return 0; }
  262. //-------------------------------------------------------------------------------------------------
  263. // 0016ECF0
  264. __attribute__((noinline)) void CPlayer::GetDistance(CPlayer *pPlayer1) {
  265. LOGI("CPlayer::GetDistance %p %p", this, pPlayer1);
  266. }
  267. //-------------------------------------------------------------------------------------------------
  268. // 0016ED1C
  269. __attribute__((noinline)) void CPlayer::GetDistanceSq(CPlayer *pPlayer1) {
  270. LOGI("CPlayer::GetDistanceSq %p %p", this, pPlayer1);
  271. }
  272. //-------------------------------------------------------------------------------------------------
  273. // 0016ED40 ^_^
  274. void CPlayer::SetSpaceRot(int i1, int i2) {}
  275. //-------------------------------------------------------------------------------------------------
  276. // 0016ED8A
  277. __attribute__((noinline)) void CPlayer::GetMoveDistance() {
  278. LOGI("CPlayer::GetMoveDistance %p", this);
  279. }
  280. //-------------------------------------------------------------------------------------------------
  281. // 0016ED96 ^_^
  282. void CPlayer::Init() {}
  283. //-------------------------------------------------------------------------------------------------
  284. // 0016EDD0 经过单元测试功能正常
  285. void CPlayer::SetupGoally(int i1, TPlayerInfo *pPlayerInfo2) {
  286. // LOGI("CPlayer::SetupGoally %p %d %p", this, i1, pPlayerInfo2);
  287. }
  288. //-------------------------------------------------------------------------------------------------
  289. // 0016EEC6 经过单元测试,功能正常
  290. void CPlayer::SetupPlayer(int i1, int i2, TPlayerInfo *pPlayerInfo3) {
  291. LOGI("CPlayer::SetupPlayer %p %d %d %p", this, i1, i2, pPlayerInfo3);
  292. }
  293. //-------------------------------------------------------------------------------------------------
  294. // 0016EFBC ^_^
  295. void CPlayer::SetupStandard() {}
  296. //-------------------------------------------------------------------------------------------------
  297. // 0016F008 ^_^
  298. void CPlayer::SetupOfficial() {}
  299. //-------------------------------------------------------------------------------------------------
  300. // 0016F044 经过单元测试同,功能正常
  301. void CPlayer::Reset() {
  302. // LOGI("CPlayer::Reset %p", this);
  303. }
  304. //-------------------------------------------------------------------------------------------------
  305. // 0016F114
  306. void CPlayer::CancelHeadInputControl() {}
  307. //-------------------------------------------------------------------------------------------------
  308. // 0016F11C
  309. void CPlayer::SetHeadRotRel(int r1, bool r2) {
  310. // locret_16F12A
  311. }
  312. //-------------------------------------------------------------------------------------------------
  313. // 0016F12C
  314. TPoint3D CPlayer::GetBonePos(int i2) {
  315. TPoint3D ret;
  316. return ret;
  317. }
  318. //-------------------------------------------------------------------------------------------------
  319. // 0016F13C 经过单元测试,功能正常
  320. TPoint CPlayer::GetTimePos(int i2) {
  321. // LOGI("CPlayer::GetTimePos %p %d", this, i2);
  322. TPoint retPos;
  323. return retPos;
  324. }
  325. //-------------------------------------------------------------------------------------------------
  326. // 0016F280 ^_^
  327. int CPlayer::AttributeInterpolate_Internal(EPlayerAttribute eAttr1, int i2,
  328. int i3, int i4, int i5, int i6) {
  329. // LOGI("CPlayer::AttributeInterpolate_Internal %p %d %d %d %d %d %d", this,
  330. // eAttr1, i2, i3, i4, i5, i6);
  331. return 0;
  332. }
  333. //-------------------------------------------------------------------------------------------------
  334. // 0016F324 ^_- 经过单元测试,功能正常
  335. void CPlayer::UpdateAction() {
  336. // LOGI("CPlayer::UpdateAction %p", this);
  337. }
  338. //-------------------------------------------------------------------------------------------------
  339. // 0016F3D4
  340. __attribute__((noinline)) int CPlayer::ActionTend(int i1, TPoint3D *pPoint3D2) {
  341. LOGI("CPlayer::UpdateAction %p %d%x", this, i1, (uint)pPoint3D2);
  342. return rand() % 4;
  343. }
  344. //-------------------------------------------------------------------------------------------------
  345. // 0016F734
  346. __attribute__((noinline)) void CPlayer::UpdateActionSlideTackleX(int i1) {
  347. LOGI("CPlayer::UpdateActionSlideTackleX %p %d", this, i1);
  348. }
  349. //-------------------------------------------------------------------------------------------------
  350. // 0016FA40
  351. void CPlayer::UpdateActionSlideTackle(int i1) {}
  352. //-------------------------------------------------------------------------------------------------
  353. // 0016FAAC ^_^
  354. void CPlayer::UpdateActionConservativeTackle(int i1) {
  355. // LOGI("CPlayer::UpdateActionConservativeTackle entry %d", i1);
  356. // locret_16FB1A
  357. }
  358. //-------------------------------------------------------------------------------------------------
  359. // 0016FB24 ^_-
  360. void CPlayer::UpdateActionGKSave(int i1) {}
  361. //-------------------------------------------------------------------------------------------------
  362. // 0016FB94
  363. __attribute__((noinline)) void CPlayer::UpdateActionDeek(int i1) {
  364. LOGI("CPlayer::UpdateActionDeek %p %d", this, i1);
  365. }
  366. //-------------------------------------------------------------------------------------------------
  367. // 0016FE80 ^_^
  368. void CPlayer::UpdateActionControl(int i1) {
  369. // LOGI("CPlayer::UpdateActionControl %p %d", this, i1);
  370. }
  371. //-------------------------------------------------------------------------------------------------
  372. // 0016FF24 ^_^
  373. void CPlayer::UpdateActionKick(int i1) {}
  374. //-------------------------------------------------------------------------------------------------
  375. // 0016FF78 ^_-
  376. void CPlayer::UpdateActionGKKick(int i1) {}
  377. //-------------------------------------------------------------------------------------------------
  378. // 0016FFC8
  379. __attribute__((noinline)) void CPlayer::ClearAction() {
  380. LOGI("CPlayer::ClearAction %p", this);
  381. }
  382. //-------------------------------------------------------------------------------------------------
  383. // 0016FFD4 经过单元测试,功能正常
  384. bool CPlayer::ActionCheckIsStillValidRange(int i1, int i2, int i3) {
  385. // LOGI("CPlayer::ActionCheckIsStillValidRange %p %d %d %d", this, i1, i2,
  386. // i3);
  387. return true;
  388. }
  389. //-------------------------------------------------------------------------------------------------
  390. // 001700C0 ^_^
  391. void CPlayer::KickFail() {}
  392. //-------------------------------------------------------------------------------------------------
  393. // 001700E4 ^_^
  394. void CPlayer::ActionUpdateDynamic() {
  395. // locret_170126
  396. }
  397. //-------------------------------------------------------------------------------------------------
  398. // 0017012C //???
  399. void CPlayer::ActionTendSetupDest(TPoint3D point3D1) {
  400. // LOGI("CPlayer::ActionTendSetupDest %p %d %d %d", this,
  401. // point3D1.point_0.dx_0, point3D1.point_0.dy_4, point3D1.dz_8); TAnimData *
  402. // r10_pAnimData = GetAnimData();
  403. }
  404. //-------------------------------------------------------------------------------------------------
  405. // 001701D0 ^_^
  406. void CPlayer::ActionTendSetup(TActionSetup *pActionSetup01, EACTION eAction2) {}
  407. //-------------------------------------------------------------------------------------------------
  408. // 00170242
  409. TPoint3D CPlayer::ActionGetPosFromDest() {
  410. TPoint3D ret_p3D;
  411. return ret_p3D;
  412. }
  413. //-------------------------------------------------------------------------------------------------
  414. // 001702B0 经过单元测试,功能正常
  415. void CPlayer::Animate(int i1) {
  416. // LOGI("CPlayer::Animate %d", i1);
  417. }
  418. //-------------------------------------------------------------------------------------------------
  419. // 0017039C ^_- 经过单元测试,功能正常
  420. void CPlayer::ApplyRootBoneOfs(TAnimData *pAniData1, int i2) {
  421. // LOGI("CPlayer::ApplyRootBoneOfs %d", i2);
  422. LOGE("ApplyRootBoneOfs%p%x%x", this, (uint)pAniData1, i2);
  423. }
  424. //-------------------------------------------------------------------------------------------------
  425. // 00170440 ^_-
  426. void CPlayer::SetNextState(TAnimData *pAnimData1) {
  427. // LOGI("CPlayer::SetNextState %p %p", this, pAnimData1);
  428. }
  429. //-------------------------------------------------------------------------------------------------
  430. // 001704DC ^_^
  431. __attribute__((noinline)) TAnimData *CPlayer::GetAnimData() {
  432. LOGE("TAnimData *CPlayer::GetAnimData");
  433. return (TAnimData *)rand();
  434. }
  435. //-------------------------------------------------------------------------------------------------
  436. // 001704F4 经过单元测试,功能正常
  437. void CPlayer::SetAnim(int i1) {
  438. if (CAnimManager::s_tAnimData[tStr32_44.field_10].filed_54 !=
  439. nullptr) { // 00170514
  440. // 00170516
  441. GetRootBoneMove(&Point3D_14.point_0);
  442. int r7_i = XMATH_Mag2D(&Point3D_14);
  443. int r1_i = GetSprintSpeed();
  444. if (r7_i > r1_i) { // 00170532
  445. // 00170534
  446. XMATH_Normalize(&Point3D_14, r1_i);
  447. }
  448. }
  449. ushort r9_us;
  450. // loc_17053C
  451. if (tStr32_44.sBlend_2E > 4096) {
  452. // 00170546
  453. r9_us = GetTrueRot() - tStr32_44.s_2C;
  454. tStr32_44.sBlend_2E = 0;
  455. tStr32_44.field_10 = tStr32_44.field_20;
  456. tStr32_44.field_14 = tStr32_44.field_24;
  457. tStr32_44.s_18 = tStr32_44.s_2A;
  458. u_0.s_2_0.s_2 = r9_us;
  459. } else {
  460. // loc_170572
  461. r9_us = u_0.s_2_0.s_2;
  462. }
  463. int r0_i;
  464. // loc_170578
  465. u_0.s_2_0.s_2 = GetTrueRot();
  466. if (field_10 >= 2) {
  467. // 00170586
  468. tStr32_44.field_20 = tStr32_44.field_10;
  469. tStr32_44.field_24 = tStr32_44.field_14;
  470. TAnimData *r8_pAnimData = &CAnimManager::s_tAnimData[tStr32_44.field_10];
  471. if (r8_pAnimData->filed_8 == 4) {
  472. // 001705AE
  473. r0_i = ((int)(((uint)(XMATH_Mag(&Point3D_14.point_0))) * 2)) /
  474. ((short)r8_pAnimData->us_18);
  475. r0_i *= tStr32_44.field_1C;
  476. r0_i /= 128;
  477. } else {
  478. // loc_1705D8
  479. r0_i = tStr32_44.field_1C;
  480. }
  481. // loc_1705DA
  482. tStr32_44.s_28 = r0_i;
  483. tStr32_44.sBlend_2E = 8192;
  484. // LOGE("tStr32_44.u_2C.s_2C.sBlend_2E=%x",tStr32_44.u_2C.s_2C.sBlend_2E);
  485. tStr32_44.s_2A = tStr32_44.s_18;
  486. tStr32_44.s_2C = (((8192 - r9_us) + u_0.s_2_0.s_2) & 0x3FFF) - 0x2000;
  487. } else {
  488. // loc_1705CE
  489. tStr32_44.s_2C = 0;
  490. tStr32_44.sBlend_2E = 0;
  491. }
  492. // loc_170604
  493. tStr32_44.field_10 = i1; // 0017060C
  494. tStr32_44.field_14 = 0;
  495. TAnimData *r5_pAnimData = &CAnimManager::s_tAnimData[i1];
  496. tStr32_44.s_C = r5_pAnimData->filed_6e;
  497. // 00170614
  498. if (tStr32_44.field_8 == 4) {
  499. // 00170624
  500. if (us_122) {
  501. // 0017062A
  502. r0_i = (131072 / us_122) * 512;
  503. } else {
  504. // loc_170642
  505. r0_i = 0x10000;
  506. }
  507. // loc_170646
  508. tStr32_44.field_1C = (int)(r5_pAnimData->filed_10 * r0_i) >> 16;
  509. // 00170648
  510. if (field_10 <= 1) {
  511. // 00170656
  512. if (!r5_pAnimData->filed_9) {
  513. // 0017065A
  514. tStr32_44.field_14 = XSYS_Random(0x10000);
  515. }
  516. } // loc_170666
  517. } else {
  518. // 00170636
  519. tStr32_44.field_1C = *(short *)&r5_pAnimData->filed_10;
  520. if (!tStr32_44.field_8) {
  521. // loc_170656
  522. // 00170656
  523. if (!r5_pAnimData->filed_9) {
  524. // 0017065A
  525. tStr32_44.field_14 = XSYS_Random(0x10000);
  526. }
  527. }
  528. }
  529. // loc_170666
  530. if (r5_pAnimData->us_1C) {
  531. // 0017066A
  532. u_0.s_2_0.s_2 = (u_0.s_2_0.s_2 - r5_pAnimData->us_1C) & 0x3FFF;
  533. }
  534. // loc_170674
  535. if (r5_pAnimData->filed_54) {
  536. // 00170678
  537. ApplyRootBoneOfs(r5_pAnimData, -1);
  538. }
  539. // loc_170684
  540. UpdateAnimCalcs();
  541. }
  542. //-------------------------------------------------------------------------------------------------
  543. // 00170694 ^_- 经过单元测试,功能正常
  544. void CPlayer::GetRootBoneMove(TPoint *pPoint1) {
  545. LOGI("CPlayer::GetRootBoneMove %p %p", this, pPoint1);
  546. }
  547. //-------------------------------------------------------------------------------------------------
  548. // 0017077C ^_- 经过单元测试,功能正常
  549. short CPlayer::GetTrueRot() {
  550. LOGI("CPlayer::GetRootBoneMove %p ", this);
  551. return rand() & 0x3fff;
  552. }
  553. //-------------------------------------------------------------------------------------------------
  554. // 00170820
  555. __attribute__((noinline)) bool CPlayer::AnimBlendNeeded() { return false; }
  556. //-------------------------------------------------------------------------------------------------
  557. // 0017082C ^_- 经过单元测试,功能正常
  558. void CPlayer::UpdateAnimCalcs() {
  559. // LOGI("CPlayer::UpdateAnimCalcs entry");
  560. LOGI("CPlayer::UpdateAnimCalcs %p ", this);
  561. // loc_1708C8
  562. }
  563. //-------------------------------------------------------------------------------------------------
  564. // 001708D0
  565. void CPlayer::SetTrophyData(ETrophyPos e1, ushort us2, ushort us3) {}
  566. //-------------------------------------------------------------------------------------------------
  567. // 001708DE
  568. __attribute__((noinline)) void CPlayer::ClearBlend() {}
  569. //-------------------------------------------------------------------------------------------------
  570. // 001708E8 后面的代码好像与
  571. // NIS的测试环境,通过单元测试,发现后面的代码不写,不影响逻辑
  572. void CPlayer::UpdateJostlePoint() {
  573. if (!tStr32_44.uc_1) return;
  574. // 001708F4
  575. if (tStr32_44.field_8 != 4) {
  576. if (tStr32_44.field_8 || tStr32_44.s_C != 5 || tStr58_A0.field_4 <= 1024)
  577. return;
  578. // 00170910
  579. // SetAnimFromStateLoco(int i1, int i2, int i3) {
  580. SetAnimFromStateLoco(-1, -1, 0);
  581. return;
  582. }
  583. // loc_170926
  584. if (tStr32_44.s_C != 40) return;
  585. // 0017092E
  586. TAnimData *r6_pAnimData = &CAnimManager::s_tAnimData[tStr32_44.field_10];
  587. // 00170944
  588. if (r6_pAnimData->s_64) return;
  589. //??? 后面的代码好像与
  590. // NIS的测试环境,通过单元测试,发现后面的代码不写,不影响逻辑
  591. }
  592. //-------------------------------------------------------------------------------------------------
  593. // 00170A14 ^_^
  594. bool CPlayer::SetReaction(int i1, int i2, int i3) { return true; }
  595. //-------------------------------------------------------------------------------------------------
  596. // 00170A50 经过单元测试,功能正常
  597. void CPlayer::UpdateAnimation() {
  598. // LOGI("CPlayer::UpdateAnimation %p", this);
  599. }
  600. //-------------------------------------------------------------------------------------------------
  601. // 00170BD0 ^_^
  602. void CPlayer::OverrideAnimFrame(int i1) {}
  603. //-------------------------------------------------------------------------------------------------
  604. // 00170C0C
  605. __attribute__((noinline)) void CPlayer::EnableIdleAnims(bool b1) {}
  606. //-------------------------------------------------------------------------------------------------
  607. // 00170C14 经过单元测试,功能正常
  608. void CPlayer::SetAnimFromStateGen(int i1, int i2, int i3) {
  609. LOGI("CPlayer::SetAnimFromStateGen %p %d %d %d", this, i1, i2, i3);
  610. }
  611. //-------------------------------------------------------------------------------------------------
  612. // 00170D10 经过单元测试,功能正常
  613. void CPlayer::SetAnimFromStateI() {
  614. // 00170D16
  615. if (tStr32_44.field_8) {
  616. // 00170D18
  617. if (tStr32_44.field_8 != 4) {
  618. if (tStr32_44.field_8 == 11) {
  619. // 00170D20
  620. if (tGame.mTLogic_6678.field_8 == 1) {
  621. // 00170D3A
  622. // loc_170DA8
  623. SetAnimFromStateGen(
  624. GetRotPoint(cBall.point3D_84),
  625. CAnimManager::s_tAnimData[tStr32_44.field_10].s_76, 0x200);
  626. } else {
  627. // loc_170D98
  628. SetAnimFromStateGen(
  629. GetRotPoint(g_vZero),
  630. CAnimManager::s_tAnimData[tStr32_44.field_10].s_76, 0x200);
  631. }
  632. } else {
  633. // loc_170D82
  634. SetAnimFromStateGen(-1, -1, 0);
  635. tStr32_44.field_14 = 0;
  636. }
  637. } else { // loc_170D6C
  638. SetAnimFromStateLoco(-1, -1, 0x180);
  639. tStr32_44.field_14 = 0;
  640. }
  641. } else {
  642. // loc_170D4E
  643. if (u_0.s_2_0.s_0 + 1 != 0) {
  644. // 00170D56
  645. if (Turn(u_0.s_2_0.s_0, u_0.s_2_0.s_0, false)) {
  646. // locret_170D96
  647. return;
  648. }
  649. // 00170D62
  650. tStr32_44.field_8 = 4;
  651. SetAnimFromStateLoco(-1, -1, 0x180);
  652. tStr32_44.field_14 = 0x2000;
  653. } else {
  654. // loc_170D6C
  655. SetAnimFromStateLoco(-1, -1, 0x180);
  656. tStr32_44.field_14 = 0;
  657. }
  658. }
  659. }
  660. //-------------------------------------------------------------------------------------------------
  661. // 00170DD4 ^_^
  662. void CPlayer::GetRootBoneOfs(TPoint *pPoint1, TAnimData *pAnimData2) {}
  663. //-------------------------------------------------------------------------------------------------
  664. // 00170E50 ^_^
  665. void CPlayer::UpdateActOKTime() {}
  666. //-------------------------------------------------------------------------------------------------
  667. // 00170E98 ^_^
  668. int CPlayer::GetActionTime() { return 0; }
  669. //-------------------------------------------------------------------------------------------------
  670. // 00170EC8
  671. __attribute__((noinline)) void CPlayer::GetAnimTime() {
  672. LOGI("CPlayer::GetAnimTime %p", this);
  673. }
  674. //-------------------------------------------------------------------------------------------------
  675. // 00170EE0
  676. __attribute__((noinline)) int CPlayer::SetAnimFromStateAction(
  677. int i1, int i2, int i3, int i4, int i5, int i6, TActionSetup *pActionSetup7,
  678. int i8, int i9) {
  679. LOGI("CPlayer::SetAnimFromStateAction %p %d %d %d %d %d %d %p %d %d", this,
  680. i1, i2, i3, i4, i5, i6, pActionSetup7, i8, i9);
  681. return 0;
  682. }
  683. //-------------------------------------------------------------------------------------------------
  684. // 001714E4
  685. __attribute__((noinline)) void CPlayer::GetAnimActionPoint(
  686. TPoint *pPoint1, TAnimData *pAnimData2, int i3, int i4) {
  687. LOGI("CPlayer::GetAnimTime %p %p %p %d %d", this, pPoint1, pAnimData2, i3,
  688. i4);
  689. }
  690. //-------------------------------------------------------------------------------------------------
  691. // 00171534 没有测试到
  692. void CPlayer::GetActionPoint(TPoint3D *pPoint3D1) {
  693. LOGI("CPlayer::GetActionPoint %p %p", this, pPoint3D1);
  694. }
  695. //-------------------------------------------------------------------------------------------------
  696. // 001715EC 经过单元测试,功能正常
  697. void CPlayer::GetBonePosition(int i1, TPoint3D *pPoint3D2) {
  698. // LOGI("CPlayer::GetBonePosition %p %p", this, pPoint3D2);
  699. }
  700. //-------------------------------------------------------------------------------------------------
  701. // 00171798
  702. __attribute__((noinline)) void CPlayer::GetHandPosition(TPoint3D *pPoint3D1,
  703. bool b2) {
  704. LOGI("CPlayer::GetAnimTime %p %p %d", this, pPoint3D1, b2);
  705. }
  706. //-------------------------------------------------------------------------------------------------
  707. // 001717A8 ^_^ 经过单元测试,功能正常
  708. TPoint3D CPlayer::GetHandsPosition(int i1) {
  709. TPoint3D ret;
  710. return ret;
  711. }
  712. //-------------------------------------------------------------------------------------------------
  713. // 00171868
  714. __attribute__((noinline)) void CPlayer::GetBoneOrientation(
  715. int i1, TPoint3D *pPoint3D2) {
  716. LOGI("CPlayer::GetAnimTime %p %d %p", this, i1, pPoint3D2);
  717. }
  718. //-------------------------------------------------------------------------------------------------
  719. // 00172634 ^_^
  720. int CPlayer::GetDistanceSq(TPoint3D point3D1) { return 0; }
  721. //-------------------------------------------------------------------------------------------------
  722. // 00172EB2 ^_^
  723. bool CPlayer::Fell(TPoint point1, bool b3) { return true; }
  724. //-------------------------------------------------------------------------------------------------
  725. // 00172EE4
  726. bool CPlayer::Fell(int i1, bool b2) {
  727. LOGI("CPlayer::Fell 00172EE4");
  728. return true;
  729. }
  730. //-------------------------------------------------------------------------------------------------
  731. // 00172F78 ^_-
  732. bool CPlayer::Trip(int i1, int i2) {
  733. bool r4_bret = false;
  734. // loc_172FEE
  735. return r4_bret;
  736. }
  737. //-------------------------------------------------------------------------------------------------
  738. // 00172FF8 ^_^
  739. void CPlayer::UpdateLogic() {
  740. if (NIS_Active()) return;
  741. // 00173002
  742. UpdateJostlePoint();
  743. UpdateIdle();
  744. UpdateReactions();
  745. UpdateBallReactions();
  746. UpdateFall();
  747. if (!uc_88) return;
  748. // 00173026
  749. if (cBall.ballPosPrev_4.dz_8 <= us_122 * 72 &&
  750. tStr58_A0.u_50.ui_50 <= 0x28000) {
  751. // 00173046
  752. if (tGame.field_6C38 <= 4 && cBall.speedXY_28 > 0x14DC) {
  753. uc_88 = 0;
  754. } else if (tGame.mTLogic_6678.team_40 == tStr32_44.uc_0) {
  755. uc_88 = 0;
  756. }
  757. } else {
  758. uc_88 = 0;
  759. }
  760. // loc_17306E
  761. }
  762. //-------------------------------------------------------------------------------------------------
  763. // 00173080 ^_^
  764. void CPlayer::UpdateIdle() {
  765. // LOGI("CPlayer::UpdateIdle %p", this);
  766. if (b_30) return;
  767. // 0017308C
  768. if (tGame.field_6C38 >= 6 && !tStr32_44.field_8) {
  769. // 001730A0
  770. // tStr32_44.s_C > 6 ||
  771. if ((tStr32_44.s_C != 6 && tStr32_44.s_C != 3 && tStr32_44.s_C != 2)) {
  772. // loc_1730B4
  773. field_120++;
  774. if ((int)field_120 >= 241) {
  775. // 001730CC
  776. if (XSYS_Random(0x12C) || uc_88) {
  777. // loc_1730D6
  778. if (tStr32_44.s_C == 6 || tStr32_44.s_C == 1) {
  779. // 001730E2
  780. NewPlayerStateX(0, -1, 0);
  781. } // loc_173104
  782. } else {
  783. // loc_173178
  784. NewPlayerStateX(0, -1, 0xB);
  785. }
  786. } //-> loc_173104
  787. } else {
  788. field_120 = 0;
  789. }
  790. } else {
  791. // loc_1730F2
  792. if (tStr32_44.field_8 == 14 && tStr32_44.s_C == 6) {
  793. // loc_173170
  794. field_120++;
  795. } else {
  796. // 001730FE
  797. field_120 = 0;
  798. }
  799. }
  800. // loc_1730FE
  801. // loc_173100
  802. // loc_173104
  803. if (tGame.mTLogic_6678.field_8 == 1 && tGame.mTLogic_6678.field_10 == 1) {
  804. // loc_17311A
  805. if (tGame.mTLogic_6678.field_38 <= 29 && tStr32_44.field_8 == 14 &&
  806. tStr32_44.field_14 > (tStr32_44.field_1C * 30)) {
  807. // 00173138
  808. NewPlayerStateX(0, -1, 0);
  809. if (tGame.mTLogic_6678.field_38 >= 61 && tStr32_44.field_8 == 0 &&
  810. tStr32_44.s_C == 2) {
  811. // 0017315E
  812. NewPlayerStateX(0, -1, 0);
  813. }
  814. }
  815. }
  816. // 00173118
  817. return;
  818. }
  819. //-------------------------------------------------------------------------------------------------
  820. // 00173188 ^_^
  821. void CPlayer::UpdateReactions() {
  822. if (field_8C) {
  823. // 00173192
  824. if (s_32) {
  825. // 00173196
  826. field_8C--;
  827. } else {
  828. // loc_17319A
  829. NewPlayerStateDataNIS(s_90, s_92, 0, s_94);
  830. field_8C = 0;
  831. }
  832. // loc_1731B2
  833. }
  834. // locret_1731B6
  835. }
  836. //-------------------------------------------------------------------------------------------------
  837. // 001731B8
  838. __attribute__((noinline)) void CPlayer::UpdateBallReactions() {
  839. UpdateTake();
  840. UpdateAvoid();
  841. }
  842. //-------------------------------------------------------------------------------------------------
  843. // 001731CA ^_-
  844. void CPlayer::UpdateFall() {
  845. if (tStr32_44.field_8 != 10) return;
  846. // 001731D6
  847. TAnimData *r1_data = GetAnimData();
  848. // 001731E2
  849. if (tStr32_44.s_C == 10) {
  850. // 001731E6
  851. SetNextState(r1_data);
  852. } else {
  853. // 001731F0
  854. if (tStr32_44.field_14 >= r1_data->filed_20[0].filed_0 &&
  855. tStr32_44.field_14 <
  856. (r1_data->filed_20[0].filed_0 + tStr32_44.field_1C)) {
  857. tStr32_44.s_18 = 1;
  858. }
  859. }
  860. // locret_173206
  861. }
  862. //-------------------------------------------------------------------------------------------------
  863. // 00173208
  864. __attribute__((noinline)) void CPlayer::UpdateAvoid() {
  865. LOGI("CPlayer::UpdateAvoid %p", this);
  866. }
  867. //-------------------------------------------------------------------------------------------------
  868. // 001733C4
  869. __attribute__((noinline)) void CPlayer::IsWalking() {
  870. LOGI("CPlayer::IsWalking %p", this);
  871. }
  872. //-------------------------------------------------------------------------------------------------
  873. // 001733EC
  874. bool CPlayer::IsSprinting() {
  875. // locret_173412
  876. return false;
  877. }
  878. //-------------------------------------------------------------------------------------------------
  879. // 00173414
  880. __attribute__((noinline)) void CPlayer::IsStanding() {
  881. LOGI("CPlayer::IsStanding %p", this);
  882. }
  883. //-------------------------------------------------------------------------------------------------
  884. // 0017341E
  885. __attribute__((noinline)) void CPlayer::IsFacing(int i1, int i2) {
  886. LOGI("CPlayer::IsFacing %p %d %d", this, i1, i2);
  887. }
  888. //-------------------------------------------------------------------------------------------------
  889. // 00173442
  890. __attribute__((noinline)) void CPlayer::IsAtDest(TPoint *pPoint1, int i2) {
  891. LOGI("CPlayer::IsAtDest %p %d %d", this, (int)pPoint1, i2);
  892. }
  893. //-------------------------------------------------------------------------------------------------
  894. // 0017346C
  895. __attribute__((noinline)) void CPlayer::UpdateMovement() {
  896. LOGI("CPlayer::UpdateMovement %p", this);
  897. }
  898. //-------------------------------------------------------------------------------------------------
  899. // 00173DBA ^_^
  900. void CPlayer::SetStateStand(bool b1) {}
  901. //-------------------------------------------------------------------------------------------------
  902. // 00173DD4 ^_^
  903. void CPlayer::SetStateLoco() {}
  904. //-------------------------------------------------------------------------------------------------
  905. // 00173E58
  906. __attribute__((noinline)) void CPlayer::SetAnimFromStateLoco(int i1, int i2,
  907. int i3) {
  908. LOGI("CPlayer::SetAnimFromStateLoco %p %d %d %d", this, i1, i2, i3);
  909. }
  910. //-------------------------------------------------------------------------------------------------
  911. // 00174074
  912. void CPlayer::CheckAvoid(TPoint *pPoint1, int i2, int i3) {
  913. // LOGI("CPlayer::CheckAvoid %p %p %d %d", this, pPoint1, i2, i3);
  914. // tStr32_44.uc_1
  915. }
  916. //-------------------------------------------------------------------------------------------------
  917. // 001741FC
  918. __attribute__((noinline)) void CPlayer::SetConstantSpeed(bool b1) {
  919. LOGI("CPlayer::SetConstantSpeed %p %d", this, b1);
  920. }
  921. //-------------------------------------------------------------------------------------------------
  922. // 00174204 ^_^
  923. int CPlayer::GetAverageRunSpeed() { return 0; }
  924. //-------------------------------------------------------------------------------------------------
  925. // 00174260 ^_^
  926. void CPlayer::SetAverageRunSpeed(int i1) {}
  927. //-------------------------------------------------------------------------------------------------
  928. // 00174290
  929. void CPlayer::GetInterceptRunSpeed() {}
  930. //-------------------------------------------------------------------------------------------------
  931. // 00174294
  932. __attribute__((noinline)) void CPlayer::GetWalkSpeed() {
  933. LOGI("CPlayer::GetWalkSpeed %p", this);
  934. }
  935. //-------------------------------------------------------------------------------------------------
  936. // 001742B4 ^_^
  937. int CPlayer::GetSprintSpeed() {
  938. LOGE("this=%xCPlayer::GetRunSpeed", (uint)this);
  939. return rand();
  940. }
  941. //-------------------------------------------------------------------------------------------------
  942. // 00174310 ^_^
  943. int CPlayer::GetTargetRunSpeed() { return 0; }
  944. //-------------------------------------------------------------------------------------------------
  945. // 0017432C //^_^
  946. int CPlayer::GetCurrentRunSpeed() {
  947. // LOGI("CPlayer::GetCurrentRunSpeed %p", this);
  948. return 0;
  949. }
  950. //-------------------------------------------------------------------------------------------------
  951. // 00174458 ^_-
  952. int CPlayer::GetRunSpeed() {
  953. int dret = 0;
  954. // loc_1744BA
  955. LOGE("this=%xCPlayer::GetRunSpeed", (uint)this);
  956. return rand() + 0x409360;
  957. }
  958. //-------------------------------------------------------------------------------------------------
  959. // 001744CC
  960. int CPlayer::AttributeInterpolate(EPlayerAttribute eAttr1, int i2, int i3) {
  961. return 0;
  962. }
  963. //-------------------------------------------------------------------------------------------------
  964. // 001744E2
  965. float CPlayer::GetMoveSpeed() { return 0.1f; }
  966. //-------------------------------------------------------------------------------------------------
  967. // 001744E8 ^_^
  968. int CPlayer::GetInterceptMaxHeight() { return 0; }
  969. //-------------------------------------------------------------------------------------------------
  970. // 00174530 ^_^
  971. void CPlayer::SetUrgency(int i1) {
  972. LOGI("CPlayer::SetUrgency %d %d", i1, s_82);
  973. }
  974. //-------------------------------------------------------------------------------------------------
  975. // 00174550 经过单元测试,功能正常
  976. void CPlayer::SetUrgencyTime(int i1, bool b2) {
  977. // LOGI("CPlayer::SetUrgencyTime %p %d", this, i1);
  978. }
  979. //-------------------------------------------------------------------------------------------------
  980. // 0017464C ^_- 经过单元测试,功能正常
  981. void CPlayer::UpdateUrgency() {
  982. // LOGI("CPlayer::UpdateUrgency %p", this);
  983. // 00174652
  984. }
  985. //-------------------------------------------------------------------------------------------------
  986. // 001746EE
  987. __attribute__((noinline)) void CPlayer::GetDirMoveX() {
  988. LOGI("CPlayer::GetCurrentRunSpeed %p", this);
  989. }
  990. //-------------------------------------------------------------------------------------------------
  991. // 00174702
  992. __attribute__((noinline)) void CPlayer::GetDirMoveY() {
  993. LOGI("CPlayer::GetCurrentRunSpeed %p", this);
  994. }
  995. //-------------------------------------------------------------------------------------------------
  996. // 0017471E
  997. void CPlayer::NewPlayerStateX(int i1, int i2, int i3) {}
  998. //-------------------------------------------------------------------------------------------------
  999. // 0017472E ^_^
  1000. void CPlayer::NewPlayerStateXF(int i1, int i2, int i3, int i4) {}
  1001. //-------------------------------------------------------------------------------------------------
  1002. // 00174778
  1003. __attribute__((noinline)) void CPlayer::NewPlayerStateGen(int i1) {
  1004. LOGI("CPlayer::NewPlayerStateGen %p %d", this, i1);
  1005. }
  1006. //-------------------------------------------------------------------------------------------------
  1007. // 001747A8
  1008. __attribute__((noinline)) void CPlayer::NewPlayerStateData(int i1, int i2,
  1009. int i3, int i4) {
  1010. LOGI("CPlayer::NewPlayerStateData %p %d %d %d %d", this, i1, i2, i3, i4);
  1011. }
  1012. //-------------------------------------------------------------------------------------------------
  1013. // 001748A8 初步测试调用不到
  1014. void CPlayer::NewPlayerStateDataNIS(int i1, int i2, int i3, int i4) {
  1015. LOGI("CPlayer::NewPlayerStateDataNIS %p %d %d %d %d %d", this, i1, i2, i3, i4,
  1016. tStr32_44.uc_2);
  1017. }
  1018. //-------------------------------------------------------------------------------------------------
  1019. // 001749A0 ^_^
  1020. __attribute__((noinline)) bool CPlayer::CheckBlockedOff(int i1) {
  1021. // 00174A0E
  1022. return false;
  1023. }
  1024. //-------------------------------------------------------------------------------------------------
  1025. // 00174A24 没有测试到
  1026. __attribute__((noinline)) bool CPlayer::NewPlayerStateXFKick(
  1027. TPoint3D point3D1, int i2, int i3, TActionSetup *pActionSetup4, int i5,
  1028. int i6) {
  1029. // LOGI("CPlayer::NewPlayerStateXFKick %p poiint %d %d %d", this,
  1030. // point3D1.point_0.dx_0, point3D1.point_0.dy_4, point3D1.dz_8);
  1031. LOGI("CPlayer::NewPlayerStateXFKick %d %d %p %d %d", i2, i3, pActionSetup4,
  1032. i5, i6);
  1033. // loc_174ACE
  1034. return false;
  1035. }
  1036. //-------------------------------------------------------------------------------------------------
  1037. // 00174ADC
  1038. __attribute__((noinline)) void CPlayer::UpdateTake() {
  1039. LOGI("CPlayer::UpdateTake %p", this);
  1040. }
  1041. //-------------------------------------------------------------------------------------------------
  1042. // 00174C9C
  1043. __attribute__((noinline)) void CPlayer::ControlTakeBall(int i1) {
  1044. LOGI("CPlayer::ControlTakeBall %p %d", this, i1);
  1045. }
  1046. //-------------------------------------------------------------------------------------------------
  1047. // 00174FBC
  1048. __attribute__((noinline)) void CPlayer::SetAnimControl(
  1049. int i1, int i2, int i3, int i4, int i5, int i6, int i7,
  1050. TActionSetup *pActionSetup) {
  1051. LOGI("CPlayer::SetAnimControl %p %d %d %d %d %d %d %d %p", this, i1, i2, i3,
  1052. i4, i5, i6, i7, pActionSetup);
  1053. }
  1054. //-------------------------------------------------------------------------------------------------
  1055. // 0017555C
  1056. __attribute__((noinline)) void CPlayer::ControlFinish(int i1, int i2, int i3) {
  1057. LOGI("CPlayer::ControlTakeBall %p %d %d %d", this, i1, i2, i3);
  1058. }
  1059. //-------------------------------------------------------------------------------------------------
  1060. // 00175968
  1061. __attribute__((noinline)) void CPlayer::SetAnimTurn(
  1062. int i1, int i2, int i3, int i4, int i5, int i6, int i7,
  1063. TActionSetup *pActionSetup) {
  1064. LOGI("CPlayer::ControlTakeBall %p %d %d %d %d %d %d %d %p", this, i1, i2, i3,
  1065. i4, i5, i6, i7, pActionSetup);
  1066. }
  1067. //-------------------------------------------------------------------------------------------------
  1068. // 00175B2C
  1069. __attribute__((noinline)) bool CPlayer::Turn(int i1, int i2, bool b3) {
  1070. LOGI("CPlayer::ControlTakeBall %p %d %d %d", this, i1, i2, b3);
  1071. return rand()%2;
  1072. }
  1073. //-------------------------------------------------------------------------------------------------
  1074. // 00178AAC 经过单元测试,功能正常
  1075. __attribute__((noinline)) CPlayer &CPlayer::operator=(CPlayer const &other) {
  1076. return *this;
  1077. }
  1078. //-------------------------------------------------------------------------------------------------
  1079. /*
  1080. 001700E4
  1081. */