Тулза для перегонки картинков в 256с.
Инструкция.
1. Качаем
xnview.
2. Ресайзим в нем картинку до нужного разрешения.
3. Конвертим в нужное количество цветов: Image -> Convert to colors. (Вопрос: почему это нельзя сделать автоматически? Ответ: потому что конверсия в кастрированное число цветов - вещь тонкая, и надо контролировать результат визуально.) "Нужное" здесь - либо 256, если хотим статичное изображение с максимальным количеством цветов. Можно меньшее кол-во, например 128, тогда 128 ячеек палитры будет занято под картинку (скажем, в качестве фона), а еще 128 остается под спрайты поверх. Если нам нужно 16 цветов - сразу конвертим в 16 (но сохраняем все равно, как 256). Тогда и только тогда <file>.pix4 будет содержать правильные данные. Если исходный файл содержал более 16 цветов, они просто обрежутся и изображение в <file>.pix4 будет искажено.
4. Сохраняем: File -> Save as, выбираем формат TGA - Truevision Targa. В опциях НЕ включаем компрессию и поворот.
5. Запускаем конвертилку: tga2ts.exe <name>.tga.
6. На выходе получаем файлы <name>.tga.pal (содержащий палитру, готовую для загрузки в CRAM тсконфы) и <name>.tga.pix (содержащий пиксели для режима 256с).
7. Если нужна палитра для видео-ЦАП, добавляем -v после имени файла. В этом случае levels.map будет проигнорирован, а компоненты цвета для сконверченной палитры берутся из бит 3-7 исходной палитры.
Замечание 1.
В каталоге с tga2ts.exe может лежать файл levels.map, содержащий кривую преобразования уровней. При помощи нее вы сможете например правильно выставить гамму с реалом или добиться преобразования в цвета без шима.
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
Каждая строка должна содержать только число в диапазоне 0-255, числа обязаны идти по нарастающей.
Каждое число означает нижний порог текущей градации палитры тсконфы от 0 до 24 по порядку.
В примере выше:
0 - должен быть тут всегда, все что 0-9 в исходной палитре станет 0 в тсконфе
10 - значения от 10 до 19 будут сконверчены в значение палитры 1
20 ...
...
230 - ...
240 - значения выше 240 будут сконверчены в значение палитры 24
Замечание 2.
Поскольку xnview всегда сохраняет изображение с индексированными цветами в 8 бит, палитра всегда содержит 256 элементов. Те цвета, которые незадействованы, если выбрано менее 256 цветов, идут в конце и содержат нули. Поэтому файл <name>.tga.pal всегда будет иметь длину 512 байт (объем CRAM), а какую часть из него использовать - решаете вы.
Замечание 3.
Файл <name>.tga.pix содержит ровно те пиксели, из которых состоит картинки, не выравненные по 512 байт, не обрезанные, не дополненные пустыми байтами. Т.е. если картинка имела размер 73х115 пикселей, то файл <name>.tga.pix содержит 115 раз по 73 байта, т.е. 8395 байт. Как его грузить и как его укладывать в памяти - ваша проблема. (Апдейт: сейчас добавлено выравнивание по границе 16 бит.)
Замечание 4.
Тулза проверяет формат исходного файла на кошерность и вывалится при несоответствии. Если это произошло, а вы уверены что сконвертили картинку в правильный формат, пришлите ее сюда для исследования.
Ну и как пример - набор исходных, промежуточных файлов и конечного результата в прилагаемом архиве.