lib3ddevil1/include/devil1tex.h
2018-04-05 17:51:22 -07:00

60 lines
1.3 KiB
C

#ifndef DEVIL1TEX_H
#define DEVIL1TEX_H
#include <stdint.h>
#pragma pack(push, 1)
// disable struct padding
// to easily impose struct on plain data.
struct TexturePack {
char id[4];
int32_t batchNumber;
uint32_t firstBatchOffset; // <format=hex>
uint32_t unknownA;
};
struct TextureBatchDescriptor{
int32_t batchIdx;
uint32_t hash; // <format=hex>
uint32_t texNumber;
uint32_t unknownA[8]; // <format=hex>
uint32_t textureSize; // <format=hex>
uint32_t unknownB[30];
};
struct Texture {
// size of array is defined by descriptor
// textureSize
unsigned char *data;
};
struct TextureBatch {
// quantity of textures are defined by descriptor
// texNumber
struct Texture *batch;
};
#pragma pack(pop)
// re-enable stuct padding for whatever other reason.
void printtph(struct TexturePack*);
void printtbd(struct TextureBatchDescriptor*);
void gettbd(struct TextureBatchDescriptor**,
const char*,
unsigned int);
unsigned int gettexturebatch(
struct TextureBatch**,
struct TextureBatchDescriptor**,
const char*,
unsigned int);
void locatetextures(unsigned int*,
struct TexturePack*,
struct TextureBatchDescriptor**);
#endif