MCPcopy Create free account
hub / github.com/DaedalusX64/daedalus / InsertMatrix

Method InsertMatrix

Source/HLEGraphics/BaseRenderer.cpp:2212–2250  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2210//Modify the WorldProject matrix, used by Kirby & SSB //Corn
2211
2212void BaseRenderer::InsertMatrix(u32 w0, u32 w1)
2213{
2214 mWPmodified = true; //Signal that Worldproject matrix is changed
2215
2216 //Make sure WP matrix is up to date before changing WP matrix
2217 if( !mWorldProjectValid )
2218 {
2219 mWorldProject = mModelViewStack[mModelViewTop] * mProjectionMat;
2220 mWorldProjectValid = true;
2221 }
2222
2223 u32 x {(w0 & 0x1F) >> 1};
2224 u32 y {x >> 2};
2225 x &= 3;
2226
2227 if (w0 & 0x20)
2228 {
2229 //Change fraction part
2230 mWorldProject.m[y][x] = (f32)(s32)mWorldProject.m[y][x] + ((f32)(w1 >> 16) / 65536.0f);
2231 mWorldProject.m[y][x+1] = (f32)(s32)mWorldProject.m[y][x+1] + ((f32)(w1 & 0xFFFF) / 65536.0f);
2232 }
2233 else
2234 {
2235 //Change integer part
2236 mWorldProject.m[y][x] = (f32)(s16)(w1 >> 16);
2237 mWorldProject.m[y][x+1] = (f32)(s16)(w1 & 0xFFFF);
2238 }
2239#ifdef DAEDALUS_DEBUG_DISPLAYLIST
2240 DL_PF(
2241 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n"
2242 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n"
2243 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n"
2244 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n",
2245 mWorldProject.m[0][0], mWorldProject.m[0][1], mWorldProject.m[0][2], mWorldProject.m[0][3],
2246 mWorldProject.m[1][0], mWorldProject.m[1][1], mWorldProject.m[1][2], mWorldProject.m[1][3],
2247 mWorldProject.m[2][0], mWorldProject.m[2][1], mWorldProject.m[2][2], mWorldProject.m[2][3],
2248 mWorldProject.m[3][0], mWorldProject.m[3][1], mWorldProject.m[3][2], mWorldProject.m[3][3]);
2249 #endif
2250}
2251
2252
2253//Replaces the WorldProject matrix //Corn

Callers 4

DLParser_GBI1_MoveWordFunction · 0.80
DLParser_GBI2_MoveWordFunction · 0.80
DLParser_GBI1_MoveWordFunction · 0.80
DLParser_GBI2_MoveWordFunction · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected