From ddc9b2eb13957c1083cfb741bfec2740d9d59b95 Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Sat, 15 Oct 2022 19:43:59 -0500 Subject: [PATCH] core1/code_7F60.c progress --- README.md | 2 +- progress/progress_core1.svg | 4 +- progress/progress_total.svg | 4 +- src/core1/code_7F60.c | 73 ++++++++++++------------------------- 4 files changed, 28 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index d39bb36b..095f6468 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# banjo (90.8038%) +# banjo (90.8015%) diff --git a/progress/progress_core1.svg b/progress/progress_core1.svg index 9ac9962d..32a108e0 100644 --- a/progress/progress_core1.svg +++ b/progress/progress_core1.svg @@ -17,7 +17,7 @@ core1 - 82.5310% - 82.5310% + 82.6659% + 82.6659% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 5a3de375..18621069 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 90.8038% - 90.8038% + 90.8015% + 90.8015% \ No newline at end of file diff --git a/src/core1/code_7F60.c b/src/core1/code_7F60.c index a76d5ad1..d16bf1ca 100644 --- a/src/core1/code_7F60.c +++ b/src/core1/code_7F60.c @@ -8,59 +8,26 @@ s32 func_80245980(f32 arg0){ return arg0*65536.0f; } -#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_802459A0.s") -// void func_802459A0(void *arg0, s32 *arg1) { -// s32 *var_s3; -// s32 *var_s4; -// s32 temp_s2; -// s32 temp_v0; -// s32 var_s1; -// s32 var_s7; -// void *var_fp; -// void *var_s0; +void func_802459A0(float mf[4][4], Mtx *m) +{ + int i, j; + int e1,e2; + int *ai,*af; -// var_s3 = arg1; -// var_s4 = arg1 + 0x20; -// var_s7 = 0; -// var_fp = arg0; -// do { -// var_s1 = 0; -// var_s0 = var_fp; -// loop_2: -// temp_s2 = func_80245980(var_s0->unk0); -// temp_v0 = func_80245980(var_s0->unk4); -// var_s1 += 8; -// *var_s3 = (temp_s2 & 0xFFFF0000) | ((temp_v0 >> 0x10) & 0xFFFF); -// var_s0 += 8; -// var_s3 += 4; -// *var_s4 = ((temp_s2 << 0x10) & 0xFFFF0000) | (temp_v0 & 0xFFFF); -// var_s4 += 4; -// if (var_s1 != 0x10) { -// goto loop_2; -// } -// var_s7 += 1; -// var_fp += 0x10; -// } while (var_s7 != 4); -// } + ai=(int *) &m->m[0][0]; + af=(int *) &m->m[2][0]; + + for (i=0; i<4; i++) + for (j=0; j<2; j++) { + e1=func_80245980(mf[i][j*2]); + e2=func_80245980(mf[i][j*2+1]); + *(ai++) = ( e1 & 0xffff0000 ) | ((e2 >> 16)&0xffff); + *(af++) = ((e1 << 16) & 0xffff0000) | (e2 & 0xffff); + } +} #pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80245A7C.s") -// void func_80245A7C(Mtx *m0, Mtx *m1){ -// u32 *v0 = &m1->m[0][0]; -// u32 *v1 = &m1->m[2][0]; -// f32 *a2 = &m0->m[0][0]; -// s32 a0; -// s32 a1; -// int i; - -// for(i = 0; i < 8; i++){ -// a0 = a2[2*i]*65536.0f; -// a1 = a2[2*i+1]*65536.0f; - -// v0[i] = ((a0 << 0) & 0xffff0000) | ((a1 >> 16) & 0xffff); -// v1[i] = ((a0 << 16) & 0xffff0000) | ((a1 >> 0) & 0xffff); -// } -// } void func_80245BE4(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { s32 i, j; @@ -119,9 +86,15 @@ void func_80245F34(f32 *arg0, f32 *arg1, f32 *arg2) { *arg2 *= inv_len; } +void func_80245FB8(f32 mf[4][4], u16 *perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); #pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80245FB8.s") -#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/guPerspective.s") +void guPerspective(Mtx *m, u16 *perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale) { + f32 sp28[4][4]; + + func_80245FB8(sp28, perspNorm, fovy, aspect, near, far, scale); + func_802459A0(sp28, m); +} void func_8024632C(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4) { f32 sp34;