Page 1 of 1

BMP2TSConf

PostPosted: Thu, 17.07.2014 17:07:25
by LessNick
Писал сабж чисто для себя. Но возможно пригодится кому-нибудь ещё.

Image

Как ясно из названия, утилита позволяет перегнать картинку и виндошного формата BMP в формат дампа памяти TSConf.
На вход подаётся файл BMP, на выходе получаем два файла собственно SPR (дамп памяти) и PAL (палитра).

По у молчанию палитра обрезается до 64х цветов. Дабы не было в дальнейшем неожиданностей, почему тот или иной цвет преобразовался не корректно,
рекомендуется придерживаться следующей палитры:

Image

Если добавить ключ --shim, то будут сохранены полные 256 цветов (256 градаций на компоненту преобразованные в 25 градаций на компоненту).
Так же для отладки и проверки правильность преобразования цветов и пикселей есть режим --debug. Можно перенаправить
результат работы в файл и там уже рассмотреть отчёт. Например:

Code: Select all
bmp2tsconf.exe file.bmp --debug > debug.log


На выходе получим три файла file.spr, file.pal и собственно сам отчёт в debug.log

Утилита автоматически определяет количество используемых цветов. Если их меньше 16, то данные хранятся в формате 4 бита на точку, то есть в одном байте, сразу описываются цвета на 2х соседних точки. Если же цветов больше 16 и/или включен режим ШИМ, то на описание одной точки отводится все 8 бит (1 байт на точку).

Так же стоит помнить, что при отображении 16ц спрайтов, 0й цвет в палитре считается прозрачным. Об этом стоит помнить при использовании программы по типу PhotoShop. Эта «многомудрая» программа любит сортировать палитру по своему усмотрению, ни у кого не спрашивая. При этом передвинуть или изменить последовательность индексированных цветов не представляется возможным.

Например, нарисуем спрайт 16x16 белую рамку. Пурпурный фон будет у нас прозрачный цвет. Преобразуем в индексированные цвета и увидим, что 0й цвет не пурпурный, а белый.

Image

Поэтому стоит помнить, что лучше сначала полностью залить спрайт нужным нам цветом (в данном случае пурпурным), преобразовать в индексированные цвета, а затем уже добавить остальные 15 или меньше из которых состоит спрайт.

После того как определились с палитрой и спрайт готов, сохраняем файл в формате BMP:

Image

Утилита не поддерживает упаковку по RLE, поэтому снимите соответствующий чекбокс, в противном случае вы получите сообщение об ошибке

Code: Select all
Error: Compressed file not supported yet.


Так же стоит снять чекбокс «Flip row order» (если он был установлен) в противном случает изображение будет перевёрнуто вверх ногами.

Далее выбираем 4bit если спрайт состоит из 16 (или меньше) цветов или выберите формат 8bit если цветов больше.

теперь выполним команду преобразования…

Code: Select all
bmp2tsconf.exe file.bmp --debug > debug.log


…и получим искомые файлы.

Вот пример как выглядит наш файл, если включить режим 8bit:

Image

А так, если задать 4bit:

Image

Как видно 0й цвет у нас прозрачный, а 1м нарисована наша рамка.

Если открыть лог, то там более развёрнуто всё написано, что во что преобразовано:

Code: Select all
BMP palette:
---------------------------------
BMP use calculated colors: 3

           No #      R   G   B        R   G   B        pentevo    xRRrrrGG gggBBbbb
BMP color   0[#00] [#FF,#00,#FF] ->  24,  0, 24 ->  96, 24[#6018] 01100000 00011000
BMP color   1[#01] [#FF,#FF,#FF] ->  24, 24, 24 ->  99, 24[#6318] 01100011 00011000
BMP color   2[#02] [#00,#00,#00] ->   0,  0,  0 ->   0,  0[#0000] 00000000 00000000


Не смотря на работоспособность, утилита всё ещё альфа версия, если обнаружите глюки или ляпы, пишите, будем править.

Спасибо за внимание. :smoked:

Re: BMP2TSConf

PostPosted: Mon, 21.07.2014 23:43:49
by LessNick
Залил исправленную версию, что-то я там намутил с корректировкой палитры. Теперь выгружается как есть без фокусов.

Re: BMP2TSConf

PostPosted: Wed, 01.07.2020 20:35:17
by Hmmm
Windows 7 x64 не запускается прога

Re: BMP2TSConf

PostPosted: Thu, 02.07.2020 01:36:46
by TS-Labs
У меня вин7-64 - запускается.

Re: BMP2TSConf

PostPosted: Thu, 02.07.2020 17:03:55
by LessNick
Hmmm wrote:Windows 7 x64 не запускается прога


Открывается чёрное окошко и исчезает? :smoke: