Мой архиватор для Кирандии

Творчество, посвященное Кирандии.

Мой архиватор для Кирандии

Сообщение sapan » 09 май 2014, 15:13

Здесь удобная распаковка и упаковка файлов:
Кирандия 1 PAK и VRM
Кирандия 2 PAK и TLK
Кирандия 3 PAK
Скачать здесь
sapan
(0) Каннибал Горчичного острова
 
Сообщения: 11
Зарегистрирован: 13 янв 2010, 23:15
Любимая часть Кирандии: 1, 2, 3 части
Любимые персонажи Кирандии: Малколм
Почему Вы любите Легенду о Кирандии?: В Кирандии чудесная история.

Re: Мой архиватор для Кирандии

Сообщение Reflector » 09 май 2014, 17:25

sapan писал(а):Здесь удобная распаковка и упаковка файлов:
Кирандия 1 PAK и VRM
Кирандия 2 PAK и TLK
Кирандия 3 PAK
Скачать здесь

Я, конечно, все понимаю, но Anytalk.tlk у меня распаковывался чуть больше минуты, в то время как моя утилита за 2 сек. не только распаковала, но и преобразовала всю речь в wav. Это первое, во-вторых, если уж программа берет файлы в папке in, то она должна сама уметь их там сама обнаруживать, потому как предварительный запуск bat файла вступает в явное противоречие с заявленной удобной распаковкой файлов :)
Reflector
(2) Житель Милтонии
 
Сообщения: 163
Зарегистрирован: 11 сен 2010, 16:44
Любимая часть Кирандии: 2
Любимые персонажи Кирандии: Занция
Почему Вы любите Легенду о Кирандии?: Ностальгия...

Re: Мой архиватор для Кирандии

Сообщение sapan » 09 май 2014, 18:31

А как быстрее сделать?
sapan
(0) Каннибал Горчичного острова
 
Сообщения: 11
Зарегистрирован: 13 янв 2010, 23:15
Любимая часть Кирандии: 1, 2, 3 части
Любимые персонажи Кирандии: Малколм
Почему Вы любите Легенду о Кирандии?: В Кирандии чудесная история.

Re: Мой архиватор для Кирандии

Сообщение Reflector » 09 май 2014, 20:00

sapan писал(а):А как быстрее сделать?

Сначала получаешь все смещения файлов(разница между соседними дает размер файлов) и их имена, потом в цикле читаешь данные для каждого файла в какой-то временный буфер из которого сохраняешь на диск. Обычно тормоза появляются когда читают и пишут по одному байту, используй блочные операции... У меня это выглядит как-то так:

Код: Выделить всё
var list = GetPakList(fin);
for (int i = 0; i < list.Count - 1; i++)
{
    string fullFileName = basePath + list[i].name;
    int length = list[i + 1].pos - list[i].pos;
    using (var fout = new BinaryWriter(new FileStream(fullFileName, FileMode.Create)))
    {
        fin.BaseStream.Position = list[i].pos;
        fin.Read(buf, 0, length);
        fout.Write(buf, 0, length);
    }
}

ps. И давай переменным осмысленные имена, я пытался понять, что делает твой код, но там сплошные a,b,c,d,q,w,e,r,k,l,z,zz,p,i,m, поэтому я сразу обламался, тем более паскаль уже не очень помню :)
Reflector
(2) Житель Милтонии
 
Сообщения: 163
Зарегистрирован: 11 сен 2010, 16:44
Любимая часть Кирандии: 2
Любимые персонажи Кирандии: Занция
Почему Вы любите Легенду о Кирандии?: Ностальгия...

Re: Мой архиватор для Кирандии

Сообщение sapan » 11 май 2014, 10:06

Спасибо!
Все получилось!
Стало работать намного быстрее.
Скачать новую версию здесь
sapan
(0) Каннибал Горчичного острова
 
