1 extern "C" 2 { 3 4 #include "3dc.h" 5 #include "module.h" 6 #include "inline.h" 7 #include "gammacontrol.h" 8 9 static int ActualGammaSetting; 10 int RequestedGammaSetting; 11 12 unsigned char GammaValues[256]; 13 InitialiseGammaSettings(int gamma)14void InitialiseGammaSettings(int gamma) 15 { 16 ActualGammaSetting = gamma+1; 17 RequestedGammaSetting = gamma; 18 UpdateGammaSettings(); 19 } 20 UpdateGammaSettings(void)21void UpdateGammaSettings(void) 22 { 23 if (RequestedGammaSetting==ActualGammaSetting) return; 24 25 for (int i=0; i<=255; i++) 26 { 27 int u = ((i*65536)/255); 28 int m = MUL_FIXED(u,u); 29 int l = MUL_FIXED(2*u,ONE_FIXED-u); 30 31 int a; 32 33 a = m+MUL_FIXED(RequestedGammaSetting*256,l); 34 35 36 m = MUL_FIXED(a,a); 37 l = MUL_FIXED(2*a,ONE_FIXED-a); 38 39 a = m/256+MUL_FIXED(RequestedGammaSetting,l); 40 41 if (a<0) a=0; 42 if (a>255) a=255; 43 44 GammaValues[i]=a; 45 } 46 47 ActualGammaSetting=RequestedGammaSetting; 48 49 } 50 51 }; 52