246
edits
Icecream17 (talk | contribs) (this code is so indirect) |
Icecream17 (talk | contribs) (→Behavior: expand) |
||
Line 22: | Line 22: | ||
As with all airborne actions, a variety of "cancels" are checked prior to actually performing any airborne action. See [[Jump#Airborne cancels]]. | As with all airborne actions, a variety of "cancels" are checked prior to actually performing any airborne action. See [[Jump#Airborne cancels]]. | ||
Then: | Then:<ref>https://github.com/n64decomp/sm64/blob/66018e9f3caaa67399218971d61366cb3f7ba7d7/src/game/mario_actions_airborne.c#L1726</ref> | ||
# If Z is pressed | # If Z is pressed | ||
## If Mario's camera mode is CAMERA_MODE_BEHIND_MARIO, set_camera_mode to m->area->camera->defMode | ## If Mario's camera mode is CAMERA_MODE_BEHIND_MARIO, set_camera_mode to m->area->camera->defMode | ||
Line 37: | Line 37: | ||
### Set action state to 1 | ### Set action state to 1 | ||
# Call '''<code>update_flying</code>''' | # Call '''<code>update_flying</code>''' | ||
# switch [[Movement_steps#Perform_Air_Step]]: | # switch [[Movement_steps#Perform_Air_Step]]: (Note: perform air step is significant because it '''adds vel[0,1,2] to pos[0,1,2]'''.) | ||
#* air step none: | #* air step none: | ||
#*# Update graphics (camera) angle to be behind Mario | #*# Update graphics (camera) angle to be behind Mario | ||
Line 56: | Line 56: | ||
Notice that there is no code handling air steps for ledge grabbing or hanging on a ceiling, so such transitions are impossible. | Notice that there is no code handling air steps for ledge grabbing or hanging on a ceiling, so such transitions are impossible. | ||
===update_flying=== | ===update_flying=== | ||
Casually, tilt the joystick left to move left, right to move right, up to move down, down to move up. | |||
I am too lazy to describe the exact details of <code>update_flying</code>, so here is the code | I am too lazy to describe the exact details of <code>update_flying</code>, so here is the code | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
Line 96: | Line 98: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Key takeaways: | |||
* Pitching to move up happens faster with lower forward velocity. Try to be just under 4 or 16 forward velocity. | |||
{| class="wikitable" | |||
|+forwardVel's affect in pitch | |||
|'''<=4''' | |||
|5 | |||
|6 | |||
|7 | |||
|8 | |||
|9 | |||
|10 | |||
|11 | |||
|12 | |||
|13 | |||
|14 | |||
|15 | |||
|'''16''' | |||
|17 | |||
|18 | |||
|19 | |||
|... | |||
|31 | |||
|32 | |||
|33 | |||
|- | |||
| -400 | |||
| -270 | |||
| -260 | |||
| -250 | |||
| -240 | |||
| -230 | |||
| -220 | |||
| -210 | |||
| -200 | |||
| -190 | |||
| -180 | |||
| -170 | |||
| -160 | |||
| -90 | |||
| -84 | |||
| -76 | |||
|... | |||
| -6 | |||
|0 | |||
|6 | |||
|} | |||
* However, the pitch is capped to within +- 0x2AAA (in decimal: 10922) | |||
* '''TODO:''' I heard moving down then up can be faster then just the direct line. Explain big picture movements, what happens in a practical example. | |||
* In summary: | |||
# Joystick inputs affect (pitch,yaw) velocity. | |||
# Yaw velocity affects yaw, roll, and forward velocity. | |||
# Pitch affects forward velocity. | |||
# Forward velocity affects pitch. | |||
# Pitch velocity affects pitch. | |||
# x,y,z velocity is more or less directly exactly correspondent to forward velocity, pitch, and yaw. | |||
<hr> | |||
Here are some tables summarizing the <code>approach_s32</code>, <code>update_flying_pitch</code>, and <code>update_flying_yaw</code> functions. | Here are some tables summarizing the <code>approach_s32</code>, <code>update_flying_pitch</code>, and <code>update_flying_yaw</code> functions. | ||
{| class="wikitable" | {| class="wikitable" |
edits