Palette + Alpha

I was examining the memory footprint of one of my games and I was
surprised by the size of some images. These are relatively simple images
but which have an alpha channel, so they are converted to 24bpp.

Is there any way to handle palettized images with alpha in SDL? And no,
using a colorkey doesn’t cut it.

Ideally, I’d like to do something like this :

SDL_Surface* pColormap = IMG_Load("image.bmp");	// 8bpp
SDL_Surface* pAlpha = IMG_Load("image.alpha.bmp"); // 8bpp

assert(pColormap->w == pAlpha->w && pColormap->h == pAlpha->h);

SDL_SetSurfaceAlpha(pColormap, pAlpha);

Right now I do something like that, but convert the colormap to 24bpp

Does a 16 bpp format (8 palette + 8 alpha) even exist? I don’t think
there’s a blitter capable of handling it right now. If it comes to that,
I’ll write it.

Am I making sense here?