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

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

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

Вопросы по работе с ресурсами игр

Тема в разделе "Мастерская", создана пользователем Alex2x, 10 янв 2005.

  1. Alex2x

    Alex2x

    Регистрация:
    9 июл 2004
    Сообщения:
    206
    Пишите в эту тему если вы:

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


    Несколько полезных ссылок для работы с ресурсами игр:

    Руководство по HEX-редакторам от reg2s

    Сайты с описаниями различных игровых форматов:

    http://wiki.xentax.com/index.php/GRAFs/All
    Category:Game Formats - MultimediaWiki
    Category:Game Intro Page - ModdingWiki
    watto studios - http://www.watto.org
    oezmen.eu > Game resources

    Multi Ripper 2.80
    Mega Ripper 5.00
    +плагин Game Archive UnPacker 0.6.0.1 PRO для Total Commander

    Шапка by Dimouse

    -------------------------------------Оригинальное сообщение---------------------------------Люди, это, конечно, не техническая проблема, но никто не знает, можно ли и как вытащить из игры миди-музыку?
    //Перенесено из темы про Alone in the Dark.

    оригинальное сообщение
     
    Последнее редактирование модератором: 3 фев 2019
    OLD-NEW Player, AndyFox и Corak нравится это.
  2.  
  3. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Дополняю старую инфу, новой. Будет небольшой анализ.
    Секция C000 - секция с палитрой, с 16-бит палитрой, у которой 2 байта на цвет. Т.е. 512 делим на 2, получаем 256 цветов.
    По поводу формата спрайтов. Решил попиксельно в файле отмечать, где какой участок. Набросал в 010 Editor вот такую инфу. 010Table.png

    хронология разбора спрайтов
    зеленый цвет - типа повторения
    красный - видимо ссылки, при изменении ломают изображение
    желтый - меняют цвет в нескольких местах, либо подставляют туда какой то кусок
    синий - одиночный пиксель
    голубой - нет эффекта, либо эффект незаметен
    бардовый - нули, непонятно чё делают, если изменить на значение, отличное от нуля, то в изображении пропадают пиксели(местами)
    Кажись я начал ещё понимать, что за магическое число 92 в начале - это видимо тоже ссылка на какое то место, где есть примерно 7-9 одинаковых пикселей
    Так же заметил один интересный прикол с форматом повторений. Игра может туда записывать ссылку и рисовать неоднократно какой то одинаковый участок с разными пикселями, но работает это тоже непонятно как

    Если байт, со значением 92 действительно ссылка, то как игра это понимает? Как вообще игра это может различать, у кого нить есть мысли по этому поводу?
     
  4. Ivorrus

    Ivorrus

    Регистрация:
    16 апр 2008
    Сообщения:
    409
    Приветствую.
    Пытаюсь распаковать файл locdata.md из игры Warlock: Master of the Arcane, он должен содержать тексты игры, и при просмотре файла они видны.
    Я пробовал все сайты из первом поста, залезал на extracktor.ru, но ничего подходящего не нашёл
    Самое теоретически близкое - .md Архивы Архив MDCD, но утилита MDCD10.ARC на Win10 не запускается и заголовок архива должен быть MDmd (4D 44 6D 64), а у меня mdmp (6D 64 6D 70)

    Кто-нибудь с подобными файлами сталкивался?
     
  5. Ehalipouhabam

    Ehalipouhabam

    Регистрация:
    23 дек 2018
    Сообщения:
    201
    Может такая же ситуация как и с файлами диалогов фолыча нв - нужна оригинальная программа для его открытия
     
  6. ak48

    ak48

    Регистрация:
    10 окт 2020
    Сообщения:
    2
    Про 92 не могу пока ничего сказать, но картинку можно попробовать разобрать вручную, игнорируя непонятные значения (объясню как могу, не думаю, что это будет понятно сразу, + я могу ошибаться в чем-то). Проверял на ММ9.BND, в m16 должно быть что-то аналогичное.

    1. Там где есть байт равный 50 и после два значения - как и сказано, это что-то вроде RLE сжатия, но работает оно по-своему.

    Во-первых, сразу выделяется около 8 пикселей и их количество, похоже, нельзя уменьшить и только потом добавляются пиксели, количество которых можно задать (тот самый второй байт после 50).

    т.е. в файле будет "50 01 0A", а в изображении будет 10 (0A) + 10 (не убираемых) = 18 пикселей закрашенных в один цвет + первый пиксель из которого берется цвет и который добавляется тоже.

    Во-вторых, иногда первый байт (после 50) иногда становится больше второго.

    2. Там где отдельные цвета. Эти байты указывают на место в палитре, но тоже по-своему.

    Как я понимаю, изображения используют палитры из разных файлов (проверял на оружии, не все пиксели меняются при изменении палитры, т.е. есть другие используемые палитры). Разобрал только файл gunpals, и он состоит из 5 палитр по 72 байта каждая. Для пистолета используются первые 72 байта. Не могу ничего сказать про размеры палитр, почему именно такие, но на один цвет выделяется 3 байта. И если говорить про gunpals, то он еще разбит на группы (9 штук). Дальше объяснено.
    Один байт пикселя из файла изображения делится на 5 бит и еще 3 бита. Последние 3 бита содержат номер цвета из палитры (всего 8), а первые 5 содержат номер группы.

    т.е. если в файле байт с "цветом" равен 11, то это 1 (5 бит) и 3 (3 бита) и берется первая группа цветов из палитры и в ней 4 (отсчет начинается с нуля) цвет.

    3. Есть другие особенности, например, если вместо 92 поставить 0, то можно добавлять данные по 8 байт,

    т.е. в файле будет 0 "8 разных байт" 0 "8 разных байт" и т.д., и все эти байты, кроме нулей, будут преобразованы в пиксели.

    4. C 92 и другими непонятными значениями все сложнее. Часть пикселей получается ссылкой на предыдущие, а не на палитру. Если значение цвета/пикселя в файле отрицательное (для этого нужно использовать тип BYTE в 010Editor), то это и есть смещение/ссылка на предыдущей пиксель.

    т.е. если есть байт со значением -56 и при его изменении в файле изображение изменяет цвет, то это расстояние до цвета назад на 56 пикселей и нужно взять значение оттуда, а потом уже на его основе (пункт 2) брать из палитры.
     
    Последнее редактирование: 18 окт 2020
  7. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    По поводу палитры - B16 походу точно подгружают секцию C000, вручную менял недавно цвета там, на картинке отображается. Формат секции вот такой:
    C000 - название
    0x04 - 4 байта, кол-во байт палитры, может быть меньше, в большинстве там 512, но, если мне память не изменяет, в изображении для моделек, байт меньше.
    0x0.... - сами байты, идут по 2 байта на цвет(если отталкиваться от того факта, что разработчики обозвали B16 файлами 16-бит изображений)

    Я тем временем продолжаю эксперименты. Решил глянуть, какая же всё таки логика у повторений и ссылок. Взял подставил туда сначала белый цвет, а число 92 поставил на ноль.
    Получил вот такую картину.
    Nulls.png
    Как видно, откуда то взялась "лесенка". По идее там должен быть сплошной цвет. Байт, в котором 92 каким то образом влияет на эту "лесенку", как будто пытается сдвинуть изображение. Не понял правда каким образом и не понял закономерность. Всегда на разную длину двигает, при чём длина не больно общего имеет со значениями байта.
    Так же заметил, что если забить серый цвет, то "прямоугольник" увеличится. И уменьшится "лесенка". Пример:
    probe.png
    Блин, реально. Но я из своих наблюдений заметил, что это работает только, когда первый байт 01. Видимо для игры это означает отрисовывать сплошной цвет. Если забить вместо 01, например, 20, то игра рисует кусками. В цепочке байт B6 50 28 1E - 28 - это число 40, а 1E - 30. Если применять предыдущий подход, то через каждые 40 пикселей должен повторяться цвет(либо несколько цветов) 40 раз. Но на самом изображении банально столько места нет. Либо это так, либо игра для больших значений определяет какой то другой алгоритм. Пока я не понял как оно работает. Вроде бы первое значение и вправду задаёт какую то длину. Но это перестаёт работать, когда значение не кратное десяти, например 39, и не разделишь и толком не прибавишь\умножишь.

    Я так понял, с ссылки работают с готовыми уже частично разжатыми пикселями?(Ну если делать за один заход).
    Частично да, я обнаружил место в самом начале, которое применяет похожий метод в ссылках(берёт предыдущие пиксели).
     

    Вложения:

    • Nulls.png
      Nulls.png
      Размер файла:
      106,8 КБ
      Просмотров:
      182
    • probe.png
      probe.png
      Размер файла:
      21,9 КБ
      Просмотров:
      141
    Последнее редактирование: 12 окт 2020
  8. Xeolix

    Xeolix

    Регистрация:
    28 фев 2019
    Сообщения:
    1
    У кого нить осталась прога: --> Magic Packer с плагинами, не могу нигде найти, Magic Team больше не существует!, может кто-нить, куда-нить Залить??
     
  9. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.143
    @Xeolix, посмотри, на сколько пригодно не знаю.
     

    Вложения:

    • resources.zip
      Размер файла:
      1,6 МБ
      Просмотров:
      89
  10. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Опытным путём найдены чит коды. За находку можно поблагодарить чела с ником -=CHE@TER=-

    Часть сообщений, которые выводят коды, находится в файлах с языками. Для английского будет использоваться такой файл:
    CDROM:\CD\LANGUAGE\ENGL.BIN
    Строки оттуда (с порядковыми номерами), которые используют коды:
    [07] Invincible!!!
    [08] All Weapons!!!
    [09] All Ammo!!!
    [10] Going to Level %d!!!
    [11] Max level is 34!!!
    [12] Set Everything!!!
    [13] Wrong game stoopid!!!
    [14] Doh! That's Doomed us all!!!
    [15] You wish!!!
    [16] You're looking real coool!!!
    [17] Are you Duking?
    [18] That's you that is!!!
    [19] Nice try buddy!!!
    [20] Oi!!!

    Если напротив кода стоит [##] - это значит, что выводимый текст зависит от языка и ## - это номер строки из языкового файла (см. выше номера). А если стоит текст в кавычках "Spurrell!!!", то это значит, что этот текст захардкожен в исполняемый файл и от выбранного языка не зависит. Большинство кодов - пустышки, которые разными сообщениями глумятся над игроком, типа кода "IDDQD" из Doom.
    Собственно, сами коды:

    1 TAKEONALLCOMERS - [07]
    2 COMEANDHAVEAGO - [08]
    3 IFYOUTHINKYOUAREHARDENOUGH - [09]
    4 NADIAPOPOV## - [10]/[11] (## - 01..34 - level number)
    5 RIPLEYDOESITWITHBIGGUNS - [12]
    6 IDDQD - [13] (Doom invincibility cheat)
    7 IDKFA - [14] (Doom gives everything cheat)
    8 RAMBO - [15] (Heretic gives everything cheat)
    9 DNSCOTTY - [16] (Duke Nukem 3D level wrap cheat)
    10 DNCORNHOLIO - [17] (Duke Nukem 3D invincibility cheat)
    11 CHEAT - [18]
    12 ALIEN - [19]
    13 FUCK - [20]
    14 ASHLEY - "Spurrell!!!"
    15 DAISY - "She's Joe's Baby!!!"
    16 LOULY - "She's Joe's Bird!!!"
    17 JANEL - "The green machine lives on!!!"
    18 HELLOTHERE - "Hi2emjkmtcaj!!!"
    19 DIPSTICK - "The triads are rising!!!" (Raise Of The Triad master cheat)
    20 QUICKEN - "No, slowen!!!" (Heretic invincibility cheat)
    21 LAIMLAME - "Try using the force!!!" (Dark Forces invincibility cheat)

    Обращаю внимание, что в Интернете есть ещё какие-то коды, но из того как и где они набираются, я так понимаю что они специфичны исключительно для порта игры на приставки и в PC версии их нет.
     
    ZaRR нравится это.
  11. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Так, продолжаю серию разборов формата спрайтов игры Alien Trilogy. Опытным путём, опять же не без помощи -=CHE@TER= (указатель скинул он) в дизассемблере нашёл что то типа анимационных структур. Скриншот:
    DebuggingAnimation.png
    По началу я на эти данные вообще внимания не обращал и даже не думал, что там что-то лежит. Позже решил таки найти побайтовое совпадение этого самого "указателя" и нашёл вот такой список. Посидев и подумав, я вдруг вспомнил, что находил процедуру, которая "собирает" анимационные структуры. Вероятно там же может быть и что то по распаковке. Уж больно реакция у игры на изменение файла со спрайтами специфичная, как будто она уже "заранее что-то знает". Вообще формат спрайтов больно пахнет LZX, но какой то свой, со своими выворотами, местами даже чрезмерными. Видимо это досталось по наследству от приставочных собратьев.
     
  12. ZaRR

    ZaRR

    Регистрация:
    18 ноя 2015
    Сообщения:
    1.620
    @Алексей Сафонов, я когда тестил с эмулем https://dosbox-staging.github.io по сети у меня глюк был со спрайтами. Вроде использовал с сайта рип версию или что там.
    Вот так это выглядело, когда персонаж передвигается или по диагонали смотрит.
    Я к чему это всё, может быть реально фикс нужен, или это эмуль так барахлил. Я только на нём и попробовал. Или же сборка. А так респект за исследования :)
     
    Mel Shlemming нравится это.
  13. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Это видимо фуфловая версия 256 цветов, которая зернистая. Выкинь её нафиг, тут на сайте есть хорошая версия с 16-бит изображением. Там таких косяков нет. Если не найдёшь, то я залью потом куда нить.
    Да, кстати, не помню писал я или нет - если игра сильно быстро работает, то юзай параметр -SO(компенсатор скорости). На загруженных участках боле менее работает, но начинает криво работать, если игрок упёрся в стену(при подходе к стенке скорость кадров игры видимо сильно возрастает). Не помню правда, пашет ли он в "зернистых" версиях трилогии. Что самое забавное - этот параметр не документирован, вообще. И в интернете про него ни слова.
    Можно предположить, что машины тех лет были не такими мощными и эффект "быстро бегания" не был таким ярко выраженным, как сейчас. Либо этот параметр готовили "к особым" случаям.
     
    ZaRR нравится это.
  14. ak48

    ak48

    Регистрация:
    10 окт 2020
    Сообщения:
    2
    В общем, в файлах нет сжатия кроме описанных, т.е. либо rle с повторением или копирование предыдущих пикселей по прямой ссылке. Просто все сделано по своему. Итоге имеем три варианта данных (3 блока): идут несжатые данные или сжатие 1 или 2. Каждый из вариантов начинается с управляющего символа (например 92) и дальше собственно соответствующий блок данных или 50 и т.д..
     
  15. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Так, продолжаю тему разбора форматов. Благодаря чуваку -=CHE@TER=- был найден код распаковки спрайтов. Как выяснилось - это и вправду LZ алгоритм, но со своими выворотами.
    Под описание подходит LZX, но работает "наоборот".
    Цитирую описание: "Отсюда, кстати, хороши видно, что это слегка расширенный LZX наоборот. Если в LZX бит 1, то копируется входной байт из потока в выходной. А тут иначе - если ноль, то копируется байт (вложенный цикл с 0xFF00), а если 1, то плавающее окно (выход из цикла и далее по коду)."
    Догадки по повторениям подтвердились, частично, нашлась и математика процесса(закономерности). Найти логику у меня не получалось, потому что требовались битовые операции над байтами, а мои познания по методам сжатия поверхностные из-за отсутствия опыта.
    Вообщем я написал две простеньких линейных проги - раскомпоновщик и декомпрессор, чтобы можно было посмотреть "сырые" данные без информации о размерах. Ночи изучения С++, горы глупых вопросов по азам сишки и у меня получилось вот это:
    ai.piccy.info_i9_c7cba712318e1e7373ca71ce9d1d269e_1605289304_46945_1403118_CurrentProgress2_800.jpg ai.piccy.info_a3_2020_11_13_19_11_i9_14067907_800x450_r_i.gif
    Как видно из скриншота - TiledGGD спокойно сьедает сырой декомпрессованый файл и 16-бит палитру из файла с секциями.
    Пока что выкладываю два текстовика с исходными кодами самой функции декомпрессии и программы от -=CHE@TER=- - он написал декомпрессор раньше меня, но не предусмотрел одну вещь - в секциях F000(1/2/3) могут быть несколько спрайтов и движок их "собирает" сам исходя из параметров анимационных структур, о которых я писал ранее(размеры длина\ширина)
    Свои простые проги я выложу по позже, надо дописать момент, когда спрайтов в секции больше одного. Впринципе даже имея простой исходный код уже можно баловаться.
    Всем, кому интересна эта тема с разбором форматов этой игры, можете почитать по подробнее тут Alien Trilogy (PC) - CTPAX-X
     

    Вложения:

    Последнее редактирование: 14 ноя 2020
    SlashNet нравится это.
  16. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    И так, как я обещался - сделал 2 простеньких инструмента для работы с "сырыми" спрайтами. Пока что упор делаю на B16 варианты, у BND странновато работает палитра, да и стрёмные там спрайты, зернистые больно...

    BNDEXTRACTOR - Это инструмент "декомпановщик" BND(B16) бинарных файлов. Внимание! Этот инструмент тестовый и предназначен СТРОГО для файлов со спрайтами(где есть секции F000).
    Использование: Перетащите BND(B16) файл на exe файл программы. В корневой директории программы создадутся файлы с такими именами - F000/1/2/3 и C000.
    Секции F000\1\2\3 - секции, содержащие в себе спрайты. В одной и той же секции могут быть по несколько штук спрайтов. Данные секции - это "сырые" сжатые спрайты, информация о которых
    зашита в исполняемый файл игры.
    Секция C000 - есть только у B16 вариантов файлов со спрайтами, это секция - 16 бит палитра. Содержит в себе по 2 байта на цвет.

    Недоработка: все файлы на выходе дозаписываются в конец, перед повторным использованием убирайте старые декомпанованые файлы.

    После того, как вы "декомпануете" BND(B16) файл, используйте далее инструмент FDecompressor.

    FDecompressor - это инструмент, который одновременно "декомпанует" секции F000\1\2\3 на отдельные одиночные спрайты и декомпрессует их.
    Использование: Перетащите файл с названием F000\1\2\3 на исполняемый файл. На выходе получаются файлы D000\1\2\3...N, которые можно
    спокойно просмотреть инструментами для "сырых" данных. Например TiledGGD. В TiledGGD в качестве палитры выбирайте файл с названием C000 и выставляйте режим 2 байта на цвет.

    Недоработка: все файлы на выходе дозаписываются в конец, перед повторным использованием убирайте старые декомпанованые файлы.

    Ну и пару скриншотов на последок, для затравки))
    Шотган:
    CurrentProgress3.png
    И ради интереса попробовал извлечь спрайты "собаковидного" чужого:
    CurrentProgress4.png
     

    Вложения:

    ZaRR нравится это.
  17. ZaRR

    ZaRR

    Регистрация:
    18 ноя 2015
    Сообщения:
    1.620
    @Алексей Сафонов, тебе надо коммунити по ней искать срочно. Выложить может быть на гитхаб что ли. Полюбому есть ещё фанаты этой игрухи.
     
  18. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Не знаю, я ради интереса прошёлся гуглом и поискал такие сайты - ничего не нашёл дельного. Мне ещё в году 2011 попадался сайт по первому AVP, но сейчас я его найти не могу почему то. Если таковые найдёшь, то дай знать)
     
  19. ZaRR

    ZaRR

    Регистрация:
    18 ноя 2015
    Сообщения:
    1.620
    @Алексей Сафонов, я обычно ищу через speedrun.com и steam обсуждения. Но именно по Alien Trilogy не очень ищется..
     
  20. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.143
    @Алексей Сафонов, а в порте под линукс ничего интересного нет по этой теме? mbait/avpmp (не помню, кажется эта версия на рютрекере была выложена скомпилированной, возможно доработанный, либо сам с сырцов компилял в свое время), возможно первоначально узнал с Games Revival - новая жизнь для старых игр
     
    Последнее редактирование: 19 ноя 2020
  21. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Это AVP не? У меня Alien Trilogy вообще то, как бэ разные игры.
    --- добавлено 19 ноя 2020, предыдущее сообщение размещено: 19 ноя 2020 ---
    Так, решил своим же инструментом попробовать извлечь все спрайты из игры, и наткнулся на пару стрёмных багов. А именно:
    - декомпановщик пару файлов неправильно раскомпановывает(COLONIST.B16 и SYNTH.B16), причину пока не понял, вроде бы какие то файлы создаёт на выходе, при чём полностью рабочие, но пару раз показывает ошибку на то, что не может создать файл. На досуге разберусь в чём дело.
    - декомпрессор неправильно декомпрессует секции в файле BURSTER.B16. Позже обнаружил, что в одной секции есть непожатый спрайт, при чём в конце. Надо будет тоже исправить.

    Пока извлекал ресурсы, нашёл неиспользуемые спрайты перезарядки для огнемёта
    ai.piccy.info_i9_2a2a564bec0fb6e9486c53f337bce45b_1605776702_3938_1403118_D020.png ai.piccy.info_a3_2020_11_19_09_05_i9_14076861_64x72_r_i.gif
    ai.piccy.info_i9_7c1602f3294a292c00fbed73a95494b6_1605776726_4712_1403118_D021.png ai.piccy.info_a3_2020_11_19_09_05_i9_14076863_72x88_r_i.gif
    ai.piccy.info_i9_599c75347dafe5dff2981547c815e5bd_1605776741_5913_1403118_D022.png ai.piccy.info_a3_2020_11_19_09_05_i9_14076864_92x100_r_i.gif
    Это видимо, то, что я нашёл не так давно в анимационных структурах(поле, которое игнорится).

    Есть ещё несколько интересных спрайтов у взрослого чужого (файл WARCEIL.B16), складывается ощущение, что этот типаж мог не только лазить по потолку, но и залазить на этот самый потолок с пола(И видимо обратно и неоднократно).
    В оригинальной игре ни разу не видел подобного. Пример:
    ai.piccy.info_i9_981499a7785b2690d5aa1c3abc5e7d47_1605777172_1844_1403118_D040.png ai.piccy.info_a3_2020_11_19_09_12_i9_14076871_68x84_r_i.gif
    ai.piccy.info_i9_a5783dfe48405e2edf3ea7d0360931e1_1605777195_1902_1403118_D041.png ai.piccy.info_a3_2020_11_19_09_13_i9_14076872_60x96_r_i.gif
    ai.piccy.info_i9_f4ec6a3d75c3b5a9ff50ee4e527886f2_1605777208_2402_1403118_D042.png ai.piccy.info_a3_2020_11_19_09_13_i9_14076873_56x116_r_i.gif
    ai.piccy.info_i9_a6e3b839e820d3e2d531c6c0090bf40b_1605777223_2366_1403118_63603D043.png ai.piccy.info_a3_2020_11_19_09_13_i9_14076874_76x100_r_i.gif

    Параллельно решил пробежаться по формату MAP и сопоставить его с форматом моделек.
    Карта трёхмерная, видимо так же, как и модель, состоит из квадов и вершин. Но устройство немного другое.

    Содержит в себе такие секции:
    MAP0 - геометрия карты(и не только)
    D000\1\2\3 - видимо динамические объекты. По первой карте я пока только понял, что это двери.(Два типажа, первая дверь - на старте и в конце уровня, вторая - промежуточная, везде одна и та же модель применяется). Формат как у обычных моделей.
    Текстурная сетка для карты содержится в B16 файлах карты рядом с текстурой. Секция BX00.
    По поводу устройства формата скриншот для наглядности:
    ai.piccy.info_i9_3336df48d3cd7f53b816cc3163cea7cf_1605776005_99170_1403118_MAPFormat_800.jpg ai.piccy.info_a3_2020_11_19_08_53_i9_14076847_800x450_r_i.gif
    Там есть 32 байта непонятные поля. Пока не понял, какие значение могут отвечать за общее кол-во вершин. Если брать по 4 байта на длину, то значение получается какое то огромное(несколько миллионов, по факту всего несколько сотен)
    Вершины я пробовал обнулять, чтобы посмотреть реакцию игры - работает, геометрию начинает искривлять местами.
     
    ZaRR нравится это.
  22. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Обновляю данные по поводу формата карт.
    ai.piccy.info_i9_f8e4d614664dd82df76f60671939e37f_1605883291_90193_1403118_MAPFormat3_800.jpg ai.piccy.info_a3_2020_11_20_14_41_i9_14078700_800x450_r_i.gif

    Вообщем по поводу вершин и квадов был прав, но не допирал каким образом всё расчитывается, т.к. одно место меня упрямо сбивало с толку. После поля с квадами есть поле, в котором полно байт FFFFFFFF, но отвечает оно за что то другое, пробовал обнулять, изменений на карте не заметил(либо я не понял, что поменялось)
    Теперь небольшое объяснение. Кол-во вершин и квадов забито в файле порядком Little-Endian(в обратном).
    Вершины:
    C0 2F - В little-endian это 12224, умножаем на 8. 8 байт один элемент - 6 байт на 3 координаты XYZ и 2 байта пустых, как я понял, это сделано, чтобы сделать данные кратными двойке. После применения данной формулы как раз приходим точно в начало поля с квадами
    Квады:
    02 2С - В little-endian это 11266, умножаем на 20. 20 байт один элемент - 16 байт на 4 индекса точек и 4 байта с информацией о текстурной сетке и режиме отображения.

    Данные расчёты я проверил на трёх разных файлах с картами, всё сходится.
    Для извлечения геометрии вполне этого может хватить(если брать текстурную сетку из файла с текстурами), но карта будет везде светлая, т.к. пока не ясен принцип работы света - вроде бы есть какие то источники, но динамические они или нет - не ясно. По мере выяснения буду дополнять информацию.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление