Cache Format
General Information
The old engine cache is made up two types of files.
Data file
The data file holds all of the files in the cache and is named main_file_cache.dat. It is therefore very big, typically ~10-20 megabytes.
Index file
There are several index files, named main_file_cache.idx and then postfixed with a number. Each index file holds 'pointers' to where a file is located in the main cache. Each index file represents a type of file.
Index file format
The index file is made up of 6 byte blocks which hold information about where a file can be located in the data file. The format of a single block is as follows:
tribyte fileSize tribyte initialDataBlockId
The first block represents file 0, the second block represents file 1, and so on.
The fileSize is the file size in bytes. The initialDataBlockId is the id of the first block in the data file which represents the specified file.
Data file format
The data file is made up of 520 byte blocks. The format of each of these blocks is as follows:
short nextFileId short currentFilePartId tribyte nextDataBlockId byte nextFileTypeId byte[512] blockData
Files, if necessary, are split up into multiple parts (i.e. if a single file is bigger than 512 bytes).
The nextFileId is the id of the next file in the block. The currentFilePartId is the part id of the current file. The first 520 byte block of a file will have id 0, the second will have 1, and so on. The nextDataBlockId is the id of the next 520 byte block of the file. The nextFileTypeId is the id of the next file type. This should remain the same over a whole file.
The blockData is the part of the file data itself. It is always 512 bytes even if the part of the file is smaller.