While exporting all of the .BMP files to, well, real .bmp files, one of them came back with an error: TEXTURES\MODELS\TELEPORT_FX\~SHAFT.BMP
Upon investigation, I found that it had a 3 for that mysterious value in the chunk header, unlike all the other files which had a 4. When it was 3, the chunk was uncompressed, meaning the chunk data in total was 5 bytes larger than the data it was representing.
No other values appeared in that field across all the .BMP files in the game. Additionally, all of the .BMP files are encoded in the chunked format; none of them are already Windows Bitmap files.
Here is the new document to reflect this:
Lemmings Revolution .BMP File format
-Decompressed data represents a Windows Bitmap file
File
=============================================================================
ChunkNum UInt8 The number of chunks in the file
Chunks Chunk[] The data chunks
=============================================================================
Chunk
=============================================================================
Header ChunkHeader Describes how the chunk is encoded
RawData Byte[] Only if Compression = 3 -- UnpackedSize bytes
Stream ROLZStream Only if Compression = 4
=============================================================================
ChunkHeader
=============================================================================
PackedSize UInt16 The total size of this chunk, including the header
UnpackedSize UInt16 The size of the data that this chunk represents
Compression UInt8 Compression type: 3 = none, 4 = ROLZ, else = bad
=============================================================================
ROLZStream
=============================================================================
RawTree BinTree Binary tree for raw byte counts
LengthTree BinTree Binary tree for distance/length lengths
DistanceTree BinTree Binary tree for distance/length distances
BitStream Byte[] Remainder of chunk
=============================================================================
BinTree
=============================================================================
The lower 4 bits of the first byte indicates how many additional values need
to be read from the input. If the value is 0, no additional input is needed
as the binary tree will not be used. If it's greater than 0, then add 2 to it
and read that many more values.
The values themselves are in 4-bit increments starting with the high bits of
the byte that contained the count, followed by however many bytes are
necessary to encode the remaining 4-bit values. For each byte, the lower 4
bits are read first, followed by the higher 4 bits.
The last byte may have 4 bits of padding so that the next data begins on a
byte boundary.
=============================================================================