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;