DS GX: Expose clip matrix

This commit is contained in:
Vicki Pfau 2017-03-02 01:08:11 -08:00
parent 61a4cc5d23
commit 9464daf514
2 changed files with 64 additions and 0 deletions

View File

@ -142,6 +142,38 @@ static void _pullPipe(struct DSGX* gx) {
static void _updateClipMatrix(struct DSGX* gx) {
DSGXMtxMultiply(&gx->clipMatrix, &gx->posMatrix, &gx->projMatrix);
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_00 >> 1] = gx->clipMatrix.m[0];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_01 >> 1] = gx->clipMatrix.m[0] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_02 >> 1] = gx->clipMatrix.m[1];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_03 >> 1] = gx->clipMatrix.m[1] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_04 >> 1] = gx->clipMatrix.m[2];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_05 >> 1] = gx->clipMatrix.m[2] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_06 >> 1] = gx->clipMatrix.m[3];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_07 >> 1] = gx->clipMatrix.m[3] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_08 >> 1] = gx->clipMatrix.m[4];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_09 >> 1] = gx->clipMatrix.m[4] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_0A >> 1] = gx->clipMatrix.m[5];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_0B >> 1] = gx->clipMatrix.m[5] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_0C >> 1] = gx->clipMatrix.m[6];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_0D >> 1] = gx->clipMatrix.m[6] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_0E >> 1] = gx->clipMatrix.m[7];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_0F >> 1] = gx->clipMatrix.m[7] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_10 >> 1] = gx->clipMatrix.m[8];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_11 >> 1] = gx->clipMatrix.m[8] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_12 >> 1] = gx->clipMatrix.m[9];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_13 >> 1] = gx->clipMatrix.m[9] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_14 >> 1] = gx->clipMatrix.m[10];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_15 >> 1] = gx->clipMatrix.m[10] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_16 >> 1] = gx->clipMatrix.m[11];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_17 >> 1] = gx->clipMatrix.m[11] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_18 >> 1] = gx->clipMatrix.m[12];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_19 >> 1] = gx->clipMatrix.m[12] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_1A >> 1] = gx->clipMatrix.m[13];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_1B >> 1] = gx->clipMatrix.m[13] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_1C >> 1] = gx->clipMatrix.m[14];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_1D >> 1] = gx->clipMatrix.m[14] >> 16;
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_1E >> 1] = gx->clipMatrix.m[15];
gx->p->memory.io9[DS9_REG_CLIPMTX_RESULT_1F >> 1] = gx->clipMatrix.m[15] >> 16;
}
static int32_t _dotViewport(struct DSGXVertex* vertex, int32_t* col) {

View File

@ -621,6 +621,38 @@ uint16_t DS9IORead(struct DS* ds, uint32_t address) {
case DS_REG_POSTFLG:
case DS9_REG_GXSTAT_LO:
case DS9_REG_GXSTAT_HI:
case DS9_REG_CLIPMTX_RESULT_00:
case DS9_REG_CLIPMTX_RESULT_01:
case DS9_REG_CLIPMTX_RESULT_02:
case DS9_REG_CLIPMTX_RESULT_03:
case DS9_REG_CLIPMTX_RESULT_04:
case DS9_REG_CLIPMTX_RESULT_05:
case DS9_REG_CLIPMTX_RESULT_06:
case DS9_REG_CLIPMTX_RESULT_07:
case DS9_REG_CLIPMTX_RESULT_08:
case DS9_REG_CLIPMTX_RESULT_09:
case DS9_REG_CLIPMTX_RESULT_0A:
case DS9_REG_CLIPMTX_RESULT_0B:
case DS9_REG_CLIPMTX_RESULT_0C:
case DS9_REG_CLIPMTX_RESULT_0D:
case DS9_REG_CLIPMTX_RESULT_0E:
case DS9_REG_CLIPMTX_RESULT_0F:
case DS9_REG_CLIPMTX_RESULT_10:
case DS9_REG_CLIPMTX_RESULT_11:
case DS9_REG_CLIPMTX_RESULT_12:
case DS9_REG_CLIPMTX_RESULT_13:
case DS9_REG_CLIPMTX_RESULT_14:
case DS9_REG_CLIPMTX_RESULT_15:
case DS9_REG_CLIPMTX_RESULT_16:
case DS9_REG_CLIPMTX_RESULT_17:
case DS9_REG_CLIPMTX_RESULT_18:
case DS9_REG_CLIPMTX_RESULT_19:
case DS9_REG_CLIPMTX_RESULT_1A:
case DS9_REG_CLIPMTX_RESULT_1B:
case DS9_REG_CLIPMTX_RESULT_1C:
case DS9_REG_CLIPMTX_RESULT_1D:
case DS9_REG_CLIPMTX_RESULT_1E:
case DS9_REG_CLIPMTX_RESULT_1F:
// Handled transparently by the registers
break;
case DS_REG_AUXSPICNT: