Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2015, 01:14   #11
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Цитата:
И спустя 4 года мне никто не помог...
Специфика задачи такая, что ее решать будут только в разделе фриланс...
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.05.2015, 07:34   #12
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Larboss Посмотреть сообщение
Специфика задачи такая, что ее решать будут только в разделе фриланс...
Для того, чтобы помочь, не обязательно же решать. Ведь можно помочь советом, так?
Вадим Мошев вне форума Ответить с цитированием
Старый 29.05.2015, 09:16   #13
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Так ведь не плохо помогли. Даже формат и структуру файла примерную рассказали.
Человек_Борща вне форума Ответить с цитированием
Старый 29.05.2015, 15:17   #14
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Цитата:
Ведь можно помочь советом, так?
Можно, но при условии, что у спрашивающего есть опыт в подобных делах. Иначе для него это будут иероглифы
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.05.2015, 20:45   #15
kalumb
Пользователь
 
Регистрация: 09.07.2011
Сообщений: 17
По умолчанию

Я скачал архив: там лишь распакованные из zlib данные. А там-то как раз самое интересное! Кроме того, этот формат изменялся с выходом новых игр. Мне стало интересно, и я начал разбирать старые игры студии «Сатурн-плюс».
Первая игра "9 Принцев Амбера" была написана на другом движке. После этой игры студия в студии произошла смена руководства. Игры стали делать на другом движке. Первой игрой на новом движке стал квест "Новые Бременские". Формата mult там нет, но есть *.casm. Но в этом формате присутствуют лишь пути к кадрам и ещё какая-то информация, возможно, координаты. Сами изображения храниться в запакованном формате BMP, который я сегодня разобрал. Структура довольно простая:
4 байта на ширину, 4 байта на высоту и 4 байта — размер сжатой картинки в байтах. Само изображение сжато алгоритмом, чем-то схожим с RLE: байт на количество пикселе, 4 байта на (RGBA). Также есть ещё файлы *.MSK, но меня они не интересуют: скорее всего там зона, где разрешено ходить — "floor".
Потом вышла игра "Приключения Поручика Ржевского", где структура точно такая же. А вот уже в игре "Агент: Особое Задание" появляется формат mult. Разница с последующими играми лишь в сжатии zlib (тут его нет) и в дополнительно информации.
Следующим большим 2D проектом студии стала игра "Петька 3: Возвращение Аляски", где и появилась запаковка в Zlib. После этой игры структура файла практически не менялась.
В целом мне понравился алгоритм сжатия в MULT, достаточно хорошо сжимает. Разбирали Штырлица 1-2 (основной алгоритм распаковки изображений писал не я, я лишь написал с его использованием распаковку всего архива), так его способ проигрывает во времени распаковки и, что самое главное, в объёме. Там, правда, формат другой, в двух словах не расскажешь. Если кратко: тупа всё запаковано в архив (в начале есть таблица файлов), у самих ресурсов (картинки, музыка) формата нет; звуковые файлы без заголовка. Уступает формат из Штырлица ещё в количестве цветов: если фоны запакованы с выделением 2 байта на цвет, то в анимациях палитра всего на 256 цветов. В MULT же 4095 цветов. Один минус формата — нули вместо неиспользованных цветов при условии, что в файле есть информация о количестве цветов в формате. То есть, если в изображении 200 цветов (на каждый цвет по 4 байта), в палитру будут записаны эти цвета и 0x00 на 16к байт вместо неиспользованных цветов. Я же для себя написал запаковщик в "свой" формат mult, где убрал ненужную мне информацию.
Естественно, формат разобран не до конца: есть пустые кадры, непонятная информация, которая никак не влияет на игровой процесс (по крайней мере при изменении ничего не происходит). Вдобавок координаты записаны в формате одинарной точности. В общем, формат интересный.
kalumb вне форума Ответить с цитированием
Старый 29.05.2015, 20:52   #16
Kilix
Заблокирован
 
Регистрация: 26.05.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Первые 16 Кб файла - какая-то непонятная хрень. После 0x00004000 идут 5 блоков по смещениям

0x00004048
0x0000494e
0x00005408
0x00005da6
0x0000657e

Сжаты zlib, перед каждым упоминаются названия файлов вроде Door_1.0001.tif. Распаковываются явно не в tif. Вообще судя по размеру и периодичной структуре это больше похоже на пачку каких-то скриптов в байткоде, а сами изображения хранятся где-то в другом месте.


Спросите у разработчика
сжимаем файл на пол процента 900 раз, получается сжали почти любой файл в сто раз.
Kilix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовый файл. Найти сумму всех чисел, входящих в этот файл. (Паскаль) Homeros Помощь студентам 1 26.01.2011 14:05
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] mifomen Помощь студентам 7 16.12.2010 22:00
WinInet загрузить файл во временной файл , использовать, потом удалить Человек_Борща Работа с сетью в Delphi 5 03.08.2010 13:46
C++. Прочитать файл и вывести в другой файл каждую N-ую строку Straiker Помощь студентам 3 15.12.2009 05:49
Ссылка на файл из текущей папки! Сбор инфы в один файл! mephist Microsoft Office Excel 11 10.07.2009 13:51