#include "devil1tex.h" #include #include void printtph (struct TexturePack *tp) { if (tp != NULL) { printf("id: \t %c %c %c %c \n", tp -> id[3], tp -> id[2], tp -> id[1], tp -> id[0]); printf("batch#: \t %i \n", tp -> batchNumber); printf("1st batch: \t %i \n", tp -> firstBatchOffset); printf("unknownA: \t %i\n", tp -> unknownA); } return; } void printtbd(struct TextureBatchDescriptor *bd) { if (bd != NULL) { printf("batch index: \t %i \n", bd -> batchIdx); printf("hash: \t %u \n", bd -> hash); printf("textures: \t %i\n", bd -> texNumber); } } // get texture pack descriptors void gettbd (struct TextureBatchDescriptor **descriptors, const char *filedata, unsigned int filesize) { if (descriptors == NULL || filedata == NULL || filesize <= 0) { return; } struct TexturePack *tp = NULL; tp = (struct TexturePack*)filedata; if (filesize <= (sizeof(struct TextureBatchDescriptor) * tp -> batchNumber + sizeof(struct TexturePack))){ fprintf(stderr, "File Error: file size to struct sizes ratio.\n"); return; } unsigned int index = sizeof(struct TexturePack); // Batch Descriptors are structured one after another. // therefore the next one is at // current index + sizeof(TextureBatchDescriptor) unsigned int i = 0; do { index = sizeof(struct TextureBatchDescriptor) * i + sizeof(struct TexturePack); printf("batch descriptor start: %x\n", index); descriptors[i] = (struct TextureBatchDescriptor*) (filedata + index); i++; } while(i < (tp -> batchNumber)); return; }