From ebc6ebf232de3250a5a365690a5644d35955bf71 Mon Sep 17 00:00:00 2001 From: fig02 Date: Thu, 5 Oct 2023 10:22:40 -0400 Subject: [PATCH] Player Docs: Initial AnimSfx stuff (#1556) * initial animsfx docs * review * extra space --- .../actors/ovl_player_actor/z_player.c | 427 ++++++++++-------- 1 file changed, 236 insertions(+), 191 deletions(-) diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 6eedae7a5f..0debb6cd74 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -74,10 +74,29 @@ typedef struct { /* 0x0C */ s16 yaw; } SpecialRespawnInfo; // size = 0x10 +typedef enum { + /* 1 */ ANIMSFX_TYPE_1 = 1, + /* 2 */ ANIMSFX_TYPE_2, + /* 3 */ ANIMSFX_TYPE_3, + /* 4 */ ANIMSFX_TYPE_4, + /* 5 */ ANIMSFX_TYPE_5, + /* 6 */ ANIMSFX_TYPE_6, + /* 7 */ ANIMSFX_TYPE_7, + /* 8 */ ANIMSFX_TYPE_8, + /* 9 */ ANIMSFX_TYPE_9 +} AnimSfxType; + +#define ANIMSFX_SHIFT_TYPE(type) ((type) << 11) + +#define ANIMSFX_DATA(type, frame) ((ANIMSFX_SHIFT_TYPE(type) | ((frame)&0x7FF))) + +#define ANIMSFX_GET_TYPE(data) ((data)&0x7800) +#define ANIMSFX_GET_FRAME(data) ((data)&0x7FF) + typedef struct { /* 0x00 */ u16 sfxId; - /* 0x02 */ s16 field; -} struct_80832924; // size = 0x04 + /* 0x02 */ s16 data; +} AnimSfxEntry; // size = 0x04 typedef struct { /* 0x00 */ u16 unk_00; @@ -1099,54 +1118,57 @@ static LinkAnimationHeader* D_80853D7C[][2] = { { &gPlayerAnim_link_wait_itemD2_20f, &gPlayerAnim_link_wait_itemD2_20f } }; -static struct_80832924 D_80853DEC[] = { - { NA_SE_VO_LI_SNEEZE, -0x2008 }, +static AnimSfxEntry D_80853DEC[] = { + { NA_SE_VO_LI_SNEEZE, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 8) }, }; -static struct_80832924 D_80853DF0[] = { - { NA_SE_VO_LI_SWEAT, -0x2012 }, +static AnimSfxEntry D_80853DF0[] = { + { NA_SE_VO_LI_SWEAT, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 18) }, }; -static struct_80832924 D_80853DF4[] = { - { NA_SE_VO_LI_BREATH_REST, -0x200D }, +static AnimSfxEntry D_80853DF4[] = { + { NA_SE_VO_LI_BREATH_REST, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 13) }, }; -static struct_80832924 D_80853DF8[] = { - { NA_SE_VO_LI_BREATH_REST, -0x200A }, +static AnimSfxEntry D_80853DF8[] = { + { NA_SE_VO_LI_BREATH_REST, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 10) }, }; -static struct_80832924 D_80853DFC[] = { - { NA_SE_PL_CALM_HIT, 0x82C }, { NA_SE_PL_CALM_HIT, 0x830 }, { NA_SE_PL_CALM_HIT, 0x834 }, - { NA_SE_PL_CALM_HIT, 0x838 }, { NA_SE_PL_CALM_HIT, -0x83C }, +static AnimSfxEntry D_80853DFC[] = { + { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 44) }, { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 48) }, + { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 52) }, { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 56) }, + { NA_SE_PL_CALM_HIT, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 60) }, }; -static struct_80832924 D_80853E10[] = { - { 0, 0x4019 }, { 0, 0x401E }, { 0, 0x402C }, { 0, 0x4030 }, { 0, 0x4034 }, { 0, -0x4038 }, +static AnimSfxEntry D_80853E10[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 25) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 30) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 44) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 48) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 52) }, { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_8, 56) }, }; -static struct_80832924 D_80853E28[] = { - { NA_SE_IT_SHIELD_POSTURE, 0x810 }, - { NA_SE_IT_SHIELD_POSTURE, 0x814 }, - { NA_SE_IT_SHIELD_POSTURE, -0x846 }, +static AnimSfxEntry D_80853E28[] = { + { NA_SE_IT_SHIELD_POSTURE, ANIMSFX_DATA(ANIMSFX_TYPE_1, 16) }, + { NA_SE_IT_SHIELD_POSTURE, ANIMSFX_DATA(ANIMSFX_TYPE_1, 20) }, + { NA_SE_IT_SHIELD_POSTURE, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 70) }, }; -static struct_80832924 D_80853E34[] = { - { NA_SE_IT_HAMMER_SWING, 0x80A }, - { NA_SE_VO_LI_AUTO_JUMP, 0x200A }, - { NA_SE_IT_SWORD_SWING, 0x816 }, - { NA_SE_VO_LI_SWORD_N, -0x2016 }, +static AnimSfxEntry D_80853E34[] = { + { NA_SE_IT_HAMMER_SWING, ANIMSFX_DATA(ANIMSFX_TYPE_1, 10) }, + { NA_SE_VO_LI_AUTO_JUMP, ANIMSFX_DATA(ANIMSFX_TYPE_4, 10) }, + { NA_SE_IT_SWORD_SWING, ANIMSFX_DATA(ANIMSFX_TYPE_1, 22) }, + { NA_SE_VO_LI_SWORD_N, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 22) }, }; -static struct_80832924 D_80853E44[] = { - { NA_SE_IT_SWORD_SWING, 0x827 }, - { NA_SE_VO_LI_SWORD_N, -0x2027 }, +static AnimSfxEntry D_80853E44[] = { + { NA_SE_IT_SWORD_SWING, ANIMSFX_DATA(ANIMSFX_TYPE_1, 39) }, + { NA_SE_VO_LI_SWORD_N, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 39) }, }; -static struct_80832924 D_80853E4C[] = { - { NA_SE_VO_LI_RELAX, -0x2014 }, +static AnimSfxEntry D_80853E4C[] = { + { NA_SE_VO_LI_RELAX, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 20) }, }; -static struct_80832924* D_80853E50[] = { +static AnimSfxEntry* D_80853E50[] = { D_80853DEC, D_80853DF0, D_80853DF4, D_80853DF8, D_80853DFC, D_80853E10, D_80853E28, D_80853E34, D_80853E44, D_80853E4C, NULL, }; @@ -1797,38 +1819,50 @@ void func_808328EC(Player* this, u16 sfxId) { this->stateFlags2 |= PLAYER_STATE2_3; } -void func_80832924(Player* this, struct_80832924* entry) { - s32 data; - s32 flags; - u32 cont; +/** + * Process a list of `AnimSfx` entries. + * An `AnimSfx` entry contains a sound effect to play, a frame number that indicates + * when during an animation it should play, and a type value that indicates how it should be played back. + * + * The list will stop being processed after an entry that has a negative value for the `data` field. + * + * Some types do not make use of `sfxId`, the SFX function called will pick a sound on its own. + * The `sfxId` field is not used in this case and can be any value, but 0 is typically used. + * + * @param entry A pointer to the first entry of an `AnimSfx` list. + */ +void Player_ProcessAnimSfxList(Player* this, AnimSfxEntry* entry) { + s32 cont; s32 pad; do { - data = ABS(entry->field); - flags = data & 0x7800; - if (LinkAnimation_OnFrame(&this->skelAnime, fabsf(data & 0x7FF))) { - if (flags == 0x800) { + s32 absData = ABS(entry->data); + s32 type = ANIMSFX_GET_TYPE(absData); + + if (LinkAnimation_OnFrame(&this->skelAnime, fabsf(ANIMSFX_GET_FRAME(absData)))) { + if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_1)) { Player_PlaySfx(this, entry->sfxId); - } else if (flags == 0x1000) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_2)) { func_80832770(this, entry->sfxId); - } else if (flags == 0x1800) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_3)) { func_808327C4(this, entry->sfxId); - } else if (flags == 0x2000) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_4)) { func_80832698(this, entry->sfxId); - } else if (flags == 0x2800) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_5)) { func_808328A0(this); - } else if (flags == 0x3000) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_6)) { func_808327F8(this, 6.0f); - } else if (flags == 0x3800) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_7)) { func_80832854(this); - } else if (flags == 0x4000) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_8)) { func_808327F8(this, 0.0f); - } else if (flags == 0x4800) { + } else if (type == ANIMSFX_SHIFT_TYPE(ANIMSFX_TYPE_9)) { func_800F4010(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD + this->ageProperties->unk_94, 0.0f); } } - cont = (entry->field >= 0); + + cont = (entry->data >= 0); // stop processing if `data` is negative entry++; } while (cont); } @@ -2043,7 +2077,7 @@ s32 func_80833350(Player* this) { void func_808333FC(Player* this, s32 arg1) { if (D_80853E7C[arg1] != 0) { - func_80832924(this, D_80853E50[D_80853E7C[arg1] - 1]); + Player_ProcessAnimSfxList(this, D_80853E50[D_80853E7C[arg1] - 1]); } } @@ -8623,9 +8657,9 @@ void Player_Action_80843954(Player* this, PlayState* play) { } } -static struct_80832924 D_808545DC[] = { - { 0, 0x4014 }, - { 0, -0x401E }, +static AnimSfxEntry D_808545DC[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 20) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_8, 30) }, }; void Player_Action_80843A38(Player* this, PlayState* play) { @@ -8643,7 +8677,7 @@ void Player_Action_80843A38(Player* this, PlayState* play) { } } - func_80832924(this, D_808545DC); + Player_ProcessAnimSfxList(this, D_808545DC); } static Vec3f D_808545E4 = { 0.0f, 0.0f, 5.0f }; @@ -8685,11 +8719,11 @@ void func_80843AE8(PlayState* play, Player* this) { } } -static struct_80832924 D_808545F0[] = { - { NA_SE_PL_BOUND, 0x103C }, - { 0, 0x408C }, - { 0, 0x40A4 }, - { 0, -0x40AA }, +static AnimSfxEntry D_808545F0[] = { + { NA_SE_PL_BOUND, ANIMSFX_DATA(ANIMSFX_TYPE_2, 60) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 140) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 164) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_8, 170) }, }; void Player_Action_80843CEC(Player* this, PlayState* play) { @@ -8711,7 +8745,7 @@ void Player_Action_80843CEC(Player* this, PlayState* play) { } if (this->skelAnime.animation == &gPlayerAnim_link_derth_rebirth) { - func_80832924(this, D_808545F0); + Player_ProcessAnimSfxList(this, D_808545F0); } else if (this->skelAnime.animation == &gPlayerAnim_link_normal_electric_shock_end) { if (LinkAnimation_OnFrame(&this->skelAnime, 88.0f)) { func_80832770(this, NA_SE_PL_BOUND); @@ -8916,11 +8950,11 @@ void Player_Action_8084411C(Player* this, PlayState* play) { } } -static struct_80832924 D_8085460C[] = { - { NA_SE_VO_LI_SWORD_N, 0x2001 }, - { NA_SE_PL_WALK_GROUND, 0x1806 }, - { NA_SE_PL_ROLL, 0x806 }, - { 0, -0x2812 }, +static AnimSfxEntry D_8085460C[] = { + { NA_SE_VO_LI_SWORD_N, ANIMSFX_DATA(ANIMSFX_TYPE_4, 1) }, + { NA_SE_PL_WALK_GROUND, ANIMSFX_DATA(ANIMSFX_TYPE_3, 6) }, + { NA_SE_PL_ROLL, ANIMSFX_DATA(ANIMSFX_TYPE_1, 6) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_5, 18) }, }; void Player_Action_80844708(Player* this, PlayState* play) { @@ -8997,7 +9031,7 @@ void Player_Action_80844708(Player* this, PlayState* play) { func_8002F8F0(&this->actor, NA_SE_PL_ROLL_DUST - SFX_FLAG); } - func_80832924(this, D_8085460C); + Player_ProcessAnimSfxList(this, D_8085460C); } } } @@ -9547,9 +9581,9 @@ void Player_Action_80846050(Player* this, PlayState* play) { Math_ScaledStepToS(&this->unk_3BC.y, 0, 4000); } -static struct_80832924 D_8085461C[] = { - { NA_SE_VO_LI_SWORD_L, 0x2031 }, - { NA_SE_VO_LI_SWORD_N, -0x20E6 }, +static AnimSfxEntry D_8085461C[] = { + { NA_SE_VO_LI_SWORD_L, ANIMSFX_DATA(ANIMSFX_TYPE_4, 49) }, + { NA_SE_VO_LI_SWORD_N, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 230) }, }; void Player_Action_80846120(Player* this, PlayState* play) { @@ -9581,7 +9615,7 @@ void Player_Action_80846120(Player* this, PlayState* play) { return; } - func_80832924(this, D_8085461C); + Player_ProcessAnimSfxList(this, D_8085461C); } void Player_Action_80846260(Player* this, PlayState* play) { @@ -11797,9 +11831,9 @@ void func_8084B840(PlayState* play, Player* this, f32 arg2) { } } -static struct_80832924 D_80854870[] = { - { NA_SE_PL_SLIP, 0x1003 }, - { NA_SE_PL_SLIP, -0x1015 }, +static AnimSfxEntry D_80854870[] = { + { NA_SE_PL_SLIP, ANIMSFX_DATA(ANIMSFX_TYPE_2, 3) }, + { NA_SE_PL_SLIP, -ANIMSFX_DATA(ANIMSFX_TYPE_2, 21) }, }; void Player_Action_8084B898(Player* this, PlayState* play) { @@ -11817,7 +11851,7 @@ void Player_Action_8084B898(Player* this, PlayState* play) { } } - func_80832924(this, D_80854870); + Player_ProcessAnimSfxList(this, D_80854870); func_8083F524(play, this); if (!func_8083F9D0(play, this)) { @@ -11838,9 +11872,9 @@ void Player_Action_8084B898(Player* this, PlayState* play) { } } -static struct_80832924 D_80854878[] = { - { NA_SE_PL_SLIP, 0x1004 }, - { NA_SE_PL_SLIP, -0x1018 }, +static AnimSfxEntry D_80854878[] = { + { NA_SE_PL_SLIP, ANIMSFX_DATA(ANIMSFX_TYPE_2, 4) }, + { NA_SE_PL_SLIP, -ANIMSFX_DATA(ANIMSFX_TYPE_2, 24) }, }; static Vec3f D_80854880 = { 0.0f, 26.0f, -40.0f }; @@ -11868,7 +11902,7 @@ void Player_Action_8084B9E4(Player* this, PlayState* play) { func_80832698(this, NA_SE_VO_LI_PUSH); } } else { - func_80832924(this, D_80854878); + Player_ProcessAnimSfxList(this, D_80854878); } } @@ -12126,10 +12160,10 @@ void Player_Action_8084BF1C(Player* this, PlayState* play) { static f32 D_80854898[] = { 10.0f, 20.0f }; static f32 D_808548A0[] = { 40.0f, 50.0f }; -static struct_80832924 D_808548A8[] = { - { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, 0x80A }, - { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, 0x814 }, - { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, -0x81E }, +static AnimSfxEntry D_808548A8[] = { + { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, ANIMSFX_DATA(ANIMSFX_TYPE_1, 10) }, + { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, ANIMSFX_DATA(ANIMSFX_TYPE_1, 20) }, + { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 30) }, }; void Player_Action_8084C5F8(Player* this, PlayState* play) { @@ -12157,7 +12191,7 @@ void Player_Action_8084C5F8(Player* this, PlayState* play) { sp38 = D_80854898; if (this->actionVar2 != 0) { - func_80832924(this, D_808548A8); + Player_ProcessAnimSfxList(this, D_808548A8); sp38 = D_808548A0; } @@ -12175,9 +12209,12 @@ void Player_Action_8084C5F8(Player* this, PlayState* play) { } } -static struct_80832924 D_808548B4[] = { - { 0, 0x3028 }, { 0, 0x3030 }, { 0, 0x3038 }, { 0, 0x3040 }, { 0, 0x3048 }, - { 0, 0x3050 }, { 0, 0x3058 }, { 0, 0x3060 }, { 0, -0x3068 }, +static AnimSfxEntry D_808548B4[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 40) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 48) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 56) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 64) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 72) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 80) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 88) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 96) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 104) }, }; /** @@ -12204,12 +12241,15 @@ void Player_Action_8084C760(Player* this, PlayState* play) { } // Still entering crawlspace - func_80832924(this, D_808548B4); + Player_ProcessAnimSfxList(this, D_808548B4); } -static struct_80832924 D_808548D8[] = { - { 0, 0x300A }, { 0, 0x3012 }, { 0, 0x301A }, { 0, 0x3022 }, { 0, 0x3034 }, - { 0, 0x303C }, { 0, 0x3044 }, { 0, 0x304C }, { 0, -0x3054 }, +static AnimSfxEntry D_808548D8[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 10) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 18) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 26) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 34) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 52) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 60) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 68) }, { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 76) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 84) }, }; /** @@ -12226,7 +12266,7 @@ void Player_Action_8084C81C(Player* this, PlayState* play) { } // Continue animation of leaving crawlspace - func_80832924(this, D_808548D8); + Player_ProcessAnimSfxList(this, D_808548D8); } static Vec3f D_808548FC[] = { @@ -12358,10 +12398,11 @@ static u8 D_80854998[2][2] = { static Vec3s D_8085499C = { -69, 7146, -266 }; -static struct_80832924 D_808549A4[] = { - { NA_SE_PL_CALM_HIT, 0x830 }, { NA_SE_PL_CALM_HIT, 0x83A }, { NA_SE_PL_CALM_HIT, 0x844 }, - { NA_SE_PL_CALM_PAT, 0x85C }, { NA_SE_PL_CALM_PAT, 0x86E }, { NA_SE_PL_CALM_PAT, 0x87E }, - { NA_SE_PL_CALM_PAT, 0x884 }, { NA_SE_PL_CALM_PAT, -0x888 }, +static AnimSfxEntry D_808549A4[] = { + { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 48) }, { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 58) }, + { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 68) }, { NA_SE_PL_CALM_PAT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 92) }, + { NA_SE_PL_CALM_PAT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 110) }, { NA_SE_PL_CALM_PAT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 126) }, + { NA_SE_PL_CALM_PAT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 132) }, { NA_SE_PL_CALM_PAT, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 136) }, }; void Player_Action_8084CC98(Player* this, PlayState* play) { @@ -12427,7 +12468,7 @@ void Player_Action_8084CC98(Player* this, PlayState* play) { } else if (LinkAnimation_Update(play, &this->skelAnime)) { this->actionVar2 = 99; } else if (this->skelAnime.animation == &gPlayerAnim_link_uma_wait_1) { - func_80832924(this, D_808549A4); + Player_ProcessAnimSfxList(this, D_808549A4); } } else { this->skelAnime.curFrame = rideActor->curFrame; @@ -12537,10 +12578,10 @@ void Player_Action_8084CC98(Player* this, PlayState* play) { } } -static struct_80832924 D_808549C4[] = { - { 0, 0x2800 }, - { NA_SE_PL_GET_OFF_HORSE, 0x80A }, - { NA_SE_PL_SLIPDOWN, -0x819 }, +static AnimSfxEntry D_808549C4[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_5, 0) }, + { NA_SE_PL_GET_OFF_HORSE, ANIMSFX_DATA(ANIMSFX_TYPE_1, 10) }, + { NA_SE_PL_SLIPDOWN, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 25) }, }; void Player_Action_8084D3E4(Player* this, PlayState* play) { @@ -12565,21 +12606,21 @@ void Player_Action_8084D3E4(Player* this, PlayState* play) { Camera_ChangeSetting(Play_GetCamera(play, CAM_ID_MAIN), CAM_SET_NORMAL0); if (this->mountSide < 0) { - D_808549C4[0].field = 0x2828; + D_808549C4[0].data = ANIMSFX_DATA(ANIMSFX_TYPE_5, 40); } else { - D_808549C4[0].field = 0x281D; + D_808549C4[0].data = ANIMSFX_DATA(ANIMSFX_TYPE_5, 29); } - func_80832924(this, D_808549C4); + Player_ProcessAnimSfxList(this, D_808549C4); } } -static struct_80832924 D_808549D0[] = { - { NA_SE_PL_SWIM, -0x800 }, +static AnimSfxEntry D_808549D0[] = { + { NA_SE_PL_SWIM, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 0) }, }; void func_8084D530(Player* this, f32* arg1, f32 arg2, s16 arg3) { func_8084AEEC(this, arg1, arg2, arg3); - func_80832924(this, D_808549D0); + Player_ProcessAnimSfxList(this, D_808549D0); } void func_8084D574(PlayState* play, Player* this, s16 arg2) { @@ -12993,11 +13034,11 @@ void Player_Action_8084E604(Player* this, PlayState* play) { func_8083721C(this); } -static struct_80832924 D_808549E0[] = { - { 0, 0x3857 }, - { NA_SE_VO_LI_CLIMB_END, 0x2057 }, - { NA_SE_VO_LI_AUTO_JUMP, 0x2045 }, - { 0, -0x287B }, +static AnimSfxEntry D_808549E0[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_7, 87) }, + { NA_SE_VO_LI_CLIMB_END, ANIMSFX_DATA(ANIMSFX_TYPE_4, 87) }, + { NA_SE_VO_LI_AUTO_JUMP, ANIMSFX_DATA(ANIMSFX_TYPE_4, 69) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_5, 123) }, }; void Player_Action_8084E6D4(Player* this, PlayState* play) { @@ -13055,7 +13096,7 @@ void Player_Action_8084E6D4(Player* this, PlayState* play) { } else { if (this->actionVar2 == 0) { if (!LINK_IS_ADULT) { - func_80832924(this, D_808549E0); + Player_ProcessAnimSfxList(this, D_808549E0); } return; } @@ -13070,17 +13111,17 @@ void Player_Action_8084E6D4(Player* this, PlayState* play) { } } -static struct_80832924 D_808549F0[] = { - { NA_SE_IT_MASTER_SWORD_SWING, -0x83C }, +static AnimSfxEntry D_808549F0[] = { + { NA_SE_IT_MASTER_SWORD_SWING, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 60) }, }; void func_8084E988(Player* this) { - func_80832924(this, D_808549F0); + Player_ProcessAnimSfxList(this, D_808549F0); } -static struct_80832924 D_808549F4[] = { - { NA_SE_VO_LI_AUTO_JUMP, 0x2005 }, - { 0, -0x280F }, +static AnimSfxEntry D_808549F4[] = { + { NA_SE_VO_LI_AUTO_JUMP, ANIMSFX_DATA(ANIMSFX_TYPE_4, 5) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_5, 15) }, }; void Player_Action_8084E9AC(Player* this, PlayState* play) { @@ -13100,7 +13141,7 @@ void Player_Action_8084E9AC(Player* this, PlayState* play) { } if (!LINK_IS_ADULT) { - func_80832924(this, D_808549F4); + Player_ProcessAnimSfxList(this, D_808549F4); } else { func_8084E988(this); } @@ -13262,9 +13303,9 @@ static BottleDropInfo D_80854A28[] = { { ACTOR_EN_INSECT, INSECT_TYPE_FIRST_DROPPED }, }; -static struct_80832924 D_80854A34[] = { - { NA_SE_VO_LI_AUTO_JUMP, 0x2026 }, - { NA_SE_EV_BOTTLE_CAP_OPEN, -0x828 }, +static AnimSfxEntry D_80854A34[] = { + { NA_SE_VO_LI_AUTO_JUMP, ANIMSFX_DATA(ANIMSFX_TYPE_4, 38) }, + { NA_SE_EV_BOTTLE_CAP_OPEN, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 40) }, }; void Player_Action_8084EFC0(Player* this, PlayState* play) { @@ -13288,11 +13329,11 @@ void Player_Action_8084EFC0(Player* this, PlayState* play) { return; } - func_80832924(this, D_80854A34); + Player_ProcessAnimSfxList(this, D_80854A34); } -static struct_80832924 D_80854A3C[] = { - { NA_SE_PL_PUT_OUT_ITEM, -0x81E }, +static AnimSfxEntry D_80854A3C[] = { + { NA_SE_PL_PUT_OUT_ITEM, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 30) }, }; void Player_Action_8084F104(Player* this, PlayState* play) { @@ -13340,7 +13381,7 @@ void Player_Action_8084F104(Player* this, PlayState* play) { } } } else if (this->actionVar2 >= 0) { - func_80832924(this, D_80854A3C); + Player_ProcessAnimSfxList(this, D_80854A3C); } if ((this->actionVar1 == 0) && (this->unk_664 != NULL)) { @@ -13877,24 +13918,24 @@ static LinkAnimationHeader* D_80854A70[] = { static u8 D_80854A7C[] = { 70, 10, 10 }; -static struct_80832924 D_80854A80[] = { - { NA_SE_PL_SKIP, 0x814 }, - { NA_SE_VO_LI_SWORD_N, 0x2014 }, - { 0, -0x301A }, +static AnimSfxEntry D_80854A80[] = { + { NA_SE_PL_SKIP, ANIMSFX_DATA(ANIMSFX_TYPE_1, 20) }, + { NA_SE_VO_LI_SWORD_N, ANIMSFX_DATA(ANIMSFX_TYPE_4, 20) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 26) }, }; -static struct_80832924 D_80854A8C[][2] = { +static AnimSfxEntry D_80854A8C[][2] = { { - { 0, 0x4014 }, - { NA_SE_VO_LI_MAGIC_FROL, -0x201E }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 20) }, + { NA_SE_VO_LI_MAGIC_FROL, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 30) }, }, { - { 0, 0x4014 }, - { NA_SE_VO_LI_MAGIC_NALE, -0x202C }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 20) }, + { NA_SE_VO_LI_MAGIC_NALE, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 44) }, }, { - { NA_SE_VO_LI_MAGIC_ATTACK, 0x2014 }, - { NA_SE_IT_SWORD_SWING_HARD, -0x814 }, + { NA_SE_VO_LI_MAGIC_ATTACK, ANIMSFX_DATA(ANIMSFX_TYPE_4, 20) }, + { NA_SE_IT_SWORD_SWING_HARD, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 20) }, }, }; @@ -13948,9 +13989,9 @@ void Player_Action_808507F4(Player* this, PlayState* play) { } } else if (this->actionVar1 >= 0) { if (this->actionVar2 == 0) { - func_80832924(this, D_80854A80); + Player_ProcessAnimSfxList(this, D_80854A80); } else if (this->actionVar2 == 1) { - func_80832924(this, D_80854A8C[this->actionVar1]); + Player_ProcessAnimSfxList(this, D_80854A8C[this->actionVar1]); if ((this->actionVar1 == 2) && LinkAnimation_OnFrame(&this->skelAnime, 30.0f)) { this->stateFlags1 &= ~(PLAYER_STATE1_28 | PLAYER_STATE1_29); } @@ -14049,19 +14090,23 @@ static void (*D_80854AA4[])(PlayState*, Player*, void*) = { func_80851050, func_80851194, func_808511B4, func_80851248, func_808512E0, }; -static struct_80832924 D_80854AF0[] = { - { 0, 0x2822 }, - { NA_SE_PL_CALM_HIT, 0x82D }, - { NA_SE_PL_CALM_HIT, 0x833 }, - { NA_SE_PL_CALM_HIT, -0x840 }, +static AnimSfxEntry D_80854AF0[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_5, 34) }, + { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 45) }, + { NA_SE_PL_CALM_HIT, ANIMSFX_DATA(ANIMSFX_TYPE_1, 51) }, + { NA_SE_PL_CALM_HIT, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 64) }, }; -static struct_80832924 D_80854B00[] = { - { NA_SE_VO_LI_SURPRISE, 0x2003 }, { 0, 0x300F }, { 0, 0x3018 }, { 0, 0x301E }, { NA_SE_VO_LI_FALL_L, -0x201F }, +static AnimSfxEntry D_80854B00[] = { + { NA_SE_VO_LI_SURPRISE, ANIMSFX_DATA(ANIMSFX_TYPE_4, 3) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 15) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 24) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 30) }, + { NA_SE_VO_LI_FALL_L, -ANIMSFX_DATA(ANIMSFX_TYPE_4, 31) }, }; -static struct_80832924 D_80854B14[] = { - { 0, -0x300A }, +static AnimSfxEntry D_80854B14[] = { + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 10) }, }; static struct_80854B18 D_80854B18[PLAYER_CSACTION_MAX] = { @@ -14378,7 +14423,7 @@ void func_80851294(PlayState* play, Player* this, void* anim) { void func_808512E0(PlayState* play, Player* this, void* arg2) { LinkAnimation_Update(play, &this->skelAnime); - func_80832924(this, arg2); + Player_ProcessAnimSfxList(this, arg2); } void func_80851314(Player* this) { @@ -14492,14 +14537,14 @@ void func_80851688(PlayState* play, Player* this, CsCmdActorCue* cue) { } } -static struct_80832924 D_80855188[] = { - { 0, 0x302A }, - { 0, -0x3030 }, +static AnimSfxEntry D_80855188[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 42) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 48) }, }; void func_80851750(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); - func_80832924(this, D_80855188); + Player_ProcessAnimSfxList(this, D_80855188); } void func_80851788(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14587,9 +14632,9 @@ static struct_808551A4 D_808551A4[] = { { NA_SE_IT_SWORD_STICK_STN, NA_SE_VO_LI_SWORD_N }, }; -static struct_80832924 D_808551AC[] = { - { 0, 0x401D }, - { 0, -0x4027 }, +static AnimSfxEntry D_808551AC[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 29) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_8, 39) }, }; void func_80851A50(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14619,7 +14664,7 @@ void func_80851A50(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80832698(this, NA_SE_VO_LI_SWORD_L); } } else { - func_80832924(this, D_808551AC); + Player_ProcessAnimSfxList(this, D_808551AC); } } @@ -14628,8 +14673,8 @@ void func_80851B90(PlayState* play, Player* this, CsCmdActorCue* cue) { ANIMMODE_ONCE, 0.0f); } -static struct_80832924 D_808551B4[] = { - { 0, -0x281E }, +static AnimSfxEntry D_808551B4[] = { + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_5, 30) }, }; void func_80851BE8(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14642,7 +14687,7 @@ void func_80851BE8(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_okarina_warp_goal, (2.0f / 3.0f), 10.0f, Animation_GetLastFrame(&gPlayerAnim_link_okarina_warp_goal), ANIMMODE_ONCE, -8.0f); } - func_80832924(this, D_808551B4); + Player_ProcessAnimSfxList(this, D_808551B4); } } @@ -14664,8 +14709,8 @@ void func_80851D2C(PlayState* play, Player* this, CsCmdActorCue* cue) { Player_SetModels(this, Player_ActionToModelGroup(this, this->itemAction)); } -static struct_80832924 D_808551B8[] = { - { NA_SE_IT_SWORD_PICKOUT, -0x80C }, +static AnimSfxEntry D_808551B8[] = { + { NA_SE_IT_SWORD_PICKOUT, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 12) }, }; void func_80851D80(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14674,7 +14719,7 @@ void func_80851D80(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_OnFrame(&this->skelAnime, 6.0f)) { func_80846720(play, this, 0); } else { - func_80832924(this, D_808551B8); + Player_ProcessAnimSfxList(this, D_808551B8); } } @@ -14707,12 +14752,12 @@ void func_80851ECC(PlayState* play, Player* this, CsCmdActorCue* cue) { } } -void func_80851F14(PlayState* play, Player* this, LinkAnimationHeader* anim, struct_80832924* arg3) { +void func_80851F14(PlayState* play, Player* this, LinkAnimationHeader* anim, AnimSfxEntry* arg3) { if (LinkAnimation_Update(play, &this->skelAnime)) { Player_AnimPlayLoopAdjusted(play, this, anim); this->actionVar2 = 1; } else if (this->actionVar2 == 0) { - func_80832924(this, arg3); + Player_ProcessAnimSfxList(this, arg3); } } @@ -14721,10 +14766,10 @@ void func_80851F84(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80851134(play, this, &gPlayerAnim_clink_op3_wait1); } -static struct_80832924 D_808551BC[] = { - { NA_SE_VO_LI_RELAX, 0x2023 }, - { NA_SE_PL_SLIPDOWN, 0x8EC }, - { NA_SE_PL_SLIPDOWN, -0x900 }, +static AnimSfxEntry D_808551BC[] = { + { NA_SE_VO_LI_RELAX, ANIMSFX_DATA(ANIMSFX_TYPE_4, 35) }, + { NA_SE_PL_SLIPDOWN, ANIMSFX_DATA(ANIMSFX_TYPE_1, 236) }, + { NA_SE_PL_SLIPDOWN, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 256) }, }; void func_80851FB0(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14734,23 +14779,23 @@ void func_80851FB0(PlayState* play, Player* this, CsCmdActorCue* cue) { ANIM_FLAG_PLAYER_7); this->actionVar2 = 1; } else if (this->actionVar2 == 0) { - func_80832924(this, D_808551BC); + Player_ProcessAnimSfxList(this, D_808551BC); if (LinkAnimation_OnFrame(&this->skelAnime, 240.0f)) { this->actor.shape.shadowDraw = ActorShadow_DrawFeet; } } } -static struct_80832924 D_808551C8[] = { - { NA_SE_PL_LAND + SURFACE_SFX_OFFSET_WOOD, 0x843 }, - { 0, 0x4854 }, - { 0, 0x485A }, - { 0, -0x4860 }, +static AnimSfxEntry D_808551C8[] = { + { NA_SE_PL_LAND + SURFACE_SFX_OFFSET_WOOD, ANIMSFX_DATA(ANIMSFX_TYPE_1, 67) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_9, 84) }, + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_9, 90) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_9, 96) }, }; void func_80852048(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); - func_80832924(this, D_808551C8); + Player_ProcessAnimSfxList(this, D_808551C8); } void func_80852080(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14776,15 +14821,15 @@ void func_808520BC(PlayState* play, Player* this, CsCmdActorCue* cue) { this->actor.world.pos.z = distZ * sp4 + startZ; } -static struct_80832924 D_808551D8[] = { - { NA_SE_PL_BOUND, 0x1014 }, - { NA_SE_PL_BOUND, -0x101E }, +static AnimSfxEntry D_808551D8[] = { + { NA_SE_PL_BOUND, ANIMSFX_DATA(ANIMSFX_TYPE_2, 20) }, + { NA_SE_PL_BOUND, -ANIMSFX_DATA(ANIMSFX_TYPE_2, 30) }, }; void func_80852174(PlayState* play, Player* this, CsCmdActorCue* cue) { func_808520BC(play, this, cue); LinkAnimation_Update(play, &this->skelAnime); - func_80832924(this, D_808551D8); + Player_ProcessAnimSfxList(this, D_808551D8); } void func_808521B8(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14822,18 +14867,18 @@ void func_80852298(PlayState* play, Player* this, CsCmdActorCue* cue) { } } -static struct_80832924 D_808551E0[] = { - { 0, 0x300A }, - { 0, -0x3018 }, +static AnimSfxEntry D_808551E0[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 10) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 24) }, }; void func_80852328(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80851F14(play, this, &gPlayerAnim_link_demo_furimuki2_wait, D_808551E0); } -static struct_80832924 D_808551E8[] = { - { 0, 0x400F }, - { 0, -0x4023 }, +static AnimSfxEntry D_808551E8[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_8, 15) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_8, 35) }, }; void func_80852358(PlayState* play, Player* this, CsCmdActorCue* cue) { @@ -14853,24 +14898,24 @@ void func_80852388(PlayState* play, Player* this, CsCmdActorCue* cue) { } } -void func_80852414(PlayState* play, Player* this, LinkAnimationHeader* anim, struct_80832924* arg3) { +void func_80852414(PlayState* play, Player* this, LinkAnimationHeader* anim, AnimSfxEntry* arg3) { func_80851294(play, this, anim); if (this->actionVar2 == 0) { - func_80832924(this, arg3); + Player_ProcessAnimSfxList(this, arg3); } } -static struct_80832924 D_808551F0[] = { - { 0, 0x300F }, - { 0, -0x3021 }, +static AnimSfxEntry D_808551F0[] = { + { 0, ANIMSFX_DATA(ANIMSFX_TYPE_6, 15) }, + { 0, -ANIMSFX_DATA(ANIMSFX_TYPE_6, 33) }, }; void func_80852450(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80852414(play, this, &gPlayerAnim_clink_demo_koutai_wait, D_808551F0); } -static struct_80832924 D_808551F8[] = { - { NA_SE_PL_KNOCK, -0x84E }, +static AnimSfxEntry D_808551F8[] = { + { NA_SE_PL_KNOCK, -ANIMSFX_DATA(ANIMSFX_TYPE_1, 78) }, }; void func_80852480(PlayState* play, Player* this, CsCmdActorCue* cue) {