From 3278555f821d191014f31cd067ccf7b023ab50a1 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Thu, 16 Sep 2021 17:21:41 -0400 Subject: [PATCH 1/6] unknown_032760.h --- src/unknown_003260.c | 2 +- src/unknown_032760.c | 6 ------ src/unknown_032760.h | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/unknown_003260.c b/src/unknown_003260.c index eddc08b2..cbdb82ca 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -281,7 +281,7 @@ void func_800049F8(void * sndState,s16 type, u32 arg2) { } -u16 func_80004A3C(u8 arg0){ +u16 func_80004A3C(u8 arg0) { return D_80119C28[arg0]; } diff --git a/src/unknown_032760.c b/src/unknown_032760.c index 73ccca02..9254de99 100644 --- a/src/unknown_032760.c +++ b/src/unknown_032760.c @@ -28,12 +28,6 @@ f32 D_8011D4CC; /*******************************/ -f32 func_800707F8(s16); -f32 sqrtf(f32); - -void func_800337E4(void); -f32 func_80033A14(unk800DC950 *arg0); -f32 func_80033C08(unk800DC950 *arg0); void func_80031B60(void) { if (D_800DC950 != NULL) { diff --git a/src/unknown_032760.h b/src/unknown_032760.h index 6bdcf848..4f0a98b3 100644 --- a/src/unknown_032760.h +++ b/src/unknown_032760.h @@ -81,6 +81,24 @@ typedef struct unk800DC964 { extern unk800DC950 **D_800DC950; +f32 func_800707F8(s16); //? +f32 sqrtf(f32); //IDO? + void func_80031B60(void); +void func_80032210(unk800DC950 *arg0); +void func_80032218(unk800DC950 *arg0); +void func_80032224(unk800DC950 *arg0); +void func_80032248(unk800DC950 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6); +void func_80032344(unk800DC950 *arg0, s32 arg1, s32 arg2); +void func_80032398(s32 arg0); +void func_80032BAC(unk800DC950 *arg0); +s32 func_80032C6C(void); +f32 func_80033A14(unk800DC950 *arg0); +f32 func_80033C08(unk800DC950 *arg0); + +//Non Matching +void func_80031BB8(s32 count); +void func_80032C7C(Object *object); +void func_800337E4(void); #endif From ffd895a0f6164826b314119833d652a54d29dbda Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 17 Sep 2021 09:34:22 -0400 Subject: [PATCH 2/6] 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 From f2e24945b7155353e8b20c6da09d9d736b8390ff Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 17 Sep 2021 10:00:52 -0400 Subject: [PATCH 3/6] unknown_078050.h --- src/menu.c | 1 + src/menu.h | 3 --- src/unknown_078050.c | 19 +++++++------------ src/unknown_078050.h | 23 ++++++++++++++++++++++- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/menu.c b/src/menu.c index 50c98465..20069f08 100644 --- a/src/menu.c +++ b/src/menu.c @@ -22,6 +22,7 @@ #include "thread30.h" #include "unknown_00BC20.h" #include "unknown_06B2B0.h" +#include "unknown_078050.h" /** * @file Contains all the code used for every menu in the game. diff --git a/src/menu.h b/src/menu.h index 0d1e6ad4..09ab848f 100644 --- a/src/menu.h +++ b/src/menu.h @@ -646,9 +646,6 @@ extern s16 D_800E1E2C[10]; extern s16 D_800E1E40[10]; -void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, - s32 arg2, s32 arg3, u8 red, u8 green, u8 blue, u8 alpha); // Non Matching src/unknown_078050.c -void func_80078D00(Gfx**, void *element, s32, s32, f32, f32, u32, s32); //Non Matching src/unknown_078050.c s32 get_random_number_from_range(s32, s32); // Non Matching src/unknown_070110.c void func_8007FF88(void); diff --git a/src/unknown_078050.c b/src/unknown_078050.c index 21b51b62..ed0941de 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -5,7 +5,7 @@ #include "types.h" #include "structs.h" #include "macros.h" -#include "libultra_internal.h" +//#include "lib/src/unknown_0D24D0.h" /************ .data ************/ @@ -24,11 +24,6 @@ u32 D_800DE4C4 = 0; u32 D_800DE4C8 = 0; s32 D_800DE4CC = 0; -typedef union { - void (*function)(Gfx*, s32); - void *ptr; -} unk800DE4D0; - unk800DE4D0 D_800DE4D0 = { NULL }; s32 D_800DE4D4 = 0; s32 D_800DE4D8 = 0; @@ -123,7 +118,7 @@ Gfx D_800DE6A8[][2] = { { gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - } + }, }; Gfx D_800DE6E8[][2] = { @@ -142,7 +137,7 @@ Gfx D_800DE6E8[][2] = { { gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - } + }, }; /*******************************/ @@ -208,7 +203,7 @@ void func_80077B5C(s32 red, s32 green, s32 blue) { #ifdef NON_MATCHING // Stack issues -void render_background(Gfx **dlist, s32 arg1, s32 arg2) { +void render_background(Gfx **dlist, s32 *arg1, s32 arg2) { s32 sp90; s32 sp8C; s32 sp88; @@ -278,18 +273,18 @@ void func_80078054(Gfx **dlist) { gSPDisplayList((*dlist)++, D_800DE520) } -void func_800780DC(Gfx** dlist){ +void func_800780DC(Gfx **dlist) { gSPDisplayList((*dlist)++, D_800DE4E0) } -void func_80078100(OSSched *sc){ +void func_80078100(OSSched *sc) { osScInterruptQ = osScGetInterruptQ(sc); osCreateMesgQueue(&D_80125EA0, &D_80125EB8,1); osCreateMesgQueue(&D_80125EC0, &D_80125EF0,8); osCreateMesgQueue(&D_80125ED8, &D_80125F10,8); } -void func_80078170(u32 arg0, u32 arg1, u32 arg2){ +void func_80078170(u32 arg0, u32 arg1, u32 arg2) { D_800DE4C4 = arg0; D_800DE4C8 = arg1; D_800DE4C0 = arg2 << 2; diff --git a/src/unknown_078050.h b/src/unknown_078050.h index f6c946dd..c1a0fd1c 100644 --- a/src/unknown_078050.h +++ b/src/unknown_078050.h @@ -2,8 +2,15 @@ #define _UNKNOWN_078050_H_ #include "types.h" +#include "structs.h" #include "f3ddkr.h" #include "lib/src/mips1/sc/sched.h" +#include "libultra_internal.h" + +typedef union { + void (*function)(Gfx*, s32); + void *ptr; +} unk800DE4D0; extern s16 D_800DE490[16]; @@ -21,7 +28,21 @@ extern s32 D_800DE4D4; extern s32 D_800DE4D8; extern s32 D_800DE4DC; -void func_80077B34(u8 arg0, u8 arg1, u8 arg2); s32 func_80077A54(void); +void func_80077AAC(void *bufPtr, s32 arg1, s32 arg2); +void func_80077B34(u8 arg0, u8 arg1, u8 arg2); +void func_80077B5C(s32 red, s32 green, s32 blue); +void func_80078054(Gfx **dlist); +void func_800780DC(Gfx **dlist); +void func_80078100(OSSched *sc); +void func_80078170(u32 arg0, u32 arg1, u32 arg2); +void func_80078778(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_800787F0(void); + +//Non Matching +void render_background(Gfx **dlist, s32 *arg1, s32 arg2); +void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, + s32 arg2, s32 arg3, u8 red, u8 green, u8 blue, u8 alpha); +void func_80078D00(Gfx**, void *element, s32, s32, f32, f32, u32, s32); #endif From b863f07c249fb039eb9bbce30f146ffe69281182 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 17 Sep 2021 10:15:24 -0400 Subject: [PATCH 4/6] video.h --- src/video.c | 42 ++++++++++++++++-------------------------- src/video.h | 16 ++++++++++++++++ 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/video.c b/src/video.c index 16d0cced..177b8bd4 100644 --- a/src/video.c +++ b/src/video.c @@ -52,14 +52,6 @@ OSScClient *D_80126310; /******************************/ -extern OSViMode D_800E4620, D_800E4670, D_800E46C0, D_800E4760, D_800E4710, D_800E47B0; - -void set_video_mode_index(s32); -void init_vi_settings(void); -void init_framebuffer(s32); -void func_8007A974(void); -void swap_framebuffers(void); - void init_video(s32 videoModeIndex, OSSched *sc) { if (osTvType == TV_TYPE_PAL) { gVideoRefreshRate = REFRESH_50HZ; @@ -99,8 +91,8 @@ void init_video(s32 videoModeIndex, OSSched *sc) { D_801262E4 = 3; } -void set_video_mode_index(s32 arg0) { - gVideoModeIndex = arg0; +void set_video_mode_index(s32 videoModeIndex) { + gVideoModeIndex = videoModeIndex; } /* Unused? */ @@ -109,17 +101,15 @@ s32 get_video_mode_index(void) { } /* Unused? */ -void set_video_width_and_height_from_index(s32 arg0) { - gVideoFbWidths[arg0] = gVideoModeResolutions[gVideoModeIndex & 0x07].width; - gVideoFbHeights[arg0] = gVideoModeResolutions[gVideoModeIndex & 0x07].height; +void set_video_width_and_height_from_index(s32 fbIndex) { + gVideoFbWidths[fbIndex] = gVideoModeResolutions[gVideoModeIndex & 7].width; + gVideoFbHeights[fbIndex] = gVideoModeResolutions[gVideoModeIndex & 7].height; } s32 get_video_width_and_height_as_s32(void) { return (gVideoFbHeights[gVideoCurrFbIndex] << 16) | gVideoFbWidths[gVideoCurrFbIndex]; } -void memory_copy(u8 *src, u8 *dst, s32 numBytes); - void init_vi_settings(void) { s32 viModeTableIndex; OSViMode *tvViMode; @@ -206,25 +196,25 @@ void init_vi_settings(void) { osViSetSpecialFeatures(OS_VI_GAMMA_OFF); } -void init_framebuffer(s32 arg0) { - if (gVideoFramebuffers[arg0] != 0) { - func_80071538(gVideoFramebuffers[arg0]); - free_from_memory_pool(gVideoFramebuffers[arg0]); +void init_framebuffer(s32 index) { + if (gVideoFramebuffers[index] != 0) { + func_80071538(gVideoFramebuffers[index]); + free_from_memory_pool(gVideoFramebuffers[index]); } - gVideoFbWidths[arg0] = gVideoModeResolutions[gVideoModeIndex & 7].width; - gVideoFbHeights[arg0] = gVideoModeResolutions[gVideoModeIndex & 7].height; + gVideoFbWidths[index] = gVideoModeResolutions[gVideoModeIndex & 7].width; + gVideoFbHeights[index] = gVideoModeResolutions[gVideoModeIndex & 7].height; if (gVideoModeIndex >= 2) { - gVideoFramebuffers[arg0] = allocate_from_main_pool_safe((640 * 480 * 2) + 0x30, COLOR_TAG_WHITE); - gVideoFramebuffers[arg0] = ((s32)gVideoFramebuffers[arg0] + 0x3F) & ~0x3F; + gVideoFramebuffers[index] = allocate_from_main_pool_safe((640 * 480 * 2) + 0x30, COLOR_TAG_WHITE); + gVideoFramebuffers[index] = ((s32)gVideoFramebuffers[index] + 0x3F) & ~0x3F; if (gVideoDepthBuffer == NULL) { gVideoDepthBuffer = allocate_from_main_pool_safe((640 * 480 * 2) + 0x30, COLOR_TAG_WHITE); gVideoDepthBuffer = ((s32)gVideoDepthBuffer + 0x3F) & ~0x3F; } } else { - gVideoFramebuffers[arg0] = allocate_from_main_pool_safe((gVideoFbWidths[arg0] * gVideoFbHeights[arg0] * 2) + 0x30, COLOR_TAG_WHITE); - gVideoFramebuffers[arg0] = ((s32)gVideoFramebuffers[arg0] + 0x3F) & ~0x3F; + gVideoFramebuffers[index] = allocate_from_main_pool_safe((gVideoFbWidths[index] * gVideoFbHeights[index] * 2) + 0x30, COLOR_TAG_WHITE); + gVideoFramebuffers[index] = ((s32)gVideoFramebuffers[index] + 0x3F) & ~0x3F; if (gVideoDepthBuffer == NULL) { - gVideoDepthBuffer = allocate_from_main_pool_safe((gVideoFbWidths[arg0] * gVideoFbHeights[arg0] * 2) + 0x30, COLOR_TAG_WHITE); + gVideoDepthBuffer = allocate_from_main_pool_safe((gVideoFbWidths[index] * gVideoFbHeights[index] * 2) + 0x30, COLOR_TAG_WHITE); gVideoDepthBuffer = ((s32)gVideoDepthBuffer + 0x3F) & ~0x3F; } } diff --git a/src/video.h b/src/video.h index 8d84e039..0d0dbcd8 100644 --- a/src/video.h +++ b/src/video.h @@ -38,6 +38,8 @@ extern u16 *gVideoDepthBuffer; extern s32 D_800DE774; extern s8 D_800DE778; +extern OSViMode D_800E4620, D_800E4670, D_800E46C0, D_800E4760, D_800E4710, D_800E47B0; + /* Size: 0x08 bytes */ typedef struct VideoModeResolution { /* 0x00 */ s32 width; @@ -48,6 +50,20 @@ extern VideoModeResolution gVideoModeResolutions[8]; extern s32 D_800DE7BC; +void init_video(s32 videoModeIndex, OSSched *sc); +void set_video_mode_index(s32 videoModeIndex); +s32 get_video_mode_index(void); +void set_video_width_and_height_from_index(s32 fbIndex); +s32 get_video_width_and_height_as_s32(void); +void init_vi_settings(void); +void init_framebuffer(s32 index); +void func_8007A974(void); +void func_8007AB24(s8 arg0); +s32 func_8007AB34(void); +void swap_framebuffers(void); + +//Non Matching +void memory_copy(u8 *src, u8 *dst, s32 numBytes); s32 func_8007A98C(s32 arg0); #endif From f903fdd6f6d72e4dd51bb0a8eba424eff190e1c5 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 17 Sep 2021 10:44:49 -0400 Subject: [PATCH 5/6] waves.h --- src/unknown_0255E0.c | 1 + src/waves.c | 50 +++++++------------------------------------- src/waves.h | 14 +++++++++++++ 3 files changed, 22 insertions(+), 43 deletions(-) diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index 5187f279..359128a3 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -14,6 +14,7 @@ #include "memory.h" #include "unknown_043920.h" #include "camera.h" +#include "waves.h" /************ .data ************/ diff --git a/src/waves.c b/src/waves.c index 088e9ac2..af348422 100644 --- a/src/waves.c +++ b/src/waves.c @@ -5,6 +5,8 @@ #include "types.h" #include "macros.h" #include "libultra_internal.h" +#include "memory.h" +#include "textures_sprites.h" /************ .data ************/ @@ -15,7 +17,7 @@ s32 *D_800E304C = NULL; // Could be an array of pointers? s32 D_800E3050[8] = { - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, }; s32 *D_800E3070[2] = { NULL, NULL }; @@ -33,41 +35,12 @@ unk800E3090 D_800E3090[4] = { { 0x4000, 0x0201, 0, 0, 0, 0, 0, 0, }, { 0x4001, 0x0203, 0, 0, 0, 0, 0, 0, }, { 0x4000, 0x0201, 0, 0, 0, 0, 0, 0, }, - { 0x4001, 0x0203, 0, 0, 0, 0, 0, 0, } + { 0x4001, 0x0203, 0, 0, 0, 0, 0, 0, }, }; -s32 *D_800E30D0 = NULL; +TextureHeader *D_800E30D0 = NULL; s32 *D_800E30D4 = NULL; - -typedef struct{ - u8 unk00; - u8 pad01[0x05]; - u8 unk06; - u8 unk07; - u32 unk08; -} unk800DC918_04_0C; //copied from unknown_0255E0.c - -typedef struct{ - u8 pad00[0x0C]; - unk800DC918_04_0C *unk0C; - u8 pad0C[0x10]; - s16 unk20; - u8 pad22[0x09]; - s8 unk2B; - u8 pad2C[0x14]; - u8 unk40; - u8 pad41[0x3]; -} unk800DC918_04; //copied from unknown_0255E0.c - -typedef struct{ - unk800DC918_04 * unk00; - u8 pad04[0x8]; - u32 unk0C; - u8 pad10[0xC]; -}unk800E30D8; - - -unk800E30D8 *D_800E30D8 = NULL; +LevelModel_Alternate *D_800E30D8 = NULL; s32 D_800E30DC = 0; s32 D_800E30E0 = 0; s32 D_800E30E4 = 0; @@ -173,12 +146,6 @@ s32 D_8012A728[2]; /*****************************/ -u8 *allocate_from_main_pool_safe(s32 arg0, s32 arg1); -void free_from_memory_pool(s32 *arg0); -void free_texture(s32 *arg0); -void func_800C5494(s32 arg0); -void func_800C5620(s32 arg0); - void func_800B7D20(void) { if (D_800E3040 != NULL) { free_from_memory_pool(D_800E3040); @@ -247,7 +214,7 @@ void func_800B8B8C(void) { GLOBAL_ASM("asm/non_matchings/waves/func_800B8C04.s") -s32 func_800B9228(unk800DC918_04 * arg0){ +s32 func_800B9228(LevelModelSegment *arg0) { s32 v0 = 0; s32 result = 0; while(v0 < D_8012A0E0 && arg0 != D_800E30D8[v0].unk00){ @@ -268,9 +235,6 @@ GLOBAL_ASM("asm/non_matchings/waves/func_800BA4B8.s") GLOBAL_ASM("asm/non_matchings/waves/func_800BA8E4.s") GLOBAL_ASM("asm/non_matchings/waves/func_800BB2F4.s") -void func_800BBE08(void); -void func_800BBF78(s32 arg0); - void func_800BBDDC(s32 arg0) { func_800BBE08(); func_800BBF78(arg0); diff --git a/src/waves.h b/src/waves.h index 2c8060a0..f01cb40f 100644 --- a/src/waves.h +++ b/src/waves.h @@ -4,7 +4,21 @@ #include "types.h" #include "structs.h" +typedef struct{ + LevelModelSegment *unk00; + u8 pad04[0x8]; + u32 unk0C; + u8 pad10[0xC]; +} LevelModel_Alternate; + +void func_800B7D20(void); +void func_800B8B8C(void); +s32 func_800B9228(LevelModelSegment *arg0); +void func_800BBDDC(s32 arg0); + Object_64 *func_800BE654(s16, f32, f32); // Non Matching f32 func_800BEEB4(Object_64 *); // Non Matching +void func_800BBE08(void); // Non Matching +void func_800BBF78(s32 arg0); // Non Matching #endif From ca9a00b80e4f419317ca873f7f9f032247291128 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 17 Sep 2021 11:09:19 -0400 Subject: [PATCH 6/6] Remove duplicated function header signatures and linked to proper files when possible --- include/structs.h | 4 ++++ src/audio.h | 13 ++++++------- src/camera.h | 2 +- src/font.h | 2 -- src/game_text.c | 1 + src/game_text.h | 2 -- src/memory.h | 3 ++- src/menu.h | 2 +- src/object_models.c | 2 ++ src/object_models.h | 3 --- src/unknown_003260.h | 2 +- src/unknown_008C40.h | 2 ++ src/unknown_00BC20.h | 3 ++- src/unknown_0255E0.h | 4 ++-- src/unknown_0348C0.h | 7 ------- src/waves.h | 1 + 16 files changed, 25 insertions(+), 28 deletions(-) diff --git a/include/structs.h b/include/structs.h index 9118e0ac..7b0c32c0 100644 --- a/include/structs.h +++ b/include/structs.h @@ -980,4 +980,8 @@ typedef struct unk8011D510 { /* 0x14 */ f32 unk14; } unk8011D510; +typedef struct unk80042178 { + u8 pad0[0x20]; +} unk80042178; + #endif diff --git a/src/audio.h b/src/audio.h index bd48a1a3..bcdbc0b0 100644 --- a/src/audio.h +++ b/src/audio.h @@ -37,15 +37,14 @@ typedef struct unk80115D1C { u8 unk2; } unk80115D1C; -extern void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config); -extern void alCSPSetBank(ALCSPlayer *seqp, ALBank *b); +void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config); //lib/src/al/csplayer.c +void alCSPSetBank(ALCSPlayer *seqp, ALBank *b); //lib/src/unknown_0C8660.c void func_8000B010(ALCSPlayer *, u8); //lib/src/mips1/alseqplayer.c -void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); //lib/src/al -void func_80004A60(u8, u16); //unknown_003260.c //Could be s32, s32 -s32 alCSPSetChlPan(ALCSPlayer *seqp, u8 chan, ALPan pan); //unknown_0C84E0.c -void alCSPSetChlVol(ALCSPlayer *, u8 chan, u8 vol); //unknown_0C84E0.c +void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); //lib/src/al/alHeapDBAlloc.c +s32 alCSPSetChlPan(ALCSPlayer *seqp, u8 chan, ALPan pan); //lib/src/unknown_0C84E0.c +void alCSPSetChlVol(ALCSPlayer *, u8 chan, u8 vol); //lib/src/unknown_0C84E0.c s32 alCSPGetChlVol(ALCSPlayer *seqp, u8 chan); //lib/src/al -void func_80063BA0(ALCSPlayer *seqp, u8 arg1, u8 arg2); //unknown_0646A0.c +void func_80063BA0(ALCSPlayer *seqp, u8 arg1, u8 arg2); //lib/src/unknown_0647A0.c u8 func_80063C00(ALCSPlayer *seqp, u8 arg1); //lib/src/mips1/al/unknown_064800.c u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan); //lib/src/al/alSeqpGetChlFXMix.c void func_8006492C(u8 arg0); //lib/src/mips1/al/reverb.c diff --git a/src/camera.h b/src/camera.h index b1968a0a..abeeef0e 100644 --- a/src/camera.h +++ b/src/camera.h @@ -83,7 +83,7 @@ extern s32 D_A4000000; extern s32 SP_IMEM; -//TODO: Remove from here once header files for below are created with these signatures. +//TODO: Figure out where these functions live: unknown_070110? 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? diff --git a/src/font.h b/src/font.h index d2547fb2..2981da97 100644 --- a/src/font.h +++ b/src/font.h @@ -125,8 +125,6 @@ typedef struct FontData { #define unk8012A7E8_TOTAL_SIZE (sizeof(unk8012A7E8) * unk8012A7E8_COUNT) #define unk8012A7EC_TOTAL_SIZE (sizeof(unk8012A7EC) * unk8012A7EC_COUNT) -//TextureHeader *load_texture(s32 arg0); //texture_sprites.c NON_MATCHING - void load_fonts(void); void func_800C4164(s32 arg0); void set_text_font(s32 arg0); diff --git a/src/game_text.c b/src/game_text.c index a2bddf15..3d82db49 100644 --- a/src/game_text.c +++ b/src/game_text.c @@ -4,6 +4,7 @@ #include "game_text.h" #include "menu.h" #include "unknown_00BC20.h" +#include "unknown_043920.h" /************ .data ************/ diff --git a/src/game_text.h b/src/game_text.h index 408f37ab..a73eb8d9 100644 --- a/src/game_text.h +++ b/src/game_text.h @@ -21,8 +21,6 @@ typedef struct unk8012A798 { extern u32 osTvType; -void func_8005A3B0(void); //unknown_043920.c - void func_800C29F0(void); void func_800C2AB4(void); void func_800C2AF4(s32 arg0); diff --git a/src/memory.h b/src/memory.h index b87247c2..5fceef42 100644 --- a/src/memory.h +++ b/src/memory.h @@ -71,7 +71,8 @@ typedef struct unk800B7D10 { s32 unk14; } unk800B7D10; -unk800B7D10 *get_stack_pointer(void); // Non Matching with own file +//Functions below don't have files or matches yet +unk800B7D10 *get_stack_pointer(void); // Non Matching with own file? s32 *func_8006F510(void); // Non Matching unknown_070110 void func_8006F53C(s32*); // Non Matching unknown_070110 diff --git a/src/menu.h b/src/menu.h index 09ab848f..7aeebe89 100644 --- a/src/menu.h +++ b/src/menu.h @@ -646,7 +646,7 @@ extern s16 D_800E1E2C[10]; extern s16 D_800E1E40[10]; -s32 get_random_number_from_range(s32, s32); // Non Matching src/unknown_070110.c +s32 get_random_number_from_range(s32, s32); // No file to pull from yet. void func_8007FF88(void); void func_80080E6C(void); diff --git a/src/object_models.c b/src/object_models.c index 408e285d..44fb3913 100644 --- a/src/object_models.c +++ b/src/object_models.c @@ -5,6 +5,8 @@ #include "macros.h" #include "memory.h" #include "asset_sections.h" +#include "unknown_0255E0.h" +#include "unknown_043920.h" /************ .data ************/ diff --git a/src/object_models.h b/src/object_models.h index 5181542c..4a2eed19 100644 --- a/src/object_models.h +++ b/src/object_models.h @@ -14,9 +14,6 @@ typedef struct unk8011D624 { extern s32 D_800DCEA0; extern s32 D_800DCEA4; -void func_80024D54(Gfx *, s32, s32, s32, s32); //Non Matching src/unknown_0255E0.c -void func_8005C25C(void); //src/unkown_043920.c - void func_8005F850(void); void func_800619F4(s32 arg0); diff --git a/src/unknown_003260.h b/src/unknown_003260.h index 286df90a..5dd69905 100644 --- a/src/unknown_003260.h +++ b/src/unknown_003260.h @@ -115,10 +115,10 @@ void func_800049D8(void); void func_800049F8(void * sndState,s16 type, u32 arg2); u16 func_80004A3C(u8 arg0); - // Non Matching ALMicroTime _sndpVoiceHandler(void *node); void func_80004668(ALBank *bnk, s16 sndIndx, u8, s32); void audioNewThread(ALSynConfig *c, OSPri p, s32 arg2); +void func_80004A60(u8, u16); //Could be s32, s32 #endif diff --git a/src/unknown_008C40.h b/src/unknown_008C40.h index ebf0de86..cca7f10e 100644 --- a/src/unknown_008C40.h +++ b/src/unknown_008C40.h @@ -8,5 +8,7 @@ void func_80008168(void); void func_80009558(u16, f32 x, f32 y, f32 z, s32, s32 *); // Non Matching void func_80009968(f32, f32, f32, u8, u8, s32); // Non Matching void func_800096D8(s32, f32, f32, f32); // Non Matching +// Yeah this one seems excessive, and it's Non Matching +void func_800098A4(s32, s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); #endif diff --git a/src/unknown_00BC20.h b/src/unknown_00BC20.h index 7f927e75..571e2833 100644 --- a/src/unknown_00BC20.h +++ b/src/unknown_00BC20.h @@ -116,7 +116,6 @@ extern s32 D_800DC85C; extern u8 D_800DC860; extern u16 D_800DC864; -void free_tt_ghost_data(void); //unknown_043920.c f32 func_800707F8(s16); //? Object *func_8000BF44(s32 arg0); @@ -233,5 +232,7 @@ void func_80015348(s32, s32); Object *func_8000EA54(unk80027FC4*, s32); s32 func_8001F460(Object*, s32, Object*); void func_80011570(Object *, f32, f32, f32); +s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178 *); + #endif diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index 35ffec1d..65fc18ad 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -3,6 +3,7 @@ #include "types.h" #include "structs.h" +#include "f3ddkr.h" /* Size: 0x8 bytes */ typedef struct unknown800DC874 { @@ -84,8 +85,6 @@ extern s32 D_800DC928; extern s8 D_800DC92C[24]; -f32 func_800BB2F4(s32, f32, f32, f32*); //waves.c //Non Matching - s32 func_800249E0(s32 arg0); void func_800257D0(void); void func_80027FC4(s32 arg0); @@ -117,5 +116,6 @@ s32 func_80029DE0(Object *obj, s32 segmentIndex); s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos); s32 func_8002A5F8(LevelModelSegmentBoundingBox *bb); void func_80030664(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5); +void func_80024D54(Gfx *, s32, s32, s32, s32); #endif diff --git a/src/unknown_0348C0.h b/src/unknown_0348C0.h index bccb2b87..1eb0676a 100644 --- a/src/unknown_0348C0.h +++ b/src/unknown_0348C0.h @@ -382,10 +382,6 @@ typedef struct unk8004210C { s32 unk64; } unk8004210C; -typedef struct unk80042178 { - u8 pad0[0x20]; -} unk80042178; - typedef struct Object_3C_80042178 { u8 pad0[8]; u16 unk8; @@ -466,9 +462,6 @@ f32 func_800707C4(s16); // No idea where it's located f32 func_800707F8(s16); // No idea where it's located s32 get_random_number_from_range(s32, s32); // Non Matching src/unknown_070110.c s32 func_8007066C(s32, s32); // Non Matching src/unknown_070110.c -s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178*); //unknown_00BC20.c Non Matching -// Yeah this one seems excessive, and it's Non Matching from src/unknown_008C40.c -void func_800098A4(s32, s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); void func_80033F44(Object *arg0, s32 arg1); void func_80034530(Object *arg0, unk80034530 *arg1); diff --git a/src/waves.h b/src/waves.h index f01cb40f..e8fae386 100644 --- a/src/waves.h +++ b/src/waves.h @@ -20,5 +20,6 @@ Object_64 *func_800BE654(s16, f32, f32); // Non Matching f32 func_800BEEB4(Object_64 *); // Non Matching void func_800BBE08(void); // Non Matching void func_800BBF78(s32 arg0); // Non Matching +f32 func_800BB2F4(s32, f32, f32, f32*); #endif