| 305 | } |
| 306 | |
| 307 | void iFMV::InitDisplay(GXRenderModeObj* InRenderMode) |
| 308 | { |
| 309 | GXColor clr = { 0 }; |
| 310 | Mtx44 mtx; |
| 311 | Mtx idt; |
| 312 | mRenderMode = InRenderMode; |
| 313 | void** xfb = &mXFBs[1]; |
| 314 | RwGameCubeGetXFBs(&mXFBs[0], &mXFBs[1]); |
| 315 | mCurrentFrameBuffer = *xfb; |
| 316 | |
| 317 | InitGX(); |
| 318 | InitVI(); |
| 319 | |
| 320 | GXSetCopyClear(clr, GX_MAX_Z24); |
| 321 | C_MTXOrtho(mtx, 0.0f, mRenderMode->efbHeight, 0.0f, mRenderMode->fbWidth, 0.0f, -100.0f); |
| 322 | GXSetProjection(mtx, GX_ORTHOGRAPHIC); |
| 323 | PSMTXIdentity(idt); |
| 324 | GXLoadPosMtxImm(idt, 0); |
| 325 | GXSetCurrentMtx(0); |
| 326 | |
| 327 | GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); |
| 328 | GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR); |
| 329 | |
| 330 | GXClearVtxDesc(); |
| 331 | GXSetVtxDesc(GX_VA_POS, GX_DIRECT); |
| 332 | GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); |
| 333 | GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); |
| 334 | GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_NRM_NBT, GX_S16, 0); |
| 335 | GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_NRM_NBT, GX_RGBA8, 0); |
| 336 | GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_NRM_NBT, GX_RGBA6, 0); |
| 337 | |
| 338 | GXSetNumTexGens(1); |
| 339 | GXSetNumChans(1); |
| 340 | GXSetNumTevStages(1); |
| 341 | GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c); |
| 342 | GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE); |
| 343 | GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); |
| 344 | mFirstFrame = 1; |
| 345 | } |
| 346 | |
| 347 | void iFMV::InitGX() |
| 348 | { |
nothing calls this directly
no test coverage detected