From 8f9c32533b6467b5ff8e57767f9d772022fddb69 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Tue, 14 Sep 2021 15:50:58 -0400 Subject: [PATCH] unknown_0255E0.h --- include/structs.h | 32 +++++++++++ src/camera.c | 1 + src/camera.h | 25 -------- src/unknown_00BC20.h | 3 + src/unknown_0255E0.c | 132 ++++--------------------------------------- src/unknown_0255E0.h | 87 ++++++++++++++++++++++++++++ src/unknown_0348C0.c | 2 - src/unknown_043920.h | 1 + 8 files changed, 136 insertions(+), 147 deletions(-) diff --git a/include/structs.h b/include/structs.h index e78ad9e3..6832d6b9 100644 --- a/include/structs.h +++ b/include/structs.h @@ -905,4 +905,36 @@ typedef struct Object { u32 unk378[174]; // Not an array. Unknown values. } Object; +/* Size: 0x44 bytes, might just be Object? */ +typedef struct unk80120AC0 { + s16 unk0; + s16 unk2; + s16 unk4; + u8 pad6[6]; + f32 x_position; + f32 y_position; + f32 z_position; + f32 pad18; + f32 unk1C; + f32 pad20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + s16 unk34; + s16 pad36; + s16 unk38; + s8 pad3A; + s8 unk3B; + u8 pad3C[8]; +} unk80120AC0; + +typedef struct unk80027FC4 { + u8 unk0; + u8 unk1; + s16 unk2; + s16 unk4; + s16 unk6; +} unk80027FC4; + #endif diff --git a/src/camera.c b/src/camera.c index 7605331a..35b45e72 100644 --- a/src/camera.c +++ b/src/camera.c @@ -5,6 +5,7 @@ #include "audio.h" #include "unknown_00BC20.h" #include "unknown_06B2B0.h" +#include "unknown_0255E0.h" extern u32 osTvType; diff --git a/src/camera.h b/src/camera.h index 1d13c845..00d03bd8 100644 --- a/src/camera.h +++ b/src/camera.h @@ -59,30 +59,6 @@ typedef struct unk80121110 { s8 unk6; } unk80121110; -/* Size: 0x44 bytes, might just be Object? */ -typedef struct unk80120AC0 { - s16 unk0; - s16 unk2; - s16 unk4; - u8 pad6[6]; - f32 x_position; - f32 y_position; - f32 z_position; - f32 pad18; - f32 unk1C; - f32 pad20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - s16 unk34; - s16 pad36; - s16 unk38; - s8 pad3A; - s8 unk3B; - u8 pad3C[8]; -} unk80120AC0; - extern ScreenViewport gScreenViewports[4]; // Not sure about the typing here @@ -109,7 +85,6 @@ 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 - s16 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos); //unknown_0255E0 void func_800705F8(s32, f32, f32, f32); //From unknown_070110 f32 sqrtf(f32); //IDO? diff --git a/src/unknown_00BC20.h b/src/unknown_00BC20.h index 7a9cc638..9d12bfd0 100644 --- a/src/unknown_00BC20.h +++ b/src/unknown_00BC20.h @@ -227,5 +227,8 @@ void func_80011960(Object*, s32, u32, Object_64*, u32, u32, u32, u32, f32); void func_80011AD0(Object *this); void func_80012E28(Object *this); void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); +s32 func_80014814(s32 *); +void func_80015348(s32, s32); +Object *func_8000EA54(unk80027FC4*, s32); #endif diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index 274b3aa8..5187f279 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -8,30 +8,12 @@ #include "structs.h" #include "f3ddkr.h" #include "PR/gu.h" - -/* Size: 0x44 bytes */ -typedef struct unk80120AC0 { - s16 unk0; - s16 unk2; - s16 unk4; - u8 pad6[6]; - f32 x_position; - f32 y_position; - f32 z_position; - f32 pad18; - f32 unk1C; - f32 pad20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - s16 unk34; - s16 pad36; - s16 unk38; - s8 pad3A; - s8 unk3B; - u8 pad3C[8]; -} unk80120AC0; +#include "textures_sprites.h" +#include "unknown_00BC20.h" +#include "unknown_06B2B0.h" +#include "memory.h" +#include "unknown_043920.h" +#include "camera.h" /************ .data ************/ @@ -141,17 +123,7 @@ s32 D_8011D0E8; s32 D_8011D0EC; s32 D_8011D0F0; s32 D_8011D0F4; - -/* Size: 0x10 bytes */ -typedef struct unk8011D0F8 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; -} unk8011D0F8; - unk8011D0F8 D_8011D0F8[3]; - s32 D_8011D128[15]; s32 D_8011D164; s32 D_8011D168[84]; @@ -163,37 +135,13 @@ s32 D_8011D314; s32 D_8011D318; s32 D_8011D31C; s32 D_8011D320[4]; - - -/* Size: 0x10 bytes */ -typedef struct unk8011D330 { - u8 pad0[0x10]; -} unk8011D330; - unk8011D330 *D_8011D330; s32 D_8011D334; - s32 D_8011D338[4]; - -/* Size: 0xA bytes */ -typedef struct unk8011D348 { - u8 pad0[0x9]; - u8 unk9; -} unk8011D348; unk8011D348 *D_8011D348; - s32 D_8011D34C; s32 D_8011D350[4]; - -/* Size: 0x8 bytes */ -typedef struct unk8011D360 { - u8 pad0[4]; - s16 unk4; - s16 unk6; -} unk8011D360; - unk8011D360 *D_8011D360; - s32 D_8011D364; s32 D_8011D368; s32 D_8011D36C; @@ -203,36 +151,8 @@ s32 D_8011D378; s32 D_8011D37C; f32 D_8011D380; u32 D_8011D384; - -/* Size: 0x38 bytes */ -typedef struct unk8011D388 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s32 unk20; - s32 unk24; - u8 unk28; - u8 unk29; - u8 unk2A; - s16 unk2C; - s16 unk2E; - s32 unk30; - s32 unk34; -} unk8011D388; unk8011D388 D_8011D388[4]; - -typedef struct { - /* 0x00 */ s32 x; - /* 0x04 */ s32 y; - /* 0x08 */ s32 z; -} unk8011D468; unk8011D468 D_8011D468; - s32 D_8011D474; s32 D_8011D478; s32 D_8011D47C; @@ -256,16 +176,6 @@ s32 D_8011D4BC; /******************************/ -f32 func_800BB2F4(s32, f32, f32, f32*); -void func_8007B3D0(Gfx**); -Object *get_object(s32); -Settings *get_settings(); -void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentIndex2, u8 *segmentsOrder, u32 *segmentsOrderIndex); -s32 func_80014814(s32*); -void func_80015348(s32, s32); -void render_level_segment(s32 segmentId, s32 nonOpaque); - - s32 func_800249E0(s32 arg0) { D_8011D37C = arg0; return 0; @@ -274,7 +184,7 @@ s32 func_800249E0(s32 arg0) { #if 1 GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800249F0.s") #else -void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6){ +void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6) { s32 i; s32 tmp_a2; @@ -370,17 +280,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027568.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800278E8.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027E24.s") -typedef struct unk80027FC4 { - u8 unk0; - u8 unk1; - s16 unk2; - s16 unk4; - s16 unk6; -} unk80027FC4; - -void func_8005A3D0(void); -Object * func_8000EA54(unk80027FC4*, s32); - void func_80027FC4(s32 arg0) { unk80027FC4 sp20; @@ -424,7 +323,7 @@ void func_800289B8(void){ } #endif -void render_skydome(void){ +void render_skydome(void) { unk80120AC0 * v0_some_struct; if(D_8011B0B8 == NULL) return; @@ -720,9 +619,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/render_level_segment.s") #endif #ifdef NON_MATCHING - -void add_segment_to_order(s32 segmentIndex, u32 *segmentsOrderIndex, u8 *segmentsOrder); - // Regalloc issues. void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentIndex2, u8 *segmentsOrder, u32 *segmentsOrderIndex) { BspTreeNode *curNode; @@ -811,7 +707,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80029DE0.s") #endif #ifdef NON_MATCHING - // Has regalloc issues. s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos) { LevelModelSegmentBoundingBox *bb; @@ -843,13 +738,12 @@ s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos) { return result; } - #else GLOBAL_ASM("asm/non_matchings/unknown_0255E0/get_level_segment_index_from_position.s") #endif -s32 func_8002A05C(s32 arg0, s32 arg1, s32 *arg2){ +s32 func_8002A05C(s32 arg0, s32 arg1, s32 *arg2) { s32 i; s32 cnt = 0; LevelModelSegmentBoundingBox * a0; @@ -895,14 +789,14 @@ s32 func_8002A134(s32 *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s return phi_v1; } -LevelModelSegment *func_8002A2C8(s32 arg0){ +LevelModelSegment *func_8002A2C8(s32 arg0) { if(arg0 < 0 || gCurrentLevelModel->numberOfSegments < arg0) return NULL; return gCurrentLevelModel->segments + arg0; } -LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0){ +LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0) { if(arg0 < 0 || gCurrentLevelModel->numberOfSegments < arg0) return NULL; @@ -912,8 +806,6 @@ LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0){ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A31C.s") #ifdef NON_MATCHING -f32 func_80066348(f32, f32, f32); - // Has some minor issues, but should be functionally equivalent. s32 func_8002A5F8(LevelModelSegmentBoundingBox *bb) { s64 sp48; @@ -1210,4 +1102,4 @@ void func_80031018(void) { D_8011D468.x = (s32) x; D_8011D468.y = (s32) y; D_8011D468.z = (s32) z; -} \ No newline at end of file +} diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index 3ff57731..35ffec1d 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -14,6 +14,59 @@ typedef struct unknown800DC874 { s16 unk06; } unknown800DC874; +/* Size: 0x10 bytes */ +typedef struct unk8011D0F8 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; +} unk8011D0F8; + +/* Size: 0x10 bytes */ +typedef struct unk8011D330 { + u8 pad0[0x10]; +} unk8011D330; + +/* Size: 0xA bytes */ +typedef struct unk8011D348 { + u8 pad0[0x9]; + u8 unk9; +} unk8011D348; + +/* Size: 0x8 bytes */ +typedef struct unk8011D360 { + u8 pad0[4]; + s16 unk4; + s16 unk6; +} unk8011D360; + +/* Size: 0x38 bytes */ +typedef struct unk8011D388 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + u8 unk28; + u8 unk29; + u8 unk2A; + s16 unk2C; + s16 unk2E; + s32 unk30; + s32 unk34; +} unk8011D388; + +typedef struct { + /* 0x00 */ s32 x; + /* 0x04 */ s32 y; + /* 0x08 */ s32 z; +} unk8011D468; + extern s32 D_800DC870; extern unknown800DC874 D_800DC874; extern unknown800DC874 D_800DC87C; @@ -31,4 +84,38 @@ 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); +void func_80028044(s32 arg0); +void render_skydome(void); +void func_80028FA0(s32 arg0); +void add_segment_to_order(s32 segmentIndex, u32 *segmentsOrderIndex, u8 *segmentsOrder); +s32 func_8002A05C(s32 arg0, s32 arg1, s32 *arg2); +s32 func_8002A134(s32 *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6); +LevelModelSegment *func_8002A2C8(s32 arg0); +LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0); +void func_8002ACC8(s32 arg0); +s32 func_8002ACD4(f32 *arg0, f32 *arg1, f32 *arg2); +s32 func_8002B9BC(Object *obj, f32 *arg1, f32 *arg2, s32 arg3); +void func_8002C71C(LevelModelSegment *segment); +LevelModel *func_8002C7C4(void); +void func_80030750(s32 arg0, s16 *arg1, s16 *arg2, s8 *arg3, s8 *arg4, s8 *arg5); +void func_800307BC(s32 arg0); +void func_80030838(s32 arg0, s32 arg1); +void func_8003093C(s32 arg0); +void func_80031018(void); + +//Non Matching +void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentIndex2, + u8 *segmentsOrder, u32 *segmentsOrderIndex); +void render_level_segment(s32 segmentId, s32 nonOpaque); +void render_level_geometry_and_objects(void); +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); + #endif diff --git a/src/unknown_0348C0.c b/src/unknown_0348C0.c index cb2d500b..616194fd 100644 --- a/src/unknown_0348C0.c +++ b/src/unknown_0348C0.c @@ -775,8 +775,6 @@ typedef struct Object_64_80038710 { s8 unk44; } Object_64_80038710; -void func_80066488(s32, f32, f32, f32, s16, s16, s16); - void func_80038710(Object *obj, s32 arg1) { s32 temp_v0; s32 phi_v1; diff --git a/src/unknown_043920.h b/src/unknown_043920.h index 5ef25cf3..91be4840 100644 --- a/src/unknown_043920.h +++ b/src/unknown_043920.h @@ -46,5 +46,6 @@ 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); #endif