Произвёл слияние старых плагинов (drv_giants и drv_mix) в Main Driver Plugin (drv_default). И если обеспечить поддержку Giants: Citizen Kabuto .GZP было несложно (потому что у меня есть исходный код), то с Command & Conquer .MIX пришлось повозиться.
Целью этого слияния было объединение исходного кода всех частей Dragon UnPACKer и создания версии x64, что стало возможным благодаря Lazarus/FPC.
Формат файла MIX не очень сложный, но он не содержит в себе имён файлов. Имена файлов генерируются игрой, а затем хэшируются для получения ID. С помощью файла базы данных (с использованием XCC-Utilites) в текущей версии на CVS могут отображаться многие имена файлов из файлов .MIX. Сейчас пытаюсь получить имена вложенных файлов из пакетов Blade Runner .MIX и .TLK.
Для осуществления поддержки на уровне старого плагина drv_mix от Felix Riemann, мне понадобилось добавить идентификатор формата файла. Это дело оказалось не таким уж и трудным.
Заметка на полях: пытался адаптировать расшифровку формата MIX (C&C:Red Alert and Tiberian Sun), используя для этого код на C/C++, приведённый на следующей странице (спецификаци Olaf van der Spek): http://xhp.xwis.net/documents/MIX_Format.html, но проведя за этим занятием всё воскресенье, так и не смог заставить всё это работать. Даже пытался использовать код, собранный непосредственно в Delphi, позволяющий получить ключ для расшифровки, но это не одно и тоже... Явно что-то не так. Постараюсь поработать над этим, когда появится возможность. Не хочется мне добавлять компоненты на С.
И под конец, адаптировал формат D5P версии 4 к поддержке флага Удаляемый/Устаревшийв записях файла. Это позволит удалить устаревшие файлы drv_giants.d5d и drv_mix.d5d при обновлении до новой версии drv_default.d5d (если доступно). Этот новый флаг поддерживается Duppi v3.2.0 для пользователей (он доступен уже несколько дней) и DUP5 Package Maker (DPackC) v3.6.0 для разработчиков.
Вот и первая нестабильная версия ветки 5.5: 5.5.0 Beta !
Итак, что нового?
- Небольшие изменения за кулисами, эта версия всё ещё полностью собрана с помощью Borland Delphi 7, но с некоторыми изменениями она уже должна вполне неплохо работать при сборке под Lazarus\Freepascal.
- HypeRipper 5.6 Beta 1: плагин объединён с ядром, а поддержка плагинов удалена!
- Больше не используются библиотеки JCL и JVCL (теперь используются стандартные VCL).
- Исправлено много ошибок и улучшена функциональность.
- Поддерживаются новые игровые форматы файлов:
- The Chronicles of Riddick: Assault on Dark Athena (с некоторыми ограничениями) .XTC и .XWC
- F1 Manager 2000 .RFC/.RFD/.RFH (частичная поддержка)
- Пятый элемент (The Fifth Element) .MRC
- Prototype .RCF
- Scarface .RCF
- Vietcong .CBF (полная поддержка: расшифровка и распаковка осуществляются благодаря Luigi Auriemma)
См. журнал изменений, чтобы подробнее узнать обо всех нововведениях!
Для загрузки этой версии перейдите к разделу Dragon UnPACKer > Downloads.
Вот и длинная запись в блоге...
Выпуск Duppi v3.1.0 завершился полным фиаско... Мне пришлось выпустить более 3 версий, для того, чтобы исправить все допущенные мной ошибки. Мне очень жаль, но надеюсь, вы продолжите использовать Duppi (он теперь отлично работает)!
Для тех, кто не обновлял Duppi до v3.1.0, 3.1.1 или 3.1.2 указываю, что именно произошло:
- Версия 3.1.0 содержала ужасную ошибку, не позволяющую Duppi загружать какие-либо обновления из Интернета (сбой, вызывающий Исключение), катастрофа, я совсем забыл об обновлении используемых библиотек DLL (libcurl-3.dll и zlib1.dll). Выяснилось следующее: из-за этой ошибки нельзя было что-либо обновить с помощью Duppi...
- В версии 3.1.1 только лишь исправлена небольшая ошибка в отчёте об ошибках (таких ошибок ещё не было).
- В версии 3.1.2 исправлены почти все ошибки (но я забыл о файле DLL zlib1.dll, потому что сначала я не включил её в состав программы, она находилась в системной папке моего компьютера...).
- В версии 3.1.3, наконец, исправлены все ошибки и сейчас присвою номер этой версии при обращении к серверу обновлений (для тех, кто не в курсе дела: номер сборки Dragon UnPACKer и номер версии Duppi, и ничего больше). Создал два пакета для этой версии, один без библиотек, который будет использован для обновлений с неудачных версий 3.1.x и второй, с библиотеками для тех, кто обновляет с более старых версий. Для того чтобы быть уверенным, что версия без библиотек используется лишь людьми, пользующимися правильной версией 3.1.0, 3.1.1 или 3.1.2, я добавил в D5P Package maker опцию (v3.5.2, но отсутствует в CVS) не восприимчивости Duppi к определённым версиям.
- Добавил проверку в оба пакета и собрал исправленный пакет Duppi v3.1.0.
В прошлом месяце я наткнулся на страницу Luigi Auriemma, а именно, - на его код для извлечения из сжатых и шифрованных файлов Vietcong .CBF (cbfext v0.2.1 + unlzw v0.1.2). Мне понадобилось некоторое время, чтобы адаптировать его для Delphi/Pascal, но я смог сделать это, новый код включён в Default Driver v2.0.7.
Я также работал над защитой от загрузки неправильных форматов в Dragon UnPACKer, которая происходила, в основном, за счет формата Nascar Racing .DAT или Cyberbikes .BIN. Оба они не имеют каких-либо определённых ID/сигнатур, от которых можно отталкиваться при загрузке любого файла с расширением .DAT или .BIN. Решением данной проблемы было введение проверки на правильность в Default Driver v2.0.7.
Чтобы сделать использование Dragon UnPACKer более приятным, я также добавил ловушку для исключения, возникающего при использовании Vampyre Imaging Library, потому что когда этот формат был неправильным, возникало неотлавливаемое исключение, что было вовсе не здорово. Плохо, что нужно переделывать с самого начала. Изменение относительно CVS в версии 5.5.0 Beta программы Dragon UnPACKer.
Наконец-то, я смог добавить в Dragon UnPACKer поддержку Prototype .RCF, полностью основанную на спецификации john_doe (Benjamin Haisch) из форума Xentax. Сжатые файлы (.RZ) автоматически распаковываются в процессе извлечения, поэтому из имени файла удаляется расширение .RZ. Информация о распаковке также была найдена на форуме Xentax. Обратите внимание на то, что наиболее интересные вещи в файлах P3D, расположенных в файлах RCF . Формат был исследован на форуме Xentax участником Mr. Mouse. Не сомневайтесь, сейчас же направляюсь туда.
Всё это здесь и сейчас!
Прежде всего, я почти ничего не делал для Dragon UnPACKer на протяжении последних 5 месяцев, так что (с того времени последний выпуск актуален)... Но прошлая неделя была очень продуктивной! Мне снова захотелось писать код!
Как вы уже, наверное, видели, я выпустил версию Dragon UnPACKer с небольшим количеством исправленных ошибок (v5.4.0a), новый Duppi (v3.1.0) и новый D5P Package maker (v3.5.1).
Над новой версией Duppi пришлось немало потрудиться, но мне кажется, что многое в этом инструменте стало лучше (даже если это не очень заметно). Он не использует Overbyte's ICS, JCL и JVCL (не совместим с Lazarus/FPC). В нынешнем виде его сборка под Lazarus/FPC не должна вызвать затруднений. Но я ещё не проверял.
Сегодня убрал почти все следы JCL и JVCL из ядра приложения Dragon UnPACKer, плагинов и инструментов. Пока что они остались в D5P Package maker, нужны для чтения/записи XML. Но когда переход на Lazarus/FPC будет окончен, функции работы с XML будет выполнять Free Pascal Library.
Хотя я и был занят, но мне всё-таки удалось найти решение проблемы графического интерфейса в плагинах при использовании Lazarus/FPC (см. предыдущие сообщения): просто сделаю автономные приложения для конфигурации плагина. Когда вспоминаю предыдущее сообщение, возникает странное ощущение...
Также решил объединить плагин HyperRipper с ядром. Для него существует только один плагин, и таким образом я смогу начать реализацию плана насчёт использования многопоточности в HyperRipper. Можно попробовать объединить и плагины-конверторы, но я не уверен в этом.
За эти 5 месяцев кое-что исправил, результатом этого стала стабильная версия 5.4.0a !
- Исправлено множество ошибок.
См. журнал изменений, чтобы подробнее узнать обо всех нововведениях!
Для загрузки этой версии, воспользуйтесь разделом Dragon UnPACKer > Downloads.