void gfx_mode_apply(enum gfx_mode mode) { Gfx dl[GFX_MODE_ALL]; Gfx *pdl = dl; switch (mode) { case GFX_MODE_ALL: case GFX_MODE_FILTER: { gDPSetTextureFilter(pdl++, gfx_modes[GFX_MODE_FILTER]); if (mode != GFX_MODE_ALL) break; } case GFX_MODE_COMBINE: { gDPSetCombine(pdl++, gfx_modes[GFX_MODE_COMBINE]); if (mode != GFX_MODE_ALL) break; } case GFX_MODE_COLOR: { uint32_t c = gfx_modes[GFX_MODE_COLOR]; gDPSetPrimColor(pdl++, 0, 0, (c >> 24) & 0xFF, (c >> 16) & 0xFF, (c >> 8) & 0xFF, (c >> 0) & 0xFF); if (mode != GFX_MODE_ALL) break; } default: break; } size_t s = pdl - dl; if (s > 0) { gfx_sync(); memcpy(gfx_disp_p, dl, s * sizeof(*dl)); gfx_disp_p += s; } }
void RDP_SetCombine( u32 w0, u32 w1 ) { gDPSetCombine( _SHIFTR( w0, 0, 24 ), // muxs0 w1 ); // muxs1 }