помогите с таким текстурами
Написал в ЛС, жду название игры и какой должен быть цвет, так как есть варианты. Чтобы дописать скрипт.
Формат: заголовок 0x80 байт, в нём смещения 0xA и 0xB по 1 байту - 2^N ширина и высота, потом данные изображения - 8bpp, тайлы 8x4, потом палитра 0x400 байт - для каждого пикселя взять 2 байта и взять со смещением + 0x200 ещё 2 байта, из последней пары 0-й байт отвечает за прозрачность, а какие отвечают за RGB не ясно без сравнения с игрой.
UPDИгра [
Wii]
CoralineХранение данных изображения стандартное для Wii - Color Index 8-bits (C8)
https://pokeacer.xyz/wii/pdf/WiiGraphicsPrimer.pdf (страница 62), но палитра RGBA8, которая должно быть конвертируется в RGB5A3. Я не проверял насколько правильно распакованы .dxt файлы, тестировал на предоставленных мне.
Скрипт на Python 3 + PIL:
https://gist.github.com/infval/3d12781f57e891d2905212f5aaebc6c5. Скачать: ПКМ на Raw, Сохранить объект как... .
ИнструкцияУстановить последний Python 3, для установки PIL в командной строке выполнить команду:
pip install -U pillow. Чтобы распаковать все .dxt файл в текущей папке, просто запустить скрипт. Чтобы распаковать отдельный файл, аргументом указать путь до .dxt (
или перетащить на скрипт в Windows):
dxt_to_png.py filename.dxt
Чтобы перепаковать, указать путь до PNG (
или перетащить на скрипт в Windows):
dxt_to_png.py filename.dxt.png
В папке должен быть filename.dxt, который будет изменён.
Скрипт сохраняет PNG в формате RGBA 32 бита (не индексированный), хотя PIL поддерживает сохранение в индексированный цвет + альфа-прозрачность, но так удобнее. После редактирования, перед запаковкой, нужно уменьшить количество цветов до 256, для этого я использую
Color quantizer, в котором нужно выбрать 256 цветов, нажать ОК и сохранить.