sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

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 }