.::Russian Blood Community Forum::. »Blood: The Game We Playing In » Editing Center » Структура MAP |
Страниц (3): « 1 [2] 3 » |
36. Slava - 12 Апреля, 2005 - 21:14:39 | ||
Цитата:
(Добавление) Цитата:
|
37. jm - 13 Апреля, 2005 - 05:08:46 |
Зайду, нажму На счет не важны, как можно говорить, важны они или нет, если мы не знаем что это ? Первые два точно меняются, то что байтовое возможно и нет. Кто возьмётся статистику будет собирать ? Меня честно говоря реверсирование тормозит несколько, я так думаю пока пропущу это и доверюсь тебе А ты не молчи, поделись что ли, чего нашел. Буду заниматься собственно рендером... |
38. jm - 13 Апреля, 2005 - 07:47:35 |
Хы, Слав, а я знаю как правильно "выходить" на сектора и раскрывать информацию по sky offset'ам Или ты тоже ? В смысле того, что я уже не гадаю как ребята из rebuild'а на кофейной гуще по закриптованным смещениям Кстати ты не прав на счет того, что та информация о которой мы не знаем (не знали то есть) не важна |
39. Slava - 13 Апреля, 2005 - 08:09:45 | |
Цитата:
По адресу 0xAB находится 0x02, 0x10 или 0x20 байт, что определяется соответственно значением байта по тому же адресу 0xAB (декриптованного конечно). Насчет Unknown Info могу сказать только об адресе 0x20, и то только то, что там по моей статистике бывает байт 00, 01 или 02. Чем так важны эти неизвестные места? (Добавление) Поделюсь обязательно. Максимум еще пара недель |
40. jm - 13 Апреля, 2005 - 09:39:50 |
Ты видимо не понял. Вот ты сейчас как выходишь на первый сектор ? А я на него выхожу используя информацию из заголовка. Unk0 упомянутый ранее как раз связан со Sky Offset'ами и их количеством. У тебя эта информация есть ? Или ты точно так же гадаешь как и rebuild'овцы. Судя по тому, что написал гадаешь Потому что там ( по смещению 0xab) не всегда одно и то же. А то, как расшифровать сами sky offset'ы про это ж ещё в email Matt'а написанно - тот же инкрементальный xor на размере буффера под сами sky offset'ы. А вот размер буффера можно расчитать Вобщем приду с работы опишу подробно Может ещё что интересного всплывет. (Отредактировано автором: 13 Апреля, 2005 - 09:43:56) |
41. jm - 13 Апреля, 2005 - 15:50:47 | ||
Вобщем первый заголовок разобрал полностью. Код:
По порядку на счет бывших unknown'ов. Skyoffsmagic - число на базе которого расчитывается количество sky offset значений. Делается это достаточно просто: Код:
После сдвига получаем число sky offset word'ов ( по два байта ). А ключ, на котором sky offset'ы закриптованы как раз будет skyoffsetnum * 2. Приведу пример, после считывания 128 байт экстра информации, к примеру, если somagic у нас равно 4, получаем: 1 << 4 = 16 То есть после экстра информации идет 16 word значений содержащих собственно sky offset'ы, и закриптованно это всё на числе 32 ( 16 * 2) И никаких допущений и выгадываний Далее, depth cueing level - честно говоря не знаю, что это, но думаю дизайнеру активно работавшему с mapedit будет ясно Key - без комментариев. Ну и байтик оказывается просто напросто тип используемого паракса для неба. Вот Это программка, что я написал по ходу дела. http://uo.anadyr.org/blood/dump.zip Дампит информацию по Map файлу на stdout, плюс декриптует заголовок и пишет декриптованную копию в dump.out |
42. LifeKILLED - 13 Апреля, 2005 - 18:02:25 | |
Цитата:
А это, случайно, не уровень "тумана-затенения"? Он один на всей карте, и я думаю, он должен быть в начале. Самое глупое - я не знаю, как менять его из карты... Видимо надо что-то писать в mapedit.ini перед созданием карты, но я это до сих пор не освоил... Так что вот. |
43. Slava - 13 Апреля, 2005 - 18:21:19 |
jm, повторяю третий раз - я не гадаю. Но это не важно, а то опять спор зетеется LifeKILLED, туман можно менять в mepedit какой-то хитрой комбинацией клавиш, как всегда, не помню какой. (Добавление) Вообще, замечательно, что ты тоже взялся за это дело, да еще к тому же с другой стороны, т.е. ковырянием самого mapedit.exe. Вместе мы добьемся более точных результатов. Потерпи немного, и я представлю ВСЕ что накопал. ВСЮ таблицу. (Добавление) 3D EDIT MODE D = Depth cueing. Hold 'D', then press +/- on keyboard. You can set the distance at which it gets darker. [norm = 768?] |
44. jm - 13 Апреля, 2005 - 18:46:27 |
Да ладно, чего спорить то. Ты просто не разложил всё по полкам, во всяком случае я так понял, что ты всегда исходишь из одного и того же значения в offset'ах. Ну да ладно. А что ещё осталось у нас ? Мне в принципе для рендера больше ничего не надо. Ты говори, я ещё гляну если что. (Добавление) http://uo.anadyr.org/blood/mapedit.rar Дизассемблированные "выкуски" - некоторые процедуры из mapedit - сохранение карты, криптование буффера, расчет CRC, etc. Может кому ещё пригодится. Особенно хорошо откоментировал функцию сохранения карты. Многие смещения заменил на символические по смыслу. Кстати, LifeKILLED, а ты насколько серьезно занимаешься 3ds max'ом ? |
45. Slava - 14 Апреля, 2005 - 04:54:00 |
2jm Насчет skyoffsets. Извини - только сейчас спокойно перечитал твой пост и все понял. Поскольку там все время первый байт (декриптованный) = 0, то и получается, что ключем и является это самое число по адресу 0xAB (A xor 0 = A ). Это же число и является сдвигом на который надо перейти, чтобы попасть к секторам. Так я и делал. Но то, что раскопал ты - конечно же правильнее. Ну, во-первых, потому что это данные из mapedit.exe , а, во-вторых, кто знает, может быть этот байт и не обязан равняться нулю и мне просто везло, и тогда действительно нужно знать число skyoffsmagic из заголовка. Хотя я так и не пойму, что же там в этих skyoffset'ах хранится? Что это за возрастающие числа типа word? Еще скажи: ты в дебуггере можешь определять тип переменной? Я имею ввиду, не только сколько байт, но и знаковость? |
46. jm - 14 Апреля, 2005 - 09:33:20 |
Ничего, бывает Я ж исключительно ради общего блага. Вобщем не суть. Главное чтобы ты алгоритм уловил. На счет оффсетов я так думаю это просто банальные смещения координат для подвижного неба. Вообще говоря надо просто проанализировать по картам - в e2m7 (кажется) количество этих смещений иное. Вот и надо сравнить будет. А вообще разве в blood есть подвижное небо ? Предположил бы, что это фишка 3dfx версии, но они читаются даже в случае если карта не седьмой версии. Можно попытаться порыться в Blood.exe, но это как я уже говорил достаточно комплексная задача. На счет знаковости переменной, могу в принципе, но только теоретически - анализируя участок кода. В принципе вероятность ошибки при этом есть конечно, но она очень мала. Кстати, до отладчиков я так и не дошел Пока хватает IDA. Ну так лениво стартовать ntice Хотя если бы пользовался им было бы наверное проще. А с другой стороны никогда из ntice не отлаживал dos4gw приложение, там ведь по сути дос среда эмулируется. Так что может на самом деле я и не много потерял что не лез в него. (Добавление) Кстати, у меня там по тексту очепятка, где про байтик информации - не паракса а конечно же паралакса |
47. LifeKILLED - 14 Апреля, 2005 - 19:01:51 |
3ds-max'ом занимаюсь серьезно, хотя и не все освоил. Умею: создание моделей, скелетная анимация, разные там приемы, плагин для тканей использую... Даже разработал собственный реалистичный огонь. А что надо? Моделек наделать? Что еще за подвижное небо?! Вращающееся, что ли? В 3dfx-патче небо то же самое. Выглядет даже хуже - несостыковки в местах "склеивания" кусков текстур. Или имеется ввиду вращение неба? (например, чтобы развернуть луну ) В Mapedit'е я такого не видел, там ничего не вращается, там одно положение неба. |
48. jm - 14 Апреля, 2005 - 19:26:06 |
На счет 3d max'а - пока ничего не надо. Очень надеюсь, что скоро ситуация изменится и будет надо Просто мне нужно какое то время чтобы въехать в архитектуру самого Build'а, и понять, присоединюсь ли я к winblood, буду делать что-то свое или же параллельно оба варианта (хотя и дико звучит). Сейчас нужно выйти на Джастина ( лид и единственного кодера Winblood на данный момент ) и пообщаться с ним. Кое какие моменты выяснить... На счет неба это только догадки-предположения. У меня мелькала мысль, что это смещения для неких подвижных деталей в небе. Видимо таки придется потрошить Blood.exe... |
49. LifeKILLED - 15 Апреля, 2005 - 00:25:43 |
А может, плюнуть на небо? (и отойти в сторону, а то вернется ) Мне кажется, следует сделать свое небо на основе того... А можно узнать, что они уже сделали в winblood? |
50. jm - 15 Апреля, 2005 - 05:21:40 |
На небо плюнем да Кстати возможно исходный текст polymost даст ответы на некоторые вопросы. О polymost ниже. Можно Короче говоря, как выяснилось, Ken Silverman ждал себе, ждал пока кто нибудь сделает современный римейк билда и недождавшись написал свою реализацию рендерера по имени Polymost. Это ядро графической подсистемы Jonof портов и собственно winblood. То бишь рендеринг вполне полноценный. В самом winblood пока есть пара монстров, и возможность погулят по уровням на сколько я понял. Пока что его не смотрел, только исходники. |
51. LifeKILLED - 15 Апреля, 2005 - 21:02:37 |
А есть стронички, где можно посмотреть на него? Похоже, мне все-таки придется осваивать C++... VB я уже освоил недавно, но без C++ я, похоже, все-таки остаюсь бессилен ко всему программированию... А это меня сильно бесит... |
52. jm - 16 Апреля, 2005 - 10:57:24 |
http://blood32.sourceforge.net/phpbb2 Там в разделе анонсов ссылка на закачку четвертой альфы. |
53. Slava - 23 Апреля, 2005 - 07:15:47 |
Впереди выходные и есть возможность посидеть с форматом, но я помня про обещанное выложить все, что я накопал по формату MAP решил сделать это независимо от процента завершенности своей работы. В конце концов, подход jm гораздо правильнее, и возможно эти наработки ему помогут. Так что выкладываю то, что мне удалось раскрыть причем в очень сыром виде. http://www.bloodgame.ru/download/mapformat.rar Предлагаю jm внести коррективы, о которых он уже упоминал и добавить то, что он еще раскрыл. Можешь даже изменить вид самой спецификации. Хотя мне очень нравится табличный подход в Excel. |
54. jm - 25 Апреля, 2005 - 13:15:48 |
Гляну на неделе. В каком виде решать тебе я буду только корректором Временно забил на реверсинг - пишу вспомогательные классы обертки для DirectX и прочего барахла. Нудновасто, а никуда не денешься. |
55. Slava - 22 Июня, 2005 - 06:23:30 |
jm, а что со ссылкой http://uo.anadyr.org/blood/mapedit.rar ? Мне она нужна для страницы http://www.bloodgame.ru/deepcoldgrave/workshop/mapformat.php Или тогда давай я это выложу на DeepColdGrave. |
56. jm - 29 Июня, 2005 - 04:20:53 |
Упс. Слав прошу прощения. Замотался не увидел пост. Собственно ещё раз дико извиняюсь, обещал ещё давно пересмотреть твои спецификации, но так и не дошли руки. На неделе разрешу этот вопрос. Файл выложу и сюда брошу пост. Лучше конечно если заберешь его к себе. Вот. |
57. Slava - 29 Июня, 2005 - 05:15:21 |
Да я, в принципе, сам тоже мог еще немного написать, но все руки не доходят |
58. jm - 03 Июля, 2005 - 16:08:37 |
http://uo.anadyr.org/blood/mapedit.zip Оно. |
59. Slava - 21 Декабря, 2006 - 16:08:34 |
Решил выложить-таки наконец свою программу на Delphi, которую я использовал для составления спецификаций формата *.MAP. http://www.bloodgame.ru/download/map_inside.rar См. также раздел на сайте Мастерская - Формат MAP. |
60. LifeKILLED - 22 Декабря, 2006 - 03:00:35 |
Круто! Сказать честно, я решил уже делать 3д-проги. Всю литературу перестал, теорию досконально изучил, да и с ООП с недавнего времени дружу. Буду делать свой 3Д движок. Может, и формат МАР в него загоню... Не хочу никого питать надеждами, но в последнее время я свои обещания исполняю |
61. Zik - 22 Декабря, 2006 - 15:11:40 |
LifeKILLED Так держать!Не забудишь выложить свою SUPER-UBER затею на форуме! |
62. flanker - 29 Июня, 2014 - 17:35:34 |
не удобно поднимать столь древнюю тему, но выложенный в свое время на сайте файл: http://bloodgame.ru/download/mapformat.rar мне здорово помог. в свою очередь, я дописал недостающую секцию со структурой extraSprite: http://i.imgur.com/IDJzwso.png полная табличка: https://yadi.sk/d/g4PXX2cNVMMbg (Отредактировано автором: 29 Июня, 2014 - 17:42:15) |
63. Slava - 30 Июня, 2014 - 01:43:31 |
Здорово! Спасибо, flanker! Обновил файл на сайте. http://www.bloodgame.ru/deepcoldgrave/workshop/mapformat.php |
64. [M210®] - 04 Декабря, 2015 - 08:57:25 | |
Начал писать свой загрузчик карт Blood и мне не очень нравится запись ключа для дешифровки данных - 0x7474614d, ведь программисты не используют в исходном коде hex значения...поэтому у себя написал более красивый способ ключа (по моему мнению) public static final byte[] crypt = { 'M', 'a', 't', 't' }; int key = LittleEndian.getInt(crypt); А далее использую одну и туже строку в коде decryptBuffer(buf, buf.length, key); Как вам такое решение? Ну и тоже самое сделал с заголовком файла Вместо hex значений версии и заголовка написал "BLM" и версия = 7...я думаю имеено так выглядит оригинальный исходный код. Ну и очень удивился, что никого не интересует последние 4 байта в файле...где то прочитал, что это контрольная сумма, но проверить ее пока не могу, может кто разъяснит? Дальше буду писать чтение extra части. Ну и у меня получился вот такой код для чтения карты: По-моему по-лучше будет всяких абстрактных таблиц Код:
(Отредактировано автором: 04 Декабря, 2015 - 11:32:21) |
Powered by ExBB 1.9.1 Original Style v1.5a2 created by Daemon.XP |