Here's two examples of what I've been able to decipher. The first is taken from a file called TEX0.bin, and the other from TEX1.bin:
Code:
ZLB found at 0000:0000 (1)
- 00 00 00 01 (1)
- 00 00 01 00 (256)
- 00 00 00 6d (109)
- 58 85 63 60 (1485136736)
* -1 extra bytes at EOB!
ZLB found at 0000:0000 (1)
- 00 00 00 01 (1)
- 00 00 01 00 (256)
- 00 00 00 6d (109)
- 58 85 63 60 (1485136736)
* 22143 extra bytes at EOB!
The ZLB block is not always at a 32-byte boundary. I find ZLB blocks starting at offsets: 0000:11b4, 000:3ecc (these are just two examples, there's more blocks that start on 4 and 12 byte boundaries). Could be a 4-byte boundary.
The next is always a big-endian 32-bit integer 1. At first, I thought the next appeared to be the uncompressed size of the block and the following 4 bytes might be the compressed size, but testing shows that the number sometimes over-shoots the beginning of the next block, or can be too short.
PS: they are not always 256 and 109, but it's interesting that two different files start out identical, except the second file's first block simply has a lot more bytes on it before the second ZLB block starts. After that, they don't seem to match up as well. The second file is, overall, much bigger than the first.
The following two bytes are always 0x58 0x85. Sometimes you can see a small pattern between blocks from this point , but the "farther out" into the block that you go, the less of a pattern you can find.
I'm not quite sure what this board's policy is about posting select files from a game, but I'd go on the side of caution and assume it's not allowed. If any of you happen to have the game and can get at those files though, I attached the source for the program I'm currently using to "read" the blocks.