Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
7B440.c File Reference

Go to the source code of this file.

Functions

void update_player_input (void)
 
void reset_player_status (void)
 
void player_input_to_move_vector (f32 *outAngle, f32 *outMagnitude)
 
void game_input_to_move_vector (f32 *outAngle, f32 *outMagnitude)
 
void calculate_camera_yinterp_rate (void)
 

Variables

s32 PeachDisguiseNpcIndex
 
EntityTweesterTouchingPartner
 
EntityTweesterTouchingPlayer
 
s32 PrevPlayerDirection
 
s32 PlayerRunStateTime
 
f32 PlayerNormalYaw
 
f32 PlayerNormalPitch
 
PlayerSpinState gPlayerSpinState
 
BSS s32 PlayerYInterpUpdateDelay
 
f32 DefaultWalkSpeed = 2.0f
 
f32 DefaultRunSpeed = 4.0f
 
f32 DefaultJumpSpeed = 32.0f
 
s32 PeachDisguiseReapplyDelay
 

Function Documentation

◆ update_player_input()

void update_player_input ( void )

Definition at line 21 of file 7B440.c.

21 {
23 s32 inputBufPos = playerStatus->inputBufPos;
24
25 playerStatus->stickAxis[0] = gGameStatusPtr->stickX[0];
26 playerStatus->stickAxis[1] = gGameStatusPtr->stickY[0];
27 playerStatus->curButtons = gGameStatusPtr->curButtons[0];
28 playerStatus->pressedButtons = gGameStatusPtr->pressedButtons[0];
29 playerStatus->heldButtons = gGameStatusPtr->heldButtons[0];
30
31 inputBufPos++;
32 if (inputBufPos >= 10) {
33 inputBufPos = 0;
34 }
35
36 playerStatus->stickXBuffer[inputBufPos] = playerStatus->stickAxis[0];
37 playerStatus->stickYBuffer[inputBufPos] = playerStatus->stickAxis[1];
38 playerStatus->curButtonsBuffer[inputBufPos] = playerStatus->curButtons;
39 playerStatus->pressedButtonsBuffer[inputBufPos] = playerStatus->pressedButtons;
40 playerStatus->heldButtonsBuffer[inputBufPos] = playerStatus->heldButtons;
41 playerStatus->inputBufPos = inputBufPos;
42
44 playerStatus->stickAxis[0] = 0;
45 playerStatus->stickAxis[1] = 0;
46 playerStatus->curButtons = 0;
47 playerStatus->pressedButtons = 0;
48 playerStatus->heldButtons = 0;
49 }
50
51 if (playerStatus->animFlags & PA_FLAG_FORCE_USE_PARTNER) {
53 playerStatus->pressedButtons |= 4;
54 }
55}
BSS s32 PopupMenu_SelectedIndex
u32 pressedButtons[4]
@ PS_FLAG_NO_STATIC_COLLISION
Definition enums.h:3051
@ PS_FLAG_INPUT_DISABLED
Definition enums.h:3052
@ PA_FLAG_FORCE_USE_PARTNER
triggers partner use when set
Definition enums.h:3094
@ PA_FLAG_PARTNER_USAGE_FORCED
Definition enums.h:3115
GameStatus * gGameStatusPtr
Definition main_loop.c:31
PlayerStatus gPlayerStatus
Definition 77480.c:38

Referenced by update_player().

◆ reset_player_status()

void reset_player_status ( void )

Definition at line 57 of file 7B440.c.

