summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorKenix3 <kenixwhisperwind@gmail.com>2021-04-29 18:56:18 -0400
committerGitHub <noreply@github.com>2021-04-29 18:56:18 -0400
commitc40bb119e1f64972e6a0879110826c455a28437b (patch)
treefb1a29a657a985bcd707004a31d43086310d9d95 /src/code
parente97f10a6fa573e8b817ed03a4674d52b1818dafa (diff)
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 <Uberpanzermensch@gmail.com>
Diffstat (limited to 'src/code')
-rw-r--r--src/code/code_0x800CAAD0.c40
-rw-r--r--src/code/code_0x800CAE10.c4
-rw-r--r--src/code/z_bgcheck.c52
-rw-r--r--src/code/z_scene.c24
-rw-r--r--src/code/z_vr_box.c20
5 files changed, 70 insertions, 70 deletions
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 <ultra64.h>
#include <global.h>
-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);
}