CGFXFX.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. #include "CGFXFX.h"
  2. #include <algorithm>
  3. #include "CBall.h"
  4. #include "CFTT3dGenShader.h"
  5. #include "CFTTColour.h"
  6. #include "CFTTGraphicsDevice.h"
  7. #include "CFTTMaterialManager.h"
  8. #include "CFTTSphere32.h"
  9. #include "CFTTTextureCache.h"
  10. #include "CFTTTime.h"
  11. #include "CFTTVector32.h"
  12. #include "CGraphicsRewindEffect.h"
  13. #include "CGraphicsTexLoadOptions.h"
  14. #include "CLegacyLitShader.h"
  15. #include "FREE.h"
  16. #include "GFXCAMERA.h"
  17. #include "GM.h"
  18. #include "Matrix.h"
  19. #include "TGame.h"
  20. #include "XSYS.h"
  21. #include "memctrl.h"
  22. //#include "GFXCAMERA.h"
  23. #define BallPathSize 128
  24. CGraphicsRewindEffect *CGFXFX::ms_pRewindEffect;
  25. int CGFXFX::ms_iAdditiveMat = -1; // 0033EFBC
  26. int CGFXFX::ms_iModulateMat = -1; // 0033EFC0
  27. int CGFXFX::ms_iConfettiMat = -1; // 0033EFC4
  28. CFTTRenderHelper *CGFXFX::ms_pRenderHelperAdditive; // 003A4EE4
  29. CFTTRenderHelper *CGFXFX::ms_pRenderHelperModulate; // 003A4EE8
  30. CFTTRenderHelper *CGFXFX::ms_pRenderHelperConfetti; // 003A4EEC
  31. CFTTRenderHelper *CGFXFX::ms_pRenderHelperStrip; // 003A4EF0
  32. Particle CGFXFX::m_tParticle[0x2000]; // 003A4EF4 88 8192
  33. int CGFXFX::m_iNumActiveParticles; // 00454EF4
  34. TPoint3D CGFXFX::m_vBallPosPrev; // 00454EF8
  35. TPoint3D CGFXFX::m_vBallMovePrev; // 00454F04
  36. TPoint CGFXFX::ms_tFountainsInfo; // 00454F10
  37. int CGFXFX::ms_iSwirlTick; // 00454F18
  38. TPoint3D CGFXFX::m_vBallPath[BallPathSize]; // 00454F1C
  39. int CGFXFX::m_iBallPathSize; // 0045551C
  40. int CGFXFX::m_iBallPathStart; // 00455520
  41. int CGFXFX::m_iBallTrailCol; // 00455524
  42. TPoint CGFXFX::m_vSwipeScreen[0x100]; // 00455528
  43. int CGFXFX::m_iSwipeScreenSize; // 00455D28
  44. CFTTVector32 CGFXFX::m_vSwipePath[0x100]; // 00455D2C
  45. int CGFXFX::m_iSwipePathSize; // 0045692C
  46. int CGFXFX::m_iSwipeTime; // 00456930
  47. int CGFXFX::m_iSwipeCol; // 00456934
  48. bool CGFXFX::m_bEnableRender; // 00456938
  49. // CGFXFX::ms_pRewindEffect; //0045693C
  50. uint CGFXFX::ms_uGoldenBootEnabled; // 00456940
  51. uint CGFXFX::ms_uStarPlayerEnabled; /// 00456944
  52. static int list_rand_456948[1024]; // 00456948
  53. static int gs_i457948;
  54. char *gs_s_323118[8] = {"data/fx/circle0.png",
  55. "data/fx/flames.png",
  56. "data/fx/smoke.png",
  57. "data/fx/star1.png",
  58. "Data/models/SpecialFX/glare.bmp",
  59. "data/fx/star1.png",
  60. "Data/fx/confetti.png",
  61. "data/fx/star1.png"};
  62. //-------------------------------------------------------------------------------------------------
  63. // 00181AC8 -_- 经过单元测试,功能正常
  64. void CGFXFX::Init() {
  65. LOGI("CGFXFX::Init entry");
  66. LOGI("CGFXFX::Init end");
  67. }
  68. //-------------------------------------------------------------------------------------------------
  69. // 00181D48 //^_^
  70. void CGFXFX::Shutdown() {}
  71. //-------------------------------------------------------------------------------------------------
  72. // 00181E44
  73. void CGFXFX::Update(float) {}
  74. //-------------------------------------------------------------------------------------------------
  75. // 00181EB4
  76. void CGFXFX::ParticleLogicUpdate() {}
  77. //-------------------------------------------------------------------------------------------------
  78. // 00181FD0
  79. void CGFXFX::ParticleProcess() {}
  80. //-------------------------------------------------------------------------------------------------
  81. // 0018222C
  82. void CGFXFX::BallPathProcess() {}
  83. //-------------------------------------------------------------------------------------------------
  84. // 00182324
  85. void CGFXFX::BallEffectsProcess() {}
  86. //-------------------------------------------------------------------------------------------------
  87. // 0018274C
  88. void CGFXFX::SwipeUpdate() {}
  89. //-------------------------------------------------------------------------------------------------
  90. // 00182794 //^_^ 经过单元测试,功能正常
  91. void CGFXFX::Render2D() {
  92. // LOGI("CGFXFX::Render2D Entry");
  93. }
  94. //-------------------------------------------------------------------------------------------------
  95. // 001827B4
  96. void CGFXFX::Render() {}
  97. //-------------------------------------------------------------------------------------------------
  98. // 0018296C
  99. void CGFXFX::BallPathAddVerts(TFVF_PFLOAT_CINT_TFLOAT *&) {}
  100. //-------------------------------------------------------------------------------------------------
  101. // 00182BB0
  102. void CGFXFX::BallTrailAddVerts(TFVF_PFLOAT_CINT_TFLOAT *&) {}
  103. //-------------------------------------------------------------------------------------------------
  104. // 00182E5C
  105. void CGFXFX::SwipeAddVerts(TFVF_PFLOAT_CINT_TFLOAT *&) {}
  106. //-------------------------------------------------------------------------------------------------
  107. // 00183458
  108. void CGFXFX::ParticleRender() {
  109. float s16_f = 0.000030518f;
  110. // sp8=m_tParticle sp14=m_iNumActiveParticles sp10=cball sp18=sinf
  111. int r5_i = 0;
  112. // loc_183994
  113. while (r5_i != 8) {
  114. // loc_18348A
  115. RenderHelperConfetti_LockVerticesRet *r8_pv = 0;
  116. TFVF_PFLOAT_CINT_TFLOAT *r7_pv = 0;
  117. int r11_i = 0;
  118. TFVF_PFLOAT_CINT_TFLOAT *pv_sp1C = NULL;
  119. RenderHelperConfetti_LockVerticesRet *pv_spC = NULL;
  120. // loc_1838CC
  121. while (r11_i < m_iNumActiveParticles) {
  122. // /loc_1834A4
  123. if (m_tParticle[r11_i].eGFXFXParticle_0 == r5_i) {
  124. LOGE("CGFXFX::ParticleRender_1");
  125. int r0_i = 0;
  126. float s26_f = m_tParticle[r11_i].vector32_4.float_0;
  127. float s28_f = m_tParticle[r11_i].vector32_4.float_4;
  128. float s30_f = m_tParticle[r11_i].vector32_4.float_8;
  129. if ((r5_i & 0x7FFFFFFF) == 7 || (r5_i & 0x7FFFFFFF) == 1) {
  130. LOGE("CGFXFX::ParticleRender_2");
  131. float s0_f = cBall.ballPosPrev_4.point_0.dx_0;
  132. float s2_f = cBall.ballPosPrev_4.point_0.dy_4;
  133. float s4_f = cBall.ballPosPrev_4.dz_8;
  134. s30_f = s30_f + s2_f * s16_f;
  135. s28_f = s28_f + s4_f * s16_f;
  136. s26_f = s26_f - s0_f * s16_f;
  137. }
  138. // loc_1834EC
  139. float s24_f = m_tParticle[r11_i].f_38;
  140. float s17_f = m_tParticle[r11_i].f_3C;
  141. float s0_f = m_tParticle[r11_i].f_48;
  142. float s2_f = m_tParticle[r11_i].f_4C;
  143. s2_f -= s0_f;
  144. float s21_f = m_tParticle[r11_i].i_54 - m_tParticle[r11_i].i_50;
  145. float s23_f = m_tParticle[r11_i].i_54;
  146. s2_f *= s21_f;
  147. s2_f /= s23_f;
  148. s0_f += s2_f;
  149. sinf(s0_f);
  150. cosf(s0_f);
  151. sinf(s0_f);
  152. cosf(s0_f);
  153. float s29_f = sinf(s0_f);
  154. float s31_f = cosf(s0_f);
  155. float s19_f = GFXCAMERA_vCamUp.float_0;
  156. float s25_f = GFXCAMERA_vCamUp.float_4;
  157. float s27_f = GFXCAMERA_vCamUp.float_8;
  158. s0_f = s31_f * s19_f;
  159. s2_f = s31_f * s25_f;
  160. float s4_f = s31_f * s27_f;
  161. float s22_f = GFXCAMERA_vCamRight.float_0;
  162. float s18_f = GFXCAMERA_vCamRight.float_4;
  163. float s20_f = GFXCAMERA_vCamRight.float_8;
  164. s0_f = s0_f + s29_f * s22_f;
  165. s2_f = s2_f + s29_f * s18_f;
  166. s4_f = s4_f + s29_f * s20_f;
  167. CFTTVector32 v32_sp70;
  168. v32_sp70.float_0 = s0_f;
  169. v32_sp70.float_4 = s2_f;
  170. v32_sp70.float_8 = s4_f;
  171. s0_f = s17_f - s24_f;
  172. s0_f *= s21_f;
  173. s2_f = m_tParticle[r11_i].i_54 - m_tParticle[r11_i].i_50;
  174. s4_f = m_tParticle[r11_i].i_54;
  175. s0_f /= s23_f;
  176. s2_f /= s4_f;
  177. s24_f += s0_f;
  178. uint r1_u =
  179. XMixCol(m_tParticle[r11_i].u_40, m_tParticle[r11_i].u_44, s2_f);
  180. s0_f = 0.5f;
  181. s17_f = s24_f * s0_f;
  182. // 001835E8
  183. uint r6_platformU32 = g_pGraphicsDevice->ARGBToPlatformU32(r1_u);
  184. if (m_tParticle[r11_i].eGFXFXParticle_0 == EGFXFXParticle_6) {
  185. LOGE("CGFXFX::ParticleRender_3");
  186. // 001835F6
  187. s2_f = m_tParticle[r11_i].vector32_1C.float_0;
  188. float s6_f = 0.0f;
  189. s0_f = m_tParticle[r11_i].vector32_1C.float_4;
  190. // int r10_i = r5_i;
  191. s0_f = s0_f + s2_f * s6_f;
  192. s4_f = m_tParticle[r11_i].vector32_1C.float_8;
  193. s2_f = -1.0f;
  194. CFTTVector32 v32_sp64;
  195. v32_sp64.float_0 = 0;
  196. v32_sp64.float_4 = 1.0f;
  197. v32_sp64.float_8 = 0;
  198. s0_f = s0_f + s4_f * s6_f;
  199. if (s0_f == s2_f || s0_f == 1.0f) {
  200. // 0018363C
  201. LOGE("CGFXFX::ParticleRender_4");
  202. v32_sp64.float_4 = 0;
  203. v32_sp64.float_0 = 1.0f;
  204. v32_sp64.float_8 = 0;
  205. }
  206. // 00183648
  207. CFTTVector32 vec32_sp20 =
  208. CrossProduct(m_tParticle[r11_i].vector32_1C, v32_sp64);
  209. v32_sp70 = vec32_sp20;
  210. vec32_sp20 = CrossProduct(m_tParticle[r11_i].vector32_1C, v32_sp70);
  211. s18_f = vec32_sp20.float_0;
  212. s20_f = vec32_sp20.float_4;
  213. s22_f = vec32_sp20.float_8;
  214. s24_f = v32_sp70.float_0;
  215. s19_f = v32_sp70.float_4;
  216. s21_f = v32_sp70.float_8;
  217. CFTTMatrix32 mat32_sp20 = MakeVectorRotationMatrix32(
  218. m_tParticle[r11_i].vector32_28, m_tParticle[r11_i].f_34);
  219. VectorMatrixMultiply(&m_tParticle[r11_i].vector32_1C, &mat32_sp20);
  220. s0_f = s17_f * s22_f;
  221. s2_f = s17_f * s20_f;
  222. s4_f = s17_f * s18_f;
  223. s6_f = s17_f * s21_f;
  224. float s10_f = s17_f * s19_f;
  225. float s14_f = s17_f * s24_f;
  226. float s8_f = s30_f + s0_f;
  227. float s12_f = s28_f + s2_f;
  228. s2_f = s28_f - s2_f;
  229. float s1_f = s26_f + s4_f;
  230. s0_f = s30_f - s0_f;
  231. s4_f = s26_f - s4_f;
  232. s26_f = s8_f - s6_f;
  233. s28_f = s12_f - s10_f;
  234. s19_f = s2_f - s10_f;
  235. s30_f = s1_f - s14_f;
  236. s17_f = s0_f - s6_f;
  237. s21_f = s4_f - s14_f;
  238. s23_f = s8_f + s6_f;
  239. s25_f = s12_f + s10_f;
  240. s27_f = s1_f + s14_f;
  241. s29_f = s0_f + s6_f;
  242. s31_f = s2_f + s10_f;
  243. s24_f = s4_f + s14_f;
  244. if (m_tParticle[r11_i].eGFXFXParticle_0 == EGFXFXParticle_6) {
  245. LOGE("CGFXFX::ParticleRender_5");
  246. // r0_pv = pv_spC;
  247. if (pv_spC == NULL) {
  248. // LOGE("CGFXFX::ParticleRender_6");
  249. pv_spC = (RenderHelperConfetti_LockVerticesRet *)
  250. ms_pRenderHelperConfetti->LockVertices();
  251. r8_pv = pv_spC;
  252. }
  253. // loc_18371E
  254. // pv_spC = r0_pv;
  255. r8_pv->f_0 = s24_f;
  256. r8_pv->f_4 = s31_f;
  257. r8_pv->f_8 = s29_f;
  258. r8_pv->v32_C = m_tParticle[r11_i].vector32_1C;
  259. r8_pv->platformU32_18 = r6_platformU32;
  260. r8_pv->f_1C = 0;
  261. r8_pv->f_20 = 1.0f;
  262. r8_pv++;
  263. r8_pv->f_0 = s27_f;
  264. r8_pv->f_4 = s25_f;
  265. r8_pv->f_8 = s23_f;
  266. r8_pv->v32_C = m_tParticle[r11_i].vector32_1C;
  267. r8_pv->platformU32_18 = r6_platformU32;
  268. r8_pv->f_1C = 1.0f;
  269. r8_pv->f_20 = 1.0f;
  270. r8_pv++;
  271. r8_pv->f_0 = s21_f;
  272. r8_pv->f_4 = s19_f;
  273. r8_pv->f_8 = s17_f;
  274. r8_pv->v32_C = m_tParticle[r11_i].vector32_1C;
  275. r8_pv->platformU32_18 = r6_platformU32;
  276. r8_pv->f_1C = 0;
  277. r8_pv->f_20 = 0;
  278. r8_pv++;
  279. r8_pv->f_0 = s30_f;
  280. r8_pv->f_4 = s28_f;
  281. r8_pv->f_8 = s26_f;
  282. r8_pv->v32_C = m_tParticle[r11_i].vector32_1C;
  283. r8_pv->platformU32_18 = r6_platformU32;
  284. r8_pv->f_1C = 1.0f;
  285. r8_pv->f_20 = 0;
  286. r8_pv++;
  287. }
  288. }
  289. // RenderHelperConfetti_LockVerticesRet *r0_pv;
  290. else {
  291. // loc_1837B0
  292. LOGE("CGFXFX::ParticleRender_7");
  293. s0_f = s31_f * s20_f;
  294. float s6_f = v32_sp70.float_0;
  295. s2_f = s31_f * s18_f;
  296. float s8_f = v32_sp70.float_4;
  297. s4_f = s31_f * s22_f;
  298. float s10_f = v32_sp70.float_8;
  299. s8_f = s17_f * s8_f;
  300. s10_f = s17_f * s10_f;
  301. s6_f = s17_f * s6_f;
  302. s0_f = s0_f - s29_f * s27_f;
  303. s2_f -= s29_f * s25_f;
  304. s4_f -= s29_f * s19_f;
  305. s0_f = s17_f * s0_f;
  306. s2_f = s17_f * s2_f;
  307. s4_f = s17_f * s4_f;
  308. float s12_f = s30_f + s0_f;
  309. float s14_f = s28_f + s2_f;
  310. s2_f = s28_f - s2_f;
  311. float s1_f = s26_f + s4_f;
  312. s0_f = s30_f - s0_f;
  313. s4_f = s26_f - s4_f;
  314. s26_f = s12_f - s10_f;
  315. s28_f = s14_f - s8_f;
  316. s19_f = s2_f - s8_f;
  317. s30_f = s1_f - s6_f;
  318. s17_f = s0_f - s10_f;
  319. s21_f = s4_f - s6_f;
  320. s23_f = s12_f + s10_f;
  321. s25_f = s14_f + s8_f;
  322. s27_f = s1_f + s6_f;
  323. s29_f = s0_f + s10_f;
  324. s31_f = s2_f + s8_f;
  325. s24_f = s4_f + s6_f;
  326. }
  327. // loc_18385E
  328. if (pv_sp1C == NULL) {
  329. pv_sp1C = (TFVF_PFLOAT_CINT_TFLOAT *)
  330. ms_pRenderHelperAdditive->LockVertices();
  331. r7_pv = pv_sp1C;
  332. LOGE("CGFXFX::ParticleRender_8r7=%x", (uint)r7_pv);
  333. }
  334. // loc_183870
  335. r7_pv->positon_0.float_0 = s24_f;
  336. r7_pv->positon_0.float_4 = s31_f;
  337. r7_pv->positon_0.float_8 = s29_f;
  338. r7_pv->platformU32_C = r6_platformU32;
  339. r7_pv->f_10 = 0;
  340. r7_pv->f_14 = 1.0f;
  341. r7_pv++;
  342. r7_pv->positon_0.float_0 = s27_f;
  343. r7_pv->positon_0.float_4 = s25_f;
  344. r7_pv->positon_0.float_8 = s23_f;
  345. r7_pv->platformU32_C = r6_platformU32;
  346. r7_pv->f_10 = 1.0f;
  347. r7_pv->f_14 = 1.0f;
  348. r7_pv++;
  349. r7_pv->positon_0.float_0 = s21_f;
  350. r7_pv->positon_0.float_4 = s19_f;
  351. r7_pv->positon_0.float_8 = s17_f;
  352. r7_pv->platformU32_C = r6_platformU32;
  353. r7_pv->f_10 = 0;
  354. r7_pv->f_14 = 0;
  355. r7_pv++;
  356. r7_pv->positon_0.float_0 = s30_f;
  357. r7_pv->positon_0.float_4 = s28_f;
  358. r7_pv->positon_0.float_8 = s26_f;
  359. r7_pv->platformU32_C = r6_platformU32;
  360. r7_pv->f_10 = 1.0f;
  361. r7_pv->f_14 = 0;
  362. r7_pv++;
  363. }
  364. // loc_1838C4
  365. r11_i++;
  366. }
  367. // loc_1838CC
  368. // 001838D4
  369. if (pv_spC) {
  370. LOGE("CGFXFX::ParticleRender_9");
  371. CFTTTexture *r2_ptexture = CFTTTextureCache::GetTexture(
  372. gs_s_323118[r5_i], g_tGlobalTexLoadOptions.mTexLoadOptions_4, 1);
  373. // CFTTTexParam parm;
  374. // parm.tTexParamData_4.u_0.pTexture_0 = r2_ptexture;
  375. // parm.tTexParamData_4.field_4 = 0;
  376. CFTTTexParam parm(r2_ptexture);
  377. CLegacyLitShader::s_tInstance.SetTex1(parm, ms_iConfettiMat);
  378. int r1_count = r8_pv - pv_spC;
  379. ms_pRenderHelperConfetti->UnlockVertices(r1_count);
  380. ms_pRenderHelperConfetti->Render(NULL, -1, 0, -1);
  381. }
  382. // loc_183934
  383. if (pv_sp1C) {
  384. LOGE("CGFXFX::ParticleRender_10");
  385. CFTTTexture *r2_ptexture = CFTTTextureCache::GetTexture(
  386. gs_s_323118[r5_i], g_tGlobalTexLoadOptions.mTexLoadOptions_4, 1);
  387. // CFTTTexParam parm;
  388. // parm.tTexParamData_4.u_0.pTexture_0 = r2_ptexture;
  389. // parm.tTexParamData_4.field_4 = 0;
  390. CFTTTexParam parm(r2_ptexture);
  391. CFTT3dGenShader::s_tInstance.SetSampler00(parm, ms_iAdditiveMat);
  392. int r1_count = r7_pv - pv_sp1C;
  393. ms_pRenderHelperAdditive->UnlockVertices(r1_count);
  394. ms_pRenderHelperAdditive->Render(NULL, -1, 0, -1);
  395. }
  396. // loc_183992
  397. r5_i++;
  398. }
  399. // loc_183994
  400. }
  401. //-------------------------------------------------------------------------------------------------
  402. // 001839DC
  403. bool CGFXFX::ParticleSystemVisible(EGFXParticleSystemType) { return 0; }
  404. //-------------------------------------------------------------------------------------------------
  405. // 00183A20
  406. EGFXFXParticle CGFXFX::GetFirstParticleType() { return EGFXFXParticle_0; }
  407. //-------------------------------------------------------------------------------------------------
  408. // 00183A40
  409. void CGFXFX::ResetParticles() {}
  410. //-------------------------------------------------------------------------------------------------
  411. // 00183A50
  412. void CGFXFX::FountainsUpdate(TFountainsInfo *, TPoint3D, TPoint3D, int) {}
  413. //-------------------------------------------------------------------------------------------------
  414. // 00183D34
  415. void CGFXFX::AddFireworkBurst(TPoint3D, TPoint3D, int) {
  416. // empty
  417. }
  418. //-------------------------------------------------------------------------------------------------
  419. // 00183D38
  420. void CGFXFX::ConfettiUpdate(TPoint3D, float) {}
  421. //-------------------------------------------------------------------------------------------------
  422. // 00183EF4
  423. void CGFXFX::ParticleAdd(EGFXFXParticle, CFTTVector32 *, CFTTVector32 *,
  424. CFTTVector32 *, CFTTVector32 *, int, float, float,
  425. uint, uint, float, float, float) {}
  426. //-------------------------------------------------------------------------------------------------
  427. // 00184028
  428. bool CGFXFX::GetGoldenBootEffectsEnabled() { return 0; }
  429. //-------------------------------------------------------------------------------------------------
  430. // 0018404C
  431. bool CGFXFX::GetStarPlayerEffectsEnabled() { return 0; }
  432. //-------------------------------------------------------------------------------------------------
  433. // 00184070
  434. void CGFXFX::SwipeReset() {}
  435. //-------------------------------------------------------------------------------------------------
  436. // 001840AC
  437. void CGFXFX::SwipeSetCol(uint) {}
  438. //-------------------------------------------------------------------------------------------------
  439. // 001840C0
  440. void CGFXFX::SwipeAddPoint(TPoint) {}
  441. //-------------------------------------------------------------------------------------------------
  442. // 0018416C
  443. void CGFXFX::EnableGoldenBootEffects() {}
  444. //-------------------------------------------------------------------------------------------------
  445. // 00184188
  446. void CGFXFX::ResetGoldenBootEffects() {}
  447. //-------------------------------------------------------------------------------------------------
  448. // 001841EC
  449. void CGFXFX::EnableStarPlayerEffects() {}
  450. //-------------------------------------------------------------------------------------------------
  451. // 00184208
  452. void CGFXFX::ResetStarPlayerEffects() {}
  453. //-------------------------------------------------------------------------------------------------
  454. // 0018426C
  455. void CGFXFX::BallTrailSetCol(uint) {}
  456. //-------------------------------------------------------------------------------------------------