PM3.02 - Samus - Common Subroutine 0x9019c608

  1. CreateInterrupt { interrupt_id: None, action: FallSpecial, requirement: (AnimationEnd) }
  2. CreateInterrupt { interrupt_id: None, action: LandingFallSpecial, requirement: (OnGround) }
  3. Subroutine(0x22770)
  4. FloatVariableSet { variable: LongtermAccessFloat (0x6), value: InternalConstantInt(ControlStickXAxisRelative) }
  5. FloatVariableSet { variable: LongtermAccessFloat(CurryAngle1), value: InternalConstantInt(ControlStickYAxis) }
  6. if ((LongtermAccessFloat (0x6) LessThan scalar(0)))
    1. FloatVariableMultiply { variable: LongtermAccessFloat (0x6), value: -1 }
  7. if ((LongtermAccessFloat(CurryAngle1) LessThan scalar(0)))
    1. FloatVariableMultiply { variable: LongtermAccessFloat(CurryAngle1), value: -1 }
  8. FloatVariableAdd { variable: LongtermAccessFloat(CurryAngle1), value: LongtermAccessFloat (0x6) }
  9. if ((LongtermAccessFloat(CurryAngle1) GreaterThan scalar(1)))
    1. FloatVariableSubtract { variable: LongtermAccessFloat(CurryAngle1), value: 1 }
  10. else
    1. FloatVariableSet { variable: LongtermAccessFloat(CurryAngle1), value: 0 }
  11. FloatVariableSet { variable: RandomAccessFloat (0x5), value: InternalConstantInt(ControlStickXAxisRelative) }
  12. FloatVariableSet { variable: LongtermAccessFloat (0x6), value: InternalConstantInt(ControlStickXAxisRelative) }
  13. FloatVariableMultiply { variable: LongtermAccessFloat (0x6), value: 0.17 }
  14. FloatVariableMultiply { variable: LongtermAccessFloat (0x6), value: LongtermAccessFloat(CurryAngle1) }
  15. FloatVariableSubtract { variable: RandomAccessFloat (0x5), value: LongtermAccessFloat (0x6) }
  16. FloatVariableSet { variable: RandomAccessFloat (0x7), value: InternalConstantInt(ControlStickYAxis) }
  17. FloatVariableSet { variable: LongtermAccessFloat (0x6), value: InternalConstantInt(ControlStickYAxis) }
  18. FloatVariableMultiply { variable: LongtermAccessFloat (0x6), value: 0.17 }
  19. FloatVariableMultiply { variable: LongtermAccessFloat (0x6), value: LongtermAccessFloat(CurryAngle1) }
  20. FloatVariableSubtract { variable: RandomAccessFloat (0x7), value: LongtermAccessFloat (0x6) }
  21. FloatVariableMultiply { variable: RandomAccessFloat (0x5), value: 3.1 }
  22. FloatVariableMultiply { variable: RandomAccessFloat (0x7), value: 3.1 }
  23. ChangeSubactionRestartFrame(EscapeAir)
  24. BoolVariableSetTrue { variable: LongtermAccessBool(CanNotTeeter) }
  25. SetAirGround(10)
  26. UnknownEvent { namespace: 0xe, code: 0x8, unk1: 0x0, arguments: [Value(0), Value(0), Value(1), Value(1)] }
  27. DisableMovement(DisableVertical)
  28. AddVelocity { x_vel: Variable(RandomAccessFloat(Address(5))), y_vel: Variable(RandomAccessFloat(Address(7))) }
  29. loop 27 times:
    1. UnknownEvent { namespace: 0xe, code: 0x8, unk1: 0x0, arguments: [Value(0), Value(0), Value(1), Value(1)] }
    2. DisableMovement(DisableVertical)
    3. AddVelocity { x_vel: Variable(RandomAccessFloat(Address(5))), y_vel: Variable(RandomAccessFloat(Address(7))) }
    4. FloatVariableMultiply { variable: RandomAccessFloat (0x5), value: 0.9 }
    5. FloatVariableMultiply { variable: RandomAccessFloat (0x7), value: 0.9 }
    6. SyncWait(1.0)
  30. DisableMovement2(DisableVertical)
  31. Return