From 306a3db4c3ee3e2c15ff85f9a586ea4391dba748 Mon Sep 17 00:00:00 2001 From: Lywx Date: Fri, 7 Mar 2025 10:48:42 -0600 Subject: [PATCH] Added more documentation on geo_layouts (#156) * Added more documentation on geo_layouts * Removed sm64 comment --- include/global.h | 8 +-- linker_scripts/us/symbol_addrs_code.txt | 4 +- src/11BA0.c | 88 ++++++++++++------------- src/11BA0.h | 4 +- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/include/global.h b/include/global.h index bf9f647..952fa9d 100644 --- a/include/global.h +++ b/include/global.h @@ -343,10 +343,10 @@ typedef struct unk_D_86002F34_alt12 { /* 0x1E */ s16 unk_1E; } unk_D_86002F34_alt12; // size = 0x20 -typedef struct unk_D_86002F34_alt13 { - /* 0x00 */ GraphNode unk_00; - /* 0x18 */ s16 unk_18; -} unk_D_86002F34_alt13; // size = 0x1C +typedef struct GraphNodeCullingRadius { + /* 0x00 */ struct GraphNode node; + /* 0x18 */ s16 cullingRadius; // specifies the 'sphere radius' for purposes of frustum culling +} GraphNodeCullingRadius; // size = 0x1C typedef struct unk_D_86002F34_alt14 { /* 0x00 */ GraphNode unk_00; diff --git a/linker_scripts/us/symbol_addrs_code.txt b/linker_scripts/us/symbol_addrs_code.txt index 57d768e..dd5768b 100644 --- a/linker_scripts/us/symbol_addrs_code.txt +++ b/linker_scripts/us/symbol_addrs_code.txt @@ -414,12 +414,12 @@ func_80010B20 = 0x80010B20; // type:func func_80010BD4 = 0x80010BD4; // type:func func_80010CA8 = 0x80010CA8; // type:func func_80010E20 = 0x80010E20; // type:func -func_80010FA0 = 0x80010FA0; // type:func +init_scene_graph_node_links = 0x80010FA0; // type:func func_80010FDC = 0x80010FDC; // type:func func_8001103C = 0x8001103C; // type:func func_80011088 = 0x80011088; // type:func func_800110E0 = 0x800110E0; // type:func -func_800111A4 = 0x800111A4; // type:func +init_graph_node_culling_radius = 0x800111A4; // type:func func_800111FC = 0x800111FC; // type:func func_80011258 = 0x80011258; // type:func func_800112BC = 0x800112BC; // type:func diff --git a/src/11BA0.c b/src/11BA0.c index 41ac13d..6927506 100644 --- a/src/11BA0.c +++ b/src/11BA0.c @@ -3,17 +3,17 @@ #include "F420.h" #include "util.h" -void func_80010FA0(struct GraphNode* arg0, u8 arg1) { - if (arg0 != NULL) { - arg0->unk_00 = arg1; - arg0->unk_01 = 0x11; - arg0->unk_02 = 0; - arg0->unk_03 = 0; - arg0->unk_04 = arg0; - arg0->unk_08 = arg0; - arg0->unk_0C = NULL; - arg0->unk_10 = NULL; - arg0->unk_14 = NULL; +void init_scene_graph_node_links(struct GraphNode* graphNode, u8 type) { + if (graphNode != NULL) { + graphNode->unk_00 = type; + graphNode->unk_01 = 0x11; + graphNode->unk_02 = 0; + graphNode->unk_03 = 0; + graphNode->unk_04 = graphNode; + graphNode->unk_08 = graphNode; + graphNode->unk_0C = NULL; + graphNode->unk_10 = NULL; + graphNode->unk_14 = NULL; } } @@ -37,7 +37,7 @@ struct GraphNode* func_8001103C(MainPoolState* arg0, struct GraphNode* arg1) { } if (arg1 != NULL) { - func_80010FA0(arg1, 0); + init_scene_graph_node_links(arg1, 0); } return arg1; @@ -50,7 +50,7 @@ unk_D_86002F34_alt2* func_80011088(MainPoolState* arg0, unk_D_86002F34_alt2* arg if (arg1 != NULL) { arg1->unk_18 = arg2; - func_80010FA0(arg1, 1); + init_scene_graph_node_links(arg1, 1); } return arg1; @@ -66,22 +66,22 @@ unk_D_86002F34_00C* func_800110E0(MemoryBlock* arg0, unk_D_86002F34_00C* arg1, s func_80011E68(arg1, 30.0f, 100.0f, 12800.0f); func_80011EB4(arg1, 0.0f, 512.0f, 4096.0f, 0.0f, 0.0f, 0.0f, 0); func_80011FC8(arg1, 2, 0, 0, 0, 0); - func_80010FA0(arg1, 2); + init_scene_graph_node_links(arg1, 2); } return arg1; } -unk_D_86002F34_alt13* func_800111A4(MemoryBlock* arg0, unk_D_86002F34_alt13* arg1, s16 arg2) { - if (arg0 != NULL) { - arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt13), 4); +GraphNodeCullingRadius* init_graph_node_culling_radius(MemoryBlock* pool, GraphNodeCullingRadius* graphNode, s16 radius) { + if (pool != NULL) { + graphNode = func_80002DCC(pool, sizeof(GraphNodeCullingRadius), 4); } - if (arg1 != NULL) { - arg1->unk_18 = arg2; - func_80010FA0(arg1, 3); + if (graphNode != NULL) { + graphNode->cullingRadius = radius; + init_scene_graph_node_links(graphNode, 3); } - return arg1; + return graphNode; } unk_D_86002F34_alt1* func_800111FC(MemoryBlock* arg0, unk_D_86002F34_alt1* arg1, s16 arg2) { @@ -92,7 +92,7 @@ unk_D_86002F34_alt1* func_800111FC(MemoryBlock* arg0, unk_D_86002F34_alt1* arg1, if (arg1 != NULL) { arg1->unk_18 = arg2; arg1->unk_1A = 0; - func_80010FA0(arg1, 4); + init_scene_graph_node_links(arg1, 4); } return arg1; @@ -104,7 +104,7 @@ unk_D_86002F34_alt14* func_80011258(MainPoolState* arg0, unk_D_86002F34_alt14* a } if (arg1 != NULL) { - func_80010FA0(arg1, 5); + init_scene_graph_node_links(arg1, 5); arg1->unk_00.unk_02 |= arg2 & 3; } @@ -117,7 +117,7 @@ unk_D_86002F34_alt15* func_800112BC(MainPoolState* arg0, unk_D_86002F34_alt15* a } if (arg1 != NULL) { - func_80010FA0(arg1, 6); + init_scene_graph_node_links(arg1, 6); arg1->unk_00.unk_02 |= arg2 & 3; } @@ -134,7 +134,7 @@ unk_D_86002F34_alt16* func_80011320(MainPoolState* arg0, unk_D_86002F34_alt16* a if (arg1 != NULL) { temp_v0 = ((arg2 >> 3) << 0xB) | ((arg3 >> 3) << 6) | ((arg4 >> 3) << 1) | 1; arg1->unk_18 = (temp_v0 << 0x10) | temp_v0; - func_80010FA0(arg1, 7); + init_scene_graph_node_links(arg1, 7); } return arg1; } @@ -145,7 +145,7 @@ unk_D_86002F34_alt17* func_800113AC(MainPoolState* arg0, unk_D_86002F34_alt17* a } if (arg1 != NULL) { - func_80010FA0(arg1, 8); + init_scene_graph_node_links(arg1, 8); } return arg1; @@ -160,7 +160,7 @@ unk_D_8690A610* func_800113F8(s32 arg0, unk_D_8690A610* arg1, s16 arg2, s16 arg3 arg1->unk_18.unk_00 = arg2; arg1->unk_18.unk_02 = arg3; arg1->unk_18.unk_04.rgba = (r << 0x18) | (g << 0x10) | (b << 8) | a; - func_80010FA0(arg1, 0xA); + init_scene_graph_node_links(arg1, 0xA); } return arg1; @@ -179,7 +179,7 @@ unk_D_86002F34_alt18* func_80011484(MainPoolState* arg0, unk_D_86002F34_alt18* a arg1->a = a; arg1->unk_1C = arg2; arg1->unk_1E = arg3; - func_80010FA0(arg1, 0xB); + init_scene_graph_node_links(arg1, 0xB); } return arg1; @@ -194,7 +194,7 @@ unk_D_86002F34_alt19* func_80011504(MainPoolState* arg0, unk_D_86002F34_alt19* a arg1->r = r; arg1->g = g; arg1->b = b; - func_80010FA0(arg1, 0xD); + init_scene_graph_node_links(arg1, 0xD); } return arg1; @@ -214,7 +214,7 @@ unk_D_86002F34* func_8001156C(MainPoolState* arg0, unk_D_86002F34* arg1, s32 arg arg1->unk_25 = arg4; arg1->unk_26 = arg6; arg1->unk_28 = NULL; - func_80010FA0(arg1, 0xE); + init_scene_graph_node_links(arg1, 0xE); } return arg1; @@ -231,7 +231,7 @@ unk_D_86002F34_alt12* func_800115F0(MainPoolState* arg0, unk_D_86002F34_alt12* a arg1->unk_1A = arg3; arg1->unk_1C = arg4; arg1->unk_1E = arg5; - func_80010FA0(arg1, 0xF); + init_scene_graph_node_links(arg1, 0xF); } return arg1; @@ -245,7 +245,7 @@ unk_D_86002F34_alt20* func_80011660(MainPoolState* arg0, unk_D_86002F34_alt20* a if (arg1 != NULL) { arg1->unk_18 = arg2; arg1->unk_1A = arg3; - func_80010FA0(arg1, 0x10); + init_scene_graph_node_links(arg1, 0x10); } return arg1; @@ -259,7 +259,7 @@ unk_D_86002F34_alt21* func_800116C0(MainPoolState* arg0, unk_D_86002F34_alt21* a if (arg1 != NULL) { arg1->unk_18 = arg2; arg1->unk_1A = arg3; - func_80010FA0(arg1, 0x11); + init_scene_graph_node_links(arg1, 0x11); } return arg1; @@ -273,7 +273,7 @@ unk_D_86002F34_alt5* func_80011720(MainPoolState* arg0, unk_D_86002F34_alt5* arg if (arg1 != NULL) { arg1->unk_18 = *arg2; arg1->unk_24 = *arg3; - func_80010FA0(arg1, 0x12); + init_scene_graph_node_links(arg1, 0x12); } return arg1; @@ -286,7 +286,7 @@ unk_D_86002F34_alt22* func_800117A8(MainPoolState* arg0, unk_D_86002F34_alt22* a if (arg1 != NULL) { arg1->unk_18 = *arg2; - func_80010FA0(arg1, 0x13); + init_scene_graph_node_links(arg1, 0x13); } return arg1; @@ -305,7 +305,7 @@ unk_D_86002F34_alt6* func_80011814(MainPoolState* arg0, unk_D_86002F34_alt6* arg arg1->unk_30 = arg2; arg1->unk_31 = arg3; arg1->unk_32 = arg4; - func_80010FA0(arg1, 0x14); + init_scene_graph_node_links(arg1, 0x14); } return arg1; @@ -319,7 +319,7 @@ unk_D_86002F34_alt7* func_800118D0(MainPoolState* arg0, unk_D_86002F34_alt7* arg if (arg1 != NULL) { arg1->unk_18 = arg3; arg1->unk_1C = arg4; - func_80010FA0(arg1, 0x15); + init_scene_graph_node_links(arg1, 0x15); arg1->unk_00.unk_03 = arg2; } @@ -352,7 +352,7 @@ unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_00 arg1->unk_054.unk_04 = NULL; arg1->unk_054.unk_08 = 0; arg1->unk_054.unk_0A = 0; - func_80010FA0(&arg1->unk_000, 0x16); + init_scene_graph_node_links(&arg1->unk_000, 0x16); arg1->unk_000.unk_02 |= 0x60; } @@ -371,7 +371,7 @@ unk_D_86002F34_alt8* func_80011A3C(MainPoolState* arg0, unk_D_86002F34_alt8* arg } else { func_8000ED4C(&arg1->unk_1C, arg4); } - func_80010FA0(arg1, 0x17); + init_scene_graph_node_links(arg1, 0x17); arg1->unk_00.unk_03 = arg2; } @@ -396,7 +396,7 @@ unk_D_86002F34_alt9* func_80011B10(MainPoolState* arg0, unk_D_86002F34_alt9* arg arg1->unk_1C = *arg4; arg1->unk_28 = arg5; arg1->unk_18 = arg3; - func_80010FA0(arg1, 0x18); + init_scene_graph_node_links(arg1, 0x18); arg1->unk_00.unk_03 = arg2; } @@ -410,7 +410,7 @@ unk_func_80011B94* func_80011B94(MainPoolState* arg0, unk_func_80011B94* arg1, s if (arg1 != NULL) { arg1->unk_18 = arg3; - func_80010FA0(arg1, 0x19); + init_scene_graph_node_links(arg1, 0x19); arg1->unk_00.unk_03 = arg2; } @@ -430,7 +430,7 @@ unk_D_86002F34_alt10* func_80011BF4(MainPoolState* arg0, unk_D_86002F34_alt10* a arg1->unk_1C = arg5; arg1->unk_1E = arg6; arg1->unk_24.rgba = (r << 0x18) | (g << 0x10) | (b << 8) | a; - func_80010FA0(arg1, 0x1A); + init_scene_graph_node_links(arg1, 0x1A); } return arg1; @@ -443,7 +443,7 @@ unk_D_86002F34_alt23* func_80011C98(MainPoolState* arg0, unk_D_86002F34_alt23* a if (arg1 != NULL) { arg1->unk_18 = arg2; - func_80010FA0(arg1, 0x1B); + init_scene_graph_node_links(arg1, 0x1B); } return arg1; @@ -464,7 +464,7 @@ unk_D_86002F34_alt24* func_80011CF0(MainPoolState* arg0, unk_D_86002F34_alt24* a arg1->unk_1A = arg8; arg1->unk_24 = arg9; arg1->unk_28.rgba = (r << 0x18) | (g << 0x10) | (b << 8) | a; - func_80010FA0(arg1, 0x1C); + init_scene_graph_node_links(arg1, 0x1C); arg1->unk_00.unk_03 = arg2; } diff --git a/src/11BA0.h b/src/11BA0.h index adc8bda..38ab153 100644 --- a/src/11BA0.h +++ b/src/11BA0.h @@ -20,12 +20,12 @@ typedef struct unk_D_8690A610 { /* 0x18 */ unk_D_8690A610_018 unk_18; } unk_D_8690A610; // size = 0x20 -void func_80010FA0(struct GraphNode* arg0, u8 arg1); +void init_scene_graph_node_links(struct GraphNode* arg0, u8 arg1); void func_80010FDC(struct GraphNode* arg0, func_D_86002F34_000_010 arg1, unk_D_86002F34_000_014* arg2); struct GraphNode* func_8001103C(MainPoolState* arg0, struct GraphNode* arg1); unk_D_86002F34_alt2* func_80011088(MainPoolState* arg0, unk_D_86002F34_alt2* arg1, struct GraphNode* arg2); unk_D_86002F34_00C* func_800110E0(MemoryBlock* arg0, unk_D_86002F34_00C* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5); -unk_D_86002F34_alt13* func_800111A4(MemoryBlock* arg0, unk_D_86002F34_alt13* arg1, s16 arg2); +GraphNodeCullingRadius* func_800111A4(MemoryBlock* arg0, GraphNodeCullingRadius* arg1, s16 arg2); unk_D_86002F34_alt1* func_800111FC(MemoryBlock* arg0, unk_D_86002F34_alt1* arg1, s16 arg2); unk_D_86002F34_alt14* func_80011258(MainPoolState* arg0, unk_D_86002F34_alt14* arg1, s16 arg2); unk_D_86002F34_alt15* func_800112BC(MainPoolState* arg0, unk_D_86002F34_alt15* arg1, s16 arg2);