Сообщения: 11
Зарегистрирован: 13 янв 2010, 23:15
Любимая часть Кирандии: 1, 2, 3 части
Любимые персонажи Кирандии: Малколм
Почему Вы любите Легенду о Кирандии?: В Кирандии чудесная история.

Re: Мой архиватор для Кирандии

Сообщение Reflector » 11 май 2014, 17:17

sapan писал(а):Спасибо!
Все получилось!
Стало работать намного быстрее.

Да, стало намного лучше :) Что дальше? Передача имен файлов в качестве параметра командной строки? Другие форматы?

ps. Можешь добавить, что еще распаковываются .pak из Toonstruck, там вообще движки похожие :)
Reflector
(2) Житель Милтонии
 
Сообщения: 163
Зарегистрирован: 11 сен 2010, 16:44
Любимая часть Кирандии: 2
Любимые персонажи Кирандии: Занция
Почему Вы любите Легенду о Кирандии?: Ностальгия...

Re: Мой архиватор для Кирандии

Сообщение sapan » 11 май 2014, 22:33

А формат-то архива у Toonstruck такой-же как у Кирандии. Можно этим, что я написал, распаковывать и упаковывать.
sapan
(0) Каннибал Горчичного острова
 
Сообщения: 11
Зарегистрирован: 13 янв 2010, 23:15
Любимая часть Кирандии: 1, 2, 3 части
Любимые персонажи Кирандии: Малколм
Почему Вы любите Легенду о Кирандии?: В Кирандии чудесная история.

Re: Мой архиватор для Кирандии

Сообщение Малкольмович » 30 май 2014, 23:51

кстати, у меня есть подозрение, что многие игры, основанные на scumm, могут использовать совершенно те же форматы, в т.ч. и pak/tlk =)
Аватара пользователя
Малкольмович
(4) помощник Мистика
 
Сообщения: 293
Зарегистрирован: 22 дек 2011, 22:09
Любимая часть Кирандии: Hand of Fate, а точнее, Darkmoor Swamp из неё =)
Любимые персонажи Кирандии: Занечка всех порулит =)
Почему Вы любите Легенду о Кирандии?: это мир, в котором можно жить, а не в который играть)

Re: Мой архиватор для Кирандии

Сообщение sapan » 04 июл 2014, 19:07

Вот написал программу для редактирования палитры:https://yadi.sk/d/3HxHbOevVw6hK
sapan
(0) Каннибал Горчичного острова
 
Сообщения: 11
Зарегистрирован: 13 янв 2010, 23:15
Любимая часть Кирандии: 1, 2, 3 части
Любимые персонажи Кирандии: Малколм
Почему Вы любите Легенду о Кирандии?: В Кирандии чудесная история.

Re: Мой архиватор для Кирандии

Сообщение Reflector » 04 июл 2014, 23:44

sapan писал(а):Вот написал программу для редактирования палитры

В Кирандии все палитры составные. В K1 часть берется из основной палитры, часть из фона или анимации и еще кусок из соответствующего .dat файла. В K2 никаких .dat нет, но зато большинство .col там запакованы. Самым простым способом получения уже комбинированной(и промасштабированной) палитры является снятие скриншота в DOSBox и тогда в том же фотошопе палитру можно посмотреть, отредактировать и сохранить сразу видя как это отразится на изображении. Естественно никто не станет сохранять палитру в фотошопе, чтобы потом открыть и редактировать ее в твоей программе не видя результата, поэтому утилита по возможности должна делать что-то такое, чего другие редакторы делать не умеют :) Но если ты это делаешь исключительно ради развития навыков утилитописания, тогда ладно :)
Reflector
(2) Житель Милтонии
 
Сообщения: 163
Зарегистрирован: 11 сен 2010, 16:44
Любимая часть Кирандии: 2
Любимые персонажи Кирандии: Занция
Почему Вы любите Легенду о Кирандии?: Ностальгия...


Вернуться в Креатив

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron