2020-08-04 08:49:11 +02:00
|
|
|
#include "common.h"
|
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E26B0);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E26C4);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-08-20 20:43:45 +02:00
|
|
|
void set_action_state(s32 actionState);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-08-20 20:26:34 +02:00
|
|
|
void move_player(s16 duration, f32 heading, f32 speed) {
|
|
|
|
PlayerStatus* player_status = &gPlayerStatus;
|
|
|
|
|
|
|
|
player_status->flags = player_status->flags | 0x4000;
|
|
|
|
player_status->heading = heading;
|
|
|
|
player_status->moveFrames = duration;
|
|
|
|
player_status->currentSpeed = speed;
|
|
|
|
|
|
|
|
if (!(player_status->animFlags & 0x00400000)) {
|
|
|
|
set_action_state(speed > player_status->walkSpeed ? ActionState_RUN : ActionState_WALK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", collision_main_above);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E29C8);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E2BB0);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", update_fall_state);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E2F60);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", gravity_use_fall_parms);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E3100);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E315C);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", phys_player_land);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", integrate_gravity);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E34D8);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E3514);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", collision_main_lateral);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", collision_check_player_intersecting_world);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4404);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4508);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E45E0);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E46C8);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4744);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4AD8);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4B40);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4BB8);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E4F10);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", check_input_midair_jump);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", get_current_partner_id);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5098);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5150);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5174);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E52F8);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5348);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E546C);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", save_ground_pos);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5520);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5530);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E58F0);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5938);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E59A0);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5A2C);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E5C78);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-08-20 20:43:45 +02:00
|
|
|
void set_action_state(s32 actionState) {
|
|
|
|
PlayerStatus* player_status = &gPlayerStatus;
|
|
|
|
PlayerData* player_data = &gPlayerData;
|
|
|
|
UNK_TYPE* unknown_struct = &D_8010F250;
|
|
|
|
|
|
|
|
if (player_status->flags & 0x200) {
|
2020-09-07 15:32:18 +02:00
|
|
|
player_status->flags &= ~0x200;
|
2020-09-24 05:16:13 +02:00
|
|
|
enable_player_input();
|
2020-08-20 20:43:45 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (player_status->animFlags & 0x4000) {
|
2020-09-08 13:21:15 +02:00
|
|
|
if (actionState < ActionState_CONVERSATION) {
|
|
|
|
if (actionState >= 0) {
|
|
|
|
player_status->prevActionState = player_status->actionState;
|
|
|
|
player_status->actionState = actionState;
|
|
|
|
player_status->flags |= 0x80000000;
|
|
|
|
}
|
2020-08-20 20:43:45 +02:00
|
|
|
}
|
2020-09-08 13:21:15 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (actionState == ActionState_HIT_HAZARD || actionState == ActionState_HIT_LAVA) {
|
|
|
|
u8 partner;
|
|
|
|
|
2020-08-20 20:43:45 +02:00
|
|
|
if (player_status->unk_BF == 3) {
|
|
|
|
actionState = ActionState_HIT_HAZARD;
|
|
|
|
}
|
2020-09-08 13:21:15 +02:00
|
|
|
|
|
|
|
// Whilst Lakilester, Bow, or Parakarry's ability is active, hazards have no effect.
|
|
|
|
partner = player_data->currentPartner;
|
|
|
|
if ((partner - 7) < 2u || (s8)partner == PartnerId_PARAKARRY) {
|
|
|
|
if (D_8010EBB0) {
|
|
|
|
player_status->animFlags |= 0x4;
|
|
|
|
player_status->flags |= 0x800;
|
|
|
|
return;
|
2020-08-20 20:43:45 +02:00
|
|
|
}
|
|
|
|
}
|
2020-09-08 13:21:15 +02:00
|
|
|
}
|
2020-08-20 20:43:45 +02:00
|
|
|
|
2020-09-08 13:21:15 +02:00
|
|
|
if (actionState == ActionState_SLIDING) {
|
|
|
|
player_status->flags |= 0x10;
|
|
|
|
player_status->moveFrames = 0;
|
|
|
|
player_status->flags &= ~0x4000;
|
|
|
|
}
|
|
|
|
|
|
|
|
player_status->prevActionState = player_status->actionState;
|
|
|
|
if (actionState == ActionState_USE_TWEESTER) {
|
2020-08-20 20:43:45 +02:00
|
|
|
player_status->prevActionState = ActionState_IDLE;
|
2020-09-08 13:21:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (actionState == ActionState_ENEMY_FIRST_STRIKE) {
|
|
|
|
player_status->animFlags |= 4;
|
|
|
|
}
|
|
|
|
player_status->actionState = actionState;
|
|
|
|
player_status->flags |= 0x80000000;
|
|
|
|
|
|
|
|
if (player_status->actionState == ActionState_SPIN) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
player_status->flags &= 0xFFFDFFFF;
|
|
|
|
player_status->animFlags &= 0xFFFEFFFF;
|
|
|
|
|
|
|
|
if (unknown_struct[0xC]) {
|
|
|
|
stop_sound(unknown_struct[0xC]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (player_status->unk_D8) {
|
2020-09-08 13:24:16 +02:00
|
|
|
player_status->unk_D8[3][9] = 0xA;
|
2020-09-08 13:21:15 +02:00
|
|
|
player_status->unk_D8 = NULL;
|
2020-08-20 20:43:45 +02:00
|
|
|
}
|
|
|
|
}
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", update_locomotion_state);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", start_falling);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", start_bounce_a);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", start_bounce_b);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-08-20 21:15:06 +02:00
|
|
|
s32 check_input_hammer(void) {
|
|
|
|
PlayerStatus* player_status = &gPlayerStatus;
|
|
|
|
PlayerData* player_data = &gPlayerData;
|
|
|
|
|
|
|
|
if (player_status->pressedButtons & Buttons_B) {
|
|
|
|
if (!(player_status->flags & 4)) {
|
|
|
|
if (D_8010EBB0 != 1 || player_data->currentPartner != PartnerId_WATT) {
|
|
|
|
if (player_data->hammerLevel != -1) {
|
|
|
|
set_action_state(ActionState_HAMMER);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
}
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", check_input_jump);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", check_input_spin);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E636C);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E63A4);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E6428);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E6500);
|
2020-08-04 08:49:11 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", make_disguise_npc);
|
2020-09-24 05:16:13 +02:00
|
|
|
|
2020-09-25 23:18:09 +02:00
|
|
|
INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E66C4);
|