parent
b0fbd6a919
commit
63605b9967
|
@ -403,23 +403,51 @@ void gfx3d_glRestoreMatrix(unsigned long v)
|
||||||
|
|
||||||
void gfx3d_glPushMatrix()
|
void gfx3d_glPushMatrix()
|
||||||
{
|
{
|
||||||
|
u32 gxstat = T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x600);
|
||||||
//this command always works on both pos and vector when either pos or pos-vector are the current mtx mode
|
//this command always works on both pos and vector when either pos or pos-vector are the current mtx mode
|
||||||
short mymode = (mode==1?2:mode);
|
short mymode = (mode==1?2:mode);
|
||||||
|
|
||||||
|
if (mtxStack[mymode].position >= mtxStack[mymode].size)
|
||||||
|
{
|
||||||
|
gxstat |= (1<<15);
|
||||||
|
T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x600, gxstat);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gxstat &= 0xFFFF00FF;
|
||||||
|
|
||||||
MatrixStackPushMatrix(&mtxStack[mymode], mtxCurrent[mymode]);
|
MatrixStackPushMatrix(&mtxStack[mymode], mtxCurrent[mymode]);
|
||||||
if(mymode==2)
|
if(mymode==2)
|
||||||
MatrixStackPushMatrix (&mtxStack[1], mtxCurrent[1]);
|
MatrixStackPushMatrix (&mtxStack[1], mtxCurrent[1]);
|
||||||
|
|
||||||
|
gxstat |= ((mtxStack[0].position << 13) | (mtxStack[1].position << 8));
|
||||||
|
T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x600, gxstat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfx3d_glPopMatrix(signed long i)
|
void gfx3d_glPopMatrix(signed long i)
|
||||||
{
|
{
|
||||||
|
u32 gxstat = T1ReadLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x600);
|
||||||
|
|
||||||
//this command always works on both pos and vector when either pos or pos-vector are the current mtx mode
|
//this command always works on both pos and vector when either pos or pos-vector are the current mtx mode
|
||||||
short mymode = (mode==1?2:mode);
|
short mymode = (mode==1?2:mode);
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (i > mtxStack[mymode].position)
|
||||||
|
{
|
||||||
|
gxstat |= (1<<15);
|
||||||
|
T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x600, gxstat);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
gxstat &= 0xFFFF00FF;
|
||||||
|
|
||||||
MatrixCopy(mtxCurrent[mode], MatrixStackPopMatrix (&mtxStack[mode], i));
|
MatrixCopy(mtxCurrent[mode], MatrixStackPopMatrix (&mtxStack[mode], i));
|
||||||
|
|
||||||
if (mymode == 2)
|
if (mymode == 2)
|
||||||
MatrixCopy(mtxCurrent[1], MatrixStackPopMatrix (&mtxStack[1], i));
|
MatrixCopy(mtxCurrent[1], MatrixStackPopMatrix (&mtxStack[1], i));
|
||||||
|
|
||||||
|
gxstat |= ((mtxStack[0].position << 13) | (mtxStack[1].position << 8));
|
||||||
|
T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM9][0x40], 0x600, gxstat);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL gfx3d_glTranslate(signed long v)
|
BOOL gfx3d_glTranslate(signed long v)
|
||||||
|
|
Loading…
Reference in New Issue