all repos — mgba @ 2e4597c0e86f7f11685dfe37cd87c00a6f1a55f4

mGBA Game Boy Advance Emulator

DS GX: Synchronize vector and position matrices always
Vicki Pfau vi@endrift.com
Thu, 23 Mar 2017 10:29:50 -0700
commit

2e4597c0e86f7f11685dfe37cd87c00a6f1a55f4

parent

dbe6f5af851d091cc36ff04117272fce94ad359a

1 files changed, 3 insertions(+), 9 deletions(-)

jump to
M src/ds/gx.csrc/ds/gx.c

@@ -693,10 +693,9 @@ case 0:

memcpy(&gx->projMatrixStack, &gx->projMatrix, sizeof(gx->projMatrix)); ++projMatrixPointer; break; + case 1: case 2: memcpy(&gx->vecMatrixStack[gx->pvMatrixPointer & 0x1F], &gx->vecMatrix, sizeof(gx->vecMatrix)); - // Fall through - case 1: memcpy(&gx->posMatrixStack[gx->pvMatrixPointer & 0x1F], &gx->posMatrix, sizeof(gx->posMatrix)); ++gx->pvMatrixPointer; break;

@@ -715,9 +714,6 @@ projMatrixPointer -= offset;

memcpy(&gx->projMatrix, &gx->projMatrixStack, sizeof(gx->projMatrix)); break; case 1: - gx->pvMatrixPointer -= offset; - memcpy(&gx->posMatrix, &gx->posMatrixStack[gx->pvMatrixPointer & 0x1F], sizeof(gx->posMatrix)); - break; case 2: gx->pvMatrixPointer -= offset; memcpy(&gx->vecMatrix, &gx->vecMatrixStack[gx->pvMatrixPointer & 0x1F], sizeof(gx->vecMatrix));

@@ -737,10 +733,9 @@ switch (gx->mtxMode) {

case 0: memcpy(&gx->projMatrixStack, &gx->projMatrix, sizeof(gx->projMatrixStack)); break; + case 1: case 2: memcpy(&gx->vecMatrixStack[offset], &gx->vecMatrix, sizeof(gx->vecMatrix)); - // Fall through - case 1: memcpy(&gx->posMatrixStack[offset], &gx->posMatrix, sizeof(gx->posMatrix)); break; case 3:

@@ -756,10 +751,9 @@ switch (gx->mtxMode) {

case 0: memcpy(&gx->projMatrix, &gx->projMatrixStack, sizeof(gx->projMatrix)); break; + case 1: case 2: memcpy(&gx->vecMatrix, &gx->vecMatrixStack[offset], sizeof(gx->vecMatrix)); - // Fall through - case 1: memcpy(&gx->posMatrix, &gx->posMatrixStack[offset], sizeof(gx->posMatrix)); break; case 3: