From c40bb119e1f64972e6a0879110826c455a28437b Mon Sep 17 00:00:00 2001 From: Kenix3 Date: Thu, 29 Apr 2021 18:56:18 -0400 Subject: Adds in scene support (#117) * 1 scene done, Z2_SOUGEN OK * All scenes OK * Makefile improvements * Use WIP ZAPD branch as submodule * Add spawn rotation flag macro * Fix bad merge * Move scenes to be in their own subfolders * Rename and restructure extracted baserom files * Progress tracking for assets * Add asset progress to csv * Use master ZAPD * Use distclean like in OOT * Fix up a few things with the makefile * Fix scenes not being dumped from ELF Co-authored-by: Rozelette --- src/code/code_0x800CAAD0.c | 40 +++++++++++++++++------------------ src/code/code_0x800CAE10.c | 4 ++-- src/code/z_bgcheck.c | 52 +++++++++++++++++++++++----------------------- src/code/z_scene.c | 24 ++++++++++----------- src/code/z_vr_box.c | 20 +++++++++--------- 5 files changed, 70 insertions(+), 70 deletions(-) (limited to 'src/code') diff --git a/src/code/code_0x800CAAD0.c b/src/code/code_0x800CAAD0.c index a910156c0..edd623ca5 100644 --- a/src/code/code_0x800CAAD0.c +++ b/src/code/code_0x800CAAD0.c @@ -15,28 +15,28 @@ void BgCheck2_UpdateActorPosition(CollisionContext* bgCtxt, s32 index, Actor* ac if (BgCheck_IsActorMeshIndexValid(index) == 0) return; SkinMatrix_SetScaleRotateYRPTranslate(&prevMatrix, - bgCtxt->dyna.actorMeshArr[index].prevParams.scale.x, - bgCtxt->dyna.actorMeshArr[index].prevParams.scale.y, - bgCtxt->dyna.actorMeshArr[index].prevParams.scale.z, - bgCtxt->dyna.actorMeshArr[index].prevParams.rotation.x, - bgCtxt->dyna.actorMeshArr[index].prevParams.rotation.y, - bgCtxt->dyna.actorMeshArr[index].prevParams.rotation.z, - bgCtxt->dyna.actorMeshArr[index].prevParams.pos.x, - bgCtxt->dyna.actorMeshArr[index].prevParams.pos.y, - bgCtxt->dyna.actorMeshArr[index].prevParams.pos.z); + bgCtxt->dyna.bgActors[index].prevTransform.scale.x, + bgCtxt->dyna.bgActors[index].prevTransform.scale.y, + bgCtxt->dyna.bgActors[index].prevTransform.scale.z, + bgCtxt->dyna.bgActors[index].prevTransform.rot.x, + bgCtxt->dyna.bgActors[index].prevTransform.rot.y, + bgCtxt->dyna.bgActors[index].prevTransform.rot.z, + bgCtxt->dyna.bgActors[index].prevTransform.pos.x, + bgCtxt->dyna.bgActors[index].prevTransform.pos.y, + bgCtxt->dyna.bgActors[index].prevTransform.pos.z); if (SkinMatrix_Invert(&prevMatrix, &prevMatrixInv) == 2) return; SkinMatrix_SetScaleRotateYRPTranslate(&currMatrix, - bgCtxt->dyna.actorMeshArr[index].currParams.scale.x, - bgCtxt->dyna.actorMeshArr[index].currParams.scale.y, - bgCtxt->dyna.actorMeshArr[index].currParams.scale.z, - bgCtxt->dyna.actorMeshArr[index].currParams.rotation.x, - bgCtxt->dyna.actorMeshArr[index].currParams.rotation.y, - bgCtxt->dyna.actorMeshArr[index].currParams.rotation.z, - bgCtxt->dyna.actorMeshArr[index].currParams.pos.x, - bgCtxt->dyna.actorMeshArr[index].currParams.pos.y, - bgCtxt->dyna.actorMeshArr[index].currParams.pos.z); + bgCtxt->dyna.bgActors[index].curTransform.scale.x, + bgCtxt->dyna.bgActors[index].curTransform.scale.y, + bgCtxt->dyna.bgActors[index].curTransform.scale.z, + bgCtxt->dyna.bgActors[index].curTransform.rot.x, + bgCtxt->dyna.bgActors[index].curTransform.rot.y, + bgCtxt->dyna.bgActors[index].curTransform.rot.z, + bgCtxt->dyna.bgActors[index].curTransform.pos.x, + bgCtxt->dyna.bgActors[index].curTransform.pos.y, + bgCtxt->dyna.bgActors[index].curTransform.pos.z); SkinMatrix_Vec3fMtxFMultXYZ(&prevMatrixInv, &actor->world.pos, &posWithInv); SkinMatrix_Vec3fMtxFMultXYZ(&currMatrix, &posWithInv, &newPos); @@ -49,7 +49,7 @@ void BgCheck2_UpdateActorYRotation(CollisionContext* bgCtxt, s32 index, Actor* a if (BgCheck_IsActorMeshIndexValid(index) == 0) return; - angleChange = bgCtxt->dyna.actorMeshArr[index].currParams.rotation.y - bgCtxt->dyna.actorMeshArr[index].prevParams.rotation.y; + angleChange = bgCtxt->dyna.bgActors[index].curTransform.rot.y - bgCtxt->dyna.bgActors[index].prevTransform.rot.y; if (actor->id == 0) { ((ActorPlayer*)actor)->unkAD4 += angleChange; @@ -83,7 +83,7 @@ u32 BgCheck2_UpdateActorAttachedToMesh(CollisionContext* bgCtxt, s32 index, Acto if (BgCheck_IsActorMeshIndexValid(index) == 0) return 0; - if (((bgCtxt->dyna.flags[index] & 2) != 0) || ((bgCtxt->dyna.flags[index] & 1) == 0)) return 0; + if (((bgCtxt->dyna.bgActorFlags[index] & 2) != 0) || ((bgCtxt->dyna.bgActorFlags[index] & 1) == 0)) return 0; meshActor = BgCheck_GetActorOfMesh(bgCtxt,index); diff --git a/src/code/code_0x800CAE10.c b/src/code/code_0x800CAE10.c index 194d779b8..7db9f6396 100644 --- a/src/code/code_0x800CAE10.c +++ b/src/code/code_0x800CAE10.c @@ -9,8 +9,8 @@ void BcCheck3_BgActorInit(DynaPolyActor* actor, UNK_TYPE4 param_2) { actor->unk_158 = 0; } -void BgCheck3_LoadMesh(GlobalContext* ctxt, DynaPolyActor* actor, BgMeshHeader* meshHeader) { - BgMeshHeader* header; +void BgCheck3_LoadMesh(GlobalContext* ctxt, DynaPolyActor* actor, CollisionHeader* meshHeader) { + CollisionHeader* header; header = NULL; BgCheck_RelocateMeshHeader(meshHeader, &header); diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 2cd6522f3..b1ff44387 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1,8 +1,8 @@ #include #include -void BgCheck_PolygonLinkedListNodeInit(BgPolygonLinkedListNode* node, s16* polyIndex, u16 next) { - node->polyIndex = *polyIndex; +void BgCheck_PolygonLinkedListNodeInit(SSNode* node, s16* polyIndex, u16 next) { + node->polyId = *polyIndex; node->next = next; } @@ -10,58 +10,58 @@ void BgCheck_PolygonLinkedListResetHead(u16* head) { *head = 0xFFFF; } -void BgCheck_ScenePolygonListsNodeInsert(BgScenePolygonLists* list, u16* head, s16* polyIndex) { +void BgCheck_ScenePolygonListsNodeInsert(SSNodeList* list, u16* head, s16* polyIndex) { u16 index; index = BgCheck_ScenePolygonListsReserveNode(list); - BgCheck_PolygonLinkedListNodeInit(&list->nodes[index], polyIndex, *head); + BgCheck_PolygonLinkedListNodeInit(&list->tbl[index], polyIndex, *head); *head = index; } -void BgCheck_PolygonLinkedListNodeInsert(BgPolygonLinkedList* list, u16* head, s16* polyIndex) { +void BgCheck_PolygonLinkedListNodeInsert(DynaSSNodeList* list, u16* head, s16* polyIndex) { u16 index; index = BgCheck_AllocPolygonLinkedListNode(list); - BgCheck_PolygonLinkedListNodeInit(&list->nodes[index], polyIndex, *head); + BgCheck_PolygonLinkedListNodeInit(&list->tbl[index], polyIndex, *head); *head = index; } -void BgCheck_PolygonLinkedListInit(GlobalContext* ctxt, BgPolygonLinkedList* list) { - list->nodes = NULL; - list->nextFreeNode = 0; +void BgCheck_PolygonLinkedListInit(GlobalContext* ctxt, DynaSSNodeList* list) { + list->tbl = NULL; + list->count = 0; } -void BgCheck_PolygonLinkedListAlloc(GlobalContext* ctxt, BgPolygonLinkedList* list, u32 numNodes) { - list->nodes = (BgPolygonLinkedListNode*)THA_AllocEndAlign(&ctxt->state.heap, numNodes << 2, 0xfffffffe); - list->maxNodes = numNodes; - list->nextFreeNode = 0; +void BgCheck_PolygonLinkedListAlloc(GlobalContext* ctxt, DynaSSNodeList* list, u32 numNodes) { + list->tbl = (SSNode*)THA_AllocEndAlign(&ctxt->state.heap, numNodes << 2, 0xfffffffe); + list->max = numNodes; + list->count = 0; } -void BgCheck_PolygonLinkedListReset(BgPolygonLinkedList* list) { - list->nextFreeNode = 0; +void BgCheck_PolygonLinkedListReset(DynaSSNodeList* list) { + list->count = 0; } -u16 BgCheck_AllocPolygonLinkedListNode(BgPolygonLinkedList* list) { +u16 BgCheck_AllocPolygonLinkedListNode(DynaSSNodeList* list) { u16 index; - index = list->nextFreeNode++; - if (list->maxNodes <= index) { + index = list->count++; + if (list->max <= index) { return 0xffff; } return index; } -void BgCheck_CreateVec3fFromVertex(BgVertex* vertex, Vec3f* vector) { - vector->x = vertex->pos.x; - vector->y = vertex->pos.y; - vector->z = vertex->pos.z; +void BgCheck_CreateVec3fFromVertex(Vec3s* vertex, Vec3f* vector) { + vector->x = vertex->x; + vector->y = vertex->y; + vector->z = vertex->z; } -void BgCheck_CreateVertexFromVec3f(BgVertex* vertex, Vec3f* vector) { - vertex->pos.x = vector->x; - vertex->pos.y = vector->y; - vertex->pos.z = vector->z; +void BgCheck_CreateVertexFromVec3f(Vec3s* vertex, Vec3f* vector) { + vertex->x = vector->x; + vertex->y = vector->y; + vertex->z = vector->z; } #pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/func_800BFD84.asm") diff --git a/src/code/z_scene.c b/src/code/z_scene.c index bd5b40d32..fa8137f3d 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -192,21 +192,21 @@ void Scene_HeaderCommand02(GlobalContext* ctxt, SceneCmd* entry) { // Scene Command 0x03: Collision Header void Scene_HeaderCommand03(GlobalContext* ctxt, SceneCmd* entry) { - BgMeshHeader* temp_ret; - BgMeshHeader* temp_s0; + CollisionHeader* temp_ret; + CollisionHeader* temp_s0; - temp_ret = (BgMeshHeader*)Lib_SegmentedToVirtual(entry->colHeader.segment); + temp_ret = (CollisionHeader*)Lib_SegmentedToVirtual(entry->colHeader.segment); temp_s0 = temp_ret; - temp_s0->vertices = (BgVertex*)Lib_SegmentedToVirtual(temp_ret->vertices); - temp_s0->polygons = (CollisionPoly*)Lib_SegmentedToVirtual(temp_s0->polygons); - if (temp_s0->attributes != 0) { - temp_s0->attributes = (BgPolygonAttributes*)Lib_SegmentedToVirtual(temp_s0->attributes); + temp_s0->vtxList = (Vec3s*)Lib_SegmentedToVirtual(temp_ret->vtxList); + temp_s0->polyList = (CollisionPoly*)Lib_SegmentedToVirtual(temp_s0->polyList); + if (temp_s0->surfaceTypeList != 0) { + temp_s0->surfaceTypeList = (SurfaceType*)Lib_SegmentedToVirtual(temp_s0->surfaceTypeList); } - if (temp_s0->cameraData != 0) { - temp_s0->cameraData = (void*)Lib_SegmentedToVirtual(temp_s0->cameraData); + if (temp_s0->cameraDataList != 0) { + temp_s0->cameraDataList = (void*)Lib_SegmentedToVirtual(temp_s0->cameraDataList); } - if (temp_s0->waterboxes != 0) { - temp_s0->waterboxes = (BgWaterBox*)Lib_SegmentedToVirtual(temp_s0->waterboxes); + if (temp_s0->waterBoxes != 0) { + temp_s0->waterBoxes = (WaterBox*)Lib_SegmentedToVirtual(temp_s0->waterBoxes); } BgCheck_Init(&ctxt->colCtx, ctxt, temp_s0); @@ -215,7 +215,7 @@ void Scene_HeaderCommand03(GlobalContext* ctxt, SceneCmd* entry) { // Scene Command 0x04: Room List void Scene_HeaderCommand04(GlobalContext* ctxt, SceneCmd* entry) { ctxt->numRooms = entry->roomList.num; - ctxt->roomList = (RoomFileLocation*)Lib_SegmentedToVirtual(entry->roomList.segment); + ctxt->roomList = (RomFile*)Lib_SegmentedToVirtual(entry->roomList.segment); } // Scene Command 0x06: Entrance List diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index 46fb02935..363d5ea17 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -97,16 +97,16 @@ void func_80143324(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skyTy if (globalCtx->kankyoContext.unk10 == 0) { // Send a DMA request for the clear sky texture - size = (u32)_vr_fine_staticSegmentRomEnd - (u32)_vr_fine_staticSegmentRomStart; + size = (u32)_d2_fine_staticSegmentRomEnd - (u32)_d2_fine_staticSegmentRomStart; DmaMgr_SendRequestImpl(&skyboxCtx->unk188, skyboxCtx->skyboxStaticSegment[0], - (u32)_vr_fine_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); + (u32)_d2_fine_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); } else { // Send a DMA request for the cloudy sky texture - size = (u32)_vr_cloud_staticSegmentRomEnd - (u32)_vr_cloud_staticSegmentRomStart; + size = (u32)_d2_cloud_staticSegmentRomEnd - (u32)_d2_cloud_staticSegmentRomStart; DmaMgr_SendRequestImpl(&skyboxCtx->unk188, skyboxCtx->skyboxStaticSegment[0], - (u32)_vr_cloud_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); + (u32)_d2_cloud_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); } osRecvMesg(&skyboxCtx->loadQueue, NULL, 1); @@ -114,26 +114,26 @@ void func_80143324(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skyTy if (globalCtx->kankyoContext.unk11 == 0) { // Send a DMA request for the clear sky texture - size = (u32)_vr_fine_staticSegmentRomEnd - (u32)_vr_fine_staticSegmentRomStart; + size = (u32)_d2_fine_staticSegmentRomEnd - (u32)_d2_fine_staticSegmentRomStart; DmaMgr_SendRequestImpl(&skyboxCtx->unk1A8, skyboxCtx->skyboxStaticSegment[1], - (u32)_vr_fine_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); + (u32)_d2_fine_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); } else { // Send a DMA request for the cloudy sky texture - size = (u32)_vr_cloud_staticSegmentRomEnd - (u32)_vr_cloud_staticSegmentRomStart; + size = (u32)_d2_cloud_staticSegmentRomEnd - (u32)_d2_cloud_staticSegmentRomStart; DmaMgr_SendRequestImpl(&skyboxCtx->unk1A8, skyboxCtx->skyboxStaticSegment[1], - (u32)_vr_cloud_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); + (u32)_d2_cloud_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); } osRecvMesg(&skyboxCtx->loadQueue, NULL, 1); osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); - size = (u32)_vr_pal_staticSegmentRomEnd - (u32)_vr_pal_staticSegmentRomStart; + size = (u32)_d2_fine_pal_staticSegmentRomEnd - (u32)_d2_fine_pal_staticSegmentRomStart; // Send a DMA request for the skybox palette DmaMgr_SendRequestImpl(&skyboxCtx->unk1C8, skyboxCtx->skyboxPaletteStaticSegment, - (u32)_vr_pal_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); + (u32)_d2_fine_pal_staticSegmentRomStart, size, 0, &skyboxCtx->loadQueue, NULL); osRecvMesg(&skyboxCtx->loadQueue, NULL, 1); } -- cgit v1.2.3