Привет, Анон. Сразу говорю, я ни программированием, ни геймдевом, до этого не занимался от слова совсем. Поэтому если буду тупить - не ругайся.
Есть одна старая игра The Punisher, мне нужно вытащить из нее все файлы русской озвучки. Ебусь я с этим уже хрен знает сколько времени, весь путь описывать не буду. Если кратко: остановился на том что нашёл в папке с уже установленной игрой файл voice_ru.vpp что мне показалось ну уж точно файлами русской озвучки И ни файл установки, ни файл войс_ру распаковать не получается. Долго гуглил как открывать файлы формат vpp. В итоге нашёл вот эту ссылку https://www.solvusoft.com/ru/file-extensions/file-extension-vpp Ни через Visual Paradigm, ни через visual studio code с установленным расширением v++ не открывается. https://translated.turbopages.org/proxy_u/en-ru.ru.5c6f0821-62f8db39-b67dd6d7-74722d776562/https/fileinfo.com/extension/vpp оставлю на всякий
В итоге пришёл к выводу, что vpp - это формат созданный Volition студия создавшая карателя специально для их игр.
Собственно, вопрос в том как вытащить файлы озвучки? да и файл voice_ru.vpp вообще ведь может быть файлом с русской озвучкой?
А теперь правильный алгоритм действия в этой ситуации 1. Съебываешь в /s 2. Получаешь там совет погуглить движок игры 3. Гуглить %движокнейм% assets extractor 4. Опционально: Соснуть тунца из-за отсутствия тулзы под этот не очень популярный движок 5. Гуглишь %движокнейм% SDK 6. Опционально: Сосаешь бибу из-за сложности и кривости этого кастомного сдк 7. ??? 8. Профит
Как вытащил: 1. Открыл файл в HEX-редакторе и поскроллил до начала данных, где увидел сигнатуру RIF. 2. Первым же запросом в гугле нашел этот тул: https://github.com/PKBeam/RiffExt 3. Конвертировал всё в mp3 через ffmpeg
Если нужен другой формат, повтори всё, изменив последний пункт.
Вообще, глянул его в hex-редакторе - там в начале идет список имен файлов с их размерами, потом идут сами данные в виде обычных wav-файлов.
wav-файлы преспокойно можно вытащить из любого незашифрованного контейнера, поскольку у wav-файла хорошо прописан заголовок, где указан идентификатор и размер. То есть можно преспокойно найти идентификатор и вытащить все остальное по размеру, а значит легко можно написать тулзу для этого.
Пишу подобные приблуды на си, луа и питухоне, которые извлекают разные форматы изображений и звуков из произвольных контейнеров.
Сейчас вот какие есть извлекаторы написанные на си, используя буфер, то есть потребляют мало памяти и их можно натравливать на большие файлы: dds - кроме версий directx10 jpg - не все джипеги извлекает, только самые распространенные и может ошибаться. ogg opus png wav webp
Написанные на луа и питоне, полностью читают файл в память, то есть натравить на большой файл если мало памяти не получится: dds - кроме версий directx10 jpg - извлекает любые жипеги mp3 - выдерает сам поток игнорируя теги ogg - потоковые может некорректно извлечь opus png wav webp
Сейчас пишу извлекатор jpg на луа, который читает файл побайтово, находит начало и конец жипега, потом читает его в буфер и сохраняет, и так далее пока все жипеги не найдет. Знаю что хуета, но зато можно проверить большой файл на предмет жипегов. Потом может перепишу на си нормально с буфером, но это заморочено, там много всяких нюансов специфических для жипегов. Также проблемно написать нормальный извлекатор mp3 с буфером, так как формат замороченный.
>>2441912 Напейсал побайтовый извлекатор на луа. Работает нереально долго. Хуета. Можно конечно заморочиться написать на луа с типа буфером, но тоже чую хуета получится, лучше сразу на си писать.
>>2440387 Это полностью уёбищный код. Не надо так писать. Хотя бы потому что иногда надо прочитать по индексам назад или вперед. Если совсем лениво - то файл читается целиком в память. Ну а если есть желание написать риппер для файлов объемом больше чем оперативная память компьютера, то пишется функция или набор функций GetByte(u64 index); внутри которой производится вся "магия", а именно, организуется буфер заполняемый с диска. Буфер выступает в роли кэша. На самом деле функции типа getch и ей подобные функции работы с файлами тоже внутри опираются на небольшой кэш-буфер но использовать функции работающие с файлами в рипперах неудобно, потому что они предназначены для последовательной (потоковой) обработки данных.
Программы для выдирания ресурсов классически называются "ripper" и существуют они буквально со времен DOS, т.е. наверное с 80х, но самый расцвет приходится конечно на 90е.
У меня был универсальный риппер который понимал около сотни форматов и их искал в играх. Но это было очень давно. начало 2000х.
Колоссальная проблема сейчас в том что Google выдаёт просто кал. Хоть сколько-то релевантные результаты можно увидеть на яндексе по запросу риппер ресурсов -DVD -CD
>>2442880 Брать гекс редактор и смотреть в нем как устроены всякие разные файлы. Если какой-то формат прям понравился то гуглишь спецификацию на него и изучаешь.
>>2442880 Современные хуеперационки предлагают тебе окошки в которых ты видишь файлы и больше нихуя. Всё скрыто и недоступно. Ты максимально далёк.
Я с древних времён юзаю FAR. А в нём когда ты стоишь на любом файле можно нажать F3 и ты видишь его "потроха" в текстовом или бинарном hex виде.
Вместо православного FAR можно юзать Total Commander в его реинкарнации в виде "сборки". Просто чистый Total Commander с сайта непригоден, я пробовал, расплевался.
Смысл в том, что ты заходишь в "кишки "скажем игры (ну то есть в директорию куда она установлена) и начинаешь просматривать файлы нажимая на файлах кнопку F3 (просмотр).
На самом деле по Shift/Ctrl-F3 у меня прописана еще и HIEW, но это другой разговор.
В общем смысл в том что надо сменить инструмент просмотра/изучения файловой системы с примитивного Windows explorer на вещи позволяющие тебе быстро засунуть нос в любой файл.
>>2443566 >Просто чистый Total Commander с сайта непригоден Нормально все с чистым. В нем есть божественный Lister, который как раз по F3 показывает кишки файлов. Но всегда можно настроить под себя.
>>2443196 >в начале каждого файла идет осмысленный заголовок, который можно загуглить Это называется сигнатура или магическая метка, а заголовок это другое.
>>2443566 Простой фар тоже тошнотен в 2022, даже для дидов вроде меня, а вот если навесить conemu, то уже можно пользоваться. А есть и более продвинутые варианты с перделками.
Привет, Анон.
Сразу говорю, я ни программированием, ни геймдевом, до этого не занимался от слова совсем. Поэтому если буду тупить - не ругайся.
Есть одна старая игра The Punisher, мне нужно вытащить из нее все файлы русской озвучки. Ебусь я с этим уже хрен знает сколько времени, весь путь описывать не буду. Если кратко: остановился на том что нашёл в папке с уже установленной игрой файл voice_ru.vpp что мне показалось ну уж точно файлами русской озвучки И ни файл установки, ни файл войс_ру распаковать не получается. Долго гуглил как открывать файлы формат vpp. В итоге нашёл вот эту ссылку https://www.solvusoft.com/ru/file-extensions/file-extension-vpp
Ни через Visual Paradigm, ни через visual studio code с установленным расширением v++ не открывается.
https://translated.turbopages.org/proxy_u/en-ru.ru.5c6f0821-62f8db39-b67dd6d7-74722d776562/https/fileinfo.com/extension/vpp оставлю на всякий
В итоге пришёл к выводу, что vpp - это формат созданный Volition студия создавшая карателя специально для их игр.
Собственно, вопрос в том как вытащить файлы озвучки?
да и файл voice_ru.vpp вообще ведь может быть файлом с русской озвучкой?