#ifndef __NEWER_RANDTILES_H #define __NEWER_RANDTILES_H #include #include "fileload.h" #define RAND_CHECK_HORZ #define RAND_CHECK_VERT #define RAND_CHECK_BOTH struct RandTiles_Header { u32 magic; u32 sectionCount; }; struct RandTiles_Section { u32 nameHash; u32 entryCount; }; struct RandTiles_Entry { u16 startTile; u16 endTile; u8 count; u8 type; u16 reserved; u32 dataOffset; }; inline u32 RandTiles_GetSectionCount(void *file) { return ((RandTiles_Header*)file)->sectionCount; } inline u32 *RandTiles_GetOffsets(void *file) { return (u32*)(((RandTiles_Header*)file)+1); } inline RandTiles_Section *RandTiles_GetSection(void *file, int id) { u32 offs = RandTiles_GetOffsets(file)[id]; return (RandTiles_Section*)(((char*)file)+offs); }; inline RandTiles_Entry *RandTiles_GetTiles(void *file, RandTiles_Section *section) { return (RandTiles_Entry*)(section+1); } inline RandTiles_Entry *RandTiles_GetTiles(void *file, int sectionID) { return (RandTiles_Entry*)(RandTiles_GetSection(file, sectionID)+1); } inline char *RandTiles_GetName(void *file, RandTiles_Section *section) { return ((char*)file)+section->nameOffset; } inline u16 *RandTiles_GetData(void *file, RandTiles_Entry *entry) { return (u16*)(((char*)file)+entry->dataOffset); } u32 djb2(u8 *str); RandTiles_Section *RandTiles_Search(void *file, u32 nameHash); #endif