diff --git a/include/structs.h b/include/structs.h
index 66010fe..3536117 100644
--- a/include/structs.h
+++ b/include/structs.h
@@ -606,8 +606,13 @@ typedef struct player_additional_actor_data {
s16 unk10; // Used
s16 unk12; // Used
s16 unk14; // Used
- s8 unk16;
- s8 unk17; // Used, set to current file selection?
+ union {
+ struct {
+ s8 unk16_s8;
+ s8 unk17; // Used, set to current file selection?
+ };
+ s16 unk16;
+ };
u16 unk18; // Used
u16 unk1A;
f32 unk1C; // Used
@@ -826,6 +831,9 @@ typedef struct player_additional_actor_data {
u16 unk24C; // Used // TODO: s16? func_806CA1B4 uses this as u16
u16 unk24E; // Used // TODO: s16? func_806CA1B4 uses this as u16
s32 unk250;
+ s32 unk254;
+ f32 unk258; // Used
+ f32 unk25C; // Used
} PlayerAdditionalActorData;
//f32 at unk8 doesn't match with what's in structs.h (s16)
diff --git a/progress/progress.global_asm.csv b/progress/progress.global_asm.csv
index 041b5da..2854011 100644
--- a/progress/progress.global_asm.csv
+++ b/progress/progress.global_asm.csv
@@ -1375,7 +1375,7 @@ us,.code,func_806C90C4,512,yes
us,.code,func_806E7C70,388,no
us,.code,func_8070DC40,100,no
us,.code,func_806A6468,268,no
-us,.code,func_806F386C,228,no
+us,.code,func_806F386C,228,yes
us,.code,func_8065D170,60,yes
us,.code,func_80692520,32,yes
us,.code,func_806C7C10,132,yes
@@ -1750,7 +1750,7 @@ us,.code,func_806B7660,68,yes
us,.code,func_80601224,52,yes
us,.code,func_80733A88,256,no
us,.code,func_80641B00,204,no
-us,.code,func_806F3BEC,452,no
+us,.code,func_806F3BEC,452,yes
us,.code,func_8070943C,40,yes
us,.code,func_8067E43C,152,no
us,.code,func_80639968,668,no
@@ -2894,7 +2894,7 @@ us,.code,func_806EC8C4,208,no
us,.code,func_8064774C,232,no
us,.code,func_8064EAB4,136,yes
us,.code,func_80651B64,92,yes
-us,.code,func_806F39E8,516,no
+us,.code,func_806F39E8,516,yes
us,.code,func_806DC410,1644,no
us,.code,func_8064A180,20,yes
us,.code,func_806CF580,760,no
@@ -2947,7 +2947,7 @@ us,.code,func_80737F40,152,no
us,.code,func_80605510,744,no
us,.code,func_806FD9FC,144,no
us,.code,func_8071B44C,212,no
-us,.code,func_806F2A40,520,no
+us,.code,func_806F2A40,520,yes
us,.code,func_806764D8,104,yes
us,.code,func_80672328,632,no
us,.code,func_80714660,8,yes
diff --git a/progress/progress.total.csv b/progress/progress.total.csv
index 9cecc55..385ee4e 100644
--- a/progress/progress.total.csv
+++ b/progress/progress.total.csv
@@ -1375,7 +1375,7 @@ us,.code,func_806C90C4,512,yes
us,.code,func_806E7C70,388,no
us,.code,func_8070DC40,100,no
us,.code,func_806A6468,268,no
-us,.code,func_806F386C,228,no
+us,.code,func_806F386C,228,yes
us,.code,func_8065D170,60,yes
us,.code,func_80692520,32,yes
us,.code,func_806C7C10,132,yes
@@ -1750,7 +1750,7 @@ us,.code,func_806B7660,68,yes
us,.code,func_80601224,52,yes
us,.code,func_80733A88,256,no
us,.code,func_80641B00,204,no
-us,.code,func_806F3BEC,452,no
+us,.code,func_806F3BEC,452,yes
us,.code,func_8070943C,40,yes
us,.code,func_8067E43C,152,no
us,.code,func_80639968,668,no
@@ -2894,7 +2894,7 @@ us,.code,func_806EC8C4,208,no
us,.code,func_8064774C,232,no
us,.code,func_8064EAB4,136,yes
us,.code,func_80651B64,92,yes
-us,.code,func_806F39E8,516,no
+us,.code,func_806F39E8,516,yes
us,.code,func_806DC410,1644,no
us,.code,func_8064A180,20,yes
us,.code,func_806CF580,760,no
@@ -2947,7 +2947,7 @@ us,.code,func_80737F40,152,no
us,.code,func_80605510,744,no
us,.code,func_806FD9FC,144,no
us,.code,func_8071B44C,212,no
-us,.code,func_806F2A40,520,no
+us,.code,func_806F2A40,520,yes
us,.code,func_806764D8,104,yes
us,.code,func_80672328,632,no
us,.code,func_80714660,8,yes
diff --git a/progress/progress_global_asm.svg b/progress/progress_global_asm.svg
index 3cab847..9c5ce35 100644
--- a/progress/progress_global_asm.svg
+++ b/progress/progress_global_asm.svg
@@ -17,7 +17,7 @@
global_asm
- 18.2520%
- 18.2520%
+ 18.3914%
+ 18.3914%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 6db6ef9..d74c6ca 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -17,7 +17,7 @@
Donkey Kong 64 (US)
- 18.5092%
- 18.5092%
+ 18.6134%
+ 18.6134%
\ No newline at end of file
diff --git a/src/bonus/code_2690.c b/src/bonus/code_2690.c
index 1db84ad..045a8d1 100644
--- a/src/bonus/code_2690.c
+++ b/src/bonus/code_2690.c
@@ -101,16 +101,92 @@ void func_80690A28(s32, s32, f32, f32, f32, f32, f32, Actor *);
extern f32 D_8002DD28;
void func_800274A0(f32 arg0, f32 arg1, f32 arg2) {
- Actor *temp_v0;
-
playSound(0x59, 0x7FFF, 63.0f, 1.0f, 0x1E, 0);
- temp_v0 = current_actor_pointer;
- func_806907F0(temp_v0->x_position, temp_v0->y_position - 10.0f, temp_v0->z_position);
+ func_806907F0(current_actor_pointer->x_position, current_actor_pointer->y_position - 10.0f, current_actor_pointer->z_position);
func_80690A28(0x23, 1, 0.6f, arg0, arg1, arg2, D_8002DD28, current_actor_pointer);
}
#pragma GLOBAL_ASM("asm/nonmatchings/bonus/code_2690/func_80027548.s")
+extern f64 D_8002DD30;
+extern f64 D_8002DD38;
+extern u16 D_807FD63C;
+
+typedef struct {
+ s32 unk0;
+ s32 unk4[1];
+ s32 unk8;
+ s32 unkC;
+ s32 unk10;
+ s32 unk14;
+ u8 unk18[1]; // Used
+ u8 unk19;
+ u8 unk1A;
+ u8 unk1B;
+ s16 unk1C;
+ s16 unk1E; // Used
+ s16 unk20; // Used
+ u8 unk22; // Used
+ u8 unk23; // Used
+ s16 unk24;
+ s8 unk26; // Used
+ s8 unk27;
+ s32 unk28;
+ s32 unk2C;
+} AAD_80027548;
+
+f32 func_80611BB4(f32, f32);
+
+void func_80626F8C(f32, f32, f32, f32*, f32*, s32, f32, s32);
+f32 func_8000AC60(f32);
+
+/*
+// TODO: Very close, only thing left is the stack
+u8 func_80027548(f32 arg0, f32 arg1, f32 arg2) {
+ f32 temp_f0;
+ f32 temp_f2;
+ s16 i;
+ f32 sp50;
+ f32 sp4C;
+ AAD_80027548 *aaD;
+ u8 sp40;
+
+ aaD = current_actor_pointer->additional_actor_data;
+ sp40 = 0;
+ aaD->unk26 = 1;
+ func_80626F8C(arg0, arg1, arg2, &sp50, &sp4C, 0, 4.0f, 0);
+ aaD->unk1E = sp50;
+ aaD->unk20 = sp4C;
+ current_actor_pointer->y_rotation = func_806CC190(current_actor_pointer->y_rotation, func_80665DE0(arg0, arg2, current_actor_pointer->x_position, current_actor_pointer->z_position), 10.0f);
+ temp_f0 = current_actor_pointer->x_position - arg0;
+ temp_f2 = current_actor_pointer->z_position - arg2;
+ current_actor_pointer->z_rotation = func_806CC190(current_actor_pointer->z_rotation, ((func_80611BB4(current_actor_pointer->y_position - arg1, func_8000AC60((temp_f0 * temp_f0) + (temp_f2 * temp_f2))) * 2048.0) / D_8002DD30) + D_8002DD38, 5.0f);
+ if ((D_807FD63C & 0xE000) && (current_actor_pointer->control_state == 0)) {
+ sp40 = 1;
+ if (aaD->unk22 != 0) {
+ if ((aaD->unk23 != 0) && (aaD->unk18[0] == 0)) {
+ func_800274A0(arg0, arg1, arg2);
+ aaD->unk23--;
+ func_80715908(aaD->unk4[aaD->unk23]);
+ func_8060E7EC(0, 0xFF, 3);
+ aaD->unk4[aaD->unk23] = 0;
+ for (i = 0; i < aaD->unk23; i++) {
+ aaD->unk18[i] = 0xA;
+ }
+ } else if ((aaD->unk23 == 0) && (current_actor_pointer->control_state_progress == 0)) {
+ sp40 = 2;
+ current_actor_pointer->control_state_progress = 1;
+ }
+ } else if (aaD->unk23 < 5) {
+ aaD->unk23 = 5;
+ func_8002733C(aaD);
+ current_actor_pointer->control_state_progress = 0;
+ }
+ }
+ return sp40;
+}
+*/
+
#pragma GLOBAL_ASM("asm/nonmatchings/bonus/code_2690/func_800277F8.s")
typedef struct {
@@ -166,7 +242,6 @@ typedef struct {
u8 func_80027548(f32 arg0, f32 arg1, f32 arg2);
u8 func_806FDB8C(s16, s32, s32, f32, f32, f32);
void func_8061C464(Actor*, Actor*, s32, s32, s32, s32, s32, s32, s32, s32, f32);
-f32 func_80611BB4(f32, f32);
/*
// TODO: Good progress made, doable
@@ -384,16 +459,46 @@ void func_800284C0(void) {
#pragma GLOBAL_ASM("asm/nonmatchings/bonus/code_2690/func_80028648.s")
+typedef struct {
+ s32 unk0;
+ s32 unk4;
+ s32 unk8;
+ s32 unkC;
+ s32 unk10;
+ s32 unk14;
+ s16 unk18;
+ u8 unk1A;
+ u8 unk1B; // Used
+ u8 unk1C; // Used
+} ARG0_80028648;
+
+typedef struct {
+ Actor* unk0; // Used
+ s32 unk4;
+ s32 unk8;
+ s32 unkC;
+ u8 unk10;
+ u8 unk11; // Used
+} AAD_80028648;
+
+typedef struct {
+ Actor* unk0; // Used
+ s16 unk4;
+ s8 unk6; // Used
+ s8 unk7;
+ s16 unk8; // Used
+} AAD_80028648_2;
+
/*
-// TODO: Needs some structs
-void func_80028648(void *arg0) {
+// TODO: Pretty close
+void func_80028648(ARG0_80028648 *arg0) {
Actor *temp_s5;
Actor *temp_v0;
s32 i;
u8 temp_v1;
- void *temp_s2;
+ AAD_80028648 *temp_s2;
Struct807F5FD4 *temp_s3;
- void *temp_v0_2;
+ AAD_80028648_2 *temp_v0_2;
for (i = 1; i < 7; i++) {
if (func_80677FA8(0x12C, 0x15) != 0) {
@@ -407,7 +512,7 @@ void func_80028648(void *arg0) {
D_807FBB44->z_position = temp_s3->unk8;
D_807FBB44->object_properties_bitfield |= 0x1000;
D_807FBB44->y_rotation = 0x800;
- arg0[i]->unk-4 = D_807FBB44;
+ arg0[i].unk0 = D_807FBB44;
if (func_80677FA8(0x12D, 0x16) != 0) {
temp_v0_2 = D_807FBB44->additional_actor_data;
temp_v0_2->unk0 = D_807FBB44;
diff --git a/src/global_asm/code_F56F0.c b/src/global_asm/code_F56F0.c
index 5b20488..9237ac6 100644
--- a/src/global_asm/code_F56F0.c
+++ b/src/global_asm/code_F56F0.c
@@ -392,9 +392,58 @@ f32 func_806F1B90(f32 *arg0, f32 arg1) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F2754.s")
-#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F2A40.s")
+extern f64 D_8075D778;
+extern f64 D_8075D780;
+extern f32 D_8075D788;
-#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F2C48.s")
+typedef struct {
+ s8 unk0;
+ u8 unk1;
+ u16 unk2;
+ u16 unk4;
+ s16 unk6;
+} Struct806F2754;
+
+f32 func_80611BB4(f32, f32);
+
+/*
+// TODO: Very close
+void func_806F2754(Actor *arg0, Struct806F2754 *arg1, s32 *arg2) {
+ f32 dz;
+ s16 sp1A;
+ f32 temp_f0_2;
+ f32 dx;
+ s16 temp_t8;
+ s32 var_v0;
+
+ dz = character_change_array[cc_player_index].look_at_eye_z - character_change_array[cc_player_index].look_at_at_z;
+ dx = character_change_array[cc_player_index].look_at_eye_x - character_change_array[cc_player_index].look_at_at_x;
+ sp1A = (arg0->PaaD->unk104->PaaD->unkB2 - arg0->y_rotation) - 0x800;
+ temp_f0_2 = func_80611BB4(character_change_array[cc_player_index].look_at_eye_y - character_change_array[cc_player_index].look_at_at_y, sqrtf((dz * dz) + (dx * dx)));
+ temp_t8 = sp1A & 0xFFF;
+ var_v0 = temp_t8;
+ if ((temp_t8 < 0xC00) && (temp_t8 >= 0x801)) {
+ var_v0 = 0xC00;
+ arg0->y_rotation = (arg0->y_rotation + temp_t8) - 0xC00;
+ } else if ((var_v0 >= 0x401) && (var_v0 < 0x800)) {
+ arg0->y_rotation = (arg0->y_rotation + var_v0) - 0x400;
+ var_v0 = 0x400;
+ }
+ arg1[*arg2].unk0 = -0x80;
+ arg1[*arg2].unk1 = 2;
+ arg1[*arg2].unk4 = (var_v0 / D_8075D780) * D_8075D778;
+ arg1[*arg2].unk2 = (temp_f0_2 / D_8075D788) * D_8075D778;
+ arg1[*arg2].unk6 = 0;
+ *arg2 += 1;
+}
+*/
+
+extern f32 D_8075D78C;
+extern f64 D_8075D790;
+extern f32 D_8075D798;
+extern f64 D_8075D7A0;
+extern f64 D_8075D7A8;
+extern f64 D_8075D7B0;
typedef struct {
u8 unk0;
@@ -406,6 +455,117 @@ typedef struct {
f32 unkC;
} Struct806F2EDC;
+void func_806F2A40(Actor *arg0, Struct806F2EDC *arg1, s32 *arg2) {
+ f32 var_f0;
+ f32 var_f12;
+ f32 var_f2;
+ f32 var_f6;
+ u8 temp_a0;
+
+ var_f0 = extra_player_info_pointer->unk21E * D_8075D78C;
+ if (var_f0 < D_8075D790) {
+ var_f0 = D_8075D798;
+ }
+ switch (arg0->control_state) {
+ case 0x34:
+ case 0x84:
+ if (D_8075D7A0 < extra_player_info_pointer->unk25C) {
+ extra_player_info_pointer->unk258 = extra_player_info_pointer->unk258 * D_8075D7A8;
+ extra_player_info_pointer->unk25C = extra_player_info_pointer->unk25C * D_8075D7B0;
+ } else {
+ arg0->object_properties_bitfield &= 0xFFFF7FFF;
+ if (extra_player_info_pointer->unk21E != 0) {
+ extra_player_info_pointer->unk21E--;
+ }
+ arg0->shadow_opacity = 255.0f * var_f0;
+ }
+ var_f2 = extra_player_info_pointer->unk258;
+ var_f12 = extra_player_info_pointer->unk25C;
+ break;
+ default:
+ var_f12 = var_f0;
+ var_f2 = var_f0;
+ if (extra_player_info_pointer->unk21E < 0x1E) {
+ arg0->object_properties_bitfield |= 0x8000;
+ extra_player_info_pointer->unk21E += MIN(2,0x1E - extra_player_info_pointer->unk21E);;
+ extra_player_info_pointer->unk258 = 1.0f;
+ extra_player_info_pointer->unk25C = extra_player_info_pointer->unk258;
+ }
+ break;
+ }
+ arg1[*arg2].unk0 = 0;
+ arg1[*arg2].unk1 = 0xFF;
+ arg1[*arg2].unk4 = var_f2;
+ arg1[*arg2].unk8 = var_f12;
+ arg1[*arg2].unkC = var_f2;
+ *arg2 += 1;
+}
+
+#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F2C48.s")
+
+typedef struct {
+ u8 unk0;
+ u8 unk1;
+ s16 unk2;
+ s16 unk4;
+ s16 unk6;
+} Struct806F2C48;
+
+/*
+// TODO: Quite close
+void func_806F2C48(Actor *arg0, Struct806F2C48 *arg1, s32 *arg2) {
+ f32 temp_f0;
+ f32 temp_f12;
+ s32 var_a3;
+ s8 temp_lo;
+ s32 var_v0;
+ s16 sp28;
+ u32 sp24;
+
+ var_a3 = *arg2;
+ if (arg0->unk6A & 1) {
+ extra_player_info_pointer->unk16 += 2;
+ if (extra_player_info_pointer->unk16 >= 0x80) {
+ extra_player_info_pointer->unk16 = 0x7F;
+ }
+ } else {
+ extra_player_info_pointer->unk16 -= 2;
+ if (extra_player_info_pointer->unk16 < 0) {
+ extra_player_info_pointer->unk16 = 0;
+ }
+ }
+ if (extra_player_info_pointer->unk16 != 0) {
+ var_v0 = (0x400 - arg0->unkDE) & 0xFFF;
+ if (var_v0 >= 0x156) {
+ var_v0 = 0x155;
+ }
+ sp28 = func_806CC10C(arg0->y_rotation, (arg0->unkDC - 0x800) & 0xFFF);
+ sp24 = var_v0 * 0x10;
+ temp_f12 = func_80612790(sp28) * sp24;
+ temp_f0 = -func_80612794(sp28) * sp24;
+ temp_lo = (extra_player_info_pointer->unk16 * 6) / 10;
+ if (temp_lo != 0) {
+ arg1[var_a3].unk1 = 1;
+ arg1[var_a3].unk4 = 0;
+ arg1[var_a3].unk0 = temp_lo;
+ arg1[var_a3].unk2 = temp_f12;
+ arg1[var_a3].unk6 = temp_f0;
+ var_a3 += 1;
+ }
+ temp_lo = (extra_player_info_pointer->unk16 * 3) / 10;
+ if (temp_lo != 0) {
+ arg1[var_a3].unk1 = 2;
+ arg1[var_a3].unk4 = 0;
+ arg1[var_a3].unk0 = temp_lo;
+ arg1[var_a3].unk2 = temp_f12;
+ arg1[var_a3].unk6 = temp_f0;
+ var_a3 += 1;
+ }
+ }
+ *arg2 = var_a3;
+}
+*/
+
void func_806F2EDC(s32 arg0, Struct806F2EDC *arg1, s32 *arg2, u8 arg3, u8 arg4, f32 arg5, f32 arg6) {
f32 temp_f0;
@@ -522,11 +682,26 @@ void func_806F37BC(Actor *arg0, Struct806F37BC *arg1) {
void func_806F386C(u8, Actor*, Actor*, s16, u8);
-#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F386C.s")
+typedef struct {
+ s16 unk0; // Used, X Position
+ s16 unk2; // Used, Y Position
+ s16 unk4; // Used, Z Position
+ s16 unk6;
+ u8 unk8;
+ u8 unk9; // Used
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE;
+ u8 unkF;
+ u8 unk10;
+ u8 unk11;
+} Struct80753E90_unk4;
typedef struct {
s16 unk0;
- s32 unk4;
+ Struct80753E90_unk4 *unk4;
} Struct80753E90_2;
// TODO: Same as GlobalASMStruct75?
@@ -545,8 +720,6 @@ extern s16 D_807FD714;
extern s16 D_807FD718;
extern Actor *D_807FD71C;
-/*
-// TODO: Close
void func_806F386C(u8 arg0, Actor *arg1, Actor *arg2, s16 arg3, u8 arg4) {
PlayerAdditionalActorData *temp_v0;
@@ -557,7 +730,7 @@ void func_806F386C(u8 arg0, Actor *arg1, Actor *arg2, s16 arg3, u8 arg4) {
D_807FD710 = arg1;
temp_v0->unk1F0 &= ~1;
D_807FD714 = 0;
- D_807FD708 = D_80753E90[arg0].unk4;
+ D_807FD708 = &D_80753E90->unk4[arg0];
D_807FD70C = D_807FD708->unk4;
D_807FD718 = arg3;
D_807FD71C = arg2;
@@ -566,7 +739,6 @@ void func_806F386C(u8 arg0, Actor *arg1, Actor *arg2, s16 arg3, u8 arg4) {
}
}
}
-*/
typedef struct {
s16 unk0;
@@ -594,57 +766,67 @@ void func_806F397C(Actor *arg0, Actor *arg1, s16 arg2, s16 arg3) {
D_807FD716 = 0;
}
-#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F39E8.s")
+extern f64 D_8075D810;
+extern f64 D_8075D818;
+extern f64 D_8075D820;
+extern f64 D_8075D828;
-#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F3BEC.s")
+void func_80611690(void*);
+
+void func_806F39E8(Actor *arg0, ExitData *arg1, u8 arg2) {
+ Struct80753E90_unk4 *temp_v0_2;
+ Struct80753E90_unk4 *temp;
+ Struct80753E90_2 *temp_v1;
+
+ temp_v1 = &D_80753E90->unk4[D_80753E90->unk0];
+ temp_v1->unk0 = 2;
+ temp_v1->unk4 = malloc(0x24);
+ func_80611690(temp_v1->unk4);
+ temp = &temp_v1->unk4[1];
+ temp_v0_2 = temp_v1->unk4;
+ temp_v0_2->unk0 = arg1->x_pos;
+ temp_v0_2->unk2 = arg1->y_pos;
+ temp_v0_2->unk4 = arg1->z_pos;
+ temp_v0_2->unk9 = 0x32;
+ temp->unk0 = (func_80612794((arg1->angle / D_8075D810) * D_8075D818) * arg2) + arg1->x_pos;
+ temp->unk2 = arg1->y_pos;
+ temp->unk4 = (func_80612790((arg1->angle / D_8075D820) * D_8075D828) * arg2) + arg1->z_pos;
+ temp->unk9 = 0x32;
+ func_806F386C(D_80753E90->unk0, arg0, 0, 0, 0);
+ D_807FD716 = 0;
+ global_properties_bitfield |= 0x400;
+}
f32 func_80612794(s16);
-typedef struct {
- s16 unk0; // X Position
- s16 unk2; // Y Position
- s16 unk4; // Z Position
- s16 unk6;
- u8 unk8;
- u8 unk9; // Used
-} Struct806F3BEC;
-
-/*
void func_806F3BEC(Actor *arg0, s16 arg1, s16 arg2, u8 arg3) {
+ Struct80753E90_unk4 *temp_v0_2;
s16 sp3A;
- f32 temp_f0;
- f32 temp_f16;
+ Struct80753E90_unk4 *temp_t0;
Struct80753E90_2 *temp_a1;
- Struct806F3BEC *temp_t0;
- void *temp_v0;
- Struct806F3BEC *temp_v0_2;
sp3A = func_80665DE0(arg1, arg2, arg0->x_position, arg0->z_position);
- temp_a1 = &D_80753E90[0].unk4[D_80753E90[0].unk0];
+ temp_a1 = &D_80753E90->unk4[D_80753E90->unk0];
if (arg0->control_state != 0x44) {
temp_a1->unk0 = 2;
- temp_v0 = malloc(0x24);
- temp_a1->unk4 = temp_v0;
- func_80611690(temp_v0);
+ temp_a1->unk4 = malloc(0x24);
+ func_80611690(temp_a1->unk4);
+ temp_t0 = &temp_a1->unk4[1];
temp_v0_2 = temp_a1->unk4;
- temp_t0 = temp_v0_2 + 0x12;
temp_v0_2->unk0 = arg0->x_position;
temp_v0_2->unk2 = arg0->y_position;
temp_v0_2->unk4 = arg0->z_position;
temp_v0_2->unk9 = 0x28;
- temp_f0 = func_80612794(sp3A);
- temp_t0->unk0 = (temp_f0 * arg3) + arg0->x_position;
+ temp_t0->unk0 = (func_80612794(sp3A) * arg3) + arg0->x_position;
temp_t0->unk2 = arg0->y_position;
- temp_f16 = func_80612790(sp3A) * arg3;
- temp_t0->unk4 = temp_f16 + arg0->z_position;
+ temp_t0->unk4 = (func_80612790(sp3A) * arg3) + arg0->z_position;
temp_t0->unk9 = 0x28;
- func_806F386C(D_80753E90[0].unk0, arg0, 0, 0, 0);
+ func_806F386C(D_80753E90->unk0, arg0, 0, 0, 0);
D_807FD716 = 0;
global_properties_bitfield |= 0x400;
}
}
-*/
void func_806F3DB0(void) {
D_807FD716 |= 2;
diff --git a/symbol_addrs.global_asm.us.txt b/symbol_addrs.global_asm.us.txt
index ad71756..c223dfe 100644
--- a/symbol_addrs.global_asm.us.txt
+++ b/symbol_addrs.global_asm.us.txt
@@ -244,3 +244,4 @@ D_80758E60 = 0x80758E60;
D_807505B0 = 0x807505B0;
D_807503F0 = 0x807503F0;
D_8075A220 = 0x8075A220;
+D_8075D798 = 0x8075D798;