 |
Цитата: |
 |
|
|
|
|
|
|
вы чужой труд переработали и подписались своим именем.и кто же тут хитрый
|
|
 |
|
 |
|
А не хочешь ли ответить за предъяву?
Что у нас Тревис - бог всея кодирования и разбора ресурсов чтоли? Что, по-твоему никто больше не в силах разобраться, как делать звук и видео в EA-играх? Кстати именно он взял версию от Вита и нигде об этом не указал, выдав полностью за свою. Еще хватило наглости и продавать ее.
Я тебе отвечу, да и вообще всем, чтобы не плодили слухи и всем все было понятно, а то тут уже Владу в личку начали сыпать разное... Пытаешься сделать людям добро, а тебе еще и срут в душу.
В том образе, который от [RETROGAMING], звуковой контейнер я лично собирал ВРУЧНУЮ.
Напишу для всех - там обычный ABK/AST-контейнер. Разобрать его можно с помощью NHL07AsfStudio (ищите в сети). В комплекте есть непосредственно утилита распаковки/запаковки - NHL07_Ast_Pack_11. Также распаковать эти контейнеры можно через NHL07ASFExporter. Но и это еще не все, контейнер AST можно порезать на треки с помощью schl.exe. Потом эти треки перевести в WAV с помощью утилиты кодирования звука от самой EA - SX.EXE.
 |
Цитата: |
 |
|
|
|
|
|
|
|
if not exist wav md wav
for %%i in (*.ASF) do sx.exe -wave "%%i" -=%%~ni.WAV
|
|
 |
|
 |
|
Запаковать в обратную сторону тоже просто - из WAV делаем ASF-файл через SX.EXE.
 |
Цитата: |
 |
|
|
|
|
|
|
|
for %%i in (*.wav) do sx.exe -ps2stream -eaxa_blk %%i -=%%~ni.asf
|
|
 |
|
 |
|
Далее эти ASF нужно запаковать в контейнер. Для некоторых игр подойдет также утилита NHL07_Ast_Pack_11 из комплекта NHL07AsfStudio.
Но не в данном случае. Игра очень капризна в плане размещения ресурсов и точного указания всех размеров в таблицах.
Поэтому я поступил проще - собрал все ASF в контейнер с помощью своего скрипта.
Для начала делаем размеры всех ASF кратными 16. Это нужно, чтобы заголовок каждого файла начинался с 1 столбца в хексе. В скрипте используется консольный калькулятор и утилита посекторного копирования dd.exe
 |
Цитата: |
 |
|
|
|
|
|
|
|
SetLocal EnableExtensions EnableDelayedExpansion
for %%i in ("*.asf") do call :calc %%~zi %%~nxi
goto EXIT
:calc
for /f "delims=" %%i in ('"calc.exe %1 / 16"') do set "div=%%i"
for /f "tokens=1,2 delims=." %%a in ("%div%") do (set drob=%%b)
if not exist ReSIZED md ReSIZED
if "%drob%"=="000000000" copy /b "%2" ReSIZED
if "%drob%"=="250000000" dd.exe if="/dev/zero" of="~tmp.bin" bs=12 count=1 && copy /b "%2" + "~tmp.bin" ReSIZED
if "%drob%"=="500000000" dd.exe if="/dev/zero" of="~tmp.bin" bs=8 count=1 && copy /b "%2" + "~tmp.bin" ReSIZED
if "%drob%"=="750000000" dd.exe if="/dev/zero" of="~tmp.bin" bs=4 count=1 && copy /b "%2" + "~tmp.bin" ReSIZED
del "~tmp.bin"
Exit /b
:EXIT
|
|
 |
|
 |
|
Далее вычисляем размеры всех ASF и записываем их в файл.
 |
Цитата: |
 |
|
|
|
|
|
|
|
SetLocal EnableDelayedExpansion
if exist filesize.txt del filesize.txt
for %%i in ("*.asf") do (
echo %%~zi >> filesize.txt
)
endlocal
|
|
 |
|
 |
|
Склеиваем последовательно все ASF в один контейнер. Тут повезло, что звуки и в ПС2 и ПК версии имеют одинаковые имена и порядок.
 |
Цитата: |
 |
|
|
|
|
|
|
|
@echo on
SetLocal EnableExtensions EnableDelayedExpansion
set OutDir=ASF_Container
if not exist %OutDir% md %OutDir%
for %%i in ("*.asf") do (
set /a n+=1
set "filename=%%~ni"
if "!n!"=="1" (
copy /b "%%~nxi" "%OutDir%!filename:~0,-6!%%~xi"
) else copy /b "%OutDir%!filename:~0,-6!%%~xi"+"%%~nxi" "%OutDir%~!filename:~0,-6!%%~xi" && move "%OutDir%~!filename:~0,-6!%%~xi" "%OutDir%!filename:~0,-6!%%~xi"
)
EndLocal
|
|
 |
|
 |
|
Размеры файлов, которые получили предварительно, вставляем в специально подготовленную EXCELL-таблицу. Она переводит значения в 16-ричный вид и переворачивает их, делая Little Endian.
https://docs.google.com/spreadsheets...ub?output=xlsx
Далее может быть немного сумбурно, поскольку я для себя это делал и главное чтобы было понятно мне, но я попробую...
Находим среди распакованных файлов ABK таблицу и копируем в хексе блок поинтеров, начиная с 208 оффсета. Этот блок у меня прописан в этой же таблице на 2 странице.
Далее полученные данные с первой страницы нужно сохранить в текстовый документ и сделать между данными двойной разрыв, поскольку в блоке поинтеров данные меняются 4 байта через 8.
Вот тут я сохранил блок из таблицы из столбца "Развернуто" в текстовик table_rus.txt и с помощью скрипта сделал двойной разрыв.
Результат вывода был записан в текстовый файл table_final.txt
 |
Цитата: |
 |
|
|
|
|
|
|
|
@echo on
SetLocal EnableExtensions EnableDelayedExpansion
for /f %%i in (table_rus.txt) do (
echo %%i >> table_final.txt
echo. >> table_final.txt
echo. >> table_final.txt
)
EndLocal
|
|
 |
|
 |
|
Данные из этого файла скопировал в таблицу на 2 страницу 2 столбец и получил итоговые пересчитанные поинтеры под мои размеры файлов в столбце "Финал".
Осталось только скопировать этот столбец и вставить в ABK таблицу, начиная с 208 оффсета.
Все, контейнер и таблица готовы. И для всех файлов идеально прописаны их размеры в таблице.
С видео ситуация следующая:
Кодировать в MPC можно через PSSDown. Т.е. это такой лайвхак - утилита предназначена для понижения битрейта в видео и поддерживает MPC. Вот этим мы и пользуемся.
Эта программа при демуксе разбирает видео на потоки и кладет их во временную папку, затем берет их оттуда и собирает назад с пониженным битрейтом. Вот нам надо поймать момент между разбором и сбором и подменить аудио-дорожку.
Было перепробовано много разных способов, остановлюсь сразу на идеальном, но нашему мнению. Тут целиком и полностью заслуга Влада, именно он до этого додумался.
Мануал по сборке MPC:
Для работы нам нужен дебаггер. Нам больше всего понравился OLLYdbg.
1. Открываем дебаггер.
2. Открываем PSSDown.
3. В дебаггере на "File"-"Attach" добавляем процесс PSSDown.
Тут дебаггер повиснет и будет тупить. Ничего не делаем, просто ждем успешного добавления процесса.
4. Добавляем в PSSDown файл MPC. Выставляем процент сжатия 99%, чтобы не терять в качестве. Имя файла мы выбирали - переименовать оригинал, чтобы оригинал не перезаписывался.
5. В дебаггере жмем на паузу процесса.
6. В PSSDown жмем на кнопку старта. Индикации нажатия не будет, поскольку процесс стоит на паузе, но поверьте, оно работает. Можно покликать на кнопку несколько раз, чтоб уж наверняка.
7. Далее в дебаггере жмем на кнопку Trace Over. Это позволяет выполнить процессу одну функцию. В результате у нас PSSDown разберет видео на составляющие и автоматически опять станет на паузу.
8. Идем во временный каталог \AppData\Local\Temp\ и меняем дорожку аудио на нужную нам.
9. В дебагере жмем на RUN и ждем окончания процесса.
Все, MPC пересобран.
Потом эти MPC через QuickBMC были вставлены в VIV-архив и, опять же вручную, поправлены размеры в заголовках. Таким образом наши файлы были ровно на тех местах, где и оригиналы и имели правильные размеры.
Текст редактировался через Круптар, тут все просто, кто в теме.
Насчет Most Wanted - тут вышло еще сложнее. Контейнеры тут не ABK/AST, а IDX/BIG и таблицу просто так руками не составить. А при сборке через пакер, размер архива со звуками увеличивался. Программа смотрела, и если русский файл меньше оригинала - автоматически добивала его нулями до размера оригинала, если больше - ничего не делала. Таким образом, при любом раскладе, архив выходил больше размером. А в главном архиве, где лежал контейнер со звуками всего 170 мегабайт места, а у нас архив получался все время более 200 мегабайт.
Но и тут было найдено решение - для русских звуков был создан отдельный псевдоархив и поправлены все ссылки, чтобы игра брала данные уже с него. Место в архиве, где был изначально контейнер со звуками, я занулил, чтобы было меньше мусора.
Видео я уже не буду подробно расписывать, делалось аналогично Андеграунду.
Надеюсь, информация будет полезна тем, кто хочет делать игры EA, а ушлые личности со своими претензиями пусть идут лесом.