1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Декодер JAM-файлов из Blood Omen: Legacy of Kain

Тема в разделе "Мастерская", создана пользователем MisterGrim, 25 ноя 2010.

  1. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Заинтересовавшись форматом файлов, начал искать и, к своему удивлению, не нашёл инструмента для работы с сабжем. Так что пришлось сделать самому.

    Программа предназначена для извлечения кадров из видеофайлов PC-версии игры Blood Omen: Legacy of Kain (с расширением .JAM, лежат на CD в папке \KAIN).
    • Что умеет: сохранять последовательность кадров в формате TGA, с именами вида FILENAME_nnnn.TGA (где nnnn — номер кадра).
    • Что не умеет: сохранять в другие форматы, обрабатывать изображение, сохранять в AVI... и всё остальное.
    • Как пользоваться: программа является консольным приложением, поэтому запускается из командной строки, в качестве параметра указывается имя JAM-файла. Сохранение идёт в текущую папку.
    Также распознаётся необязательный параметр /24, указывающий на необходимость сохранения в true color (по умолчанию сохраняются 8-битные изображения с палитрой).
    Скриншот работы:
    [​IMG]

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

    Возможно, кому-то окажется полезным.
     

    Вложения:

    • jamdec.zip
      Размер файла:
      3,5 КБ
      Просмотров:
      198
    Gamovsky, funny22, reg2s и 3 другим нравится это.
  2.  
  3. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    34.659
    MisterGrim,
    Очень было бы интересно:)
     
  4. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    112.437
    Мне кажется, что это вообще стоило бы выделить в отдельную тему, потому как не просто интересно, а ещё и крайне важно для будущего игры.
     
    Dimouse нравится это.
  5. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Почему бы и нет.
     
  6. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    112.437
    Сделано. Ждём описание.)
     
  7. INHELLER

    INHELLER

    Регистрация:
    19 май 2009
    Сообщения:
    7.228
    MisterGrim > Ээээ... не будет слишком большой наглостью просьба о riper-е аудио из видеороликов LoK: BO?

    За программу, ОГРОМНОЕ спасибо))) Возможность получать набор кадров - лучший вариант)
     
  8. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Звук хранится отдельно, в одноимённых файлах с расширением VAG. Формат — «сырой» ADPCM. Извлекается так:
    sox.exe -t ima -r 22050 -c 1 -s ACT1.VAG -u ACT1.WAV
    (SoX)
    Частота может быть 11025 или 22050Гц — подбирается опытным путём (пока нет мыслей, где она хранится).

    Другой вопрос, что оно того не стоит: лучше рипнуть звук из PS-версии. Сравните — ADPCM 22 кГц/моно и PCM 37.8 кГц/стерео.
    Выложу даже файлы для сравнения (LOGO[0.0].WAV — PS, LOGO001.WAV — PC): http://rghost.ru/3374640

    ---------- Сообщение добавлено в 17:18 ---------- Предыдущее сообщение размещено в 17:16 ----------

    Ах да — хороший риппер для форматов PS: http://kenai.com/projects/jpsxdec/pages/Home
     
    INHELLER, Dimouse и kreol нравится это.
  9. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Примерное описание формата.

    Заголовок (16 байтов):
    Column 1 Column 2 Column 3 Column 4
    0 Сигнатура Размер (ширина) Размер (высота) Количество кадров
    1 4A 41 4D 00 DWORD xres DWORD yres DWORD numframes


    Далее файл разбит на блоки, назовём их фреймами (1 фрейм ≠ 1 кадр!).
    Каждый фрейм также имеет заголовок размером в 16 байтов:
    Column 1 Column 2 Column 3 Column 4
    0 Тип фрейма Метод кодирования Размер фрейма (вместе с заголовком) Размер распакованных данных
    1 DWORD frametype DWORD encoding DWORD framesize DWORD outsize


    Тип фрейма бывает 0 (кадр анимации) и 2 (палитра).
    Сначала про палитру:
    • encoding равен нулю;
    • framesize равен 0x310;
    • outsize равен 0x300 (768 байтов).
    Сама палитра хранится в виде обычного массива RGB-триад (256×3).

    Теперь о кадрах: метод кодирования (encoding) бывает 0, 1 и 2.
    Метод 0:
    1. из исходного буфера читается 32-битное значение (DWORD), назовём его mask;
    2. поочерёдно проверяются биты (от младшего к старшему).
      Если бит == 1, то: копируем следующий байт из исходного буфера в целевой.
      Если бит == 0, то:
      1. читаем двухбайтовое значение (WORD code) из исходного буфера;
      2. вычисляем количество повторяющихся байтов (rep) по следующей формуле: (code >> 11) + 3;
      3. вычисляем смещение (offs) по следующей формуле: 0x821 – (code & 0x7ff);
      4. копируем в выходной буфер rep байтов из выходного же буфера, взяв их по смещению –оffs от адреса текущего пикселя.
    3. повторяем (1) в цикле, до заполнения выходного буфера.

    Метод 1: то же самое, что и метод 0, но с двумя отличиями: 1) смещение (offs) вычисляется по формуле 0x400 – (code & 0x7ff); 2) копируемые байты берутся не из текущего кадра, а из предыдущего.

    Метода 2: простое хранение последовательности байтов без сжатия. Вживую обнаружен не был.


    Дополнительно:
    • Фреймрейт видеороликов — 15 кадров в секунду.
    • Палитра вовсе не обязательно будет в первом фрейме, поэтому перед началом декодирования следует инициализировать её нулями.


    Если что-то непонятно (прочитал — самому непонятно :), спрашивайте, описание подправлю.
     
    Cleric[V], kreol и Dimouse нравится это.
  10. tonino6969

    tonino6969

    Регистрация:
    8 ноя 2016
    Сообщения:
    1
    Hi mistergrim, my name is Antonio and i am from Spain, i have a little problem and i don't know how solve it. I am translating for some time the game legacy of kain Blood omen to Spanish language. it is a hard job, thanks to your software i can extract the tga files from the jam files for translate the texts in the videos. but the problem is that i don't know how can reverse the process and put the tga files to a new jam file... i hope you can help me. Thank you and sorry for the inconvenience.
     
    PuzzyWuzzy нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление