-
-static inline int charpix_color(char c)
-{
- switch(c) {
- case '0':
- return 0;
- case '#':
- return 1;
- case 'x':
- return 2;
- case '@':
- return 3;
- case 'o':
- return 4;
- case '.':
- return 0x1f;
- default:
- break;
- }
- return 0;
-}
-
-#define TILE_SCANSZ (TILE_W / 8)
-void convert_tile_data(unsigned char *dest, const char *src)
-{
- int i, j, k;
- unsigned char *bptr[NBPL];
-
- for(i=0; i<NBPL; i++) {
- bptr[i] = dest + TILE_SCANSZ * i;
- }
-
- for(i=0; i<TILE_H; i++) {
- for(j=0; j<TILE_W; j++) {
- int col = charpix_color(*src++);
-
- for(k=0; k<NBPL; k++) {
- *bptr[k] = (*bptr[k] << 1) | (col & 1);
- col >>= 1;
-
- if((j & 7) == 7) {
- bptr[k]++;
- }
- }
- }
-
- for(j=0; j<NBPL; j++) {
- bptr[j] += TILE_SCANSZ * (NBPL - 1);
- }
- }
-}