| Разработка и ромхакинг > Ромхакинг и программирование |
| Palette convrerter 24<->15bpp |
| << < (3/3) |
| Mr2:
--- Цитата: dedok179 от 14 Май 2020, 10:57:23 ---Ты гуй вручную пишешь? Я как-то пробовал ради интереса, такой гемор :wacko: . --- Конец цитаты --- Не, в IDE. Скин перерисовывать надо, вот в чём вопрос :'(. --- Цитата: dedok179 от 14 Май 2020, 10:57:23 ---Когда тебе еще помимо основного кода программы нужно интерфейс закодить --- Конец цитаты --- А ещё когда код на winApi, да и проект стартовал Junior. :lol: Ладно, всё это отмазки, как paul_met, найдёт вторую игру с такой фиговиной, так запилю(на коленке за 15 минут :blush:). |
| paul_met:
В Sonic R тоже используются 4bpp (LUT) текстуры для модельки соника. Если сбрасывать 15-й бит в палитре, то в окне отладчика эти текстуры тупо станут чёрными, хотя в самой игре это никак не отображается. |
| Sharpnull:
--- Цитата: Mr2 от 14 Май 2020, 10:24:06 ---В том-то и прикол, что никто писать не хочет --- Конец цитаты --- Обычно сами пишут и не выкладывают, потому что иногда нужно специфичное и нет смысла делать публичную протестированную версию. Даже в такой простой программе есть нюансы. Приводить цвета можно по-разному. Здесь для 24 ->15 для компоненты цвета используется формула: --- Код: ---min((c + 7) / 8, 31) --- Конец кода --- Но можно так: --- Код: ---c / 8 --- Конец кода --- Для 15 -> 25 здесь: --- Код: ---c * 8 --- Конец кода --- Но можно яркий вариант: --- Код: ---c * 255 / 31 # Целые числа, с округлением вниз round(c * 255.0 / 31.0) # Вещественные, с округлением до ближайшего (зависит от round) --- Конец кода --- Формат ACT от Photoshop описан (https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577411_pgfId-1070626) так: Размер файла 768 или 772 байт и содержит 256 RGB цветов. Первый цвет - индекс 0. Байты идут красный, зелёный, синий. Если размер файла 772 байт, то 4 доп. байта: 2 байта - количество используемых цветов (Big-Endian, 01 00 - 256 цветов), 2 байта - индекс прозрачного цвета (Big-Endian, 00 FF - 255 (последний) цвет). Там не написано, но сам Photoshop ставит прозрачный цвет в FF FF, если не используется. При чтении файла .act можно учитывать указанное количество цветов, чтобы вручную не обрезать. Чтение нестандартных .act, у которых размер меньше 768 - хорошо, но запись в .act можно сделать по стандарту. paul_met, прикрепил мой вариант повторяющий функции на Python 3 (желательно последний) через CLI (командная строка). Вариант черновой и таким наверно останется, интерфейс и названия не очень, тесты не написаны и не проверено. UPD: Добавлена установка 15-го бита :) --- Код: ---# 24 -> 15, Little-Endian порядок байтов у 15bit pal_conv.py input.act output.littlepal # 15 -> 24 pal_conv.py input.littlepal output.act -t24 # Big-Endian порядок байтов у 15bit pal_conv.py input.act output.bigpal -be # 15-й бит установлен в 1 pal_conv.py input.act output.littlepal -1 # Вырезать из input 90 байт, начиная с 3-го байта (30 цветов) pal_conv.py input.act output.littlepal -si 3:90 # Вставить 8 байтов в файл, начиная с 10-го байта (4 цвета) pal_conv.py input.act output.littlepal -so 10:8 --- Конец кода --- Аргументы можно объединять. Начало и конец у -si/-so можно опускать. UPD2: Числа у -si/-so можно указывать в HEX: -si 0x10:0x20. Также в bin (0b1010), oct (0o777). |
| Mr2:
--- Цитата: Sharpnull от 14 Май 2020, 16:01:40 ---Обычно сами пишут и не выкладывают, потому что иногда нужно специфичное и нет смысла делать публичную протестированную версию. --- Конец цитаты --- Тут речь о том, что каждый может написать(для нужд трудящихся), но делать этого они не будут. :lol: --- Цитата: Sharpnull от 14 Май 2020, 16:01:40 ---Даже в такой простой программе есть нюансы. --- Конец цитаты --- И тут все мамкины кодеры в одни голос воскликнули. --- Цитата: Sharpnull от 14 Май 2020, 16:01:40 ---При чтении файла .act можно учитывать указанное количество цветов, чтобы вручную не обрезать. Чтение нестандартных .act, у которых размер меньше 768 - хорошо, но запись в .act можно сделать по стандарту. --- Конец цитаты --- Да, подровнять палитру под фотошоповский формат стоит. |
| paul_met:
Sharpnull, ДА уже, вроде как, разобрались с этим. |
| ALXR:
--- Цитата: Sharpnull от 14 Май 2020, 16:01:40 ---... paul_met, прикрепил мой вариант повторяющий функции на Python 3 (желательно последний) через CLI (командная строка). Вариант черновой и таким наверно останется, интерфейс и названия не очень, тесты не написаны и не проверено. UPD: Добавлена установка 15-го бита :) ... --- Конец цитаты --- --- Код: --- fmt_group.add_argument('-1', '--one', action='store_true', help='15th bit is set') // ... if args.one: bit15 = 1 // ... c |= bit15 << 15 --- Конец кода --- А если бы у тебя галочка, то так просто бы не отделался :lol: |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |