Автор Тема: Palette convrerter 24<->15bpp  (Прочитано 8059 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8076
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Palette convrerter 24<->15bpp
« Ответ #30 : 13 Май 2020, 18:28:06 »
Сильно сомневаюсь. В 15bpp обычно используют отдельный цвет для прозрачности.
Речь не про 15bpp, а про 4bpp. Да и что значит "обвешивать"? Там то и так настроек с гулькин нос.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: Palette convrerter 24<->15bpp
« Ответ #31 : 13 Май 2020, 18:40:15 »
Речь не про 15bpp, а про 4bpp.
4bpp палитра не поддерживается конвертером. o_0

Да и что значит "обвешивать"? Там то и так настроек с гулькин нос.
GUI переделывать придётся, и код писать для дополнительной галочки. Если всё это нужно для одной игры, то зачем эта заморочка?
В любом случае, сейчас занят другим вопросом, в ближайшем времени обновлений не будет. ;)

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4416
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #32 : 13 Май 2020, 19:31:05 »
GUI переделывать придётся, и код писать для дополнительной галочки.
:lol: :lol: :lol:

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8076
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Palette convrerter 24<->15bpp
« Ответ #33 : 13 Май 2020, 20:28:16 »
4bpp палитра не поддерживается конвертером.
Ещё как поддерживается. Сколько цветов в исходнике, столько и на выходе (не больше).

GUI переделывать придётся, и код писать для дополнительной галочки. Если всё это нужно для одной игры, то зачем эта заморочка?
Да очевидно же, что это не может быть для одной игры. Если ты дальше хака MK4 не шагаешь, то стоило бы призадуматься. Да и что там писать то? Пару строк (одна на проверку отмеченной галочки, другая "OR $8000").

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #34 : 13 Май 2020, 20:54:30 »
Ещё как поддерживается. Сколько цветов в исходнике, столько и на выходе (не больше).
:wacko:

Да очевидно же, что это не может быть для одной игры.

В теории - да. На практике нет. Какой смысл в каждом цвете поднимать флаг отображения(color_visible =1)? Проще поднять флаги невидимости(color_invisible =1) в тех цветах что должны быть невидимыми. Скорее всего это сделано под функции движка игры и не является каким-то стандартом.

Если ты дальше хака MK4 не шагаешь, то стоило бы призадуматься.

Ты мне факты а не советы давай, что за формат такой, в скольких играх встретился, файлы на экспертизу. ^_^

Да и что там писать то? Пару строк (одна на проверку отмеченной галочки, другая "OR $8000").
Я про то и говорю, напиши себе утилиту пост обработки: грузишь палитру, прописываешь в каждый цвет флаг прозрачности. Или тебе принципиально в конвертер это нужно всунуть?  :?

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8076
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #35 : 14 Май 2020, 00:26:11 »
Ты мне факты а не советы давай, что за формат такой, в скольких играх встретился, файлы на экспертизу.
Какая разница в скольких играх встретился этот случай? Если он имеет место, значит логично его учитывать. Или я прошу слишком много?
Вот тебе пример - игра Vandal Hearts (Saturn). Текстуры в формате 4bpp. Если в палитре для этих текстур 15-й бит не равен 1, то цвета будут отображаться некорректно.

Я про то и говорю, напиши себе утилиту пост обработки: грузишь палитру, прописываешь в каждый цвет флаг прозрачности. Или тебе принципиально в конвертер это нужно всунуть? 
Какой смысл писать новую утилиту из-за пары строк, которые уместно запихнуть в твою? Твоя утилита конфертит цвета ,кодированные 3-мя байтами, в оные из 2х байт. Так почему бы не конвертировать их с учётом некоторых исключений, которые есть всегда?

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #36 : 14 Май 2020, 08:46:56 »
Какая разница в скольких играх встретился этот случай? Если он имеет место, значит логично его учитывать. Или я прошу слишком много?
Дело не в тебе, а в целесообразности. Для специфичных случаев, хакеры обычно пишут свои утилиты.

Вот тебе пример - игра Vandal Hearts (Saturn).

Круто, ждём вторую игру, и тогда будем решать этот вопрос. :drinks:

Текстуры в формате 4bpp. Если в палитре для этих текстур 15-й бит не равен 1, то цвета будут отображаться некорректно.
Так это текстуры в 4bpp формате а не палитра. Палитра то 15bpp.  :? Как я понял 15-й бит поднят в каждом цвете? То есть это делается не для прозрачности, а как активация неиспользуемого в палитре бита, который по дефолту обычно обнулён?

Какой смысл писать новую утилиту из-за пары строк, которые уместно запихнуть в твою?
Для личного пользования, чтоб в ручную не прописывать 15-й бит. А потом выпустишь сборник типа такого, в котором распишешь функционал, и для каких целей его применять. :thumbup:

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #37 : 14 Май 2020, 09:58:46 »
Сыр-бор из-за писюльки, которая пишется за 15 минут на коленке  :wacko: И автор, которому лень добавить галку, потому что надо к ней код писать  :lol: Страсти-то какие...

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #38 : 14 Май 2020, 10:24:06 »
Сыр-бор из-за писюльки, которая пишется за 15 минут на коленке  :wacko:

В том-то и прикол, что никто писать не хочет. Все ждут когда Mr2 сделает всю грязную работу. :-\
А потом ещё и напишут:"ради этой писюльки ты IDE расчехлял?" :lol:

И автор, которому лень добавить галку, потому что надо к ней код писать  :lol: Страсти-то какие...
"Стыдно должно быть товарищ".(тыж программист)

Оффлайн dedok179

  • Пользователь
  • Сообщений: 496
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #39 : 14 Май 2020, 10:57:23 »

В том-то и прикол, что никто писать не хочет. Все ждут когда Mr2 сделает всю грязную работу. :-\
А потом ещё и напишут:"ради этой писюльки ты IDE расчехлял?" :lol:
"Стыдно должно быть товарищ".(тыж программист)
Ты гуй вручную пишешь? Я как-то пробовал ради интереса, такой гемор :wacko: . Когда тебе еще помимо основного кода программы нужно интерфейс закодить

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #40 : 14 Май 2020, 11:12:14 »
Ты гуй вручную пишешь? Я как-то пробовал ради интереса, такой гемор :wacko: .
Не, в IDE. Скин перерисовывать надо, вот в чём вопрос :'(.

Когда тебе еще помимо основного кода программы нужно интерфейс закодить
А ещё когда код на winApi, да и проект стартовал Junior. :lol:

Ладно, всё это отмазки, как paul_met, найдёт вторую игру с такой фиговиной, так запилю(на коленке за 15 минут :blush:).

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8076
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #41 : 14 Май 2020, 11:33:57 »
В Sonic R тоже используются 4bpp (LUT) текстуры для модельки соника. Если сбрасывать 15-й бит в палитре, то в окне отладчика эти текстуры тупо станут чёрными, хотя в самой игре это никак не отображается.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #42 : 14 Май 2020, 16:01:40 »
В том-то и прикол, что никто писать не хочет
Обычно сами пишут и не выкладывают, потому что иногда нужно специфичное и нет смысла делать публичную протестированную версию.

Даже в такой простой программе есть нюансы.
Приводить цвета можно по-разному.
Здесь для 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).
« Последнее редактирование: 14 Май 2020, 16:10:23 от Sharpnull »

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #43 : 14 Май 2020, 16:19:06 »
Обычно сами пишут и не выкладывают, потому что иногда нужно специфичное и нет смысла делать публичную протестированную версию.
Тут речь о том, что каждый может написать(для нужд трудящихся), но делать этого они не будут.  :lol:

Даже в такой простой программе есть нюансы.
И тут все мамкины кодеры в одни голос воскликнули.

При чтении файла .act можно учитывать указанное количество цветов, чтобы вручную не обрезать. Чтение нестандартных .act, у которых размер меньше 768 - хорошо, но запись в .act можно сделать по стандарту.
Да, подровнять палитру под фотошоповский формат стоит.

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8076
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #44 : 14 Май 2020, 16:47:13 »
Sharpnull, ДА уже, вроде как, разобрались с этим.

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #45 : 14 Май 2020, 17:13:56 »
...
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:

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1584
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Palette convrerter 24<->15bpp
« Ответ #46 : 23 Ноябрь 2023, 13:57:49 »
Palette converter v1.3
*По ссылке переходить с установленным в браузер Adblock.