unknown_043920.h

This commit is contained in:
Ryan Myers
2021-09-17 09:34:22 -04:00
parent 3278555f82
commit ffd895a0f6
10 changed files with 273 additions and 252 deletions
+43
View File
@@ -937,4 +937,47 @@ typedef struct unk80027FC4 {
s16 unk6;
} unk80027FC4;
// Unused
typedef struct GhostHeaderChecksum {
u8 levelID;
u8 vehicleID; // 0 = Car, 1 = Hovercraft, 2 = Plane
} GhostHeaderChecksum;
/* Size: 8 bytes */
typedef struct GhostHeader {
//GhostHeaderChecksum checksum;
s16 checksum;
u8 characterID; // 9 = T.T.
u8 unk3; // Might just be padding?
s16 time; // In frames, where 60 frames = 1 second.
s16 nodeCount;
} GhostHeader;
/* Size: 12 bytes */
typedef struct GhostNode {
s16 x;
s16 y;
s16 z;
s16 zRotation; // This order is correct.
s16 xRotation;
s16 yRotation;
} GhostNode;
/* Size: 12 bytes */
typedef struct GhostDataFrame {
u8 pad0[12];
} GhostDataFrame;
/* Size: 0x18 bytes */
typedef struct unk8011D510 {
/* 0x00 */ s16 unk0;
/* 0x02 */ s16 unk2;
/* 0x04 */ s16 unk4;
/* 0x06 */ u16 unk6;
/* 0x08 */ f32 unk8;
/* 0x0C */ f32 unkC;
/* 0x10 */ f32 unk10;
/* 0x14 */ f32 unk14;
} unk8011D510;
#endif
+5 -4
View File
@@ -71,12 +71,13 @@ Vp D_800DD148[20] = {
{ 0, 0, 0x01FF, 0, 0, 0, 0x01FF, 0 },
};
f32 D_800DD288[6] = {
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, -281.0f
unk8011D510 D_800DD288 = {
0, 0, 0, 0, 1.0f, 0.0f, 0.0f, -281.0f,
};
f32 D_800DD2A0[6] = {
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f
unk8011D510 D_800DD2A0 = {
0, 0, 0, 0, 1.0f, 0.0f, 0.0f, 0.0f,
};
Matrix D_800DD2B8 = {
+4 -2
View File
@@ -67,9 +67,9 @@ extern s16 D_800DD138[8];
// RSP Viewports
extern Vp D_800DD148[20];
extern f32 D_800DD288[6];
extern unk8011D510 D_800DD288;
extern f32 D_800DD2A0[6];
extern unk8011D510 D_800DD2A0;
extern Matrix D_800DD2B8;
@@ -86,6 +86,8 @@ extern s32 SP_IMEM;
//TODO: Remove from here once header files for below are created with these signatures.
void func_8006F870(Matrix, Matrix); //unknown_070110
void func_800705F8(s32, f32, f32, f32); //From unknown_070110
void func_8006FE74(Matrix *, unk8011D510 *); // Non Matching unknown_070110?
void func_8006F768(Matrix *, Matrix *, Matrix *); // Non Matching unknown_070110?
f32 sqrtf(f32); //IDO?
+4 -4
View File
@@ -212,7 +212,7 @@ s16 func_80074A4C(GhostHeader *ghostHeader) {
s32 temp;
sum = 0;
len = (ghostHeader->numberFrames * sizeof(GhostDataFrame)) + sizeof(GhostHeader);
len = (ghostHeader->nodeCount * sizeof(GhostDataFrame)) + sizeof(GhostHeader);
for(i = sizeof(GhostHeader); i < len; i++) {
sum += ((u8*)ghostHeader)[i];
}
@@ -222,13 +222,13 @@ s16 func_80074A4C(GhostHeader *ghostHeader) {
GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074A4C.s")
#endif
void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 numberFrames, u8 *dest) {
void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 nodeCount, u8 *dest) {
ghostHeader->checksum = 0;
ghostHeader->characterID = characterID;
ghostHeader->unk3 = 0;
ghostHeader->time = time;
ghostHeader->numberFrames = numberFrames;
bcopy(dest, (u8*)ghostHeader + 8, numberFrames * sizeof(GhostDataFrame));
ghostHeader->nodeCount = nodeCount;
bcopy(dest, (u8*)ghostHeader + 8, nodeCount * sizeof(GhostDataFrame));
ghostHeader->checksum = func_80074A4C(ghostHeader);
}
+1 -20
View File
@@ -9,25 +9,6 @@
#include "structs.h"
#include "camera.h"
typedef struct GhostHeaderChecksum {
u8 levelID;
u8 vehicleID; // 0 = Car, 1 = Hovercraft, 2 = Plane
} GhostHeaderChecksum;
typedef struct GhostHeader {
//GhostHeaderChecksum checksum;
s16 checksum;
u8 characterID; // 9 = T.T.
u8 unk3; // Might just be padding?
s16 time; // In frames, where 60 frames = 1 second.
s16 numberFrames;
} GhostHeader;
/* Size: 12 bytes */
typedef struct GhostDataFrame {
u8 pad0[12];
} GhostDataFrame;
extern s32 *D_800DE440;
extern u8 gN64FontCodes[68];
extern s32 D_800DE488;
@@ -40,7 +21,7 @@ s32 func_80073C4C(void);
s32 func_80073C54(void);
s32 func_80073F5C(s32 arg0, s32 arg1);
s32 func_80074148(s32 arg0, Settings *arg1);
void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 numberFrames, u8 *dest);
void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 nodeCount, u8 *dest);
s32 func_80075AEC(s32 controllerIndex);
s32 func_80075D38(s32 controllerIndex);
s32 func_80075DC4(s32 controllerIndex);
+1
View File
@@ -12,6 +12,7 @@
#include "thread0_epc.h"
#include "controller_pak.h"
#include "unknown_06B2B0.h"
#include "unknown_043920.h"
/************ .data ************/
+1
View File
@@ -232,5 +232,6 @@ s32 func_80014814(s32 *);
void func_80015348(s32, s32);
Object *func_8000EA54(unk80027FC4*, s32);
s32 func_8001F460(Object*, s32, Object*);
void func_80011570(Object *, f32, f32, f32);
#endif
+1
View File
@@ -583,5 +583,6 @@ void func_80037594(Object *obj, s32 arg1);
void func_800377E4(Object *obj, s32 arg1);
void func_800380F8(Object *obj, s32 arg1);
void func_8003827C(Object *obj, s32 arg1);
void func_8003B4BC(s32 arg0);
#endif
+26 -219
View File
@@ -10,28 +10,11 @@
#include "macros.h"
#include "structs.h"
#include "asset_sections.h"
//#include "controller_pak.h"
#include "controller_pak.h"
#include "unknown_008C40.h"
/* Size: 8 bytes */
typedef struct GhostHeader {
u8 levelID;
u8 vehicleID; // 0 = Car, 1 = Hovercraft, 2 = Plane
u8 characterID; // 9 = T.T.
u8 unk3; // Might just be padding?
s16 time; // In frames, where 60 frames = 1 second.
s16 nodeCount;
} GhostHeader;
/* Size: 12 bytes */
typedef struct GhostNode {
s16 x;
s16 y;
s16 z;
s16 zRotation; // This order is correct.
s16 xRotation;
s16 yRotation;
} GhostNode;
#include "unknown_00BC20.h"
#include "audio.h"
#include "unknown_0348C0.h"
#define MAX_NUMBER_OF_GHOST_NODES 360
@@ -47,7 +30,7 @@ f32 D_800DCB60[14] = {
-10.0f, 5.0f, 0.0f, 0.0f,
10.0f, 5.0f, 0.0f, 0.0f,
-10.0f, 10.0f, 0.0f, 0.0f,
10.0f, 10.0f
10.0f, 10.0f,
};
s32 D_800DCB98 = 0; // Currently unknown, might be a different type.
@@ -56,7 +39,7 @@ f32 D_800DCB9C[19] = {
0.0099999999f, 0.0099999999f, 0.0099999999f, 0.0099999999f,
0.0099999999f, 0.0099999999f, 0.004f, 0.004f,
0.004f, 0.004f, 0.004f, 0.004f,
0.004f, 0.004f, 0.004f
0.004f, 0.004f, 0.004f,
};
f32 D_800DCBE8[19] = {
@@ -64,25 +47,25 @@ f32 D_800DCBE8[19] = {
0.5f, 0.5f, 0.5f, 0.5f,
0.5f, 0.5f, 0.5f, 0.8f,
0.8f, 0.84f, 0.8f, 0.8f,
0.8f, 0.8f, 0.8f
0.8f, 0.8f, 0.8f,
};
// Unused? Not sure if this is actually an array or just some random data.
s32 D_800DCC34[19] = {
0, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0
0, 0, 0,
};
s32 D_800DCC80[13] = {
0, 26, 27, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0
0, 0, 0, 0, 0,
};
// Unused?
s16 D_800DCCB4[12] = {
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0,
};
u16 D_800DCCCC[20] = {
@@ -90,7 +73,7 @@ u16 D_800DCCCC[20] = {
0x010C, 0x010C, 0x010C, 0x010C,
0x010C, 0x010C, 0x010C, 0x0005,
0x010C, 0x010C, 0x010C, 0x010C,
0x010C, 0x010C, 0x010C, 0x0000
0x010C, 0x010C, 0x010C, 0x0000,
};
s32 D_800DCCF4[19] = {
@@ -101,12 +84,12 @@ s32 D_800DCCF4[19] = {
s32 D_800DCD40[20] = {
0, 4, 16, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x100, 0, 0, 0, 0,
0, 0
0, 0,
};
s8 D_800DCD90[15] = {
1, 1, 2, 2, 4, 3, 0, 6,
4, 3, 2, 2, 5, 5, 5
4, 3, 2, 2, 5, 5, 5,
};
// Unused?
@@ -115,7 +98,7 @@ s8 D_800DCDA0[8] = {
};
s8 D_800DCDA8[8] = {
1, 1, 1, 2, 3, 2, 3, 2
1, 1, 1, 2, 3, 2, 3, 2 ,
};
// Unused?
@@ -123,7 +106,7 @@ s16 D_800DCDB0[16] = {
0x02FE, 0x03FE, 0x02FC, 0x02FB,
0x02FB, 0x02FE, 0x02FD, 0x02FE,
0x03FD, 0x05FC, 0x04FE, 0x02FE,
0x02FA, 0x02FE, 0x08F8, 0x03FD
0x02FA, 0x02FE, 0x08F8, 0x03FD,
};
// Checksum count for func_8003B4BC
@@ -149,44 +132,9 @@ const char D_800E62A0[] = "Back\n";
s32 D_8011D4F0[2];
s32 D_8011D4F8[3];
s32 D_8011D504;
typedef struct ObjectCamera {
/* 0x0000 */ s16 y_rotation;
/* 0x0002 */ s16 x_rotation;
/* 0x0004 */ s16 z_rotation;
/* 0x0006 */ s16 unk6;
/* 0x0008 */ f32 scale;
/* 0x000C */ f32 x_position;
/* 0x0010 */ f32 y_position;
/* 0x0014 */ f32 z_position;
u8 pad18[0xC];
/* 0x0024 */ f32 unk24;
/* 0x0028 */ f32 unk28;
/* 0x002C */ f32 unk2C;
/* 0x0030 */ f32 unk30;
s16 unk34;
/* 0x0036 */ s16 unk36;
} ObjectCamera;
ObjectCamera *gCameraObject;
s32 D_8011D50C;
/* Size: 0x18 bytes */
typedef struct unk8011D510 {
s16 unk0;
s16 unk2;
s16 unk4;
u16 unk6;
f32 unk8;
f32 unkC;
f32 unk10;
f32 unk14;
} unk8011D510;
unk8011D510 D_8011D510;
s32 D_8011D528;
s32 gActivePlayerButtonPress;
s32 D_8011D530;
@@ -245,9 +193,6 @@ s8 D_8011D5BC;
/******************************/
void func_80011570(Object *, f32, f32, f32);
void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3);
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80042D20.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80043ECC.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80044170.s")
@@ -266,16 +211,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80048E64.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800494E0.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80049794.s")
/* Unknown size */
typedef struct Object_64_8004C0A0 {
u8 pad0[0x1D7];
s8 unk1D7;
u8 pad1D8[9];
s8 unk1E1;
u8 pad1E2[0x10];
u8 unk1F2;
} Object_64_8004C0A0;
// Something Plane related.
void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) {
s32 temp_v1;
@@ -312,27 +247,6 @@ void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) {
}
}
typedef struct Object_64_8004C140 {
s16 unk0;
u8 pad2[0x183];
s8 unk185;
u8 unk186;
s8 unk187;
u8 pad188[4];
s16 unk18C;
s16 unk18E;
u8 pad190[0x39];
u8 unk1C9;
u8 pad1CA[0xC];
s8 unk1D6;
u8 pad1D7[4];
s8 unk1DB;
u8 pad1DC[0x28];
s16 unk204;
} Object_64_8004C140;
void func_800576E0(Object *obj, Object_64_8004C140 *obj64, s32);
void func_8004C140(Object *obj, Object_64_8004C140 *obj64) {
s8 phi_v1;
s8 temp;
@@ -385,16 +299,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004C2B0.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004CC20.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004D590.s")
typedef struct Object_64_8004D95C {
u8 unk0[0x118];
s32 unk118;
u8 unk11C[0x38];
Object *someObject;
u8 unk158[0x7E];
s8 unk1D6;
s8 unk1D7;
} Object_64_8004D95C;
void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64) {
s16 sp26;
@@ -428,11 +332,6 @@ void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64) {
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004DAB0.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004DE38.s")
typedef struct unk8004F77C {
u8 unk0[0x20A];
u8 unk20A;
} unk8004F77C;
void func_8004F77C(unk8004F77C *arg0) {
s32 temp;
@@ -520,12 +419,6 @@ void func_800521B8(s32 arg0) {
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800521C4.s")
/* Unknown Size */
typedef struct unk8005234C {
u8 unk0[0x16C];
s16 unk16C;
} unk8005234C;
void func_8005234C(unk8005234C *arg0) {
arg0->unk16C -= arg0->unk16C >> 3;
if (arg0->unk16C >= -9 && arg0->unk16C < 10) { // Deadzone?
@@ -599,15 +492,6 @@ void func_80052988(Object *arg0, Object_64 *arg1, s32 arg2, s32 arg3, s32 arg4,
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052B64.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052D7C.s")
typedef struct Object_64_80053478 {
u8 unk0[0x2C];
f32 unk2C;
u8 unk30[0x1B1];
s8 unk1E1;
u8 unk1E2[4];
s8 unk1E6;
} Object_64_80053478;
void func_80053478(Object_64_80053478 *obj) {
s32 phi_v0;
f32 phi_f0 = obj->unk2C;
@@ -633,26 +517,6 @@ void func_80053478(Object_64_80053478 *obj) {
}
}
extern unk8011D510 D_8011D510;
/* Unknown Size */
typedef struct unk800535C4 {
s16 unk0;
s16 unk2;
} unk800535C4;
/* Unknown Size */
typedef struct unk800535C4_2 {
/* 0x00 */ u8 unk0[0x9C];
/* 0x9C */ f32 oz;
/* 0xA0 */ f32 ox;
/* 0xA4 */ f32 oy;
/* 0xA8 */ u8 unkA8[0xF8];
/* 0x1A0 */ s16 unk1A0;
/* 0x1A2 */ s16 unk1A2;
/* 0x1A4 */ s16 unk1A4;
} unk800535C4_2;
void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) {
Matrix mf;
@@ -697,46 +561,28 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80054FD0.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80055A84.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80055EC0.s")
/* Unknown Size */
typedef struct unk800570A4 {
u8 unk0[0x108];
s32 unk108;
u8 unk10C[0x102];
s16 unk20E;
s8 unk210;
} unk800570A4;
/* Unknown Size */
typedef struct unk80056930 {
u8 unk0[0x3];
s8 unk3;
} unk80056930;
void func_80057048(Object *arg0, s32 arg1);
void play_char_horn_sound(Object *arg0, Object_64 *arg1) {
void play_char_horn_sound(Object *obj, Object_64 *obj64) {
if (get_filtered_cheats() & CHEAT_HORN_CHEAT) {
// Play character voice instead of horn.
func_800570B8(arg0, 0x162, 8, 0x82);
func_800570B8(obj, 0x162, 8, 0x82);
} else {
// Play character's horn sound
func_80057048(arg0, arg1->unk0_a.unk0_b.unk3 + 0x156);
func_80057048(obj, obj64->unk0_a.unk0_b.unk3 + 0x156);
}
}
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005698C.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80056E2C.s")
void func_80001EA8(u16 arg0, f32 x, f32 y, f32 z, s32 **arg4);
void func_80057048(Object *obj, s32 arg1) {
unk800570A4 *obj64 = obj->unk64;
Object_64 *obj64 = obj->unk64;
if (D_8011D55C != -1 && obj64->unk108 == 0) {
func_80001EA8(arg1, obj->x_position, obj->y_position, obj->z_position, NULL);
}
}
void func_800570A4(Object *arg0, s32 arg1, s32 arg2) {
unk800570A4 *temp = arg0->unk64;
void func_800570A4(Object *obj, s32 arg1, s32 arg2) {
Object_64_unk800570A4 *temp = obj->unk64;
temp->unk20E = arg1;
temp->unk210 = arg2;
}
@@ -789,20 +635,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800570B8.s")
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057220.s")
/* Unknown size */
typedef struct Object_64_800575EC {
/* 0x00 */ u8 pad0[0x38];
/* 0x38 */ f32 ox1;
/* 0x3C */ f32 oy1;
/* 0x40 */ f32 oz1;
/* 0x44 */ f32 ox2;
/* 0x48 */ f32 oy2;
/* 0x4C */ f32 oz2;
/* 0x50 */ f32 ox3;
/* 0x54 */ f32 oy3;
/* 0x58 */ f32 oz3;
} Object_64_800575EC;
void func_800575EC(Object *obj, Object_64_800575EC *obj64) {
Matrix mf;
@@ -821,14 +653,6 @@ void func_800575EC(Object *obj, Object_64_800575EC *obj64) {
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800576E0.s")
extern s32 D_8011D534;
/* Unknown Size */
typedef struct unk800579B0 {
u8 unk0[0x1E1];
s8 unk1E1;
} unk800579B0;
void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) {
s32 temp, temp2;
@@ -849,23 +673,16 @@ void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) {
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057A40.s")
typedef struct Object_64_800580B4 {
u8 unk0[0x1D8];
s8 unk1D8;
} Object_64_800580B4;
void func_80057A40(Object *, Object_64_800580B4 *, f32);
void func_800580B4(Object *arg0, Object_64_800580B4 *arg1, s32 arg2, f32 arg3) {
void func_800580B4(Object *obj, Object_64_800580B4 *obj64, s32 arg2, f32 arg3) {
f32 xPos, yPos, zPos;
if ((D_8011D55C != -1) && (arg1->unk1D8 != 1)) {
if ((D_8011D55C != -1) && (obj64->unk1D8 != 1)) {
if (arg2 != gCameraObject->unk36) {
func_80057A40(arg0, arg1, arg3);
func_80057A40(obj, obj64, arg3);
xPos = gCameraObject->x_position;
yPos = gCameraObject->y_position;
zPos = gCameraObject->z_position;
gCameraObject->unk36 = arg2;
func_80057A40(arg0, arg1, arg3);
func_80057A40(obj, obj64, arg3);
if (D_8011D540 == 0 && D_8011D582 == 0) {
gCameraObject->unk24 = xPos - gCameraObject->x_position;
gCameraObject->unk28 = yPos - (gCameraObject->y_position + gCameraObject->unk30);
@@ -934,7 +751,7 @@ void func_80059984(s32 arg0) {
D_8011D5AC = arg0;
}
s16 func_800599A8(void) {
s32 func_800599A8(void) {
return D_8011D5AC;
}
@@ -1008,8 +825,6 @@ void func_8005A3C0(void) {
D_8011D583 = 1;
}
void func_8003B4BC(s32 arg0);
void func_8005A3D0(void) {
s32 i;
s32 count = 0;
@@ -1033,14 +848,6 @@ void func_8005C25C(void) {
D_800DCB9C[0] = 0.05f;
}
/* Unknown Size */
typedef struct unk8005C270 {
u8 unk0[0x190];
s16 unk190;
s8 unk192;
s8 unk193;
} unk8005C270;
void func_8005C270(unk8005C270 *arg0) {
s32 temp = func_8001BA64();
+187 -3
View File
@@ -4,6 +4,149 @@
#include "types.h"
#include "structs.h"
typedef struct ObjectCamera {
/* 0x0000 */ s16 y_rotation;
/* 0x0002 */ s16 x_rotation;
/* 0x0004 */ s16 z_rotation;
/* 0x0006 */ s16 unk6;
/* 0x0008 */ f32 scale;
/* 0x000C */ f32 x_position;
/* 0x0010 */ f32 y_position;
/* 0x0014 */ f32 z_position;
/* 0x0018 */ u8 pad18[0xC];
/* 0x0024 */ f32 unk24;
/* 0x0028 */ f32 unk28;
/* 0x002C */ f32 unk2C;
/* 0x0030 */ f32 unk30;
/* 0x0034 */ s16 unk34;
/* 0x0036 */ s16 unk36;
} ObjectCamera;
/* Unknown size */
typedef struct Object_64_8004C0A0 {
u8 pad0[0x1D7];
s8 unk1D7;
u8 pad1D8[9];
s8 unk1E1;
u8 pad1E2[0x10];
u8 unk1F2;
} Object_64_8004C0A0;
typedef struct Object_64_8004C140 {
s16 unk0;
u8 pad2[0x183];
s8 unk185;
u8 unk186;
s8 unk187;
u8 pad188[4];
s16 unk18C;
s16 unk18E;
u8 pad190[0x39];
u8 unk1C9;
u8 pad1CA[0xC];
s8 unk1D6;
u8 pad1D7[4];
s8 unk1DB;
u8 pad1DC[0x28];
s16 unk204;
} Object_64_8004C140;
typedef struct Object_64_8004D95C {
u8 unk0[0x118];
s32 unk118;
u8 unk11C[0x38];
Object *someObject;
u8 unk158[0x7E];
s8 unk1D6;
s8 unk1D7;
} Object_64_8004D95C;
typedef struct unk8004F77C {
u8 unk0[0x20A];
u8 unk20A;
} unk8004F77C;
/* Unknown Size */
typedef struct unk8005234C {
u8 unk0[0x16C];
s16 unk16C;
} unk8005234C;
typedef struct Object_64_80053478 {
u8 unk0[0x2C];
f32 unk2C;
u8 unk30[0x1B1];
s8 unk1E1;
u8 unk1E2[4];
s8 unk1E6;
} Object_64_80053478;
/* Unknown Size */
typedef struct unk800535C4 {
s16 unk0;
s16 unk2;
} unk800535C4;
/* Unknown Size */
typedef struct unk800535C4_2 {
/* 0x00 */ u8 unk0[0x9C];
/* 0x9C */ f32 oz;
/* 0xA0 */ f32 ox;
/* 0xA4 */ f32 oy;
/* 0xA8 */ u8 unkA8[0xF8];
/* 0x1A0 */ s16 unk1A0;
/* 0x1A2 */ s16 unk1A2;
/* 0x1A4 */ s16 unk1A4;
} unk800535C4_2;
/* Unknown Size */
typedef struct Object_64_unk800570A4 {
u8 unk0[0x108];
s32 unk108;
u8 unk10C[0x102];
s16 unk20E;
s8 unk210;
} Object_64_unk800570A4;
/* Unknown Size */
typedef struct unk80056930 {
u8 unk0[0x3];
s8 unk3;
} unk80056930;
/* Unknown size */
typedef struct Object_64_800575EC {
/* 0x00 */ u8 pad0[0x38];
/* 0x38 */ f32 ox1;
/* 0x3C */ f32 oy1;
/* 0x40 */ f32 oz1;
/* 0x44 */ f32 ox2;
/* 0x48 */ f32 oy2;
/* 0x4C */ f32 oz2;
/* 0x50 */ f32 ox3;
/* 0x54 */ f32 oy3;
/* 0x58 */ f32 oz3;
} Object_64_800575EC;
/* Unknown Size */
typedef struct unk800579B0 {
u8 unk0[0x1E1];
s8 unk1E1;
} unk800579B0;
typedef struct Object_64_800580B4 {
u8 unk0[0x1D8];
s8 unk1D8;
} Object_64_800580B4;
/* Unknown Size */
typedef struct unk8005C270 {
u8 unk0[0x190];
s16 unk190;
s8 unk192;
s8 unk193;
} unk8005C270;
extern s32 D_800DCB50;
extern s16 D_800DCB54;
extern s32 D_800DCB58;
@@ -46,9 +189,50 @@ extern s32 D_800DCDD0;
extern s16 D_800DCDD4[4];
s32 func_80059B7C(s32 arg0, s32 arg1, s16 arg2, s16 arg3, s16 arg4);
void func_8005A3D0(void);
extern unk8011D510 D_8011D510;
void set_ghost_position_and_rotation(Object *obj); // Non Matching
extern s32 D_8011D534;
s32 get_random_number_from_range(s32, s32); //?
void func_8006FE74(Matrix *, unk8011D510 *); // Non Matching ?
s32 func_80044450(s32 arg0);
void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64);
void func_8004C140(Object *obj, Object_64_8004C140 *obj64);
void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64);
void func_8004F77C(unk8004F77C *arg0);
s32 func_80052188(void);
void func_800521B8(s32 arg0);
void func_8005234C(unk8005234C *arg0);
void func_80052988(Object *arg0, Object_64 *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7);
void func_80053478(Object_64_80053478 *obj);
void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1);
void func_80053664(Object_64 *arg0);
void play_char_horn_sound(Object *obj, Object_64 *obj64);
void func_80057048(Object *obj, s32 arg1);
void func_800570A4(Object *obj, s32 arg1, s32 arg2);
void func_800575EC(Object *obj, Object_64_800575EC *obj64);
void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2);
void func_800580B4(Object *obj, Object_64_800580B4 *obj64, s32 arg2, f32 arg3);
void func_80059790(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3);
void func_800598D0(void);
void func_80059944(void);
void func_80059984(s32 arg0);
s32 func_800599A8(void);
s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4);
s32 load_tt_ghost(s32 ghostOffset, s32 size, s16 *outTime);
void free_tt_ghost_data(void);
s32 func_80059B7C(s32 arg0, s32 arg1, s16 arg2, s16 arg3, s16 arg4);
s16 func_80059E20(void);
void func_8005A3B0(void);
void func_8005A3C0(void);
void func_8005A3D0(void);
void func_8005C25C(void);
//Non Matching
void set_ghost_position_and_rotation(Object *obj);
void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3);
void func_800576E0(Object *obj, Object_64_8004C140 *obj64, s32 arg2);
void func_80057A40(Object *obj, Object_64_800580B4 *obj64, f32 arg2);
#endif