#include #include #include #include #include #include #include #include "loadpng.h" /* converts a png of map to format for our keen engine */ /* 660x336 image */ /* 256 sprites of size 2x4 in a 16x16 grid at 8,4 */ static unsigned char tiles[256][2][4]; static unsigned char tilemap[128][80]; static unsigned char temp_tile[2][4]; static int ascii_output=0; int main(int argc, char **argv) { int i,j,x,y; int numtiles=0,found_tile; unsigned char *image; int xsize,ysize; FILE *outfile; int unknown_tiles=0; if (argc<3) { fprintf(stderr,"Usage:\t%s INFILE OUTFILE\n\n",argv[0]); exit(-1); } outfile=fopen(argv[2],"w"); if (outfile==NULL) { fprintf(stderr,"Error! Could not open %s\n",argv[2]); exit(-1); } if (loadpng(argv[1],&image,&xsize,&ysize,PNG_WHOLETHING)<0) { fprintf(stderr,"Error loading png!\n"); exit(-1); } fprintf(stderr,"Loaded image %d by %d\n",xsize,ysize); // for(x=0;x<128;x++) { // for(y=0;y<64;y++) { // printf("%02X,",image[(y*xsize)+x]); // } // printf("\n"); // } /* loading tiles */ for(x=0;x<16;x++) { for(y=0;y<16;y++) { tiles[(y*16)+x][0][0]=image[((y*4+4)*xsize)+8+(x*4)]; tiles[(y*16)+x][1][0]=image[((y*4+4)*xsize)+8+(x*4)+2]; tiles[(y*16)+x][0][1]=image[((y*4+5)*xsize)+8+(x*4)]; tiles[(y*16)+x][1][1]=image[((y*4+5)*xsize)+8+(x*4)+2]; tiles[(y*16)+x][0][2]=image[((y*4+6)*xsize)+8+(x*4)]; tiles[(y*16)+x][1][2]=image[((y*4+6)*xsize)+8+(x*4)+2]; tiles[(y*16)+x][0][3]=image[((y*4+7)*xsize)+8+(x*4)]; tiles[(y*16)+x][1][3]=image[((y*4+7)*xsize)+8+(x*4)+2]; } } i=0; for(j=0;j<256;j++) { if ((tiles[j][0][0]!=0) || (tiles[j][1][0]!=0) || (tiles[j][0][1]!=0) || (tiles[j][1][1]!=0) || (tiles[j][0][2]!=0) || (tiles[j][1][2]!=0) || (tiles[j][0][3]!=0) || (tiles[j][1][3]!=0)) { numtiles=j+1; } } printf("Found %d tiles\n",numtiles); if (ascii_output) { fprintf(outfile,"tiles:\n"); for(i=0;i