Pozitron
offline
Опыт:
736Активность: |
Использование MPQ-архива в программе
Я хочу написать прогу для распаковки MPQ архива. Так как я не знаю как происходит его упаковка и т.д. я не могу написать необходимые фунуции. Как я знаю есть библиотека SFMPQ.dll кажется. Я достал названия функций которые она экспортирует но не знаю какие аргументы она требует и какого они типа (моя прога не дает етой информации). Напишите пожалуиста (или дайте ссылку) про устройство MPQ или библиотеку SFMPQ.
Pozitron добавил: Вот все функции SFMPQ только без аргументов. В принципе некоторые можно угадать. Только вот дизассеблировать чтобы узнать все оставшиеся мне не очень хочется (( Отредактировано Pozitron, 06.12.2006 в 07:38. |
05.12.2006, 13:28 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Хм, лол, вместе с библиотекой обычно поставляются хидеры, позволяющие ее использовать, естественно, они у меня есть(и для SF и для STORM), но сишные
Кажется, я отсюда брал http://shadowflare.samods.org/dwnload.html |
05.12.2006, 15:12 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
Спасибо, NETRAT. Я в принципе уже нашел нужную информацию и ссылку на сайт. Только вот нигде нет описания MPQ. Придется копатся в исходниках. А то что все на С написино то мне всё равно, я могу и на С написать.
Pozitron добавил: (Просто я не особо дружу с английским и на лажу на англоязычные сайты поэтому и решил спросить) |
06.12.2006, 06:38 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
Цитата:
http://zohar.devklog.net:47805/projects/mpqkit/wiki/MoPaQ_Format http://zezula.net/ ну и хедеры к sfmpq. этого, по-моему, вполне достаточно. |
|
06.12.2006, 10:52 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Вполне, правда, я уже упоминал что разные библиотеки работают с разными форматами MPQ, то есть что не может открыться при помощи WinMPQ, открывается при помощи MPQ Master. Хотя, с storm.lib и sfmpq.lib я такого не замечал |
06.12.2006, 12:10 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
Ещё один вопрос: В описанний MPQ написано что в 4 байтах по нужному смещению (непомню какому точно) хранится размер архива(int32). Как можно перевести это число из Hex в int32 ??? Я пробовал но у меня получается полная фигня. |
16.12.2006, 10:02 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Конвертирование Hex => Int элементарное (Delphi syntax):
Код:
|
16.12.2006, 14:38 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
Спасибо ShadoW DaemoN только меня интересовало немного другое - почему число полученное переводом из Hex в int32 (За ето отвечают 4 байта с 9 по 12 от начала архива) не совпадает с размером архива, вот и твоим способом получается такое же число... Ппц.
|
19.12.2006, 09:08 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
потому что обычно int32 хранятся как little endian, т.е. с переставленным задом наперед порядком байт.
это общепринятый формат, на C например, это читается обычным fread как надо. ну если ты хочешь, глядя на hex dump, посчитать что-то руками на калькуляторе, то это стоит учесть. |
19.12.2006, 09:28 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioN
offline
Опыт:
15,028Активность: |
гм, гуд тема, я ближе к лету для ЛОТРмап буду писать прогу которая будет закидывать файло в вар3з.мпку так что хотелось бы знать, мне придёца самому изучать дебри Мпку или есть готовые длл для ИМПОРТИРОВАНИЯ файлов в готовый архив... |
19.12.2006, 09:35 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
Готовые dll уже есть, но я сам хочу написать свою dll и прогу, поэтому я стал разбиратся с устройством MPQ. Описание MoPaQ формата есть только на английском так что вот приходится переводить и уточнять некоторые детали на форуме. (Только если ты хочешь закидывать файлы в war3.mpq то лучше этого не делать а создать патч с новым архивом так как цифровая подпись архива war3.mpq не будет работать) |
20.12.2006, 09:07 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Pozitron это самоубийство - слишком много придется писать. Ты себе представляешь вообще что такое алгоритмы сжатия, как они работают и сколько их есть?!
У меня где-то валялись исходники базового формата mpq (то есть не полного, а только с конкретным сжатием) Цифровую подпись ты подделать вряд ли сможешь, ибо там вырожденное преобразование |
20.12.2006, 09:56 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
Ну я знаю что писать надо много так что ещё подумаю,может просто напишу нормальную прогу для работы с MPQ используя sfMPQ, а то что алгоритмов сжатия очень много я тоже знаю. Только я не совсем понял одну вещь - MPQ поддерживает все архивные форматы или как? |
20.12.2006, 10:11 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Pozitron тут петрушка хитрая
1. Версий sfmpq много 2. Такой, которая поддерживает все форматы, я не встречал =\ Как я уже говорил, возможен такой вариант что WinMPQ распаковывать карту не будет, а MPQ Master - будет. При попытке распаковки sfmpq просто возврашает ошибку. Обычно не открываются 5% карт - это карты обработанные оптимизаторами на хитрожопых настройках формата сжатия |
20.12.2006, 10:18 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
Но тогда получается что storm.dll поддерживает все форматы если Warcraft открывает эти карты. Только я спрашивал какие примерно форматы знает War например 7z, zip,rar,arj и т.п. Я слышал немного про формат zlib и PKWare а больше ничего. Отредактировано Pozitron, 20.12.2006 в 10:30. |
20.12.2006, 10:22 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
NETRAT у меня появилась такая идея: если не все sfmpq.dll нормально открывают разные архивы, а storm.dll открывает все и так же storm находит файлы только по имени, то попробовать написать библиотеку которая будет работать с MPQ, а сжатие и распаковку осуществлять с помощью функций storm.dll. Будет намного проще так как не придется писать громоздкий код архивирования, и решится проблема поддержки разных типов сжатия.
|
20.12.2006, 15:39 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Имеющиеся хидеры к storm.dll не подходят, если брать старые библиотеки, к которым хидеры подходят - то они тоже не распаковывают. Следует попробовать исправить хидер к storm.dll, но лично у меня сейчас времени на это нет |
21.12.2006, 11:51 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pozitron
offline
Опыт:
736Активность: |
У меня в общем сейчас тоже на это времени нет, всетаки скоро экзамены. Я потом собираюсь этим занятся. А ты имеешь ввиду storm.dll не близзардовские? Просто я думал использовать варовскую библиотеку storm. |
21.12.2006, 12:03 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Не близзардовских нет Есть близзардовские из Дьяблы, из Старкрафта, из Варкрафта - и все они разные |
21.12.2006, 12:10 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|