CPlayer.cpp 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  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. LOGE("CPlayer::SetFace%p%x",this,i1);
  233. }
  234. //-------------------------------------------------------------------------------------------------
  235. // 0016EC3A
  236. __attribute__((noinline)) void CPlayer::SetFace(int i1, int i2) {
  237. LOGI("CPlayer::SetFace %p %d %d", this, i1, i2);
  238. }
  239. //-------------------------------------------------------------------------------------------------
  240. // 0016EC48
  241. void CPlayer::SetFace(TPoint point1) {}
  242. //-------------------------------------------------------------------------------------------------
  243. // 0016EC56
  244. void CPlayer::SetFaceDest() {}
  245. //-------------------------------------------------------------------------------------------------
  246. // 0016EC7A
  247. void CPlayer::Stop(int i1) {}
  248. //-------------------------------------------------------------------------------------------------
  249. // 0016EC8E ^_^
  250. int CPlayer::GetRotDest() {
  251. // 0016EC9E
  252. return 0;
  253. }
  254. //-------------------------------------------------------------------------------------------------
  255. // 0016ECB6
  256. __attribute__((noinline)) ushort CPlayer::GetRotPoint(TPoint3D point1) {
  257. LOGE("CPlayer::GetRotPoint0016ECB6 %p %x %x %x", this, point1.point_0.dx_0,
  258. point1.point_0.dy_4, point1.dz_8);
  259. return rand();
  260. }
  261. //-------------------------------------------------------------------------------------------------
  262. // 0016ECCC ^_^
  263. int CPlayer::GetRotBall() { return 0; }
  264. //-------------------------------------------------------------------------------------------------
  265. // 0016ECF0
  266. __attribute__((noinline)) void CPlayer::GetDistance(CPlayer *pPlayer1) {
  267. LOGI("CPlayer::GetDistance %p %p", this, pPlayer1);
  268. }
  269. //-------------------------------------------------------------------------------------------------
  270. // 0016ED1C
  271. __attribute__((noinline)) void CPlayer::GetDistanceSq(CPlayer *pPlayer1) {
  272. LOGI("CPlayer::GetDistanceSq %p %p", this, pPlayer1);
  273. }
  274. //-------------------------------------------------------------------------------------------------
  275. // 0016ED40 ^_^
  276. void CPlayer::SetSpaceRot(int i1, int i2) {}
  277. //-------------------------------------------------------------------------------------------------
  278. // 0016ED8A
  279. __attribute__((noinline)) void CPlayer::GetMoveDistance() {
  280. LOGI("CPlayer::GetMoveDistance %p", this);
  281. }
  282. //-------------------------------------------------------------------------------------------------
  283. // 0016ED96 ^_^
  284. void CPlayer::Init() {}
  285. //-------------------------------------------------------------------------------------------------
  286. // 0016EDD0 经过单元测试功能正常
  287. void CPlayer::SetupGoally(int i1, TPlayerInfo *pPlayerInfo2) {
  288. // LOGI("CPlayer::SetupGoally %p %d %p", this, i1, pPlayerInfo2);
  289. }
  290. //-------------------------------------------------------------------------------------------------
  291. // 0016EEC6 经过单元测试,功能正常
  292. void CPlayer::SetupPlayer(int i1, int i2, TPlayerInfo *pPlayerInfo3) {
  293. LOGI("CPlayer::SetupPlayer %p %d %d %p", this, i1, i2, pPlayerInfo3);
  294. }
  295. //-------------------------------------------------------------------------------------------------
  296. // 0016EFBC ^_^
  297. void CPlayer::SetupStandard() {}
  298. //-------------------------------------------------------------------------------------------------
  299. // 0016F008 ^_^
  300. void CPlayer::SetupOfficial() {}
  301. //-------------------------------------------------------------------------------------------------
  302. // 0016F044 经过单元测试同,功能正常
  303. void CPlayer::Reset() {
  304. // LOGI("CPlayer::Reset %p", this);
  305. }
  306. //-------------------------------------------------------------------------------------------------
  307. // 0016F114
  308. void CPlayer::CancelHeadInputControl() {}
  309. //-------------------------------------------------------------------------------------------------
  310. // 0016F11C
  311. void CPlayer::SetHeadRotRel(int r1, bool r2) {
  312. // locret_16F12A
  313. }
  314. //-------------------------------------------------------------------------------------------------
  315. // 0016F12C
  316. TPoint3D CPlayer::GetBonePos(int i2) {
  317. TPoint3D ret;
  318. return ret;
  319. }
  320. //-------------------------------------------------------------------------------------------------
  321. // 0016F13C 经过单元测试,功能正常
  322. TPoint CPlayer::GetTimePos(int i2) {
  323. // LOGI("CPlayer::GetTimePos %p %d", this, i2);
  324. TPoint retPos;
  325. return retPos;
  326. }
  327. //-------------------------------------------------------------------------------------------------
  328. // 0016F280 ^_^
  329. int CPlayer::AttributeInterpolate_Internal(EPlayerAttribute eAttr1, int i2,
  330. int i3, int i4, int i5, int i6) {
  331. // LOGI("CPlayer::AttributeInterpolate_Internal %p %d %d %d %d %d %d", this,
  332. // eAttr1, i2, i3, i4, i5, i6);
  333. return 0;
  334. }
  335. //-------------------------------------------------------------------------------------------------
  336. // 0016F324 ^_- 经过单元测试,功能正常
  337. void CPlayer::UpdateAction() {
  338. // LOGI("CPlayer::UpdateAction %p", this);
  339. }
  340. //-------------------------------------------------------------------------------------------------
  341. // 0016F3D4
  342. __attribute__((noinline)) int CPlayer::ActionTend(int i1, TPoint3D *pPoint3D2) {
  343. LOGI("CPlayer::UpdateAction %p %d%x", this, i1, (uint)pPoint3D2);
  344. return rand() % 4;
  345. }
  346. //-------------------------------------------------------------------------------------------------
  347. // 0016F734
  348. __attribute__((noinline)) void CPlayer::UpdateActionSlideTackleX(int i1) {
  349. LOGI("CPlayer::UpdateActionSlideTackleX %p %d", this, i1);
  350. }
  351. //-------------------------------------------------------------------------------------------------
  352. // 0016FA40
  353. void CPlayer::UpdateActionSlideTackle(int i1) {}
  354. //-------------------------------------------------------------------------------------------------
  355. // 0016FAAC ^_^
  356. void CPlayer::UpdateActionConservativeTackle(int i1) {
  357. // LOGI("CPlayer::UpdateActionConservativeTackle entry %d", i1);
  358. // locret_16FB1A
  359. }
  360. //-------------------------------------------------------------------------------------------------
  361. // 0016FB24 ^_-
  362. void CPlayer::UpdateActionGKSave(int i1) {}
  363. //-------------------------------------------------------------------------------------------------
  364. // 0016FB94
  365. __attribute__((noinline)) void CPlayer::UpdateActionDeek(int i1) {
  366. LOGI("CPlayer::UpdateActionDeek %p %d", this, i1);
  367. }
  368. //-------------------------------------------------------------------------------------------------
  369. // 0016FE80 ^_^
  370. void CPlayer::UpdateActionControl(int i1) {
  371. // LOGI("CPlayer::UpdateActionControl %p %d", this, i1);
  372. }
  373. //-------------------------------------------------------------------------------------------------
  374. // 0016FF24 ^_^
  375. void CPlayer::UpdateActionKick(int i1) {}
  376. //-------------------------------------------------------------------------------------------------
  377. // 0016FF78 ^_-
  378. void CPlayer::UpdateActionGKKick(int i1) {}
  379. //-------------------------------------------------------------------------------------------------
  380. // 0016FFC8
  381. __attribute__((noinline)) void CPlayer::ClearAction() {
  382. LOGI("CPlayer::ClearAction %p", this);
  383. }
  384. //-------------------------------------------------------------------------------------------------
  385. // 0016FFD4 经过单元测试,功能正常
  386. bool CPlayer::ActionCheckIsStillValidRange(int i1, int i2, int i3) {
  387. // LOGI("CPlayer::ActionCheckIsStillValidRange %p %d %d %d", this, i1, i2,
  388. // i3);
  389. return true;
  390. }
  391. //-------------------------------------------------------------------------------------------------
  392. // 001700C0 ^_^
  393. void CPlayer::KickFail() {}
  394. //-------------------------------------------------------------------------------------------------
  395. // 001700E4 ^_^
  396. void CPlayer::ActionUpdateDynamic() {
  397. // locret_170126
  398. }
  399. //-------------------------------------------------------------------------------------------------
  400. // 0017012C //???
  401. void CPlayer::ActionTendSetupDest(TPoint3D point3D1) {
  402. // LOGI("CPlayer::ActionTendSetupDest %p %d %d %d", this,
  403. // point3D1.point_0.dx_0, point3D1.point_0.dy_4, point3D1.dz_8); TAnimData *
  404. // r10_pAnimData = GetAnimData();
  405. }
  406. //-------------------------------------------------------------------------------------------------
  407. // 001701D0 ^_^
  408. void CPlayer::ActionTendSetup(TActionSetup *pActionSetup01, EACTION eAction2) {}
  409. //-------------------------------------------------------------------------------------------------
  410. // 00170242
  411. TPoint3D CPlayer::ActionGetPosFromDest() {
  412. TPoint3D ret_p3D;
  413. return ret_p3D;
  414. }
  415. //-------------------------------------------------------------------------------------------------
  416. // 001702B0 经过单元测试,功能正常
  417. void CPlayer::Animate(int i1) {
  418. // LOGI("CPlayer::Animate %d", i1);
  419. }
  420. //-------------------------------------------------------------------------------------------------
  421. // 0017039C ^_- 经过单元测试,功能正常
  422. void CPlayer::ApplyRootBoneOfs(TAnimData *pAniData1, int i2) {
  423. // LOGI("CPlayer::ApplyRootBoneOfs %d", i2);
  424. LOGE("ApplyRootBoneOfs%p%x%x", this, (uint)pAniData1, i2);
  425. }
  426. //-------------------------------------------------------------------------------------------------
  427. // 00170440 ^_-
  428. void CPlayer::SetNextState(TAnimData *pAnimData1) {
  429. // LOGI("CPlayer::SetNextState %p %p", this, pAnimData1);
  430. }
  431. //-------------------------------------------------------------------------------------------------
  432. // 001704DC ^_^
  433. __attribute__((noinline)) TAnimData *CPlayer::GetAnimData() {
  434. LOGE("TAnimData *CPlayer::GetAnimData");
  435. return (TAnimData *)rand();
  436. }
  437. //-------------------------------------------------------------------------------------------------
  438. // 001704F4 经过单元测试,功能正常
  439. void CPlayer::SetAnim(int i1) {
  440. if (CAnimManager::s_tAnimData[tStr32_44.field_10].filed_54 !=
  441. nullptr) { // 00170514
  442. // 00170516
  443. GetRootBoneMove(&Point3D_14.point_0);
  444. int r7_i = XMATH_Mag2D(&Point3D_14);
  445. int r1_i = GetSprintSpeed();
  446. if (r7_i > r1_i) { // 00170532
  447. // 00170534
  448. XMATH_Normalize(&Point3D_14, r1_i);
  449. }
  450. }
  451. ushort r9_us;
  452. // loc_17053C
  453. if (tStr32_44.sBlend_2E > 4096) {
  454. // 00170546
  455. r9_us = GetTrueRot() - tStr32_44.s_2C;
  456. tStr32_44.sBlend_2E = 0;
  457. tStr32_44.field_10 = tStr32_44.field_20;
  458. tStr32_44.field_14 = tStr32_44.field_24;
  459. tStr32_44.s_18 = tStr32_44.s_2A;
  460. u_0.s_2_0.s_2 = r9_us;
  461. } else {
  462. // loc_170572
  463. r9_us = u_0.s_2_0.s_2;
  464. }
  465. int r0_i;
  466. // loc_170578
  467. u_0.s_2_0.s_2 = GetTrueRot();
  468. if (field_10 >= 2) {
  469. // 00170586
  470. tStr32_44.field_20 = tStr32_44.field_10;
  471. tStr32_44.field_24 = tStr32_44.field_14;
  472. TAnimData *r8_pAnimData = &CAnimManager::s_tAnimData[tStr32_44.field_10];
  473. if (r8_pAnimData->filed_8 == 4) {
  474. // 001705AE
  475. r0_i = ((int)(((uint)(XMATH_Mag(&Point3D_14.point_0))) * 2)) /
  476. ((short)r8_pAnimData->us_18);
  477. r0_i *= tStr32_44.field_1C;
  478. r0_i /= 128;
  479. } else {
  480. // loc_1705D8
  481. r0_i = tStr32_44.field_1C;
  482. }
  483. // loc_1705DA
  484. tStr32_44.s_28 = r0_i;
  485. tStr32_44.sBlend_2E = 8192;
  486. // LOGE("tStr32_44.u_2C.s_2C.sBlend_2E=%x",tStr32_44.u_2C.s_2C.sBlend_2E);
  487. tStr32_44.s_2A = tStr32_44.s_18;
  488. tStr32_44.s_2C = (((8192 - r9_us) + u_0.s_2_0.s_2) & 0x3FFF) - 0x2000;
  489. } else {
  490. // loc_1705CE
  491. tStr32_44.s_2C = 0;
  492. tStr32_44.sBlend_2E = 0;
  493. }
  494. // loc_170604
  495. tStr32_44.field_10 = i1; // 0017060C
  496. tStr32_44.field_14 = 0;
  497. TAnimData *r5_pAnimData = &CAnimManager::s_tAnimData[i1];
  498. tStr32_44.s_C = r5_pAnimData->filed_6e;
  499. // 00170614
  500. if (tStr32_44.field_8 == 4) {
  501. // 00170624
  502. if (us_122) {
  503. // 0017062A
  504. r0_i = (131072 / us_122) * 512;
  505. } else {
  506. // loc_170642
  507. r0_i = 0x10000;
  508. }
  509. // loc_170646
  510. tStr32_44.field_1C = (int)(r5_pAnimData->filed_10 * r0_i) >> 16;
  511. // 00170648
  512. if (field_10 <= 1) {
  513. // 00170656
  514. if (!r5_pAnimData->filed_9) {
  515. // 0017065A
  516. tStr32_44.field_14 = XSYS_Random(0x10000);
  517. }
  518. } // loc_170666
  519. } else {
  520. // 00170636
  521. tStr32_44.field_1C = *(short *)&r5_pAnimData->filed_10;
  522. if (!tStr32_44.field_8) {
  523. // loc_170656
  524. // 00170656
  525. if (!r5_pAnimData->filed_9) {
  526. // 0017065A
  527. tStr32_44.field_14 = XSYS_Random(0x10000);
  528. }
  529. }
  530. }
  531. // loc_170666
  532. if (r5_pAnimData->us_1C) {
  533. // 0017066A
  534. u_0.s_2_0.s_2 = (u_0.s_2_0.s_2 - r5_pAnimData->us_1C) & 0x3FFF;
  535. }
  536. // loc_170674
  537. if (r5_pAnimData->filed_54) {
  538. // 00170678
  539. ApplyRootBoneOfs(r5_pAnimData, -1);
  540. }
  541. // loc_170684
  542. UpdateAnimCalcs();
  543. }
  544. //-------------------------------------------------------------------------------------------------
  545. // 00170694 ^_- 经过单元测试,功能正常
  546. void CPlayer::GetRootBoneMove(TPoint *pPoint1) {
  547. LOGI("CPlayer::GetRootBoneMove %p %p", this, pPoint1);
  548. }
  549. //-------------------------------------------------------------------------------------------------
  550. // 0017077C ^_- 经过单元测试,功能正常
  551. short CPlayer::GetTrueRot() {
  552. LOGI("CPlayer::GetRootBoneMove %p ", this);
  553. return rand() & 0x3fff;
  554. }
  555. //-------------------------------------------------------------------------------------------------
  556. // 00170820
  557. __attribute__((noinline)) bool CPlayer::AnimBlendNeeded() { return false; }
  558. //-------------------------------------------------------------------------------------------------
  559. // 0017082C ^_- 经过单元测试,功能正常
  560. void CPlayer::UpdateAnimCalcs() {
  561. // LOGI("CPlayer::UpdateAnimCalcs entry");
  562. LOGI("CPlayer::UpdateAnimCalcs %p ", this);
  563. // loc_1708C8
  564. }
  565. //-------------------------------------------------------------------------------------------------
  566. // 001708D0
  567. void CPlayer::SetTrophyData(ETrophyPos e1, ushort us2, ushort us3) {}
  568. //-------------------------------------------------------------------------------------------------
  569. // 001708DE
  570. __attribute__((noinline)) void CPlayer::ClearBlend() {}
  571. //-------------------------------------------------------------------------------------------------
  572. // 001708E8 后面的代码好像与
  573. // NIS的测试环境,通过单元测试,发现后面的代码不写,不影响逻辑
  574. void CPlayer::UpdateJostlePoint() {
  575. if (!tStr32_44.uc_1) return;
  576. // 001708F4
  577. if (tStr32_44.field_8 != 4) {
  578. if (tStr32_44.field_8 || tStr32_44.s_C != 5 || tStr58_A0.field_4 <= 1024)
  579. return;
  580. // 00170910
  581. // SetAnimFromStateLoco(int i1, int i2, int i3) {
  582. SetAnimFromStateLoco(-1, -1, 0);
  583. return;
  584. }
  585. // loc_170926
  586. if (tStr32_44.s_C != 40) return;
  587. // 0017092E
  588. TAnimData *r6_pAnimData = &CAnimManager::s_tAnimData[tStr32_44.field_10];
  589. // 00170944
  590. if (r6_pAnimData->s_64) return;
  591. //??? 后面的代码好像与
  592. // NIS的测试环境,通过单元测试,发现后面的代码不写,不影响逻辑
  593. }
  594. //-------------------------------------------------------------------------------------------------
  595. // 00170A14 ^_^
  596. bool CPlayer::SetReaction(int i1, int i2, int i3) { return true; }
  597. //-------------------------------------------------------------------------------------------------
  598. // 00170A50 经过单元测试,功能正常
  599. void CPlayer::UpdateAnimation() {
  600. // LOGI("CPlayer::UpdateAnimation %p", this);
  601. }
  602. //-------------------------------------------------------------------------------------------------
  603. // 00170BD0 ^_^
  604. void CPlayer::OverrideAnimFrame(int i1) {}
  605. //-------------------------------------------------------------------------------------------------
  606. // 00170C0C
  607. __attribute__((noinline)) void CPlayer::EnableIdleAnims(bool b1) {}
  608. //-------------------------------------------------------------------------------------------------
  609. // 00170C14 经过单元测试,功能正常
  610. void CPlayer::SetAnimFromStateGen(int i1, int i2, int i3) {
  611. LOGI("CPlayer::SetAnimFromStateGen %p %d %d %d", this, i1, i2, i3);
  612. }
  613. //-------------------------------------------------------------------------------------------------
  614. // 00170D10 经过单元测试,功能正常
  615. void CPlayer::SetAnimFromStateI() {
  616. // 00170D16
  617. if (tStr32_44.field_8) {
  618. // 00170D18
  619. if (tStr32_44.field_8 != 4) {
  620. if (tStr32_44.field_8 == 11) {
  621. // 00170D20
  622. if (tGame.mTLogic_6678.field_8 == 1) {
  623. // 00170D3A
  624. // loc_170DA8
  625. SetAnimFromStateGen(
  626. GetRotPoint(cBall.point3D_84),
  627. CAnimManager::s_tAnimData[tStr32_44.field_10].s_76, 0x200);
  628. } else {
  629. // loc_170D98
  630. SetAnimFromStateGen(
  631. GetRotPoint(g_vZero),
  632. CAnimManager::s_tAnimData[tStr32_44.field_10].s_76, 0x200);
  633. }
  634. } else {
  635. // loc_170D82
  636. SetAnimFromStateGen(-1, -1, 0);
  637. tStr32_44.field_14 = 0;
  638. }
  639. } else { // loc_170D6C
  640. SetAnimFromStateLoco(-1, -1, 0x180);
  641. tStr32_44.field_14 = 0;
  642. }
  643. } else {
  644. // loc_170D4E
  645. if (u_0.s_2_0.s_0 + 1 != 0) {
  646. // 00170D56
  647. if (Turn(u_0.s_2_0.s_0, u_0.s_2_0.s_0, false)) {
  648. // locret_170D96
  649. return;
  650. }
  651. // 00170D62
  652. tStr32_44.field_8 = 4;
  653. SetAnimFromStateLoco(-1, -1, 0x180);
  654. tStr32_44.field_14 = 0x2000;
  655. } else {
  656. // loc_170D6C
  657. SetAnimFromStateLoco(-1, -1, 0x180);
  658. tStr32_44.field_14 = 0;
  659. }
  660. }
  661. }
  662. //-------------------------------------------------------------------------------------------------
  663. // 00170DD4 ^_^
  664. void CPlayer::GetRootBoneOfs(TPoint *pPoint1, TAnimData *pAnimData2) {}
  665. //-------------------------------------------------------------------------------------------------
  666. // 00170E50 ^_^
  667. void CPlayer::UpdateActOKTime() {}
  668. //-------------------------------------------------------------------------------------------------
  669. // 00170E98 ^_^
  670. int CPlayer::GetActionTime() { return 0; }
  671. //-------------------------------------------------------------------------------------------------
  672. // 00170EC8
  673. __attribute__((noinline)) void CPlayer::GetAnimTime() {
  674. LOGI("CPlayer::GetAnimTime %p", this);
  675. }
  676. //-------------------------------------------------------------------------------------------------
  677. // 00170EE0
  678. __attribute__((noinline)) int CPlayer::SetAnimFromStateAction(
  679. int i1, int i2, int i3, int i4, int i5, int i6, TActionSetup *pActionSetup7,
  680. int i8, int i9) {
  681. LOGI("CPlayer::SetAnimFromStateAction %p %d %d %d %d %d %d %p %d %d", this,
  682. i1, i2, i3, i4, i5, i6, pActionSetup7, i8, i9);
  683. return 0;
  684. }
  685. //-------------------------------------------------------------------------------------------------
  686. // 001714E4
  687. __attribute__((noinline)) void CPlayer::GetAnimActionPoint(
  688. TPoint *pPoint1, TAnimData *pAnimData2, int i3, int i4) {
  689. LOGI("CPlayer::GetAnimTime %p %p %p %d %d", this, pPoint1, pAnimData2, i3,
  690. i4);
  691. }
  692. //-------------------------------------------------------------------------------------------------
  693. // 00171534 没有测试到
  694. void CPlayer::GetActionPoint(TPoint3D *pPoint3D1) {
  695. LOGI("CPlayer::GetActionPoint %p %p", this, pPoint3D1);
  696. }
  697. //-------------------------------------------------------------------------------------------------
  698. // 001715EC 经过单元测试,功能正常
  699. void CPlayer::GetBonePosition(int i1, TPoint3D *pPoint3D2) {
  700. // LOGI("CPlayer::GetBonePosition %p %p", this, pPoint3D2);
  701. }
  702. //-------------------------------------------------------------------------------------------------
  703. // 00171798
  704. __attribute__((noinline)) void CPlayer::GetHandPosition(TPoint3D *pPoint3D1,
  705. bool b2) {
  706. LOGI("CPlayer::GetAnimTime %p %p %d", this, pPoint3D1, b2);
  707. }
  708. //-------------------------------------------------------------------------------------------------
  709. // 001717A8 ^_^ 经过单元测试,功能正常
  710. TPoint3D CPlayer::GetHandsPosition(int i1) {
  711. TPoint3D ret;
  712. return ret;
  713. }
  714. //-------------------------------------------------------------------------------------------------
  715. // 00171868
  716. __attribute__((noinline)) void CPlayer::GetBoneOrientation(
  717. int i1, TPoint3D *pPoint3D2) {
  718. LOGI("CPlayer::GetAnimTime %p %d %p", this, i1, pPoint3D2);
  719. }
  720. //-------------------------------------------------------------------------------------------------
  721. // 00172634 ^_^
  722. int CPlayer::GetDistanceSq(TPoint3D point3D1) { return 0; }
  723. //-------------------------------------------------------------------------------------------------
  724. // 00172EB2 ^_^
  725. bool CPlayer::Fell(TPoint point1, bool b3) { return true; }
  726. //-------------------------------------------------------------------------------------------------
  727. // 00172EE4
  728. bool CPlayer::Fell(int i1, bool b2) {
  729. LOGI("CPlayer::Fell 00172EE4");
  730. return true;
  731. }
  732. //-------------------------------------------------------------------------------------------------
  733. // 00172F78 ^_-
  734. bool CPlayer::Trip(int i1, int i2) {
  735. bool r4_bret = false;
  736. // loc_172FEE
  737. return r4_bret;
  738. }
  739. //-------------------------------------------------------------------------------------------------
  740. // 00172FF8 ^_^
  741. void CPlayer::UpdateLogic() {
  742. if (NIS_Active()) return;
  743. // 00173002
  744. UpdateJostlePoint();
  745. UpdateIdle();
  746. UpdateReactions();
  747. UpdateBallReactions();
  748. UpdateFall();
  749. if (!uc_88) return;
  750. // 00173026
  751. if (cBall.ballPosPrev_4.dz_8 <= us_122 * 72 &&
  752. tStr58_A0.u_50.ui_50 <= 0x28000) {
  753. // 00173046
  754. if (tGame.field_6C38 <= 4 && cBall.speedXY_28 > 0x14DC) {
  755. uc_88 = 0;
  756. } else if (tGame.mTLogic_6678.team_40 == tStr32_44.uc_0) {
  757. uc_88 = 0;
  758. }
  759. } else {
  760. uc_88 = 0;
  761. }
  762. // loc_17306E
  763. }
  764. //-------------------------------------------------------------------------------------------------
  765. // 00173080 ^_^
  766. void CPlayer::UpdateIdle() {
  767. // LOGI("CPlayer::UpdateIdle %p", this);
  768. if (b_30) return;
  769. // 0017308C
  770. if (tGame.field_6C38 >= 6 && !tStr32_44.field_8) {
  771. // 001730A0
  772. // tStr32_44.s_C > 6 ||
  773. if ((tStr32_44.s_C != 6 && tStr32_44.s_C != 3 && tStr32_44.s_C != 2)) {
  774. // loc_1730B4
  775. field_120++;
  776. if ((int)field_120 >= 241) {
  777. // 001730CC
  778. if (XSYS_Random(0x12C) || uc_88) {
  779. // loc_1730D6
  780. if (tStr32_44.s_C == 6 || tStr32_44.s_C == 1) {
  781. // 001730E2
  782. NewPlayerStateX(0, -1, 0);
  783. } // loc_173104
  784. } else {
  785. // loc_173178
  786. NewPlayerStateX(0, -1, 0xB);
  787. }
  788. } //-> loc_173104
  789. } else {
  790. field_120 = 0;
  791. }
  792. } else {
  793. // loc_1730F2
  794. if (tStr32_44.field_8 == 14 && tStr32_44.s_C == 6) {
  795. // loc_173170
  796. field_120++;
  797. } else {
  798. // 001730FE
  799. field_120 = 0;
  800. }
  801. }
  802. // loc_1730FE
  803. // loc_173100
  804. // loc_173104
  805. if (tGame.mTLogic_6678.field_8 == 1 && tGame.mTLogic_6678.field_10 == 1) {
  806. // loc_17311A
  807. if (tGame.mTLogic_6678.field_38 <= 29 && tStr32_44.field_8 == 14 &&
  808. tStr32_44.field_14 > (tStr32_44.field_1C * 30)) {
  809. // 00173138
  810. NewPlayerStateX(0, -1, 0);
  811. if (tGame.mTLogic_6678.field_38 >= 61 && tStr32_44.field_8 == 0 &&
  812. tStr32_44.s_C == 2) {
  813. // 0017315E
  814. NewPlayerStateX(0, -1, 0);
  815. }
  816. }
  817. }
  818. // 00173118
  819. return;
  820. }
  821. //-------------------------------------------------------------------------------------------------
  822. // 00173188 ^_^
  823. void CPlayer::UpdateReactions() {
  824. if (field_8C) {
  825. // 00173192
  826. if (s_32) {
  827. // 00173196
  828. field_8C--;
  829. } else {
  830. // loc_17319A
  831. NewPlayerStateDataNIS(s_90, s_92, 0, s_94);
  832. field_8C = 0;
  833. }
  834. // loc_1731B2
  835. }
  836. // locret_1731B6
  837. }
  838. //-------------------------------------------------------------------------------------------------
  839. // 001731B8
  840. __attribute__((noinline)) void CPlayer::UpdateBallReactions() {
  841. UpdateTake();
  842. UpdateAvoid();
  843. }
  844. //-------------------------------------------------------------------------------------------------
  845. // 001731CA ^_-
  846. void CPlayer::UpdateFall() {
  847. if (tStr32_44.field_8 != 10) return;
  848. // 001731D6
  849. TAnimData *r1_data = GetAnimData();
  850. // 001731E2
  851. if (tStr32_44.s_C == 10) {
  852. // 001731E6
  853. SetNextState(r1_data);
  854. } else {
  855. // 001731F0
  856. if (tStr32_44.field_14 >= r1_data->filed_20[0].filed_0 &&
  857. tStr32_44.field_14 <
  858. (r1_data->filed_20[0].filed_0 + tStr32_44.field_1C)) {
  859. tStr32_44.s_18 = 1;
  860. }
  861. }
  862. // locret_173206
  863. }
  864. //-------------------------------------------------------------------------------------------------
  865. // 00173208
  866. __attribute__((noinline)) void CPlayer::UpdateAvoid() {
  867. LOGI("CPlayer::UpdateAvoid %p", this);
  868. }
  869. //-------------------------------------------------------------------------------------------------
  870. // 001733C4
  871. __attribute__((noinline)) void CPlayer::IsWalking() {
  872. LOGI("CPlayer::IsWalking %p", this);
  873. }
  874. //-------------------------------------------------------------------------------------------------
  875. // 001733EC
  876. bool CPlayer::IsSprinting() {
  877. // locret_173412
  878. return false;
  879. }
  880. //-------------------------------------------------------------------------------------------------
  881. // 00173414
  882. __attribute__((noinline)) void CPlayer::IsStanding() {
  883. LOGI("CPlayer::IsStanding %p", this);
  884. }
  885. //-------------------------------------------------------------------------------------------------
  886. // 0017341E
  887. __attribute__((noinline)) void CPlayer::IsFacing(int i1, int i2) {
  888. LOGI("CPlayer::IsFacing %p %d %d", this, i1, i2);
  889. }
  890. //-------------------------------------------------------------------------------------------------
  891. // 00173442
  892. __attribute__((noinline)) void CPlayer::IsAtDest(TPoint *pPoint1, int i2) {
  893. LOGI("CPlayer::IsAtDest %p %d %d", this, (int)pPoint1, i2);
  894. }
  895. //-------------------------------------------------------------------------------------------------
  896. // 0017346C
  897. __attribute__((noinline)) void CPlayer::UpdateMovement() {
  898. LOGI("CPlayer::UpdateMovement %p", this);
  899. }
  900. //-------------------------------------------------------------------------------------------------
  901. // 00173DBA ^_^
  902. void CPlayer::SetStateStand(bool b1) {}
  903. //-------------------------------------------------------------------------------------------------
  904. // 00173DD4 ^_^
  905. void CPlayer::SetStateLoco() {}
  906. //-------------------------------------------------------------------------------------------------
  907. // 00173E58
  908. __attribute__((noinline)) void CPlayer::SetAnimFromStateLoco(int i1, int i2,
  909. int i3) {
  910. LOGI("CPlayer::SetAnimFromStateLoco %p %d %d %d", this, i1, i2, i3);
  911. }
  912. //-------------------------------------------------------------------------------------------------
  913. // 00174074
  914. void CPlayer::CheckAvoid(TPoint *pPoint1, int i2, int i3) {
  915. // LOGI("CPlayer::CheckAvoid %p %p %d %d", this, pPoint1, i2, i3);
  916. // tStr32_44.uc_1
  917. }
  918. //-------------------------------------------------------------------------------------------------
  919. // 001741FC
  920. __attribute__((noinline)) void CPlayer::SetConstantSpeed(bool b1) {
  921. LOGI("CPlayer::SetConstantSpeed %p %d", this, b1);
  922. }
  923. //-------------------------------------------------------------------------------------------------
  924. // 00174204 ^_^
  925. int CPlayer::GetAverageRunSpeed() { return 0; }
  926. //-------------------------------------------------------------------------------------------------
  927. // 00174260 ^_^
  928. void CPlayer::SetAverageRunSpeed(int i1) {}
  929. //-------------------------------------------------------------------------------------------------
  930. // 00174290
  931. void CPlayer::GetInterceptRunSpeed() {}
  932. //-------------------------------------------------------------------------------------------------
  933. // 00174294
  934. __attribute__((noinline)) void CPlayer::GetWalkSpeed() {
  935. LOGI("CPlayer::GetWalkSpeed %p", this);
  936. }
  937. //-------------------------------------------------------------------------------------------------
  938. // 001742B4 ^_^
  939. int CPlayer::GetSprintSpeed() {
  940. LOGE("this=%xCPlayer::GetRunSpeed", (uint)this);
  941. return rand();
  942. }
  943. //-------------------------------------------------------------------------------------------------
  944. // 00174310 ^_^
  945. int CPlayer::GetTargetRunSpeed() { return 0; }
  946. //-------------------------------------------------------------------------------------------------
  947. // 0017432C //^_^
  948. int CPlayer::GetCurrentRunSpeed() {
  949. // LOGI("CPlayer::GetCurrentRunSpeed %p", this);
  950. return 0;
  951. }
  952. //-------------------------------------------------------------------------------------------------
  953. // 00174458 ^_-
  954. int CPlayer::GetRunSpeed() {
  955. int dret = 0;
  956. // loc_1744BA
  957. LOGE("this=%xCPlayer::GetRunSpeed", (uint)this);
  958. return rand() + 0x409360;
  959. }
  960. //-------------------------------------------------------------------------------------------------
  961. // 001744CC
  962. int CPlayer::AttributeInterpolate(EPlayerAttribute eAttr1, int i2, int i3) {
  963. return 0;
  964. }
  965. //-------------------------------------------------------------------------------------------------
  966. // 001744E2
  967. float CPlayer::GetMoveSpeed() { return 0.1f; }
  968. //-------------------------------------------------------------------------------------------------
  969. // 001744E8 ^_^
  970. int CPlayer::GetInterceptMaxHeight() { return 0; }
  971. //-------------------------------------------------------------------------------------------------
  972. // 00174530 ^_^
  973. void CPlayer::SetUrgency(int i1) {
  974. LOGI("CPlayer::SetUrgency %d %d", i1, s_82);
  975. }
  976. //-------------------------------------------------------------------------------------------------
  977. // 00174550 经过单元测试,功能正常
  978. void CPlayer::SetUrgencyTime(int i1, bool b2) {
  979. // LOGI("CPlayer::SetUrgencyTime %p %d", this, i1);
  980. }
  981. //-------------------------------------------------------------------------------------------------
  982. // 0017464C ^_- 经过单元测试,功能正常
  983. void CPlayer::UpdateUrgency() {
  984. // LOGI("CPlayer::UpdateUrgency %p", this);
  985. // 00174652
  986. }
  987. //-------------------------------------------------------------------------------------------------
  988. // 001746EE
  989. __attribute__((noinline)) void CPlayer::GetDirMoveX() {
  990. LOGI("CPlayer::GetCurrentRunSpeed %p", this);
  991. }
  992. //-------------------------------------------------------------------------------------------------
  993. // 00174702
  994. __attribute__((noinline)) void CPlayer::GetDirMoveY() {
  995. LOGI("CPlayer::GetCurrentRunSpeed %p", this);
  996. }
  997. //-------------------------------------------------------------------------------------------------
  998. // 0017471E
  999. void CPlayer::NewPlayerStateX(int i1, int i2, int i3) {}
  1000. //-------------------------------------------------------------------------------------------------
  1001. // 0017472E ^_^
  1002. void CPlayer::NewPlayerStateXF(int i1, int i2, int i3, int i4) {}
  1003. //-------------------------------------------------------------------------------------------------
  1004. // 00174778
  1005. __attribute__((noinline)) void CPlayer::NewPlayerStateGen(int i1) {
  1006. LOGI("CPlayer::NewPlayerStateGen %p %d", this, i1);
  1007. }
  1008. //-------------------------------------------------------------------------------------------------
  1009. // 001747A8
  1010. __attribute__((noinline)) void CPlayer::NewPlayerStateData(int i1, int i2,
  1011. int i3, int i4) {
  1012. LOGI("CPlayer::NewPlayerStateData %p %d %d %d %d", this, i1, i2, i3, i4);
  1013. }
  1014. //-------------------------------------------------------------------------------------------------
  1015. // 001748A8 初步测试调用不到
  1016. void CPlayer::NewPlayerStateDataNIS(int i1, int i2, int i3, int i4) {
  1017. LOGI("CPlayer::NewPlayerStateDataNIS %p %d %d %d %d %d", this, i1, i2, i3, i4,
  1018. tStr32_44.uc_2);
  1019. }
  1020. //-------------------------------------------------------------------------------------------------
  1021. // 001749A0 ^_^
  1022. __attribute__((noinline)) bool CPlayer::CheckBlockedOff(int i1) {
  1023. // 00174A0E
  1024. return false;
  1025. }
  1026. //-------------------------------------------------------------------------------------------------
  1027. // 00174A24 没有测试到
  1028. __attribute__((noinline)) bool CPlayer::NewPlayerStateXFKick(
  1029. TPoint3D point3D1, int i2, int i3, TActionSetup *pActionSetup4, int i5,
  1030. int i6) {
  1031. // LOGI("CPlayer::NewPlayerStateXFKick %p poiint %d %d %d", this,
  1032. // point3D1.point_0.dx_0, point3D1.point_0.dy_4, point3D1.dz_8);
  1033. LOGI("CPlayer::NewPlayerStateXFKick %d %d %p %d %d", i2, i3, pActionSetup4,
  1034. i5, i6);
  1035. // loc_174ACE
  1036. return false;
  1037. }
  1038. //-------------------------------------------------------------------------------------------------
  1039. // 00174ADC
  1040. __attribute__((noinline)) void CPlayer::UpdateTake() {
  1041. LOGI("CPlayer::UpdateTake %p", this);
  1042. }
  1043. //-------------------------------------------------------------------------------------------------
  1044. // 00174C9C
  1045. __attribute__((noinline)) void CPlayer::ControlTakeBall(int i1) {
  1046. LOGI("CPlayer::ControlTakeBall %p %d", this, i1);
  1047. }
  1048. //-------------------------------------------------------------------------------------------------
  1049. // 00174FBC
  1050. __attribute__((noinline)) void CPlayer::SetAnimControl(
  1051. int i1, int i2, int i3, int i4, int i5, int i6, int i7,
  1052. TActionSetup *pActionSetup) {
  1053. LOGI("CPlayer::SetAnimControl %p %d %d %d %d %d %d %d %p", this, i1, i2, i3,
  1054. i4, i5, i6, i7, pActionSetup);
  1055. }
  1056. //-------------------------------------------------------------------------------------------------
  1057. // 0017555C
  1058. __attribute__((noinline)) void CPlayer::ControlFinish(int i1, int i2, int i3) {
  1059. LOGI("CPlayer::ControlTakeBall %p %d %d %d", this, i1, i2, i3);
  1060. }
  1061. //-------------------------------------------------------------------------------------------------
  1062. // 00175968
  1063. __attribute__((noinline)) void CPlayer::SetAnimTurn(
  1064. int i1, int i2, int i3, int i4, int i5, int i6, int i7,
  1065. TActionSetup *pActionSetup) {
  1066. LOGI("CPlayer::ControlTakeBall %p %d %d %d %d %d %d %d %p", this, i1, i2, i3,
  1067. i4, i5, i6, i7, pActionSetup);
  1068. }
  1069. //-------------------------------------------------------------------------------------------------
  1070. // 00175B2C
  1071. __attribute__((noinline)) bool CPlayer::Turn(int i1, int i2, bool b3) {
  1072. LOGI("CPlayer::ControlTakeBall %p %d %d %d", this, i1, i2, b3);
  1073. return rand()%2;
  1074. }
  1075. //-------------------------------------------------------------------------------------------------
  1076. // 00178AAC 经过单元测试,功能正常
  1077. __attribute__((noinline)) CPlayer &CPlayer::operator=(CPlayer const &other) {
  1078. return *this;
  1079. }
  1080. //-------------------------------------------------------------------------------------------------
  1081. /*
  1082. 001700E4
  1083. */