From f75aa148a39330329f9d8dfe2149ad068032b607 Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Mon, 22 Aug 2022 20:05:42 -0500 Subject: [PATCH] core2/code_763D0.c done --- progress/progress_core2.svg | 6 +- progress/progress_total.svg | 4 +- src/BGS/code_3420.c | 12 +- src/FP/code_19E0.c | 2 +- src/core2/code_5BEB0.c | 2 +- src/core2/code_763D0.c | 19 ++- src/core2/code_7AF80.c | 283 ++++++++++++++++++++++++++++++++++-- src/core2/code_94A20.c | 21 +-- src/core2/code_A5BC0.c | 31 +++- subyaml/core2.us.v10.yaml | 4 +- 10 files changed, 340 insertions(+), 44 deletions(-) diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index 69fd841f..1fd1ead8 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core2 - 81.7157% - 81.7157% + 81.9413% + 81.9413% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 0bd33c51..64934eb1 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 84.4916% - 84.4916% + 84.6210% + 84.6210% \ No newline at end of file diff --git a/src/BGS/code_3420.c b/src/BGS/code_3420.c index a2e14072..eea26262 100644 --- a/src/BGS/code_3420.c +++ b/src/BGS/code_3420.c @@ -374,9 +374,9 @@ void chvilegame_player_consume_piece(Actor *this) { item_inc(ITEM_16_LIFE); func_8025A6EC(COMUSIC_15_EXTRA_LIFE_COLLECTED, 0x7FF8); } - timedFunc_set_1(0.0f, func_802FDCB8, 0x1A); - timedFunc_set_1(0.5f, func_802FDCB8, 0x1A); - timedFunc_set_1(1.0f, func_802FDCB8, 0x1A); + timedFunc_set_1(0.0f, (TFQM1)func_802FDCB8, ITEM_1A_PLAYER_VILE_SCORE); + timedFunc_set_1(0.5f, (TFQM1)func_802FDCB8, ITEM_1A_PLAYER_VILE_SCORE); + timedFunc_set_1(1.0f, (TFQM1)func_802FDCB8, ITEM_1A_PLAYER_VILE_SCORE); } func_8028F6B8(BS_INTR_17, (i_ptr->type != YUMBLIE) ? ASSET_3F7_MODEL_GRUMBLIE : ASSET_3F6_MODEL_YUMBLIE); if (!is_correct_type) { @@ -406,9 +406,9 @@ bool chvilegame_cpu_consume_piece(ActorMarker *marker, f32 position[3]) { for(i_ptr = begin; i_ptr < end; i_ptr++){ if ((ml_vec3f_distance(i_ptr->position, position) < 50.0f) && func_8038B684(i_ptr->marker)) { local->vile_score++; - timedFunc_set_1(0.0f, func_802FDCB8, 0x1B); - timedFunc_set_1(0.5f, func_802FDCB8, 0x1B); - timedFunc_set_1(1.0f, func_802FDCB8, 0x1B); + timedFunc_set_1(0.0f, (TFQM1)func_802FDCB8, ITEM_1B_VILE_VILE_SCORE); + timedFunc_set_1(0.5f, (TFQM1)func_802FDCB8, ITEM_1B_VILE_VILE_SCORE); + timedFunc_set_1(1.0f, (TFQM1)func_802FDCB8, ITEM_1B_VILE_VILE_SCORE); return TRUE; } } diff --git a/src/FP/code_19E0.c b/src/FP/code_19E0.c index 50cad812..835f2a60 100644 --- a/src/FP/code_19E0.c +++ b/src/FP/code_19E0.c @@ -3,7 +3,7 @@ #include "variables.h" typedef struct { - u8 pad0[1]; + u8 unk0; u8 unk1; } ActorLocal_FP_19E0; diff --git a/src/core2/code_5BEB0.c b/src/core2/code_5BEB0.c index 37b43999..c39bfd8b 100644 --- a/src/core2/code_5BEB0.c +++ b/src/core2/code_5BEB0.c @@ -105,7 +105,7 @@ void mapSavestate_save(enum map_e map){ // for(s0 = 0x20; func_803083B0((((*mssp)[s0 >> 5]) & (1 << (s0 & 0x1f)))? 1 : 0) != -1; s0++); // func_80308230(0); // tmp = *mssp; -// func_8032A09C(tmp, (tmp + 16*((s0 + 0x7f) >> 7))); +// func_8032A09C(tmp, (tmp + 0x10*((s0 + 0x7f) >> 7))); // free(*mssp); // *mssp = NULL; // } diff --git a/src/core2/code_763D0.c b/src/core2/code_763D0.c index a6b9120a..bd7a1e54 100644 --- a/src/core2/code_763D0.c +++ b/src/core2/code_763D0.c @@ -121,7 +121,7 @@ extern struct8s D_80369960[] = { 0.0f, 0.0f, 0.0f, 0.0f, NULL, {0}, 0.0f }, - }; +}; extern s32 D_80276588; extern s32 D_8027658C; @@ -312,6 +312,19 @@ void func_802FDC80(enum item_e item_id, struct8s *arg1){ } } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_763D0/func_802FDCB8.s") +void func_802FDCB8(enum item_e item_id) { + s32 i; + struct8s *var_v0; -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_763D0/func_802FDD0C.s") + for(var_v0 = &D_80369960[0]; var_v0->unk20 != -1; var_v0++){ + if(item_id == var_v0->unk20){ + var_v0->unk28 &= ~4; + return; + } + } +} + + +enum item_e func_802FDD0C(struct8s *arg0){ + return arg0->unk20; +} diff --git a/src/core2/code_7AF80.c b/src/core2/code_7AF80.c index 2bf35153..6be4420c 100644 --- a/src/core2/code_7AF80.c +++ b/src/core2/code_7AF80.c @@ -13,6 +13,7 @@ extern void func_8032D510(Cube *, Gfx **, Mtx **, Vtx **); extern ActorProp *func_803322F0(Cube *, ActorMarker *, f32, s32, s32 *); extern Struct66s *func_803319C0(Cube *cube, f32 position[3], f32 radius, f32 arg2[3], u32 flags); extern Struct66s *func_80331638(Cube *cube, f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg2[3], s32, u32 flags); + typedef struct { s32 unk0; NodeProp *unk4; @@ -33,7 +34,8 @@ typedef struct { Struct_core2_7AF80_2 *unk8; } Struct_core2_7AF80_1; - +NodeProp *func_803049CC(enum actor_e actor_id, s32 arg1[3]); +s32 func_80304FC4(enum actor_e *actor_id_list, NodeProp **node_list, s32 arg2); void cube_positionToIndices(s32 arg0[3], f32 arg1[3]); void func_80308984(void); void func_80308D2C(Gfx **gfx, Mtx **mtx, Vtx **vtx); @@ -896,7 +898,57 @@ s32 func_80304984(s32 arg0, u32 *arg1) { return 0; } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803049CC.s") +NodeProp *func_803049CC(enum actor_e actor_id, s32 arg1[3]) { + s32 sp7C[3]; + s32 i; + f32 sp6C[3]; + s32 sp60[3]; + s32 sp54[3]; + s32 *var_a3; + NodeProp *temp_v0; + + if (arg1 != NULL) { + sp6C[0] = (f32) arg1[0]; + sp6C[1] = (f32) arg1[1]; + sp6C[2] = (f32) arg1[2]; + cube_positionToIndices(sp7C, sp6C); + for(i = 0; i < 3; i++){ + sp60[i] = sp7C[i] - 1; + sp54[i] = sp7C[i] + 1; + if (sp60[i] < D_80381FA0.min[i]) { + sp60[i] = D_80381FA0.min[i]; + } + if (D_80381FA0.max[i] < sp54[i]) { + sp54[i] = D_80381FA0.max[i]; + } + } + + for(sp7C[0] = sp60[0]; sp7C[0] <= sp54[0]; sp7C[0]++){ + for(sp7C[1] = sp60[1]; sp7C[1] <= sp54[1]; sp7C[1]++){ + for(sp7C[2] = sp60[2]; sp7C[2] <= sp54[2]; sp7C[2]++){ + temp_v0 = func_8032E230(cube_atIndices(sp7C), actor_id); + if (temp_v0 != NULL) { + return temp_v0; + } + } + } + } + } + + for(sp7C[1] = D_80381FA0.min[1]; sp7C[1] <= D_80381FA0.max[1] ; sp7C[1]++) { + if (func_80305C30(sp7C[1] - D_80381FA0.min[1]) != 0) { + for(sp7C[0] = D_80381FA0.min[0]; sp7C[0] <= D_80381FA0.max[0] ; sp7C[0]++) { + for(sp7C[2] = D_80381FA0.min[2]; sp7C[2] <= D_80381FA0.max[2] ; sp7C[2]++) { + temp_v0 = func_8032E230(cube_atIndices(&sp7C), actor_id); + if (temp_v0 != NULL) { + return temp_v0; + } + } + } + } + } + return NULL; +} NodeProp *func_80304C38(enum actor_e actor_id, Actor *arg1){ s32 vec[3]; @@ -960,7 +1012,7 @@ s32 func_80304DB8(NodeProp *arg0) { s32 func_80304DD0(s32 arg0, s32 *arg1) { NodeProp *temp_v0; - temp_v0 = func_803049CC(arg0, 0, arg1); + temp_v0 = func_803049CC(arg0, 0); if (temp_v0 != 0) { arg1[0] = (s32) temp_v0->x; arg1[1] = (s32) temp_v0->y; @@ -982,11 +1034,50 @@ s32 func_80304E24(s32 arg0, f32 *arg1) { return 1; } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80304E9C.s") +s32 func_80304E9C(s32 arg0, s32 arg1, s32 arg2){ + return arg0*arg0 + arg1*arg1 + arg2*arg2; +} -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80304ED0.s") +NodeProp *func_80304ED0(enum actor_e *arg0 , f32 arg1[3]) { + s32 i; + NodeProp *sp4C[0x14]; + NodeProp *closest_node_ptr; + s32 min_dist_sq; + s32 cnt; + s32 dist_sq; + s16 sp34[3]; -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80304FC4.s") + min_dist_sq = 0x7FFFFFFF; + closest_node_ptr = NULL; + sp34[0] = (s16) arg1[0]; + sp34[1] = (s16) arg1[1]; + sp34[2] = (s16) arg1[2]; + cnt = func_80304FC4(arg0, sp4C, 0x14); + if (cnt == 0) { + return NULL; + } + for(i = 0; i < cnt; i++){ + dist_sq = func_80304E9C(sp34[0] - sp4C[i]->x, sp34[1] - sp4C[i]->y, sp34[2] - sp4C[i]->z); + if (dist_sq < min_dist_sq) { + min_dist_sq = dist_sq; + closest_node_ptr = sp4C[i]; + } + } + return closest_node_ptr; +} + +s32 func_80304FC4(enum actor_e *arg0, NodeProp **arg1, s32 arg2) { + s32 temp_v0; + s32 var_s1; + Cube *var_s0; + + var_s1 = 0; + for(var_s0 = D_80381FA0.cube_list; var_s0 < &D_80381FA0.cube_list[D_80381FA0.cubeCnt]; var_s0++) { + temp_v0 = func_8032E49C(var_s0, arg0, arg1 + var_s1, arg2 - var_s1); + var_s1 += temp_v0; + } + return var_s1; +} s32 func_8030508C(s32 arg0, f32 arg1[3], s32 arg2) { Cube *phi_s0; @@ -1091,13 +1182,13 @@ void spawnableActorList_addIfMapVisited(ActorInfo *arg0, Actor *(*arg1)(s32[3], Actor * func_803055E0(enum actor_e arg0, s32 arg1[3], s32 arg2, s32 arg3, s32 arg4){ Actor *actor = func_803056FC(arg0, arg1, arg2); - s16 *tmp; + NodeProp *tmp; s32 sp34[3]; f32 sp28[3]; if(actor){ tmp = func_80305510(arg3); - if(tmp){ + if(tmp != NULL){ func_80304D4C(tmp, sp34); actor->unk44_14 = func_80341D5C(arg1, sp34); } @@ -1490,8 +1581,123 @@ bool func_80307390(s32 arg0, s32 arg1) { #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803073CC.s") #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307504.s") +// s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) { +// s32 sp4C[3]; +// s32 sp40; +// s32 temp_a0; +// s32 temp_t3; +// s32 temp_v0; +// s32 temp_v0_2; +// s32 temp_v0_4; +// s32 temp_v0_5; +// s32 temp_v1; +// s32 var_a3; +// u32 temp_t1; +// u32 temp_t1_2; +// u32 temp_v0_3; +// u32 var_s0; +// u32 var_s0_2; +// Struct_core2_7AF80_2 *temp_s0; +// void *temp_s1; + +// ml_vec3f_to_vec3w(sp4C, arg0); +// // temp_s1 = D_8036A9C8[arg1].unk4; +// if (D_80381FE8[D_8036A9C8[arg1].unk4] == 0) { +// return -1; +// } + +// sp40 = arg4 & 1; +// temp_s0 = &D_8036A9C8[arg1].unk8[arg2]; +// temp_t3 = arg3 / 2; +// temp_v1 = sp4C[1] + temp_t3; +// temp_a0 = sp4C[1] - temp_t3; +// if (sp40) { +// if (temp_s0->unk10_3 & arg4) { +// if ((temp_v1 >= temp_s0->unk0[1]) && (temp_a0 < temp_s0->unk0[1])) { +// if (func_80259328(&sp4C, temp_s0, temp_s0->unkC, sp40)) { +// return arg2; +// } +// } +// } +// goto block_14; +// } +// else{ +// if ((temp_s0->unk10_3 & arg4) && ((temp_s0->unk10_3 & 2) || ((temp_v0_2 = temp_s0->unk0[1], ((temp_v1 < temp_v0_2) == 0)) && (temp_a0 < temp_v0_2)))) { +// if (func_80259328(&sp4C, temp_s0, temp_s0->unkC, sp40) != 0) { +// return arg2; +// } +// } +// } +// block_14: +// temp_v0_3 = temp_s1->unk8; +// if (var_a3 != 0) { +// var_s0_2 = temp_v0_3; +// if (temp_v0_3 < (u32) (temp_v0_3 + (temp_s1->unk0 * 0x14))) { +// loop_16: +// if (((u32) (var_s0_2->unk10 << 0x1C) >> 0x1D) & arg4) { +// temp_v0_4 = var_s0_2->unk4; +// if ((temp_v1 >= temp_v0_4) && (temp_a0 < temp_v0_4) && (func_80259328(&sp4C, (void *) var_s0_2, var_s0_2->unkC) != 0)) { +// return (s32) (var_s0_2 - temp_s1->unk8) / 20; +// } +// } +// var_s0_2 += 0x14; +// if (var_s0_2 >= (u32) (temp_s1->unk8 + (temp_s1->unk0 * 0x14))) { +// goto block_31; +// } +// goto loop_16; +// } +// goto block_31; +// } +// var_s0 = temp_v0_3; +// if (temp_v0_3 < (u32) (temp_v0_3 + (temp_s1->unk0 * 0x14))) { +// loop_24: +// temp_t1_2 = (u32) (var_s0->unk10 << 0x1C) >> 0x1D; +// if ((temp_t1_2 & arg4) && ((temp_t1_2 & 2) || ((temp_v0_5 = var_s0->unk4, ((temp_v1 < temp_v0_5) == 0)) && (temp_a0 < temp_v0_5))) && (func_80259328(&sp4C, (void *) var_s0, var_s0->unkC) != 0)) { +// return (s32) (var_s0 - temp_s1->unk8) / 20; +// } +// var_s0 += 0x14; +// if (var_s0 >= (u32) (temp_s1->unk8 + (temp_s1->unk0 * 0x14))) { +// goto block_31; +// } +// goto loop_24; +// } +// block_31: +// return -1; +// } + +bool func_803077FC(f32 arg0[3], s32 *arg1, s32 *arg2, s32 arg3, s32 arg4) { + s32 sp3C[3]; + + sp3C[0] = (s32) arg0[0]; + sp3C[1] = (s32) arg0[1]; + sp3C[2] = (s32) arg0[2]; + if (*arg1 == -1) { + *arg1 = func_80306EF4(sp3C, arg3, arg4); + if (*arg1 == -1) { + *arg2 = -1; + return FALSE; + } + } + *arg2 = func_80307504(arg0, *arg1, (*arg2 == -1) ? 0 : *arg2, arg3, arg4); + if (*arg2 >= 0) { + return TRUE; + } + + *arg1 = func_80306EF4(sp3C, arg3, arg4); + if (*arg1 == -1) { + *arg2 = -1; + return FALSE; + } + + *arg2 = func_80307504(arg0, *arg1, 0, arg3, arg4); + if (*arg2 >= 0) { + return TRUE; + } + + *arg1 = -1; + return FALSE; +} -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803077FC.s") Cube *func_80307948(s32 arg0[3]); #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307948.s") @@ -1571,9 +1777,66 @@ void func_80308230(s32 arg0) { } } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803082D8.s") +bool func_803082D8(Cube *arg0, s32 *arg1, bool arg2, bool arg3) { + Prop *var_v0; + bool var_a0; + + var_v0 = arg0->prop2Ptr + *arg1; + while ((var_v0->markerFlag == 1) && (*arg1 < arg0->prop2Cnt)) { + (*arg1)++; + var_v0++; + } + + if (*arg1 >= arg0->prop2Cnt) { + *arg1 = 0; + return FALSE; + } + var_a0 = var_v0->unk8_4; + (*arg1)++; + if (arg2) { + var_v0->unk8_4 = arg3; + } + return var_a0; +} #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803083B0.s") +// s32 func_803083B0(s32 arg0) { +// s32 temp_v0; +// s32 var_v0; +// Cube *var_s0; + +// if (arg0 == -1) { +// var_s0 = D_80381FA0.cube_list; +// D_80382140 = 0; +// var_v0 = 0; +// goto block_12; +// } +// var_s0 = (u32) D_80382144; +// if (D_80382140 < var_s0->prop2Cnt) { +// temp_v0 = func_803082D8(var_s0, &D_80382140, NOT(arg0 < 0), arg0 & 1); +// if (D_80382140 != 0) { +// return temp_v0; +// } +// } +// D_80382140 = 0; +// loop_6: +// loop_7: +// var_s0 += 0xC; +// if (var_s0 >= &D_80381FA0.cube_list[D_80381FA0.cubeCnt]) { +// D_80382144 = (s32 *) var_s0; +// return -1; +// } +// if (var_s0->prop2Cnt != 0) { +// var_v0 = func_803082D8(var_s0, &D_80382140, NOT(arg0 < 0), arg0 & 1); +// if (D_80382140 != 0) { +// block_12: +// D_80382144 = var_s0; +// return var_v0; +// } +// goto loop_6; +// } +// goto loop_7; +// } s32 func_803084F0(s32 arg0){ s32 var_v1; diff --git a/src/core2/code_94A20.c b/src/core2/code_94A20.c index 6e314054..80aa9208 100644 --- a/src/core2/code_94A20.c +++ b/src/core2/code_94A20.c @@ -21,7 +21,7 @@ s32 func_8031FF44(s32 offset, s32 numBits); void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2); void ml_vec3h_to_vec3f(f32 *, s32); void func_8028F3D8(f32 *, f32, void(*)(ActorMarker *), ActorMarker *); -struct unkfunc_80304ED0 *func_80304ED0(void*, f32 *); +NodeProp *func_80304ED0(void*, f32 *); void func_8031CD44(s32, s32, f32, f32, s32); void func_80256E24(f32 *, f32, f32, f32, f32, f32); @@ -32,18 +32,9 @@ void func_8031BE98(struct0*, f32, s32); extern u8 D_8037DCCE[]; -// Struct pointer returned by func_80304ED0 -struct unkfunc_80304ED0 { - s16 unk0[3]; - u16 unk6; - u16 unk8; - u16 unkA; - u32 unkC; -}; - /* .data */ extern u8 D_8036DDC0[0x14]; -extern u32 D_8036DDD4; +extern enum actor_e D_8036DDD4[] = {0x184, 0x185, 0x186, -1}; /* .rodata */ extern f32 D_80378D30; @@ -606,7 +597,7 @@ void func_8031CE28(s32 arg0, s32 arg1, f32 arg2) { void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) { f32 playerPos[3]; f32 sp38[3]; - struct unkfunc_80304ED0 *phi_s0; + NodeProp *phi_s0; f32 phi_f2; if ((D_80383190 == 0) && (getGameMode() != 8) && (getGameMode() != 7)) { @@ -617,7 +608,7 @@ void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) { } player_getPosition(playerPos); if (phi_s0 != NULL) { - nodeprop_getPosition(&phi_s0->unk0, sp38); + nodeprop_getPosition(phi_s0, sp38); phi_f2 = 500.0f; if (phi_s0->unk8 == 0x186) { phi_f2 = 1000.0f; @@ -628,9 +619,9 @@ void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) { func_8031CB50(arg1, arg2, 1); func_8028F3D8(sp38, 1.0f, NULL, NULL); } else if (phi_s0->unk8 == 0x185) { - func_8031CD44(arg1, arg2, sp38[1], (f32) (phi_s0->unkC >> 0x17), phi_s0->unkC & 0x7FFFFF); + func_8031CD44(arg1, arg2, sp38[1], (f32) phi_s0->unkC_31, phi_s0->unkC_22); } else { - func_8031CD44(arg1, arg2, playerPos[1], (f32) (phi_s0->unkC >> 0x17), phi_s0->unkC & 0x7FFFFF); + func_8031CD44(arg1, arg2, playerPos[1], (f32) phi_s0->unkC_31, phi_s0->unkC_22); } return; } diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c index 75c9f2df..80839986 100644 --- a/src/core2/code_A5BC0.c +++ b/src/core2/code_A5BC0.c @@ -668,8 +668,37 @@ bool func_8032E398(Cube *cube, bool (*arg1)(NodeProp *), bool (*arg2)(Prop *)) { return TRUE; } +/* places up to `node_list_capacity` NodeProp pointers in `node_list` + * from `cube` for any actors with id's in `actor_id_list`. Return number + * nodeprops found. + */ +s32 func_8032E49C(Cube *cube, enum actor_e *actor_id_list, NodeProp **node_list, s32 node_list_capacity) { + enum actor_e *i_actor; + s32 found_cnt; + NodeProp * end_node; + NodeProp *i_node; -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032E49C.s") + found_cnt = 0; + if (cube != NULL) { + if (cube->prop1Cnt != 0) { + i_node = cube->prop1Ptr; + end_node = cube->prop1Ptr + cube->prop1Cnt; + while((i_node < end_node) && (found_cnt < node_list_capacity)) { + if (((i_node->unk6.bit0 == 1) || ((i_node->unk6.bit0 == 0) && (i_node->unk10_6 == 1))) && (i_node->unk6.bit6 == 6)) { + i_actor = actor_id_list; + for(i_actor = actor_id_list; *i_actor != -1; i_actor++){ + if (i_node->unk8 == *i_actor) { + node_list[found_cnt++] = i_node; + break; + } + } + } + i_node++; + } + } + } + return found_cnt; +} #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032E5A8.s") diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index ab8d9ceb..60584102 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -251,7 +251,7 @@ segments: - [0x67650, c, code_67650] #DONE - [0x679A0, c, code_679A0] - [0x69F60, c, code_69F60] #DONE - - [0x6A4B0, c, code_6A4B0] #DONE + - [0x6A4B0, c, code_6A4B0] - [0x6AEF0, c, code_6AEF0] #DONE - [0x6B030, c, code_6B030] #DONE - [0x6C3E0, c, code_6C3E0] #DONE @@ -276,7 +276,7 @@ segments: - [0x75930, c, code_75930] - [0x75E90, c, code_75E90] - [0x76390, c, code_76390] #DONE - - [0x763D0, c, code_763D0] + - [0x763D0, c, code_763D0] #DONE - [0x76D90, c, code_76D90] - [0x77E50, c, code_77E50] #DONE - [0x78100, c, code_78100]