Произвёл слияние старых плагинов (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 для разработчиков.










