вот пример "утилиты" ;) не пинать - писал когда-то в школе.
file_load() это что-то самописное, которое грузило файл в буффер и возвращало размер, зачем? не пинайте - давно писалось.
на выходе два файла: 768 байт палитры в одном, чистые данные - в другом. далее какой-либо bin2c "утилиту"
#include // puts(),printf()
#include // puts(),printf()
#include "my_lib.h"
int main(int argc, char *argv[])
{
byte far *buffer_in, far *buffer_out, far *pal;
word size, i,j,k, width,height;
byte tmp1,tmp2;
int file;
puts("\n Pcx2Dat (c) ...");
if ( argc<2 ) { puts(" Usage: pcx2dat [pcxfile]"); return 1; }
buffer_in = (byte far*)MK_FP( mem_alloc(65335u),0 );
buffer_out = (byte far*)MK_FP( mem_alloc(65335u),0 );
pal = (byte far*)MK_FP( mem_alloc( 768u),0 );
size = file_load(buffer_in,argv[1]);
width = (buffer_in[ 9] << 8) + buffer_in[ 8];
height = (buffer_in[11] << 8) + buffer_in[10];
mem_move( pal, buffer_in + size - 768, 768 );
for( i=0; i<768; i++ )
pal[i] = ( pal[i] >> 2 );
for ( i=127, j=0, k=0; i