void F3DEX2_MoveMem( u32 w0, u32 w1 ) { switch (_SHIFTR( w0, 0, 8 )) { case F3DEX2_MV_VIEWPORT: gSPViewport( w1 ); break; case G_MV_MATRIX: gSPForceMatrix( w1 ); // force matrix takes two commands RSP.PC[RSP.PCi] += 8; break; case G_MV_LIGHT: u32 offset = _SHIFTR( w0, 8, 8 ) << 3; if (offset >= 48) { gSPLight( w1, (offset - 24) / 24); } /* else { // Do lookat stuff }*/ break; } }
void F3D_MoveMem( u32 w0, u32 w1 ) { #ifdef __TRIBUFFER_OPT gSPFlushTriangles(); #endif switch (_SHIFTR( w0, 16, 8 )) { case F3D_MV_VIEWPORT://G_MV_VIEWPORT: gSPViewport( w1 ); break; case G_MV_MATRIX_1: gSPForceMatrix( w1 ); // force matrix takes four commands RSP.PC[RSP.PCi] += 24; break; case G_MV_L0: gSPLight( w1, LIGHT_1 ); break; case G_MV_L1: gSPLight( w1, LIGHT_2 ); break; case G_MV_L2: gSPLight( w1, LIGHT_3 ); break; case G_MV_L3: gSPLight( w1, LIGHT_4 ); break; case G_MV_L4: gSPLight( w1, LIGHT_5 ); break; case G_MV_L5: gSPLight( w1, LIGHT_6 ); break; case G_MV_L6: gSPLight( w1, LIGHT_7 ); break; case G_MV_L7: gSPLight( w1, LIGHT_8 ); break; case G_MV_LOOKATX: break; case G_MV_LOOKATY: break; } }
void F3D_MoveMem( u32 w0, u32 w1 ) { switch (_SHIFTR( w0, 16, 8 )) { case F3D_MV_VIEWPORT://G_MV_VIEWPORT: gSPViewport( w1 ); break; case G_MV_MATRIX_1: gSPForceMatrix( w1 ); // force matrix takes four commands __RSP.PC[__RSP.PCi] += 24; break; case G_MV_L0: gSPLight( w1, LIGHT_1 ); break; case G_MV_L1: gSPLight( w1, LIGHT_2 ); break; case G_MV_L2: gSPLight( w1, LIGHT_3 ); break; case G_MV_L3: gSPLight( w1, LIGHT_4 ); break; case G_MV_L4: gSPLight( w1, LIGHT_5 ); break; case G_MV_L5: gSPLight( w1, LIGHT_6 ); break; case G_MV_L6: gSPLight( w1, LIGHT_7 ); break; case G_MV_L7: gSPLight( w1, LIGHT_8 ); break; case G_MV_LOOKATX: gSPLookAt(w1, 0); break; case G_MV_LOOKATY: gSPLookAt(w1, 1); break; } }