From ce7da78e806eb81368068d71946499082ec8c503 Mon Sep 17 00:00:00 2001 From: John Winston Garth Date: Sun, 15 Mar 2026 02:13:11 -0500 Subject: [PATCH 1/6] it_items_itclimbersice: decompile itClimbersice_UnkMotion0_Anim Co-Authored-By: Claude Opus 4.6 --- src/melee/it/itCharItems.h | 7 +++++++ src/melee/it/items/itclimbersice.c | 24 +++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/melee/it/itCharItems.h b/src/melee/it/itCharItems.h index dca9bc2ba5..b992be1fc9 100644 --- a/src/melee/it/itCharItems.h +++ b/src/melee/it/itCharItems.h @@ -28,8 +28,15 @@ typedef struct itClimbersBlizzardAttributes { typedef struct itClimbersIce_ItemVars { /* +0 */ Item_GObj* x0; + /* +4 */ f32 x4; + /* +8 */ u8 x8_b0 : 1; } itClimbersIce_ItemVars; +typedef struct itClimbersIceAttributes { + /* +00 */ u8 pad_00[0x28]; + /* +28 */ f32 x28; +} itClimbersIceAttributes; + typedef struct itNessbat_ItemVars { /* +0 ip+DD4 */ HSD_GObj* x0; } itNessbat_ItemVars; diff --git a/src/melee/it/items/itclimbersice.c b/src/melee/it/items/itclimbersice.c index 091004c465..116d3a7a68 100644 --- a/src/melee/it/items/itclimbersice.c +++ b/src/melee/it/items/itclimbersice.c @@ -51,7 +51,29 @@ void it_802C1950(Item_GObj* gobj) Item_80268E5C(gobj, 0, ITEM_ANIM_UPDATE); } -/// #itClimbersice_UnkMotion0_Anim +bool itClimbersice_UnkMotion0_Anim(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + HSD_JObj* jobj = gobj->hsd_obj; + itClimbersIceAttributes* sa = ip->xC4_article_data->x4_specialAttributes; + HSD_JObj* child; + PAD_STACK(8); + + if (jobj == NULL) { + child = NULL; + } else { + child = jobj->child; + } + + if (ip->xDD4_itemVar.climbersice.x8_b0) { + ip->xDD4_itemVar.climbersice.x4 *= sa->x28; + it_80272F7C(child, ip->xDD4_itemVar.climbersice.x4); + if (ip->xDD4_itemVar.climbersice.x4 < 0.01F) { + return true; + } + } + return false; +} void itClimbersice_UnkMotion0_Phys(Item_GObj* gobj) {} From a786e996e346705b96b217f2313f93a68987ee5b Mon Sep 17 00:00:00 2001 From: John Winston Garth Date: Sun, 15 Mar 2026 07:39:59 -0500 Subject: [PATCH 2/6] it_items_itgamewatchchef: decompile it_802C84A0, itGamewatchchef_UnkMotion0_Coll, itGamewatchchef_UnkMotion1_Coll Co-Authored-By: Claude Opus 4.6 --- src/melee/it/items/itgamewatchchef.c | 56 ++++++++++++++++++++++++++-- src/melee/it/items/itgamewatchchef.h | 2 +- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/melee/it/items/itgamewatchchef.c b/src/melee/it/items/itgamewatchchef.c index 4849074d92..ad3d1aa003 100644 --- a/src/melee/it/items/itgamewatchchef.c +++ b/src/melee/it/items/itgamewatchchef.c @@ -3,6 +3,7 @@ #include "math.h" #include "it/inlines.h" +#include "it/it_266F.h" #include "it/it_26B1.h" #include "it/it_2725.h" #include "it/item.h" @@ -17,7 +18,20 @@ bool itGameWatchChef_Logic112_DmgDealt(Item_GObj* gobj) return false; } -/// #it_802C84A0 +void it_802C84A0(Item_GObj* gobj, s32 index) +{ + Item* ip = GET_ITEM(gobj); + itGamewatchchefAttributes* attrs = + ip->xC4_article_data->x4_specialAttributes; + ip->xDD4_itemVar.gamewatchchef.x4 = index; + it_80275158(gobj, attrs->x8); + ip->xD5C = 0; + ip->x40_vel.x = + attrs->entries[ip->xDD4_itemVar.gamewatchchef.x4].x0 * ip->facing_dir; + ip->x40_vel.y = attrs->entries[ip->xDD4_itemVar.gamewatchchef.x4].x4; + it_8026B3A8(gobj); + Item_80268E5C(gobj, 0, ITEM_ANIM_UPDATE); +} /// #itGamewatchchef_UnkMotion0_Anim @@ -30,7 +44,22 @@ void itGamewatchchef_UnkMotion0_Phys(Item_GObj* gobj) it_80272860(gobj, attrs->entries[index].x8, attrs->entries[index].xC); } -/// #itGamewatchchef_UnkMotion0_Coll +bool itGamewatchchef_UnkMotion0_Coll(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itGamewatchchefAttributes* attrs = + ip->xC4_article_data->x4_specialAttributes; + if (0.0f != ip->x40_vel.x) { + s32 result = it_8026DAA8(gobj); + if (result & 0xC) { + ip->x40_vel.x *= -attrs->x4; + } + if (result & 3) { + it_802C875C(gobj); + } + } + return false; +} void it_802C875C(Item_GObj* gobj) { @@ -62,7 +91,28 @@ bool itGamewatchchef_UnkMotion1_Anim(Item_GObj* gobj) void itGamewatchchef_UnkMotion1_Phys(Item_GObj* gobj) {} -/// #itGamewatchchef_UnkMotion1_Coll +bool itGamewatchchef_UnkMotion1_Coll(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itGamewatchchefAttributes* attrs = + ip->xC4_article_data->x4_specialAttributes; + PAD_STACK(8); + if (0.0f != ip->x40_vel.x) { + s32 result = it_8026DAA8(gobj); + if (result & 0xC) { + ip->x40_vel.x *= -attrs->x4; + } + if (result & 3) { + ip = GET_ITEM(gobj); + attrs = ip->xC4_article_data->x4_specialAttributes; + ip->x40_vel.y = 0.0f; + ip->x40_vel.x = 0.0f; + it_80275158(gobj, attrs->xC); + Item_80268E5C(gobj, 1, ITEM_ANIM_UPDATE); + } + } + return false; +} bool it_2725_Logic112_Clanked(Item_GObj* gobj) { diff --git a/src/melee/it/items/itgamewatchchef.h b/src/melee/it/items/itgamewatchchef.h index 9379f46664..24f3e89dc4 100644 --- a/src/melee/it/items/itgamewatchchef.h +++ b/src/melee/it/items/itgamewatchchef.h @@ -11,7 +11,7 @@ /* 2C837C */ HSD_GObj* it_802C837C(Item_GObj*, Vec3*, enum_t, u32, float); /* 2C847C */ bool itGameWatchChef_Logic112_DmgDealt(Item_GObj*); -/* 2C84A0 */ UNK_RET it_802C84A0(UNK_PARAMS); +/* 2C84A0 */ void it_802C84A0(Item_GObj* gobj, s32 index); /* 2C8540 */ bool itGamewatchchef_UnkMotion0_Anim(Item_GObj* gobj); /* 2C8690 */ void itGamewatchchef_UnkMotion0_Phys(Item_GObj* gobj); /* 2C86D0 */ bool itGamewatchchef_UnkMotion0_Coll(Item_GObj* gobj); From a5aa81a1d4772d23b5c9c8791f3d4c895bebd53c Mon Sep 17 00:00:00 2001 From: John Winston Garth Date: Sun, 15 Mar 2026 02:00:55 -0500 Subject: [PATCH 3/6] it_items_itpikachuthunder: decompile it_802B211C and it_802B22B8 Co-Authored-By: Claude Opus 4.6 --- src/melee/it/items/itpikachuthunder.c | 33 +++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/melee/it/items/itpikachuthunder.c b/src/melee/it/items/itpikachuthunder.c index 6fae76ebdd..2ce7a7f448 100644 --- a/src/melee/it/items/itpikachuthunder.c +++ b/src/melee/it/items/itpikachuthunder.c @@ -8,6 +8,7 @@ #include "it/types.h" #include +#include int it_802B1DEC(Item_GObj* arg0) { @@ -66,7 +67,17 @@ bool itPikachuthunder_UnkMotion0_Anim(Item_GObj* gobj) return false; } -/// #it_802B211C +void it_802B211C(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itPikachuthunderAttributes* attrs = + ip->xC4_article_data->x4_specialAttributes; + Item_80268E5C(gobj, 1, ITEM_ANIM_UPDATE); + it_80275158(gobj, attrs->x0); + ip->x40_vel = ip->xDD4_itemVar.pikachuthunder.x1C; + ip->xDCC_flag.b3 = 1; + it_8026BB20(gobj); +} bool itPikachuthunder_UnkMotion1_Anim(Item_GObj* gobj) { @@ -80,7 +91,25 @@ bool itPikachuthunder_UnkMotion1_Anim(Item_GObj* gobj) /// #itPikachuthunder_UnkMotion1_Coll -/// #it_802B22B8 +s32 it_802B22B8(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + Item_80268E5C(gobj, 2, ITEM_UNK_0x1 | ITEM_HIT_PRESERVE); + ip->xD44_lifeTimer = ip->xDD4_itemVar.pikachuthunder.x14; + ip->xDD4_itemVar.pikachuthunder.x4 = 1; + { + Item* ip2 = GET_ITEM(gobj); + Item_GObj* child = ip2->xDD4_itemVar.pikachuthunder.x34; + if (child != NULL) { + Item* child_ip = GET_ITEM(child); + if (child_ip != NULL) { + child_ip->xDD4_itemVar.pikachuthunder.x28 = ip2->pos; + child_ip->xDD4_itemVar.pikachuthunder.x4 = 1; + } + } + } + PAD_STACK(8); +} /// #itPikachuthunder_UnkMotion2_Anim From cb6681782b8a50062592fe1cec1be926eb61d63f Mon Sep 17 00:00:00 2001 From: John Winston Garth Date: Sun, 15 Mar 2026 07:47:48 -0500 Subject: [PATCH 4/6] it_items_itlugia: decompile it_2725_Logic17_Spawned, itLugia_UnkMotion2_Phys, it_802D1DD8 Co-Authored-By: Claude Opus 4.6 --- src/melee/it/itCommonItems.h | 5 ++-- src/melee/it/items/itlugia.c | 46 +++++++++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/melee/it/itCommonItems.h b/src/melee/it/itCommonItems.h index cc1a7ace02..3bc56671bc 100644 --- a/src/melee/it/itCommonItems.h +++ b/src/melee/it/itCommonItems.h @@ -189,7 +189,7 @@ typedef struct itLugiaAttributes { /* +08 */ f32 x8; /* +0C */ f32 xC; /* +10 */ f32 x10; - /* +14 */ f32 x14; + /* +14 */ s32 x14; /* +18 */ f32 x18; } itLugiaAttributes; @@ -1540,7 +1540,8 @@ typedef struct itCrazyHandBombAttributes { typedef struct itLugia_ItemVars { /* +00 ip+DD4 */ u8 x0_pad[0x60]; /* +60 ip+E34 */ s32 x60; - /* +64 ip+E38 */ u8 x64_pad[0x18]; + /* +64 ip+E38 */ Vec3 x64; + /* +70 ip+E44 */ u8 x70_pad[0xC]; /* +7C ip+E50 */ Vec3 xE50; } itLugia_ItemVars; diff --git a/src/melee/it/items/itlugia.c b/src/melee/it/items/itlugia.c index ac85aabef0..7254ddc1a2 100644 --- a/src/melee/it/items/itlugia.c +++ b/src/melee/it/items/itlugia.c @@ -4,13 +4,26 @@ #include #include "ef/eflib.h" +#include "gr/stage.h" #include "it/inlines.h" #include "it/it_266F.h" #include "it/it_26B1.h" #include "it/it_2725.h" #include "it/item.h" -/// #it_2725_Logic17_Spawned +void it_2725_Logic17_Spawned(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itLugiaAttributes* attrs = ip->xC4_article_data->x4_specialAttributes; + ip->xDD4_itemVar.lugia.x64 = ip->pos; + ip->facing_dir = it_804DD450; + ip->xDAC_itcmd_var0 = 0; + ip->xDD4_itemVar.lugia.x60 = attrs->x14; + ip->xDCC_flag.b3 = 0; + it_802D1D40(gobj); + it_80279CDC(gobj, attrs->x0); + ip->xDD4_itemVar.lugia.xE50.x = it_804DD450; +} void it_802D14D0(void) {} @@ -76,7 +89,22 @@ bool itLugia_UnkMotion2_Anim(Item_GObj* gobj) return false; } -/// #itLugia_UnkMotion2_Phys +void itLugia_UnkMotion2_Phys(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itLugiaAttributes* attrs = ip->xC4_article_data->x4_specialAttributes; + it_8027A344(gobj); + if (it_80272C6C(gobj)) { + ip->xDD4_itemVar.lugia.xE50.x += attrs->x8; + } else { + ip->xDD4_itemVar.lugia.xE50.x += attrs->xC; + } + ip->x40_vel.y += ip->xDD4_itemVar.lugia.xE50.x; + if (ip->pos.y > Stage_GetBlastZoneTopOffset()) { + ip->x40_vel.y = it_804DD450; + it_802D16D4(gobj); + } +} bool itLugia_UnkMotion2_Coll(Item_GObj* gobj) { @@ -220,7 +248,19 @@ bool it_802D1DB4(Item_GObj* gobj) return false; } -/// #it_802D1DD8 +void it_802D1DD8(Item_GObj* gobj) +{ + if (it_8027A09C(gobj)) { + Item* old_ip = GET_ITEM(gobj); + Item* ip; + it_80273454(gobj); + ip = GET_ITEM(gobj); + Item_80268E5C(gobj, 1, ITEM_ANIM_UPDATE); + ip->entered_hitlag = efLib_PauseAll; + ip->exited_hitlag = efLib_ResumeAll; + old_ip->xDD1_flag.b1 = 1; + } +} bool it_802D1E64(Item_GObj* gobj) { From 3975018dded2b49e5e6ea1485ca9f0a743a7c941 Mon Sep 17 00:00:00 2001 From: John Winston Garth Date: Sun, 15 Mar 2026 07:29:34 -0500 Subject: [PATCH 5/6] it_items_ithouou: decompile it_2725_Logic18_Spawned, itHouou_UnkMotion2_Phys, it_802D2B4C, it_802D2C78 Decompile four functions in ithouou.c (Ho-Oh Pokemon item): - it_2725_Logic18_Spawned: Pokemon spawn initialization - itHouou_UnkMotion2_Phys: Motion state 2 physics (ascent with blast zone check) - it_802D2B4C: Accessory callback (fire breath spawning) - it_802D2C78: State transition on hit detection Also updates itHououAttr struct fields (x8, xC, x14) and it_802D2B4C/it_802D2D2C header signatures. Co-Authored-By: Claude Opus 4.6 --- src/melee/it/itCommonItems.h | 6 ++-- src/melee/it/items/ithouou.c | 69 +++++++++++++++++++++++++++++++++--- src/melee/it/items/ithouou.h | 4 +-- 3 files changed, 71 insertions(+), 8 deletions(-) diff --git a/src/melee/it/itCommonItems.h b/src/melee/it/itCommonItems.h index 3bc56671bc..5b9d9e365d 100644 --- a/src/melee/it/itCommonItems.h +++ b/src/melee/it/itCommonItems.h @@ -176,9 +176,11 @@ typedef struct itKyasarinEggAttributes { typedef struct itHououAttr { /* +00 */ f32 timer; - /* +04 */ u8 x4_pad[0xC]; + /* +04 */ u8 x4_pad[4]; + /* +08 */ f32 x8; + /* +0C */ f32 xC; /* +10 */ f32 x10; - /* +14 */ u8 x14_pad[0x4]; + /* +14 */ s32 x14; /* +18 */ f32 x18; /* +1C */ f32 x1C; } itHououAttr; diff --git a/src/melee/it/items/ithouou.c b/src/melee/it/items/ithouou.c index daa076f573..d8c6c9e69c 100644 --- a/src/melee/it/items/ithouou.c +++ b/src/melee/it/items/ithouou.c @@ -4,6 +4,7 @@ #include #include "ef/eflib.h" +#include "gr/stage.h" #include "it/inlines.h" #include "it/it_266F.h" #include "it/it_26B1.h" @@ -12,7 +13,20 @@ #include "it/item.h" #include "mp/mplib.h" -/// #it_2725_Logic18_Spawned +void it_2725_Logic18_Spawned(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itHououAttr* attr = ip->xC4_article_data->x4_specialAttributes; + *(Vec3*) &ip->xDD4_itemVar.pokemon.x64 = ip->pos; + ip->facing_dir = 0.0F; + ip->xDAC_itcmd_var0 = 0; + ip->xDB0_itcmd_var1 = 0; + ip->xDD4_itemVar.pokemon.timer = attr->x14; + ip->xDCC_flag.b3 = false; + it_802D2BE0(gobj); + it_80279CDC(gobj, attr->timer); + ip->xDD4_itemVar.pokemon.xE44 = 0.0F; +} void it_802D25B8(void) {} @@ -77,7 +91,26 @@ bool itHouou_UnkMotion2_Anim(Item_GObj* gobj) return false; } -/// #itHouou_UnkMotion2_Phys +void itHouou_UnkMotion2_Phys(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + itHououAttr* attr = ip->xC4_article_data->x4_specialAttributes; + + it_8027A344(gobj); + + if (it_80272C6C(gobj)) { + ip->xDD4_itemVar.pokemon.xE44 += attr->x8; + } else { + ip->xDD4_itemVar.pokemon.xE44 += attr->xC; + } + + ip->x40_vel.y += ip->xDD4_itemVar.pokemon.xE44; + + if (ip->pos.y > Stage_GetBlastZoneTopOffset()) { + ip->x40_vel.y = 0.0F; + it_802D27B0(gobj); + } +} bool itHouou_UnkMotion2_Coll(Item_GObj* gobj) { @@ -229,7 +262,23 @@ bool itHouou_UnkMotion5_Coll(Item_GObj* gobj) return false; } -/// #it_802D2B4C +void it_802D2B4C(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + + if (ip->xDAC_itcmd_var0 != 0) { + ip->xDAC_itcmd_var0 = 0; + it_8027ADEC(0x46F, gobj, ip->xBBC_dynamicBoneTable->bones[16], + 1.3F); + it_8027ADEC(0x46F, gobj, ip->xBBC_dynamicBoneTable->bones[17], + 1.3F); + } + + if (ip->xDB0_itcmd_var1 != 0) { + ip->xDB0_itcmd_var1 = 0; + it_802D2D2C(gobj); + } +} void it_802D2BE0(Item_GObj* gobj) { @@ -247,7 +296,19 @@ bool it_802D2C54(Item_GObj* gobj) return false; } -/// #it_802D2C78 +void it_802D2C78(Item_GObj* gobj) +{ + if (it_8027A09C(gobj)) { + Item* ip = GET_ITEM(gobj); + Item* ip2; + it_80273454(gobj); + ip2 = GET_ITEM(gobj); + Item_80268E5C(gobj, 1, ITEM_ANIM_UPDATE); + ip2->entered_hitlag = efLib_PauseAll; + ip2->exited_hitlag = efLib_ResumeAll; + ip->xDD1_flag.b1 = true; + } +} bool it_802D2D04(Item_GObj* gobj) { diff --git a/src/melee/it/items/ithouou.h b/src/melee/it/items/ithouou.h index 2124293ea9..b82ad1b31c 100644 --- a/src/melee/it/items/ithouou.h +++ b/src/melee/it/items/ithouou.h @@ -27,12 +27,12 @@ /* 2D2AC0 */ bool itHouou_UnkMotion5_Anim(Item_GObj* gobj); /* 2D2B24 */ void itHouou_UnkMotion5_Phys(Item_GObj* gobj); /* 2D2B44 */ bool itHouou_UnkMotion5_Coll(Item_GObj* gobj); -/* 2D2B4C */ UNK_RET it_802D2B4C(UNK_PARAMS); +/* 2D2B4C */ void it_802D2B4C(Item_GObj*); /* 2D2BE0 */ void it_802D2BE0(Item_GObj*); /* 2D2C54 */ bool it_802D2C54(Item_GObj* gobj); /* 2D2C78 */ void it_802D2C78(Item_GObj* gobj); /* 2D2D04 */ bool it_802D2D04(Item_GObj* gobj); -/* 2D2D2C */ UNK_RET it_802D2D2C(UNK_PARAMS); +/* 2D2D2C */ void it_802D2D2C(Item_GObj*); /* 2D2E80 */ void it_2725_Logic42_Spawned(Item_GObj*); /* 2D2ED0 */ void it_802D2ED0(Item_GObj*, Item_GObj*); /* 2D2EF0 */ void it_802D2EF0(Item_GObj* gobj); From a35d851f6b3b0666a65283ab4b443ad54d8bc61e Mon Sep 17 00:00:00 2001 From: John Winston Garth Date: Sun, 15 Mar 2026 07:11:01 -0500 Subject: [PATCH 6/6] it_items_itoldkuri: decompile it_802D73F0 Co-Authored-By: Claude Opus 4.6 --- src/melee/it/items/itoldkuri.c | 77 ++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/src/melee/it/items/itoldkuri.c b/src/melee/it/items/itoldkuri.c index c27452d7e5..123999af9c 100644 --- a/src/melee/it/items/itoldkuri.c +++ b/src/melee/it/items/itoldkuri.c @@ -23,7 +23,20 @@ void itOldKuri_Logic29_EvtUnk(Item_GObj* gobj, Item_GObj* ref_gobj) it_8026B894(gobj, ref_gobj); } -/// #it_802D73F0 +void it_802D73F0(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + it_8027B730(gobj); + ip->facing_dir = it_8026B684(&ip->pos); + ip->xD5C = 0; + ip->xDC8_word.flags.x15 = 0; + it_8027542C(gobj); + it_80275270(gobj); + it_80274740(gobj); + ip->xDD4_itemVar.oldkuri.xDF8 = 0; + ip->xDD4_itemVar.oldkuri.xDF4 = 0.0f; + it_802D747C(gobj); +} void it_802D747C(Item_GObj* gobj) {} @@ -116,11 +129,52 @@ void it_802D775C(Item_GObj* gobj) it_802D848C(gobj, 2, ITEM_ANIM_UPDATE); } -/// #itOldkuri_UnkMotion2_Anim +bool itOldkuri_UnkMotion2_Anim(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + if (!it_80272C6C(gobj)) { + if (ip->facing_dir == 1.0f) { + ip->xDD4_itemVar.oldkuri.xDFC = 1; + it_802D848C(gobj, 2, 0x12); + } else { + Item* ip = GET_ITEM(gobj); + itOldkuriAttributes* attr = + ip->xC4_article_data->x4_specialAttributes; + ip->xDD4_itemVar.oldkuri.xDF4 = + ip->facing_dir * ((f32*) attr->x0)[1]; + ip->x40_vel.x = ip->xDD4_itemVar.oldkuri.xDF4; + ip->x40_vel.z = 0.0f; + ip->x40_vel.y = 0.0f; + ip->facing_dir = -1.0f; + ip->xDD4_itemVar.oldkuri.xDFC = 0; + it_802D848C(gobj, 1, ITEM_ANIM_UPDATE); + } + } + return false; +} /// #itOldkuri_UnkMotion2_Phys -/// #itOldkuri_UnkMotion2_Coll +bool itOldkuri_UnkMotion2_Coll(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + PAD_STACK(8); + it_8026D62C(gobj, it_802D7AF0); + if (it_80276308(gobj) == 8 && ip->xDD4_itemVar.oldkuri.xDFC != 0) { + Item* ip = GET_ITEM(gobj); + itOldkuriAttributes* attr = + ip->xC4_article_data->x4_specialAttributes; + ip->xDD4_itemVar.oldkuri.xDF4 = + ip->facing_dir * ((f32*) attr->x0)[1]; + ip->x40_vel.x = ip->xDD4_itemVar.oldkuri.xDF4; + ip->x40_vel.z = 0.0f; + ip->x40_vel.y = 0.0f; + ip->facing_dir = -1.0f; + ip->xDD4_itemVar.oldkuri.xDFC = 0; + it_802D848C(gobj, 1, ITEM_ANIM_UPDATE); + } + return it_8027C794(gobj); +} bool itOldkuri_UnkMotion3_Anim(Item_GObj* gobj) { @@ -242,7 +296,22 @@ bool itOldkuri_UnkMotion6_Coll(Item_GObj* gobj) return it_8027C824(gobj, NULL); } -/// #itOldkuri_UnkMotion9_Anim +bool itOldkuri_UnkMotion9_Anim(Item_GObj* gobj) +{ + Item* ip = GET_ITEM(gobj); + PAD_STACK(8); + if (!it_80272C6C(gobj)) { + if (ip->ground_or_air == GA_Air) { + Item_80268E5C(gobj, 9, ITEM_ANIM_UPDATE); + } else { + it_8027CAD8(gobj); + it_8027C0A8(gobj, 0.0f, 5.0f); + it_802756E0(gobj); + it_802D848C(gobj, 0, ITEM_ANIM_UPDATE); + } + } + return false; +} void itOldkuri_UnkMotion9_Phys(Item_GObj* gobj) {