From a6170aafb06ffbf529f4322369aac45e4b2bade2 Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Mon, 29 Aug 2022 20:59:56 -0500 Subject: [PATCH] core2/code_4C020.c done --- include/enums.h | 8 +- progress/progress_core2.svg | 6 +- progress/progress_total.svg | 6 +- src/core2/ch/trainers.c | 18 +- src/core2/code_41FB0.c | 237 +++++++++++++++++-- src/core2/code_43800.c | 8 +- src/core2/code_4C020.c | 427 ++++++++++++++++++++++------------ src/lair/code_0.c | 2 +- src/lair/code_C1C0.c | 4 +- subyaml/core2.us.v10.yaml | 20 +- symbol_addrs.core2.us.v10.txt | 54 +++++ 11 files changed, 588 insertions(+), 202 deletions(-) diff --git a/include/enums.h b/include/enums.h index 0a1bc805..40e43f2c 100644 --- a/include/enums.h +++ b/include/enums.h @@ -1691,8 +1691,8 @@ enum actor_e ACTOR_212_IRON_BARS, //TTC_ENTRANCE ACTOR_226_GV_ENTRANCE = 0x226, - - ACTOR_228_INVISIBLE_WALL = 0x228, //MMM ENTRANCE DOOR??? + ACTOR_227_GLASS_EYE, + ACTOR_228_INVISIBLE_WALL, //MMM ENTRANCE DOOR??? ACTOR_234_CCW_ENTRANCE_DOOR = 0x234, ACTOR_235_FP_ENTANCE_DOOR, @@ -2179,6 +2179,7 @@ enum asset_e ASSET_D4_ANIM_SWITCH_DOWN = 0xD4, ASSET_D5_ANIM_SWITCH_UP, + ASSET_D6_ANIM_TURBO_TALON_TRAINERS, ASSET_DB_ANIM_FLIBBIT_HOP = 0xDB, ASSET_DC_ANIM_GOBI_ROPE_PULLING, @@ -2837,6 +2838,7 @@ enum asset_e // 4ba RBB Window 1 // 4bb RBB Window 2 // 4bc GV Entrance Door + ASSET_4BD_MODEL_GLASS_EYE = 0x4BD, // 4bd Gruntilda Head Eyeball // 4be MMM Entrance Door // 4bf GL Yellow Floor Cobweb @@ -3751,6 +3753,8 @@ enum marker_e{ MARKER_11C_WATER_LEVEL_SWITCH_2, MARKER_11D_WATER_LEVEL_SWITCH_3, + MARKER_121_GLASS_EYE = 0x121, + MARKER_124_BOGGY_1 = 0x124, MARKER_127_BAT = 0x127, diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index 872c8b17..76dbc182 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core2 - 82.3791% - 82.3791% + 83.3124% + 83.3124% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 9d9022bf..2bfc32ab 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 84.8722% - 84.8722% + 85.4077% + 85.4077% \ No newline at end of file diff --git a/src/core2/ch/trainers.c b/src/core2/ch/trainers.c index f1bb2289..f4a0a1be 100644 --- a/src/core2/ch/trainers.c +++ b/src/core2/ch/trainers.c @@ -6,18 +6,20 @@ Actor *chtrainers_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx); void chtrainers_update(Actor *this); /* .data */ -extern ActorAnimationInfo D_80366EA0[]; -extern ActorInfo D_80366EC0 = { +ActorAnimationInfo D_80366EA0[] = { + {ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f}, + {ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f}, + {ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f}, + {ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f} +}; + +ActorInfo D_80366EC0 = { MARKER_38_TURBO_TALON_TRAINERS, ACTOR_2C_TURBO_TALON_TRAINERS, ASSET_367_MODEL_TURBO_TALON_TRAINERS, 0x0, D_80366EA0, chtrainers_update, func_80326224, chtrainers_draw, 0, 0, 0.0f, 0 }; -/* .rodata */ -extern f64 D_80376470; -extern f64 D_80376478; - /* .code */ Actor *chtrainers_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){ Actor *this = marker_getActor(marker); @@ -46,8 +48,8 @@ void _chtrainers_802CA378(Actor *this, bool arg1){ func_802589E4(sp24, this->velocity[1], 40.0f); sp24[1] = 0.0f; ml_vec3f_add(this->position, this->unk1C, sp24); - this->velocity[1] += D_80376470; - this->yaw = mlNormalizeAngle(this->velocity[1] + D_80376478); + this->velocity[1] += 2.3; + this->yaw = mlNormalizeAngle(this->velocity[1] + 90.0); } void chtrainers_update(Actor *this){ diff --git a/src/core2/code_41FB0.c b/src/core2/code_41FB0.c index b836ae45..74e1b0f8 100644 --- a/src/core2/code_41FB0.c +++ b/src/core2/code_41FB0.c @@ -2,19 +2,27 @@ #include "functions.h" #include "variables.h" +extern bool func_80309DBC(f32[3], f32[3], f32, f32 sp54[3], s32, s32); +extern bool func_80320C94(f32[3], f32[3], f32, f32 sp54[3], s32, s32); +extern f32 func_8033229C(ActorMarker *); +extern void ml_vec3f_normalize(f32 [3]); + typedef struct { s16 unk0; u8 pad2[0x2]; s32 unk4; s32 unk8; - u8 padC[0x8]; + s16 unkC; + s16 unkE; + s16 unk10; + u8 pad12[0x2]; f32 unk14; f32 unk18; f32 unk1C; f32 unk20; f32 unk24; f32 unk28; - u8 pad2C[0x4]; + f32 unk2C; f32 unk30; } struct41FB0s; @@ -39,27 +47,47 @@ extern f32 D_80366C4C; /* .rodata */ extern f64 D_80376410; +extern f64 D_80376418; /* .bss */ UNK_TYPE(s32) D_8037DDB0; f32 D_8037DDB4; f32 D_8037DDB8; +/* .public */ +Actor *func_802C937C(s32 arg0, f32 position[3]); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F40.s") +/* .code */ +void func_802C8F40(void){ + D_8037DDB0 = 0; + D_8037DDB4 = 0.0f; + D_8037DDB8 = 1.0f; +} void func_802C8F68(void){} -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F70.s") +void func_802C8F70(f32 arg0){ + D_8037DDB4 = arg0; +} -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F7C.s") +void func_802C8F7C(f32 arg0){ + D_8037DDB8 = arg0; +} -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F88.s") +Actor *func_802C8F88(s32 arg0, s32 arg1[3]){ + f32 sp1C[3]; -#ifndef NONMATCHING + sp1C[0] = arg1[0]; + sp1C[1] = arg1[1]; + sp1C[2] = arg1[2]; + return func_802C937C(arg0, sp1C); +} + +#ifndef NONMATCHING //matches but requires .data and .rodata defined #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8FE4.s") #else Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){ + static f32 D_80366C4C = 0.0f; struct41FB0s * sp74; //s2 Actor *actor; //s3 s32 i; @@ -68,7 +96,8 @@ Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){ sp74 = D_80366460 + arg0; actor = NULL; for(i = 0; i < sp74->unk8; i++){//L802C90B0 - for( D_8037DDB4 = D_8037DDB4 + 360.0/sp74->unk8; 360.0 <= D_8037DDB4; D_8037DDB4 -= 360.0); + D_8037DDB4 += 360.0/sp74->unk8; + while(360.0 <= D_8037DDB4){ D_8037DDB4 -= 360.0;} //L802C9114 actor =(i == 0 && arg2) ? arg2 : func_8032813C(sp74->unk4, position, 0); actor->unk10_0 = 1; @@ -91,14 +120,13 @@ Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){ }//L802C9210 ml_vec3f_yaw_rotate_copy(s0->unk14, s0->unk14, D_8037DDB4); - s0->unk24 = -1.0f * D_80366C4C; - D_80366C4C = s0->unk24; + s0->unk24 = D_80366C4C *= -1; actor->unk5C = s0->unk20 = (sp74->unk0 & 0x20) ? sp74->unk30 : randf2(0.0f, 360.0f); s0->unk28 = 0.0f; s0->unk2C = 0; s0->unk2D = 1; s0->unk4 = sp74->unk0; - s0->unk2E = (sp74->unk0 & 0x1) ? ((0.5 < randf()) ? 1 : 0) : 0 ; + s0->unk2E = (sp74->unk0 & 0x1) ? (0.5 < randf()) : 0 ; if(sp74->unk0 & 0x200){ actor->unk5C = s0->unk8[1]; } @@ -107,16 +135,195 @@ Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){ } #endif -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C9334.s") +Actor *func_802C9334(s32 arg0, Actor * arg1){ + D_80366460[arg0].unk30 = arg1->yaw; + return func_802C8FE4(arg0, arg1->position, arg1); +} Actor *func_802C937C(s32 arg0, f32 position[3]){ return func_802C8FE4(arg0, position, 0); } +#ifndef NONMATCHING #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C939C.s") +#else +bool func_802C939C(Actor *actor, f32 arg1[3], f32 arg2[3], f32 arg3[3], bool arg4) { + struct41FB0s_1 *sp64 = (struct41FB0s_1 *)&actor->unkBC; + f32 sp60; + bool var_v1; + f32 sp50[3]; + f32 sp44[3]; + s32 sp40; + s32 sp3C; -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C96E4.s") -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C9C0C.s") + if (sp64->unk4 & 0x80) { + if (actor->unk10_25 != 0) { + if (func_80307258(arg2, actor->unk10_25 - 1, actor->unk10_18 - 1) == -1) { + ml_vec3f_diff_copy(arg3, arg2, arg1); + ml_vec3f_normalize(arg3); + ml_vec3f_copy(arg2, arg1); + return TRUE; + } + } + else { + if ((actor->unk10_18 != 0)){ + if(func_80309D58(arg2, actor->unk10_18) == 0) { + ml_vec3f_diff_copy(arg3, arg2, arg1); + ml_vec3f_normalize(arg3); + ml_vec3f_copy(arg2, arg1); + return TRUE; + } + } + } + } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C9C14.s") + sp60 = func_8033229C(actor->marker) * D_80376418; + ml_vec3f_copy(sp50, arg2); + arg1[1] += sp60; + arg2[1] += sp60; + if (arg4) { + var_v1 = func_80309DBC(arg1, arg2, sp60, arg3, 3, actor->unk154); + if (!var_v1) { + var_v1 = func_80309B48(arg1, arg2, arg3, actor->unk154); + if (var_v1) { + arg2[0] += arg3[0]; + arg2[1] += arg3[1]; + arg2[2] += arg3[2]; + } + } + } else { + var_v1 = func_80320C94(arg1, arg2, sp60, arg3, 3, actor->unk154); + if (!var_v1) { + var_v1 = func_80320B98(arg1, arg2, arg3, actor->unk154); + if (var_v1) { + arg2[0] += arg3[0]; + arg2[1] += arg3[1]; + arg2[2] += arg3[2]; + } + } + } + if (var_v1 && sp64->unk2D && (actor->marker->modelId == ASSET_363_MODEL_HONEYCOMB)) { + ml_vec3f_scale_copy(sp44, arg3, sp60 / (f32) (1 << sp64->unk6)); + var_v1 = TRUE; + arg2[0] += sp44[0]; + arg2[1] += sp44[1]; + arg2[2] += sp44[2]; + if (actor->marker->modelId != ASSET_363_MODEL_HONEYCOMB) { + sp64->unk6++; + } + if (sp64->unk6 == 5) { + sp64->unk2D = FALSE; + } else { + var_v1 = FALSE; + } + } else { + sp64->unk2D = FALSE; + } + arg1[1] -= sp60; + arg2[1] -= sp60; + return var_v1; +} +#endif + +void func_802C96E4(Actor *actor) { + f32 sp6C; + struct41FB0s_1 *sp68; + struct41FB0s *sp64; + f32 sp58[3]; + f32 sp4C[3]; + f32 sp40[3]; + s32 pad; + s32 pad2; + f32 var_f0; + + sp6C = time_getDelta(); + sp68 = (struct41FB0s_1 *)&actor->unkBC; + sp64 = &D_80366460[sp68->unk0]; + if (D_8037DDB0 > 0) D_8037DDB0--; + + switch (sp68->unk2F) { + case 3: + break; + case 1: + sp68->unk28 += sp6C; + ml_vec3f_copy(sp58, sp68->unk8); + ml_vec3f_scale_copy(sp4C, sp68->unk14, sp6C); + sp68->unk8[0] += sp4C[0]; + sp68->unk8[1] += sp4C[1]; + sp68->unk8[2] += sp4C[2]; + if (1.2 < sp68->unk28) { + sp68->unk2C = 1; + } + if (!((sp64->unk0 & 0x40) && (sp68->unk28 < 1.2)) + && ( (func_802C939C(actor, sp58, sp68->unk8, sp40, sp64->unk0 & 8)) + || ((sp64->unk0 & 0x200) && (sp68->unk14[1] < -((sp64->unk20 / 2) + sp64->unk1C))) + ) + ) { + if (sp64->unk0 & 0x204) { + sp40[0] = 0.0f; + sp40[1] = 1.0f; + sp40[2] = 0.0f; + } + ml_vec3f_scale(sp68->unk14, -1.0f); + var_f0 = ((sp68->unk14[0] * sp40[0]) + (sp68->unk14[1] * sp40[1]) + (sp68->unk14[2] * sp40[2])); + ml_vec3f_scale(sp40, 2*var_f0); + ml_vec3f_diff_copy(sp68->unk14, sp40, sp68->unk14); + if (D_8037DDB0 == 0) { + if (sp64->unkC != 0) { + func_8030E878(sp64->unkC, (f32)sp64->unkE, sp64->unk10, sp68->unk8, 300.0f, 3000.0f); + } + D_8037DDB0 = sp64->unk8 * 8; + } + ml_vec3f_scale(sp68->unk14, sp64->unk2C); + var_f0 = gu_sqrtf((sp68->unk14[0]*sp68->unk14[0]) + (sp68->unk14[1]*sp68->unk14[1]) + (sp68->unk14[2]*sp68->unk14[2])); + if (((var_f0 < 200.0f) && (sp40[1] > 0.75)) || (var_f0 < 10.0f)) { + sp68->unk2F = 2; + sp68->unk2C = 1; + if (sp64->unk0 & 0x10) { + actor->marker->propPtr->unk8_3 = TRUE; + } + } + else{ + + } + if (sp64->unk0 & 0x200) { + sp68->unk8[1] = actor->unk5C; + } + } else { + if (sp64->unk0 & 0x100) { + sp68->unk14[1] -= 4000.0 * sp6C; + } else { + sp68->unk14[1] -= 1500.0 * sp6C; + } + } + ml_vec3f_copy(actor->position, sp68->unk8); + break; + + case 2: + if (sp64->unk0 & 2) { + sp68->unk20 += (sp68->unk24 * sp6C); + while (sp68->unk20 >= 360.0f) { sp68->unk20 -= 360.0f; } + while (sp68->unk20 < 0.0f) { sp68->unk20 += 360.0f; } + actor->yaw = sp68->unk20; + } + var_f0 = (sp68->unk24 >= 0.0f) ? sp68->unk24 : -sp68->unk24; + if (var_f0 < 0.1) { + sp68->unk2F = 3U; + } + break; + } + if (actor->position[1] < -5000.0f) { + marker_despawn(actor->marker); + } +} + +f32 *func_802C9C0C(Actor *actor){ + struct41FB0s_1 *ptr = (struct41FB0s_1 *)&actor->unkBC; + return ptr->unk14; +} + +bool func_802C9C14(Actor *actor){ + struct41FB0s_1 *ptr = (struct41FB0s_1 *)&actor->unkBC; + return ptr->unk2C < 1U; +} diff --git a/src/core2/code_43800.c b/src/core2/code_43800.c index 71dc2c28..5f0cd8f0 100644 --- a/src/core2/code_43800.c +++ b/src/core2/code_43800.c @@ -7,16 +7,14 @@ extern f32 func_8028E82C(void); Actor *func_802CA7BC(ActorMarker *, Gfx **, Mtx **, Vtx **); void func_802CA92C(Actor *this); -extern ActorInfo D_80366EF0 = { +/* .data */ +ActorInfo D_80366EF0 = { MARKER_32_PLAYER_SHADOW, ACTOR_17_PLAYER_SHADOW, ASSET_3BF_MODEL_PLAYER_SHADOW, 0x1, 0x0, func_802CA92C, func_80326224, func_802CA7BC, 0, 0, 0.0f, 0 }; -/* .rodata */ -extern f32 D_80376480; - /* .code */ void func_802CA790(Actor *this){ func_8033A410(0xff); @@ -53,7 +51,7 @@ Actor *func_802CA7BC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){ sp48[0] = this->pitch; sp48[1] = this->yaw; sp48[2] = this->roll; - sp44 = ml_map_f(sp54[1] - sp40, 0.0f, 300.0f, 0.43f, D_80376480); + sp44 = ml_map_f(sp54[1] - sp40, 0.0f, 300.0f, 0.43f, 0.28f); func_8033A2D4(func_802CA790, this); func_803391A4(gfx, mtx, this->position, sp48, sp44, NULL, func_80330B1C(marker)); return this; diff --git a/src/core2/code_4C020.c b/src/core2/code_4C020.c index 8dfd6584..88275495 100644 --- a/src/core2/code_4C020.c +++ b/src/core2/code_4C020.c @@ -11,7 +11,10 @@ extern void func_802F363C(f32); extern void func_802F9D38(s32); extern void func_802EE6CC(f32[3], f32[3], s32[4], s32, f32, f32, s32, s32, s32); extern void ml_vec3f_assign(f32[3], f32, f32, f32); - +extern void func_802EE2E8(Actor *arg0, s32 arg1, s32 cnt, s32 arg3, f32 arg4, f32 arg5, f32 arg6); +extern void func_80319EA4(void); +extern void func_80320004(s32, bool); +extern void func_803204E4(s32, bool); void func_802D3D54(Actor *this); void func_802D3DA4(Actor *this); @@ -34,80 +37,83 @@ void func_802D4CD4(Actor *this); void func_802D68F0(s32 seconds); typedef struct { - u8 pad0[4]; + s16 unk0; + s16 unk2; s16 unk4; s16 unk6; }Struct_core2_4C020_0; /* .data */ -extern ActorAnimationInfo D_803676B0[]; -extern ActorInfo D_80367760 = { 0x26E, 0x2D9, 0x3B4, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367784 = { 0x26F, 0x2DA, 0x3B5, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0}; -extern ActorInfo D_803677A8 = { MARKER_168_ICE_KEY, ACTOR_25D_ICE_KEY, ASSET_50C_MODEL_ICE_KEY, 0x1, NULL, func_802D4250, func_80326224, func_80325E78, 0, 0, 0.0f, 0}; -extern ActorInfo D_803677CC = { 0x233, 0x23D, 0x4DD, 0x12, D_803676B0, func_802D4388, func_80326224, func_802D4588, 0, 0, 0.0f, 0}; -extern ActorInfo D_803677F0 = { 0x16A, 0x242, 0x0, 0x0, NULL, func_802D4680, NULL, func_80325340, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367814 = { MARKER_169_SNS_EGG, ACTOR_25E_SNS_EGG, ASSET_50D_MODEL_SNS_EGG, 0x1, NULL, func_802D3FD4, NULL, func_802D41C4, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367838 = { 0x265, 0x2E4, 0x55A, 0x1, NULL, func_802D3DA4, NULL, func_802D3F48, 0, 0, 0.0f, 0}; -extern ActorInfo D_8036785C = { MARKER_103_MM_WITCH_SWITCH, ACTOR_204_MM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4B94, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367880 = { MARKER_104_MMM_WITCH_SWITCH, ACTOR_206_MMM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C34, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_803678A4 = { MARKER_105_TTC_WITCH_SWITCH, ACTOR_208_TTC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C5C, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_803678C8 = { MARKER_106_RBB_WITCH_SWITCH, ACTOR_20B_RBB_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C84, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_803678EC = { MARKER_22A_CCW_WITCH_SWITCH, ACTOR_237_CCW_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CAC, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367910 = { MARKER_22B_FP_WITCH_SWITCH, ACTOR_239_FP_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CD4, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367934 = { MARKER_166_CC_WITCH_SWITCH, ACTOR_25B_CC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BBC, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_80367958 = { MARKER_162_BGS_WITCH_SWITCH, ACTOR_257_BGS_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BE4, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -extern ActorInfo D_8036797C = { MARKER_161_GV_WITCH_SWITCH, ACTOR_256_GV_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C0C, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +f32 D_80367680 = 130.0f; +s32 D_80367684 = 0; //enum map_e +s32 D_80367688 = 0; +s32 D_8036768C = 0; +s32 D_80367690 = 0; +s32 D_80367694 = 0; //enum map_e +s32 D_80367698 = 0; +s32 D_8036769C = 0; //enum bkprog_e +s32 D_803676A0 = 0; //enum actor_e +f32 D_803676A4 = 0.0f; +s32 D_803676A8 = 0; +u8 D_803676AC = 0; -extern f32 D_80367680; -extern s32 D_80367684; //enum map_e -extern s32 D_80367688; -extern s32 D_8036768C; -extern s32 D_80367690; -extern s32 D_80367694; //enum map_e -extern s32 D_80367698; -extern s32 D_8036769C; //enum bkprog_e -extern s32 D_803676A0; //enum actor_e -extern s32 D_803676A8; -extern u8 D_803676AC; -extern s32 D_803679A0[4]; -extern s16 D_803679B0[]; -extern Struct_core2_4C020_0 D_803679C8[]; -extern s16 D_803679E0[]; -extern s32 D_803679E8; -extern s32 D_803679EC; -extern f32 D_803679F0; +ActorAnimationInfo D_803676B0[] = { + {0x000, 0.0f}, + {0x000, 0.0f}, + {0x0D4, 0.15f}, + {0x0D5, 0.5f}, + {0x000, 0.0f}, + {0x000, 0.0f}, + {0x0D4, 0.15f}, + {0x0D5, 0.5f}, + {0x0D5, 1e+8f}, + {0x1E3, 0.73f}, + {0x1E3, 1e+8f}, + {0x1F0, 1.0f}, + {0x1F1, 0.7f}, + {0x1F1, 1e+8f}, + {0x1F2, 1.0f}, + {0x1F3, 0.4f}, + {0x1F3, 1e+8f}, + {0x000, 0.0f}, + {0x217, 1e+8f}, + {0x217, 0.3f}, + {0x217, 1e+8f}, + {0x217, 0.3f} +}; +ActorInfo D_80367760 = { 0x26E, 0x2D9, 0x3B4, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0}; +ActorInfo D_80367784 = { 0x26F, 0x2DA, 0x3B5, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0}; +ActorInfo D_803677A8 = { MARKER_168_ICE_KEY, ACTOR_25D_ICE_KEY, ASSET_50C_MODEL_ICE_KEY, 0x1, NULL, func_802D4250, func_80326224, func_80325E78, 0, 0, 0.0f, 0}; +ActorInfo D_803677CC = { 0x233, 0x23D, 0x4DD, 0x12, D_803676B0, func_802D4388, func_80326224, func_802D4588, 0, 0, 0.0f, 0}; +ActorInfo D_803677F0 = { 0x16A, 0x242, 0x0, 0x0, NULL, func_802D4680, NULL, func_80325340, 0, 0, 0.0f, 0}; +ActorInfo D_80367814 = { MARKER_169_SNS_EGG, ACTOR_25E_SNS_EGG, ASSET_50D_MODEL_SNS_EGG, 0x1, NULL, func_802D3FD4, NULL, func_802D41C4, 0, 0, 0.0f, 0}; +ActorInfo D_80367838 = { 0x265, 0x2E4, 0x55A, 0x1, NULL, func_802D3DA4, NULL, func_802D3F48, 0, 0, 0.0f, 0}; +ActorInfo D_8036785C = { MARKER_103_MM_WITCH_SWITCH, ACTOR_204_MM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4B94, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_80367880 = { MARKER_104_MMM_WITCH_SWITCH, ACTOR_206_MMM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C34, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_803678A4 = { MARKER_105_TTC_WITCH_SWITCH, ACTOR_208_TTC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C5C, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_803678C8 = { MARKER_106_RBB_WITCH_SWITCH, ACTOR_20B_RBB_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C84, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_803678EC = { MARKER_22A_CCW_WITCH_SWITCH, ACTOR_237_CCW_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CAC, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_80367910 = { MARKER_22B_FP_WITCH_SWITCH, ACTOR_239_FP_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CD4, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_80367934 = { MARKER_166_CC_WITCH_SWITCH, ACTOR_25B_CC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BBC, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_80367958 = { MARKER_162_BGS_WITCH_SWITCH, ACTOR_257_BGS_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BE4, func_80326224, func_80325888, 0, 0, 0.0f, 0}; +ActorInfo D_8036797C = { MARKER_161_GV_WITCH_SWITCH, ACTOR_256_GV_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C0C, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -/* .rodata */ -extern f32 D_80376984; -extern f64 D_80376988; -extern f64 D_80376990; -extern f64 D_80376998; -extern f64 D_803769A0; -extern f32 D_803769A8; -extern f32 D_803769AC; - -extern f32 D_803769B0; -extern f64 D_803769B8; //3FA999999999999A -extern f32 D_803769C0; //3F666666 - -extern f32 D_80376A78; -extern f32 D_80376A7C; -extern f32 D_80376A80; -extern f32 D_80376A84; -extern f32 D_80376A88; -extern f64 D_80376A90; -extern f64 D_80376A98; - -// 3ECCCCCD 3ECCCCCD -// 3ECCCCCD 3ECCCCCD 3ECCCCCD -// 4072C00000000000 4072C00000000000 +s32 D_803679A0[4] = {0x87, 0x87, 0x87, 0xA0}; +s16 D_803679B0[] = {0x5, 0x90, 0xA, 0x93, 0xF,0x92, 0x14, 0x91, 0x19, 0x94, -1}; +Struct_core2_4C020_0 D_803679C8[] = { + {0, 600, 1200, 1900}, + {-580, 0, 1550, 2200}, + {150, 460, 1625, 2100}, +}; +s16 D_803679E0[] = {-50, -100, 200}; /* .bss */ int D_8037DE00; f32 D_8037DE04; f32 D_8037DE08; +/* .public */ void func_802D6114(void); void func_802D6264(f32 arg0, enum map_e arg1, s32 arg2, s32 arg3, s32 arg4, enum bkprog_e arg5); void func_802D6344(void); @@ -142,47 +148,199 @@ void func_802D317C(ActorMarker *marker, enum bkprog_e prog_flag_id){ marker_despawn(marker); } -#ifndef NONMATCHING -void func_802D31AC(ActorMarker *marker, ActorMarker *other_marker); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D31AC.s") -#else -void func_802D31AC(ActorMarker *marker, ActorMarker *other_marker){ +void func_802D31AC(ActorMarker *arg0, ActorMarker * arg1) { Actor *sp2C; - sp2C = marker_getActor(marker); - swtich(marker->unk14_20){ - //L802D3218 x < 0x23a //jmptbl D_80376720 - //L802D3292 x < 0x124 //jmptbl D_80376778 - //L802D32CC x < 0xa2 //jmptbl D_8037686C + sp2C = marker_getActor(arg0); + arg0->collidable = FALSE; + switch (arg0->unk14_20) { + case 0x9F: + case 0xA0: + case 0xFF: + func_8030E540(SFX_82_METAL_BREAK); + func_80328A84(sp2C, 4); + break; - case 0x17d://L802D3308 - func_8030E624(0x599ff882); - func_8030E624(0x4cbff882); - func_802D2FB0(sp2C, 0x14, -0x1e, 0x190, 3.0f, 0x15e, 0x50, 0x96); - sp2C->unk60 = 1.0f; - func_80320004(0xA5, TRUE); - break; + case 0x17D: + FUNC_8030E624(SFX_82_METAL_BREAK, 0.7f, 32736); + FUNC_8030E624(SFX_82_METAL_BREAK, 0.6f, 32736); + func_802D2FB0(sp2C, 0x14, -0x1E, 0x190, 3.0f, 0x15E, 0x50, 0x96); + sp2C->unk60 = 1.0f; + func_80320004(0xA5, 1); + break; - case 0x163://L802D3558 - break; + case 0x109: + func_8030E6D4(SFX_114_BRICKWALL_BREAKING); + func_8030E510(SFX_11_WOOD_BREAKING_1, 28000); + func_80328AEC(sp2C, 9); + func_80320004((sp2C->unkF4_8 == 1) ? 0xC8 : 0xC9, 1); + break; - case 0x263://L802D35A8 - break; + case 0x107: + func_8030E540(SFX_82_METAL_BREAK); + func_802EE278(sp2C, 0xE, 0xF, 0x46, 0.8f, 0.7f); + marker_despawn(arg0); + break; - case 0x1f2://L802D3A8C - case 0x1f3://L802D3A8C - break; + case 0x224: + func_8025A70C(COMUSIC_2B_DING_B); + func_8030E6A4(SFX_129_SWOOSH, (sp2C->scale < 0.45) ? 1.0 : 0.8, 0x7FF8); + func_80328AEC(sp2C, 0xC); + func_802D2FB0(sp2C, 8, -0x3C, 0xC8, 2.0f, 0xFA, 0x3C, 0x64); + func_80320004((sp2C->unkF4_8== 1) ? 0xCB : 0xCC, 1); + break; - case 0x164://L802D3C68 - case 0x165://L802D3C68 - break; + case 0x225: + func_8025A70C(COMUSIC_2B_DING_B); + func_8030E540(SFX_129_SWOOSH); + func_80328AEC(sp2C, 0xF); + func_802D2FB0(sp2C, 0xE, -0x3C, 0xC8, 2.0f, 0xFA, 0x3C, 0x64); + func_80320004(0xCA, 1); + break; - - //L802D3CA0 else + case 0x163: + if (sp2C->unk10_12 == 0) { + sp2C->unk10_12 = TRUE; + timed_playSfx(0.5f, SFX_3F9_UNKNOWN, 1.0f, 32000); + FUNC_8030E624(SFX_114_BRICKWALL_BREAKING, 0.8f, 32000); + } + break; + case 0x9A: + case 0x9C: + case 0x9D: + case 0x9E: + case 0xA1: + case 0xE7: + case 0xEA: + case 0x108: + case 0x263: + if ((arg0->unk14_20 == 0x9D) || (arg0->unk14_20 == 0xE7)) { + levelSpecificFlags_set(0x2E, 1); + } + if (arg0->unk14_20 == 0x263) { + levelSpecificFlags_set(0x38, 1); + } + func_802D2FB0(sp2C, 5, -0x28, 0xC8, 0.85f, 0xDC, 0x3C, 0x64); + func_8030E540(SFX_D_EGGSHELL_BREAKING); + func_8030E540(SFX_11_WOOD_BREAKING_1); + switch (arg0->unk14_20) { + case 0x9E: + func_802EE278(sp2C, 0xD, 9, 0x82, 0.34f, 1.0f); + break; + + case 0x9D: + case 0xE7: + case 0x108: + func_802EE278(sp2C, 7, 6, 0x32, 0.4f, 1.1f); + func_802EE278(sp2C, 7, 6, 0xB4, 0.4f, 1.1f); + break; + + case 0x9A: + case 0x9C: + case 0x263: + func_802EE278(sp2C, 7, 0xA, 0x82, 0.3f, 0.8f); + break; + + case 0xA1: + func_802EE278(sp2C, 7, 9, 0x82, 0.3f, 0.6f); + break; + + case 0xEA: + func_802EE278(sp2C, 3, 9, 0x82, 0.21f, 0.8f); + break; + + default: + func_802EE278(sp2C, 7, 0x19, 0x82, 0.17f, 0.8f); + break; + } + marker_despawn(arg0); + break; + + case 0x11F: + func_8030E540(SFX_D9_WOODEN_CRATE_BREAKING_1); + func_802EE2E8(sp2C, 7, 9, 0x78, 0.43f, 1.3f, 3.0f); + func_802EE2E8(sp2C, 3, 6, 0x78, 0.43f, 1.3f, 3.0f); + func_802D317C(arg0, 0xC5); + break; + + case 0x11A: + func_8030E540(SFX_82_METAL_BREAK); + func_802EE278(sp2C, 0xE, 0xD, 0x32, 0.8f, 0.9f); + func_802EE278(sp2C, 0xE, 0xD, 0xAA, 0.8f, 0.9f); + func_802D317C(arg0, 0xC2); + break; + + case 0x118: + func_8030E540(SFX_82_METAL_BREAK); + func_802EE278(sp2C, 0xE, 0xD, 0x50, 1.2f, 0.9f); + func_802EE278(sp2C, 0xE, 0xD, 0xB4, 1.2f, 0.9f); + func_802D317C(arg0, 0xCD); + break; + + case 0x119: + func_8030E540(SFX_82_METAL_BREAK); + func_802EE278(sp2C, 0xE, 9, 0x50, 1.2f, 0.9f); + func_802EE278(sp2C, 0xE, 9, 0xAA, 1.2f, 0.9f); + func_802EE278(sp2C, 0xE, 9, 0x104, 1.2f, 0.9f); + func_802D317C(arg0, 0xCE); + break; + + case 0x22D: + case 0x22E: + func_8030E540(SFX_82_METAL_BREAK); + func_8030E540(SFX_B6_GLASS_BREAKING_1); + func_802EE278(sp2C, 4, 0x23, 0x1E, 0.7f, 0.6f); + marker_despawn(arg0); + break; + + case 0x123: + case 0x1F2: + case 0x1F3: + case 0x235: + case 0x236: + case 0x237: + case 0x238: + case 0x239: + func_8030E540(SFX_13A_GLASS_BREAKING_7); + func_802EE278(sp2C, 4, 0x2D, 0x82, 1.0f, 1.0f); + if (arg0->unk14_20 == 0x1F3) { + func_802EE278(sp2C, 4, 0x2D, 0x104, 1.0f, 1.0f); + } + marker_despawn(arg0); + break; + + case 0x11E: + func_8030E540(SFX_B6_GLASS_BREAKING_1); + func_802EE278(sp2C, 4, 0x32, 0x50, 1.0f, 1.4f); + func_802EE278(sp2C, 4, 0x32, 0xA0, 1.0f, 1.4f); + func_802EE278(sp2C, 4, 0x1E, 0xF0, 0.8f, 1.1f); + func_802D317C(arg0, 0xC3); + break; + + case MARKER_121_GLASS_EYE: + func_8030E540(SFX_B6_GLASS_BREAKING_1); + func_802EE2E8(sp2C, 1, 0x32, 0x14, 1.2f, 1.4f, 2.2f); + func_802EE2E8(sp2C, 1, 0x3C, 0x64, 1.6f, 1.8f, 2.2f); + func_802EE2E8(sp2C, 1, 0x32, 0xB4, 1.2f, 1.4f, 2.2f); + func_802D317C(arg0, BKPROG_C4_STATUE_EYE_BROKEN); + break; + + case 0x164: + case 0x165: + if (sp2C->unk1C[1] == sp2C->position[1]) { + func_8030E510(SFX_9B_BOULDER_BREAKING_1, 25000); + sp2C->unk1C[0] = 1.0f; + } + break; + + default: + func_8030E540(SFX_D_EGGSHELL_BREAKING); + func_8030E540(SFX_11_WOOD_BREAKING_1); + marker_despawn(arg0); + break; } } -#endif void func_802D3CC8(ActorMarker *marker){ func_802D31AC(marker, NULL); @@ -221,7 +379,7 @@ void func_802D3DA4(Actor *this) { } player_getPosition(sp24); phi_v0 = ((this->position[1] - 5.0f) <= sp24[1]) && (sp24[1] <= (this->position[1] + 30.0f)) - && (((sp24[0] - this->position[0])*(sp24[0] - this->position[0]) + (sp24[2] - this->position[2])*(sp24[2] - this->position[2])) < D_80376984); + && (((sp24[0] - this->position[0])*(sp24[0] - this->position[0]) + (sp24[2] - this->position[2])*(sp24[2] - this->position[2])) < 3025.0f); if ((this->unk38_31 == 0) && (phi_v0 == 0)) { this->unk38_31 = 1; @@ -288,7 +446,7 @@ void func_802D3FD4(Actor *this){ return; }//L802D4134 - this->yaw += (this->unkF4_8 & 1) ? D_80376988 : D_80376990; + this->yaw += (this->unkF4_8 & 1) ? -1.4 : 1.4; if(this->yaw < 0.0f){ this->yaw += 360.0f; } @@ -357,7 +515,7 @@ void func_802D4388(Actor *this){ break; case 0x13: //L802D44B0 - if(D_80376998 <= animctrl_getAnimTimer(this->animctrl)){ + if(0.66 <= animctrl_getAnimTimer(this->animctrl)){ func_80328B8C(this, 0x14, 0.66f, 0); } break; @@ -370,7 +528,7 @@ void func_802D4388(Actor *this){ break; case 0x15: //L802D4534 - if(animctrl_getAnimTimer(this->animctrl) < D_803769A0){ + if(animctrl_getAnimTimer(this->animctrl) < 0.03){ func_80328B8C(this, 0x12, 0.0f, 1); } break; @@ -462,36 +620,27 @@ void func_802D48F0(void){ } } -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D4928.s") -#else void func_802D4928(Actor *this, s32 arg1, s32 arg2, s32 arg3) { - s32 sp1C; - this->marker->propPtr->unk8_3 = TRUE; - sp1C = arg1 & 0xC00000; - if( ( ((sp1C == 0) && mapSpecificFlags_get(arg1 - 0)) - || ((sp1C == 0x800000) && func_8031FF1C(arg1 - 0x800000)) - || ((sp1C == 0x400000) && func_803203FC(arg1 - 0x400000)) + if( ( (((arg1 & 0xC00000) == 0) && mapSpecificFlags_get(arg1 - 0)) + || (((arg1 & 0xC00000) == 0x800000) && func_8031FF1C(arg1 - 0x800000)) + || (((arg1 & 0xC00000) == 0x400000) && func_803203FC(arg1 - 0x400000)) ) && (arg2 != this->state) ) { func_80328B8C(this, arg2, 0.0f, 1); actor_playAnimationOnce(this); } - sp1C = arg1 & 0xC00000; - if( ( ((sp1C == 0) && !mapSpecificFlags_get(arg1 - 0)) - || ((sp1C == 0x800000) && !func_8031FF1C(arg1 - 0x800000)) - || ((sp1C == 0x400000) && !func_803203FC(arg1 - 0x400000)) + if( ( (((arg1 & 0xC00000) == 0) && !mapSpecificFlags_get(arg1 - 0)) + || (((arg1 & 0xC00000) == 0x800000) && !func_8031FF1C(arg1 - 0x800000)) + || (((arg1 & 0xC00000) == 0x400000) && !func_803203FC(arg1 - 0x400000)) ) && (arg2 == this->state) ) { func_80328B8C(this, arg3, 0.0f, 1); actor_playAnimationOnce(this); } - if(sp1C); } -#endif void func_802D4A9C(Actor *this, s32 arg1){ func_802D4928(this, arg1, 2, 3); @@ -586,12 +735,12 @@ void func_802D4D3C(s32 arg0, s32 arg1) { sp4C[3] = 200; sp4C[0] = sp4C[1] = sp4C[2] = 250; ml_vec3f_assign(&sp40, -1.0f, 3.0f, -3.0f); - func_802EE6CC(&sp5C, &sp40, &sp4C, 0, D_803769A8, 40.0f, 10, 120, 0); + func_802EE6CC(&sp5C, &sp40, &sp4C, 0, 2.4f, 40.0f, 10, 120, 0); sp4C[3] = 130; sp4C[0] = sp4C[1] = sp4C[2] = 130; ml_vec3f_assign(&sp40, 2.0f, -2.0f, 2.0f); - func_802EE6CC(&sp5C, &sp40, &sp4C, 0, D_803769AC, 180.0f, 20, 160, 0); + func_802EE6CC(&sp5C, &sp40, &sp4C, 0, 4.7f, 180.0f, 20, 160, 0); func_8030E6D4(SFX_1B_EXPLOSION_1); } else{ @@ -642,7 +791,7 @@ void func_802D5178(s32 arg0, enum bkprog_e arg1, s32 arg2, enum map_e arg3, s32 if(levelSpecificFlags_get(arg0) && !func_8031FF1C(arg1)){ levelSpecificFlags_set(arg0, FALSE); func_80320004(arg1, TRUE); - func_802D6264(D_803769B0, arg3, arg2, arg4, arg5, 0); + func_802D6264(0.95f, arg3, arg2, arg4, arg5, 0); D_803676A0 = arg6; D_80367690 = arg7; } @@ -654,18 +803,11 @@ void func_802D520C(Gfx **gfx, Mtx **mtx, Vtx **vtx){ } } -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D5260.s") -#else -extern f32 D_803676A4; -extern f32 D_803769B4; void func_802D5260(void) { s32 sp3C; s32 sp38; f32 sp34; f32 sp28[3]; - s32 phi_v0_2; - s32 phi_v1_2; sp3C = (map_get() == MAP_76_GL_640_NOTE_DOOR) ? 0 : (map_get() == MAP_77_GL_RBB_LOBBY) ? 1 @@ -715,42 +857,18 @@ void func_802D5260(void) { if (levelSpecificFlags_get(0x3C) != 0) { sp34 = D_803679C8[sp3C].unk6 + D_803676A4; } else { - if (func_8031FF1C(BKPROG_27_LAIR_WATER_LEVEL_3)) { - phi_v0_2 = 3; - } else { - if (func_8031FF1C(BKPROG_25_LAIR_WATER_LEVEL_2)) { - phi_v1_2 = 2; - } else { - if (func_8031FF1C(BKPROG_23_LAIR_WATER_LEVEL_1)) { - phi_v0_2 = 1; - } else { - phi_v0_2 = 0; - } - phi_v1_2 = phi_v0_2; - } - phi_v0_2 = phi_v1_2; - } - sp34 = ((s16 *)&D_803679C8[sp3C])[phi_v0_2]; + sp34 = ((s16 *)&D_803679C8[sp3C])[(func_8031FF1C(BKPROG_27_LAIR_WATER_LEVEL_3)) ? 3 + : (func_8031FF1C(BKPROG_25_LAIR_WATER_LEVEL_2)) ? 2 + : (func_8031FF1C(BKPROG_23_LAIR_WATER_LEVEL_1)) ? 1 + : 0]; } func_8034DEB4(sp38, sp34); player_getPosition(sp28); - if (sp3C != -1) { - phi_v1_2 = (sp3C == 2) ? (D_803769B4 < sp28[0]) ? -200 : 0 : 0; - phi_v0_2 = D_803679E0[sp3C] + phi_v1_2; - } - else{ - phi_v0_2 = 0; - } - func_802F363C((f32) phi_v0_2 + sp34); + func_802F363C(sp34 + ((sp3C != -1) ? (D_803679E0[sp3C] + ((sp3C == 2) ? (6600.0f < sp28[0]) ? -200 : 0 : 0)) : 0)); } } -#endif - -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D5628.s") -#else void func_802D5628(void){ s32 sp7C; s32 sp78; @@ -760,9 +878,9 @@ void func_802D5628(void){ s32 sp68; s32 sp50[6]; s32 sp4C; - // static s32 D_803679E8 = 0; - // static s32 D_803679EC = 0; - // static f32 D_803679F0 = 0.0f; + static s32 D_803679E8 = 0; + static s32 D_803679EC = 0; + static f32 D_803679F0 = 0.0f; if( map_get() != MAP_8E_GL_FURNACE_FUN && map_get() != MAP_80_GL_FF_ENTRANCE @@ -782,7 +900,7 @@ void func_802D5628(void){ D_803679EC = 2; } func_8030E6A4(SFX_2_CLAW_SWIPE, MIN(2.0,D_803679F0), 20000); - D_803679F0 += D_803769B8; + D_803679F0 += 0.05; } } else{//L802D5750 @@ -877,7 +995,7 @@ void func_802D5628(void){ } else{//L802D5B24 func_8024E55C(0, sp50); //get button inputs - if(sp50[FACE_BUTTON(BUTTON_C_UP)] == 1){ + if(sp50[FACE_BUTTON(BUTTON_B)] == 1){ func_80324C58(); func_802D6114(); } @@ -964,7 +1082,6 @@ void func_802D5628(void){ }//L802D607C }//L802D607C } -#endif //water_level_atleast_2; int func_802D6088(void){ diff --git a/src/lair/code_0.c b/src/lair/code_0.c index b13e5728..7867c6ea 100644 --- a/src/lair/code_0.c +++ b/src/lair/code_0.c @@ -116,7 +116,7 @@ extern ActorInfo D_80393138 = { 0x11E, 0x224, 0x4AF, 0x1, NULL, func_8038A014, f extern ActorInfo D_8039315C = { 0x227, 0x234, 0x4D6, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x93}; extern ActorInfo D_80393180 = { 0x228, 0x235, 0x4D7, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x8B}; extern ActorInfo D_803931A4 = { 0x229, 0x236, 0x4D8, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x8B}; -extern ActorInfo D_803931C8 = { 0x121, 0x227, 0x4BD, 0x1, NULL, func_8038A034, func_80326224, func_80325888, 0, 0, 0.0f, 0x89}; +extern ActorInfo D_803931C8 = { MARKER_121_GLASS_EYE, ACTOR_227_GLASS_EYE, ASSET_4BD_MODEL_GLASS_EYE, 0x1, NULL, func_8038A034, func_80326224, func_80325888, 0, 0, 0.0f, 0x89}; extern ActorInfo D_803931EC = { 0x116, 0x21A, 0x4AC, 0x1, NULL, func_803893B8, func_80326224, func_80325E78, 0, 0, 0.0f, 0x82}; extern ActorInfo D_80393210 = { 0x117, 0x21B, 0x4AD, 0x1, NULL, func_803894B0, func_80326224, func_80325E78, 0, 0, 0.0f, 0x82}; extern ActorInfo D_80393234 = { 0x10B, 0x20F, 0x4B4, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x90}; diff --git a/src/lair/code_C1C0.c b/src/lair/code_C1C0.c index 889823d7..d5068a1b 100644 --- a/src/lair/code_C1C0.c +++ b/src/lair/code_C1C0.c @@ -64,7 +64,7 @@ void func_80392700(Actor *this) { mapSpecificFlags_set(4, 0); } if (mapSpecificFlags_get(6)) { - func_8025A70C(MUSIC_KLUNGO_BY_FALLEN_GRUNTY); + func_8025A70C(COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY); func_802BC280(); set_camera_to_node(9); mapSpecificFlags_set(9, 1); @@ -108,7 +108,7 @@ void func_80392918(Actor *this) { set_camera_to_node(0x1E); } if ((0.999 < this->unk48) && !this->unk38_0) { - comusic_8025AB44(MUSIC_KLUNGO_BY_FALLEN_GRUNTY, 0, 2000); + comusic_8025AB44(COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY, 0, 2000); func_8025AABC(0xA8); this->unk38_0 = TRUE; mapSpecificFlags_set(7, TRUE); diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index d8b1edc1..1674cb82 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -198,7 +198,7 @@ segments: - [0x4A6F0, c, code_4A6F0] #DONE - [0x4BD70, c, code_4BD70] #DONE - [0x4BE10, c, code_4BE10] #DONE - - [0x4C020, c, code_4C020] + - [0x4C020, c, code_4C020] #DONE - [0x4FB80, c, ch/wadingboots] #DONE - [0x4FF10, c, ch/badShad] #DONE - [0x50490, c, code_50490] #DONE @@ -478,6 +478,8 @@ segments: - [0xDFCC0, .data, ch/musicnote] - [0xDFCF0, .data, code_42CB0] - [0xDFD40, bin, data_DFD40] + - [0xDFF10, .data, ch/trainers] + - [0xDFF60, .data, code_43800] - [0xDFF90, .data, code_43A40] - [0xE0070, bin, data_E0070] - [0xE0080, .data, code_440B0] @@ -492,6 +494,8 @@ segments: - [0xE0500, bin, data_E0500] - [0xE05A0, .data, code_4BD70] - [0xE0660, bin, data_E0660] + - [0xE06F0, .data, code_4C020] + - [0xE0A70, bin, data_E0A70] - [0xE0AC0, .data, ch/badShad] - [0xE0AF0, .data, code_50490] - [0xE0B90, bin, data_E0B90] @@ -702,22 +706,22 @@ segments: - [0xEF360, .rodata, ch/jiggy] - [0xEF3E0, .rodata, ch/jigsawdance] - [0xEF450, .rodata, code_41460] - #- [0xEF480, .rodata, code_41FB0] #temp - - [0xEF480, bin, data_EF480] + - [0xEF480, bin, data_EF480] #.rodata, code_41FB0] + - [0xEF490, .rodata, code_41FB0] - [0xEF4C0, .rodata, ch/musicnote] - - [0xEF4D0, .rodata, code_42CB0] #DONE - - [0xEF4E0, bin, data_EF4E0] + - [0xEF4D0, .rodata, code_42CB0] + - [0xEF4E0, .rodata, ch/trainers] + - [0xEF4F0, .rodata, code_43800] - [0xEF500, .rodata, code_440B0] - [0xEF550, .rodata, code_45310] - [0xEF5D0, .rodata, ch/jinjo] - [0xEF5F0, bin, data_EF5F0] #part of ch/jinjo .rodata - [0xEF640, .rodata, ch/beehive] - - [0xEF650, bin, data_EF650] + - [0xEF650, bin, data_EF650] #.rodata, code_47BD0] - [0xEF6B0, bin, EF6B0] # .rodata, code_49A70] - [0xEF6D0, .rodata, ch/gloop] - [0xEF6E0, .rodata, code_4A6F0] - - [0xEF790, bin, data_EF790] - - [0xEFB10, .rodata, code_4C020] + - [0xEF790, .rodata, code_4C020] - [0xEFDB0, .rodata, ch/badShad] - [0xEFDC0, .rodata, code_50490] - [0xEFDD0, .rodata, code_509D0] diff --git a/symbol_addrs.core2.us.v10.txt b/symbol_addrs.core2.us.v10.txt index 6f82656d..dd4f10ff 100644 --- a/symbol_addrs.core2.us.v10.txt +++ b/symbol_addrs.core2.us.v10.txt @@ -444,6 +444,59 @@ D_80376468 = 0x80376468; D_803765E4 = 0x803765E4; D_80376650 = 0x80376650; D_80376658 = 0x80376658; +D_8037688C = 0x8037688C; +D_80376890 = 0x80376890; +D_80376898 = 0x80376898; +D_803768A0 = 0x803768A0; +D_803768A8 = 0x803768A8; +D_803768CC = 0x803768CC; +D_803768D0 = 0x803768D0; +D_803768D4 = 0x803768D4; +D_803768D8 = 0x803768D8; +D_803768DC = 0x803768DC; +D_803768E0 = 0x803768E0; +D_803768E4 = 0x803768E4; +D_803768E8 = 0x803768E8; +D_803768EC = 0x803768EC; +D_803768F0 = 0x803768F0; +D_803768F4 = 0x803768F4; +D_803768F8 = 0x803768F8; +D_803768FC = 0x803768FC; +D_80376900 = 0x80376900; +D_80376904 = 0x80376904; +D_80376908 = 0x80376908; +D_8037690C = 0x8037690C; +D_80376910 = 0x80376910; +D_80376914 = 0x80376914; +D_80376918 = 0x80376918; +D_8037691C = 0x8037691C; +D_80376920 = 0x80376920; +D_80376924 = 0x80376924; +D_80376928 = 0x80376928; +D_8037692C = 0x8037692C; +D_80376930 = 0x80376930; +D_80376934 = 0x80376934; +D_80376938 = 0x80376938; +D_8037693C = 0x8037693C; +D_80376940 = 0x80376940; +D_80376944 = 0x80376944; +D_80376948 = 0x80376948; +D_8037694C = 0x8037694C; +D_80376950 = 0x80376950; +D_80376954 = 0x80376954; +D_80376958 = 0x80376958; +D_8037695C = 0x8037695C; +D_80376960 = 0x80376960; +D_80376964 = 0x80376964; +D_80376968 = 0x80376968; +D_8037696C = 0x8037696C; +D_80376970 = 0x80376970; +D_80376974 = 0x80376974; +D_80376978 = 0x80376978; +D_8037697C = 0x8037697C; +D_80376980 = 0x80376980; +D_80376984 = 0x80376984; +D_80376988 = 0x80376988; D_803772D0 = 0x803772D0; D_80373DF0 = 0x80373DF0; D_80373DF8 = 0x80373DF8; @@ -451,6 +504,7 @@ D_80373E00 = 0x80373E00; D_80373E18 = 0x80373E18; D_80374C80 = 0x80374C80; D_80376410 = 0x80376410; +D_80376440 = 0x80376440; D_80376990 = 0x80376990; D_80377320 = 0x80377320; D_803774B0 = 0x803774B0;