Sprites accually work pretty well. Here's how I have it set up:
Put this at the beginning of the program. Brightness is the brightness, 0=black, 255=normal and 511=white, just like the gamma settings.
load image "white.bmp", 1
load image "black.bmp", 2
if brightness=255 then sprite 1,0,0,1: set sprite alpha 1,0
if brightness>255 then sprite 1,0,0,1: set sprite alpha 1,brightness-256
if brightness<255 then sprite 1,0,0,2: set sprite alpha 1,abs(brightness-255)
size sprite 1,screen width(),screen height()
Put this again whenever the brightness is changed
if brightness>255 then sprite 1,0,0,1: set sprite alpha 1,brightness-256
if brightness<255 then sprite 1,0,0,2: set sprite alpha 1,abs(brightness-255)
if brightness=255 then hide sprite 1
"white.bmp" is a 1x1 bitmap that's white.
"black.bmp" is a 1x1 bitmap that is very dark, rgb(5,5,5) so it looks black but isn't transparent.
If you can read this, you are over qualified.