-
Публикации
7 -
Зарегистрирован
-
Посещение
Репутация
6 НейтральнаяО adm-244
-
Звание
Новичок
Информация
-
Пол
Мужской
-
Файлы фрагментно зашифрованны с использованием операции XOR по “ключу”. Структура файла: uint32 : dataOffset — смещение на начало секции с файлами uint8 : globalFlags — флаги характеризующие файл: 0x1 — указывает файловому менеджеру игры, что файлы нужно расшифровать сразу же при открытии архива 0x2 — указывает, что каждое вхождение файла в таблице содержит дополнительные флаги 0x4 — указывает, что таблица файлов зашифрована Структура таблицы файлов: uint16 : count — количество файлов в архиве <далее вхождения файлов> Структура вхождения файла в таблице: cstring : filename — относительный путь к файлу \ название файла uint32 : size — размер файла #if globalFlags & 0x2 uint8 : flags — дополнительные флаги файла: 0x1 — файл зашифрован #endif Что касается шифрования, это тот же самый алгоритм, что используется в игре “The Escape from Paradise City”, который представлен в скрипте для quickBMS (я так понимаю именно он и использовался для распаковки других файлов): Отличие только в используемом ключе: key = dataOffset + 0x00E6C2CF — ключ для таблицы файлов key = dataOffset + file.Offset + (file.Size * 7) — ключ для файла Удалось написать программку и распаковать представленные архивы. Найти её можно здесь: Прямая ссылка (GitHub)
- 1 ответ
-
- 1
-
Форсировать кодировку отдельных строк в .txt
adm-244 ответил в тему пользователя shikulja в Вскрытие игровых ресурсов
Добавил поддержку промежутков для задания последовательности строк (например, 1000-1100). Также сделал выходной файл не обязательным параметром. Если он не указан, то запись осуществляется во входной файл. Ссылка: zog_re-encoder_v02 Насчет неправильной конвертации у представленных программ. Проблема заключается в том, что некоторые символы Windows-1251 закодированные как UTF-8 являются, так называемыми, “управляющими символами” и многими текстовыми редакторами игнорируются или заменяются на другие. Отсюда и “пропажа” символов. -
Вскрытие ресурсов игры 1998 года
adm-244 ответил в тему пользователя AntonivkA в Вскрытие игровых ресурсов
Поработал над распаковщиком для этой игры, но из-за нехватки времени и утраты интереса, по итогу, как говорится, забил :-) Были разобраны форматы файлов: .dat (архив), .clc (палитра), .zft (растровый шрифт), частично .zim (графика задников и спрайты) и .mod (описание игровых объектов). На данный момент имеется распаковщик, некоторые части упаковщика и совсем сырой графический пользовательский интерфейс. Если ещё актуально, все эти наработки можно найти тут: CC98Unpacker (github). EDIT: Текст находится в файлах “.mod”. “Дергалка” текста из них реализована. -
Форсировать кодировку отдельных строк в .txt
adm-244 ответил в тему пользователя shikulja в Вскрытие игровых ресурсов
Насколько я понял нужно указанные строчки в UTF-8 файле преобразовать в кодировку Windows-1251 и записать обратно в файл как UTF-8. Ссылка на программу: zog_re-encoder_v01 Подробности в readme файле. P.S. Для преобразования индивидуальных строк можно использовать эту программку: CyrillicConverter -
Да, для главного меню, меню загрузки и настроек точно. Для остального нужно отдельно смотреть, не проверял. Факт в том, что во многих местах используется конструкция вида: if (Game.TranslationFilename != "") { button.NormalGraphic = 1; button.MouseOverGraphic = 2; button.PushedGraphic = 3; gui.BackgroundGraphic = 4; <...> } Тоесть, при использовании любого *.tra файла, игра меняет графику кнопок и задников элементов интерфейса на немецкий аналог и оригинальная графика на английском не используется. Скорее всего разработчики хотели добавить поддержку нескольких языков, но столкнулись с трудностями и решили не заморачиваться, а часть кода (или весь) так и остался висеть в GlobalScript.
-
Проблема оказалась вполне банальной. Разработчик в GlobalScript в функции game_start добавил вызов функции Game::ChangeTranslation с пустым параметром. Таким образом, при запуске игры файл с переводом (*.tra) обнуляется и перевод не используется. Проблему можно решить двумя способами: Модифицировать GlobalScript и убрать вызов Game::ChangeTranslation; Пропатчить движок, чтобы вызов Game::ChangeTranslation не менял перевод. Самое простое решение под номером два. Пропатченный acwin.exe прикрепляю. Скачать. P.s. Во многих местах в игре сделана проверка наличия файла с переводом, и, если он обнаружен, то графика меняется на немецкий вариант.
-
adm-244 изменил свою фотографию
-
Вы не написали удалось ли открыть распакованный файл с установленным флагом, поэтому предположу, что скорее всего этот флаг показывает наличие сжатия. Первые 4 байта — размер сжатого файла, вторые 4 байта — размер исходного файла.
- 1 ответ
-
- 1