the results of my search:
all sprites and tile DO have to be 16 colors
while the normal display mode allows 4,096 colors, however the full 32,768 colors can be accessed in another less common mode which canhave some sort of transparency and mixing of background layers
My source (emulator docs, either snes9x or zsnes) disagrees.
16 colors per sprite/tile; 256 colors onscreen at once, if you treat all layers as fully opaque with no blending.
In the overall 256 color palette, each color can be selected from a spectrum of 32768 colors (ie. 5bit r, 5bit g, 5bit b)
There is a hi-res mode that I haven't particularly researched; it doubles the vertical resolution if i recall correctly.
There *is* a direct color mode, as you mention; however it was very rarely used
Each layer can be set to draw normally, or using one of several blend modes:
Half Add (result = dest + (src / 2))
Full Add (result = dest + src)
Half sub (result = dest - (src / 2))
Full sub (result = dest - src)
I believe that blend modes can be applied individually to sprites, however I haven't verified this.
Blend modes do not require any specific screen mode AFAIK; it's just a property of the layer or sprite.
Because SNES used a tv, the 'hot' colors are not included in the color spectrum. This means that the 0..31 intensity range for each channel does not map directly to 0.255; The high end is chopped off, so the mapping is more like 0..248.
There is therefore a pure black but no pure white.
The intensity mapping I suggest looks like:
[0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248]
(grabbed quickly from a bit of my software)
Which makes it easy to enter or check in hex entry fields;; last digit of each component can only be 0 or 8.
Tiles and sprites are constrained to the usual power-of-2 sizes up to (64x64?)