![]() |
Реклама | |
![]() |
![]() |
#4302 | |||||||||||||||
Person Of The Community
![]() Регистрация: 28.01.2012
Адрес: Москва
Пол: Мужской
![]()
Сообщений: 95
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Последний раз редактировалось Zetper; 27.01.2025 в 23:53. |
|||||||||||||||
![]() |
![]() |
Сказали спасибо Zetper |
![]() |
#4303 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Person Of The Community
![]() Регистрация: 12.11.2023
Пол: Мужской
![]()
Сообщений: 89
![]() ![]() ![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
#4304 | |||||||||||||||
Person Of The Community
![]() Регистрация: 28.01.2012
Адрес: Москва
Пол: Мужской
![]()
Сообщений: 95
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Тайловая карта (от англ. tile — плитка) — это одно из множества изображений, на которые разбивается карта. Тайлы отображаются рядом друг с другом, создавая впечатление одной большой картинки. https://ru.wikipedia.org/wiki/%D0%A2...B8%D0%BA%D0%B0 Ещё есть способ отображать множество мелких картинок, это по координатам прям на экран игры. Например в заголовке перед каждой текстурой 64 на 64 могут стоят пару байт (скорей всего 4 байта) которые и обозначают координаты на экране игры. Чтоб понять что эти пару байт координаты надо сравнивать заголовки перед каждой картинкой и искать байты которые меняются, для проверки можно взять байты заголовка одной картинки и записать их в заголовок другой картинки и посмотреть в игре не переместилась ли часть картинки в другое место или нет. Я не разбирался какой именно вариант сборки картинки используется Yakuza. Выложи свою оригинальный текстуру без изменений для теста я её посмотрю. |
|||||||||||||||
![]() |
![]() |
Сказали спасибо Zetper |
![]() |
#4305 | ||||||||||||||||||||||||||||||
Person Of The Community
![]() Регистрация: 12.11.2023
Пол: Мужской
![]()
Сообщений: 89
![]() ![]() ![]() |
Нажмите
![]() ![]()
|
||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
#4306 |
Person Of The Community
![]() Регистрация: 28.01.2012
Адрес: Москва
Пол: Мужской
![]()
Сообщений: 95
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Нашёл у себя скрипт которым я конвертировал картинки из Yakuza но я там только частично разобрал форматы другие я не смог понять так что они не конвертируются, дописал туда сборку картинок из множества мелких одну большую.
![]() Нажмите
Вот моё неполное описание формата и не точное но примерное представление оно даёт о структуре файла. Внутри может быть разные форматы текстур картинок. Тайл это одна картинка, в идеале они всегда имеют одну ширину и высоту например 64 на 64. Их особенность в том тайлов(картинок) идут несколько подряд например их может быть 16 или 64. Частичное описание файла .SGT Заголовок файла 4 байта идентификатор 53 47 54 00(SGT ), 4 байта ширина полностью собранной картинки из мелких (Пример 512), 4 байта высота полностью собранной картинки из мелких (Пример 512), 4 байта непонятно ширина тайла ? (Пример 64), 4 байта непонятно высота тайла ? (Пример 64), 4 байта количество тайлов по ширине картинки (Это сколько тайлов ) (Пример 8), 4 байта количество тайлов по высоте картинки (Пример 8), 4 байта количество всех тайлов (Пример 64 тайла). 4 байта идентификатор 54 58 42 50(TXBP), 4 байта количество всех тайлов, 4 байта Непонятно, 20 байта нулей, Дальше идут повторяющиеся тайлы и их заголовок размером 32 байта. 4 байта размер блока картинки +32 байта заголовок, 4 байта ширина тайла, 4 байта высота тайла, 4 байта формат картинки, 4 байта идентификатор палитры, 2 байта идентификатор Mipmap если внутри несколько картинок которые записаны последовательно, 2 байта Непонятно, 4 байта Непонятно Номер картинки от 0 Странно иногда значение другое, 2 байта Непонятно Значение увеличивается на 1, 2 байта Непонятно, Дальше идёт палитра и картинка. ## Как собирается картинка С начало читаем сколько нужно тайлов по ширине и по высоте, создаём пустую картинку и заносим на неё тайлы. Сам алгоритм записи тайлов такой слева вниз, слева направо. Вот визуально как выстраивается картинка 8 тайлов в ширину 8 тайлов высоту, число это номер тайла (картинки) и где она должна находится записана в большой собранной картинки 512 на 512. 01 09 17 25 33 41 49 57 02 10 18 26 34 42 50 58 03 11 19 27 35 43 51 59 04 12 20 28 36 44 52 60 05 13 21 29 37 45 53 61 06 14 22 30 38 46 54 62 07 15 23 31 39 47 55 63 08 16 24 32 40 48 56 64 ## Скрипт делает некое представление как должен собираться картинка а не полноценный алгоритм работы по конвертации текстур, так что часть картинок не будут работать. Код скрипта написан на Python 3.9.5 https://www.python.org/downloads/windows/ скорей всего он будет работать и в более поздних версиях. Для работы с текстурами понадобится установить библиотеку pillow сокращённо PIL самый простой способ положить файл "Установка Pillow.bat" в папку Scripts где у тебя установлен Python пример C:\Users\oooo\AppData\Local\Programs\Python\Python39-32\Scripts и там его запустить .bat файл он установит Pillow. Как работает скрипт, рядом со скриптом кладёшь файл с расширением .SGT и запускаешь его, если всё прошло успешно появится папка Unpack и вней картинка в расширением .png Скрипт сборки картинки вложении. |
![]() |
![]() |
Сказали спасибо Zetper |
![]() |
#4307 |
Person Of The Community
![]() Регистрация: 12.11.2023
Пол: Мужской
![]()
Сообщений: 89
![]() ![]() ![]() |
Zetper, спасибо, хоть понял по какому алгоритму оно собирается. жалко, что, как я понимаю, скрипт в прозрачность не умеет (т.к. нашёл текстуру, где всё что нужно - в альфе, а основной слой - заливка), ну это ничего, как-нибудь по другому решу
засунуть картинку - целый круг ада)) разобрать обратно на тайлы, альфу присвоить всем кускам (хорошо что в optpix'e можно макрос задать) и прочее проворачивать. но вроде работает Нажмите
![]() |
![]() |
![]() |
Сказали спасибо xtz |
![]() |
#4308 |
Person Of The Community
![]() Регистрация: 12.11.2023
Пол: Мужской
![]()
Сообщений: 89
![]() ![]() ![]() |
к меню отрисовал текстурки. вставить вставил, а ничё ровным счётом не поменялось - как было на английском, так и осталось. попробовал найти дубликаты - нашло ещё один файл. перезаписал и его - тот же результат. значит видать ещё где-то есть
есть ли какой-нибудь варик почитать, откуда игра чё читает (с эмуля естественно)? или всё это только в виде адресов в памяти? на понимание такого навыков не хватит к сожалению |
![]() |
![]() |
![]() |
#4309 | |||||||||||||||||||||||||||||||||||||||||||||
Person Of The Community
![]() Регистрация: 28.01.2012
Адрес: Москва
Пол: Мужской
![]()
Сообщений: 95
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
xtz
Вот мой скрипт по поиску сжатых данных "Поиск сжатых файлов AVLZ в папке Unpack2" работает так запускаешь его появляются две папки в папку "Файлы для поиска" кладёшь файлы в которых надо искать(под папки он тоже просканирвует), запускаешь скрипт и он сканирует файлы и если сжатые файлы найдутся то они появится в папке "Unpack".
Пример строчка DvdRead: Reading Sector 1998448 (001 Blocks of Size 2064) at Speed=4x Строчка Reading Sector 1998448 говорит с какого сектора считались данные это число надо умножить на 2048 получим адрес начало чтение данных в образе диска игры, а 001 Blocks число 001 надо тоже умножить на 2048 так мы узнаем сколько байт прочиталось. В консольном окошке в "Файл" можно "Очистить окно" и "Сохранить лог как..." в виде текстового файла. Чистить окно полезно чтоб удалить уже прочитанные данные. Чтоб легче это сделать я написал скрипт "Извлекает из образа данные по текстовому файлу log.txt из эмулятора PCSX2" Кладёшь в папку со скриптом образ диска и файл log.txt из эмуля, открываешь файл "1 Извлечь из образа файлы.bat" блокнотом и видаешь строчку "1.py Extract 1.iso log.txt" заместо 1.iso вписываешь название своего образа диска (желательно чтоб имя диска было без пробелов) сохраняешь файл .bat и запускаешь его если всё сделано правильно по в папке "Unpack" появятся файлы с данными. Надо понимать что приставка сразу целиком файл в память может и не прочитать, например видео файл или звук слишком большой и она будет читать его кусками, и любой другой файл тоже может прочитаться кусками. Так что понять какой там файл начало а какой конец. Конечно лучше такие файлы куски не сканирвать скриптом "Поиск сжатых файлов AVLZ" просто может не найти файл, часть сжатого файла будет в одной части часть в другой но можешь попробовать. Вот придуманный мной пример как найти данные, допустим мы находимся в меню начало игры там где начать новую игру, загрузка, опции игры и нам нужна картинка которая появляется когда мы заходим в опции игры. Перед тем как зайти в опции игры мы чистим окно лога чтоб не искать в лишних файлах данные картинки, заходим в опции игры и сразу в логе видим как загружаются какие то данные мы сохраняем этот лог с данными и по нему вытаскиваем файлы скриптом, но может случится так что в этих данных не будет нужной нам картинки. Как это можно определить можно поломать эти файлы hex редакторе написав в них любые данные и обратно вставить в образ диска. В таком случае данные картинки могли считаться в память раньше нашего в хода в опции игры. |
|||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
#4310 |
Person Of The Community
![]() Регистрация: 12.11.2023
Пол: Мужской
![]()
Сообщений: 89
![]() ![]() ![]() |
Zetper, большущее пасиба за подробное объяснение! думаю очень полезно в процессе будет. сам уже нашёл, но там скорее повезло, что на нужный архив глаза упали. до этого искал по TLFD, AVLZ хедерам - не нашло, они разные оказались. картинки не под свизлой и прочим были - просто малёха другие, потому и не искались видимо. итого их аж 6 штук оказалось
|
![]() |
![]() |