#include "common.h" #include "devil1tex.h" void extracttextures(const char *filedata, unsigned int filesize, const char *filename) { struct TexturePack *p = NULL; struct Texture *t = NULL; struct TextureBatchDescriptor *d = NULL; char * fmt = NULL; if (!(DEVIL1TEX.getheader(p, filedata)) || filesize == 0) { return; } fmt = (char*)malloc(strlen(filename) + 3 + 4); unsigned int i; unsigned int j; unsigned int id = 0; for (i = 0; i < p -> batchNumber; i++) { DEVIL1TEX.getbatchdesc(&d, i, filedata, filesize); t = (struct Texture*) malloc(sizeof(struct Texture) * (d -> texNumber)); DEVIL1TEX.gettextures(t, i, filedata, filesize); for (j = 0; j < d -> texNumber; j++) { sprintf(fmt, "%s_%d.dds", filename, id); write(fmt, (char*)t[j].data, d -> textureSize); id++; } free(t); } free(fmt); return; } int main(int argc, char ** argv) { char *f = argv[1]; unsigned int bufsize = 0; char *buffer = loadfile(f, &bufsize); extracttextures(buffer, bufsize, f); free(buffer); return 0; }