| 2097 | // |
| 2098 | |
| 2099 | void BaseRenderer::SetWorldView(const u32 address, bool bPush, bool bReplace) |
| 2100 | { |
| 2101 | // ModelView |
| 2102 | if (bPush && (mModelViewTop < mMatStackSize)) |
| 2103 | { |
| 2104 | ++mModelViewTop; |
| 2105 | |
| 2106 | // We should store the current projection matrix... |
| 2107 | if (bReplace) |
| 2108 | { |
| 2109 | // Load ModelView matrix |
| 2110 | MatrixFromN64FixedPoint( mModelViewStack[mModelViewTop], address); |
| 2111 | //Hack to make GEX games work, need to multiply all elements with 2.0 //Corn |
| 2112 | if( g_ROM.GameHacks == GEX_GECKO ) for(u32 i=0;i<16;i++) mModelViewStack[mModelViewTop].mRaw[i] += mModelViewStack[mModelViewTop].mRaw[i]; |
| 2113 | } |
| 2114 | else // Multiply ModelView matrix |
| 2115 | { |
| 2116 | MatrixFromN64FixedPoint( mTempMat, address); |
| 2117 | MatrixMultiplyAligned( &mModelViewStack[mModelViewTop], &mTempMat, &mModelViewStack[mModelViewTop-1] ); |
| 2118 | } |
| 2119 | } |
| 2120 | else // NoPush |
| 2121 | { |
| 2122 | if (bReplace) |
| 2123 | { |
| 2124 | // Load ModelView matrix |
| 2125 | MatrixFromN64FixedPoint( mModelViewStack[mModelViewTop], address); |
| 2126 | } |
| 2127 | else |
| 2128 | { |
| 2129 | // Multiply ModelView matrix |
| 2130 | MatrixFromN64FixedPoint( mTempMat, address); |
| 2131 | MatrixMultiplyAligned( &mModelViewStack[mModelViewTop], &mTempMat, &mModelViewStack[mModelViewTop] ); |
| 2132 | } |
| 2133 | } |
| 2134 | |
| 2135 | mWorldProjectValid = false; |
| 2136 | #ifdef DAEDALUS_DEBUG_DISPLAYLIST |
| 2137 | DL_PF(" Level = %d\n" |
| 2138 | " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n" |
| 2139 | " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n" |
| 2140 | " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n" |
| 2141 | " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n", |
| 2142 | mModelViewTop, |
| 2143 | mModelViewStack[mModelViewTop].m[0][0], mModelViewStack[mModelViewTop].m[0][1], mModelViewStack[mModelViewTop].m[0][2], mModelViewStack[mModelViewTop].m[0][3], |
| 2144 | mModelViewStack[mModelViewTop].m[1][0], mModelViewStack[mModelViewTop].m[1][1], mModelViewStack[mModelViewTop].m[1][2], mModelViewStack[mModelViewTop].m[1][3], |
| 2145 | mModelViewStack[mModelViewTop].m[2][0], mModelViewStack[mModelViewTop].m[2][1], mModelViewStack[mModelViewTop].m[2][2], mModelViewStack[mModelViewTop].m[2][3], |
| 2146 | mModelViewStack[mModelViewTop].m[3][0], mModelViewStack[mModelViewTop].m[3][1], mModelViewStack[mModelViewTop].m[3][2], mModelViewStack[mModelViewTop].m[3][3]); |
| 2147 | #endif |
| 2148 | } |
| 2149 | |
| 2150 | |
| 2151 | // |
no test coverage detected