BMP2TSConf
Posted: Thu, 17.07.2014 17:07:25
Писал сабж чисто для себя. Но возможно пригодится кому-нибудь ещё.
Как ясно из названия, утилита позволяет перегнать картинку и виндошного формата BMP в формат дампа памяти TSConf.
На вход подаётся файл BMP, на выходе получаем два файла собственно SPR (дамп памяти) и PAL (палитра).
По у молчанию палитра обрезается до 64х цветов. Дабы не было в дальнейшем неожиданностей, почему тот или иной цвет преобразовался не корректно,
рекомендуется придерживаться следующей палитры:
Если добавить ключ --shim, то будут сохранены полные 256 цветов (256 градаций на компоненту преобразованные в 25 градаций на компоненту).
Так же для отладки и проверки правильность преобразования цветов и пикселей есть режим --debug. Можно перенаправить
результат работы в файл и там уже рассмотреть отчёт. Например:
На выходе получим три файла file.spr, file.pal и собственно сам отчёт в debug.log
Утилита автоматически определяет количество используемых цветов. Если их меньше 16, то данные хранятся в формате 4 бита на точку, то есть в одном байте, сразу описываются цвета на 2х соседних точки. Если же цветов больше 16 и/или включен режим ШИМ, то на описание одной точки отводится все 8 бит (1 байт на точку).
Так же стоит помнить, что при отображении 16ц спрайтов, 0й цвет в палитре считается прозрачным. Об этом стоит помнить при использовании программы по типу PhotoShop. Эта «многомудрая» программа любит сортировать палитру по своему усмотрению, ни у кого не спрашивая. При этом передвинуть или изменить последовательность индексированных цветов не представляется возможным.
Например, нарисуем спрайт 16x16 белую рамку. Пурпурный фон будет у нас прозрачный цвет. Преобразуем в индексированные цвета и увидим, что 0й цвет не пурпурный, а белый.
Поэтому стоит помнить, что лучше сначала полностью залить спрайт нужным нам цветом (в данном случае пурпурным), преобразовать в индексированные цвета, а затем уже добавить остальные 15 или меньше из которых состоит спрайт.
После того как определились с палитрой и спрайт готов, сохраняем файл в формате BMP:
Утилита не поддерживает упаковку по RLE, поэтому снимите соответствующий чекбокс, в противном случае вы получите сообщение об ошибке
Так же стоит снять чекбокс «Flip row order» (если он был установлен) в противном случает изображение будет перевёрнуто вверх ногами.
Далее выбираем 4bit если спрайт состоит из 16 (или меньше) цветов или выберите формат 8bit если цветов больше.
теперь выполним команду преобразования…
…и получим искомые файлы.
Вот пример как выглядит наш файл, если включить режим 8bit:
А так, если задать 4bit:
Как видно 0й цвет у нас прозрачный, а 1м нарисована наша рамка.
Если открыть лог, то там более развёрнуто всё написано, что во что преобразовано:
Не смотря на работоспособность, утилита всё ещё альфа версия, если обнаружите глюки или ляпы, пишите, будем править.
Спасибо за внимание.
Как ясно из названия, утилита позволяет перегнать картинку и виндошного формата BMP в формат дампа памяти TSConf.
На вход подаётся файл BMP, на выходе получаем два файла собственно SPR (дамп памяти) и PAL (палитра).
По у молчанию палитра обрезается до 64х цветов. Дабы не было в дальнейшем неожиданностей, почему тот или иной цвет преобразовался не корректно,
рекомендуется придерживаться следующей палитры:
Если добавить ключ --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й цвет не пурпурный, а белый.
Поэтому стоит помнить, что лучше сначала полностью залить спрайт нужным нам цветом (в данном случае пурпурным), преобразовать в индексированные цвета, а затем уже добавить остальные 15 или меньше из которых состоит спрайт.
После того как определились с палитрой и спрайт готов, сохраняем файл в формате BMP:
Утилита не поддерживает упаковку по 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:
А так, если задать 4bit:
Как видно 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
Не смотря на работоспособность, утилита всё ещё альфа версия, если обнаружите глюки или ляпы, пишите, будем править.
Спасибо за внимание.