From 6ae297e31f8bbe596a5e926fc9212a9a16a536bb Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Tue, 31 Jan 2023 21:34:21 -0600 Subject: [PATCH] func_803422D4() match --- README.md | 2 +- progress/progress_core2.svg | 4 +- progress/progress_total.svg | 4 +- src/core1/code_18350.c | 15 ++- src/core1/memory.c | 2 +- src/core2/code_B9770.c | 207 +++++++++++++++++------------------- 6 files changed, 111 insertions(+), 123 deletions(-) diff --git a/README.md b/README.md index 58271320..ad31d9b2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# banjo (97.8572%) +# banjo (97.8580%) diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index c08a39a7..a48914ae 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -17,7 +17,7 @@ core2 - 97.0177% - 97.0177% + 97.0190% + 97.0190% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 9350be9d..316298a5 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 97.8572% - 97.8572% + 97.8580% + 97.8580% \ No newline at end of file diff --git a/src/core1/code_18350.c b/src/core1/code_18350.c index 4e2ec73d..d10ffd00 100644 --- a/src/core1/code_18350.c +++ b/src/core1/code_18350.c @@ -618,13 +618,12 @@ f32 func_80257680(f32 val1, f32 val2, f32 val3) return tmp * tmp * (3 - tmp - tmp); } -void func_802576F8(void) +void ml_defrag(void) { - void *defrag(void *); if (!func_802559A0() && D_80276CB8 != NULL) // Updates heap location for asin/acos value table? - D_80276CB8 = defrag(D_80276CB8); + D_80276CB8 = (u16*) defrag(D_80276CB8); } //ml_timer_update @@ -773,7 +772,7 @@ f32 ml_interpolate_f(f32 arg0, f32 arg1, f32 arg2) return arg0 * (arg2 - arg1) + arg1; } -f32 func_80257C60(f32 a, f32 b, f32 c, f32 d, f32 e, f32 (*func)(f32)) +f32 ml_mapFunction_f(f32 a, f32 b, f32 c, f32 d, f32 e, f32 (*func)(f32)) { f32 val = func(ml_map_f(a, b, c, 0.f, 1.f)); @@ -782,12 +781,12 @@ f32 func_80257C60(f32 a, f32 b, f32 c, f32 d, f32 e, f32 (*func)(f32)) f32 func_80257CC0(f32 a, f32 b, f32 c, f32 d, f32 e) { - return func_80257C60(a, b, c, d, e, func_802575BC); + return ml_mapFunction_f(a, b, c, d, e, func_802575BC); } f32 func_80257CF8(f32 a, f32 b, f32 c, f32 d, f32 e) { - return func_80257C60(a, b, c, d, e, func_80257658); + return ml_mapFunction_f(a, b, c, d, e, func_80257658); } f32 ml_mapRange_f(f32 val, f32 in_min, f32 in_max, f32 out_min, f32 out_max) @@ -809,7 +808,7 @@ void func_80257DB0(f32 arg0[3], f32 arg1[3], f32 arg2[3]) ml_vec3f_diff_copy(arg0, tmp, arg0); } -void func_80257E14(f32 v[3], f32 a) +void ml_setLength_vec3f(f32 v[3], f32 a) { if (_SQ3(v[0], v[1], v[2]) > a * a) { @@ -969,7 +968,7 @@ int func_80258424(f32 vec[3], f32 minX, f32 minY, f32 minZ, f32 maxX, f32 maxY, && vec[2] > minZ && vec[2] < maxZ; } -//ml_vec3f_inside_box +//ml_vec3f_inside_box_vec3f int func_802584FC(f32 vec[3], f32 min[3], f32 max[3]) { return vec[0] > min[0] && vec[0] < max[0] diff --git a/src/core1/memory.c b/src/core1/memory.c index ca1b4f3d..f46a8b76 100644 --- a/src/core1/memory.c +++ b/src/core1/memory.c @@ -809,7 +809,7 @@ void func_80255A3C(void){ func_802F542C(); if(!func_802559A0()){ - func_802576F8(); + ml_defrag(); func_80254464(); } diff --git a/src/core2/code_B9770.c b/src/core2/code_B9770.c index 6abdf043..3fb76913 100644 --- a/src/core2/code_B9770.c +++ b/src/core2/code_B9770.c @@ -657,11 +657,8 @@ void func_803422AC(ActorMarker *caller, enum asset_e text_id, s32 arg2){ jiggyscore_total(); } -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_B9770/func_803422D4.s") -#else -s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { - s32 sp84 = 0; +s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2){ + s32 sp84; u8 sp83; f32 sp7C; s32 sp78; @@ -669,18 +666,18 @@ s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { u32 sp70; s32 sp6C; s32 sp68; - s32 sp64; + s32 sp64 = 1; f32 sp60; f32 sp54[3]; f32 sp50; f32 sp4C; - Struct_glspline_t1 *sp48; /* compiler-managed */ + Struct_glspline_t1 *sp48; Struct_glspline_t1 *temp_v0_6; - if (arg1->common.unkC.bit0) { - if (D_80371E80 == 1) { - sp84 = 1; - } + sp84 = 0; + if (arg1->common.unkC.bit0){ + if(sp64 == D_80371E80) sp84 = sp64; + switch (arg1->t0.unk4.common.bit3) { case 1: func_80250530(0, arg1->t0.unk4.common.bit31, 3.0f); @@ -693,59 +690,54 @@ s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { case 3: sp78 = arg1->t0.unk4.common.bit31; - sp7C = arg1->t0.unk8.bit31/8.388608e6f; - sp74 = arg1->t0.unk4.common.bit15*8; + sp7C = arg1->t0.unk8.bit31 / 8.388608e6f; + sp74 = arg1->t0.unk4.common.bit15 * 8; sp70 = arg1->t0.unk10.common.bit7; - if (func_8030ED70(func_80255D44(sp78))) { + if (func_8030ED70(func_80255D44(sp78))){ sp83 = func_8030D90C(); if (sp83 == 0){ return sp84; } - sfxsource_setSfxId(sp83, func_80255D44(sp78)); func_8030DBB4(sp83, sp7C); sfxsource_setSampleRate(sp83, sp74); func_8030E2C4(sp83); - if (D_803858A0[sp70] != 0) { + if (D_803858A0[sp70] != 0){ func_8030DA44(D_803858A0[sp70]); } D_803858A0[sp70] = sp83; - } else { func_8030E6A4(func_80255D44(sp78), sp7C, sp74); } break; case 7: - if(((arg1->t0.unk10.word << 0x1e) >>0x1f) == TRUE){ - arg0->unk124_11 = (arg1->t0.unk4.t7.bit31 == FALSE) ? 2 - : (arg1->t0.unk4.t7.bit31 == TRUE) ? 1 - : 0; - arg0->unk1C[0] = (arg1->t0.unk4.t7.bit30 != 0) ? (f32)((f32)arg1->t0.unk4.t7.bit30 * 0.25) - : 0.0f; + if (((arg1->t0.unk10.word << 0x1e) >> 0x1f) == 1){ + arg0->unk124_11 = (arg1->t0.unk4.t7.bit31 == 0) ? (2) : ((sp64 == arg1->t0.unk4.t7.bit31) ? (1) : (0)); + arg0->unk1C[0] = (arg1->t0.unk4.t7.bit30 != 0) ? ((f32) (((f32) arg1->t0.unk4.t7.bit30) * 0.25)) : (0.0f); arg0->unk1C[1] = 0.0f; } - if (arg1->t0.unkC.bit21 == 1) { + if (arg1->t0.unkC.bit21 == 1){ func_803110F8(arg1->t0.unkC.bit20, arg1->t0.unk10.t7.bit7, arg1->t0.unk4.t7.bit15, arg1->t0.unk4.t7.bit7, func_803422AC); } - if ((arg1->t0.unkC.bit23 == 1) || (arg1->t0.unkC.bit23 == 2)) { + if ((arg1->t0.unkC.bit23 == 1) || (arg1->t0.unkC.bit23 == 2)){ D_80371E80 = arg1->t0.unkC.bit23 - 1; } break; - + case 6: - mapSpecificFlags_set(arg1->t0.unk4.common.bit31, TRUE); + mapSpecificFlags_set(arg1->t0.unk4.common.bit31, 1); break; case 4: - if (D_803858A0[arg1->t0.unk10.common.bit7] != 0) { + if (D_803858A0[arg1->t0.unk10.common.bit7] != 0){ func_8025A7DC(func_80255D30(D_803858A0[arg1->t0.unk10.common.bit7])); D_803858A0[arg1->t0.unk10.common.bit7] = 0; } break; case 5: - if (D_803858A0[arg1->t0.unk10.common.bit7] != 0) { + if (D_803858A0[arg1->t0.unk10.common.bit7] != 0){ func_8030DA44(D_803858A0[arg1->t0.unk10.common.bit7]); D_803858A0[arg1->t0.unk10.common.bit7] = 0; } @@ -765,103 +757,100 @@ s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { arg0->position[1] = sp54[1]; arg0->position[2] = sp54[2]; if (sp68 != 0) { - if (sp50 != -9999.0f) { + if (sp50 != (-9999.0f)) { arg0->yaw = sp50; - if (arg0->marker->unk14_20 == 0x12) { - arg0->yaw = (f32) func_80342244((s32) arg0->yaw); - } + if (arg0->marker->unk14_20 == 0x12) { + arg0->yaw = (f32) func_80342244((s32) arg0->yaw); + } arg0->yaw_ideal = arg0->yaw; } - if (sp4C != -9999.0f) { + if (sp4C != (-9999.0f)){ arg0->pitch = sp4C; arg0->unk6C = arg0->pitch; } - if ((sp50 != -9999.0f) || (sp4C != -9999.0f)) { + if ((sp50 != (-9999.0f)) || (sp4C != (-9999.0f))){ func_802CDAC4(arg0); } } - if (sp64) { - - } + if (sp64); } - } else { - if (D_80371E80 == 1) { - sp84 = 1; + if (sp64 == D_80371E80){ + sp84 = sp64; } - if (arg1->t1.unk8.bit8) { - if (arg1->t1.unk10.bit5) { - arg0->unk138_3 = (arg1->t1.unkC.bit11 - 0x69); + if (arg1->t1.unk8.bit8){ + if (arg1->t1.unk10.bit5){ + arg0->unk138_3 = arg1->t1.unkC.bit11 - 0x69; } else { - arg0->unk54 = (f32)arg1->t1.unkC.bit11 / 4; + arg0->unk54 = ((f32) arg1->t1.unkC.bit11) / 4; } } - if (arg1->t1.unk8.bit10) { - arg0->unk5C = (f32)arg1->t1.unk8.bit21 / 4; + if (arg1->t1.unk8.bit10){ + arg0->unk5C = ((f32) arg1->t1.unk8.bit21) / 4; arg0->unk58_31 = func_80255D58(arg1->t1.unk8.bit31); - if (arg0->animctrl == NULL) { + if (arg0->animctrl == 0) { arg0->animctrl = animctrl_new(0); animctrl_reset(arg0->animctrl); } animctrl_setIndex(arg0->animctrl, arg0->unk58_31); animctrl_setDuration(arg0->animctrl, arg0->unk5C); animctrl_setDirection(arg0->animctrl, 1); - if (arg0->animctrl != NULL) { - _func_802875AC(arg0->animctrl, "glspline.c"/*&D_80378FF0*/, 0x545); + if (arg0->animctrl != 0) { + _func_802875AC(arg0->animctrl, "glspline.c", 0x545); } } - switch (arg1->t1.unk4.bit6) { /* switch 2 */ - case 1: /* switch 2 */ - arg0->unk10_4 = TRUE; - arg0->unk10_8 = TRUE; - arg0->unk10_7 = TRUE; + switch (arg1->t1.unk4.bit6){ + case 1: + arg0->unk10_4 = 1; + arg0->unk10_8 = 1; + arg0->unk10_7 = 1; break; - case 2: /* switch 2 */ - arg0->unk10_4 = FALSE; - arg0->unk10_8 = FALSE; + case 2: + arg0->unk10_4 = 0; + arg0->unk10_8 = 0; break; - case 3: /* switch 2 */ - arg0->unk10_4 = FALSE; - arg0->unk10_8 = TRUE; + case 3: + arg0->unk10_4 = 0; + arg0->unk10_8 = 1; break; - case 4: /* switch 2 */ - arg0->unk10_4 = FALSE; - arg0->unk10_7 = FALSE; + case 4: + arg0->unk10_4 = 0; + arg0->unk10_7 = 0; break; - case 5: /* switch 2 */ - arg0->unk10_4 = FALSE; - arg0->unk10_7 = TRUE; + case 5: + arg0->unk10_4 = 0; + arg0->unk10_7 = 1; break; - case 6: /* switch 2 */ - arg0->unk10_4 = FALSE; - arg0->unk10_8 = FALSE; - arg0->unk10_7 = FALSE; + case 6: + arg0->unk10_4 = 0; + arg0->unk10_8 = 0; + arg0->unk10_7 = 0; break; - case 7: /* switch 2 */ - arg0->unk10_4 = FALSE; - arg0->unk10_8 = TRUE; - arg0->unk10_7 = TRUE; + case 7: + arg0->unk10_4 = 0; + arg0->unk10_8 = 1; + arg0->unk10_7 = 1; break; } - switch (arg1->t1.unk4.bit3) { /* switch 3 */ - case 2: /* switch 3 */ + switch (arg1->t1.unk4.bit3){ + case 2: arg0->unk10_6 = 0; - if (arg0->unk4C < 0.0f) { + if (arg0->unk4C < 0.0f){ arg0->unk4C = -arg0->unk4C; } else { arg0->unk4C = arg0->unk4C; } actor_playAnimationOnce(arg0); - break; + break; - case 3: /* switch 3 */ + case 3: arg0->unk10_6 = 0; if (arg0->unk4C < 0.0f) { arg0->unk4C = arg0->unk4C; @@ -871,7 +860,7 @@ s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { actor_playAnimationOnce(arg0); break; - case 4: /* switch 3 */ + case 4: arg0->unk10_6 = 1; if (arg0->unk4C < 0.0f) { arg0->unk4C = -arg0->unk4C; @@ -881,9 +870,9 @@ s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { actor_loopAnimation(arg0); break; - case 5: /* switch 3 */ + case 5: arg0->unk10_6 = 1; - if (arg0->unk4C < 0.0f) { + if (arg0->unk4C < 0.0f){ arg0->unk4C = arg0->unk4C; } else { arg0->unk4C = -arg0->unk4C; @@ -891,67 +880,67 @@ s32 func_803422D4(Actor *arg0, Union_glspline *arg1, SplineList *arg2) { actor_loopAnimation(arg0); break; - case 6: /* switch 3 */ + case 6: arg0->unk10_6 = 2; break; + } - if (arg1->t1.unk4.bit19 != 0) { + if (arg1->t1.unk4.bit19 != 0){ arg0->unk10_3 = arg1->t1.unk4.bit19; } - - if (arg1->t1.unk10.bit6 != arg0->unk138_30) { + if (arg0->unk138_30 != arg1->t1.unk10.bit6){ arg0->unk138_30 = arg1->t1.unk10.bit6; } - - if (arg1->t1.unk8.bit9) { - if (!func_802E4A08() && (arg0->modelCacheIndex == ACTOR_123_MAGIC_CARPET_2)) { - arg0->unk4C = func_80323540(func_80342038(arg0->unk44_14), arg0->unk48, 1.0f, 500.0f) / ((f32)arg1->t1.unkC.bit22 / 4); + if (arg1->t1.unk8.bit9){ + if ((!func_802E4A08()) && (arg0->modelCacheIndex == ACTOR_123_MAGIC_CARPET_2)){ + arg0->unk4C = func_80323540(func_80342038(arg0->unk44_14), arg0->unk48, 1.0f, 500.0f) / (((f32) arg1->t1.unkC.bit22) / 4); } else { arg0->unk4C = func_80342260(arg0->unk44_14, arg0->unk48, arg1->t1.unkC.bit22); } } - if (arg1->t1.unk4.bit31 != 0) { - sp48 = &arg2->spline[0].t1; - temp_v0_6 = &arg2->spline[arg2->unk0].t1; - while(sp48->unk10.bit31 != arg1->t1.unk4.bit31 && sp48 < temp_v0_6){ - sp48++; + if (arg1->t1.unk4.bit31 != 0){ + temp_v0_6 = arg2->unk0 + &arg2->spline[0]; + for (sp48 = &arg2->spline[0]; (sp48->unk10.bit31 != (arg1->t1.unk4.bit31 ^ 0)) && (sp48 < temp_v0_6); sp48++){ + ; } + arg0->unkF4_24 = arg1->t0.unk4.common.bit31; arg0->unk70 = arg1->t1.unk0; arg0->unk74 = sp48->unk0; - if (arg1->t1.unk4.bit17 & 1) { + if (arg1->t1.unk4.bit17 & 1) + { arg0->unk38_13 = arg1->t1.unkC.bit31; arg0->unk38_21 = sp48->unkC.bit31; arg0->unk78_31 = arg1->t1.unk4.bit15; arg0->unk78_22 = sp48->unk4.bit15; - if (arg0->marker->unk14_20 == 0x12) { + if (arg0->marker->unk14_20 == 0x12) + { arg0->unk38_13 = func_80342244(arg0->unk38_13); arg0->unk38_21 = func_80342244(arg0->unk38_21); } - arg0->yaw = arg0->yaw_ideal = (f32) arg0->unk38_13; - arg0->pitch = arg0->unk6C = (f32) arg0->unk78_31; + arg0->yaw = (arg0->yaw_ideal = (f32) arg0->unk38_13); + arg0->pitch = (arg0->unk6C = (f32) arg0->unk78_31); } - if (arg1->t1.unk4.bit17 & 2) { + if (arg1->t1.unk4.bit17 & 2){ arg0->unk140 = arg0->unk4C; - arg0->unk144 = func_803234FC(func_80342038(arg0->unk44_14), sp48->unk0, 1.0f) / ((f32)sp48->unkC.bit22 / 4); + arg0->unk144 = func_803234FC(func_80342038(arg0->unk44_14), sp48->unk0, 1.0f) / (((f32) sp48->unkC.bit22) / 4); } } - if (!arg0->unk10_4) { - if (arg0->unk10_8) { - arg0->yaw_ideal = (f32)arg1->t1.unkC.bit31; - if (arg0->marker->unk14_20 == 0x12) { + if (!arg0->unk10_4){ + if (arg0->unk10_8){ + arg0->yaw_ideal = (f32) arg1->t1.unkC.bit31; + if (arg0->marker->unk14_20 == 0x12){ arg0->yaw_ideal = (f32) func_80342244((s32) arg0->yaw_ideal); } } - if (arg0->unk10_7) { - arg0->unk6C = (f32)arg1->t1.unk4.bit15; + if (arg0->unk10_7){ + arg0->unk6C = (f32) arg1->t1.unk4.bit15; } } } return sp84; } -#endif void func_803430B4(Actor *arg0) { f32 d_yaw;