diff options
| author | Prakxo <87568477+Prakxo@users.noreply.github.com> | 2024-09-27 19:26:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-27 10:26:30 -0700 |
| commit | 8f359e10f09c51a45c7d45a7e6b91ead5fe05206 (patch) | |
| tree | b03731bed251363fc16cbcf58920af18843d88b4 /src/overlays/actors | |
| parent | 5db5ae72018aaab568ecd9da5fb632c58db44683 (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.c | 2 | ||||
| -rw-r--r-- | src/overlays/actors/player_actor/m_player.c | 615 | ||||
| -rw-r--r-- | src/overlays/actors/player_actor/m_player.h | 79 |
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); |
