osViSetSpecialFeatures.c (1120B)
1 #include "libultra_internal.h" 2 3 extern OSViContext *__osViNext; 4 5 void osViSetSpecialFeatures(u32 func) { 6 register u32 int_disabled = __osDisableInt(); 7 if (func & OS_VI_GAMMA_ON) { 8 __osViNext->features |= OS_VI_GAMMA; 9 } 10 if (func & OS_VI_GAMMA_OFF) { 11 __osViNext->features &= ~OS_VI_GAMMA; 12 } 13 if (func & OS_VI_GAMMA_DITHER_ON) { 14 __osViNext->features |= OS_VI_GAMMA_DITHER; 15 } 16 if (func & OS_VI_GAMMA_DITHER_OFF) { 17 __osViNext->features &= ~OS_VI_GAMMA_DITHER; 18 } 19 if (func & OS_VI_DIVOT_ON) { 20 __osViNext->features |= OS_VI_DIVOT; 21 } 22 if (func & OS_VI_DIVOT_OFF) { 23 __osViNext->features &= ~OS_VI_DIVOT; 24 } 25 if (func & OS_VI_DITHER_FILTER_ON) { 26 __osViNext->features |= OS_VI_DITHER_FILTER; 27 __osViNext->features &= ~(OS_VI_UNK200 | OS_VI_UNK100); 28 } 29 if (func & OS_VI_DITHER_FILTER_OFF) { 30 __osViNext->features &= ~OS_VI_DITHER_FILTER; 31 __osViNext->features |= __osViNext->modep->comRegs.ctrl & (OS_VI_UNK200 | OS_VI_UNK100); 32 } 33 __osViNext->unk00 |= 8; 34 __osRestoreInt(int_disabled); 35 }