Use uncached memory for room matrices

This commit is contained in:
Ryan Dwyer 2023-05-12 00:02:41 +10:00
parent 161bdd9583
commit 2e3cb7b5f9
4 changed files with 5 additions and 3 deletions

View File

@ -7,6 +7,7 @@
#include "types.h"
struct roommtx *g_RoomMtxes;
Mtx *g_RoomMtxMtxes;
s32 var80082050 = 0;
s32 g_NextRoomMtx = 0;
@ -80,7 +81,7 @@ static struct roommtx *roomTouchMtx(s32 roomnum)
roommtx->somefloat = var8005ef10[0];
roomPopulateMtx(&mtx, roomnum);
mtx00016054(&mtx, &roommtx->mtx);
mtx00016054(&mtx, (void *) &g_RoomMtxMtxes[roommtx->index]);
return roommtx;
}
@ -89,7 +90,7 @@ Gfx *roomApplyMtx(Gfx *gdl, s32 roomnum)
{
struct roommtx *roommtx = roomTouchMtx(roomnum);
gSPMatrix(gdl++, &roommtx->mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gdl++, &g_RoomMtxMtxes[roommtx->index], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
return gdl;
}

View File

@ -15,6 +15,7 @@ void roomsReset(void)
var80082050 = PLAYERCOUNT() >= 2 ? 200 : 120;
g_RoomMtxes = mempAlloc(ALIGN16(var80082050 * sizeof(struct roommtx)), MEMPOOL_STAGE);
g_RoomMtxMtxes = UNCACHED(mempAlloc(ALIGN16(var80082050 * sizeof(Mtx)), MEMPOOL_STAGE));
g_NextRoomMtx = 0;
for (i = 0; i < PLAYERCOUNT(); i++) {

View File

@ -283,6 +283,7 @@ extern s32 g_LasersightsActive;
extern bool g_StarsActive;
extern u8 g_HudmsgsActive;
extern struct roommtx *g_RoomMtxes;
extern Mtx *g_RoomMtxMtxes;
extern s32 g_NextRoomMtx;
extern s32 g_BgAlwaysRoom;
extern struct stagetableentry *g_CurrentStage;

View File

@ -6366,7 +6366,6 @@ struct xz {
};
struct roommtx {
Mtxf mtx;
u8 index;
s8 playernum;
s32 lvframe;