/*****************************************************************************/ /* pcespr16.c */ /* PCE Sprite BitPlane Decoder Module (16-color) */ /* (c) 2002 Dave Shadoff */ /*****************************************************************************/ #include "dm.h" void startup() { export.help = SystemHelp; } int tile_pack(unsigned char *dest,const unsigned char *src,int width,int height) { int i, j, pix; for(i = 0; i < 128; i++) { dest[i] = 0; } for(i = 0; i < 16; i++) { for(j = 0; j < 8; j++) { pix = (128 >> j); dest[1] |= (src[j] & 1) ? pix:0; dest[33] |= (src[j] & 2) ? pix:0; dest[65] |= (src[j] & 4) ? pix:0; dest[97] |= (src[j] & 8) ? pix:0; dest[0] |= (src[j+8] & 1) ? pix:0; dest[32] |= (src[j+8] & 2) ? pix:0; dest[64] |= (src[j+8] & 4) ? pix:0; dest[96] |= (src[j+8] & 8) ? pix:0; } dest += 2; src += 16; } return 128; } int tile_unpack(unsigned char *dest,const unsigned char *src,int width,int height) { int i, j, pix; for(i = 0; i < 16; i++) { for(j = 0; j < 8; j++) { pix = (128 >> j); dest[j] = ( ( (src[1] & pix) ? 1:0 ) | ( (src[33] & pix) ? 2:0 ) | ( (src[65] & pix) ? 4:0 ) | ( (src[97] & pix) ? 8:0 ) ); dest[j+8] = ( ( (src[0] & pix) ? 1:0 ) | ( (src[32] & pix) ? 2:0 ) | ( (src[64] & pix) ? 4:0 ) | ( (src[96] & pix) ? 8:0 ) ); } src += 2; dest += 16; } return 128; } /* you must define an EXPORTSTRUC with 'export' in order to export data */ static EXPORTSTRUC export = { /*entry*/ startup, /*tile_pack*/ tile_pack, /*tile_unpack*/ tile_unpack, /*update*/ NULL, /*save*/ NULL, /*minwidth*/ 16, /*minheight*/ 16, /*maxwidth*/ 16, /*maxheight*/ 16, /*bpp*/ 4, /*maxpal*/ 2, /*modestr*/ "PCE SPRITE", /*help*/ NULL, /*key*/ { 0, 0, 0, 0 }, /*KeyHandler*/ { NULL, NULL, NULL, NULL } };