diff options
| author | rozlette <uberpanzermensch@gmail.com> | 2020-03-01 19:17:22 -0600 |
|---|---|---|
| committer | rozlette <uberpanzermensch@gmail.com> | 2020-03-01 19:17:22 -0600 |
| commit | d4d8f58636a65633275bfbb793167116b6b67cae (patch) | |
| tree | 3f4b029ad60bf51269055ac6a0cf9ead9204ea42 /src/code | |
| parent | 74c1dc21450faeb2f1d0eb76ab94c6e4dcb2001c (diff) | |
Start on z_bgcheck.c
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_bgcheck.c | 432 |
1 files changed, 432 insertions, 0 deletions
diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c new file mode 100644 index 000000000..b085efc17 --- /dev/null +++ b/src/code/z_bgcheck.c @@ -0,0 +1,432 @@ +#include <ultra64.h> +#include <global.h> + +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") + |
