diff --git a/include/functions.h b/include/functions.h index 0a28e0fc98..d70bd61f64 100644 --- a/include/functions.h +++ b/include/functions.h @@ -556,7 +556,7 @@ void func_800AE5A0(GlobalContext* ctxt); // func_800AE5A0 void func_800AE5E4(void); // func_800AE5E4 void func_800AE778(GlobalContext* ctxt, ColorRGBA8* color, short param_3, short param_4); // func_800AE778 void func_800AE8EC(GlobalContext* ctxt); // func_800AE8EC -void func_800AE930(BgCheckContext* bgCtxt, int param_2, float* param_3, float param_4, short param_5, int param_6, int param_7); // func_800AE930 +void func_800AE930(BgCheckContext* bgCtxt, int param_2, float* param_3, float param_4, short param_5, BgPolygon* param_6, int param_7); // func_800AE930 void func_800AEF44(void); // func_800AEF44 void func_800AEF70(void); // func_800AEF70 void func_800AEFA0(void); // func_800AEFA0 @@ -911,31 +911,31 @@ void func_800BF9A0(s32 a0, s32 a1); // func_800BF9A0 s32 func_800BFA78(s32 param_1, s32 param_2); // func_800BFA78 void func_800BFAE8(void); // func_800BFAE8 void func_800BFB40(void); // func_800BFB40 -void BgCheck_PolygonLinkedListNodeInit(BgPolygonLinkedListNode* node, s16* next, s16 polyIndex); // func_800BFB80 -void BgCheck_PolygonLinkedListResetHead(s16* head); // func_800BFB9C -void BgCheck_ScenePolygonListsNodeInsert(BgScenePolygonLists* list, u16* head, s32 polyIndex); // func_800BFBAC -void BgCheck_PolygonLinkedListNodeInsert(BgPolygonLinkedList* list, s16* head, s32 polyIndex); // func_800BFC04 +void BgCheck_PolygonLinkedListNodeInit(BgPolygonLinkedListNode* node, s16* polyIndex, u16 next); // func_800BFB80 +void BgCheck_PolygonLinkedListResetHead(u16* head); // func_800BFB9C +void BgCheck_ScenePolygonListsNodeInsert(BgScenePolygonLists* list, u16* head, s16* polyIndex); // func_800BFBAC +void BgCheck_PolygonLinkedListNodeInsert(BgPolygonLinkedList* list, u16* head, s16* polyIndex); // func_800BFC04 void BgCheck_PolygonLinkedListInit(GlobalContext* ctxt, BgPolygonLinkedList* list); // func_800BFC5C void BgCheck_PolygonLinkedListAlloc(GlobalContext* ctxt, BgPolygonLinkedList* list, u32 numNodes); // func_800BFC70 void BgCheck_PolygonLinkedListReset(BgPolygonLinkedList* list); // func_800BFCC0 -s16 BgCheck_AllocPolygonLinkedListNode(BgPolygonLinkedList* attributes); // func_800BFCCC +u16 BgCheck_AllocPolygonLinkedListNode(BgPolygonLinkedList* list); // func_800BFCCC void BgCheck_CreateVec3fFromVertex(BgVertex* vertex, Vector3f* vector); // func_800BFCFC void BgCheck_CreateVertexFromVec3f(BgVertex* vertex, Vector3f* vector); // func_800BFD40 -void func_800BFD84(void); // func_800BFD84 -void func_800BFDEC(void); // func_800BFDEC +float func_800BFD84(BgPolygon* polygon, float param_2, float param_3); // func_800BFD84 +int func_800BFDEC(BgPolygon* param_1, BgPolygon* param_2, unsigned int* param_3, unsigned int* param_4); // func_800BFDEC s32 BgCheck_PolygonGetMinY(BgPolygon* polygons, BgVertex* vertices); // func_800BFFC4 -void func_800C003C(void); // func_800C003C -void func_800C0094(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_800C0094 -void func_800C01B8(void); // func_800C01B8 +void BgCheck_PolygonGetNormal(BgPolygon* polygon, f32* normalX, f32* normalY, f32* normalZ); // func_800C003C +void func_800C0094(BgPolygon* param_1, f32 xOffset, f32 yOffset, f32 zOffset, z_Matrix* matrix); // func_800C0094 +f32 func_800C01B8(BgPolygon* param_1, Vector3f* param_2); // func_800C01B8 void BgCheck_CreateColTriParamsFromPolygon(BgPolygon* polygon, BgVertex* vertices, ColTriParams* tri); // func_800C0220 void func_800C02C0(BgPolygon* poly, s32 index, BgCheckContext* bgCtxt, ColTriParams* tri); // func_800C02C0 -void func_800C0340(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_800C0340 -void func_800C0474(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_800C0474 +void func_800C0340(BgPolygon* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_800C0340 +UNK_TYPE4 func_800C0474(BgPolygon* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_800C0474 void func_800C0668(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_800C0668 void func_800C06A8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_800C06A8 void func_800C074C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_800C074C void func_800C07F0(void); // func_800C07F0 -void func_800C0AF0(void); // func_800C0AF0 +void BgCheck_PolygonCollidesWithSphere(BgPolygon* polygon, BgVertex* verticies, Vector3f* pos, f32 readius); // func_800C0AF0 void BgCheck_ScenePolygonListsInsertSorted(BgCheckContext* bgCtxt, u16* head, BgPolygon* polygons, BgVertex* vertices, s16 index); // func_800C0BC0 void BgCheck_ScenePolygonListsInsert(BgMeshSubdivision* subdivision, BgCheckContext* bgCtxt, BgPolygon* polygons, BgVertex* vertices, s16 index); // func_800C0DE0 void func_800C0E74(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10); // func_800C0E74 diff --git a/include/structs.h b/include/structs.h index d2b335fa35..ac02689159 100644 --- a/include/structs.h +++ b/include/structs.h @@ -822,13 +822,13 @@ typedef struct { /* 0x4 */ u16 vertB; // upper 3 bits contain flags /* 0x6 */ u16 vertC; /* 0x8 */ Vector3s normal; -/* 0xE */ UNK_TYPE1 padE[0x2]; +/* 0xE */ s16 unkE; } BgPolygon; typedef struct { /* 0x0 */ BgPolygonLinkedListNode* nodes; /* 0x4 */ u32 nextFreeNode; -/* 0x8 */ u32 maxNodes; +/* 0x8 */ s32 maxNodes; } BgPolygonLinkedList; typedef struct { diff --git a/include/variables.h b/include/variables.h index 0a8f9d583c..006edd3aa4 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3902,12 +3902,12 @@ extern UNK_TYPE1 D_801ED930; // D_801ED930 extern UNK_TYPE1 D_801ED940; // D_801ED940 extern UNK_TYPE1 D_801ED950; // D_801ED950 extern UNK_TYPE1 D_801ED9A0; // D_801ED9A0 -extern UNK_TYPE1 D_801ED9F0; // D_801ED9F0 -extern UNK_TYPE1 D_801ED9FC; // D_801ED9FC -extern UNK_TYPE1 D_801EDA08; // D_801EDA08 -extern UNK_TYPE1 D_801EDA18; // D_801EDA18 -extern UNK_TYPE1 D_801EDA24; // D_801EDA24 -extern UNK_TYPE1 D_801EDA30; // D_801EDA30 +extern Vector3f D_801ED9F0; // D_801ED9F0 +extern Vector3f D_801ED9FC; // D_801ED9FC +extern Vector3f D_801EDA08; // D_801EDA08 +extern Vector3f D_801EDA18; // D_801EDA18 +extern Vector3f D_801EDA24; // D_801EDA24 +extern Vector3f D_801EDA30; // D_801EDA30 extern z_Matrix D_801EDA40; // D_801EDA40 extern ColTriParams D_801EDA80; // D_801EDA80 extern UNK_TYPE1 D_801EDAF8; // D_801EDAF8 diff --git a/linker_scripts/code_script.txt b/linker_scripts/code_script.txt index 385c423023..df43fbb2cf 100644 --- a/linker_scripts/code_script.txt +++ b/linker_scripts/code_script.txt @@ -320,7 +320,7 @@ SECTIONS build/asm/z_DLF.o(.text) build/src/code/z_actor.o(.text) build/asm/code_0x800BF9A0.o(.text) - build/asm/z_bgcheck.o(.text) + build/src/code/z_bgcheck.o(.text) build/src/code/code_0x800CAAD0.o(.text) build/src/code/code_0x800CAE10.o(.text) build/asm/code_0x800CB000.o(.text) diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c new file mode 100644 index 0000000000..b085efc178 --- /dev/null +++ b/src/code/z_bgcheck.c @@ -0,0 +1,432 @@ +#include +#include + +void BgCheck_PolygonLinkedListNodeInit(BgPolygonLinkedListNode* node, s16* polyIndex, u16 next) { + node->polyIndex = *polyIndex; + node->next = next; +} + +void BgCheck_PolygonLinkedListResetHead(u16* head) { + *head = 0xFFFF; +} + +void BgCheck_ScenePolygonListsNodeInsert(BgScenePolygonLists* list, u16* head, s16* polyIndex) { + u16 index; + + index = BgCheck_ScenePolygonListsReserveNode(list); + BgCheck_PolygonLinkedListNodeInit(&list->nodes[index], polyIndex, *head); + *head = index; +} + +void BgCheck_PolygonLinkedListNodeInsert(BgPolygonLinkedList* list, u16* head, s16* polyIndex) { + u16 index; + + index = BgCheck_AllocPolygonLinkedListNode(list); + BgCheck_PolygonLinkedListNodeInit(&list->nodes[index], polyIndex, *head); + *head = index; +} + +void BgCheck_PolygonLinkedListInit(GlobalContext* ctxt, BgPolygonLinkedList* list) { + list->nodes = NULL; + list->nextFreeNode = 0; +} + +void BgCheck_PolygonLinkedListAlloc(GlobalContext* ctxt, BgPolygonLinkedList* list, u32 numNodes) { + list->nodes = (BgPolygonLinkedListNode*)GameStateHeap_AllocFromEndAligned(&ctxt->common.heap, numNodes << 2, 0xfffffffe); + list->maxNodes = numNodes; + list->nextFreeNode = 0; +} + +void BgCheck_PolygonLinkedListReset(BgPolygonLinkedList* list) { + list->nextFreeNode = 0; +} + +u16 BgCheck_AllocPolygonLinkedListNode(BgPolygonLinkedList* list) { + u16 index; + + index = list->nextFreeNode++; + if (list->maxNodes <= index) { + return 0xffff; + } + + return index; +} + +void BgCheck_CreateVec3fFromVertex(BgVertex* vertex, Vector3f* vector) { + vector->x = vertex->pos.x; + vector->y = vertex->pos.y; + vector->z = vertex->pos.z; +} + +void BgCheck_CreateVertexFromVec3f(BgVertex* vertex, Vector3f* vector) { + vertex->pos.x = vector->x; + vertex->pos.y = vector->y; + vertex->pos.z = vector->z; +} + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800BFD84.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800BFDEC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_PolygonGetMinY.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C003C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C0094.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C01B8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_CreateColTriParamsFromPolygon.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C02C0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C0340.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C0474.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C0668.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C06A8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C074C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C07F0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C0AF0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ScenePolygonListsInsertSorted.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ScenePolygonListsInsert.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C0E74.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C10FC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C1238.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C12A4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C1B68.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C1D7C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C2008.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C20F4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C2310.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C2460.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C2514.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C25E0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetPolyMinSubdivisions.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetPolyMaxSubdivisions.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetPolyMinMaxSubdivisions.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C2BE0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_SplitScenePolygonsIntoSubdivisions.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetIsDefaultSpecialScene.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetSpecialSceneMaxMemory.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_CalcSubdivisionSize.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetSpecialSceneMaxObjects.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_Init.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C3C00.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C3C14.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetActorMeshHeader.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C3C94.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C3D50.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C3F40.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C3FA0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4000.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4058.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C40B4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C411C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4188.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C41E4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4240.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C42A8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4314.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C43CC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4488.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C44F0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C455C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C45C4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4C74.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4CD8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4D3C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4DA4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4E10.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4F38.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4F84.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C4FD4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5464.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C54AC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5538.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C55C4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5650.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C56E0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C576C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C57F8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C583C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C58C8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5954.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5A20.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5A64.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ScenePolygonListsInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ScenePolygonListsAlloc.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C5B80.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ScenePolygonListsReserveNode.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshParamsInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_SetActorMeshParams.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_AreActorMeshParamsEqual.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshPolyListsHeadsInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshPolyListsInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshVerticesIndexInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshWaterboxesIndexInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshInitFromActor.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_HasActorMeshChanged.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_PolygonsInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_PolygonsAlloc.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_VerticesInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_VerticesListAlloc.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_WaterboxListInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_WaterboxListAlloc.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ActorMeshUpdateParams.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_IsActorMeshIndexValid.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_DynaInit.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_DynaAlloc.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_AddActorMesh.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetActorOfMesh.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C62BC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C6314.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C636C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C63C4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C641C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C6474.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_RemoveActorMesh.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C6554.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_CalcWaterboxDimensions.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_AddActorMeshToLists.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_ResetFlagsIfLoadedActor.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_Update.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C756C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_UpdateAllActorMeshes.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C76EC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C7974.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C7E40.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C8580.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C87D0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C8A60.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C8BD0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C8DC0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C8EEC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C90AC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C921C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9380.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_RelocateMeshHeaderPointers.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_RelocateMeshHeader.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_RelocateAllMeshHeaders.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9640.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/BgCheck_GetPolygonAttributes.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9704.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9728.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9770.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C97F8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9844.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C98CC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9924.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C99AC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C99D4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C99FC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9A24.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9A4C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9A7C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9AB0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9AE4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9B18.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9B40.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9B68.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9B90.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9BB8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9BDC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9C24.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9C74.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9C9C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9CC4.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9CEC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9D14.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9D50.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9D8C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9DDC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9E18.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9E40.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9E88.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800C9EBC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA1AC.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA1E8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA22C.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA568.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA634.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA648.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA6B8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA6D8.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA6F0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CA9D0.asm") + +GLOBAL_ASM("./asm/non_matchings/z_bgcheck/func_800CAA14.asm") + diff --git a/tables/functions.txt b/tables/functions.txt index 3702b5f4a4..1cd280e832 100644 --- a/tables/functions.txt +++ b/tables/functions.txt @@ -553,7 +553,7 @@ 0x800AE5E4:("func_800AE5E4","void","void"), 0x800AE778:("func_800AE778","void","GlobalContext* ctxt, ColorRGBA8* color, short param_3, short param_4"), 0x800AE8EC:("func_800AE8EC","void","GlobalContext* ctxt"), - 0x800AE930:("func_800AE930","void","BgCheckContext* bgCtxt, int param_2, float* param_3, float param_4, short param_5, int param_6, int param_7"), + 0x800AE930:("func_800AE930","void","BgCheckContext* bgCtxt, int param_2, float* param_3, float param_4, short param_5, BgPolygon* param_6, int param_7"), 0x800AEF44:("func_800AEF44","void","void"), 0x800AEF70:("func_800AEF70","void","void"), 0x800AEFA0:("func_800AEFA0","void","void"), @@ -908,31 +908,31 @@ 0x800BFA78:("func_800BFA78","s32","s32 param_1, s32 param_2"), 0x800BFAE8:("func_800BFAE8","void","void"), 0x800BFB40:("func_800BFB40","void","void"), - 0x800BFB80:("BgCheck_PolygonLinkedListNodeInit","void","BgPolygonLinkedListNode* node, s16* next, s16 polyIndex"), - 0x800BFB9C:("BgCheck_PolygonLinkedListResetHead","void","s16* head"), - 0x800BFBAC:("BgCheck_ScenePolygonListsNodeInsert","void","BgScenePolygonLists* list, u16* head, s32 polyIndex"), - 0x800BFC04:("BgCheck_PolygonLinkedListNodeInsert","void","BgPolygonLinkedList* list, s16* head, s32 polyIndex"), + 0x800BFB80:("BgCheck_PolygonLinkedListNodeInit","void","BgPolygonLinkedListNode* node, s16* polyIndex, u16 next"), + 0x800BFB9C:("BgCheck_PolygonLinkedListResetHead","void","u16* head"), + 0x800BFBAC:("BgCheck_ScenePolygonListsNodeInsert","void","BgScenePolygonLists* list, u16* head, s16* polyIndex"), + 0x800BFC04:("BgCheck_PolygonLinkedListNodeInsert","void","BgPolygonLinkedList* list, u16* head, s16* polyIndex"), 0x800BFC5C:("BgCheck_PolygonLinkedListInit","void","GlobalContext* ctxt, BgPolygonLinkedList* list"), 0x800BFC70:("BgCheck_PolygonLinkedListAlloc","void","GlobalContext* ctxt, BgPolygonLinkedList* list, u32 numNodes"), 0x800BFCC0:("BgCheck_PolygonLinkedListReset","void","BgPolygonLinkedList* list"), - 0x800BFCCC:("BgCheck_AllocPolygonLinkedListNode","s16","BgPolygonLinkedList* attributes"), + 0x800BFCCC:("BgCheck_AllocPolygonLinkedListNode","u16","BgPolygonLinkedList* list"), 0x800BFCFC:("BgCheck_CreateVec3fFromVertex","void","BgVertex* vertex, Vector3f* vector"), 0x800BFD40:("BgCheck_CreateVertexFromVec3f","void","BgVertex* vertex, Vector3f* vector"), - 0x800BFD84:("func_800BFD84","void","void"), - 0x800BFDEC:("func_800BFDEC","void","void"), + 0x800BFD84:("func_800BFD84","float","BgPolygon* polygon, float param_2, float param_3"), + 0x800BFDEC:("func_800BFDEC","int","BgPolygon* param_1, BgPolygon* param_2, unsigned int* param_3, unsigned int* param_4"), 0x800BFFC4:("BgCheck_PolygonGetMinY","s32","BgPolygon* polygons, BgVertex* vertices"), - 0x800C003C:("func_800C003C","void","void"), - 0x800C0094:("func_800C0094","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"), - 0x800C01B8:("func_800C01B8","void","void"), + 0x800C003C:("BgCheck_PolygonGetNormal","void","BgPolygon* polygon, f32* normalX, f32* normalY, f32* normalZ"), + 0x800C0094:("func_800C0094","void","BgPolygon* param_1, f32 xOffset, f32 yOffset, f32 zOffset, z_Matrix* matrix"), + 0x800C01B8:("func_800C01B8","f32","BgPolygon* param_1, Vector3f* param_2"), 0x800C0220:("BgCheck_CreateColTriParamsFromPolygon","void","BgPolygon* polygon, BgVertex* vertices, ColTriParams* tri"), 0x800C02C0:("func_800C02C0","void","BgPolygon* poly, s32 index, BgCheckContext* bgCtxt, ColTriParams* tri"), - 0x800C0340:("func_800C0340","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"), - 0x800C0474:("func_800C0474","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"), + 0x800C0340:("func_800C0340","void","BgPolygon* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"), + 0x800C0474:("func_800C0474","UNK_TYPE4","BgPolygon* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"), 0x800C0668:("func_800C0668","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"), 0x800C06A8:("func_800C06A8","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"), 0x800C074C:("func_800C074C","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"), 0x800C07F0:("func_800C07F0","void","void"), - 0x800C0AF0:("func_800C0AF0","void","void"), + 0x800C0AF0:("BgCheck_PolygonCollidesWithSphere","void","BgPolygon* polygon, BgVertex* verticies, Vector3f* pos, f32 readius"), 0x800C0BC0:("BgCheck_ScenePolygonListsInsertSorted","void","BgCheckContext* bgCtxt, u16* head, BgPolygon* polygons, BgVertex* vertices, s16 index"), 0x800C0DE0:("BgCheck_ScenePolygonListsInsert","void","BgMeshSubdivision* subdivision, BgCheckContext* bgCtxt, BgPolygon* polygons, BgVertex* vertices, s16 index"), 0x800C0E74:("func_800C0E74","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10"), diff --git a/tables/variables.txt b/tables/variables.txt index d8825519c9..7060fbd609 100644 --- a/tables/variables.txt +++ b/tables/variables.txt @@ -4021,12 +4021,12 @@ 0x801ED940:("D_801ED940","UNK_TYPE1","",0x1), 0x801ED950:("D_801ED950","UNK_TYPE1","",0x1), 0x801ED9A0:("D_801ED9A0","UNK_TYPE1","",0x1), - 0x801ED9F0:("D_801ED9F0","UNK_TYPE1","",0x1), - 0x801ED9FC:("D_801ED9FC","UNK_TYPE1","",0x1), - 0x801EDA08:("D_801EDA08","UNK_TYPE1","",0x1), - 0x801EDA18:("D_801EDA18","UNK_TYPE1","",0x1), - 0x801EDA24:("D_801EDA24","UNK_TYPE1","",0x1), - 0x801EDA30:("D_801EDA30","UNK_TYPE1","",0x1), + 0x801ED9F0:("D_801ED9F0","Vector3f","",0xc), + 0x801ED9FC:("D_801ED9FC","Vector3f","",0xc), + 0x801EDA08:("D_801EDA08","Vector3f","",0xc), + 0x801EDA18:("D_801EDA18","Vector3f","",0xc), + 0x801EDA24:("D_801EDA24","Vector3f","",0xc), + 0x801EDA30:("D_801EDA30","Vector3f","",0xc), 0x801EDA40:("D_801EDA40","z_Matrix","",0x40), 0x801EDA80:("D_801EDA80","ColTriParams","",0x34), 0x801EDAF8:("D_801EDAF8","UNK_TYPE1","",0x1),