Michael Knapp offers this explanation:
I have programmed myself an MSVC decompressor so I know where the exact problem is … so I think that I can explain the reason
8bit-MSVC stores:
- one color for a 4×4 pixel block (needs 2 bytes)
- two colors for a 4×4 pixel block where a 16bit bitmask selects color 0 or 1 (needs 5 bytes)
- two colors for a 2×2 pixel block where 4 of the are placed together to a 4×4 pixel block that means 8 colors for a 4×4 block and a 16bit bitmask, each 4bit-nibble selects one of the two colors stored for each of the 2×2 sub blocks (needs 11 bytes) (it uses a palette and supports difference frames)
15bit-MSVC stores:
- one color for a 4×4 pixel block (needs 2 bytes)
- the two colors for a 4×4 pixel block are NOT supported
- two colors for a 2×2 pixel block where 4 of them are placed together to a 4×4 pixel block that means 8 colors for a 4×4 block and a 16bit bitmask, each 4bit-nibble selects one of the two colors stored for each of the 2×2 sub blocks (needs 18 bytes) (it stores the 15bit color with in the data-stream bit it supports NO difference frames)
The impossibility to store ‘high-quality 4×4-blocks’ makes the MSVC videos so ‘blocky’