I believe this is a job for ... uber-Ficedula!
Well, maybe just normal me. But anyway...
This is a lossy but simple method of texture compression. I *think* it looks very similar to S3TC, but I'm not sure (I've never had to actually deal with data in S3TC format of course, I always let the video card handle that for me).
Anyway. Format 9. Each "block" of data is 64 bits (8 bytes long), and defines 16 pixels, which is very efficient. Essentially it uses a tiny palette, and to save even more space, half the palette is just interpolated colours.
First 2 bytes of data give you colour 0 in the palette, stored in 5-6-5 format.
Next 2 bytes give your colour 1 in the palette, again in 5-6-5 format.
What about colours 2 and 3? Interpolate them. Colour 2 would be 1/3 of the way in between Col0/Col3, colour 3 would be 2/3 of the way in between.
Then you have 32 bits of data (4 bytes) giving the actual pixel data. Each pixel has 2 bits which - surprise! - is the index into the 4 colour palette you've just built. 16 pixels takes up the full 32 bits of remaining data.
The 4x4 matrix you've specified shows what order the pixels are stored in. The data seems reversed horizontally because of Intel byte ordering, I presume.
Does that explain it ... or not? (Didn't seem *that* hard to me, but then, I'm used to working from incomplete specs ... our hardware department is a great one for that...)