diff options
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/code_8006BA00.c | 4 | ||||
| -rw-r--r-- | src/code/z_actor.c | 10 | ||||
| -rw-r--r-- | src/code/z_debug_display.c | 2 | ||||
| -rw-r--r-- | src/code/z_draw.c | 6 | ||||
| -rw-r--r-- | src/code/z_eff_spark.c | 2 | ||||
| -rw-r--r-- | src/code/z_effect_soft_sprite_old_init.c | 2 | ||||
| -rw-r--r-- | src/code/z_play.c | 35 | ||||
| -rw-r--r-- | src/code/z_player_lib.c | 2 | ||||
| -rw-r--r-- | src/code/z_room.c | 2 |
9 files changed, 35 insertions, 30 deletions
diff --git a/src/code/code_8006BA00.c b/src/code/code_8006BA00.c index 6919827fb..9cc18bfa5 100644 --- a/src/code/code_8006BA00.c +++ b/src/code/code_8006BA00.c @@ -18,7 +18,7 @@ void func_8006BA30(GlobalContext* globalCtx) { if (DECR(source->countdown) == 0) { Audio_StopSfxByPos(&source->relativePos); } else { - SkinMatrix_Vec3fMtxFMultXYZ(&globalCtx->mf_11D60, &source->originPos, &source->relativePos); + SkinMatrix_Vec3fMtxFMultXYZ(&globalCtx->viewProjectionMtxF, &source->originPos, &source->relativePos); } } @@ -55,6 +55,6 @@ void Audio_PlaySoundAtPosition(GlobalContext* globalCtx, Vec3f* pos, s32 duratio source->originPos = *pos; source->countdown = duration; - SkinMatrix_Vec3fMtxFMultXYZ(&globalCtx->mf_11D60, &source->originPos, &source->relativePos); + SkinMatrix_Vec3fMtxFMultXYZ(&globalCtx->viewProjectionMtxF, &source->originPos, &source->relativePos); Audio_PlaySoundGeneral(sfxId, &source->relativePos, 4, &D_801333E0, &D_801333E0, &D_801333E8); } diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 81c973182..4fcc8ded7 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -212,7 +212,7 @@ void Actor_SetFeetPos(Actor* actor, s32 limbIndex, s32 leftFootIndex, Vec3f* lef } void func_8002BE04(GlobalContext* globalCtx, Vec3f* arg1, Vec3f* arg2, f32* arg3) { - SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->mf_11D60, arg1, arg2, arg3); + SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->viewProjectionMtxF, arg1, arg2, arg3); *arg3 = (*arg3 < 1.0f) ? 1.0f : (1.0f / *arg3); } @@ -1905,7 +1905,7 @@ void Actor_DrawFaroresWindPointer(GlobalContext* globalCtx) { ((void)0, gSaveContext.respawn[RESPAWN_MODE_TOP].pos.y) + yOffset, ((void)0, gSaveContext.respawn[RESPAWN_MODE_TOP].pos.z), MTXMODE_NEW); Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); - Matrix_Mult(&globalCtx->mf_11DA0, MTXMODE_APPLY); + Matrix_Mult(&globalCtx->billboardMtxF, MTXMODE_APPLY); Matrix_Push(); gDPPipeSync(POLY_XLU_DISP++); @@ -1955,8 +1955,8 @@ void func_800304DC(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* bzero(actorCtx, sizeof(*actorCtx)); ActorOverlayTable_Init(); - Matrix_MtxFCopy(&globalCtx->mf_11DA0, &gMtxFClear); - Matrix_MtxFCopy(&globalCtx->mf_11D60, &gMtxFClear); + Matrix_MtxFCopy(&globalCtx->billboardMtxF, &gMtxFClear); + Matrix_MtxFCopy(&globalCtx->viewProjectionMtxF, &gMtxFClear); overlayEntry = &gActorOverlayTable[0]; for (i = 0; i < ARRAY_COUNT(gActorOverlayTable); i++) { @@ -2358,7 +2358,7 @@ void func_800315AC(GlobalContext* globalCtx, ActorContext* actorCtx) { HREG(66) = i; if ((HREG(64) != 1) || ((HREG(65) != -1) && (HREG(65) != HREG(66))) || (HREG(68) == 0)) { - SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->mf_11D60, &actor->world.pos, &actor->projectedPos, + SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->viewProjectionMtxF, &actor->world.pos, &actor->projectedPos, &actor->projectedW); } diff --git a/src/code/z_debug_display.c b/src/code/z_debug_display.c index 9f33caa87..443e55319 100644 --- a/src/code/z_debug_display.c +++ b/src/code/z_debug_display.c @@ -75,7 +75,7 @@ void DebugDisplay_DrawSpriteI8(DebugDispObject* dispObj, void* texture, GlobalCo Matrix_Translate(dispObj->pos.x, dispObj->pos.y, dispObj->pos.z, MTXMODE_NEW); Matrix_Scale(dispObj->scale.x, dispObj->scale.y, dispObj->scale.z, MTXMODE_APPLY); - Matrix_Mult(&globalCtx->mf_11DA0, MTXMODE_APPLY); + Matrix_Mult(&globalCtx->billboardMtxF, MTXMODE_APPLY); Matrix_RotateZYX(dispObj->rot.x, dispObj->rot.y, dispObj->rot.z, MTXMODE_APPLY); gDPLoadTextureBlock(POLY_XLU_DISP++, texture, G_IM_FMT_I, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, diff --git a/src/code/z_draw.c b/src/code/z_draw.c index ee3b127c0..d9f63c9ad 100644 --- a/src/code/z_draw.c +++ b/src/code/z_draw.c @@ -421,7 +421,7 @@ void GetItem_DrawBlueFire(GlobalContext* globalCtx, s16 drawId) { 1 * -(globalCtx->state.frames * 8), 16, 32)); Matrix_Push(); Matrix_Translate(-8.0f, -2.0f, 0.0f, MTXMODE_APPLY); - func_800D1FD4(&globalCtx->mf_11DA0); + func_800D1FD4(&globalCtx->billboardMtxF); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_draw.c", 615), G_MTX_MODELVIEW | G_MTX_LOAD); gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]); @@ -449,7 +449,7 @@ void GetItem_DrawPoes(GlobalContext* globalCtx, s16 drawId) { 0 * (globalCtx->state.frames * 0), 16, 32, 1, 1 * (globalCtx->state.frames * 1), 1 * -(globalCtx->state.frames * 6), 16, 32)); Matrix_Push(); - func_800D1FD4(&globalCtx->mf_11DA0); + func_800D1FD4(&globalCtx->billboardMtxF); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_draw.c", 656), G_MTX_MODELVIEW | G_MTX_LOAD); gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]); @@ -478,7 +478,7 @@ void GetItem_DrawFairy(GlobalContext* globalCtx, s16 drawId) { 0 * (globalCtx->state.frames * 0), 32, 32, 1, 1 * (globalCtx->state.frames * 1), 1 * -(globalCtx->state.frames * 6), 32, 32)); Matrix_Push(); - func_800D1FD4(&globalCtx->mf_11DA0); + func_800D1FD4(&globalCtx->billboardMtxF); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_draw.c", 698), G_MTX_MODELVIEW | G_MTX_LOAD); gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]); diff --git a/src/code/z_eff_spark.c b/src/code/z_eff_spark.c index 9a37dee1f..cfe8f628f 100644 --- a/src/code/z_eff_spark.c +++ b/src/code/z_eff_spark.c @@ -210,7 +210,7 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) { SkinMatrix_SetTranslate(&spEC, elem->position.x, elem->position.y, elem->position.z); temp = ((Rand_ZeroOne() * 2.5f) + 1.5f) / 64.0f; SkinMatrix_SetScale(&spAC, temp, temp, 1.0f); - SkinMatrix_MtxFMtxFMult(&spEC, &globalCtx->mf_11DA0, &sp6C); + SkinMatrix_MtxFMtxFMult(&spEC, &globalCtx->billboardMtxF, &sp6C); SkinMatrix_MtxFMtxFMult(&sp6C, &spAC, &sp12C); vertices[j].v.ob[0] = -32; diff --git a/src/code/z_effect_soft_sprite_old_init.c b/src/code/z_effect_soft_sprite_old_init.c index 73c2aba44..adc22e762 100644 --- a/src/code/z_effect_soft_sprite_old_init.c +++ b/src/code/z_effect_soft_sprite_old_init.c @@ -56,7 +56,7 @@ void EffectSs_DrawGEffect(GlobalContext* globalCtx, EffectSs* this, void* textur scale = this->rgScale * 0.0025f; SkinMatrix_SetTranslate(&mfTrans, this->pos.x, this->pos.y, this->pos.z); SkinMatrix_SetScale(&mfScale, scale, scale, scale); - SkinMatrix_MtxFMtxFMult(&mfTrans, &globalCtx->mf_11DA0, &mfTrans11DA0); + SkinMatrix_MtxFMtxFMult(&mfTrans, &globalCtx->billboardMtxF, &mfTrans11DA0); SkinMatrix_MtxFMtxFMult(&mfTrans11DA0, &mfScale, &mfResult); gSegments[6] = VIRTUAL_TO_PHYSICAL(object); gSPSegment(POLY_XLU_DISP++, 0x06, object); diff --git a/src/code/z_play.c b/src/code/z_play.c index 8997fba8d..7e82bf3b5 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1089,18 +1089,22 @@ void Gameplay_Draw(GlobalContext* globalCtx) { func_800AA460(&globalCtx->view, globalCtx->view.fovy, globalCtx->view.zNear, globalCtx->lightCtx.fogFar); func_800AAA50(&globalCtx->view, 15); - Matrix_MtxToMtxF(&globalCtx->view.viewing, &globalCtx->mf_11DA0); - Matrix_MtxToMtxF(&globalCtx->view.projection, &globalCtx->mf_11D60); - Matrix_Mult(&globalCtx->mf_11D60, MTXMODE_NEW); - Matrix_Mult(&globalCtx->mf_11DA0, MTXMODE_APPLY); - Matrix_Get(&globalCtx->mf_11D60); - globalCtx->mf_11DA0.mf[0][3] = globalCtx->mf_11DA0.mf[1][3] = globalCtx->mf_11DA0.mf[2][3] = - globalCtx->mf_11DA0.mf[3][0] = globalCtx->mf_11DA0.mf[3][1] = globalCtx->mf_11DA0.mf[3][2] = 0.0f; - Matrix_Transpose(&globalCtx->mf_11DA0); - globalCtx->unk_11DE0 = Matrix_MtxFToMtx(Matrix_CheckFloats(&globalCtx->mf_11DA0, "../z_play.c", 4005), - Graph_Alloc(gfxCtx, sizeof(Mtx))); - - gSPSegment(POLY_OPA_DISP++, 0x01, globalCtx->unk_11DE0); + // The billboard matrix temporarily stores the viewing matrix + Matrix_MtxToMtxF(&globalCtx->view.viewing, &globalCtx->billboardMtxF); + Matrix_MtxToMtxF(&globalCtx->view.projection, &globalCtx->viewProjectionMtxF); + Matrix_Mult(&globalCtx->viewProjectionMtxF, MTXMODE_NEW); + // The billboard is still a viewing matrix at this stage + Matrix_Mult(&globalCtx->billboardMtxF, MTXMODE_APPLY); + Matrix_Get(&globalCtx->viewProjectionMtxF); + globalCtx->billboardMtxF.mf[0][3] = globalCtx->billboardMtxF.mf[1][3] = globalCtx->billboardMtxF.mf[2][3] = + globalCtx->billboardMtxF.mf[3][0] = globalCtx->billboardMtxF.mf[3][1] = globalCtx->billboardMtxF.mf[3][2] = + 0.0f; + // This transpose is where the viewing matrix is properly converted into a billboard matrix + Matrix_Transpose(&globalCtx->billboardMtxF); + globalCtx->billboardMtx = Matrix_MtxFToMtx(Matrix_CheckFloats(&globalCtx->billboardMtxF, "../z_play.c", 4005), + Graph_Alloc(gfxCtx, sizeof(Mtx))); + + gSPSegment(POLY_OPA_DISP++, 0x01, globalCtx->billboardMtx); if ((HREG(80) != 10) || (HREG(92) != 0)) { Gfx* gfxP; @@ -1487,11 +1491,12 @@ void Gameplay_SpawnScene(GlobalContext* globalCtx, s32 sceneNum, s32 spawn) { void func_800C016C(GlobalContext* globalCtx, Vec3f* src, Vec3f* dest) { f32 temp; - Matrix_Mult(&globalCtx->mf_11D60, MTXMODE_NEW); + Matrix_Mult(&globalCtx->viewProjectionMtxF, MTXMODE_NEW); Matrix_MultVec3f(src, dest); - temp = globalCtx->mf_11D60.ww + - (globalCtx->mf_11D60.wx * src->x + globalCtx->mf_11D60.wy * src->y + globalCtx->mf_11D60.wz * src->z); + temp = globalCtx->viewProjectionMtxF.ww + + (globalCtx->viewProjectionMtxF.wx * src->x + globalCtx->viewProjectionMtxF.wy * src->y + + globalCtx->viewProjectionMtxF.wz * src->z); dest->x = 160.0f + ((dest->x / temp) * 160.0f); dest->y = 120.0f - ((dest->y / temp) * 120.0f); diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 3625d5062..50667d026 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1116,7 +1116,7 @@ void func_80090AFC(GlobalContext* globalCtx, Player* this, f32 arg2) { OVERLAY_DISP = Gfx_CallSetupDL(OVERLAY_DISP, 0x07); - SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->mf_11D60, &sp74, &sp68, &sp64); + SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->viewProjectionMtxF, &sp74, &sp68, &sp64); sp60 = (sp64 < 200.0f) ? 0.08f : (sp64 / 200.0f) * 0.08f; diff --git a/src/code/z_room.c b/src/code/z_room.c index 061e37a17..c25c755a4 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -125,7 +125,7 @@ void func_80095D04(GlobalContext* globalCtx, Room* room, u32 flags) { sp90.x = polygonDlist->pos.x; sp90.y = polygonDlist->pos.y; sp90.z = polygonDlist->pos.z; - SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->mf_11D60, &sp90, &sp84, &sp80); + SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->viewProjectionMtxF, &sp90, &sp84, &sp80); if (-(f32)polygonDlist->unk_06 < sp84.z) { temp_f2 = sp84.z - polygonDlist->unk_06; if (temp_f2 < globalCtx->lightCtx.fogFar) { |
