From ffd895a0f6164826b314119833d652a54d29dbda Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 17 Sep 2021 09:34:22 -0400 Subject: [PATCH] unknown_043920.h --- include/structs.h | 43 ++++++++ src/camera.c | 9 +- src/camera.h | 6 +- src/controller_pak.c | 8 +- src/controller_pak.h | 21 +--- src/unknown_00BC20.c | 1 + src/unknown_00BC20.h | 1 + src/unknown_0348C0.h | 1 + src/unknown_043920.c | 245 +++++-------------------------------------- src/unknown_043920.h | 190 ++++++++++++++++++++++++++++++++- 10 files changed, 273 insertions(+), 252 deletions(-) diff --git a/include/structs.h b/include/structs.h index 6832d6b9..9118e0ac 100644 --- a/include/structs.h +++ b/include/structs.h @@ -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 diff --git a/src/camera.c b/src/camera.c index 35b45e72..110b1daa 100644 --- a/src/camera.c +++ b/src/camera.c @@ -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 = { diff --git a/src/camera.h b/src/camera.h index 00d03bd8..b1968a0a 100644 --- a/src/camera.h +++ b/src/camera.h @@ -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? diff --git a/src/controller_pak.c b/src/controller_pak.c index 082e1bb1..94e1bbac 100644 --- a/src/controller_pak.c +++ b/src/controller_pak.c @@ -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); } diff --git a/src/controller_pak.h b/src/controller_pak.h index 8957955b..d6b5c79b 100644 --- a/src/controller_pak.h +++ b/src/controller_pak.h @@ -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); diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index cb6b1678..de3618d5 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -12,6 +12,7 @@ #include "thread0_epc.h" #include "controller_pak.h" #include "unknown_06B2B0.h" +#include "unknown_043920.h" /************ .data ************/ diff --git a/src/unknown_00BC20.h b/src/unknown_00BC20.h index 126eafe3..7f927e75 100644 --- a/src/unknown_00BC20.h +++ b/src/unknown_00BC20.h @@ -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 diff --git a/src/unknown_0348C0.h b/src/unknown_0348C0.h index 12b317cc..bccb2b87 100644 --- a/src/unknown_0348C0.h +++ b/src/unknown_0348C0.h @@ -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 diff --git a/src/unknown_043920.c b/src/unknown_043920.c index 8eb4767d..f16378d2 100644 --- a/src/unknown_043920.c +++ b/src/unknown_043920.c @@ -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(); diff --git a/src/unknown_043920.h b/src/unknown_043920.h index 0991889e..8fc6c2ad 100644 --- a/src/unknown_043920.h +++ b/src/unknown_043920.h @@ -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