Весьма резонное дополнение, которое я почему-то упустил из внимания. Действительно, ведь помимо того, что цвета для 8-ми и 5-ти цветных вариантов отличаются, так ещё же есть и Специалист МХ, где можно задавать цвет фона.
Соответственно, тип можно хранить в виде количества цветов, вернее по номеру последнего цвета, если считать от нуля: 4, 7, 15. В этом случае вторая половина байта будет свободна под будущие нужды.
А вот где его хранить, вопрос интересный. Тип палитры для отображения нам нужно знать заранее, то есть удобнее хранить его вообще первым байтом. Но очень хочется иметь совместимость и с ч/б вариантом, с размером картинки 12 кб, чтобы просто откинуть информацию о цвете и иметь монохромную картинку. И если в варианте без компрессии всё равно где хранить информацию о палитре, то если всё-таки договориться о том, что по умолчанию можно использовать некоторый вид компрессии, то для просмотра таких картинок на реальном компьютере лучше иметь эту информация в несжатом виде, то есть в самом начале. Но опять же, если использовать сжатие, то лучше иметь разные его варианты, а это потребуется ещё одного байта с информацией о типе компрессии. И если принадлежность к картинке Специалиста у несжатого файла можно будет определять по его длине, то для сжатого файла потребуется какой-то заголовок. Можно, например отдельно сжимать пиксели, а отдельно цвет и потом их параллельно распаковывать при выводе на экран. И, соответственно в заголовке файла хранить области начала данных для пикселей и их цветов. Но, вероятно, всё-таки вариант со сжатием следует оставить для следующих итераций разработки формата. А для начала нужно подумать о несжатом формате.
В общем, как я предположил выше для совместимости с ч/б информацию о палитре лучше хранить после слепка видеоОЗУ: либо сразу после массива пикселей, либо в самом конце после информации о цвете. И мне кажется, что более логично всё-таки хранить эту информацию до массива данных о цвете, хотя это и лишает нас манёвра для расширения. Можно под возможное расширение и для выравнивание под 16 бит, зарезервировать ещё один байт. То есть вот так:
0x0000-0x2FFF: Данные о пикселях
0x3000: Тип палитры - 0x04, 0x07, 0x0F
0x3001: Резерв - 0x00
0x3002-0x6001: Данные о цветах