Advertisement
BenArthur_7

Gliding decomp

Jan 14th, 2018
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. ftStatusUniqProcessGlide.initStatus
  2. {
  3. int var0 = GetStatusKind
  4. if (var0 == 133) //Glide Action in Brawl
  5. {
  6. float var1 = GetLr
  7. float var2 = soKineticModuleImpl.getSumSpeed //Y speed
  8. float var3 = 1.7 //param
  9. SetFloat(0x21000005, var3)
  10. SetFloat(0x21000006, -var2)
  11. soKineticUtility.resetEnableEnergy(3, unk pointer, 22, var1 * var3)
  12. //params: Index, unk, unk, speed?
  13. soKineticUtility.clearUnableEnergy(2, unk pointer)
  14. soKineticUtility.clearUnableEnergy(0, unk pointer)
  15. soKineticUtility.clearUnableEnergy(1, unk pointer)
  16. soMotionModuleImpl.changeMotionRequest(0x3a?, 0, 90)
  17. soMotionModuleImpl.addPartialAnimChr(0x1, 0x3b, unk pointer, 0x0, 0, 0x0, 1)
  18. }
  19. }
  20. ftStatusUniqProcessGlide.execFixPos
  21. {
  22. ftUtil.getAirGroundTouchInfo //do I need this or can I just use air/ground status?
  23. if (grounded?) {
  24.  
  25. }
  26. else {
  27. OffFlag(0x22000013)
  28. }
  29. }
  30. ftStatusUniqProcessGlide.exitStatus
  31. {
  32. soMotionModuleImpl.removePartialAnimChr(3?)
  33. }
  34. ftStatusUniqProcessGlide.execStatus
  35. {
  36. if (GetStatusKind == 133)
  37. {
  38. var0 = GetLr
  39. //r29 = Energy[0x3]
  40. var1 = GetFloat(0x21000004)
  41. var2 = GetFloat(0x21000007)
  42. var3 = soControllerModuleImpl.getStickAngle //Use sys 0xa with Global 0x20 and 0x30 for this
  43. if (var0 > 0)
  44. {
  45. var4 = var3 * 180/pi
  46. }
  47. else //instead of this nonsense, just multiply stickX by GetLr when calculating angle
  48. {
  49. tempVar0 = var3 * 180/pi
  50. tempVar1;
  51. if (tempVar0 > 0)
  52. {
  53. tempVar1 = 1
  54. }
  55. else
  56. {
  57. tempVar1 = -1
  58. }
  59. tempVar2 = 180 * tempVar1
  60. var4 = tempVar2 - tempVar3
  61. }
  62. var5 = stickMag
  63. if (var5 > 0.25) //param value
  64. {
  65. if (var4 >= 45 || var4 < -135)
  66. {
  67. var6 = 0.55 //param value
  68. }
  69. else
  70. {
  71. var6 = -(0.75) //param value
  72. }
  73. var7 = var6 * (stickMag - 0.25)/(1 - 0.25)
  74. if (var7 * var2 < 0)
  75. {
  76. var2 = 0
  77. }
  78. var2 += var7
  79. }
  80. else
  81. {
  82. //80872dbc
  83. if(isFlag(0x22000010))
  84. {
  85. if (var2 < 0)
  86. {
  87. var2 = 0
  88. }
  89. var2 += 1 //param 19
  90. }
  91. }
  92. var2 = ConstrainFloat(var2, -7, 7)
  93. SetFloat(0x21000007, var2)
  94. var1 += var2
  95. //note the above three commands are actually called in both logical paths, but to make code shorter they should be here.
  96. var1 = ConstrainFloat(var1, -70, 80)//params
  97. if (!isFlag(0x22000010))
  98. {
  99. //80872e7c
  100. var8 = GetFloat(0x21000005) - (0.04)(var1 / 90)
  101. if (isFlag(0x22000013))
  102. {
  103. var8 -= 0.01 //NOT a param
  104. }
  105. if (var8 < 0)
  106. {
  107. var8 = 0
  108. }
  109. //80872eec
  110. if (isFlag(0x22000012))
  111. {
  112. if (var1 > 0)
  113. {
  114. offFlag(0x22000012)
  115. }
  116. }
  117. else
  118. {
  119. var9 = -25 //param
  120. if (var1 < -var9)//if angle < -25
  121. {
  122. var8 += 0.03 * (var9 - var1) / (var9 - -70)
  123. //add horizontal speed
  124. }
  125. //retrospect:
  126. //0.03 is max additional horizontal speed when angle < -25
  127. //0.03 is the Index = 13 param (not index 9)
  128. }
  129. var10 = var0 * var8 //H speed
  130. var11 = var0 * var1 * pi/180 //angle * GetLr, radians
  131.  
  132. var12 = var10 * sin(var11) //true horizontal
  133. var13 = var10 * cos(var11) //V factor before subtracting
  134.  
  135. var14 = GetFloat(0x21000006) + 0.03 //param 9
  136. var14 = ConstrainFloat(f1, -0.6, 0.6) //param 10
  137. SetFloat(0x21000006, var14)
  138.  
  139. var13 -= var14 //NOTE: var12 and var13 are X,Y speed now
  140. var15 = (var13)^2 + (var12)^2
  141. var16 = sqrt(var15)
  142. var17 = 2.2 //param
  143. if (var16 > var17)
  144. {
  145. var18 = var17 / var16
  146. var12 *= var18
  147. var13 *= var18
  148. }
  149. //NOTE: var12 and var13 are moved to r29 + 0x8, 0xC,
  150. //this is where it sets the kinetic speed!
  151. //Theoretical Code
  152. SetHSpeed(0x3, var12)
  153. SetVSpeed(0x3, var13)
  154. if (var16 < 0.7 || var8 <= 0) //0.7 is the param
  155. {
  156. onFlag(0x22000010)
  157. SetFloat(0x21000007, 0)
  158. }
  159. SetFloat(0x21000005, var8)
  160. }
  161. else //80873148
  162. {
  163. This never triggers, because when 0x22000010 is set it exits the glide
  164. }
  165. //80873338
  166. soMotionModuleImpl.setFrame(90 - var1)
  167. SetFloat(0x21000004, var1)
  168. }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement