September 19, 2018, 08:12
bigger smaller reset 800px Wide width Full width Reset * *

Gildor's Forums

  Homepage Facebook Donate
Welcome, Guest. Please login or register.
Did you miss your activation email?


Login with username, password and session length
« previous next »
Pages: [1] Print
Author Topic: Bravo Team (PS4)  (Read 402 times)
m0xf
Newbie
*
Posts: 18


View Profile
« on: June 17, 2018, 14:01 »

Модели распаковываются нормально при выборе версии 4.16-4.17, но какая-то проблема с текстурами. Вот такие ошибки:
Code:

Reading ST_equipment_NM mip level 0 (1024x1024) from /SMG016/Content/Characters/
Models/Enemy/Body/ShockTrooper/Textures/ST_equipment_NM.ubulk
******** /SMG016/Content/Characters/Models/Enemy/Body/ShockTrooper/Textures/ST_e
quipment_NM.uasset:  Texture2D'ST_equipment_NM' ********
*** Failed to upload mip 6 of texture ST_equipment_NM in format 0x8DBD: error 0x
501

Reading ST_jacket_BC mip level 0 (1024x1024) from /SMG016/Content/Characters/Mod
els/Enemy/Body/ShockTrooper/Textures/ST_jacket_BC.ubulk
******** /SMG016/Content/Characters/Models/Enemy/Body/ShockTrooper/Textures/ST_j
acket_BC.uasset:  Texture2D'ST_jacket_BC' ********
*** Failed to upload mip 6 of texture ST_jacket_BC in format 0x83F1: error 0x501


Reading ST_jacket_FMAR mip level 0 (1024x1024) from /SMG016/Content/Characters/M
odels/Enemy/Body/ShockTrooper/Textures/ST_jacket_FMAR.ubulk
******** /SMG016/Content/Characters/Models/Enemy/Body/ShockTrooper/Textures/ST_j
acket_FMAR.uasset:  Texture2D'ST_jacket_FMAR' ********
*** Failed to upload mip 6 of texture ST_jacket_FMAR in format 0x83F3: error 0x501

Все ресурсы игры в одном файле (Image0\smg016\content\paks\pakchunk0-ps4.pak, 16Гб), экспортировал из него несколько пакетов:
https://yadi.sk/d/_ANh966C3XzuuC

Там-же eboot.bin и eboot.elf, который хоть и кривенько но загружается в IDA.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 6783



View Profile WWW
« Reply #1 on: June 17, 2018, 14:39 »

Я думаю, здесь проблема в том, что это PS4, и у неё свой формат текстур.
Logged
m0xf
Newbie
*
Posts: 18


View Profile
« Reply #2 on: June 17, 2018, 15:48 »

Глянул более детально на текстуры, которые экспортировались в .ubulk. Добавил dds заголовок, получилась мешанина из квадратов. И тут я вспомнил про скрипт "ps4ut.py", который я когда-то давно делал для другой PS4 игры  Smiley
Текстура собралась.

Если коротко, то там используется что-то похожее на Z-curve перестановку 3 раза.


* ps4ut.py (2.28 KB - downloaded 78 times.)
Logged
Gildor
Administrator
Hero Member
*****
Posts: 6783



View Profile WWW
« Reply #3 on: June 17, 2018, 15:55 »

Отлично. Может в ближайшем будущем встрою этот код в umodel. Ещё на очереди текстуры для Nintendo Switch, вроде там тоже только swizzle другой (по крайней мере для NS я нашёл хоть какую-то информацию в интернете).
Logged
Gildor
Administrator
Hero Member
*****
Posts: 6783



View Profile WWW
« Reply #4 on: June 18, 2018, 21:09 »

Перенёс код на C++. Есть проблема: если текстура DXT5 (block_size_pixel=4), и её длина 16 или меньше, то в
Code:
map_block_position(mx, my, width//block_size_pixel, 8)
'w' получается меньше чем 'bx', 'block_count_x' будет 0, ну а потом делается деление на этот block_count_x (деление на ноль).

Есть ли какая-нибудь дополнительная информация по swizzle для ps4? Я искал в google и ничего не нашёл. Кода UE4 для PS4 у меня нет, так что нет возможности даже зацепиться за какое-то название, функцию и т.п. чтобы хотя бы поковырять PS4 SDK.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 6783



View Profile WWW
« Reply #5 on: June 18, 2018, 21:18 »

И вообще, если возможно, хотелось бы пример любой текстуры из представленных в первом посте, в декодированном виде - чтобы было видно что должно получиться на выходе. Я попробовал работать только с большими текстурами, и получил мусор - т.е. либо алгоритм не работает, либо я неправильно перенёс его с C++.
Logged
m0xf
Newbie
*
Posts: 18


View Profile
« Reply #6 on: June 18, 2018, 22:12 »

Вот несколько исправленных текстур: https://yadi.sk/d/V4H0qvSe3Y5f9u
По поводу деления, скорее всего нужно делить с округлением в большую сторону, как это принято для определения количества блоков DDS. То же скорее всего касается и деления "w // bx". Проверить это никак не могу, все текстуры с сжатием что я находил были кратны 8.

Пока искал "нестандартные" текстуры нашёл несколько пакетов: https://yadi.sk/d/ih6xgSc43Y5hS6
934x868_male_avatar_1 - возникает access violation внутри nvoglv32
FrontendButtonRight - экспортируется корректно, но отображается неверно
Logged
Gildor
Administrator
Hero Member
*****
Posts: 6783



View Profile WWW
« Reply #7 on: June 18, 2018, 22:31 »

Спасибо, буду разбираться.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 6783



View Profile WWW
« Reply #8 on: June 19, 2018, 13:41 »

Всё сделал. Падения поправил. Текстуры работают.
Для запуска нужно указать новую опцию -ps4 (ну или выбрать PS4 в UI).
Спасибо за код расшифровщика текстур, он работает. Сделал только дополнение для маленьких текстур (меньше 32x32).
Logged
Pages: [1] Print 
« previous next »
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS