summaryrefslogtreecommitdiff
path: root/src/overlays/actors
diff options
context:
space:
mode:
authorPrakxo <87568477+Prakxo@users.noreply.github.com>2024-09-27 19:26:30 +0200
committerGitHub <noreply@github.com>2024-09-27 10:26:30 -0700
commit8f359e10f09c51a45c7d45a7e6b91ead5fe05206 (patch)
treeb03731bed251363fc16cbcf58920af18843d88b4 /src/overlays/actors
parent5db5ae72018aaab568ecd9da5fb632c58db44683 (diff)
m_player audio and other_func functions (#218)
* m_player_sound * m_player_other_func * format
Diffstat (limited to 'src/overlays/actors')
-rw-r--r--src/overlays/actors/ovl_Bee/ac_bee.c2
-rw-r--r--src/overlays/actors/player_actor/m_player.c615
-rw-r--r--src/overlays/actors/player_actor/m_player.h79
3 files changed, 583 insertions, 113 deletions
diff --git a/src/overlays/actors/ovl_Bee/ac_bee.c b/src/overlays/actors/ovl_Bee/ac_bee.c
index 6f05e28..ff49593 100644
--- a/src/overlays/actors/ovl_Bee/ac_bee.c
+++ b/src/overlays/actors/ovl_Bee/ac_bee.c
@@ -165,7 +165,7 @@ void func_80A93EFC_jp(Bee* this, Game_Play* game_play) {
return;
}
}
- } else if ((func_800B1CBC_jp((Game_Play*)gamePT) == 0x5E) != 0) {
+ } else if ((mPlib_get_player_actor_main_index((Game_Play*)gamePT) == 0x5E) != 0) {
if (func_800B5718_jp() != 0) {
aBEE_setupAction(this, BEE_PROCESS_DISAPPEAR, game_play);
return;
diff --git a/src/overlays/actors/player_actor/m_player.c b/src/overlays/actors/player_actor/m_player.c
index a17917e..29cda2c 100644
--- a/src/overlays/actors/player_actor/m_player.c
+++ b/src/overlays/actors/player_actor/m_player.c
@@ -2,6 +2,15 @@
#include "m_player_lib.h"
#include "game.h"
#include "overlays/gamestates/ovl_play/m_play.h"
+#include "m_room_type.h"
+#include "audio.h"
+#include "m_actor_dlftbls.h"
+#include "m_field_info.h"
+#include "m_name_table.h"
+#include "m_scene_table.h"
+#include "m_debug.h"
+#include "69E2C0.h"
+#include "67E840.h"
extern ClObjPipe_Init Player_actor_OcInfoData_forStand;
#if 0
@@ -25,6 +34,32 @@ ClObjTris_Init Player_actor_pclobj_tris_data_forItem = { { OC1_TYPE_10 | OC1_TYP
#endif
s8 Player_actor_Get_ItemKind(Actor* actor, s32 kind);
+void Player_actor_request_camera2_main_simple_fishing(Actor* actor, Game* game);
+void Player_actor_request_camera2_main_simple_return(Actor* actor, Game* game);
+void Player_actor_request_camera2_main_normal(Game* game);
+void Player_actor_request_camera2_change_priority(Game* game);
+
+void Player_actor_cancel_request_change_proc_index_by_A_btn(Actor* actor);
+void Player_actor_request_main_change_from_submenu(Actor* actor, Game* game);
+void Player_actor_request_change_item(Game* game);
+void Player_actor_cancel_request_change_proc_index(Actor* actor);
+void Player_actor_change_proc_index(Actor* actor, Game* game);
+void Player_actor_Reset_excute_cancel_wade(Actor* actor);
+void Player_actor_Set_OldAngle(Actor* actor);
+void Player_actor_Culc_player_frame_counter(Actor* actor);
+
+void Player_actor_set_eye_PositionAndAngle(Actor* actor);
+void Player_actor_sound_SetStatus(Actor* actor);
+void Player_actor_Set_Indoor_Camera_Index(Actor* actor, Game* game);
+void Player_actor_check_forward(Actor* actor, Game* game);
+void Player_actor_check_little_shake_tree(Actor* actor, Game* game);
+void Player_actor_check_shake_tree_timer(Actor* actor);
+void Player_actor_check_pitfall(Actor* actor, Game* game);
+void Player_actor_set_ripple(Actor* actor, Game* game);
+
+void Player_actor_SetPosition_OBJtoLine_forItem(Actor* actor, Game* game);
+void Player_actor_SetFootMark_for_settle_main(Actor* actor, Game* game);
+s32 Player_actor_CheckScene_AbleOutItem(s32 sceneNo);
// m_player_controller
@@ -33,7 +68,7 @@ s32 Player_actor_CheckController_forPickup(Game* game) {
PlayerControllerData* data = mPlib_Get_controller_data_for_title_demo_p();
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
return !Player_ITEM_IS_VALID(kind) && (data->triggerButtonA != 0) && (data->buttonB != 0);
}
@@ -44,7 +79,7 @@ s32 Player_actor_CheckController_forPickup(Game* game) {
s32 Player_actor_CheckController_forAxe(Game* game) {
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
if (Player_ITEM_IS_AXE(kind)) {
if (mEv_CheckTitleDemo() > 0) {
@@ -59,7 +94,7 @@ s32 Player_actor_CheckController_forAxe(Game* game) {
s32 Player_actor_CheckController_forNet(Game* game) {
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
if (Player_ITEM_IS_NET(kind)) {
if (mEv_CheckTitleDemo() > 0) {
@@ -74,7 +109,7 @@ s32 Player_actor_CheckController_forNet(Game* game) {
s32 Player_actor_CheckController_forRod(Game* game) {
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
if (Player_ITEM_IS_ROD(kind)) {
if (mEv_CheckTitleDemo() > 0) {
@@ -89,7 +124,7 @@ s32 Player_actor_CheckController_forRod(Game* game) {
s32 Player_actor_CheckController_forScoop(Game* game) {
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
if (Player_ITEM_IS_SCOOP(kind)) {
if (mEv_CheckTitleDemo() > 0) {
@@ -104,7 +139,7 @@ s32 Player_actor_CheckController_forScoop(Game* game) {
s32 Player_actor_CheckController_forUmbrella(Game* game) {
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
if (Player_ITEM_IS_UMBRELLA(kind) != FALSE) {
if (mEv_CheckTitleDemo() > 0) {
@@ -119,9 +154,9 @@ s32 Player_actor_CheckController_forUmbrella(Game* game) {
int Player_actor_CheckController_forShake_tree(Game* game) {
Actor* actor = (Actor*)get_player_actor_withoutCheck((Game_Play*)game);
Player* player = (Player*)actor;
- s8 kind = Player_actor_Get_ItemKind(actor, player->unk_0CF0);
+ s8 kind = Player_actor_Get_ItemKind(actor, player->nowMainIndex);
- if (!Player_ITEM_KIND_CHECK(kind, 0, Player_ITEM_KIND_SCOOP) || Player_ITEM_IS_UMBRELLA(kind) != FALSE) {
+ if (!Player_ITEM_IS_VALID(kind) || Player_ITEM_IS_UMBRELLA(kind) != FALSE) {
if (mEv_CheckTitleDemo() > 0) {
PlayerControllerData* data = mPlib_Get_controller_data_for_title_demo_p();
return (data->triggerButtonA != 0) && (data->buttonB == 0);
@@ -327,11 +362,13 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B4EF4_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B4F04_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_SetPosition_OBJtoLine_forItem.s")
+// clang-format on
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B5150_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B525C_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_set_eye_PositionAndAngle.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B527C_jp.s")
@@ -385,7 +422,7 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B5B38_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B5B60_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_Set_OldAngle.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B5C58_jp.s")
@@ -427,7 +464,7 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B6360_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B638C_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_CheckScene_AbleOutItem.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B63B4_jp.s")
@@ -457,7 +494,9 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8204_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B828C_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_SetFootMark_for_settle_main.s")
+// clang-format on
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B83B4_jp.s")
@@ -479,7 +518,9 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8874_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B88D4_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_cancel_request_change_proc_index.s")
+// clang-format on
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8928_jp.s")
@@ -487,7 +528,9 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B89F8_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8B00_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_cancel_request_change_proc_index_by_A_btn.s")
+// clang-format on
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8B54_jp.s")
@@ -503,13 +546,21 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8EA8_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8F34_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_request_camera2_main_simple_fishing.s")
+// clang-format on
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8F90_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_request_camera2_main_simple_return.s")
+// clang-format on
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B8FD0_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_request_camera2_main_normal.s")
+// clang-format on
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B9008_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_request_camera2_change_priority.s")
+// clang-format on
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808B9028_jp.s")
@@ -549,9 +600,9 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BA1DC_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BA388_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_check_little_shake_tree.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BA75C_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_check_shake_tree_timer.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BA7BC_jp.s")
@@ -565,13 +616,13 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BAB34_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BAC20_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_check_pitfall.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BADFC_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BAE38_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BAF40_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_set_ripple.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BB098_jp.s")
@@ -591,9 +642,9 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BB650_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BB6A4_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_Culc_player_frame_counter.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BB6B8_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_Reset_excute_cancel_wade.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BB724_jp.s")
@@ -613,7 +664,7 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BBDE8_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BBE50_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_Set_Indoor_Camera_Index.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BBF38_jp.s")
@@ -629,155 +680,510 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC3A0_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC3D0_jp.s")
+// m_player_audio
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC494_jp.s")
+void Player_actor_sound_SetStatus(Actor* actor) {
+ Player* player = (Player*)actor;
+ u8 status;
+ f32 speed;
+ f32 frameControlSpeed;
+
+ status = player->nowMainIndex;
+ frameControlSpeed = player->skeletonInfo0.frameControl.speed;
+ speed = frameControlSpeed / 1.1999999f;
+
+ switch (player->nowMainIndex) {
+ case 42:
+ case 74:
+ case 8:
+ status = Player_WALK;
+ break;
+ case 9:
+ status = Player_RUN;
+ break;
+ case 10:
+ status = Player_DASH;
+ break;
+ default:
+ status = Player_WAIT;
+ break;
+ }
+
+ if (speed > 1.0f) {
+ speed = 1.0f;
+ } else if (speed < 0.0f) {
+ speed = 0.0f;
+ }
+ sAdo_PlayerStatusLevel(status, speed);
+}
+
+void Player_actor_set_sound_common1(xyz_t* pos, u16 id) {
+ sAdo_OngenTrgStart(id, pos);
+}
+
+void Player_actor_set_sound_common2(Actor* actor, u16 id) {
+ Player_actor_set_sound_common1(&actor->world.pos, id);
+}
+
+void Player_actor_sound_FootStep1(Actor* actor, u16 id) {
+ sAdo_PlyWalkSe(id, &actor->world.pos);
+}
+
+void Player_actor_sound_FootStep2(Actor* actor) {
+ s32 floorId;
+
+ floorId = common_data.floorIdx;
+ if (common_data.floorIdx >= 0) {
+ if (common_data.floorIdx < 0x49) {
+ sAdo_PlyWalkSeRoom(floorId, &actor->world.pos);
+ }
+ } else {
+ Player_actor_sound_FootStep1(actor, sAdo_Get_WalkLabel(actor->colCheck.colResult.unk5));
+ }
+}
+
+void Player_actor_sound_Tumble(Actor* actor) {
+ Player_actor_set_sound_common2(actor, sAdo_Get_KokeruLabel(actor->colCheck.colResult.unk5));
+}
+
+void Player_actor_sound_AMI_FURI(Actor* actor) {
+ Player* player = (Player*)actor;
+
+ Player_actor_set_sound_common1(&player->netPos, 0x5A);
+}
+
+void Player_actor_sound_AMI_HIT(Actor* actor) {
+ Player* player = (Player*)actor;
+
+ Player_actor_set_sound_common1(&player->netPos, 0x5C);
+}
+
+void Player_actor_sound_AMI_GET(Actor* actor) {
+ Player* player = (Player*)actor;
+
+ Player_actor_set_sound_common1(&player->netPos, 0x5D);
+}
+
+void Player_actor_sound_GASAGOSO(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x69);
+}
+
+void Player_actor_sound_AXE_FURI(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x5A);
+}
+
+void Player_actor_sound_AXE_HIT(Actor* actor, Game* game) {
+ Player* player = (Player*)actor;
+ UNUSED s32 pad;
+ UNUSED s32 pad2;
+ xyz_t pos;
+
+ if ((mPlib_get_player_actor_main_index((Game_Play*)game) == Player_INDEX_REFLECT_AXE) != FALSE) {
+
+ pos.x = player->mainIndexData.reflectAxe.axeCommon.target.x;
+ pos.z = player->mainIndexData.reflectAxe.axeCommon.target.z;
+ pos.y = actor->world.pos.y + 20.0f;
+
+ Player_actor_set_sound_common1(&pos, 0x41D);
+ }
+}
+
+void Player_actor_sound_AXE_CUT(Actor* actor, Game* game) {
+ Player* player = (Player*)actor;
+ UNUSED s32 pad;
+ UNUSED s32 pad2;
+ xyz_t pos;
+
+ if ((mPlib_get_player_actor_main_index((Game_Play*)game) == Player_INDEX_SWING_AXE) != FALSE) {
+
+ pos.x = player->mainIndexData.swingAxe.axeCommon.target.x;
+ pos.z = player->mainIndexData.swingAxe.axeCommon.target.z;
+ pos.y = actor->world.pos.y + 20.0f;
+
+ Player_actor_set_sound_common1(&pos, 0x41E);
+ }
+}
+
+void Player_actor_sound_SIT(Actor* actor, Game* game) {
+ if ((mPlib_get_player_actor_main_index((Game_Play*)game) == Player_INDEX_SITDOWN) != FALSE) {
+ Player* player = (Player*)actor;
+ s32 id = mRmTp_GetFtrActionSE(player->mainIndexData.sitdown.ftrIdx, mRmTp_CHAIR_ACTION_SIT);
+
+ if (id >= 0) {
+ Player_actor_set_sound_common2(actor, id);
+ }
+ }
+}
+
+void Player_actor_sound_STANDUP(Actor* actor, s32 ftrIdx) {
+ s32 id = mRmTp_GetFtrActionSE(ftrIdx, mRmTp_CHAIR_ACTION_STAND);
+
+ if (id >= 0) {
+ Player_actor_set_sound_common2(actor, id);
+ }
+}
+
+void Player_actor_sound_JUMP(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x42A);
+}
+
+void Player_actor_sound_LANDING(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x42B);
+}
+
+void Player_actor_sound_ITEM_GET(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x40);
+}
+
+void Player_actor_sound_BED_IN(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x415);
+}
+
+void Player_actor_sound_BED_NEGAERI(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x416);
+}
+
+void Player_actor_sound_BED_OUT(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x417);
+}
+
+void Player_actor_sound_ROD_STROKE(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x109);
+}
+
+void Player_actor_sound_ROD_STROKE_small(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x445);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC4C4_jp.s")
+void Player_actor_sound_ROD_BACK(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x10A);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC4F0_jp.s")
+void Player_actor_sound_scoop1(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x11E);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC520_jp.s")
+void Player_actor_sound_scoop_umeru(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x120);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC584_jp.s")
+void Player_actor_sound_scoop_hit(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x121);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC5C0_jp.s")
+void Player_actor_sound_scoop_shigemi(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x401);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC5E8_jp.s")
+void Player_actor_sound_ITEM_HORIDASHI(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x57);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC610_jp.s")
+void Player_actor_sound_slip(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x129);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC638_jp.s")
+void Player_actor_sound_tree_touch(xyz_t* pos) {
+ sAdo_OngenTrgStart(0x134, pos);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC658_jp.s")
+void Player_actor_sound_tree_yurasu(xyz_t* pos) {
+ sAdo_OngenTrgStart(0x135, pos);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC678_jp.s")
+void Player_actor_sound_kirikabu_scoop(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x148);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC6E0_jp.s")
+void Player_actor_sound_kirikabu_out(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x149);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC748_jp.s")
+void Player_actor_sound_coin_gasagoso(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x14A);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC798_jp.s")
+void Player_actor_sound_knock(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x14E);
+}
+void Player_actor_sound_araiiki(Actor* actor) {
+ s8 gender = common_data.privateInfo->gender;
+ u16 id = (gender == 0) ? 0x158 : 0x15A;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC7D4_jp.s")
+ Player_actor_set_sound_common2(actor, id);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC7F4_jp.s")
+void Player_actor_sound_zassou_nuku(xyz_t* pos) {
+ sAdo_OngenTrgStart(0x15F, pos);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC814_jp.s")
+void Player_actor_sound_hachi_sasareru(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x160);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC834_jp.s")
+void Player_actor_sound_wear(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x11C);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC854_jp.s")
+void Player_actor_sound_dai_ue_kakunou(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x430);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC874_jp.s")
+void Player_actor_sound_umbrella_rotate(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x432);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC894_jp.s")
+u8 Player_actor_sound_Get_bgm_num_forCompletePayment(void) {
+ switch (common_data.paymentType) {
+ case 1:
+ return 0x49;
+ default:
+ return 0x4A;
+ }
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC8B4_jp.s")
+void Player_actor_sound_camera_move1(void) {
+ sAdo_SysTrgStart(0x40D);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC8D4_jp.s")
+void Player_actor_sound_camera_move2(void) {
+ sAdo_SysTrgStart(0x40E);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC8F4_jp.s")
+void Player_actor_sound_karaburi(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x43A);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC914_jp.s")
+void Player_actor_sound_scoop_tree_hit(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x448);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC934_jp.s")
+void Player_actor_sound_scoop_item_hit(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x449);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC954_jp.s")
+void Player_actor_sound_axe_ball_hit(Actor* actor) {
+ Player_actor_set_sound_common2(actor, 0x449);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC974_jp.s")
+// m_player_other_func
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC994_jp.s")
+void Player_actor_ct_other_func1(UNUSED Actor* actor, Game* game) {
+ Game_Play* play = (Game_Play*)game;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC9B4_jp.s")
+ play->submenu.unk_E2 = TRUE;
+ actor->unk_0B4 = 1;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC9D8_jp.s")
+ Actor_info_make_actor(&play->actorInfo, play, ACTOR_FIELD_DRAW, actor->world.pos.x, actor->world.pos.y,
+ actor->world.pos.z, 0, 0, 0, -1, -1, -1, 0, -1, -1, -1);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BC9FC_jp.s")
+void Player_actor_setup_main_Wade_other_func1(UNUSED Actor* actor, Game* game) {
+ Game_Play* play = (Game_Play*)game;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCA1C_jp.s")
+ play->objectExchangeBank.unk1820 = 1;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCA3C_jp.s")
+void Player_actor_setup_main_Wade_snowball_other_func1(Actor* actor, Game* game) {
+ Player_actor_setup_main_Wade_other_func1(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCA5C_jp.s")
+void Player_actor_setup_main_Wade_other_func2(Actor* actor, Game* game) {
+ Player* player = (Player*)actor;
+ Game_Play* play = (Game_Play*)game;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCA7C_jp.s")
+ mFI_SetBearActor(play, player->mainIndexData.wade.endPos, TRUE);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCABC_jp.s")
+ common_data.unk_104AC = FALSE;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCAE0_jp.s")
+void Player_actor_setup_main_Wade_snowball_other_func2(Actor* actor, Game* game) {
+ Player_actor_setup_main_Wade_other_func2(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCB00_jp.s")
+void Player_actor_setup_main_Demo_wade_other_func2(Actor* actor, Game* game) {
+ Player* player = (Player*)actor;
+ Game_Play* play = (Game_Play*)game;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCB20_jp.s")
+ mFI_SetBearActor(play, player->mainIndexData.wade.endPos, TRUE);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCB40_jp.s")
+ common_data.unk_104AC = FALSE;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCB60_jp.s")
+void Player_actor_main_Wade_other_func1(UNUSED Actor* actor, UNUSED Game* game) {
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCB88_jp.s")
+void Player_actor_main_Sitdown_wait_other_func2(Actor* actor, UNUSED Game* game) {
+ if (common_data.clip.myRoomClip != NULL) {
+ common_data.clip.myRoomClip->unk_54(&actor->world.pos);
+ }
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCBA8_jp.s")
+void Player_actor_main_Relax_rod_other_func2(Actor* actor, Game* game) {
+ Player_actor_request_camera2_main_simple_fishing(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCBC8_jp.s")
+void Player_actor_main_Vib_rod_other_func2(Actor* actor, Game* game) {
+ Player_actor_request_camera2_main_simple_fishing(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCBE8_jp.s")
+void Player_actor_main_Collect_rod_other_func2(Actor* actor, Game* game) {
+ Player_actor_request_camera2_main_simple_return(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCC08_jp.s")
+void Player_actor_main_Fly_rod_other_func2(Actor* actor, Game* game) {
+ Player_actor_request_camera2_main_simple_return(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCC28_jp.s")
+void Player_actor_settle_main_Collect_rod_other_func2(UNUSED Actor* actor, Game* game) {
+ Player_actor_request_camera2_main_normal(game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCC48_jp.s")
+void Player_actor_settle_main_Fly_rod_other_func2(UNUSED Actor* actor, Game* game) {
+ Player_actor_request_camera2_change_priority(game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCCD8_jp.s")
+void Player_actor_set_nextgoto_info_type0(Actor* actor) {
+ Game_Play* play = (Game_Play*)gamePT;
+ Player* player = get_player_actor_withoutCheck(play);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCCEC_jp.s")
+ if (goto_other_scene(play, &common_data.structureExitDoorData, TRUE) != TRUE) {
+ mDemo_End(actor);
+ } else {
+ mBGMPsComp_make_ps_wipe(0x428A);
+ }
+ player->updateSceneBGMode = TRUE;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCD0C_jp.s")
+void Player_actor_set_nextgoto_info_type1(Actor* actor) {
+ Game_Play* play = (Game_Play*)gamePT;
+ Player* player = (Player*)actor;
+ s32 item = player->itemInFront;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCD64_jp.s")
+ if (goto_next_scene(play, item - DOOR_START, TRUE) != TRUE) {
+ mDemo_End(actor);
+ } else {
+ if (common_data.doorData.nextSceneId - 1 == SCENE_DEPART_2) {
+ mBGMForce_room_nonstop_start();
+ } else {
+ mBGMPsComp_make_ps_wipe(0x28A);
+ }
+ }
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCD84_jp.s")
+void Player_actor_check_nextgoto(Actor* actor, Game* game) {
+ Game_Play* play = (Game_Play*)game;
+ Player* player = (Player*)actor;
+ s32 door;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCDDC_jp.s")
+ s32 item = (u16)player->itemInFront;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCDEC_jp.s")
+ if (ACTOR_FGNAME_GET_F000((u16)player->itemInFront) == FGNAME_F000_4) {
+ if (mEv_CheckTitleDemo() <= 0 && play->unk_1EE3 == 0) {
+ door = item;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCE30_jp.s")
+ if (door >= EXIT_DOOR && door < EXIT_DOOR1) {
+ mDemo_Request(2, actor, Player_actor_set_nextgoto_info_type0);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCE50_jp.s")
+ if (player->updateSceneBGMode != FALSE) {
+ mBGMPsComp_scene_mode(0xE);
+ player->updateSceneBGMode = FALSE;
+ }
+ } else if (door >= DOOR0 && door < EXIT_DOOR) {
+ mDemo_Request(2, actor, Player_actor_set_nextgoto_info_type1);
+ }
+ }
+ }
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCE70_jp.s")
+void Player_actor_check_forward(Actor* actor, Game* game) {
+ s16 rot = actor->shape.rot.y;
+ xyz_t pos;
+ Player* player = (Player*)actor;
+ u16* item;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCE90_jp.s")
+ pos.x = actor->world.pos.x + 0.00061037019f * sins(rot);
+ pos.z = actor->world.pos.z + 0.00061037019f * coss(rot);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCEB0_jp.s")
+ item = mFI_GetUnitFG(pos);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCED4_jp.s")
+ player->forwardUtPos.x = pos.x;
+ player->forwardUtPos.z = pos.z;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCEF8_jp.s")
+ if (item != NULL) {
+ player->itemInFront = *item;
+ } else {
+ player->itemInFront = 0;
+ }
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCF68_jp.s")
+ Player_actor_check_nextgoto(actor, game);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BCFE4_jp.s")
+ if (chkTrigger(A_BUTTON)) {
+ player->pressedAButton = TRUE;
+ } else {
+ player->pressedAButton = FALSE;
+ }
+}
+
+void Player_actor_move_other_func1(Actor* actor, Game* game) {
+ Player_actor_cancel_request_change_proc_index_by_A_btn(actor);
+ Player_actor_request_main_change_from_submenu(actor, game);
+ Player_actor_request_change_item(game);
+ Player_actor_cancel_request_change_proc_index(actor);
+ Player_actor_change_proc_index(actor, game);
+ Player_actor_Reset_excute_cancel_wade(actor);
+ Player_actor_Set_OldAngle(actor);
+ Player_actor_Culc_player_frame_counter(actor);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD0B8_jp.s")
+void Player_actor_move_other_func2(Actor* actor, Game* game) {
+ Player* player = (Player*)actor;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD1A8_jp.s")
+ Player_actor_set_eye_PositionAndAngle(actor);
+ Player_actor_sound_SetStatus(actor);
+ Player_actor_Set_Indoor_Camera_Index(actor, game);
+ Player_actor_check_forward(actor, game);
+ mFI_SetPlayerWade(game);
+ Player_actor_check_little_shake_tree(actor, game);
+ Player_actor_check_shake_tree_timer(actor);
+ Player_actor_check_pitfall(actor, game);
+ Player_actor_set_ripple(actor, game);
+
+ PLAYERREG(87) = player->nowMainIndex;
+ PLAYERREG(88) = player->unk_0D04;
+ PLAYERREG(89) = actor->world.rot.y;
+ PLAYERREG(90) = actor->shape.rot.y;
+ PLAYERREG(91) = actor->world.pos.x;
+ PLAYERREG(92) = actor->world.pos.y;
+ PLAYERREG(93) = actor->world.pos.z;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD218_jp.s")
+void Player_actor_draw_other_func2(Actor* actor, Game* game) {
+ Player_actor_SetPosition_OBJtoLine_forItem(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD320_jp.s")
+void Player_actor_change_main_index_other_func1(UNUSED Actor* actor, UNUSED Game* game) {
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD340_jp.s")
+void Player_actor_change_main_index_other_func2(UNUSED Actor* actor, UNUSED Game* game) {
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD350_jp.s")
+void Player_actor_settle_main_other_func2(Actor* actor, Game* game) {
+ Player_actor_SetFootMark_for_settle_main(actor, game);
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD360_jp.s")
+void Player_actor_SetActorUki(Actor* actor, Game* game) {
+ Player* player = (Player*)actor;
+ Game_Play* play = (Game_Play*)game;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD380_jp.s")
+ if (Player_actor_CheckScene_AbleOutItem(common_data.save.sceneNo) != FALSE && player->fishingRodActor == NULL) {
+ player->fishingRodActor = Actor_info_name_search(&play->actorInfo, ACTOR_UKI, ACTOR_PART_4);
+ }
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD3D8_jp.s")
+void Player_actor_Item_main_other_func1(Actor* actor, Game* game) {
+ Player_actor_SetActorUki(actor, game);
+}
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808BD3F8_jp.s")
@@ -3063,15 +3469,16 @@ f32 Player_actor_GetController_old_recognize_percentR() {
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_dt.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808DD874_jp.s")
+// clang-format off
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_request_main_change_from_submenu.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808DD8F0_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_request_change_item.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808DD9B4_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808DDA18_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/func_808DDB34_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_change_proc_index.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/player_actor/m_player/Player_actor_move.s")
diff --git a/src/overlays/actors/player_actor/m_player.h b/src/overlays/actors/player_actor/m_player.h
index 43fe690..1ce84a7 100644
--- a/src/overlays/actors/player_actor/m_player.h
+++ b/src/overlays/actors/player_actor/m_player.h
@@ -6,11 +6,25 @@
#include "m_collision_obj.h"
#include "m_controller.h"
#include "unk.h"
+#include "c_keyframe.h"
struct Game;
struct Game_Play;
struct Player;
+typedef enum Player_StatusLevel {
+ Player_WAIT,
+ Player_WALK,
+ Player_RUN,
+ Player_DASH
+} Player_StatusLevel;
+
+typedef enum Player_MainIndex {
+ Player_INDEX_SITDOWN = 0x22,
+ Player_INDEX_SWING_AXE = 0x25,
+ Player_INDEX_REFLECT_AXE = 0x27,
+} Player_MainIndex;
+
typedef enum Player_ItemKind {
Player_ITEM_KIND_START,
Player_ITEM_KIND_AXE = Player_ITEM_KIND_START,
@@ -69,6 +83,46 @@ typedef struct PlayerControllerData {
/* 0x3C */ u16 equippedItem;
} PlayerControllerData; // size = 0x40;
+typedef struct Player_MainWade {
+ s32 dir;
+ xyz_t startPos;
+ xyz_t endPos;
+ f32 timer;
+} Player_MainWade;
+
+typedef struct Player_MainSitdown {
+ s32 ftrIdx;
+} Player_MainSitdown;
+
+typedef struct Player_MainCommonAxe {
+ /* 0x00 */ xyz_t target;
+ /* 0x0C */ u16 item;
+ /* 0x0E */ u16 damage;
+} Player_MainCommonAxe;
+
+typedef struct Player_MainSwingAxe {
+ /* 0x00 */ Player_MainCommonAxe axeCommon;
+ /* 0x10 */ s32 treeUtX;
+ /* 0x14 */ s32 treeUtZ;
+ /* 0x18 */ s32 beeFlag;
+ /* 0x1C */ s16 beeAngle;
+ /* 0x20 */ s32 beeCounter;
+} Player_MainSwingAxe;
+
+typedef struct Player_MainReflectAxe {
+ /* 0x00 */ Player_MainCommonAxe axeCommon;
+ /* 0x10 */ Actor* reflectActor;
+} Player_MainReflectAxe;
+
+
+typedef union Player_MainIndexData {
+ Player_MainWade wade;
+ Player_MainSitdown sitdown;
+ Player_MainSwingAxe swingAxe;
+ Player_MainReflectAxe reflectAxe;
+ u8 forceAlignment[72];
+} Player_MainIndexData;
+
typedef void (*PlayerUnk1230Func)(struct Player*, struct Game_Play*, Actor*, s32, xyz_t*, f32);
typedef f32 (*PlayerUnk1234Func)(struct Player*, struct Game_Play*);
typedef void (*PlayerUnk1238Func)(struct Player*, struct Game_Play*, Actor*, s32);
@@ -76,14 +130,17 @@ typedef s32 (*SetMgrGetEndPosProc)(struct Game*, xyz_t*);
typedef struct Player {
/* 0x0000 */ Actor actor;
- /* 0x0174 */ UNK_TYPE1 unk_0174[0xB7C];
- /* 0x0CF0*/ s32 unk_0CF0;
- /* 0x0CF4*/ s32 unk_0CF4;
+ /* 0x0174 */ SkeletonInfoR skeletonInfo0;
+ /* 0x01E4 */ UNK_TYPE1 unk_01E4[0xB0C];
+ /* 0x0CF0*/ s32 nowMainIndex;
+ /* 0x0CF4*/ s32 unk_0CF4;
/* 0x0CF8 */ UNK_TYPE1 unk_0CF8[0x8];
/* 0x0D00 */ s32 unk_0D00;
/* 0x0D04 */ s32 unk_0D04;
/* 0x0D08 */ s32 unk_0D08;
- /* 0x0D0C */ UNK_TYPE1 unk_0D0C[0xA0];
+ /* 0x0D0C */ UNK_TYPE1 unk_0D0C[0x4];
+ /* 0x0D10 */ Player_MainIndexData mainIndexData;
+ /* 0x0D58 */ UNK_TYPE1 unk_0D58[0x54];
/* 0x0DAC */ UNK_TYPE unk_0DAC;
/* 0x0DB0 */ UNK_TYPE unk_0DB0;
/* 0x0DB4 */ UNK_TYPE1 unk_0DB4[0x8];
@@ -91,7 +148,11 @@ typedef struct Player {
/* 0x0DC4 */ UNK_TYPE1 unk_0DC4[0x18];
/* 0x0DDC */ UNK_TYPE unk_0DDC[2];
/* 0x0DE4 */ UNK_TYPE unk_0DE4[2];
- /* 0x0DEC */ UNK_TYPE1 unk_0DEC[0x160];
+ /* 0x0DEC */ UNK_TYPE1 unk_0DEC[0x44];
+ /* 0x0E30 */ xyz_t netPos;
+ /* 0x0E3C */ UNK_TYPE1 unk_0E3C[0xEC];
+ /* 0x0F28 */ Actor* fishingRodActor;
+ /* 0x0F2C */ UNK_TYPE1 unk_0F2C[0x20];
/* 0x0F4C */ ClObjTris colliderTris1;
/* 0x0F60 */ UNK_TYPE1 unk_0F60[0x44];
/* 0x0FA4 */ ClObjTris colliderTris2;
@@ -104,11 +165,13 @@ typedef struct Player {
/* 0x123C */ UNK_TYPE1 unk_123C[0x8];
/* 0x1244 */ SetMgrGetEndPosProc getEndPos;
/* 0x1248 */ UNK_TYPE1 unk_1248[0x70];
- /* 0x12B8 */ UNK_TYPE unk_12B8;
+ /* 0x12B8 */ s32 pressedAButton;
/* 0x12BC */ s32 unk_12BC;
- /* 0x12C0 */ u16 unk_12C0;
+ /* 0x12C0 */ u16 itemInFront;
/* 0x12C2 */ UNK_TYPE1 unk_12C2[0x2];
- /* 0x12C4 */ UNK_TYPE1 unk_12C4[0x14];
+ /* 0x12C4 */ xyz_t forwardUtPos;
+ /* 0x12D0 */ s8 updateSceneBGMode;
+ /* 0x12D1 */ UNK_TYPE1 unk_12D4[0x7];
} Player; // size = 0x12D8
void Player_actor_ct(Actor* thisx, struct Game_Play* game_play);