Given the hardware I think your best bang for the buck would be some really cheesy palette effects, like how everything goes green when you get slimed in Frogs of War. Though that's eight bit color, wonder how it would fly at 16 or 24.
CODE
void loadbmp( SDL_Surface *surface, char *fname, int load_palette )
{
int i;
SDL_Surface *image = NULL;
image = SDL_LoadBMP( fname );
if (image == NULL)
{
fprintf(stderr, "Error loading %s: %s\n", fname, SDL_GetError());
exit( 0 );
}
if (image->format->palette && surface->format->palette)
{
if ( load_palette ) // set up palette effects
{
for ( i = 0; i < 256; i++ )
{
// default
Colors[ 0 ][ i ].r = image->format->palette->colors[ i ].r;
Colors[ 0 ][ i ].g = image->format->palette->colors[ i ].g;
Colors[ 0 ][ i ].b = image->format->palette->colors[ i ].b;
// red
Colors[ 1 ][ i ].r = image->format->palette->colors[ i ].r;
Colors[ 1 ][ i ].g = image->format->palette->colors[ i ].g / 4;
Colors[ 1 ][ i ].b = image->format->palette->colors[ i ].b / 4;
// green
Colors[ 2 ][ i ].r = image->format->palette->colors[ i ].r / 4;
Colors[ 2 ][ i ].g = image->format->palette->colors[ i ].g;
Colors[ 2 ][ i ].b = image->format->palette->colors[ i ].b / 4;
// blue
Colors[ 3 ][ i ].r = image->format->palette->colors[ i ].r / 4;
Colors[ 3 ][ i ].g = image->format->palette->colors[ i ].g / 4;
Colors[ 3 ][ i ].b = image->format->palette->colors[ i ].b;
}
}
SDL_SetColors(surface, image->format->palette->colors, 0, image->format->palette->ncolors);
}
if ( SDL_BlitSurface(image, NULL, surface, NULL) < 0 )
fprintf(stderr, "BlitSurface error: %s\n", SDL_GetError());
SDL_UpdateRect(surface, 0, 0, 0, 0);
SDL_FreeSurface(image);
}
void setPaletteColor( SDL_Surface *surface, short pallete )
{
SDL_LockSurface( surface );
SDL_SetColors(surface, Colors[ pallete ], 0, 256 );
SDL_UnlockSurface( surface );
}