all repos — mgba @ 938c2f84b814337997363a9be6b171d1f38d23e0

mGBA Game Boy Advance Emulator

DS GX: Clean up box test
Vicki Pfau vi@endrift.com
Fri, 24 Mar 2017 12:44:52 -0700
commit

938c2f84b814337997363a9be6b171d1f38d23e0

parent

68a0b5f48e3ec57c11f88d46b299459225413b23

1 files changed, 5 insertions(+), 28 deletions(-)

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

@@ -539,35 +539,12 @@ }

} static bool _boxTestVertex(struct DSGX* gx, struct DSGXVertex* vertex) { - int32_t vx = _dotViewport(vertex, &gx->clipMatrix.m[0]); - int32_t vy = _dotViewport(vertex, &gx->clipMatrix.m[1]); - int32_t vz = _dotViewport(vertex, &gx->clipMatrix.m[2]); - int32_t vw = _dotViewport(vertex, &gx->clipMatrix.m[3]); + vertex->viewCoord[0] = _dotViewport(vertex, &gx->clipMatrix.m[0]); + vertex->viewCoord[1] = _dotViewport(vertex, &gx->clipMatrix.m[1]); + vertex->viewCoord[2] = _dotViewport(vertex, &gx->clipMatrix.m[2]); + vertex->viewCoord[3] = _dotViewport(vertex, &gx->clipMatrix.m[3]); - vx = (vx + vw) * (int64_t) (gx->viewportWidth << 12) / (vw * 2) + (gx->viewportX1 << 12); - vy = (vy + vw) * (int64_t) (gx->viewportHeight << 12) / (vw * 2) + (gx->viewportY1 << 12); - vx >>= 12; - vy >>= 12; - - if (vx < gx->viewportX1) { - return false; - } - if (vx > gx->viewportX2) { - return false; - } - if (vy < gx->viewportY1) { - return false; - } - if (vy > gx->viewportY2) { - return false; - } - if (vz < -vw) { - return false; - } - if (vz > vw) { - return false; - } - return true; + return !_cohenSutherlandCode(vertex); } static bool _boxTest(struct DSGX* gx) {