57 {
60
70 D_800F7B44 = 0;
72 PlayerNormalPitch = 0.0f;
73 playerStatus->availableDisguiseType = 1;
75
76 playerStatus->curAlpha = 255;
77 playerStatus->prevAlpha = 255;
80
82 playerStatus->colliderHeight = 55;
83 playerStatus->colliderDiameter = 38;
85
89 }
90 } else {
91 playerStatus->colliderHeight = 37;
92 playerStatus->colliderDiameter = 26;
94 }
95
96 playerStatus->walkSpeed = DefaultWalkSpeed;
97 playerStatus->runSpeed = DefaultRunSpeed;
98 playerStatus->maxJumpSpeed = DefaultJumpSpeed;
99
101
102 playerStatus->curSpeed = 0.0f;
103 playerStatus->targetYaw = 0.0f;
104 playerStatus->overlapPushAmount = 0.0f;
105 playerStatus->overlapPushYaw = 0.0f;
106 playerStatus->anim = 0;
107 playerStatus->timeInAir = 0;
108 playerStatus->pos.x = 0.0f;
109 playerStatus->pos.y = 0.0f;
110 playerStatus->pos.z = 0.0f;
111 playerStatus->curYaw = 0.0f;
112 playerStatus->flipYaw[CAM_DEFAULT] = 0.0f;
113 playerStatus->flipYaw[CAM_BATTLE] = 0.0f;
114 playerStatus->flipYaw[CAM_TATTLE] = 0.0f;
115 playerStatus->flipYaw[CAM_HUD] = 0.0f;
116
117 ASSERT_MSG(gGameStatusPtr->areaID < ARRAY_COUNT(gAreas) - 1, "Invalid area ID %d", gGameStatusPtr->areaID);
119 ASSERT_MSG(gGameStatusPtr->mapID < area->mapCount, "Invalid map ID %d in %s", gGameStatusPtr->mapID, area->id);
120 mapSettings = area->maps[gGameStatusPtr->mapID].settings;
121
122 if (mapSettings->entryList != NULL) {
123 if (gGameStatusPtr->entryID < mapSettings->entryCount) {
124 playerStatus->pos.x = (*mapSettings->entryList)[gGameStatusPtr->entryID].x;
125 playerStatus->pos.y = (*mapSettings->entryList)[gGameStatusPtr->entryID].y;
126 playerStatus->pos.z = (*mapSettings->entryList)[gGameStatusPtr->entryID].z;
127 playerStatus->curYaw = (*mapSettings->entryList)[gGameStatusPtr->entryID].yaw;
128 }
129 }
130
134
137}
s32 PeachDisguiseReapplyDelay
Definition 7E9D0.c:22
Entity * TweesterTouchingPartner
Definition 7B440.c:4
s32 PrevPlayerDirection
Definition 7B440.c:6
f32 PlayerNormalPitch
Definition 7B440.c:9
PlayerSpinState gPlayerSpinState
Definition 7B440.c:10
f32 DefaultWalkSpeed
Definition 7B440.c:15
f32 PlayerNormalYaw
Definition 7B440.c:8
f32 DefaultJumpSpeed
Definition 7B440.c:17
s32 PlayerRunStateTime
Definition 7B440.c:7
f32 DefaultRunSpeed
Definition 7B440.c:16
s32 PeachDisguiseNpcIndex
Definition 7B440.c:3
#define mem_clear
@ PEACH_FLAG_DISGUISED
Definition enums.h:2489
@ PEACH_FLAG_IS_PEACH
Definition enums.h:2488
@ PA_FLAG_USING_PEACH_PHYSICS
Definition enums.h:3103
@ RENDER_MODE_ALPHATEST
Definition enums.h:3276
@ PEACH_BAKING_NONE
Definition enums.h:2496
@ ACTION_STATE_IDLE
Definition enums.h:2426
@ CAM_TATTLE
Definition enums.h:1802
@ CAM_DEFAULT
Definition enums.h:1800
@ CAM_HUD
Definition enums.h:1803
@ CAM_BATTLE
Definition enums.h:1801
void phys_reset_spin_history(void)
Definition 7E9D0.c:95
void set_action_state(s32 actionState)
Definition 7E9D0.c:209
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define ASSERT_MSG(condition, msg, args...)
Definition macros.h:66
AreaConfig gAreas[29]
Zero-terminated.
Definition world.c:867
Fields other than main, entryList, entryCount, background, and tattle are initialised when the map lo...
Definition map.h:18
Vec3f targetPos
s32 D_800F7B44
Definition 7E9D0.c:32
void(* TalkNotificationCallback)(void)
Definition 77480.c:34
Camera gCameras[4]
Definition cam_main.c:16
s32 PrevPlayerCamRelativeYaw
Definition 7E9D0.c:31
void(* PulseStoneNotificationCallback)(void)
Definition 77480.c:33
void(* InteractNotificationCallback)(void)
Definition 77480.c:35

Referenced by player_reset_data().

◆ player_input_to_move_vector()

void player_input_to_move_vector ( f32 * outAngle,
f32 * outMagnitude )

Definition at line 139 of file 7B440.c.

139 {
142 f32 stickAxisY = -playerStatus->stickAxis[1];
143 f32 maxRadius = 70.0f;
145 f32 angle;
146
147 magnitude = dist2D(0.0f, 0.0f, stickAxisX, stickAxisY);
148 if (magnitude >= maxRadius) {
149 magnitude = maxRadius;
150 }
151
152 angle = clamp_angle(atan2(0.0f, 0.0f, stickAxisX, stickAxisY) + gCameras[CAM_DEFAULT].curYaw);
153 if (magnitude == 0.0f) {
154 angle = playerStatus->targetYaw;
155 }
156
157 *outAngle = angle;
159}
#define clamp_angle
#define atan2
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
Definition 43F0.c:668

Referenced by action_update_idle(), action_update_idle_peach(), action_update_land(), action_update_peach_land(), action_update_peach_step_down_land(), action_update_pushing_block(), action_update_run(), action_update_spin(), action_update_step_down_land(), action_update_walk(), collision_main_above(), collision_main_lateral(), and phys_player_land().

◆ game_input_to_move_vector()

void game_input_to_move_vector ( f32 * outAngle,
f32 * outMagnitude )

