diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index dcbc7251..fda2e051 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core2 - 84.1198% - 84.1198% + 84.3551% + 84.3551% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index d6594414..4107ecab 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 86.0601% - 86.0601% + 86.1951% + 86.1951% \ No newline at end of file diff --git a/src/FP/code_19E0.c b/src/FP/code_19E0.c index 835f2a60..1ac1ed87 100644 --- a/src/FP/code_19E0.c +++ b/src/FP/code_19E0.c @@ -43,6 +43,7 @@ Actor *func_80387DD0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){ #pragma GLOBAL_ASM("asm/nonmatchings/FP/code_19E0/func_80388000.s") + void func_8038811C(ActorMarker *this_marker, ActorMarker *other_marker){ Actor *this = marker_getActor(this_marker); if(this->state == 2) diff --git a/src/core2/code_5DBC0.c b/src/core2/code_5DBC0.c index e28158f7..1e06d175 100644 --- a/src/core2/code_5DBC0.c +++ b/src/core2/code_5DBC0.c @@ -522,9 +522,6 @@ void func_802E6800(s32 arg0){ D_8037E900->flags &= ~arg0 | 0x1; } -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_5DBC0/func_802E6820.s") -#else void func_802E6820(s32 arg0) { BKSprite *prev_sprite_ptr; s32 chunk_count; @@ -539,74 +536,19 @@ void func_802E6820(s32 arg0) { D_8037E900->unk4 = (struct5DBC0_2s *)defrag(D_8037E900->unk4); D_8037E900->string = (char *)defrag(D_8037E900->string); for(var_s5 = 0; var_s5 < D_8037E900->unk10; var_s5++) { - if (D_8037E900->unk4[var_s5].unk8 != NULL) { - D_8037E900->unk4[var_s5].unk8 = (BKSpriteTextureBlock **)defrag(D_8037E900->unk4[var_s5].unk8); + if (D_8037E900->unk4[var_s5].letter_texture != NULL) { + D_8037E900->unk4[var_s5].letter_texture = (BKSpriteTextureBlock **)defrag(D_8037E900->unk4[var_s5].letter_texture); } - prev_sprite_ptr = D_8037E900->unk4[var_s5].unk0; - if (D_8037E900->unk4[var_s5].unk0 != NULL) { + prev_sprite_ptr = D_8037E900->unk4[var_s5].font_bin; + if (D_8037E900->unk4[var_s5].font_bin != NULL) { chunk_count = spriteGetFramePtr(prev_sprite_ptr, 0U)->chunkCnt; - D_8037E900->unk4[var_s5].unk0 = (BKSprite *)defrag_asset(D_8037E900->unk4[var_s5].unk0); + D_8037E900->unk4[var_s5].font_bin = (BKSprite *)defrag_asset(D_8037E900->unk4[var_s5].font_bin); for(i_chunk = 0; i_chunk < chunk_count; i_chunk++){ - D_8037E900->unk4[var_s5].unk8[i_chunk] = (BKSpriteTextureBlock *)((s32)D_8037E900->unk4[var_s5].unk0 + ((s32)D_8037E900->unk4[var_s5].unk8[i_chunk] - (s32)prev_sprite_ptr)); + D_8037E900->unk4[var_s5].letter_texture[i_chunk] = ((u32)(((s32)D_8037E900->unk4[var_s5].letter_texture[i_chunk] - (s32)prev_sprite_ptr)) + (u32)D_8037E900->unk4[var_s5].font_bin); } } } } } } -#endif - -/* BREAK??? */ -void func_802E6A90(BKModelUnk28List *arg0, BKVertexList *arg1, s32 arg2, f32 arg3[3]) { - Vtx *i_vtx; - Vtx *vtx_list; - s32 i; - s32 var_a2; - BKModelUnk28 *var_v1; - - vtx_list = vtxList_getVertices(arg1); - - var_v1 = (BKModelUnk28 *)(arg0 + 1); - for(arg2 = arg2; arg2 != 0; arg2--){ - var_v1 = (BKModelUnk28 *)((s16*)(var_v1 + 1) + (var_v1->vtx_count - 1)); - } - - for(i = 0; i < var_v1->vtx_count; i++){ - i_vtx = &vtx_list[var_v1->vtx_list[i]]; - i_vtx->v.ob[0] = (s16) (s32) arg3[0]; - i_vtx->v.ob[1] = (s16) (s32) arg3[1]; - i_vtx->v.ob[2] = (s16) (s32) arg3[2]; - - } -} - -void func_802E6BD0(BKModelUnk28List *arg0, BKVertexList *arg1, struct58s *arg2) { - Vtx *vtx_list; - Vtx *i_vtx; - s32 i; - BKModelUnk28 *var_s1; - s16 sp50[3]; - s32 temp_v0; - s32 var_s3; - s32 var_s4; - - vtx_list = vtxList_getVertices(arg1); - var_s1 = (BKModelUnk28 *)(arg0 + 1); - var_s3 = -2; - for(var_s4 = 0; var_s4 < arg0->count; var_s4++){ - if (var_s3 != var_s1->unk6) { - var_s3 = var_s1->unk6; - func_80251BCC(func_802EA110(arg2, var_s3)); - } - mlMtx_apply_vec3s(sp50, var_s1->unk0); - for(i = 0; i < var_s1->vtx_count; i++){ - i_vtx = &vtx_list[var_s1->vtx_list[i]]; - i_vtx->v.ob[0] = sp50[0]; - i_vtx->v.ob[1] = sp50[1]; - i_vtx->v.ob[2] = sp50[2]; - } - var_s1 = (BKModelUnk28 *)((s16*)(var_s1 + 1) + (var_s1->vtx_count - 1)); - } - osWritebackDCache(vtx_list, vtxList_getVtxCount(arg1) * sizeof(Vtx)); -} diff --git a/src/core2/code_5FB00.c b/src/core2/code_5FB00.c new file mode 100644 index 00000000..2caba084 --- /dev/null +++ b/src/core2/code_5FB00.c @@ -0,0 +1,57 @@ +#include +#include "functions.h" +#include "variables.h" + + +void func_802E6A90(BKModelUnk28List *arg0, BKVertexList *arg1, s32 arg2, f32 arg3[3]) { + Vtx *i_vtx; + Vtx *vtx_list; + s32 i; + s32 var_a2; + BKModelUnk28 *var_v1; + + vtx_list = vtxList_getVertices(arg1); + + var_v1 = (BKModelUnk28 *)(arg0 + 1); + for(arg2 = arg2; arg2 != 0; arg2--){ + var_v1 = (BKModelUnk28 *)((s16*)(var_v1 + 1) + (var_v1->vtx_count - 1)); + } + + for(i = 0; i < var_v1->vtx_count; i++){ + i_vtx = &vtx_list[var_v1->vtx_list[i]]; + i_vtx->v.ob[0] = (s16) (s32) arg3[0]; + i_vtx->v.ob[1] = (s16) (s32) arg3[1]; + i_vtx->v.ob[2] = (s16) (s32) arg3[2]; + + } +} + +void func_802E6BD0(BKModelUnk28List *arg0, BKVertexList *arg1, struct58s *arg2) { + Vtx *vtx_list; + Vtx *i_vtx; + s32 i; + BKModelUnk28 *var_s1; + s16 sp50[3]; + s32 temp_v0; + s32 var_s3; + s32 var_s4; + + vtx_list = vtxList_getVertices(arg1); + var_s1 = (BKModelUnk28 *)(arg0 + 1); + var_s3 = -2; + for(var_s4 = 0; var_s4 < arg0->count; var_s4++){ + if (var_s3 != var_s1->unk6) { + var_s3 = var_s1->unk6; + func_80251BCC(func_802EA110(arg2, var_s3)); + } + mlMtx_apply_vec3s(sp50, var_s1->unk0); + for(i = 0; i < var_s1->vtx_count; i++){ + i_vtx = &vtx_list[var_s1->vtx_list[i]]; + i_vtx->v.ob[0] = sp50[0]; + i_vtx->v.ob[1] = sp50[1]; + i_vtx->v.ob[2] = sp50[2]; + } + var_s1 = (BKModelUnk28 *)((s16*)(var_s1 + 1) + (var_s1->vtx_count - 1)); + } + osWritebackDCache(vtx_list, vtxList_getVtxCount(arg1) * sizeof(Vtx)); +} diff --git a/src/core2/code_5FD90.c b/src/core2/code_5FD90.c index f221250f..460e28ba 100644 --- a/src/core2/code_5FD90.c +++ b/src/core2/code_5FD90.c @@ -57,9 +57,6 @@ void func_802E6D20(BKCollisionTri *arg0, BKVertexList *vtx_list) { } -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_5FD90/func_802E6DEC.s") -#else void func_802E6DEC(BKCollisionList *collision_list, f32 arg1[3], f32 arg2[3], BKCollisionGeo ***arg3, BKCollisionGeo ***arg4) { s32 sp3C[3]; s32 sp30[3]; @@ -109,7 +106,7 @@ void func_802E6DEC(BKCollisionList *collision_list, f32 arg1[3], f32 arg2[3], BK for(z = sp3C[2]; z <= sp30[2]; z++){ for(y = sp3C[1]; y <= sp30[1]; y++){ for(x = sp3C[0]; x <= sp30[0]; x++){ - *(D_8037E910.unk190++) = (BKCollisionGeo *)((s32)collision_list + sizeof(BKCollisionList)) + (collision_list->unkE * z) + (y * collision_list->unkC) + (x); + *(D_8037E910.unk190++) = ((collision_list->unkE * z) + (BKCollisionGeo *)(collision_list + 1)) + x + (y * collision_list->unkC); } } } @@ -117,11 +114,7 @@ void func_802E6DEC(BKCollisionList *collision_list, f32 arg1[3], f32 arg2[3], BK *arg4 = D_8037E910.unk190; } } -#endif -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_5FD90/func_802E70FC.s") -#else void func_802E70FC(BKCollisionList *collision_list, s32 arg1[3], s32 arg2[3], BKCollisionGeo ***arg3, BKCollisionGeo ***arg4) { s32 sp3C[3]; s32 sp30[3]; @@ -168,10 +161,11 @@ void func_802E70FC(BKCollisionList *collision_list, s32 arg1[3], s32 arg2[3], BK } D_8037E910.unk190 = &D_8037E910.unk0[0]; + for(z = sp3C[2]; z <= sp30[2]; z++){ for(y = sp3C[1]; y <= sp30[1]; y++){ for(x = sp3C[0]; x <= sp30[0]; x++){ - *(D_8037E910.unk190++) = (BKCollisionGeo *)((s32)collision_list + sizeof(BKCollisionList)) + (collision_list->unkE * z) + x + (y * collision_list->unkC); + *(D_8037E910.unk190++) = ((collision_list->unkE * z) + (BKCollisionGeo *)(collision_list + 1)) + x + (y * collision_list->unkC); } } } @@ -179,7 +173,6 @@ void func_802E70FC(BKCollisionList *collision_list, s32 arg1[3], s32 arg2[3], BK *arg4 = D_8037E910.unk190; } } -#endif void func_802E73C8(f32 (*arg0)[3]) { s32 i; diff --git a/src/core2/code_9E370.c b/src/core2/code_9E370.c index 76084e58..0238aa9d 100644 --- a/src/core2/code_9E370.c +++ b/src/core2/code_9E370.c @@ -2065,6 +2065,7 @@ void func_8032ACA8(Actor *arg0) { extern s32 D_8036E5A8; void func_8032AD7C(s32 arg0) { s32 var_s0; + if (D_8036E560 != NULL) { if (D_8036E5A8 >= D_8036E560->cnt) { diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index a3bccc18..3e28a2c3 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -234,6 +234,7 @@ segments: - [0x5C240, c, code_5C240] #DONE - [0x5C870, c, code_5C870] #DONE - [0x5DBC0, c, code_5DBC0] + - [0x5FB00, c, code_5FB00] #DONE - [0x5FD80, c, code_5FD80] #DONE - [0x5FD90, c, code_5FD90] - [0x62FD0, c, code_62FD0] #DONE