Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - bqio

Страницы: [1]
1
Не понятно что именно нужно. PIL не работает с тайлами, все преобразования для получения обычной картинки, где пиксели идут слева направо и сверху вниз, нужно делать самому. Скорее всего есть пакеты/код для работы с тайлами, но самому не проблема сделать. Если речь про увеличение картинки 8x8 > 16x16, есть resize(). Если нужно 4 тайла 8x8 расставить слева направо и сверху вниз, пишите обычный код на Python, например во внешнем цикле вычисляйте X, Y верхнего левого угла тайла в конечной картинке (16x16) и от него записывайте тайл. Возможно проще использовать возможность PIL писать в пиксели по X, Y (https://pillow.readthedocs.io/en/stable/reference/PixelAccess.html). Для общего кода можно сделать метод, который принимает тайлы (tileset), размер карты (map) и индексы тайлов (tilemap), для вдохновения можно посмотреть формат в программе Tiled.
UPD: Ещё есть ленивый, но скорее всего медленный вариант. У вас есть в конце кода готовый тайл (image), можно сделать так 4 раза и наложить эти 8x8 тайлы как отдельные картинки на картинку 16x16 через PIL, только указать X, Y угла (https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.paste). Для 16x16 можно использовать в цикле готовые координаты: ((0,0), (8,0), (0,8), (8,8)).

Ну то есть вы вот так имели ввиду, да? Всё получилось, спасибо  :)

https://gist.github.com/bqio/768a7bb9a805c9c45c614b27aef82cf4

Во вложениях результат работы. Но по-моему я всё-таки где-то накосячил в палитре.  :neznayu:

2
Sharpnull, не подскажите, как можно превратить 8x8 тайлы в 16x16 через Pillow?

https://gist.github.com/bqio/768a7bb9a805c9c45c614b27aef82cf4

3
Я бы всё писал проще в одном файле, для одноразового кода нормально
У меня фобия на распределение кода. Во всём остальном спасибо, посмотрю позже.  :)

4
Не силён в питоне. Но вроде ничего такого в коде нет, что переворачивает байты. Может дамп кривой и в нём байты перевёрнуты. Попробуй открыть vram.bin в тайловом редакторе, если там всё нормально, то значит где-то в коде ошибка.
Вы оказались правы, оказывается у меня был повреждён vram.bin. Правда каким образом, не понятно. Сдампил через Gens 11 r57shell mod и всё корректно достаётся.  :neznayu:

5
Что здесь не так можно сказать, только увидев код. Возможно, ты читаешь данные не побайтно, о по словам или лонгами и у тебя байты переворачиваются. Так видится по крайней мере
https://github.com/bqio/langrisser-sprites

6
Не знаете, что может быть не так? На первом скрине то, что вытаскивается у меня, на втором оригинал.

7
Это легко и полностью делается на Python + PIL (Pillow). Палитру можно читать из рома. Для VRAM не знаю какой порядок, но там тоже не сложно.

Оффсет палитры внутри рома не подскажите? Или он индивидуален у каждой игры?

8
Тот который в байтах "0B GR", т. е. для белого "0E EE". Тут обычный Big-Endian, так будет записано в самом роме. Я имел в виду узнать какой порядок в нужном эмуляторе, например по игре, или будет видно по формату по чётным позициям в CRAM: "0x xx" - правильно, "xx 0x" - обратный, или как BizHawk - особый, потом конвертируйте туда-сюда.
Ну моя конечная цель стоит в ручной распаковке некоторых изображений из VRAM, приведением их в RGB формат "скрестив" с палитрой и превращением в 16x16 bmp. Потому что в игре спрайты персонажей чанками поделены на 8x8.  ^_^

9
Для CRAM используйте что удобно, просто узнайте правильной порядок и учитывайте это.

Как я понял правильный, это LittleEndian?  :)

10
Как-то так вышло в итоге. Ничего не упустил?

https://gist.github.com/bqio/768a7bb9a805c9c45c614b27aef82cf4

11
Порядок байтов у вас неверный в CRAM (GR 0B, а должно быть 0B GR) и размер должен быть 0x80 (128) байт (не знаю почему у Gens больше, VSRAM впихнуть могли). Это из-за создателя Gens, который для удобства везде менял порядок байтов, теперь эта путаница везде встречается и в некоторых форках Gens могли исправить.
UPD3: Посмотрел CRAM в BizHawk, они там накосячили и выводят белый цвет (0E EE) как 01 FF. Похоже объединили биты и получилось 0000 000B BBGG GRRR.
Так какой лучше эмулятор использовать для корректного дампа CRAM и VRAM?

Regen вроде правильный порядок дампит уже. Размер правда, всё также, 512 байт, вместо 128.

12
То есть значения цветов будут разниться в зависимости от окружения (эмулятора)?

В моём случае вообще такая формула выходит:

r = (i >> 1) & 7;
g = (i >> 5) & 7;
b = (i >> 9) & 7;

Genesis Save State Viewer вообще 146 показывает...

253059-0

13
Здравствуйте! Назрел вопрос по поводу палитры на SMD/Genesis.

Прочитав в интернете информацию выяснил следующее:
- Формат палитры 9bit RGB;
- Палитра хранится в CRAM VDP;
- Цвет в палитре имеет формат: uint16 0000BBB0GGG0RRR0;

Запустил Gens Tracer, открыл ROM, нажал `.`, сдампил CRAM, RAM, SRAM, VRAM, VSRAM.

Открываю CRAM в хексе, вижу следующее:

253061-0

Начинаю разбирать формат, первый цвет чёрный, пропускаем его, а вот второй уже серый, но я не могу понять один момент.

В хексе это 0x0888
В бинаре это 0000 100 0 100 0 100 0

Соответственно получаем:

R: 100 (4)
G: 100 (4)
B: 100 (4)

Проверил палитру в Tile Molester, он показывает на этом цвете 128 128 128. Где я что не так понимаю?

253063-1

14
Здесь он вампир
А, всё, пардон. :? Хак не прохожу до полного его релиза, поэтому не было возможности посмотреть.  :)

15
Faias по канону и является вампиром (здесь в оригинале был демоном), внешне от других вампиром не отличается ничем особым.
Я про это и имел ввиду, я знаю, что он вампир. Просто на сеге у него спрайт и портрет демона, хотя в игре есть спрайт/портрет вампира. Вы оставите ему спрайт демона, или дадите вампира?

16
В ROM'е графика сжата что-ли? Не могу открыть через YY-CHR и Tile Layer.  :neznayu:

Из предложений:
Будет ли заменён портрет и спрайт Faias'a на вампира? Никогда не понимал, почему они его в SMD сделали обычным демоном.

17
В Варсонге класс Хаоса как раз Хаос. И богов тьмы как минимум двое.

Тогда хотя бы просто God, потому что Chaos Chaos смотрится очень странно. Это как написать Lushiris Lushiris вместо Lushiris Goddess.

18

Добавлено позже:
 :hi:


Добавлено позже:

Наверное Хаосу всё-таки нужно присвоить класс God of Darkness.

19
Цитата
В редактирование поведения ИИ я не вникал и вникать пока не собираюсь, ибо работа кропотливая. Базовые настройки типа оборона, атаковать, спать и т.д. можно, а сложные скрипты поведения для меня неприступны. Тут одну Дюну ковыряли почти 15 лет, чтобы разобрать от и до, и то не одним человеком. А я пока один =)

Было бы неплохо поделиться текущими техническими наработками, дабы помощь подтянулась, если она есть :)

20
А можно небольшой гайдик по оффсетам?

Страницы: [1]