diff --git a/README.md b/README.md index 7c97e529..8144e762 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# banjo (99.1816%) +# banjo (99.1902%) diff --git a/include/prop.h b/include/prop.h index a42f0176..4025977b 100644 --- a/include/prop.h +++ b/include/prop.h @@ -48,18 +48,23 @@ typedef struct model_prop_s{ typedef struct actor_prop_s{ - struct actorMarker_s* marker; - s16 x; - s16 y; - s16 z; - u16 unk8_15:5; - u16 unk8_10:5; - u16 unk8_5:1; - u16 unk8_4:1; - u16 unk8_3:1; - u16 unk8_2:1; - u16 unk8_1:1; - u16 unk8_0:1; + union { + struct { + struct actorMarker_s* marker; + s16 x; + s16 y; + s16 z; + u16 unk8_15:5; + u16 unk8_10:5; + u16 unk8_5:1; + u16 unk8_4:1; + u16 unk8_3:1; + u16 unk8_2:1; + u16 unk8_1:1; + u16 unk8_0:1; + }; + s32 words[3]; + }; } ActorProp; typedef void(*MarkerCollisionFunc)(struct actorMarker_s *this, struct actorMarker_s *other); diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index 1c70a52e..3a1480c2 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -17,7 +17,7 @@ core2 - 98.5735% - 98.5735% + 98.5886% + 98.5886% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 99849367..0b716bb0 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 99.1816% - 99.1816% + 99.1902% + 99.1902% \ No newline at end of file diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c index 8f61be9c..fdf2daee 100644 --- a/src/core2/code_A5BC0.c +++ b/src/core2/code_A5BC0.c @@ -14,13 +14,10 @@ extern s32 func_802E9DD8(BKCollisionList *collisionList, BKVertexList *vtxList, extern void *func_802EBAE0(UNK_TYPE(s32), f32 position[3], f32 rotation[3], f32 scale, UNK_TYPE(s32), UNK_TYPE(s32), UNK_TYPE(s32), f32, UNK_TYPE(s32)); extern int func_802E805C(BKCollisionList *, BKVertexList *, f32[3], f32[3], f32, f32[3], f32[3], f32[3], u32); - extern f32 func_8030A590(void); extern void func_8030A5EC(Prop *, f32); Prop *func_80303F7C(s32, f32, s32, s32); -s32 func_8032D9C0(Cube*, Prop*); -void func_80332B2C(ActorMarker * arg0); s32 func_803058C0(f32); void func_80305CD8(s32, s32); void func_80330104(Cube*); @@ -28,6 +25,9 @@ ActorMarker * func_80332A60(void); extern void func_8032F3D4(s32 [3], ActorMarker *, s32); extern void func_8030A350(Gfx **, Mtx **, Vtx **, f32[3], f32, s32, Cube*,s32 ,s32, s32, s32, s32); extern void func_8030A2D0(Gfx **, Mtx **, Vtx **, f32[3], f32[3], f32, s32, Cube*); +s32 func_8032D9C0(Cube*, Prop*); +void func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3); +void func_80332B2C(ActorMarker * arg0); typedef union{ struct{ @@ -993,21 +993,25 @@ s32 func_8032F170(Cube **arg0, void **arg1){ return D_8038340C; } -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032F194.s") -#else void func_8032F194(ActorMarker *marker, s32 position[3], Cube *cube) { - ActorProp2 sp24; + ActorProp sp24; + ActorProp *propPtr = marker->propPtr; + ActorProp *v0 = &sp24; - ((s32*)&sp24)[2] = ((s32*)marker->propPtr)[2]; - sp24.x = (s16) position[0]; - sp24.y = (s16) position[1]; - sp24.z = (s16) position[2]; - func_8032F21C(cube, position, marker, func_8032D9C0(marker->cubePtr, marker->propPtr)); - ((s32*)marker->propPtr)[1] = ((s32*)&sp24)[1]; - ((s32*)marker->propPtr)[2] = ((s32*)&sp24)[2]; + v0 += 0; + + sp24.words[2] = propPtr->words[2]; + + v0->x = position[0]; + v0->y = position[1]; + v0->z = position[2]; + + func_8032F21C(cube, position, marker, func_8032D9C0(marker->cubePtr, propPtr)); + + propPtr = marker->propPtr; + propPtr->words[1] = sp24.words[1]; + propPtr->words[2] = sp24.words[2]; } -#endif void func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3) { ActorProp *sp1C;