Implement func_809611BC

This commit is contained in:
Nicholas Sturgeon
2023-02-05 13:28:19 -05:00
parent e1eb7ecbc3
commit 3e9dcb018b
2 changed files with 27 additions and 2 deletions
@@ -26,6 +26,7 @@ void func_809612BC(ObjMure2*);
extern f32 D_80961590[];
extern f32 D_8096159C[];
extern s16 D_809615A8[];
#if 0
ActorInit Obj_Mure2_InitVars = {
@@ -71,7 +72,29 @@ void func_80961018(s16* arg0, ObjMure2* arg1) {
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Mure2/func_8096104C.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Mure2/func_809611BC.s")
void func_809611BC(ObjMure2* arg0, PlayState* arg1) {
s16 var_v0 = D_809615A8[arg0->actor.params & 3];
s32 var_s2 = 0;
if (var_v0 > 0) {
do {
if (!((arg0->unk_178 >> var_s2) & 1)) {
if (arg0->unk_148[var_s2] != NULL) {
if (Actor_HasParent(arg0->unk_148[var_s2], arg1) != 0) {
arg0->unk_178 |= 1 << var_s2;
} else {
Actor_Kill(arg0->unk_148[var_s2]);
}
arg0->unk_148[var_s2] = NULL;
}
} else {
arg0->unk_148[var_s2] = NULL;
}
var_v0 = D_809615A8[arg0->actor.params & 3];
} while (++var_s2 < var_v0);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Mure2/func_809612BC.s")
@@ -10,7 +10,9 @@ typedef void (*ObjMure2ActionFunc)(struct ObjMure2*, PlayState*);
typedef struct ObjMure2 {
/* 0x000 */ Actor actor;
/* 0x144 */ ObjMure2ActionFunc actionFunc;
/* 0x148 */ char pad_148[0x34]; /* maybe part of actionFunc[0xE]? */
/* 0x148 */ Actor* unk_148[0xC]; /* inferred */
/* 0x178 */ u16 unk_178; /* inferred */
/* 0x17A */ char pad_17A[2];
/* 0x17C */ f32 unk_17C; /* inferred */
} ObjMure2; /* size = 0x180 */