# HG changeset patch # User arpi # Date 1001365632 0 # Node ID 5ceb384bf1634ed290246547800d29eb84b89e0d # Parent e0cc7b7290ecb3a25ee97b875cb0ca5b61efcce3 rle 15,16bpp support (palette conversion) diff -r e0cc7b7290ec -r 5ceb384bf163 dec_video.c --- a/dec_video.c Mon Sep 24 20:21:53 2001 +0000 +++ b/dec_video.c Mon Sep 24 21:07:12 2001 +0000 @@ -357,6 +357,24 @@ case VFM_RLE: { int bpp=((out_fmt&255)+7)/8; // RGB only sh_video->our_out_buffer = memalign(64,sh_video->disp_w*sh_video->disp_h*bpp); // FIXME!!! + if(bpp==2){ // 15 or 16 bpp ==> palette conversion! + unsigned int* pal=(unsigned int*)(((char*)sh_video->bih)+40); + //int cols=(sh_video->bih->biSize-40)/4; + int cols=1<<(sh_video->bih->biBitCount); + int i; + if(cols>256) cols=256; + printf("RLE: converting palette for %d colors.\n",cols); + for(i=0;i>8)&255; + unsigned int r=(c>>16)&255; + if((out_fmt&255)==15) + pal[i]=((r>>3)<<10)|((g>>3)<<5)|((b>>3)); + else + pal[i]=((r>>3)<<11)|((g>>2)<<5)|((b>>3)); + } + } break; } }