mirror of https://github.com/mgba-emu/mgba.git
DS GX: Expose clip matrix
This commit is contained in:
parent
61a4cc5d23
commit
9464daf514
32
src/ds/gx.c
32
src/ds/gx.c
|
@ -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) {
|
||||
|
|
32
src/ds/io.c
32
src/ds/io.c
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue