[FAQ] Распаковка и упаковка контейнеров BIN
Шаг 1 - Распаковка - Запускаем PersianRugRusExtra и переходим на вкладку "Bin распаковщик".
- Жмём кнопку "Открыть" и выбираем, например, файл MenuInGame_wow_ff0e01f5.bin
- Тут же открывается следующее окно, где предлагается сохранить файл с расширением binexpanded
- Всё! Файл разархивирован!
- Переходим во вкладку "Bin анализатор", нажимаем кнопку "Анализировать бинарник" и выбираем, либо уже распакованный binexpanded, либо запакованный бинарник
- Потрошим оттуда необходимые ресурсы. Например, картинка шрифта всегда имеет название 2F008574.
- Всё! Имеем сырьё нижнего уровня для работы!
Шаг 2 - Упаковка
На примере MenuInGame_wow_ff0e01f5.bin. - Складываем всё сырьё на свои места в распакованный файл binexpanded через хекс-редактор.
- Как правило, все бинарники складываются блоками по 0x20000 (131072 байта), поэтому режем наш файл такими кусками. То есть, открываем в хекс-редакторе файл MenuInGame_wow_ff0e01f5.binexpanded, выделяем первые 0x20000 байт и вырезаем выделенный код (CTRL+X). Открываем новое окно и вставляем туда вырезанный код (CTRL+V). Сохраняем под названием, например MenuInGame_wow_ff0e01f5.part1. Оставшийся код не превышает 0x20000, поэтому просто сохраняем его под названием MenuInGame_wow_ff0e01f5.part2
- Берём из вложения в шапке "Prince of Persia Tools.zip" папку с программой "JADE Pack Tool".
- Закидываем туда подготовленные part1 и part2, и архивируем оба файла:
- Можно через командную строку следующей командой:
jadepack -c infile outfile
- Либо, для нашего примера, запускаем батник с расширением *.bat следующего содержания:
@echo off
jadepack -c MenuInGame_wow_ff0e01f5.part1 MenuInGame_wow_ff0e01f5.part1.compressed
jadepack -c MenuInGame_wow_ff0e01f5.part2 MenuInGame_wow_ff0e01f5.part2.compressed
pause
- Открываем оба файла в хекс-редакторе. Первые 4 байта нам приклеил архиватор JADE движка. Они указывают на размер всего остального файла, но нам эта информация не нужна, поэтому удаляем эти данные у обоих файлов сразу.
- У первого файла part1 теперь в начале должен быть код 00 00 02 00, что означает размер распакованного файла (байты читаются задом наперёд). Следующие 4 байта указывают на размер оставшейся части файла, заканчивающимся кодом 11 00 00. Поэтому спускаемся в конец файла, находим этот код и удаляем все нули после него. Для подстраховки можем проверить размер тела файла, для этого, выделяем с конца до метки размера весь код и сравниваем показания. Хекс-редактор внизу отображает размер выделенной области.
- Переходим ко второму файлу part2. Не забываем, что первые 4 байта мы уже удалили ранее у этого файла. Теперь просто выделяем весь файл (CTRL+A) и копируем выделенное содержимое (CTRL+C).
- Переключаемся на первый файл part1, ставим курсор в конец файла и вставляем ранее скопированное содержимое второго файла (CTRL+V). Нули в конце не трогаем.
- Сохраняем склеенный файл, как MenuInGame_wow_ff0e01f5.bin.
- На этом всё! Можно переходить к пункту: "Шаг 1 - Распаковка", чтобы проверить его на распаковываемость и схожесть с исходным binexpanded.
Выражаю ОГРОМНЕЙШУЮ благодарность riku.kh3 за помощь в методе упаковки!
Последний раз редактировалось ErikPshat; 02.08.2015 в 22:37.
|