as i can see frame buffer holds pixel color,
each cell can hold 1 of 256 different colors.
The palette itself is a kind of 16 color. As you can see it is diagonal symmetric. And it seems that each pixel is coded by nibble, not by byte. So the resolution is the same as for image buffer - 720x240. When we use the same nibbles (i.e. 0x11, 0x22, etc.), the color looks solid. Whet nibbles are different, it seems there is a dithering of colors.
Q: btw. why there are two frame_buffers [2] ?
Because one of them is active, and the other is non-visible. When Canon's firmware wants to draw something, it draws in the non-visible buffer and then exchanges (flips) the buffers. This helps to avoid flickering.
But CHDK does not know which buffer is active/non-visible at the moment, so CHDK draws in the both simultaneously.