diff --git a/src/melee/ft/chara/ftKirby/ftKb_Init.c b/src/melee/ft/chara/ftKirby/ftKb_Init.c index be2a3a9ceb..0e37000b0e 100644 --- a/src/melee/ft/chara/ftKirby/ftKb_Init.c +++ b/src/melee/ft/chara/ftKirby/ftKb_Init.c @@ -2542,6 +2542,7 @@ MotionState ftKb_Init_UnkMotionStates0[] = { /* 0EE8B0 */ static void ftKb_Init_800EE8B0(void); /* 0EE8EC */ static void ftKb_Init_800EE8EC(void); /* 0EE904 */ static void ftKb_Init_800EE904(void); +/* 0F1CA0 */ static bool fn_800F1CA0(HSD_GObj* gobj); /* 105FEC */ static void fn_800F6AC8(HSD_GObj* gobj); /* 105FEC */ static void fn_80105FEC(void); /* 10C288 */ static void fn_8010C288(HSD_GObj* gobj); @@ -3779,8 +3780,12 @@ void ftKb_SpecialN_800F10A4(Fighter_GObj* gobj) /// #ftKb_SpecialN_800F10D4 -/// #ftKb_SpecialN_800F11AC - +void ftKb_SpecialN_800F11AC(Fighter_GObj* gobj) +{ + Fighter* fp = gobj->user_data; + ftKb_SpecialN_800EF69C(gobj, 0xF, ft_80459B88.hats[14]); + ftCo_UnloadDynamicBones(fp); +} /// #ftKb_SpecialN_800F11F0 void ftKb_SpecialN_800F12C8(Fighter_GObj* gobj) diff --git a/src/melee/ft/chara/ftPopo/ftPp_1211.h b/src/melee/ft/chara/ftPopo/ftPp_1211.h index 3b615a65d6..56e587cfac 100644 --- a/src/melee/ft/chara/ftPopo/ftPp_1211.h +++ b/src/melee/ft/chara/ftPopo/ftPp_1211.h @@ -22,6 +22,7 @@ /* 121B74 */ void ftPp_SpecialAirHiThrow_0_Phys(Fighter_GObj* gobj); /* 121C34 */ void ftPp_SpecialHiThrow_0_Coll(Fighter_GObj* gobj); /* 121C70 */ void ftPp_SpecialAirHiThrow_0_Coll(Fighter_GObj* gobj); +/* 121DA0 */ void ftPp_SpecialHi_80121DA0(Fighter_GObj* gobj); /* 121E10 */ void ftPp_SpecialHiStart_1_Anim(Fighter_GObj* gobj); /* 121E4C */ void ftPp_SpecialAirHiStart_1_Anim(Fighter_GObj* gobj); /* 121EB0 */ void ftPp_SpecialHiStart_1_IASA(Fighter_GObj* gobj); diff --git a/src/melee/ft/chara/ftPopo/ftPp_Init.h b/src/melee/ft/chara/ftPopo/ftPp_Init.h index d62a863d7f..1fecd6b711 100644 --- a/src/melee/ft/chara/ftPopo/ftPp_Init.h +++ b/src/melee/ft/chara/ftPopo/ftPp_Init.h @@ -27,4 +27,7 @@ /* 3CD7B4 */ extern Fighter_DemoStrings ftPp_Init_DemoMotionFilenames; /* 3CD7C4 */ extern Fighter_CostumeStrings ftPp_Init_CostumeStrings[]; +/* 4D9860 */ extern f32 ftPp_Init_804D9860; +/* 4D9880 */ extern f32 ftPp_Init_804D9880; + #endif diff --git a/src/melee/ft/chara/ftPopo/ftPp_SpecialS.c b/src/melee/ft/chara/ftPopo/ftPp_SpecialS.c index 32a815efef..27a6a1e6a2 100644 --- a/src/melee/ft/chara/ftPopo/ftPp_SpecialS.c +++ b/src/melee/ft/chara/ftPopo/ftPp_SpecialS.c @@ -15,6 +15,7 @@ #include "ftPopo/forward.h" +#include "ftPopo/ftPp_1211.h" #include "ftPopo/ftPp_Init.h" #include "ftPopo/types.h" #include "pl/player.h" @@ -31,15 +32,18 @@ #include #include -/* 121AC8 */ static void ftPp_SpecialHiThrow_0_IASA(Fighter_GObj* gobj); -/* 121ACC */ static void ftPp_SpecialAirHiThrow_0_IASA(Fighter_GObj* gobj); -/* 121EB0 */ static void ftPp_SpecialHiStart_1_IASA(Fighter_GObj* gobj); -/* 121EB4 */ static void ftPp_SpecialAirHiStart_1_IASA(Fighter_GObj* gobj); -/* 1221B0 */ static void ftPp_SpecialAirHiThrow_1_IASA(Fighter_GObj* gobj); -/* 12248C */ static void ftPp_SpecialHiThrow2_IASA(Fighter_GObj* gobj); -/* 122490 */ static void ftPp_SpecialAirHiThrow2_IASA(Fighter_GObj* gobj); -/* 122B0C */ static void ftPp_SpecialLw_IASA(Fighter_GObj* gobj); -/* 122B10 */ static void ftPp_SpecialAirLw_IASA(Fighter_GObj* gobj); +/* 121AC8 */ void ftPp_SpecialHiThrow_0_IASA(Fighter_GObj* gobj); +/* 121ACC */ void ftPp_SpecialAirHiThrow_0_IASA(Fighter_GObj* gobj); +/* 121EB0 */ void ftPp_SpecialHiStart_1_IASA(Fighter_GObj* gobj); +/* 121EB4 */ void ftPp_SpecialAirHiStart_1_IASA(Fighter_GObj* gobj); +/* 1221B0 */ void ftPp_SpecialAirHiThrow_1_IASA(Fighter_GObj* gobj); +/* 12248C */ void ftPp_SpecialHiThrow2_IASA(Fighter_GObj* gobj); +/* 122490 */ void ftPp_SpecialAirHiThrow2_IASA(Fighter_GObj* gobj); +/* 122B0C */ void ftPp_SpecialLw_IASA(Fighter_GObj* gobj); +/* 122B10 */ void ftPp_SpecialAirLw_IASA(Fighter_GObj* gobj); + +/* 1218AC */ void ftPp_SpecialHi_801218AC(Fighter_GObj* gobj); +/* 1218F8 */ void ftPp_SpecialHi_801218F8(Fighter_GObj* gobj); static void setRefGObjFlagAndClear(Fighter* fp) { @@ -790,8 +794,26 @@ void ftPp_SpecialS_80121164(Fighter_GObj* gobj) } } -/// #ftPp_SpecialHi_Enter +void ftPp_SpecialHi_Enter(Fighter_GObj* gobj) +{ + Fighter* fp = GET_FIGHTER(gobj); + ftIceClimberAttributes* da = fp->dat_attrs; + + fp->gr_vel /= da->x84; + ftPp_SpecialHi_801218AC(gobj); + + fp = GET_FIGHTER(gobj); + fp->cmd_vars[2] = 0; + fp->cmd_vars[1] = 0; + fp->cmd_vars[0] = 0; + fp = GET_FIGHTER(gobj); + fp->mv.pp.unk_80123954.x0 = 1; + fp->fv.pp.x223C = 0; + fp->fv.pp.x2240.z = 0.0f; + fp->fv.pp.x2240.y = 0.0f; + fp->fv.pp.x2240.x = 0.0f; +} /// #ftPp_SpecialAirHi_Enter /// #ftPp_SpecialHiStart_0_Anim @@ -820,9 +842,17 @@ void ftPp_SpecialHi_8012184C(Fighter_GObj* gobj) Fighter_ChangeMotionState(gobj, 0x15B, 0x0C4C508AU, fp->cur_anim_frame, 0, 1, NULL); } -/// #ftPp_SpecialHi_801218AC +void ftPp_SpecialHi_801218AC(Fighter_GObj* gobj) +{ + Fighter_ChangeMotionState(gobj, 0x15B, Ft_MF_None, 0.0f, 1.0f, 0.0f, NULL); + ftAnim_8006EBA4(gobj); +} -/// #ftPp_SpecialHi_801218F8 +void ftPp_SpecialHi_801218F8(Fighter_GObj* gobj) +{ + Fighter_ChangeMotionState(gobj, 0x160, Ft_MF_None, 0.0f, 1.0f, 0.0f, NULL); + ftAnim_8006EBA4(gobj); +} /// #ftPp_SpecialHiThrow_0_Anim @@ -844,8 +874,10 @@ void ftPp_SpecialAirHiThrow_0_IASA(Fighter_GObj* gobj) {} /// #ftPp_SpecialHi_80121D40 -/// #ftPp_SpecialHi_80121DA0 - +void ftPp_SpecialHi_80121DA0(Fighter_GObj* gobj) +{ + Fighter_ChangeMotionState(gobj, 0x15C, 0, 0, 1.0f, 0.0f, NULL); +} /// #ftPp_SpecialHi_80121DD8 /// #ftPp_SpecialHiStart_1_Anim diff --git a/src/melee/ft/chara/ftPopo/types.h b/src/melee/ft/chara/ftPopo/types.h index 919ed4d81e..31ad8da610 100644 --- a/src/melee/ft/chara/ftPopo/types.h +++ b/src/melee/ft/chara/ftPopo/types.h @@ -49,7 +49,9 @@ typedef struct ftIceClimberAttributes { int x68; float x6C; float x70; - u8 _74[0x94 - 0x74]; + u8 _74[0x84 - 0x74]; + float x84; + u8 _88[0x94 - 0x88]; float x94; float x98; u8 _9C[0xB0 - 0x9C];