Definition at line 161 of file 7B440.c.

161 {
162 f32 stickX = gGameStatusPtr->stickX[0];
163 f32 stickY = -gGameStatusPtr->stickY[0];
164 f32 maxRadius = 70.0f;
166 f32 angle;
167
168 magnitude = dist2D(0.0f, 0.0f, stickX, stickY);
169 if (magnitude >= maxRadius) {
170 magnitude = maxRadius;
171 }
172
173 angle = clamp_angle(atan2(0.0f, 0.0f, stickX, stickY) + gCameras[CAM_DEFAULT].curYaw);
174 if (magnitude == 0.0f) {
175 angle = gPlayerStatus.targetYaw;
176 }
177
178 *outAngle = angle;
180}

Referenced by action_update_use_spinning_flower().

◆ calculate_camera_yinterp_rate()

void calculate_camera_yinterp_rate ( void )

Definition at line 182 of file 7B440.c.

182 {
184 f32 x = shadow->rot.x + 180.0;
185 f32 z = shadow->rot.z + 180.0;
187 f32 rate;
188
189 if (x != 0.0f || z != 0.0f) {
190 switch (gPlayerStatus.actionState) {
193 rate = 32.0f;
194 camera->yinterpRate = rate;
195 break;
197 case ACTION_STATE_RUN:
198 if (camera->targetScreenCoords.y < 130) {
199 camera->yinterpRate = 3.0f;
200 break;
201 }
202 rate = 3.0f;
203 if (PlayerYInterpUpdateDelay++ <= 10) {
204 return;
205 }
207 camera->yinterpRate -= 2.0f;
208 if (camera->yinterpRate < rate) {
209 camera->yinterpRate = rate;
210 }
211 break;
213 rate = 3.0f;
214 camera->yinterpRate = rate;
215 break;
216 default:
217 rate = 3.0f;
219 camera->yinterpRate -= 2.0f;
220 if (camera->yinterpRate < rate) {
221 camera->yinterpRate = rate;
222 }
223 break;
224 }
225 } else {
226 switch (gPlayerStatus.actionState) {
228 case ACTION_STATE_RUN:
231 rate = 7.2f;
232 break;
233 default:
234 rate = 24.0f;
235 break;
236 }
237
238 camera->yinterpRate = rate;
239 }
240}
BSS s32 PlayerYInterpUpdateDelay
Definition 7B440.c:12
@ ACTION_STATE_JUMP
Definition enums.h:2430
@ ACTION_STATE_FALLING
Definition enums.h:2435
@ ACTION_STATE_SLIDING
Definition enums.h:2445
@ ACTION_STATE_WALK
Definition enums.h:2427
@ ACTION_STATE_RUN
Definition enums.h:2428
Shadow * get_shadow_by_index(s32 index)
Definition entity.c:534
f32 yinterpRate

Referenced by phys_peach_update(), and phys_update_action_state().

Variable Documentation

◆ PeachDisguiseNpcIndex

◆ TweesterTouchingPartner

◆ TweesterTouchingPlayer

Entity* TweesterTouchingPlayer

Definition at line 5 of file 7B440.c.

Referenced by action_update_use_tweester(), and entity_Tweester_idle().

◆ PrevPlayerDirection

s32 PrevPlayerDirection

Definition at line 6 of file 7B440.c.

Referenced by action_update_parasol(), player_update_sprite(), and reset_player_status().

◆ PlayerRunStateTime

s32 PlayerRunStateTime

Definition at line 7 of file 7B440.c.

Referenced by action_update_run(), and reset_player_status().

◆ PlayerNormalYaw

f32 PlayerNormalYaw

Definition at line 8 of file 7B440.c.

Referenced by action_update_state_23(), player_raycast_down(), and reset_player_status().

◆ PlayerNormalPitch

f32 PlayerNormalPitch

Definition at line 9 of file 7B440.c.

Referenced by action_update_state_23(), player_raycast_down(), and reset_player_status().

◆ gPlayerSpinState

◆ PlayerYInterpUpdateDelay

BSS s32 PlayerYInterpUpdateDelay

Definition at line 12 of file 7B440.c.

Referenced by calculate_camera_yinterp_rate().

◆ DefaultWalkSpeed

f32 DefaultWalkSpeed = 2.0f

Definition at line 15 of file 7B440.c.

Referenced by reset_player_status().

◆ DefaultRunSpeed

f32 DefaultRunSpeed = 4.0f

Definition at line 16 of file 7B440.c.

Referenced by reset_player_status().

◆ DefaultJumpSpeed

f32 DefaultJumpSpeed = 32.0f

Definition at line 17 of file 7B440.c.

Referenced by reset_player_status().

◆ PeachDisguiseReapplyDelay

s32 PeachDisguiseReapplyDelay
extern

Definition at line 22 of file 7E9D0.c.

Referenced by peach_check_for_parasol_input(), and reset_player_status().