From ba49ef6a0e7ad1b4e7e7dc83927555c7cc18543e Mon Sep 17 00:00:00 2001 From: zelda2773 Date: Mon, 30 Mar 2020 21:56:36 -0400 Subject: Decompiled ovl_Obj_Comb --- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c | 192 ++++++++++++++++++++++++-- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h | 10 +- 2 files changed, 191 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index 38099bca4..8c3508807 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -8,7 +8,11 @@ void ObjComb_Destroy(ObjComb* this, GlobalContext* globalCtx); void ObjComb_Update(ObjComb* this, GlobalContext* globalCtx); void ObjComb_Draw(ObjComb* this, GlobalContext* globalCtx); -/* +void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx); +void func_80B91E4C(ObjComb* this, GlobalContext* globalCtx); +void func_80B91FB0(ObjComb* this); +void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx); + const ActorInit Obj_Comb_InitVars = { ACTOR_OBJ_COMB, ACTORTYPE_PROP, @@ -21,19 +25,187 @@ const ActorInit Obj_Comb_InitVars = { (ActorFunc)ObjComb_Update, (ActorFunc)ObjComb_Draw, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/func_80B91B60.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/func_80B91E4C.s") +UNK_TYPE D_80B922E0[] = { + 0x00000000, 0x00000000, 0x00000000, 0x4001FFFE, 0x00000000, 0x00010100, 0x00000000, 0x00000000, 0x000F0064, +}; + +UNK_TYPE D_80B92304[] = { + 0x0A000909, + 0x20000000, + 0x00000001, + &D_80B922E0, +}; + +InitChainEntry D_80B92314[] = { + ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE), + ICHAIN_F32(unk_F4, 1100, ICHAIN_CONTINUE), + ICHAIN_F32(unk_F8, 100, ICHAIN_CONTINUE), + ICHAIN_F32(unk_FC, 900, ICHAIN_STOP), +}; + +extern UNK_TYPE D_050095B0; +extern UNK_TYPE D_05009940; + +void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { + Vec3f pos1; + Vec3f posSum; + Vec3f pos2; + Gfx** dlist; + + s16 scale; + s16 phi_s2; + s16 gravityInfluence; + char u0; + char rotSpeed; + + f32 rand1; + f32 rand2; + s32 i; + + dlist = &D_05009940; + + phi_s2 = 0; + for (i = 0; i < 31; i++) { + phi_s2 += 20000; + rand1 = Math_Rand_ZeroOne() * 10.0f; + + pos1.x = Math_Sins(phi_s2) * rand1; + pos1.y = (i - 15) * 0.7f; + pos1.z = Math_Coss(phi_s2) * rand1; + + Math_Vec3f_Sum(&pos1, &this->actor.posRot.pos, &posSum); + + pos2.x = (Math_Rand_ZeroOne() - 0.5f) + pos1.x * 0.5f; + pos2.y = (Math_Rand_ZeroOne() - 0.5f) + pos1.y * 0.6f; + pos2.z = (Math_Rand_ZeroOne() - 0.5f) + pos1.z * 0.5f; + + scale = Math_Rand_ZeroOne() * 72.0f + 25.0f; + + if (scale < 40) { + gravityInfluence = -200; + rotSpeed = 40; + } else if (scale < 70) { + gravityInfluence = -280; + rotSpeed = 30; + } else { + gravityInfluence = -340; + rotSpeed = 20; + } + + rand2 = Math_Rand_ZeroOne(); + + if (rand2 < 0.1f) { + u0 = 96; + } else if (rand2 < 0.8f) { + u0 = 64; + } else { + u0 = 32; + } + + Effect_SpawnFragment(globalCtx, &posSum, &pos2, &posSum, gravityInfluence, u0, rotSpeed, 4, 0, scale, 0, 0, 80, + -1, 2, dlist); + } + + posSum.x = this->actor.posRot.pos.x; + posSum.y = this->actor.posRot.pos.y - 10.0f; + posSum.z = this->actor.posRot.pos.z; + func_80033480(globalCtx, &posSum, 40.0f, 6, 70, 60, 1); +} + +void func_80B91E4C(ObjComb* this, GlobalContext* globalCtx) { + s16 params = this->actor.params & 0x1F; + + if ((params > 0) || (params < 0x1A)) { + if (params == 6) { + if (Flags_GetCollectible(globalCtx, (this->actor.params >> 8) & 0x3F) != 0) { + params = -1; + } else { + params = (params | (((this->actor.params >> 8) & 0x3F) << 8)); + } + } else if (Math_Rand_ZeroOne() < 0.5f) { + params = -1; + } + if (params >= 0) { + Item_DropCollectible(globalCtx, &this->actor.posRot, params); + } + } +} + +void ObjComb_Init(ObjComb* this, GlobalContext* globalCtx) { + s32 pad; + + Actor_ProcessInitChain(&this->actor, &D_80B92314); + func_8005BBF8(globalCtx, &this->unk_150); + func_8005C050(globalCtx, &this->unk_150, this, &D_80B92304, &this->unk_170); + func_80B91FB0(this); +} + +void ObjComb_Destroy(ObjComb* this, GlobalContext* globalCtx) { + func_8005BCC8(globalCtx, &this->unk_150); +} + +void func_80B91FB0(ObjComb* this) { + this->actionFunc = func_80B91FC0; +} + +void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx) { + s32 flags; + + this->unk_1B0 -= 50; + if (this->unk_1B0 < 0) { + this->unk_1B0 = 0; + } + + if ((this->unk_161 & 2) != 0) { + this->unk_161 &= 0xFFFD; + flags = this->colliderBody->colliding->toucher.flags; + if (flags & 0x4001F866) { + this->unk_1B0 = 1500; + } else { + ObjComb_Break(this, globalCtx); + func_80B91E4C(this, globalCtx); + Actor_Kill(this); + } + } else { + Actor_CollisionCheck_SetAC(globalCtx, &globalCtx->sub_11E60, &this->unk_150); + } + + if (this->actor.update != NULL) { + Actor_CollisionCheck_SetOT(globalCtx, &globalCtx->sub_11E60, &this->unk_150); + } +} + +void ObjComb_Update(ObjComb* this, GlobalContext* globalCtx) { + this->unk_1B2 += 0x2EE0; + this->actionFunc(&this->actor, globalCtx); + this->actor.shape.rot.x = + (s32)((Math_Sins(this->unk_1B2) * (f32)this->unk_1B0) + (f32)this->actor.initPosRot.rot.x); +} + +void ObjComb_Draw(ObjComb* this, GlobalContext* globalCtx) { + s32 pad; + GraphicsContext* gfxCtx; + Gfx* gfxArr[4]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/ObjComb_Init.s") + gfxCtx = globalCtx->state.gfxCtx; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/ObjComb_Destroy.s") + func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_obj_comb.c", 369); + func_80093D18(globalCtx->state.gfxCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/func_80B91FB0.s") + Matrix_Translate(this->actor.posRot.pos.x, this->actor.posRot.pos.y + (118.0f * this->actor.scale.y), + this->actor.posRot.pos.z, 0); + Matrix_RotateY((f32)this->actor.shape.rot.y * 0.0000958738f, 1); + Matrix_RotateX((f32)this->actor.shape.rot.x * 0.0000958738f, 1); + Matrix_RotateZ((f32)this->actor.shape.rot.z * 0.0000958738f, 1); + Matrix_Translate(0, -(this->actor.scale.y * 118.0f), 0, 1); + Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, 1); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/func_80B91FC0.s") + gSPMatrix(gfxCtx->polyOpa.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_obj_comb.c", 394), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/ObjComb_Update.s") + gSPDisplayList(gfxCtx->polyOpa.p++, &D_050095B0); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Comb/ObjComb_Draw.s") + func_800628A4(0, &this->unk_150); + func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_obj_comb.c", 402); +} diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h index 650ad1e26..fcbf6676d 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h @@ -6,7 +6,15 @@ typedef struct { /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0x68]; + /* 0x014C */ ActorFunc actionFunc; + /* 0x0150 */ char unk_150[0x11]; + /* 0x0161 */ u8 unk_161; + /* 0x0162 */ char unk_162[0xA]; + /* 0x016C */ ColliderBody* colliderBody; + /* 0x0170 */ char unk_170[0x2C]; + /* 0x019C */ char unk_19C[0x14]; + /* 0x01B0 */ s16 unk_1B0; + /* 0x01B2 */ s16 unk_1B2; } ObjComb; // size = 0x01B4 extern const ActorInit Obj_Comb_InitVars; -- cgit v1.2.3 From c05de00a96bd5d93ff6b86508171ae1fb1d2bec5 Mon Sep 17 00:00:00 2001 From: zelda2773 Date: Mon, 30 Mar 2020 23:46:54 -0400 Subject: ovl_Obj_Comb fix struct --- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c | 38 +++++++++++---------------- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h | 5 ++-- 2 files changed, 17 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index 8c3508807..0d12c451e 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -51,21 +51,16 @@ void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { Vec3f pos1; Vec3f posSum; Vec3f pos2; - Gfx** dlist; - + Gfx** dlist = &D_05009940; s16 scale; - s16 phi_s2; + s16 phi_s2 = 0; s16 gravityInfluence; char u0; char rotSpeed; - f32 rand1; f32 rand2; s32 i; - dlist = &D_05009940; - - phi_s2 = 0; for (i = 0; i < 31; i++) { phi_s2 += 20000; rand1 = Math_Rand_ZeroOne() * 10.0f; @@ -81,7 +76,6 @@ void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { pos2.z = (Math_Rand_ZeroOne() - 0.5f) + pos1.z * 0.5f; scale = Math_Rand_ZeroOne() * 72.0f + 25.0f; - if (scale < 40) { gravityInfluence = -200; rotSpeed = 40; @@ -94,7 +88,6 @@ void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { } rand2 = Math_Rand_ZeroOne(); - if (rand2 < 0.1f) { u0 = 96; } else if (rand2 < 0.8f) { @@ -136,13 +129,13 @@ void ObjComb_Init(ObjComb* this, GlobalContext* globalCtx) { s32 pad; Actor_ProcessInitChain(&this->actor, &D_80B92314); - func_8005BBF8(globalCtx, &this->unk_150); - func_8005C050(globalCtx, &this->unk_150, this, &D_80B92304, &this->unk_170); + func_8005BBF8(globalCtx, &this->collider); + func_8005C050(globalCtx, &this->collider, this, &D_80B92304, &this->unk_170); func_80B91FB0(this); } void ObjComb_Destroy(ObjComb* this, GlobalContext* globalCtx) { - func_8005BCC8(globalCtx, &this->unk_150); + func_8005BCC8(globalCtx, &this->collider); } void func_80B91FB0(ObjComb* this) { @@ -157,8 +150,8 @@ void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx) { this->unk_1B0 = 0; } - if ((this->unk_161 & 2) != 0) { - this->unk_161 &= 0xFFFD; + if ((this->collider.collideFlags & 0x2) != 0) { + this->collider.collideFlags &= ~0x2; flags = this->colliderBody->colliding->toucher.flags; if (flags & 0x4001F866) { this->unk_1B0 = 1500; @@ -168,19 +161,18 @@ void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx) { Actor_Kill(this); } } else { - Actor_CollisionCheck_SetAC(globalCtx, &globalCtx->sub_11E60, &this->unk_150); + Actor_CollisionCheck_SetAC(globalCtx, &globalCtx->sub_11E60, &this->collider); } if (this->actor.update != NULL) { - Actor_CollisionCheck_SetOT(globalCtx, &globalCtx->sub_11E60, &this->unk_150); + Actor_CollisionCheck_SetOT(globalCtx, &globalCtx->sub_11E60, &this->collider); } } void ObjComb_Update(ObjComb* this, GlobalContext* globalCtx) { - this->unk_1B2 += 0x2EE0; + this->unk_1B2 += 12000; this->actionFunc(&this->actor, globalCtx); - this->actor.shape.rot.x = - (s32)((Math_Sins(this->unk_1B2) * (f32)this->unk_1B0) + (f32)this->actor.initPosRot.rot.x); + this->actor.shape.rot.x = Math_Sins(this->unk_1B2) * this->unk_1B0 + this->actor.initPosRot.rot.x; } void ObjComb_Draw(ObjComb* this, GlobalContext* globalCtx) { @@ -195,9 +187,9 @@ void ObjComb_Draw(ObjComb* this, GlobalContext* globalCtx) { Matrix_Translate(this->actor.posRot.pos.x, this->actor.posRot.pos.y + (118.0f * this->actor.scale.y), this->actor.posRot.pos.z, 0); - Matrix_RotateY((f32)this->actor.shape.rot.y * 0.0000958738f, 1); - Matrix_RotateX((f32)this->actor.shape.rot.x * 0.0000958738f, 1); - Matrix_RotateZ((f32)this->actor.shape.rot.z * 0.0000958738f, 1); + Matrix_RotateY(this->actor.shape.rot.y * 0.0000958738f, 1); + Matrix_RotateX(this->actor.shape.rot.x * 0.0000958738f, 1); + Matrix_RotateZ(this->actor.shape.rot.z * 0.0000958738f, 1); Matrix_Translate(0, -(this->actor.scale.y * 118.0f), 0, 1); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, 1); @@ -206,6 +198,6 @@ void ObjComb_Draw(ObjComb* this, GlobalContext* globalCtx) { gSPDisplayList(gfxCtx->polyOpa.p++, &D_050095B0); - func_800628A4(0, &this->unk_150); + func_800628A4(0, &this->collider); func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_obj_comb.c", 402); } diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h index fcbf6676d..663a48fcc 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h @@ -7,9 +7,8 @@ typedef struct { /* 0x0000 */ Actor actor; /* 0x014C */ ActorFunc actionFunc; - /* 0x0150 */ char unk_150[0x11]; - /* 0x0161 */ u8 unk_161; - /* 0x0162 */ char unk_162[0xA]; + /* 0x0150 */ Collider collider; + /* 0x0168 */ char unk_168[0x4]; /* 0x016C */ ColliderBody* colliderBody; /* 0x0170 */ char unk_170[0x2C]; /* 0x019C */ char unk_19C[0x14]; -- cgit v1.2.3 From 730b788f6ee0f4b2a026cfa7070b7e5674a4f83f Mon Sep 17 00:00:00 2001 From: zelda2773 Date: Tue, 31 Mar 2020 00:03:53 -0400 Subject: ovl_Obj_Comb add header --- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index 0d12c451e..462363100 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -1,3 +1,9 @@ +/* + * File: z_obj_comb.c + * Overlay: ovl_Obj_Comb + * Description: Beehive + */ + #include "z_obj_comb.h" #define ROOM 0x00 @@ -37,7 +43,7 @@ UNK_TYPE D_80B92304[] = { &D_80B922E0, }; -InitChainEntry D_80B92314[] = { +InitChainEntry initChain[] = { ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE), ICHAIN_F32(unk_F4, 1100, ICHAIN_CONTINUE), ICHAIN_F32(unk_F8, 100, ICHAIN_CONTINUE), @@ -95,7 +101,6 @@ void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { } else { u0 = 32; } - Effect_SpawnFragment(globalCtx, &posSum, &pos2, &posSum, gravityInfluence, u0, rotSpeed, 4, 0, scale, 0, 0, 80, -1, 2, dlist); } @@ -128,7 +133,7 @@ void func_80B91E4C(ObjComb* this, GlobalContext* globalCtx) { void ObjComb_Init(ObjComb* this, GlobalContext* globalCtx) { s32 pad; - Actor_ProcessInitChain(&this->actor, &D_80B92314); + Actor_ProcessInitChain(&this->actor, &initChain); func_8005BBF8(globalCtx, &this->collider); func_8005C050(globalCtx, &this->collider, this, &D_80B92304, &this->unk_170); func_80B91FB0(this); -- cgit v1.2.3 From 5059e623fbc635c18655f78872711e4c71b26b0b Mon Sep 17 00:00:00 2001 From: zelda2773 Date: Tue, 31 Mar 2020 10:13:21 -0400 Subject: ovl_Obj_Comb renamed functions and variables --- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c | 42 +++++++++++++-------------- src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h | 6 ++-- 2 files changed, 24 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index 462363100..8fc88f2d7 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -15,9 +15,9 @@ void ObjComb_Update(ObjComb* this, GlobalContext* globalCtx); void ObjComb_Draw(ObjComb* this, GlobalContext* globalCtx); void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx); -void func_80B91E4C(ObjComb* this, GlobalContext* globalCtx); -void func_80B91FB0(ObjComb* this); -void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx); +void ObjComb_ChooseItemDrop(ObjComb* this, GlobalContext* globalCtx); +void ObjComb_SetWait(ObjComb* this); +void ObjComb_Wait(ObjComb* this, GlobalContext* globalCtx); const ActorInit Obj_Comb_InitVars = { ACTOR_OBJ_COMB, @@ -43,7 +43,7 @@ UNK_TYPE D_80B92304[] = { &D_80B922E0, }; -InitChainEntry initChain[] = { +static InitChainEntry initChain[] = { ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE), ICHAIN_F32(unk_F4, 1100, ICHAIN_CONTINUE), ICHAIN_F32(unk_F8, 100, ICHAIN_CONTINUE), @@ -59,21 +59,21 @@ void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { Vec3f pos2; Gfx** dlist = &D_05009940; s16 scale; - s16 phi_s2 = 0; + s16 angle = 0; s16 gravityInfluence; - char u0; - char rotSpeed; + u8 u0; + u8 rotSpeed; f32 rand1; f32 rand2; s32 i; for (i = 0; i < 31; i++) { - phi_s2 += 20000; + angle += 20000; rand1 = Math_Rand_ZeroOne() * 10.0f; - pos1.x = Math_Sins(phi_s2) * rand1; + pos1.x = Math_Sins(angle) * rand1; pos1.y = (i - 15) * 0.7f; - pos1.z = Math_Coss(phi_s2) * rand1; + pos1.z = Math_Coss(angle) * rand1; Math_Vec3f_Sum(&pos1, &this->actor.posRot.pos, &posSum); @@ -111,12 +111,12 @@ void ObjComb_Break(ObjComb* this, GlobalContext* globalCtx) { func_80033480(globalCtx, &posSum, 40.0f, 6, 70, 60, 1); } -void func_80B91E4C(ObjComb* this, GlobalContext* globalCtx) { +void ObjComb_ChooseItemDrop(ObjComb* this, GlobalContext* globalCtx) { s16 params = this->actor.params & 0x1F; if ((params > 0) || (params < 0x1A)) { if (params == 6) { - if (Flags_GetCollectible(globalCtx, (this->actor.params >> 8) & 0x3F) != 0) { + if (Flags_GetCollectible(globalCtx, (this->actor.params >> 8) & 0x3F)) { params = -1; } else { params = (params | (((this->actor.params >> 8) & 0x3F) << 8)); @@ -135,20 +135,20 @@ void ObjComb_Init(ObjComb* this, GlobalContext* globalCtx) { Actor_ProcessInitChain(&this->actor, &initChain); func_8005BBF8(globalCtx, &this->collider); - func_8005C050(globalCtx, &this->collider, this, &D_80B92304, &this->unk_170); - func_80B91FB0(this); + func_8005C050(globalCtx, &this->collider, this, &D_80B92304, &this->colliderBody); + ObjComb_SetWait(this); } void ObjComb_Destroy(ObjComb* this, GlobalContext* globalCtx) { func_8005BCC8(globalCtx, &this->collider); } -void func_80B91FB0(ObjComb* this) { - this->actionFunc = func_80B91FC0; +void ObjComb_SetWait(ObjComb* this) { + this->actionFunc = ObjComb_Wait; } -void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx) { - s32 flags; +void ObjComb_Wait(ObjComb* this, GlobalContext* globalCtx) { + s32 toucherFlags; this->unk_1B0 -= 50; if (this->unk_1B0 < 0) { @@ -157,12 +157,12 @@ void func_80B91FC0(ObjComb* this, GlobalContext* globalCtx) { if ((this->collider.collideFlags & 0x2) != 0) { this->collider.collideFlags &= ~0x2; - flags = this->colliderBody->colliding->toucher.flags; - if (flags & 0x4001F866) { + toucherFlags = this->colliderBodyPtr->colliding->toucher.flags; + if (toucherFlags & 0x4001F866) { this->unk_1B0 = 1500; } else { ObjComb_Break(this, globalCtx); - func_80B91E4C(this, globalCtx); + ObjComb_ChooseItemDrop(this, globalCtx); Actor_Kill(this); } } else { diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h index 663a48fcc..fcd17464c 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h @@ -9,9 +9,9 @@ typedef struct { /* 0x014C */ ActorFunc actionFunc; /* 0x0150 */ Collider collider; /* 0x0168 */ char unk_168[0x4]; - /* 0x016C */ ColliderBody* colliderBody; - /* 0x0170 */ char unk_170[0x2C]; - /* 0x019C */ char unk_19C[0x14]; + /* 0x016C */ ColliderBody* colliderBodyPtr; + /* 0x0170 */ ColliderBody colliderBody; + /* 0x0198 */ char unk_198[0x18]; /* 0x01B0 */ s16 unk_1B0; /* 0x01B2 */ s16 unk_1B2; } ObjComb; // size = 0x01B4 -- cgit v1.2.3