#include #include #include #include #include #include #include #include #include #include FILE* in; FILE* out; void *addr; void copyline(int c) { uint8_t *ptr = addr + 0x82 + (128/8)*(127 - c); int i; for (i=0; i<16; i++) { fputc(*ptr++, out); } } int main(int argc, char** argv) { struct stat sbuf; in = fopen(argv[1], "r+"); out = fopen(argv[2], "w"); fstat(fileno(in), &sbuf); if (sbuf.st_size != 2178) { printf("File must be a 128x128 pixel 1 bit monochrome bmp\n"); exit(1); } addr = mmap(NULL, sbuf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fileno(in), 0); int i, j; for(j=0; j<8; j++) { for(i=0; i<16; i++) { copyline(j+i*8); } } }