It works good now that I tried it, here's some animated effects for the colors:
Code:


gr_red[i]=pow(((fcos(total_ticks*5-i,125)+125))/256,1/br_gamma)*65536;//transition to inversion and back over time
gr_green[i]=pow(((fcos(total_ticks*5-i,125)+125))/256,1/br_gamma)*65536;
gr_blue[i]=pow(((fcos(total_ticks*5-i,125)+125))/256,1/br_gamma)*65536;




Code:

gr_red[i]=pow(((fcos(total_ticks*5-i,125)+125))/256,1/br_gamma)*65536;//transition through hue over time
gr_green[i]=pow(((fcos(total_ticks*5-i-120,125)+125))/256,1/br_gamma)*65536;
gr_blue[i]=pow(((fcos(total_ticks*5-i-240,125)+125))/256,1/br_gamma)*65536;





Code:

gr_red[i]=pow((i)/256,((1/br_gamma)/2)+fcos(total_ticks*10,1/3))*65536;//transition from bright to dark over time
gr_green[i]=pow((i)/256,((1/br_gamma)/2)+fcos(total_ticks*10,1/3))*65536;
gr_blue[i]=pow((i)/256,((1/br_gamma)/2)+fcos(total_ticks*10,1/3))*65536;





Code:

gr_red[i]=pow((i)/256,1/br_gamma)*fcos(total_ticks*5,65530)+65536;//hue shifter with sudden effects on colors that have 0 values
gr_green[i]=pow((i)/256,1/br_gamma)*fcos(total_ticks*5-120,65530)+65536;
gr_blue[i]=pow((i)/256,1/br_gamma)*fcos(total_ticks*5-240,65530)+65536;


each set of gr_red,gr_green,gr_blue is a different effect, you have to replace that with the one that is already in your wdl (starter gamma_correct). No C++ editing necessary for these.


It only works on fullscreen for me. I also noticed that your formulas do not work well with colors that have 0 values (like if there was 255 red, 0 green, 0 blue), I assume you must be using a multiplication in your formula to cause this problem instead of an addition because you can't brighten a 0 with multiplication but you can with addition. You might also be able to clamp (limit) the values to 1 instead of 0 to correct this.